1 #include <QPalette>
2 #include <QColorDialog>
3 #include <QSettings>
4 #include "lthemeengine.h"
5 #include "paletteeditdialog.h"
6 #include "ui_paletteeditdialog.h"
7
PaletteEditDialog(const QPalette & palette,QStyle * currentStyle,QWidget * parent)8 PaletteEditDialog::PaletteEditDialog(const QPalette &palette, QStyle *currentStyle, QWidget *parent) : QDialog(parent), m_ui(new Ui::PaletteEditDialog){
9 m_currentStyle = currentStyle;
10 m_ui->setupUi(this);
11 m_ui->tableWidget->setColumnCount(3);
12 m_ui->tableWidget->setRowCount(QPalette::NColorRoles);
13 m_ui->tableWidget->verticalHeader()->setDefaultSectionSize(fontMetrics().lineSpacing() + 10);
14 m_ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
15 m_ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
16 QStringList labels;
17 labels << tr("Active") << tr("Inactive") << tr("Disabled");
18 m_ui->tableWidget->setHorizontalHeaderLabels(labels);
19 setPalette(palette);
20 QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
21 restoreGeometry(settings.value("PaletteEditor/geometry").toByteArray());
22 }
23
~PaletteEditDialog()24 PaletteEditDialog::~PaletteEditDialog(){
25 delete m_ui;
26 }
27
selectedPalette() const28 QPalette PaletteEditDialog::selectedPalette() const{
29 QPalette palette;
30 for(int i = 0; i < QPalette::NColorRoles; i++){
31 palette.setBrush(QPalette::Active, QPalette::ColorRole(i), m_ui->tableWidget->item(i,0)->background().color());
32 palette.setBrush(QPalette::Inactive, QPalette::ColorRole(i), m_ui->tableWidget->item(i,1)->background().color());
33 palette.setBrush(QPalette::Disabled, QPalette::ColorRole(i), m_ui->tableWidget->item(i,2)->background().color());
34 }
35 return palette;
36 }
37
setPalette(const QPalette & palette)38 void PaletteEditDialog::setPalette(const QPalette &palette){
39 for(int i = 0; i < QPalette::NColorRoles; i++){
40 if(!m_ui->tableWidget->item(i,0)){ m_ui->tableWidget->setItem(i, 0, new QTableWidgetItem()); }
41 if(!m_ui->tableWidget->item(i,1)){ m_ui->tableWidget->setItem(i, 1, new QTableWidgetItem()); }
42 if(!m_ui->tableWidget->item(i,2)){ m_ui->tableWidget->setItem(i, 2, new QTableWidgetItem()); }
43 m_ui->tableWidget->item(i,0)->setBackground(QBrush(palette.color(QPalette::Active, QPalette::ColorRole(i))));
44 m_ui->tableWidget->item(i,1)->setBackground(QBrush(palette.color(QPalette::Inactive, QPalette::ColorRole(i))));
45 m_ui->tableWidget->item(i,2)->setBackground(QBrush(palette.color(QPalette::Disabled, QPalette::ColorRole(i))));
46 }
47 QStringList labels;
48 labels << tr("Window text") << tr("Button background") << tr("Bright") << tr("Less bright") << tr("Dark") << tr("Less dark") << tr("Normal text") << tr("Bright text") << tr("Button text") << tr("Normal background") << tr("Window") << tr("Shadow") << tr("Highlight") << tr("Highlighted text") << tr("Link") << tr("Visited link") << tr("Alternate background") << tr("Default") << tr("Tooltip background") << tr("Tooltip text") << tr("Placeholder text");
49 m_ui->tableWidget->setVerticalHeaderLabels(labels);
50 }
51
hideEvent(QHideEvent *)52 void PaletteEditDialog::hideEvent(QHideEvent *){
53 QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
54 settings.setValue("PaletteEditor/geometry", saveGeometry());
55 }
56
on_tableWidget_itemClicked(QTableWidgetItem * item)57 void PaletteEditDialog::on_tableWidget_itemClicked(QTableWidgetItem *item){
58 QColor color = QColorDialog::getColor(item->background().color(), this, tr("Select Color"));
59 if(color.isValid()){
60 item->setBackground(QBrush(color));
61 emit paletteChanged(selectedPalette());
62 }
63 }
64
on_resetPaletteButton_clicked()65 void PaletteEditDialog::on_resetPaletteButton_clicked(){
66 setPalette(m_currentStyle->standardPalette());
67 emit paletteChanged(selectedPalette());
68 }
69
on_buildInactiveButton_clicked()70 void PaletteEditDialog::on_buildInactiveButton_clicked(){
71 QPalette palette = selectedPalette();
72 for(int i = 0; i < QPalette::NColorRoles; i++){
73 palette.setColor(QPalette::Inactive, QPalette::ColorRole(i),
74 palette.color(QPalette::Active, QPalette::ColorRole(i)));
75 }
76 setPalette(palette);
77 emit paletteChanged(selectedPalette());
78 }
79
on_buildDisabledButton_clicked()80 void PaletteEditDialog::on_buildDisabledButton_clicked(){
81 QPalette palette = selectedPalette();
82 for(int i = 0; i < QPalette::NColorRoles; i++){
83 palette.setColor(QPalette::Disabled, QPalette::ColorRole(i),
84 palette.color(QPalette::Active, QPalette::ColorRole(i)));
85 }
86 palette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::darkGray);
87 palette.setColor(QPalette::Disabled, QPalette::WindowText, Qt::darkGray);
88 palette.setColor(QPalette::Disabled, QPalette::Text, Qt::darkGray);
89 palette.setColor(QPalette::Disabled, QPalette::HighlightedText, Qt::darkGray);
90 setPalette(palette);
91 emit paletteChanged(selectedPalette());
92 }
93