rage - add (un)/fullscreen button/status gadget and close in fs mode

This commit is contained in:
Carsten Haitzler 2014-07-20 23:38:02 +09:00
parent 8d941dc68e
commit f35241a154
11 changed files with 231 additions and 3 deletions

2
TODO
View File

@ -15,4 +15,4 @@
* hide mouse on timeout in fullscreen move
* fullscreen mode should request suspend of screensaver (needs elm work)
* detect letterboxing and auto-crop
* add fullscreen/unfullscreen controls

View File

@ -28,6 +28,9 @@ collections {
images.image: "icon_arrow_right.png" COMP;
images.image: "icon_spanner.png" COMP;
images.image: "icon_fullscreen.png" COMP;
images.image: "icon_unfullscreen.png" COMP;
images.image: "icon_close.png" COMP;
images.image: "horizontal_separated_bar_small_glow.png" COMP;
images.image: "vgrad_shadow_bi.png" COMP;
@ -43,6 +46,9 @@ collections {
images.image: "icon_pause2.png" COMP;
images.image: "icon_volume2.png" COMP;
images.image: "icon_spanner2.png" COMP;
images.image: "icon_fullscreen2.png" COMP;
images.image: "icon_unfullscreen2.png" COMP;
images.image: "icon_close2.png" COMP;
images.image: "tv-bg.png" COMP;
images.image: "tv-over.png" COMP;
@ -697,6 +703,43 @@ collections {
part { name: "rage.options.swallow"; type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
fixed: 1 1;
rel1.relative: 0.0 0.0;
rel1.offset: -6 0;
rel1.to: "rage.win.fullscreen";
rel2.relative: 0.0 1.0;
rel2.offset: -6 -1;
rel2.to: "rage.win.fullscreen";
min: 20 20;
align: 1.0 0.0;
}
}
part { name: "rage.win.fullscreen"; type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
fixed: 1 1;
rel1.relative: 0.0 0.0;
rel1.offset: -6 0;
rel1.to: "rage.win.close";
rel2.relative: 0.0 1.0;
rel2.offset: -6 -1;
rel2.to: "rage.win.close";
min: 20 20;
align: 1.0 0.0;
}
}
part { name: "rage.win.close"; type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
fixed: 1 1;
rel1.relative: 1.0 0.0;
rel1.offset: 0 5;
rel2.relative: 1.0 0.0;
rel2.offset: 0 5;
min: 20 20;
align: 0.0 0.0;
}
description { state: "fullscreen" 0.0;
fixed: 1 1;
rel1.relative: 1.0 0.0;
rel1.offset: -6 5;
@ -771,6 +814,144 @@ collections {
target: "vol";
}
part { name: "close";
scale: 1;
clip_to: "posclip";
description { state: "default" 0.0;
fixed: 1 1;
rel1.to: "rage.win.close";
rel2.to: "rage.win.close";
image.normal: "icon_close.png";
min: 20 20; max: 20 20;
}
description { state: "active" 0.0;
inherit: "default" 0.0;
image.normal: "icon_close2.png";
}
}
part { name: "closeev"; type: RECT;
description { state: "default" 0.0;
rel1.to: "rage.win.close";
rel2.to: "rage.win.close";
color: 0 0 0 0;
}
}
program {
signal: "mouse,down,1"; source: "closeev";
action: STATE_SET "active" 0.0;
target: "close";
}
program {
signal: "mouse,up,1"; source: "closeev";
action: STATE_SET "default" 0.0;
target: "close";
}
part { name: "fullscreenclip"; type: RECT;
clip_to: "posclip";
description { state: "default" 0.0;
rel1.to: "fullscreen";
rel2.to: "fullscreen";
visible: 1;
}
description { state: "fullscreen" 0.0;
inherit: "default" 0.0;
visible: 0;
}
}
part { name: "unfullscreenclip"; type: RECT;
clip_to: "posclip";
description { state: "default" 0.0;
rel1.to: "unfullscreen";
rel2.to: "unfullscreen";
visible: 0;
}
description { state: "fullscreen" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
program {
signal: "state,win,fullscreen"; source: "rage";
action: STATE_SET "fullscreen" 0.0;
target: "fullscreenclip";
target: "unfullscreenclip";
target: "rage.win.close";
}
program {
signal: "state,win,normal"; source: "rage";
action: STATE_SET "default" 0.0;
target: "fullscreenclip";
target: "unfullscreenclip";
target: "rage.win.close";
}
part { name: "fullscreen";
scale: 1;
clip_to: "fullscreenclip";
description { state: "default" 0.0;
fixed: 1 1;
rel1.to: "rage.win.fullscreen";
rel2.to: "rage.win.fullscreen";
image.normal: "icon_fullscreen.png";
min: 20 20; max: 20 20;
}
description { state: "active" 0.0;
inherit: "default" 0.0;
image.normal: "icon_fullscreen2.png";
}
}
part { name: "fullscreenev"; type: RECT;
clip_to: "fullscreenclip";
description { state: "default" 0.0;
rel1.to: "rage.win.fullscreen";
rel2.to: "rage.win.fullscreen";
color: 0 0 0 0;
}
}
program {
signal: "mouse,down,1"; source: "fullscreenev";
action: STATE_SET "active" 0.0;
target: "fullscreen";
}
program {
signal: "mouse,up,1"; source: "fullscreenev";
action: STATE_SET "default" 0.0;
target: "fullscreen";
}
part { name: "unfullscreen";
scale: 1;
clip_to: "unfullscreenclip";
description { state: "default" 0.0;
fixed: 1 1;
rel1.to: "rage.win.fullscreen";
rel2.to: "rage.win.fullscreen";
image.normal: "icon_unfullscreen.png";
min: 20 20; max: 20 20;
}
description { state: "active" 0.0;
inherit: "default" 0.0;
image.normal: "icon_unfullscreen2.png";
}
}
part { name: "unfullscreenev"; type: RECT;
clip_to: "unfullscreenclip";
description { state: "default" 0.0;
rel1.to: "rage.win.fullscreen";
rel2.to: "rage.win.fullscreen";
color: 0 0 0 0;
}
}
program {
signal: "mouse,down,1"; source: "unfullscreenev";
action: STATE_SET "active" 0.0;
target: "unfullscreen";
}
program {
signal: "mouse,up,1"; source: "unfullscreenev";
action: STATE_SET "default" 0.0;
target: "unfullscreen";
}
part { name: "opt";
scale: 1;
clip_to: "posclip";
@ -974,6 +1155,20 @@ collections {
action: SIGNAL_EMIT "pos,action,options" "rage";
}
program {
signal: "mouse,clicked,1"; source: "fullscreenev";
action: SIGNAL_EMIT "win,fullscreen" "rage";
}
program {
signal: "mouse,clicked,1"; source: "unfullscreenev";
action: SIGNAL_EMIT "win,unfullscreen" "rage";
}
program {
signal: "mouse,clicked,1"; source: "closeev";
action: SIGNAL_EMIT "win,close" "rage";
}
program {
signal: "mouse,clicked,1"; source: "pos_prevev";
action: SIGNAL_EMIT "pos,action,prev" "rage";

View File

@ -39,5 +39,12 @@ r-0.png \
r-1.png \
r-2.png \
r-3.png \
r-4.png
r-4.png \
icon_close.png \
icon_close2.png \
icon_fullscreen.png \
icon_fullscreen2.png \
icon_unfullscreen.png \
icon_unfullscreen2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -62,6 +62,24 @@ _cb_list_hide(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EIN
win_list_hide(data);
}
static void
_cb_win_fullscreen(void *data EINA_UNUSED, Evas_Object *obj, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
{
elm_win_fullscreen_set(elm_object_top_widget_get(obj), EINA_TRUE);
}
static void
_cb_win_unfullscreen(void *data EINA_UNUSED, Evas_Object *obj, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
{
elm_win_fullscreen_set(elm_object_top_widget_get(obj), EINA_FALSE);
}
static void
_cb_win_close(void *data EINA_UNUSED, Evas_Object *obj, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
{
evas_object_del(elm_object_top_widget_get(obj));
}
static void
_time_print(double t, double max, int size, char *buf, Eina_Bool subsec)
{
@ -128,6 +146,12 @@ controls_init(Evas_Object *win, Evas_Object *lay)
_cb_list_show, win);
elm_layout_signal_callback_add(lay, "list,hide", "rage",
_cb_list_hide, win);
elm_layout_signal_callback_add(lay, "win,fullscreen", "rage",
_cb_win_fullscreen, win);
elm_layout_signal_callback_add(lay, "win,unfullscreen", "rage",
_cb_win_unfullscreen, win);
elm_layout_signal_callback_add(lay, "win,close", "rage",
_cb_win_close, win);
sz = 0;
elm_coords_finger_size_adjust(1, &sz, 1, &sz);
@ -141,6 +165,8 @@ controls_init(Evas_Object *win, Evas_Object *lay)
FINGER_SIZE("rage.pos.swallow");
FINGER_SIZE("rage.vol.swallow");
FINGER_SIZE("rage.options.swallow");
FINGER_SIZE("rage.win.fullscreen");
FINGER_SIZE("rage.win.close");
FINGER_SIZE("rage.pos.prev.swallow");
FINGER_SIZE("rage.pos.play.swallow");
FINGER_SIZE("rage.pos.next.swallow");

View File

@ -151,7 +151,7 @@ key_handle(Evas_Object *win, Evas_Event_Key_Down *ev)
else if ((!strcmp(ev->keyname, "q")) ||
(!strcmp(ev->key, "Escape")))
{
elm_exit();
evas_object_del(win);
}
else if ((!strcmp(ev->keyname, "f")) ||
(!strcmp(ev->key, "F11")))