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