4 * Copyright 2012 Samsung Electronics Co., Ltd
6 * Licensed under the Flora License, Version 1.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.tizenopensource.org/license
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
23 #include "view_ime_hidden.h"
24 #include "i18nmanager.h"
25 #include "wlan_manager.h"
26 #include "viewer_manager.h"
27 #include "viewer_list.h"
28 #include "common_utils.h"
30 struct hiddep_ap_popup_data {
32 const char *str_pkg_name;
38 static hiddep_ap_popup_data_t *g_hidden_ap_popup_data = NULL;
39 static Elm_Genlist_Item_Class g_entry_itc;
41 static Eina_Bool _enable_scan_updates_cb(void *data)
43 /* Lets enable the scan updates */
44 wlan_manager_enable_scan_result_update();
46 /* Reset the ecore timer handle */
47 common_util_manager_ecore_scan_update_timer_reset();
49 return ECORE_CALLBACK_CANCEL;
52 static void __popup_entry_changed_cb(void* data, Evas_Object* obj, void* event_info)
54 if (g_hidden_ap_popup_data == NULL) {
58 hiddep_ap_popup_data_t *popup_data = g_hidden_ap_popup_data;
59 Evas_Object *ok_btn = popup_data->ok_btn;
61 // if (elm_object_part_content_get(obj, "elm.swallow.clear")) {
62 if (elm_object_focus_get(obj)) {
63 if (elm_entry_is_empty(obj)) {
64 elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
65 elm_object_disabled_set(ok_btn, EINA_TRUE);
66 elm_entry_input_panel_return_key_disabled_set(obj, EINA_TRUE);
68 elm_object_signal_emit(obj, "elm,state,clear,visible", "");
69 elm_object_disabled_set(ok_btn, EINA_FALSE);
70 elm_entry_input_panel_return_key_disabled_set(obj, EINA_FALSE);
76 static void __popup_entry_focused_cb(void *data, Evas_Object *obj, void *event_info)
78 if (elm_object_part_content_get(obj, "elm.swallow.clear")) {
79 if (!elm_entry_is_empty(obj)) {
80 elm_object_signal_emit(obj, "elm,state,clear,visible", "");
82 elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
85 elm_object_signal_emit(obj, "elm,state,focus,on", "");
88 static void __popup_entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
90 if (elm_object_part_content_get(obj, "elm.swallow.clear")) {
91 elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
93 elm_object_signal_emit(obj, "elm,state,focus,off", "");
96 static void __popup_entry_maxlength_reached(void *data, Evas_Object *obj,
99 common_utils_send_message_to_net_popup("Password length",
100 "Lengthy Password", "notification", NULL);
103 hiddep_ap_popup_data_t *view_hidden_ap_popup_data_get(void)
105 return g_hidden_ap_popup_data;
108 void view_hidden_ap_popup_delete(void)
110 if (g_hidden_ap_popup_data == NULL)
113 if (g_hidden_ap_popup_data->popup) {
114 evas_object_del(g_hidden_ap_popup_data->popup);
115 g_hidden_ap_popup_data->popup = NULL;
118 g_free(g_hidden_ap_popup_data);
119 g_hidden_ap_popup_data = NULL;
122 void view_hidden_ap_popup_destroy(void)
124 view_hidden_ap_popup_delete();
126 /* A delay is needed to get the smooth Input panel closing animation effect */
127 common_util_managed_ecore_scan_update_timer_add(0.1,
128 _enable_scan_updates_cb, NULL);
131 static void view_hidden_ap_popup_ok_cb(void *data, Evas_Object *obj,
134 hiddep_ap_popup_data_t *popup_data = g_hidden_ap_popup_data;
135 char *entry_txt = NULL;
138 if (popup_data == NULL)
141 entry_txt = elm_entry_markup_to_utf8(elm_entry_entry_get(
144 err = wlan_manager_scan_with_ssid(entry_txt, entry_txt);
145 if (err != WLAN_MANAGER_ERR_NONE) {
146 common_utils_send_message_to_net_popup("Network connection popup",
147 "no ap found", "notification", NULL);
149 view_hidden_ap_popup_destroy();
155 viewer_manager_show(VIEWER_WINSET_SEARCHING);
156 viewer_manager_header_mode_set(HEADER_MODE_SEARCHING);
158 evas_object_del(popup_data->popup);
159 popup_data->popup = NULL;
161 /* A delay is needed to get the smooth Input panel closing animation effect */
162 common_util_managed_ecore_scan_update_timer_add(0.1,
163 _enable_scan_updates_cb, NULL);
166 static void view_hidden_ap_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
168 viewer_manager_request_scan();
169 view_hidden_ap_popup_destroy();
172 static Evas_Object *_gl_entry_item_content_get(void *data,
173 Evas_Object *obj, const char *part)
180 Evas_Object *entry = NULL;
182 static Elm_Entry_Filter_Limit_Size limit_filter_data;
184 if (!g_strcmp0(part, "elm.icon.entry")) {
185 entry = elm_entry_add(obj);
186 elm_layout_theme_set(entry, "layout", "editfield", "singleline");
187 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
188 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
189 elm_entry_single_line_set(entry, EINA_TRUE);
190 elm_entry_scrollable_set(entry, EINA_TRUE);
194 elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
195 elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
196 elm_entry_prediction_allow_set(entry, EINA_FALSE);
197 elm_entry_autocapital_type_set(entry, ELM_AUTOCAPITAL_TYPE_NONE);
198 elm_object_domain_translatable_part_text_set(entry, "elm.guide",
199 PACKAGE, "IDS_ST_BODY_NETWORK_SSID");
200 elm_object_signal_emit(entry, "elm,action,hide,search_icon", "");
202 limit_filter_data.max_char_count = 32;
203 elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size,
206 return_key_type = ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_DONE;
207 elm_entry_input_panel_return_key_type_set(entry, return_key_type);
208 elm_entry_input_panel_return_key_disabled_set(entry, EINA_TRUE);
210 g_hidden_ap_popup_data->entry = entry;
212 evas_object_smart_callback_add(entry, "activated",
213 view_hidden_ap_popup_ok_cb, NULL);
214 evas_object_smart_callback_add(entry, "changed",
215 __popup_entry_changed_cb, NULL);
216 evas_object_smart_callback_add(entry, "preedit,changed",
217 __popup_entry_changed_cb, NULL);
218 evas_object_smart_callback_add(entry, "focused",
219 __popup_entry_focused_cb, NULL);
220 evas_object_smart_callback_add(entry, "unfocused",
221 __popup_entry_unfocused_cb, NULL);
222 evas_object_smart_callback_add(entry, "maxlength,reached",
223 __popup_entry_maxlength_reached, NULL);
225 elm_entry_input_panel_show(entry);
233 static void popup_animation_finish_cb(void *data, Evas_Object *obj, void *event_info)
235 __COMMON_FUNC_ENTER__;
236 Elm_Object_Item *item = (Elm_Object_Item *) data;
237 Evas_Object *entry = NULL;
239 entry = elm_object_item_part_content_get(item, "elm.icon.entry");
240 elm_entry_input_panel_show(entry);
241 elm_object_focus_set(entry, EINA_TRUE);
243 __COMMON_FUNC_EXIT__;
246 void view_hidden_ap_popup_create(Evas_Object *win_main, const char *str_pkg_name)
248 __COMMON_FUNC_ENTER__;
250 Evas_Object *passpopup = NULL;
251 Evas_Object *genlist = NULL;
252 popup_btn_info_t popup_data;
254 if (win_main == NULL) {
255 INFO_LOG(UG_NAME_ERR, "Invalid argument passed.");
259 if (g_hidden_ap_popup_data != NULL) {
260 if (g_hidden_ap_popup_data->popup != NULL) {
261 evas_object_del(g_hidden_ap_popup_data->popup);
262 g_hidden_ap_popup_data->popup = NULL;
264 g_free(g_hidden_ap_popup_data);
267 g_hidden_ap_popup_data = g_try_new0(hiddep_ap_popup_data_t, 1);
268 if (g_hidden_ap_popup_data == NULL) {
269 INFO_LOG(UG_NAME_ERR, "Memory allocation error.");
273 /* Lets disable the scan updates so that the UI is not refreshed un necessarily */
274 wlan_manager_disable_scan_result_update();
276 memset(&popup_data, 0, sizeof(popup_data));
277 popup_data.title_txt = "IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK";
278 popup_data.btn1_cb = view_hidden_ap_popup_cancel_cb;
279 popup_data.btn1_data = NULL;
280 popup_data.btn1_txt = "IDS_WIFI_SK_CANCEL";
281 popup_data.btn2_cb = view_hidden_ap_popup_ok_cb;
282 popup_data.btn2_data = NULL;
283 popup_data.btn2_txt = "IDS_COM_BODY_FIND";
285 passpopup = common_utils_show_info_popup(win_main, &popup_data);
286 g_hidden_ap_popup_data->ok_btn = popup_data.btn;
287 elm_object_disabled_set(g_hidden_ap_popup_data->ok_btn, EINA_TRUE);
289 g_hidden_ap_popup_data->win = win_main;
290 g_hidden_ap_popup_data->str_pkg_name = str_pkg_name;
291 g_hidden_ap_popup_data->popup = passpopup;
293 genlist = elm_genlist_add(passpopup);
294 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
295 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
296 elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE);
298 g_entry_itc.item_style = "entry";
299 g_entry_itc.func.text_get = NULL;
300 g_entry_itc.func.content_get = _gl_entry_item_content_get;
301 g_entry_itc.func.state_get = NULL;
302 g_entry_itc.func.del = NULL;
304 Elm_Object_Item * entry_item = elm_genlist_item_append(genlist,
305 &g_entry_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE,
308 evas_object_smart_callback_add(passpopup, "show,finished",
309 popup_animation_finish_cb, entry_item);
311 evas_object_show(genlist);
312 elm_object_content_set(passpopup, genlist);
313 evas_object_show(passpopup);
315 __COMMON_FUNC_EXIT__;