refactoring - removed menu_opened variable from the main.

it's duplicated variable to require sync.
menu itself keeps the menu_open status.
This commit is contained in:
ChunEon Park 2014-01-29 21:56:29 +09:00
parent 92ed6d5e65
commit 3024ee6cca
3 changed files with 70 additions and 116 deletions

View File

@ -18,7 +18,6 @@ struct app_s
Eina_Bool ctrl_pressed : 1;
Eina_Bool shift_pressed : 1;
Eina_Bool menu_opened : 1;
};
int main(int argc, char **argv);
@ -304,13 +303,13 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev)
//Main Menu
if (!strcmp(event->keyname, "Escape"))
{
ad->menu_opened = menu_toggle();
if (!ad->menu_opened)
menu_toggle();
if (menu_open_depth(ad->md) == 0)
edit_focus_set(ad->ed);
return ECORE_CALLBACK_DONE;
}
if (ad->menu_opened) return ECORE_CALLBACK_PASS_ON;
if (menu_open_depth(ad->md) > 0) return ECORE_CALLBACK_PASS_ON;
//Control Key
if (!strcmp("Control_L", event->keyname))
@ -321,25 +320,25 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev)
//README
if (!strcmp(event->keyname, "F1"))
{
ad->menu_opened = menu_about(ad->md);
menu_about(ad->md);
return ECORE_CALLBACK_DONE;
}
//New
if (!strcmp(event->keyname, "F2"))
{
ad->menu_opened = menu_edc_new(ad->md);
menu_edc_new(ad->md);
return ECORE_CALLBACK_DONE;
}
//Save
if (!strcmp(event->keyname, "F3"))
{
ad->menu_opened = menu_edc_save(ad->md);
menu_edc_save(ad->md);
return ECORE_CALLBACK_DONE;
}
//Load
if (!strcmp(event->keyname, "F4"))
{
ad->menu_opened = menu_edc_load(ad->md);
menu_edc_load(ad->md);
return ECORE_CALLBACK_DONE;
}
//Line Number
@ -359,7 +358,7 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev)
//Setting
if (!strcmp(event->keyname, "F12"))
{
ad->menu_opened = menu_setting(ad->md);
menu_setting(ad->md);
return ECORE_CALLBACK_DONE;
}
@ -575,13 +574,6 @@ elm_setup()
elm_theme_extension_add(NULL, EDJE_PATH);
}
static void
menu_close_cb(void *data)
{
app_data *ad = data;
ad->menu_opened = EINA_FALSE;
}
static void
edj_mgr_set(app_data *ad, config_data *cd)
{
@ -611,7 +603,7 @@ init(app_data *ad, int argc, char **argv)
statusbar_set(ad, ad->cd);
edc_edit_set(ad, ad->sd, ad->cd);
edc_view_set(ad, ad->cd, ad->sd, stats_group_name_get(ad->sd));
ad->md = menu_init(ad->win, ad->ed, ad->cd, menu_close_cb, ad);
ad->md = menu_init(ad->win, ad->ed, ad->cd);
ad->edc_monitor = eio_monitor_add(config_edc_path_get(ad->cd));
ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED, edc_changed_cb, ad);

View File

