2 This file is part of Telegram application for tizen
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with this library; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 #include "tg_registration.h"
20 #include "tg_db_manager.h"
21 #include "server_requests.h"
23 #include "tg_country_selection_view.h"
25 static void on_text_change_enable_ok_button(void *data, Evas_Object *obj, void *event_info)
31 Evas_Object* country_name_btn = evas_object_data_get(ad->nf, "country_name_btn");
32 Evas_Object* done_btn = evas_object_data_get(ad->nf, "reg_done_btn");
33 Evas_Object *layout = NULL;
37 if (!country_name_btn || !done_btn)
40 snprintf(buf, sizeof(buf), "%s", elm_object_text_get(obj));
41 snprintf(code_buf, sizeof(code_buf), "%s", elm_object_text_get(country_name_btn));
43 layout = evas_object_data_get(ad->nf, "regi,layout");
44 if (strcasecmp(buf, "") != 0)
45 elm_object_signal_emit(layout, "show", "delete");
47 elm_object_signal_emit(layout, "hide", "delete");
49 if (strlen(buf) >= MIN_NUM_LENGTH && strcasecmp(code_buf, "Select your country") != 0)
50 elm_object_disabled_set(done_btn, EINA_FALSE);
52 elm_object_disabled_set(done_btn, EINA_TRUE);
55 Eina_Bool on_login_timer_expired(void *data)
59 return ECORE_CALLBACK_CANCEL;
61 hide_loading_popup(ad);
62 send_request_for_restart_server(ad, ad->service_client);
63 return ECORE_CALLBACK_CANCEL;
67 static void on_naviframe_done_clicked(void *data, Evas_Object *obj, void *event_info)
73 Evas_Object* country_name_btn = evas_object_data_get(ad->nf, "country_name_btn");
74 Evas_Object* country_code_btn = evas_object_data_get(ad->nf, "country_code_btn");
75 Evas_Object* pn_number_entry = evas_object_data_get(ad->nf, "pn_number_entry");
76 char* phone_num = elm_entry_markup_to_utf8(elm_object_text_get(pn_number_entry));
77 char* cunt_code = elm_entry_markup_to_utf8(elm_object_text_get(country_code_btn));
80 if (!country_name_btn || !country_code_btn || !pn_number_entry)
83 snprintf(code_buf, sizeof(code_buf), "%s", elm_object_text_get(country_name_btn));
85 if (strlen(phone_num) >= MIN_NUM_LENGTH && strcasecmp(code_buf, "Select your country") != 0 && ad->is_server_ready) {
86 char phone_number[256];
87 snprintf(phone_number, sizeof(phone_number), "%s%s", cunt_code, phone_num);
88 ad->phone_number = strdup(phone_number);
89 send_request_for_registration(ad, ad->service_client, ad->phone_number, EINA_TRUE);
91 if (!ad->is_waiting_for_phone_num)
92 ad->login_timer = ecore_timer_add(60, on_login_timer_expired, ad);
93 show_loading_popup(ad);
96 show_toast(ad, i18n_get_text("IDS_NFC_POP_INITIALISING_PLEASE_WAIT_ING"));
102 static void on_naviframe_cancel_clicked(void *data, Evas_Object *obj, void *event_info)
104 appdata_s* ad = data;
105 elm_win_lower(ad->win);
109 void country_name_selected_cb(appdata_s *ad, Eina_List *count_name_list, Eina_List *country_code_list)
111 int country_code_idx;
112 Evas_Object* country_name_btn;
113 Evas_Object* country_code_btn;
114 Evas_Object* pn_number_entry;
115 Evas_Object* done_btn;
119 const char *number_text;
121 if (!ad || !count_name_list || !country_code_list)
124 country_name_btn = evas_object_data_get(ad->nf, "country_name_btn");
125 country_code_btn = evas_object_data_get(ad->nf, "country_code_btn");
126 pn_number_entry = evas_object_data_get(ad->nf, "pn_number_entry");
127 country_name = eina_list_nth(count_name_list, ad->selected_country_id);
129 if (ad->country_codes_list != country_code_list) {
130 country_code_idx = (int)eina_list_nth(country_code_list, ad->selected_country_id);
131 country_code = eina_list_nth(ad->country_codes_list, country_code_idx);
133 country_code = eina_list_nth(country_code_list, ad->selected_country_id);
136 elm_object_text_set(country_name_btn, country_name);
138 snprintf(temp_str, sizeof(temp_str), "<align=center>%s<align>", country_code);
139 elm_object_text_set(country_code_btn, temp_str);
141 done_btn = evas_object_data_get(ad->nf, "reg_done_btn");
142 number_text = elm_object_text_get(pn_number_entry);
144 elm_object_focus_set(pn_number_entry, EINA_TRUE);
146 if (number_text && strlen(number_text) >= MIN_NUM_LENGTH)
147 elm_object_disabled_set(done_btn, EINA_FALSE);
149 elm_object_disabled_set(done_btn, EINA_TRUE);
152 static void delete_btn_clicked(void *data, Evas_Object *obj, void *event_info)
154 Evas_Object *pn_number_entry = data;
155 elm_object_text_set(pn_number_entry, "");
158 static void on_country_name_list_clicked(void *data, Evas_Object *obj, void *event_info)
160 appdata_s *ad = data;
161 launch_country_selection_view(ad);
164 void launch_registration_cb(appdata_s *ad)
169 launch_tg_server(ad);
170 ad->current_app_state = TG_REGISTRATION_STATE;
171 eina_list_free(ad->country_codes_list);
172 eina_list_free(ad->country_names_list);
173 free(ad->country_code_buffer);
175 load_list_of_countries(ad);
177 char edj_path[PATH_MAX] = {0, };
178 app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
180 Evas_Object* scroller = elm_scroller_add(ad->nf);
181 elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
182 elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
184 Evas_Object* layout = elm_layout_add(ad->nf);
185 elm_layout_file_set(layout, edj_path, "registration_screen");
186 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
187 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
188 evas_object_show(layout);
189 elm_object_content_set(scroller, layout);
190 evas_object_data_set(ad->nf, "regi,layout", layout);
192 Evas_Object* country_name_btn = elm_button_add(layout);
193 elm_object_text_set(country_name_btn, "Select your country");
194 elm_object_style_set(country_name_btn, "dropdown");
195 evas_object_size_hint_weight_set(country_name_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
196 evas_object_size_hint_align_set(country_name_btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
197 evas_object_smart_callback_add(country_name_btn, "clicked", on_country_name_list_clicked, ad);
198 elm_object_part_content_set(layout, "country_name", country_name_btn);
200 evas_object_data_set(ad->nf, "country_name_btn", (void*)country_name_btn);
202 Evas_Object* country_code_btn = elm_entry_add(layout);
203 elm_object_text_set(country_code_btn, "<align=center>--<align>");
204 evas_object_size_hint_weight_set(country_code_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
205 evas_object_size_hint_align_set(country_code_btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
206 elm_entry_single_line_set(country_code_btn, EINA_TRUE);
207 elm_entry_editable_set(country_code_btn, EINA_FALSE);
208 evas_object_show(country_code_btn);
209 elm_object_part_content_set(layout, "country_code", country_code_btn);
211 evas_object_data_set(ad->nf, "country_code_btn", (void*)country_code_btn);
213 Evas_Object* pn_number_entry = elm_entry_add(layout);
214 elm_object_part_text_set(pn_number_entry, "elm.guide", i18n_get_text("IDS_TGRAM_BODY_PHONE_NUMBER_ABB"));
215 elm_entry_cursor_end_set(pn_number_entry);
216 evas_object_size_hint_weight_set(pn_number_entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
217 evas_object_size_hint_align_set(pn_number_entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
218 elm_entry_single_line_set(pn_number_entry, EINA_TRUE);
219 elm_entry_scrollable_set(pn_number_entry, EINA_FALSE);
220 elm_entry_cnp_mode_set(pn_number_entry, ELM_CNP_MODE_NO_IMAGE);
221 elm_entry_context_menu_disabled_set(pn_number_entry, EINA_TRUE);
222 elm_entry_text_style_user_push(pn_number_entry, "DEFAULT='color=#000000'");
223 evas_object_show(pn_number_entry);
224 elm_object_part_content_set(layout, "phone_number_entry", pn_number_entry);
226 evas_object_data_set(ad->nf, "pn_number_entry", (void*)pn_number_entry);
228 limit_filter_data.max_char_count = MAX_NUM_LENGTH;
230 elm_entry_markup_filter_append(pn_number_entry, elm_entry_filter_limit_size, &limit_filter_data);
231 elm_entry_markup_filter_append(pn_number_entry, elm_entry_filter_accept_set, &accept_set);
233 Ecore_IMF_Context *imf_context;
234 imf_context = elm_entry_imf_context_get(pn_number_entry);
235 ecore_imf_context_input_panel_layout_set(imf_context, ECORE_IMF_INPUT_PANEL_LAYOUT_PHONENUMBER);
236 evas_object_smart_callback_add(pn_number_entry, "changed", on_text_change_enable_ok_button, ad);
238 Evas_Object* delete_btn = elm_button_add(layout);
239 elm_object_style_set(delete_btn, "icon_expand_delete");
240 evas_object_size_hint_weight_set(delete_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
241 evas_object_size_hint_align_set(delete_btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
242 evas_object_size_hint_max_set(delete_btn, 80, 80);
243 evas_object_smart_callback_add(delete_btn, "clicked", delete_btn_clicked, pn_number_entry);
244 elm_object_part_content_set(layout, "phone_number_delete", delete_btn);
245 evas_object_show(delete_btn);
247 elm_object_part_text_set(layout, "text_display", i18n_get_text("IDS_TGRAM_BODY_CONFIRM_YOUR_COUNTRY_CODE_MSG"));
249 Elm_Object_Item* navi_item = elm_naviframe_item_push(ad->nf, i18n_get_text("IDS_TGRAM_HEADER_ENTER_NUMBER_ABB"), NULL, NULL, scroller, NULL);
251 Evas_Object *cancel_btn = elm_button_add(ad->nf);
252 elm_object_style_set(cancel_btn, "naviframe/title_left");
253 elm_object_text_set(cancel_btn, i18n_get_text("IDS_TGRAM_ACBUTTON_CANCEL_ABB"));
254 evas_object_smart_callback_add(cancel_btn, "clicked", on_naviframe_cancel_clicked, ad);
256 Evas_Object *done_btn = elm_button_add(ad->nf);
257 elm_object_style_set(done_btn, "naviframe/title_right");
258 elm_object_text_set(done_btn, i18n_get_text("IDS_TGRAM_ACBUTTON_DONE_ABB"));
259 evas_object_smart_callback_add(done_btn, "clicked", on_naviframe_done_clicked, ad);
262 elm_object_item_part_content_set(navi_item, "title_left_btn", cancel_btn);
263 elm_object_item_part_content_set(navi_item, "title_right_btn", done_btn);
265 evas_object_data_set(ad->nf, "reg_done_btn", (void*)done_btn);
266 evas_object_data_set(ad->nf, "reg_cancel_btn", (void*)cancel_btn);
267 elm_object_disabled_set(done_btn, EINA_TRUE);