diff --git a/i18n/en/cosmic_files.ftl b/i18n/en/cosmic_files.ftl index 5980668..20b5d57 100644 --- a/i18n/en/cosmic_files.ftl +++ b/i18n/en/cosmic_files.ftl @@ -82,6 +82,9 @@ new-folder = New folder open-in-terminal = Open in terminal move-to-trash = Move to trash restore-from-trash = Restore from trash +sort-by-name = Sort by name +sort-by-modified = Sort by modified +sort-by-size = Sort by size # Menu diff --git a/src/app.rs b/src/app.rs index da78996..7872876 100644 --- a/src/app.rs +++ b/src/app.rs @@ -78,6 +78,7 @@ pub enum Action { TabViewGrid, TabViewList, ToggleShowHidden, + ToggleSort(HeadingOptions), WindowClose, WindowNew, } @@ -120,6 +121,7 @@ impl Action { Message::TabMessage(entity_opt, tab::Message::View(tab::View::List)) } Action::ToggleShowHidden => Message::TabMessage(None, tab::Message::ToggleShowHidden), + Action::ToggleSort(sort) => Message::TabMessage(None, tab::Message::ToggleSort(sort)), Action::WindowClose => Message::WindowClose, Action::WindowNew => Message::WindowNew, } diff --git a/src/menu.rs b/src/menu.rs index bc0f13d..1e5a0c8 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -16,7 +16,7 @@ use crate::{ app::{Action, Message}, fl, key_bind::KeyBind, - tab::{self, Location, Tab}, + tab::{self, HeadingOptions, Location, Tab}, }; macro_rules! menu_button { @@ -102,6 +102,28 @@ pub fn context_menu<'a>( children.push(horizontal_rule(1).into()); children.push(menu_item(fl!("select-all"), Action::SelectAll).into()); children.push(menu_item(fl!("paste"), Action::Paste).into()); + children.push(horizontal_rule(1).into()); + children.push( + menu_item( + fl!("sort-by-name"), + Action::ToggleSort(HeadingOptions::Name), + ) + .into(), + ); + children.push( + menu_item( + fl!("sort-by-modified"), + Action::ToggleSort(HeadingOptions::Modified), + ) + .into(), + ); + children.push( + menu_item( + fl!("sort-by-size"), + Action::ToggleSort(HeadingOptions::Size), + ) + .into(), + ); } } Location::Trash => { @@ -113,6 +135,28 @@ pub fn context_menu<'a>( children .push(menu_item(fl!("restore-from-trash"), Action::RestoreFromTrash).into()); } + children.push(horizontal_rule(1).into()); + children.push( + menu_item( + fl!("sort-by-name"), + Action::ToggleSort(HeadingOptions::Name), + ) + .into(), + ); + children.push( + menu_item( + fl!("sort-by-modified"), + Action::ToggleSort(HeadingOptions::Modified), + ) + .into(), + ); + children.push( + menu_item( + fl!("sort-by-size"), + Action::ToggleSort(HeadingOptions::Size), + ) + .into(), + ); } }