New layer management in WindowManager. Three layers are created. One for the HomeScre...
[staging/HomeScreen.git] / HomeScreen / src / layouthandler.cpp
index 81bc106..3bfe533 100644 (file)
@@ -4,14 +4,16 @@ LayoutHandler::LayoutHandler(QObject *parent) :
     QObject(parent),
     mp_dBusWindowManagerProxy(0),
     mp_dBusPopupProxy(0),
-    m_visibleApps(),
-    m_invisibleApps(),
-    m_requestsToBeVisibleApps()
+    m_visibleSurfaces(),
+    m_invisibleSurfaces(),
+    m_requestsToBeVisibleSurfaces()
 {
     qDBusRegisterMetaType<SimplePoint>();
     qDBusRegisterMetaType<QList<SimplePoint> >();
-    qDBusRegisterMetaType<SimpleRect>();
-    qDBusRegisterMetaType<QList<SimpleRect> >();
+    qDBusRegisterMetaType<LayoutArea>();
+    qDBusRegisterMetaType<QList<LayoutArea> >();
+    qDBusRegisterMetaType<Layout>();
+    qDBusRegisterMetaType<QList<Layout> >();
 
     qDebug("D-Bus: connect to org.agl.windowmanager /windowmanager");
     mp_dBusWindowManagerProxy = new org::agl::windowmanager("org.agl.windowmanager",
@@ -34,10 +36,8 @@ LayoutHandler::~LayoutHandler()
 void LayoutHandler::setUpLayouts()
 {
     qDebug("setUpLayouts");
-    QList<SimpleRect> surfaceAreas;
-    SimpleRect surfaceArea;
-    bool isFullScreen;
-    int associatedFullScreenLayout;
+    QList<LayoutArea> surfaceAreas;
+    LayoutArea surfaceArea;
 
     const int SCREEN_WIDTH = 1080;
     const int SCREEN_HEIGHT = 1920;
@@ -61,10 +61,7 @@ void LayoutHandler::setUpLayouts()
 
     surfaceAreas.append(surfaceArea);
 
-    isFullScreen = false;
-    associatedFullScreenLayout = 4;
-
-    mp_dBusWindowManagerProxy->addLayout(1, "one app", isFullScreen, associatedFullScreenLayout, surfaceAreas);
+    mp_dBusWindowManagerProxy->addLayout(1, "one app", surfaceAreas);
 
 
     surfaceAreas.clear();
@@ -88,10 +85,7 @@ void LayoutHandler::setUpLayouts()
 
     surfaceAreas.append(surfaceArea);
 
-    isFullScreen = false;
-    associatedFullScreenLayout = -1;
-
-    mp_dBusWindowManagerProxy->addLayout(2, "top on bottom", isFullScreen, associatedFullScreenLayout, surfaceAreas);
+    mp_dBusWindowManagerProxy->addLayout(2, "top on bottom", surfaceAreas);
 
 
     surfaceAreas.clear();
@@ -115,72 +109,48 @@ void LayoutHandler::setUpLayouts()
 
     surfaceAreas.append(surfaceArea);
 
-    isFullScreen = false;
-    associatedFullScreenLayout = -1;
-
-    mp_dBusWindowManagerProxy->addLayout(3, "side by side", isFullScreen, associatedFullScreenLayout, surfaceAreas);
-
-
-    surfaceAreas.clear();
-
-    // layout 4:
-    // one app surface full screen, no statusbar, no control bar
-    surfaceArea.x = 0;
-    surfaceArea.y = 0;
-    surfaceArea.width = SCREEN_WIDTH;
-    surfaceArea.height = SCREEN_HEIGHT;
-
-    surfaceAreas.append(surfaceArea);
-
-    isFullScreen = true;
-    associatedFullScreenLayout = 1;
-
-    mp_dBusWindowManagerProxy->addLayout(4, "one app full screen", isFullScreen, associatedFullScreenLayout, surfaceAreas);
-
-
-    surfaceAreas.clear();
-
+    mp_dBusWindowManagerProxy->addLayout(3, "side by side", surfaceAreas);
 }
 
-void LayoutHandler::makeMeVisible(int pid)
+void LayoutHandler::makeMeVisible(int surfaceId)
 {
-    qDebug("makeMeVisible %d", pid);
-    m_requestsToBeVisibleApps.append(pid);
+    qDebug("makeMeVisible %d", surfaceId);
+    m_requestsToBeVisibleSurfaces.append(surfaceId);
 
-    qDebug("m_visibleApps %d", m_visibleApps.size());
-    qDebug("m_invisibleApps %d", m_invisibleApps.size());
-    qDebug("m_requestsToBeVisibleApps %d", m_requestsToBeVisibleApps.size());
+    qDebug("m_visibleSurfaces %d", m_visibleSurfaces.size());
+    qDebug("m_invisibleSurfaces %d", m_invisibleSurfaces.size());
+    qDebug("m_requestsToBeVisibleSurfaces %d", m_requestsToBeVisibleSurfaces.size());
 
-    QList<int> availableLayouts = mp_dBusWindowManagerProxy->getAvailableLayouts(m_visibleApps.size() + m_requestsToBeVisibleApps.size());
+    QList<int> availableLayouts = mp_dBusWindowManagerProxy->getAvailableLayouts(m_visibleSurfaces.size() + m_requestsToBeVisibleSurfaces.size());
     if (0 == availableLayouts.size())
     {
         // no layout fits the need!
         // replace the last app
         qDebug("no layout fits the need!");
-        qDebug("replace the last app");
+        qDebug("replace the last surface");
 
-        m_invisibleApps.append(m_visibleApps.last());
-        m_visibleApps.removeLast();
+        m_invisibleSurfaces.append(m_visibleSurfaces.last());
+        m_visibleSurfaces.removeLast();
 
-        m_visibleApps.append(m_requestsToBeVisibleApps);
-        m_requestsToBeVisibleApps.clear();
+        m_visibleSurfaces.append(m_requestsToBeVisibleSurfaces);
+        m_requestsToBeVisibleSurfaces.clear();
 
-        for (int i = 0; i < m_visibleApps.size(); ++i)
+        for (int i = 0; i < m_visibleSurfaces.size(); ++i)
         {
-            mp_dBusWindowManagerProxy->setPidToLayoutArea(m_visibleApps.at(i), i);
+            mp_dBusWindowManagerProxy->setSurfaceToLayoutArea(m_visibleSurfaces.at(i), i);
         }
     }
     if (1 == availableLayouts.size())
     {
         // switch to new layout
         qDebug("switch to new layout %d", availableLayouts.at(0));
-        m_visibleApps.append(m_requestsToBeVisibleApps);
-        m_requestsToBeVisibleApps.clear();
+        m_visibleSurfaces.append(m_requestsToBeVisibleSurfaces);
+        m_requestsToBeVisibleSurfaces.clear();
 
         mp_dBusWindowManagerProxy->setLayoutById(availableLayouts.at(0));
-        for (int i = 0; i < m_visibleApps.size(); ++i)
+        for (int i = 0; i < m_visibleSurfaces.size(); ++i)
         {
-            mp_dBusWindowManagerProxy->setPidToLayoutArea(m_visibleApps.at(i), i);
+            mp_dBusWindowManagerProxy->setSurfaceToLayoutArea(m_visibleSurfaces.at(i), i);
         }
     }
     if (1 < availableLayouts.size())
@@ -202,32 +172,18 @@ void LayoutHandler::makeMeVisible(int pid)
 void LayoutHandler::toggleFullscreen()
 {
     qDebug("toggleFullscreen");
-    int currentLayout = mp_dBusWindowManagerProxy->getLayout();
-    int associatedFullScreenLayout = mp_dBusWindowManagerProxy->getAssociatedFullScreenLayout(currentLayout);
-    if (-1 != associatedFullScreenLayout)
-    {
-        mp_dBusWindowManagerProxy->setLayoutById(associatedFullScreenLayout);
-        for (int i = 0; i < m_visibleApps.size(); ++i)
-        {
-            mp_dBusWindowManagerProxy->setPidToLayoutArea(m_visibleApps.at(i), i);
-        }
-    }
-    else
-    {
-        qDebug("no associatedFullScreenLayout. Cannot switch to full screen.");
-    }
 }
 
 void LayoutHandler::setLayoutByName(QString layoutName)
 {
     // switch to new layout
     qDebug("setLayout: switch to new layout %s", layoutName.toStdString().c_str());
-    m_visibleApps.append(m_requestsToBeVisibleApps);
-    m_requestsToBeVisibleApps.clear();
+    m_visibleSurfaces.append(m_requestsToBeVisibleSurfaces);
+    m_requestsToBeVisibleSurfaces.clear();
 
     mp_dBusWindowManagerProxy->setLayoutByName(layoutName);
-    for (int i = 0; i < m_visibleApps.size(); ++i)
+    for (int i = 0; i < m_visibleSurfaces.size(); ++i)
     {
-        mp_dBusWindowManagerProxy->setPidToLayoutArea(i, i);
+        mp_dBusWindowManagerProxy->setSurfaceToLayoutArea(i, i);
     }
 }