diff --git a/src/PreferencesDialog.cpp b/src/PreferencesDialog.cpp index c5a81a95..6813075d 100644 --- a/src/PreferencesDialog.cpp +++ b/src/PreferencesDialog.cpp @@ -18,8 +18,12 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) ui->setupUi(this); ui->treeSyntaxHighlighting->setColumnHidden(0, true); - ui->frameNullBgColour->installEventFilter(this); - ui->frameNullFgColour->installEventFilter(this); + ui->fr_bin_bg->installEventFilter(this); + ui->fr_bin_fg->installEventFilter(this); + ui->fr_reg_bg->installEventFilter(this); + ui->fr_reg_fg->installEventFilter(this); + ui->fr_null_bg->installEventFilter(this); + ui->fr_null_fg->installEventFilter(this); #ifndef CHECKNEWVERSION ui->labelUpdates->setVisible(false); @@ -58,15 +62,12 @@ void PreferencesDialog::loadSettings() ui->foreignKeysCheckBox->setChecked(getSettingsValue("db", "foreignkeys").toBool()); ui->spinPrefetchSize->setValue(getSettingsValue("db", "prefetchsize").toInt()); - QPalette palette = ui->frameNullBgColour->palette(); - palette.setColor(ui->frameNullBgColour->backgroundRole(), - QColor(getSettingsValue("databrowser", "null_bg_colour").toString())); - ui->frameNullBgColour->setPalette(palette); - - palette = ui->frameNullFgColour->palette(); - palette.setColor(ui->frameNullFgColour->backgroundRole(), - QColor(getSettingsValue("databrowser", "null_fg_colour").toString())); - ui->frameNullFgColour->setPalette(palette); + loadColorSetting(ui->fr_null_fg, "null_fg"); + loadColorSetting(ui->fr_null_bg, "null_bg"); + loadColorSetting(ui->fr_reg_fg, "reg_fg"); + loadColorSetting(ui->fr_reg_bg, "reg_bg"); + loadColorSetting(ui->fr_bin_fg, "bin_fg"); + loadColorSetting(ui->fr_bin_bg, "bin_bg"); ui->txtNull->setText(getSettingsValue("databrowser", "null_text").toString()); @@ -106,10 +107,12 @@ void PreferencesDialog::saveSettings() setSettingsValue("checkversion", "enabled", ui->checkUpdates->isChecked()); - setSettingsValue("databrowser", "null_bg_colour", - ui->frameNullBgColour->palette().color(ui->frameNullBgColour->backgroundRole())); - setSettingsValue("databrowser", "null_fg_colour", - ui->frameNullFgColour->palette().color(ui->frameNullFgColour->backgroundRole())); + saveColorSetting(ui->fr_null_fg, "null_fg"); + saveColorSetting(ui->fr_null_bg, "null_bg"); + saveColorSetting(ui->fr_reg_fg, "reg_fg"); + saveColorSetting(ui->fr_reg_bg, "reg_bg"); + saveColorSetting(ui->fr_bin_fg, "bin_fg"); + saveColorSetting(ui->fr_bin_bg, "bin_bg"); setSettingsValue("databrowser", "null_text", ui->txtNull->text()); for(int i=0; i < ui->treeSyntaxHighlighting->topLevelItemCount(); ++i) @@ -241,6 +244,14 @@ QVariant PreferencesDialog::getSettingsDefaultValue(const QString& group, const return QColor(Qt::lightGray).name(); if (name == "null_bg_colour") return QColor(Qt::white).name(); + if (name == "reg_fg_colour") + return QColor(Qt::black).name(); + if (name == "reg_bg_colour") + return QColor(Qt::white).name(); + if (name == "bin_fg_colour") + return QColor(Qt::lightGray).name(); + if (name == "bin_bg_colour") + return QColor(Qt::white).name(); } // syntaxhighlighter? @@ -339,7 +350,9 @@ void PreferencesDialog::showColourDialog(QTreeWidgetItem* item, int column) bool PreferencesDialog::eventFilter(QObject *obj, QEvent *event) { // Use mouse click and enter press on the frames to pop up a colour dialog - if (obj == ui->frameNullBgColour || obj == ui->frameNullFgColour) + if (obj == ui->fr_bin_bg || obj == ui->fr_bin_fg || + obj == ui->fr_reg_bg || obj == ui->fr_reg_fg || + obj == ui->fr_null_bg || obj == ui->fr_null_fg) { if (event->type() == QEvent::KeyPress) { @@ -455,3 +468,17 @@ void PreferencesDialog::fillLanguageBox() ui->languageComboBox->insertItem(0, chosenIcon, chosenLanguage, chosenLocale); ui->languageComboBox->setCurrentIndex(0); } + +void PreferencesDialog::loadColorSetting(QFrame *frame, const QString & settingName) +{ + QPalette palette = frame->palette(); + palette.setColor(frame->backgroundRole(), + QColor(getSettingsValue("databrowser", settingName + "_colour").toString())); + frame->setPalette(palette); +} + +void PreferencesDialog::saveColorSetting(QFrame *frame, const QString & settingName) +{ + setSettingsValue("databrowser", settingName + "_colour", + frame->palette().color(frame->backgroundRole())); +} diff --git a/src/PreferencesDialog.h b/src/PreferencesDialog.h index 5ca8db57..87eccf90 100644 --- a/src/PreferencesDialog.h +++ b/src/PreferencesDialog.h @@ -6,6 +6,7 @@ #include class QTreeWidgetItem; +class QFrame; namespace Ui { class PreferencesDialog; @@ -42,6 +43,8 @@ private: static QHash m_hCache; void fillLanguageBox(); + void loadColorSetting(QFrame *frame, const QString &name); + void saveColorSetting(QFrame *frame, const QString &name); protected: bool eventFilter(QObject *obj, QEvent *event); diff --git a/src/PreferencesDialog.ui b/src/PreferencesDialog.ui index 0144cf37..05bc2716 100644 --- a/src/PreferencesDialog.ui +++ b/src/PreferencesDialog.ui @@ -251,8 +251,8 @@ Data &Browser - - + + Qt::Horizontal @@ -265,7 +265,20 @@ - + + + + Qt::Horizontal + + + + 40 + 20 + + + + + @@ -299,28 +312,6 @@ QGroupBox::title { 50 - - - - - 70 - 20 - - - - Qt::StrongFocus - - - true - - - QFrame::Box - - - QFrame::Plain - - - @@ -334,41 +325,6 @@ QGroupBox::title { - - - - - 70 - 20 - - - - Qt::StrongFocus - - - true - - - QFrame::Box - - - QFrame::Plain - - - - - - - Text &colour - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - frameNullFgColour - - - @@ -382,46 +338,199 @@ QGroupBox::title { + + + + + + + false + + + QGroupBox { + border: 1px solid gray; + border-radius: 4px; + margin-top: 1ex; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + left: 10px; + padding: 0 3px 0 3px; +} + + + Fields colors + + - + - Bac&kground colour + NULL - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - frameNullBgColour + + + + + + Regular + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + + + + + + + Qt::StrongFocus + + + true + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + Text + + + Qt::AlignCenter + + + + + + + Binary + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Qt::StrongFocus + + + true + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + Background + + + Qt::AlignCenter + + + + + + + Qt::StrongFocus + + + true + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + Qt::StrongFocus + + + true + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + Qt::StrongFocus + + + true + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + Qt::StrongFocus + + + true + + + QFrame::StyledPanel + + + QFrame::Raised - - - - Qt::Vertical - - - - 20 - 40 - - - - - - + + - Qt::Horizontal + Qt::Vertical - 40 - 20 + 20 + 274 @@ -777,7 +886,6 @@ QGroupBox::title { - tabWidget comboDefaultLocation locationEdit setLocationButton @@ -788,8 +896,12 @@ QGroupBox::title { checkHideSchemaLinebreaks spinPrefetchSize txtNull - frameNullFgColour - frameNullBgColour + fr_null_fg + fr_null_bg + fr_bin_fg + fr_bin_bg + fr_reg_fg + fr_reg_bg treeSyntaxHighlighting comboEditorFont spinEditorFontSize diff --git a/src/sqlitetablemodel.cpp b/src/sqlitetablemodel.cpp index b923bf68..071c9fbb 100644 --- a/src/sqlitetablemodel.cpp +++ b/src/sqlitetablemodel.cpp @@ -259,12 +259,14 @@ QVariant SqliteTableModel::data(const QModelIndex &index, int role) const if(m_data.at(index.row()).at(index.column()).isNull()) return QColor(PreferencesDialog::getSettingsValue("databrowser", "null_fg_colour").toString()); else if (isBinary(index)) - return QColor(Qt::gray); - return QVariant(); + return QColor(PreferencesDialog::getSettingsValue("databrowser", "bin_fg_colour").toString()); + return QColor(PreferencesDialog::getSettingsValue("databrowser", "reg_fg_colour").toString()); } else if (role == Qt::BackgroundRole) { if(m_data.at(index.row()).at(index.column()).isNull()) return QColor(PreferencesDialog::getSettingsValue("databrowser", "null_bg_colour").toString()); - return QVariant(); + else if (isBinary(index)) + return QColor(PreferencesDialog::getSettingsValue("databrowser", "bin_bg_colour").toString()); + return QColor(PreferencesDialog::getSettingsValue("databrowser", "reg_bg_colour").toString()); } else if(role == Qt::ToolTipRole) { sqlb::ForeignKeyClause fk = getForeignKeyClause(index.column()-1); if(fk.isSet())