diff --git a/src/config.rs b/src/config.rs index 8cae271..3f4efd2 100644 --- a/src/config.rs +++ b/src/config.rs @@ -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}; diff --git a/src/library.rs b/src/library.rs index 5f75228..29d680f 100644 --- a/src/library.rs +++ b/src/library.rs @@ -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"; diff --git a/src/main.rs b/src/main.rs index abd26f9..9f2e416 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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; diff --git a/src/album.rs b/src/model/album.rs similarity index 98% rename from src/album.rs rename to src/model/album.rs index 9810cbb..86cce72 100644 --- a/src/album.rs +++ b/src/model/album.rs @@ -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}; diff --git a/src/artist.rs b/src/model/artist.rs similarity index 98% rename from src/artist.rs rename to src/model/artist.rs index e3a70ef..4ac4c45 100644 --- a/src/artist.rs +++ b/src/model/artist.rs @@ -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}; diff --git a/src/episode.rs b/src/model/episode.rs similarity index 98% rename from src/episode.rs rename to src/model/episode.rs index 18cc1a9..3bdab08 100644 --- a/src/episode.rs +++ b/src/model/episode.rs @@ -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}; diff --git a/src/model/mod.rs b/src/model/mod.rs new file mode 100644 index 0000000..ee6cb84 --- /dev/null +++ b/src/model/mod.rs @@ -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; diff --git a/src/playable.rs b/src/model/playable.rs similarity index 97% rename from src/playable.rs rename to src/model/playable.rs index 6c1caa2..f9904bf 100644 --- a/src/playable.rs +++ b/src/model/playable.rs @@ -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; diff --git a/src/playlist.rs b/src/model/playlist.rs similarity index 99% rename from src/playlist.rs rename to src/model/playlist.rs index c3863e1..1746352 100644 --- a/src/playlist.rs +++ b/src/model/playlist.rs @@ -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}; diff --git a/src/show.rs b/src/model/show.rs similarity index 98% rename from src/show.rs rename to src/model/show.rs index 7f15afb..94240f5 100644 --- a/src/show.rs +++ b/src/model/show.rs @@ -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}; diff --git a/src/track.rs b/src/model/track.rs similarity index 98% rename from src/track.rs rename to src/model/track.rs index ae0729b..01356be 100644 --- a/src/track.rs +++ b/src/model/track.rs @@ -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; diff --git a/src/mpris.rs b/src/mpris.rs index 692830a..e4d61ba 100644 --- a/src/mpris.rs +++ b/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; diff --git a/src/queue.rs b/src/queue.rs index d0abdd8..dbc6869 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -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}; diff --git a/src/spotify.rs b/src/spotify.rs index bd11dd3..57b9148 100644 --- a/src/spotify.rs +++ b/src/spotify.rs @@ -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}; diff --git a/src/spotify_api.rs b/src/spotify_api.rs index 75b9317..307e393 100644 --- a/src/spotify_api.rs +++ b/src/spotify_api.rs @@ -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; diff --git a/src/spotify_worker.rs b/src/spotify_worker.rs index 7b84f39..be50ed5 100644 --- a/src/spotify_worker.rs +++ b/src/spotify_worker.rs @@ -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; diff --git a/src/traits.rs b/src/traits.rs index 829e394..b1139ae 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -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) -> bool; diff --git a/src/ui/album.rs b/src/ui/album.rs index 349cbc8..9c1f43a 100644 --- a/src/ui/album.rs +++ b/src/ui/album.rs @@ -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; diff --git a/src/ui/artist.rs b/src/ui/artist.rs index 018c0cf..c5f3689 100644 --- a/src/ui/artist.rs +++ b/src/ui/artist.rs @@ -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; diff --git a/src/ui/contextmenu.rs b/src/ui/contextmenu.rs index 1e33b42..a26ef3b 100644 --- a/src/ui/contextmenu.rs +++ b/src/ui/contextmenu.rs @@ -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}; diff --git a/src/ui/listview.rs b/src/ui/listview.rs index 5ee15f5..9db0f48 100644 --- a/src/ui/listview.rs +++ b/src/ui/listview.rs @@ -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 { content: Arc>>, diff --git a/src/ui/playlist.rs b/src/ui/playlist.rs index 7281aee..dd76e22 100644 --- a/src/ui/playlist.rs +++ b/src/ui/playlist.rs @@ -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; diff --git a/src/ui/playlists.rs b/src/ui/playlists.rs index 8e0006c..72529bd 100644 --- a/src/ui/playlists.rs +++ b/src/ui/playlists.rs @@ -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; diff --git a/src/ui/queue.rs b/src/ui/queue.rs index 002f935..0189f8a 100644 --- a/src/ui/queue.rs +++ b/src/ui/queue.rs @@ -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; diff --git a/src/ui/search.rs b/src/ui/search.rs index 6a690de..f79dc42 100644 --- a/src/ui/search.rs +++ b/src/ui/search.rs @@ -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; diff --git a/src/ui/search_results.rs b/src/ui/search_results.rs index 2d85300..e7ffa62 100644 --- a/src/ui/search_results.rs +++ b/src/ui/search_results.rs @@ -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; diff --git a/src/ui/show.rs b/src/ui/show.rs index 48e6d93..aab8de8 100644 --- a/src/ui/show.rs +++ b/src/ui/show.rs @@ -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;