@feature Moved toolbars to left side panels. Removed grid directory browsing.
Moved the toolbars to panels on the left side in order to make better use of space. Removed the ability to browse using the grid as it is redundant with the entry and file selector.
This commit is contained in:
parent
27709d6126
commit
ba54326c1e
|
@ -106,6 +106,7 @@ struct _Ephoto
|
|||
{
|
||||
Evas_Object *win;
|
||||
Evas_Object *bg;
|
||||
Evas_Object *panel;
|
||||
Evas_Object *pager;
|
||||
|
||||
Evas_Object *thumb_browser;
|
||||
|
@ -139,8 +140,6 @@ struct _Ephoto_Entry
|
|||
Ephoto *ephoto;
|
||||
Elm_Object_Item *item;
|
||||
Eina_List *free_listeners;
|
||||
Eina_Bool is_dir : 1;
|
||||
Eina_Bool is_up : 1;
|
||||
};
|
||||
|
||||
struct _Ephoto_Event_Entry_Create
|
||||
|
@ -153,7 +152,6 @@ void ephoto_entry_free(Ephoto_Entry *entry);
|
|||
void ephoto_entry_free_listener_add(Ephoto_Entry *entry, void (*cb)(void *data, const Ephoto_Entry *entry), const void *data);
|
||||
void ephoto_entry_free_listener_del(Ephoto_Entry *entry, void (*cb)(void *data, const Ephoto_Entry *entry), const void *data);
|
||||
void ephoto_entries_free(Ephoto *ephoto);
|
||||
int ephoto_entries_cmp(const void *pa, const void *pb);
|
||||
|
||||
extern int __log_domain;
|
||||
#define DBG(...) EINA_LOG_DOM_DBG(__log_domain, __VA_ARGS__)
|
||||
|
|
|
@ -259,18 +259,6 @@ ephoto_title_set(Ephoto *ephoto, const char *title)
|
|||
elm_win_title_set(ephoto->win, buf);
|
||||
}
|
||||
|
||||
int
|
||||
ephoto_entries_cmp(const void *pa, const void *pb)
|
||||
{
|
||||
const Ephoto_Entry *a = pa, *b = pb;
|
||||
if (a->is_dir == b->is_dir)
|
||||
return strcoll(a->basename, b->basename);
|
||||
else if (a->is_dir)
|
||||
return -1;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
_ephoto_populate_main(void *data, Eio_File *handler __UNUSED__, const Eina_File_Direct_Info *info)
|
||||
{
|
||||
|
@ -279,26 +267,8 @@ _ephoto_populate_main(void *data, Eio_File *handler __UNUSED__, const Eina_File_
|
|||
Ephoto_Event_Entry_Create *ev;
|
||||
|
||||
e = ephoto_entry_new(ephoto, info->path, info->path + info->name_start);
|
||||
if (info->type == EINA_FILE_DIR) e->is_dir = EINA_TRUE;
|
||||
else if (info->type == EINA_FILE_REG) e->is_dir = EINA_FALSE;
|
||||
else e->is_dir = !_ephoto_eina_file_direct_info_image_useful(info);
|
||||
|
||||
if (!ephoto->entries)
|
||||
ephoto->entries = eina_list_append(ephoto->entries, e);
|
||||
else
|
||||
{
|
||||
int near_cmp;
|
||||
Eina_List *near_node = eina_list_search_sorted_near_list
|
||||
(ephoto->entries, ephoto_entries_cmp, e, &near_cmp);
|
||||
|
||||
if (near_cmp < 0)
|
||||
ephoto->entries = eina_list_append_relative_list
|
||||
(ephoto->entries, e, near_node);
|
||||
else
|
||||
ephoto->entries = eina_list_prepend_relative_list
|
||||
(ephoto->entries, e, near_node);
|
||||
}
|
||||
|
||||
ephoto->entries = eina_list_append(ephoto->entries, e);
|
||||
ev = calloc(1, sizeof(Ephoto_Event_Entry_Create));
|
||||
ev->entry = e;
|
||||
|
||||
|
@ -311,7 +281,7 @@ _ephoto_populate_filter(void *data __UNUSED__, Eio_File *handler __UNUSED__, con
|
|||
const char *bname = info->path + info->name_start;
|
||||
|
||||
if (bname[0] == '.') return EINA_FALSE;
|
||||
if (info->type == EINA_FILE_DIR) return EINA_TRUE;
|
||||
if (info->type == EINA_FILE_DIR) return EINA_FALSE;
|
||||
|
||||
return _ephoto_eina_file_direct_info_image_useful(info);
|
||||
}
|
||||
|
|
|
@ -20,7 +20,8 @@ struct _Ephoto_Single_Browser
|
|||
Ephoto *ephoto;
|
||||
Evas_Object *main;
|
||||
Evas_Object *bar;
|
||||
Evas_Object *edje;
|
||||
Evas_Object *table;
|
||||
Evas_Object *panel;
|
||||
Evas_Object *viewer;
|
||||
const char *pending_path;
|
||||
Ephoto_Entry *entry;
|
||||
|
@ -422,25 +423,16 @@ _mouse_wheel(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *ev
|
|||
static Ephoto_Entry *
|
||||
_first_entry_find(Ephoto_Single_Browser *sb)
|
||||
{
|
||||
const Eina_List *l;
|
||||
Ephoto_Entry *entry;
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sb->ephoto, NULL);
|
||||
|
||||
EINA_LIST_FOREACH(sb->ephoto->entries, l, entry)
|
||||
if (!entry->is_dir) return entry;
|
||||
return NULL;
|
||||
return eina_list_nth(sb->ephoto->entries, 0);
|
||||
}
|
||||
|
||||
static Ephoto_Entry *
|
||||
_last_entry_find(Ephoto_Single_Browser *sb)
|
||||
{
|
||||
const Eina_List *l;
|
||||
Ephoto_Entry *entry;
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sb->ephoto, NULL);
|
||||
|
||||
EINA_LIST_REVERSE_FOREACH(sb->ephoto->entries, l, entry)
|
||||
if (!entry->is_dir) return entry;
|
||||
return NULL;
|
||||
return eina_list_last_data_get(sb->ephoto->entries);
|
||||
}
|
||||
|
||||
Ephoto_Orient
|
||||
|
@ -490,14 +482,19 @@ _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb)
|
|||
if (sb->entry)
|
||||
{
|
||||
const char *bname = ecore_file_file_get(sb->entry->path);
|
||||
|
||||
elm_table_clear(sb->table, EINA_FALSE);
|
||||
|
||||
sb->viewer = _viewer_add(sb->main, sb->entry->path);
|
||||
elm_layout_box_append(sb->main, "elm.box.content", sb->viewer);
|
||||
elm_table_pack(sb->table, sb->viewer, 0, 0, 4, 1);
|
||||
evas_object_show(sb->viewer);
|
||||
evas_object_event_callback_add
|
||||
(sb->viewer, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel, sb);
|
||||
ephoto_title_set(sb->ephoto, bname);
|
||||
sb->orient = ephoto_file_orient_get(sb->entry->path);
|
||||
_orient_apply(sb);
|
||||
|
||||
elm_table_pack(sb->table, sb->panel, 0, 0, 1, 1);
|
||||
}
|
||||
|
||||
elm_object_focus_set(sb->main, EINA_TRUE);
|
||||
|
@ -566,8 +563,7 @@ _next_entry(Ephoto_Single_Browser *sb)
|
|||
Eina_List *node;
|
||||
EINA_SAFETY_ON_NULL_RETURN(sb->entry);
|
||||
|
||||
node = eina_list_search_sorted_list(sb->ephoto->entries, ephoto_entries_cmp,
|
||||
sb->entry);
|
||||
node = eina_list_data_find_list(sb->ephoto->entries, sb->entry);
|
||||
if (!node) return;
|
||||
if ((node = node->next))
|
||||
entry = node->data;
|
||||
|
@ -587,15 +583,10 @@ _prev_entry(Ephoto_Single_Browser *sb)
|
|||
Ephoto_Entry *entry = NULL;
|
||||
EINA_SAFETY_ON_NULL_RETURN(sb->entry);
|
||||
|
||||
node = eina_list_search_sorted_list(sb->ephoto->entries, ephoto_entries_cmp,
|
||||
sb->entry);
|
||||
node = eina_list_data_find_list(sb->ephoto->entries, sb->entry);
|
||||
if (!node) return;
|
||||
if ((node = node->prev))
|
||||
{
|
||||
entry = node->data;
|
||||
if (entry->is_dir)
|
||||
entry = NULL;
|
||||
}
|
||||
entry = node->data;
|
||||
if (!entry)
|
||||
entry = _last_entry_find(sb);
|
||||
if (entry)
|
||||
|
@ -801,38 +792,47 @@ _ephoto_single_entry_create(void *data, int type __UNUSED__, void *event __UNUSE
|
|||
Evas_Object *
|
||||
ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent)
|
||||
{
|
||||
Evas_Object *layout = elm_layout_add(parent);
|
||||
Evas_Object *box = elm_box_add(parent);
|
||||
Elm_Object_Item *icon;
|
||||
Ephoto_Single_Browser *sb;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(layout, NULL);
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(box, NULL);
|
||||
|
||||
sb = calloc(1, sizeof(Ephoto_Single_Browser));
|
||||
EINA_SAFETY_ON_NULL_GOTO(sb, error);
|
||||
sb->ephoto = ephoto;
|
||||
sb->main = layout;
|
||||
sb->edje = elm_layout_edje_get(layout);
|
||||
|
||||
sb->ephoto = ephoto;
|
||||
sb->main = box;
|
||||
|
||||
evas_object_size_hint_weight_set(sb->main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(sb->main, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_event_callback_add(sb->main, EVAS_CALLBACK_DEL, _main_del, sb);
|
||||
evas_object_event_callback_add
|
||||
(sb->main, EVAS_CALLBACK_KEY_DOWN, _key_down, sb);
|
||||
evas_object_data_set(sb->main, "single_browser", sb);
|
||||
|
||||
if (!elm_layout_theme_set(sb->main, "layout", "application", "toolbar-vbox"))
|
||||
{
|
||||
ERR("Could not load style 'toolbar-vbox' from theme!");
|
||||
goto error;
|
||||
}
|
||||
sb->bar = edje_object_part_external_object_get(sb->edje, "elm.external.toolbar");
|
||||
if (!sb->bar)
|
||||
{
|
||||
ERR("Could not find toolbar in layout!");
|
||||
goto error;
|
||||
}
|
||||
elm_toolbar_homogeneous_set(sb->bar, EINA_FALSE);
|
||||
elm_toolbar_shrink_mode_set(sb->bar, ELM_TOOLBAR_SHRINK_MENU);
|
||||
elm_toolbar_menu_parent_set(sb->bar, parent);
|
||||
sb->table = elm_table_add(sb->main);
|
||||
evas_object_size_hint_weight_set(sb->table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(sb->table, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_box_pack_end(sb->main, sb->table);
|
||||
evas_object_show(sb->table);
|
||||
|
||||
sb->panel = elm_panel_add(sb->table);
|
||||
EINA_SAFETY_ON_NULL_GOTO(sb->panel, error);
|
||||
elm_panel_orient_set(sb->panel, ELM_PANEL_ORIENT_LEFT);
|
||||
evas_object_size_hint_weight_set(sb->panel, 0.0, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(sb->panel, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_panel_hidden_set(sb->panel, EINA_TRUE);
|
||||
elm_table_pack(sb->table, sb->panel, 0, 0, 1, 1);
|
||||
evas_object_show(sb->panel);
|
||||
|
||||
sb->bar = elm_toolbar_add(sb->panel);
|
||||
EINA_SAFETY_ON_NULL_GOTO(sb->bar, error);
|
||||
elm_toolbar_horizontal_set(sb->bar, EINA_FALSE);
|
||||
elm_toolbar_shrink_mode_set(sb->bar, ELM_TOOLBAR_SHRINK_SCROLL);
|
||||
elm_toolbar_select_mode_set(sb->bar, ELM_OBJECT_SELECT_MODE_NONE);
|
||||
evas_object_size_hint_weight_set(sb->bar, 0.0, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(sb->bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
|
||||
icon = elm_toolbar_item_append(sb->bar, "go-home", "Back", _back, sb);
|
||||
elm_toolbar_item_priority_set(icon, 150);
|
||||
|
@ -868,6 +868,9 @@ ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent)
|
|||
icon = elm_toolbar_item_append(sb->bar, "go-last", "Last", _go_last, sb);
|
||||
elm_toolbar_item_priority_set(icon, 60);
|
||||
|
||||
elm_object_content_set(sb->panel, sb->bar);
|
||||
evas_object_show(sb->bar);
|
||||
|
||||
sb->handlers = eina_list_append
|
||||
(sb->handlers, ecore_event_handler_add
|
||||
(EPHOTO_EVENT_POPULATE_END, _ephoto_single_populate_end, sb));
|
||||
|
|
|
@ -202,7 +202,6 @@ ephoto_slideshow_entry_set(Evas_Object *obj, Ephoto_Entry *entry)
|
|||
EINA_LIST_FOREACH(ss->ephoto->entries, l, itr)
|
||||
{
|
||||
Elm_Object_Item *slideshow_item;
|
||||
if (itr->is_dir) continue;
|
||||
slideshow_item = elm_slideshow_item_add(ss->slideshow, &_item_cls, itr);
|
||||
if (itr == entry) elm_slideshow_item_show(slideshow_item);
|
||||
}
|
||||
|
|
|
@ -14,10 +14,11 @@ struct _Ephoto_Thumb_Browser
|
|||
{
|
||||
Ephoto *ephoto;
|
||||
Evas_Object *main;
|
||||
Evas_Object *table;
|
||||
Evas_Object *bar;
|
||||
Evas_Object *edje;
|
||||
Evas_Object *entry;
|
||||
Evas_Object *grid;
|
||||
Evas_Object *panel;
|
||||
Eio_File *ls;
|
||||
Eina_List *todo_items;
|
||||
Eina_List *grid_items;
|
||||
|
@ -48,16 +49,6 @@ _grid_items_free(Ephoto_Thumb_Browser *tb)
|
|||
tb->grid_items = NULL;
|
||||
}
|
||||
|
||||
static Ephoto_Entry *
|
||||
_first_file_entry_find(Ephoto_Thumb_Browser *tb)
|
||||
{
|
||||
const Eina_List *l;
|
||||
Ephoto_Entry *entry;
|
||||
EINA_LIST_FOREACH(tb->ephoto->entries, l, entry)
|
||||
if (!entry->is_dir) return entry;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char *
|
||||
_ephoto_thumb_item_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
|
||||
{
|
||||
|
@ -65,30 +56,6 @@ _ephoto_thumb_item_text_get(void *data, Evas_Object *obj __UNUSED__, const char
|
|||
return strdup(e->label);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_ephoto_thumb_up_icon_get(void *data __UNUSED__, Evas_Object *obj, const char *part __UNUSED__)
|
||||
{
|
||||
Evas_Object *ic;
|
||||
|
||||
ic = elm_icon_add(obj);
|
||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
||||
elm_icon_standard_set(ic, "go-up");
|
||||
|
||||
return ic;
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_ephoto_thumb_dir_icon_get(void *data __UNUSED__, Evas_Object *obj, const char *part __UNUSED__)
|
||||
{
|
||||
Evas_Object *ic;
|
||||
|
||||
ic = elm_icon_add(obj);
|
||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
||||
elm_icon_standard_set(ic, "folder");
|
||||
|
||||
return ic;
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_ephoto_thumb_file_icon_get(void *data, Evas_Object *obj, const char *part __UNUSED__)
|
||||
{
|
||||
|
@ -107,65 +74,17 @@ _ephoto_thumb_item_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
|
|||
*/
|
||||
}
|
||||
|
||||
static Elm_Gengrid_Item_Class _ephoto_thumb_up_class;
|
||||
static Elm_Gengrid_Item_Class _ephoto_thumb_dir_class;
|
||||
static Elm_Gengrid_Item_Class _ephoto_thumb_file_class;
|
||||
|
||||
static int
|
||||
_entry_cmp(const void *pa, const void *pb)
|
||||
{
|
||||
const Elm_Object_Item *ia = pa;
|
||||
const Ephoto_Entry *a, *b = pb;
|
||||
|
||||
a = elm_object_item_data_get(ia);
|
||||
|
||||
if (a->is_dir == b->is_dir)
|
||||
return strcoll(a->basename, b->basename);
|
||||
else if (a->is_dir)
|
||||
return -1;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
_entry_item_add(Ephoto_Thumb_Browser *tb, Ephoto_Entry *e)
|
||||
{
|
||||
const Elm_Gengrid_Item_Class *ic;
|
||||
int near_cmp;
|
||||
Elm_Object_Item *near_item = NULL;
|
||||
Eina_List *near_node = NULL;
|
||||
|
||||
near_node = eina_list_search_sorted_near_list
|
||||
(tb->grid_items, _entry_cmp, e, &near_cmp);
|
||||
ic = &_ephoto_thumb_file_class;
|
||||
|
||||
if (near_node)
|
||||
near_item = near_node->data;
|
||||
|
||||
if (e->is_dir) ic = &_ephoto_thumb_dir_class;
|
||||
else ic = &_ephoto_thumb_file_class;
|
||||
|
||||
if (!near_item)
|
||||
{
|
||||
e->item = elm_gengrid_item_append(tb->grid, ic, e, NULL, NULL);
|
||||
tb->grid_items = eina_list_append(tb->grid_items, e->item);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (near_cmp < 0)
|
||||
{
|
||||
e->item = elm_gengrid_item_insert_after
|
||||
(tb->grid, ic, e, near_item, NULL, NULL);
|
||||
tb->grid_items = eina_list_append_relative
|
||||
(tb->grid_items, e->item, near_item);
|
||||
}
|
||||
else
|
||||
{
|
||||
e->item = elm_gengrid_item_insert_before
|
||||
(tb->grid, ic, e, near_item, NULL, NULL);
|
||||
tb->grid_items = eina_list_prepend_relative
|
||||
(tb->grid_items, e->item, near_item);
|
||||
}
|
||||
}
|
||||
e->item = elm_gengrid_item_append(tb->grid, ic, e, NULL, NULL);
|
||||
tb->grid_items = eina_list_append(tb->grid_items, e->item);
|
||||
|
||||
if (e->item)
|
||||
elm_object_item_data_set(e->item, e);
|
||||
|
@ -177,27 +96,6 @@ _entry_item_add(Ephoto_Thumb_Browser *tb, Ephoto_Entry *e)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_up_item_add_if_required(Ephoto_Thumb_Browser *tb)
|
||||
{
|
||||
Ephoto_Entry *entry;
|
||||
char *parent_dir;
|
||||
|
||||
if ((strcmp(tb->ephoto->config->directory, "/") == 0))
|
||||
return;
|
||||
|
||||
parent_dir = ecore_file_dir_get(tb->ephoto->config->directory);
|
||||
if (!parent_dir) return;
|
||||
|
||||
entry = ephoto_entry_new(tb->ephoto, parent_dir, PARENT_DIR);
|
||||
free(parent_dir);
|
||||
EINA_SAFETY_ON_NULL_RETURN(entry);
|
||||
entry->is_up = EINA_TRUE;
|
||||
entry->is_dir = EINA_TRUE;
|
||||
entry->item = elm_gengrid_item_append
|
||||
(tb->grid, &_ephoto_thumb_up_class, entry, NULL, NULL);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_todo_items_process(void *data)
|
||||
{
|
||||
|
@ -224,10 +122,7 @@ _ephoto_thumb_selected(void *data, Evas_Object *o __UNUSED__, void *event_info)
|
|||
|
||||
elm_gengrid_item_selected_set(it, EINA_FALSE);
|
||||
|
||||
if (e->is_dir)
|
||||
ephoto_directory_set(tb->ephoto, e->path);
|
||||
else
|
||||
evas_object_smart_callback_call(tb->main, "view", e);
|
||||
evas_object_smart_callback_call(tb->main, "view", e);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -292,13 +187,10 @@ _view_single(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
|
|||
Ephoto_Entry *entry;
|
||||
|
||||
if (it) entry = elm_object_item_data_get(it);
|
||||
else entry = _first_file_entry_find(tb);
|
||||
else entry = eina_list_nth(tb->ephoto->entries, 0);
|
||||
|
||||
if (!entry) return;
|
||||
if (entry->is_dir)
|
||||
ephoto_directory_set(tb->ephoto, entry->path);
|
||||
else
|
||||
evas_object_smart_callback_call(tb->main, "view", entry);
|
||||
evas_object_smart_callback_call(tb->main, "view", entry);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -309,7 +201,7 @@ _slideshow(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
|
|||
Ephoto_Entry *entry;
|
||||
|
||||
if (it) entry = elm_object_item_data_get(it);
|
||||
else entry = _first_file_entry_find(tb);
|
||||
else entry = eina_list_nth(tb->ephoto->entries, 0);
|
||||
|
||||
if (!entry) return;
|
||||
evas_object_smart_callback_call(tb->main, "slideshow", entry);
|
||||
|
@ -345,7 +237,7 @@ _key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event
|
|||
Elm_Object_Item *it = elm_gengrid_selected_item_get(tb->grid);
|
||||
Ephoto_Entry *entry;
|
||||
if (it) entry = elm_object_item_data_get(it);
|
||||
else entry = _first_file_entry_find(tb);
|
||||
else entry = eina_list_nth(tb->grid_items, 0);
|
||||
|
||||
if (entry)
|
||||
evas_object_smart_callback_call(tb->main, "slideshow", entry);
|
||||
|
@ -389,7 +281,6 @@ _ephoto_thumb_populate_start(void *data, int type __UNUSED__, void *event __UNUS
|
|||
_grid_items_free(tb);
|
||||
elm_gengrid_clear(tb->grid);
|
||||
elm_fileselector_path_set(tb->entry, tb->ephoto->config->directory);
|
||||
_up_item_add_if_required(tb);
|
||||
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
@ -434,28 +325,16 @@ _ephoto_thumb_entry_create(void *data, int type __UNUSED__, void *event)
|
|||
Evas_Object *
|
||||
ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent)
|
||||
{
|
||||
Evas_Object *layout = elm_layout_add(parent);
|
||||
Evas_Object *box = elm_box_add(parent);
|
||||
Elm_Object_Item *icon;
|
||||
Evas_Object *min, *max, *ic;
|
||||
Ephoto_Thumb_Browser *tb;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(layout, NULL);
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(box, NULL);
|
||||
|
||||
tb = calloc(1, sizeof(Ephoto_Thumb_Browser));
|
||||
EINA_SAFETY_ON_NULL_GOTO(tb, error);
|
||||
|
||||
_ephoto_thumb_up_class.item_style = "default";
|
||||
_ephoto_thumb_up_class.func.text_get = _ephoto_thumb_item_text_get;
|
||||
_ephoto_thumb_up_class.func.content_get = _ephoto_thumb_up_icon_get;
|
||||
_ephoto_thumb_up_class.func.state_get = NULL;
|
||||
_ephoto_thumb_up_class.func.del = _ephoto_thumb_item_del;
|
||||
|
||||
_ephoto_thumb_dir_class.item_style = "default";
|
||||
_ephoto_thumb_dir_class.func.text_get = _ephoto_thumb_item_text_get;
|
||||
_ephoto_thumb_dir_class.func.content_get = _ephoto_thumb_dir_icon_get;
|
||||
_ephoto_thumb_dir_class.func.state_get = NULL;
|
||||
_ephoto_thumb_dir_class.func.del = _ephoto_thumb_item_del;
|
||||
|
||||
_ephoto_thumb_file_class.item_style = "thumb";
|
||||
_ephoto_thumb_file_class.func.text_get = _ephoto_thumb_item_text_get;
|
||||
_ephoto_thumb_file_class.func.content_get = _ephoto_thumb_file_icon_get;
|
||||
|
@ -465,40 +344,15 @@ ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent)
|
|||
elm_theme_extension_add(NULL, PACKAGE_DATA_DIR "/themes/default/ephoto.edj");
|
||||
|
||||
tb->ephoto = ephoto;
|
||||
tb->edje = elm_layout_edje_get(layout);
|
||||
tb->main = layout;
|
||||
tb->main = box;
|
||||
|
||||
evas_object_size_hint_weight_set(tb->main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(tb->main, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_event_callback_add(tb->main, EVAS_CALLBACK_DEL, _main_del, tb);
|
||||
evas_object_event_callback_add
|
||||
(tb->main, EVAS_CALLBACK_KEY_DOWN, _key_down, tb);
|
||||
evas_object_data_set(tb->main, "thumb_browser", tb);
|
||||
|
||||
if (!elm_layout_theme_set(tb->main, "layout", "application", "toolbar-vbox"))
|
||||
{
|
||||
ERR("Could not load style 'toolbar-vbox' from theme!");
|
||||
goto error;
|
||||
}
|
||||
tb->bar = edje_object_part_external_object_get(tb->edje, "elm.external.toolbar");
|
||||
if (!tb->bar)
|
||||
{
|
||||
ERR("Could not find toolbar in layout!");
|
||||
goto error;
|
||||
}
|
||||
|
||||
elm_toolbar_homogeneous_set(tb->bar, EINA_FALSE);
|
||||
elm_toolbar_shrink_mode_set(tb->bar, ELM_TOOLBAR_SHRINK_MENU);
|
||||
elm_toolbar_menu_parent_set(tb->bar, parent);
|
||||
elm_toolbar_select_mode_set(tb->bar, ELM_OBJECT_SELECT_MODE_NONE);
|
||||
|
||||
elm_toolbar_item_append(tb->bar, "image", "View Single", _view_single, tb);
|
||||
elm_toolbar_item_append(tb->bar, "media-playback-start", "Slideshow", _slideshow, tb);
|
||||
icon = elm_toolbar_item_append(tb->bar, "zoom-in", "Zoom In", _zoom_in, tb);
|
||||
max = elm_object_item_widget_get(icon);
|
||||
icon = elm_toolbar_item_append(tb->bar, "zoom-out", "Zoom Out", _zoom_out, tb);
|
||||
min = elm_object_item_widget_get(icon);
|
||||
evas_object_data_set(max, "min", min);
|
||||
evas_object_data_set(min, "max", max);
|
||||
|
||||
ic = elm_icon_add(tb->main);
|
||||
elm_icon_standard_set(ic, "folder");
|
||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
||||
|
@ -516,10 +370,16 @@ ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent)
|
|||
(tb->entry, "file,chosen", _changed_dir, tb);
|
||||
evas_object_smart_callback_add
|
||||
(tb->entry, "activated", _changed_dir_text, tb);
|
||||
elm_box_pack_end(tb->main, tb->entry);
|
||||
evas_object_show(tb->entry);
|
||||
elm_layout_box_append(tb->main, "elm.box.content", tb->entry);
|
||||
|
||||
tb->grid = elm_gengrid_add(tb->main);
|
||||
tb->table = elm_table_add(tb->main);
|
||||
evas_object_size_hint_weight_set(tb->table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(tb->table, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_box_pack_end(tb->main, tb->table);
|
||||
evas_object_show(tb->table);
|
||||
|
||||
tb->grid = elm_gengrid_add(tb->table);
|
||||
EINA_SAFETY_ON_NULL_GOTO(tb->grid, error);
|
||||
evas_object_size_hint_weight_set
|
||||
(tb->grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
|
@ -538,7 +398,36 @@ ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent)
|
|||
_zoom_set(tb, tb->ephoto->config->thumb_size);
|
||||
|
||||
evas_object_show(tb->grid);
|
||||
elm_layout_box_append(tb->main, "elm.box.content", tb->grid);
|
||||
elm_table_pack(tb->table, tb->grid, 0, 0, 4, 1);
|
||||
|
||||
tb->panel = elm_panel_add(tb->table);
|
||||
EINA_SAFETY_ON_NULL_GOTO(tb->panel, error);
|
||||
elm_panel_orient_set(tb->panel, ELM_PANEL_ORIENT_LEFT);
|
||||
evas_object_size_hint_weight_set(tb->panel, 0.0, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(tb->panel, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_panel_hidden_set(tb->panel, EINA_TRUE);
|
||||
elm_table_pack(tb->table, tb->panel, 0, 0, 1, 1);
|
||||
evas_object_show(tb->panel);
|
||||
|
||||
tb->bar = elm_toolbar_add(tb->panel);
|
||||
EINA_SAFETY_ON_NULL_GOTO(tb->bar, error);
|
||||
elm_toolbar_horizontal_set(tb->bar, EINA_FALSE);
|
||||
elm_toolbar_shrink_mode_set(tb->bar, ELM_TOOLBAR_SHRINK_SCROLL);
|
||||
elm_toolbar_select_mode_set(tb->bar, ELM_OBJECT_SELECT_MODE_NONE);
|
||||
evas_object_size_hint_weight_set(tb->bar, 0.0, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(tb->bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
|
||||
elm_toolbar_item_append(tb->bar, "image", "View Single", _view_single, tb);
|
||||
elm_toolbar_item_append(tb->bar, "media-playback-start", "Slideshow", _slideshow, tb);
|
||||
icon = elm_toolbar_item_append(tb->bar, "zoom-in", "Zoom In", _zoom_in, tb);
|
||||
max = elm_object_item_widget_get(icon);
|
||||
icon = elm_toolbar_item_append(tb->bar, "zoom-out", "Zoom Out", _zoom_out, tb);
|
||||
min = elm_object_item_widget_get(icon);
|
||||
evas_object_data_set(max, "min", min);
|
||||
evas_object_data_set(min, "max", max);
|
||||
|
||||
elm_object_content_set(tb->panel, tb->bar);
|
||||
evas_object_show(tb->bar);
|
||||
|
||||
tb->handlers = eina_list_append
|
||||
(tb->handlers, ecore_event_handler_add
|
||||
|
|
Loading…
Reference in New Issue