Changeset 151886 in webkit


Ignore:
Timestamp:
Jun 22, 2013 11:14:13 PM (11 years ago)
Author:
commit-queue@webkit.org
Message:

[EFL] Add support for MHTML save/load feature to MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=106620

Patch by Santosh Mahto <santosh.ma@samsung.com> on 2013-06-22
Reviewed by Christophe Dumez.

Enable CTRL + S as save page in mhtml and CTRL + L to load any page
from filesystem.

  • MiniBrowser/efl/CMakeLists.txt:
  • MiniBrowser/efl/main.c:

(page_contents_callback):
(on_key_down):
(show_file_entry_dialog): generic function to show file enrty
selector dialogue

Location:
trunk/Tools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r151872 r151886  
     12013-06-22  Santosh Mahto  <santosh.ma@samsung.com>
     2
     3        [EFL] Add support for MHTML save/load feature to MiniBrowser
     4        https://bugs.webkit.org/show_bug.cgi?id=106620
     5
     6        Reviewed by Christophe Dumez.
     7
     8        Enable CTRL + S as save page in mhtml and CTRL + L to load any page
     9        from filesystem.
     10
     11        * MiniBrowser/efl/CMakeLists.txt:
     12        * MiniBrowser/efl/main.c:
     13        (page_contents_callback):
     14        (on_key_down):
     15        (show_file_entry_dialog): generic function to show file enrty
     16        selector dialogue
     17
    1182013-06-21  Brent Fulgham  <bfulgham@apple.com>
    219
  • trunk/Tools/MiniBrowser/efl/CMakeLists.txt

    r150376 r151886  
    4141    ${ECORE_FILE_LIBRARIES}
    4242    ${EDJE_LIBRARIES}
     43    ${EET_LIBRARIES}
    4344    ${EINA_LIBRARIES}
    4445    ${ELEMENTARY_LIBRARIES}
  • trunk/Tools/MiniBrowser/efl/main.c

    r151541 r151886  
    2323#include <Ecore_Evas.h>
    2424#include <Ecore_Getopt.h>
     25#include <Eet.h>
    2526#include <Eina.h>
    2627#include <Elementary.h>
     
    179180};
    180181
     182static Eina_Stringshare *show_file_entry_dialog(Browser_Window *window, const char *label_tag, const char *default_text);
    181183static Browser_Window *window_create(Evas_Object* opener, const char *url, int width, int height, Eina_Bool view_mode);
    182184
     
    348350    elm_object_focus_set(window->search.search_field, EINA_FALSE);
    349351    evas_object_focus_set(window->ewk_view, EINA_TRUE);
     352}
     353
     354static void save_page_contents_callback(Ewk_Page_Contents_Type type, const char *data, void *user_data)
     355{
     356    Eet_File *ef;
     357    Eina_Stringshare *fileName = (Eina_Stringshare *)user_data;
     358
     359    if (!eina_str_has_extension(fileName, ".mht")) {
     360        Eina_Strbuf *fileNameWithMht = eina_strbuf_new();
     361        eina_strbuf_append_printf(fileNameWithMht, "%s.mht", fileName);
     362        ef = eet_open(eina_strbuf_string_get(fileNameWithMht), EET_FILE_MODE_WRITE);
     363        info("Saving file to: %s", eina_strbuf_string_get(fileNameWithMht));
     364        eina_strbuf_free(fileNameWithMht);
     365    } else {
     366        ef = eet_open(fileName, EET_FILE_MODE_WRITE);
     367        info("Saving file to: %s", fileName);
     368    }
     369
     370    if (!ef) {
     371        info("ERROR: Could not create File");
     372        return;
     373    }
     374
     375    eet_write(ef, "MHTML data", data, strlen(data), 0 /* compress */);
     376    eet_close(ef);
     377    info("SUCCESS: saved.");
     378
     379    eina_stringshare_del(fileName);
    350380}
    351381
     
    424454            window->current_zoom_level = DEFAULT_ZOOM_LEVEL;
    425455        info("Zoom to default (Ctrl + '0') was pressed, zoom level became %.2f", zoomLevels[window->current_zoom_level]);
     456    } else if (ctrlPressed && !strcmp(ev->key, "s")) {
     457        Eina_Strbuf *default_file = eina_strbuf_new();
     458        const char *home_path = getenv("HOME");
     459        const char *title = ewk_view_title_get(window->ewk_view);
     460        eina_strbuf_append_printf(default_file, "%s/%s.mht", home_path ? home_path : "/home", title ? title : "title");
     461        info("Pressed (CTRL + S) : Saving Current Page.");
     462        Eina_Stringshare *save_file_name = show_file_entry_dialog(window, "SAVE", eina_strbuf_string_get(default_file));
     463        if (!save_file_name)
     464            return;
     465        ewk_view_page_contents_get(ewk_view, EWK_PAGE_CONTENTS_TYPE_MHTML, save_page_contents_callback, (void *)save_file_name);
     466        eina_strbuf_free(default_file);
     467    } else if (ctrlPressed && !strcmp(ev->key, "l")) {
     468        const char *home_path =  getenv("HOME");
     469        Eina_Stringshare *open_file_name = show_file_entry_dialog(window, "LOAD", home_path ? home_path : "/home");
     470        if (!open_file_name)
     471            return;
     472        Eina_Strbuf *uri_path = eina_strbuf_new();
     473        eina_strbuf_append_printf(uri_path, "file://%s", open_file_name);
     474        info("pressed (CTRL + L) : Loading Page %s", eina_strbuf_string_get(uri_path));
     475        ewk_view_url_set(ewk_view, eina_strbuf_string_get(uri_path));
     476        eina_strbuf_free(uri_path);
     477        eina_stringshare_del(open_file_name);
    426478    }
    427479}
     
    946998
    947999    ecore_main_loop_quit();
     1000}
     1001
     1002static Eina_Stringshare *
     1003show_file_entry_dialog(Browser_Window *window, const char *label_tag, const char *default_text)
     1004{
     1005    Evas_Object *file_popup = elm_popup_add(window->elm_window);
     1006    evas_object_size_hint_weight_set(file_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
     1007    evas_object_show(file_popup);
     1008
     1009    Evas_Object *vbox = elm_box_add(file_popup);
     1010    evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
     1011    evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
     1012    elm_object_content_set(file_popup, vbox);
     1013    evas_object_show(vbox);
     1014
     1015    Evas_Object *label = elm_label_add(window->elm_window);
     1016    elm_object_text_set(label, label_tag);
     1017    evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
     1018    evas_object_size_hint_align_set(label, EVAS_HINT_FILL, 0.5);
     1019    evas_object_color_set(label, 23, 45, 67, 142);
     1020    elm_box_pack_end(vbox, label);
     1021    evas_object_show(label);
     1022
     1023    Evas_Object *fs_entry = elm_fileselector_entry_add(file_popup);
     1024    elm_fileselector_entry_is_save_set(fs_entry, EINA_TRUE);
     1025    evas_object_size_hint_align_set(fs_entry, EVAS_HINT_FILL, 0);
     1026    elm_fileselector_entry_path_set(fs_entry, default_text);
     1027    elm_object_text_set(fs_entry, "FileChooser");
     1028    elm_box_pack_end(vbox, fs_entry);
     1029    evas_object_show(fs_entry);
     1030
     1031    Evas_Object *hbox = elm_box_add(file_popup);
     1032    evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
     1033    elm_box_horizontal_set(hbox, EINA_TRUE);
     1034    evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
     1035    elm_box_pack_end(vbox, hbox);
     1036    evas_object_show(hbox);
     1037
     1038    Eina_Bool ok = EINA_FALSE;
     1039    Evas_Object *ok_button = elm_button_add(file_popup);
     1040    elm_object_text_set(ok_button, "OK");
     1041    evas_object_smart_callback_add(ok_button, "clicked", on_ok_clicked, &ok);
     1042    elm_box_pack_end(hbox, ok_button);
     1043    evas_object_show(ok_button);
     1044
     1045    Evas_Object *cancel_button = elm_button_add(file_popup);
     1046    elm_object_text_set(cancel_button, "Cancel");
     1047    evas_object_smart_callback_add(cancel_button, "clicked", quit_event_loop, NULL);
     1048    elm_box_pack_end(hbox, cancel_button);
     1049    evas_object_show(cancel_button);
     1050
     1051    ecore_main_loop_begin();
     1052
     1053    Eina_Stringshare *file_path = ok ? eina_stringshare_add(elm_fileselector_entry_path_get(fs_entry)) : NULL;
     1054    evas_object_del(file_popup);
     1055    return file_path;
    9481056}
    9491057
Note: See TracChangeset for help on using the changeset viewer.