feat: wire App with reading view dispatch, theme toggle, and reading position save
This commit is contained in:
38
src/app.rs
38
src/app.rs
@@ -143,6 +143,44 @@ impl eframe::App for App {
|
|||||||
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
|
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
|
||||||
if self.state.book.is_none() {
|
if self.state.book.is_none() {
|
||||||
self.welcome_view(ctx);
|
self.welcome_view(ctx);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let file_path = self.state.file_path
|
||||||
|
.as_ref()
|
||||||
|
.map(|p| p.to_string_lossy().to_string())
|
||||||
|
.unwrap_or_default();
|
||||||
|
|
||||||
|
egui::CentralPanel::default().show(ctx, |ui| {
|
||||||
|
let book = self.state.book.as_mut().unwrap();
|
||||||
|
let action = crate::reader::reading_view(
|
||||||
|
ui,
|
||||||
|
book,
|
||||||
|
&mut self.state.current_section,
|
||||||
|
&mut self.state.current_page,
|
||||||
|
&mut self.state.sidebar_open,
|
||||||
|
&mut self.settings.font_size,
|
||||||
|
&self.settings.theme,
|
||||||
|
&file_path,
|
||||||
|
);
|
||||||
|
|
||||||
|
if action.go_back {
|
||||||
|
self.save_reading_position();
|
||||||
|
self.state.book = None;
|
||||||
|
self.state.current_section = 0;
|
||||||
|
self.state.current_page = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if action.toggle_theme {
|
||||||
|
self.settings.theme = match self.settings.theme {
|
||||||
|
theme::Theme::Light => theme::Theme::Dark,
|
||||||
|
theme::Theme::Dark => theme::Theme::Light,
|
||||||
|
};
|
||||||
|
ctx.set_style(theme::create_style(&self.settings.theme));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
self.save_reading_position();
|
||||||
|
self.save_settings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user