@ -20,18 +20,14 @@ struct menu_s
Evas_Object *toggle_highlight;
Evas_Object *toggle_swallow;
Evas_Object *toggle_indent;
Evas_Object *ctxpopup;
const char *last_accessed_path;
void (*close_cb)(void *data);
void *close_cb_data;
int open_depth;
config_data *cd;
edit_data *ed;
Eina_Bool menu_open : 1;
};
static menu_data *g_md;
@ -68,13 +64,10 @@ warning_close(menu_data *md)
}
static void
menu_close(menu_data *md, Eina_Bool toggled)
menu_close(menu_data *md)
{
if (md->menu_layout)
elm_object_signal_emit(md->menu_layout, "elm,state,dismiss", "");
if (!toggled)
md->close_cb(md->close_cb_data);
if (!md->menu_layout) return;
elm_object_signal_emit(md->menu_layout, "elm,state,dismiss", "");
}
static void
@ -85,6 +78,7 @@ fileselector_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED,
menu_data *md = data;
evas_object_del(md->fileselector_layout);
md->fileselector_layout = NULL;
md->open_depth--;
if (md->menu_layout)
{
elm_object_disabled_set(md->menu_layout, EINA_FALSE);
@ -100,6 +94,7 @@ setting_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED,
menu_data *md = data;
evas_object_del(md->setting_layout);
md->setting_layout = NULL;
md->open_depth--;
if (!md->menu_layout) return;
elm_object_disabled_set(md->menu_layout, EINA_FALSE);
elm_object_focus_set(md->menu_layout, EINA_TRUE);
@ -113,6 +108,7 @@ about_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED,
menu_data *md = data;
evas_object_del(md->about_layout);
md->about_layout = NULL;
md->open_depth--;
if (!md->menu_layout) return;
elm_object_disabled_set(md->menu_layout, EINA_FALSE);
elm_object_focus_set(md->menu_layout, EINA_TRUE);
@ -126,7 +122,7 @@ menu_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED,
menu_data *md = data;
evas_object_del(md->menu_layout);
md->menu_layout = NULL;
md->menu_open = EINA_FALSE;
md->open_depth--;
}
static void
@ -137,6 +133,7 @@ warning_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED,
menu_data *md = data;
evas_object_del(md->warning_layout);
md->warning_layout = NULL;
md->open_depth--;
if (!md->menu_layout) return;
elm_object_disabled_set(md->menu_layout, EINA_FALSE);
elm_object_focus_set(md->menu_layout, EINA_TRUE);
@ -191,6 +188,7 @@ warning_layout_create(menu_data *md, Evas_Smart_Cb yes_cb,
elm_object_disabled_set(md->menu_layout, EINA_TRUE);
md->warning_layout = layout;
md->open_depth++;
}
static void
@ -567,6 +565,7 @@ setting_open(menu_data *md)
md->toggle_highlight = toggle_highlight;
md->toggle_swallow = toggle_swallow;
md->toggle_indent = toggle_indent;
md->open_depth++;
}
static void
@ -630,6 +629,7 @@ about_open(menu_data *md)
elm_object_disabled_set(md->menu_layout, EINA_TRUE);
md->about_layout = layout;
md->open_depth++;
err:
if (strbuf) eina_strbuf_free(strbuf);
@ -661,7 +661,7 @@ new_yes_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
edc_reload(md, PROTO_EDC_PATH);
warning_close(md);
menu_close(md, EINA_FALSE);
menu_close(md);
}
static void
@ -751,7 +751,7 @@ new_save_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
edit_save(md->ed);
edc_reload(md, PROTO_EDC_PATH);
warning_close(md);
menu_close(md, EINA_FALSE);
menu_close(md);
}
static void
@ -828,7 +828,7 @@ fileselector_save_done_cb(void *data, Evas_Object *obj, void *event_info)
config_apply(md->cd);
fileselector_close(md);
menu_close(md, EINA_FALSE);
menu_close(md);
}
static void
@ -889,7 +889,7 @@ fileselector_load_done_cb(void *data, Evas_Object *obj, void *event_info)
edc_reload(md, selected);
fileselector_close(md);
menu_close(md, EINA_FALSE);
menu_close(md);
}
static void
@ -929,6 +929,7 @@ edc_file_save(menu_data *md)
elm_object_focus_set(fs, EINA_TRUE);
md->fileselector_layout = layout;
md->open_depth++;
}
static void
@ -962,6 +963,7 @@ edc_file_load(menu_data *md)
elm_object_focus_set(fs, EINA_TRUE);
md->fileselector_layout = layout;
md->open_depth++;
}
static void
@ -983,18 +985,16 @@ load_save_btn_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
warning_close(md);
}
Eina_Bool
void
menu_about(menu_data *md)
{
about_open(md);
return EINA_TRUE;
}
Eina_Bool
void
menu_setting(menu_data *md)
{
setting_open(md);
return EINA_TRUE;
}
Eina_Bool
@ -1006,27 +1006,24 @@ menu_edc_new(menu_data *md)
return EINA_TRUE;
}
edc_reload(md, PROTO_EDC_PATH);
menu_close(md, EINA_FALSE);
menu_close(md);
return EINA_FALSE;
}
Eina_Bool
void
menu_edc_save(menu_data *md)
{
edc_file_save(md);
return EINA_TRUE;
}
Eina_Bool
void
menu_edc_load(menu_data *md)
{
if (edit_changed_get(md->ed))
warning_layout_create(md, load_yes_btn_cb, load_save_btn_cb);
else
edc_file_load(md);
return EINA_TRUE;
}
static void
@ -1084,20 +1081,16 @@ menu_open(menu_data *md)
ecore_timer_add(0.15, btn_effect_timer_cb, btn);
md->menu_layout = layout;
md->menu_open = EINA_TRUE;
md->open_depth++;
}
menu_data *
menu_init(Evas_Object *win, edit_data *ed, config_data *cd,
void (*close_cb)(void *data), void *data)
menu_init(Evas_Object *win, edit_data *ed, config_data *cd)
{
menu_data *md = calloc(1, sizeof(menu_data));
md->win = win;
md->ed = ed;
md->cd = cd;
md->close_cb = close_cb;
md->close_cb_data = data;
g_md = md;
return md;
}
@ -1109,78 +1102,40 @@ menu_term(menu_data *md)
free(md);
}
Eina_Bool
void
menu_toggle()
{
menu_data *md = g_md;
//Level 2 Menus
if (md->menu_open)
if (md->setting_layout)
{
if (md->setting_layout)
{
setting_close(md);
return EINA_TRUE;
}
else if (md->warning_layout)
{
warning_close(md);
return EINA_TRUE;
}
else if (md->fileselector_layout)
{
fileselector_close(md);
return EINA_TRUE;
}
else if (md->about_layout)
{
about_close(md);
return EINA_TRUE;
}
setting_close(md);
return;
}
//Short Cut Key Open Case
else
{
if (md->about_layout)
{
about_close(md);
return EINA_FALSE;
}
if (md->fileselector_layout)
{
fileselector_close(md);
return EINA_FALSE;
}
if (md->setting_layout)
{
setting_close(md);
return EINA_FALSE;
}
}
//Ctxpopup
if (md->ctxpopup)
{
elm_ctxpopup_dismiss(md->ctxpopup);
return EINA_FALSE;
}
//Warning
if (md->warning_layout)
{
warning_close(md);
return EINA_FALSE;
return;
}
if (md->fileselector_layout)
{
fileselector_close(md);
return;
}
if (md->about_layout)
{
about_close(md);
return;
}
if (md->ctxpopup)
{
elm_ctxpopup_dismiss(md->ctxpopup);
return;
}
//Main Menu
if (md->menu_open)
{
menu_close(md, EINA_TRUE);
return EINA_FALSE;
}
else
{
menu_open(md);
return EINA_TRUE;
}
if (md->open_depth) menu_close(md);
else menu_open(md);
}
static void
@ -1208,3 +1163,9 @@ menu_ctxpopup_register(Evas_Object *ctxpopup)
evas_object_event_callback_add(ctxpopup, EVAS_CALLBACK_DEL, ctxpopup_del_cb,
md);
}
int
menu_open_depth(menu_data *md)
{
return md->open_depth;
}

View File

@ -1,13 +1,14 @@
#define VIEW_DATA edj_mgr_view_get(NULL, NULL)
menu_data *menu_init(Evas_Object *win, edit_data *ed, config_data *cd, void (*close_cb)(void *data), void *data);
menu_data *menu_init(Evas_Object *win, edit_data *ed, config_data *cd);
void menu_term(menu_data *md);
Eina_Bool menu_toggle();
void menu_toggle();
void menu_ctxpopup_register(Evas_Object *ctxpopup);
void menu_ctxpopup_unregister(Evas_Object *ctxpopup);
Eina_Bool menu_edc_new(menu_data *md);
Eina_Bool menu_edc_save(menu_data *md);
Eina_Bool menu_edc_load(menu_data *md);
void menu_edc_save(menu_data *md);
void menu_edc_load(menu_data *md);
void menu_exit(menu_data *md);
Eina_Bool menu_about(menu_data *md);
Eina_Bool menu_setting(menu_data *md);
void menu_about(menu_data *md);
void menu_setting(menu_data *md);
int menu_open_depth(menu_data *md);