use new elm_frame style to have the close button

This commit is contained in:
Vincent Torri 2021-04-18 22:10:40 +02:00
parent 4e2275a569
commit 97019fe911
6 changed files with 84 additions and 150 deletions

View File

@ -85,31 +85,6 @@ collections
}
// SETTINGS
// settings bg
part { name: "entice.settingsbg"; type: RECT;
mouse_events: 1;
repeat_events: 1;
description { state: "default" 0.0;
color: 64 64 64 255;
rel.to: "entice.settings.panel";
rel1.offset: 0 0;
rel2.offset: -1 -1;
visible: 0;
}
description { state: "shown" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
program { signal: "state,settingsbg,show"; source: "entice";
action: STATE_SET "shown" 0.0;
target: "entice.settingsbg";
}
program { signal: "state,settingsbg,hide"; source: "entice";
action: STATE_SET "default" 0.0;
target: "entice.settingsbg";
}
part { name: "entice.settings.panel"; type: SWALLOW;
description { state: "default" 0.0;
fixed: 1 1;
@ -136,31 +111,6 @@ collections
// EXIF
// exif bg
part { name: "entice.exifbg"; type: RECT;
mouse_events: 1;
repeat_events: 1;
description { state: "default" 0.0;
color: 64 64 64 255;
rel.to: "entice.exif.panel";
rel1.offset: 0 0;
rel2.offset: -1 -1;
visible: 0;
}
description { state: "shown" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
program { signal: "state,exifbg,show"; source: "entice";
action: STATE_SET "shown" 0.0;
target: "entice.exifbg";
}
program { signal: "state,exifbg,hide"; source: "entice";
action: STATE_SET "default" 0.0;
target: "entice.exifbg";
}
part { name: "entice.exif.panel"; type: SWALLOW;
description { state: "default" 0.0;
fixed: 1 1;

View File

@ -267,14 +267,12 @@ _cb_image_ctxpopup_settings_cb(void *win, Evas_Object *obj, void *event_info EIN
if (entice->exif_shown)
{
elm_object_signal_emit(entice->layout, "state,exif,hide", "entice");
elm_object_signal_emit(entice->layout, "state,exifbg,hide", "entice");
entice->exif_shown = EINA_FALSE;
}
if (!entice->settings_shown)
{
elm_object_signal_emit(entice->layout, "state,settings,show", "entice");
elm_object_signal_emit(entice->layout, "state,settingsbg,show", "entice");
entice->settings_shown = EINA_TRUE;
}
@ -293,14 +291,12 @@ _cb_image_ctxpopup_exif_cb(void *win, Evas_Object *obj, void *event_info EINA_UN
if (entice->settings_shown)
{
elm_object_signal_emit(entice->layout, "state,settings,hide", "entice");
elm_object_signal_emit(entice->layout, "state,settingsbg,hide", "entice");
entice->settings_shown = EINA_FALSE;
}
if (!entice->exif_shown)
{
elm_object_signal_emit(entice->layout, "state,exif,show", "entice");
elm_object_signal_emit(entice->layout, "state,exifbg,show", "entice");
entice->exif_shown = EINA_TRUE;
}

View File

@ -70,16 +70,64 @@ static Entice_Exif_Entry entice_exif_gps_entries[] =
{ NULL, "DateStamp:", "GPSDateStamp" },
};
static Eina_Bool
_entice_exif_focus_set_cb(void *win)
{
Entice *entice = evas_object_data_get(win, "entice");
entice->exif_timer = NULL;
elm_object_focus_set(entice->event_kbd, EINA_TRUE);
return EINA_FALSE;
}
static void
_cb_op_exif_close(void *win,
Evas_Object *obj,
void *_event EINA_UNUSED)
_entice_exif_key_down_cb(void *win,
Evas *evas EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info)
{
Entice *entice;
Evas_Event_Key_Down *ev;
Eina_Bool ctrl, alt, shift, winm, meta, hyper; /* modifiers */
EINA_SAFETY_ON_NULL_RETURN(event_info);
ev = (Evas_Event_Key_Down *)event_info;
ctrl = evas_key_modifier_is_set(ev->modifiers, "Control");
alt = evas_key_modifier_is_set(ev->modifiers, "Alt");
shift = evas_key_modifier_is_set(ev->modifiers, "Shift");
winm = evas_key_modifier_is_set(ev->modifiers, "Super");
meta =
evas_key_modifier_is_set(ev->modifiers, "Meta") ||
evas_key_modifier_is_set(ev->modifiers, "AltGr") ||
evas_key_modifier_is_set(ev->modifiers, "ISO_Level3_Shift");
hyper = evas_key_modifier_is_set(ev->modifiers, "Hyper");
entice = evas_object_data_get(win, "entice");
/* No modifier */
if (!ctrl && !alt && !shift && !winm && !meta && !hyper)
{
if (!strcmp(ev->key, "Escape"))
{
elm_object_signal_emit(entice->layout, "state,exif,hide", "entice");
entice->exif_shown = EINA_FALSE;
}
}
entice->exif_timer = ecore_timer_add(0.1, _entice_exif_focus_set_cb, win);
}
static void
_entice_exif_close_cb(void *win,
Evas_Object *obj,
void *_event EINA_UNUSED)
{
Entice *entice;
entice = evas_object_data_get(win, "entice");
elm_object_signal_emit(entice->layout, "state,exif,hide", "entice");
elm_object_signal_emit(entice->layout, "state,exifbg,hide", "entice");
entice->exif_shown = EINA_FALSE;
}
@ -92,12 +140,9 @@ entice_exif_init(Evas_Object *win)
{
Entice *entice;
Evas_Object *o;
Evas_Object *scroller;
Evas_Object *vbox;
Evas_Object *hbox;
Evas_Object *box;
Evas_Object *icon;
Evas_Object *frame;
Evas_Object *scroller;
Evas_Object *box;
Evas_Object *table;
size_t i;
@ -105,41 +150,29 @@ entice_exif_init(Evas_Object *win)
if (entice->exif_created)
return;
o = elm_box_add(win);
evas_object_size_hint_weight_set(o, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(o, 0.0, EVAS_HINT_FILL);
o = elm_frame_add(win);
elm_object_style_set(o, "border_overlay");
elm_object_focus_allow_set(o, EINA_FALSE);
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);
elm_object_text_set(o, "EXIF");
if (!evas_object_key_grab(o, "Escape", 0, 0, EINA_TRUE))
{
ERR("Can not grab the 'Esc' key");
}
evas_object_show(o);
vbox = o;
o = elm_box_add(vbox);
evas_object_size_hint_weight_set(o, 0.0, 0.0);
evas_object_size_hint_align_set(o, 1.0, 0.0);
elm_box_horizontal_set(o, EINA_TRUE);
elm_box_pack_end(vbox, o);
evas_object_show(o);
hbox = o;
o = elm_icon_add(win);
evas_object_size_hint_align_set(o, 1.0, 0.0);
elm_icon_standard_set(o, "window-close");
evas_object_show(o);
icon = o;
o = elm_button_add(vbox);
elm_object_content_set(o, icon);
evas_object_size_hint_align_set(o, 1.0, 0.0);
elm_box_pack_end(hbox, o);
evas_object_show(o);
evas_object_smart_callback_add(o, "clicked",
_cb_op_exif_close,
frame = o;
evas_object_smart_callback_add(frame, "close",
_entice_exif_close_cb,
win);
evas_object_event_callback_add(frame, EVAS_CALLBACK_KEY_DOWN,
_entice_exif_key_down_cb, win);
o = elm_scroller_add(win);
elm_scroller_content_min_limit(o, EINA_TRUE, EINA_FALSE);
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);
elm_box_pack_end(vbox, o);
elm_object_content_set(frame, o);
evas_object_show(o);
scroller = o;
@ -152,20 +185,11 @@ entice_exif_init(Evas_Object *win)
/* EXIF informations */
o = elm_frame_add(box);
o = elm_table_add(box);
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);
elm_object_focus_allow_set(o, EINA_FALSE);
elm_object_text_set(o, "EXIF");
elm_box_pack_end(box, o);
evas_object_show(o);
frame = o;
o = elm_table_add(frame);
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);
elm_object_content_set(frame, o);
evas_object_show(o);
table = o;
for (i = 0; i < sizeof(entice_exif_entries) / sizeof(Entice_Exif_Entry); i++)
@ -190,18 +214,16 @@ entice_exif_init(Evas_Object *win)
/* GPS informations */
o = elm_frame_add(box);
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);
elm_object_focus_allow_set(o, EINA_FALSE);
elm_object_text_set(o, "GPS");
o = elm_separator_add(box);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5);
elm_separator_horizontal_set(o, EINA_TRUE);
elm_box_pack_end(box, o);
evas_object_show(o);
frame = o;
o = elm_table_add(frame);
o = elm_table_add(box);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(frame, o);
elm_box_pack_end(box, o);
evas_object_show(o);
table = o;
@ -225,7 +247,7 @@ entice_exif_init(Evas_Object *win)
entice_exif_gps_entries[i].button = o;
}
elm_object_part_content_set(entice->layout, "entice.exif.panel", vbox);
elm_object_part_content_set(entice->layout, "entice.exif.panel", frame);
entice->exif_created = EINA_TRUE;
}

View File

@ -113,7 +113,6 @@ void entice_key_handle(Evas_Object *win, Evas_Event_Key_Down *ev)
if (!entice->settings_shown)
{
elm_object_signal_emit(entice->layout, "state,settings,show", "entice");
elm_object_signal_emit(entice->layout, "state,settingsbg,show", "entice");
entice->settings_shown = EINA_TRUE;
}
}
@ -123,7 +122,6 @@ void entice_key_handle(Evas_Object *win, Evas_Event_Key_Down *ev)
if (!entice->exif_shown)
{
elm_object_signal_emit(entice->layout, "state,exif,show", "entice");
elm_object_signal_emit(entice->layout, "state,exifbg,show", "entice");
entice->exif_shown = EINA_TRUE;
}
}
@ -133,11 +131,9 @@ void entice_key_handle(Evas_Object *win, Evas_Event_Key_Down *ev)
fflush(stderr);
elm_object_signal_emit(entice->layout, "state,settings,hide", "entice");
elm_object_signal_emit(entice->layout, "state,settingsbg,hide", "entice");
entice->settings_shown = EINA_FALSE;
elm_object_signal_emit(entice->layout, "state,exif,hide", "entice");
elm_object_signal_emit(entice->layout, "state,exifbg,hide", "entice");
entice->exif_shown = EINA_FALSE;
}
}

