diff options
author | 2016-11-11 10:49:52 +0100 | |
---|---|---|
committer | 2016-11-11 10:49:52 +0100 | |
commit | 337319e30026b0bae453dc7363f27469fa2ab526 (patch) | |
tree | 6e6a50f7092a5b9941fa4b881211629ef2c2c9f7 | |
parent | 0afa95451dbca6b9ef4e50d0c12a6ac17e68f87c (diff) |
Add org.agl.homescreen function renderSurfaceToAreaAllowed.
This function can be used to request, if it is allowed to render a surface in a layout area in preparation of the real renderSurfaceToArea command. This call will not change anything, it is only a request.
Signed-off-by: Bocklage, Jens <Jens_Bocklage@mentor.com>
-rw-r--r-- | HomeScreen/src/homescreencontrolinterface.cpp | 12 | ||||
-rw-r--r-- | HomeScreen/src/homescreencontrolinterface.h | 7 | ||||
-rw-r--r-- | HomeScreen/src/layouthandler.cpp | 11 | ||||
-rw-r--r-- | HomeScreen/src/layouthandler.h | 3 | ||||
-rw-r--r-- | HomeScreen/src/mainwindow.cpp | 4 | ||||
-rw-r--r-- | SampleHomeScreenInterfaceApp/src/sampleclass.cpp | 5 | ||||
-rw-r--r-- | SampleHomeScreenInterfaceApp/src/sampleclass.hpp | 1 | ||||
-rw-r--r-- | interfaces/homescreen.xml | 14 | ||||
-rw-r--r-- | libhomescreen/include/libhomescreen.hpp | 3 | ||||
-rw-r--r-- | libhomescreen/src/libhomescreen.cpp | 21 |
10 files changed, 69 insertions, 12 deletions
diff --git a/HomeScreen/src/homescreencontrolinterface.cpp b/HomeScreen/src/homescreencontrolinterface.cpp index 71e4a2c..faf4b99 100644 --- a/HomeScreen/src/homescreencontrolinterface.cpp +++ b/HomeScreen/src/homescreencontrolinterface.cpp @@ -54,10 +54,16 @@ void HomeScreenControlInterface::hardKeyPressed(int key) } } -void HomeScreenControlInterface::renderSurfaceToArea(int surfaceId, const QRect &renderArea) +void HomeScreenControlInterface::renderSurfaceToArea(int surfaceId, int layoutArea) { - qDebug("requestSurfaceIdToFullScreen %d", surfaceId); - newRequestRenderSurfaceToArea(surfaceId, renderArea); + qDebug("renderSurfaceToArea %d %d", surfaceId, layoutArea); + newRequestRenderSurfaceToArea(surfaceId, layoutArea); +} + +bool HomeScreenControlInterface::renderSurfaceToAreaAllowed(int surfaceId, int layoutArea) +{ + qDebug("renderSurfaceToAreaAllowed %d %d", surfaceId, layoutArea); + return renderSurfaceToAreaAllowed(surfaceId, layoutArea); } void HomeScreenControlInterface::requestSurfaceIdToFullScreen(int surfaceId) diff --git a/HomeScreen/src/homescreencontrolinterface.h b/HomeScreen/src/homescreencontrolinterface.h index 27cf4e8..b202dc9 100644 --- a/HomeScreen/src/homescreencontrolinterface.h +++ b/HomeScreen/src/homescreencontrolinterface.h @@ -19,7 +19,8 @@ signals: QList<int> newRequestGetAllSurfacesOfProcess(int pid); int newRequestGetSurfaceStatus(int surfaceId); - void newRequestRenderSurfaceToArea(int surfaceId, const QRect &renderArea); + void newRequestRenderSurfaceToArea(int surfaceId, int layoutArea); + bool newRequestRenderSurfaceToAreaAllowed(int surfaceId, int layoutArea); void newRequestSurfaceIdToFullScreen(int surfaceId); //from homescreen_adapter.h @@ -27,9 +28,9 @@ public Q_SLOTS: // METHODS QList<int> getAllSurfacesOfProcess(int pid); int getSurfaceStatus(int surfaceId); void hardKeyPressed(int key); - void renderSurfaceToArea(int surfaceId, const QRect &renderArea); + void renderSurfaceToArea(int surfaceId, int layoutArea); + bool renderSurfaceToAreaAllowed(int surfaceId, int layoutArea); void requestSurfaceIdToFullScreen(int surfaceId); - private: HomescreenAdaptor *mp_homeScreenAdaptor; org::agl::appframework *mp_dBusAppFrameworkProxy; diff --git a/HomeScreen/src/layouthandler.cpp b/HomeScreen/src/layouthandler.cpp index 80f6cd1..58743d0 100644 --- a/HomeScreen/src/layouthandler.cpp +++ b/HomeScreen/src/layouthandler.cpp @@ -234,9 +234,16 @@ int LayoutHandler::requestGetSurfaceStatus(int surfaceId) return result; } -void LayoutHandler::requestRenderSurfaceToArea(int surfaceId, const QRect &renderArea) +void LayoutHandler::requestRenderSurfaceToArea(int surfaceId, int layoutArea) { - qDebug("requestRenderSurfaceToArea %d %d,%d,%d,%d", surfaceId, renderArea.x(), renderArea.y(), renderArea.width(), renderArea.height()); + qDebug("requestRenderSurfaceToArea %d %d", surfaceId, layoutArea); +} + +bool LayoutHandler::requestRenderSurfaceToAreaAllowed(int surfaceId, int layoutArea) +{ + qDebug("requestRenderSurfaceToAreaAllowed %d %d", surfaceId, layoutArea); + bool result = true; + return result; } void LayoutHandler::requestSurfaceIdToFullScreen(int surfaceId) diff --git a/HomeScreen/src/layouthandler.h b/HomeScreen/src/layouthandler.h index 7487be5..e51930b 100644 --- a/HomeScreen/src/layouthandler.h +++ b/HomeScreen/src/layouthandler.h @@ -25,7 +25,8 @@ private: public slots: QList<int> requestGetAllSurfacesOfProcess(int pid); int requestGetSurfaceStatus(int surfaceId); - void requestRenderSurfaceToArea(int surfaceId, const QRect &renderArea); + void requestRenderSurfaceToArea(int surfaceId, int layoutArea); + bool requestRenderSurfaceToAreaAllowed(int surfaceId, int layoutArea); void requestSurfaceIdToFullScreen(int surfaceId); void setLayoutByName(QString layoutName); diff --git a/HomeScreen/src/mainwindow.cpp b/HomeScreen/src/mainwindow.cpp index e1a8371..82336ca 100644 --- a/HomeScreen/src/mainwindow.cpp +++ b/HomeScreen/src/mainwindow.cpp @@ -105,8 +105,8 @@ MainWindow::MainWindow(QWidget *parent) : QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestGetAllSurfacesOfProcess(int)), mp_layoutHandler, SLOT(requestGetAllSurfacesOfProcess(int))); QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestGetSurfaceStatus(int)), mp_layoutHandler, SLOT(requestGetSurfaceStatus(int))); QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestsToBeVisibleApp(int)), mp_layoutHandler, SLOT(makeMeVisible(int))); - QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestSurfaceIdToFullScreen(int)), mp_layoutHandler, SLOT(requestSurfaceIdToFullScreen(int))); - QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestRenderSurfaceToArea(int, QRect)), mp_layoutHandler, SLOT(requestRenderSurfaceToArea(int,QRect))); + QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestRenderSurfaceToArea(int, int)), mp_layoutHandler, SLOT(requestRenderSurfaceToArea(int,int))); + QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestRenderSurfaceToAreaAllowed(int, int)), mp_layoutHandler, SLOT(requestRenderSurfaceToAreaAllowed(int,int))); QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestSurfaceIdToFullScreen(int)), mp_layoutHandler, SLOT(requestSurfaceIdToFullScreen(int))); QObject::connect(mp_popupWidget, SIGNAL(comboBoxResult(QString)), mp_layoutHandler, SLOT(setLayoutByName(QString))); diff --git a/SampleHomeScreenInterfaceApp/src/sampleclass.cpp b/SampleHomeScreenInterfaceApp/src/sampleclass.cpp index bc39af9..86b5943 100644 --- a/SampleHomeScreenInterfaceApp/src/sampleclass.cpp +++ b/SampleHomeScreenInterfaceApp/src/sampleclass.cpp @@ -31,6 +31,11 @@ void SampleClass::renderSurfaceToArea(int surfaceId, int layoutArea) mp_libHomeScreen->renderSurfaceToArea(surfaceId, layoutArea); } +bool SampleClass::renderSurfaceToAreaAllowed(int surfaceId, int layoutArea) +{ + return mp_libHomeScreen->renderSurfaceToAreaAllowed(surfaceId, layoutArea); +} + void SampleClass::requestSurfaceIdToFullScreen(int surfaceId) { mp_libHomeScreen->requestSurfaceIdToFullScreen(surfaceId); diff --git a/SampleHomeScreenInterfaceApp/src/sampleclass.hpp b/SampleHomeScreenInterfaceApp/src/sampleclass.hpp index 9293843..3e80117 100644 --- a/SampleHomeScreenInterfaceApp/src/sampleclass.hpp +++ b/SampleHomeScreenInterfaceApp/src/sampleclass.hpp @@ -14,6 +14,7 @@ public: int getSurfaceStatus(int surfaceId); void hardKeyPressed(int key); void renderSurfaceToArea(int surfaceId, int layoutArea); + bool renderSurfaceToAreaAllowed(int surfaceId, int layoutArea); void requestSurfaceIdToFullScreen(int surfaceId); private: diff --git a/interfaces/homescreen.xml b/interfaces/homescreen.xml index 999b0e9..95e84a6 100644 --- a/interfaces/homescreen.xml +++ b/interfaces/homescreen.xml @@ -63,6 +63,20 @@ <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QList<int>"/> </method> <!-- + renderSurfaceToAreaAllowed: + @surfaceId: The surface that is requested. + @layoutArea: The layout area where the surface shall be rendered. + @allowed: Returns true, if the surface is allowed to be rendered in the area + + This function can be used to request, if it is allowed to render a surface in a layout area in preparation + of the real renderSurfaceToArea command. This call will not change anything, it is only a request. + --> + <method name="renderSurfaceToAreaAllowed"> + <arg name="surfaceId" type="i" direction="in"/> + <arg name="layoutArea" type="i" direction="in"/> + <arg name="allowed" type="b" direction="out"/> + </method> + <!-- renderSurfaceToArea: @surfaceId: The surface that is requested. @layoutArea: The layout area where the surface shall be rendered. diff --git a/libhomescreen/include/libhomescreen.hpp b/libhomescreen/include/libhomescreen.hpp index f88b35f..6ec843f 100644 --- a/libhomescreen/include/libhomescreen.hpp +++ b/libhomescreen/include/libhomescreen.hpp @@ -26,10 +26,11 @@ public: int getSurfaceStatus(int surfaceId); void hardKeyPressed(int key); void renderSurfaceToArea(int surfaceId, int layoutArea); + bool renderSurfaceToAreaAllowed(int surfaceId, int layoutArea); void requestSurfaceIdToFullScreen(int surfaceId); - private: LibHomeScreenHomescreen *mp_libHomeScreenHomescreen_Proxy; }; #endif // LIBHOMESCREEN_HPP + diff --git a/libhomescreen/src/libhomescreen.cpp b/libhomescreen/src/libhomescreen.cpp index 374cfe8..03c4baf 100644 --- a/libhomescreen/src/libhomescreen.cpp +++ b/libhomescreen/src/libhomescreen.cpp @@ -122,6 +122,27 @@ void LibHomeScreen::renderSurfaceToArea(int surfaceId, int layoutArea) } } +bool LibHomeScreen::renderSurfaceToAreaAllowed(int surfaceId, int layoutArea) +{ + gboolean result = true; + GError *err = NULL; + + lib_home_screen_homescreen_call_render_surface_to_area_allowed_sync( + mp_libHomeScreenHomescreen_Proxy, + surfaceId, + layoutArea, + &result, + NULL, + &err); + + if (NULL != err) + { + fprintf(stderr, "Unable to call renderSurfaceToArea: %s\n", err->message); + } + + return result; +} + void LibHomeScreen::requestSurfaceIdToFullScreen(int surfaceId) { GError *err = NULL; |