Refactor: move playable models to separate module

This commit is contained in:
Henrik Friedrichsen
2021-11-08 20:44:07 +01:00
parent 2d1923f4e7
commit 74b4e65b64
27 changed files with 86 additions and 83 deletions

View File

@@ -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};

View File

@@ -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";

View File

@@ -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;

View File

@@ -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};

View File

@@ -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};

View File

@@ -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
View 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;

View File

@@ -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;

View File

@@ -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};

View File

@@ -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};

View File

@@ -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;

View File

@@ -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;

View File

@@ -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};

View File

@@ -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};

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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};

View File

@@ -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>>>,

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;