Provide search functionality through the TUI #134
@ -21,13 +21,21 @@ pub type App<MH> = AppState<
|
|||||||
>;
|
>;
|
||||||
|
|
||||||
impl<MH: IMusicHoard> App<MH> {
|
impl<MH: IMusicHoard> App<MH> {
|
||||||
pub fn new(music_hoard: MH) -> Self {
|
pub fn new(mut music_hoard: MH) -> Self {
|
||||||
match AppMachine::new(music_hoard) {
|
let init_result = Self::init(&mut music_hoard);
|
||||||
Ok(browse) => browse.into(),
|
let inner = AppInner::new(music_hoard);
|
||||||
Err(critical) => critical.into(),
|
match init_result {
|
||||||
|
Ok(()) => AppMachine::browse(inner).into(),
|
||||||
|
Err(err) => AppMachine::critical(inner, err.to_string()).into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn init(music_hoard: &mut MH) -> Result<(), musichoard::Error> {
|
||||||
|
music_hoard.load_from_database()?;
|
||||||
|
music_hoard.rescan_library()?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
fn inner_ref(&self) -> &AppInner<MH> {
|
fn inner_ref(&self) -> &AppInner<MH> {
|
||||||
match self {
|
match self {
|
||||||
AppState::Browse(browse) => browse.inner_ref(),
|
AppState::Browse(browse) => browse.inner_ref(),
|
||||||
|
@ -2,7 +2,7 @@ use crate::tui::{
|
|||||||
app::{
|
app::{
|
||||||
app::App,
|
app::App,
|
||||||
selection::{Delta, ListSelection},
|
selection::{Delta, ListSelection},
|
||||||
state::{critical::AppCritical, AppInner, AppMachine},
|
state::{AppInner, AppMachine},
|
||||||
AppPublic, AppState, IAppInteractBrowse,
|
AppPublic, AppState, IAppInteractBrowse,
|
||||||
},
|
},
|
||||||
lib::IMusicHoard,
|
lib::IMusicHoard,
|
||||||
@ -17,21 +17,6 @@ impl<MH: IMusicHoard> AppMachine<MH, AppBrowse> {
|
|||||||
state: AppBrowse,
|
state: AppBrowse,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(mut music_hoard: MH) -> Result<Self, AppMachine<MH, AppCritical>> {
|
|
||||||
let init_result = Self::init(&mut music_hoard);
|
|
||||||
let inner = AppInner::new(music_hoard);
|
|
||||||
match init_result {
|
|
||||||
Ok(()) => Ok(AppMachine::browse(inner)),
|
|
||||||
Err(err) => Err(AppMachine::critical(inner, err.to_string())),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn init(music_hoard: &mut MH) -> Result<(), musichoard::Error> {
|
|
||||||
music_hoard.load_from_database()?;
|
|
||||||
music_hoard.rescan_library()?;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<MH: IMusicHoard> From<AppMachine<MH, AppBrowse>> for App<MH> {
|
impl<MH: IMusicHoard> From<AppMachine<MH, AppBrowse>> for App<MH> {
|
||||||
|
@ -59,6 +59,8 @@ impl<'a, MH: IMusicHoard> From<&'a mut AppInner<MH>> for AppPublicInner<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: split tests - into parts that test functionality in isolation and move those where
|
||||||
|
// appropriate, and parts that verify transitions between states.
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use musichoard::collection::Collection;
|
use musichoard::collection::Collection;
|
||||||
|
Loading…
Reference in New Issue
Block a user