forked from enlightenment/enventor
file_browser: refactoring internals.
remove unnecessary edc usage. and don't surprise even though refresh button generation is wierd. That is about genlist bug and will be fixed there soon.
This commit is contained in:
parent
c20a47bced
commit
5c21ca9ba9
|
@ -15,8 +15,7 @@ EXTRA_DIST = enventor.edc \
|
||||||
layout_common.edc \
|
layout_common.edc \
|
||||||
layout_setting.edc \
|
layout_setting.edc \
|
||||||
theme_ext.edc \
|
theme_ext.edc \
|
||||||
live_edit.edc \
|
live_edit.edc
|
||||||
file_browser.edc
|
|
||||||
|
|
||||||
enventor.edj: Makefile $(EXTRA_DIST)
|
enventor.edj: Makefile $(EXTRA_DIST)
|
||||||
$(EDJE_CC) $(EDJE_FLAGS) \
|
$(EDJE_CC) $(EDJE_FLAGS) \
|
||||||
|
|
|
@ -15,5 +15,4 @@ collections {
|
||||||
#include "layout_common.edc"
|
#include "layout_common.edc"
|
||||||
#include "layout_setting.edc"
|
#include "layout_setting.edc"
|
||||||
#include "live_edit.edc"
|
#include "live_edit.edc"
|
||||||
#include "file_browser.edc"
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,121 +0,0 @@
|
||||||
group { "workspace";
|
|
||||||
parts {
|
|
||||||
spacer { "search_base";
|
|
||||||
scale: 1.0;
|
|
||||||
desc { "default";
|
|
||||||
min: 0 22;
|
|
||||||
max: -1 22;
|
|
||||||
align: 0.5 0.0;
|
|
||||||
fixed: 1 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
swallow { "search_img";
|
|
||||||
scale: 1.0;
|
|
||||||
desc { "default";
|
|
||||||
rel1.to: "search_base";
|
|
||||||
rel2 {
|
|
||||||
to: "search_base";
|
|
||||||
relative: 0.0 1.0;
|
|
||||||
}
|
|
||||||
min: 18 18;
|
|
||||||
max: 18 18;
|
|
||||||
align: 0.0 0.5;
|
|
||||||
fixed: 1 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
swallow { "search_entry";
|
|
||||||
scale: 1.0;
|
|
||||||
desc { "default";
|
|
||||||
rel1 {
|
|
||||||
to: "search_img";
|
|
||||||
relative: 1.0 0.0;
|
|
||||||
}
|
|
||||||
rel2.to: "search_base";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
spacer { "title_base";
|
|
||||||
scale: 1.0;
|
|
||||||
desc { "default";
|
|
||||||
rel1 {
|
|
||||||
to: "search_base";
|
|
||||||
relative: 0.0 1.0;
|
|
||||||
}
|
|
||||||
rel2.to_y: "search_base";
|
|
||||||
min: 0 22;
|
|
||||||
max: -1 22;
|
|
||||||
align: 0.5 0.0;
|
|
||||||
fixed: 1 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
spacer { "title_left_padding";
|
|
||||||
scale: 1.0;
|
|
||||||
desc { "default";
|
|
||||||
rel1.to: "title_base";
|
|
||||||
rel2 {
|
|
||||||
to: "title_base";
|
|
||||||
relative: 0.0 1.0;
|
|
||||||
}
|
|
||||||
min: 5 0;
|
|
||||||
max: 5 -1;
|
|
||||||
align: 0.0 0.5;
|
|
||||||
fixed: 1 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
text { "title_text";
|
|
||||||
scale: 1.0;
|
|
||||||
desc { "default";
|
|
||||||
text {
|
|
||||||
text: "Workspace";
|
|
||||||
size: 10;
|
|
||||||
align: 0.0 0.5;
|
|
||||||
}
|
|
||||||
rel1 {
|
|
||||||
to: "title_left_padding";
|
|
||||||
relative: 1.0 0.0;
|
|
||||||
}
|
|
||||||
rel2.to: "title_base";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
swallow { "refresh_btn";
|
|
||||||
scale: 1.0;
|
|
||||||
desc { "default";
|
|
||||||
rel1 {
|
|
||||||
to: "title_base";
|
|
||||||
relative: 1.0 0.0;
|
|
||||||
}
|
|
||||||
rel2.to: "title_base";
|
|
||||||
rel2.offset: -2 -1;
|
|
||||||
min: 22 0;
|
|
||||||
max: 22 -1;
|
|
||||||
align: 1.0 0.5;
|
|
||||||
fixed: 1 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
swallow { "content";
|
|
||||||
scale: 1.0;
|
|
||||||
desc { "default";
|
|
||||||
rel1 {
|
|
||||||
to: "title_base";
|
|
||||||
relative: 0.0 1.0;
|
|
||||||
}
|
|
||||||
rel2 {
|
|
||||||
to: "show_all_check";
|
|
||||||
relative: 1.0 0.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
swallow { "show_all_check";
|
|
||||||
scale: 1.0;
|
|
||||||
desc { "default";
|
|
||||||
rel1 {
|
|
||||||
to: "title_base";
|
|
||||||
relative: 0.0 1.0;
|
|
||||||
}
|
|
||||||
min: 0 22;
|
|
||||||
max: -1 22;
|
|
||||||
align: 0.0 1.0;
|
|
||||||
fixed: 0 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -2624,6 +2624,7 @@ group { name: "main_layout";
|
||||||
rel1 {
|
rel1 {
|
||||||
relative: 0.0 1.0;
|
relative: 0.0 1.0;
|
||||||
to_y: "elm.swallow.tools";
|
to_y: "elm.swallow.tools";
|
||||||
|
offset: 1 0;
|
||||||
}
|
}
|
||||||
rel2 {
|
rel2 {
|
||||||
relative: 0.0 0.0;
|
relative: 0.0 0.0;
|
||||||
|
@ -2631,7 +2632,6 @@ group { name: "main_layout";
|
||||||
}
|
}
|
||||||
align: 1 0;
|
align: 1 0;
|
||||||
min: 200 0;
|
min: 200 0;
|
||||||
max: 0 -1;
|
|
||||||
fixed: 1 0;
|
fixed: 1 0;
|
||||||
visible: 0;
|
visible: 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ typedef struct file_browser_s
|
||||||
{
|
{
|
||||||
brows_file *workspace; //workspace directory
|
brows_file *workspace; //workspace directory
|
||||||
|
|
||||||
Evas_Object *workspace_ly;
|
Evas_Object *main_box;
|
||||||
Evas_Object *search_entry;
|
Evas_Object *search_entry;
|
||||||
Evas_Object *genlist;
|
Evas_Object *genlist;
|
||||||
Evas_Object *show_all_check;
|
Evas_Object *show_all_check;
|
||||||
|
@ -52,6 +52,7 @@ static brows_data *g_bd = NULL;
|
||||||
|
|
||||||
static Eina_List *sub_brows_file_list_create(brows_file *file);
|
static Eina_List *sub_brows_file_list_create(brows_file *file);
|
||||||
static void brows_file_list_free(Eina_List *file_list);
|
static void brows_file_list_free(Eina_List *file_list);
|
||||||
|
static void refresh_btn_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gl_file_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
gl_file_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
||||||
|
@ -124,7 +125,40 @@ gl_file_content_get_cb(void *data, Evas_Object *obj, const char *part)
|
||||||
|
|
||||||
return img;
|
return img;
|
||||||
}
|
}
|
||||||
else return NULL;
|
else
|
||||||
|
{
|
||||||
|
//Refresh button for the most top directory
|
||||||
|
if ((file->type == FILE_BROWSER_FILE_TYPE_DIR) &&
|
||||||
|
!elm_genlist_item_parent_get(file->it) &&
|
||||||
|
!strcmp(part, "elm.swallow.end"))
|
||||||
|
{
|
||||||
|
//Workspace Refresh button
|
||||||
|
//This wrapper box is used for non-scaled button tooltip.
|
||||||
|
Evas_Object *box = elm_box_add(obj);
|
||||||
|
elm_object_tooltip_text_set(box, "Refresh Workspace");
|
||||||
|
|
||||||
|
Evas_Object *btn = elm_button_add(box);
|
||||||
|
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND,
|
||||||
|
EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL,
|
||||||
|
EVAS_HINT_FILL);
|
||||||
|
elm_object_scale_set(btn, 0.6);
|
||||||
|
evas_object_smart_callback_add(btn, "clicked",
|
||||||
|
refresh_btn_clicked_cb, NULL);
|
||||||
|
evas_object_show(btn);
|
||||||
|
|
||||||
|
//Workspace Refresh button icon
|
||||||
|
Evas_Object *img = elm_image_add(btn);
|
||||||
|
elm_image_file_set(img, EDJE_PATH, "refresh");
|
||||||
|
elm_object_content_set(btn, img);
|
||||||
|
|
||||||
|
elm_box_pack_end(box, btn);
|
||||||
|
|
||||||
|
return box;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
|
@ -538,7 +572,7 @@ file_browser_workspace_set(const char *workspace_path)
|
||||||
if (!workspace) return;
|
if (!workspace) return;
|
||||||
bd->workspace = workspace;
|
bd->workspace = workspace;
|
||||||
|
|
||||||
elm_object_disabled_set(bd->workspace_ly, EINA_FALSE);
|
elm_object_disabled_set(bd->main_box, EINA_FALSE);
|
||||||
|
|
||||||
if (workspace->sub_file_list)
|
if (workspace->sub_file_list)
|
||||||
gl_exp_req(NULL, NULL, workspace->it);
|
gl_exp_req(NULL, NULL, workspace->it);
|
||||||
|
@ -548,7 +582,7 @@ Evas_Object *
|
||||||
file_browser_init(Evas_Object *parent)
|
file_browser_init(Evas_Object *parent)
|
||||||
{
|
{
|
||||||
brows_data *bd = g_bd;
|
brows_data *bd = g_bd;
|
||||||
if (bd) return bd->workspace_ly;
|
if (bd) return bd->main_box;
|
||||||
|
|
||||||
bd = calloc(1, sizeof(brows_data));
|
bd = calloc(1, sizeof(brows_data));
|
||||||
if (!bd)
|
if (!bd)
|
||||||
|
@ -558,57 +592,71 @@ file_browser_init(Evas_Object *parent)
|
||||||
}
|
}
|
||||||
g_bd = bd;
|
g_bd = bd;
|
||||||
|
|
||||||
Evas_Object *workspace_ly = elm_layout_add(parent);
|
//Main Box
|
||||||
elm_layout_file_set(workspace_ly, EDJE_PATH, "workspace");
|
Evas_Object *main_box = elm_box_add(parent);
|
||||||
|
evas_object_size_hint_align_set(main_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(main_box, EVAS_HINT_EXPAND,
|
||||||
|
EVAS_HINT_EXPAND);
|
||||||
|
evas_object_show(main_box);
|
||||||
|
|
||||||
Evas_Object *search_img = elm_image_add(workspace_ly);
|
Evas_Object *sub_box;
|
||||||
|
|
||||||
|
//Sub box for search.
|
||||||
|
sub_box = elm_box_add(main_box);
|
||||||
|
elm_box_padding_set(sub_box, ELM_SCALE_SIZE(5), 0);
|
||||||
|
elm_box_horizontal_set(sub_box, EINA_TRUE);
|
||||||
|
evas_object_size_hint_align_set(sub_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(sub_box, EVAS_HINT_EXPAND, 0);
|
||||||
|
evas_object_show(sub_box);
|
||||||
|
elm_box_pack_end(main_box, sub_box);
|
||||||
|
|
||||||
|
//Search Icon
|
||||||
|
Evas_Object *search_img = elm_image_add(sub_box);
|
||||||
|
evas_object_size_hint_min_set(search_img, ELM_SCALE_SIZE(15),
|
||||||
|
ELM_SCALE_SIZE(15));
|
||||||
elm_image_file_set(search_img, EDJE_PATH, "search");
|
elm_image_file_set(search_img, EDJE_PATH, "search");
|
||||||
elm_object_part_content_set(workspace_ly, "search_img", search_img);
|
evas_object_show(search_img);
|
||||||
|
elm_box_pack_end(sub_box, search_img);
|
||||||
|
|
||||||
Evas_Object *search_entry = elm_entry_add(workspace_ly);
|
//Search Entry
|
||||||
|
Evas_Object *search_entry = elm_entry_add(sub_box);
|
||||||
elm_entry_single_line_set(search_entry, EINA_TRUE);
|
elm_entry_single_line_set(search_entry, EINA_TRUE);
|
||||||
elm_entry_scrollable_set(search_entry, EINA_TRUE);
|
elm_entry_scrollable_set(search_entry, EINA_TRUE);
|
||||||
elm_object_part_text_set(search_entry, "guide", "Type file name to search");
|
elm_object_part_text_set(search_entry, "guide", "Type file name to search");
|
||||||
evas_object_smart_callback_add(search_entry, "changed",
|
evas_object_smart_callback_add(search_entry, "changed",
|
||||||
search_entry_changed_cb, NULL);
|
search_entry_changed_cb, NULL);
|
||||||
elm_object_part_content_set(workspace_ly, "search_entry", search_entry);
|
evas_object_size_hint_align_set(search_entry, EVAS_HINT_FILL,
|
||||||
|
EVAS_HINT_FILL);
|
||||||
Evas_Object *box = elm_box_add(workspace_ly);
|
evas_object_size_hint_weight_set(search_entry, EVAS_HINT_EXPAND,
|
||||||
elm_object_tooltip_text_set(box, "Refresh");
|
|
||||||
|
|
||||||
Evas_Object *refresh_btn = elm_button_add(box);
|
|
||||||
evas_object_size_hint_weight_set(refresh_btn, EVAS_HINT_EXPAND,
|
|
||||||
EVAS_HINT_EXPAND);
|
EVAS_HINT_EXPAND);
|
||||||
evas_object_size_hint_align_set(refresh_btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
evas_object_show(search_entry);
|
||||||
elm_object_scale_set(refresh_btn, 0.5);
|
elm_box_pack_end(sub_box, search_entry);
|
||||||
evas_object_smart_callback_add(refresh_btn, "clicked",
|
|
||||||
refresh_btn_clicked_cb, NULL);
|
|
||||||
|
|
||||||
Evas_Object *refresh_btn_img = elm_image_add(refresh_btn);
|
|
||||||
elm_image_file_set(refresh_btn_img, EDJE_PATH, "refresh");
|
|
||||||
elm_object_content_set(refresh_btn, refresh_btn_img);
|
|
||||||
|
|
||||||
evas_object_show(refresh_btn);
|
//Genlist
|
||||||
elm_box_pack_end(box, refresh_btn);
|
Evas_Object *genlist = elm_genlist_add(main_box);
|
||||||
|
|
||||||
elm_object_part_content_set(workspace_ly, "refresh_btn", box);
|
|
||||||
|
|
||||||
Evas_Object *genlist = elm_genlist_add(workspace_ly);
|
|
||||||
elm_object_focus_allow_set(genlist, EINA_FALSE);
|
elm_object_focus_allow_set(genlist, EINA_FALSE);
|
||||||
|
evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
|
||||||
|
EVAS_HINT_EXPAND);
|
||||||
|
|
||||||
evas_object_smart_callback_add(genlist, "expand,request", gl_exp_req, NULL);
|
evas_object_smart_callback_add(genlist, "expand,request", gl_exp_req, NULL);
|
||||||
evas_object_smart_callback_add(genlist, "contract,request", gl_con_req,
|
evas_object_smart_callback_add(genlist, "contract,request", gl_con_req,
|
||||||
NULL);
|
NULL);
|
||||||
evas_object_smart_callback_add(genlist, "expanded", gl_exp, NULL);
|
evas_object_smart_callback_add(genlist, "expanded", gl_exp, NULL);
|
||||||
evas_object_smart_callback_add(genlist, "contracted", gl_con, NULL);
|
evas_object_smart_callback_add(genlist, "contracted", gl_con, NULL);
|
||||||
|
evas_object_show(genlist);
|
||||||
|
elm_box_pack_end(main_box, genlist);
|
||||||
|
|
||||||
elm_object_part_content_set(workspace_ly, "content", genlist);
|
//Show All Files Check
|
||||||
|
Evas_Object *show_all_check = elm_check_add(main_box);
|
||||||
Evas_Object *show_all_check = elm_check_add(workspace_ly);
|
evas_object_size_hint_align_set(show_all_check, 0, 1);
|
||||||
|
evas_object_size_hint_weight_set(show_all_check, EVAS_HINT_EXPAND, 0);
|
||||||
elm_object_text_set(show_all_check, "Show All Files");
|
elm_object_text_set(show_all_check, "Show All Files");
|
||||||
evas_object_smart_callback_add(show_all_check, "changed",
|
evas_object_smart_callback_add(show_all_check, "changed",
|
||||||
show_all_check_changed_cb, NULL);
|
show_all_check_changed_cb, NULL);
|
||||||
elm_object_part_content_set(workspace_ly, "show_all_check", show_all_check);
|
evas_object_show(show_all_check);
|
||||||
|
elm_box_pack_end(main_box, show_all_check);
|
||||||
|
|
||||||
//Default Mode Item Class
|
//Default Mode Item Class
|
||||||
Elm_Genlist_Item_Class *itc;
|
Elm_Genlist_Item_Class *itc;
|
||||||
|
@ -626,14 +674,14 @@ file_browser_init(Evas_Object *parent)
|
||||||
search_itc->func.content_get = gl_search_content_get_cb;
|
search_itc->func.content_get = gl_search_content_get_cb;
|
||||||
bd->search_itc = search_itc;
|
bd->search_itc = search_itc;
|
||||||
|
|
||||||
bd->workspace_ly = workspace_ly;
|
bd->main_box = main_box;
|
||||||
bd->search_entry = search_entry;
|
bd->search_entry = search_entry;
|
||||||
bd->genlist = genlist;
|
bd->genlist = genlist;
|
||||||
bd->show_all_check = show_all_check;
|
bd->show_all_check = show_all_check;
|
||||||
|
|
||||||
elm_object_disabled_set(workspace_ly, EINA_TRUE);
|
elm_object_disabled_set(main_box, EINA_TRUE);
|
||||||
|
|
||||||
return workspace_ly;
|
return main_box;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -647,7 +695,7 @@ file_browser_term(void)
|
||||||
elm_genlist_item_class_free(bd->itc);
|
elm_genlist_item_class_free(bd->itc);
|
||||||
elm_genlist_item_class_free(bd->search_itc);
|
elm_genlist_item_class_free(bd->search_itc);
|
||||||
|
|
||||||
evas_object_del(bd->workspace_ly);
|
evas_object_del(bd->main_box);
|
||||||
|
|
||||||
free(bd);
|
free(bd);
|
||||||
g_bd = NULL;
|
g_bd = NULL;
|
||||||
|
|
Loading…
Reference in New Issue