comparison main/PreferencesDialog.cpp @ 2466:2197ba438a3f background-mode

Add support for picking up overview colour from desktop theme
author Chris Cannam
date Fri, 24 Jan 2020 12:44:49 +0000
parents a94b289f0b93
children cbde01e5c626
comparison
equal deleted inserted replaced
2465:3d8bbe7a900f 2466:2197ba438a3f
147 int(ColourMapper::Green)).toInt()); 147 int(ColourMapper::Green)).toInt());
148 m_spectrogramMColour = (settings.value("spectrogram-melodic-colour", 148 m_spectrogramMColour = (settings.value("spectrogram-melodic-colour",
149 int(ColourMapper::Sunset)).toInt()); 149 int(ColourMapper::Sunset)).toInt());
150 m_colour3DColour = (settings.value("colour-3d-plot-colour", 150 m_colour3DColour = (settings.value("colour-3d-plot-colour",
151 int(ColourMapper::Green)).toInt()); 151 int(ColourMapper::Green)).toInt());
152 m_overviewColourIsSet = false;
152 m_overviewColour = ColourDatabase::getInstance()->getColour(tr("Green")); 153 m_overviewColour = ColourDatabase::getInstance()->getColour(tr("Green"));
153 if (settings.contains("overview-colour")) { 154 if (settings.contains("overview-colour")) {
154 QString qcolorName = 155 QString qcolorName =
155 settings.value("overview-colour", m_overviewColour.name()) 156 settings.value("overview-colour", m_overviewColour.name())
156 .toString(); 157 .toString();
157 m_overviewColour.setNamedColor(qcolorName); 158 m_overviewColour.setNamedColor(qcolorName);
159 m_overviewColourIsSet = true;
158 SVCERR << "loaded colour " << m_overviewColour.name() << " from settings" << endl; 160 SVCERR << "loaded colour " << m_overviewColour.name() << " from settings" << endl;
159 } 161 }
160 settings.endGroup(); 162 settings.endGroup();
161 163
162 ColourMapComboBox *spectrogramGColour = new ColourMapComboBox(true); 164 ColourMapComboBox *spectrogramGColour = new ColourMapComboBox(true);
168 ColourMapComboBox *colour3DColour = new ColourMapComboBox(true); 170 ColourMapComboBox *colour3DColour = new ColourMapComboBox(true);
169 colour3DColour->setCurrentIndex(m_colour3DColour); 171 colour3DColour->setCurrentIndex(m_colour3DColour);
170 172
171 // can't have "add new colour", as it gets saved in the session not in prefs 173 // can't have "add new colour", as it gets saved in the session not in prefs
172 m_overviewColourCombo = new ColourComboBox(false); 174 m_overviewColourCombo = new ColourComboBox(false);
173 int overviewColourIndex = 175 m_overviewColourCombo->includeUnsetEntry(tr("Follow desktop theme"));
174 ColourDatabase::getInstance()->getColourIndex(m_overviewColour); 176 if (m_overviewColourIsSet) {
175 SVCERR << "index = " << overviewColourIndex << " for colour " << m_overviewColour.name() << endl; 177 int overviewColourIndex =
176 if (overviewColourIndex >= 0) { 178 ColourDatabase::getInstance()->getColourIndex(m_overviewColour);
177 m_overviewColourCombo->setCurrentIndex(overviewColourIndex); 179 if (overviewColourIndex >= 0) {
180 m_overviewColourCombo->setCurrentIndex(overviewColourIndex + 1);
181 }
182 } else {
183 m_overviewColourCombo->setCurrentIndex(0);
178 } 184 }
179 185
180 connect(spectrogramGColour, SIGNAL(colourMapChanged(int)), 186 connect(spectrogramGColour, SIGNAL(colourMapChanged(int)),
181 this, SLOT(spectrogramGColourChanged(int))); 187 this, SLOT(spectrogramGColourChanged(int)));
182 connect(spectrogramMColour, SIGNAL(colourMapChanged(int)), 188 connect(spectrogramMColour, SIGNAL(colourMapChanged(int)),
745 } 751 }
746 752
747 void 753 void
748 PreferencesDialog::overviewColourChanged(int colour) 754 PreferencesDialog::overviewColourChanged(int colour)
749 { 755 {
750 m_overviewColour = ColourDatabase::getInstance()->getColour(colour); 756 m_overviewColourIsSet = (colour >= 0);
757 if (m_overviewColourIsSet) {
758 m_overviewColour = ColourDatabase::getInstance()->getColour(colour);
759 }
751 m_coloursChanged = true; 760 m_coloursChanged = true;
752 m_applyButton->setEnabled(true); 761 m_applyButton->setEnabled(true);
753 } 762 }
754 763
755 void 764 void
887 896
888 // When switching to one of the explicit background choices 897 // When switching to one of the explicit background choices
889 // (dark/light), also default the overview colour preference to 898 // (dark/light), also default the overview colour preference to
890 // something sensible 899 // something sensible
891 900
892 int overviewColour = m_overviewColourCombo->currentIndex(); 901 int overviewColour = m_overviewColourCombo->getCurrentColourIndex();
893 int plainColours = 6; // we happen to know there are 6 "light" and 6 "dark" 902
894 903 if (overviewColour >= 0) {
895 if (mode == Preferences::DarkBackground && overviewColour < plainColours) { 904 int plainColours = 6; // we happen to know there are 6 light and 6 dark
896 overviewColour += plainColours; 905
897 } 906 if (mode == Preferences::DarkBackground &&
898 if (mode == Preferences::LightBackground && overviewColour >= plainColours) { 907 overviewColour < plainColours) {
899 overviewColour -= plainColours; 908 overviewColour += plainColours;
900 } 909 }
901 910 if (mode == Preferences::LightBackground &&
902 m_overviewColourCombo->setCurrentIndex(overviewColour); 911 overviewColour >= plainColours) {
903 overviewColourChanged(overviewColour); 912 overviewColour -= plainColours;
913 }
914
915 m_overviewColourCombo->setCurrentIndex(overviewColour + 1);
916 overviewColourChanged(overviewColour);
917 }
904 } 918 }
905 919
906 void 920 void
907 PreferencesDialog::timeToTextModeChanged(int mode) 921 PreferencesDialog::timeToTextModeChanged(int mode)
908 { 922 {
1014 settings.setValue("scaledHiDpi", m_retina); 1028 settings.setValue("scaledHiDpi", m_retina);
1015 #endif 1029 #endif
1016 settings.setValue("spectrogram-colour", m_spectrogramGColour); 1030 settings.setValue("spectrogram-colour", m_spectrogramGColour);
1017 settings.setValue("spectrogram-melodic-colour", m_spectrogramMColour); 1031 settings.setValue("spectrogram-melodic-colour", m_spectrogramMColour);
1018 settings.setValue("colour-3d-plot-colour", m_colour3DColour); 1032 settings.setValue("colour-3d-plot-colour", m_colour3DColour);
1019 settings.setValue("overview-colour", m_overviewColour.name()); 1033 if (m_overviewColourIsSet) {
1034 settings.setValue("overview-colour", m_overviewColour.name());
1035 } else {
1036 settings.remove("overview-colour");
1037 }
1020 settings.endGroup(); 1038 settings.endGroup();
1021 1039
1022 settings.beginGroup("MainWindow"); 1040 settings.beginGroup("MainWindow");
1023 settings.setValue("sessiontemplate", m_currentTemplate); 1041 settings.setValue("sessiontemplate", m_currentTemplate);
1024 settings.endGroup(); 1042 settings.endGroup();