supporting camera, camcorder, in onselectuploadfile
authorBINDUCHAITANYA TUMMALA <bc.tummala@samsung.com>
Thu, 20 Jun 2013 10:46:56 +0000 (16:16 +0530)
committerBINDUCHAITANYA TUMMALA <bc.tummala@samsung.com>
Thu, 20 Jun 2013 12:11:37 +0000 (17:41 +0530)
Change-Id: Ib45c7d9fe68165a1e454bb1dd2e03c952d033f0c
Signed-off-by: BINDUCHAITANYA TUMMALA <bc.tummala@samsung.com>
src/controls/FWebCtrl_AppControlListener.cpp
src/controls/FWebCtrl_AppControlListener.h
src/controls/FWebCtrl_WebImpl.cpp

index 16e4ade..995f0ca 100755 (executable)
@@ -122,7 +122,7 @@ _MediaSelectionListener::~_MediaSelectionListener(void)
 void
 _MediaSelectionListener::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& providerId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pAppData)
 {
-       SysTryReturnVoidResult(NID_WEB_CTRL, pAppData &&  providerId == L"tizen.filemanager" && operationId == L"http://tizen.org/appcontrol/operation/pick", E_INVALID_ARG, "[E_INVALID_ARG] Invalid arguments to _MediaSelectionListener::OnAppControlCompleted");
+       SysTryReturnVoidResult(NID_WEB_CTRL, pAppData, E_INVALID_ARG, "[E_INVALID_ARG] Invalid arguments to _MediaSelectionListener::OnAppControlCompleted");
 
        Eina_List* pSelectedFileNames = null;
        int fileCount = 0;
@@ -134,7 +134,7 @@ _MediaSelectionListener::OnAppControlCompleteResponseReceived(const Tizen::App::
 
        for (int i = 0; i < fileCount; i++)
        {
-               std::unique_ptr<String> pFile((String*)pSelectedFiles->GetAt(i));
+               String* pFile = static_cast<String*>(pSelectedFiles->GetAt(i));
                SysTryCatch(NID_WEB_CTRL, pFile, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
                std::unique_ptr<ByteBuffer> pByteBuf(StringUtil::StringToUtf8N(*pFile));
index 4aa278a..131c70e 100755 (executable)
@@ -85,7 +85,7 @@ public:
 
        virtual ~_MediaSelectionListener(void);
 
-       void Construct(Evas_Object* pWebFrame, Tizen::App::AppControl* pMediaAppControl);
+       void Construct(Evas_Object* pWebFrame, Tizen::App::AppControl* pMediaAppControl = null);
 
        void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
 
index 05f732c..205dc35 100755 (executable)
@@ -1659,64 +1659,85 @@ OnWebPageBlockSelectedByOrientation(void* pUserData, Evas_Object* pView, void* p
 Eina_Bool
 OnSelectUploadFile(Evas_Object* pView, Eina_Bool multipleFile, Eina_List* pAcceptTypes, const char* pCapture, void* pUserData)
 {
-       String isMultipleSelection(L"single");
-       result r = E_SUCCESS;
+       std::unique_ptr<_MediaSelectionListener> pMediaListener(new (std::nothrow) _MediaSelectionListener());
+       SysTryReturn(NID_WEB_CTRL, pMediaListener.get(), EINA_TRUE, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+       pMediaListener->Construct(pView);
 
-       HashMap dataList;
+       HashMap extraData;
+       result r = extraData.Construct();
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_TRUE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       String isMultipleSelection(L"single");
        String mode(L"selectionType");
        String type(L"type");
-       _AppControlImpl* pMediaAppControlImpl = null;
-
-       int itemCount = 0;
-       String fileType = L"all";
+       String fileType = L"*/*";
+       String operationId = L"http://tizen.org/appcontrol/operation/pick";
 
        if (multipleFile)
        {
                isMultipleSelection.Append(L"multiple");
        }
 
-       std::unique_ptr<AppControl> pMediaAppControl(_AppManagerImpl::FindAppControlN(L"tizen.filemanager", L"http://tizen.org/appcontrol/operation/pick"));
-       SysTryReturn(NID_WEB_CTRL, pMediaAppControl.get(), EINA_TRUE, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       std::unique_ptr<_MediaSelectionListener> pMediaListener(new (std::nothrow) _MediaSelectionListener());
-       SysTryReturn(NID_WEB_CTRL, pMediaListener.get(), EINA_TRUE, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       pMediaListener->Construct(pView, pMediaAppControl.get());
-
-       itemCount = eina_list_count(pAcceptTypes);
-
-       if (itemCount == 1)
+       if (eina_list_count(pAcceptTypes) == 1)
        {
                String item((char*)eina_list_nth(pAcceptTypes, 0));
+               String captureString(pCapture);
+
                if (item.StartsWith("image/",0))
                {
-                       fileType = L"image";
+                       if (captureString == L"camera")
+                       {
+                               fileType = L"image/jpg";
+                               operationId = L"http://tizen.org/appcontrol/operation/create_content";
+                               String typeKey = L"http://tizen.org/appcontrol/data/camera/allow_switch";
+                               String typeVal = L"false";
+                               extraData.Add(&typeKey, &typeVal);
+                       }
+                       else
+                       {
+                               fileType = L"image/*";
+                               String selectKey = L"http://tizen.org/appcontrol/data/selection_mode";
+                               extraData.Add(&selectKey, &isMultipleSelection);
+                       }
                }
                else if (item.StartsWith("audio/",0))
                {
-                       fileType = L"audio";
+                       fileType = L"audio/*";
+                       //TO DO: as microphone is not supported yet. suggest to throw an exception
+                       //if (captureString == L"microphone")
+                       //{
+                               //operationId = L"http://tizen.org/appcontrol/operation/create_content";
+                       //}
+                       //else
+                       //{
+                               String selectKey = L"http://tizen.org/appcontrol/data/selection_mode";
+                               extraData.Add(&selectKey, &isMultipleSelection);
+                       //}
                }
                else if (item.StartsWith("video/",0))
                {
-                       fileType = L"video";
+                       if (captureString == L"camcorder")
+                       {
+                               fileType = L"video/3gpp";
+                               operationId = L"http://tizen.org/appcontrol/operation/create_content";
+                               String typeKey = L"http://tizen.org/appcontrol/data/camera/allow_switch";
+                               String typeVal = L"false";
+                               extraData.Add(&typeKey, &typeVal);
+                       }
+                       else
+                       {
+                               fileType = L"video/*";
+                               String selectKey = L"http://tizen.org/appcontrol/data/selection_mode";
+                               extraData.Add(&selectKey, &isMultipleSelection);
+                       }
                }
        }
 
-       r = dataList.Construct();
-       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
-       r = dataList.Add(mode, isMultipleSelection);
-       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
-       r = dataList.Add(type, fileType);
-       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
-       pMediaAppControlImpl = _AppControlImpl::GetInstance(*pMediaAppControl.get());
-       r = pMediaAppControlImpl->Start(null, null, &dataList, pMediaListener.get());
+       r = _AppControlImpl::FindAndStart(operationId, null, &fileType, null, &extraData, pMediaListener.get());
        SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
        pMediaListener.release();
-       pMediaAppControl.release();
 
        return EINA_TRUE;