Refactored the Edit/Add modals into their own structs so that adding similar modals in the future is more consistent, uses less RAM (since it's wrapped in an Option now), and is easier to implement. This comes with an initial example of the IndexerSettings UI that needs its own modal now. The modal has been created but it is still not used just yet so that's the next step.
This commit is contained in:
+20
-4
@@ -497,7 +497,11 @@ pub fn draw_checkbox_with_label<B: Backend>(
|
||||
is_selected: bool,
|
||||
) {
|
||||
let horizontal_chunks = horizontal_chunks(
|
||||
vec![Constraint::Percentage(50), Constraint::Percentage(50)],
|
||||
vec![
|
||||
Constraint::Percentage(48),
|
||||
Constraint::Percentage(48),
|
||||
Constraint::Percentage(4),
|
||||
],
|
||||
area,
|
||||
);
|
||||
|
||||
@@ -528,7 +532,11 @@ pub fn draw_button_with_icon<B: Backend>(
|
||||
let icon_paragraph = layout_button_paragraph_borderless(is_selected, icon, Alignment::Right);
|
||||
|
||||
let horizontal_chunks = horizontal_chunks_with_margin(
|
||||
vec![Constraint::Percentage(50), Constraint::Percentage(50)],
|
||||
vec![
|
||||
Constraint::Percentage(50),
|
||||
Constraint::Percentage(49),
|
||||
Constraint::Percentage(1),
|
||||
],
|
||||
area,
|
||||
1,
|
||||
);
|
||||
@@ -549,7 +557,11 @@ pub fn draw_drop_down_menu_button<B: Backend>(
|
||||
is_selected: bool,
|
||||
) {
|
||||
let horizontal_chunks = horizontal_chunks(
|
||||
vec![Constraint::Percentage(50), Constraint::Percentage(50)],
|
||||
vec![
|
||||
Constraint::Percentage(48),
|
||||
Constraint::Percentage(48),
|
||||
Constraint::Percentage(4),
|
||||
],
|
||||
area,
|
||||
);
|
||||
|
||||
@@ -679,7 +691,11 @@ pub fn draw_text_box_with_label<B: Backend>(
|
||||
should_show_cursor: bool,
|
||||
) {
|
||||
let horizontal_chunks = horizontal_chunks(
|
||||
vec![Constraint::Percentage(50), Constraint::Percentage(50)],
|
||||
vec![
|
||||
Constraint::Percentage(48),
|
||||
Constraint::Percentage(48),
|
||||
Constraint::Percentage(4),
|
||||
],
|
||||
area,
|
||||
);
|
||||
|
||||
|
||||
@@ -8,7 +8,9 @@ use crate::app::context_clues::{build_context_clue_string, BARE_POPUP_CONTEXT_CL
|
||||
use crate::app::radarr::radarr_context_clues::COLLECTION_DETAILS_CONTEXT_CLUES;
|
||||
use crate::app::App;
|
||||
use crate::models::radarr_models::CollectionMovie;
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, COLLECTION_DETAILS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, COLLECTION_DETAILS_BLOCKS,
|
||||
};
|
||||
use crate::models::Route;
|
||||
use crate::ui::radarr_ui::collections::draw_collections;
|
||||
use crate::ui::utils::{
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, COLLECTION_DETAILS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, COLLECTION_DETAILS_BLOCKS,
|
||||
};
|
||||
use crate::ui::radarr_ui::collections::collection_details_ui::CollectionDetailsUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, COLLECTIONS_BLOCKS, COLLECTION_DETAILS_BLOCKS, EDIT_COLLECTION_BLOCKS,
|
||||
};
|
||||
use crate::ui::radarr_ui::collections::CollectionsUi;
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
use tui::backend::Backend;
|
||||
use tui::layout::{Constraint, Rect};
|
||||
use tui::widgets::ListItem;
|
||||
use tui::Frame;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::servarr_data::radarr_data::{
|
||||
use crate::models::servarr_data::radarr::modals::EditCollectionModal;
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, COLLECTION_DETAILS_BLOCKS, EDIT_COLLECTION_BLOCKS,
|
||||
};
|
||||
use crate::models::Route;
|
||||
use crate::ui::radarr_ui::collections::collection_details_ui::CollectionDetailsUi;
|
||||
use crate::ui::radarr_ui::collections::draw_collections;
|
||||
use crate::ui::radarr_ui::{
|
||||
draw_select_minimum_availability_popup, draw_select_quality_profile_popup,
|
||||
};
|
||||
use crate::ui::utils::{
|
||||
horizontal_chunks, layout_paragraph_borderless, title_block_centered, vertical_chunks_with_margin,
|
||||
};
|
||||
use crate::ui::{
|
||||
draw_button, draw_checkbox_with_label, draw_drop_down_menu_button, draw_drop_down_popup,
|
||||
draw_large_popup_over_background_fn_with_ui, draw_medium_popup_over, draw_popup,
|
||||
draw_text_box_with_label, DrawUi,
|
||||
draw_selectable_list, draw_text_box_with_label, DrawUi,
|
||||
};
|
||||
|
||||
#[cfg(test)]
|
||||
@@ -46,7 +45,7 @@ impl DrawUi for EditCollectionUi {
|
||||
app,
|
||||
prompt_area,
|
||||
draw_edit_collection_confirmation_prompt,
|
||||
draw_select_minimum_availability_popup,
|
||||
draw_edit_collection_select_minimum_availability_popup,
|
||||
);
|
||||
}
|
||||
ActiveRadarrBlock::EditCollectionSelectQualityProfile => {
|
||||
@@ -55,7 +54,7 @@ impl DrawUi for EditCollectionUi {
|
||||
app,
|
||||
prompt_area,
|
||||
draw_edit_collection_confirmation_prompt,
|
||||
draw_select_quality_profile_popup,
|
||||
draw_edit_collection_select_quality_profile_popup,
|
||||
);
|
||||
}
|
||||
ActiveRadarrBlock::EditCollectionPrompt
|
||||
@@ -141,17 +140,16 @@ fn draw_edit_collection_confirmation_prompt<B: Backend>(
|
||||
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 EditCollectionModal {
|
||||
minimum_availability_list,
|
||||
quality_profile_list,
|
||||
monitored,
|
||||
search_on_add,
|
||||
path,
|
||||
} = app.data.radarr_data.edit_collection_modal.as_ref().unwrap();
|
||||
|
||||
let selected_minimum_availability = app
|
||||
.data
|
||||
.radarr_data
|
||||
.minimum_availability_list
|
||||
.current_selection();
|
||||
let selected_quality_profile = app
|
||||
.data
|
||||
.radarr_data
|
||||
.quality_profile_list
|
||||
.current_selection();
|
||||
let selected_minimum_availability = minimum_availability_list.current_selection();
|
||||
let selected_quality_profile = quality_profile_list.current_selection();
|
||||
|
||||
f.render_widget(title_block_centered(&title), prompt_area);
|
||||
|
||||
@@ -182,7 +180,7 @@ fn draw_edit_collection_confirmation_prompt<B: Backend>(
|
||||
f,
|
||||
chunks[1],
|
||||
"Monitored",
|
||||
app.data.radarr_data.edit_monitored.unwrap_or_default(),
|
||||
monitored.unwrap_or_default(),
|
||||
selected_block == &ActiveRadarrBlock::EditCollectionToggleMonitored,
|
||||
);
|
||||
|
||||
@@ -206,8 +204,8 @@ fn draw_edit_collection_confirmation_prompt<B: Backend>(
|
||||
f,
|
||||
chunks[4],
|
||||
"Root Folder",
|
||||
&app.data.radarr_data.edit_path.text,
|
||||
*app.data.radarr_data.edit_path.offset.borrow(),
|
||||
&path.text,
|
||||
*path.offset.borrow(),
|
||||
selected_block == &ActiveRadarrBlock::EditCollectionRootFolderPathInput,
|
||||
active_radarr_block == ActiveRadarrBlock::EditCollectionRootFolderPathInput,
|
||||
);
|
||||
@@ -217,7 +215,7 @@ fn draw_edit_collection_confirmation_prompt<B: Backend>(
|
||||
f,
|
||||
chunks[5],
|
||||
"Search on Add",
|
||||
app.data.radarr_data.edit_search_on_add.unwrap_or_default(),
|
||||
search_on_add.unwrap_or_default(),
|
||||
selected_block == &ActiveRadarrBlock::EditCollectionToggleSearchOnAdd,
|
||||
);
|
||||
|
||||
@@ -234,3 +232,41 @@ fn draw_edit_collection_confirmation_prompt<B: Backend>(
|
||||
!yes_no_value && highlight_yes_no,
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_edit_collection_select_minimum_availability_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_collection_modal
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.minimum_availability_list,
|
||||
|minimum_availability| ListItem::new(minimum_availability.to_display_str().to_owned()),
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_edit_collection_select_quality_profile_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_collection_modal
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.quality_profile_list,
|
||||
|quality_profile| ListItem::new(quality_profile.clone()),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, EDIT_COLLECTION_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, EDIT_COLLECTION_BLOCKS,
|
||||
};
|
||||
use crate::ui::radarr_ui::collections::edit_collection_ui::EditCollectionUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ pub(super) use collection_details_ui::draw_collection_details;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::radarr_models::Collection;
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, COLLECTIONS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, COLLECTIONS_BLOCKS};
|
||||
use crate::models::Route;
|
||||
use crate::ui::radarr_ui::collections::collection_details_ui::CollectionDetailsUi;
|
||||
use crate::ui::radarr_ui::collections::edit_collection_ui::EditCollectionUi;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, DOWNLOADS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, DOWNLOADS_BLOCKS};
|
||||
use crate::ui::radarr_ui::downloads::DownloadsUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ use tui::Frame;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::radarr_models::DownloadRecord;
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, DOWNLOADS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, DOWNLOADS_BLOCKS};
|
||||
use crate::models::{HorizontallyScrollableText, Route};
|
||||
use crate::ui::utils::{get_width_from_percentage, layout_block_top_border, style_primary};
|
||||
use crate::ui::{draw_prompt_box, draw_prompt_popup_over, draw_table, DrawUi, TableProps};
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
use std::iter;
|
||||
use tui::backend::Backend;
|
||||
use tui::layout::Rect;
|
||||
use tui::layout::{Constraint, Rect};
|
||||
use tui::Frame;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::servarr_data::radarr_data::INDEXER_SETTINGS_BLOCKS;
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, INDEXER_SETTINGS_BLOCKS,
|
||||
};
|
||||
use crate::models::Route;
|
||||
use crate::ui::DrawUi;
|
||||
use crate::ui::radarr_ui::indexers::draw_indexers;
|
||||
use crate::ui::utils::{
|
||||
horizontal_chunks, horizontal_chunks_with_margin, title_block_centered, vertical_chunks,
|
||||
vertical_chunks_with_margin,
|
||||
};
|
||||
use crate::ui::{
|
||||
draw_button, draw_checkbox_with_label, draw_popup_over, draw_text_box_with_label, loading, DrawUi,
|
||||
};
|
||||
|
||||
#[cfg(test)]
|
||||
#[path = "indexer_settings_ui_tests.rs"]
|
||||
@@ -22,5 +32,159 @@ impl DrawUi for IndexerSettingsUi {
|
||||
false
|
||||
}
|
||||
|
||||
fn draw<B: Backend>(_f: &mut Frame<'_, B>, _app: &mut App<'_>, _content_rect: Rect) {}
|
||||
fn draw<B: Backend>(f: &mut Frame<'_, B>, app: &mut App<'_>, content_rect: Rect) {
|
||||
draw_popup_over(
|
||||
f,
|
||||
app,
|
||||
content_rect,
|
||||
draw_indexers,
|
||||
draw_edit_indexer_settings_prompt,
|
||||
60,
|
||||
40,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn draw_edit_indexer_settings_prompt<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
prompt_area: Rect,
|
||||
) {
|
||||
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 indexer_settings_option = &app.data.radarr_data.indexer_settings;
|
||||
|
||||
if indexer_settings_option.is_some() {
|
||||
let indexer_settings = indexer_settings_option.as_ref().unwrap();
|
||||
f.render_widget(block, prompt_area);
|
||||
|
||||
let chunks = vertical_chunks_with_margin(
|
||||
vec![Constraint::Min(0), Constraint::Length(3)],
|
||||
prompt_area,
|
||||
1,
|
||||
);
|
||||
|
||||
let split_chunks = horizontal_chunks_with_margin(
|
||||
vec![Constraint::Ratio(1, 2), Constraint::Ratio(1, 2)],
|
||||
chunks[0],
|
||||
1,
|
||||
);
|
||||
|
||||
let left_chunks = vertical_chunks(
|
||||
vec![
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Min(0),
|
||||
],
|
||||
split_chunks[0],
|
||||
);
|
||||
let right_chunks = vertical_chunks(
|
||||
vec![
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Min(0),
|
||||
],
|
||||
split_chunks[1],
|
||||
);
|
||||
|
||||
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
|
||||
draw_text_box_with_label(
|
||||
f,
|
||||
left_chunks[0],
|
||||
"Minimum Age",
|
||||
&indexer_settings.minimum_age.to_string(),
|
||||
0,
|
||||
selected_block == &ActiveRadarrBlock::IndexerSettingsMinimumAgeInput,
|
||||
active_radarr_block == ActiveRadarrBlock::IndexerSettingsMinimumAgeInput,
|
||||
);
|
||||
draw_text_box_with_label(
|
||||
f,
|
||||
left_chunks[1],
|
||||
"Retention",
|
||||
&indexer_settings.retention.to_string(),
|
||||
0,
|
||||
selected_block == &ActiveRadarrBlock::IndexerSettingsRetentionInput,
|
||||
active_radarr_block == ActiveRadarrBlock::IndexerSettingsRetentionInput,
|
||||
);
|
||||
draw_text_box_with_label(
|
||||
f,
|
||||
left_chunks[2],
|
||||
"Maximum Size",
|
||||
&indexer_settings.maximum_size.to_string(),
|
||||
0,
|
||||
selected_block == &ActiveRadarrBlock::IndexerSettingsMaximumSizeInput,
|
||||
active_radarr_block == ActiveRadarrBlock::IndexerSettingsMaximumSizeInput,
|
||||
);
|
||||
draw_text_box_with_label(
|
||||
f,
|
||||
right_chunks[0],
|
||||
"Availability Delay",
|
||||
&indexer_settings.availability_delay.to_string(),
|
||||
0,
|
||||
selected_block == &ActiveRadarrBlock::IndexerSettingsAvailabilityDelayInput,
|
||||
active_radarr_block == ActiveRadarrBlock::IndexerSettingsAvailabilityDelayInput,
|
||||
);
|
||||
draw_text_box_with_label(
|
||||
f,
|
||||
right_chunks[1],
|
||||
"RSS Sync Interval",
|
||||
&indexer_settings.rss_sync_interval.to_string(),
|
||||
0,
|
||||
selected_block == &ActiveRadarrBlock::IndexerSettingsRssSyncIntervalInput,
|
||||
active_radarr_block == ActiveRadarrBlock::IndexerSettingsRssSyncIntervalInput,
|
||||
);
|
||||
draw_text_box_with_label(
|
||||
f,
|
||||
right_chunks[2],
|
||||
"Whitelisted Subtitle Tags",
|
||||
&indexer_settings.whitelisted_hardcoded_subs.to_string(),
|
||||
0,
|
||||
selected_block == &ActiveRadarrBlock::IndexerSettingsWhitelistedSubtitleTagsInput,
|
||||
active_radarr_block == ActiveRadarrBlock::IndexerSettingsWhitelistedSubtitleTagsInput,
|
||||
);
|
||||
}
|
||||
|
||||
draw_checkbox_with_label(
|
||||
f,
|
||||
left_chunks[3],
|
||||
"Prefer Indexer Flags",
|
||||
indexer_settings.prefer_indexer_flags,
|
||||
selected_block == &ActiveRadarrBlock::IndexerSettingsTogglePreferIndexerFlags,
|
||||
);
|
||||
|
||||
draw_checkbox_with_label(
|
||||
f,
|
||||
right_chunks[3],
|
||||
"Allow Hardcoded Subs",
|
||||
indexer_settings.allow_hardcoded_subs,
|
||||
selected_block == &ActiveRadarrBlock::IndexerSettingsToggleAllowHardcodedSubs,
|
||||
);
|
||||
|
||||
let button_chunks = horizontal_chunks(
|
||||
iter::repeat(Constraint::Ratio(1, 4)).take(4).collect(),
|
||||
// vec![Constraint::Percentage(50), Constraint::Percentage(50)],
|
||||
chunks[1],
|
||||
);
|
||||
|
||||
draw_button(
|
||||
f,
|
||||
button_chunks[1],
|
||||
"Save",
|
||||
yes_no_value && highlight_yes_no,
|
||||
);
|
||||
draw_button(
|
||||
f,
|
||||
button_chunks[2],
|
||||
"Cancel",
|
||||
!yes_no_value && highlight_yes_no,
|
||||
);
|
||||
} else {
|
||||
loading(f, block, prompt_area, app.is_loading);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, INDEXER_SETTINGS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, INDEXER_SETTINGS_BLOCKS,
|
||||
};
|
||||
use crate::ui::radarr_ui::indexers::indexer_settings_ui::IndexerSettingsUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, INDEXERS_BLOCKS, INDEXER_SETTINGS_BLOCKS,
|
||||
};
|
||||
use crate::ui::radarr_ui::indexers::IndexersUi;
|
||||
|
||||
@@ -6,7 +6,7 @@ use tui::Frame;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::radarr_models::Indexer;
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, INDEXERS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, INDEXERS_BLOCKS};
|
||||
use crate::models::Route;
|
||||
use crate::ui::radarr_ui::indexers::indexer_settings_ui::IndexerSettingsUi;
|
||||
use crate::ui::utils::{layout_block_top_border, style_failure, style_primary, style_success};
|
||||
|
||||
@@ -7,14 +7,11 @@ use tui::Frame;
|
||||
use crate::app::context_clues::{build_context_clue_string, BARE_POPUP_CONTEXT_CLUES};
|
||||
use crate::app::radarr::radarr_context_clues::ADD_MOVIE_SEARCH_RESULTS_CONTEXT_CLUES;
|
||||
use crate::models::radarr_models::AddMovieSearchResult;
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, ADD_MOVIE_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::modals::AddMovieModal;
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, ADD_MOVIE_BLOCKS};
|
||||
use crate::models::Route;
|
||||
use crate::ui::radarr_ui::collections::{draw_collection_details, draw_collections};
|
||||
use crate::ui::radarr_ui::library::draw_library;
|
||||
use crate::ui::radarr_ui::{
|
||||
draw_select_minimum_availability_popup, draw_select_quality_profile_popup,
|
||||
draw_select_root_folder_popup,
|
||||
};
|
||||
use crate::ui::utils::{
|
||||
borderless_block, get_width_from_percentage, horizontal_chunks, layout_block,
|
||||
layout_paragraph_borderless, style_help, style_primary, title_block_centered,
|
||||
@@ -284,7 +281,7 @@ fn draw_confirmation_popup<B: Backend>(f: &mut Frame<'_, B>, app: &mut App<'_>,
|
||||
app,
|
||||
prompt_area,
|
||||
draw_confirmation_prompt,
|
||||
draw_select_monitor_popup,
|
||||
draw_add_movie_select_monitor_popup,
|
||||
);
|
||||
}
|
||||
ActiveRadarrBlock::AddMovieSelectMinimumAvailability => {
|
||||
@@ -293,7 +290,7 @@ fn draw_confirmation_popup<B: Backend>(f: &mut Frame<'_, B>, app: &mut App<'_>,
|
||||
app,
|
||||
prompt_area,
|
||||
draw_confirmation_prompt,
|
||||
draw_select_minimum_availability_popup,
|
||||
draw_add_movie_select_minimum_availability_popup,
|
||||
);
|
||||
}
|
||||
ActiveRadarrBlock::AddMovieSelectQualityProfile => {
|
||||
@@ -302,7 +299,7 @@ fn draw_confirmation_popup<B: Backend>(f: &mut Frame<'_, B>, app: &mut App<'_>,
|
||||
app,
|
||||
prompt_area,
|
||||
draw_confirmation_prompt,
|
||||
draw_select_quality_profile_popup,
|
||||
draw_add_movie_select_quality_profile_popup,
|
||||
);
|
||||
}
|
||||
ActiveRadarrBlock::AddMovieSelectRootFolder => {
|
||||
@@ -311,7 +308,7 @@ fn draw_confirmation_popup<B: Backend>(f: &mut Frame<'_, B>, app: &mut App<'_>,
|
||||
app,
|
||||
prompt_area,
|
||||
draw_confirmation_prompt,
|
||||
draw_select_root_folder_popup,
|
||||
draw_add_movie_select_root_folder_popup,
|
||||
);
|
||||
}
|
||||
ActiveRadarrBlock::AddMoviePrompt | ActiveRadarrBlock::AddMovieTagsInput => {
|
||||
@@ -322,19 +319,6 @@ fn draw_confirmation_popup<B: Backend>(f: &mut Frame<'_, B>, app: &mut App<'_>,
|
||||
}
|
||||
}
|
||||
|
||||
fn draw_select_monitor_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app.data.radarr_data.monitor_list,
|
||||
|monitor| ListItem::new(monitor.to_display_str().to_owned()),
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_confirmation_prompt<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
@@ -380,19 +364,19 @@ fn draw_confirmation_prompt<B: Backend>(
|
||||
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 AddMovieModal {
|
||||
monitor_list,
|
||||
minimum_availability_list,
|
||||
quality_profile_list,
|
||||
root_folder_list,
|
||||
tags,
|
||||
..
|
||||
} = app.data.radarr_data.add_movie_modal.as_ref().unwrap();
|
||||
|
||||
let selected_monitor = app.data.radarr_data.monitor_list.current_selection();
|
||||
let selected_minimum_availability = app
|
||||
.data
|
||||
.radarr_data
|
||||
.minimum_availability_list
|
||||
.current_selection();
|
||||
let selected_quality_profile = app
|
||||
.data
|
||||
.radarr_data
|
||||
.quality_profile_list
|
||||
.current_selection();
|
||||
let selected_root_folder = app.data.radarr_data.root_folder_list.current_selection();
|
||||
let selected_monitor = monitor_list.current_selection();
|
||||
let selected_minimum_availability = minimum_availability_list.current_selection();
|
||||
let selected_quality_profile = quality_profile_list.current_selection();
|
||||
let selected_root_folder = root_folder_list.current_selection();
|
||||
|
||||
f.render_widget(title_block_centered(&title), prompt_area);
|
||||
|
||||
@@ -455,8 +439,8 @@ fn draw_confirmation_prompt<B: Backend>(
|
||||
f,
|
||||
chunks[5],
|
||||
"Tags",
|
||||
&app.data.radarr_data.edit_tags.text,
|
||||
*app.data.radarr_data.edit_tags.offset.borrow(),
|
||||
&tags.text,
|
||||
*tags.offset.borrow(),
|
||||
selected_block == &ActiveRadarrBlock::AddMovieTagsInput,
|
||||
active_radarr_block == ActiveRadarrBlock::AddMovieTagsInput,
|
||||
);
|
||||
@@ -475,3 +459,79 @@ fn draw_confirmation_prompt<B: Backend>(
|
||||
!yes_no_value && highlight_yes_no,
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_add_movie_select_monitor_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_modal
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.monitor_list,
|
||||
|monitor| ListItem::new(monitor.to_display_str().to_owned()),
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_add_movie_select_minimum_availability_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_modal
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.minimum_availability_list,
|
||||
|minimum_availability| ListItem::new(minimum_availability.to_display_str().to_owned()),
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_add_movie_select_quality_profile_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_modal
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.quality_profile_list,
|
||||
|quality_profile| ListItem::new(quality_profile.clone()),
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_add_movie_select_root_folder_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_modal
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.root_folder_list,
|
||||
|root_folder| ListItem::new(root_folder.path.to_owned()),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, ADD_MOVIE_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, ADD_MOVIE_BLOCKS};
|
||||
use crate::ui::radarr_ui::library::add_movie_ui::AddMovieUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ use tui::layout::Rect;
|
||||
use tui::Frame;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, DELETE_MOVIE_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, DELETE_MOVIE_BLOCKS};
|
||||
use crate::models::Route;
|
||||
use crate::ui::radarr_ui::library::draw_library;
|
||||
use crate::ui::{draw_prompt_box_with_checkboxes, draw_prompt_popup_over, DrawUi};
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, DELETE_MOVIE_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, DELETE_MOVIE_BLOCKS};
|
||||
use crate::ui::radarr_ui::library::delete_movie_ui::DeleteMovieUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
use tui::backend::Backend;
|
||||
use tui::layout::{Constraint, Rect};
|
||||
use tui::widgets::ListItem;
|
||||
use tui::Frame;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::servarr_data::radarr_data::{
|
||||
use crate::models::servarr_data::radarr::modals::EditMovieModal;
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, EDIT_MOVIE_BLOCKS, MOVIE_DETAILS_BLOCKS,
|
||||
};
|
||||
use crate::models::Route;
|
||||
use crate::ui::radarr_ui::library::draw_library;
|
||||
use crate::ui::radarr_ui::library::movie_details_ui::MovieDetailsUi;
|
||||
use crate::ui::radarr_ui::{
|
||||
draw_select_minimum_availability_popup, draw_select_quality_profile_popup,
|
||||
};
|
||||
|
||||
use crate::ui::utils::{
|
||||
horizontal_chunks, layout_paragraph_borderless, title_block_centered, vertical_chunks_with_margin,
|
||||
};
|
||||
use crate::ui::{
|
||||
draw_button, draw_checkbox_with_label, draw_drop_down_menu_button, draw_drop_down_popup,
|
||||
draw_large_popup_over_background_fn_with_ui, draw_medium_popup_over, draw_popup,
|
||||
draw_text_box_with_label, DrawUi,
|
||||
draw_selectable_list, draw_text_box_with_label, DrawUi,
|
||||
};
|
||||
|
||||
#[cfg(test)]
|
||||
@@ -46,7 +46,7 @@ impl DrawUi for EditMovieUi {
|
||||
app,
|
||||
prompt_area,
|
||||
draw_edit_movie_confirmation_prompt,
|
||||
draw_select_minimum_availability_popup,
|
||||
draw_edit_movie_select_minimum_availability_popup,
|
||||
);
|
||||
}
|
||||
ActiveRadarrBlock::EditMovieSelectQualityProfile => {
|
||||
@@ -55,7 +55,7 @@ impl DrawUi for EditMovieUi {
|
||||
app,
|
||||
prompt_area,
|
||||
draw_edit_movie_confirmation_prompt,
|
||||
draw_select_quality_profile_popup,
|
||||
draw_edit_movie_select_quality_profile_popup,
|
||||
);
|
||||
}
|
||||
ActiveRadarrBlock::EditMoviePrompt
|
||||
@@ -134,17 +134,16 @@ fn draw_edit_movie_confirmation_prompt<B: Backend>(
|
||||
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 EditMovieModal {
|
||||
minimum_availability_list,
|
||||
quality_profile_list,
|
||||
monitored,
|
||||
path,
|
||||
tags,
|
||||
} = app.data.radarr_data.edit_movie_modal.as_ref().unwrap();
|
||||
|
||||
let selected_minimum_availability = app
|
||||
.data
|
||||
.radarr_data
|
||||
.minimum_availability_list
|
||||
.current_selection();
|
||||
let selected_quality_profile = app
|
||||
.data
|
||||
.radarr_data
|
||||
.quality_profile_list
|
||||
.current_selection();
|
||||
let selected_minimum_availability = minimum_availability_list.current_selection();
|
||||
let selected_quality_profile = quality_profile_list.current_selection();
|
||||
|
||||
f.render_widget(title_block_centered(&title), prompt_area);
|
||||
|
||||
@@ -175,7 +174,7 @@ fn draw_edit_movie_confirmation_prompt<B: Backend>(
|
||||
f,
|
||||
chunks[1],
|
||||
"Monitored",
|
||||
app.data.radarr_data.edit_monitored.unwrap_or_default(),
|
||||
monitored.unwrap_or_default(),
|
||||
selected_block == &ActiveRadarrBlock::EditMovieToggleMonitored,
|
||||
);
|
||||
|
||||
@@ -199,8 +198,8 @@ fn draw_edit_movie_confirmation_prompt<B: Backend>(
|
||||
f,
|
||||
chunks[4],
|
||||
"Path",
|
||||
&app.data.radarr_data.edit_path.text,
|
||||
*app.data.radarr_data.edit_path.offset.borrow(),
|
||||
&path.text,
|
||||
*path.offset.borrow(),
|
||||
selected_block == &ActiveRadarrBlock::EditMoviePathInput,
|
||||
active_radarr_block == ActiveRadarrBlock::EditMoviePathInput,
|
||||
);
|
||||
@@ -208,8 +207,8 @@ fn draw_edit_movie_confirmation_prompt<B: Backend>(
|
||||
f,
|
||||
chunks[5],
|
||||
"Tags",
|
||||
&app.data.radarr_data.edit_tags.text,
|
||||
*app.data.radarr_data.edit_tags.offset.borrow(),
|
||||
&tags.text,
|
||||
*tags.offset.borrow(),
|
||||
selected_block == &ActiveRadarrBlock::EditMovieTagsInput,
|
||||
active_radarr_block == ActiveRadarrBlock::EditMovieTagsInput,
|
||||
);
|
||||
@@ -228,3 +227,41 @@ fn draw_edit_movie_confirmation_prompt<B: Backend>(
|
||||
!yes_no_value && highlight_yes_no,
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_edit_movie_select_minimum_availability_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_movie_modal
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.minimum_availability_list,
|
||||
|minimum_availability| ListItem::new(minimum_availability.to_display_str().to_owned()),
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_edit_movie_select_quality_profile_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_movie_modal
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.quality_profile_list,
|
||||
|quality_profile| ListItem::new(quality_profile.clone()),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, EDIT_MOVIE_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, EDIT_MOVIE_BLOCKS};
|
||||
use crate::ui::radarr_ui::library::edit_movie_ui::EditMovieUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, ADD_MOVIE_BLOCKS, DELETE_MOVIE_BLOCKS, EDIT_MOVIE_BLOCKS, LIBRARY_BLOCKS,
|
||||
MOVIE_DETAILS_BLOCKS,
|
||||
};
|
||||
|
||||
@@ -5,7 +5,7 @@ use tui::Frame;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::radarr_models::Movie;
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, LIBRARY_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, LIBRARY_BLOCKS};
|
||||
use crate::models::Route;
|
||||
use crate::ui::radarr_ui::library::add_movie_ui::AddMovieUi;
|
||||
use crate::ui::radarr_ui::library::delete_movie_ui::DeleteMovieUi;
|
||||
|
||||
@@ -9,7 +9,7 @@ use tui::Frame;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::radarr_models::{Credit, MovieHistoryItem, Release, ReleaseField};
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, MOVIE_DETAILS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, MOVIE_DETAILS_BLOCKS};
|
||||
use crate::models::Route;
|
||||
use crate::ui::radarr_ui::library::draw_library;
|
||||
use crate::ui::utils::{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, MOVIE_DETAILS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, MOVIE_DETAILS_BLOCKS};
|
||||
use crate::ui::radarr_ui::library::movie_details_ui::MovieDetailsUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
+1
-42
@@ -5,18 +5,16 @@ use tui::backend::Backend;
|
||||
use tui::layout::{Alignment, Constraint, Rect};
|
||||
use tui::style::{Color, Style};
|
||||
use tui::text::Text;
|
||||
use tui::widgets::ListItem;
|
||||
use tui::widgets::Paragraph;
|
||||
use tui::Frame;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::logos::RADARR_LOGO;
|
||||
use crate::models::radarr_models::{DiskSpace, DownloadRecord, Movie, RootFolder};
|
||||
use crate::models::servarr_data::radarr_data::{
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, RadarrData, FILTER_BLOCKS, SEARCH_BLOCKS,
|
||||
};
|
||||
use crate::models::Route;
|
||||
use crate::ui::draw_selectable_list;
|
||||
use crate::ui::draw_tabs;
|
||||
use crate::ui::loading;
|
||||
use crate::ui::radarr_ui::collections::CollectionsUi;
|
||||
@@ -232,45 +230,6 @@ fn determine_row_style(downloads_vec: &[DownloadRecord], movie: &Movie) -> Style
|
||||
}
|
||||
}
|
||||
|
||||
fn draw_select_minimum_availability_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app.data.radarr_data.minimum_availability_list,
|
||||
|minimum_availability| ListItem::new(minimum_availability.to_display_str().to_owned()),
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_select_quality_profile_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app.data.radarr_data.quality_profile_list,
|
||||
|quality_profile| ListItem::new(quality_profile.clone()),
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_select_root_folder_popup<B: Backend>(
|
||||
f: &mut Frame<'_, B>,
|
||||
app: &mut App<'_>,
|
||||
popup_area: Rect,
|
||||
) {
|
||||
draw_selectable_list(
|
||||
f,
|
||||
popup_area,
|
||||
&mut app.data.radarr_data.root_folder_list,
|
||||
|root_folder| ListItem::new(root_folder.path.to_owned()),
|
||||
);
|
||||
}
|
||||
|
||||
fn draw_search_box<B: Backend>(f: &mut Frame<'_, B>, app: &mut App<'_>, area: Rect) {
|
||||
let chunks =
|
||||
vertical_chunks_with_margin(vec![Constraint::Length(3), Constraint::Min(0)], area, 1);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::ActiveRadarrBlock;
|
||||
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
|
||||
use crate::ui::radarr_ui::RadarrUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ use tui::Frame;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::radarr_models::RootFolder;
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, ROOT_FOLDERS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, ROOT_FOLDERS_BLOCKS};
|
||||
use crate::models::Route;
|
||||
use crate::ui::utils::{
|
||||
borderless_block, layout_block_top_border, show_cursor, style_default, style_help, style_primary,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, ROOT_FOLDERS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, ROOT_FOLDERS_BLOCKS};
|
||||
use crate::ui::radarr_ui::root_folders::RootFoldersUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ use tui::{
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::radarr_models::Task;
|
||||
use crate::models::servarr_data::radarr_data::ActiveRadarrBlock;
|
||||
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
|
||||
use crate::ui::radarr_ui::radarr_ui_utils::{
|
||||
convert_to_minutes_hours_days, determine_log_style_by_level,
|
||||
};
|
||||
|
||||
@@ -7,7 +7,7 @@ use tui::Frame;
|
||||
use crate::app::context_clues::{build_context_clue_string, BARE_POPUP_CONTEXT_CLUES};
|
||||
use crate::app::radarr::radarr_context_clues::SYSTEM_TASKS_CONTEXT_CLUES;
|
||||
use crate::app::App;
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, SYSTEM_DETAILS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, SYSTEM_DETAILS_BLOCKS};
|
||||
use crate::models::Route;
|
||||
use crate::ui::radarr_ui::radarr_ui_utils::determine_log_style_by_level;
|
||||
use crate::ui::radarr_ui::system::{
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, SYSTEM_DETAILS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, SYSTEM_DETAILS_BLOCKS,
|
||||
};
|
||||
use crate::ui::radarr_ui::system::system_details_ui::SystemDetailsUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
mod tests {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr_data::{ActiveRadarrBlock, SYSTEM_DETAILS_BLOCKS};
|
||||
use crate::models::servarr_data::radarr::radarr_data::{
|
||||
ActiveRadarrBlock, SYSTEM_DETAILS_BLOCKS,
|
||||
};
|
||||
use crate::ui::radarr_ui::system::SystemUi;
|
||||
use crate::ui::DrawUi;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user