From 06c6ea316e8fc257a04567fa27be9c2ea07be4fa Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Tue, 11 Jan 2022 20:42:50 +0100 Subject: [PATCH] Migrate to cursive 0.17 --- Cargo.lock | 238 ++++++++++++++++++++++++++---------------- Cargo.toml | 4 +- src/authentication.rs | 4 +- src/main.rs | 7 +- src/ui/layout.rs | 7 +- src/ui/listview.rs | 4 +- src/ui/queue.rs | 2 +- src/ui/search.rs | 6 +- 8 files changed, 164 insertions(+), 108 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6a7e0e1..5f982c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -62,9 +62,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.6.3" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "796540673305a66d127804eef19ad696f1f204b8c1025aaca4958c17eab32877" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ "getrandom 0.2.3", "once_cell", @@ -111,12 +111,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "array-macro" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e97b4e522f9e55523001238ac59d13a8603af57f69980de5d8de4bbbe8ada6" - [[package]] name = "arrayref" version = "0.3.6" @@ -256,9 +250,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.8.0" +version = "3.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" [[package]] name = "byteorder" @@ -563,9 +557,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120" dependencies = [ "cfg-if 1.0.0", "lazy_static 1.4.0", @@ -592,9 +586,9 @@ dependencies = [ [[package]] name = "cursive" -version = "0.16.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6593c3409eb794bf22090bec60dda1e19d1def284478bec7e5a92da3cf977c52" +checksum = "ca536d245342f6c005e7547ab640e444a3dc2fc0319a92124c8c1cbff025e775" dependencies = [ "ahash", "cfg-if 1.0.0", @@ -610,28 +604,25 @@ dependencies = [ "termion", "unicode-segmentation", "unicode-width", - "wasmer_enumset", ] [[package]] name = "cursive_core" -version = "0.2.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "025ac0bcd21ced752d27b70e6aa2285a3513d07b5a0c7f89e71121d20ca1429d" +checksum = "e27fbda42833e46148ff28db338f6189a4407e4a38ba1f4105e2f623089e66a0" dependencies = [ "ahash", - "chrono", "crossbeam-channel", "enum-map", + "enumset", "lazy_static 1.4.0", - "libc", "log", - "num 0.3.1", + "num 0.4.0", "owning_ref", - "syn", + "time 0.3.5", "unicode-segmentation", "unicode-width", - "wasmer_enumset", "xi-unicode", ] @@ -641,8 +632,18 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.10.2", + "darling_macro 0.10.2", +] + +[[package]] +name = "darling" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0d720b8683f8dd83c65155f0530560cba68cd2bf395f6513a483caee57ff7f4" +dependencies = [ + "darling_core 0.13.1", + "darling_macro 0.13.1", ] [[package]] @@ -659,13 +660,38 @@ dependencies = [ "syn", ] +[[package]] +name = "darling_core" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a340f241d2ceed1deb47ae36c4144b2707ec7dd0b649f894cb39bb595986324" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn", +] + [[package]] name = "darling_macro" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" dependencies = [ - "darling_core", + "darling_core 0.10.2", + "quote", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c41b3b7352feb3211a0d743dc5700a4e3b60f51bd2b368892d1e0f9a95f44b" +dependencies = [ + "darling_core 0.13.1", "quote", "syn", ] @@ -789,19 +815,18 @@ dependencies = [ [[package]] name = "enum-map" -version = "0.6.4" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4187999839f4ae8be35cf185d1381aa8dc32d2f5951349cc37ae49ebc4781855" +checksum = "9ec3484df47a85c121b9d8fbf265ca7eedc26a5c4c341db7cf800876201c766f" dependencies = [ - "array-macro", "enum-map-derive", ] [[package]] name = "enum-map-derive" -version = "0.4.6" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c450cf304c9e18d45db562025a14fb1ca0f5c769b6f609309f81d4c31de455" +checksum = "8182c0d26a908f001a23adc388fcef7fde884fbaf668874126cd5a3c13ca299e" dependencies = [ "proc-macro2", "quote", @@ -829,6 +854,27 @@ dependencies = [ "syn", ] +[[package]] +name = "enumset" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6216d2c19a6fb5f29d1ada1dc7bc4367a8cbf0fa4af5cf12e07b5bbdde6b5b2c" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6451128aa6655d880755345d085494cf7561a6bee7c8dc821e5d77e6d267ecd4" +dependencies = [ + "darling 0.13.1", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "exitfailure" version = "0.5.1" @@ -1028,9 +1074,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.4" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" dependencies = [ "typenum", "version_check", @@ -1259,9 +1305,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" dependencies = [ "autocfg", "hashbrown", @@ -1791,20 +1837,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8794322172319b972f528bf90c6b467be0079f1fa82780ffb431088e741a73ab" dependencies = [ "jni-sys", - "ndk-sys", + "ndk-sys 0.2.2", "num_enum", "thiserror", ] [[package]] name = "ndk" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d64d6af06fde0e527b1ba5c7b79a6cc89cfc46325b0b2887dffe8f70197e0c3c" +checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" dependencies = [ "bitflags", "jni-sys", - "ndk-sys", + "ndk-sys 0.3.0", "num_enum", "thiserror", ] @@ -1819,22 +1865,22 @@ dependencies = [ "libc", "log", "ndk 0.3.0", - "ndk-macro", - "ndk-sys", + "ndk-macro 0.2.0", + "ndk-sys 0.2.2", ] [[package]] name = "ndk-glue" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e9e94628f24e7a3cb5b96a2dc5683acd9230bf11991c2a1677b87695138420" +checksum = "04c0d14b0858eb9962a5dac30b809b19f19da7e4547d64af2b0bb051d2e55d79" dependencies = [ "lazy_static 1.4.0", "libc", "log", - "ndk 0.4.0", - "ndk-macro", - "ndk-sys", + "ndk 0.6.0", + "ndk-macro 0.3.0", + "ndk-sys 0.3.0", ] [[package]] @@ -1843,19 +1889,41 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" dependencies = [ - "darling", + "darling 0.10.2", "proc-macro-crate 0.1.5", "proc-macro2", "quote", "syn", ] +[[package]] +name = "ndk-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" +dependencies = [ + "darling 0.13.1", + "proc-macro-crate 1.1.0", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "ndk-sys" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" +[[package]] +name = "ndk-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +dependencies = [ + "jni-sys", +] + [[package]] name = "nix" version = "0.17.0" @@ -1951,14 +2019,14 @@ dependencies = [ [[package]] name = "num" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7a8e9be5e039e2ff869df49155f1c06bd01ade2117ec783e56ab0932b67a8f" +checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" dependencies = [ - "num-complex 0.3.1", + "num-complex 0.4.0", "num-integer", "num-iter", - "num-rational 0.3.2", + "num-rational 0.4.0", "num-traits", ] @@ -1997,9 +2065,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747d632c0c558b87dbabbe6a82f3b4ae03720d0646ac5b7b4dae89394be5f2c5" +checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085" dependencies = [ "num-traits", ] @@ -2050,9 +2118,9 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.3.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a" dependencies = [ "autocfg", "num-integer", @@ -2146,13 +2214,13 @@ dependencies = [ [[package]] name = "oboe" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e15e22bc67e047fe342a32ecba55f555e3be6166b04dd157cd0f803dfa9f48e1" +checksum = "2463c8f2e19b4e0d0710a21f8e4011501ff28db1c95d7a5482a553b2100502d2" dependencies = [ "jni", - "ndk 0.4.0", - "ndk-glue 0.4.0", + "ndk 0.6.0", + "ndk-glue 0.6.0", "num-derive", "num-traits", "oboe-sys", @@ -2160,9 +2228,9 @@ dependencies = [ [[package]] name = "oboe-sys" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "338142ae5ab0aaedc8275aa8f67f460e43ae0fca76a695a742d56da0a269eadc" +checksum = "3370abb7372ed744232c12954d920d1a40f1c4686de9e79e800021ef492294bd" dependencies = [ "cc", ] @@ -2251,9 +2319,9 @@ dependencies = [ [[package]] name = "pancurses" -version = "0.16.1" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3058bc37c433096b2ac7afef1c5cdfae49ede0a4ffec3dfc1df1df0959d0ff0" +checksum = "0352975c36cbacb9ee99bfb709b9db818bed43af57751797f8633649759d13db" dependencies = [ "libc", "log", @@ -3033,9 +3101,9 @@ checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] name = "sha2" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer", "cfg-if 1.0.0", @@ -3294,9 +3362,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.84" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecb2e6da8ee5eb9a61068762a32fa9619cc591ceb055b3687f4cd4051ec2e06b" +checksum = "a684ac3dcd8913827e18cd09a68384ee66c1de24157e3c556c9ab16d85695fb7" dependencies = [ "proc-macro2", "quote", @@ -3317,13 +3385,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ "cfg-if 1.0.0", + "fastrand", "libc", - "rand", "redox_syscall 0.2.10", "remove_dir_all", "winapi", @@ -3432,6 +3500,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "time" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41effe7cfa8af36f439fac33861b66b049edc6f9a32331e2312660529c1c24ad" +dependencies = [ + "itoa 0.4.8", + "libc", +] + [[package]] name = "time-macros" version = "0.1.1" @@ -3830,28 +3908,6 @@ version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" -[[package]] -name = "wasmer_enumset" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf088cc1f7d247fd96dff0df46fb1bbb747d8a69ae1ecd71aed55c55e354b2d8" -dependencies = [ - "num-traits", - "wasmer_enumset_derive", -] - -[[package]] -name = "wasmer_enumset_derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1b32d98e11194200baf6d3f85eb2d6cfe56f6d9af0dd617f90ca48f958a88" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "wayland-client" version = "0.27.0" diff --git a/Cargo.toml b/Cargo.toml index c267558..89e90c6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,7 +45,7 @@ strum_macros = "0.23.1" regex = "1" ioctl-rs = { version = "0.2", optional = true } serde_cbor = "0.11.2" -pancurses = { version = "0.16.0", optional = true } +pancurses = { version = "0.17.0", optional = true } libc = "0.2.111" parse_duration = "2.1.1" @@ -55,7 +55,7 @@ default-features = false features = ["client-ureq", "ureq-rustls-tls"] [dependencies.cursive] -version = "0.16.3" +version = "0.17.0" default-features = false [features] diff --git a/src/authentication.rs b/src/authentication.rs index dcc5dcb..1e7dce7 100644 --- a/src/authentication.rs +++ b/src/authentication.rs @@ -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}; diff --git a/src/main.rs b/src/main.rs index ef87094..0bcf880 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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()); diff --git a/src/ui/layout.rs b/src/ui/layout.rs index d6ab4fd..d2734fa 100644 --- a/src/ui/layout.rs +++ b/src/ui/layout.rs @@ -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 { 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) } } } diff --git a/src/ui/listview.rs b/src/ui/listview.rs index 94ff761..b68aca3 100644 --- a/src/ui/listview.rs +++ b/src/ui/listview.rs @@ -315,9 +315,9 @@ impl View for ListView { 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)) } } } diff --git a/src/ui/queue.rs b/src/ui/queue.rs index 0189f8a..e884fa4 100644 --- a/src/ui/queue.rs +++ b/src/ui/queue.rs @@ -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; diff --git a/src/ui/search.rs b/src/ui/search.rs index f79dc42..155ce94 100644 --- a/src/ui/search.rs +++ b/src/ui/search.rs @@ -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 { if let Selector::Name(s) = selector { self.edit_focused = s == &"search_edit"; - Ok(()) + Ok(EventResult::Consumed(None)) } else { Err(ViewNotFound) }