diff --git a/data/images/Makefile.am b/data/images/Makefile.am
index ad8d7b3..dfad797 100644
--- a/data/images/Makefile.am
+++ b/data/images/Makefile.am
@@ -1,7 +1,7 @@
AUTOMAKE_OPTIONS = subdir-objects
MAINTAINERCLEANFILES = Makefile.in Makefile
-EXTRA_DIST = ephoto.png
+EXTRA_DIST = ephoto.png grid.png single.png
filesdir = $(datadir)/$(PACKAGE)/images
-files_DATA = ephoto.png
+files_DATA = ephoto.png grid.png single.png
diff --git a/data/themes/Makefile.am b/data/themes/Makefile.am
index 1bc217e..19f5e9c 100644
--- a/data/themes/Makefile.am
+++ b/data/themes/Makefile.am
@@ -5,19 +5,22 @@ EDJE_CC = @edje_cc@
EDJE_FLAGS = -id $(top_srcdir)/data/themes
filesdir = $(datadir)/$(PACKAGE)/themes
-files_DATA = crop.edj
+files_DATA = ephoto.edj
-EXTRA_DIST = crop.edc \
- sel_border.png \
- sel_corner1.png \
- sel_corner3.png \
- sel_corner5.png \
- sel_corner7.png
+EXTRA_DIST = ephoto.edc \
+ images/sel_border.png \
+ images/sel_corner1.png \
+ images/sel_corner3.png \
+ images/sel_corner5.png \
+ images/sel_corner7.png \
+ images/shadow_circle_horiz.png \
+ images/shadow_circle_vert.png \
+ images/tile.png
-crop.edj: Makefile $(EXTRA_DIST)
+ephoto.edj: Makefile $(EXTRA_DIST)
$(EDJE_CC) $(EDJE_FLAGS) \
- $(top_srcdir)/data/themes/crop.edc \
- $(top_builddir)/data/themes/crop.edj
+ $(top_srcdir)/data/themes/ephoto.edc \
+ $(top_builddir)/data/themes/ephoto.edj
clean-local:
rm -f *.edj
diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am
index b369bed..14fe19b 100644
--- a/src/bin/Makefile.am
+++ b/src/bin/Makefile.am
@@ -24,6 +24,7 @@ ephoto_SOURCES = \
ephoto_color.c \
ephoto_config.c \
ephoto_cropper.c \
+ ephoto_directory_browser.c \
ephoto_editor.c \
ephoto_file.c \
ephoto_filters.c \
diff --git a/src/bin/ephoto.c b/src/bin/ephoto.c
index 642a41f..b4de0a9 100644
--- a/src/bin/ephoto.c
+++ b/src/bin/ephoto.c
@@ -11,7 +11,7 @@ elm_main(int argc, char **argv)
elm_need_efreet();
elm_language_set("");
elm_app_compile_data_dir_set(PACKAGE_DATA_DIR);
- elm_app_info_set(elm_main, "ephoto", "themes/crop.edj");
+ elm_app_info_set(elm_main, "ephoto", "themes/ephoto.edj");
#if HAVE_GETTEXT && ENABLE_NLS
elm_app_compile_locale_set(LOCALEDIR);
bindtextdomain(PACKAGE, elm_app_locale_dir_get());
diff --git a/src/bin/ephoto.h b/src/bin/ephoto.h
index 29b5a95..77ba45d 100644
--- a/src/bin/ephoto.h
+++ b/src/bin/ephoto.h
@@ -59,6 +59,7 @@ Evas_Object *ephoto_thumb_add(Ephoto *ephoto, Evas_Object *parent,
void ephoto_thumb_path_set(Evas_Object *obj, const char *path);
void ephoto_directory_set(Ephoto *ephoto, const char *path,
Elm_Object_Item *expanded, Eina_Bool dirs_only, Eina_Bool thumbs_only);
+void ephoto_show_folders(Ephoto *ephoto, Eina_Bool toggle);
/*config panel functions*/
Eina_Bool ephoto_config_init(Ephoto *em);
@@ -68,6 +69,7 @@ void ephoto_config_main(Ephoto *em);
/*single image functions*/
Evas_Object *ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent);
+void ephoto_single_browser_show_controls(Ephoto *ephoto);
void ephoto_single_browser_entries_set(Evas_Object *obj, Eina_List *entries);
void ephoto_single_browser_entry_set(Evas_Object *obj, Ephoto_Entry *entry);
void ephoto_single_browser_focus_set(Ephoto *ephoto);
@@ -80,6 +82,8 @@ void ephoto_single_browser_image_data_update(Evas_Object *main,
void ephoto_single_browser_image_data_done(Evas_Object *main,
unsigned int *image_data, Evas_Coord w, Evas_Coord h);
void ephoto_single_browser_cancel_editing(Evas_Object *main);
+void ephoto_single_browser_slideshow(Evas_Object *obj);
+void ephoto_single_browser_adjust_offsets(Ephoto *ephoto);
/* smart callbacks called: "back" - the user wants to go back to the previous
* screen. */
@@ -87,19 +91,27 @@ void ephoto_single_browser_cancel_editing(Evas_Object *main);
Evas_Object *ephoto_slideshow_add(Ephoto *ephoto, Evas_Object *parent);
void ephoto_slideshow_entries_set(Evas_Object *obj, Eina_List *entries);
void ephoto_slideshow_entry_set(Evas_Object *obj, Ephoto_Entry *entry);
+void ephoto_slideshow_show_controls(Ephoto *ephoto);
/* smart callbacks called: "back" - the user wants to go back to the previous
* screen. */
/*thumbnail browser functions*/
Evas_Object *ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent);
-void ephoto_thumb_browser_fsel_clear(Ephoto *ephoto);
-void ephoto_thumb_browser_top_dir_set(Ephoto *ephoto, const char *dir);
+void ephoto_thumb_browser_show_controls(Ephoto *ephoto);
void ephoto_thumb_browser_insert(Ephoto *ephoto, Ephoto_Entry *entry);
void ephoto_thumb_browser_remove(Ephoto *ephoto, Ephoto_Entry *entry);
void ephoto_thumb_browser_update(Ephoto *ephoto, Ephoto_Entry *entry);
+void ephoto_thumb_browser_update_info_label(Ephoto *ephoto);
+void ephoto_thumb_browser_slideshow(Evas_Object *obj);
+void ephoto_thumb_browser_paste(Ephoto *ephoto, Elm_Object_Item *item);
/* smart callbacks called: "selected" - an item in the thumb browser is
* selected. The selected Ephoto_Entry is passed as event_info argument. */
+/*directory browser functions*/
+Evas_Object *ephoto_directory_browser_add(Ephoto *ephoto, Evas_Object *parent);
+void ephoto_directory_browser_initialize_structure(Ephoto *ephoto);
+void ephoto_directory_browser_top_dir_set(Ephoto *ephoto, const char *dir);
+
/*thumbnailing functions taken from enlightenment*/
int e_thumb_init(void);
int e_thumb_shutdown(void);
@@ -116,18 +128,18 @@ int e_ipc_init(void);
int e_ipc_shutdown(void);
/*editing functions*/
-Evas_Object *ephoto_editor_add(Evas_Object *parent, const char *title,
+Evas_Object *ephoto_editor_add(Ephoto *ephoto, const char *title,
const char *data_name, void *data);
void ephoto_editor_del(Evas_Object *obj);
-void ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
+void ephoto_cropper_add(Ephoto *ephoto, Evas_Object *main, Evas_Object *parent,
Evas_Object *image_parent, Evas_Object *image);
-void ephoto_bcg_add(Evas_Object *main, Evas_Object *parent,
+void ephoto_bcg_add(Ephoto *ephoto, Evas_Object *main, Evas_Object *parent,
Evas_Object *image);
-void ephoto_hsv_add(Evas_Object *main, Evas_Object *parent,
+void ephoto_hsv_add(Ephoto *ephoto, Evas_Object *main, Evas_Object *parent,
Evas_Object *image);
-void ephoto_color_add(Evas_Object *main, Evas_Object *parent,
+void ephoto_color_add(Ephoto *ephoto, Evas_Object *main, Evas_Object *parent,
Evas_Object *image);
-void ephoto_red_eye_add(Evas_Object *main, Evas_Object *parent,
+void ephoto_red_eye_add(Ephoto *ephoto, Evas_Object *main, Evas_Object *parent,
Evas_Object *image);
void ephoto_filter_blur(Evas_Object *main, Evas_Object *image);
void ephoto_filter_sharpen(Evas_Object *main, Evas_Object *image);
@@ -196,14 +208,12 @@ struct _Ephoto_Config
int window_width;
int window_height;
Eina_Bool fsel_hide;
- Eina_Bool tool_hide;
double lpane_size;
const char *open;
Eina_Bool prompts;
Eina_Bool drop;
Evas_Object *slide_time;
Evas_Object *slide_trans;
- Evas_Object *hide_toolbar;
Evas_Object *open_dir;
Evas_Object *open_dir_custom;
Evas_Object *show_prompts;
@@ -213,12 +223,18 @@ struct _Ephoto_Config
struct _Ephoto
{
Evas_Object *win;
- Evas_Object *panel;
+ Evas_Object *layout;
Evas_Object *pager;
+ Evas_Object *statusbar;
+ Evas_Object *controls_left;
+ Evas_Object *controls_right;
+ Evas_Object *infolabel;
Evas_Object *thumb_browser;
Evas_Object *single_browser;
Evas_Object *slideshow;
+ Evas_Object *dir_browser;
+ Evas_Object *right_menu;
Elm_Object_Item *tb;
Elm_Object_Item *sb;
Elm_Object_Item *sl;
@@ -228,10 +244,18 @@ struct _Ephoto
Eina_List *searchentries;
Eina_List *thumbs;
+ Eina_Bool blocking;
+ Eina_Bool menu_blocking;
+ Eina_Bool hover_blocking;
+ Eina_Bool right_blocking;
+ Eina_Bool folders_toggle;
+ Eina_Bool editor_blocking;
+
Ecore_File_Monitor *monitor;
Ecore_Idler *file_idler;
Eina_List *file_idler_pos;
Eina_List *upload_handlers;
+ Ecore_Timer *overlay_timer;
Ecore_Con_Url *url_up;
char *url_ret;
char *upload_error;
@@ -256,7 +280,6 @@ struct _Ephoto
Ephoto_State state, prev_state;
Ephoto_Config *config;
- Ephoto_Entry *thumb_entry;
};
struct _Ephoto_Entry
diff --git a/src/bin/ephoto_bcg.c b/src/bin/ephoto_bcg.c
index a345f7b..389f09b 100644
--- a/src/bin/ephoto_bcg.c
+++ b/src/bin/ephoto_bcg.c
@@ -317,7 +317,7 @@ _editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
void
-ephoto_bcg_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
+ephoto_bcg_add(Ephoto *ephoto, Evas_Object *main, Evas_Object *parent, Evas_Object *image)
{
Evas_Object *slider;
Ephoto_BCG *ebcg;
@@ -343,7 +343,7 @@ ephoto_bcg_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
memcpy(ebcg->original_im_data, im_data,
sizeof(unsigned int) * ebcg->w * ebcg->h);
- ebcg->editor = ephoto_editor_add(parent, _("Brightness/Contrast/Gamma"),
+ ebcg->editor = ephoto_editor_add(ephoto, _("Brightness/Contrast/Gamma"),
"ebcg", ebcg);
evas_object_event_callback_add(ebcg->editor, EVAS_CALLBACK_DEL, _editor_del,
ebcg);
diff --git a/src/bin/ephoto_color.c b/src/bin/ephoto_color.c
index cc5d384..4e03222 100644
--- a/src/bin/ephoto_color.c
+++ b/src/bin/ephoto_color.c
@@ -302,7 +302,7 @@ _editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
void
-ephoto_color_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
+ephoto_color_add(Ephoto *ephoto, Evas_Object *main, Evas_Object *parent, Evas_Object *image)
{
Evas_Object *slider;
Ephoto_Color *eco;
@@ -328,7 +328,7 @@ ephoto_color_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
memcpy(eco->original_im_data, im_data,
sizeof(unsigned int) * eco->w * eco->h);
- eco->editor = ephoto_editor_add(parent, _("Adjust Color Levels"),
+ eco->editor = ephoto_editor_add(ephoto, _("Adjust Color Levels"),
"eco", eco);
evas_object_event_callback_add(eco->editor, EVAS_CALLBACK_DEL, _editor_del,
eco);
diff --git a/src/bin/ephoto_config.c b/src/bin/ephoto_config.c
index 3853d94..936b081 100644
--- a/src/bin/ephoto_config.c
+++ b/src/bin/ephoto_config.c
@@ -1,6 +1,6 @@
#include "ephoto.h"
-#define CONFIG_VERSION 15
+#define CONFIG_VERSION 16
static int _ephoto_config_load(Ephoto *ephoto);
static Eina_Bool _ephoto_on_config_save(void *data);
@@ -37,8 +37,6 @@ _config_save_cb(void *data, Evas_Object *obj EINA_UNUSED,
if (ecore_file_is_dir(path) || !strcmp(path, "Last"))
eina_stringshare_replace(&ephoto->config->open, path);
- ephoto->config->tool_hide =
- elm_check_state_get(ephoto->config->hide_toolbar);
ephoto->config->prompts = elm_check_state_get(ephoto->config->show_prompts);
ephoto->config->drop = elm_check_state_get(ephoto->config->move_drop);
if (elm_spinner_value_get(ephoto->config->slide_time) > 0)
@@ -83,14 +81,6 @@ _config_general(Ephoto *ephoto, Evas_Object *parent)
elm_object_content_set(frame, table);
evas_object_show(table);
- check = elm_check_add(table);
- elm_object_text_set(check, _("Hide Toolbar On Fullscreen"));
- evas_object_size_hint_align_set(check, 0.0, EVAS_HINT_FILL);
- elm_check_state_set(check, ephoto->config->tool_hide);
- elm_table_pack(table, check, 0, 0, 1, 1);
- evas_object_show(check);
- ephoto->config->hide_toolbar = check;
-
check = elm_check_add(table);
elm_object_text_set(check, _("Prompt Before Changing The Filesystem"));
evas_object_size_hint_align_set(check, 0.0, EVAS_HINT_FILL);
@@ -331,9 +321,9 @@ _config_bindings(Evas_Object *parent)
_("General Bindings
"
"F1: Settings Panel
"
"F5: Start Slideshow
"
- "F11: Toggle Fullscreen
"
+ "F11: Toggle Fullscreen
"
+ "Ctrl+Shift+f: Toggle File Selector
"
"Thumbnail Browser Bindings
"
- "Ctrl+Shift+f: Toggle File Selector
"
"Ctrl++: Zoom In
"
"Ctrl+-: Zoom Out
"
"Ctrl+Tab: View Image
"
@@ -711,7 +701,6 @@ ephoto_config_init(Ephoto *ephoto)
C_VAL(D, T, window_width, EET_T_INT);
C_VAL(D, T, window_height, EET_T_INT);
C_VAL(D, T, fsel_hide, EET_T_INT);
- C_VAL(D, T, tool_hide, EET_T_INT);
C_VAL(D, T, lpane_size, EET_T_DOUBLE);
C_VAL(D, T, open, EET_T_STRING);
C_VAL(D, T, prompts, EET_T_INT);
@@ -726,7 +715,6 @@ ephoto_config_init(Ephoto *ephoto)
ephoto->config->window_width = 900;
ephoto->config->window_height = 600;
ephoto->config->fsel_hide = 0;
- ephoto->config->tool_hide = 0;
ephoto->config->lpane_size = .15;
ephoto->config->open = eina_stringshare_add(getenv("HOME"));
ephoto->config->prompts = 1;
diff --git a/src/bin/ephoto_cropper.c b/src/bin/ephoto_cropper.c
index 9f43f55..3c2864c 100644
--- a/src/bin/ephoto_cropper.c
+++ b/src/bin/ephoto_cropper.c
@@ -627,7 +627,7 @@ _editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
void
-ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
+ephoto_cropper_add(Ephoto *ephoto, Evas_Object *main, Evas_Object *parent,
Evas_Object *image_parent, Evas_Object *image)
{
Ephoto_Cropper *ec;
@@ -656,7 +656,7 @@ ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
evas_object_show(ec->box);
ec->layout = elm_layout_add(ec->box);
- elm_layout_file_set(ec->layout, PACKAGE_DATA_DIR "/themes/crop.edj",
+ elm_layout_file_set(ec->layout, PACKAGE_DATA_DIR "/themes/ephoto.edj",
"ephoto,image,cropper,base");
evas_object_size_hint_weight_set(ec->layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
@@ -671,7 +671,7 @@ ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
evas_object_show(ec->image);
ec->cropper = edje_object_add(evas_object_evas_get(ec->layout));
- edje_object_file_set(ec->cropper, PACKAGE_DATA_DIR "/themes/crop.edj",
+ edje_object_file_set(ec->cropper, PACKAGE_DATA_DIR "/themes/ephoto.edj",
"ephoto,image,cropper");
edje_object_signal_callback_add(elm_layout_edje_get(ec->layout),
"cropper,changed", "ephoto.swallow.cropper", _calculate_cropper_size,
@@ -701,7 +701,7 @@ ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
evas_object_event_callback_add(ec->layout, EVAS_CALLBACK_RESIZE,
_image_resize, ec);
- ec->editor = ephoto_editor_add(parent, _("Crop Image"),
+ ec->editor = ephoto_editor_add(ephoto, _("Crop Image"),
"ec", ec);
evas_object_event_callback_add(ec->editor, EVAS_CALLBACK_DEL,
_editor_del, ec);
diff --git a/src/bin/ephoto_editor.c b/src/bin/ephoto_editor.c
index d02c440..8e8108b 100644
--- a/src/bin/ephoto_editor.c
+++ b/src/bin/ephoto_editor.c
@@ -8,31 +8,47 @@ _editor_reset(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
static void
-_editor_apply(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+_editor_apply(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
+ Ephoto *ephoto = data;
+
ecore_event_add(EPHOTO_EVENT_EDITOR_APPLY, NULL, NULL, NULL);
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,editor,hide", "ephoto");
+ ephoto->editor_blocking = EINA_FALSE;
}
static void
-_editor_cancel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+_editor_cancel(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
+ Ephoto *ephoto = data;
+
ecore_event_add(EPHOTO_EVENT_EDITOR_CANCEL, NULL, NULL, NULL);
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,editor,hide", "ephoto");
+ ephoto->editor_blocking = EINA_FALSE;
}
Evas_Object *
-ephoto_editor_add(Evas_Object *parent, const char *title, const char *data_name,
+ephoto_editor_add(Ephoto *ephoto, const char *title, const char *data_name,
void *data)
{
Evas_Object *frame, *box, *ic, *button;
- frame = elm_frame_add(parent);
+ ephoto->editor_blocking = EINA_TRUE;
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,controls,hide", "ephoto");
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,folders,hide", "ephoto");
+
+ frame = elm_frame_add(ephoto->layout);
elm_object_text_set(frame, title);
evas_object_size_hint_weight_set(frame, 0.3, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_data_set(frame, data_name, data);
- elm_box_pack_end(parent, frame);
+ elm_layout_content_set(ephoto->layout, "ephoto.swallow.editor", frame);
evas_object_show(frame);
box = elm_box_add(frame);
@@ -46,6 +62,7 @@ ephoto_editor_add(Evas_Object *parent, const char *title, const char *data_name,
ic = elm_icon_add(box);
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(), 20*elm_config_scale_get());
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
elm_icon_standard_set(ic, "edit-undo");
@@ -55,10 +72,12 @@ ephoto_editor_add(Evas_Object *parent, const char *title, const char *data_name,
evas_object_smart_callback_add(button, "clicked", _editor_reset, box);
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_min_set(button, 220*elm_config_scale_get(), 30*elm_config_scale_get());
elm_box_pack_end(box, button);
evas_object_show(button);
ic = elm_icon_add(box);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(), 20*elm_config_scale_get());
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
elm_icon_standard_set(ic, "document-save");
@@ -66,13 +85,15 @@ ephoto_editor_add(Evas_Object *parent, const char *title, const char *data_name,
button = elm_button_add(box);
elm_object_text_set(button, _("Apply"));
elm_object_part_content_set(button, "icon", ic);
- evas_object_smart_callback_add(button, "clicked", _editor_apply, box);
+ evas_object_smart_callback_add(button, "clicked", _editor_apply, ephoto);
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_min_set(button, 220*elm_config_scale_get(), 30*elm_config_scale_get());
elm_box_pack_end(box, button);
evas_object_show(button);
ic = elm_icon_add(box);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(), 20*elm_config_scale_get());
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
elm_icon_standard_set(ic, "window-close");
@@ -80,12 +101,16 @@ ephoto_editor_add(Evas_Object *parent, const char *title, const char *data_name,
button = elm_button_add(box);
elm_object_text_set(button, _("Cancel"));
elm_object_part_content_set(button, "icon", ic);
- evas_object_smart_callback_add(button, "clicked", _editor_cancel, box);
+ evas_object_smart_callback_add(button, "clicked", _editor_cancel, ephoto);
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_min_set(button, 220*elm_config_scale_get(), 30*elm_config_scale_get());
elm_box_pack_end(box, button);
evas_object_show(button);
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,editor,show", "ephoto");
+
return box;
}
diff --git a/src/bin/ephoto_file.c b/src/bin/ephoto_file.c
index 7b8b334..4d518fe 100644
--- a/src/bin/ephoto_file.c
+++ b/src/bin/ephoto_file.c
@@ -130,18 +130,6 @@ _save_image_as_overwrite(void *data, Evas_Object *obj EINA_UNUSED,
_("Error: Image could not be saved here!"));
ephoto_single_browser_path_pending_unset(ephoto->single_browser);
}
- else
- {
- char *dir = ecore_file_dir_get(file);
- if (strcmp(dir, ephoto->config->directory))
- {
- ephoto_thumb_browser_fsel_clear(ephoto);
- ephoto_directory_set(ephoto, dir, NULL, EINA_FALSE, EINA_FALSE);
- ephoto_thumb_browser_top_dir_set(ephoto,
- ephoto->config->directory);
- free(dir);
- }
- }
evas_object_del(popup);
elm_object_focus_set(ephoto->pager, EINA_TRUE);
evas_object_freeze_events_set(ephoto->pager, EINA_FALSE);
@@ -1057,6 +1045,7 @@ _prompt_upload_apply(void *data, Evas_Object *obj EINA_UNUSED,
evas_object_del(ppopup);
popup = _processing(ephoto, _("Upload Image"),
("Please wait while your image is uploaded."));
+ evas_object_show(popup);
f = fopen(entry->path, "rb");
fseek(f, 0, SEEK_END);
@@ -1214,21 +1203,6 @@ _prompt_save_image_as_apply(void *data, Evas_Object *obj EINA_UNUSED, void *even
ephoto_single_browser_path_pending_unset
(ephoto->single_browser);
}
- else
- {
- evas_object_del(opopup);
- char *dir = ecore_file_dir_get(buf);
-
- if (strcmp(dir, ephoto->config->directory))
- {
- ephoto_thumb_browser_fsel_clear(ephoto);
- ephoto_directory_set(ephoto, dir, NULL,
- EINA_FALSE, EINA_FALSE);
- ephoto_thumb_browser_top_dir_set(ephoto,
- ephoto->config->directory);
- free(dir);
- }
- }
}
}
evas_object_del(opopup);
diff --git a/src/bin/ephoto_hsv.c b/src/bin/ephoto_hsv.c
index 577137d..1d8acc2 100644
--- a/src/bin/ephoto_hsv.c
+++ b/src/bin/ephoto_hsv.c
@@ -324,7 +324,7 @@ _editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
void
-ephoto_hsv_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
+ephoto_hsv_add(Ephoto *ephoto, Evas_Object *main, Evas_Object *parent, Evas_Object *image)
{
Evas_Object *slider;
Ephoto_HSV *ehsv;
@@ -350,7 +350,7 @@ ephoto_hsv_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
memcpy(ehsv->original_im_data, im_data,
sizeof(unsigned int) * ehsv->w * ehsv->h);
- ehsv->editor = ephoto_editor_add(parent, _("Hue/Saturation/Value"),
+ ehsv->editor = ephoto_editor_add(ephoto, _("Hue/Saturation/Value"),
"ehsv", ehsv);
evas_object_event_callback_add(ehsv->editor, EVAS_CALLBACK_DEL, _editor_del,
ehsv);
diff --git a/src/bin/ephoto_main.c b/src/bin/ephoto_main.c
index 60f711f..11ae608 100644
--- a/src/bin/ephoto_main.c
+++ b/src/bin/ephoto_main.c
@@ -40,9 +40,15 @@ _ephoto_thumb_browser_show(Ephoto *ephoto, Ephoto_Entry *entry)
elm_object_focus_set(ephoto->thumb_browser, EINA_TRUE);
_ephoto_state_set(ephoto, EPHOTO_STATE_THUMB);
ephoto_title_set(ephoto, ephoto->config->directory);
+ ephoto_thumb_browser_update_info_label(ephoto);
+ elm_box_clear(ephoto->controls_left);
+ elm_box_clear(ephoto->controls_right);
+ ephoto->blocking = EINA_FALSE;
+ ephoto->menu_blocking = EINA_FALSE;
+ ephoto->hover_blocking = EINA_FALSE;
+ ephoto->editor_blocking = EINA_FALSE;
+ ephoto_thumb_browser_show_controls(ephoto);
- if (ephoto->thumb_entry)
- elm_gengrid_item_selected_set(ephoto->thumb_entry->item, EINA_TRUE);
if ((entry) && (entry->item))
elm_gengrid_item_bring_in(entry->item, ELM_GENGRID_ITEM_SCROLLTO_IN);
}
@@ -60,16 +66,26 @@ _ephoto_single_browser_show(Ephoto *ephoto, Ephoto_Entry *entry)
ephoto_single_browser_entries_set(ephoto->single_browser,
ephoto->entries);
- ephoto->thumb_entry = entry;
ephoto_single_browser_entry_set(ephoto->single_browser, entry);
elm_naviframe_item_simple_promote(ephoto->pager, ephoto->single_browser);
elm_object_focus_set(ephoto->single_browser, EINA_TRUE);
_ephoto_state_set(ephoto, EPHOTO_STATE_SINGLE);
+
+ elm_box_clear(ephoto->controls_left);
+ elm_box_clear(ephoto->controls_right);
+ ephoto->blocking = EINA_FALSE;
+ ephoto->menu_blocking = EINA_FALSE;
+ ephoto->hover_blocking = EINA_FALSE;
+ ephoto->editor_blocking = EINA_FALSE;
+ ephoto_single_browser_show_controls(ephoto);
+ ephoto_single_browser_adjust_offsets(ephoto);
}
static void
_ephoto_slideshow_show(Ephoto *ephoto, Ephoto_Entry *entry)
{
+ ephoto_slideshow_show_controls(ephoto);
+
if (ephoto->selentries)
ephoto_slideshow_entries_set(ephoto->slideshow, ephoto->selentries);
else if (ephoto->searchentries)
@@ -80,6 +96,15 @@ _ephoto_slideshow_show(Ephoto *ephoto, Ephoto_Entry *entry)
elm_naviframe_item_simple_promote(ephoto->pager, ephoto->slideshow);
elm_object_focus_set(ephoto->slideshow, EINA_TRUE);
_ephoto_state_set(ephoto, EPHOTO_STATE_SLIDESHOW);
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,controls,hide", "ephoto");
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,folders,hide", "ephoto");
+ ephoto->folders_toggle = EINA_FALSE;
+ ephoto->blocking = EINA_FALSE;
+ ephoto->menu_blocking = EINA_FALSE;
+ ephoto->hover_blocking = EINA_FALSE;
+ ephoto->editor_blocking = EINA_FALSE;
}
static void
@@ -184,10 +209,40 @@ _win_free(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
ecore_timer_del(ephoto->timer.thumb_regen);
if (ephoto->monitor)
ecore_file_monitor_del(ephoto->monitor);
+ if (ephoto->overlay_timer)
+ ecore_timer_del(ephoto->overlay_timer);
ephoto_config_save(ephoto);
free(ephoto);
}
+static void
+_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Ephoto *ephoto = data;
+ Evas_Object *but = evas_object_data_get(ephoto->layout, "folder_button");
+ Evas_Coord x, y, w, h, bx, by, bw, bh, cx, cy;
+
+ evas_pointer_canvas_xy_get(evas_object_evas_get(ephoto->dir_browser), &cx, &cy);
+ evas_object_geometry_get(ephoto->dir_browser, &x, &y, &w, &h);
+ evas_object_geometry_get(but, &bx, &by, &bw, &bh);
+
+ if (cx >= x && cx <= x+w)
+ {
+ if (cy >= y && cy <= y+h)
+ return;
+ }
+ if (cx >= bx && cx <= bx+bw)
+ {
+ if (cy >= by && cy <= by+bh)
+ return;
+ }
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,folders,hide", "ephoto");
+ ephoto->folders_toggle = EINA_FALSE;
+ elm_object_tooltip_text_set(but, _("Show Folders"));
+}
+
static void
_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
@@ -203,24 +258,135 @@ _resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
}
+static Eina_Bool
+_timer_cb(void *data)
+{
+ Ephoto *ephoto = data;
+ Edje_Object *edje = elm_layout_edje_get(ephoto->layout);
+
+ if (ephoto->blocking || ephoto->menu_blocking ||
+ ephoto->right_blocking || ephoto->hover_blocking ||
+ ephoto->editor_blocking)
+ return ECORE_CALLBACK_PASS_ON;
+
+ edje_object_signal_emit(edje, "ephoto,controls,hide", "ephoto");
+ if (ephoto->folders_toggle)
+ edje_object_signal_emit(edje, "ephoto,folders,hide", "ephoto");
+ ecore_timer_del(ephoto->overlay_timer);
+ ephoto->overlay_timer = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void
+_mouse_move_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Ephoto *ephoto = data;
+ Edje_Object *edje = elm_layout_edje_get(ephoto->layout);
+
+ if (ephoto->blocking || ephoto->menu_blocking ||
+ ephoto->right_blocking || ephoto->hover_blocking ||
+ ephoto->editor_blocking)
+ return;
+
+ if (ephoto->overlay_timer)
+ ecore_timer_del(ephoto->overlay_timer);
+ ephoto->overlay_timer = NULL;
+ edje_object_signal_emit(edje, "ephoto,controls,show", "ephoto");
+ if (ephoto->folders_toggle)
+ edje_object_signal_emit(edje, "ephoto,folders,show", "ephoto");
+ ephoto->overlay_timer = ecore_timer_add(3.0, _timer_cb, ephoto);
+}
+
+static void
+_mouse_out_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Ephoto *ephoto = data;
+ ephoto->blocking = EINA_FALSE;
+}
+
+static void
+_mouse_in_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Ephoto *ephoto = data;
+ ephoto->blocking = EINA_TRUE;
+}
+
+static void
+_folder_icon_clicked(void *data, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ Ephoto *ephoto = data;
+
+ if (!ephoto->folders_toggle)
+ {
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,folders,show", "ephoto");
+ ephoto->folders_toggle = EINA_TRUE;
+ elm_object_tooltip_text_set(obj, _("Hide Folders"));
+ }
+ else
+ {
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,folders,hide", "ephoto");
+ ephoto->folders_toggle = EINA_FALSE;
+ elm_object_tooltip_text_set(obj, _("Show Folders"));
+ }
+}
+
+/*Ephoto Thumb Browser Main Callbacks*/
static void
-_pager_focused(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+_slideshow_icon_clicked(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ephoto *ephoto = data;
if (ephoto->state == EPHOTO_STATE_THUMB)
- elm_object_focus_set(ephoto->tb, EINA_TRUE);
+ ephoto_thumb_browser_slideshow(ephoto->thumb_browser);
else if (ephoto->state == EPHOTO_STATE_SINGLE)
- ephoto_single_browser_focus_set(ephoto);
- else
- elm_object_focus_set(ephoto->sl, EINA_TRUE);
+ ephoto_single_browser_slideshow(ephoto->single_browser);
+}
+
+
+static void
+_settings_icon_clicked(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Ephoto *ephoto = data;
+
+ ephoto_config_main(ephoto);
+}
+
+/*Toggle determines whether to toggle folder visibility, or just force visible*/
+void
+ephoto_show_folders(Ephoto *ephoto, Eina_Bool toggle)
+{
+ Evas_Object *but = evas_object_data_get(ephoto->layout, "folder_button");
+ if (!ephoto->folders_toggle || !toggle)
+ {
+ _mouse_move_cb(ephoto, NULL, NULL, NULL);
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,folders,show", "ephoto");
+ ephoto->folders_toggle = EINA_TRUE;
+ elm_object_tooltip_text_set(but, _("Hide Folders"));
+ }
+ else if (ephoto->folders_toggle && toggle)
+ {
+ edje_object_signal_emit(elm_layout_edje_get(ephoto->layout),
+ "ephoto,folders,hide", "ephoto");
+ ephoto->folders_toggle = EINA_FALSE;
+ elm_object_tooltip_text_set(but, _("Show Folders"));
+ }
}
Evas_Object *
ephoto_window_add(const char *path)
{
Ephoto *ephoto = calloc(1, sizeof(Ephoto));
+ Evas_Object *ic, *but;
char buf[PATH_MAX];
EINA_SAFETY_ON_NULL_RETURN_VAL(ephoto, NULL);
@@ -234,6 +400,11 @@ ephoto_window_add(const char *path)
EPHOTO_EVENT_EDITOR_CANCEL = ecore_event_type_new();
ephoto->selentries = NULL;
+ ephoto->blocking = EINA_FALSE;
+ ephoto->menu_blocking = EINA_FALSE;
+ ephoto->hover_blocking = EINA_FALSE;
+ ephoto->folders_toggle = EINA_FALSE;
+ ephoto->editor_blocking = EINA_FALSE;
ephoto->win = elm_win_util_standard_add("ephoto", "Ephoto");
if (!ephoto->win)
{
@@ -241,8 +412,8 @@ ephoto_window_add(const char *path)
return NULL;
}
- evas_object_event_callback_add(ephoto->win, EVAS_CALLBACK_FREE, _win_free,
- ephoto);
+ evas_object_event_callback_add(ephoto->win, EVAS_CALLBACK_FREE,
+ _win_free, ephoto);
evas_object_event_callback_add(ephoto->win, EVAS_CALLBACK_RESIZE,
_resize_cb, ephoto);
elm_win_autodel_set(ephoto->win, EINA_TRUE);
@@ -258,6 +429,20 @@ ephoto_window_add(const char *path)
(ephoto->config->thumb_gen_size != 512))
ephoto_thumb_size_set(ephoto, ephoto->config->thumb_size);
+ ephoto->layout = elm_layout_add(ephoto->win);
+ elm_layout_file_set(ephoto->layout, PACKAGE_DATA_DIR "/themes/ephoto.edj",
+ "ephoto,main,layout");
+ evas_object_size_hint_weight_set(ephoto->layout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_fill_set(ephoto->layout, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_event_callback_add(ephoto->layout, EVAS_CALLBACK_MOUSE_MOVE,
+ _mouse_move_cb, ephoto);
+ evas_object_event_callback_add(ephoto->layout, EVAS_CALLBACK_MOUSE_UP,
+ _mouse_up_cb, ephoto);
+ elm_win_resize_object_add(ephoto->win, ephoto->layout);
+ evas_object_show(ephoto->layout);
+
ephoto->pager = elm_naviframe_add(ephoto->win);
elm_object_focus_allow_set(ephoto->pager, EINA_FALSE);
elm_naviframe_prev_btn_auto_pushed_set(ephoto->pager, EINA_FALSE);
@@ -265,12 +450,10 @@ ephoto_window_add(const char *path)
EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(ephoto->pager, EVAS_HINT_FILL,
EVAS_HINT_FILL);
- evas_object_event_callback_add(ephoto->pager, EVAS_CALLBACK_FOCUS_IN,
- _pager_focused, ephoto);
- elm_win_resize_object_add(ephoto->win, ephoto->pager);
+ elm_layout_content_set(ephoto->layout, "ephoto.swallow.main", ephoto->pager);
evas_object_show(ephoto->pager);
- ephoto->thumb_browser = ephoto_thumb_browser_add(ephoto, ephoto->pager);
+ ephoto->thumb_browser = ephoto_thumb_browser_add(ephoto, ephoto->layout);
if (!ephoto->thumb_browser)
{
evas_object_del(ephoto->win);
@@ -286,8 +469,8 @@ ephoto_window_add(const char *path)
_ephoto_thumb_browser_changed_directory, ephoto);
evas_object_smart_callback_add(ephoto->thumb_browser, "slideshow",
_ephoto_thumb_browser_slideshow, ephoto);
-
- ephoto->single_browser = ephoto_single_browser_add(ephoto, ephoto->pager);
+
+ ephoto->single_browser = ephoto_single_browser_add(ephoto, ephoto->layout);
if (!ephoto->single_browser)
{
evas_object_del(ephoto->win);
@@ -301,8 +484,7 @@ ephoto_window_add(const char *path)
_ephoto_single_browser_back, ephoto);
evas_object_smart_callback_add(ephoto->single_browser, "slideshow",
_ephoto_single_browser_slideshow, ephoto);
-
- ephoto->slideshow = ephoto_slideshow_add(ephoto, ephoto->pager);
+ ephoto->slideshow = ephoto_slideshow_add(ephoto, ephoto->layout);
if (!ephoto->slideshow)
{
evas_object_del(ephoto->win);
@@ -315,6 +497,104 @@ ephoto_window_add(const char *path)
evas_object_smart_callback_add(ephoto->slideshow, "back",
_ephoto_slideshow_back, ephoto);
+ ephoto->dir_browser = ephoto_directory_browser_add(ephoto, ephoto->layout);
+ elm_layout_content_set(ephoto->layout, "ephoto.swallow.folders",
+ ephoto->dir_browser);
+ evas_object_event_callback_add(ephoto->dir_browser, EVAS_CALLBACK_MOUSE_IN,
+ _mouse_in_cb, ephoto);
+ evas_object_event_callback_add(ephoto->dir_browser, EVAS_CALLBACK_MOUSE_OUT,
+ _mouse_out_cb, ephoto);
+ evas_object_show(ephoto->dir_browser);
+
+ ephoto->statusbar = elm_box_add(ephoto->layout);
+ elm_object_tree_focus_allow_set(ephoto->statusbar, EINA_FALSE);
+ elm_box_horizontal_set(ephoto->statusbar, EINA_TRUE);
+ evas_object_size_hint_weight_set(ephoto->statusbar,
+ EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(ephoto->statusbar, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_layout_content_set(ephoto->layout, "ephoto.swallow.controls",
+ ephoto->statusbar);
+ evas_object_event_callback_add(ephoto->statusbar, EVAS_CALLBACK_MOUSE_IN,
+ _mouse_in_cb, ephoto);
+ evas_object_event_callback_add(ephoto->statusbar, EVAS_CALLBACK_MOUSE_OUT,
+ _mouse_out_cb, ephoto);
+ evas_object_show(ephoto->statusbar);
+
+ ic = elm_icon_add(ephoto->statusbar);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ elm_icon_standard_set(ic, "folder");
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->statusbar);
+ elm_object_part_content_set(but, "icon", ic);
+ evas_object_smart_callback_add(but, "clicked", _folder_icon_clicked, ephoto);
+ elm_object_tooltip_text_set(but, _("Show Folders"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_RIGHT);
+ elm_box_pack_end(ephoto->statusbar, but);
+ evas_object_show(but);
+ evas_object_data_set(ephoto->layout, "folder_button", but);
+
+ ephoto->controls_left = elm_box_add(ephoto->statusbar);
+ elm_box_horizontal_set(ephoto->controls_left, EINA_TRUE);
+ evas_object_size_hint_weight_set(ephoto->controls_left,
+ 0.0, 0.0);
+ evas_object_size_hint_align_set(ephoto->controls_left, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_box_pack_end(ephoto->statusbar, ephoto->controls_left);
+ evas_object_show(ephoto->controls_left);
+
+ ephoto->infolabel = elm_label_add(ephoto->statusbar);
+ elm_object_style_set(ephoto->infolabel, "info");
+ elm_label_line_wrap_set(ephoto->infolabel, ELM_WRAP_MIXED);
+ elm_object_text_set(ephoto->infolabel, _("Information"));
+ evas_object_size_hint_weight_set(ephoto->infolabel,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ephoto->infolabel, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_aspect_set(ephoto->infolabel, EVAS_ASPECT_CONTROL_HORIZONTAL,
+ 1, 1);
+ elm_box_pack_end(ephoto->statusbar, ephoto->infolabel);
+ evas_object_show(ephoto->infolabel);
+
+ ephoto->controls_right = elm_box_add(ephoto->statusbar);
+ elm_box_horizontal_set(ephoto->controls_right, EINA_TRUE);
+ evas_object_size_hint_weight_set(ephoto->controls_right,
+ 0.0, 0.0);
+ evas_object_size_hint_align_set(ephoto->controls_right, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_box_pack_end(ephoto->statusbar, ephoto->controls_right);
+ evas_object_show(ephoto->controls_right);
+
+ ic = elm_icon_add(ephoto->statusbar);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ elm_icon_standard_set(ic, "media-playback-start");
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->statusbar);
+ elm_object_part_content_set(but, "icon", ic);
+ evas_object_smart_callback_add(but, "clicked", _slideshow_icon_clicked, ephoto);
+ elm_object_tooltip_text_set(but, _("Slideshow"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
+ elm_box_pack_end(ephoto->statusbar, but);
+ evas_object_show(but);
+
+ ic = elm_icon_add(ephoto->statusbar);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ elm_icon_standard_set(ic, "preferences-system");
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->statusbar);
+ elm_object_part_content_set(but, "icon", ic);
+ evas_object_smart_callback_add(but, "clicked", _settings_icon_clicked, ephoto);
+ elm_object_tooltip_text_set(but, _("Settings"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_LEFT);
+ elm_box_pack_end(ephoto->statusbar, but);
+ evas_object_show(but);
+
if ((!path) || (!ecore_file_exists(path)))
{
if (ephoto->config->open)
@@ -337,14 +617,16 @@ ephoto_window_add(const char *path)
if (ecore_file_is_dir(path))
{
- ephoto_directory_set(ephoto, path, NULL, EINA_FALSE, EINA_FALSE);
+ eina_stringshare_replace(&ephoto->config->directory,
+ ecore_file_realpath(path));
_ephoto_thumb_browser_show(ephoto, NULL);
}
else
{
char *dir = ecore_file_dir_get(path);
- ephoto_directory_set(ephoto, dir, NULL, EINA_FALSE, EINA_FALSE);
+ eina_stringshare_replace(&ephoto->config->directory,
+ ecore_file_realpath(dir));
free(dir);
ephoto_single_browser_path_pending_set(ephoto->single_browser, path);
@@ -352,11 +634,14 @@ ephoto_window_add(const char *path)
ephoto->single_browser);
ephoto->state = EPHOTO_STATE_SINGLE;
}
- ephoto_thumb_browser_top_dir_set(ephoto, ephoto->config->directory);
+ ephoto_directory_browser_top_dir_set(ephoto, ephoto->config->directory);
+ ephoto_directory_browser_initialize_structure(ephoto);
evas_object_resize(ephoto->win, ephoto->config->window_width,
ephoto->config->window_height);
evas_object_show(ephoto->win);
+ ephoto->overlay_timer = ecore_timer_add(5.0, _timer_cb, ephoto);
+
return ephoto->win;
}
@@ -490,7 +775,6 @@ _ephoto_change_dir(void *data)
{
Ephoto_Dir_Data *ed = data;
- ed->ephoto->thumb_entry = NULL;
ed->ephoto->job.change_dir = NULL;
_ephoto_populate_entries(ed);
}
diff --git a/src/bin/ephoto_red_eye.c b/src/bin/ephoto_red_eye.c
index fbf5df3..c97a950 100644
--- a/src/bin/ephoto_red_eye.c
+++ b/src/bin/ephoto_red_eye.c
@@ -195,7 +195,7 @@ _editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
void
-ephoto_red_eye_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
+ephoto_red_eye_add(Ephoto *ephoto, Evas_Object *main, Evas_Object *parent, Evas_Object *image)
{
Evas_Object *slider, *label;
Ephoto_Reye *er;
@@ -222,7 +222,7 @@ ephoto_red_eye_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
evas_object_event_callback_add(er->image, EVAS_CALLBACK_MOUSE_UP,
_reye_clicked, er);
- er->editor = ephoto_editor_add(parent, _("Red Eye Removal"),
+ er->editor = ephoto_editor_add(ephoto, _("Red Eye Removal"),
"ereye", er);
evas_object_event_callback_add(er->editor, EVAS_CALLBACK_DEL, _editor_del,
er);
diff --git a/src/bin/ephoto_single_browser.c b/src/bin/ephoto_single_browser.c
index dc101e2..8c29199 100644
--- a/src/bin/ephoto_single_browser.c
+++ b/src/bin/ephoto_single_browser.c
@@ -14,9 +14,7 @@ struct _Ephoto_Single_Browser
Evas_Object *mhbox;
Evas_Object *table;
Evas_Object *viewer;
- Evas_Object *infolabel;
Evas_Object *nolabel;
- Evas_Object *botbox;
Evas_Object *event;
Elm_Object_Item *save;
const char *pending_path;
@@ -54,8 +52,6 @@ static void _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,void *event_info EINA_UNUSED);
static void _ephoto_main_focused(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,void *event_info EINA_UNUSED);
-static void _ephoto_show_slideshow(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED);
static void _ephoto_show_settings(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED);
static void _ephoto_main_back(void *data, Evas_Object *obj EINA_UNUSED,
@@ -108,29 +104,7 @@ _ephoto_update_bottom_bar(Ephoto_Single_Browser *sb)
_("Resolution"), w, h, _("File Size"), tmp);
free(tmp);
- if (!evas_object_visible_get(sb->botbox))
- {
-
- evas_object_del(sb->botbox);
-
- sb->botbox = elm_notify_add(sb->ephoto->win);
- elm_notify_align_set(sb->botbox, 0.5, 1.0);
- evas_object_size_hint_weight_set(sb->botbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_fill_set(sb->botbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- sb->infolabel = elm_label_add(sb->botbox);
- elm_label_line_wrap_set(sb->infolabel, ELM_WRAP_NONE);
- evas_object_size_hint_weight_set(sb->infolabel, EVAS_HINT_EXPAND,
- EVAS_HINT_FILL);
- evas_object_size_hint_align_set(sb->infolabel, EVAS_HINT_FILL,
- EVAS_HINT_FILL);
- elm_object_content_set(sb->botbox, sb->infolabel);
- evas_object_show(sb->infolabel);
- }
-
- elm_object_text_set(sb->infolabel, image_info);
- elm_notify_timeout_set(sb->botbox, 5);
- evas_object_show(sb->botbox);
+ elm_object_text_set(sb->ephoto->infolabel, image_info);
}
static char *
@@ -1053,13 +1027,11 @@ _crop_image(void *data, Evas_Object *obj EINA_UNUSED,
if (sb->viewer)
{
sb->editing = EINA_TRUE;
- if (sb->botbox)
- evas_object_hide(sb->botbox);
sb->cropping = EINA_TRUE;
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
elm_table_unpack(v->table, v->image);
- ephoto_cropper_add(sb->main, sb->mhbox, v->table, v->image);
+ ephoto_cropper_add(sb->ephoto, sb->main, sb->mhbox, v->table, v->image);
}
}
@@ -1071,11 +1043,9 @@ _go_bcg(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
if (sb->viewer)
{
sb->editing = EINA_TRUE;
- if (sb->botbox)
- evas_object_hide(sb->botbox);
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
- ephoto_bcg_add(sb->main, sb->mhbox, v->image);
+ ephoto_bcg_add(sb->ephoto, sb->main, sb->mhbox, v->image);
}
}
@@ -1087,11 +1057,9 @@ _go_hsv(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
if (sb->viewer)
{
sb->editing = EINA_TRUE;
- if (sb->botbox)
- evas_object_hide(sb->botbox);
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
- ephoto_hsv_add(sb->main, sb->mhbox, v->image);
+ ephoto_hsv_add(sb->ephoto, sb->main, sb->mhbox, v->image);
}
}
@@ -1104,11 +1072,9 @@ _go_color(void *data, Evas_Object *obj EINA_UNUSED,
if (sb->viewer)
{
sb->editing = EINA_TRUE;
- if (sb->botbox)
- evas_object_hide(sb->botbox);
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
- ephoto_color_add(sb->main, sb->mhbox, v->image);
+ ephoto_color_add(sb->ephoto, sb->main, sb->mhbox, v->image);
}
}
@@ -1121,11 +1087,9 @@ _go_reye(void *data, Evas_Object *obj EINA_UNUSED,
if (sb->viewer)
{
sb->editing = EINA_TRUE;
- if (sb->botbox)
- evas_object_hide(sb->botbox);
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
- ephoto_red_eye_add(sb->main, sb->mhbox, v->image);
+ ephoto_red_eye_add(sb->ephoto, sb->main, sb->mhbox, v->image);
}
}
@@ -1138,8 +1102,6 @@ _go_auto_eq(void *data, Evas_Object *obj EINA_UNUSED,
if (sb->viewer)
{
sb->editing = EINA_TRUE;
- if (sb->botbox)
- evas_object_hide(sb->botbox);
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
ephoto_filter_histogram_eq(sb->main, v->image);
@@ -1155,8 +1117,6 @@ _go_blur(void *data, Evas_Object *obj EINA_UNUSED,
if (sb->viewer)
{
sb->editing = EINA_TRUE;
- if (sb->botbox)
- evas_object_hide(sb->botbox);
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
ephoto_filter_blur(sb->main, v->image);
@@ -1172,8 +1132,6 @@ _go_sharpen(void *data, Evas_Object *obj EINA_UNUSED,
if (sb->viewer)
{
sb->editing = EINA_TRUE;
- if (sb->botbox)
- evas_object_hide(sb->botbox);
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
ephoto_filter_sharpen(sb->main, v->image);
@@ -1189,8 +1147,6 @@ _go_black_and_white(void *data, Evas_Object *obj EINA_UNUSED,
if (sb->viewer)
{
sb->editing = EINA_TRUE;
- if (sb->botbox)
- evas_object_hide(sb->botbox);
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
ephoto_filter_black_and_white(sb->main, v->image);
@@ -1206,14 +1162,37 @@ _go_old_photo(void *data, Evas_Object *obj EINA_UNUSED,
if (sb->viewer)
{
sb->editing = EINA_TRUE;
- if (sb->botbox)
- evas_object_hide(sb->botbox);
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
ephoto_filter_old_photo(sb->main, v->image);
}
}
+static void
+_image_changed(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Ephoto_Single_Browser *sb = data;
+ Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
+ Evas_Coord w, h, sw, sh;
+ Edje_Message_Int_Set *msg;
+
+ if (sb->ephoto->state != EPHOTO_STATE_SINGLE)
+ return;
+
+ elm_scroller_region_get(v->scroller, 0, 0, &w, &h);
+ evas_object_geometry_get(v->scroller, 0, 0, &sw, &sh);
+
+ sw -= w;
+ sh -= h;
+ msg = alloca(sizeof(Edje_Message_Int_Set) + (2 * sizeof(int)));
+ msg->count = 2;
+ msg->val[0] = sw;
+ msg->val[1] = sh;
+ edje_object_message_send(elm_layout_edje_get(sb->ephoto->layout),
+ EDJE_MESSAGE_INT_SET, 1, msg);
+}
+
/*Image Viewer Function*/
static Evas_Object *
_viewer_add(Evas_Object *parent, const char *path, Ephoto_Single_Browser *sb)
@@ -1222,7 +1201,6 @@ _viewer_add(Evas_Object *parent, const char *path, Ephoto_Single_Browser *sb)
int err;
v->zoom_first = EINA_TRUE;
-
Evas_Coord w, h;
const char *group = _ephoto_get_edje_group(path);
@@ -1246,6 +1224,7 @@ _viewer_add(Evas_Object *parent, const char *path, Ephoto_Single_Browser *sb)
evas_object_show(v->table);
v->image = elm_image_add(v->table);
+ elm_object_style_set(v->image, "ephoto");
elm_image_preload_disabled_set(v->image, EINA_TRUE);
elm_image_file_set(v->image, path, group);
err = evas_object_image_load_error_get(elm_image_object_get(v->image));
@@ -1260,6 +1239,7 @@ _viewer_add(Evas_Object *parent, const char *path, Ephoto_Single_Browser *sb)
_image_mouse_down_cb, sb);
evas_object_event_callback_add(v->image, EVAS_CALLBACK_MOUSE_UP,
_image_mouse_up_cb, sb);
+ evas_object_event_callback_add(v->image, EVAS_CALLBACK_RESIZE, _image_changed, sb);
elm_table_pack(v->table, v->image, 0, 0, 1, 1);
evas_object_show(v->image);
if (elm_image_animated_available_get(v->image))
@@ -1375,9 +1355,6 @@ _add_edit_menu_items(Ephoto_Single_Browser *sb, Evas_Object *menu)
{
Evas_Object *menu_it, *menu_itt;
- elm_menu_item_add(menu, NULL, "go-previous", _("Back"), _ephoto_main_back, sb);
- elm_menu_item_separator_add(menu, NULL);
-
menu_it =
elm_menu_item_add(menu, NULL, "system-file-manager", _("File"), NULL, NULL);
elm_menu_item_add(menu, menu_it, "edit-undo", _("Reset"), _reset_image, sb);
@@ -1453,11 +1430,6 @@ _add_edit_menu_items(Ephoto_Single_Browser *sb, Evas_Object *menu)
_zoom_fit_cb, sb);
elm_menu_item_add(menu, menu_itt, "zoom-original", _("Zoom 1:1"),
_zoom_1_cb, sb);
- elm_menu_item_separator_add(menu, NULL);
- elm_menu_item_add(menu, NULL, "media-playback-start", _("Slideshow"),
- _ephoto_show_slideshow, sb);
- elm_menu_item_add(menu, NULL, "preferences-system", _("Settings"),
- _ephoto_show_settings, sb);
}
static void
@@ -1500,6 +1472,11 @@ _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
else
_zoom_set(sb, 1.0);
}
+ else if (!strcmp(k, "f") && !sb->editing)
+ {
+ if (shift)
+ ephoto_show_folders(sb->ephoto, EINA_TRUE);
+ }
else if (!strcmp(k, "l") && !sb->editing)
{
if (!shift)
@@ -1539,7 +1516,6 @@ _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
evas_object_del(sb->event);
sb->event = NULL;
}
- evas_object_hide(sb->botbox);
evas_object_smart_callback_call(sb->main, "back", sb->entry);
}
else if (!strcmp(k, "Left") && !sb->editing)
@@ -1567,8 +1543,7 @@ _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
evas_object_del(sb->event);
sb->event = NULL;
}
- evas_object_hide(sb->botbox);
- evas_object_smart_callback_call(sb->main, "slideshow", sb->entry);
+ evas_object_smart_callback_call(sb->main, "slideshow", sb->entry);
}
}
else if (!strcmp(k, "F11"))
@@ -1579,11 +1554,10 @@ _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
}
}
-static void
-_ephoto_show_slideshow(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
+void
+ephoto_single_browser_slideshow(Evas_Object *obj)
{
- Ephoto_Single_Browser *sb = data;
+ Ephoto_Single_Browser *sb = evas_object_data_get(obj, "single_browser");
if (sb->entry)
{
@@ -1592,8 +1566,6 @@ _ephoto_show_slideshow(void *data, Evas_Object *obj EINA_UNUSED,
evas_object_del(sb->event);
sb->event = NULL;
}
- if (sb->botbox)
- evas_object_hide(sb->botbox);
evas_object_smart_callback_call(sb->main, "slideshow", sb->entry);
}
}
@@ -1617,8 +1589,6 @@ _ephoto_main_back(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EIN
evas_object_del(sb->event);
sb->event = NULL;
}
- if (sb->botbox)
- evas_object_hide(sb->botbox);
evas_object_smart_callback_call(sb->main, "back", sb->entry);
}
@@ -1666,6 +1636,23 @@ _ephoto_main_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
/*Ephoto Single Browser Public Functions*/
+void
+ephoto_single_browser_adjust_offsets(Ephoto *ephoto)
+{
+ Ephoto_Single_Browser *sb = evas_object_data_get(ephoto->single_browser,
+ "single_browser");
+ Edje_Message_Int_Set *msg;
+
+ msg = alloca(sizeof(Edje_Message_Int_Set) + (2 * sizeof(int)));
+ msg->count = 2;
+ msg->val[0] = 0;
+ msg->val[1] = 0;
+ edje_object_message_send(elm_layout_edje_get(sb->ephoto->layout),
+ EDJE_MESSAGE_INT_SET, 1, msg);
+
+ _image_changed(sb, NULL, NULL, NULL);
+}
+
void
ephoto_single_browser_entries_set(Evas_Object *obj, Eina_List *entries)
{
@@ -1825,6 +1812,109 @@ ephoto_single_browser_cancel_editing(Evas_Object *main)
}
}
+void
+ephoto_single_browser_show_controls(Ephoto *ephoto)
+{
+ Ephoto_Single_Browser *sb = evas_object_data_get(ephoto->single_browser,
+ "single_browser");
+ Evas_Object *but, *ic;
+ int ret;
+
+ ic = elm_icon_add(ephoto->controls_left);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ ret = elm_image_file_set(ic, PACKAGE_DATA_DIR "/images/grid.png", NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->controls_left);
+ if (!ret)
+ elm_object_text_set(but, _("View Thumbnails"));
+ else
+ {
+ elm_object_part_content_set(but, "icon", ic);
+ elm_object_tooltip_text_set(but, _("View Thumbnails"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
+ }
+ evas_object_smart_callback_add(but, "clicked", _ephoto_main_back, sb);
+ elm_box_pack_end(ephoto->controls_left, but);
+ evas_object_show(but);
+
+ ic = elm_icon_add(ephoto->controls_left);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ ret = elm_icon_standard_set(ic, "zoom-in");
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->controls_left);
+ if (!ret)
+ elm_object_text_set(but, _("Zoom In"));
+ else
+ {
+ elm_object_part_content_set(but, "icon", ic);
+ elm_object_tooltip_text_set(but, _("Zoom In"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
+ }
+ evas_object_smart_callback_add(but, "clicked", _zoom_in_cb, sb);
+ elm_box_pack_end(ephoto->controls_left, but);
+ evas_object_show(but);
+
+ ic = elm_icon_add(ephoto->controls_left);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ elm_icon_standard_set(ic, "zoom-out");
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->controls_left);
+ if (!ret)
+ elm_object_text_set(but, _("Zoom Out"));
+ else
+ {
+ elm_object_part_content_set(but, "icon", ic);
+ elm_object_tooltip_text_set(but, _("Zoom Out"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
+ }
+ evas_object_smart_callback_add(but, "clicked", _zoom_out_cb, sb);
+ elm_box_pack_end(ephoto->controls_left, but);
+ evas_object_show(but);
+
+ ic = elm_icon_add(ephoto->controls_right);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ ret = elm_icon_standard_set(ic, "go-previous");
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->controls_right);
+ if (!ret)
+ elm_object_text_set(but, _("Previous"));
+ else
+ {
+ elm_object_part_content_set(but, "icon", ic);
+ elm_object_tooltip_text_set(but, _("Previous"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
+ }
+ evas_object_smart_callback_add(but, "clicked", _go_prev, sb);
+ elm_box_pack_end(ephoto->controls_right, but);
+ evas_object_show(but);
+
+ ic = elm_icon_add(ephoto->controls_right);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ elm_icon_standard_set(ic, "go-next");
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->controls_right);
+ if (!ret)
+ elm_object_text_set(but, _("Next"));
+ else
+ {
+ elm_object_part_content_set(but, "icon", ic);
+ elm_object_tooltip_text_set(but, _("Next"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
+ }
+ evas_object_smart_callback_add(but, "clicked", _go_next, sb);
+ elm_box_pack_end(ephoto->controls_right, but);
+ evas_object_show(but);
+}
+
Evas_Object *
ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent)
{
@@ -1861,20 +1951,6 @@ ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent)
elm_box_pack_end(sb->main, sb->mhbox);
evas_object_show(sb->mhbox);
- sb->botbox = elm_notify_add(sb->ephoto->win);
- elm_notify_align_set(sb->botbox, 0.5, 1.0);
- elm_notify_timeout_set(sb->botbox, 5);
- evas_object_size_hint_weight_set(sb->botbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_fill_set(sb->botbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- sb->infolabel = elm_label_add(sb->botbox);
- elm_label_line_wrap_set(sb->infolabel, ELM_WRAP_NONE);
- evas_object_size_hint_weight_set(sb->infolabel, EVAS_HINT_EXPAND,
- EVAS_HINT_FILL);
- evas_object_size_hint_align_set(sb->infolabel, EVAS_HINT_FILL,
- EVAS_HINT_FILL);
- elm_object_content_set(sb->botbox, sb->infolabel);
- evas_object_show(sb->infolabel);
sb->handlers =
eina_list_append(sb->handlers,
diff --git a/src/bin/ephoto_slideshow.c b/src/bin/ephoto_slideshow.c
index 9d195bc..facb379 100644
--- a/src/bin/ephoto_slideshow.c
+++ b/src/bin/ephoto_slideshow.c
@@ -6,18 +6,20 @@ struct _Ephoto_Slideshow
{
Ephoto *ephoto;
Evas_Object *slideshow;
- Evas_Object *notify;
- Evas_Object *bar;
Evas_Object *event;
+ Evas_Object *notify;
Eina_List *entries;
- Elm_Object_Item *pause;
- Elm_Object_Item *pause_after;
- Elm_Object_Item *fullscreen;
- Elm_Object_Item *fullscreen_after;
+ Evas_Object *pause;
+ Evas_Object *pause_after;
+ Evas_Object *fullscreen;
+ Evas_Object *fullscreen_after;
Ephoto_Entry *entry;
Eina_Bool playing;
};
+static Evas_Object *_add_icon(Evas_Object *parent, const char *icon,
+ const char *label, Evas_Object *before);
+
static void
_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
@@ -26,6 +28,11 @@ _mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
Elm_Object_Item *slideshow_item;
Ephoto_Entry *entry;
+ elm_layout_content_unset(ss->ephoto->layout, "ephoto.swallow.controls");
+ evas_object_del(ss->notify);
+ elm_layout_content_set(ss->ephoto->layout, "ephoto.swallow.controls",
+ ss->ephoto->statusbar);
+
slideshow_item = elm_slideshow_item_current_get(ss->slideshow);
if (slideshow_item)
entry = elm_object_item_data_get(slideshow_item);
@@ -38,7 +45,6 @@ _mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
evas_object_smart_callback_call(ss->slideshow, "back", entry);
elm_slideshow_clear(ss->slideshow);
- evas_object_hide(ss->notify);
ss->playing = 0;
evas_object_freeze_events_set(ss->slideshow, EINA_TRUE);
}
@@ -62,13 +68,6 @@ _slideshow_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
free(ss);
}
-static void
-_notify_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- evas_object_show(data);
-}
-
static void
_back(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
@@ -76,6 +75,11 @@ _back(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
Elm_Object_Item *slideshow_item;
Ephoto_Entry *entry;
+ elm_layout_content_unset(ss->ephoto->layout, "ephoto.swallow.controls");
+ evas_object_del(ss->notify);
+ elm_layout_content_set(ss->ephoto->layout, "ephoto.swallow.controls",
+ ss->ephoto->statusbar);
+
slideshow_item = elm_slideshow_item_current_get(ss->slideshow);
if (slideshow_item)
entry = elm_object_item_data_get(slideshow_item);
@@ -88,7 +92,6 @@ _back(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
}
evas_object_smart_callback_call(ss->slideshow, "back", entry);
elm_slideshow_clear(ss->slideshow);
- evas_object_hide(ss->notify);
ss->playing = 0;
evas_object_freeze_events_set(ss->slideshow, EINA_TRUE);
}
@@ -110,23 +113,25 @@ _pause(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Ephoto_Slideshow *ss = data;
- elm_object_item_del(ss->pause);
+ evas_object_del(ss->pause);
if (ss->playing)
{
elm_slideshow_timeout_set(ss->slideshow, 0.0);
ss->pause =
- elm_toolbar_item_insert_before(ss->bar, ss->pause_after,
- "media-playback-start", _("Play"), _pause, ss);
+ _add_icon(ss->notify, "media-playback-start", _("Play"),
+ ss->pause_after);
+ evas_object_smart_callback_add(ss->pause, "clicked", _pause, ss);
ss->playing = 0;
}
else
{
elm_slideshow_timeout_set(ss->slideshow,
ss->ephoto->config->slideshow_timeout);
- ss->pause =
- elm_toolbar_item_insert_before(ss->bar, ss->pause_after,
- "media-playback-pause", _("Pause"), _pause, ss);
+ ss->pause =
+ _add_icon(ss->notify, "media-playback-pause", _("Pause"),
+ ss->pause_after);
+ evas_object_smart_callback_add(ss->pause, "clicked", _pause, ss);
ss->playing = 1;
}
}
@@ -152,20 +157,24 @@ _fullscreen(void *data, Evas_Object *obj EINA_UNUSED,
{
Ephoto_Slideshow *ss = data;
- elm_object_item_del(ss->fullscreen);
+ evas_object_del(ss->fullscreen);
if (elm_win_fullscreen_get(ss->ephoto->win))
{
ss->fullscreen =
- elm_toolbar_item_insert_before(ss->bar, ss->fullscreen_after,
- "view-fullscreen", _("Fullscreen"), _fullscreen, ss);
+ _add_icon(ss->notify, "view-fullscreen", _("Fullscreen"),
+ ss->fullscreen_after);
+ evas_object_smart_callback_add(ss->fullscreen, "clicked",
+ _fullscreen, ss);
elm_win_fullscreen_set(ss->ephoto->win, EINA_FALSE);
}
else
{
ss->fullscreen =
- elm_toolbar_item_insert_before(ss->bar, ss->fullscreen_after,
- "view-restore", _("Normal"), _fullscreen, ss);
+ _add_icon(ss->notify, "view-restore", _("Normal"),
+ ss->fullscreen_after);
+ evas_object_smart_callback_add(ss->fullscreen, "clicked",
+ _fullscreen, ss);
elm_win_fullscreen_set(ss->ephoto->win, EINA_TRUE);
}
}
@@ -179,21 +188,6 @@ _settings(void *data, Evas_Object *obj EINA_UNUSED,
ephoto_config_main(ss->ephoto);
}
-static void
-_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- elm_notify_timeout_set(data, 0.0);
- evas_object_show(data);
-}
-
-static void
-_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- elm_notify_timeout_set(data, 3.0);
-}
-
static void
_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info)
@@ -251,6 +245,75 @@ _main_focused(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
}
+static Evas_Object *
+_add_icon(Evas_Object *parent, const char *icon, const char *label, Evas_Object *before)
+{
+ Evas_Object *ic, *but;
+ int ret;
+
+ ic = elm_icon_add(parent);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ ret = elm_icon_standard_set(ic, icon);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(parent);
+ if (!ret)
+ elm_object_text_set(but, label);
+ else
+ {
+ elm_object_part_content_set(but, "icon", ic);
+ elm_object_tooltip_text_set(but, label);
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
+ }
+ if (before)
+ elm_box_pack_before(parent, but, before);
+ else
+ elm_box_pack_end(parent, but);
+ evas_object_show(but);
+
+ return but;
+}
+
+void
+ephoto_slideshow_show_controls(Ephoto *ephoto)
+{
+ Ephoto_Slideshow *ss = evas_object_data_get(ephoto->slideshow, "slideshow");
+ Evas_Object *but;
+
+ elm_layout_content_unset(ephoto->layout, "ephoto.swallow.controls");
+ evas_object_hide(ephoto->statusbar);
+
+ ss->notify = elm_box_add(ephoto->win);
+ elm_box_horizontal_set(ss->notify, EINA_TRUE);
+ evas_object_size_hint_weight_set(ss->notify, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_fill_set(ss->notify, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ but = _add_icon(ss->notify, "window-close", _("Back"), NULL);
+ evas_object_smart_callback_add(but, "clicked", _back, ss);
+ but = _add_icon(ss->notify, "go-first", _("First"), NULL);
+ evas_object_smart_callback_add(but, "clicked", _first, ss->slideshow);
+ but = _add_icon(ss->notify, "go-previous", _("Previous"), NULL);
+ evas_object_smart_callback_add(but, "clicked", _previous, ss->slideshow);
+ ss->pause =
+ _add_icon(ss->notify, "media-playback-start", _("Play"), NULL);
+ evas_object_smart_callback_add(ss->pause, "clicked", _pause, ss);
+ ss->pause_after =
+ _add_icon(ss->notify, "go-next", _("Next"), NULL);
+ evas_object_smart_callback_add(ss->pause_after, "clicked", _next,
+ ss->slideshow);
+ but = _add_icon(ss->notify, "go-last", _("Last"), NULL);
+ evas_object_smart_callback_add(but, "clicked", _last, ss->slideshow);
+ ss->fullscreen =
+ _add_icon(ss->notify, "view-fullscreen", _("Fullscreen"), NULL);
+ evas_object_smart_callback_add(ss->fullscreen, "clicked", _fullscreen, ss);
+ ss->fullscreen_after =
+ _add_icon(ss->notify, "preferences-system", _("Settings"), NULL);
+ evas_object_smart_callback_add(ss->fullscreen_after, "clicked", _settings, ss);
+
+ elm_layout_content_set(ephoto->layout, "ephoto.swallow.controls", ss->notify);
+}
+
Evas_Object *
ephoto_slideshow_add(Ephoto *ephoto, Evas_Object *parent)
{
@@ -280,52 +343,6 @@ ephoto_slideshow_add(Ephoto *ephoto, Evas_Object *parent)
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(slideshow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- ss->notify = elm_notify_add(ephoto->win);
- elm_notify_align_set(ss->notify, 0.5, 1.0);
- evas_object_size_hint_weight_set(ss->notify, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- elm_notify_timeout_set(ss->notify, 3.0);
- evas_object_event_callback_add(slideshow, EVAS_CALLBACK_MOUSE_MOVE,
- _notify_show, ss->notify);
- elm_object_tree_focus_allow_set(ss->notify, EINA_FALSE);
-
- ss->bar = elm_toolbar_add(ss->notify);
- elm_toolbar_horizontal_set(ss->bar, EINA_TRUE);
- elm_toolbar_homogeneous_set(ss->bar, EINA_TRUE);
- elm_toolbar_shrink_mode_set(ss->bar, ELM_TOOLBAR_SHRINK_NONE);
- elm_toolbar_select_mode_set(ss->bar, ELM_OBJECT_SELECT_MODE_NONE);
- elm_toolbar_icon_order_lookup_set(ss->bar, ELM_ICON_LOOKUP_FDO_THEME);
- evas_object_size_hint_weight_set(ss->bar, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(ss->bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_content_set(ss->notify, ss->bar);
- elm_object_tree_focus_allow_set(ss->bar, EINA_FALSE);
- evas_object_event_callback_add(ss->bar, EVAS_CALLBACK_MOUSE_IN, _mouse_in,
- ss->notify);
- evas_object_event_callback_add(ss->bar, EVAS_CALLBACK_MOUSE_OUT, _mouse_out,
- ss->notify);
-
- elm_toolbar_item_append(ss->bar, "window-close", _("Back"), _back, ss);
- elm_toolbar_item_append(ss->bar, "go-first", _("First"), _first,
- ss->slideshow);
- elm_toolbar_item_append(ss->bar, "go-previous", _("Previous"), _previous,
- ss->slideshow);
- ss->pause =
- elm_toolbar_item_append(ss->bar, "media-playback-start", _("Play"),
- _pause, ss);
- ss->pause_after =
- elm_toolbar_item_append(ss->bar, "go-next", _("Next"), _next,
- ss->slideshow);
- elm_toolbar_item_append(ss->bar, "go-last", _("Last"),
- _last, ss->slideshow);
- ss->fullscreen =
- elm_toolbar_item_append(ss->bar, "view-fullscreen", _("Fullscreen"),
- _fullscreen, ss);
- ss->fullscreen_after =
- elm_toolbar_item_append(ss->bar, "preferences-system", _("Settings"),
- _settings, ss);
-
- evas_object_show(ss->bar);
-
evas_object_freeze_events_set(ss->slideshow, EINA_TRUE);
return ss->slideshow;
@@ -418,26 +435,31 @@ ephoto_slideshow_entry_set(Evas_Object *obj, Ephoto_Entry *entry)
if (ss->pause)
{
- elm_object_item_del(ss->pause);
+ evas_object_del(ss->pause);
ss->pause =
- elm_toolbar_item_insert_before(ss->bar, ss->pause_after,
- "media-playback-pause", _("Pause"), _pause, ss);
+ _add_icon(ss->notify, "media-playback-pause", _("Pause"),
+ ss->pause_after);
+ evas_object_smart_callback_add(ss->pause, "clicked", _pause, ss);
ss->playing = 1;
}
if (ss->fullscreen)
{
- elm_object_item_del(ss->fullscreen);
+ evas_object_del(ss->fullscreen);
if (elm_win_fullscreen_get(ss->ephoto->win))
{
- ss->fullscreen =
- elm_toolbar_item_insert_before(ss->bar, ss->fullscreen_after,
- "view-restore", _("Normal"), _fullscreen, ss);
+ ss->fullscreen =
+ _add_icon(ss->notify, "view-restore", _("Normal"),
+ ss->fullscreen_after);
+ evas_object_smart_callback_add(ss->fullscreen, "clicked",
+ _fullscreen, ss);
}
else
{
- ss->fullscreen =
- elm_toolbar_item_insert_before(ss->bar, ss->fullscreen_after,
- "view-fullscreen", _("Fullscreen"), _fullscreen, ss);
+ ss->fullscreen =
+ _add_icon(ss->notify, "view-fullscreen", _("Fullscreen"),
+ ss->fullscreen_after);
+ evas_object_smart_callback_add(ss->fullscreen, "clicked",
+ _fullscreen, ss);
}
}
diff --git a/src/bin/ephoto_thumb_browser.c b/src/bin/ephoto_thumb_browser.c
index 1370ea1..bd62e1d 100644
--- a/src/bin/ephoto_thumb_browser.c
+++ b/src/bin/ephoto_thumb_browser.c
@@ -1,14 +1,15 @@
#include "ephoto.h"
+#include
#define ZOOM_MAX 512
#define ZOOM_MIN 128
#define ZOOM_STEP 32
-#define TODO_ITEM_MIN_BATCH 5
-
#define FILESEP "file://"
#define FILESEP_LEN sizeof(FILESEP) - 1
+#define TODO_ITEM_MIN_BATCH 5
+
#define DRAG_TIMEOUT 0.3
#define ANIM_TIME 0.2
@@ -21,34 +22,24 @@ struct _Ephoto_Thumb_Browser
{
Ephoto *ephoto;
Evas_Object *main;
- Evas_Object *panes;
Evas_Object *table;
Evas_Object *gridbox;
Evas_Object *grid;
Evas_Object *original_grid;
Evas_Object *nolabel;
- Evas_Object *infolabel;
- Evas_Object *fsel;
- Evas_Object *leftbox;
- Evas_Object *direntry;
Evas_Object *search;
- Evas_Object *hover;
- Evas_Object *toggle;
- Elm_Object_Item *dir_current;
+ Evas_Object *menu;
Elm_Object_Item *last_sel;
Ephoto_Sort sort;
Eio_File *ls;
- Ecore_File_Monitor *monitor;
+ Eina_Bool dirs_only;
+ Eina_Bool thumbs_only;
Eina_List *cut_items;
Eina_List *copy_items;
Eina_List *handlers;
Eina_List *todo_items;
Eina_List *entries;
Eina_List *searchentries;
- Ecore_Job *change_dir_job;
- Ecore_Timer *click_timer;
- Eina_Bool thumbs_only;
- Eina_Bool dirs_only;
double totsize;
double totsize_old;
int totimages;
@@ -67,30 +58,16 @@ struct _Ephoto_Thumb_Browser
/*Item Classes*/
static Elm_Gengrid_Item_Class _ephoto_thumb_file_class;
-static Elm_Genlist_Item_Class _ephoto_dir_class;
/*Main Callbacks*/
-static void _ephoto_show_slideshow(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED);
static void _ephoto_show_settings(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED);
static void _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
-static void _ephoto_panes_unpress(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED);
-static void _ephoto_panes_double_clicked(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED);
static void _ephoto_main_del(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
-/*File Pane Functions*/
-static void _ephoto_dir_hide_folders(void *data, Evas_Object *obj,
- void *event_info);
-static void _ephoto_dir_show_folders(void *data, Evas_Object *obj,
- void *event_info);
-
/*Thumb Pane Functions*/
-static void _ephoto_thumb_update_info_label(Ephoto_Thumb_Browser *tb);
static void _ephoto_thumb_activated(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info);
static void _ephoto_thumb_zoom_set(Ephoto_Thumb_Browser *tb, int zoom);
@@ -127,151 +104,11 @@ _menu_empty_cb(void *data, Evas_Object *obj EINA_UNUSED,
paths = eina_list_append(paths, strdup(file->path));
item = elm_gengrid_item_next_get(item);
}
- item = elm_genlist_first_item_get(tb->fsel);
- while (item)
- {
- file = elm_object_item_data_get(item);
- paths = eina_list_append(paths, strdup(file->path));
- item = elm_genlist_item_next_get(item);
- }
if (eina_list_count(paths) <= 0)
return;
ephoto_file_empty_trash(tb->ephoto, paths);
}
-static char *
-_drag_data_extract(char **drag_data)
-{
- char *uri = NULL;
-
- if (!drag_data)
- return uri;
-
- char *p = *drag_data;
-
- if (!p)
- return uri;
- char *s = strstr(p, FILESEP);
-
- if (s)
- p += FILESEP_LEN;
- s = strchr(p, '\n');
- uri = p;
- if (s)
- {
- if (s - p > 0)
- {
- char *s1 = s - 1;
-
- if (s1[0] == '\r')
- s1[0] = '\0';
- else
- {
- char *s2 = s + 1;
-
- if (s2[0] == '\r')
- {
- s[0] = '\0';
- s++;
- }
- else
- s[0] = '\0';
- }
- }
- else
- s[0] = '\0';
- s++;
- }
- else
- p = NULL;
- *drag_data = s;
-
- return uri;
-}
-
-static Eina_Bool
-_drop_dropcb(void *data EINA_UNUSED, Evas_Object *obj, Elm_Object_Item *it,
- Elm_Selection_Data *ev, int xposret EINA_UNUSED, int yposret EINA_UNUSED)
-{
- EINA_SAFETY_ON_NULL_RETURN_VAL(it, EINA_TRUE);
-
- Ephoto_Entry *entry = elm_object_item_data_get(it);
- const char *path = entry->path;
- Eina_List *files = NULL;
- Ephoto_Thumb_Browser *tb = evas_object_data_get(obj, "thumb_browser");
-
- if (!ev->data)
- return EINA_FALSE;
- if (ev->len <= 0)
- return EINA_FALSE;
- if (!path)
- return EINA_FALSE;
-
- char *dd = strdup(ev->data);
-
- if (!dd)
- return EINA_FALSE;
-
- char *s = _drag_data_extract(&dd);
-
- while (s)
- {
- files = eina_list_append(files, s);
- s = _drag_data_extract(&dd);
- }
- free(dd);
-
- if (tb->ephoto->config->move_drop)
- ephoto_file_move(tb->ephoto, files, path);
- else
- ephoto_file_copy(tb->ephoto, files, path);
- if (tb->dir_current)
- elm_genlist_item_selected_set(tb->dir_current, EINA_TRUE);
- return EINA_TRUE;
-}
-
-static Elm_Object_Item *
-_drop_item_getcb(Evas_Object *obj, Evas_Coord x, Evas_Coord y,
- int *xposret EINA_UNUSED, int *yposret)
-{
- Elm_Object_Item *gli;
-
- gli = elm_genlist_at_xy_item_get(obj, x, y, yposret);
-
- return gli;
-}
-
-static void
-_drop_enter(void *data, Evas_Object *obj EINA_UNUSED)
-{
- Ephoto_Thumb_Browser *tb = data;
-
- if (tb->dragging)
- elm_object_cursor_set(tb->main, ELM_CURSOR_TARGET);
-}
-
-static void
-_drop_leave(void *data, Evas_Object *obj EINA_UNUSED)
-{
- Ephoto_Thumb_Browser *tb = data;
-
- if (tb->dragging)
- {
- elm_object_cursor_set(tb->main, ELM_CURSOR_HAND2);
- if (tb->dir_current)
- elm_genlist_item_selected_set(tb->dir_current, EINA_TRUE);
- }
-}
-
-static void
-_drop_pos(void *data EINA_UNUSED, Evas_Object *cont EINA_UNUSED,
- Elm_Object_Item *it EINA_UNUSED, Evas_Coord x EINA_UNUSED,
- Evas_Coord y EINA_UNUSED, int xposret EINA_UNUSED,
- int yposret EINA_UNUSED, Elm_Xdnd_Action action EINA_UNUSED)
-{
- elm_genlist_item_selected_set(it, EINA_TRUE);
-}
-
static Eina_Bool
_5s_timeout_gone(void *data)
{
@@ -289,6 +126,9 @@ _dnd_drag_start(void *data EINA_UNUSED, Evas_Object *obj)
if (_5s_cancel)
_5s_timeout = ecore_timer_add(5.0, _5s_timeout_gone, obj);
elm_object_cursor_set(tb->main, ELM_CURSOR_HAND2);
+
+ ephoto_show_folders(tb->ephoto, EINA_FALSE);
+
tb->dragging = 1;
}
@@ -333,690 +173,93 @@ _dnd_drag_data_build(Eina_List **items)
strcpy((char *) drag_data, "");
EINA_LIST_FOREACH(*items, l, it)
- {
- e = elm_object_item_data_get(it);
- if (e->path)
- {
- strcat((char *) drag_data, FILESEP);
- strcat((char *) drag_data, e->path);
- strcat((char *) drag_data, "\n");
- }
- }
- }
- return drag_data;
-}
-
-static Evas_Object *
-_dnd_create_icon(void *data, Evas_Object *win, Evas_Coord *xoff,
- Evas_Coord *yoff)
-{
- Evas_Object *icon = NULL;
- Evas_Object *o = elm_object_item_part_content_get(data, "elm.swallow.icon");
-
- if (o)
- {
- int xm, ym, w = 30, h = 30;
- const char *f;
- const char *g;
-
- elm_image_file_get(o, &f, &g);
- evas_pointer_canvas_xy_get(evas_object_evas_get(o), &xm, &ym);
- if (xoff)
- *xoff = xm - (w / 2);
- if (yoff)
- *yoff = ym - (h / 2);
- icon = elm_icon_add(win);
- elm_image_file_set(icon, f, g);
- evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- if (xoff && yoff)
- evas_object_move(icon, *xoff, *yoff);
- evas_object_resize(icon, w, h);
- }
-
- return icon;
-}
-
-static const char *
-_dnd_get_drag_data(Evas_Object *obj, Elm_Object_Item *it, Eina_List **items)
-{
- const char *drag_data = NULL;
-
- *items = eina_list_clone(elm_gengrid_selected_items_get(obj));
- if (it)
- {
- if (!elm_gengrid_item_selected_get(it))
- *items = eina_list_append(*items, it);
- }
- drag_data = _dnd_drag_data_build(items);
-
- return drag_data;
-}
-
-static Elm_Object_Item *
-_dnd_item_get(Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *xposret,
- int *yposret)
-{
- Elm_Object_Item *item;
-
- item = elm_gengrid_at_xy_item_get(obj, x, y, xposret, yposret);
- return item;
-}
-
-static Eina_Bool
-_dnd_item_data_get(Evas_Object *obj, Elm_Object_Item *it,
- Elm_Drag_User_Info *info)
-{
- info->format = ELM_SEL_FORMAT_TARGETS;
- info->createicon = _dnd_create_icon;
- info->createdata = it;
- info->dragstart = _dnd_drag_start;
- info->icons = NULL;
- info->dragdone = _dnd_drag_done;
- info->data = _dnd_get_drag_data(obj, it, (Eina_List **) & info->donecbdata);
- info->acceptdata = info->donecbdata;
- if (info->data)
- return EINA_TRUE;
- else
- return EINA_FALSE;
-}
-
-/*File Pane Callbacks*/
-static void
-_on_list_expand_req(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info)
-{
- Ephoto_Thumb_Browser *tb = data;
- Elm_Object_Item *it = event_info;
-
- ecore_job_del(tb->change_dir_job);
- tb->change_dir_job = NULL;
- ecore_timer_del(tb->click_timer);
- tb->click_timer = NULL;
- elm_genlist_item_expanded_set(it, EINA_TRUE);
-}
-
-static void
-_on_list_contract_req(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
- void *event_info)
-{
- Ephoto_Thumb_Browser *tb = data;
- Elm_Object_Item *it = event_info;
-
- ecore_job_del(tb->change_dir_job);
- tb->change_dir_job = NULL;
- ecore_timer_del(tb->click_timer);
- tb->click_timer = NULL;
- elm_genlist_item_expanded_set(it, EINA_FALSE);
-}
-
-static void
-_on_list_expanded(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Ephoto_Thumb_Browser *tb = data;
- Elm_Object_Item *it = event_info;
- Ephoto_Entry *entry;
- const char *path;
-
- entry = elm_object_item_data_get(it);
- path = entry->path;
- tb->dirs_only = 0;
- if (!strcmp(path, tb->ephoto->config->directory))
- tb->dirs_only = 1;
- else
- tb->dirs_only = 0;
- tb->thumbs_only = 0;
- ephoto_directory_set(tb->ephoto, path, it, tb->dirs_only, tb->thumbs_only);
- ephoto_title_set(tb->ephoto, tb->ephoto->config->directory);
-}
-
-static void
-_on_list_contracted(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Ephoto_Thumb_Browser *tb = data;
- Elm_Object_Item *it = event_info;
- Ephoto_Entry *entry;
- const char *path;
-
- entry = elm_object_item_data_get(it);
- path = entry->path;
- elm_genlist_item_subitems_clear(it);
- if (!strcmp(path, tb->ephoto->config->directory))
- return;
- tb->thumbs_only = 1;
- tb->dirs_only = 0;
- ephoto_directory_set(tb->ephoto, path, NULL,
- tb->dirs_only, tb->thumbs_only);
- ephoto_title_set(tb->ephoto,
- tb->ephoto->config->directory);
-}
-
-static void
-_dir_job(void *data)
-{
- Elm_Object_Item *it = data;
- Ephoto_Thumb_Browser *tb = evas_object_data_get(it, "thumb_browser");
- Ephoto_Entry *entry;
- const char *path;
-
- entry = elm_object_item_data_get(it);
- path = entry->path;
- tb->change_dir_job = NULL;
- tb->thumbs_only = 1;
- tb->dirs_only = 0;
- ephoto_directory_set(tb->ephoto, path, NULL,
- tb->dirs_only, tb->thumbs_only);
- ephoto_title_set(tb->ephoto, tb->ephoto->config->directory);
-}
-
-static void
-_wait_job(void *data)
-{
- Elm_Object_Item *it = data;
- Ephoto_Thumb_Browser *tb = evas_object_data_get(it, "thumb_browser");
-
- if (tb->change_dir_job)
- ecore_job_del(tb->change_dir_job);
- tb->change_dir_job = ecore_job_add(_dir_job, it);
-}
-
-static void
-_on_list_selected(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info)
-{
- Ephoto_Thumb_Browser *tb = data;
- Elm_Object_Item *it = event_info;
-
- evas_object_data_set(it, "thumb_browser", tb);
- if (!tb->dragging)
- {
- tb->dir_current = it;
-
- ecore_job_add(_wait_job, it);
- }
-}
-
-static char *
-_dir_item_text_get(void *data, Evas_Object *obj EINA_UNUSED,
- const char *part EINA_UNUSED)
-{
- Ephoto_Entry *e = data;
-
- return strdup(e->label);
-}
-
-static Evas_Object *
-_dir_item_icon_get(void *data EINA_UNUSED, Evas_Object *obj,
- const char *part)
-{
- if (!strcmp(part, "elm.swallow.end"))
- return NULL;
- Evas_Object *ic = elm_icon_add(obj);
-
- elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
- elm_icon_standard_set(ic, "folder");
- return ic;
-}
-
-static void
-_dir_item_del(void *data, Evas_Object *obj EINA_UNUSED)
-{
- Ephoto_Entry *e = data;
-
- if (!e->no_delete)
- ephoto_entry_free(e->ephoto, e);
-}
-
-static Eina_Bool
-_check_for_subdirs(Ephoto_Entry *entry)
-{
- Eina_Iterator *ls = eina_file_direct_ls(entry->path);
- Eina_File_Direct_Info *info;
-
- if (!ls)
- return EINA_FALSE;
- EINA_ITERATOR_FOREACH(ls, info)
- {
- if (info->type == EINA_FILE_DIR)
- {
- eina_iterator_free(ls);
- return EINA_TRUE;
- }
- }
- eina_iterator_free(ls);
- return EINA_FALSE;
-}
-
-static void
-_dir_go_home(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- Ephoto_Thumb_Browser *tb = data;
-
- elm_genlist_clear(tb->fsel);
- tb->thumbs_only = 0;
- tb->dirs_only = 0;
- ephoto_directory_set(tb->ephoto, getenv("HOME"), NULL,
- tb->dirs_only, tb->thumbs_only);
- ephoto_title_set(tb->ephoto, tb->ephoto->config->directory);
- ephoto_thumb_browser_top_dir_set(tb->ephoto, tb->ephoto->config->directory);
-}
-
-static void
-_dir_go_up(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- Ephoto_Thumb_Browser *tb = data;
-
- if (strcmp(tb->ephoto->config->directory, "/"))
- {
- char path[PATH_MAX];
- Elm_Object_Item *it, *next;
- Ephoto_Entry *e;
-
- snprintf(path, PATH_MAX, "%s", tb->ephoto->config->directory);
- it = elm_genlist_first_item_get(tb->fsel);
- while (it)
- {
- e = elm_object_item_data_get(it);
- if (!strcmp(e->path, path))
- {
- if (e->parent)
- {
- elm_genlist_item_expanded_set(e->parent, EINA_FALSE);
- return;
- }
- }
- next = elm_genlist_item_next_get(it);
- it = next;
- }
- elm_genlist_clear(tb->fsel);
- tb->thumbs_only = 0;
- tb->dirs_only = 0;
- ephoto_directory_set(tb->ephoto, ecore_file_dir_get(path), NULL,
- tb->dirs_only, tb->thumbs_only);
- ephoto_title_set(tb->ephoto, tb->ephoto->config->directory);
- ephoto_thumb_browser_top_dir_set(tb->ephoto,
- tb->ephoto->config->directory);
- }
-}
-
-static void
-_dir_go_trash(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- Ephoto_Thumb_Browser *tb = data;
- char path[PATH_MAX];
-
- snprintf(path, PATH_MAX, "%s/.config/ephoto/trash", getenv("HOME"));
- if (!ecore_file_exists(path))
- ecore_file_mkpath(path);
- elm_genlist_clear(tb->fsel);
- tb->thumbs_only = 0;
- tb->dirs_only = 0;
- ephoto_directory_set(tb->ephoto, path, NULL,
- tb->dirs_only, tb->thumbs_only);
- ephoto_title_set(tb->ephoto, _("Trash"));
- ephoto_thumb_browser_top_dir_set(tb->ephoto, tb->ephoto->config->directory);
-}
-
-static void
-_dir_go_entry(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- const char *dir;
- Ephoto_Thumb_Browser *tb = data;
-
- dir = elm_object_text_get(tb->direntry);
- if (ecore_file_is_dir(dir))
- {
- elm_genlist_clear(tb->fsel);
- tb->thumbs_only = 0;
- tb->dirs_only = 0;
- ephoto_directory_set(tb->ephoto, dir, NULL,
- tb->dirs_only, tb->thumbs_only);
- ephoto_title_set(tb->ephoto, tb->ephoto->config->directory);
- ephoto_thumb_browser_top_dir_set(tb->ephoto,
- tb->ephoto->config->directory);
- }
-}
-
-static Eina_Bool
-_click_timer_cb(void *data)
-{
- Elm_Object_Item *item = data;
- Ephoto_Thumb_Browser *tb = evas_object_data_get(item, "thumb_browser");
-
- _on_list_selected(tb, NULL, item);
- tb->click_timer = NULL;
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-static void
-_fsel_menu_new_dir_cb(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- Ephoto_Thumb_Browser *tb = data;
- Elm_Object_Item *item = elm_genlist_selected_item_get(tb->fsel);
- Ephoto_Entry *entry;
- const char *path;
-
- if (item)
- {
- entry = elm_object_item_data_get(item);
- path = entry->path;
- }
- else
- path = tb->ephoto->config->directory;
- if (!path)
- return;
- ephoto_file_new_dir(tb->ephoto, path);
-}
-
-static void
-_fsel_menu_paste_cb(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- Ephoto_Thumb_Browser *tb = data;
- Elm_Object_Item *item = elm_genlist_selected_item_get(tb->fsel);
- Ephoto_Entry *entry;
- const char *path;
-
- if (item)
- {
- entry = elm_object_item_data_get(item);
- path = entry->path;
- }
- else
- path = tb->ephoto->config->directory;
-
- if (eina_list_count(tb->cut_items) > 0)
- {
- ephoto_file_paste(tb->ephoto, eina_list_clone(tb->cut_items), EINA_FALSE, path);
- eina_list_free(tb->cut_items);
- tb->cut_items = NULL;
- }
- else if (eina_list_count(tb->copy_items) > 0)
- {
- ephoto_file_paste(tb->ephoto, eina_list_clone(tb->copy_items), EINA_TRUE, path);
- eina_list_free(tb->copy_items);
- tb->copy_items = NULL;
- }
-}
-
-static void
-_fsel_menu_rename_cb(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- Ephoto_Thumb_Browser *tb = data;
- Elm_Object_Item *item = elm_genlist_selected_item_get(tb->fsel);
- Ephoto_Entry *entry;
- const char *path;
-
- if (!item)
- return;
- entry = elm_object_item_data_get(item);
- path = entry->path;
- if (!path)
- return;
- ephoto_file_rename(tb->ephoto, path);
-}
-
-static void
-_fsel_menu_delete_cb(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- Ephoto_Thumb_Browser *tb = data;
- Elm_Object_Item *item = elm_genlist_selected_item_get(tb->fsel);
- Ephoto_Entry *entry;
- Eina_List *files = NULL;
- const char *path;
-
- if (!item)
- return;
- entry = elm_object_item_data_get(item);
- path = entry->path;
- if (!path)
- return;
- files = eina_list_append(files, path);
- ephoto_file_delete(tb->ephoto, files, EINA_FILE_DIR);
-}
-
-static void
-_fsel_mouse_up_cb(void *data, Evas *e EINA_UNUSED,
- Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Ephoto_Thumb_Browser *tb = data;
- Evas_Object *menu;
- Elm_Object_Item *item, *menu_it;
- Evas_Event_Mouse_Up *info = event_info;
- char trash[PATH_MAX];
- Evas_Coord x, y;
-
- evas_pointer_canvas_xy_get(evas_object_evas_get(tb->fsel), &x, &y);
- item = elm_genlist_at_xy_item_get(tb->fsel, x, y, 0);
-
- if (info->button == 1 && item)
- {
- if (info->flags == EVAS_BUTTON_DOUBLE_CLICK)
- {
- if (elm_genlist_item_type_get(item) == ELM_GENLIST_ITEM_TREE)
- {
- if (tb->click_timer)
- {
- ecore_timer_del(tb->click_timer);
- tb->click_timer = NULL;
- elm_genlist_item_expanded_set(item,
- !elm_genlist_item_expanded_get(item));
- }
- }
- }
- else
- {
- evas_object_data_set(item, "thumb_browser", tb);
- if (elm_genlist_item_type_get(item) == ELM_GENLIST_ITEM_TREE)
- tb->click_timer = ecore_timer_add(.3, _click_timer_cb, item);
- else
- _on_list_selected(tb, NULL, item);
- }
- }
- else if (!item)
- {
- Elm_Object_Item *it;
-
- it = elm_genlist_selected_item_get(tb->fsel);
- if (it)
- elm_genlist_item_selected_set(it, EINA_FALSE);
- ephoto_directory_set(tb->ephoto, tb->ephoto->top_directory, NULL, 0, 1);
- }
-
- if (info->button != 3)
- return;
-
- snprintf(trash, PATH_MAX, "%s/.config/ephoto/trash", getenv("HOME"));
-
- if (item)
- elm_genlist_item_selected_set(item, EINA_TRUE);
- menu = elm_menu_add(tb->ephoto->win);
- elm_menu_move(menu, x, y);
- menu_it = elm_menu_item_add(menu, NULL, "document-properties", _("Edit"),
- NULL, NULL);
- elm_menu_item_separator_add(menu, NULL);
- if (strcmp(tb->ephoto->config->directory, trash))
- {
- elm_menu_item_add(menu, menu_it, "folder-new", _("New Folder"),
- _fsel_menu_new_dir_cb, tb);
- }
- if (item)
- {
- evas_object_data_set(item, "thumb_browser", tb);
- elm_menu_item_add(menu, menu_it, "edit", _("Rename"),
- _fsel_menu_rename_cb, item);
- }
- if (tb->cut_items || tb->copy_items)
- {
- elm_menu_item_add(menu, menu_it, "edit-paste", _("Paste"),
- _fsel_menu_paste_cb, tb);
- }
- if (!strcmp(tb->ephoto->config->directory, trash) &&
- elm_gengrid_first_item_get(tb->grid))
- {
- elm_menu_item_add(menu, menu_it, "edit-delete", _("Empty Trash"),
- _menu_empty_cb, tb);
- }
- else if (!strcmp(tb->ephoto->config->directory, trash) &&
- elm_genlist_first_item_get(tb->fsel))
- {
- elm_menu_item_add(menu, menu_it, "edit-delete", _("Empty Trash"),
- _menu_empty_cb, tb);
- }
- if (strcmp(tb->ephoto->config->directory, trash) && item)
- {
- elm_menu_item_add(menu, menu_it, "edit-delete", _("Delete"),
- _fsel_menu_delete_cb, tb);
- }
- if (strcmp(tb->ephoto->config->directory, trash) &&
- elm_gengrid_first_item_get(tb->grid))
- {
- elm_menu_item_add(menu, NULL, "media-playback-start", _("Slideshow"),
- _ephoto_show_slideshow, tb);
+ {
+ e = elm_object_item_data_get(it);
+ if (e->path)
+ {
+ strcat((char *) drag_data, FILESEP);
+ strcat((char *) drag_data, e->path);
+ strcat((char *) drag_data, "\n");
+ }
+ }
}
- elm_menu_item_add(menu, NULL, "preferences-system", _("Settings"),
- _ephoto_show_settings, tb);
- evas_object_smart_callback_add(menu, "dismissed", _menu_dismissed_cb,
- tb);
- evas_object_show(menu);
+ return drag_data;
}
-/*File Pane Functions*/
-static void
-_ephoto_dir_show_folders(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
+static Evas_Object *
+_dnd_create_icon(void *data, Evas_Object *win, Evas_Coord *xoff,
+ Evas_Coord *yoff)
{
- Ephoto_Thumb_Browser *tb = data;
+ Evas_Object *icon = NULL;
+ Evas_Object *o = elm_object_item_part_content_get(data, "elm.swallow.icon");
- elm_check_state_set(tb->toggle, EINA_FALSE);
- elm_panes_content_left_min_size_set(tb->panes, 100);
- elm_panes_content_left_size_set(tb->panes, tb->ephoto->config->lpane_size);
- tb->ephoto->config->fsel_hide = 0;
- evas_object_smart_callback_del(tb->toggle, "changed", _ephoto_dir_show_folders);
- evas_object_smart_callback_add(tb->toggle, "changed", _ephoto_dir_hide_folders, tb);
-}
+ if (o)
+ {
+ int xm, ym, w = 30, h = 30;
+ const char *f;
+ const char *g;
-static void
-_ephoto_dir_hide_folders(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- Ephoto_Thumb_Browser *tb = data;
+ elm_image_file_get(o, &f, &g);
+ evas_pointer_canvas_xy_get(evas_object_evas_get(o), &xm, &ym);
+ if (xoff)
+ *xoff = xm - (w / 2);
+ if (yoff)
+ *yoff = ym - (h / 2);
+ icon = elm_icon_add(win);
+ elm_image_file_set(icon, f, g);
+ evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ if (xoff && yoff)
+ evas_object_move(icon, *xoff, *yoff);
+ evas_object_resize(icon, w, h);
+ }
- elm_check_state_set(tb->toggle, EINA_TRUE);
- elm_panes_content_left_min_size_set(tb->panes, 0);
- elm_panes_content_left_size_set(tb->panes, 0.0);
- tb->ephoto->config->fsel_hide = 1;
- evas_object_smart_callback_del(tb->toggle, "changed", _ephoto_dir_hide_folders);
- evas_object_smart_callback_add(tb->toggle, "changed", _ephoto_dir_show_folders, tb);
+ return icon;
}
-void
-_ephoto_file_pane_add(Ephoto_Thumb_Browser *tb)
+static const char *
+_dnd_get_drag_data(Evas_Object *obj, Elm_Object_Item *it, Eina_List **items)
{
- Evas_Object *hbox, *but, *ic;
-
- tb->leftbox = elm_box_add(tb->panes);
- elm_box_horizontal_set(tb->leftbox, EINA_FALSE);
- elm_box_homogeneous_set(tb->leftbox, EINA_FALSE);
- evas_object_size_hint_weight_set(tb->leftbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(tb->leftbox,
- EVAS_HINT_FILL, EVAS_HINT_FILL);
+ const char *drag_data = NULL;
- hbox = elm_box_add(tb->leftbox);
- elm_box_horizontal_set(hbox, EINA_TRUE);
- elm_box_homogeneous_set(hbox, EINA_TRUE);
- evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_end(tb->leftbox, hbox);
- evas_object_show(hbox);
+ *items = eina_list_clone(elm_gengrid_selected_items_get(obj));
+ if (it)
+ {
+ if (!elm_gengrid_item_selected_get(it))
+ *items = eina_list_append(*items, it);
+ }
+ drag_data = _dnd_drag_data_build(items);
- ic = elm_icon_add(hbox);
- elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
- elm_icon_standard_set(ic, "go-up");
- evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- but = elm_button_add(hbox);
- elm_object_part_content_set(but, "icon", ic);
- elm_object_text_set(but, _("Up"));
- evas_object_size_hint_weight_set(but, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(but, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_smart_callback_add(but, "clicked", _dir_go_up, tb);
- elm_box_pack_end(hbox, but);
- evas_object_show(but);
+ return drag_data;
+}
- ic = elm_icon_add(hbox);
- elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
- elm_icon_standard_set(ic, "go-home");
- evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- but = elm_button_add(hbox);
- elm_object_part_content_set(but, "icon", ic);
- elm_object_text_set(but, _("Home"));
- evas_object_size_hint_weight_set(but, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(but, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_smart_callback_add(but, "clicked", _dir_go_home, tb);
- elm_box_pack_end(hbox, but);
- evas_object_show(but);
+static Elm_Object_Item *
+_dnd_item_get(Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *xposret,
+ int *yposret)
+{
+ Elm_Object_Item *item;
- ic = elm_icon_add(hbox);
- elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
- elm_icon_standard_set(ic, "user-trash");
- evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- but = elm_button_add(hbox);
- elm_object_part_content_set(but, "icon", ic);
- elm_object_text_set(but, _("Trash"));
- evas_object_size_hint_weight_set(but, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(but, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_smart_callback_add(but, "clicked", _dir_go_trash, tb);
- elm_box_pack_end(hbox, but);
- evas_object_show(but);
+ item = elm_gengrid_at_xy_item_get(obj, x, y, xposret, yposret);
+ return item;
+}
- tb->direntry = elm_entry_add(tb->main);
- elm_entry_single_line_set(tb->direntry, EINA_TRUE);
- elm_entry_scrollable_set(tb->direntry, EINA_TRUE);
- elm_scroller_policy_set(tb->direntry, ELM_SCROLLER_POLICY_OFF,
- ELM_SCROLLER_POLICY_OFF);
- evas_object_size_hint_weight_set(tb->direntry, EVAS_HINT_EXPAND,
- EVAS_HINT_FILL);
- evas_object_size_hint_align_set(tb->direntry, EVAS_HINT_FILL,
- EVAS_HINT_FILL);
- evas_object_smart_callback_add(tb->direntry, "activated",
- _dir_go_entry, tb);
- elm_box_pack_end(tb->leftbox, tb->direntry);
- evas_object_show(tb->direntry);
-
- tb->fsel = elm_genlist_add(tb->leftbox);
- elm_genlist_homogeneous_set(tb->fsel, EINA_TRUE);
- elm_genlist_select_mode_set(tb->fsel, ELM_OBJECT_SELECT_MODE_ALWAYS);
- evas_object_size_hint_weight_set(tb->fsel, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(tb->fsel, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_smart_callback_add(tb->fsel, "expand,request",
- _on_list_expand_req, tb);
- evas_object_smart_callback_add(tb->fsel, "contract,request",
- _on_list_contract_req, tb);
- evas_object_smart_callback_add(tb->fsel, "expanded", _on_list_expanded, tb);
- evas_object_smart_callback_add(tb->fsel, "contracted", _on_list_contracted,
- tb);
- evas_object_event_callback_add(tb->fsel, EVAS_CALLBACK_MOUSE_UP,
- _fsel_mouse_up_cb, tb);
- evas_object_data_set(tb->fsel, "thumb_browser", tb);
- elm_box_pack_end(tb->leftbox, tb->fsel);
- evas_object_show(tb->fsel);
-
- elm_drop_item_container_add(tb->fsel, ELM_SEL_FORMAT_TARGETS,
- _drop_item_getcb, _drop_enter, tb, _drop_leave, tb, _drop_pos, tb,
- _drop_dropcb, NULL);
-
- evas_object_raise(hbox);
- evas_object_raise(tb->direntry);
+static Eina_Bool
+_dnd_item_data_get(Evas_Object *obj, Elm_Object_Item *it,
+ Elm_Drag_User_Info *info)
+{
+ info->format = ELM_SEL_FORMAT_TARGETS;
+ info->createicon = _dnd_create_icon;
+ info->createdata = it;
+ info->dragstart = _dnd_drag_start;
+ info->icons = NULL;
+ info->dragdone = _dnd_drag_done;
+ info->data = _dnd_get_drag_data(obj, it, (Eina_List **) & info->donecbdata);
+ info->acceptdata = info->donecbdata;
+ if (info->data)
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
}
/*Thumb Pane Callbacks*/
@@ -1053,17 +296,6 @@ _thumb_item_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED)
/* The entry is already freed when changing directories. */
}
-static int
-_entry_cmp(const void *pa, const void *pb)
-{
- const Ephoto_Entry *a, *b;
-
- a = elm_object_item_data_get(pa);
- b = elm_object_item_data_get(pb);
-
- return strcasecmp(a->basename, b->basename);
-}
-
static int
_entry_cmp_grid_alpha_asc(const void *pa, const void *pb)
{
@@ -1142,7 +374,7 @@ _entry_cmp_grid_mod_desc(const void *pa, const void *pb)
}
static void
-_sort_alpha_asc(void *data, Evas_Object *obj EINA_UNUSED,
+_sort_alpha_asc(void *data, Evas_Object *obj,
void *event_data EINA_UNUSED)
{
Ephoto_Thumb_Browser *tb = data;
@@ -1151,9 +383,9 @@ _sort_alpha_asc(void *data, Evas_Object *obj EINA_UNUSED,
tb->sort = EPHOTO_SORT_ALPHABETICAL_ASCENDING;
tb->thumbs_only = 1;
tb->dirs_only = 0;
- ic = elm_icon_add(tb->hover);
+ ic = elm_icon_add(obj);
elm_icon_standard_set(ic, "view-sort-ascending");
- elm_object_part_content_set(tb->hover, "icon", ic);
+ elm_object_part_content_set(obj, "icon", ic);
evas_object_show(ic);
ephoto_directory_set(tb->ephoto, tb->ephoto->config->directory,
NULL, tb->dirs_only, tb->thumbs_only);
@@ -1169,9 +401,9 @@ _sort_alpha_desc(void *data, Evas_Object *obj EINA_UNUSED,
tb->sort = EPHOTO_SORT_ALPHABETICAL_DESCENDING;
tb->thumbs_only = 1;
tb->dirs_only = 0;
- ic = elm_icon_add(tb->hover);
+ ic = elm_icon_add(obj);
elm_icon_standard_set(ic, "view-sort-descending");
- elm_object_part_content_set(tb->hover, "icon", ic);
+ elm_object_part_content_set(obj, "icon", ic);
evas_object_show(ic);
ephoto_directory_set(tb->ephoto, tb->ephoto->config->directory,
NULL, tb->dirs_only, tb->thumbs_only);
@@ -1187,9 +419,9 @@ _sort_mod_asc(void *data, Evas_Object *obj EINA_UNUSED,
tb->sort = EPHOTO_SORT_MODTIME_ASCENDING;
tb->thumbs_only = 1;
tb->dirs_only = 0;
- ic = elm_icon_add(tb->hover);
+ ic = elm_icon_add(obj);
elm_icon_standard_set(ic, "view-sort-ascending");
- elm_object_part_content_set(tb->hover, "icon", ic);
+ elm_object_part_content_set(obj, "icon", ic);
evas_object_show(ic);
ephoto_directory_set(tb->ephoto, tb->ephoto->config->directory,
NULL, tb->dirs_only, tb->thumbs_only);
@@ -1205,9 +437,9 @@ _sort_mod_desc(void *data, Evas_Object *obj EINA_UNUSED,
tb->sort = EPHOTO_SORT_MODTIME_DESCENDING;
tb->thumbs_only = 1;
tb->dirs_only = 0;
- ic = elm_icon_add(tb->hover);
+ ic = elm_icon_add(obj);
elm_icon_standard_set(ic, "view-sort-descending");
- elm_object_part_content_set(tb->hover, "icon", ic);
+ elm_object_part_content_set(obj, "icon", ic);
evas_object_show(ic);
ephoto_directory_set(tb->ephoto, tb->ephoto->config->directory,
NULL, tb->dirs_only, tb->thumbs_only);
@@ -1233,6 +465,54 @@ _zoom_out(void *data, Evas_Object *obj EINA_UNUSED,
_ephoto_thumb_zoom_set(tb, zoom);
}
+static void
+_view_single(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Ephoto_Thumb_Browser *tb = data;
+ Elm_Object_Item *it = elm_gengrid_selected_item_get(tb->grid);
+ Ephoto_Entry *entry;
+ Eina_List *selected, *s;
+ Elm_Object_Item *item;
+
+ if (it)
+ entry = elm_object_item_data_get(it);
+ else
+ entry = eina_list_nth(tb->entries, 0);
+ selected =
+ eina_list_clone(elm_gengrid_selected_items_get(tb->grid));
+ if (eina_list_count(selected) <= 1 && tb->searchentries)
+ {
+ if (tb->ephoto->selentries)
+ eina_list_free(tb->ephoto->selentries);
+ tb->ephoto->selentries = NULL;
+ tb->ephoto->searchentries =
+ eina_list_clone(tb->searchentries);
+ }
+ else if (eina_list_count(selected) > 1)
+ {
+ EINA_LIST_FOREACH(selected, s, item)
+ {
+ tb->ephoto->selentries =
+ eina_list_append(tb->ephoto->selentries,
+ elm_object_item_data_get(item));
+ }
+ }
+ else
+ {
+ if (tb->ephoto->selentries)
+ eina_list_free(tb->ephoto->selentries);
+ if (tb->ephoto->searchentries)
+ eina_list_free(tb->ephoto->searchentries);
+ tb->ephoto->selentries = NULL;
+ tb->ephoto->searchentries = NULL;
+ }
+ if (entry)
+ {
+ evas_object_smart_callback_call(tb->main, "view", entry);
+ }
+}
+
static void
_grid_menu_select_all_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
@@ -1391,11 +671,12 @@ _grid_mouse_up_cb(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED, void *event_info)
{
Ephoto_Thumb_Browser *tb = data;
- Evas_Object *menu, *menu_it;
+ Evas_Object *menu;
Elm_Object_Item *item;
Evas_Event_Mouse_Up *info = event_info;
Eina_Bool ctrl = evas_key_modifier_is_set(info->modifiers, "Control");
Eina_Bool shift = evas_key_modifier_is_set(info->modifiers, "Shift");
+ Eina_Bool clear_selection = EINA_FALSE;
char trash[PATH_MAX];
const Eina_List *selected = elm_gengrid_selected_items_get(tb->grid);
int x, y;
@@ -1444,21 +725,19 @@ _grid_mouse_up_cb(void *data, Evas *e EINA_UNUSED,
}
else
{
- Eina_List *sel = eina_list_clone(selected);
- Eina_List *node;
- Elm_Object_Item *it;
- if (eina_list_count(sel) > 0)
- {
- EINA_LIST_FOREACH(sel, node, it)
- {
- elm_gengrid_item_selected_set(it, EINA_FALSE);
- }
- eina_list_free(sel);
- }
+ clear_selection = EINA_TRUE;
tb->last_sel = item;
}
}
if (info->button == 1 && !item)
+ clear_selection = EINA_TRUE;
+
+ else if (info->button == 3 && item)
+ {
+ if (!elm_gengrid_item_selected_get(item))
+ clear_selection = EINA_TRUE;
+ }
+ if (clear_selection)
{
Eina_List *sel = eina_list_clone(selected);
Eina_List *node;
@@ -1475,71 +754,70 @@ _grid_mouse_up_cb(void *data, Evas *e EINA_UNUSED,
if (info->button != 3)
return;
+ if (!elm_gengrid_first_item_get(tb->grid) && !tb->cut_items)
+ {
+ if (!tb->copy_items)
+ return;
+ }
+
snprintf(trash, PATH_MAX, "%s/.config/ephoto/trash", getenv("HOME"));
if (item)
- elm_gengrid_item_selected_set(item, EINA_TRUE);
+ {
+ elm_gengrid_item_selected_set(item, EINA_TRUE);
+ tb->last_sel = item;
+ }
+
+ selected = elm_gengrid_selected_items_get(tb->grid);
+
menu = elm_menu_add(tb->ephoto->win);
elm_menu_move(menu, x, y);
+
if (elm_gengrid_first_item_get(tb->grid))
{
- menu_it = elm_menu_item_add(menu, NULL, "document-properties", _("Edit"),
- NULL, NULL);
- elm_menu_item_separator_add(menu, NULL);
- elm_menu_item_add(menu, menu_it, "system-search", _("Search"),
+ elm_menu_item_add(menu, NULL, "system-search", _("Search"),
_ephoto_thumb_search_start, tb);
- elm_menu_item_separator_add(menu, menu_it);
- elm_menu_item_add(menu, menu_it, "edit-select-all", _("Select All"),
+ elm_menu_item_add(menu, NULL, "edit-select-all", _("Select All"),
_grid_menu_select_all_cb, tb);
- }
- else
- {
- menu_it = NULL;
- }
- if (eina_list_count(selected) > 0 || item)
- {
- elm_menu_item_add(menu, menu_it, "edit-clear", _("Select None"),
- _grid_menu_clear_cb, tb);
- elm_menu_item_separator_add(menu, menu_it);
+ if (eina_list_count(selected) || item)
+ elm_menu_item_add(menu, NULL, "edit-clear", _("Select None"),
+ _grid_menu_clear_cb, tb);
if (item)
{
+ elm_menu_item_add(menu, NULL, "edit", _("Rename"),
+ _grid_menu_rename_cb, item);
evas_object_data_set(item, "thumb_browser", tb);
- elm_menu_item_add(menu, menu_it, "edit", _("Rename"),
- _grid_menu_rename_cb, item);
}
- elm_menu_item_add(menu, menu_it, "edit-cut", _("Cut"), _grid_menu_cut_cb,
- tb);
- elm_menu_item_add(menu, menu_it, "edit-copy", _("Copy"),
- _grid_menu_copy_cb, tb);
+ if (eina_list_count(selected))
+ {
+ elm_menu_item_add(menu, NULL, "edit-cut", _("Cut"),
+ _grid_menu_cut_cb, tb);
+ elm_menu_item_add(menu, NULL, "edit-copy", _("Copy"),
+ _grid_menu_copy_cb, tb);
+ }
}
if (tb->cut_items || tb->copy_items)
{
- elm_menu_item_add(menu, menu_it, "edit-paste", _("Paste"),
- _grid_menu_paste_cb, tb);
+ elm_menu_item_add(menu, NULL, "edit-paste", _("Paste"),
+ _grid_menu_paste_cb, tb);
}
- if (!strcmp(tb->ephoto->config->directory, trash) &&
- elm_gengrid_first_item_get(tb->grid))
- {
- elm_menu_item_add(menu, menu_it, "edit-delete", _("Empty Trash"),
- _menu_empty_cb, tb);
- }
- else
+ if (elm_gengrid_first_item_get(tb->grid))
{
- if (elm_gengrid_first_item_get(tb->grid))
+ if (!strcmp(tb->ephoto->config->directory, trash))
{
- elm_menu_item_add(menu, menu_it, "edit-delete", _("Delete"),
+ elm_menu_item_add(menu, NULL, "edit-delete", _("Empty Trash"),
+ _menu_empty_cb, tb);
+ }
+ else
+ {
+ elm_menu_item_add(menu, NULL, "edit-delete", _("Delete"),
_grid_menu_delete_cb, tb);
- elm_menu_item_add(menu, NULL, "media-playback-start",
- _("Slideshow"), _ephoto_show_slideshow, tb);
}
}
- elm_menu_item_add(menu, NULL, "preferences-system", _("Settings"),
- _ephoto_show_settings, tb);
evas_object_smart_callback_add(menu, "dismissed", _menu_dismissed_cb,
tb);
evas_object_show(menu);
}
-
static void
_grid_mouse_wheel(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info)
@@ -1557,6 +835,29 @@ _grid_mouse_wheel(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
}
+static void
+_grid_changed(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Ephoto_Thumb_Browser *tb = data;
+ Evas_Coord w, h, gw, gh;
+ Edje_Message_Int_Set *msg;
+
+ if (tb->ephoto->state != EPHOTO_STATE_THUMB)
+ return;
+
+ elm_scroller_region_get(tb->grid, 0, 0, &w, &h);
+ evas_object_geometry_get(tb->grid, 0, 0, &gw, &gh);
+ gw -= w;
+ gh -= h;
+ msg = alloca(sizeof(Edje_Message_Int_Set) + (2 * sizeof(int)));
+ msg->count = 2;
+ msg->val[0] = gw;
+ msg->val[1] = gh;
+ edje_object_message_send(elm_layout_edje_get(tb->ephoto->layout),
+ EDJE_MESSAGE_INT_SET, 1, msg);
+}
+
static void
_ephoto_thumb_activated(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info)
@@ -1601,14 +902,15 @@ _ephoto_thumb_activated(void *data, Evas_Object *obj EINA_UNUSED,
}
/*Thumb Pane Functions*/
-static void
-_ephoto_thumb_update_info_label(Ephoto_Thumb_Browser *tb)
+void
+ephoto_thumb_browser_update_info_label(Ephoto *ephoto)
{
char buf[PATH_MAX];
char isize[PATH_MAX];
char image_info[PATH_MAX];
double totsize;
-
+ Ephoto_Thumb_Browser *tb = evas_object_data_get(ephoto->thumb_browser,
+ "thumb_browser");
if (!tb->totimages)
{
@@ -1617,7 +919,7 @@ _ephoto_thumb_update_info_label(Ephoto_Thumb_Browser *tb)
snprintf(buf, PATH_MAX, "%s: 0 %s %s: 0%s",
_("Total"), ngettext("image", "images", 0), _("Size"),
ngettext("B", "B", 0));
- elm_object_text_set(tb->infolabel, buf);
+ elm_object_text_set(tb->ephoto->infolabel, buf);
}
else
{
@@ -1656,7 +958,7 @@ _ephoto_thumb_update_info_label(Ephoto_Thumb_Browser *tb)
snprintf(image_info, PATH_MAX, "%s: %d %s %s: %s",
_("Total"), tb->totimages, ngettext("image", "images",
tb->totimages), _("Size"), isize);
- elm_object_text_set(tb->infolabel, image_info);
+ elm_object_text_set(tb->ephoto->infolabel, image_info);
}
}
@@ -1720,7 +1022,9 @@ _ephoto_thumb_search_go(void *data, Evas_Object *obj EINA_UNUSED,
elm_box_unpack(tb->gridbox, tb->original_grid);
evas_object_hide(tb->original_grid);
+ elm_theme_extension_add(NULL, PACKAGE_DATA_DIR "/themes/ephoto.edj");
tb->grid = elm_gengrid_add(tb->gridbox);
+ elm_object_style_set(tb->grid, "noclip");
evas_object_size_hint_weight_set(tb->grid, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(tb->grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
@@ -1789,14 +1093,14 @@ _ephoto_thumb_search_go(void *data, Evas_Object *obj EINA_UNUSED,
}
}
tb->entries = tb->searchentries;
- _ephoto_thumb_update_info_label(tb);
+ ephoto_thumb_browser_update_info_label(tb->ephoto);
eina_list_free(results);
}
else
{
tb->totimages = 0;
tb->totsize = 0;
- _ephoto_thumb_update_info_label(tb);
+ ephoto_thumb_browser_update_info_label(tb->ephoto);
tb->searchentries = NULL;
tb->entries = NULL;
}
@@ -1842,7 +1146,7 @@ _ephoto_thumb_search_cancel(void *data, Evas_Object *obj EINA_UNUSED,
elm_box_unpack(tb->gridbox, hbox);
evas_object_del(hbox);
tb->searching = 0;
- _ephoto_thumb_update_info_label(tb);
+ ephoto_thumb_browser_update_info_label(tb->ephoto);
tb->totimages_old = 0;
tb->totsize_old = 0;
}
@@ -1894,15 +1198,14 @@ _ephoto_thumb_search_start(void *data, Evas_Object *obj EINA_UNUSED,
elm_object_focus_set(search, EINA_TRUE);
}
-void _ephoto_thumb_pane_add(Ephoto_Thumb_Browser *tb)
+static void
+_ephoto_thumb_view_add(Ephoto_Thumb_Browser *tb)
{
- Evas_Object *hbox, *but, *ic;
- int ret;
-
- tb->table = elm_table_add(tb->panes);
+ 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->nolabel = elm_label_add(tb->table);
@@ -1926,120 +1229,32 @@ void _ephoto_thumb_pane_add(Ephoto_Thumb_Browser *tb)
EVAS_HINT_FILL);
evas_object_show(tb->gridbox);
- tb->grid = elm_gengrid_add(tb->gridbox);
- evas_object_size_hint_weight_set(tb->grid, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(tb->grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_gengrid_align_set(tb->grid, 0.5, 0.0);
- elm_gengrid_multi_select_set(tb->grid, EINA_TRUE);
- elm_gengrid_multi_select_mode_set(tb->grid,
- ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT);
- elm_scroller_bounce_set(tb->grid, EINA_FALSE, EINA_TRUE);
- evas_object_smart_callback_add(tb->grid, "activated",
- _ephoto_thumb_activated, tb);
- evas_object_event_callback_add(tb->grid, EVAS_CALLBACK_MOUSE_UP,
- _grid_mouse_up_cb, tb);
- evas_object_event_callback_add(tb->grid, EVAS_CALLBACK_MOUSE_WHEEL,
- _grid_mouse_wheel, tb);
- elm_drag_item_container_add(tb->grid, ANIM_TIME, DRAG_TIMEOUT,
- _dnd_item_get, _dnd_item_data_get);
- evas_object_data_set(tb->grid, "thumb_browser", tb);
- elm_box_pack_end(tb->gridbox, tb->grid);
- evas_object_show(tb->grid);
- elm_table_pack(tb->table, tb->gridbox, 0, 0, 5, 1);
-
- _ephoto_thumb_zoom_set(tb, tb->ephoto->config->thumb_size);
-
- hbox = elm_box_add(tb->main);
- elm_box_horizontal_set(hbox, EINA_TRUE);
- evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_end(tb->main, hbox);
- evas_object_show(hbox);
-
- tb->toggle = elm_check_add(hbox);
- elm_object_style_set(tb->toggle, "toggle");
- elm_object_part_text_set(tb->toggle, "on", _("Show Folders"));
- elm_object_part_text_set(tb->toggle, "off", _("Hide Folders"));
- if (!tb->ephoto->config->fsel_hide)
- {
- elm_check_state_set(tb->toggle, EINA_FALSE);
- evas_object_smart_callback_add(tb->toggle, "changed",
- _ephoto_dir_hide_folders, tb);
- }
- else
- {
- elm_check_state_set(tb->toggle, EINA_TRUE);
- evas_object_smart_callback_add(tb->toggle, "changed",
- _ephoto_dir_show_folders, tb);
- }
- elm_box_pack_end(hbox, tb->toggle);
- evas_object_show(tb->toggle);
-
- tb->infolabel = elm_label_add(hbox);
- elm_label_line_wrap_set(tb->infolabel, ELM_WRAP_WORD);
- elm_object_text_set(tb->infolabel, "Info Label");
- evas_object_size_hint_weight_set(tb->infolabel, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(tb->infolabel, EVAS_HINT_FILL,
- EVAS_HINT_FILL);
- evas_object_size_hint_aspect_set(tb->infolabel, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
- elm_box_pack_end(hbox, tb->infolabel);
- evas_object_show(tb->infolabel);
-
- ic = elm_icon_add(hbox);
- evas_object_size_hint_min_set(ic, 20, 20);
- elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
- ret = elm_icon_standard_set(ic, "zoom-in");
- evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
- but = elm_button_add(hbox);
- if (!ret)
- elm_object_text_set(but, _("Zoom In"));
- else
- {
- elm_object_part_content_set(but, "icon", ic);
- elm_object_tooltip_text_set(but, _("Zoom In"));
- elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
- }
- evas_object_smart_callback_add(but, "clicked", _zoom_in, tb);
- elm_box_pack_end(hbox, but);
- evas_object_show(but);
-
- ic = elm_icon_add(hbox);
- evas_object_size_hint_min_set(ic, 20, 20);
- elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
- elm_icon_standard_set(ic, "zoom-out");
- evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
- but = elm_button_add(hbox);
- if (!ret)
- elm_object_text_set(but, _("Zoom Out"));
- else
- {
- elm_object_part_content_set(but, "icon", ic);
- elm_object_tooltip_text_set(but, _("Zoom Out"));
- elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
- }
- evas_object_smart_callback_add(but, "clicked", _zoom_out, tb);
- elm_box_pack_end(hbox, but);
- evas_object_show(but);
-
- tb->hover = elm_hoversel_add(hbox);
- elm_hoversel_hover_parent_set(tb->hover, tb->ephoto->win);
- elm_hoversel_item_add(tb->hover, _("Alphabetical Ascending"),
- "view-sort-ascending", ELM_ICON_STANDARD, _sort_alpha_asc, tb);
- elm_hoversel_item_add(tb->hover, _("Alphabetical Descending"),
- "view-sort-descending", ELM_ICON_STANDARD, _sort_alpha_desc, tb);
- elm_hoversel_item_add(tb->hover, _("Modification Time Ascending"),
- "view-sort-ascending", ELM_ICON_STANDARD, _sort_mod_asc, tb);
- elm_hoversel_item_add(tb->hover, _("Modification Time Descending"),
- "view-sort-descending", ELM_ICON_STANDARD, _sort_mod_desc, tb);
- elm_object_text_set(tb->hover, _("Sort"));
- ic = elm_icon_add(tb->hover);
- evas_object_size_hint_min_set(ic, 20, 20);
- elm_icon_standard_set(ic, "view-sort-ascending");
- elm_object_part_content_set(tb->hover, "icon", ic);
- evas_object_show(ic);
- elm_box_pack_end(hbox, tb->hover);
- evas_object_show(tb->hover);
+ elm_theme_extension_add(NULL, PACKAGE_DATA_DIR "/themes/ephoto.edj");
+ tb->grid = elm_gengrid_add(tb->gridbox);
+ elm_object_style_set(tb->grid, "noclip");
+ evas_object_size_hint_weight_set(tb->grid, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(tb->grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_gengrid_align_set(tb->grid, 0.5, 0.0);
+ elm_gengrid_multi_select_set(tb->grid, EINA_TRUE);
+ elm_gengrid_multi_select_mode_set(tb->grid,
+ ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT);
+ elm_scroller_bounce_set(tb->grid, EINA_FALSE, EINA_TRUE);
+ evas_object_smart_callback_add(tb->grid, "activated",
+ _ephoto_thumb_activated, tb);
+ evas_object_event_callback_add(tb->grid, EVAS_CALLBACK_MOUSE_UP,
+ _grid_mouse_up_cb, tb);
+ evas_object_event_callback_add(tb->grid, EVAS_CALLBACK_MOUSE_WHEEL,
+ _grid_mouse_wheel, tb);
+ elm_drag_item_container_add(tb->grid, ANIM_TIME, DRAG_TIMEOUT,
+ _dnd_item_get, _dnd_item_data_get);
+ evas_object_data_set(tb->grid, "thumb_browser", tb);
+ elm_box_pack_end(tb->gridbox, tb->grid);
+ evas_object_smart_callback_add(tb->grid, "changed", _grid_changed, tb);
+ evas_object_show(tb->grid);
+ elm_table_pack(tb->table, tb->gridbox, 0, 0, 5, 1);
+
+ _ephoto_thumb_zoom_set(tb, tb->ephoto->config->thumb_size);
}
/*Ephoto Populating Functions*/
@@ -2050,194 +1265,6 @@ _todo_items_free(Ephoto_Thumb_Browser *tb)
tb->todo_items = NULL;
}
-static void
-_monitor_cb(void *data, Ecore_File_Monitor *em EINA_UNUSED,
- Ecore_File_Event event, const char *path)
-{
- Elm_Object_Item *item;
- Ephoto_Entry *entry = data;
- Ephoto_Entry *e;
- char file[PATH_MAX], dir[PATH_MAX];
- const Elm_Genlist_Item_Class *ic;
- char buf[PATH_MAX];
-
- if (!entry)
- return;
-
- snprintf(file, PATH_MAX, "%s", path);
- snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
-
- if (strcmp(entry->path, dir))
- return;
- if (event == ECORE_FILE_EVENT_CREATED_DIRECTORY)
- {
- if (!ecore_file_is_dir(path))
- return;
- if (ephoto_entry_exists(entry->ephoto, path))
- return;
-
- if (elm_genlist_item_type_get(entry->item) == ELM_GENLIST_ITEM_TREE &&
- elm_genlist_item_expanded_get(entry->item) == EINA_TRUE)
- {
- ic = &_ephoto_dir_class;
- snprintf(buf, PATH_MAX, "%s", path);
- e = ephoto_entry_new(entry->ephoto, path, basename(buf),
- EINA_FILE_DIR);
- e->genlist = entry->genlist;
- e->parent = entry->item;
- e->item =
- elm_genlist_item_sorted_insert(entry->genlist, ic, e,
- e->parent, ELM_GENLIST_ITEM_NONE, _entry_cmp, NULL, NULL);
- if (e->item)
- e->monitor = ecore_file_monitor_add(e->path, _monitor_cb, e);
- }
- if (elm_genlist_item_type_get(entry->item) == ELM_GENLIST_ITEM_NONE)
- {
- Elm_Object_Item *parent;
-
- ic = &_ephoto_dir_class;
- parent =
- elm_genlist_item_insert_before(entry->genlist, ic, entry,
- entry->parent, entry->item, ELM_GENLIST_ITEM_TREE, NULL, NULL);
- entry->no_delete = EINA_TRUE;
- if (entry->monitor)
- ecore_file_monitor_del(entry->monitor);
- elm_object_item_del(entry->item);
- entry->item = parent;
- entry->no_delete = EINA_FALSE;
- entry->monitor = ecore_file_monitor_add(entry->path, _monitor_cb, entry);
- }
- return;
- }
- else if (event == ECORE_FILE_EVENT_DELETED_DIRECTORY)
- {
- item = elm_genlist_first_item_get(entry->genlist);
- while (item)
- {
- e = elm_object_item_data_get(item);
- if (!strcmp(e->path, path))
- {
- elm_object_item_del(e->item);
- //if (!strcmp(e->path, e->ephoto->config->directory))
- break;
- }
- item = elm_genlist_item_next_get(item);
- }
- if (elm_genlist_item_type_get(entry->item) == ELM_GENLIST_ITEM_TREE &&
- _check_for_subdirs(entry) == EINA_FALSE)
- {
- Elm_Object_Item *parent;
-
- ic = &_ephoto_dir_class;
- parent =
- elm_genlist_item_insert_before(entry->genlist, ic, entry,
- entry->parent, entry->item, ELM_GENLIST_ITEM_NONE, NULL, NULL);
- entry->no_delete = EINA_TRUE;
- elm_object_item_del(entry->item);
- entry->item = parent;
- entry->no_delete = EINA_FALSE;
- }
- if (!ecore_file_exists(entry->ephoto->config->directory))
- {
- ephoto_directory_set(entry->ephoto, entry->path, entry->parent, 0, 1);
- ephoto_title_set(entry->ephoto, entry->path);
- }
- return;
- }
- else if (event == ECORE_FILE_EVENT_MODIFIED)
- {
- if (!ecore_file_is_dir(path))
- return;
- if ((elm_genlist_item_expanded_get(entry->item) == EINA_TRUE))
- {
- item = elm_genlist_first_item_get(entry->genlist);
- while (item)
- {
- e = elm_object_item_data_get(item);
- if (!strcmp(e->path, path))
- {
- elm_genlist_item_update(e->item);
- break;
- }
- item = elm_genlist_item_next_get(item);
- }
- }
- return;
- }
-}
-
-static void
-_top_monitor_cb(void *data, Ecore_File_Monitor *em EINA_UNUSED,
- Ecore_File_Event event, const char *path)
-{
- Elm_Object_Item *item;
- Ephoto_Thumb_Browser *tb = data;
- Ephoto_Entry *e;
- const Elm_Genlist_Item_Class *ic;
- char buf[PATH_MAX], file[PATH_MAX], dir[PATH_MAX];
-
- if (!tb)
- return;
- snprintf(file, PATH_MAX, "%s", path);
- snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
-
- if (strcmp(tb->ephoto->top_directory, dir))
- return;
- if (event == ECORE_FILE_EVENT_CREATED_DIRECTORY)
- {
- if (!ecore_file_is_dir(path))
- return;
- if (ephoto_entry_exists(tb->ephoto, path))
- return;
- snprintf(buf, PATH_MAX, "%s", path);
- e = ephoto_entry_new(tb->ephoto, path, basename(buf),
- EINA_FILE_DIR);
- e->genlist = tb->fsel;
- ic = &_ephoto_dir_class;
- e->item =
- elm_genlist_item_append(tb->fsel, ic, e,
- NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
- if (e->item)
- e->monitor = ecore_file_monitor_add(e->path, _monitor_cb, e);
- return;
- }
- else if (event == ECORE_FILE_EVENT_DELETED_DIRECTORY)
- {
- item = elm_genlist_first_item_get(tb->fsel);
- while (item)
- {
- e = elm_object_item_data_get(item);
- if (!strcmp(e->path, path))
- {
- if (!strcmp(path, tb->ephoto->config->directory))
- _dir_go_up(tb, NULL, NULL);
- else
- elm_object_item_del(e->item);
- break;
- }
- item = elm_genlist_item_next_get(item);
- }
- return;
- }
- else if (event == ECORE_FILE_EVENT_MODIFIED)
- {
- if (!ecore_file_is_dir(path))
- return;
- item = elm_genlist_first_item_get(tb->fsel);
- while (item)
- {
- e = elm_object_item_data_get(item);
- if (!strcmp(e->path, path))
- {
- elm_genlist_item_update(e->item);
- break;
- }
- item = elm_genlist_item_next_get(item);
- }
- return;
- }
-}
-
static Eina_Bool
_todo_items_process(void *data)
{
@@ -2263,29 +1290,6 @@ _todo_items_process(void *data)
i++;
if (i > TODO_ITEM_MIN_BATCH)
return EINA_TRUE;
- if (entry->is_dir && !entry->item)
- {
- const Elm_Genlist_Item_Class *ic;
-
- ic = &_ephoto_dir_class;
- if (_check_for_subdirs(entry))
- entry->item =
- elm_genlist_item_sorted_insert(tb->fsel, ic, entry,
- entry->parent, ELM_GENLIST_ITEM_TREE, _entry_cmp, NULL, NULL);
- else
- entry->item =
- elm_genlist_item_sorted_insert(tb->fsel, ic, entry,
- entry->parent, ELM_GENLIST_ITEM_NONE, _entry_cmp, NULL, NULL);
- if (!entry->item)
- {
- ephoto_entry_free(tb->ephoto, entry);
- }
- else
- {
- entry->monitor = ecore_file_monitor_add(entry->path, _monitor_cb, entry);
- entry->genlist = tb->fsel;
- }
- }
else if (!entry->is_dir && !entry->item)
{
const Elm_Gengrid_Item_Class *ic;
@@ -2327,8 +1331,6 @@ _ephoto_thumb_populate_start(void *data, int type EINA_UNUSED,
{
Ephoto_Thumb_Browser *tb = data;
- evas_object_smart_callback_call(tb->main, "changed,directory", NULL);
-
tb->animator.processed = 0;
tb->animator.count = 0;
if (tb->ephoto->selentries)
@@ -2336,13 +1338,9 @@ _ephoto_thumb_populate_start(void *data, int type EINA_UNUSED,
if (tb->searching)
_ephoto_thumb_search_cancel(tb->search, NULL, NULL);
_todo_items_free(tb);
- if (!tb->dirs_only)
- {
- elm_gengrid_clear(tb->grid);
- tb->totimages = 0;
- tb->totsize = 0;
- }
- elm_object_text_set(tb->direntry, tb->ephoto->config->directory);
+ elm_gengrid_clear(tb->grid);
+ tb->totimages = 0;
+ tb->totsize = 0;
return ECORE_CALLBACK_PASS_ON;
}
@@ -2364,10 +1362,30 @@ _ephoto_thumb_populate_end(void *data, int type EINA_UNUSED,
tb->totimages = 0;
tb->totsize = 0;
}
- _ephoto_thumb_update_info_label(tb);
+ if (tb->ephoto->state == EPHOTO_STATE_THUMB)
+ {
+ evas_object_smart_callback_call(tb->main, "changed,directory", NULL);
+ ephoto_thumb_browser_update_info_label(tb->ephoto);
+ }
+ else if (tb->ephoto->state == EPHOTO_STATE_SINGLE)
+ {
+ if (tb->ephoto->entries)
+ {
+ ephoto_single_browser_entry_set(tb->ephoto->single_browser, NULL);
+ ephoto_single_browser_entries_set(tb->ephoto->single_browser,
+ tb->ephoto->entries);
+ ephoto_single_browser_entry_set(tb->ephoto->single_browser,
+ eina_list_nth(tb->ephoto->entries, 0));
+ }
+ else
+ {
+ ephoto_single_browser_entry_set(tb->ephoto->single_browser, NULL);
+ ephoto_title_set(tb->ephoto, tb->ephoto->config->directory);
+ }
+ }
+ tb->entries = tb->ephoto->entries;
tb->dirs_only = 0;
tb->thumbs_only = 0;
- tb->entries = tb->ephoto->entries;
return ECORE_CALLBACK_PASS_ON;
}
@@ -2378,8 +1396,8 @@ _ephoto_thumb_populate_error(void *data, int type EINA_UNUSED,
{
Ephoto_Thumb_Browser *tb = data;
- tb->dirs_only = 0;
tb->thumbs_only = 0;
+ tb->dirs_only = 0;
return ECORE_CALLBACK_PASS_ON;
}
@@ -2404,11 +1422,6 @@ _ephoto_thumb_entry_create(void *data, int type EINA_UNUSED, void *event)
tb->todo_items = eina_list_append(tb->todo_items, e);
tb->animator.count++;
}
- else if (e->is_dir)
- {
- tb->todo_items = eina_list_append(tb->todo_items, e);
- tb->animator.count++;
- }
if (!tb->animator.todo_items)
tb->animator.todo_items = ecore_animator_add(_todo_items_process, tb);
@@ -2416,11 +1429,10 @@ _ephoto_thumb_entry_create(void *data, int type EINA_UNUSED, void *event)
}
/*Ephoto Thumb Browser Main Callbacks*/
-static void
-_ephoto_show_slideshow(void *data, Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
+void
+ephoto_thumb_browser_slideshow(Evas_Object *obj)
{
- Ephoto_Thumb_Browser *tb = data;
+ Ephoto_Thumb_Browser *tb = evas_object_data_get(obj, "thumb_browser");
Eina_List *selected, *s;
Elm_Object_Item *item;
Elm_Object_Item *it = elm_gengrid_selected_item_get(tb->grid);
@@ -2486,17 +1498,7 @@ _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
if (ctrl)
{
- if (shift)
- {
- if (!strcasecmp(k, "f"))
- {
- if (!elm_check_state_get(tb->toggle))
- _ephoto_dir_hide_folders(tb, NULL, NULL);
- else
- _ephoto_dir_show_folders(tb, NULL, NULL);
- }
- }
- else if ((!strcasecmp(k, "plus")) || (!strcasecmp(k, "equal")))
+ if ((!strcasecmp(k, "plus")) || (!strcasecmp(k, "equal")))
{
int zoom = tb->ephoto->config->thumb_size + ZOOM_STEP;
@@ -2510,45 +1512,7 @@ _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
}
else if (!strcasecmp(k, "Tab"))
{
- Elm_Object_Item *it = elm_gengrid_selected_item_get(tb->grid);
- Ephoto_Entry *entry;
- Eina_List *s;
- Elm_Object_Item *item;
-
- if (it)
- entry = elm_object_item_data_get(it);
- else
- entry = eina_list_nth(tb->entries, 0);
- if (eina_list_count(selected) <= 1 && tb->searchentries)
- {
- if (tb->ephoto->selentries)
- eina_list_free(tb->ephoto->selentries);
- tb->ephoto->selentries = NULL;
- tb->ephoto->searchentries =
- eina_list_clone(tb->searchentries);
- }
- else if (eina_list_count(selected) > 1)
- {
- EINA_LIST_FOREACH(selected, s, item)
- {
- tb->ephoto->selentries =
- eina_list_append(tb->ephoto->selentries,
- elm_object_item_data_get(item));
- }
- }
- else
- {
- if (tb->ephoto->selentries)
- eina_list_free(tb->ephoto->selentries);
- if (tb->ephoto->searchentries)
- eina_list_free(tb->ephoto->searchentries);
- tb->ephoto->selentries = NULL;
- tb->ephoto->searchentries = NULL;
- }
- if (entry)
- {
- evas_object_smart_callback_call(tb->main, "view", entry);
- }
+ _view_single(tb, NULL, NULL);
}
else if (!strcasecmp(k, "c"))
{
@@ -2568,10 +1532,15 @@ _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
}
else if (!strcasecmp(k, "f") && !tb->processing)
{
- if (tb->searching)
- _ephoto_thumb_search_cancel(tb->search, NULL, NULL);
+ if (shift)
+ ephoto_show_folders(tb->ephoto, EINA_TRUE);
else
- _ephoto_thumb_search_start(tb, NULL, NULL);
+ {
+ if (tb->searching)
+ _ephoto_thumb_search_cancel(tb->search, NULL, NULL);
+ else
+ _ephoto_thumb_search_start(tb, NULL, NULL);
+ }
}
else if (!strcasecmp(k, "Delete"))
{
@@ -2666,8 +1635,6 @@ _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
else if (ev->compose && (((ev->compose[0] != '\\')
&& (ev->compose[0] >= ' ')) || ev->compose[1]))
{
- if (elm_object_focus_get(tb->direntry))
- return;
if (!tb->searching)
{
_ephoto_thumb_search_start(tb, NULL, NULL);
@@ -2691,31 +1658,22 @@ _ephoto_main_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
eina_list_free(selected);
}
-static void _ephoto_panes_unpress(void *data, Evas_Object *obj EINA_UNUSED,
+static void
+_hover_dismissed_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ephoto_Thumb_Browser *tb = data;
- if (!tb->ephoto->config->fsel_hide)
- tb->ephoto->config->lpane_size = elm_panes_content_left_size_get(tb->panes);
+ tb->ephoto->hover_blocking = EINA_FALSE;
}
-static void _ephoto_panes_double_clicked(void *data, Evas_Object *obj EINA_UNUSED,
+static void
+_hover_expand_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ephoto_Thumb_Browser *tb = data;
- double tmp_size = 0.0;
-
- tmp_size = elm_panes_content_left_size_get(tb->panes);
- if (tmp_size > 0)
- {
- _ephoto_dir_hide_folders(tb, NULL, NULL);
- }
- else
- {
- _ephoto_dir_show_folders(tb, NULL, NULL);
- }
+ tb->ephoto->hover_blocking = EINA_TRUE;
}
static void
@@ -2748,13 +1706,41 @@ _ephoto_main_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
eina_list_free(tb->ephoto->searchentries);
if (tb->searchentries)
eina_list_free(tb->searchentries);
- if (tb->monitor)
- ecore_file_monitor_del(tb->monitor);
free(tb);
}
/*Ephoto Thumb Browser Public Functions*/
+void
+ephoto_thumb_browser_paste(Ephoto *ephoto, Elm_Object_Item *item)
+{
+ Ephoto_Thumb_Browser *tb =
+ evas_object_data_get(ephoto->thumb_browser, "thumb_browser");
+ Ephoto_Entry *entry;
+ const char *path;
+
+ if (item)
+ {
+ entry = elm_object_item_data_get(item);
+ path = entry->path;
+ }
+ else
+ path = tb->ephoto->config->directory;
+
+ if (eina_list_count(tb->cut_items) > 0)
+ {
+ ephoto_file_paste(tb->ephoto, eina_list_clone(tb->cut_items), EINA_FALSE, path);
+ eina_list_free(tb->cut_items);
+ tb->cut_items = NULL;
+ }
+ else if (eina_list_count(tb->copy_items) > 0)
+ {
+ ephoto_file_paste(tb->ephoto, eina_list_clone(tb->copy_items), EINA_TRUE, path);
+ eina_list_free(tb->copy_items);
+ tb->copy_items = NULL;
+ }
+}
+
void
ephoto_thumb_browser_insert(Ephoto *ephoto, Ephoto_Entry *entry)
{
@@ -2797,7 +1783,7 @@ ephoto_thumb_browser_insert(Ephoto *ephoto, Ephoto_Entry *entry)
{
ephoto_entry_free(tb->ephoto, entry);
}
- _ephoto_thumb_update_info_label(tb);
+ ephoto_thumb_browser_update_info_label(tb->ephoto);
}
}
@@ -2817,7 +1803,7 @@ ephoto_thumb_browser_remove(Ephoto *ephoto, Ephoto_Entry *entry)
tb->totimages = 0;
tb->totsize = 0;
}
- _ephoto_thumb_update_info_label(tb);
+ ephoto_thumb_browser_update_info_label(tb->ephoto);
elm_object_item_del(entry->item);
}
}
@@ -2841,33 +1827,97 @@ ephoto_thumb_browser_update(Ephoto *ephoto, Ephoto_Entry *entry)
elm_gengrid_item_update(entry->item);
tb->totsize += entry->size;
- _ephoto_thumb_update_info_label(tb);
+ ephoto_thumb_browser_update_info_label(tb->ephoto);
}
}
void
-ephoto_thumb_browser_top_dir_set(Ephoto *ephoto, const char *dir)
+ephoto_thumb_browser_show_controls(Ephoto *ephoto)
{
- Ephoto_Thumb_Browser *tb =
- evas_object_data_get(ephoto->thumb_browser, "thumb_browser");
+ Ephoto_Thumb_Browser *tb = evas_object_data_get(ephoto->thumb_browser,
+ "thumb_browser");
+ Evas_Object *but, *ic, *hover;
+ int ret;
- if (tb->monitor)
- ecore_file_monitor_del(tb->monitor);
- if (ephoto->top_directory)
- eina_stringshare_replace(&ephoto->top_directory, dir);
+ ic = elm_icon_add(ephoto->controls_left);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ ret = elm_image_file_set(ic, PACKAGE_DATA_DIR "/images/single.png", NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->controls_left);
+ if (!ret)
+ elm_object_text_set(but, _("View Images"));
else
- ephoto->top_directory = eina_stringshare_add(dir);
- tb->monitor = ecore_file_monitor_add(dir, _top_monitor_cb, tb);
-}
+ {
+ elm_object_part_content_set(but, "icon", ic);
+ elm_object_tooltip_text_set(but, _("View Images"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
+ }
+ evas_object_smart_callback_add(but, "clicked", _view_single, tb);
+ elm_box_pack_end(ephoto->controls_left, but);
+ evas_object_show(but);
-void
-ephoto_thumb_browser_fsel_clear(Ephoto *ephoto)
-{
- Ephoto_Thumb_Browser *tb =
- evas_object_data_get(ephoto->thumb_browser, "thumb_browser");
+ ic = elm_icon_add(ephoto->controls_left);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ ret = elm_icon_standard_set(ic, "zoom-in");
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->controls_left);
+ if (!ret)
+ elm_object_text_set(but, _("Zoom In"));
+ else
+ {
+ elm_object_part_content_set(but, "icon", ic);
+ elm_object_tooltip_text_set(but, _("Zoom In"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
+ }
+ evas_object_smart_callback_add(but, "clicked", _zoom_in, tb);
+ elm_box_pack_end(ephoto->controls_left, but);
+ evas_object_show(but);
+
+ ic = elm_icon_add(ephoto->controls_left);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
+ elm_icon_standard_set(ic, "zoom-out");
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ but = elm_button_add(ephoto->controls_left);
+ if (!ret)
+ elm_object_text_set(but, _("Zoom Out"));
+ else
+ {
+ elm_object_part_content_set(but, "icon", ic);
+ elm_object_tooltip_text_set(but, _("Zoom Out"));
+ elm_object_tooltip_orient_set(but, ELM_TOOLTIP_ORIENT_TOP);
+ }
+ evas_object_smart_callback_add(but, "clicked", _zoom_out, tb);
+ elm_box_pack_end(ephoto->controls_left, but);
+ evas_object_show(but);
- if (tb)
- elm_genlist_clear(tb->fsel);
+ hover = elm_hoversel_add(ephoto->controls_right);
+ elm_hoversel_hover_parent_set(hover, ephoto->win);
+ elm_hoversel_item_add(hover, _("Alphabetical Ascending"),
+ "view-sort-ascending", ELM_ICON_STANDARD, _sort_alpha_asc, tb);
+ elm_hoversel_item_add(hover, _("Alphabetical Descending"),
+ "view-sort-descending", ELM_ICON_STANDARD, _sort_alpha_desc, tb);
+ elm_hoversel_item_add(hover, _("Modification Time Ascending"),
+ "view-sort-ascending", ELM_ICON_STANDARD, _sort_mod_asc, tb);
+ elm_hoversel_item_add(hover, _("Modification Time Descending"),
+ "view-sort-descending", ELM_ICON_STANDARD, _sort_mod_desc, tb);
+ elm_object_text_set(hover, _("Sort"));
+ ic = elm_icon_add(hover);
+ evas_object_size_hint_min_set(ic, 20*elm_config_scale_get(),
+ 20*elm_config_scale_get());
+ elm_icon_standard_set(ic, "view-sort-ascending");
+ elm_object_part_content_set(hover, "icon", ic);
+ evas_object_show(ic);
+ elm_object_tooltip_text_set(hover, _("Sort"));
+ elm_object_tooltip_orient_set(hover, ELM_TOOLTIP_ORIENT_TOP);
+ evas_object_smart_callback_add(hover, "expanded", _hover_expand_cb, tb);
+ evas_object_smart_callback_add(hover, "dismissed", _hover_dismissed_cb, tb);
+ elm_box_pack_end(ephoto->controls_right, hover);
+ evas_object_show(hover);
}
Evas_Object *
@@ -2887,21 +1937,11 @@ ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent)
_ephoto_thumb_file_class.func.state_get = NULL;
_ephoto_thumb_file_class.func.del = _thumb_item_del;
- _ephoto_dir_class.item_style = "tree_effect";
- _ephoto_dir_class.func.text_get = _dir_item_text_get;
- _ephoto_dir_class.func.content_get = _dir_item_icon_get;
- _ephoto_dir_class.func.state_get = NULL;
- _ephoto_dir_class.func.del = _dir_item_del;
-
tb->ephoto = ephoto;
- tb->thumbs_only = 0;
- tb->dirs_only = 0;
tb->dragging = 0;
tb->searching = 0;
tb->cut_items = NULL;
tb->copy_items = NULL;
- tb->dir_current = NULL;
- tb->change_dir_job = NULL;
tb->last_sel = NULL;
tb->sort = EPHOTO_SORT_ALPHABETICAL_ASCENDING;
tb->main = box;
@@ -2916,33 +1956,8 @@ ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent)
_ephoto_main_key_down, tb);
evas_object_data_set(tb->main, "thumb_browser", tb);
- tb->panes = elm_panes_add(tb->main);
- evas_object_size_hint_weight_set(tb->panes, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(tb->panes, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_panes_content_left_min_size_set(tb->panes, 100);
- elm_panes_content_left_size_set(tb->panes, tb->ephoto->config->lpane_size);
- evas_object_smart_callback_add(tb->panes, "clicked,double",
- _ephoto_panes_double_clicked, tb);
- evas_object_smart_callback_add(tb->panes, "unpress",
- _ephoto_panes_unpress, tb);
- elm_box_pack_end(tb->main, tb->panes);
- evas_object_show(tb->panes);
-
- _ephoto_file_pane_add(tb);
- elm_object_part_content_set(tb->panes, "left", tb->leftbox);
- if (!tb->ephoto->config->fsel_hide)
- {
- evas_object_show(tb->leftbox);
- }
- else
- {
- evas_object_hide(tb->leftbox);
- elm_panes_content_left_min_size_set(tb->panes, 0);
- elm_panes_content_left_size_set(tb->panes, 0.0);
- }
-
- _ephoto_thumb_pane_add(tb);
- elm_object_part_content_set(tb->panes, "right", tb->table);
+ _ephoto_thumb_view_add(tb);
+ elm_box_pack_end(tb->main, tb->table);
tb->handlers =
eina_list_append(tb->handlers,