aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--data/etc/sysactions.conf18
-rw-r--r--data/themes/default_battery.edc14
-rw-r--r--data/themes/default_cpufreq.edc11
-rw-r--r--data/themes/default_fileman.edc1683
-rw-r--r--data/themes/default_temperature.edc7
-rw-r--r--src/bin/e_fm.c353
-rw-r--r--src/bin/e_int_menus.c3
-rw-r--r--src/bin/e_sys_main.c59
8 files changed, 2043 insertions, 105 deletions
diff --git a/data/etc/sysactions.conf b/data/etc/sysactions.conf
index 72ff13fe6..6ab88b051 100644
--- a/data/etc/sysactions.conf
+++ b/data/etc/sysactions.conf
@@ -48,7 +48,25 @@ action: reboot /sbin/shutdown -r now
action: suspend /etc/acpi/sleep.sh force
action: hibernate /etc/acpi/hibernate.sh force
+# root is allowed to do anything - but it needs to be here explicitly anyway
user: root allow: *
+# members of operator, staff and admin groups should be able to do all
group: operator allow: *
group: staff allow: *
+group: admin allow: *
+group: sys allow: *
+# common "user" groups for "console users" on desktops/laptops
+group: dialout allow: *
+group: disk allow: *
+group: adm allow: *
+group: cdrom allow: *
+group: floppy allow: *
+group: audio allow: *
+group: dip allow: *
+group: plugdev allow: *
+# put in a list of other users and groups here that are allowed or denied etc.
+# e.g.
+# user: myuser allow: *
+# user: another allow: suspend hibernate
+# deny everyone else by default
user: * deny: *
diff --git a/data/themes/default_battery.edc b/data/themes/default_battery.edc
index 58356465a..bedbbfa31 100644
--- a/data/themes/default_battery.edc
+++ b/data/themes/default_battery.edc
@@ -144,7 +144,7 @@ group {
part {
name: "e.text.reading";
type: TEXT;
- effect: SOFT_SHADOW;
+ effect: OUTLINE_SOFT_SHADOW;
clip_to: "fade_clip";
description {
state: "default" 0.0;
@@ -157,11 +157,12 @@ group {
relative: 1.0 0.0;
}
color: 255 255 255 255;
+ color2: 0 0 0 128;
color3: 0 0 0 32;
text {
text: "100%";
- font: "Edje-Vera";
- size: 7;
+ font: "Edje-Vera-Bold";
+ size: 8;
min: 1 1;
align: 1.0 0.0;
text_class: "module_small";
@@ -171,7 +172,7 @@ group {
part {
name: "e.text.time";
type: TEXT;
- effect: SOFT_SHADOW;
+ effect: OUTLINE_SOFT_SHADOW;
clip_to: "fade_clip";
description {
state: "default" 0.0;
@@ -186,11 +187,12 @@ group {
to_y: "e.text.reading";
}
color: 255 255 255 255;
+ color2: 0 0 0 128;
color3: 0 0 0 32;
text {
text: "00:00";
- font: "Edje-Vera";
- size: 7;
+ font: "Edje-Vera-Bold";
+ size: 8;
min: 1 1;
align: 1.0 0.0;
text_class: "module_small";
diff --git a/data/themes/default_cpufreq.edc b/data/themes/default_cpufreq.edc
index 0f308f148..2d0c81e0c 100644
--- a/data/themes/default_cpufreq.edc
+++ b/data/themes/default_cpufreq.edc
@@ -61,9 +61,9 @@ group {
set_state(PART:"meter", "default", freq);
if (f < 1000000) {
- snprintf(text, 100, "%i Mhz", f / 1000);
+ snprintf(text, 100, "%i", f / 1000);
} else {
- snprintf(text, 100, "%i.%i Ghz", f / 1000000,
+ snprintf(text, 100, "%i.%i", f / 1000000,
(f % 1000000) / 100000);
}
set_text(PART:"readout", text);
@@ -288,7 +288,7 @@ group {
part {
name: "readout";
type: TEXT;
- effect: SOFT_SHADOW;
+ effect: OUTLINE_SOFT_SHADOW;
mouse_events: 0;
clip_to: "fade_clip";
description {
@@ -302,11 +302,12 @@ group {
offset: 0 0;
}
color: 255 255 255 255;
+ color2: 0 0 0 128;
color3: 0 0 0 32;
text {
text: "??? Ghz";
- font: "Edje-Vera";
- size: 7;
+ font: "Edje-Vera-Bold";
+ size: 8;
align: 0.5 0.5;
min: 1 1;
text_class: "module_small";
diff --git a/data/themes/default_fileman.edc b/data/themes/default_fileman.edc
index 3bf5b675f..b0ecf9f55 100644
--- a/data/themes/default_fileman.edc
+++ b/data/themes/default_fileman.edc
@@ -3104,6 +3104,1681 @@ group {
target: "typebuf_clip";
after: "stop2";
}
+/* FIXME: implement this to show drop in the blank areas
+ program {
+ name: "goc1";
+ signal: "e,state,drop,start";
+ source: "e";
+ action: STATE_SET "active" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "typebuf_clip";
+ }
+ program {
+ name: "stopc1";
+ signal: "e,state,drop,stop";
+ source: "e";
+ action: STATE_SET "default" 0.0;
+ transition: SINUSOIDAL 1.0;
+ target: "typebuf_clip";
+ after: "stop2";
+ }
+ */
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+images {
+ image: "e17_ibar_arrow_d.png" COMP;
+ image: "e17_ibar_arrow_l.png" COMP;
+ image: "e17_ibar_arrow_r.png" COMP;
+ image: "e17_ibar_arrow_u.png" COMP;
+ image: "e17_pager_desk.png" COMP;
+}
+
+group {
+ name: "e/fileman/list/drop_between";
+ parts {
+ part {
+ name: "bg";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ image {
+ normal: "e17_pager_desk.png";
+ border: 2 2 2 2;
+ middle: 0;
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "l1";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -1 0;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: -1 -1;
+ }
+ image {
+ normal: "e17_ibar_arrow_r.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "l2";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -1 0;
+ to: "l1";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: -1 -1;
+ to: "l1";
+ }
+ image {
+ normal: "e17_ibar_arrow_r.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "l3";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -1 0;
+ to: "l2";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: -1 -1;
+ to: "l2";
+ }
+ image {
+ normal: "e17_ibar_arrow_r.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "l4";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -1 0;
+ to: "l3";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: -1 -1;
+ to: "l3";
+ }
+ image {
+ normal: "e17_ibar_arrow_r.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "r1";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 0 -1;
+ }
+ image {
+ normal: "e17_ibar_arrow_l.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "r2";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ to: "r1";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 0 -1;
+ to: "r1";
+ }
+ image {
+ normal: "e17_ibar_arrow_l.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "r3";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ to: "r2";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 0 -1;
+ to: "r2";
+ }
+ image {
+ normal: "e17_ibar_arrow_l.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "r4";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ to: "r3";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 0 -1;
+ to: "r3";
+ }
+ image {
+ normal: "e17_ibar_arrow_l.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "t1";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 -1;
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -1 -1;
+ }
+ image {
+ normal: "e17_ibar_arrow_d.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "t2";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 -1;
+ to: "t1";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -1 -1;
+ to: "t1";
+ }
+ image {
+ normal: "e17_ibar_arrow_d.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "t3";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 -1;
+ to: "t2";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -1 -1;
+ to: "t2";
+ }
+ image {
+ normal: "e17_ibar_arrow_d.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "t4";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 -1;
+ to: "t3";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -1 -1;
+ to: "t3";
+ }
+ image {
+ normal: "e17_ibar_arrow_d.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "b1";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "e17_ibar_arrow_u.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "b2";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to: "b1";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 0;
+ to: "b1";
+ }
+ image {
+ normal: "e17_ibar_arrow_u.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "b3";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to: "b2";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 0;
+ to: "b2";
+ }
+ image {
+ normal: "e17_ibar_arrow_u.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "b4";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to: "b3";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 0;
+ to: "b3";
+ }
+ image {
+ normal: "e17_ibar_arrow_u.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "go";
+ signal: "e,state,selected";
+ source: "e";
+ action: STATE_SET "default2" 0.0;
+ target: "bg";
+ after: "l1a";
+ after: "r1a";
+ after: "t1a";
+ after: "b1a";
+ }
+ program {
+ name: "stop";
+ signal: "e,state,unselected";
+ source: "e";
+ action: ACTION_STOP;
+ target: "go";
+ target: "l1a";
+ target: "l1b";
+ target: "l2a";
+ target: "l2b";
+ target: "l3a";
+ target: "l3b";
+ target: "l4a";
+ target: "l4b";
+ target: "r1a";
+ target: "r1b";
+ target: "r2a";
+ target: "r2b";
+ target: "r3a";
+ target: "r3b";
+ target: "r4a";
+ target: "r4b";
+ target: "t1a";
+ target: "t1b";
+ target: "t2a";
+ target: "t2b";
+ target: "t3a";
+ target: "t3b";
+ target: "t4a";
+ target: "t4b";
+ target: "b1a";
+ target: "b1b";
+ target: "b2a";
+ target: "b2b";
+ target: "b3a";
+ target: "b3b";
+ target: "b4a";
+ target: "b4b";
+ after: "stop2";
+ }
+ program {
+ name: "stop2";
+ action: STATE_SET "default" 0.0;
+ target: "l1";
+ target: "l2";
+ target: "l3";
+ target: "l4";
+ target: "r1";
+ target: "r2";
+ target: "r3";
+ target: "r4";
+ target: "t1";
+ target: "t2";
+ target: "t3";
+ target: "t4";
+ target: "b1";
+ target: "b2";
+ target: "b3";
+ target: "b4";
+ target: "bg";
+ }
+ program {
+ name: "l1a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "l4";
+ after: "l1b";
+ after: "l2a";
+ }
+ program {
+ name: "l1b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "l4";
+ }
+ program {
+ name: "l2a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "l3";
+ after: "l2b";
+ after: "l3a";
+ }
+ program {
+ name: "l2b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "l3";
+ }
+ program {
+ name: "l3a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "l2";
+ after: "l3b";
+ after: "l4a";
+ }
+ program {
+ name: "l3b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "l2";
+ }
+ program {
+ name: "l4a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "l1";
+ after: "l4b";
+ after: "l1a";
+ }
+ program {
+ name: "l4b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "l1";
+ }
+ program {
+ name: "r1a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "r4";
+ after: "r1b";
+ after: "r2a";
+ }
+ program {
+ name: "r1b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "r4";
+ }
+ program {
+ name: "r2a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "r3";
+ after: "r2b";
+ after: "r3a";
+ }
+ program {
+ name: "r2b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "r3";
+ }
+ program {
+ name: "r3a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "r2";
+ after: "r3b";
+ after: "r4a";
+ }
+ program {
+ name: "r3b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "r2";
+ }
+ program {
+ name: "r4a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "r1";
+ after: "r4b";
+ after: "r1a";
+ }
+ program {
+ name: "r4b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "r1";
+ }
+ program {
+ name: "t1a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "t4";
+ after: "t1b";
+ after: "t2a";
+ }
+ program {
+ name: "t1b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "t4";
+ }
+ program {
+ name: "t2a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "t3";
+ after: "t2b";
+ after: "t3a";
+ }
+ program {
+ name: "t2b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "t3";
+ }
+ program {
+ name: "t3a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "t2";
+ after: "t3b";
+ after: "t4a";
+ }
+ program {
+ name: "t3b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "t2";
+ }
+ program {
+ name: "t4a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "t1";
+ after: "t4b";
+ after: "t1a";
+ }
+ program {
+ name: "t4b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "t1";
+ }
+ program {
+ name: "b1a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "b4";
+ after: "b1b";
+ after: "b2a";
+ }
+ program {
+ name: "b1b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "b4";
+ }
+ program {
+ name: "b2a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "b3";
+ after: "b2b";
+ after: "b3a";
+ }
+ program {
+ name: "b2b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "b3";
+ }
+ program {
+ name: "b3a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "b2";
+ after: "b3b";
+ after: "b4a";
+ }
+ program {
+ name: "b3b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "b2";
+ }
+ program {
+ name: "b4a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "b1";
+ after: "b4b";
+ after: "b1a";
+ }
+ program {
+ name: "b4b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "b1";
+ }
+ }
+}
+
+group {
+ name: "e/fileman/list/drop_in";
+ parts {
+ part {
+ name: "bg";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ image {
+ normal: "e17_pager_desk.png";
+ border: 2 2 2 2;
+ middle: 0;
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "l1";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -1 0;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: -1 -1;
+ }
+ image {
+ normal: "e17_ibar_arrow_r.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "l2";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -1 0;
+ to: "l1";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: -1 -1;
+ to: "l1";
+ }
+ image {
+ normal: "e17_ibar_arrow_r.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "l3";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -1 0;
+ to: "l2";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: -1 -1;
+ to: "l2";
+ }
+ image {
+ normal: "e17_ibar_arrow_r.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "l4";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -1 0;
+ to: "l3";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: -1 -1;
+ to: "l3";
+ }
+ image {
+ normal: "e17_ibar_arrow_r.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "r1";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 0 -1;
+ }
+ image {
+ normal: "e17_ibar_arrow_l.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "r2";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ to: "r1";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 0 -1;
+ to: "r1";
+ }
+ image {
+ normal: "e17_ibar_arrow_l.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "r3";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ to: "r2";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 0 -1;
+ to: "r2";
+ }
+ image {
+ normal: "e17_ibar_arrow_l.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "r4";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 21 20;
+ max: 21 20;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ to: "r3";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 0 -1;
+ to: "r3";
+ }
+ image {
+ normal: "e17_ibar_arrow_l.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "t1";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 -1;
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -1 -1;
+ }
+ image {
+ normal: "e17_ibar_arrow_d.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "t2";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 -1;
+ to: "t1";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -1 -1;
+ to: "t1";
+ }
+ image {
+ normal: "e17_ibar_arrow_d.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "t3";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 -1;
+ to: "t2";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -1 -1;
+ to: "t2";
+ }
+ image {
+ normal: "e17_ibar_arrow_d.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "t4";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 -1;
+ to: "t3";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -1 -1;
+ to: "t3";
+ }
+ image {
+ normal: "e17_ibar_arrow_d.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "b1";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "e17_ibar_arrow_u.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "b2";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to: "b1";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 0;
+ to: "b1";
+ }
+ image {
+ normal: "e17_ibar_arrow_u.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "b3";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to: "b2";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 0;
+ to: "b2";
+ }
+ image {
+ normal: "e17_ibar_arrow_u.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "b4";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 29 21;
+ max: 29 21;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to: "b3";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 0;
+ to: "b3";
+ }
+ image {
+ normal: "e17_ibar_arrow_u.png";
+ }
+ }
+ description {
+ state: "default2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "go";
+ signal: "e,state,selected";
+ source: "e";
+ action: STATE_SET "default2" 0.0;
+ target: "bg";
+ after: "l1a";
+ after: "r1a";
+ after: "t1a";
+ after: "b1a";
+ }
+ program {
+ name: "stop";
+ signal: "e,state,unselected";
+ source: "e";
+ action: ACTION_STOP;
+ target: "go";
+ target: "l1a";
+ target: "l1b";
+ target: "l2a";
+ target: "l2b";
+ target: "l3a";
+ target: "l3b";
+ target: "l4a";
+ target: "l4b";
+ target: "r1a";
+ target: "r1b";
+ target: "r2a";
+ target: "r2b";
+ target: "r3a";
+ target: "r3b";
+ target: "r4a";
+ target: "r4b";
+ target: "t1a";
+ target: "t1b";
+ target: "t2a";
+ target: "t2b";
+ target: "t3a";
+ target: "t3b";
+ target: "t4a";
+ target: "t4b";
+ target: "b1a";
+ target: "b1b";
+ target: "b2a";
+ target: "b2b";
+ target: "b3a";
+ target: "b3b";
+ target: "b4a";
+ target: "b4b";
+ after: "stop2";
+ }
+ program {
+ name: "stop2";
+ action: STATE_SET "default" 0.0;
+ target: "l1";
+ target: "l2";
+ target: "l3";
+ target: "l4";
+ target: "r1";
+ target: "r2";
+ target: "r3";
+ target: "r4";
+ target: "t1";
+ target: "t2";
+ target: "t3";
+ target: "t4";
+ target: "b1";
+ target: "b2";
+ target: "b3";
+ target: "b4";
+ target: "bg";
+ }
+ program {
+ name: "l1a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "l4";
+ after: "l1b";
+ after: "l2a";
+ }
+ program {
+ name: "l1b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "l4";
+ }
+ program {
+ name: "l2a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "l3";
+ after: "l2b";
+ after: "l3a";
+ }
+ program {
+ name: "l2b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "l3";
+ }
+ program {
+ name: "l3a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "l2";
+ after: "l3b";
+ after: "l4a";
+ }
+ program {
+ name: "l3b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "l2";
+ }
+ program {
+ name: "l4a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "l1";
+ after: "l4b";
+ after: "l1a";
+ }
+ program {
+ name: "l4b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "l1";
+ }
+ program {
+ name: "r1a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "r4";
+ after: "r1b";
+ after: "r2a";
+ }
+ program {
+ name: "r1b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "r4";
+ }
+ program {
+ name: "r2a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "r3";
+ after: "r2b";
+ after: "r3a";
+ }
+ program {
+ name: "r2b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "r3";
+ }
+ program {
+ name: "r3a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "r2";
+ after: "r3b";
+ after: "r4a";
+ }
+ program {
+ name: "r3b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "r2";
+ }
+ program {
+ name: "r4a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "r1";
+ after: "r4b";
+ after: "r1a";
+ }
+ program {
+ name: "r4b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "r1";
+ }
+ program {
+ name: "t1a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "t4";
+ after: "t1b";
+ after: "t2a";
+ }
+ program {
+ name: "t1b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "t4";
+ }
+ program {
+ name: "t2a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "t3";
+ after: "t2b";
+ after: "t3a";
+ }
+ program {
+ name: "t2b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "t3";
+ }
+ program {
+ name: "t3a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "t2";
+ after: "t3b";
+ after: "t4a";
+ }
+ program {
+ name: "t3b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "t2";
+ }
+ program {
+ name: "t4a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "t1";
+ after: "t4b";
+ after: "t1a";
+ }
+ program {
+ name: "t4b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "t1";
+ }
+ program {
+ name: "b1a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "b4";
+ after: "b1b";
+ after: "b2a";
+ }
+ program {
+ name: "b1b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "b4";
+ }
+ program {
+ name: "b2a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "b3";
+ after: "b2b";
+ after: "b3a";
+ }
+ program {
+ name: "b2b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "b3";
+ }
+ program {
+ name: "b3a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "b2";
+ after: "b3b";
+ after: "b4a";
+ }
+ program {
+ name: "b3b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "b2";
+ }
+ program {
+ name: "b4a";
+ action: STATE_SET "default2" 0.0;
+ transition: SINUSOIDAL 0.25;
+ target: "b1";
+ after: "b4b";
+ after: "b1a";
+ }
+ program {
+ name: "b4b";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.75;
+ target: "b1";
+ }
}
}
@@ -3129,6 +4804,14 @@ group {
+
+
+
+
+
+
+
+
#define FULL_SIZE_FILEMAN_BUTTON(TYPE) \
group { \
name: "e/fileman/button/"TYPE; \
diff --git a/data/themes/default_temperature.edc b/data/themes/default_temperature.edc
index 10efe4827..dfeef47fb 100644
--- a/data/themes/default_temperature.edc
+++ b/data/themes/default_temperature.edc
@@ -71,7 +71,7 @@ group {
part {
name: "e.text.reading";
type: TEXT;
- effect: SOFT_SHADOW;
+ effect: OUTLINE_SOFT_SHADOW;
clip_to: "fade_clip";
description {
state: "default" 0.0;
@@ -84,11 +84,12 @@ group {
relative: 1.0 0.0;
}
color: 255 255 255 255;
+ color2: 0 0 0 128;
color3: 0 0 0 32;
text {
text: "99^C";
- font: "Edje-Vera";
- size: 7;
+ font: "Edje-Vera-Bold";
+ size: 8;
min: 1 1;
align: 0.0 0.0;
text_class: "module_small";
diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c
index 05772afaf..41f1349eb 100644
--- a/src/bin/e_fm.c
+++ b/src/bin/e_fm.c
@@ -22,6 +22,8 @@ struct _E_Fm2_Smart_Data
Evas_Object *clip;
Evas_Object *underlay;
Evas_Object *overlay;
+ Evas_Object *drop;
+ Evas_Object *drop_in;
const char *dev;
const char *path;
const char *realpath;
@@ -75,6 +77,12 @@ struct _E_Fm2_Smart_Data
E_Object *eobj;
E_Drop_Handler *drop_handler;
+ E_Fm2_Icon *drop_icon;
+ char drop_after;
+ unsigned char drop_show : 1;
+ unsigned char drop_in_show : 1;
+ unsigned char drop_all : 1;
+ unsigned char drag : 1;
};
struct _E_Fm2_Region
@@ -216,8 +224,9 @@ static void _e_fm2_file_delete_yes_cb(void *data, E_Dialog *dialog);
static void _e_fm2_file_delete_no_cb(void *data, E_Dialog *dialog);
static void _e_fm2_refresh_job_cb(void *data);
-static char *_meta_path = NULL;
+static char *_e_fm2_meta_path = NULL;
static Evas_Smart *_e_fm2_smart = NULL;
+static Evas_List *_e_fm2_list = NULL;
/* externally accessible functions */
EAPI int
@@ -229,7 +238,7 @@ e_fm2_init(void)
homedir = e_user_homedir_get();
snprintf(path, sizeof(path), "%s/.e/e/fileman/metadata", homedir);
ecore_file_mkpath(path);
- _meta_path = strdup(path);
+ _e_fm2_meta_path = strdup(path);
_e_fm2_smart = evas_smart_new("e_fm",
_e_fm2_smart_add, /* add */
@@ -251,7 +260,7 @@ e_fm2_shutdown(void)
{
evas_smart_free(_e_fm2_smart);
_e_fm2_smart = NULL;
- E_FREE(_meta_path);
+ E_FREE(_e_fm2_meta_path);
return 1;
}
@@ -657,7 +666,7 @@ _e_fm2_dev_path_map(const char *dev, const char *path)
PRT("%s", path);
}
else if (CMP("~/")) {
- s = e_user_homedir_get();
+ s = (char *)e_user_homedir_get();
PRT("%s%s", s, path);
}
else if (dev[0] == '/') {
@@ -670,7 +679,7 @@ _e_fm2_dev_path_map(const char *dev, const char *path)
.desktop files or symlinks (in fact anything
* you like
*/
- s = e_user_homedir_get();
+ s = (char *)e_user_homedir_get();
PRT("%s/.e/e/fileman/favorites", s);
}
else if (CMP("dvd") || CMP("dvd-*")) {
@@ -1419,6 +1428,11 @@ static void
_e_fm2_icon_free(E_Fm2_Icon *ic)
{
/* free icon, object data etc. etc. */
+ if (ic->sd->drop_icon == ic)
+ {
+ /* FIXME: call hide call */
+ ic->sd->drop_icon = NULL;
+ }
_e_fm2_icon_unrealize(ic);
if (ic->menu)
{
@@ -1457,7 +1471,9 @@ _e_fm2_icon_realize(E_Fm2_Icon *ic)
ic->obj = edje_object_add(evas_object_evas_get(ic->sd->obj));
edje_object_freeze(ic->obj);
evas_object_smart_member_add(ic->obj, ic->sd->obj);
- evas_object_stack_below(ic->obj, ic->sd->overlay);
+ evas_object_stack_below(ic->obj, ic->sd->drop);
+// evas_object_stack_below(ic->sd->drop, ic->sd->overlay);
+// evas_object_stack_below(ic->sd->drop_in, ic->sd->overlay);
/* FIXME: this is currently a hack just to get a display working - go back
* and do proper icon stuff later */
if (ic->sd->config->view.mode == E_FM2_VIEW_MODE_LIST)
@@ -1813,7 +1829,9 @@ _e_fm2_icon_select(E_Fm2_Icon *ic)
{
edje_object_signal_emit(ic->obj, "e,state,selected", "e");
edje_object_signal_emit(ic->obj_icon, "e,state,selected", "e");
- evas_object_stack_below(ic->obj, ic->sd->overlay);
+ evas_object_stack_below(ic->obj, ic->sd->drop);
+// evas_object_stack_below(ic->sd->drop, ic->sd->overlay);
+// evas_object_stack_below(ic->sd->drop_in, ic->sd->overlay);
}
}
@@ -1951,7 +1969,8 @@ _e_fm2_region_realize(E_Fm2_Region *rg)
for (l = rg->list; l; l = l->next)
{
ic = l->data;
- if (ic->selected) evas_object_raise(ic->obj);
+ if (ic->selected)
+ evas_object_stack_below(ic->obj, ic->sd->drop);
}
edje_thaw();
}
@@ -2331,26 +2350,159 @@ _e_fm2_typebuf_char_backspace(Evas_Object *obj)
/* FIXME: prototype + reposition + implement */
static void
-_e_fm2_dnd_drop_into_show(E_Fm2_Icon *ic)
+_e_fm2_dnd_drop_configure(Evas_Object *obj)
+{
+ E_Fm2_Smart_Data *sd;
+
+ sd = evas_object_smart_data_get(obj);
+ if (!sd) return;
+ if (!sd->drop_icon) return;
+ if (sd->drop_after == -1)
+ {
+ evas_object_move(sd->drop_in,
+ sd->x + sd->drop_icon->x - sd->pos.x,
+ sd->y + sd->drop_icon->y - sd->pos.y);
+ evas_object_resize(sd->drop_in, sd->drop_icon->w, sd->drop_icon->h);
+ }
+ else if (sd->drop_after)
+ {
+ evas_object_move(sd->drop,
+ sd->x + sd->drop_icon->x - sd->pos.x,
+ sd->y + sd->drop_icon->y - sd->pos.y + sd->drop_icon->h - 1);
+ evas_object_resize(sd->drop, sd->drop_icon->w, 2);
+ }
+ else
+ {
+ evas_object_move(sd->drop,
+ sd->x + sd->drop_icon->x - sd->pos.x,
+ sd->y + sd->drop_icon->y - sd->pos.y - 1);
+ evas_object_resize(sd->drop, sd->drop_icon->w, 2);
+ }
+}
+
+/* FIXME: prototype + reposition + implement */
+static void
+_e_fm2_dnd_drop_all_show(Evas_Object *obj)
{
+ E_Fm2_Smart_Data *sd;
+
+ sd = evas_object_smart_data_get(obj);
+ if (!sd) return;
+ if (sd->drop_show)
+ {
+ edje_object_signal_emit(sd->drop, "e,state,unselected", "e");
+ sd->drop_show = 0;
+ }
+ if (sd->drop_in_show)
+ {
+ edje_object_signal_emit(sd->drop_in, "e,state,unselected", "e");
+ sd->drop_in_show = 0;
+ }
+ if (!sd->drop_all)
+ {
+ printf("DISP DROP ALL SHOW\n");
+ edje_object_signal_emit(sd->overlay, "e,state,drop,start", "e");
+ sd->drop_all = 1;
+ }
+ sd->drop_icon = NULL;
+ sd->drop_after = 0;
}
/* FIXME: prototype + reposition + implement */
static void
-_e_fm2_dnd_drop_into_hide(Evas_Object *obj)
+_e_fm2_dnd_drop_all_hide(Evas_Object *obj)
{
+ E_Fm2_Smart_Data *sd;
+
+ sd = evas_object_smart_data_get(obj);
+ if (!sd) return;
+ if (sd->drop_all)
+ {
+ printf("DISP DROP ALL HIDE\n");
+ edje_object_signal_emit(sd->overlay, "e,state,drop,stop", "e");
+ sd->drop_all = 0;
+ }
}
/* FIXME: prototype + reposition + implement */
static void
-_e_fm2_dnd_drop_between_show(E_Fm2_Icon *ic, int after)
+_e_fm2_dnd_drop_show(E_Fm2_Icon *ic, int after)
{
+ int emit = 0;
+
+ if ((ic->sd->drop_icon == ic) &&
+ (ic->sd->drop_after == after)) return;
+ if (((ic->sd->drop_icon) && (!ic)) ||
+ ((!ic->sd->drop_icon) && (ic)) ||
+ ((after < 0) && (ic->sd->drop_after >= 0)) ||
+ ((after >= 0) && (ic->sd->drop_after < 0)))
+ emit = 1;
+ ic->sd->drop_icon = ic;
+ ic->sd->drop_after = after;
+ if (emit)
+ {
+ if (ic->sd->drop_after != -1)
+ {
+ printf("DISP DROP ON drop\n");
+ edje_object_signal_emit(ic->sd->drop_in, "e,state,unselected", "e");
+ edje_object_signal_emit(ic->sd->drop, "e,state,selected", "e");
+ ic->sd->drop_in_show = 0;
+ ic->sd->drop_show = 1;
+ }
+ else
+ {
+ printf("DISP DROP ON drop_in\n");
+ edje_object_signal_emit(ic->sd->drop, "e,state,unselected", "e");
+ edje_object_signal_emit(ic->sd->drop_in, "e,state,selected", "e");
+ ic->sd->drop_in_show = 1;
+ ic->sd->drop_show = 0;
+ }
+ }
+ _e_fm2_dnd_drop_all_hide(ic->sd->obj);
+ _e_fm2_dnd_drop_configure(ic->sd->obj);
}
/* FIXME: prototype + reposition + implement */
static void
-_e_fm2_dnd_drop_between_hide(Evas_Object *obj)
+_e_fm2_dnd_drop_hide(Evas_Object *obj)
{
+ E_Fm2_Smart_Data *sd;
+
+ sd = evas_object_smart_data_get(obj);
+ if (!sd) return;
+ printf("DISP DROP OFF BOTH\n");
+ if (sd->drop_show)
+ {
+ edje_object_signal_emit(sd->drop, "e,state,unselected", "e");
+ sd->drop_show = 0;
+ }
+ if (sd->drop_in_show)
+ {
+ edje_object_signal_emit(sd->drop_in, "e,state,unselected", "e");
+ sd->drop_in_show = 0;
+ }
+ sd->drop_icon = NULL;
+ sd->drop_after = 0;
+}
+
+/* FIXME: prototype + reposition + implement */
+static void
+_e_fm2_dnd_finish(Evas_Object *obj, int refresh)
+{
+ E_Fm2_Smart_Data *sd;
+ E_Fm2_Icon *ic;
+ Evas_List *l;
+
+ sd = evas_object_smart_data_get(obj);
+ if (!sd) return;
+ if (!sd->drag) return;
+ sd->drag = 0;
+ for (l = sd->icons; l; l = l->next)
+ {
+ ic = l->data;
+ ic->drag.dnd = 0;
+ }
+ if (refresh) e_fm2_refresh(obj);
}
static void
@@ -2382,10 +2534,10 @@ _e_fm2_cb_dnd_move(void *data, const char *type, void *event)
for (l = sd->icons; l; l = l->next)
{
ic = l->data;
- if (ic->drag.dnd) continue;
if (E_INSIDE(ev->x, ev->y, ic->x, ic->y, ic->w, ic->h))
{
printf("OVER %s\n", ic->info.file);
+ if (ic->drag.dnd) return;
/* if list view */
if (ic->sd->config->view.mode == E_FM2_VIEW_MODE_LIST)
{
@@ -2398,34 +2550,19 @@ _e_fm2_cb_dnd_move(void *data, const char *type, void *event)
/* if bottom 25% or top 25% then insert between prev or next */
/* if in middle 50% then put in dir */
if (ev->y <= (ic->y + (ic->h / 4)))
- {
- _e_fm2_dnd_drop_into_hide(sd->obj);
- _e_fm2_dnd_drop_between_show(ic, 0);
- }
+ _e_fm2_dnd_drop_show(ic, 0);
else if (ev->y > (ic->y + ((ic->h * 3) / 4)))
- {
- _e_fm2_dnd_drop_into_hide(sd->obj);
- _e_fm2_dnd_drop_between_show(ic, 1);
- }
+ _e_fm2_dnd_drop_show(ic, 1);
else
- {
- _e_fm2_dnd_drop_between_hide(sd->obj);
- _e_fm2_dnd_drop_into_show(ic);
- }
+ _e_fm2_dnd_drop_show(ic, -1);
}
else
{
/* if top 50% or bottom 50% then insert between prev or next */
if (ev->y <= (ic->y + (ic->h / 2)))
- {
- _e_fm2_dnd_drop_into_hide(sd->obj);
- _e_fm2_dnd_drop_between_show(ic, 0);
- }
+ _e_fm2_dnd_drop_show(ic, 0);
else
- {
- _e_fm2_dnd_drop_into_hide(sd->obj);
- _e_fm2_dnd_drop_between_show(ic, 1);
- }
+ _e_fm2_dnd_drop_show(ic, 1);
}
}
/* we can only drop into subdirs */
@@ -2433,15 +2570,9 @@ _e_fm2_cb_dnd_move(void *data, const char *type, void *event)
{
/* if it's over a dir - hilight as it will be dropped in */
if (S_ISDIR(ic->info.statinfo.st_mode))
- {
- _e_fm2_dnd_drop_between_hide(sd->obj);
- _e_fm2_dnd_drop_into_show(ic);
- }
+ _e_fm2_dnd_drop_show(ic, -1);
else
- {
- _e_fm2_dnd_drop_between_hide(sd->obj);
- _e_fm2_dnd_drop_into_hide(sd->obj);
- }
+ _e_fm2_dnd_drop_hide(sd->obj);
}
}
else
@@ -2457,26 +2588,22 @@ _e_fm2_cb_dnd_move(void *data, const char *type, void *event)
/* if listview - it is now after last file */
if (sd->config->view.mode == E_FM2_VIEW_MODE_LIST)
{
- ic = evas_list_data(evas_list_last(sd->icons));
- if (ic)
+ /* if there is a .order file - we can re-order files */
+ if (ic->sd->order_file)
{
- if (!ic->drag.dnd)
+ ic = evas_list_data(evas_list_last(sd->icons));
+ if (ic)
{
- _e_fm2_dnd_drop_into_hide(sd->obj);
- _e_fm2_dnd_drop_between_show(ic, 1);
+ if (!ic->drag.dnd)
+ _e_fm2_dnd_drop_show(ic, 1);
+ else
+ _e_fm2_dnd_drop_all_show(sd->obj);
}
else
- {
- _e_fm2_dnd_drop_between_hide(sd->obj);
- _e_fm2_dnd_drop_into_hide(sd->obj);
- }
+ _e_fm2_dnd_drop_all_show(sd->obj);
}
else
- {
- /* no icons in dir - drop it in */
- _e_fm2_dnd_drop_between_hide(sd->obj);
- _e_fm2_dnd_drop_into_hide(sd->obj);
- }
+ _e_fm2_dnd_drop_all_show(sd->obj);
}
else
{
@@ -2485,8 +2612,7 @@ _e_fm2_cb_dnd_move(void *data, const char *type, void *event)
return;
}
/* outside fm view */
- _e_fm2_dnd_drop_between_hide(sd->obj);
- _e_fm2_dnd_drop_into_hide(sd->obj);
+ _e_fm2_dnd_drop_hide(sd->obj);
}
static void
@@ -2500,8 +2626,8 @@ _e_fm2_cb_dnd_leave(void *data, const char *type, void *event)
if (strcmp(type, "text/uri-list")) return;
ev = (E_Event_Dnd_Leave *)event;
printf("DND LEAVE %i %i\n", ev->x, ev->y);
- _e_fm2_dnd_drop_between_hide(sd->obj);
- _e_fm2_dnd_drop_into_hide(sd->obj);
+ _e_fm2_dnd_drop_hide(sd->obj);
+ _e_fm2_dnd_drop_all_hide(sd->obj);
}
static void
@@ -2509,21 +2635,68 @@ _e_fm2_cb_dnd_drop(void *data, const char *type, void *event)
{
E_Fm2_Smart_Data *sd;
E_Event_Dnd_Drop *ev;
- char **selected, *f;
- int i;
+ Evas_List *fsel, *l;
+ char *f;
+ int i, refresh = 0;
sd = data;
if (!type) return;
if (strcmp(type, "text/uri-list")) return;
ev = (E_Event_Dnd_Drop *)event;
- selected = ev->data;
+ fsel = ev->data;
printf("DROP: %i %i\n", ev->x, ev->y);
- for (i = 0, f = selected[i]; f; i++, f = selected[i]) printf(" %s\n", f);
- /* FIXME: record the descision where to drop it in the dnd move callback
- * then fix list, rewrite .order or move into dir (and if drag icon is
- * from this dir, then refresh) */
- _e_fm2_dnd_drop_between_hide(sd->obj);
- _e_fm2_dnd_drop_into_hide(sd->obj);
+ for (l = fsel; l; l = l->next)
+ {
+ f = l->data;
+ printf(" %s\n", f);
+ }
+ /* note - logic.
+ * if drop file prefix path matches extra_file_source then it can be
+ * and indirect link - dont MOVE the file just add filename to list.
+ * if not literally move the file in. if move can't work - try a copy.
+ * on a literal move find any fm views for the dir of the dropped file
+ * and refresh those, as well as refresh current target fm dir
+ */
+ if (sd->drop_all) /* drop arbitarily into the dir */
+ {
+ /* move file into this fm dir */
+ refresh = 1; /* refresh src fm */
+ e_fm2_refresh(sd->obj); /* refresh dst fm */
+ }
+ else if (sd->drop_icon) /* inot or before/after an icon */
+ {
+ if (sd->drop_after == -1) /* put into subdir in icon */
+ {
+ /* move file into dir that this icon is for */
+ /* FIXME: mv file */
+ refresh = 1; /* refresh src fm */
+ e_fm2_refresh(sd->obj); /* refresh dst fm */
+ }
+ else
+ {
+ if (sd->config->view.mode == E_FM2_VIEW_MODE_LIST) /* list */
+ {
+ if (sd->order_file) /* there is an order file */
+ {
+ /* write order file with all files up to drop_icon
+ * that are not being dragged, then insert list of
+ * dropped files, then everything after that is not
+ * being dragged then refresh view
+ */
+ refresh = 1; /* refresh src fm */
+ e_fm2_refresh(sd->obj); /* refresh dst fm */
+ }
+ else /* no order file */
+ {
+ /* shouldnt happen */
+ }
+ }
+ }
+ }
+ _e_fm2_dnd_drop_hide(sd->obj);
+ _e_fm2_dnd_drop_all_hide(sd->obj);
+ for (l = _e_fm2_list; l; l = l->next)
+ _e_fm2_dnd_finish(l->data, refresh);
}
static void
@@ -2690,12 +2863,16 @@ _e_fm2_cb_icon_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info)
static void
_e_fm2_cb_drag_finished(E_Drag *drag, int dropped)
{
- char **selected, *f;
- int i;
+ Evas_List *fsel;
+ char *f;
- selected = drag->data;
- for (i = 0, f = selected[i]; f; i++, f = selected[i]) free(f);
- free(selected);
+ fsel = drag->data;
+ while (fsel)
+ {
+ f = fsel->data;
+ free(f);
+ fsel = evas_list_remove_list(fsel, fsel);
+ }
}
static void
@@ -2719,10 +2896,9 @@ _e_fm2_cb_icon_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_inf
Evas_Object *o, *o2;
Evas_Coord x, y, w, h;
const char *drag_types[] = { "text/uri-list" }, *realpath;
- char **selected = NULL;
char buf[4096];
E_Container *con = NULL;
- Evas_List *l, *sl;
+ Evas_List *l, *sl, *fsel = NULL;
int i;
switch (ic->sd->eobj->type)
@@ -2744,24 +2920,25 @@ _e_fm2_cb_icon_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_inf
break;
}
if (!con) return;
+ ic->sd->drag = 1;
ic->drag.dnd = 1;
ic->drag.start = 0;
evas_object_geometry_get(ic->obj, &x, &y, &w, &h);
realpath = e_fm2_real_path_get(ic->sd->obj);
sl = e_fm2_selected_list_get(ic->sd->obj);
- selected = E_NEW(char *, evas_list_count(sl) + 1);
for (l = sl, i = 0; l; l = l->next, i++)
{
+ /* FIXME: URI - needs to be file:/..... (can't remember 1 or 2 /'s) */
if (!strcmp(realpath, "/"))
snprintf(buf, sizeof(buf), "/%s", ic->info.file);
else
snprintf(buf, sizeof(buf), "%s/%s", realpath, ic->info.file);
- selected[i] = strdup(buf);
+ fsel = evas_list_append(fsel, strdup(buf));
}
evas_list_free(sl);
d = e_drag_new(con,
x, y, drag_types, 1,
- selected, -1, _e_fm2_cb_drag_finished);
+ fsel, -1, _e_fm2_cb_drag_finished);
o = edje_object_add(e_drag_evas_get(d));
if (ic->sd->config->view.mode == E_FM2_VIEW_MODE_LIST)
{
@@ -3347,9 +3524,24 @@ _e_fm2_smart_add(Evas_Object *obj)
evas_object_smart_member_add(sd->overlay, obj);
evas_object_show(sd->overlay);
+ sd->drop = edje_object_add(evas_object_evas_get(obj));
+ evas_object_clip_set(sd->drop, sd->clip);
+ e_theme_edje_object_set(sd->drop, "base/theme/fileman",
+ "e/fileman/list/drop_between");
+ evas_object_smart_member_add(sd->drop, obj);
+ evas_object_show(sd->drop);
+
+ sd->drop_in = edje_object_add(evas_object_evas_get(obj));
+ evas_object_clip_set(sd->drop_in, sd->clip);
+ e_theme_edje_object_set(sd->drop_in, "base/theme/fileman",
+ "e/fileman/list/drop_in");
+ evas_object_smart_member_add(sd->drop_in, obj);
+ evas_object_show(sd->drop_in);
+
evas_object_smart_data_set(obj, sd);
evas_object_move(obj, 0, 0);
evas_object_resize(obj, 0, 0);
+ _e_fm2_list = evas_list_append(_e_fm2_list, sd->obj);
}
static void
@@ -3388,8 +3580,11 @@ _e_fm2_smart_del(Evas_Object *obj)
evas_object_del(sd->underlay);
evas_object_del(sd->overlay);
+ evas_object_del(sd->drop);
+ evas_object_del(sd->drop_in);
evas_object_del(sd->clip);
if (sd->drop_handler) e_drop_handler_del(sd->drop_handler);
+ _e_fm2_list = evas_list_remove(_e_fm2_list, sd->obj);
free(sd);
}
@@ -3405,6 +3600,7 @@ _e_fm2_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
sd->y = y;
evas_object_move(sd->underlay, sd->x, sd->y);
evas_object_move(sd->overlay, sd->x, sd->y);
+ _e_fm2_dnd_drop_configure(sd->obj);
evas_object_move(sd->clip, sd->x - OVERCLIP, sd->y - OVERCLIP);
_e_fm2_obj_icons_place(sd);
if (sd->drop_handler)
@@ -3426,6 +3622,7 @@ _e_fm2_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
sd->h = h;
evas_object_resize(sd->underlay, sd->w, sd->h);
evas_object_resize(sd->overlay, sd->w, sd->h);
+ _e_fm2_dnd_drop_configure(sd->obj);
evas_object_resize(sd->clip, sd->w + (OVERCLIP * 2), sd->h + (OVERCLIP * 2));
/* for automatic layout - do this - NB; we could put this on a timer delay */
diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c
index 0c1079231..955ad0593 100644
--- a/src/bin/e_int_menus.c
+++ b/src/bin/e_int_menus.c
@@ -668,6 +668,9 @@ _e_int_menus_config_pre_cb(void *data, E_Menu *m)
e_menu_item_callback_set(mi, _e_int_menus_config_item_cb, NULL);
mi = e_menu_item_new(m);
+ e_menu_item_separator_set(mi, 1);
+
+ mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Wallpaper"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/background");
e_menu_item_callback_set(mi, _e_int_menus_background_item_cb, NULL);
diff --git a/src/bin/e_sys_main.c b/src/bin/e_sys_main.c
index ea6cc34e5..b0ca797cf 100644
--- a/src/bin/e_sys_main.c
+++ b/src/bin/e_sys_main.c
@@ -1,6 +1,8 @@
/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
+#include "config.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -9,11 +11,14 @@
#include <pwd.h>
#include <grp.h>
#include <fnmatch.h>
+#ifdef HAVE_ALLOCA_H
+#include <alloca.h>
+#endif
#include <Evas.h>
/* local subsystem functions */
static int auth_action_ok(char *a, uid_t uid, gid_t gid);
-static int auth_etc_enlightenment_sysactions(char *a, char *u, char *g);
+static int auth_etc_enlightenment_sysactions(char *a, char *u, char **g);
static char *get_word(char *s, char *d);
/* local subsystem globals */
@@ -98,15 +103,37 @@ auth_action_ok(char *a, uid_t uid, gid_t gid)
{
struct passwd *pw;
struct group *gp;
- char *usr = NULL, *grp;
- int ret;
+ char *usr = NULL, **grp;
+ int ret, gn, i, j;
+ gid_t gl[1024], egid;
pw = getpwuid(uid);
if (!pw) return 0;
usr = pw->pw_name;
if (!usr) return 0;
+ egid = getegid();
+ gn = getgroups(1024, gl);
+ grp = alloca(sizeof(char *) * (gn + 1 + 1));
+ j = 0;
gp = getgrgid(gid);
- if (gp) grp = gp->gr_name;
+ if (gp)
+ {
+ grp[j] = gp->gr_name;
+ j++;
+ }
+ for (i = 0; i < gn; i++)
+ {
+ if (gl[i] != egid)
+ {
+ gp = getgrgid(gl[i]);
+ if (gp)
+ {
+ grp[j] = gp->gr_name;
+ j++;
+ }
+ }
+ }
+ grp[j] = NULL;
/* first stage - check:
* PREFIX/etc/enlightenment/sysactions.conf
*/
@@ -118,11 +145,11 @@ auth_action_ok(char *a, uid_t uid, gid_t gid)
}
static int
-auth_etc_enlightenment_sysactions(char *a, char *u, char *g)
+auth_etc_enlightenment_sysactions(char *a, char *u, char **g)
{
FILE *f;
char file[4096], buf[4096], id[4096], ugname[4096], perm[4096], act[4096];
- char *p, *pp, *s;
+ char *p, *pp, *s, **gp;
int len, line = 0, ok = 0;
int allow = 0;
int deny = 0;
@@ -169,15 +196,21 @@ auth_etc_enlightenment_sysactions(char *a, char *u, char *g)
}
else if (!strcmp(id, "group:"))
{
- if (!fnmatch(ugname, g, 0))
+ int matched;
+
+ matched = 0;
+ for (gp = g; *gp; gp++)
{
- if (!strcmp(perm, "allow:")) allow = 1;
- else if (!strcmp(perm, "deny:")) deny = 1;
- else
- goto malformed;
+ if (!fnmatch(ugname, *gp, 0))
+ {
+ matched = 1;
+ if (!strcmp(perm, "allow:")) allow = 1;
+ else if (!strcmp(perm, "deny:")) deny = 1;
+ else
+ goto malformed;
+ }
}
- else
- continue;
+ if (matched) continue;
}
else if (!strcmp(id, "action:"))
{