close();
}
-static void _serviceResultCb(service_h request, service_h reply, service_result_e result, void* data)
+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)
{
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_PICK);
- service_set_mime(svcHandle, "image/*");
+ service_set_operation(svcHandle, SERVICE_OPERATION_CREATE_CONTENT);
+ service_set_mime(svcHandle, "image/jpg");
service_add_extra_data(svcHandle, "CALLER", "webkit");
- int ret = service_send_launch_request(svcHandle, _serviceResultCb, this);
+ int ret = service_send_launch_request(svcHandle, _cameraResultCb, 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_PICK);
- service_set_mime(svcHandle, "video/*");
+ service_set_operation(svcHandle, SERVICE_OPERATION_CREATE_CONTENT);
+ service_set_mime(svcHandle, "video/3gp");
service_add_extra_data(svcHandle, "CALLER", "webkit");
- int ret = service_send_launch_request(svcHandle, _serviceResultCb, this);
+ int ret = service_send_launch_request(svcHandle, _cameraResultCb, 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_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, "*/*");
+ service_set_operation(svcHandle, SERVICE_OPERATION_CREATE_CONTENT);
+ service_set_mime(svcHandle, "audio/amr");
- int ret = service_send_launch_request(svcHandle, _serviceResultCb, this);
+ int ret = service_send_launch_request(svcHandle, _cameraResultCb, this);
if (ret != SERVICE_ERROR_NONE) {
service_destroy(svcHandle);
TIZEN_LOGE("ret(%d)", ret);
else if (strstr(accept_type, "audio"))
return _recordVoice();
}
- } else
- return _fileManager();
+ }
+
+ 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;
}