Refactor: move playable models to separate module
This commit is contained in:
@@ -8,7 +8,7 @@ use log::{debug, error};
|
||||
use platform_dirs::AppDirs;
|
||||
|
||||
use crate::command::{SortDirection, SortKey};
|
||||
use crate::playable::Playable;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::queue;
|
||||
use crate::serialization::{Serializer, CBOR, TOML};
|
||||
|
||||
|
||||
@@ -10,16 +10,16 @@ use rspotify::model::Id;
|
||||
use serde::de::DeserializeOwned;
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::album::Album;
|
||||
use crate::artist::Artist;
|
||||
use crate::config;
|
||||
use crate::config::Config;
|
||||
use crate::events::EventManager;
|
||||
use crate::playable::Playable;
|
||||
use crate::playlist::Playlist;
|
||||
use crate::show::Show;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::model::playlist::Playlist;
|
||||
use crate::model::show::Show;
|
||||
use crate::model::track::Track;
|
||||
use crate::spotify::Spotify;
|
||||
use crate::track::Track;
|
||||
|
||||
const CACHE_TRACKS: &str = "tracks.db";
|
||||
const CACHE_ALBUMS: &str = "albums.db";
|
||||
|
||||
@@ -18,27 +18,21 @@ use librespot_core::cache::Cache;
|
||||
use librespot_playback::audio_backend;
|
||||
use log::{error, info, trace};
|
||||
|
||||
mod album;
|
||||
mod artist;
|
||||
mod authentication;
|
||||
mod command;
|
||||
mod commands;
|
||||
mod config;
|
||||
mod episode;
|
||||
mod events;
|
||||
mod library;
|
||||
mod playable;
|
||||
mod playlist;
|
||||
mod model;
|
||||
mod queue;
|
||||
mod serialization;
|
||||
mod sharing;
|
||||
mod show;
|
||||
mod spotify;
|
||||
mod spotify_api;
|
||||
mod spotify_url;
|
||||
mod spotify_worker;
|
||||
mod theme;
|
||||
mod track;
|
||||
mod traits;
|
||||
mod ui;
|
||||
mod utils;
|
||||
|
||||
@@ -7,12 +7,12 @@ use chrono::{DateTime, Utc};
|
||||
use log::debug;
|
||||
use rspotify::model::album::{FullAlbum, SavedAlbum, SimplifiedAlbum};
|
||||
|
||||
use crate::artist::Artist;
|
||||
use crate::library::Library;
|
||||
use crate::playable::Playable;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::Queue;
|
||||
use crate::spotify::Spotify;
|
||||
use crate::track::Track;
|
||||
use crate::traits::{IntoBoxedViewExt, ListItem, ViewExt};
|
||||
use crate::ui::{album::AlbumView, listview::ListView};
|
||||
|
||||
@@ -5,10 +5,10 @@ use rspotify::model::artist::{FullArtist, SimplifiedArtist};
|
||||
use rspotify::model::Id;
|
||||
|
||||
use crate::library::Library;
|
||||
use crate::playable::Playable;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::Queue;
|
||||
use crate::spotify::Spotify;
|
||||
use crate::track::Track;
|
||||
use crate::traits::{IntoBoxedViewExt, ListItem, ViewExt};
|
||||
use crate::ui::{artist::ArtistView, listview::ListView};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::library::Library;
|
||||
use crate::playable::Playable;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::queue::Queue;
|
||||
use crate::traits::{ListItem, ViewExt};
|
||||
use chrono::{DateTime, Utc};
|
||||
7
src/model/mod.rs
Normal file
7
src/model/mod.rs
Normal file
@@ -0,0 +1,7 @@
|
||||
pub mod album;
|
||||
pub mod artist;
|
||||
pub mod episode;
|
||||
pub mod playable;
|
||||
pub mod playlist;
|
||||
pub mod show;
|
||||
pub mod track;
|
||||
@@ -1,12 +1,12 @@
|
||||
use chrono::{DateTime, Utc};
|
||||
use rspotify::model::PlayableItem;
|
||||
|
||||
use crate::album::Album;
|
||||
use crate::artist::Artist;
|
||||
use crate::episode::Episode;
|
||||
use crate::library::Library;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::episode::Episode;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::Queue;
|
||||
use crate::track::Track;
|
||||
use crate::traits::{ListItem, ViewExt};
|
||||
use std::fmt;
|
||||
use std::sync::Arc;
|
||||
@@ -8,10 +8,10 @@ use log::debug;
|
||||
use rspotify::model::playlist::{FullPlaylist, SimplifiedPlaylist};
|
||||
use rspotify::model::Id;
|
||||
|
||||
use crate::playable::Playable;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::Queue;
|
||||
use crate::spotify::Spotify;
|
||||
use crate::track::Track;
|
||||
use crate::traits::{IntoBoxedViewExt, ListItem, ViewExt};
|
||||
use crate::ui::{listview::ListView, playlist::PlaylistView};
|
||||
use crate::{command::SortDirection, command::SortKey, library::Library};
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::episode::Episode;
|
||||
use crate::library::Library;
|
||||
use crate::playable::Playable;
|
||||
use crate::model::episode::Episode;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::queue::Queue;
|
||||
use crate::spotify::Spotify;
|
||||
use crate::traits::{IntoBoxedViewExt, ListItem, ViewExt};
|
||||
@@ -6,10 +6,10 @@ use rspotify::model::album::FullAlbum;
|
||||
use rspotify::model::track::{FullTrack, SavedTrack, SimplifiedTrack};
|
||||
use rspotify::model::Id;
|
||||
|
||||
use crate::album::Album;
|
||||
use crate::artist::Artist;
|
||||
use crate::library::Library;
|
||||
use crate::playable::Playable;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::queue::Queue;
|
||||
use crate::traits::{IntoBoxedViewExt, ListItem, ViewExt};
|
||||
use crate::ui::listview::ListView;
|
||||
12
src/mpris.rs
12
src/mpris.rs
@@ -10,16 +10,16 @@ use dbus::strings::Path;
|
||||
use dbus_tree::{Access, Factory};
|
||||
use log::{debug, warn};
|
||||
|
||||
use crate::album::Album;
|
||||
use crate::episode::Episode;
|
||||
use crate::events::EventManager;
|
||||
use crate::library::Library;
|
||||
use crate::playable::Playable;
|
||||
use crate::playlist::Playlist;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::episode::Episode;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::model::playlist::Playlist;
|
||||
use crate::model::show::Show;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::{Queue, RepeatSetting};
|
||||
use crate::show::Show;
|
||||
use crate::spotify::{PlayerEvent, Spotify, UriType, VOLUME_PERCENT};
|
||||
use crate::track::Track;
|
||||
use crate::traits::ListItem;
|
||||
use regex::Regex;
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ use notify_rust::Notification;
|
||||
use rand::prelude::*;
|
||||
use strum_macros::Display;
|
||||
|
||||
use crate::playable::Playable;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::spotify::Spotify;
|
||||
use crate::{config::Config, spotify::PlayerEvent};
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ use std::time::{Duration, SystemTime};
|
||||
|
||||
use crate::config;
|
||||
use crate::events::{Event, EventManager};
|
||||
use crate::playable::Playable;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::spotify_api::WebApi;
|
||||
use crate::spotify_worker::{Worker, WorkerCommand};
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
use crate::album::Album;
|
||||
use crate::artist::Artist;
|
||||
use crate::episode::Episode;
|
||||
use crate::playable::Playable;
|
||||
use crate::playlist::Playlist;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::episode::Episode;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::model::playlist::Playlist;
|
||||
use crate::model::track::Track;
|
||||
use crate::spotify_worker::WorkerCommand;
|
||||
use crate::track::Track;
|
||||
use crate::ui::pagination::{ApiPage, ApiResult};
|
||||
use chrono::{DateTime, Duration as ChronoDuration, Utc};
|
||||
use futures::channel::oneshot;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::config;
|
||||
use crate::events::{Event, EventManager};
|
||||
use crate::playable::Playable;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::queue::QueueEvent;
|
||||
use crate::spotify::PlayerEvent;
|
||||
use futures::channel::oneshot;
|
||||
|
||||
@@ -4,13 +4,13 @@ use cursive::view::{View, ViewWrapper};
|
||||
use cursive::views::NamedView;
|
||||
use cursive::Cursive;
|
||||
|
||||
use crate::album::Album;
|
||||
use crate::artist::Artist;
|
||||
use crate::command::Command;
|
||||
use crate::commands::CommandResult;
|
||||
use crate::library::Library;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::Queue;
|
||||
use crate::track::Track;
|
||||
|
||||
pub trait ListItem: Sync + Send + 'static {
|
||||
fn is_playing(&self, queue: Arc<Queue>) -> bool;
|
||||
|
||||
@@ -3,11 +3,11 @@ use std::sync::{Arc, RwLock};
|
||||
use cursive::view::ViewWrapper;
|
||||
use cursive::Cursive;
|
||||
|
||||
use crate::album::Album;
|
||||
use crate::artist::Artist;
|
||||
use crate::command::Command;
|
||||
use crate::commands::CommandResult;
|
||||
use crate::library::Library;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::queue::Queue;
|
||||
use crate::traits::ViewExt;
|
||||
use crate::ui::listview::ListView;
|
||||
|
||||
@@ -5,13 +5,13 @@ use cursive::view::ViewWrapper;
|
||||
use cursive::Cursive;
|
||||
use rspotify::model::AlbumType;
|
||||
|
||||
use crate::album::Album;
|
||||
use crate::artist::Artist;
|
||||
use crate::command::Command;
|
||||
use crate::commands::CommandResult;
|
||||
use crate::library::Library;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::Queue;
|
||||
use crate::track::Track;
|
||||
use crate::traits::ViewExt;
|
||||
use crate::ui::listview::ListView;
|
||||
use crate::ui::tabview::TabView;
|
||||
|
||||
@@ -4,19 +4,20 @@ use cursive::view::{Margins, ViewWrapper};
|
||||
use cursive::views::{Dialog, NamedView, ScrollView, SelectView};
|
||||
use cursive::Cursive;
|
||||
|
||||
use crate::commands::CommandResult;
|
||||
use crate::library::Library;
|
||||
use crate::playable::Playable;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::model::playlist::Playlist;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::Queue;
|
||||
#[cfg(feature = "share_clipboard")]
|
||||
use crate::sharing::write_share;
|
||||
use crate::track::Track;
|
||||
use crate::traits::{ListItem, ViewExt};
|
||||
use crate::ui::layout::Layout;
|
||||
use crate::ui::modal::Modal;
|
||||
use crate::{artist::Artist, commands::CommandResult};
|
||||
use crate::{
|
||||
command::{Command, MoveAmount, MoveMode},
|
||||
playlist::Playlist,
|
||||
spotify::Spotify,
|
||||
};
|
||||
use cursive::traits::{Finder, Nameable};
|
||||
|
||||
@@ -10,24 +10,25 @@ use cursive::view::ScrollBase;
|
||||
use cursive::{Cursive, Printer, Rect, Vec2};
|
||||
use unicode_width::UnicodeWidthStr;
|
||||
|
||||
use crate::artist::Artist;
|
||||
use crate::command::{Command, GotoMode, JumpMode, MoveAmount, MoveMode, TargetMode};
|
||||
use crate::commands::CommandResult;
|
||||
use crate::episode::Episode;
|
||||
use crate::library::Library;
|
||||
use crate::playable::Playable;
|
||||
use crate::playlist::Playlist;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::episode::Episode;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::model::playlist::Playlist;
|
||||
use crate::model::show::Show;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::Queue;
|
||||
#[cfg(feature = "share_clipboard")]
|
||||
use crate::sharing::{read_share, write_share};
|
||||
use crate::show::Show;
|
||||
use crate::track::Track;
|
||||
use crate::traits::{IntoBoxedViewExt, ListItem, ViewExt};
|
||||
use crate::ui::album::AlbumView;
|
||||
use crate::ui::artist::ArtistView;
|
||||
use crate::ui::contextmenu::ContextMenu;
|
||||
use crate::ui::pagination::Pagination;
|
||||
use crate::{album::Album, spotify::UriType, spotify_url::SpotifyUrl};
|
||||
use crate::{spotify::UriType, spotify_url::SpotifyUrl};
|
||||
|
||||
pub struct ListView<I: ListItem> {
|
||||
content: Arc<RwLock<Vec<I>>>,
|
||||
|
||||
@@ -6,8 +6,8 @@ use cursive::Cursive;
|
||||
use crate::command::Command;
|
||||
use crate::commands::CommandResult;
|
||||
use crate::library::Library;
|
||||
use crate::playable::Playable;
|
||||
use crate::playlist::Playlist;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::model::playlist::Playlist;
|
||||
use crate::queue::Queue;
|
||||
use crate::spotify::Spotify;
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ use cursive::Cursive;
|
||||
use crate::command::Command;
|
||||
use crate::commands::CommandResult;
|
||||
use crate::library::Library;
|
||||
use crate::playlist::Playlist;
|
||||
use crate::model::playlist::Playlist;
|
||||
use crate::queue::Queue;
|
||||
use crate::traits::ViewExt;
|
||||
use crate::ui::listview::ListView;
|
||||
|
||||
@@ -9,7 +9,7 @@ use std::sync::Arc;
|
||||
use crate::command::{Command, MoveMode, ShiftMode};
|
||||
use crate::commands::CommandResult;
|
||||
use crate::library::Library;
|
||||
use crate::playable::Playable;
|
||||
use crate::model::playable::Playable;
|
||||
use crate::queue::Queue;
|
||||
use crate::traits::ViewExt;
|
||||
use crate::ui::listview::ListView;
|
||||
|
||||
@@ -9,18 +9,18 @@ use cursive::{Cursive, Printer, Vec2};
|
||||
use std::cell::RefCell;
|
||||
use std::sync::{Arc, Mutex, RwLock};
|
||||
|
||||
use crate::album::Album;
|
||||
use crate::artist::Artist;
|
||||
use crate::command::{Command, MoveMode};
|
||||
use crate::commands::CommandResult;
|
||||
use crate::episode::Episode;
|
||||
use crate::events::EventManager;
|
||||
use crate::library::Library;
|
||||
use crate::playlist::Playlist;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::episode::Episode;
|
||||
use crate::model::playlist::Playlist;
|
||||
use crate::model::show::Show;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::Queue;
|
||||
use crate::show::Show;
|
||||
use crate::spotify::{Spotify, UriType};
|
||||
use crate::track::Track;
|
||||
use crate::traits::{ListItem, ViewExt};
|
||||
use crate::ui::layout::Layout;
|
||||
use crate::ui::listview::ListView;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
use crate::album::Album;
|
||||
use crate::artist::Artist;
|
||||
use crate::command::Command;
|
||||
use crate::commands::CommandResult;
|
||||
use crate::episode::Episode;
|
||||
use crate::events::EventManager;
|
||||
use crate::library::Library;
|
||||
use crate::playlist::Playlist;
|
||||
use crate::model::album::Album;
|
||||
use crate::model::artist::Artist;
|
||||
use crate::model::episode::Episode;
|
||||
use crate::model::playlist::Playlist;
|
||||
use crate::model::show::Show;
|
||||
use crate::model::track::Track;
|
||||
use crate::queue::Queue;
|
||||
use crate::show::Show;
|
||||
use crate::spotify::{Spotify, UriType};
|
||||
use crate::spotify_url::SpotifyUrl;
|
||||
use crate::track::Track;
|
||||
use crate::traits::{ListItem, ViewExt};
|
||||
use crate::ui::listview::ListView;
|
||||
use crate::ui::pagination::Pagination;
|
||||
|
||||
@@ -5,10 +5,10 @@ use cursive::Cursive;
|
||||
|
||||
use crate::command::Command;
|
||||
use crate::commands::CommandResult;
|
||||
use crate::episode::Episode;
|
||||
use crate::library::Library;
|
||||
use crate::model::episode::Episode;
|
||||
use crate::model::show::Show;
|
||||
use crate::queue::Queue;
|
||||
use crate::show::Show;
|
||||
use crate::traits::ViewExt;
|
||||
use crate::ui::listview::ListView;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user