feat: Refactor all keybinding tips into a dynamically changing menu that can be invoked via '?' [#32]

This commit is contained in:
2025-08-12 16:27:34 -06:00
parent 1f4870d082
commit 00ab0f27f7
64 changed files with 1627 additions and 903 deletions
+17 -32
View File
@@ -1,10 +1,10 @@
use crate::app::context_clues::{
build_context_clue_string, BLOCKLIST_CONTEXT_CLUES, DOWNLOADS_CONTEXT_CLUES,
INDEXERS_CONTEXT_CLUES, ROOT_FOLDERS_CONTEXT_CLUES, SYSTEM_CONTEXT_CLUES,
BLOCKLIST_CONTEXT_CLUES, DOWNLOADS_CONTEXT_CLUES, INDEXERS_CONTEXT_CLUES,
ROOT_FOLDERS_CONTEXT_CLUES, SYSTEM_CONTEXT_CLUES,
};
use crate::app::radarr::radarr_context_clues::{
COLLECTIONS_CONTEXT_CLUES, LIBRARY_CONTEXT_CLUES, MANUAL_MOVIE_SEARCH_CONTEXTUAL_CONTEXT_CLUES,
MANUAL_MOVIE_SEARCH_CONTEXT_CLUES, MOVIE_DETAILS_CONTEXT_CLUES,
COLLECTIONS_CONTEXT_CLUES, LIBRARY_CONTEXT_CLUES, MANUAL_MOVIE_SEARCH_CONTEXT_CLUES,
MOVIE_DETAILS_CONTEXT_CLUES,
};
use crate::models::radarr_models::{
AddMovieSearchResult, BlocklistItem, Collection, CollectionMovie, DownloadRecord,
@@ -123,50 +123,43 @@ impl<'a> Default for RadarrData<'a> {
TabRoute {
title: "Library".to_string(),
route: ActiveRadarrBlock::Movies.into(),
help: String::new(),
contextual_help: Some(build_context_clue_string(&LIBRARY_CONTEXT_CLUES)),
contextual_help: Some(&LIBRARY_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "Collections".to_string(),
route: ActiveRadarrBlock::Collections.into(),
help: String::new(),
contextual_help: Some(build_context_clue_string(&COLLECTIONS_CONTEXT_CLUES)),
contextual_help: Some(&COLLECTIONS_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "Downloads".to_string(),
route: ActiveRadarrBlock::Downloads.into(),
help: String::new(),
contextual_help: Some(build_context_clue_string(&DOWNLOADS_CONTEXT_CLUES)),
contextual_help: Some(&DOWNLOADS_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "Blocklist".to_string(),
route: ActiveRadarrBlock::Blocklist.into(),
help: String::new(),
contextual_help: Some(build_context_clue_string(&BLOCKLIST_CONTEXT_CLUES)),
contextual_help: Some(&BLOCKLIST_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "Root Folders".to_string(),
route: ActiveRadarrBlock::RootFolders.into(),
help: String::new(),
contextual_help: Some(build_context_clue_string(&ROOT_FOLDERS_CONTEXT_CLUES)),
contextual_help: Some(&ROOT_FOLDERS_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "Indexers".to_string(),
route: ActiveRadarrBlock::Indexers.into(),
help: String::new(),
contextual_help: Some(build_context_clue_string(&INDEXERS_CONTEXT_CLUES)),
contextual_help: Some(&INDEXERS_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "System".to_string(),
route: ActiveRadarrBlock::System.into(),
help: String::new(),
contextual_help: Some(build_context_clue_string(&SYSTEM_CONTEXT_CLUES)),
contextual_help: Some(&SYSTEM_CONTEXT_CLUES),
config: None,
},
]),
@@ -174,45 +167,37 @@ impl<'a> Default for RadarrData<'a> {
TabRoute {
title: "Details".to_string(),
route: ActiveRadarrBlock::MovieDetails.into(),
help: build_context_clue_string(&MOVIE_DETAILS_CONTEXT_CLUES),
contextual_help: None,
contextual_help: Some(&MOVIE_DETAILS_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "History".to_string(),
route: ActiveRadarrBlock::MovieHistory.into(),
help: build_context_clue_string(&MOVIE_DETAILS_CONTEXT_CLUES),
contextual_help: None,
contextual_help: Some(&MOVIE_DETAILS_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "File".to_string(),
route: ActiveRadarrBlock::FileInfo.into(),
help: build_context_clue_string(&MOVIE_DETAILS_CONTEXT_CLUES),
contextual_help: None,
contextual_help: Some(&MOVIE_DETAILS_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "Cast".to_string(),
route: ActiveRadarrBlock::Cast.into(),
help: build_context_clue_string(&MOVIE_DETAILS_CONTEXT_CLUES),
contextual_help: None,
contextual_help: Some(&MOVIE_DETAILS_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "Crew".to_string(),
route: ActiveRadarrBlock::Crew.into(),
help: build_context_clue_string(&MOVIE_DETAILS_CONTEXT_CLUES),
contextual_help: None,
contextual_help: Some(&MOVIE_DETAILS_CONTEXT_CLUES),
config: None,
},
TabRoute {
title: "Manual Search".to_string(),
route: ActiveRadarrBlock::ManualSearch.into(),
help: build_context_clue_string(&MANUAL_MOVIE_SEARCH_CONTEXT_CLUES),
contextual_help: Some(build_context_clue_string(
&MANUAL_MOVIE_SEARCH_CONTEXTUAL_CONTEXT_CLUES,
)),
contextual_help: Some(&MANUAL_MOVIE_SEARCH_CONTEXT_CLUES),
config: None,
},
]),