file_tab: ++implementation.

This commit is contained in:
Hermet Park 2016-06-30 00:52:13 +09:00
parent 247c1e67ae
commit c8749390d8
9 changed files with 94 additions and 42 deletions

View File

@ -91,9 +91,15 @@ base_file_tab_toggle(Eina_Bool toggle)
if (toggle) config_file_tab_set(!config_file_tab_get());
if (config_file_tab_get())
elm_object_signal_emit(bd->layout, "elm,state,file_tab,show", "");
{
file_tab_disabled_set(EINA_FALSE);
elm_object_signal_emit(bd->layout, "elm,state,file_tab,show", "");
}
else
elm_object_signal_emit(bd->layout, "elm,state,file_tab,hide", "");
{
file_tab_disabled_set(EINA_TRUE);
elm_object_signal_emit(bd->layout, "elm,state,file_tab,hide", "");
}
}
void base_file_browser_toggle(Eina_Bool toggle)

View File

@ -53,9 +53,7 @@ warning_replace_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
file_mgr_data *fmd = data;
Enventor_Item *it = enventor_object_main_file_set(base_enventor_get(),
config_input_path_get());
base_text_editor_set(it);
facade_main_file_set(config_input_path_get());
warning_close(fmd);
}

View File

@ -3,12 +3,13 @@
typedef struct file_tab_s
{
Evas_Object *list;
Evas_Object *out_box;
Evas_Object *box;
Elm_Object_Item *selected_it; //list selected item
} file_data;
typedef struct file_tab_it_s
{
Enventor_Item *it;
Enventor_Item *enventor_it;
file_data *fd;
} file_tab_it;
@ -63,9 +64,31 @@ Eina_Bool file_tab_it_selected_set(Enventor_Item *enventor_it)
EINA_LIST_FOREACH(list, l, it)
{
file_tab_it *fti = elm_object_item_data_get(it);
if (fti->it != enventor_it) continue;
if (fti->enventor_it != enventor_it) continue;
elm_list_item_selected_set(it, EINA_TRUE);
fd->selected_it = it;
return EINA_TRUE;
}
fd->selected_it = NULL;
return EINA_FALSE;
}
void file_tab_clear(void)
{
file_data *fd = g_fd;
if (!fd) return;
Eina_List *list = (Eina_List*) elm_list_items_get(fd->list);
Eina_List *l;
Elm_Object_Item *it;
EINA_LIST_FOREACH(list, l, it)
{
file_tab_it *fti = elm_object_item_data_get(it);
free(fti);
}
elm_list_clear(fd->list);
}
Eina_Bool file_tab_it_add(Enventor_Item *enventor_it)
@ -102,7 +125,7 @@ Eina_Bool file_tab_it_add(Enventor_Item *enventor_it)
goto err;
}
fti->it = enventor_it;
fti->enventor_it = enventor_it;
elm_list_item_append(fd->list, filename, NULL, NULL, NULL, fti);
elm_list_go(fd->list);
@ -116,6 +139,23 @@ err:
return EINA_FALSE;
}
void
file_tab_disabled_set(Eina_Bool disabled)
{
file_data *fd = g_fd;
if (!fd) return;
elm_object_disabled_set(fd->box, disabled);
if (disabled) return;
//Re-select item. This is a little tricky.
//When we disable a list, its selected item is dismissed.
//So, we manually select the item when list is enabled again.
if (!fd->selected_it) return;
elm_list_item_selected_set(fd->selected_it, EINA_FALSE);
elm_list_item_selected_set(fd->selected_it, EINA_TRUE);
}
Evas_Object *
file_tab_init(Evas_Object *parent)
{
@ -128,19 +168,19 @@ file_tab_init(Evas_Object *parent)
g_fd = fd;
//Outer Box
Evas_Object *out_box = elm_box_add(parent);
elm_box_padding_set(out_box, ELM_SCALE_SIZE(3), 0);
elm_box_horizontal_set(out_box, EINA_TRUE);
Evas_Object *box = elm_box_add(parent);
elm_box_padding_set(box, ELM_SCALE_SIZE(3), 0);
elm_box_horizontal_set(box, EINA_TRUE);
//Left Button
Evas_Object *left_btn = elm_button_add(out_box);
Evas_Object *left_btn = elm_button_add(box);
elm_object_style_set(left_btn, ENVENTOR_NAME);
elm_object_focus_allow_set(left_btn, EINA_FALSE);
evas_object_size_hint_weight_set(left_btn, 0, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(left_btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(left_btn, "clicked", left_btn_clicked_cb, fd);
evas_object_show(left_btn);
elm_box_pack_end(out_box, left_btn);
elm_box_pack_end(box, left_btn);
//Left Button Icon
Evas_Object *img1 = elm_image_add(left_btn);
@ -148,15 +188,15 @@ file_tab_init(Evas_Object *parent)
elm_object_content_set(left_btn, img1);
//Right Button
Evas_Object *right_btn = elm_button_add(out_box);
Evas_Object *right_btn = elm_button_add(box);
elm_object_style_set(right_btn, ENVENTOR_NAME);
elm_object_focus_allow_set(left_btn, EINA_FALSE);
elm_object_focus_allow_set(right_btn, EINA_FALSE);
evas_object_size_hint_weight_set(right_btn, 0, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(right_btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(right_btn, "clicked",
right_btn_clicked_cb, fd);
evas_object_show(right_btn);
elm_box_pack_end(out_box, right_btn);
elm_box_pack_end(box, right_btn);
//Right Button Icon
Evas_Object *img2 = elm_image_add(right_btn);
@ -164,8 +204,9 @@ file_tab_init(Evas_Object *parent)
elm_object_content_set(right_btn, img2);
//List
Evas_Object *list = elm_list_add(out_box);
Evas_Object *list = elm_list_add(box);
elm_object_style_set(list, ENVENTOR_NAME);
elm_object_focus_allow_set(list, EINA_FALSE);
elm_list_horizontal_set(list, EINA_TRUE);
elm_scroller_policy_set(list, ELM_SCROLLER_POLICY_OFF,
ELM_SCROLLER_POLICY_OFF);
@ -173,12 +214,12 @@ file_tab_init(Evas_Object *parent)
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(list);
elm_box_pack_end(out_box, list);
elm_box_pack_end(box, list);
fd->out_box = out_box;
fd->box = box;
fd->list = list;
return out_box;
return box;
}
void
@ -187,7 +228,7 @@ file_tab_term(void)
file_data *fd = g_fd;
if (!fd) return;
evas_object_del(fd->out_box);
evas_object_del(fd->box);
free(fd);
g_fd = NULL;

View File

@ -1,3 +1,7 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "common.h"
const char *DEFAULT_EDC_FORMAT = "enventor_XXXXXX.edc";
@ -8,3 +12,19 @@ void mem_fail_msg(void)
{
EINA_LOG_ERR("Failed to allocate Memory!");
}
Enventor_Item *facade_main_file_set(const char *path)
{
Enventor_Item *it = enventor_object_main_file_set(base_enventor_get(), path);
if (!it) return NULL;
file_tab_clear();
file_tab_it_add(it);
file_tab_it_selected_set(it);
base_text_editor_set(it);
base_title_set(path);
base_console_reset();
return it;
}

View File

@ -592,14 +592,8 @@ enventor_setup(app_data *ad)
enventor_common_setup(enventor);
ad->main_it =
enventor_object_main_file_set(enventor, config_input_path_get());
file_tab_it_add(ad->main_it);
file_tab_it_selected_set(ad->main_it);
base_enventor_set(enventor);
base_text_editor_set(ad->main_it);
base_title_set(config_input_path_get());
ad->main_it = facade_main_file_set(config_input_path_get());
base_live_view_set(enventor_object_live_view_get(enventor));
}

View File

@ -356,9 +356,7 @@ fileselector_save_done_cb(void *data, Evas_Object *obj, void *event_info)
eina_stringshare_del(selected);
return;
}
Enventor_Item *it = enventor_object_main_file_set(enventor, selected);
base_text_editor_set(it);
base_title_set(selected);
facade_main_file_set(selected);
}
else if (is_edj)
{
@ -432,11 +430,7 @@ fileselector_load_done_cb(void *data, Evas_Object *obj, void *event_info)
return;
}
config_input_path_set(selected);
Enventor_Item *it = enventor_object_main_file_set(base_enventor_get(),
selected);
base_text_editor_set(it);
base_title_set(selected);
base_console_reset();
facade_main_file_set(selected);
fileselector_close(md);
menu_close(md);
file_mgr_reset();

View File

@ -57,11 +57,7 @@ newfile_set(Eina_Bool template_new)
EINA_LOG_ERR(_("Cannot find file! \"%s\""), buf);
return;
}
Enventor_Item *eit =
enventor_object_main_file_set(base_enventor_get(), path);
base_text_editor_set(eit);
base_title_set(path);
base_console_reset();
facade_main_file_set(path);
file_mgr_reset();
}

View File

@ -2,3 +2,5 @@ Evas_Object *file_tab_init(Evas_Object *parent);
void file_tab_term(void);
Eina_Bool file_tab_it_add(Enventor_Item *it);
Eina_Bool file_tab_it_selected_set(Enventor_Item *enventor_it);
void file_tab_disabled_set(Eina_Bool disabled);
void file_tab_clear(void);

View File

@ -3,3 +3,4 @@ extern char EDJE_PATH[PATH_MAX];
extern Eina_Prefix *PREFIX;
extern const char *ENVENTOR_NAME;
void mem_fail_msg(void);
Enventor_Item *facade_main_file_set(const char *path);