Title: [133163] trunk/Tools
Revision
133163
Author
commit-qu...@webkit.org
Date
2012-11-01 07:17:40 -0700 (Thu, 01 Nov 2012)

Log Message

[EFL][WK2] Add File Chooser dialog support to MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=100822

Patch by Christophe Dumez <christophe.du...@intel.com> on 2012-11-01
Reviewed by Kenneth Rohde Christiansen.

Add very basic file picker dialog to MiniBrowser so that
the user can select a file from the file system when
clicking an input element of type "file".

* MiniBrowser/efl/main.c:
(close_file_picker):
(on_filepicker_deletion):
(on_fileselector_done):
(on_file_chooser_request):
(window_create):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (133162 => 133163)


--- trunk/Tools/ChangeLog	2012-11-01 14:17:01 UTC (rev 133162)
+++ trunk/Tools/ChangeLog	2012-11-01 14:17:40 UTC (rev 133163)
@@ -1,3 +1,21 @@
+2012-11-01  Christophe Dumez  <christophe.du...@intel.com>
+
+        [EFL][WK2] Add File Chooser dialog support to MiniBrowser
+        https://bugs.webkit.org/show_bug.cgi?id=100822
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Add very basic file picker dialog to MiniBrowser so that
+        the user can select a file from the file system when
+        clicking an input element of type "file".
+
+        * MiniBrowser/efl/main.c:
+        (close_file_picker):
+        (on_filepicker_deletion):
+        (on_fileselector_done):
+        (on_file_chooser_request):
+        (window_create):
+
 2012-11-01  Yael Aharon  <yael.aha...@intel.com>
 
         Unreviewed. Change my email address.

Modified: trunk/Tools/MiniBrowser/efl/main.c (133162 => 133163)


--- trunk/Tools/MiniBrowser/efl/main.c	2012-11-01 14:17:01 UTC (rev 133162)
+++ trunk/Tools/MiniBrowser/efl/main.c	2012-11-01 14:17:40 UTC (rev 133163)
@@ -308,7 +308,65 @@
     eina_strbuf_free(destination_path);
 }
 
+typedef struct {
+    Evas_Object *window;
+    Ewk_File_Chooser_Request *request;
+} FileSelectorData;
+
+static void close_file_picker(FileSelectorData* fs_data)
+{
+    evas_object_del(fs_data->window);
+    ewk_file_chooser_request_unref(fs_data->request);
+    free(fs_data);
+}
+
 static void
+on_filepicker_deletion(void *user_data, Evas_Object *window, void *event_info)
+{
+    close_file_picker((FileSelectorData *)user_data);
+}
+
+static void
+on_fileselector_done(void *user_data, Evas_Object *file_selector, void *event_info)
+{
+    FileSelectorData *fs_data = (FileSelectorData *)user_data;
+
+    const char *selected = (const char *)event_info;
+    if (selected && *selected)
+        ewk_file_chooser_request_file_choose(fs_data->request, selected);
+
+    close_file_picker(fs_data);
+}
+
+static void
+on_file_chooser_request(void *user_data, Evas_Object *webview, void *event_info)
+{
+    Ewk_File_Chooser_Request *request = (Ewk_File_Chooser_Request *)event_info;
+
+    // Show basic file picker which does not currently support multiple files
+    // or MIME type filtering.
+    Evas_Object *window = elm_win_util_standard_add("file-picker-window", "File picker");
+
+    FileSelectorData* fs_data = (FileSelectorData*)malloc(sizeof(FileSelectorData));
+    fs_data->window = window;
+    fs_data->request = ewk_file_chooser_request_ref(request);
+    evas_object_smart_callback_add(window, "delete,request", on_filepicker_deletion, fs_data);
+
+    Evas_Object *file_selector = elm_fileselector_add(window);
+    const char *home_path = getenv("HOME");
+    elm_fileselector_path_set(file_selector, home_path ? home_path : "/home");
+    evas_object_size_hint_weight_set(file_selector, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_win_resize_object_add(window, file_selector);
+    evas_object_show(file_selector);
+
+    evas_object_smart_callback_add(file_selector, "done", on_fileselector_done, fs_data);
+
+    evas_object_resize(window, 400, 400);
+    elm_win_center(window, EINA_TRUE, EINA_TRUE);
+    evas_object_show(window);
+}
+
+static void
 on_download_finished(void *user_data, Evas_Object *webview, void *event_info)
 {
     Ewk_Download_Job *download = (Ewk_Download_Job *)event_info;
@@ -718,6 +776,7 @@
     evas_object_smart_callback_add(app_data->webview, "download,failed", on_download_failed, app_data);
     evas_object_smart_callback_add(app_data->webview, "download,finished", on_download_finished, app_data);
     evas_object_smart_callback_add(app_data->webview, "download,request", on_download_request, app_data);
+    evas_object_smart_callback_add(app_data->webview, "file,chooser,request", on_file_chooser_request, app_data);
     evas_object_smart_callback_add(app_data->webview, "icon,changed", on_view_icon_changed, app_data);
     evas_object_smart_callback_add(app_data->webview, "load,error", on_error, app_data);
     evas_object_smart_callback_add(app_data->webview, "load,progress", on_progress, app_data);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to