diff options
Diffstat (limited to 'src/modules/Unity/Application/session_interface.h')
-rw-r--r-- | src/modules/Unity/Application/session_interface.h | 54 |
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 |