forked from enlightenment/ephoto
simplify, move thumb count to theme, min limit to contents.
If we used such a large border with small item sizes, the content size would be zero and thus icons did turn invisible. Limit that to 16x16. "thumbs" in group will say how many thumbnails are desired, instead of hardcoding it to 3. countless code simplifications. SVN revision: 53207
This commit is contained in:
parent
5637a4879f
commit
50c67f7ad6
|
@ -95,72 +95,29 @@ collections
|
|||
}
|
||||
}
|
||||
}
|
||||
group
|
||||
{
|
||||
name: "/ephoto/thumb/no_border";
|
||||
parts
|
||||
{
|
||||
part
|
||||
{
|
||||
name: "border";
|
||||
type: RECT;
|
||||
mouse_events: 0;
|
||||
description
|
||||
{
|
||||
state: "default" 0.0;
|
||||
color: 255 255 255 0;
|
||||
rel1.offset: 18 18;
|
||||
rel2.offset: -17 -17;
|
||||
}
|
||||
}
|
||||
part
|
||||
{
|
||||
name: "clipper";
|
||||
type: RECT;
|
||||
mouse_events: 0;
|
||||
description
|
||||
{
|
||||
state: "default" 0.0;
|
||||
visible: 1;
|
||||
color: 255 255 255 255;
|
||||
}
|
||||
}
|
||||
part
|
||||
{
|
||||
name: "ephoto.swallow.content";
|
||||
type: SWALLOW;
|
||||
mouse_events: 1;
|
||||
clip_to: "clipper";
|
||||
description
|
||||
{
|
||||
state: "default" 0.0;
|
||||
visible: 1;
|
||||
rel1.to: "border";
|
||||
rel1.offset: 8 8;
|
||||
rel2.to: "border";
|
||||
rel2.offset: -9 -9;
|
||||
color: 255 255 255 255;
|
||||
}
|
||||
}
|
||||
part
|
||||
{
|
||||
name: "event_area";
|
||||
type: RECT;
|
||||
mouse_events: 1;
|
||||
description
|
||||
{
|
||||
state: "default" 0.0;
|
||||
color: 255 255 255 0;
|
||||
rel1.to: "clipper";
|
||||
rel1.relative: 0.0 0.0;
|
||||
rel1.offset: 0 0;
|
||||
rel2.to: "clipper";
|
||||
rel2.relative: 1.0 1.0;
|
||||
rel2.offset: -1 -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group { name: "/ephoto/thumb/no_border";
|
||||
parts {
|
||||
part { name: "ephoto.swallow.content";
|
||||
type: SWALLOW;
|
||||
mouse_events: 0;
|
||||
description { state: "default" 0.0;
|
||||
min: 16 16;
|
||||
rel1.offset: 8 8;
|
||||
rel2.offset: -9 -9;
|
||||
}
|
||||
}
|
||||
|
||||
part {
|
||||
name: "eventarea";
|
||||
type: RECT;
|
||||
description { state: "default" 0.0;
|
||||
color: 255 255 255 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group
|
||||
{
|
||||
name: "elm/gengrid/item/ephoto/default";
|
||||
|
@ -617,73 +574,58 @@ collections
|
|||
}
|
||||
}
|
||||
}
|
||||
group
|
||||
{
|
||||
name: "/ephoto/directory/thumb/layout";
|
||||
parts
|
||||
{
|
||||
part {
|
||||
name: "ephoto.swallow.thumb1";
|
||||
|
||||
group { name: "/ephoto/directory/thumb/layout";
|
||||
data.item: "thumbs" "3";
|
||||
parts {
|
||||
part { name: "ephoto.swallow.thumb1";
|
||||
type: SWALLOW;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 255 0 0 255;
|
||||
map {
|
||||
on: 0;
|
||||
}
|
||||
|
||||
map.on: 0;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "ephoto.swallow.thumb2";
|
||||
type: SWALLOW;
|
||||
part { name: "ephoto.swallow.thumb2";
|
||||
type: SWALLOW;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 255 0 0 255;
|
||||
map {
|
||||
on: 1;
|
||||
rotation {
|
||||
z: 20;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "ephoto.swallow.thumb3";
|
||||
type: SWALLOW;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 255 0 0 255;
|
||||
map {
|
||||
on: 1;
|
||||
rotation {
|
||||
z: -20;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
programs {
|
||||
program { name: "load";
|
||||
signal: "load";
|
||||
script {
|
||||
new Float:val;
|
||||
|
||||
custom_state(PART:"ephoto.swallow.thumb3", "default", 0.0);
|
||||
custom_state(PART:"ephoto.swallow.thumb2", "default", 0.0);
|
||||
val = randf();
|
||||
val = 40 * val - 20;
|
||||
set_state_val(PART:"ephoto.swallow.thumb3", STATE_MAP_ROT_Z, val);
|
||||
val = randf();
|
||||
val = 40 * val - 20;
|
||||
set_state_val(PART:"ephoto.swallow.thumb2", STATE_MAP_ROT_Z, val);
|
||||
set_state(PART:"ephoto.swallow.thumb2", "custom", 0.0);
|
||||
set_state(PART:"ephoto.swallow.thumb3", "custom", 0.0);
|
||||
on: 1;
|
||||
rotation.z: 20;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
part { name: "ephoto.swallow.thumb3";
|
||||
type: SWALLOW;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
map {
|
||||
on: 1;
|
||||
rotation.z: -20;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
programs {
|
||||
program { name: "load";
|
||||
signal: "load";
|
||||
script {
|
||||
new Float:val;
|
||||
|
||||
custom_state(PART:"ephoto.swallow.thumb3", "default", 0.0);
|
||||
custom_state(PART:"ephoto.swallow.thumb2", "default", 0.0);
|
||||
val = randf();
|
||||
val = 40 * val - 20;
|
||||
set_state_val(PART:"ephoto.swallow.thumb3", STATE_MAP_ROT_Z, val);
|
||||
val = randf();
|
||||
val = 40 * val - 20;
|
||||
set_state_val(PART:"ephoto.swallow.thumb2", STATE_MAP_ROT_Z, val);
|
||||
set_state(PART:"ephoto.swallow.thumb2", "custom", 0.0);
|
||||
set_state(PART:"ephoto.swallow.thumb3", "custom", 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
|
||||
#include <Elementary.h>
|
||||
#include <Eio.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "ephoto.h"
|
||||
|
||||
typedef struct _Directory_Thumb Directory_Thumb;
|
||||
|
||||
|
@ -10,10 +6,21 @@ struct _Directory_Thumb
|
|||
{
|
||||
Evas_Object *layout;
|
||||
Eio_File *file;
|
||||
Eina_List *thumbs;
|
||||
Eina_List *frames;
|
||||
const char *path;
|
||||
int theme_thumb_count;
|
||||
};
|
||||
|
||||
static void
|
||||
_layout_del(void *data, Evas *e, Evas_Object *layout, void *event_info)
|
||||
{
|
||||
Directory_Thumb *dt = data;
|
||||
if (dt->file) eio_file_cancel(dt->file);
|
||||
eina_list_free(dt->frames);
|
||||
eina_stringshare_del(dt->path);
|
||||
free(dt);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_populate_filter(void *data, const char *file)
|
||||
{
|
||||
|
@ -37,113 +44,109 @@ static void
|
|||
_populate_end(void *data)
|
||||
{
|
||||
Directory_Thumb *dt = (Directory_Thumb*) data;
|
||||
|
||||
dt->file = NULL;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_populate_error(int error, void *data)
|
||||
{
|
||||
Directory_Thumb *dt = (Directory_Thumb*)data;
|
||||
|
||||
dt->file = NULL;
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
_populate_main(void *data, const char *file)
|
||||
{
|
||||
Evas_Object *thumb, *o;
|
||||
Evas_Object *frame, *image;
|
||||
int position;
|
||||
Directory_Thumb *dt = data;
|
||||
char buf[4096];
|
||||
|
||||
position = eina_list_count(dt->thumbs);
|
||||
position = eina_list_count(dt->frames);
|
||||
|
||||
if (position > 3 )
|
||||
if (position > dt->theme_thumb_count)
|
||||
{
|
||||
eio_file_cancel(dt->file);
|
||||
return;
|
||||
if (dt->file)
|
||||
{
|
||||
eio_file_cancel(dt->file);
|
||||
dt->file = NULL;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
thumb = elm_layout_add(dt->layout);
|
||||
elm_layout_file_set(thumb, PACKAGE_DATA_DIR "/themes/default/ephoto.edj",
|
||||
"/ephoto/thumb/no_border");
|
||||
|
||||
evas_object_size_hint_weight_set(thumb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_show(thumb);
|
||||
frame = elm_layout_add(dt->layout);
|
||||
if (!elm_layout_file_set
|
||||
(frame, PACKAGE_DATA_DIR "/themes/default/ephoto.edj", "/ephoto/thumb"))
|
||||
ERR("could not load group '/ephoto/thumb' from file '%s'",
|
||||
PACKAGE_DATA_DIR "/themes/default/ephoto.edj");
|
||||
evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_show(frame);
|
||||
|
||||
thumb = elm_layout_add(dt->layout);
|
||||
elm_layout_file_set(thumb, PACKAGE_DATA_DIR "/themes/default/ephoto.edj",
|
||||
"/ephoto/thumb");
|
||||
|
||||
evas_object_size_hint_weight_set(thumb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_show(thumb);
|
||||
|
||||
o = elm_thumb_add(thumb);
|
||||
elm_thumb_file_set(o, file, NULL);
|
||||
elm_object_style_set(o, "ephoto");
|
||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND,
|
||||
EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(o, EVAS_HINT_FILL,
|
||||
EVAS_HINT_FILL);
|
||||
|
||||
evas_object_show(o);
|
||||
elm_layout_content_set(thumb, "ephoto.swallow.content", o);
|
||||
image = elm_thumb_add(frame);
|
||||
elm_thumb_file_set(image, file, NULL);
|
||||
elm_object_style_set(image, "ephoto");
|
||||
evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_layout_content_set(frame, "ephoto.swallow.content", image);
|
||||
|
||||
snprintf(buf, sizeof(buf), "ephoto.swallow.thumb%d", position);
|
||||
elm_layout_content_set(dt->layout, buf, thumb);
|
||||
|
||||
evas_object_show(thumb);
|
||||
dt->thumbs = eina_list_append(dt->thumbs, thumb);
|
||||
elm_layout_content_set(dt->layout, buf, frame);
|
||||
|
||||
dt->frames = eina_list_append(dt->frames, frame);
|
||||
}
|
||||
|
||||
Evas_Object *ephoto_directory_thumb_add(Evas_Object *parent, const char *path)
|
||||
Evas_Object *
|
||||
ephoto_directory_thumb_add(Evas_Object *parent, const char *path)
|
||||
{
|
||||
Directory_Thumb *dt;
|
||||
Evas_Object *thumb, *o;
|
||||
Evas_Object *thumb, *placeholder;
|
||||
const char *s;
|
||||
|
||||
dt = calloc(1, sizeof( Directory_Thumb));
|
||||
dt->path = eina_stringshare_add(path);
|
||||
dt->layout = elm_layout_add(parent);
|
||||
|
||||
if (!elm_layout_file_set(dt->layout, PACKAGE_DATA_DIR "/themes/default/ephoto.edj",
|
||||
"/ephoto/directory/thumb/layout"))
|
||||
printf(" Error loading group /ephoto/directory/thumb/layout in %s\n", PACKAGE_DATA_DIR "/themes/default/ephoto.edj");
|
||||
evas_object_size_hint_weight_set(dt->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
if (!elm_layout_file_set
|
||||
(dt->layout, PACKAGE_DATA_DIR "/themes/default/ephoto.edj",
|
||||
"/ephoto/directory/thumb/layout"))
|
||||
ERR("could not load group '/ephoto/directory/thumb/layout' from file '%s'",
|
||||
PACKAGE_DATA_DIR "/themes/default/ephoto.edj");
|
||||
evas_object_size_hint_weight_set
|
||||
(dt->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_show(dt->layout);
|
||||
evas_object_data_set(dt->layout, "dt", dt);
|
||||
evas_object_event_callback_add
|
||||
(dt->layout, EVAS_CALLBACK_DEL, _layout_del, dt);
|
||||
|
||||
thumb = elm_layout_add(dt->layout);
|
||||
if (!elm_layout_file_set(thumb, PACKAGE_DATA_DIR "/themes/default/ephoto.edj",
|
||||
"/ephoto/thumb/no_border"))
|
||||
printf(" Error loading group /ephoto/thumb/no_border in %s\n", PACKAGE_DATA_DIR "/themes/default/ephoto.edj");
|
||||
|
||||
if (!elm_layout_file_set
|
||||
(thumb, PACKAGE_DATA_DIR "/themes/default/ephoto.edj",
|
||||
"/ephoto/thumb/no_border"))
|
||||
ERR("could not load group '/ephoto/thumb/no_border' from file '%s'",
|
||||
PACKAGE_DATA_DIR "/themes/default/ephoto.edj");
|
||||
//evas_object_size_hint_weight_set(thumb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_show(thumb);
|
||||
|
||||
o = elm_image_add(thumb);
|
||||
elm_image_file_set(o, PACKAGE_DATA_DIR "/images/change_directory.png", NULL);
|
||||
evas_object_show(o);
|
||||
|
||||
elm_layout_content_set(thumb, "ephoto.swallow.content", o);
|
||||
|
||||
elm_layout_content_set(dt->layout, "ephoto.swallow.thumb1", thumb);
|
||||
|
||||
evas_object_show(dt->layout);
|
||||
|
||||
evas_object_data_set(dt->layout, "dt", dt);
|
||||
placeholder = elm_image_add(thumb);
|
||||
elm_image_file_set
|
||||
(placeholder, PACKAGE_DATA_DIR "/images/change_directory.png", NULL);
|
||||
elm_layout_content_set(thumb, "ephoto.swallow.content", placeholder);
|
||||
|
||||
dt->file = eio_file_ls(path,
|
||||
_populate_filter,
|
||||
_populate_main,
|
||||
_populate_end,
|
||||
_populate_error,
|
||||
dt);
|
||||
s = edje_object_data_get(elm_layout_edje_get(dt->layout), "thumbs");
|
||||
if (s)
|
||||
{
|
||||
dt->theme_thumb_count = atoi(s);
|
||||
|
||||
/* TODO: fix "Up" to be another type of directory and do not need
|
||||
* to check for existence here */
|
||||
if ((dt->theme_thumb_count > 0) && (ecore_file_exists(path)))
|
||||
dt->file = eio_file_ls(path,
|
||||
_populate_filter,
|
||||
_populate_main,
|
||||
_populate_end,
|
||||
_populate_error,
|
||||
dt);
|
||||
}
|
||||
|
||||
/* TODO add del callback to free dt and its member */
|
||||
return dt->layout;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue