From 10ffed654594bbb8010e22cc220026abbf6976a7 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 23 Jul 2006 21:19:04 +0000 Subject: [PATCH] now THIS is cute -watch the thumbnails wobble when generated... or found cached... most fun! let the power of edje be known! :) SVN revision: 24150 --- data/themes/default_fileman.edc | 804 +++++++++++++++++++++++++++++++- src/bin/e_fm.c | 22 +- src/bin/e_thumb.c | 3 + 3 files changed, 811 insertions(+), 18 deletions(-) diff --git a/data/themes/default_fileman.edc b/data/themes/default_fileman.edc index f1c1fe727..4d9dca66f 100644 --- a/data/themes/default_fileman.edc +++ b/data/themes/default_fileman.edc @@ -139,15 +139,101 @@ group { } } part { - name: "icon_swallow"; - type: SWALLOW; + name: "icon_box_shadow"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + to: "icon_box"; + relative: 0.0 0.0; + offset: -1 -1; + } + rel2 { + to: "icon_box"; + relative: 1.0 1.0; + offset: 2 2; + } + image { + normal: "e17_mini_button_shadow2.png"; + border: 6 6 6 6; + } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon_box"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 0.5 0.5; + rel1 { + to: "icon_swallow"; + relative: 0.0 0.0; + offset: -1 -1; + } + rel2 { + to: "icon_swallow"; + relative: 1.0 1.0; + offset: 0 0; + } + color: 0 0 0 255; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon_box_bg"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + to: "icon_box"; + relative: 0.0 0.0; + offset: 1 1; + } + rel2 { + to: "icon_box"; + relative: 1.0 1.0; + offset: -2 -2; + } + image { + normal: "e17_fileman_thumb_bg.png"; + } + fill { + smooth: 0; + size { + relative: 0 0; + offset: 32 32; + } + } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon0"; + type: RECT; mouse_events: 0; description { state: "default" 0.0; align: 0.0 0.5; aspect: 1.0 1.0; aspect_preference: VERTICAL; -// fixed: 1 1; + visible: 0; rel1 { relative: 0.0 0.0; offset: 4 4; @@ -156,6 +242,60 @@ group { relative: 0.0 1.0; offset: 4 -5; } + color: 0 0 0 0; + } + } + part { + name: "icon"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.5 0.5; + aspect: 1.0 1.0; + visible: 0; + rel1 { + to: "icon0"; + } + rel2 { + to: "icon0"; + } + color: 0 0 0 0; + } + description { + state: "min" 0.0; + inherit: "default" 0.0; + max: 0 0; + } + description { + state: "max" 0.0; + inherit: "default" 0.0; + rel1 { + to: "icon0"; + relative: 0.0 0.0; + offset: -3 -3; + } + rel2 { + to: "icon0"; + relative: 1.0 1.0; + offset: 2 2; + } + } + } + part { + name: "icon_swallow"; + type: SWALLOW; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.5 0.5; +// fixed: 1 1; + rel1 { + to: "icon"; + } + rel2 { + to: "icon"; + } } } part { @@ -167,7 +307,7 @@ group { state: "default" 0.0; min: 16 16; rel1 { - to_x: "icon_swallow"; + to_x: "icon0"; relative: 1.0 0.0; offset: 4 4; } @@ -467,6 +607,59 @@ group { target: "title_bar"; transition: LINEAR 0.1; } + program { + name: "thumb_gen"; + signal: "thumb"; + source: "gen"; + action: STATE_SET "visible" 0.0; + target: "icon_box_shadow"; + target: "icon_box"; + target: "icon_box_bg"; + after: "thumb_gen2"; + } + program { + name: "thumb_gen-"; + signal: "thumb"; + source: "gen_alpha"; + action: STATE_SET "default" 0.0; + target: "icon_box_shadow"; + target: "icon_box"; + target: "icon_box_bg"; + after: "thumb_gen2"; + } + program { + name: "thumb_gen2"; + action: STATE_SET "min" 0.0; + target: "icon"; + after: "thumb_gen3"; + } + program { + name: "thumb_gen3"; + action: STATE_SET "max" 0.0; + target: "icon"; + transition: DECELERATE 0.2; + after: "thumb_gen4"; + } + program { + name: "thumb_gen4"; + action: STATE_SET "default" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.1; + after: "thumb_gen5"; + } + program { + name: "thumb_gen5"; + action: STATE_SET "max" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.2; + after: "thumb_gen6"; + } + program { + name: "thumb_gen6"; + action: STATE_SET "default" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.3; + } } } @@ -606,15 +799,101 @@ group { } } part { - name: "icon_swallow"; - type: SWALLOW; + name: "icon_box_shadow"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + to: "icon_box"; + relative: 0.0 0.0; + offset: -1 -1; + } + rel2 { + to: "icon_box"; + relative: 1.0 1.0; + offset: 2 2; + } + image { + normal: "e17_mini_button_shadow2.png"; + border: 6 6 6 6; + } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon_box"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 0.5 0.5; + rel1 { + to: "icon_swallow"; + relative: 0.0 0.0; + offset: -1 -1; + } + rel2 { + to: "icon_swallow"; + relative: 1.0 1.0; + offset: 0 0; + } + color: 0 0 0 255; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon_box_bg"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + to: "icon_box"; + relative: 0.0 0.0; + offset: 1 1; + } + rel2 { + to: "icon_box"; + relative: 1.0 1.0; + offset: -2 -2; + } + image { + normal: "e17_fileman_thumb_bg.png"; + } + fill { + smooth: 0; + size { + relative: 0 0; + offset: 32 32; + } + } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon0"; + type: RECT; mouse_events: 0; description { state: "default" 0.0; align: 0.0 0.5; aspect: 1.0 1.0; aspect_preference: VERTICAL; -// fixed: 1 1; + visible: 0; rel1 { relative: 0.0 0.0; offset: 4 4; @@ -623,6 +902,60 @@ group { relative: 0.0 1.0; offset: 4 -5; } + color: 0 0 0 0; + } + } + part { + name: "icon"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.5 0.5; + aspect: 1.0 1.0; + visible: 0; + rel1 { + to: "icon0"; + } + rel2 { + to: "icon0"; + } + color: 0 0 0 0; + } + description { + state: "min" 0.0; + inherit: "default" 0.0; + max: 0 0; + } + description { + state: "max" 0.0; + inherit: "default" 0.0; + rel1 { + to: "icon0"; + relative: 0.0 0.0; + offset: -3 -3; + } + rel2 { + to: "icon0"; + relative: 1.0 1.0; + offset: 2 2; + } + } + } + part { + name: "icon_swallow"; + type: SWALLOW; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.5 0.5; +// fixed: 1 1; + rel1 { + to: "icon"; + } + rel2 { + to: "icon"; + } } } part { @@ -634,7 +967,7 @@ group { state: "default" 0.0; min: 16 16; rel1 { - to_x: "icon_swallow"; + to_x: "icon0"; relative: 1.0 0.0; offset: 4 4; } @@ -934,6 +1267,59 @@ group { target: "title_bar"; transition: LINEAR 0.1; } + program { + name: "thumb_gen"; + signal: "thumb"; + source: "gen"; + action: STATE_SET "visible" 0.0; + target: "icon_box_shadow"; + target: "icon_box"; + target: "icon_box_bg"; + after: "thumb_gen2"; + } + program { + name: "thumb_gen-"; + signal: "thumb"; + source: "gen_alpha"; + action: STATE_SET "default" 0.0; + target: "icon_box_shadow"; + target: "icon_box"; + target: "icon_box_bg"; + after: "thumb_gen2"; + } + program { + name: "thumb_gen2"; + action: STATE_SET "min" 0.0; + target: "icon"; + after: "thumb_gen3"; + } + program { + name: "thumb_gen3"; + action: STATE_SET "max" 0.0; + target: "icon"; + transition: DECELERATE 0.2; + after: "thumb_gen4"; + } + program { + name: "thumb_gen4"; + action: STATE_SET "default" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.1; + after: "thumb_gen5"; + } + program { + name: "thumb_gen5"; + action: STATE_SET "max" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.2; + after: "thumb_gen6"; + } + program { + name: "thumb_gen6"; + action: STATE_SET "default" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.3; + } } } @@ -1073,15 +1459,101 @@ group { } } part { - name: "icon_swallow"; - type: SWALLOW; + name: "icon_box_shadow"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + to: "icon_box"; + relative: 0.0 0.0; + offset: -1 -1; + } + rel2 { + to: "icon_box"; + relative: 1.0 1.0; + offset: 2 2; + } + image { + normal: "e17_mini_button_shadow2.png"; + border: 6 6 6 6; + } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon_box"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 0.5 0.5; + rel1 { + to: "icon_swallow"; + relative: 0.0 0.0; + offset: -1 -1; + } + rel2 { + to: "icon_swallow"; + relative: 1.0 1.0; + offset: 0 0; + } + color: 0 0 0 255; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon_box_bg"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + to: "icon_box"; + relative: 0.0 0.0; + offset: 1 1; + } + rel2 { + to: "icon_box"; + relative: 1.0 1.0; + offset: -2 -2; + } + image { + normal: "e17_fileman_thumb_bg.png"; + } + fill { + smooth: 0; + size { + relative: 0 0; + offset: 32 32; + } + } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon0"; + type: RECT; mouse_events: 0; description { state: "default" 0.0; align: 0.0 0.5; aspect: 1.0 1.0; aspect_preference: VERTICAL; -// fixed: 1 1; + visible: 0; rel1 { relative: 0.0 0.0; offset: 4 4; @@ -1090,6 +1562,60 @@ group { relative: 0.0 1.0; offset: 4 -5; } + color: 0 0 0 0; + } + } + part { + name: "icon"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.5 0.5; + aspect: 1.0 1.0; + visible: 0; + rel1 { + to: "icon0"; + } + rel2 { + to: "icon0"; + } + color: 0 0 0 0; + } + description { + state: "min" 0.0; + inherit: "default" 0.0; + max: 0 0; + } + description { + state: "max" 0.0; + inherit: "default" 0.0; + rel1 { + to: "icon0"; + relative: 0.0 0.0; + offset: -3 -3; + } + rel2 { + to: "icon0"; + relative: 1.0 1.0; + offset: 2 2; + } + } + } + part { + name: "icon_swallow"; + type: SWALLOW; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.5 0.5; +// fixed: 1 1; + rel1 { + to: "icon"; + } + rel2 { + to: "icon"; + } } } part { @@ -1101,7 +1627,7 @@ group { state: "default" 0.0; min: 16 16; rel1 { - to_x: "icon_swallow"; + to_x: "icon0"; relative: 1.0 0.0; offset: 4 4; } @@ -1401,6 +1927,59 @@ group { target: "title_bar"; transition: LINEAR 0.1; } + program { + name: "thumb_gen"; + signal: "thumb"; + source: "gen"; + action: STATE_SET "visible" 0.0; + target: "icon_box_shadow"; + target: "icon_box"; + target: "icon_box_bg"; + after: "thumb_gen2"; + } + program { + name: "thumb_gen-"; + signal: "thumb"; + source: "gen_alpha"; + action: STATE_SET "default" 0.0; + target: "icon_box_shadow"; + target: "icon_box"; + target: "icon_box_bg"; + after: "thumb_gen2"; + } + program { + name: "thumb_gen2"; + action: STATE_SET "min" 0.0; + target: "icon"; + after: "thumb_gen3"; + } + program { + name: "thumb_gen3"; + action: STATE_SET "max" 0.0; + target: "icon"; + transition: DECELERATE 0.2; + after: "thumb_gen4"; + } + program { + name: "thumb_gen4"; + action: STATE_SET "default" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.1; + after: "thumb_gen5"; + } + program { + name: "thumb_gen5"; + action: STATE_SET "max" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.2; + after: "thumb_gen6"; + } + program { + name: "thumb_gen6"; + action: STATE_SET "default" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.3; + } } } @@ -1540,15 +2119,101 @@ group { } } part { - name: "icon_swallow"; - type: SWALLOW; + name: "icon_box_shadow"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + to: "icon_box"; + relative: 0.0 0.0; + offset: -1 -1; + } + rel2 { + to: "icon_box"; + relative: 1.0 1.0; + offset: 2 2; + } + image { + normal: "e17_mini_button_shadow2.png"; + border: 6 6 6 6; + } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon_box"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 0.5 0.5; + rel1 { + to: "icon_swallow"; + relative: 0.0 0.0; + offset: -1 -1; + } + rel2 { + to: "icon_swallow"; + relative: 1.0 1.0; + offset: 0 0; + } + color: 0 0 0 255; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon_box_bg"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + to: "icon_box"; + relative: 0.0 0.0; + offset: 1 1; + } + rel2 { + to: "icon_box"; + relative: 1.0 1.0; + offset: -2 -2; + } + image { + normal: "e17_fileman_thumb_bg.png"; + } + fill { + smooth: 0; + size { + relative: 0 0; + offset: 32 32; + } + } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "icon0"; + type: RECT; mouse_events: 0; description { state: "default" 0.0; align: 0.0 0.5; aspect: 1.0 1.0; aspect_preference: VERTICAL; -// fixed: 1 1; + visible: 0; rel1 { relative: 0.0 0.0; offset: 4 4; @@ -1557,6 +2222,60 @@ group { relative: 0.0 1.0; offset: 4 -5; } + color: 0 0 0 0; + } + } + part { + name: "icon"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.5 0.5; + aspect: 1.0 1.0; + visible: 0; + rel1 { + to: "icon0"; + } + rel2 { + to: "icon0"; + } + color: 0 0 0 0; + } + description { + state: "min" 0.0; + inherit: "default" 0.0; + max: 0 0; + } + description { + state: "max" 0.0; + inherit: "default" 0.0; + rel1 { + to: "icon0"; + relative: 0.0 0.0; + offset: -3 -3; + } + rel2 { + to: "icon0"; + relative: 1.0 1.0; + offset: 2 2; + } + } + } + part { + name: "icon_swallow"; + type: SWALLOW; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.5 0.5; +// fixed: 1 1; + rel1 { + to: "icon"; + } + rel2 { + to: "icon"; + } } } part { @@ -1568,7 +2287,7 @@ group { state: "default" 0.0; min: 16 16; rel1 { - to_x: "icon_swallow"; + to_x: "icon0"; relative: 1.0 0.0; offset: 4 4; } @@ -1868,6 +2587,59 @@ group { target: "title_bar"; transition: LINEAR 0.1; } + program { + name: "thumb_gen"; + signal: "thumb"; + source: "gen"; + action: STATE_SET "visible" 0.0; + target: "icon_box_shadow"; + target: "icon_box"; + target: "icon_box_bg"; + after: "thumb_gen2"; + } + program { + name: "thumb_gen-"; + signal: "thumb"; + source: "gen_alpha"; + action: STATE_SET "default" 0.0; + target: "icon_box_shadow"; + target: "icon_box"; + target: "icon_box_bg"; + after: "thumb_gen2"; + } + program { + name: "thumb_gen2"; + action: STATE_SET "min" 0.0; + target: "icon"; + after: "thumb_gen3"; + } + program { + name: "thumb_gen3"; + action: STATE_SET "max" 0.0; + target: "icon"; + transition: DECELERATE 0.2; + after: "thumb_gen4"; + } + program { + name: "thumb_gen4"; + action: STATE_SET "default" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.1; + after: "thumb_gen5"; + } + program { + name: "thumb_gen5"; + action: STATE_SET "max" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.2; + after: "thumb_gen6"; + } + program { + name: "thumb_gen6"; + action: STATE_SET "default" 0.0; + target: "icon"; + transition: SINUSOIDAL 0.3; + } } } diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index bd5bcdc84..d965a9826 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -1181,7 +1181,8 @@ _e_fm2_icon_label_set(E_Fm2_Icon *ic, Evas_Object *obj) edje_object_part_text_set(obj, "label", ic->info.label); return; } - if (ic->sd->config->icon.extension.show) + if ((ic->sd->config->icon.extension.show) || + (S_ISDIR(ic->info.statinfo.st_mode))) edje_object_part_text_set(obj, "label", ic->info.file); else { @@ -1631,7 +1632,24 @@ _e_fm2_cb_icon_thumb_gen(void *data, Evas_Object *obj, void *event_info) E_Fm2_Icon *ic; ic = data; - edje_object_signal_emit(ic->obj, "thumb", "gen"); + if (ic->realized) + { + Evas_Coord w = 0, h = 0; + int have_alpha; + + e_icon_size_get(ic->obj_icon, &w, &h); + have_alpha = e_icon_alpha_get(ic->obj_icon); + if (ic->sd->config->view.mode == E_FM2_VIEW_MODE_LIST) + { + edje_extern_object_aspect_set(ic->obj_icon, + EDJE_ASPECT_CONTROL_BOTH, w, h); + } + edje_object_part_swallow(ic->obj, "icon_swallow", ic->obj_icon); + if (have_alpha) + edje_object_signal_emit(ic->obj, "thumb", "gen_alpha"); + else + edje_object_signal_emit(ic->obj, "thumb", "gen"); + } } static void diff --git a/src/bin/e_thumb.c b/src/bin/e_thumb.c index 651d98718..e9ae17876 100644 --- a/src/bin/e_thumb.c +++ b/src/bin/e_thumb.c @@ -13,6 +13,7 @@ struct _E_Thumb char *key; unsigned char queued : 1; unsigned char busy : 1; + unsigned char done : 1; }; /* local subsystem functions */ @@ -123,6 +124,7 @@ e_thumb_icon_begin(Evas_Object *obj) if (!eth) return; if (eth->queued) return; if (eth->busy) return; + if (eth->done) return; if (!eth->file) return; if (!_thumbnailers) { @@ -199,6 +201,7 @@ e_thumb_client_data(Ecore_Ipc_Event_Client_Data *e) { eth->busy = 0; _pending--; + eth->done = 1; if (_pending == 0) _e_thumb_thumbnailers_kill(); e_icon_file_key_set(obj, icon, "/thumbnail/data"); evas_object_smart_callback_call(obj, "e_thumb_gen", NULL);