Refactored the movie_details_popup data into the MovieDetailsModal so things are neater and to follow the same format I've already established for other modals

This commit is contained in:
2023-08-11 16:37:21 -06:00
parent f7cb832095
commit ec9d23ede7
14 changed files with 1207 additions and 529 deletions
@@ -50,43 +50,178 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
fn handle_scroll_up(&mut self) {
match self.active_radarr_block {
ActiveRadarrBlock::MovieDetails => self.app.data.radarr_data.movie_details.scroll_up(),
ActiveRadarrBlock::MovieHistory => self.app.data.radarr_data.movie_history.scroll_up(),
ActiveRadarrBlock::Cast => self.app.data.radarr_data.movie_cast.scroll_up(),
ActiveRadarrBlock::Crew => self.app.data.radarr_data.movie_crew.scroll_up(),
ActiveRadarrBlock::ManualSearch => self.app.data.radarr_data.movie_releases.scroll_up(),
ActiveRadarrBlock::ManualSearchSortPrompt => {
self.app.data.radarr_data.movie_releases_sort.scroll_up()
}
ActiveRadarrBlock::MovieDetails => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_details
.scroll_up(),
ActiveRadarrBlock::MovieHistory => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_history
.scroll_up(),
ActiveRadarrBlock::Cast => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_cast
.scroll_up(),
ActiveRadarrBlock::Crew => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_crew
.scroll_up(),
ActiveRadarrBlock::ManualSearch => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_releases
.scroll_up(),
ActiveRadarrBlock::ManualSearchSortPrompt => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_releases_sort
.scroll_up(),
_ => (),
}
}
fn handle_scroll_down(&mut self) {
match self.active_radarr_block {
ActiveRadarrBlock::MovieDetails => self.app.data.radarr_data.movie_details.scroll_down(),
ActiveRadarrBlock::MovieHistory => self.app.data.radarr_data.movie_history.scroll_down(),
ActiveRadarrBlock::Cast => self.app.data.radarr_data.movie_cast.scroll_down(),
ActiveRadarrBlock::Crew => self.app.data.radarr_data.movie_crew.scroll_down(),
ActiveRadarrBlock::ManualSearch => self.app.data.radarr_data.movie_releases.scroll_down(),
ActiveRadarrBlock::ManualSearchSortPrompt => {
self.app.data.radarr_data.movie_releases_sort.scroll_down()
}
ActiveRadarrBlock::MovieDetails => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_details
.scroll_down(),
ActiveRadarrBlock::MovieHistory => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_history
.scroll_down(),
ActiveRadarrBlock::Cast => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_cast
.scroll_down(),
ActiveRadarrBlock::Crew => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_crew
.scroll_down(),
ActiveRadarrBlock::ManualSearch => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_releases
.scroll_down(),
ActiveRadarrBlock::ManualSearchSortPrompt => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_releases_sort
.scroll_down(),
_ => (),
}
}
fn handle_home(&mut self) {
match self.active_radarr_block {
ActiveRadarrBlock::MovieDetails => self.app.data.radarr_data.movie_details.scroll_to_top(),
ActiveRadarrBlock::MovieHistory => self.app.data.radarr_data.movie_history.scroll_to_top(),
ActiveRadarrBlock::Cast => self.app.data.radarr_data.movie_cast.scroll_to_top(),
ActiveRadarrBlock::Crew => self.app.data.radarr_data.movie_crew.scroll_to_top(),
ActiveRadarrBlock::ManualSearch => self.app.data.radarr_data.movie_releases.scroll_to_top(),
ActiveRadarrBlock::MovieDetails => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_details
.scroll_to_top(),
ActiveRadarrBlock::MovieHistory => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_history
.scroll_to_top(),
ActiveRadarrBlock::Cast => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_cast
.scroll_to_top(),
ActiveRadarrBlock::Crew => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_crew
.scroll_to_top(),
ActiveRadarrBlock::ManualSearch => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_releases
.scroll_to_top(),
ActiveRadarrBlock::ManualSearchSortPrompt => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_releases_sort
.scroll_to_top(),
_ => (),
@@ -95,17 +230,58 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
fn handle_end(&mut self) {
match self.active_radarr_block {
ActiveRadarrBlock::MovieDetails => self.app.data.radarr_data.movie_details.scroll_to_bottom(),
ActiveRadarrBlock::MovieHistory => self.app.data.radarr_data.movie_history.scroll_to_bottom(),
ActiveRadarrBlock::Cast => self.app.data.radarr_data.movie_cast.scroll_to_bottom(),
ActiveRadarrBlock::Crew => self.app.data.radarr_data.movie_crew.scroll_to_bottom(),
ActiveRadarrBlock::ManualSearch => {
self.app.data.radarr_data.movie_releases.scroll_to_bottom()
}
ActiveRadarrBlock::MovieDetails => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_details
.scroll_to_bottom(),
ActiveRadarrBlock::MovieHistory => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_history
.scroll_to_bottom(),
ActiveRadarrBlock::Cast => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_cast
.scroll_to_bottom(),
ActiveRadarrBlock::Crew => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_crew
.scroll_to_bottom(),
ActiveRadarrBlock::ManualSearch => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_releases
.scroll_to_bottom(),
ActiveRadarrBlock::ManualSearchSortPrompt => self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_releases_sort
.scroll_to_bottom(),
_ => (),
@@ -173,20 +349,19 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
self.app.pop_navigation_stack();
}
ActiveRadarrBlock::ManualSearchSortPrompt => {
let movie_releases = self.app.data.radarr_data.movie_releases.items.clone();
let field = self
let movie_details_modal = self
.app
.data
.radarr_data
.movie_releases_sort
.current_selection();
let sort_ascending = !self.app.data.radarr_data.sort_ascending.unwrap();
self.app.data.radarr_data.sort_ascending = Some(sort_ascending);
.movie_details_modal
.as_mut()
.unwrap();
let movie_releases = movie_details_modal.movie_releases.items.clone();
let field = movie_details_modal.movie_releases_sort.current_selection();
let sort_ascending = !movie_details_modal.sort_ascending.unwrap();
movie_details_modal.sort_ascending = Some(sort_ascending);
self
.app
.data
.radarr_data
movie_details_modal
.movie_releases
.set_items(sort_releases_by_selected_field(
movie_releases,
@@ -258,14 +433,18 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
.pop_and_push_navigation_stack((*self.active_radarr_block).into());
}
_ if *key == DEFAULT_KEYBINDINGS.sort.key => {
self
let movie_details_modal = self
.app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap();
movie_details_modal
.movie_releases_sort
.set_items(Vec::from_iter(ReleaseField::iter()));
let sort_ascending = self.app.data.radarr_data.sort_ascending;
self.app.data.radarr_data.sort_ascending =
let sort_ascending = movie_details_modal.sort_ascending;
movie_details_modal.sort_ascending =
Some(sort_ascending.is_some() && sort_ascending.unwrap());
self
.app