View File

@ -89,7 +89,6 @@ _cb_key_down(void *win,
if (!strcmp(ev->key, "Escape"))
{
elm_object_signal_emit(entice->layout, "state,settings,hide", "entice");
elm_object_signal_emit(entice->layout, "state,settingsbg,hide", "entice");
entice->settings_shown = EINA_FALSE;
}
}
@ -227,7 +226,6 @@ _cb_op_settings_close(void *win,
entice = evas_object_data_get(win, "entice");
elm_object_signal_emit(entice->layout, "state,settings,hide", "entice");
elm_object_signal_emit(entice->layout, "state,settingsbg,hide", "entice");
entice->settings_shown = EINA_FALSE;
}
@ -262,11 +260,8 @@ entice_settings_init(Evas_Object *win)
Evas_Object *o;
Evas_Object *frame;
Evas_Object *scroller;
Evas_Object *vbox;
Evas_Object *hbox;
Evas_Object *box;
Evas_Object *hbox2;
Evas_Object *icon;
Evas_Object *rdg;
int w;
int h;
@ -283,36 +278,8 @@ entice_settings_init(Evas_Object *win)
ctx->config = entice->config;
evas_object_geometry_get(win, NULL, NULL, &w, &h);
o = elm_box_add(win);
evas_object_size_hint_weight_set(o, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(o, 0.0, EVAS_HINT_FILL);
evas_object_show(o);
vbox = o;
o = elm_box_add(vbox);
evas_object_size_hint_weight_set(o, 0.0, 0.0);
evas_object_size_hint_align_set(o, 1.0, 0.0);
elm_box_horizontal_set(o, EINA_TRUE);
elm_box_pack_end(vbox, o);
evas_object_show(o);
hbox = o;
o = elm_icon_add(win);
evas_object_size_hint_align_set(o, 1.0, 0.0);
elm_icon_standard_set(o, "window-close");
evas_object_show(o);
icon = o;
o = elm_button_add(vbox);
elm_object_content_set(o, icon);
evas_object_size_hint_align_set(o, 1.0, 0.0);
elm_box_pack_end(hbox, o);
evas_object_smart_callback_add(o, "clicked",
_cb_op_settings_close,
win);
evas_object_show(o);
o = elm_frame_add(win);
elm_object_style_set(o, "border_overlay");
elm_object_focus_allow_set(o, EINA_FALSE);
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);
@ -321,9 +288,11 @@ entice_settings_init(Evas_Object *win)
{
ERR("Can not grab the 'Esc' key");
}
elm_box_pack_end(vbox, o);
evas_object_show(o);
frame = o;
evas_object_smart_callback_add(frame, "close",
_cb_op_settings_close,
win);
evas_object_event_callback_add(frame, EVAS_CALLBACK_KEY_DOWN,
_cb_key_down, win);
@ -470,7 +439,7 @@ entice_settings_init(Evas_Object *win)
elm_radio_value_set(rdg, ctx->config->order);
elm_object_part_content_set(entice->layout, "entice.settings.panel", vbox);
elm_object_part_content_set(entice->layout, "entice.settings.panel", frame);
entice->settings_created = EINA_TRUE;
}

View File

@ -60,6 +60,7 @@ struct Entice
Evas_Object *close; /* close icon */
Ecore_Timer *controls_timer;
Ecore_Timer *settings_timer;
Ecore_Timer *exif_timer;
Eina_Bool settings_created;
Eina_Bool settings_shown;
Eina_Bool controls_shown;