From 4a1ac384a17287bc2637892e7bae895d40597f1b Mon Sep 17 00:00:00 2001 From: Developer Date: Wed, 13 May 2026 23:52:21 +0800 Subject: [PATCH] feat: wire App with reading view dispatch, theme toggle, and reading position save --- src/app.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/app.rs b/src/app.rs index fd9fead..1573a63 100644 --- a/src/app.rs +++ b/src/app.rs @@ -143,6 +143,44 @@ impl eframe::App for App { fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { if self.state.book.is_none() { 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(); } }