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
20 #include "tg_settings_view.h"
21 #include "server_requests.h"
22 #include "tg_set_username_view.h"
23 #include "tg_edit_name_view.h"
24 #include "tg_db_wrapper.h"
26 static Evas_Object* get_image_from_path(const char* path, Evas_Object* parent)
30 Evas_Object *media_image = elm_image_add(parent);
31 elm_image_aspect_fixed_set(media_image, EINA_FALSE);
32 elm_image_file_set(media_image, path, NULL);
33 evas_object_size_hint_weight_set(media_image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
34 evas_object_size_hint_align_set(media_image, EVAS_HINT_FILL, EVAS_HINT_FILL);
35 evas_object_show(media_image);
39 static void on_chat_bg_clicked(void *data, Evas_Object *obj, void *event_info)
42 if (ad && ad->chat_background) {
44 if (strstr(ad->chat_background, ui_utils_get_resource(TG_CHAT_DEFAULT_BG)) != NULL) {
45 show_toast(ad, "Default background");
47 launch_app_control(ad, "image", ad->chat_background);
53 Evas_Object* on_settings_info_requested(void *data, Evas_Object *obj, const char *part)
55 Evas_Object *eo = NULL;
57 appdata_s* ad = evas_object_data_get(obj, "app_data");
60 if (!strcmp(part, "elm.swallow.icon.0")) {
61 char edj_path[PATH_MAX] = {0, };
62 app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
63 Evas_Object* user_status_layout = elm_layout_add(ad->nf);
64 elm_layout_file_set(user_status_layout, edj_path, "main_list_name_status_item");
65 evas_object_size_hint_weight_set(user_status_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
66 evas_object_size_hint_align_set(user_status_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
67 evas_object_show(user_status_layout);
69 char* first_text = NULL;
70 char buf[512] = {'\0'};
72 first_text = "Chat Background";
76 snprintf(buf, 512, "<font=Tizen:style=Bold color=#000000 align=left><font_size=40>%s</font_size></font>", first_text);
77 Evas_Object* name_lbl = elm_label_add(ad->nf);
78 elm_object_text_set(name_lbl, buf);
79 evas_object_size_hint_weight_set(name_lbl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
80 evas_object_size_hint_align_set(name_lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
81 evas_object_show(name_lbl);
82 elm_object_part_content_set(user_status_layout, "swallow.name", name_lbl);
83 return user_status_layout;
84 } else if (!strcmp(part, "elm.swallow.end")) {
85 if (!ad->chat_background) {
88 char *doc_thumb = NULL;
89 Evas_Object *chat_bg = NULL;
91 get_thumbnail_from_video_url(ad->chat_background, &doc_thumb);
93 chat_bg = get_image_from_path(doc_thumb, ad->nf);
95 chat_bg = get_image_from_path(ad->chat_background, ad->nf);
98 evas_object_data_set(ad->nf, "settings_chat_bg", chat_bg);
99 eo = elm_layout_add(obj);
100 elm_layout_theme_set(eo, "layout", "list/C/type.1", "default");
101 elm_layout_content_set(eo, "elm.swallow.content", chat_bg);
102 evas_object_smart_callback_add(chat_bg, "clicked", on_chat_bg_clicked, ad);
108 Evas_Object* on_user_phone_info_requested(void *data, Evas_Object *obj, const char *part)
110 Evas_Object *eo = NULL;
112 appdata_s* ad = evas_object_data_get(obj, "app_data");
113 if (strcmp(part, "elm.swallow.icon.0")) {
116 char edj_path[PATH_MAX] = {0, };
117 app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
118 Evas_Object* user_status_layout = elm_layout_add(ad->nf);
119 elm_layout_file_set(user_status_layout, edj_path, "main_list_name_status_item");
120 evas_object_size_hint_weight_set(user_status_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
121 evas_object_size_hint_align_set(user_status_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
122 evas_object_show(user_status_layout);
124 char* first_text = NULL;
125 char buf[512] = {'\0'};
127 if (ad->current_user_data->phone) {
128 first_text = ad->current_user_data->phone;
133 if (ad->current_user_data->username && strlen(ad->current_user_data->username) > 0 && strstr(ad->current_user_data->username, "_null_") == NULL) {
134 first_text = ad->current_user_data->username;
140 snprintf(buf, 512, "<font=Tizen:style=Bold color=#000000 align=left><font_size=40>%s</font_size></font>", first_text);
141 Evas_Object* name_lbl = elm_label_add(ad->nf);
142 elm_object_text_set(name_lbl, buf);
143 evas_object_size_hint_weight_set(name_lbl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
144 evas_object_size_hint_align_set(name_lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
145 evas_object_show(name_lbl);
148 evas_object_data_set(ad->nf, "settings_user_name_label", name_lbl);
150 elm_object_part_content_set(user_status_layout, "swallow.name", name_lbl);
152 char* second_text = NULL;
154 second_text = "Phone";
156 second_text = "Username";
158 char status_buf[126] = {'\0'};
159 sprintf(status_buf, "<font=Tizen:style=Normal color=#808080 align=left><font_size=35>%s</font_size></font>", second_text);
161 Evas_Object* status_lbl = elm_label_add(ad->nf);
162 elm_object_text_set(status_lbl, status_buf);
163 evas_object_size_hint_weight_set(status_lbl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
164 evas_object_size_hint_align_set(status_lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
165 evas_object_show(status_lbl);
167 elm_object_part_content_set(user_status_layout, "swallow.status", status_lbl);
168 return user_status_layout;
171 Evas_Object* on_user_info_requested(void *data, Evas_Object *obj, const char *part)
173 Evas_Object *eo = NULL;
174 appdata_s* ad = evas_object_data_get(obj, "app_data");
179 if (!strcmp(part, "elm.swallow.icon")) {
180 Evas_Object *profile_pic = NULL;
181 if (ad->current_user_data->photo_path && strlen(ad->current_user_data->photo_path) > 0 && strstr(ad->current_user_data->photo_path, "_null_") == NULL) {
182 profile_pic = get_image_from_path(ad->current_user_data->photo_path, ad->nf);
184 profile_pic = get_image_from_path(ui_utils_get_resource(DEFAULT_PROFILE_PIC), ad->nf);
186 char edj_path[PATH_MAX] = {0, };
187 app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
188 Evas_Object* user_pic_layout = elm_layout_add(ad->nf);
189 elm_layout_file_set(user_pic_layout, edj_path, "circle_layout");
190 evas_object_size_hint_weight_set(user_pic_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
191 evas_object_size_hint_align_set(user_pic_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
192 evas_object_show(user_pic_layout);
193 elm_object_part_content_set(user_pic_layout, "content", profile_pic);
194 evas_object_data_set(ad->nf, "user_profile_pic", profile_pic);
195 eo = elm_layout_add(obj);
196 elm_layout_theme_set(eo, "layout", "list/C/type.1", "default");
197 elm_layout_content_set(eo, "elm.swallow.content", user_pic_layout);
198 } else if (!strcmp(part, "elm.swallow.icon.0")) {
199 char edj_path[PATH_MAX] = {0, };
200 app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
201 Evas_Object* user_status_layout = elm_layout_add(ad->nf);
202 elm_layout_file_set(user_status_layout, edj_path, "main_list_name_status_item");
203 evas_object_size_hint_weight_set(user_status_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
204 evas_object_size_hint_align_set(user_status_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
205 evas_object_show(user_status_layout);
207 char* user_name = replace(ad->current_user_data->print_name, '_', " ");
208 char buf[512] = {'\0'};
209 snprintf(buf, 512, "<font=Tizen:style=Bold color=#FFFFFF align=left><font_size=40>%s</font_size></font>", user_name);
212 Evas_Object* name_lbl = elm_label_add(ad->nf);
213 elm_object_text_set(name_lbl, buf);
214 evas_object_size_hint_weight_set(name_lbl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
215 evas_object_size_hint_align_set(name_lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
216 evas_object_show(name_lbl);
218 elm_object_part_content_set(user_status_layout, "swallow.name", name_lbl);
220 char* user_status = i18n_get_text("IDS_TGRAM_SBODY_ONLINE");
221 char status_buf[126] = {'\0'};
222 sprintf(status_buf, "<font=Tizen:style=Normal color=#FFFFFF align=left><font_size=35>%s</font_size></font>", user_status);
224 Evas_Object* status_lbl = elm_label_add(ad->nf);
225 elm_object_text_set(status_lbl, status_buf);
226 evas_object_size_hint_weight_set(status_lbl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
227 evas_object_size_hint_align_set(status_lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
228 evas_object_show(status_lbl);
230 elm_object_part_content_set(user_status_layout, "swallow.status", status_lbl);
231 return user_status_layout;
238 void on_user_info_item_clicked(void *data, Evas_Object *obj, void *event_info)
240 Elm_Object_Item *it = event_info;
241 elm_genlist_item_selected_set(it, EINA_FALSE);
244 void on_phone_info_item_clicked(void *data, Evas_Object *obj, void *event_info)
246 Elm_Object_Item *it = event_info;
247 elm_genlist_item_selected_set(it, EINA_FALSE);
249 appdata_s* ad = evas_object_data_get(obj, "app_data");
251 launch_set_username_cb(ad);
255 void on_image_select_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
257 if (result != APP_CONTROL_RESULT_SUCCEEDED || !user_data) {
260 char** path_arryay = NULL;
261 int array_length = 0;
262 appdata_s *ad = (appdata_s*)user_data;
263 app_control_get_extra_data_array(reply, APP_CONTROL_DATA_SELECTED, &path_arryay, &array_length);
264 for (int i = 0 ; i < array_length ; i++) {
265 if (path_arryay[i]) {
266 show_loading_popup(ad);
267 send_set_profile_pic_request(ad, ad->service_client, ad->current_user_data->user_id.id, path_arryay[i]);
273 void on_image_request_option_selected_cb(void *data, Evas_Object *obj, void *event_info)
275 Evas_Object *popup = data;
277 Elm_Object_Item *item = event_info;
278 app_control_h app_control;
280 id = (int)elm_object_item_data_get(item);
281 int ret = app_control_create(&app_control);
282 appdata_s *ad = evas_object_data_get(popup, "app_data");
287 if (ret != APP_CONTROL_ERROR_NONE) {
288 show_toast(ad, "Error: Can not load image picker");
293 app_control_set_operation(app_control, APP_CONTROL_OPERATION_CREATE_CONTENT);
294 app_control_set_mime(app_control, "image/jpg");
295 app_control_send_launch_request(app_control, &on_image_select_result_cb, ad);
297 app_control_set_operation(app_control, APP_CONTROL_OPERATION_PICK);
298 app_control_set_mime(app_control, "image/*");
299 app_control_send_launch_request(app_control, &on_image_select_result_cb, ad);
301 app_control_destroy(app_control);
302 evas_object_del(popup);
305 char* on_camera_load_text_get_cb(void *data, Evas_Object *obj, const char *part)
309 return strdup(_("IDS_TGRAM_OPT_FROM_GALLERY_ABB2"));
311 return strdup(_("IDS_TGRAM_OPT_TAKE_PICTURE_ABB"));
315 void on_camera_button_clicked(void *data, Evas_Object *obj, void *event_info)
317 appdata_s* ad = data;
321 static Elm_Genlist_Item_Class itc;
323 Evas_Object *genlist;
326 Evas_Object *win = ad->win;
327 Elm_Object_Item *it = event_info;
328 elm_genlist_item_selected_set(it, EINA_FALSE);
330 popup = elm_popup_add(win);
331 elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
332 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL);
333 elm_object_part_text_set(popup, "title,text", i18n_get_text("IDS_TGRAM_HEADER_SELECT_IMAGE_ABB2"));
334 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
335 evas_object_data_set(popup, "app_data", ad);
337 genlist = elm_genlist_add(popup);
338 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
339 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
341 itc.item_style = "default";
342 itc.func.text_get = on_camera_load_text_get_cb;
343 itc.func.content_get = NULL;
344 itc.func.state_get = NULL;
347 for (i = 0; i < 2; i++) {
348 elm_genlist_item_append(genlist, &itc, (void *) i, NULL, ELM_GENLIST_ITEM_NONE, on_image_request_option_selected_cb, popup);
350 evas_object_show(genlist);
351 elm_object_content_set(popup, genlist);
352 evas_object_show(popup);
356 /**************************************************************************/
358 void on_chat_bg_select_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
360 if (result != APP_CONTROL_RESULT_SUCCEEDED || !user_data) {
363 char* file_path = NULL;
364 char** path_arryay = NULL;
365 int array_length = 0;
366 char *chat_bg = NULL;
367 appdata_s *ad = user_data;
368 app_control_get_extra_data_array(reply, APP_CONTROL_DATA_SELECTED, &path_arryay, &array_length);
370 for (int i = 0 ; i < array_length ; i++) {
371 file_path = path_arryay[i];
374 preference_set_string(TG_CHAT_BG_PREFERENCE, file_path);
375 preference_get_string(TG_CHAT_BG_PREFERENCE, &chat_bg);
377 if (ad->chat_background) {
378 free(ad->chat_background);
379 ad->chat_background = NULL;
383 ad->chat_background = strdup(chat_bg);
385 if (!ad->chat_background) {
386 ad->chat_background = strdup(ui_utils_get_resource(TG_CHAT_DEFAULT_BG));
387 preference_set_string(TG_CHAT_BG_PREFERENCE, ad->chat_background);
394 void on_chat_bg_change_option_selected_cb(void *data, Evas_Object *obj, void *event_info)
396 Evas_Object *popup = data;
398 app_control_h app_control;
400 Elm_Object_Item *item = event_info;
401 id = (int)elm_object_item_data_get(item);
402 int ret = app_control_create(&app_control);
404 appdata_s *ad = evas_object_data_get(popup, "app_data");
406 if (ret != APP_CONTROL_ERROR_NONE) {
407 show_toast(ad, "Error: Can not load image picker");
412 app_control_set_operation(app_control, APP_CONTROL_OPERATION_CREATE_CONTENT);
413 app_control_set_mime(app_control, "image/jpg");
414 app_control_send_launch_request(app_control, &on_chat_bg_select_result_cb, ad);
416 app_control_set_operation(app_control, APP_CONTROL_OPERATION_PICK);
417 app_control_set_mime(app_control, "image/*");
418 app_control_send_launch_request(app_control, &on_chat_bg_select_result_cb, ad);
421 app_control_destroy(app_control);
422 evas_object_del(popup);
425 char* on_chat_bg_load_text_get_cb(void *data, Evas_Object *obj, const char *part)
429 return strdup(_("IDS_TGRAM_OPT_FROM_GALLERY_ABB2"));
431 return strdup(_("IDS_TGRAM_OPT_TAKE_PICTURE_ABB"));
435 void on_settings_info_item_clicked(void *data, Evas_Object *obj, void *event_info)
437 Elm_Object_Item *it = event_info;
438 elm_genlist_item_selected_set(it, EINA_FALSE);
440 /*Evas_Object* cam_icon = data;*/
441 appdata_s* ad = evas_object_data_get(obj, "app_data");
442 static Elm_Genlist_Item_Class itc;
445 Evas_Object *genlist;
447 Evas_Object *win = ad->win;
449 popup = elm_popup_add(win);
450 elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
451 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL);
452 elm_object_part_text_set(popup, "title,text", i18n_get_text("IDS_TGRAM_HEADER_SELECT_IMAGE_ABB2"));
453 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
455 evas_object_data_set(popup, "app_data", ad);
457 box = elm_box_add(popup);
458 elm_box_horizontal_set(box, EINA_FALSE);
459 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
460 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
463 genlist = elm_genlist_add(box);
464 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
465 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
466 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
467 elm_scroller_content_min_limit(genlist, EINA_TRUE, EINA_TRUE);
469 itc.item_style = "default";
470 itc.func.text_get = on_chat_bg_load_text_get_cb;
471 itc.func.content_get = NULL;
472 itc.func.state_get = NULL;
475 for (i = 0; i < 2; i++) {
476 elm_genlist_item_append(genlist, &itc, (void *) i, NULL, ELM_GENLIST_ITEM_NONE, on_chat_bg_change_option_selected_cb, popup);
478 evas_object_show(genlist);
479 elm_box_pack_end(box, genlist);
480 elm_object_content_set(popup, box);
481 evas_object_show(popup);
484 char* _text_requested_cb(void *data, Evas_Object *obj, const char *part)
487 appdata_s* ad = evas_object_data_get(obj, "app_data");
488 char *user_name = NULL;
489 char *first_name = NULL;
490 char *last_name = NULL;
491 if (!strcmp(part, "elm.text.main.left.top") || !strcmp(part, "elm.text")) {
494 //return replace(ad->current_user_data->print_name, '_', " ");
495 first_name = ad->current_user_data->first_name;
496 last_name = ad->current_user_data->last_name;
499 if (!first_name || (first_name && strstr(first_name ,"null") != 0)) {
503 if (!first_name && !last_name) {
507 if (!last_name || (last_name && strstr(last_name ,"null") != 0)) {
510 int str_len = strlen(first_name) + strlen(" ") + strlen(last_name) + 1;
511 user_name = (char *)malloc(str_len);
512 snprintf(user_name, sizeof(user_name), "%s %s", first_name, last_name);
515 return strdup(i18n_get_text("IDS_TGRAM_OPT_SET_BACKGROUND_IMAGE_ABB"));
519 } else if (!strcmp(part, "elm.text.sub.left.bottom") || !strcmp(part, "elm.text.sub")) {
522 if (ad->current_user_data->online) {
523 return strdup(i18n_get_text("IDS_TGRAM_SBODY_ONLINE"));
525 return strdup("offine");
533 Evas_Object* _content_requested_cb(void *data, Evas_Object *obj, const char *part)
535 Evas_Object *eo = NULL;
536 if (!strcmp(part, "elm.icon.left") || !strcmp(part, "elm.icon.1") || !strcmp(part, "elm.swallow.icon")) {
537 appdata_s* ad = evas_object_data_get(obj, "app_data");
543 Evas_Object *profile_pic = NULL;
545 if (ad->current_user_data->photo_path && strlen(ad->current_user_data->photo_path) > 0 && strstr(ad->current_user_data->photo_path, "_null_") == NULL) {
546 profile_pic = get_image_from_path(ad->current_user_data->photo_path, ad->nf);
548 profile_pic = get_image_from_path(ui_utils_get_resource(DEFAULT_LIST_THUMB_SINGLE_PIC), ad->nf);
549 evas_object_color_set(profile_pic, 45, 165, 224, 255);
552 char edj_path[PATH_MAX] = {0, };
553 app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
554 Evas_Object* user_pic_layout = elm_layout_add(ad->nf);
555 elm_layout_file_set(user_pic_layout, edj_path, "search_circle_layout");
556 evas_object_size_hint_weight_set(user_pic_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
557 evas_object_size_hint_align_set(user_pic_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
558 evas_object_show(user_pic_layout);
559 elm_object_part_content_set(user_pic_layout, "content", profile_pic);
560 evas_object_data_set(ad->nf, "settings_user_profile_pic", profile_pic);
562 eo = elm_layout_add(obj);
563 elm_layout_theme_set(eo, "layout", "list/B/type.1", "default");
564 elm_layout_content_set(eo, "elm.swallow.content", user_pic_layout);
569 static void _cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
571 Evas_Object *popup = data;
572 evas_object_del(popup);
575 static void _logout_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
577 appdata_s *ad = data;
578 Evas_Object *popup = NULL;
580 popup = evas_object_data_del(obj, "popup");
582 evas_object_del(popup);
584 send_request_for_logout(ad, ad->service_client);
585 show_loading_popup(ad);
588 static void _create_logout_popup(appdata_s *ad)
591 Evas_Object *logout_btn;
595 popup = elm_popup_add(ad->win);
596 elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
597 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL);
598 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
599 elm_object_translatable_text_set(popup, "IDS_TGRAM_POP_USE_TELEGRAM_SEAMLESSLY_ACROSS_ANY_NUMBER_OF_DEVICES_MSG");
600 elm_object_part_text_set(popup, "title,text", i18n_get_text("IDS_TGRAM_OPT_LOG_OUT"));
603 logout_btn = elm_button_add(popup);
604 elm_object_style_set(logout_btn, "popup");
605 elm_object_translatable_text_set(logout_btn, "IDS_TGRAM_BUTTON_LOG_OUT_ABB2");
606 elm_object_part_content_set(popup, "button2", logout_btn);
607 evas_object_smart_callback_add(logout_btn, "clicked", _logout_btn_clicked_cb, ad);
608 evas_object_data_set(logout_btn, "popup", popup);
611 btn = elm_button_add(popup);
612 elm_object_style_set(btn, "popup");
613 elm_object_translatable_text_set(btn, "IDS_TGRAM_BUTTON_CANCEL_ABB5");
614 elm_object_part_content_set(popup, "button1", btn);
615 evas_object_smart_callback_add(btn, "clicked", _cancel_btn_clicked_cb, popup);
617 evas_object_show(popup);
620 static void _more_popup_rotate(void *data, Evas_Object *obj, void *event_info)
624 appdata_s *ad = data;
626 elm_win_screen_size_get(ad->win, NULL, NULL, &w, &h);
627 pos = elm_win_rotation_get(ad->win);
632 evas_object_move(ad->menu_popup, 0, w);
636 evas_object_move(ad->menu_popup, 0, h);
641 static void _ctxpopup_dismiss_cb(void *data, Evas_Object *obj, void *event_info)
643 appdata_s *ad = data;
644 evas_object_del(ad->menu_popup);
645 ad->menu_popup = NULL;
648 static void _ctxpopup_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
650 appdata_s *ad = data;
654 evas_object_smart_callback_del(ad->win, "rotation,changed", _more_popup_rotate);
655 if (ad->menu_popup) {
656 evas_object_smart_callback_del(ad->menu_popup, "dismissed", _ctxpopup_dismiss_cb);
657 evas_object_del(ad->menu_popup);
658 ad->menu_popup = NULL;
662 static void ctxpopup_profile_select_cb(void *data, Evas_Object *obj, void *event_info)
664 appdata_s *ad = data;
668 _ctxpopup_dismiss_cb(ad, NULL, NULL);
669 on_camera_button_clicked(ad, obj, event_info);
672 static void ctxpopup_edit_name_select_cb(void *data, Evas_Object *obj, void *event_info)
674 appdata_s *ad = data;
678 _ctxpopup_dismiss_cb(ad, NULL, NULL);
679 launch_editname_screen(ad);
682 static void ctxpopup_logout_select_cb(void *data, Evas_Object *obj, void *event_info)
684 appdata_s *ad = data;
688 _ctxpopup_dismiss_cb(ad, NULL, NULL);
689 _create_logout_popup(ad);
692 static void _create_more_popup(void *data, Evas_Object *obj, void *event_info)
695 Evas_Object *ctxpopup;
696 appdata_s *ad = data;
698 if (!ad || ad->loading_popup || ad->current_app_state != TG_SETTINGS_SCREEN_STATE)
701 ctxpopup = elm_ctxpopup_add(ad->nf);
702 elm_object_style_set(ctxpopup, "more/default");
703 elm_ctxpopup_auto_hide_disabled_set(ctxpopup, EINA_TRUE);
704 eext_object_event_callback_add(ctxpopup, EEXT_CALLBACK_BACK, eext_ctxpopup_back_cb, NULL);
705 eext_object_event_callback_add(ctxpopup, EEXT_CALLBACK_MORE, eext_ctxpopup_back_cb, NULL);
706 evas_object_event_callback_add(ctxpopup, EVAS_CALLBACK_DEL, _ctxpopup_del_cb, ad);
708 evas_object_smart_callback_add(ctxpopup, "dismissed", _ctxpopup_dismiss_cb, ad);
709 evas_object_smart_callback_add(ad->win, "rotation,changed", _more_popup_rotate, ad);
711 it = elm_ctxpopup_item_append(ctxpopup, i18n_get_text("IDS_TGRAM_OPT_SET_PROFILE_PICTURE_ABB"), NULL, ctxpopup_profile_select_cb, ad);
712 //it = elm_ctxpopup_item_append(ctxpopup, i18n_get_text("IDS_TGRAM_OPT_EDIT_NAME"), NULL, ctxpopup_edit_name_select_cb, ad);
713 it = elm_ctxpopup_item_append(ctxpopup, i18n_get_text("IDS_TGRAM_OPT_LOG_OUT"), NULL, ctxpopup_logout_select_cb, ad);
714 //elm_object_item_domain_text_translatable_set(it, SETTING_PACKAGE, EINA_TRUE);
715 elm_ctxpopup_direction_priority_set(ctxpopup, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
718 evas_object_del(ad->menu_popup);
720 ad->menu_popup = ctxpopup;
721 _more_popup_rotate(ad, NULL, NULL);
722 evas_object_show(ctxpopup);
725 static Eina_Bool _pop_cb(void *data, Elm_Object_Item *it)
727 appdata_s* ad = data;
731 eext_object_event_callback_del(ad->nf, EEXT_CALLBACK_MORE, _create_more_popup);
735 void refresh_settings_screen(appdata_s* ad)
739 Evas_Object *list = evas_object_data_get(ad->nf, "settings_list");
741 elm_genlist_realized_items_update(list);
744 static void on_message_back_button_clicked(void *data, Evas_Object *obj, void *event_info)
746 appdata_s *ad = data;
750 app_nf_back_cb(data, obj, event_info);
753 void launch_settings_screen(appdata_s* ad)
758 ad->current_app_state = TG_SETTINGS_SCREEN_STATE;
760 if (!ad->current_user_data) {
761 load_registered_user_data(ad);
764 static Elm_Genlist_Item_Class itc;
765 Evas_Object *list = elm_genlist_add(ad->nf);
766 elm_list_mode_set(list, ELM_LIST_COMPRESS);
767 elm_genlist_mode_set(list, ELM_LIST_COMPRESS);
768 evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
769 evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
770 evas_object_show(list);
772 evas_object_data_set(list, "app_data", ad);
774 evas_object_data_set(ad->nf, "settings_list", list);
776 itc.item_style = "type1";
777 itc.func.text_get = _text_requested_cb;
778 itc.func.content_get = _content_requested_cb;
779 itc.func.state_get = NULL;
782 elm_genlist_item_append(list, &itc, (void*) 0, NULL, ELM_GENLIST_ITEM_NONE, on_camera_button_clicked, (void*) ad);
783 elm_genlist_item_append(list, &itc, (void*) 1, NULL, ELM_GENLIST_ITEM_NONE, on_settings_info_item_clicked, (void*)1);
785 Elm_Object_Item* navi_item = elm_naviframe_item_push(ad->nf, i18n_get_text("IDS_TGRAM_OPT_SETTINGS"), NULL, NULL, list, NULL);
787 Evas_Object *back_btn = create_button(ad->nf, "naviframe/back_btn/default", NULL);
788 evas_object_smart_callback_add(back_btn, "clicked", on_message_back_button_clicked, ad);
789 elm_object_item_part_content_set(navi_item, "elm.swallow.prev_btn", back_btn);
791 elm_naviframe_item_pop_cb_set(navi_item, _pop_cb, ad);
792 eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_MORE, _create_more_popup, ad);