#ifndef PLAYERWIDGET_H #define PLAYERWIDGET_H #include #include #include #include #include class QStandardItemModel; class QStandardItem; class QLineEdit; class QLabel; class QSlider; class QTextEdit; class QTextBrowser; class QMediaPlayer; class QToolBar; class QAction; class QTimer; class QStackedLayout; class BeetPlayerProxy; class BeetView; class QSystemTrayIcon; class WebDownloader; class PlayerWidget : public QWidget { Q_OBJECT public: enum ItemType { Artist, Album, Song, Genre, WebRadio }; enum PopulateType { FilterType, IdType, EmptyType }; enum CustomRoles { TypeRole = Qt::UserRole + 1, IdRole = Qt::UserRole + 2, FullPathRole = Qt::UserRole + 3, GenreRole = Qt::UserRole + 4, ArtistRole = Qt::UserRole + 5, TitleRole = Qt::UserRole + 6, AlbumRole = Qt::UserRole + 7, LengthRole = Qt::UserRole + 8, UrlRole = Qt::UserRole + 9, RemoteRole = Qt::UserRole + 10 }; explicit PlayerWidget(QWidget *parent = 0); ~PlayerWidget(); const QMediaPlayer* player() const { return mPlayer; } public slots: void doPopulateByArtist(); void doPopulateByAlbum(); void doPopulateByGenre(); void doPopulateBySong(); void doPopulateByDate(); void doPopulateByFolder(); void doPopulateByWebradio(); void doPopulateByFavorites(); void doModelChanged(); void viewDoubleClicked(const QModelIndex &idx); void rightCurrentChanged(const QModelIndex &cur, const QModelIndex &prev); void doPlay(); void doStop(); void doPause(); void doPlayOrPause(); void doSelectFiles(); void doDeselect(); void doDeleteFiles(); void volumeUp(); void volumeDown(); void dirUp(); void dirHome(); void showVolume(); void doFilter(); void clearFilter(); void reindex(); void addToPlayList(); void addToPlayListAndClear(); void removeFromPlayList(); void addToFavorites(); void clearPlayList(); void shufflePlayList(); void randomPlay(); void playCurrent(const QModelIndex &index); void printList(); void searchMusicbrainzRight(); void searchMusicbrainzLeft(); void webDlDone(); void filterFromPlaylist(); void addWebRadio(); void doMetadataChange(const QString &key, const QVariant &value); void updateStreamData(); void mute(bool triggered); void volumeChanged(int volume); void next(); void previous(); void setPosition(qint64 pos); void slide(int value); void continuePlaying(QMediaPlayer::MediaStatus state); void expand(); void readSettings(); void writeSettings(); void aboutDlg(); signals: void viewModeChanged(const QString &viewMode); void playModeChanged(const QString &playMode); void numFilesChanged(int numFiles); void playListLengthChanged(quint64 secs); void message(const QString &msg); void modelChanged(); void setWinTitle(const QString &title); void streamDataNeedsUpdate(); private: void setupGui(); void createActions(); void populateByArtist(QStandardItem *parent, const QString &filter); void populateByAlbum(QStandardItem *parent, const QVariant &filter, int type); void populateBySong(QStandardItem *parent, const QVariant &filter, int type); void populateByDate(QStandardItem *parent); void populateByGenre(QStandardItem *parent, const QString &filter); void populateByWebradio(QStandardItem *parent); void populateByFavorites(QStandardItem *parent); void recurse(const QModelIndex &parent); void addSong(const QModelIndex &idx); void play(const QString &fullPath); void playUrl(const QString &url); void advance(int numSongs); void expandRecursive(const QModelIndex &idx); void adjustVolume(int by); void fillWithText(QTextEdit *te, const TagLib::FileRef &fr); void setNowPlaying(const QString &what); QLineEdit *mSearch; QLineEdit *mDir; QMediaPlayer *mPlayer; BeetView *mView; QStandardItemModel *mViewModel; QStandardItemModel *mSearchModel; QStandardItemModel *mCurrentModel; QStandardItemModel *mFolderModel; QStandardItemModel *mWebRadioModel; QLabel *mNowPlayingL; QSlider *mSongSlider; QLabel *mPos; QSlider *mVolumeSlider; QLabel *mVolumePos; QTextEdit *mCurrentTE; QTextBrowser *mLeftTE; QTextEdit *mRightTE; BeetView *mPlayListView; QStandardItemModel *mPlayListModel; QToolBar *mToolBar; QAction *mPlayA; QAction *mStopA; QAction *mPauseA; QAction *mSearchA; QAction *mViewByArtistA; QAction *mSelectFilesA; QAction *mDeselectAllA; QAction *mDeleteFilesA; QAction *mRefreshA; qint64 mDurSecs; quint64 mPlayListLength; QString mCurDir; QString mCurWinTitle; QString mCurToolTip; QSystemTrayIcon *mTrayIcon; QTimer *mVolumeTimer; bool mStarting; QStackedLayout *mSearchDirStack; WebDownloader *mWebDownloader; QMap mOtherMeta; bool mIsStream; }; #endif // PLAYERWIDGET_H