Skip to content

Commit 16bc21e

Browse files
nickolasclarkejacksongoode
authored andcommitted
add basic system theme option
1 parent c70ace5 commit 16bc21e

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

psst-gui/src/data/config.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ impl Default for AudioQuality {
240240
pub enum Theme {
241241
Light,
242242
Dark,
243+
System
243244
}
244245

245246
impl Default for Theme {

psst-gui/src/ui/preferences.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ fn general_tab_widget() -> impl Widget<AppState> {
157157
.with_child(Label::new("Theme").with_font(theme::UI_FONT_MEDIUM))
158158
.with_spacer(theme::grid(2.0))
159159
.with_child(
160-
RadioGroup::column(vec![("Light", Theme::Light), ("Dark", Theme::Dark)])
160+
RadioGroup::column(vec![("Light", Theme::Light), ("Dark", Theme::Dark), ("System", Theme::System)])
161161
.lens(AppState::config.then(Config::theme)),
162162
);
163163

psst-gui/src/ui/theme.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ pub fn setup(env: &mut Env, state: &AppState) {
4646
match state.config.theme {
4747
Theme::Light => setup_light_theme(env),
4848
Theme::Dark => setup_dark_theme(env),
49+
Theme::System => setup_system_theme(env),
4950
};
5051

5152
env.set(WINDOW_BACKGROUND_COLOR, env.get(GREY_700));
@@ -69,6 +70,11 @@ pub fn setup(env: &mut Env, state: &AppState) {
6970
env.set(BUTTON_LIGHT, env.get(GREY_600));
7071
env.set(BUTTON_DARK, env.get(GREY_700));
7172
}
73+
//TODO: fix this?
74+
Theme::System => {
75+
env.set(BUTTON_LIGHT, env.get(GREY_600));
76+
env.set(BUTTON_DARK, env.get(GREY_700));
77+
}
7278
}
7379

7480
env.set(BORDER_LIGHT, env.get(GREY_400));
@@ -165,3 +171,12 @@ fn setup_dark_theme(env: &mut Env) {
165171
env.set(LINK_ACTIVE_COLOR, Color::rgba(1.0, 1.0, 1.0, 0.025));
166172
env.set(LINK_COLD_COLOR, Color::rgba(1.0, 1.0, 1.0, 0.0));
167173
}
174+
175+
fn setup_system_theme(env: &mut Env) {
176+
let current_theme = dark_light::detect();
177+
if current_theme == dark_light::Mode::Dark {
178+
setup_dark_theme(env);
179+
} else {
180+
setup_light_theme(env);
181+
}
182+
}

0 commit comments

Comments
 (0)