diff --git a/src/lib.rs b/src/lib.rs index cecb00e7..8ba970aa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -247,8 +247,7 @@ pub fn create_collection_thread( sender: std::sync::mpsc::Sender>, control_receiver: std::sync::mpsc::Receiver, termination_ctrl_lock: Arc>, termination_ctrl_cvar: Arc, - app_config_fields: &app::AppConfig, filters: app::DataFilters, - used_widget_set: UsedWidgets, + app_config_fields: &app::AppConfig, filters: app::DataFilters, used_widget_set: UsedWidgets, ) -> std::thread::JoinHandle<()> { let temp_type = app_config_fields.temperature_type.clone(); let use_current_cpu_total = app_config_fields.use_current_cpu_total; diff --git a/src/tuine/component/base/shortcut.rs b/src/tuine/component/base/shortcut.rs index 3386f189..6b857ea6 100644 --- a/src/tuine/component/base/shortcut.rs +++ b/src/tuine/component/base/shortcut.rs @@ -5,6 +5,24 @@ use crate::tuine::{ Bounds, DrawContext, Event, LayoutNode, Size, StateContext, Status, TmpComponent, }; +enum MultiShortcutStep +where + Child: TmpComponent, +{ + NextStep(Event), + Action( + Box< + dyn Fn( + &mut Child, + &mut StateContext<'_>, + &DrawContext<'_>, + Event, + &mut Vec, + ) -> Status, + >, + ), +} + /// A [`Component`] to handle keyboard shortcuts and assign actions to them. /// /// Inspired by [Flutter's approach](https://docs.flutter.dev/development/ui/advanced/actions_and_shortcuts). @@ -26,6 +44,8 @@ where ) -> Status, >, >, + multi_shortcuts: FxHashMap>, + enabled_multi_shortcuts: FxHashMap>, } impl Shortcut @@ -36,6 +56,8 @@ where Self { child: Some(child), shortcuts: Default::default(), + multi_shortcuts: Default::default(), + enabled_multi_shortcuts: Default::default(), } } diff --git a/src/tuine/component/widget/disk_table.rs b/src/tuine/component/widget/disk_table.rs index c7434d9c..fdbfba92 100644 --- a/src/tuine/component/widget/disk_table.rs +++ b/src/tuine/component/widget/disk_table.rs @@ -38,6 +38,7 @@ impl AppWidget for DiskTable { style, vec!["Disk", "Mount", "Used", "Free", "Total", "R/s", "W/s"], rows, + 0, ), } } diff --git a/src/tuine/component/widget/simple_table.rs b/src/tuine/component/widget/simple_table.rs index 01a29d9c..a1a26987 100644 --- a/src/tuine/component/widget/simple_table.rs +++ b/src/tuine/component/widget/simple_table.rs @@ -27,12 +27,13 @@ impl SimpleTable { #[track_caller] pub fn build>, R: Into>( ctx: &mut ViewContext<'_>, style: StyleSheet, columns: Vec, data: Vec, + sort_index: usize, ) -> Self { let shortcut = Shortcut::with_child(TextTable::build( ctx, TextTableProps::new(columns) .rows(data) - .default_sort(SortType::Ascending(1)) + .default_sort(SortType::Ascending(sort_index)) .style(text_table::StyleSheet { text: style.text, selected_text: style.selected_text, diff --git a/src/tuine/component/widget/temp_table.rs b/src/tuine/component/widget/temp_table.rs index da11e759..aaa832db 100644 --- a/src/tuine/component/widget/temp_table.rs +++ b/src/tuine/component/widget/temp_table.rs @@ -33,7 +33,7 @@ impl AppWidget for TempTable { let rows = data.temp_table(config.temperature_type); Self { - inner: SimpleTable::build(ctx, style, vec!["Sensor", "Temp"], rows), + inner: SimpleTable::build(ctx, style, vec!["Sensor", "Temp"], rows, 0), } } }