file manager
git clone https://git.lucas.co/cce-files.git
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 {