#ifndef PLAYERWIDGET_H #define PLAYERWIDGET_H #include #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 QActionGroup; class QTimer; class QStackedLayout; class BeetPlayerProxy; class BeetView; class QSystemTrayIcon; class WebDownloader; class QStackedWidget; class QSplashScreen; class QTabWidget; class PlayerWidget : public QWidget { Q_OBJECT public: explicit PlayerWidget(QSplashScreen *splash, QWidget *parent = nullptr); ~PlayerWidget(); const QMediaPlayer* player() const { return mPlayer; } const QActionGroup* bottomAG() const { return mBottomTBG; } public slots: void rightCurrentChanged(const QModelIndex &cur, const QModelIndex &prev); void doPlay(); void doStop(); void doPause(); void doPlayOrPause(); void doContinue(); void volumeUp(); void volumeDown(); void showVolume(); void reindex(); void addToPlayList(); void addToPlayListAndClear(); void removeFromPlayList(); void clearPlayList(); void shufflePlayList(); void randomPlay(); void playCurrent(const QModelIndex &index); void printList(); void searchMusicbrainz(const QModelIndex &idx); void webDlDone(); void doMetadataChange(const QString &key, const QVariant &value); void updateStreamData(); void mute(bool triggered); void volumeChanged(int volume); void next(); void previous(); void setPosition(int pos); void slide(int value); void continuePlaying(QMediaPlayer::MediaStatus state); void readSettings(); void writeSettings(); void aboutDlg(); void gotoAlbum(); void setCollectionIndex(int collectionIndex, bool isWebradio); void addToFavorites(const QModelIndexList &idxs); void clearAndAddAllFavorites(); 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(); void currentPlayListChanged(const QModelIndex &cur); private: void setupGui(QSplashScreen *splash); void createActions(); void recurse(const QModelIndex &parent); void addSong(const QModelIndex &idx); void play(const QString &fullPath); void playUrl(const QModelIndex &idx); void advance(int numSongs); void adjustVolume(int by); void fillWithText(QTextEdit *te, const TagLib::FileRef &fr); void setNowPlaying(const QString &what); QMediaPlayer *mPlayer; QLabel *mNowPlayingL; QSlider *mSongSlider; QLabel *mPos; QSlider *mVolumeSlider; QLabel *mVolumePos; QTextEdit *mCurrentTE; QTextBrowser *mLeftTE; QTextEdit *mRightTE; BeetView *mSongView; BeetView *mWebRadioView; QStandardItemModel *mSongModel; QStandardItemModel *mWebRadioModel; QToolBar *mToolBar; QAction *mPlayA; QAction *mStopA; QAction *mPauseA; QAction *mViewByAlbumsA; int mDurSecs; quint64 mPlayListLength; QString mCurWinTitle; QString mCurToolTip; QSystemTrayIcon *mTrayIcon; QTimer *mVolumeTimer; bool mStarting; WebDownloader *mWebDownloader; QMap mOtherMeta; QStackedWidget *mCollectionStack; QTabWidget *mPlaylistTab; QActionGroup *mBottomTBG; }; #endif // PLAYERWIDGET_H