59 lines
1.9 KiB
Rust
59 lines
1.9 KiB
Rust
use ratatui::Frame;
|
|
use ratatui::layout::Rect;
|
|
|
|
use crate::app::App;
|
|
use crate::models::Route;
|
|
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, DELETE_MOVIE_BLOCKS};
|
|
use crate::ui::DrawUi;
|
|
use crate::ui::widgets::checkbox::Checkbox;
|
|
use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt;
|
|
use crate::ui::widgets::popup::{Popup, Size};
|
|
|
|
#[cfg(test)]
|
|
#[path = "delete_movie_ui_tests.rs"]
|
|
mod delete_movie_ui_tests;
|
|
|
|
pub(super) struct DeleteMovieUi;
|
|
|
|
impl DrawUi for DeleteMovieUi {
|
|
fn accepts(route: Route) -> bool {
|
|
if let Route::Radarr(active_radarr_block, _) = route {
|
|
return DELETE_MOVIE_BLOCKS.contains(&active_radarr_block);
|
|
}
|
|
|
|
false
|
|
}
|
|
|
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
|
if matches!(
|
|
app.get_current_route(),
|
|
Route::Radarr(ActiveRadarrBlock::DeleteMoviePrompt, _)
|
|
) {
|
|
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
|
let prompt = format!(
|
|
"Do you really want to delete: \n{}?",
|
|
app.data.radarr_data.movies.current_selection().title.text
|
|
);
|
|
let checkboxes = vec![
|
|
Checkbox::new("Delete Movie File")
|
|
.checked(app.data.radarr_data.delete_movie_files)
|
|
.highlighted(selected_block == ActiveRadarrBlock::DeleteMovieToggleDeleteFile),
|
|
Checkbox::new("Add List Exclusion")
|
|
.checked(app.data.radarr_data.add_list_exclusion)
|
|
.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_value(app.data.radarr_data.prompt_confirm);
|
|
|
|
f.render_widget(
|
|
Popup::new(confirmation_prompt).size(Size::MediumPrompt),
|
|
f.area(),
|
|
);
|
|
}
|
|
}
|
|
}
|