Add to support a multi-window mode
authorSunwook Bae <sunwook45.bae@samsung.com>
Fri, 27 Sep 2013 12:35:01 +0000 (21:35 +0900)
committerSunwook Bae <sunwook45.bae@samsung.com>
Fri, 27 Sep 2013 12:51:42 +0000 (21:51 +0900)
Change-Id: I3fe207f4af975d63aafa9ec961a46342c98b40ac
Signed-off-by: Sunwook Bae <sunwook45.bae@samsung.com>
src/app/FApp_AppImpl.cpp
src/app/FApp_AppInfo.cpp
src/app/inc/FApp_AppInfo.h

index 3286d92..b7485b0 100644 (file)
@@ -82,6 +82,9 @@ namespace Tizen { namespace App
 
 _AppImpl* _AppImpl::__pAppImpl = null;
 bool _AppImpl::__isTerminationRequested = false;
+
+static const char TIZEN_APPCONTROL_DATA_MULTI_WINDOW[] = "http://tizen.org/appcontrol/data/multiwindow";
+
 #if 0
 static const int _DATACONTROL_PACKET_INDEX_APPID = 0;
 static const int _DATACONTROL_PACKET_INDEX_REQUESTTYPE = 1;
@@ -307,6 +310,23 @@ _AppImpl::OnService(service_s* service, void* user_data)
                        _AppInfo::SetParentWindowHandle(winId);
                        SysLog(NID_APP, "Saving window handle 0x%x.", winId);
                }
+
+               // set an appinfo value for multi-window mode
+               char* pBuf = null;
+               int errVal = service_get_extra_data(service, TIZEN_APPCONTROL_DATA_MULTI_WINDOW, &pBuf);
+               if (errVal == SERVICE_ERROR_NONE)
+               {
+                       if (!strcmp(pBuf, "on"))
+                       {
+                               _AppInfo::SetMultiWindow(true);
+                       }
+                       free(pBuf);
+               }
+               else
+               {
+                       SysLog(NID_APP, "It is failed to get multi-window value: %d", errVal);
+               }
+
                // call for callbacks
                // ptr to member function
                SysLogTag(NID_APP, "LAUNCH","[%ls:<RequestHandler and OnAppInitialized>:start]", _AppInfo::GetAppExecutableName().GetPointer());
index 86c0ec3..8cec93c 100644 (file)
@@ -106,6 +106,7 @@ _AppInfo::_AppInfo(void)
        , __isPackageInfoInitialized(false)
        , __isSubMode(false)
        , __isVirtualRoot(false)
+       , __isMultiWindow(false)
 {
        SysStaticAssert(sizeof(pid_t) == sizeof(int));
 
@@ -470,4 +471,16 @@ _AppInfo::UpdatePackageInfo(bool update)
        GetInstance()->__isPackageInfoInitialized = !update;
 }
 
+bool
+_AppInfo::IsMultiWindow(void)
+{
+       return GetInstance()->__isMultiWindow;
+}
+
+void
+_AppInfo::SetMultiWindow(bool enable)
+{
+       GetInstance()->__isMultiWindow = enable;
+}
+
 }} // Tizen::App
index f44c0c8..48bfd3b 100644 (file)
@@ -200,6 +200,18 @@ public:
         */
        static void UpdatePackageInfo(bool update);
 
+       /**
+        * Checkes whether the application is a multi-window mode or not.
+        *
+        * @return      @true if the multi-window mode is on else false
+        */
+       static bool IsMultiWindow(void);
+
+       /**
+        * Sets the multi-window mode.
+        */
+       static void SetMultiWindow(bool enable);
+
        _OSP_LOCAL_ result Construct(void);
 
        _OSP_LOCAL_ result Construct(const char* appId, const char* appRoot, _AppType type = _APP_TYPE_UI_APP);
@@ -227,6 +239,7 @@ private:
        bool    __isPackageInfoInitialized;
        bool    __isSubMode;
        bool    __isVirtualRoot;
+       bool    __isMultiWindow;
 }; // _AppInfo
 
 }} // Tizen::App