Removing
This commit is contained in:
parent
447eb98b51
commit
c27236e644
|
@ -14,38 +14,29 @@ pub fn connect_delete_button(app: &MainWindow) {
|
|||
|
||||
let model = match active_tab {
|
||||
CurrentTab::EmptyFolders => app.get_empty_folder_model(),
|
||||
CurrentTab::SimilarImages => app.get_similar_images_model(),
|
||||
CurrentTab::EmptyFiles => app.get_empty_files_model(),
|
||||
_ => panic!(),
|
||||
};
|
||||
|
||||
let new_model = handle_delete_items(&model);
|
||||
let new_model = handle_delete_items(&model, active_tab == CurrentTab::EmptyFolders);
|
||||
|
||||
if let Some(new_model) = new_model {
|
||||
match active_tab {
|
||||
CurrentTab::EmptyFolders => app.set_empty_folder_model(new_model),
|
||||
CurrentTab::SimilarImages => app.set_similar_images_model(new_model),
|
||||
CurrentTab::EmptyFiles => app.set_empty_files_model(new_model),
|
||||
_ => panic!(),
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
fn handle_delete_empty_folders(app: &MainWindow) {
|
||||
let r = app.get_empty_folder_model();
|
||||
let (entries_to_delete, mut entries_left) = filter_out_checked_items(r.borrow(), false);
|
||||
fn handle_delete_items(items: &ModelRc<MainListModel>, delete_empty_folders: bool) -> Option<ModelRc<MainListModel>> {
|
||||
let (entries_to_delete, mut entries_left) = filter_out_checked_items(items, false);
|
||||
|
||||
if !entries_to_delete.is_empty() {
|
||||
remove_selected_items(entries_to_delete);
|
||||
deselect_all_items(&mut entries_left);
|
||||
|
||||
let r = ModelRc::new(VecModel::from(entries_left));
|
||||
app.set_empty_folder_model(r);
|
||||
}
|
||||
}
|
||||
|
||||
fn handle_delete_items(items: &ModelRc<MainListModel>) -> Option<ModelRc<MainListModel>> {
|
||||
let (entries_to_delete, mut entries_left) = filter_out_checked_items(items.borrow(), false);
|
||||
|
||||
if !entries_to_delete.is_empty() {
|
||||
remove_selected_items(entries_to_delete);
|
||||
remove_selected_items(entries_to_delete, delete_empty_folders);
|
||||
deselect_all_items(&mut entries_left);
|
||||
|
||||
let r = ModelRc::new(VecModel::from(entries_left));
|
||||
|
@ -55,9 +46,12 @@ fn handle_delete_items(items: &ModelRc<MainListModel>) -> Option<ModelRc<MainLis
|
|||
}
|
||||
|
||||
// TODO delete in parallel items, consider to add progress bar
|
||||
fn remove_selected_items(items: Vec<MainListModel>) {
|
||||
// For empty folders double check if folders are really empty - this function probably should be run in thread
|
||||
// and at the end should be send signal to main thread to update model
|
||||
fn remove_selected_items(items: Vec<MainListModel>, delete_empty_folders: bool) {
|
||||
info!("Items to remove {}", items.len());
|
||||
drop(items);
|
||||
drop(delete_empty_folders);
|
||||
// items.into_iter().for_each(|_item| {});
|
||||
}
|
||||
|
||||
|
@ -75,6 +69,7 @@ fn filter_out_checked_items(items: &ModelRc<MainListModel>, have_header: bool) -
|
|||
|
||||
let (entries_to_delete, mut entries_left): (Vec<_>, Vec<_>) = items.iter().partition(|item| item.checked);
|
||||
|
||||
// When have header, we must also throw out orphaned items - this needs to be
|
||||
if have_header && !entries_left.is_empty() {
|
||||
// First row must be header
|
||||
assert!(entries_left[0].header_row);
|
||||
|
|
|
@ -15,12 +15,12 @@ export component SelectableTableView inherits Rectangle {
|
|||
in-out property <int> parentPathIdx;
|
||||
in-out property <int> fileNameIdx;
|
||||
in-out property <int> selected_item: -1;
|
||||
out property <length> list_view_width: column_sizes[0] + column_sizes[1] + column_sizes[2] + column_sizes[3] + column_sizes[4] + column_sizes[5] + column_sizes[6] + column_sizes[7] + column_sizes[8] + column_sizes[9] + column_sizes[10] + column_sizes[11];
|
||||
out property <length> list_view_width: max(self.width - 20px, column_sizes[0] + column_sizes[1] + column_sizes[2] + column_sizes[3] + column_sizes[4] + column_sizes[5] + column_sizes[6] + column_sizes[7] + column_sizes[8] + column_sizes[9] + column_sizes[10] + column_sizes[11]);
|
||||
forward-focus: focus_item;
|
||||
// TODO not works
|
||||
focus_item := FocusScope {
|
||||
key-released(event) => {
|
||||
// debug(event);
|
||||
debug(event);
|
||||
accept
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue