X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=HomeScreen%2Fsrc%2Flayouthandler.cpp;h=4738f8ed647795fb235219b328c85ab85a49c106;hb=da604bd27fd3a7b6838b57b8b4c79647ca12722a;hp=510953635b3c19b20a03d1910edef83b319174cf;hpb=6130b67afe48de7eb0e4594d3210963b88e93fe5;p=staging%2FHomeScreen.git diff --git a/HomeScreen/src/layouthandler.cpp b/HomeScreen/src/layouthandler.cpp index 5109536..4738f8e 100644 --- a/HomeScreen/src/layouthandler.cpp +++ b/HomeScreen/src/layouthandler.cpp @@ -33,93 +33,41 @@ LayoutHandler::LayoutHandler(QObject *parent) : "org.agl.windowmanager", "surfaceVisibilityChanged", this, - SLOT(surfaceVisibilityChanged(int,bool))); -} - -LayoutHandler::~LayoutHandler() -{ - delete mp_dBusPopupProxy; - delete mp_dBusWindowManagerProxy; -} + SIGNAL(surfaceVisibilityChanged(int,bool))); -void LayoutHandler::setUpLayouts() -{ - qDebug("setUpLayouts"); QList surfaceAreas; LayoutArea surfaceArea; const int SCREEN_WIDTH = 1080; const int SCREEN_HEIGHT = 1920; - const int STATUSBAR_HEIGHT = 60; - const int STATUSBAR_WIDTH = SCREEN_WIDTH; - const int STATUSBAR_X = 0; - const int STATUSBAR_Y = 0; - const int CONTROLBAR_HEIGHT = 60; - const int CONTROLBAR_WIDTH = SCREEN_WIDTH; - const int CONTROLBAR_X = 0; - const int CONTROLBAR_Y = SCREEN_HEIGHT - CONTROLBAR_HEIGHT; + const int TOPAREA_HEIGHT = 218; + const int TOPAREA_WIDTH = SCREEN_WIDTH; + const int TOPAREA_X = 0; + const int TOPAREA_Y = 0; + const int MEDIAAREA_HEIGHT = 215; + const int MEDIAAREA_WIDTH = SCREEN_WIDTH; + const int MEDIAAREA_X = 0; + const int MEDIAAREA_Y = SCREEN_HEIGHT - MEDIAAREA_HEIGHT; // only one Layout for CES2017 needed // layout 1: // one app surface, statusbar, control bar surfaceArea.x = 0; - surfaceArea.y = STATUSBAR_HEIGHT; + surfaceArea.y = TOPAREA_HEIGHT; surfaceArea.width = SCREEN_WIDTH; - surfaceArea.height = SCREEN_HEIGHT - STATUSBAR_HEIGHT - CONTROLBAR_HEIGHT; + surfaceArea.height = SCREEN_HEIGHT - TOPAREA_HEIGHT - MEDIAAREA_HEIGHT; surfaceAreas.append(surfaceArea); mp_dBusWindowManagerProxy->addLayout(1, "one app", surfaceAreas); +} - /* - surfaceAreas.clear(); - - // layout 2: - // two app surfaces (one on top of the other), statusbar, control bar - - // top surface - surfaceArea.x = 0; - surfaceArea.y = STATUSBAR_HEIGHT; - surfaceArea.width = SCREEN_WIDTH; - surfaceArea.height = (SCREEN_HEIGHT - STATUSBAR_HEIGHT - CONTROLBAR_HEIGHT) / 2; - - surfaceAreas.append(surfaceArea); - - // bottom surface - surfaceArea.x = 0; - surfaceArea.y = SCREEN_HEIGHT / 2; - surfaceArea.width = SCREEN_WIDTH; - surfaceArea.height = (SCREEN_HEIGHT - STATUSBAR_HEIGHT - CONTROLBAR_HEIGHT) / 2; - - surfaceAreas.append(surfaceArea); - - mp_dBusWindowManagerProxy->addLayout(2, "top on bottom", surfaceAreas); - - - surfaceAreas.clear(); - - // layout 3: - // two app surfaces (one besides the other), statusbar, control bar - - // left surface - surfaceArea.x = 0; - surfaceArea.y = STATUSBAR_HEIGHT; - surfaceArea.width = SCREEN_WIDTH / 2; - surfaceArea.height = SCREEN_HEIGHT - STATUSBAR_HEIGHT - CONTROLBAR_HEIGHT; - - surfaceAreas.append(surfaceArea); - - // right surface - surfaceArea.x = SCREEN_WIDTH / 2; - surfaceArea.y = STATUSBAR_HEIGHT; - surfaceArea.width = SCREEN_WIDTH / 2; - surfaceArea.height = SCREEN_HEIGHT - STATUSBAR_HEIGHT - CONTROLBAR_HEIGHT; - - surfaceAreas.append(surfaceArea); - - mp_dBusWindowManagerProxy->addLayout(3, "side by side", surfaceAreas);*/ +LayoutHandler::~LayoutHandler() +{ + delete mp_dBusPopupProxy; + delete mp_dBusWindowManagerProxy; } void LayoutHandler::showAppLayer() @@ -138,15 +86,23 @@ void LayoutHandler::makeMeVisible(int pid) { qDebug("makeMeVisible %d", pid); - m_requestsToBeVisiblePids.append(pid); + // if app does not request to be visible + if (-1 == m_requestsToBeVisiblePids.indexOf(pid)) + { + m_requestsToBeVisiblePids.append(pid); - // callback every second - if (-1 != m_secondsTimerId) + // callback every second + if (-1 != m_secondsTimerId) + { + killTimer(m_secondsTimerId); + m_secondsTimerId = -1; + } + m_secondsTimerId = startTimer(1000); + } + else { - killTimer(m_secondsTimerId); - m_secondsTimerId = -1; + checkToDoQueue(); } - m_secondsTimerId = startTimer(1000); } void LayoutHandler::checkToDoQueue() @@ -175,41 +131,52 @@ void LayoutHandler::checkToDoQueue() if (0 != allSurfaces.size()) { - if (-1 == m_visibleSurfaces.indexOf(allSurfaces.at(0))) + int firstSurface = allSurfaces.at(0); + + if (-1 != m_visibleSurfaces.indexOf(firstSurface)) { qDebug("already visible"); } - if (-1 == m_invisibleSurfaces.indexOf(allSurfaces.at(0))) - { - m_invisibleSurfaces.removeAt(m_invisibleSurfaces.indexOf(allSurfaces.at(0))); - } - if (-1 == m_requestsToBeVisibleSurfaces.indexOf(allSurfaces.at(0))) + else { - m_requestsToBeVisibleSurfaces.append(allSurfaces.at(0)); - } + if (-1 != m_invisibleSurfaces.indexOf(firstSurface)) + { + m_invisibleSurfaces.removeAt(m_invisibleSurfaces.indexOf(firstSurface)); + } + if (-1 == m_requestsToBeVisibleSurfaces.indexOf(firstSurface)) + { + m_requestsToBeVisibleSurfaces.append(firstSurface); + } - qDebug("m_visibleSurfaces %d", m_visibleSurfaces.size()); - qDebug("m_invisibleSurfaces %d", m_invisibleSurfaces.size()); - qDebug("m_requestsToBeVisibleSurfaces %d", m_requestsToBeVisibleSurfaces.size()); + qDebug("before"); + qDebug(" m_visibleSurfaces %d", m_visibleSurfaces.size()); + qDebug(" m_invisibleSurfaces %d", m_invisibleSurfaces.size()); + qDebug(" m_requestsToBeVisibleSurfaces %d", m_requestsToBeVisibleSurfaces.size()); - QList availableLayouts = mp_dBusWindowManagerProxy->getAvailableLayouts(1); // one app only for CES2017 - if (1 == availableLayouts.size()) - { - qDebug("active layout: %d", availableLayouts.at(0)); - m_invisibleSurfaces.append(m_visibleSurfaces); - m_visibleSurfaces.clear(); - m_visibleSurfaces.append(m_requestsToBeVisibleSurfaces); - m_requestsToBeVisibleSurfaces.clear(); - - mp_dBusWindowManagerProxy->setLayoutById(availableLayouts.at(0)); - for (int i = 0; i < m_visibleSurfaces.size(); ++i) + QList availableLayouts = mp_dBusWindowManagerProxy->getAvailableLayouts(1); // one app only for CES2017 + if (1 == availableLayouts.size()) { - mp_dBusWindowManagerProxy->setSurfaceToLayoutArea(m_visibleSurfaces.at(i), i); + qDebug("active layout: %d", availableLayouts.at(0)); + m_invisibleSurfaces.append(m_visibleSurfaces); + m_visibleSurfaces.clear(); + m_visibleSurfaces.append(m_requestsToBeVisibleSurfaces); + m_requestsToBeVisibleSurfaces.clear(); + + mp_dBusWindowManagerProxy->setLayoutById(availableLayouts.at(0)); + for (int i = 0; i < m_visibleSurfaces.size(); ++i) + { + mp_dBusWindowManagerProxy->setSurfaceToLayoutArea(m_visibleSurfaces.at(i), i); + } + + qDebug("after"); + qDebug(" m_visibleSurfaces %d", m_visibleSurfaces.size()); + qDebug(" m_invisibleSurfaces %d", m_invisibleSurfaces.size()); + qDebug(" m_requestsToBeVisibleSurfaces %d", m_requestsToBeVisibleSurfaces.size()); + } + else + { + qDebug("this should not happen!?"); } - } - else - { - qDebug("this should not happen!?"); } } }