Migrate to cursive 0.17

This commit is contained in:
Henrik Friedrichsen
2022-01-11 20:42:50 +01:00
parent adcdf5d18c
commit 06c6ea316e
8 changed files with 164 additions and 108 deletions

View File

@@ -1,5 +1,5 @@
use cursive::traits::Boxable;
use cursive::view::Identifiable;
use cursive::traits::Resizable;
use cursive::view::Nameable;
use cursive::views::*;
use cursive::{Cursive, CursiveExt};

View File

@@ -12,7 +12,7 @@ use std::sync::Arc;
use clap::{App, Arg};
use cursive::event::EventTrigger;
use cursive::traits::Identifiable;
use cursive::traits::Nameable;
use librespot_core::authentication::Credentials;
use librespot_core::cache::Cache;
use librespot_playback::audio_backend;
@@ -93,9 +93,6 @@ struct UserDataInner {
#[tokio::main]
async fn main() -> Result<(), String> {
#[cfg(not(windows))]
print!("\x1b]2;ncspot\x07");
let backends = {
let backends: Vec<&str> = audio_backend::BACKENDS.iter().map(|b| b.0).collect();
format!("Audio backends: {}", backends.join(", "))
@@ -173,6 +170,8 @@ async fn main() -> Result<(), String> {
}
let mut cursive = cursive::default().into_runner();
cursive.set_window_title("ncspot");
let theme = cfg.build_theme();
cursive.set_theme(theme.clone());

View File

@@ -7,7 +7,7 @@ use cursive::event::{AnyCb, Event, EventResult};
use cursive::theme::{ColorStyle, ColorType, Theme};
use cursive::traits::View;
use cursive::vec::Vec2;
use cursive::view::{IntoBoxedView, Selector};
use cursive::view::{CannotFocus, IntoBoxedView, Selector};
use cursive::views::EditView;
use cursive::{Cursive, Printer};
use log::debug;
@@ -311,6 +311,7 @@ impl View for Layout {
}
if self.cmdline_focus {
debug!("cmdline event");
return self.cmdline.on_event(event);
}
@@ -327,7 +328,7 @@ impl View for Layout {
}
}
fn take_focus(&mut self, source: Direction) -> bool {
fn take_focus(&mut self, source: Direction) -> Result<EventResult, CannotFocus> {
if self.cmdline_focus {
return self.cmdline.take_focus(source);
}
@@ -335,7 +336,7 @@ impl View for Layout {
if let Some(view) = self.get_current_view_mut() {
view.take_focus(source)
} else {
false
Err(CannotFocus)
}
}
}

View File

@@ -315,9 +315,9 @@ impl<I: ListItem> View for ListView<I> {
fn important_area(&self, view_size: Vec2) -> Rect {
if self.content.read().unwrap().len() > 0 {
Rect::from((view_size.x, self.selected))
Rect::from_point((view_size.x, self.selected))
} else {
Rect::from((0, 0))
Rect::from_point((0, 0))
}
}
}

View File

@@ -1,4 +1,4 @@
use cursive::traits::{Boxable, Identifiable};
use cursive::traits::{Nameable, Resizable};
use cursive::view::{Margins, ViewWrapper};
use cursive::views::{Dialog, EditView, ScrollView, SelectView};
use cursive::Cursive;

View File

@@ -2,7 +2,7 @@
use cursive::direction::Orientation;
use cursive::event::{AnyCb, Event, EventResult, Key};
use cursive::traits::{Boxable, Finder, Identifiable, View};
use cursive::traits::{Finder, Nameable, View};
use cursive::view::{IntoBoxedView, Selector, ViewNotFound, ViewWrapper};
use cursive::views::{EditView, NamedView, ViewRef};
use cursive::{Cursive, Printer, Vec2};
@@ -98,10 +98,10 @@ impl View for SearchView {
self.edit.call_on_any(selector, &mut |v| callback(v));
}
fn focus_view(&mut self, selector: &Selector<'_>) -> Result<(), ViewNotFound> {
fn focus_view(&mut self, selector: &Selector<'_>) -> Result<EventResult, ViewNotFound> {
if let Selector::Name(s) = selector {
self.edit_focused = s == &"search_edit";
Ok(())
Ok(EventResult::Consumed(None))
} else {
Err(ViewNotFound)
}