Successful implementation of movie adding and deleting, and refactored network logic to be more reusable later

This commit is contained in:
2023-08-08 10:50:04 -06:00
parent 08cde20359
commit 960319c3e7
11 changed files with 638 additions and 509 deletions
+4 -6
View File
@@ -54,9 +54,8 @@ pub fn ui<B: Backend>(f: &mut Frame<B>, app: &mut App) {
draw_header_row(f, app, main_chunks[0]);
draw_context_row(f, app, main_chunks[1]);
match app.get_current_route() {
Route::Radarr(_) => radarr_ui::draw_radarr_ui(f, app, main_chunks[2]),
_ => (),
if let Route::Radarr(_) = app.get_current_route() {
radarr_ui::draw_radarr_ui(f, app, main_chunks[2])
}
}
@@ -152,9 +151,8 @@ pub fn draw_large_popup_over<B: Backend>(
}
fn draw_context_row<B: Backend>(f: &mut Frame<'_, B>, app: &App, area: Rect) {
match app.get_current_route() {
Route::Radarr(_) => radarr_ui::draw_radarr_context_row(f, app, area),
_ => (),
if let Route::Radarr(_) = app.get_current_route() {
radarr_ui::draw_radarr_context_row(f, app, area)
}
}
+3 -3
View File
@@ -6,14 +6,14 @@ use tui::backend::Backend;
use tui::layout::{Alignment, Constraint, Rect};
use tui::style::{Color, Style};
use tui::text::Text;
use tui::widgets::{Cell, Paragraph, Row};
use tui::widgets::{Block, Cell, Paragraph, Row};
use tui::Frame;
use crate::app::radarr::{ActiveRadarrBlock, RadarrData};
use crate::app::App;
use crate::logos::RADARR_LOGO;
use crate::models::radarr_models::{DiskSpace, DownloadRecord, Movie};
use crate::models::Route;
use crate::models::radarr_models::{AddMovieSearchResult, DiskSpace, DownloadRecord, Movie};
use crate::models::{Route, StatefulTable};
use crate::ui::radarr_ui::add_movie_ui::draw_add_movie_search_popup;
use crate::ui::radarr_ui::collection_details_ui::draw_collection_details_popup;
use crate::ui::radarr_ui::movie_details_ui::draw_movie_info;
+18 -27
View File
@@ -6,10 +6,7 @@ use tui::widgets::{Block, Borders, LineGauge};
use tui::{symbols, Frame};
pub fn horizontal_chunks(constraints: Vec<Constraint>, size: Rect) -> Vec<Rect> {
Layout::default()
.constraints(<Vec<Constraint> as AsRef<[Constraint]>>::as_ref(
&constraints,
))
layout_with_constraints(constraints)
.direction(Direction::Horizontal)
.split(size)
}
@@ -19,20 +16,14 @@ pub fn horizontal_chunks_with_margin(
size: Rect,
margin: u16,
) -> Vec<Rect> {
Layout::default()
.constraints(<Vec<Constraint> as AsRef<[Constraint]>>::as_ref(
&constraints,
))
layout_with_constraints(constraints)
.direction(Direction::Horizontal)
.margin(margin)
.split(size)
}
pub fn vertical_chunks(constraints: Vec<Constraint>, size: Rect) -> Vec<Rect> {
Layout::default()
.constraints(<Vec<Constraint> as AsRef<[Constraint]>>::as_ref(
&constraints,
))
layout_with_constraints(constraints)
.direction(Direction::Vertical)
.split(size)
}
@@ -42,15 +33,18 @@ pub fn vertical_chunks_with_margin(
size: Rect,
margin: u16,
) -> Vec<Rect> {
Layout::default()
.constraints(<Vec<Constraint> as AsRef<[Constraint]>>::as_ref(
&constraints,
))
layout_with_constraints(constraints)
.direction(Direction::Vertical)
.margin(margin)
.split(size)
}
fn layout_with_constraints(constraints: Vec<Constraint>) -> Layout {
Layout::default().constraints(<Vec<Constraint> as AsRef<[Constraint]>>::as_ref(
&constraints,
))
}
pub fn layout_block<'a>() -> Block<'a> {
Block::default().borders(Borders::ALL)
}
@@ -167,17 +161,14 @@ pub fn logo_block<'a>() -> Block<'a> {
}
pub fn centered_rect(percent_x: u16, percent_y: u16, r: Rect) -> Rect {
let popup_layout = Layout::default()
.direction(Direction::Vertical)
.constraints(
[
Constraint::Percentage((100 - percent_y) / 2),
Constraint::Percentage(percent_y),
Constraint::Percentage((100 - percent_y) / 2),
]
.as_ref(),
)
.split(r);
let popup_layout = vertical_chunks(
vec![
Constraint::Percentage((100 - percent_y) / 2),
Constraint::Percentage(percent_y),
Constraint::Percentage((100 - percent_y) / 2),
],
r,
);
Layout::default()
.direction(Direction::Horizontal)