Skip to content

Commit 1399a0d

Browse files
committed
SE
1 parent 6678538 commit 1399a0d

File tree

6 files changed

+68
-4
lines changed

6 files changed

+68
-4
lines changed

krokiet/src/common.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ pub enum StrDataEmptyFiles {
7575
pub enum IntDataTemporaryFiles {
7676
ModificationDatePart1,
7777
ModificationDatePart2,
78+
SizePart1,
79+
SizePart2,
7880
}
7981
#[repr(u8)]
8082
pub enum StrDataTemporaryFiles {
@@ -264,8 +266,9 @@ impl ActiveTab {
264266
Self::SimilarMusic => IntDataSimilarMusic::SizePart1 as usize,
265267
Self::BrokenFiles => IntDataBrokenFiles::SizePart1 as usize,
266268
Self::BadExtensions => IntDataBadExtensions::SizePart1 as usize,
269+
Self::TemporaryFiles => IntDataTemporaryFiles::SizePart1 as usize,
267270
Self::Settings | Self::About => return None,
268-
Self::EmptyFolders | Self::InvalidSymlinks | Self::TemporaryFiles => return None,
271+
Self::EmptyFolders | Self::InvalidSymlinks => return None,
269272
};
270273
Some(res)
271274
}

krokiet/src/connect_scan.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,8 @@ fn prepare_data_model_temporary_files(fe: &TemporaryFileEntry) -> (ModelRc<Share
826826
.into(),
827827
]);
828828
let modification_split = split_u64_into_i32s(fe.get_modified_date());
829-
let data_model_int = VecModel::from_slice(&[modification_split.0, modification_split.1]);
829+
let size_split = split_u64_into_i32s(fe.size);
830+
let data_model_int = VecModel::from_slice(&[modification_split.0, modification_split.1, size_split.0, size_split.1]);
830831
(data_model_str, data_model_int)
831832
}
832833
////////////////////////////////////////// Broken Files

krokiet/src/connect_sort.rs

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ use slint::{ComponentHandle, Model, ModelRc, VecModel};
44

55
use crate::common::connect_i32_into_u64;
66
use crate::connect_row_selection::recalculate_small_selection_if_needed;
7-
use crate::{ActiveTab, Callabler, GuiState, MainListModel, MainWindow, SortMode};
7+
use crate::connect_translation::translate_sort_mode;
8+
use crate::{ActiveTab, Callabler, GuiState, MainListModel, MainWindow, SortMode, SortModel};
89

910
pub(crate) fn connect_sort(app: &MainWindow) {
1011
let a = app.as_weak();
@@ -28,6 +29,46 @@ pub(crate) fn connect_sort(app: &MainWindow) {
2829
});
2930
}
3031

32+
pub(crate) fn connect_showing_proper_sort_buttons(app: &MainWindow) {
33+
set_sort_buttons(app);
34+
let a = app.as_weak();
35+
app.global::<Callabler>().on_tab_changed(move || {
36+
let app = a.upgrade().expect("Failed to upgrade app :(");
37+
set_sort_buttons(&app);
38+
});
39+
}
40+
41+
fn set_sort_buttons(app: &MainWindow) {
42+
let active_tab = app.global::<GuiState>().get_active_tab();
43+
let mut base_buttons = vec![
44+
SortMode::Checked,
45+
SortMode::FullName,
46+
SortMode::ItemName,
47+
SortMode::ModificationDate,
48+
SortMode::ParentName,
49+
SortMode::Reverse,
50+
SortMode::Selection,
51+
];
52+
53+
let additional_buttons = match active_tab.get_int_size_opt_idx() {
54+
Some(_) => vec![SortMode::Size],
55+
None => vec![],
56+
};
57+
58+
base_buttons.extend(additional_buttons);
59+
base_buttons.reverse();
60+
61+
let new_sort_model = base_buttons
62+
.into_iter()
63+
.map(|e| SortModel {
64+
name: translate_sort_mode(e),
65+
data: e,
66+
})
67+
.collect::<Vec<_>>();
68+
69+
app.global::<GuiState>().set_sort_results_list(ModelRc::new(VecModel::from(new_sort_model)));
70+
}
71+
3172
mod sorts {
3273
use super::*;
3374

krokiet/src/connect_translation.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,3 +417,16 @@ pub(crate) fn translate_select_mode(select_mode: SelectMode) -> SharedString {
417417
SelectMode::SelectOldest => flk!("selection_oldest").into(),
418418
}
419419
}
420+
421+
pub(crate) fn translate_sort_mode(sort_mode: SortMode) -> SharedString {
422+
match sort_mode {
423+
SortMode::ItemName => flk!("sort_by_item_name").into(),
424+
SortMode::ParentName => flk!("sort_by_parent_name").into(),
425+
SortMode::FullName => flk!("sort_by_full_name").into(),
426+
SortMode::Size => flk!("sort_by_size").into(),
427+
SortMode::ModificationDate => flk!("sort_by_modification_date").into(),
428+
SortMode::Selection => flk!("sort_by_selection").into(),
429+
SortMode::Checked => flk!("sort_by_checked").into(),
430+
SortMode::Reverse => flk!("sort_reverse").into(),
431+
}
432+
}

krokiet/src/main.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use crate::connect_save::connect_save;
3131
use crate::connect_scan::connect_scan_button;
3232
use crate::connect_select::{connect_select, connect_showing_proper_select_buttons};
3333
use crate::connect_show_preview::connect_show_preview;
34-
use crate::connect_sort::connect_sort;
34+
use crate::connect_sort::{connect_showing_proper_sort_buttons, connect_sort};
3535
use crate::connect_stop::connect_stop_button;
3636
use crate::connect_translation::connect_translations;
3737
// TODO - at start this should be used, to be sure that rust models are in sync with slint models
@@ -105,6 +105,7 @@ fn main() {
105105
connect_save(&app, Arc::clone(&shared_models));
106106
connect_row_selections(&app);
107107
connect_sort(&app);
108+
connect_showing_proper_sort_buttons(&app);
108109

109110
// Popups gather their size, after starting/closing popup at least once
110111
// This is simpler solution, than setting sizes of popups manually for each language

misc/test_compilation_speed_size/krokiet.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@
3232
"rust_base_config": "Release",
3333
"debug": "Full"
3434
},
35+
{
36+
"name": "release + native",
37+
"rust_base_config": "Release",
38+
"native": true
39+
},
3540
{
3641
"name": "release + opt o2",
3742
"rust_base_config": "Release",

0 commit comments

Comments
 (0)