#1223: use theme service on settings load (#1238)

* use theme service on settings load

* use window.matchMedia in loadSettings

* typo fix

* Patched app config to dispatch on OS' theme.

Signed-off-by: Akos Kitta <a.kitta@arduino.cc>

Co-authored-by: Akos Kitta <a.kitta@arduino.cc>
This commit is contained in:
Dave Simpson 2022-07-27 11:06:48 +02:00 committed by GitHub
parent 9373a0bcaf
commit f22be3c587
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 6 deletions

View File

@ -139,7 +139,10 @@ export class SettingsService {
this.preferenceService.get<number>(FONT_SIZE_SETTING, 12),
this.preferenceService.get<string>(
'workbench.colorTheme',
'arduino-theme'
window.matchMedia &&
window.matchMedia('(prefers-color-scheme: dark)').matches
? 'arduino-theme-dark'
: 'arduino-theme'
),
this.preferenceService.get<Settings.AutoSave>(
AUTO_SAVE_SETTING,

View File

@ -13,6 +13,9 @@ const {
const {
ApplicationProps,
} = require('@theia/application-package/lib/application-props');
const {
FrontendApplicationConfigProvider,
} = require('@theia/core/lib/browser/frontend-application-config-provider');
const lightTheme = 'arduino-theme';
const darkTheme = 'arduino-theme-dark';
@ -21,13 +24,19 @@ const defaultTheme =
? darkTheme
: lightTheme;
const originalGet = FrontendApplicationConfigProvider.get;
FrontendApplicationConfigProvider.get = function () {
const originalProps = originalGet.bind(FrontendApplicationConfigProvider)();
return { ...originalProps, defaultTheme };
}.bind(FrontendApplicationConfigProvider);
const arduinoDarkTheme = {
id: 'arduino-theme-dark',
type: 'dark',
label: 'Dark (Arduino)',
editorTheme: 'arduino-theme-dark',
activate() { },
deactivate() { }
activate() {},
deactivate() {},
};
const arduinoLightTheme = {
@ -35,8 +44,8 @@ const arduinoLightTheme = {
type: 'light',
label: 'Light (Arduino)',
editorTheme: 'arduino-theme',
activate() { },
deactivate() { }
activate() {},
deactivate() {},
};
if (!window[ThemeServiceSymbol]) {
@ -49,7 +58,11 @@ if (!window[ThemeServiceSymbol]) {
);
},
});
themeService.register(...BuiltinThemeProvider.themes, arduinoDarkTheme, arduinoLightTheme);
themeService.register(
...BuiltinThemeProvider.themes,
arduinoDarkTheme,
arduinoLightTheme
);
themeService.startupTheme();
themeService.setCurrentTheme(defaultTheme);
window[ThemeServiceSymbol] = themeService;