close();
}
-static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void* priv)
-{
- Evas_Object* base, *win;
-
- if (!ug || !priv)
- return;
-
- base = (Evas_Object*)ug_get_layout(ug);
- if (!base)
- return;
-
- win = (Evas_Object*)ug_get_window();
-
- switch (mode) {
- case UG_MODE_FULLVIEW:
- evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_win_resize_object_add(win, base);
- evas_object_show(base);
- break;
- default:
- break;
- }
-}
-
-static void result_cb(ui_gadget_h ug, service_h service, void* priv)
-{
- TIZEN_LOGI("ug(%d), service(%d), priv(%d)", ug, service, priv);
- if (!ug || !priv)
- return;
-
- OpenPanel* openPanel = static_cast<OpenPanel*>(priv);
- Evas_Object* ewk_view = openPanel->ewkView();
- if (!ewk_view)
- return;
-
- Eina_List* selectedFiles = NULL;
- unsigned int i = 0;
- char* filename = NULL;
-
- service_get_extra_data(service, "result", &filename);
-
- if (filename && strlen(filename)) {
- char* filelist = strdup(filename);
- char* file = NULL;
- file = strtok(filelist, "?");
- int stringlength = 0;
- do {
- stringlength = 0;
- if ((stringlength = strlen(file)) > 0) {
- char* buffer = new char[stringlength+1];
- memset(buffer, 0x00, sizeof(buffer));
- strncpy(buffer, file, strlen(file));
- buffer[stringlength] = 0x00;
- selectedFiles = eina_list_append(selectedFiles, buffer);
- }
- i++;
- }while((file = strtok(NULL, "?")));
- free(filelist);
- } else {
- return;
- }
- ewk_view_open_panel_reply(ewk_view, selectedFiles, EINA_TRUE);
- return;
-}
-
-static void destroy_cb(ui_gadget_h ug, void* priv)
-{
- TIZEN_LOGI("ug(%d), priv(%d)", ug, priv);
- ug_destroy(ug);
-
- OpenPanel* openPanel = static_cast<OpenPanel*>(priv);
- Evas_Object* ewk_view = openPanel->ewkView();
- if (!ewk_view)
- return;
-
- ewk_view_open_panel_reply(ewk_view, NULL, EINA_FALSE);
- return;
-}
-
-static void _cameraResultCb(service_h request, service_h reply, service_result_e result, void* data)
+static void _serviceResultCb(service_h request, service_h reply, service_result_e result, void* data)
{
OpenPanel* openPanel = static_cast<OpenPanel*>(data);
list = eina_list_append(list, fileName);
ewk_view_open_panel_reply(openPanel->ewkView(), list, true);
} else {
+ TIZEN_LOGE("resultFilename is null");
ewk_view_open_panel_reply(openPanel->ewkView(), 0, false);
}
} else {
if (service_create(&svcHandle) < 0 || !svcHandle)
return false;
- service_set_operation(svcHandle, SERVICE_OPERATION_CREATE_CONTENT);
- service_set_mime(svcHandle, "image/jpg");
+ service_set_operation(svcHandle, SERVICE_OPERATION_PICK);
+ service_set_mime(svcHandle, "image/*");
service_add_extra_data(svcHandle, "CALLER", "webkit");
- int ret = service_send_launch_request(svcHandle, _cameraResultCb, this);
+ int ret = service_send_launch_request(svcHandle, _serviceResultCb, this);
if (ret != SERVICE_ERROR_NONE) {
service_destroy(svcHandle);
TIZEN_LOGE("ret(%d)", ret);
if (service_create(&svcHandle) < 0 || !svcHandle)
return false;
- service_set_operation(svcHandle, SERVICE_OPERATION_CREATE_CONTENT);
- service_set_mime(svcHandle, "video/3gp");
+ service_set_operation(svcHandle, SERVICE_OPERATION_PICK);
+ service_set_mime(svcHandle, "video/*");
service_add_extra_data(svcHandle, "CALLER", "webkit");
- int ret = service_send_launch_request(svcHandle, _cameraResultCb, this);
+ int ret = service_send_launch_request(svcHandle, _serviceResultCb, this);
if (ret != SERVICE_ERROR_NONE) {
service_destroy(svcHandle);
TIZEN_LOGE("ret(%d)", ret);
if (service_create(&svcHandle) < 0 || !svcHandle)
return false;
- service_set_operation(svcHandle, SERVICE_OPERATION_CREATE_CONTENT);
- service_set_mime(svcHandle, "audio/amr");
+ service_set_operation(svcHandle, SERVICE_OPERATION_PICK);
+ service_set_mime(svcHandle, "audio/*");
+
+ int ret = service_send_launch_request(svcHandle, _serviceResultCb, this);
+ if (ret != SERVICE_ERROR_NONE) {
+ service_destroy(svcHandle);
+ TIZEN_LOGE("ret(%d)", ret);
+ return false;
+ }
+
+ service_destroy(svcHandle);
+
+ return true;
+}
+
+bool OpenPanel::_fileManager()
+{
+ service_h svcHandle = 0;
+ if (service_create(&svcHandle) < 0 || !svcHandle)
+ return false;
+
+ service_set_operation(svcHandle, SERVICE_OPERATION_PICK);
+ service_set_mime(svcHandle, "*/*");
- int ret = service_send_launch_request(svcHandle, _cameraResultCb, this);
+ int ret = service_send_launch_request(svcHandle, _serviceResultCb, this);
if (ret != SERVICE_ERROR_NONE) {
service_destroy(svcHandle);
TIZEN_LOGE("ret(%d)", ret);
else if (strstr(accept_type, "audio"))
return _recordVoice();
}
- }
-
- service_h service = NULL;
- if (service_create(&service) != SERVICE_ERROR_NONE)
- return false;
- service_add_extra_data(service, "path", "/opt/media");
-
- if (is_audio_all_type && !is_video_all_type && !is_image_all_type && !is_video_extension_type && !is_image_extension_type) {
- service_add_extra_data(service, "file_type", "SOUND");
- } else if (is_video_all_type && !is_image_all_type && !is_audio_all_type && !is_image_extension_type && !is_audio_extension_type) {
- service_add_extra_data(service, "file_type", "VIDEO");
- } else if (is_image_all_type && !is_audio_all_type && !is_video_all_type && !is_audio_extension_type && !is_video_extension_type) {
- service_add_extra_data(service, "file_type", "IMAGE");
- } else if (is_audio_all_type && is_video_all_type && !is_image_all_type && !is_image_extension_type) {
- service_add_extra_data(service, "file_type", "VS");
- } else if (is_video_all_type && is_image_all_type && !is_audio_all_type && !is_audio_extension_type) {
- service_add_extra_data(service, "file_type", "IV");
- } else if (is_image_all_type && is_audio_all_type && !is_video_all_type && !is_video_extension_type) {
- service_add_extra_data(service, "file_type", "IS");
- } else if (!is_audio_all_type && !is_video_all_type && !is_image_all_type &&
- (is_video_extension_type || is_image_extension_type || is_audio_extension_type)) {
- service_add_extra_data(service, "file_type", extensions);
- } else {
- service_add_extra_data(service, "file_type", "ALL");
- }
-
- /* Set file select mode : multiple/single */
- if (allow_multiple_files == TRUE){
- service_add_extra_data(service, "select_type", "MULTI_FILE");
- } else {
- service_add_extra_data(service, "select_type", "SINGLE_FILE");
- }
-
- struct ug_cbs cbs = {0, 0, 0, 0};
- cbs.layout_cb = layout_cb;
- cbs.result_cb = result_cb;
- cbs.destroy_cb = destroy_cb;
- cbs.priv = (void*)this;
-
- if(!ug_create(NULL, "myfile-efl", UG_MODE_FULLVIEW, service, &cbs)) {
- TIZEN_LOGE("ug_create FAIL");
- return false;
- }
-
- service_destroy(service);
-
- return true;
+ } else
+ return _fileManager();
}