on 3e4155e help sign in
unity8/tests/mocks/Ubuntu/Application/ApplicationManager.h
123 lines 4.5 kB history raw
1/*
2 * Copyright (C) 2013 Canonical, Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
17#ifndef APPLICATION_MANAGER_H
18#define APPLICATION_MANAGER_H
20#include <QObject>
21#include <QList>
22#include <QStringList>
23#include "ApplicationListModel.h"
24#include "ApplicationInfo.h"
26class QQuickItem;
28class ApplicationManager : public QObject {
29 Q_OBJECT
30 Q_ENUMS(Role)
31 Q_ENUMS(StageHint)
32 Q_ENUMS(FormFactorHint)
33 Q_ENUMS(FavoriteApplication)
34 Q_FLAGS(ExecFlags)
36 Q_PROPERTY(int keyboardHeight READ keyboardHeight NOTIFY keyboardHeightChanged)
37 Q_PROPERTY(bool keyboardVisible READ keyboardVisible NOTIFY keyboardVisibleChanged)
39 Q_PROPERTY(int sideStageWidth READ sideStageWidth)
40 Q_PROPERTY(StageHint stageHint READ stageHint)
41 Q_PROPERTY(FormFactorHint formFactorHint READ formFactorHint)
42 Q_PROPERTY(ApplicationListModel* mainStageApplications READ mainStageApplications)
43 Q_PROPERTY(ApplicationListModel* sideStageApplications READ sideStageApplications)
44 Q_PROPERTY(ApplicationInfo* mainStageFocusedApplication READ mainStageFocusedApplication
45 NOTIFY mainStageFocusedApplicationChanged)
46 Q_PROPERTY(ApplicationInfo* sideStageFocusedApplication READ sideStageFocusedApplication
47 NOTIFY sideStageFocusedApplicationChanged)
49 public:
50 ApplicationManager(QObject *parent = NULL);
51 virtual ~ApplicationManager();
53 enum Role {
54 Dash, Default, Indicators, Notifications, Greeter, Launcher, OnScreenKeyboard,
55 ShutdownDialog
56 };
57 enum StageHint {
58 MainStage, IntegrationStage, ShareStage, ContentPickingStage,
59 SideStage, ConfigurationStage
60 };
61 enum FormFactorHint {
62 DesktopFormFactor, PhoneFormFactor, TabletFormFactor
63 };
64 enum FavoriteApplication {
65 CameraApplication, GalleryApplication, BrowserApplication, ShareApplication
66 };
67 enum Flag {
68 NoFlag = 0x0,
69 ForceMainStage = 0x1,
70 };
71 Q_DECLARE_FLAGS(ExecFlags, Flag)
73 int keyboardHeight() const;
74 bool keyboardVisible() const;
75 int sideStageWidth() const;
76 StageHint stageHint() const;
77 FormFactorHint formFactorHint() const;
78 ApplicationListModel* mainStageApplications() const;
79 ApplicationListModel* sideStageApplications() const;
80 ApplicationInfo* mainStageFocusedApplication() const;
81 ApplicationInfo* sideStageFocusedApplication() const;
83 Q_INVOKABLE void focusApplication(int handle);
84 Q_INVOKABLE void unfocusCurrentApplication(StageHint stageHint);
85 Q_INVOKABLE ApplicationInfo* startProcess(QString desktopFile,
86 ExecFlags flags,
87 QStringList arguments = QStringList());
88 Q_INVOKABLE void stopProcess(ApplicationInfo* application);
89 Q_INVOKABLE void startWatcher() {}
91 Q_SIGNALS:
92 void keyboardHeightChanged();
93 void keyboardVisibleChanged();
94 void mainStageFocusedApplicationChanged();
95 void sideStageFocusedApplicationChanged();
96 void focusRequested(FavoriteApplication favoriteApplication);
98 private:
99 void showApplicationWindow(ApplicationInfo *application);
100 void buildListOfAvailableApplications();
101 void generateQmlStrings(ApplicationInfo *application);
102 void createMainStageComponent();
103 void createMainStage();
104 void createSideStageComponent();
105 void createSideStage();
106 int m_keyboardHeight;
107 bool m_keyboardVisible;
108 ApplicationListModel* m_mainStageApplications;
109 ApplicationListModel* m_sideStageApplications;
110 ApplicationInfo* m_mainStageFocusedApplication;
111 ApplicationInfo* m_sideStageFocusedApplication;
112 QList<ApplicationInfo*> m_availableApplications;
113 QQmlComponent *m_mainStageComponent;
114 QQuickItem *m_mainStage;
115 QQmlComponent *m_sideStageComponent;
116 QQuickItem *m_sideStage;
117};
119Q_DECLARE_OPERATORS_FOR_FLAGS(ApplicationManager::ExecFlags)
121Q_DECLARE_METATYPE(ApplicationManager*)
123#endif // APPLICATION_MANAGER_H