Clementine-audio-player-Mac.../src/networkremote/outgoingdatacreator.h

126 lines
3.9 KiB
C
Raw Normal View History

2013-01-03 21:40:47 +01:00
#ifndef OUTGOINGDATACREATOR_H
#define OUTGOINGDATACREATOR_H
2012-12-31 23:37:39 +01:00
#include <QImage>
#include <QList>
#include <QMap>
#include <QQueue>
2020-09-18 16:15:19 +02:00
#include <QTcpSocket>
#include <QTimer>
#include <memory>
2012-12-31 23:37:39 +01:00
#include "core/application.h"
2020-09-18 16:15:19 +02:00
#include "core/player.h"
2012-12-31 23:37:39 +01:00
#include "engines/engine_fwd.h"
2020-09-18 16:15:19 +02:00
#include "engines/enginebase.h"
2014-10-21 17:59:02 +02:00
#include "globalsearch/globalsearch.h"
2012-12-31 23:37:39 +01:00
#include "playlist/playlist.h"
#include "playlist/playlistbackend.h"
2020-09-18 16:15:19 +02:00
#include "playlist/playlistmanager.h"
#include "remoteclient.h"
#include "remotecontrolmessages.pb.h"
#include "songinfo/collapsibleinfopane.h"
#include "songinfo/songinfofetcher.h"
#include "songinfo/songinfoprovider.h"
#include "songinfo/songinfoview.h"
#include "songinfo/ultimatelyricslyric.h"
#include "songinfo/ultimatelyricsprovider.h"
#include "songinfo/ultimatelyricsreader.h"
typedef QList<SongInfoProvider*> ProviderList;
2012-12-31 23:37:39 +01:00
2014-10-21 17:59:02 +02:00
struct GlobalSearchRequest {
int id_;
QString query_;
RemoteClient* client_;
2020-09-18 16:15:19 +02:00
GlobalSearchRequest() : id_(-1), client_(nullptr) {}
GlobalSearchRequest(int i, const QString& q, RemoteClient* c)
2020-09-18 16:15:19 +02:00
: id_(i), query_(q), client_(c) {}
2014-10-21 17:59:02 +02:00
};
2013-01-03 21:40:47 +01:00
class OutgoingDataCreator : public QObject {
Q_OBJECT
public:
2013-01-03 21:40:47 +01:00
OutgoingDataCreator(Application* app);
~OutgoingDataCreator();
2012-12-31 23:37:39 +01:00
static const quint32 kFileChunkSize;
void SetClients(QList<RemoteClient*>* clients);
void SetRemoteRootFiles(const QString& files_root_folder) {
files_root_folder_ = files_root_folder;
}
void SetMusicExtensions(const QStringList& files_music_extensions) {
files_music_extensions_ = files_music_extensions;
}
void SetAllowDownloads(bool allow_downloads) {
allow_downloads_ = allow_downloads;
}
static void CreateSong(const Song& song, const QImage& art, const int index,
cpb::remote::SongMetadata* song_metadata);
public slots:
void SendClementineInfo();
2012-12-31 23:37:39 +01:00
void SendAllPlaylists();
void SendAllActivePlaylists();
2013-03-27 16:54:02 +01:00
void SendFirstData(bool send_playlist_songs);
2012-12-31 23:37:39 +01:00
void SendPlaylistSongs(int id);
2013-01-03 21:40:47 +01:00
void PlaylistChanged(Playlist*);
2012-12-31 23:37:39 +01:00
void VolumeChanged(int volume);
void PlaylistAdded(int id, const QString& name, bool favorite);
void PlaylistDeleted(int id);
void PlaylistClosed(int id);
void PlaylistRenamed(int id, const QString& new_name);
2012-12-31 23:37:39 +01:00
void ActiveChanged(Playlist*);
void CurrentSongChanged(const Song& song, const QString& uri,
const QImage& img);
2013-12-22 15:16:42 +01:00
void SendSongMetadata();
2012-12-31 23:37:39 +01:00
void StateChanged(Engine::State);
void SendKeepAlive();
2013-01-15 14:43:02 +01:00
void SendRepeatMode(PlaylistSequence::RepeatMode mode);
void SendShuffleMode(PlaylistSequence::ShuffleMode mode);
void UpdateTrackPosition();
void DisconnectAllClients();
void GetLyrics();
void SendLyrics(int id, const SongInfoFetcher::Result& result);
void SendLibrary(RemoteClient* client);
2013-12-22 15:16:42 +01:00
void EnableKittens(bool aww);
void SendKitten(const QImage& kitten);
2012-12-31 23:37:39 +01:00
void DoGlobalSearch(const QString& query, RemoteClient* client);
void ResultsAvailable(int id, const SearchProvider::ResultList& results);
2014-10-21 17:59:02 +02:00
void SearchFinished(int id);
void SendListFiles(QString relative_path, RemoteClient* client);
void SendSavedRadios(RemoteClient* client);
private:
2012-12-31 23:37:39 +01:00
Application* app_;
QList<RemoteClient*>* clients_;
2012-12-31 23:37:39 +01:00
Song current_song_;
QString current_uri_;
QImage current_image_;
Engine::State last_state_;
QTimer* keep_alive_timer_;
QTimer* track_position_timer_;
2012-12-31 23:37:39 +01:00
int keep_alive_timeout_;
int last_track_position_;
2013-12-22 15:16:42 +01:00
bool aww_;
QString files_root_folder_;
QStringList files_music_extensions_;
bool allow_downloads_;
2012-12-31 23:37:39 +01:00
std::unique_ptr<UltimateLyricsReader> ultimate_reader_;
QMap<int, SongInfoFetcher::Result> results_;
SongInfoFetcher* fetcher_;
2014-10-21 17:59:02 +02:00
QMap<int, GlobalSearchRequest> global_search_result_map_;
void SendDataToClients(cpb::remote::Message* msg);
void SetEngineState(cpb::remote::ResponseClementineInfo* msg);
void CheckEnabledProviders();
SongInfoProvider* ProviderByName(const QString& name) const;
2012-12-31 23:37:39 +01:00
};
#endif // OUTGOINGDATACREATOR_H