Reworking layer/surface management
[staging/HomeScreen.git] / WindowManager / src / windowmanager.hpp
index 30affd6..70ae31a 100644 (file)
 #include <QList>
 #include <QMap>
 
-#include "windowmanager_adapter.h"
-
+#include "windowmanager_adaptor.h"
 
 #ifdef HAVE_IVI_LAYERMANAGEMENT_API
-extern "C" {
 #include <ilm/ilm_control.h>
-}
 #endif
-
 class WindowManager : public QObject
 {
     Q_OBJECT
 
 public:
-    explicit WindowManager(QObject *parent = 0);
+    explicit WindowManager(int displayId, QObject *parent = 0);
     ~WindowManager();
 
     void start();
 private:
     WindowmanagerAdaptor *mp_windowManagerAdaptor;
     QList<Layout> m_layouts;
-    QList<int> m_surfaces;
     QMap<int, unsigned int> *mp_layoutAreaToSurfaceIdAssignment;
 
     int m_currentLayout;
 
+    int m_screenId;
+    unsigned int m_screenWidth;
+    unsigned int m_screenHeight;
+
     void dumpScene();
 
 #ifdef HAVE_IVI_LAYERMANAGEMENT_API
-    void createNewLayer(int layerId);
-    void addSurfaceToLayer(int surfaceId, int layerId);
+    t_ilm_layer* m_showLayers;
+    QMap<pid_t, t_ilm_surface> m_appSurfaces;
+    QMap<pid_t, t_ilm_layer> m_appLayers;
+    int getLayerRenderOrder(t_ilm_layer* id_array);
+
+    void createNewLayer(const int layerId);
+
+    t_ilm_layer getAppLayerID(const pid_t pid);
+
+    pid_t m_pending_to_show;
+
+    void addSurface(const t_ilm_surface surfaceId);
+    t_ilm_layer addSurfaceToAppLayer(pid_t pid, const int surfaceId);
+    void addSurfaceToLayer(const int surfaceId, const int layerId);
+
+    void configureHomeScreenMainSurface(const t_ilm_surface surface, const t_ilm_int width, const t_ilm_int height);
+    void configureAppSurface(const pid_t pid, const t_ilm_surface surface, const t_ilm_int width, const t_ilm_int height);
 #endif
     void updateScreen();
 
@@ -82,7 +96,7 @@ public:
 public slots:
 
 
-// from windowmanager_adapter.h
+// from windowmanager_adaptor.h
 public: // PROPERTIES
     Q_PROPERTY(int layoutId READ layoutId)
     int layoutId() const;
@@ -94,19 +108,19 @@ public Q_SLOTS: // METHODS
     int addLayout(int layoutId, const QString &layoutName, const QList<LayoutArea> &surfaceAreas);
     int deleteLayoutById(int layoutId);
     QList<Layout> getAllLayouts();
-    QList<int> getAllSurfacesOfProcess(int pid);
+  //    QList<int> getAllSurfacesOfProcess(int pid);
     QList<int> getAvailableLayouts(int numberOfAppSurfaces);
-    QList<int> getAvailableSurfaces();
+  //    QList<int> getAvailableSurfaces();
     QString getLayoutName(int layoutId);
     void hideLayer(int layer);
     int setLayoutById(int layoutId);
     int setLayoutByName(const QString &layoutName);
     int setSurfaceToLayoutArea(int surfaceId, int layoutAreaId);
     void showLayer(int layer);
+    void showAppLayer(int pid);
 
 Q_SIGNALS: // SIGNALS
     void surfaceVisibilityChanged(int surfaceId, bool visible);
 };
 
-
 #endif // WINDOWMANAGER_HPP