Add support for webapp call appcontrol request
authorAmith Kumar Mahale <amith.m@samsung.com>
Thu, 28 Mar 2013 09:56:35 +0000 (15:26 +0530)
committerAmith Kumar Mahale <amith.m@samsung.com>
Thu, 28 Mar 2013 09:56:35 +0000 (15:26 +0530)
Change-Id: I1664a1c0affc9e6d75d1dc2cf1875b121b560cc9
Signed-off-by: Amith Kumar Mahale <amith.m@samsung.com>
inc/CallApp.h
src/CallApp.cpp

index 3e55fcb..0516a99 100644 (file)
@@ -75,6 +75,9 @@ public:
 private:
        //internal function to process AppControl request.
        void ProcessAppControlRequest(RequestId reqId, const Tizen::Base::String& operationId,const Tizen::Base::Collection::IMap* pArgsMap);
+       //internal function to process AppControl request.
+       void ProcessWebAppControlRequest(RequestId reqId, const Tizen::Base::String& operationId,const Tizen::Base::String* pUriData);
+
        //internal function to handle AppControl Request for Incoming call.
        void HandleIncomingCallAppControlRequest(RequestId reqId,const Tizen::Base::Collection::IMap* pArgsMap);
        //internal function to handle AppControl Request for dial call.
index be2b3f3..3eb01cf 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <FUi.h>
+#include <FShell.h>
 #include "CallApp.h"
 #include "CallAppFrame.h"
 #include "CallPresentationModel.h"
@@ -22,6 +23,7 @@ using namespace Tizen::Ui::Scenes;
 using namespace Tizen::Base::Utility;
 using namespace Tizen::Base::Collection;
 using namespace Tizen::Base::Utility;
+using namespace Tizen::Shell;
 
 
 CallApp::CallApp(void):__initialSceneId(L""), __pLaunchArgs(null)
@@ -174,13 +176,55 @@ void
 CallApp::OnAppControlRequestReceived(RequestId reqId, const String& operationId, const String* pUriData,
                const String* pMimeType, const IMap* pExtraData)
 {
-       AppLogDebug("ENTER");
-       //process AppControl parameters
-       ProcessAppControlRequest(reqId, operationId, pExtraData);
+       if(pExtraData == null && pUriData != null)
+       {
+               //The request is from web app
+               AppLogDebug("%ls",pUriData->GetPointer());
+               ProcessWebAppControlRequest(reqId, operationId, pUriData);
+       }
+       else
+       {
+               //process AppControl parameters
+               ProcessAppControlRequest(reqId, operationId, pExtraData);
+       }
        AppLogDebug("EXIT");
 }
 
 void
+CallApp::ProcessWebAppControlRequest(RequestId reqId, const String& operationId,const String* pUriData)
+{
+       //Construct map from string
+       String delim(DELIMITER);
+       StringTokenizer st(*pUriData,delim);
+       String token;
+       HashMap extraData;
+       extraData.Construct();
+       while(st.HasMoreTokens())
+       {
+               String key=L"";
+               String value=L"";
+               st.GetNextToken(token);
+               token.Trim();
+               key.Append(token);
+               if(st.HasMoreTokens())
+               {
+                       token.Clear();
+                       st.GetNextToken(token);
+                       token.Trim();
+                       value.Append(token);
+               }
+               extraData.Add(new (std::nothrow) String(key), new (std::nothrow) String(value));
+       }
+
+       //Adding this explicitly as there no other way to invoke call from webapp
+       extraData.Add(new (std::nothrow) String(PARAM_CALL_TYPE), new (std::nothrow) String(PARAM_CALL_VALUE_VOICE));
+
+       ProcessAppControlRequest(reqId,operationId,&extraData);
+
+       extraData.RemoveAll(true);
+}
+
+void
 CallApp::ProcessAppControlRequest(RequestId reqId, const String& operationId,const IMap* pArgsMap)
 {
        AppLogDebug("Enter %ls",operationId.GetPointer());
@@ -450,7 +494,7 @@ CallApp::SetTopMostWindow(bool bTopMost)
        //this case
        if(bTopMost == true)
        {
-               GetAppFrame()->GetFrame()->SetZOrderGroup(WINDOW_Z_ORDER_GROUP_HIGH);
+               GetAppFrame()->GetFrame()->SetZOrderGroup(WINDOW_Z_ORDER_GROUP_HIGHEST);
                if(PowerManager::IsScreenOn() == false)
                {
                        res = PowerManager::TurnScreenOn();