feat(app): Dispatch support for all relevant Sonarr blocks
This commit is contained in:
+1
-1
@@ -57,7 +57,7 @@ pub fn ui(f: &mut Frame<'_>, app: &mut App<'_>) {
|
||||
|
||||
draw_header_row(f, app, header_area);
|
||||
|
||||
if RadarrUi::accepts(*app.get_current_route()) {
|
||||
if RadarrUi::accepts(app.get_current_route()) {
|
||||
RadarrUi::draw_context_row(f, app, context_area);
|
||||
RadarrUi::draw(f, app, table_area);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ impl DrawUi for BlocklistUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
match active_radarr_block {
|
||||
ActiveRadarrBlock::Blocklist | ActiveRadarrBlock::BlocklistSortPrompt => {
|
||||
draw_blocklist_table(f, app, area)
|
||||
@@ -77,7 +77,7 @@ impl DrawUi for BlocklistUi {
|
||||
}
|
||||
|
||||
fn draw_blocklist_table(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
let current_selection = if app.data.radarr_data.blocklist.items.is_empty() {
|
||||
BlocklistItem::default()
|
||||
} else {
|
||||
|
||||
@@ -39,7 +39,7 @@ impl DrawUi for CollectionDetailsUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, context_option) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, context_option) = app.get_current_route() {
|
||||
let draw_collection_details_popup =
|
||||
|f: &mut Frame<'_>, app: &mut App<'_>, popup_area: Rect| match context_option
|
||||
.unwrap_or(active_radarr_block)
|
||||
|
||||
@@ -41,7 +41,7 @@ impl DrawUi for EditCollectionUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, context_option) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, context_option) = app.get_current_route() {
|
||||
let draw_edit_collection_prompt =
|
||||
|f: &mut Frame<'_>, app: &mut App<'_>, prompt_area: Rect| match active_radarr_block {
|
||||
ActiveRadarrBlock::EditCollectionSelectMinimumAvailability => {
|
||||
@@ -102,7 +102,7 @@ fn draw_edit_collection_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>
|
||||
let title = format!("Edit - {collection_title}");
|
||||
let yes_no_value = app.data.radarr_data.prompt_confirm;
|
||||
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
||||
let highlight_yes_no = selected_block == &ActiveRadarrBlock::EditCollectionConfirmPrompt;
|
||||
let highlight_yes_no = selected_block == ActiveRadarrBlock::EditCollectionConfirmPrompt;
|
||||
let EditCollectionModal {
|
||||
minimum_availability_list,
|
||||
quality_profile_list,
|
||||
@@ -135,30 +135,30 @@ fn draw_edit_collection_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>
|
||||
let help_paragraph = Paragraph::new(help_text).centered();
|
||||
let prompt_paragraph = layout_paragraph_borderless(&collection_overview);
|
||||
let monitored_checkbox = Checkbox::new("Monitored")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditCollectionToggleMonitored)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditCollectionToggleMonitored)
|
||||
.checked(monitored.unwrap_or_default());
|
||||
let min_availability_drop_down_button = Button::new()
|
||||
.title(selected_minimum_availability.to_display_str())
|
||||
.label("Minimum Availability")
|
||||
.icon("▼")
|
||||
.selected(selected_block == &ActiveRadarrBlock::EditCollectionSelectMinimumAvailability);
|
||||
.selected(selected_block == ActiveRadarrBlock::EditCollectionSelectMinimumAvailability);
|
||||
let quality_profile_drop_down_button = Button::new()
|
||||
.title(selected_quality_profile)
|
||||
.label("Quality Profile")
|
||||
.icon("▼")
|
||||
.selected(selected_block == &ActiveRadarrBlock::EditCollectionSelectQualityProfile);
|
||||
.selected(selected_block == ActiveRadarrBlock::EditCollectionSelectQualityProfile);
|
||||
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
let root_folder_input_box = InputBox::new(&path.text)
|
||||
.offset(path.offset.load(Ordering::SeqCst))
|
||||
.label("Root Folder")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditCollectionRootFolderPathInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditCollectionRootFolderPathInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditCollectionRootFolderPathInput);
|
||||
render_selectable_input_box!(root_folder_input_box, f, root_folder_area);
|
||||
}
|
||||
|
||||
let search_on_add_checkbox = Checkbox::new("Search on Add")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditCollectionToggleSearchOnAdd)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditCollectionToggleSearchOnAdd)
|
||||
.checked(search_on_add.unwrap_or_default());
|
||||
let save_button = Button::new()
|
||||
.title("Save")
|
||||
|
||||
@@ -38,7 +38,7 @@ impl DrawUi for CollectionsUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
let route = *app.get_current_route();
|
||||
let route = app.get_current_route();
|
||||
let mut collections_ui_matcher = |active_radarr_block| match active_radarr_block {
|
||||
ActiveRadarrBlock::Collections | ActiveRadarrBlock::CollectionsSortPrompt => {
|
||||
draw_collections(f, app, area)
|
||||
@@ -100,7 +100,7 @@ impl DrawUi for CollectionsUi {
|
||||
}
|
||||
|
||||
pub(super) fn draw_collections(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
let current_selection = if !app.data.radarr_data.collections.items.is_empty() {
|
||||
app.data.radarr_data.collections.current_selection().clone()
|
||||
} else {
|
||||
|
||||
@@ -30,7 +30,7 @@ impl DrawUi for DownloadsUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
match active_radarr_block {
|
||||
ActiveRadarrBlock::Downloads => draw_downloads(f, app, area),
|
||||
ActiveRadarrBlock::DeleteDownloadPrompt => {
|
||||
|
||||
@@ -51,7 +51,7 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
let block = title_block_centered("Edit Indexer");
|
||||
let yes_no_value = app.data.radarr_data.prompt_confirm;
|
||||
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
||||
let highlight_yes_no = selected_block == &ActiveRadarrBlock::EditIndexerConfirmPrompt;
|
||||
let highlight_yes_no = selected_block == ActiveRadarrBlock::EditIndexerConfirmPrompt;
|
||||
let edit_indexer_modal_option = &app.data.radarr_data.edit_indexer_modal;
|
||||
let protocol = &app.data.radarr_data.indexers.current_selection().protocol;
|
||||
let help_text = Text::from(build_context_clue_string(&CONFIRMATION_PROMPT_CONTEXT_CLUES).help());
|
||||
@@ -87,26 +87,26 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
])
|
||||
.areas(right_side_area);
|
||||
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
let name_input_box = InputBox::new(&edit_indexer_modal.name.text)
|
||||
.offset(edit_indexer_modal.name.offset.load(Ordering::SeqCst))
|
||||
.label("Name")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditIndexerNameInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerNameInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditIndexerNameInput);
|
||||
let url_input_box = InputBox::new(&edit_indexer_modal.url.text)
|
||||
.offset(edit_indexer_modal.url.offset.load(Ordering::SeqCst))
|
||||
.label("URL")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditIndexerUrlInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerUrlInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditIndexerUrlInput);
|
||||
let api_key_input_box = InputBox::new(&edit_indexer_modal.api_key.text)
|
||||
.offset(edit_indexer_modal.api_key.offset.load(Ordering::SeqCst))
|
||||
.label("API Key")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditIndexerApiKeyInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerApiKeyInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditIndexerApiKeyInput);
|
||||
let tags_input_box = InputBox::new(&edit_indexer_modal.tags.text)
|
||||
.offset(edit_indexer_modal.tags.offset.load(Ordering::SeqCst))
|
||||
.label("Tags")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditIndexerTagsInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerTagsInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditIndexerTagsInput);
|
||||
|
||||
render_selectable_input_box!(name_input_box, f, name_area);
|
||||
@@ -117,12 +117,12 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
let seed_ratio_input_box = InputBox::new(&edit_indexer_modal.seed_ratio.text)
|
||||
.offset(edit_indexer_modal.seed_ratio.offset.load(Ordering::SeqCst))
|
||||
.label("Seed Ratio")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditIndexerSeedRatioInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerSeedRatioInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditIndexerSeedRatioInput);
|
||||
let tags_input_box = InputBox::new(&edit_indexer_modal.tags.text)
|
||||
.offset(edit_indexer_modal.tags.offset.load(Ordering::SeqCst))
|
||||
.label("Tags")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditIndexerTagsInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerTagsInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditIndexerTagsInput);
|
||||
|
||||
render_selectable_input_box!(seed_ratio_input_box, f, seed_ratio_area);
|
||||
@@ -133,23 +133,21 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
|
||||
let rss_checkbox = Checkbox::new("Enable RSS")
|
||||
.checked(edit_indexer_modal.enable_rss.unwrap_or_default())
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditIndexerToggleEnableRss);
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerToggleEnableRss);
|
||||
let auto_search_checkbox = Checkbox::new("Enable Automatic Search")
|
||||
.checked(
|
||||
edit_indexer_modal
|
||||
.enable_automatic_search
|
||||
.unwrap_or_default(),
|
||||
)
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditIndexerToggleEnableAutomaticSearch);
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerToggleEnableAutomaticSearch);
|
||||
let interactive_search_checkbox = Checkbox::new("Enable Interactive Search")
|
||||
.checked(
|
||||
edit_indexer_modal
|
||||
.enable_interactive_search
|
||||
.unwrap_or_default(),
|
||||
)
|
||||
.highlighted(
|
||||
selected_block == &ActiveRadarrBlock::EditIndexerToggleEnableInteractiveSearch,
|
||||
);
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerToggleEnableInteractiveSearch);
|
||||
|
||||
let [save_area, cancel_area] =
|
||||
Layout::horizontal([Constraint::Percentage(25), Constraint::Percentage(25)])
|
||||
|
||||
@@ -54,7 +54,7 @@ fn draw_edit_indexer_settings_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area:
|
||||
let block = title_block_centered("Configure All Indexer Settings");
|
||||
let yes_no_value = app.data.radarr_data.prompt_confirm;
|
||||
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
||||
let highlight_yes_no = selected_block == &ActiveRadarrBlock::IndexerSettingsConfirmPrompt;
|
||||
let highlight_yes_no = selected_block == ActiveRadarrBlock::IndexerSettingsConfirmPrompt;
|
||||
let indexer_settings_option = &app.data.radarr_data.indexer_settings;
|
||||
let help_text = Text::from(build_context_clue_string(&CONFIRMATION_PROMPT_CONTEXT_CLUES).help());
|
||||
let help_paragraph = Paragraph::new(help_text).centered();
|
||||
@@ -90,7 +90,7 @@ fn draw_edit_indexer_settings_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area:
|
||||
])
|
||||
.areas(right_side_area);
|
||||
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
let min_age = indexer_settings.minimum_age.to_string();
|
||||
let retention = indexer_settings.retention.to_string();
|
||||
let max_size = indexer_settings.maximum_size.to_string();
|
||||
@@ -100,27 +100,27 @@ fn draw_edit_indexer_settings_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area:
|
||||
let min_age_text_box = InputBox::new(&min_age)
|
||||
.cursor_after_string(false)
|
||||
.label("Minimum Age (minutes) ▴▾")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::IndexerSettingsMinimumAgeInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::IndexerSettingsMinimumAgeInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::IndexerSettingsMinimumAgeInput);
|
||||
let retention_input_box = InputBox::new(&retention)
|
||||
.cursor_after_string(false)
|
||||
.label("Retention (days) ▴▾")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::IndexerSettingsRetentionInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::IndexerSettingsRetentionInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::IndexerSettingsRetentionInput);
|
||||
let max_size_input_box = InputBox::new(&max_size)
|
||||
.cursor_after_string(false)
|
||||
.label("Maximum Size (MB) ▴▾")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::IndexerSettingsMaximumSizeInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::IndexerSettingsMaximumSizeInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::IndexerSettingsMaximumSizeInput);
|
||||
let availability_delay_input_box = InputBox::new(&availability_delay)
|
||||
.cursor_after_string(false)
|
||||
.label("Availability Delay (days) ▴▾")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::IndexerSettingsAvailabilityDelayInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::IndexerSettingsAvailabilityDelayInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::IndexerSettingsAvailabilityDelayInput);
|
||||
let rss_sync_interval_input_box = InputBox::new(&rss_sync_interval)
|
||||
.cursor_after_string(false)
|
||||
.label("RSS Sync Interval (minutes) ▴▾")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::IndexerSettingsRssSyncIntervalInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::IndexerSettingsRssSyncIntervalInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::IndexerSettingsRssSyncIntervalInput);
|
||||
let whitelisted_subs_input_box =
|
||||
InputBox::new(&indexer_settings.whitelisted_hardcoded_subs.text)
|
||||
@@ -132,7 +132,7 @@ fn draw_edit_indexer_settings_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area:
|
||||
)
|
||||
.label("Whitelisted Subtitle Tags")
|
||||
.highlighted(
|
||||
selected_block == &ActiveRadarrBlock::IndexerSettingsWhitelistedSubtitleTagsInput,
|
||||
selected_block == ActiveRadarrBlock::IndexerSettingsWhitelistedSubtitleTagsInput,
|
||||
)
|
||||
.selected(
|
||||
active_radarr_block == ActiveRadarrBlock::IndexerSettingsWhitelistedSubtitleTagsInput,
|
||||
@@ -147,10 +147,10 @@ fn draw_edit_indexer_settings_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area:
|
||||
}
|
||||
|
||||
let prefer_indexer_flags_checkbox = Checkbox::new("Prefer Indexer Flags")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::IndexerSettingsTogglePreferIndexerFlags)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::IndexerSettingsTogglePreferIndexerFlags)
|
||||
.checked(indexer_settings.prefer_indexer_flags);
|
||||
let allow_hardcoded_subs_checkbox = Checkbox::new("Allow Hardcoded Subs")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::IndexerSettingsToggleAllowHardcodedSubs)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::IndexerSettingsToggleAllowHardcodedSubs)
|
||||
.checked(indexer_settings.allow_hardcoded_subs);
|
||||
|
||||
let [save_area, cancel_area] =
|
||||
|
||||
@@ -43,7 +43,7 @@ impl DrawUi for IndexersUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
let route = *app.get_current_route();
|
||||
let route = app.get_current_route();
|
||||
let mut indexers_matchers = |active_radarr_block| match active_radarr_block {
|
||||
ActiveRadarrBlock::Indexers => draw_indexers(f, app, area),
|
||||
ActiveRadarrBlock::TestIndexer => {
|
||||
|
||||
@@ -46,7 +46,7 @@ impl DrawUi for AddMovieUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, context_option) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, context_option) = app.get_current_route() {
|
||||
let draw_add_movie_search_popup =
|
||||
|f: &mut Frame<'_>, app: &mut App<'_>, area: Rect| match active_radarr_block {
|
||||
ActiveRadarrBlock::AddMovieSearchInput
|
||||
@@ -202,7 +202,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
.primary()
|
||||
};
|
||||
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
match active_radarr_block {
|
||||
ActiveRadarrBlock::AddMovieSearchInput => {
|
||||
let search_box = InputBox::new(block_content)
|
||||
@@ -284,7 +284,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
}
|
||||
|
||||
fn draw_confirmation_popup(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
match active_radarr_block {
|
||||
ActiveRadarrBlock::AddMovieSelectMonitor => {
|
||||
draw_confirmation_prompt(f, app, area);
|
||||
@@ -354,7 +354,7 @@ fn draw_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
let prompt = movie_overview;
|
||||
let yes_no_value = app.data.radarr_data.prompt_confirm;
|
||||
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
||||
let highlight_yes_no = selected_block == &ActiveRadarrBlock::AddMovieConfirmPrompt;
|
||||
let highlight_yes_no = selected_block == ActiveRadarrBlock::AddMovieConfirmPrompt;
|
||||
let AddMovieModal {
|
||||
monitor_list,
|
||||
minimum_availability_list,
|
||||
@@ -400,33 +400,33 @@ fn draw_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
.title(&selected_root_folder.path)
|
||||
.label("Root Folder")
|
||||
.icon("▼")
|
||||
.selected(selected_block == &ActiveRadarrBlock::AddMovieSelectRootFolder);
|
||||
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectRootFolder);
|
||||
let monitor_drop_down_button = Button::new()
|
||||
.title(selected_monitor.to_display_str())
|
||||
.label("Monitor")
|
||||
.icon("▼")
|
||||
.selected(selected_block == &ActiveRadarrBlock::AddMovieSelectMonitor);
|
||||
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectMonitor);
|
||||
let min_availability_drop_down_button = Button::new()
|
||||
.title(selected_minimum_availability.to_display_str())
|
||||
.label("Minimum Availability")
|
||||
.icon("▼")
|
||||
.selected(selected_block == &ActiveRadarrBlock::AddMovieSelectMinimumAvailability);
|
||||
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectMinimumAvailability);
|
||||
let quality_profile_drop_down_button = Button::new()
|
||||
.title(selected_quality_profile)
|
||||
.label("Quality Profile")
|
||||
.icon("▼")
|
||||
.selected(selected_block == &ActiveRadarrBlock::AddMovieSelectQualityProfile);
|
||||
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectQualityProfile);
|
||||
|
||||
f.render_widget(root_folder_drop_down_button, root_folder_area);
|
||||
f.render_widget(monitor_drop_down_button, monitor_area);
|
||||
f.render_widget(min_availability_drop_down_button, min_availability_area);
|
||||
f.render_widget(quality_profile_drop_down_button, quality_profile_area);
|
||||
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
let tags_input_box = InputBox::new(&tags.text)
|
||||
.offset(tags.offset.load(Ordering::SeqCst))
|
||||
.label("Tags")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::AddMovieTagsInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::AddMovieTagsInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::AddMovieTagsInput);
|
||||
render_selectable_input_box!(tags_input_box, f, tags_area);
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ impl DrawUi for DeleteMovieUi {
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if matches!(
|
||||
*app.get_current_route(),
|
||||
app.get_current_route(),
|
||||
Route::Radarr(ActiveRadarrBlock::DeleteMoviePrompt, _)
|
||||
) {
|
||||
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
||||
@@ -38,16 +38,16 @@ impl DrawUi for DeleteMovieUi {
|
||||
let checkboxes = vec![
|
||||
Checkbox::new("Delete Movie File")
|
||||
.checked(app.data.radarr_data.delete_movie_files)
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::DeleteMovieToggleDeleteFile),
|
||||
.highlighted(selected_block == ActiveRadarrBlock::DeleteMovieToggleDeleteFile),
|
||||
Checkbox::new("Add List Exclusion")
|
||||
.checked(app.data.radarr_data.add_list_exclusion)
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::DeleteMovieToggleAddListExclusion),
|
||||
.highlighted(selected_block == ActiveRadarrBlock::DeleteMovieToggleAddListExclusion),
|
||||
];
|
||||
let confirmation_prompt = ConfirmationPrompt::new()
|
||||
.title("Delete Movie")
|
||||
.prompt(&prompt)
|
||||
.checkboxes(checkboxes)
|
||||
.yes_no_highlighted(selected_block == &ActiveRadarrBlock::DeleteMovieConfirmPrompt)
|
||||
.yes_no_highlighted(selected_block == ActiveRadarrBlock::DeleteMovieConfirmPrompt)
|
||||
.yes_no_value(app.data.radarr_data.prompt_confirm);
|
||||
|
||||
draw_library(f, app, area);
|
||||
|
||||
@@ -43,7 +43,7 @@ impl DrawUi for EditMovieUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, context_option) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, context_option) = app.get_current_route() {
|
||||
let draw_edit_movie_prompt =
|
||||
|f: &mut Frame<'_>, app: &mut App<'_>, prompt_area: Rect| match active_radarr_block {
|
||||
ActiveRadarrBlock::EditMovieSelectMinimumAvailability => {
|
||||
@@ -105,7 +105,7 @@ fn draw_edit_movie_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, are
|
||||
let title = format!("Edit - {movie_title}");
|
||||
let yes_no_value = app.data.radarr_data.prompt_confirm;
|
||||
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
||||
let highlight_yes_no = selected_block == &ActiveRadarrBlock::EditMovieConfirmPrompt;
|
||||
let highlight_yes_no = selected_block == ActiveRadarrBlock::EditMovieConfirmPrompt;
|
||||
let EditMovieModal {
|
||||
minimum_availability_list,
|
||||
quality_profile_list,
|
||||
@@ -139,28 +139,28 @@ fn draw_edit_movie_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, are
|
||||
let prompt_paragraph = layout_paragraph_borderless(&movie_overview);
|
||||
let monitored_checkbox = Checkbox::new("Monitored")
|
||||
.checked(monitored.unwrap_or_default())
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditMovieToggleMonitored);
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditMovieToggleMonitored);
|
||||
let min_availability_drop_down_button = Button::new()
|
||||
.title(selected_minimum_availability.to_display_str())
|
||||
.label("Minimum Availability")
|
||||
.icon("▼")
|
||||
.selected(selected_block == &ActiveRadarrBlock::EditMovieSelectMinimumAvailability);
|
||||
.selected(selected_block == ActiveRadarrBlock::EditMovieSelectMinimumAvailability);
|
||||
let quality_profile_drop_down_button = Button::new()
|
||||
.title(selected_quality_profile)
|
||||
.label("Quality Profile")
|
||||
.icon("▼")
|
||||
.selected(selected_block == &ActiveRadarrBlock::EditMovieSelectQualityProfile);
|
||||
.selected(selected_block == ActiveRadarrBlock::EditMovieSelectQualityProfile);
|
||||
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
let path_input_box = InputBox::new(&path.text)
|
||||
.offset(path.offset.load(Ordering::SeqCst))
|
||||
.label("Path")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditMoviePathInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditMoviePathInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditMoviePathInput);
|
||||
let tags_input_box = InputBox::new(&tags.text)
|
||||
.offset(tags.offset.load(Ordering::SeqCst))
|
||||
.label("Tags")
|
||||
.highlighted(selected_block == &ActiveRadarrBlock::EditMovieTagsInput)
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditMovieTagsInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditMovieTagsInput);
|
||||
|
||||
match active_radarr_block {
|
||||
|
||||
@@ -44,7 +44,7 @@ impl DrawUi for LibraryUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
let route = *app.get_current_route();
|
||||
let route = app.get_current_route();
|
||||
let mut library_ui_matchers = |active_radarr_block: ActiveRadarrBlock| match active_radarr_block
|
||||
{
|
||||
ActiveRadarrBlock::Movies | ActiveRadarrBlock::MoviesSortPrompt => draw_library(f, app, area),
|
||||
@@ -103,7 +103,7 @@ impl DrawUi for LibraryUi {
|
||||
}
|
||||
|
||||
pub(super) fn draw_library(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
let current_selection = if !app.data.radarr_data.movies.items.is_empty() {
|
||||
app.data.radarr_data.movies.current_selection().clone()
|
||||
} else {
|
||||
|
||||
@@ -39,7 +39,7 @@ impl DrawUi for MovieDetailsUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, context_option) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, context_option) = app.get_current_route() {
|
||||
let draw_movie_info_popup = |f: &mut Frame<'_>, app: &mut App<'_>, popup_area: Rect| {
|
||||
let content_area = draw_tabs(
|
||||
f,
|
||||
@@ -371,7 +371,7 @@ fn draw_movie_crew(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
}
|
||||
|
||||
fn draw_movie_releases(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
let (current_selection, is_empty) = match app.data.radarr_data.movie_details_modal.as_ref() {
|
||||
Some(movie_details_modal) if !movie_details_modal.movie_releases.items.is_empty() => (
|
||||
movie_details_modal
|
||||
@@ -382,7 +382,7 @@ fn draw_movie_releases(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
),
|
||||
_ => (RadarrRelease::default(), true),
|
||||
};
|
||||
let current_route = *app.get_current_route();
|
||||
let current_route = app.get_current_route();
|
||||
let mut default_movie_details_modal = MovieDetailsModal::default();
|
||||
let help_footer = app
|
||||
.data
|
||||
|
||||
@@ -51,7 +51,7 @@ impl DrawUi for RadarrUi {
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
let content_area = draw_tabs(f, area, "Movies", &app.data.radarr_data.main_tabs);
|
||||
let route = *app.get_current_route();
|
||||
let route = app.get_current_route();
|
||||
|
||||
match route {
|
||||
_ if LibraryUi::accepts(route) => LibraryUi::draw(f, app, content_area),
|
||||
|
||||
@@ -30,7 +30,7 @@ impl DrawUi for RootFoldersUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
match active_radarr_block {
|
||||
ActiveRadarrBlock::RootFolders => draw_root_folders(f, app, area),
|
||||
ActiveRadarrBlock::AddRootFolderPrompt => draw_popup_over(
|
||||
|
||||
@@ -61,7 +61,7 @@ impl DrawUi for SystemUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
let route = *app.get_current_route();
|
||||
let route = app.get_current_route();
|
||||
|
||||
match route {
|
||||
_ if SystemDetailsUi::accepts(route) => SystemDetailsUi::draw(f, app, area),
|
||||
|
||||
@@ -39,7 +39,7 @@ impl DrawUi for SystemDetailsUi {
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
match active_radarr_block {
|
||||
ActiveRadarrBlock::SystemLogs => {
|
||||
draw_system_ui_layout(f, app, area);
|
||||
|
||||
Reference in New Issue
Block a user