aboutsummaryrefslogtreecommitdiff
path: root/lumina-desktop/AppMenu.h
blob: 66457f6958b539da6487cb030a5ad3cf6028c297 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//===========================================
//  Lumina-DE source code
//  Copyright (c) 2014, Ken Moore
//  Available under the 3-clause BSD license
//  See the LICENSE file for full details
//===========================================
//  This menu auto-updates to keep the list of available applications
//    current at all times - and can launch them as necessary
//===========================================
#ifndef _LUMINA_DESKTOP_APP_MENU_H
#define _LUMINA_DESKTOP_APP_MENU_H

// Qt includes
#include <QMenu>
#include <QFileSystemWatcher>
#include <QString>
#include <QList>
#include <QTimer>
#include <QDateTime>
#include <QHash>
#include <QAction>
//#include <QProcess>

// libLumina includes
#include <LuminaXDG.h>

class AppMenu : public QMenu{
	Q_OBJECT
public:
	AppMenu(QWidget *parent = 0);
	~AppMenu();
	
	QHash<QString, QList<XDGDesktop> > *currentAppHash();
	QDateTime lastHashUpdate;

private:
	QFileSystemWatcher *watcher;
	QString appstorelink, controlpanellink; //default *.desktop file to use as the "store" 
	QList<QMenu> MLIST;
	QHash<QString, QList<XDGDesktop> > APPS;
	
	void updateAppList(); //completely update the menu lists
	
private slots:
	void start(); //This is called in a new thread after initialization
	void watcherUpdate();
	void launchStore();
	void launchControlPanel();
	void launchFileManager();
	void launchApp(QAction *act);
};

#endif

bgstack15