@@ -44,6 +44,7 @@ static const Settings::Key DEFAULT_STYLE_FILE_PATH("engraving", "engraving/style
4444static const Settings::Key PART_STYLE_FILE_PATH (" engraving" , " engraving/style/partStyleFile" );
4545
4646static const Settings::Key INVERT_SCORE_COLOR (" engraving" , " engraving/scoreColorInversion" );
47+ static const Settings::Key SCORE_COLOR_INVERSION_MODE (" engraving" , " engraving/scoreColorInversionMode" );
4748
4849static const Settings::Key ALL_VOICES_COLOR (" engraving" , " engraving/colors/allVoicesColor" );
4950static const Settings::Key FORMATTING_COLOR (" engraving" , " engraving/colors/formattingColor" );
@@ -85,11 +86,17 @@ void EngravingConfiguration::init()
8586 m_partStyleFilePathChanged.send (val.toPath ());
8687 });
8788
89+ // TODO: How to upgrade old setting to new one?
8890 settings ()->setDefaultValue (INVERT_SCORE_COLOR, Val (false ));
8991 settings ()->valueChanged (INVERT_SCORE_COLOR).onReceive (nullptr , [this ](const Val&) {
9092 m_scoreInversionChanged.notify ();
9193 });
9294
95+ settings ()->setDefaultValue (SCORE_COLOR_INVERSION_MODE, Val (ScoreInversionMode::Disabled));
96+ settings ()->valueChanged (SCORE_COLOR_INVERSION_MODE).onReceive (nullptr , [this ](const Val&) {
97+ m_scoreInversionChanged.notify ();
98+ });
99+
93100 for (voice_idx_t voice = 0 ; voice < VOICES; ++voice) {
94101 Settings::Key key (" engraving" , " engraving/colors/voice" + std::to_string (voice + 1 ));
95102
@@ -333,12 +340,22 @@ Color EngravingConfiguration::highlightSelectionColor(voice_idx_t voice) const
333340
334341bool EngravingConfiguration::scoreInversionEnabled () const
335342{
336- return settings ()->value (INVERT_SCORE_COLOR).toBool ();
343+ switch (scoreInversionMode ()) {
344+ case ScoreInversionMode::Disabled: return false ;
345+ case ScoreInversionMode::FollowAppTheme: return uiConfiguration ()->isDarkMode ();
346+ case ScoreInversionMode::Always: return true ;
347+ default : return false ;
348+ }
349+ }
350+
351+ ScoreInversionMode EngravingConfiguration::scoreInversionMode () const
352+ {
353+ return settings ()->value (SCORE_COLOR_INVERSION_MODE).toEnum <ScoreInversionMode>();
337354}
338355
339- void EngravingConfiguration::setScoreInversionEnabled ( bool value )
356+ void EngravingConfiguration::setScoreInversionMode (ScoreInversionMode mode )
340357{
341- settings ()->setSharedValue (INVERT_SCORE_COLOR , Val (value ));
358+ settings ()->setSharedValue (SCORE_COLOR_INVERSION_MODE , Val (mode ));
342359}
343360
344361bool EngravingConfiguration::dynamicsApplyToAllVoices () const
0 commit comments