Tools/ChangeLog

 12012-11-01 Christophe Dumez <christophe.dumez@intel.com>
 2
 3 [EFL][WK2] Add File Chooser dialog support to MiniBrowser
 4 https://bugs.webkit.org/show_bug.cgi?id=100822
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Add very basic file picker dialog to MiniBrowser so that
 9 the user can select a file from the file system when
 10 clicking an input element of type "file".
 11
 12 * MiniBrowser/efl/main.c:
 13 (close_file_picker):
 14 (on_filepicker_deletion):
 15 (on_fileselector_done):
 16 (on_file_chooser_request):
 17 (window_create):
 18
1192012-10-31 Dirk Pranke <dpranke@chromium.org>
220
321 NRWT: lint warnings don't show up by default

Tools/MiniBrowser/efl/main.c

@@on_download_request(void *user_data, Evas_Object *webview, void *event_info)
308308 eina_strbuf_free(destination_path);
309309}
310310
 311typedef struct {
 312 Evas_Object *window;
 313 Ewk_File_Chooser_Request *request;
 314} FileSelectorData;
 315
 316static void close_file_picker(FileSelectorData* fs_data)
 317{
 318 evas_object_del(fs_data->window);
 319 ewk_file_chooser_request_unref(fs_data->request);
 320 free(fs_data);
 321}
 322
 323static void
 324on_filepicker_deletion(void *user_data, Evas_Object *window, void *event_info)
 325{
 326 close_file_picker((FileSelectorData *)user_data);
 327}
 328
 329static void
 330on_fileselector_done(void *user_data, Evas_Object *file_selector, void *event_info)
 331{
 332 FileSelectorData *fs_data = (FileSelectorData *)user_data;
 333
 334 const char *selected = (const char *)event_info;
 335 if (selected && *selected)
 336 ewk_file_chooser_request_file_choose(fs_data->request, selected);
 337
 338 close_file_picker(fs_data);
 339}
 340
 341static void
 342on_file_chooser_request(void *user_data, Evas_Object *webview, void *event_info)
 343{
 344 Ewk_File_Chooser_Request *request = (Ewk_File_Chooser_Request *)event_info;
 345
 346 // Show basic file picker which does not currently support multiple files
 347 // or MIME type filtering.
 348 Evas_Object *window = elm_win_util_standard_add("file-picker-window", "File picker");
 349
 350 FileSelectorData* fs_data = (FileSelectorData*)malloc(sizeof(FileSelectorData));
 351 fs_data->window = window;
 352 fs_data->request = ewk_file_chooser_request_ref(request);
 353 evas_object_smart_callback_add(window, "delete,request", on_filepicker_deletion, fs_data);
 354
 355 Evas_Object *file_selector = elm_fileselector_add(window);
 356 const char *home_path = getenv("HOME");
 357 elm_fileselector_path_set(file_selector, home_path ? home_path : "/home");
 358 evas_object_size_hint_weight_set(file_selector, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 359 elm_win_resize_object_add(window, file_selector);
 360 evas_object_show(file_selector);
 361
 362 evas_object_smart_callback_add(file_selector, "done", on_fileselector_done, fs_data);
 363
 364 evas_object_resize(window, 400, 400);
 365 elm_win_center(window, EINA_TRUE, EINA_TRUE);
 366 evas_object_show(window);
 367}
 368
311369static void
312370on_download_finished(void *user_data, Evas_Object *webview, void *event_info)
313371{

@@static Browser_Window *window_create(const char *url)
718776 evas_object_smart_callback_add(app_data->webview, "download,failed", on_download_failed, app_data);
719777 evas_object_smart_callback_add(app_data->webview, "download,finished", on_download_finished, app_data);
720778 evas_object_smart_callback_add(app_data->webview, "download,request", on_download_request, app_data);
 779 evas_object_smart_callback_add(app_data->webview, "file,chooser,request", on_file_chooser_request, app_data);
721780 evas_object_smart_callback_add(app_data->webview, "icon,changed", on_view_icon_changed, app_data);
722781 evas_object_smart_callback_add(app_data->webview, "load,error", on_error, app_data);
723782 evas_object_smart_callback_add(app_data->webview, "load,progress", on_progress, app_data);