use anyhow::{anyhow,bail,ensure};
use log::{info,error,warn,trace,debug};
use serde::{Serialize,Deserialize};
use disk::prelude::*;
use disk::{Bincode,bincode_file};
use crate::collection::{
Key,
Keychain,
Slice,
};
use crate::constants::{
FESTIVAL,
FESTIVAL_HEADER,
STATE_VERSION,
};
bincode_file!(State, Dir::Data, FESTIVAL, "", "state", FESTIVAL_HEADER, STATE_VERSION);
#[derive(Clone,Debug,Default,PartialEq,Serialize,Deserialize)]
pub struct State {
pub playing: bool,
pub current_key: Key,
pub current_elapsed: f64,
pub current_runtime: f64,
pub shuffle: bool,
pub repeat: bool,
pub search_result: Keychain,
pub queue: Slice,
pub playlists: Slice,
}
impl State {
#[inline(always)]
pub fn new() -> Self {
Self {
playing: false,
current_key: Key::new(),
current_elapsed: 0.0,
current_runtime: 0.0,
shuffle: false,
repeat: false,
search_result: Keychain::new(),
queue: Slice::new(),
playlists: Slice::new(),
}
}
}