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;