3 * Copyright 2012 Samsung Electronics Co., Ltd
5 * Licensed under the Flora License, Version 1.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://floralicense.org/license/
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 #include "save-cancel.h"
22 Evas_Object *naviframe;
23 Elm_Object_Item *navi_item;
25 Evas_Object *conformant;
29 Evas_Object *title_save_button;
30 Evas_Object *title_cancel_button;
32 Evas_Object *bottom_save_button;
33 Evas_Object *bottom_cancel_button;
35 save_cancel_cb save_callback;
36 save_cancel_cb cancel_callback;
40 static void __cal_save_cancel_show_title_toolbar(void *data, Evas_Object *obj, void *event_info)
46 cal_save_cancel_s* p = data;
48 Elm_Object_Item *navi_item = p->navi_item;
50 Evas_Object *tabbar = elm_object_item_part_content_unset(navi_item, "tabbar");
54 evas_object_hide(tabbar);
56 Evas_Object *bottom_save_button = elm_object_item_part_content_unset(navi_item, "toolbar_button1");
57 evas_object_hide(bottom_save_button);
59 Evas_Object *bottom_cancel_button = elm_object_item_part_content_unset(navi_item, "prev_btn");
60 evas_object_hide(bottom_cancel_button);
65 elm_object_item_signal_emit(navi_item, "elm,state,sip,shown", "");
68 static void __cal_save_cancel_hide_title_toolbar(void *data, Evas_Object *obj, void *event_info)
74 cal_save_cancel_s* p = data;
76 Elm_Object_Item *navi_item = p->navi_item;
78 if (p->tabbar != NULL) {
80 elm_object_item_part_content_set(navi_item, "tabbar", p->tabbar);
82 evas_object_show(p->tabbar);
84 elm_object_item_part_content_set(navi_item, "toolbar_button1", p->bottom_save_button);
85 evas_object_show(p->bottom_save_button);
87 elm_object_item_part_content_set(navi_item, "prev_btn", p->bottom_cancel_button);
88 evas_object_show(p->bottom_cancel_button);
93 elm_object_item_signal_emit(navi_item, "elm,state,sip,hidden", "");
96 static void __cal_save_cancel_button_callback(void *data, Evas_Object *obj, void *event_info)
100 cal_save_cancel_s* p = data;
102 __cal_save_cancel_hide_title_toolbar(p, obj, event_info);
105 static void __cal_save_cancel_title_cancel_button_callback(void *data, Evas_Object *obj, void *event_info)
109 cal_save_cancel_s* p = data;
111 __cal_save_cancel_button_callback(data, obj, event_info);
113 if (p->cancel_callback)
114 p->cancel_callback(p->callback_data, obj, event_info);
116 elm_naviframe_item_pop(p->naviframe);
119 static void __cal_save_cancel_bottom_cancel_button_callback(void *data, Evas_Object *obj, void *event_info)
123 cal_save_cancel_s* p = data;
125 __cal_save_cancel_button_callback(data, obj, event_info);
127 if (p->cancel_callback)
128 p->cancel_callback(p->callback_data, obj, event_info);
131 static void __cal_save_cancel_save_button_callback(void *data, Evas_Object *obj, void *event_info)
135 cal_save_cancel_s* p = data;
137 __cal_save_cancel_button_callback(data, obj, event_info);
139 p->save_callback(p->callback_data, obj, event_info);
142 static void __cal_save_cancel_input_panel_state_callback(void *data, Ecore_IMF_Context *imf_context, int value)
146 if (value == ECORE_IMF_INPUT_PANEL_STATE_SHOW)
147 __cal_save_cancel_show_title_toolbar(data, NULL, NULL);
149 __cal_save_cancel_hide_title_toolbar(data, NULL, NULL);
152 void cal_save_cancel_set_input_panel_callback_for_ug(cal_save_cancel_h info, Evas_Object *entry)
157 cal_save_cancel_s* p = (cal_save_cancel_s*)info;
159 Ecore_IMF_Context *imf_context = (Ecore_IMF_Context *)elm_entry_imf_context_get(entry);
160 c_ret_if(!imf_context);
162 ecore_imf_context_input_panel_event_callback_add(imf_context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, __cal_save_cancel_input_panel_state_callback, p);
165 void cal_save_cancel_unset_input_panel_callback_for_ug(Evas_Object *entry)
169 Ecore_IMF_Context *imf_context = (Ecore_IMF_Context *)elm_entry_imf_context_get(entry);
170 c_ret_if(!imf_context);
172 ecore_imf_context_input_panel_event_callback_del(imf_context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, __cal_save_cancel_input_panel_state_callback);
175 cal_save_cancel_h cal_save_cancel_create(Evas_Object *naviframe, Evas_Object *conformant, save_cancel_cb save_cb, save_cancel_cb cancel_cb, void* data)
179 c_retv_if(!naviframe, NULL);
181 Elm_Object_Item *navi_item = elm_naviframe_top_item_get(naviframe);
182 c_retv_if(!navi_item, NULL);
184 cal_save_cancel_s* p = (cal_save_cancel_s*)calloc(sizeof(cal_save_cancel_s), 1);
187 p->save_callback = save_cb;
188 p->cancel_callback = cancel_cb;
189 p->callback_data = data;
191 Evas_Object *button = NULL;
195 button = cal_util_add_toolbar_button(naviframe, "toolbar_button1", S_("IDS_COM_OPT_SAVE"), __cal_save_cancel_save_button_callback, p);
196 c_warn_if(!button, "cal_util_add_toolbar_button() is failed.");
198 p->bottom_save_button = button;
200 button = cal_util_add_toolbar_button(naviframe, "title_toolbar_button1", S_("IDS_COM_OPT_SAVE"), __cal_save_cancel_save_button_callback, p);
201 c_warn_if(!button, "cal_util_add_toolbar_button() is failed.");
203 p->title_save_button = button;
207 button = elm_object_item_part_content_get(navi_item, "prev_btn");
210 button = cal_util_add_toolbar_button(naviframe, "prev_btn", NULL, __cal_save_cancel_bottom_cancel_button_callback, p);
211 c_warn_if(!button, "cal_util_add_toolbar_button() is failed.");
213 elm_object_style_set(button, "naviframe/end_btn/default");
217 evas_object_smart_callback_add(button, "clicked", cancel_cb, data);
219 p->bottom_cancel_button = button;
221 button = cal_util_add_toolbar_button(naviframe, "title_prev_btn", NULL, __cal_save_cancel_title_cancel_button_callback, p);
222 c_warn_if(!button, "cal_util_add_toolbar_button() is failed.");
224 p->title_cancel_button = button;
226 elm_object_style_set(button, "naviframe/end_btn/default");
228 p->naviframe = naviframe;
229 p->navi_item = navi_item;
232 p->conformant = conformant;
234 evas_object_smart_callback_add(conformant, "virtualkeypad,state,on", __cal_save_cancel_show_title_toolbar, p);
235 evas_object_smart_callback_add(conformant, "virtualkeypad,state,off", __cal_save_cancel_hide_title_toolbar, p);
241 void cal_save_cancel_destroy(cal_save_cancel_h info)
245 cal_save_cancel_s* p = (cal_save_cancel_s*)info;
246 c_retm_if(!p, "p is null");
248 evas_object_smart_callback_del(p->conformant, "virtualkeypad,state,on", __cal_save_cancel_show_title_toolbar);
249 evas_object_smart_callback_del(p->conformant, "virtualkeypad,state,off", __cal_save_cancel_hide_title_toolbar);
251 if (p->title_save_button)
252 evas_object_del(p->title_save_button);
254 if (p->title_cancel_button)
255 evas_object_del(p->title_cancel_button);
257 if (p->bottom_save_button)
258 evas_object_del(p->bottom_save_button);
260 if (p->bottom_cancel_button)
261 evas_object_del(p->bottom_cancel_button);
266 void cal_save_cancel_set_button_text(cal_save_cancel_h info, const char *save_button_text, const char *cancel_button_text)
270 cal_save_cancel_s* p = (cal_save_cancel_s*)info;
273 if (CAL_STRLEN(save_button_text)) {
275 if (p->title_save_button)
276 elm_object_text_set(p->title_save_button, save_button_text);
278 if (p->bottom_save_button)
279 elm_object_text_set(p->bottom_save_button, save_button_text);
282 if (CAL_STRLEN(cancel_button_text)) {
284 if (p->title_cancel_button)
285 elm_object_text_set(p->title_cancel_button, save_button_text);
287 if (p->bottom_cancel_button)
288 elm_object_text_set(p->bottom_cancel_button, save_button_text);
292 void cal_save_cancel_set_disabled(cal_save_cancel_h info, Eina_Bool is_disabled_save, Eina_Bool is_disabled_cancel)
296 cal_save_cancel_s* p = (cal_save_cancel_s*)info;
299 if (p->title_save_button)
300 elm_object_disabled_set(p->title_save_button, is_disabled_save);
302 if (p->bottom_save_button)
303 elm_object_disabled_set(p->bottom_save_button, is_disabled_save);
305 if (p->title_cancel_button)
306 elm_object_disabled_set(p->title_cancel_button, is_disabled_cancel);
308 if (p->bottom_cancel_button)
309 elm_object_disabled_set(p->bottom_cancel_button, is_disabled_cancel);