mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
desktop: allow update of tab widget colors at run time
Adding a new virtual function to all of these classes may seem like overkill, but of course the idea is that likely we'd allow similar changes to all of them. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
00dd98163f
commit
7d18a525f1
7 changed files with 42 additions and 23 deletions
|
@ -4,3 +4,7 @@
|
||||||
TabBase::TabBase(QWidget *parent) : QWidget(parent)
|
TabBase::TabBase(QWidget *parent) : QWidget(parent)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabBase::updateUi()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ public:
|
||||||
TabBase(QWidget *parent = 0);
|
TabBase(QWidget *parent = 0);
|
||||||
virtual void updateData() = 0;
|
virtual void updateData() = 0;
|
||||||
virtual void clear() = 0;
|
virtual void clear() = 0;
|
||||||
|
virtual void updateUi();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24,17 +24,7 @@ TabDiveInformation::TabDiveInformation(QWidget *parent) : TabBase(parent), ui(ne
|
||||||
connect(&diveListNotifier, &DiveListNotifier::cylinderRemoved, this, &TabDiveInformation::cylinderChanged);
|
connect(&diveListNotifier, &DiveListNotifier::cylinderRemoved, this, &TabDiveInformation::cylinderChanged);
|
||||||
connect(&diveListNotifier, &DiveListNotifier::cylinderEdited, this, &TabDiveInformation::cylinderChanged);
|
connect(&diveListNotifier, &DiveListNotifier::cylinderEdited, this, &TabDiveInformation::cylinderChanged);
|
||||||
|
|
||||||
// Put together appropriate CSS stylesheets: NB: Colors below in same order as the enum in prefs.h
|
|
||||||
QStringList colors = { "mediumblue", "lightblue", "black" }; // If using dark theme, set color appropriately
|
|
||||||
QString colorText = colors[prefs.headerstyle_color];
|
|
||||||
|
|
||||||
QString lastpart = colorText + " ;}";
|
|
||||||
QString CSSLabelColor = "QLabel { color: " + lastpart;
|
|
||||||
QString CSSTitleColor = "QGroupBox::title { color: " + lastpart ;
|
|
||||||
QStringList atmPressTypes { "mbar", get_depth_unit() ,tr("Use DC")};
|
QStringList atmPressTypes { "mbar", get_depth_unit() ,tr("Use DC")};
|
||||||
QString CSSSetSmallLabel = "QLabel { color: ";
|
|
||||||
CSSSetSmallLabel.append(colorText + "; font-size: ");
|
|
||||||
CSSSetSmallLabel.append(QString::number((int)(0.5 + ui->diveHeadingLabel->geometry().height() * 0.66)) + "px;}");
|
|
||||||
ui->atmPressType->insertItems(0, atmPressTypes);
|
ui->atmPressType->insertItems(0, atmPressTypes);
|
||||||
pressTypeIndex = 0;
|
pressTypeIndex = 0;
|
||||||
ui->waterTypeCombo->insertItems(0, getWaterTypesAsString());
|
ui->waterTypeCombo->insertItems(0, getWaterTypesAsString());
|
||||||
|
@ -45,15 +35,6 @@ TabDiveInformation::TabDiveInformation(QWidget *parent) : TabBase(parent), ui(ne
|
||||||
types.append(gettextFromC::tr(divemode_text_ui[i]));
|
types.append(gettextFromC::tr(divemode_text_ui[i]));
|
||||||
ui->diveType->insertItems(0, types);
|
ui->diveType->insertItems(0, types);
|
||||||
connect(ui->diveType, SIGNAL(currentIndexChanged(int)), this, SLOT(diveModeChanged(int)));
|
connect(ui->diveType, SIGNAL(currentIndexChanged(int)), this, SLOT(diveModeChanged(int)));
|
||||||
ui->scrollAreaWidgetContents_3->setStyleSheet(CSSTitleColor);
|
|
||||||
ui->diveHeadingLabel->setStyleSheet(CSSLabelColor);
|
|
||||||
ui->gasHeadingLabel->setStyleSheet(CSSLabelColor);
|
|
||||||
ui->environmentHeadingLabel->setStyleSheet(CSSLabelColor);
|
|
||||||
ui->groupBox_visibility->setStyleSheet(CSSSetSmallLabel);
|
|
||||||
ui->groupBox_current->setStyleSheet(CSSSetSmallLabel);
|
|
||||||
ui->groupBox_wavesize->setStyleSheet(CSSSetSmallLabel);
|
|
||||||
ui->groupBox_surge->setStyleSheet(CSSSetSmallLabel);
|
|
||||||
ui->groupBox_chill->setStyleSheet(CSSSetSmallLabel);
|
|
||||||
if (!prefs.extraEnvironmentalDefault) // if extraEnvironmental preference is turned off
|
if (!prefs.extraEnvironmentalDefault) // if extraEnvironmental preference is turned off
|
||||||
showCurrentWidget(false, 0); // Show current star widget at lefthand side
|
showCurrentWidget(false, 0); // Show current star widget at lefthand side
|
||||||
QAction *action = new QAction(tr("OK"), this);
|
QAction *action = new QAction(tr("OK"), this);
|
||||||
|
@ -68,7 +49,6 @@ TabDiveInformation::TabDiveInformation(QWidget *parent) : TabBase(parent), ui(ne
|
||||||
updateWaterTypeWidget();
|
updateWaterTypeWidget();
|
||||||
QPixmap warning (":salinity-warning-icon");
|
QPixmap warning (":salinity-warning-icon");
|
||||||
ui->salinityOverWrittenIcon->setPixmap(warning);
|
ui->salinityOverWrittenIcon->setPixmap(warning);
|
||||||
ui->salinityOverWrittenIcon->setToolTip(CSSSetSmallLabel);
|
|
||||||
ui->salinityOverWrittenIcon->setToolTipDuration(2500);
|
ui->salinityOverWrittenIcon->setToolTipDuration(2500);
|
||||||
ui->salinityOverWrittenIcon->setVisible(false);
|
ui->salinityOverWrittenIcon->setVisible(false);
|
||||||
}
|
}
|
||||||
|
@ -241,7 +221,7 @@ void TabDiveInformation::updateData()
|
||||||
if (prefs.salinityEditDefault) { //If edit-salinity is enabled then set correct water type in combobox:
|
if (prefs.salinityEditDefault) { //If edit-salinity is enabled then set correct water type in combobox:
|
||||||
ui->waterTypeCombo->setCurrentIndex(updateSalinityComboIndex(salinity_value));
|
ui->waterTypeCombo->setCurrentIndex(updateSalinityComboIndex(salinity_value));
|
||||||
} else { // If water salinity is not editable: show water type as a text label
|
} else { // If water salinity is not editable: show water type as a text label
|
||||||
ui->waterTypeText->setText(get_water_type_string(salinity_value));
|
ui->waterTypeText->setText(get_water_type_string(salinity_value));
|
||||||
}
|
}
|
||||||
ui->salinityText->setText(get_salinity_string(salinity_value));
|
ui->salinityText->setText(get_salinity_string(salinity_value));
|
||||||
} else {
|
} else {
|
||||||
|
@ -263,6 +243,31 @@ void TabDiveInformation::updateData()
|
||||||
showCurrentWidget(false, 0); // Show current star widget at lefthand side
|
showCurrentWidget(false, 0); // Show current star widget at lefthand side
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabDiveInformation::updateUi()
|
||||||
|
{
|
||||||
|
// Put together appropriate CSS stylesheets: NB: colors below in same order as the enum in prefs.h
|
||||||
|
QStringList colors = { "mediumblue", "lightblue", "black" }; // If using dark theme, set color appropriately
|
||||||
|
QString colorText = colors[prefs.headerstyle_color];
|
||||||
|
|
||||||
|
QString lastpart = colorText + " ;}";
|
||||||
|
QString CSSLabelcolor = "QLabel { color: " + lastpart;
|
||||||
|
QString CSSTitlecolor = "QGroupBox::title { color: " + lastpart ;
|
||||||
|
QString CSSSetSmallLabel = "QLabel { color: ";
|
||||||
|
CSSSetSmallLabel.append(colorText + "; font-size: ");
|
||||||
|
CSSSetSmallLabel.append(QString::number((int)(0.5 + ui->diveHeadingLabel->geometry().height() * 0.66)) + "px;}");
|
||||||
|
ui->scrollAreaWidgetContents_3->setStyleSheet(CSSTitlecolor);
|
||||||
|
ui->diveHeadingLabel->setStyleSheet(CSSLabelcolor);
|
||||||
|
ui->gasHeadingLabel->setStyleSheet(CSSLabelcolor);
|
||||||
|
ui->environmentHeadingLabel->setStyleSheet(CSSLabelcolor);
|
||||||
|
ui->groupBox_visibility->setStyleSheet(CSSSetSmallLabel);
|
||||||
|
ui->groupBox_current->setStyleSheet(CSSSetSmallLabel);
|
||||||
|
ui->groupBox_wavesize->setStyleSheet(CSSSetSmallLabel);
|
||||||
|
ui->groupBox_surge->setStyleSheet(CSSSetSmallLabel);
|
||||||
|
ui->groupBox_chill->setStyleSheet(CSSSetSmallLabel);
|
||||||
|
ui->salinityOverWrittenIcon->setToolTip(CSSSetSmallLabel);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// From the index of the water type combo box, set the dive->salinity to an appropriate value
|
// From the index of the water type combo box, set the dive->salinity to an appropriate value
|
||||||
void TabDiveInformation::on_waterTypeCombo_activated(int index)
|
void TabDiveInformation::on_waterTypeCombo_activated(int index)
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,6 +16,7 @@ public:
|
||||||
~TabDiveInformation();
|
~TabDiveInformation();
|
||||||
void updateData() override;
|
void updateData() override;
|
||||||
void clear() override;
|
void clear() override;
|
||||||
|
void updateUi() override;
|
||||||
private slots:
|
private slots:
|
||||||
void divesChanged(const QVector<dive *> &dives, DiveField field);
|
void divesChanged(const QVector<dive *> &dives, DiveField field);
|
||||||
void cylinderChanged(dive *d);
|
void cylinderChanged(dive *d);
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "TabDiveStatistics.h"
|
#include "TabDiveStatistics.h"
|
||||||
#include "TabDiveSite.h"
|
#include "TabDiveSite.h"
|
||||||
#include "TabDiveComputer.h"
|
#include "TabDiveComputer.h"
|
||||||
|
#include "core/settings/qPrefDisplay.h"
|
||||||
|
|
||||||
#include <QCompleter>
|
#include <QCompleter>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
|
@ -89,7 +90,7 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
|
||||||
// Alas, this is not the case. When the user switches to system-format, the preferences sends the according
|
// Alas, this is not the case. When the user switches to system-format, the preferences sends the according
|
||||||
// signal. However, the correct date and time format is set by the preferences dialog later. This should be fixed.
|
// signal. However, the correct date and time format is set by the preferences dialog later. This should be fixed.
|
||||||
connect(PreferencesDialog::instance(), &PreferencesDialog::settingsChanged, this, &MainTab::updateDateTimeFields);
|
connect(PreferencesDialog::instance(), &PreferencesDialog::settingsChanged, this, &MainTab::updateDateTimeFields);
|
||||||
|
connect(qPrefDisplay::instance(), &qPrefDisplay::headerstyle_colorChanged, this, &MainTab::colorsChanged);
|
||||||
QAction *action = new QAction(tr("Apply changes"), this);
|
QAction *action = new QAction(tr("Apply changes"), this);
|
||||||
connect(action, SIGNAL(triggered(bool)), this, SLOT(acceptChanges()));
|
connect(action, SIGNAL(triggered(bool)), this, SLOT(acceptChanges()));
|
||||||
ui.diveNotesMessage->addAction(action);
|
ui.diveNotesMessage->addAction(action);
|
||||||
|
@ -699,3 +700,9 @@ void MainTab::clearTabs()
|
||||||
for (auto widget: extraWidgets)
|
for (auto widget: extraWidgets)
|
||||||
widget->clear();
|
widget->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainTab::colorsChanged()
|
||||||
|
{
|
||||||
|
for (TabBase *widget: extraWidgets)
|
||||||
|
widget->updateUi();
|
||||||
|
}
|
||||||
|
|
|
@ -64,6 +64,7 @@ slots:
|
||||||
void enableEdition();
|
void enableEdition();
|
||||||
void escDetected(void);
|
void escDetected(void);
|
||||||
void updateDateTimeFields();
|
void updateDateTimeFields();
|
||||||
|
void colorsChanged();
|
||||||
private:
|
private:
|
||||||
Ui::MainTab ui;
|
Ui::MainTab ui;
|
||||||
bool editMode;
|
bool editMode;
|
||||||
|
|
Loading…
Add table
Reference in a new issue