git.lucas.co / cce-files
file manager
git clone https://git.lucas.co/cce-files.git

commit3dd0cb9e7b9e9799fa7d560c04a6722b9256aa04
parentdb7814a588
authorLucas Galante <[email protected]>
date2026-06-20 22:45
pages: Migrate PreviewState usage to cce-ui crate

 src/pages/preview.rs | 56 +---------------------------------------------------
 1 file changed, 1 insertion(+), 55 deletions(-)

diff --git a/src/pages/preview.rs b/src/pages/preview.rs
index d38b9ba..f365608 100644
--- a/src/pages/preview.rs
+++ b/src/pages/preview.rs
@@ -1,25 +1,11 @@
 use std::path::PathBuf;
 
+pub use cce_ui::widget::PreviewState;
 use crate::pages::PageContent;
 use cce_ui::layout::SectionContext;
 
 // ── Data ────────────────────────────────────────────────────────────
 
-#[derive(Debug, Clone, Default)]
-pub struct PreviewState {
-    pub path: Option<PathBuf>,
-    pub path_display: String,
-    pub name: String,
-    pub is_dir: bool,
-    pub size: String,
-    pub permissions: String,
-    pub modified: String,
-    pub file_type: String,
-    pub target: String, // for symlinks
-    pub content_preview: Option<String>,
-    pub scroll_line: usize,
-}
-
 #[derive(Debug, Clone)]
 pub enum PreviewMessage {
     SetPath { path: PathBuf },
@@ -27,46 +13,6 @@ pub enum PreviewMessage {
     PreviewLoaded { path: PathBuf, data: crate::services::fs::PreviewData },
 }
 
-
-
-impl PreviewState {
-    pub fn handle_mouse_wheel(&mut self, delta: &cce_ui::widget::MouseScrollDelta, ch: f32) -> bool {
-        let content = match &self.content_preview {
-            Some(c) => c,
-            None => return false,
-        };
-        let total_lines = content.lines().count();
-        let half_h = ch * 0.5;
-        let mut max_visible_lines = 0;
-        let mut text_y = 44.0;
-        while text_y + 14.0 <= half_h - 16.0 {
-            max_visible_lines += 1;
-            text_y += 15.0;
-        }
-        if total_lines <= max_visible_lines {
-            if self.scroll_line != 0 {
-                self.scroll_line = 0;
-                return true;
-            }
-            return false;
-        }
-        let max_scroll = total_lines.saturating_sub(max_visible_lines);
-        let scroll_speed = 3.0;
-        let diff = match delta {
-            cce_ui::widget::MouseScrollDelta::LineDelta(_, y) => {
-                -y * scroll_speed
-            }
-            cce_ui::widget::MouseScrollDelta::PixelDelta(pos) => {
-                -pos.y as f32 / 15.0
-            }
-        };
-        let prev_scroll = self.scroll_line;
-        let new_scroll = (self.scroll_line as f32 + diff).round() as isize;
-        self.scroll_line = new_scroll.clamp(0, max_scroll as isize) as usize;
-        self.scroll_line != prev_scroll
-    }
-}
-
 // ── View ────────────────────────────────────────────────────────────
 
 pub fn view(state: &PreviewState, cx: f32, cy: f32, cw: f32, ch: f32) -> PageContent {