Upgraded ratatui to 0.28.0

This commit is contained in:
2024-09-09 17:12:43 -06:00
parent 64d6beda80
commit 217d3242a8
21 changed files with 129 additions and 128 deletions
Generated
+41 -30
View File
@@ -247,13 +247,14 @@ dependencies = [
[[package]] [[package]]
name = "compact_str" name = "compact_str"
version = "0.7.1" version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f" checksum = "6050c3a16ddab2e412160b31f2c871015704239bca62f72f6e5f0be631d3f644"
dependencies = [ dependencies = [
"castaway", "castaway",
"cfg-if", "cfg-if",
"itoa", "itoa",
"rustversion",
"ryu", "ryu",
"static_assertions", "static_assertions",
] ]
@@ -302,6 +303,22 @@ dependencies = [
"winapi", "winapi",
] ]
[[package]]
name = "crossterm"
version = "0.28.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6"
dependencies = [
"bitflags 2.6.0",
"crossterm_winapi",
"mio 1.0.1",
"parking_lot",
"rustix",
"signal-hook",
"signal-hook-mio",
"winapi",
]
[[package]] [[package]]
name = "crossterm_winapi" name = "crossterm_winapi"
version = "0.9.1" version = "0.9.1"
@@ -732,6 +749,16 @@ version = "2.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
[[package]]
name = "instability"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b23a0c8dfe501baac4adf6ebbfa6eddf8f0c07f56b058cc1288017e32397846c"
dependencies = [
"quote",
"syn 2.0.72",
]
[[package]] [[package]]
name = "ipnet" name = "ipnet"
version = "2.9.0" version = "2.9.0"
@@ -744,15 +771,6 @@ version = "1.70.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
[[package]]
name = "itertools"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
dependencies = [
"either",
]
[[package]] [[package]]
name = "itertools" name = "itertools"
version = "0.13.0" version = "0.13.0"
@@ -876,7 +894,7 @@ dependencies = [
"bimap", "bimap",
"chrono", "chrono",
"confy", "confy",
"crossterm", "crossterm 0.27.0",
"derivative", "derivative",
"human-panic", "human-panic",
"indoc", "indoc",
@@ -939,6 +957,7 @@ checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4"
dependencies = [ dependencies = [
"hermit-abi", "hermit-abi",
"libc", "libc",
"log",
"wasi", "wasi",
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
@@ -1213,19 +1232,20 @@ dependencies = [
[[package]] [[package]]
name = "ratatui" name = "ratatui"
version = "0.26.3" version = "0.28.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef" checksum = "fdef7f9be5c0122f890d58bdf4d964349ba6a6161f705907526d891efabba57d"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"cassowary", "cassowary",
"compact_str", "compact_str",
"crossterm", "crossterm 0.28.1",
"itertools 0.12.1", "instability",
"itertools",
"lru", "lru",
"paste", "paste",
"stability",
"strum", "strum",
"strum_macros",
"time", "time",
"unicode-segmentation", "unicode-segmentation",
"unicode-truncate", "unicode-truncate",
@@ -1536,12 +1556,13 @@ dependencies = [
[[package]] [[package]]
name = "signal-hook-mio" name = "signal-hook-mio"
version = "0.2.3" version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd"
dependencies = [ dependencies = [
"libc", "libc",
"mio 0.8.11", "mio 0.8.11",
"mio 1.0.1",
"signal-hook", "signal-hook",
] ]
@@ -1585,16 +1606,6 @@ dependencies = [
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]]
name = "stability"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac"
dependencies = [
"quote",
"syn 2.0.72",
]
[[package]] [[package]]
name = "static_assertions" name = "static_assertions"
version = "1.1.0" version = "1.1.0"
@@ -1908,7 +1919,7 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf"
dependencies = [ dependencies = [
"itertools 0.13.0", "itertools",
"unicode-segmentation", "unicode-segmentation",
"unicode-width", "unicode-width",
] ]
+1 -1
View File
@@ -32,7 +32,7 @@ strum = {version = "0.26.1", features = ["derive"] }
strum_macros = "0.26.1" strum_macros = "0.26.1"
tokio = { version = "1.36.0", features = ["full"] } tokio = { version = "1.36.0", features = ["full"] }
tokio-util = "0.7.8" tokio-util = "0.7.8"
ratatui = { version = "0.26.0", features = ["all-widgets"] } ratatui = { version = "0.28.0", features = ["all-widgets"] }
urlencoding = "2.1.2" urlencoding = "2.1.2"
[dev-dependencies] [dev-dependencies]
+9 -13
View File
@@ -18,18 +18,16 @@ impl<T> Scrollable for StatefulList<T> {
return; return;
} }
let selected_row = match self.state.selected() { match self.state.selected() {
Some(i) => { Some(i) => {
if i >= self.items.len() - 1 { if i >= self.items.len() - 1 {
0 self.state.select_first();
} else { } else {
i + 1 self.state.select_next();
} }
} }
None => 0, None => self.state.select_first(),
}; };
self.state.select(Some(selected_row));
} }
fn scroll_up(&mut self) { fn scroll_up(&mut self) {
@@ -37,18 +35,16 @@ impl<T> Scrollable for StatefulList<T> {
return; return;
} }
let selected_row = match self.state.selected() { match self.state.selected() {
Some(i) => { Some(i) => {
if i == 0 { if i == 0 {
self.items.len() - 1 self.state.select(Some(self.items.len() - 1));
} else { } else {
i - 1 self.state.select_previous();
} }
} }
None => 0, None => self.state.select_first(),
}; };
self.state.select(Some(selected_row));
} }
fn scroll_to_top(&mut self) { fn scroll_to_top(&mut self) {
@@ -56,7 +52,7 @@ impl<T> Scrollable for StatefulList<T> {
return; return;
} }
self.state.select(Some(0)); self.state.select_first();
} }
fn scroll_to_bottom(&mut self) { fn scroll_to_bottom(&mut self) {
+22 -32
View File
@@ -42,22 +42,17 @@ where
return; return;
} }
let selected_row = match self.filtered_state.as_ref().unwrap().selected() { match self.filtered_state.as_ref().unwrap().selected() {
Some(i) => { Some(i) => {
if i >= filtered_items.len() - 1 { if i >= filtered_items.len() - 1 {
0 self.filtered_state.as_mut().unwrap().select_first();
} else { } else {
i + 1 self.filtered_state.as_mut().unwrap().select_next();
} }
} }
None => 0, None => self.filtered_state.as_mut().unwrap().select_first(),
}; };
self
.filtered_state
.as_mut()
.unwrap()
.select(Some(selected_row));
return; return;
} }
@@ -65,18 +60,16 @@ where
return; return;
} }
let selected_row = match self.state.selected() { match self.state.selected() {
Some(i) => { Some(i) => {
if i >= self.items.len() - 1 { if i >= self.items.len() - 1 {
0 self.state.select_first();
} else { } else {
i + 1 self.state.select_next();
} }
} }
None => 0, None => self.state.select_first(),
}; };
self.state.select(Some(selected_row));
} }
fn scroll_up(&mut self) { fn scroll_up(&mut self) {
@@ -85,22 +78,21 @@ where
return; return;
} }
let selected_row = match self.filtered_state.as_ref().unwrap().selected() { match self.filtered_state.as_ref().unwrap().selected() {
Some(i) => { Some(i) => {
if i == 0 { if i == 0 {
filtered_items.len() - 1 self
.filtered_state
.as_mut()
.unwrap()
.select(Some(filtered_items.len() - 1));
} else { } else {
i - 1 self.filtered_state.as_mut().unwrap().select_previous();
} }
} }
None => 0, None => self.filtered_state.as_mut().unwrap().select_first(),
}; };
self
.filtered_state
.as_mut()
.unwrap()
.select(Some(selected_row));
return; return;
} }
@@ -108,18 +100,16 @@ where
return; return;
} }
let selected_row = match self.state.selected() { match self.state.selected() {
Some(i) => { Some(i) => {
if i == 0 { if i == 0 {
self.items.len() - 1 self.state.select(Some(self.items.len() - 1));
} else { } else {
i - 1 self.state.select_previous();
} }
} }
None => 0, None => self.state.select_first(),
}; };
self.state.select(Some(selected_row));
} }
fn scroll_to_top(&mut self) { fn scroll_to_top(&mut self) {
@@ -128,7 +118,7 @@ where
return; return;
} }
self.filtered_state.as_mut().unwrap().select(Some(0)); self.filtered_state.as_mut().unwrap().select_first();
return; return;
} }
@@ -136,7 +126,7 @@ where
return; return;
} }
self.state.select(Some(0)); self.state.select_first();
} }
fn scroll_to_bottom(&mut self) { fn scroll_to_bottom(&mut self) {
+5 -5
View File
@@ -31,7 +31,7 @@ pub trait DrawUi {
} }
pub fn ui(f: &mut Frame<'_>, app: &mut App<'_>) { pub fn ui(f: &mut Frame<'_>, app: &mut App<'_>) {
f.render_widget(background_block(), f.size()); f.render_widget(background_block(), f.area());
let [header_area, context_area, table_area] = if !app.error.text.is_empty() { let [header_area, context_area, table_area] = if !app.error.text.is_empty() {
let [header_area, error_area, context_area, table_area] = Layout::vertical([ let [header_area, error_area, context_area, table_area] = Layout::vertical([
Constraint::Length(3), Constraint::Length(3),
@@ -39,7 +39,7 @@ pub fn ui(f: &mut Frame<'_>, app: &mut App<'_>) {
Constraint::Length(10), Constraint::Length(10),
Constraint::Fill(0), Constraint::Fill(0),
]) ])
.areas(f.size()); .areas(f.area());
draw_error(f, app, error_area); draw_error(f, app, error_area);
@@ -50,7 +50,7 @@ pub fn ui(f: &mut Frame<'_>, app: &mut App<'_>) {
Constraint::Length(10), Constraint::Length(10),
Constraint::Fill(0), Constraint::Fill(0),
]) ])
.areas(f.size()) .areas(f.area())
}; };
draw_header_row(f, app, header_area); draw_header_row(f, app, header_area);
@@ -110,7 +110,7 @@ pub fn draw_popup(
size: Size, size: Size,
) { ) {
let (percent_x, percent_y) = size.to_percent(); let (percent_x, percent_y) = size.to_percent();
let popup_area = centered_rect(percent_x, percent_y, f.size()); let popup_area = centered_rect(percent_x, percent_y, f.area());
f.render_widget(Clear, popup_area); f.render_widget(Clear, popup_area);
f.render_widget(background_block(), popup_area); f.render_widget(background_block(), popup_area);
popup_fn(f, app, popup_area); popup_fn(f, app, popup_area);
@@ -118,7 +118,7 @@ pub fn draw_popup(
fn draw_popup_ui<T: DrawUi>(f: &mut Frame<'_>, app: &mut App<'_>, size: Size) { fn draw_popup_ui<T: DrawUi>(f: &mut Frame<'_>, app: &mut App<'_>, size: Size) {
let (percent_x, percent_y) = size.to_percent(); let (percent_x, percent_y) = size.to_percent();
let popup_area = centered_rect(percent_x, percent_y, f.size()); let popup_area = centered_rect(percent_x, percent_y, f.area());
f.render_widget(Clear, popup_area); f.render_widget(Clear, popup_area);
f.render_widget(background_block(), popup_area); f.render_widget(background_block(), popup_area);
T::draw(f, app, popup_area); T::draw(f, app, popup_area);
+3 -3
View File
@@ -56,7 +56,7 @@ impl DrawUi for BlocklistUi {
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
draw_blocklist_table(f, app, area); draw_blocklist_table(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
ActiveRadarrBlock::BlocklistClearAllItemsPrompt => { ActiveRadarrBlock::BlocklistClearAllItemsPrompt => {
let confirmation_prompt = ConfirmationPrompt::new() let confirmation_prompt = ConfirmationPrompt::new()
@@ -67,7 +67,7 @@ impl DrawUi for BlocklistUi {
draw_blocklist_table(f, app, area); draw_blocklist_table(f, app, area);
f.render_widget( f.render_widget(
Popup::new(confirmation_prompt).size(Size::SmallPrompt), Popup::new(confirmation_prompt).size(Size::SmallPrompt),
f.size(), f.area(),
); );
} }
_ => (), _ => (),
@@ -197,5 +197,5 @@ fn draw_blocklist_item_details_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
.style(Style::new().secondary()) .style(Style::new().secondary())
.alignment(Alignment::Left); .alignment(Alignment::Left);
f.render_widget(Popup::new(message).size(Size::NarrowMessage), f.size()); f.render_widget(Popup::new(message).size(Size::NarrowMessage), f.area());
} }
@@ -182,7 +182,7 @@ fn draw_edit_collection_select_minimum_availability_popup(f: &mut Frame<'_>, app
); );
let popup = Popup::new(min_availability_list).size(Size::Dropdown); let popup = Popup::new(min_availability_list).size(Size::Dropdown);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
fn draw_edit_collection_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<'_>) { fn draw_edit_collection_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
@@ -198,5 +198,5 @@ fn draw_edit_collection_select_quality_profile_popup(f: &mut Frame<'_>, app: &mu
); );
let popup = Popup::new(quality_profile_list).size(Size::Dropdown); let popup = Popup::new(quality_profile_list).size(Size::Dropdown);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
+3 -3
View File
@@ -55,7 +55,7 @@ impl DrawUi for CollectionsUi {
let popup = Popup::new(Message::new("Collection not found!")).size(Size::Message); let popup = Popup::new(Message::new("Collection not found!")).size(Size::Message);
draw_collections(f, app, area); draw_collections(f, app, area);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
ActiveRadarrBlock::FilterCollections => draw_popup_over( ActiveRadarrBlock::FilterCollections => draw_popup_over(
f, f,
@@ -72,7 +72,7 @@ impl DrawUi for CollectionsUi {
.size(Size::Message); .size(Size::Message);
draw_collections(f, app, area); draw_collections(f, app, area);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
ActiveRadarrBlock::UpdateAllCollectionsPrompt => { ActiveRadarrBlock::UpdateAllCollectionsPrompt => {
let confirmation_prompt = ConfirmationPrompt::new() let confirmation_prompt = ConfirmationPrompt::new()
@@ -81,7 +81,7 @@ impl DrawUi for CollectionsUi {
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
draw_collections(f, app, area); draw_collections(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
_ => (), _ => (),
}; };
+2 -2
View File
@@ -44,7 +44,7 @@ impl DrawUi for DownloadsUi {
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
draw_downloads(f, app, area); draw_downloads(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
ActiveRadarrBlock::UpdateDownloadsPrompt => { ActiveRadarrBlock::UpdateDownloadsPrompt => {
let confirmation_prompt = ConfirmationPrompt::new() let confirmation_prompt = ConfirmationPrompt::new()
@@ -53,7 +53,7 @@ impl DrawUi for DownloadsUi {
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
draw_downloads(f, app, area); draw_downloads(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
_ => (), _ => (),
} }
+3 -3
View File
@@ -54,7 +54,7 @@ impl DrawUi for IndexersUi {
title_block("Testing Indexer"), title_block("Testing Indexer"),
)) ))
.size(Size::LargeMessage); .size(Size::LargeMessage);
f.render_widget(loading_popup, f.size()); f.render_widget(loading_popup, f.area());
} else { } else {
let popup = if let Some(result) = app.data.radarr_data.indexer_test_error.as_ref() { let popup = if let Some(result) = app.data.radarr_data.indexer_test_error.as_ref() {
Popup::new(Message::new(result.clone())).size(Size::LargeMessage) Popup::new(Message::new(result.clone())).size(Size::LargeMessage)
@@ -65,7 +65,7 @@ impl DrawUi for IndexersUi {
Popup::new(message).size(Size::Message) Popup::new(message).size(Size::Message)
}; };
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
} }
ActiveRadarrBlock::DeleteIndexerPrompt => { ActiveRadarrBlock::DeleteIndexerPrompt => {
@@ -86,7 +86,7 @@ impl DrawUi for IndexersUi {
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
draw_indexers(f, app, area); draw_indexers(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
_ => (), _ => (),
}; };
+6 -6
View File
@@ -80,7 +80,7 @@ impl DrawUi for AddMovieUi {
draw_add_movie_search(f, app, area); draw_add_movie_search(f, app, area);
f.render_widget( f.render_widget(
Popup::new(Message::new("This film is already in your library")).size(Size::Message), Popup::new(Message::new("This film is already in your library")).size(Size::Message),
f.size(), f.area(),
); );
} }
_ => (), _ => (),
@@ -223,7 +223,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
let error_message_popup = Popup::new(error_message).size(Size::Message); let error_message_popup = Popup::new(error_message).size(Size::Message);
f.render_widget(layout_block(), results_area); f.render_widget(layout_block(), results_area);
f.render_widget(error_message_popup, f.size()); f.render_widget(error_message_popup, f.area());
f.render_widget(help_paragraph, help_area); f.render_widget(help_paragraph, help_area);
} }
ActiveRadarrBlock::AddMovieSearchResults ActiveRadarrBlock::AddMovieSearchResults
@@ -447,7 +447,7 @@ fn draw_add_movie_select_monitor_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
); );
let popup = Popup::new(monitor_list).size(Size::Dropdown); let popup = Popup::new(monitor_list).size(Size::Dropdown);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
fn draw_add_movie_select_minimum_availability_popup(f: &mut Frame<'_>, app: &mut App<'_>) { fn draw_add_movie_select_minimum_availability_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
@@ -463,7 +463,7 @@ fn draw_add_movie_select_minimum_availability_popup(f: &mut Frame<'_>, app: &mut
); );
let popup = Popup::new(minimum_availability_list).size(Size::Dropdown); let popup = Popup::new(minimum_availability_list).size(Size::Dropdown);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
fn draw_add_movie_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<'_>) { fn draw_add_movie_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
@@ -479,7 +479,7 @@ fn draw_add_movie_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<
); );
let popup = Popup::new(quality_profile_list).size(Size::Dropdown); let popup = Popup::new(quality_profile_list).size(Size::Dropdown);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
fn draw_add_movie_select_root_folder_popup(f: &mut Frame<'_>, app: &mut App<'_>) { fn draw_add_movie_select_root_folder_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
@@ -495,5 +495,5 @@ fn draw_add_movie_select_root_folder_popup(f: &mut Frame<'_>, app: &mut App<'_>)
); );
let popup = Popup::new(root_folder_list).size(Size::Dropdown); let popup = Popup::new(root_folder_list).size(Size::Dropdown);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
+1 -1
View File
@@ -51,7 +51,7 @@ impl DrawUi for DeleteMovieUi {
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
draw_library(f, app, area); draw_library(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
} }
} }
+2 -2
View File
@@ -194,7 +194,7 @@ fn draw_edit_movie_select_minimum_availability_popup(f: &mut Frame<'_>, app: &mu
); );
let popup = Popup::new(minimum_availability_list).size(Size::Dropdown); let popup = Popup::new(minimum_availability_list).size(Size::Dropdown);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
fn draw_edit_movie_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<'_>) { fn draw_edit_movie_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
@@ -210,5 +210,5 @@ fn draw_edit_movie_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App
); );
let popup = Popup::new(quality_profile_list).size(Size::Dropdown); let popup = Popup::new(quality_profile_list).size(Size::Dropdown);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
+3 -3
View File
@@ -60,7 +60,7 @@ impl DrawUi for LibraryUi {
let popup = Popup::new(Message::new("Movie not found!")).size(Size::Message); let popup = Popup::new(Message::new("Movie not found!")).size(Size::Message);
draw_library(f, app, area); draw_library(f, app, area);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
ActiveRadarrBlock::FilterMovies => draw_popup_over( ActiveRadarrBlock::FilterMovies => draw_popup_over(
f, f,
@@ -75,7 +75,7 @@ impl DrawUi for LibraryUi {
.size(Size::Message); .size(Size::Message);
draw_library(f, app, area); draw_library(f, app, area);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
ActiveRadarrBlock::UpdateAllMoviesPrompt => { ActiveRadarrBlock::UpdateAllMoviesPrompt => {
let confirmation_prompt = ConfirmationPrompt::new() let confirmation_prompt = ConfirmationPrompt::new()
@@ -84,7 +84,7 @@ impl DrawUi for LibraryUi {
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
draw_library(f, app, area); draw_library(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
_ => (), _ => (),
}; };
+4 -4
View File
@@ -61,7 +61,7 @@ impl DrawUi for MovieDetailsUi {
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
draw_movie_info(f, app, content_area); draw_movie_info(f, app, content_area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
ActiveRadarrBlock::UpdateAndScanPrompt => { ActiveRadarrBlock::UpdateAndScanPrompt => {
let prompt = format!( let prompt = format!(
@@ -73,7 +73,7 @@ impl DrawUi for MovieDetailsUi {
.prompt(&prompt) .prompt(&prompt)
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
ActiveRadarrBlock::ManualSearchConfirmPrompt => { ActiveRadarrBlock::ManualSearchConfirmPrompt => {
draw_manual_search_confirm_prompt(f, app); draw_manual_search_confirm_prompt(f, app);
@@ -517,14 +517,14 @@ fn draw_manual_search_confirm_prompt(f: &mut Frame<'_>, app: &mut App<'_>) {
.content(content_paragraph) .content(content_paragraph)
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Small), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Small), f.area());
} else { } else {
let confirmation_prompt = ConfirmationPrompt::new() let confirmation_prompt = ConfirmationPrompt::new()
.title(title) .title(title)
.prompt(&prompt) .prompt(&prompt)
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
} }
+1 -1
View File
@@ -52,7 +52,7 @@ impl DrawUi for RootFoldersUi {
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
draw_root_folders(f, app, area); draw_root_folders(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
_ => (), _ => (),
} }
+5 -5
View File
@@ -87,7 +87,7 @@ fn draw_logs_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
.block(block) .block(block)
.footer(&help_footer); .footer(&help_footer);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
return; return;
} }
@@ -103,7 +103,7 @@ fn draw_logs_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
.block(block) .block(block)
.footer(&help_footer); .footer(&help_footer);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
fn draw_tasks_popup(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { fn draw_tasks_popup(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
@@ -145,7 +145,7 @@ fn draw_tasks_popup(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
.prompt(&prompt) .prompt(&prompt)
.yes_no_value(app.data.radarr_data.prompt_confirm); .yes_no_value(app.data.radarr_data.prompt_confirm);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size()); f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
} }
} }
@@ -166,7 +166,7 @@ fn draw_updates_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
.block(block) .block(block)
.footer(&help_footer); .footer(&help_footer);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} else { } else {
let loading = LoadingBlock::new(app.is_loading, borderless_block()); let loading = LoadingBlock::new(app.is_loading, borderless_block());
let popup = Popup::new(loading) let popup = Popup::new(loading)
@@ -174,6 +174,6 @@ fn draw_updates_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
.block(block) .block(block)
.footer(&help_footer); .footer(&help_footer);
f.render_widget(popup, f.size()); f.render_widget(popup, f.area());
} }
} }
+2 -2
View File
@@ -1,5 +1,5 @@
use ratatui::prelude::{Color, Styled}; use ratatui::prelude::Color;
use ratatui::style::Stylize; use ratatui::style::{Styled, Stylize};
pub const COLOR_ORANGE: Color = Color::Rgb(255, 170, 66); pub const COLOR_ORANGE: Color = Color::Rgb(255, 170, 66);
+2 -2
View File
@@ -98,7 +98,7 @@ pub fn centered_rect(percent_x: u16, percent_y: u16, area: Rect) -> Rect {
pub fn line_gauge_with_title(title: &str, ratio: f64) -> LineGauge<'_> { pub fn line_gauge_with_title(title: &str, ratio: f64) -> LineGauge<'_> {
LineGauge::new() LineGauge::new()
.block(Block::new().title(title)) .block(Block::new().title(title))
.gauge_style(Style::new().cyan()) .filled_style(Style::new().cyan())
.line_set(symbols::line::THICK) .line_set(symbols::line::THICK)
.ratio(ratio) .ratio(ratio)
.label(Line::from(format!("{:.0}%", ratio * 100.0))) .label(Line::from(format!("{:.0}%", ratio * 100.0)))
@@ -107,7 +107,7 @@ pub fn line_gauge_with_title(title: &str, ratio: f64) -> LineGauge<'_> {
pub fn line_gauge_with_label(title: &str, ratio: f64) -> LineGauge<'_> { pub fn line_gauge_with_label(title: &str, ratio: f64) -> LineGauge<'_> {
LineGauge::new() LineGauge::new()
.block(Block::new()) .block(Block::new())
.gauge_style(Style::new().cyan()) .filled_style(Style::new().cyan())
.line_set(symbols::line::THICK) .line_set(symbols::line::THICK)
.ratio(ratio) .ratio(ratio)
.label(Line::from(format!("{title}: {:.0}%", ratio * 100.0))) .label(Line::from(format!("{title}: {:.0}%", ratio * 100.0)))
+2 -1
View File
@@ -2,7 +2,8 @@ use crate::ui::styles::ManagarrStyle;
use crate::ui::utils::{layout_block, style_block_highlight}; use crate::ui::utils::{layout_block, style_block_highlight};
use ratatui::buffer::Buffer; use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Constraint, Flex, Layout, Rect}; use ratatui::layout::{Alignment, Constraint, Flex, Layout, Rect};
use ratatui::prelude::{Style, Styled, Text, Widget}; use ratatui::prelude::{Style, Text, Widget};
use ratatui::style::Styled;
use ratatui::widgets::Paragraph; use ratatui::widgets::Paragraph;
#[cfg(test)] #[cfg(test)]
+9 -6
View File
@@ -1,5 +1,5 @@
use ratatui::buffer::Buffer; use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Constraint, Layout, Rect}; use ratatui::layout::{Alignment, Constraint, Layout, Position, Rect};
use ratatui::prelude::Text; use ratatui::prelude::Text;
use ratatui::style::{Style, Styled, Stylize}; use ratatui::style::{Style, Styled, Stylize};
use ratatui::widgets::{Block, Paragraph, Widget}; use ratatui::widgets::{Block, Paragraph, Widget};
@@ -84,12 +84,15 @@ impl<'a> InputBox<'a> {
}; };
if self.cursor_after_string { if self.cursor_after_string {
f.set_cursor( f.set_cursor_position(Position {
area.x + (self.content.len() - self.offset) as u16 + 1, x: area.x + (self.content.len() - self.offset) as u16 + 1,
area.y + 1, y: area.y + 1,
); });
} else { } else {
f.set_cursor(area.x + 1u16, area.y + 1); f.set_cursor_position(Position {
x: area.x + 1u16,
y: area.y + 1,
});
} }
} }