diff --git a/Cargo.lock b/Cargo.lock index 96ba9b5..e27b59b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2853,9 +2853,9 @@ checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" [[package]] name = "indexmap" -version = "2.2.4" +version = "2.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "967d6dd42f16dbf0eb8040cb9e477933562684d3918f7d253f2ff9087fb3e7a3" +checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" dependencies = [ "equivalent", "hashbrown", @@ -5397,7 +5397,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.3", + "winnow 0.6.5", ] [[package]] @@ -6504,9 +6504,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44e19b97e00a4d3db3cdb9b53c8c5f87151b5689b82cc86c2848cbdcccb2689b" +checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" dependencies = [ "memchr", ] @@ -6679,9 +6679,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9" +checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" dependencies = [ "serde", "static_assertions", diff --git a/i18n/en/cosmic_files.ftl b/i18n/en/cosmic_files.ftl index c639bb4..8c2b7ac 100644 --- a/i18n/en/cosmic_files.ftl +++ b/i18n/en/cosmic_files.ftl @@ -57,11 +57,9 @@ properties = Properties ## Settings settings = Settings settings-tab = Tab -settings-hidden = Hidden files settings-show-hidden = Show hidden files icon-size-list = Icon size (list) icon-size-grid = Icon size (grid) -icon-zoom = Zoom ### Appearance appearance = Appearance diff --git a/i18n/ja/cosmic_files.ftl b/i18n/ja/cosmic_files.ftl index a14886e..c5eeac5 100644 --- a/i18n/ja/cosmic_files.ftl +++ b/i18n/ja/cosmic_files.ftl @@ -32,7 +32,7 @@ rename-folder = フォルダ名を変更 # Replace Dialog replace = 置き換える -replace-title = {$filename}はすでにこの場所に存在します。 +replace-title = {$filename}はすでにこの場所に存在します。 replace-warning = 保存するファイルで置き換えますか?置き換えると、内容を上書きます。 # List view @@ -57,11 +57,9 @@ properties = プロパティ ## Settings settings = 設定 settings-tab = タブ -settings-hidden = 隠しファイル settings-show-hidden = 隠しファイルを表示 icon-size-list = アイコンサイズ(リスト) icon-size-grid = アイコンサイズ(グリッド) -icon-zoom = ズーム ### Appearance appearance = 外観 diff --git a/src/app.rs b/src/app.rs index 8dd8a64..91fd15a 100644 --- a/src/app.rs +++ b/src/app.rs @@ -21,6 +21,7 @@ use std::{ any::TypeId, collections::{BTreeMap, HashMap, HashSet, VecDeque}, env, fs, + num::NonZeroU16, path::PathBuf, process, time, }; @@ -444,17 +445,15 @@ impl App { } fn settings(&self) -> Element { - let app_theme_selected = match self.config.app_theme { - AppTheme::Dark => 1, - AppTheme::Light => 2, - AppTheme::System => 0, - }; - let hidden_selected = self.config.tab.show_hidden; // TODO: Should dialog be updated here too? - let IconSizes { list, grid, .. } = self.config.tab.icon_sizes; widget::settings::view_column(vec![ widget::settings::view_section(fl!("appearance")) - .add( + .add({ + let app_theme_selected = match self.config.app_theme { + AppTheme::Dark => 1, + AppTheme::Light => 2, + AppTheme::System => 0, + }; widget::settings::item::builder(fl!("theme")).control(widget::dropdown( &self.app_themes, Some(app_theme_selected), @@ -465,58 +464,58 @@ impl App { _ => AppTheme::System, }) }, - )), - ) - .add( - widget::settings::item::builder(fl!("icon-size-list")).control( - widget::text_input(fl!("icon-zoom"), list.to_string()).on_input(|s| { - s.parse() - .map(|list_next| { - Message::TabConfig(TabConfig { - icon_sizes: IconSizes { - list: list_next, - ..self.config.tab.icon_sizes - }, - ..self.config.tab - }) + )) + }) + .add({ + let tab_config = self.config.tab.clone(); + let list: u16 = tab_config.icon_sizes.list.into(); + widget::settings::item::builder(fl!("icon-size-list")) + .description(format!("{}%", list)) + .control( + widget::slider(100..=500, list, move |list| { + Message::TabConfig(TabConfig { + icon_sizes: IconSizes { + list: NonZeroU16::new(list).unwrap(), + ..tab_config.icon_sizes + }, + ..tab_config }) - .unwrap_or_else(|_| Message::TabConfig(self.config.tab)) - }), - ), - ) - .add( - widget::settings::item::builder(fl!("icon-size-grid")).control( - widget::text_input(fl!("icon-zoom"), grid.to_string()).on_input(|s| { - s.parse() - .map(|grid_next| { - Message::TabConfig(TabConfig { - icon_sizes: IconSizes { - grid: grid_next, - ..self.config.tab.icon_sizes - }, - ..self.config.tab - }) + }) + .width(Length::Fixed(100.0)), + ) + }) + .add({ + let tab_config = self.config.tab.clone(); + let grid: u16 = tab_config.icon_sizes.grid.into(); + widget::settings::item::builder(fl!("icon-size-grid")) + .description(format!("{}%", grid)) + .control( + widget::slider(100..=500, grid, move |grid| { + Message::TabConfig(TabConfig { + icon_sizes: IconSizes { + grid: NonZeroU16::new(grid).unwrap(), + ..tab_config.icon_sizes + }, + ..tab_config }) - .unwrap_or_else(|_| Message::TabConfig(self.config.tab)) - }), - ), - ) + }) + .width(Length::Fixed(100.0)), + ) + }) .into(), widget::settings::view_section(fl!("settings-tab")) - .add( - widget::settings::item::builder(fl!("settings-hidden")).control( - widget::checkbox( - fl!("settings-show-hidden"), - hidden_selected, - |show_hidden| { - Message::TabConfig(TabConfig { - show_hidden, - ..self.config.tab - }) - }, - ), - ), - ) + .add({ + let tab_config = self.config.tab.clone(); + widget::settings::item::builder(fl!("settings-show-hidden")).toggler( + tab_config.show_hidden, + move |show_hidden| { + Message::TabConfig(TabConfig { + show_hidden, + ..tab_config + }) + }, + ) + }) .into(), ]) .into()