summaryrefslogtreecommitdiffstats
path: root/src/modules/Unity/Application/session_interface.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/Unity/Application/session_interface.h')
-rw-r--r--src/modules/Unity/Application/session_interface.h54
1 files changed, 31 insertions, 23 deletions
diff --git a/src/modules/Unity/Application/session_interface.h b/src/modules/Unity/Application/session_interface.h
index 526a96a..186e372 100644
--- a/src/modules/Unity/Application/session_interface.h
+++ b/src/modules/Unity/Application/session_interface.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2014 Canonical, Ltd.
+ * Copyright (C) 2014,2015 Canonical, Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -35,11 +35,11 @@ namespace mir {
namespace qtmir {
-class MirSurfaceItem;
+class MirSurfaceItemInterface;
class SessionInterface : public QObject {
Q_OBJECT
- Q_PROPERTY(MirSurfaceItem* surface READ surface NOTIFY surfaceChanged)
+ Q_PROPERTY(MirSurfaceItemInterface* surface READ surface NOTIFY surfaceChanged)
Q_PROPERTY(unity::shell::application::ApplicationInfoInterface* application READ application NOTIFY applicationChanged DESIGNABLE false)
Q_PROPERTY(SessionInterface* parentSession READ parentSession NOTIFY parentSessionChanged DESIGNABLE false)
Q_PROPERTY(SessionModel* childSessions READ childSessions DESIGNABLE false CONSTANT)
@@ -49,58 +49,66 @@ public:
SessionInterface(QObject *parent = 0) : QObject(parent) {}
virtual ~SessionInterface() {}
- // Session State
- typedef unity::shell::application::ApplicationInfoInterface::State State;
+ enum State {
+ Starting,
+ Running,
+ Suspending,
+ Suspended,
+ Stopped
+ };
Q_INVOKABLE virtual void release() = 0;
//getters
virtual QString name() const = 0;
virtual unity::shell::application::ApplicationInfoInterface* application() const = 0;
- virtual MirSurfaceItem* surface() const = 0;
+ virtual MirSurfaceItemInterface* surface() const = 0;
virtual SessionInterface* parentSession() const = 0;
+ virtual SessionModel* childSessions() const = 0;
virtual State state() const = 0;
virtual bool fullscreen() const = 0;
virtual bool live() const = 0;
+ virtual std::shared_ptr<mir::scene::Session> session() const = 0;
+
+ // For MirSurfaceItem and MirSurfaceManager use
+
+ virtual void setSurface(MirSurfaceItemInterface* surface) = 0;
+
+ // For Application use
+
virtual void setApplication(unity::shell::application::ApplicationInfoInterface* item) = 0;
- virtual void setSurface(MirSurfaceItem* surface) = 0;
- virtual void setState(State state) = 0;
+ virtual void suspend() = 0;
+ virtual void resume() = 0;
+ virtual void stop() = 0;
+
+ // For SessionManager use
virtual void addChildSession(SessionInterface* session) = 0;
virtual void insertChildSession(uint index, SessionInterface* session) = 0;
virtual void removeChildSession(SessionInterface* session) = 0;
virtual void foreachChildSession(std::function<void(SessionInterface* session)> f) const = 0;
- virtual std::shared_ptr<mir::scene::Session> session() const = 0;
-
virtual std::shared_ptr<mir::scene::PromptSession> activePromptSession() const = 0;
virtual void foreachPromptSession(std::function<void(const std::shared_ptr<mir::scene::PromptSession>&)> f) const = 0;
- virtual SessionModel* childSessions() const = 0;
+ virtual void setFullscreen(bool fullscreen) = 0;
+ virtual void setLive(const bool) = 0;
+ virtual void appendPromptSession(const std::shared_ptr<mir::scene::PromptSession>& session) = 0;
+ virtual void removePromptSession(const std::shared_ptr<mir::scene::PromptSession>& session) = 0;
Q_SIGNALS:
- void surfaceChanged(MirSurfaceItem*);
+ void surfaceChanged(MirSurfaceItemInterface*);
void parentSessionChanged(SessionInterface*);
void applicationChanged(unity::shell::application::ApplicationInfoInterface* application);
void aboutToBeDestroyed();
void stateChanged(State state);
void fullscreenChanged(bool fullscreen);
void liveChanged(bool live);
-
- void suspended();
- void resumed();
-
-protected:
- virtual void setFullscreen(bool fullscreen) = 0;
- virtual void setLive(const bool) = 0;
- virtual void appendPromptSession(const std::shared_ptr<mir::scene::PromptSession>& session) = 0;
- virtual void removePromptSession(const std::shared_ptr<mir::scene::PromptSession>& session) = 0;
-
- friend class SessionManager;
};
} // namespace qtmir
+Q_DECLARE_METATYPE(qtmir::SessionInterface*)
#endif // SESSION_INTERFACE_H