1 //=========================================== 2 // Lumina-DE source code 3 // Copyright (c) 2015, Ken Moore 4 // Available under the 3-clause BSD license 5 // See the LICENSE file for full details 6 //=========================================== 7 // This plugin is a simple audio player on the desktop 8 //=========================================== 9 #ifndef _LUMINA_DESKTOP_PLUGIN_AUDIO_PLAYER_WIDGET_H 10 #define _LUMINA_DESKTOP_PLUGIN_AUDIO_PLAYER_WIDGET_H 11 12 #include <QMediaPlaylist> 13 #include <QMediaPlayer> 14 #include <QTimer> 15 #include <QWidget> 16 #include <QMenu> 17 18 #include "../LDPlugin.h" 19 20 namespace Ui{ 21 class PlayerWidget; 22 }; 23 24 class PlayerWidget : public QWidget{ 25 Q_OBJECT 26 public: 27 PlayerWidget(QWidget *parent = 0); 28 ~PlayerWidget(); 29 30 public slots: 31 void LoadIcons(); 32 33 private: 34 Ui::PlayerWidget *ui; 35 QMediaPlaylist *PLAYLIST; 36 QMediaPlayer *PLAYER; 37 QMenu *configMenu, *addMenu; 38 bool updatinglists; 39 40 private slots: 41 void playClicked(); 42 void pauseClicked(); 43 void stopClicked(); 44 void nextClicked(); 45 void prevClicked(); 46 47 void AddFilesToPlaylist(); 48 void AddDirToPlaylist(); 49 void AddURLToPlaylist(); 50 void ClearPlaylist(); 51 void ShufflePlaylist(); 52 void userlistSelectionChanged(); //front-end combobox was changed by the user 53 void playerStateChanged(); 54 void playlistChanged(); //list of items changed 55 void currentSongChanged(); 56 void updateProgress(qint64 val); 57 void updateMaxProgress(qint64 val); 58 }; 59 60 // Wrapper class to put this into a desktop plugin container 61 class AudioPlayerPlugin : public LDPlugin{ 62 Q_OBJECT 63 public: 64 AudioPlayerPlugin(QWidget* parent, QString ID); 65 ~AudioPlayerPlugin(); 66 defaultPluginSize()67 virtual QSize defaultPluginSize(){ 68 // The returned QSize is in grid points (typically 100 or 200 pixels square) 69 return QSize(3,1); 70 } 71 72 private: 73 PlayerWidget *player; 74 75 public slots: LocaleChange()76 void LocaleChange(){ 77 QTimer::singleShot(0,player, SLOT(LoadIcons())); 78 } ThemeChange()79 void ThemeChange(){ 80 QTimer::singleShot(0,player, SLOT(LoadIcons())); 81 } 82 }; 83 84 #endif 85