1 //===========================================
2 //  Lumina-desktop source code
3 //  Copyright (c) 2012-2017, Ken Moore
4 //  Available under the 3-clause BSD license
5 //  See the LICENSE file for full details
6 //===========================================
7 #ifndef _LUMINA_DESKTOP_SESSION_H
8 #define _LUMINA_DESKTOP_SESSION_H
9 
10 #include <global-includes.h>
11 
12 class LSession : public LSingleApplication{
13 	Q_OBJECT
14 public:
15 	LSession(int &argc, char **argv);
16 	~LSession();
17 
instance()18 	static LSession* instance(){
19 	  return ( static_cast<LSession*>(QApplication::instance()) );
20 	}
21 private:
22 	void CleanupSession();
23 	void setupGlobalConnections();
24 
25 	int VersionStringToNumber(QString version);
26 	QMediaPlayer *mediaObj;
27 	void playAudioFile(QString filepath);
28 
29 	QTranslator *currTranslator;
30 
31 	//Extra background threads for individual objects
32 
33 
34 public slots:
35 	void setupSession();  //called during startup only
36 
37 	//Slots for public access/usage
38 	void StartLogout();
39 	void StartShutdown(bool skipupdates = false);
40 	void StartReboot(bool skipupdates = false);
41 	void LaunchApplication(QString exec);
42 	void LaunchDesktopApplication(QString app, QString action = "");
43 	void LaunchStandardApplication(QString app, QStringList args = QStringList());
44 
45 	void reloadIconTheme(); //will emit the IconThemeChanged signal when ready
46 	void switchLocale(QString localeCode); //will emit the LocaleChanged signal when ready
47 
48 private slots:
49 	void NewCommunication(QStringList);
50 	void launchStartupApps(); //used during initialization
51 
52 	//Internal simplification functions
53 	void checkUserFiles();
54 
55 signals:
56 	//General Signals
57 	void LocaleChanged();
58 	void IconThemeChanged();
59 
60 };
61 
62 #endif
63