3 * Copyright 2012 Samsung Electronics Co., Ltd
5 * Licensed under the Flora License, Version 1.1 (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"
23 Evas_Object *conformant;
24 Evas_Object *naviframe;
26 Elm_Object_Item *navi_item;
30 Evas_Object *title_save_button;
31 Evas_Object *title_cancel_button;
33 Evas_Object *bottom_save_button;
34 Evas_Object *bottom_cancel_button;
36 save_cancel_cb save_callback;
37 save_cancel_cb cancel_callback;
41 Ecore_IMF_Context *imf_context;
47 static void __cal_save_cancel_show_title(void *data, Evas_Object *obj, void *event_info)
53 cal_save_cancel_s* p = data;
55 elm_naviframe_item_title_visible_set(p->navi_item, EINA_TRUE);
58 static void __cal_save_cancel_hide_title(void *data, Evas_Object *obj, void *event_info)
64 cal_save_cancel_s* p = data;
66 cal_window_rotation rotation = elm_win_rotation_get(p->window);
68 if (rotation == CAL_WINDOW_ROTATION_90 || rotation == CAL_WINDOW_ROTATION_270)
69 elm_naviframe_item_title_visible_set(p->navi_item, EINA_FALSE);
72 static void __cal_save_cancel_button_callback(void *data, Evas_Object *obj, void *event_info)
76 cal_save_cancel_s* p = data;
79 static void __cal_save_cancel_title_cancel_button_callback(void *data, Evas_Object *obj, void *event_info)
83 cal_save_cancel_s* p = data;
85 __cal_save_cancel_button_callback(data, obj, event_info);
87 if (p->cancel_callback)
88 p->cancel_callback(p->callback_data, obj, event_info);
90 elm_naviframe_item_pop(p->naviframe);
93 static void __cal_save_cancel_bottom_cancel_button_callback(void *data, Evas_Object *obj, void *event_info)
97 cal_save_cancel_s* p = data;
99 __cal_save_cancel_button_callback(data, obj, event_info);
101 if (p->cancel_callback)
102 p->cancel_callback(p->callback_data, obj, event_info);
105 static void __cal_save_cancel_save_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 p->save_callback(p->callback_data, obj, event_info);
116 cal_save_cancel_h cal_save_cancel_create( Evas_Object *window, Evas_Object *conformant, Evas_Object *naviframe,
117 save_cancel_cb save_cb, save_cancel_cb cancel_cb, void* data)
121 c_retv_if(!naviframe, NULL);
123 Elm_Object_Item *navi_item = elm_naviframe_top_item_get(naviframe);
124 c_retv_if(!navi_item, NULL);
126 cal_save_cancel_s* p = (cal_save_cancel_s*)calloc(sizeof(cal_save_cancel_s), 1);
129 p->save_callback = save_cb;
130 p->cancel_callback = cancel_cb;
131 p->callback_data = data;
133 Evas_Object *button = NULL;
137 button = cal_util_add_toolbar_button(naviframe, "toolbar_button1", S_("IDS_COM_OPT_SAVE"), __cal_save_cancel_save_button_callback, p);
138 c_warn_if(!button, "cal_util_add_toolbar_button() is failed.");
140 p->bottom_save_button = button;
142 button = cal_util_add_toolbar_button(naviframe, "title_toolbar_button1", S_("IDS_COM_OPT_SAVE"), __cal_save_cancel_save_button_callback, p);
143 c_warn_if(!button, "cal_util_add_toolbar_button() is failed.");
145 p->title_save_button = button;
150 button = cal_util_add_toolbar_button(naviframe, "prev_btn", NULL, __cal_save_cancel_bottom_cancel_button_callback, p);
151 c_warn_if(!button, "cal_util_add_toolbar_button() is failed.");
153 elm_object_style_set(button, "naviframe/end_btn/default");
155 p->bottom_cancel_button = button;
159 button = cal_util_add_toolbar_button(naviframe, "title_prev_btn", NULL, __cal_save_cancel_title_cancel_button_callback, p);
160 c_warn_if(!button, "cal_util_add_toolbar_button() is failed.");
162 p->title_cancel_button = button;
164 elm_object_style_set(button, "naviframe/end_btn/default");
167 p->conformant = conformant;
168 p->naviframe = naviframe;
169 p->navi_item = navi_item;
171 evas_object_smart_callback_add(conformant, "virtualkeypad,state,on", __cal_save_cancel_hide_title, p);
172 evas_object_smart_callback_add(conformant, "virtualkeypad,state,off", __cal_save_cancel_show_title, p);
177 void cal_save_cancel_destroy(cal_save_cancel_h info)
181 cal_save_cancel_s* p = (cal_save_cancel_s*)info;
182 c_retm_if(!p, "p is null");
184 if (p->title_save_button)
185 evas_object_del(p->title_save_button);
187 if (p->title_cancel_button)
188 evas_object_del(p->title_cancel_button);
190 if (p->bottom_save_button)
191 evas_object_del(p->bottom_save_button);
193 if (p->bottom_cancel_button)
194 evas_object_del(p->bottom_cancel_button);
196 evas_object_smart_callback_del(p->conformant, "virtualkeypad,state,on", __cal_save_cancel_hide_title);
197 evas_object_smart_callback_del(p->conformant, "virtualkeypad,state,off", __cal_save_cancel_show_title);
202 void cal_save_cancel_set_button_text(cal_save_cancel_h info, const char *save_button_text, const char *cancel_button_text)
206 cal_save_cancel_s* p = (cal_save_cancel_s*)info;
209 if (CAL_STRLEN(save_button_text)) {
211 if (p->title_save_button)
212 elm_object_text_set(p->title_save_button, save_button_text);
214 if (p->bottom_save_button)
215 elm_object_text_set(p->bottom_save_button, save_button_text);
218 if (CAL_STRLEN(cancel_button_text)) {
220 if (p->title_cancel_button)
221 elm_object_text_set(p->title_cancel_button, save_button_text);
223 if (p->bottom_cancel_button)
224 elm_object_text_set(p->bottom_cancel_button, save_button_text);
228 void cal_save_cancel_set_disabled(cal_save_cancel_h info, Eina_Bool is_disabled_save, Eina_Bool is_disabled_cancel)
232 cal_save_cancel_s* p = (cal_save_cancel_s*)info;
235 if (p->title_save_button)
236 elm_object_disabled_set(p->title_save_button, is_disabled_save);
238 if (p->bottom_save_button)
239 elm_object_disabled_set(p->bottom_save_button, is_disabled_save);
241 if (p->title_cancel_button)
242 elm_object_disabled_set(p->title_cancel_button, is_disabled_cancel);
244 if (p->bottom_cancel_button)
245 elm_object_disabled_set(p->bottom_cancel_button, is_disabled_cancel);