Implemented chat selection view 31/49731/1
authorpolu.sandeep <polu.sandeep@samsung.com>
Mon, 19 Oct 2015 12:52:53 +0000 (21:52 +0900)
committerpolu.sandeep <polu.sandeep@samsung.com>
Mon, 19 Oct 2015 12:52:53 +0000 (21:52 +0900)
Change-Id: I43a91042afa60544dac24bab67bea08e461fcb00

TelegramTizen/inc/tg_main_item_deletion_view.h [new file with mode: 0644]
TelegramTizen/res/edje/telegram_init_screen.edc
TelegramTizen/src/telegramtizen.c
TelegramTizen/src/tg_main_item_deletion_view.c [new file with mode: 0644]
TelegramTizen/src/tg_search_peer_view.c
TelegramTizen/src/tg_user_main_view.c
TelegramTizen/tg_utils/tg_common.c
TelegramTizen/tg_utils/tg_common.h
tg-engine-service/src/tg-engine-service.c
tg-engine-service/tg_engine/tg_engine.c
tg-engine-service/tg_engine/tg_engine.h

diff --git a/TelegramTizen/inc/tg_main_item_deletion_view.h b/TelegramTizen/inc/tg_main_item_deletion_view.h
new file mode 100644 (file)
index 0000000..d9a7ceb
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * tg_main_item_deletion_view.h
+ *
+ *  Created on: Oct 19, 2015
+ *      Author: sandeep
+ */
+
+#ifndef TG_MAIN_ITEM_DELETION_VIEW_H_
+#define TG_MAIN_ITEM_DELETION_VIEW_H_
+
+
+#include "tg_common.h"
+
+extern void launch_main_item_deletion_view_cb(appdata_s* ad);
+
+
+#endif /* TG_MAIN_ITEM_DELETION_VIEW_H_ */
index dc1af3b..578f629 100644 (file)
@@ -113,9 +113,6 @@ collections {
                } \
        }
 
-
-
-
        images {
                image: "camera_btn_gallery_mask.png" COMP;
                image: "telegram_date_divider.#.png" COMP;
@@ -814,8 +811,8 @@ collections {
             precise_is_inside: 1;
             description {
                 state: default 0.0;
-               rel1.relative: 0.0 0.05;
-               rel2.relative: 1.0 0.95;
+               rel1.relative: 0.0 0.08;
+               rel2.relative: 1.0 0.92;
                color: 250 250 250 0;
             }
          }
@@ -825,8 +822,8 @@ collections {
             precise_is_inside: 1;
             description { 
                state: default 0.0;
-               rel1.relative: 0.0 0.05;
-               rel2.relative: 1.0 0.95;
+               rel1.relative: 0.0 0.08;
+               rel2.relative: 1.0 0.92;
                image.normal: camera_btn_gallery_mask.png;
             }
          }
@@ -1886,7 +1883,7 @@ group
             type: SWALLOW;            
             description { 
                state: default 0.0;
-               min: 0 130;
+               min: 0 135;
                rel1.relative: 0.0 0.0;
                rel2.relative: 1.0 1.0;
                color: 0 0 0 0;
@@ -2996,4 +2993,53 @@ group
        }       
        }
 
+       group { 
+         name: "search_circle_layout";
+      parts {
+          part { 
+            name: masking_bg;
+            type: RECT;
+            precise_is_inside: 1;
+            description {
+                state: default 0.0;
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 1.0;
+               color: 250 250 250 0;
+            }
+         }
+         part { 
+            name: masking;
+            type: IMAGE;
+            precise_is_inside: 1;
+            description { 
+               state: default 0.0;
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 1.0;
+               image.normal: camera_btn_gallery_mask.png;
+            }
+         }
+         part { 
+            name: content_bg;
+            type: RECT;
+            clip_to: masking;
+            description {
+                state: default 0.0;
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 1.0;
+               color: 250 250 250 0;
+            }
+         }
+         part { 
+            name: content;
+            type: SWALLOW;
+            clip_to: masking;
+            description {
+                state: default 0.0;
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 1.0;
+            }
+         }
+      }
+    }
+
 }
index d9e0632..3dafa96 100644 (file)
@@ -1347,7 +1347,6 @@ static int _on_service_client_msg_received_cb(void *data, bundle *const rec_msg)
                        return SVC_RES_OK;
                }
 
-
                // update profile pic if buddy list view is present.
                if(user_id == app->user_id.id) {
                        // registerd user.
@@ -2563,7 +2562,7 @@ void app_nf_back_cb(void *data, Evas_Object *obj, void *event_info)
                        ad->buddy_in_cahtting_data = NULL;
                        ad->peer_in_cahtting_data = NULL;
                        elm_naviframe_item_pop(ad->nf);
-                       create_floating_button(ad);
+                       show_floating_button(ad);
                        ad->current_app_state = TG_USER_MAIN_VIEW_STATE;
                        break;
                case TG_SELECT_BUDDY_VIEW:
@@ -2583,12 +2582,13 @@ void app_nf_back_cb(void *data, Evas_Object *obj, void *event_info)
                        elm_naviframe_item_pop(ad->nf);
                        ad->current_app_state = TG_CHAT_MESSAGING_VIEW_STATE;
                        break;
+               case TG_USER_MAIN_VIEW_SELECTION_STATE:
                case TG_PEER_SEARCH_VIEW_STATE:
                case TG_START_MESSAGING_VIEW_STATE:
                case TG_SETTINGS_SCREEN_STATE:
                        elm_naviframe_item_pop(ad->nf);
                        ad->current_app_state = TG_USER_MAIN_VIEW_STATE;
-                       create_floating_button(ad);
+                       show_floating_button(ad);
                        //evas_object_show(ad->panel);
                        //elm_panel_hidden_set(ad->panel, EINA_FALSE);
                        break;
diff --git a/TelegramTizen/src/tg_main_item_deletion_view.c b/TelegramTizen/src/tg_main_item_deletion_view.c
new file mode 100644 (file)
index 0000000..3d5acf1
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+ * tg_main_item_deletion_view.c
+ *
+ *  Created on: Oct 19, 2015
+ *      Author: sandeep
+ */
+
+
+#include "tg_main_item_deletion_view.h"
+
+static Evas_Object* create_image_object_from_file(const char *icon_name, Evas_Object *parent)
+{
+       Evas_Object *icon = elm_image_add(parent);
+       evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_image_file_set(icon, icon_name, NULL);
+       evas_object_show(icon);
+       return icon;
+}
+
+static Evas_Object* create_check(Evas_Object *parent)
+{
+       Evas_Object *check;
+       check = elm_check_add(parent);
+       return check;
+}
+
+char* on_mainlist_title_requested(void *data, Evas_Object *obj, const char *part)
+{
+
+       int org_id = (int) data;
+       if (org_id == 0) {
+               if (!strcmp(part,"elm.text.main.left.top") || !strcmp(part,"elm.text")){
+                       return strdup(i18n_get_text("IDS_TGRAM_MBODY_SELECT_ALL"));
+               }
+               return NULL;
+       }
+
+       int id = org_id - 1;
+
+       appdata_s* ad = evas_object_data_get(obj, "app_data");
+
+       if (ad->main_list == NULL || eina_list_count(ad->main_list) <= 0) {
+               return NULL;
+       }
+       tg_main_list_item_s* item = eina_list_nth(ad->main_list, id);
+       if (!item) {
+               return NULL;
+       }
+       if (!strcmp(part,"elm.text.main.left.top") || !strcmp(part,"elm.text")){
+               char *full_name = replace(item->peer_print_name, '_', " ");
+               return full_name;
+       } else if (!strcmp(part, "elm.text.sub.left.bottom") || !strcmp(part,"elm.text.sub")) {
+               char* org_msg = NULL;
+               if (item->last_message) {
+                       org_msg = item->last_message;
+               } else {
+                       org_msg = "";
+               }
+               return strdup(org_msg);
+       } else {
+               return NULL;
+       }
+}
+
+Evas_Object* on_mainlist_content_requested(void *data, Evas_Object *obj, const char *part)
+{
+       int org_id = (int) data;
+
+       if (!strcmp("elm.swallow.end", part)) {
+               return create_check(obj);
+       }
+
+       if (org_id == 0) {
+               return NULL;
+       }
+
+       int id = org_id - 1;
+
+       appdata_s* ad = evas_object_data_get(obj, "app_data");
+
+       if (ad->main_list == NULL || eina_list_count(ad->main_list) <= 0) {
+               return NULL;
+       }
+       tg_main_list_item_s* item = eina_list_nth(ad->main_list, id);
+       if (!item) {
+               return NULL;
+       }
+
+
+       Evas_Object *eo = NULL;
+       if (!strcmp(part, "elm.icon.left") || !strcmp(part, "elm.icon.1") || !strcmp(part, "elm.swallow.icon")) {
+               //if (item->profile_pic == NULL) {
+                       Evas_Object *profile_pic = NULL;
+                       if (item->profile_pic_path && strcmp(item->profile_pic_path, "") != 0) {
+                               profile_pic = elm_image_add(obj);
+                               evas_object_size_hint_weight_set(profile_pic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                               evas_object_size_hint_align_set(profile_pic, EVAS_HINT_FILL, EVAS_HINT_FILL);
+                               elm_object_focus_set(profile_pic, EINA_FALSE);
+
+                               Eina_Bool is_success = elm_image_file_set(profile_pic, item->profile_pic_path, NULL);
+
+                               if (!is_success) {
+                                       if (item->peer_type == TGL_PEER_USER) {
+                                               profile_pic = create_image_object_from_file(ui_utils_get_resource(DEFAULT_LIST_THUMB_SINGLE_PIC), obj);
+                                               // send download request again To-Do
+                                       } else if (item->peer_type == TGL_PEER_CHAT) {
+                                               profile_pic = create_image_object_from_file(ui_utils_get_resource(DEFAULT_LIST_THUMB_MULTI_PIC), obj);
+                                               // send download request again To-Do
+                                       } else {
+
+                                       }
+                                       evas_object_color_set(profile_pic, 45, 165, 224, 255);
+                               }
+                               evas_object_show(profile_pic);
+                       } else {
+
+                               if (item->peer_type == TGL_PEER_USER) {
+                                       profile_pic = create_image_object_from_file(ui_utils_get_resource(DEFAULT_LIST_THUMB_SINGLE_PIC), obj);
+                               } else if (item->peer_type == TGL_PEER_CHAT) {
+                                       profile_pic = create_image_object_from_file(ui_utils_get_resource(DEFAULT_LIST_THUMB_MULTI_PIC), obj);
+                               } else {
+
+                               }
+                               evas_object_color_set(profile_pic, 45, 165, 224, 255);
+                       }
+               //}
+               char edj_path[PATH_MAX] = {0, };
+               app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
+               Evas_Object* user_pic_layout = elm_layout_add(ad->nf);
+               elm_layout_file_set(user_pic_layout, edj_path, "search_circle_layout");
+               evas_object_size_hint_weight_set(user_pic_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(user_pic_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_show(user_pic_layout);
+               elm_object_part_content_set(user_pic_layout, "content", profile_pic);
+
+               eo = elm_layout_add(obj);
+               elm_layout_theme_set(eo, "layout", "list/B/type.2", "default");
+               elm_layout_content_set(eo, "elm.swallow.content", user_pic_layout);
+       }
+       return eo;
+}
+
+
+void launch_main_item_deletion_view_cb(appdata_s* ad)
+{
+       if (!ad)
+               return;
+
+       ad->current_app_state = TG_USER_MAIN_VIEW_SELECTION_STATE;
+       delete_floating_button(ad);
+       ad->is_tg_initilized = EINA_TRUE;
+       char edj_path[PATH_MAX] = {0, };
+       app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
+
+       Evas_Object* scroller = elm_scroller_add(ad->nf);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+       elm_scroller_policy_set(scroller,ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+
+       Evas_Object* layout = elm_layout_add(ad->nf);
+       elm_layout_file_set(layout, edj_path, "user_main_screen_new");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(layout);
+       elm_object_content_set(scroller, layout);
+
+       Evas_Object *buddy_list = NULL;
+       Evas_Object* bg_box = elm_box_add(layout);
+       evas_object_size_hint_weight_set(bg_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(bg_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(bg_box);
+       elm_object_part_content_set(layout, "main_box", bg_box);
+
+       if (ad->main_list == NULL || eina_list_count(ad->main_list) <= 0) {
+               return;
+       } else {
+               int i;
+               static Elm_Genlist_Item_Class itc;
+               buddy_list = elm_genlist_add(ad->nf);
+               elm_list_mode_set(buddy_list, ELM_LIST_COMPRESS);
+               elm_genlist_mode_set(buddy_list, ELM_LIST_COMPRESS);
+               evas_object_size_hint_weight_set(buddy_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(buddy_list, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_data_set(buddy_list, "app_data", ad);
+               elm_genlist_homogeneous_set(buddy_list, EINA_TRUE);
+
+               itc.item_style = "type1";
+               itc.func.text_get = on_mainlist_title_requested;
+               itc.func.content_get = on_mainlist_content_requested;
+               itc.func.state_get = NULL;
+               itc.func.del = NULL;
+
+               int size = eina_list_count(ad->main_list);
+               if(size > 0) {
+                       for (i = 0; i <= size; i++) {
+                               elm_genlist_item_append(buddy_list, &itc, (void *) i, NULL, ELM_GENLIST_ITEM_NONE, NULL, (void*) i);
+                       }
+               } else {
+                       i = 1;
+                       elm_genlist_item_append(buddy_list, &itc, (void *) i, NULL, ELM_GENLIST_ITEM_NONE, NULL, (void*) i);
+               }
+               evas_object_show(buddy_list);
+               elm_box_pack_end(bg_box, buddy_list);
+       }
+       evas_object_data_set(ad->nf, "main_list_box", bg_box);
+       elm_naviframe_item_push(ad->nf, i18n_get_text("IDS_TGRAM_HEADER_SELECT_CHATS_ABB"), NULL, NULL, scroller, NULL);
+
+}
+
index 284004f..4803e4c 100755 (executable)
@@ -90,12 +90,6 @@ char* on_peer_list_name_requested(void *data, Evas_Object *obj, const char *part
        if (!strcmp(part,"elm.text.main.left.top") || !strcmp(part,"elm.text")){
                char *full_name = replace(user->print_name, '_', " ");
                return full_name;
-#if 0
-               char temp_full_name[256];
-               sprintf(temp_full_name, "<font=Tizen:style=Bold color=#000000 align=center><font_size=30>%s</font_size></font>", full_name);
-               free(full_name);
-               return strdup(temp_full_name);
-#endif
        } else if (!strcmp(part, "elm.text.sub.left.bottom") || !strcmp(part,"elm.text.sub")) {
                char* last_seen = get_budy_state(ad, user->user_id.id);
                if (last_seen) {
@@ -127,25 +121,6 @@ Evas_Object* _on_command_name_image_requested(void *data, Evas_Object *obj, cons
 
        if (!strcmp(part, "elm.icon.left") || !strcmp(part, "elm.icon.1") || !strcmp(part, "elm.swallow.icon")  ) {
 
-
-#if 0
-               Evas_Object *profile_pic = create_image_object_from_file(ui_utils_get_resource(contact_screen_command_item_list[row].image_path), obj);
-               evas_object_color_set(profile_pic, 155, 216, 226, 255);
-
-               char edj_path[PATH_MAX] = {0, };
-               app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
-
-               Evas_Object* user_pic_layout = elm_layout_add(obj);
-               elm_layout_file_set(user_pic_layout, edj_path, "circle_layout");
-               evas_object_size_hint_weight_set(user_pic_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(user_pic_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
-               evas_object_show(user_pic_layout);
-               elm_object_part_content_set(user_pic_layout, "content", profile_pic);
-
-               eo = elm_layout_add(obj);
-               elm_layout_theme_set(eo, "layout", "list/B/type.2", "default");
-               elm_layout_content_set(eo, "elm.swallow.content", user_pic_layout);
-#else
                Evas_Object *profile_pic = NULL;
                profile_pic = create_image_object_from_file(ui_utils_get_resource(contact_screen_command_item_list[row].image_path), obj);
                //evas_object_color_set(profile_pic, 45, 165, 224, 255);
@@ -159,12 +134,10 @@ Evas_Object* _on_command_name_image_requested(void *data, Evas_Object *obj, cons
                evas_object_show(user_pic_layout);
                elm_object_part_content_set(user_pic_layout, "content", profile_pic);
 
-
-
                eo = elm_layout_add(obj);
                elm_layout_theme_set(eo, "layout", "list/B/type.2", "default");
                elm_layout_content_set(eo, "elm.swallow.content", user_pic_layout);
-#endif
+
        }
        return eo;
 }
@@ -180,39 +153,6 @@ Evas_Object* on_peer_list_image_requested(void *data, Evas_Object *obj, const ch
 {
        Evas_Object *eo = NULL;
        if (!strcmp(part, "elm.icon.left") || !strcmp(part, "elm.icon.1") || !strcmp(part, "elm.swallow.icon")  ) {
-#if 0
-               int id = (int) data;
-               appdata_s* ad = evas_object_data_get(obj, "app_data");
-               int size = eina_list_count(ad->search_peer_list);
-               if (size <= 0) {
-                       return eo;
-               }
-               user_data_with_pic_s* item = eina_list_nth(ad->search_peer_list, id);
-               tg_peer_info_s* user = item->use_data;
-               Evas_Object *profile_pic = NULL;
-               if (user->photo_path && strcmp(user->photo_path, "") != 0) {
-                       profile_pic = create_image_object_from_file(user->photo_path, obj);
-               } else {
-                       profile_pic = create_image_object_from_file(ui_utils_get_resource(DEFAULT_PROFILE_PIC), obj);
-               }
-
-
-               item->contact_icon = profile_pic;
-               evas_object_event_callback_add(item->contact_icon, EVAS_CALLBACK_DEL, on_peer_icon_deleted, item);
-
-               char edj_path[PATH_MAX] = {0, };
-               app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
-               Evas_Object* user_pic_layout = elm_layout_add(ad->nf);
-               elm_layout_file_set(user_pic_layout, edj_path, "circle_layout");
-               evas_object_size_hint_weight_set(user_pic_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(user_pic_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
-               evas_object_show(user_pic_layout);
-               elm_object_part_content_set(user_pic_layout, "content", profile_pic);
-
-               eo = elm_layout_add(obj);
-               elm_layout_theme_set(eo, "layout", "list/B/type.2", "default");
-               elm_layout_content_set(eo, "elm.swallow.content", user_pic_layout);
-#else
                int id = (int) data;
                appdata_s* ad = evas_object_data_get(obj, "app_data");
                int size = eina_list_count(ad->search_peer_list);
@@ -236,7 +176,7 @@ Evas_Object* on_peer_list_image_requested(void *data, Evas_Object *obj, const ch
                char edj_path[PATH_MAX] = {0, };
                app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
                Evas_Object* user_pic_layout = elm_layout_add(ad->nf);
-               elm_layout_file_set(user_pic_layout, edj_path, "circle_layout");
+               elm_layout_file_set(user_pic_layout, edj_path, "search_circle_layout");
                evas_object_size_hint_weight_set(user_pic_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
                evas_object_size_hint_align_set(user_pic_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
                evas_object_show(user_pic_layout);
@@ -245,7 +185,7 @@ Evas_Object* on_peer_list_image_requested(void *data, Evas_Object *obj, const ch
                eo = elm_layout_add(obj);
                elm_layout_theme_set(eo, "layout", "list/B/type.2", "default");
                elm_layout_content_set(eo, "elm.swallow.content", user_pic_layout);
-#endif
+
        }
        return eo;
 }
@@ -306,6 +246,55 @@ static void clear_search_list(appdata_s *ad)
 
 }
 
+
+
+void on_new_contact_creation_reply_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+       if (result == APP_CONTROL_RESULT_SUCCEEDED) {
+               appdata_s* ad = user_data;
+               char* file_path = NULL;
+               char** path_arryay = NULL;
+               int array_length = 0;
+               int status;
+               char* mime_type = NULL;
+               status = app_control_get_extra_data_array(reply, APP_CONTROL_DATA_SELECTED, &path_arryay,  &array_length);
+               if (status != APP_CONTROL_ERROR_NONE) {
+                       status = app_control_get_extra_data_array(reply, APP_CONTROL_DATA_PATH, &path_arryay,  &array_length);
+                       if (status != APP_CONTROL_ERROR_NONE) {
+                               if (ad) {
+                                       show_toast(ad, "Unable to get the result from attach panel");
+                               }
+                               return;
+                       }
+               }
+
+               status = app_control_get_mime(reply, &mime_type);
+               if (status != APP_CONTROL_ERROR_NONE) {
+                       if (ad) {
+                               show_toast(ad, "Unable to get the mime type from attach panel");
+                       }
+                       return;
+               }
+
+               for(int i = 0 ; i < array_length ; i++) {
+                       file_path = strdup(path_arryay[i]);
+                       free(file_path);
+               }
+       }
+}
+
+int on_create_new_contact(appdata_s* ad)
+{
+       app_control_h request;
+       app_control_create(&request);
+       app_control_set_operation(request, "http://tizen.org/appcontrol/operation/add");
+       app_control_set_mime(request, "application/vnd.tizen.contact");
+       int result = app_control_send_launch_request(request, &on_new_contact_creation_reply_cb, ad);
+       app_control_destroy(request);
+       return result;
+}
+
+
 static void on_invite_friends_clicked(void *data, Evas_Object *obj, void *event_info)
 {
        Elm_Object_Item *it = event_info;
@@ -330,6 +319,7 @@ static void on_group_chat_clicked(void *data, Evas_Object *obj, void *event_info
        Elm_Object_Item *it = event_info;
        elm_genlist_item_selected_set(it, EINA_FALSE);
        appdata_s* ad = evas_object_data_get(obj, "app_data");
+       delete_floating_button(ad);
        launch_contact_selction_view(ad);
 }
 
@@ -343,58 +333,6 @@ static void on_secret_chat_clicked(void *data, Evas_Object *obj, void *event_inf
 
 static void on_peer_item_clicked(void *data, Evas_Object *obj, void *event_info)
 {
-#if 0
-       Elm_Object_Item *it = event_info;
-       elm_genlist_item_selected_set(it, EINA_FALSE);
-
-       int item_id = (int) data;
-       appdata_s* ad = evas_object_data_get(obj, "app_data");
-
-       user_data_with_pic_s* sel_pic_item = eina_list_nth(ad->search_peer_list, item_id);
-       user_data_s* sel_item = sel_pic_item->use_data;
-
-
-       ad->buddy_in_cahtting_data = NULL;
-       ad->peer_in_cahtting_data = NULL;
-       int buddy_id = -1;
-       if (sel_item) {
-               if (sel_item->peer_type == TGL_PEER_USER) {
-                       for (int i = 0; i < eina_list_count(ad->search_peer_list); i++) {
-                               user_data_with_pic_s *item = eina_list_nth(ad->search_peer_list, i);
-                               user_data_s* user_data = item->use_data;
-
-                               if (user_data->user_id.id == sel_item->peer_id) {
-                                       ad->buddy_in_cahtting_data = item;
-                                       break;
-                               }
-                       }
-               }
-
-               for (int i = 0; i < eina_list_count(ad->peer_list); i++) {
-                       user_data_with_pic_s* pic_item = eina_list_nth(ad->peer_list, i);
-                       tg_peer_info_s* item = pic_item->use_data;
-
-                       if (item->peer_id == sel_item->peer_id) {
-                               ad->peer_in_cahtting_data = pic_item;
-                               buddy_id = i;
-                               break;
-                       }
-               }
-
-               for (int i = 0; i < eina_list_count(ad->main_list); i++) {
-                       tg_main_list_item_s* item = eina_list_nth(ad->main_list, i);
-
-                       if (item->peer_id == sel_item->peer_id) {
-                               ad->main_item_in_cahtting_data = item;
-                               break;
-                       }
-               }
-
-               elm_naviframe_item_pop(ad->nf);
-               clear_search_list(ad);
-               launch_messaging_view_cb(ad, buddy_id);
-       }
-#else
        Elm_Object_Item *it = event_info;
        elm_genlist_item_selected_set(it, EINA_FALSE);
 
@@ -443,7 +381,6 @@ static void on_peer_item_clicked(void *data, Evas_Object *obj, void *event_info)
 
        elm_naviframe_item_pop(ad->nf);
        launch_messaging_view_cb(ad, peer_id);
-#endif
 }
 
 static void _update_index_item(void *data, void *item_data, int id)
@@ -635,19 +572,16 @@ static void _on_search_entry_changed(void *data, Evas_Object *obj, void *event_i
 static void _on_search_entry_focused(void *data, Evas_Object *obj, void *event_info)
 {
        Evas_Object *layout = data;
-
        if (elm_object_focus_get(layout)) {
                elm_object_signal_emit(layout, "elm,state,focused", "");
        } else{
                elm_object_signal_emit(layout, "elm,state,unfocused", "");
        }
-
 }
 
 
 Evas_Object *_create_searchbar(Evas_Object* parent, void* data)
 {
-
        char edj_path[PATH_MAX] = {0, };
        app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
 
@@ -745,7 +679,6 @@ static Evas_Object* create_fastscroll(appdata_s *ad)
        /* 1. Special character & Numbers */
        elm_index_item_append(index, "#", NULL, NULL);
 
-#if 1
        /* 2. Local language */
        str = dgettext("efl-extension", "IDS_EA_BODY_ABCDEFGHIJKLMNOPQRSTUVWXYZ");
        len = strlen(str);
@@ -758,7 +691,6 @@ static Evas_Object* create_fastscroll(appdata_s *ad)
 
                elm_index_item_append(index, buf, NULL, NULL);
        }
-#endif
        elm_index_level_go(index, 0);
 
        evas_object_smart_callback_add(index, "selected", _index_selected_cb, ad);
@@ -830,55 +762,4 @@ void launch_start_peer_search_view(appdata_s* ad)
 
        elm_naviframe_item_push(ad->nf, "<font=Tizen:style=Bold color=#ffffff align=center><font_size=48>Contacts</font_size></font>", NULL, NULL, layout, NULL);
 
-#if 0
-
-       clear_search_list(ad);
-       ad->search_peer_list = load_buddy_data_by_name(NULL);
-
-       /* main layout */
-       Evas_Object* layout = elm_layout_add(ad->nf);
-       elm_layout_theme_set(layout, "layout", "application", "searchbar_base");
-       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       evas_object_show(layout);
-       //evas_object_data_set(ad->nf, "main_layout", layout);
-
-       /* search field */
-       Evas_Object* searchbar_layout = _create_searchbar(layout, ad);
-       elm_object_part_content_set(layout, "searchbar", searchbar_layout);
-       _util_get_first_char
-       /* fastscroll layout */
-       Evas_Object* fs_layout = elm_layout_add(layout);
-       elm_layout_theme_set(fs_layout, "layout", "application", "fastscroll");
-       elm_object_part_content_set(layout, "elm.swallow.content", fs_layout);
-       evas_object_data_set(ad->nf, "fs_layout", fs_layout);
-
-       /* fastscroll */
-       Evas_Object* index = create_fastscroll(ad);
-       elm_object_part_content_set(fs_layout, "elm.swallow.fastscroll", index);
-       evas_object_data_set(ad->nf, "fs_index", index);
-
-       /* peer list - Genlist */
-       Evas_Object* peer_list = create_genlist(ad, fs_layout);
-
-       _append_command_item(peer_list, ad);
-       _append_peer_item(peer_list, ad, ad->search_peer_list);
-       //evas_object_data_set(ad->nf, "search_list", peer_list);
-
-       /* no contents */
-       Evas_Object *nocontents = elm_layout_add(ad->nf);
-       elm_layout_theme_set(nocontents, "layout", "nocontents", "default");
-       evas_object_size_hint_weight_set(nocontents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(nocontents, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_object_part_text_set(nocontents, "elm.text", "No Items");
-       evas_object_data_set(ad->nf, "no_contents_layout", nocontents);
-
-       Elm_Object_Item* navi_item = elm_naviframe_item_push(ad->nf, "Telegram", NULL, NULL, layout, NULL);
-       //elm_naviframe_prev_btn_auto_pushed_set(ad->nf, EINA_FALSE);
-       //eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL);
-
-
-       //elm_naviframe_item_simple_push(ad->nf, scroller);
-       //elm_naviframe_item_simple_push(ad->nf, layout);
-#endif
 }
index 4896460..b233535 100644 (file)
@@ -14,6 +14,7 @@
 #include "tg_db_manager.h"
 #include "server_requests.h"
 #include "tg_db_wrapper.h"
+#include "tg_main_item_deletion_view.h"
 
 static Evas_Object *create_image_object_from_file(const char *icon_name, Evas_Object *parent)
 {
@@ -734,7 +735,7 @@ Evas_Object* on_chat_item_load_requested(void *data, Evas_Object *obj, const cha
 
                char* user_name = replace(item->peer_print_name, '_', "");
                char buf[512] = {'\0'};
-               snprintf(buf, 512, "<font=Tizen:style=Bold color=#000000 align=left><font_size=32>%s</font_size></font>", user_name);
+               snprintf(buf, 512, "<font=Tizen:style=Bold color=#000000 align=left><font_size=35>%s</font_size></font>", user_name);
                free(user_name);
 
                Evas_Object*  name_lbl = elm_label_add(ad->nf);
@@ -766,15 +767,15 @@ Evas_Object* on_chat_item_load_requested(void *data, Evas_Object *obj, const cha
                if(len_org_str > 30) {
                        strncpy(res, org_msg, 29);
                        if(item->last_msg_service) {
-                               sprintf(status_buf,"<font=Tizen:style=Bold color=#158CB0 align=left><font_size=26>%s</font_size></font>", res);
+                               sprintf(status_buf,"<font=Tizen:style=Bold color=#158CB0 align=left><font_size=28>%s</font_size></font>", res);
                        } else {
-                               sprintf(status_buf,"<font=Tizen:style=Bold color=#A4A4A4 align=left><font_size=26>%s</font_size></font>", res);
+                               sprintf(status_buf,"<font=Tizen:style=Bold color=#A4A4A4 align=left><font_size=28>%s</font_size></font>", res);
                        }
                } else {
                        if(item->last_msg_service) {
-                               sprintf(status_buf, "<font=Tizen:style=Bold color=#158CB0 align=left><font_size=26>%s</font_size></font>", org_msg);
+                               sprintf(status_buf, "<font=Tizen:style=Bold color=#158CB0 align=left><font_size=28>%s</font_size></font>", org_msg);
                        } else {
-                               sprintf(status_buf, "<font=Tizen:style=Bold color=#A4A4A4 align=left><font_size=26>%s</font_size></font>", org_msg);
+                               sprintf(status_buf, "<font=Tizen:style=Bold color=#A4A4A4 align=left><font_size=28>%s</font_size></font>", org_msg);
                        }
                }
 
@@ -1090,7 +1091,7 @@ static void ctxpopup_delete_select_cb(void *data, Evas_Object *obj, void *event_
 
        _ctxpopup_dismiss_cb(ad, NULL, NULL);
 
-       /* please input here when delete menu is clicked */
+       launch_main_item_deletion_view_cb(ad);
 }
 
 static void ctxpopup_search_select_cb(void *data, Evas_Object *obj, void *event_info)
@@ -1115,7 +1116,7 @@ static void ctxpopup_contact_select_cb(void *data, Evas_Object *obj, void *event
        }
 
        _ctxpopup_dismiss_cb(ad, NULL, NULL);
-
+    on_floating_icon_clicked(data, obj, event_info);
        /* please input here when contact menu is clicked */
 }
 
@@ -1237,7 +1238,6 @@ void launch_user_main_view_cb(appdata_s* ad)
                evas_object_size_hint_weight_set(buddy_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
                evas_object_size_hint_align_set(buddy_list, EVAS_HINT_FILL, EVAS_HINT_FILL);
                evas_object_data_set(buddy_list, "app_data", ad);
-               elm_genlist_block_count_set(buddy_list, 14);
                elm_genlist_homogeneous_set(buddy_list, EINA_TRUE);
 
 
index 2d7d493..55508d0 100644 (file)
@@ -423,13 +423,18 @@ void on_floating_icon_clicked(void *data, Evas_Object *obj, void *event_info)
 {
        appdata_s* ad = data;
 
+       if (ad->menu_popup) {
+               evas_object_del(ad->menu_popup);
+               ad->menu_popup = NULL;
+       }
+
        Evas_Object* image = (Evas_Object*)evas_object_data_get(ad->floating_btn, "image");
 
        switch(ad->current_app_state) {
        case TG_PEER_SEARCH_VIEW_STATE:
-               elm_image_file_set(image, ui_utils_get_resource(TG_ICON_FLOATING_PENCIL), NULL);
-               launch_settings_screen(ad);
-               delete_floating_button(ad);
+               //elm_image_file_set(image, ui_utils_get_resource(TG_ICON_FLOATING_PENCIL), NULL);
+               on_create_new_contact(ad);
+               //delete_floating_button(ad);
                break;
        case TG_USER_MAIN_VIEW_STATE:
                elm_image_file_set(image, ui_utils_get_resource(TG_ICON_FLOATING_ADD), NULL);
@@ -491,6 +496,7 @@ void show_floating_button(appdata_s* ad)
                return;
 
        if (ad->floating_btn){
+               update_floating_button(ad, ad->current_app_state);
                elm_layout_signal_emit(ad->floating_btn, "elm,state,floatingbutton,visible", "elm");
        }
 }
@@ -508,7 +514,7 @@ void update_floating_button(appdata_s* ad, int mode)
                elm_image_file_set(image, ui_utils_get_resource(TG_ICON_FLOATING_ADD), NULL);
                break;
        case TG_USER_MAIN_VIEW_STATE:
-               elm_image_file_set(image, ui_utils_get_resource(TG_ICON_FLOATING_ADD), NULL);
+               elm_image_file_set(image, ui_utils_get_resource(TG_ICON_FLOATING_PENCIL), NULL);
                break;
        default :
                elm_image_file_set(image, ui_utils_get_resource(TG_ICON_FLOATING_PENCIL), NULL);
index 0aedfd9..3a1a797 100644 (file)
@@ -279,6 +279,7 @@ typedef enum state_of_app {
        TG_BUDDY_CHAT_STATE,
        TG_BUDDY_CHAT_CONV_STATE,
        TG_USER_MAIN_VIEW_STATE,
+       TG_USER_MAIN_VIEW_SELECTION_STATE,
        TG_START_MESSAGING_VIEW_STATE,
        TG_CHAT_MESSAGING_VIEW_STATE,
        TG_PEER_SEARCH_VIEW_STATE,
@@ -1099,4 +1100,6 @@ extern void update_floating_button(appdata_s* ad, int mode);
 
 extern void on_new_message_clicked(void *data, Evas_Object *obj, void *event_info);
 
+extern void on_floating_icon_clicked(void *data, Evas_Object *obj, void *event_info);
+
 #endif /* TG_COMMON_H_ */
index a4a2e8f..80e0549 100644 (file)
@@ -491,6 +491,10 @@ bool service_app_create(void *data)
        tg_data->mhash = NULL;
        tg_data->lazy_init_idler = NULL;
        tg_data->s_notififcation = NULL;
+       tg_data->chat_list = NULL;
+       tg_data->current_chat_index = 0;
+       tg_data->buddy_list = NULL;
+       tg_data->current_buddy_index = 0;
        //tg_data->is_loading_completed = EINA_FALSE;
        RETVM_IF(!tg_data->tg_server, SVC_RES_FAIL, "Failed to create proxy client");
 
@@ -506,9 +510,6 @@ bool service_app_create(void *data)
        result = _tg_server_set_remote_data(tg_data->tg_server, TELEGRAM_CLIENT_APP_NAME, TELEGRAM_CLIENT_PORT_NAME);
        result = tg_server_register_msg_receive_callback(tg_data->tg_server, _on_tg_server_msg_received_cb, tg_data);
 
-       // if wi-fi or data is on
-       create_data_base_tables();
-
        int err = badge_new(TELEGRAM_APP_ID);
        if (BADGE_ERROR_NONE != err) {
 
@@ -578,6 +579,17 @@ void free_connection(tg_engine_data_s* tg_data)
                free_contact_data(tg_data->contact_list_to_add);
                tg_data->contact_list_to_add = NULL;
        }
+
+       if (tg_data->chat_list) {
+               eina_list_free(tg_data->chat_list);
+               tg_data->chat_list = NULL;
+       }
+
+       if (tg_data->buddy_list) {
+               eina_list_free(tg_data->buddy_list);
+               tg_data->buddy_list = NULL;
+       }
+
        tgl_engine_var_free();
 
        tg_db_fini();
index 5f55c8d..7267034 100644 (file)
@@ -565,6 +565,7 @@ void tg_logged_in(struct tgl_state *TLS)
        t_id.id = TLS->our_id;
        t_id.type = TGL_PEER_USER;
        tg_data->is_first_time_registration = EINA_TRUE;
+       create_data_base_tables();
        tgl_do_get_user_info(TLS, t_id, offline_mode, &on_user_info_loaded, NULL);
 }
 
@@ -1747,16 +1748,84 @@ void on_buddy_info_loaded(struct tgl_state *TLS, void *callback_extra, int succe
        }
 }
 
+void on_chat_history_received(struct tgl_state *TLS, void *callback_extra, int success, int size, struct tgl_message *list[])
+{
+       tg_engine_data_s *tg_data = TLS->callback_data;
+       for (int i = 0; i < size; i++) {
+               struct tgl_message* message = list[i];
+               if (message->service || message->from_id.id == tg_data->id.id) {
+                       continue;
+               }
+               Eina_Bool ret = insert_buddy_msg_to_db(message);
+               if (ret) {
+                       tg_msg_receive(s_info.TLS, message);
+               }
+       }
+       tg_data->current_chat_index = tg_data->current_chat_index + 1;
+       if (tg_data->current_chat_index < eina_list_count(tg_data->chat_list)) {
+               tgl_peer_t* UC = eina_list_nth(tg_data->chat_list, tg_data->current_chat_index);
+               tgl_do_get_history(s_info.TLS, UC->id, 20, 0, on_chat_history_received, UC);
+       } else {
+               tg_data->current_chat_index = 0;
+       }
+}
+
+static Eina_Bool on_load_chat_history_requested(void *data)
+{
+       struct tgl_state *TLS = data;
+       if (TLS) {
+               tg_engine_data_s *tg_data = TLS->callback_data;
+               tg_data->current_chat_index = 0;
+               tgl_peer_t* UC = eina_list_nth(tg_data->chat_list, tg_data->current_chat_index);
+               tgl_do_get_history(s_info.TLS, UC->id, 20, 0, on_chat_history_received, UC);
+       }
+       return ECORE_CALLBACK_CANCEL;
+}
+
+void on_buddy_history_received(struct tgl_state *TLS, void *callback_extra, int success, int size, struct tgl_message *list[])
+{
+       tg_engine_data_s *tg_data = TLS->callback_data;
+       for (int i = 0; i < size; i++) {
+               struct tgl_message* message = list[i];
+               if (message->service || message->from_id.id == tg_data->id.id) {
+                       continue;
+               }
+               Eina_Bool ret = insert_buddy_msg_to_db(message);
+               if (ret) {
+                       tg_msg_receive(s_info.TLS, message);
+               }
+       }
+       tg_data->current_buddy_index = tg_data->current_buddy_index + 1;
+       if (tg_data->current_buddy_index < eina_list_count(tg_data->buddy_list)) {
+               tgl_peer_t* UC = eina_list_nth(tg_data->buddy_list, tg_data->current_buddy_index);
+               tgl_do_get_history(s_info.TLS, UC->id, 20, 0, on_buddy_history_received, UC);
+       } else {
+               tg_data->current_buddy_index = 0;
+               ecore_timer_add(5, on_load_chat_history_requested, TLS);
+       }
+}
+
+static Eina_Bool on_load_buddy_history_requested(void *data)
+{
+       struct tgl_state *TLS = data;
+       if (TLS) {
+               tg_engine_data_s *tg_data = TLS->callback_data;
+               tg_data->current_buddy_index = 0;
+               tgl_peer_t* UC = eina_list_nth(tg_data->buddy_list, tg_data->current_buddy_index);
+               tgl_do_get_history(s_info.TLS, UC->id, 20, 0, on_buddy_history_received, UC);
+       }
+       return ECORE_CALLBACK_CANCEL;
+}
+
 void on_contacts_received(struct tgl_state *TLS, void *callback_extra, int success, int size, struct tgl_user *contacts[])
 {
+       tg_engine_data_s *tg_data = TLS->callback_data;
        for (int i = size - 1; i >= 0; i--) {
                struct tgl_user *buddy = contacts[i];
-
                char* msg_table = get_table_name_from_number(buddy->id.id);
                create_buddy_msg_table(msg_table);
                free(msg_table);
 
-               //tgl_do_get_user_info(TLS, buddy->id, 0, &on_buddy_info_loaded, NULL);
                if (buddy->id.id == 333000 || buddy->id.id == 777000) {
                        buddy->is_unknown = 1;
                } else {
@@ -1777,56 +1846,33 @@ void on_contacts_received(struct tgl_state *TLS, void *callback_extra, int succe
                struct tgl_user *buddy = contacts[i];
                tgl_do_get_user_info(TLS, buddy->id, 0, on_buddy_info_loaded, NULL);
        }
-       tg_engine_data_s *tg_data = TLS->callback_data;
-       //tg_data->is_loading_completed = EINA_TRUE;
-
        send_response_for_server_connection_status(tg_data, tg_data->is_login_activated);
-       ecore_timer_add(5, on_send_unsent_messages_requested, TLS);
-}
-
-void on_history_received(struct tgl_state *TLS, void *callback_extra, int success, int size, struct tgl_message *list[])
-{
-       for (int i = 0; i < size; i++) {
-               //struct tgl_message
-               struct tgl_message* message = list[i];
-               if (message->service) {
-                       continue;
-               }
-               Eina_Bool ret = insert_buddy_msg_to_db(message);
-               if (ret) {
-                       tg_msg_receive(s_info.TLS, message);
-               }
-       }
+       ecore_timer_add(3, on_send_unsent_messages_requested, TLS);
+       ecore_timer_add(6, on_load_buddy_history_requested, TLS);
 }
 
-#if 0
-static Eina_Bool on_load_history_requested(void *data)
-{
-       tgl_peer_t* UC = data;
-       tgl_do_get_history(s_info.TLS, UC->id, 15, 0, on_history_received, UC);
-       return ECORE_CALLBACK_CANCEL;
-}
-#endif
 
 void on_contacts_and_chats_loaded(struct tgl_state *TLS, void *callback_extra, int success, int size, tgl_peer_id_t peers[], int last_msg_id[], int unread_count[])
 {
-#if 0
-       int int_cnt = 5;
-#endif
+       tg_engine_data_s *tg_data = TLS->callback_data;
+       if (tg_data->chat_list) {
+               eina_list_free(tg_data->chat_list);
+               tg_data->chat_list = NULL;
+       }
+       if (tg_data->buddy_list) {
+               eina_list_free(tg_data->buddy_list);
+               tg_data->buddy_list = NULL;
+       }
        for (int i = size - 1; i >= 0; i--) {
                tgl_peer_t* UC = tgl_peer_get(TLS, peers[i]);
                // insert into peer table
                insert_peer_into_database(UC, last_msg_id[i], unread_count[i], 0);
-#if 0
-               int_cnt = int_cnt + 3;
-               ecore_timer_add(int_cnt, on_load_history_requested, UC);
-#endif
                switch (tgl_get_peer_type(peers[i])) {
                        case TGL_PEER_USER:
-                               // To-Do
+                               tg_data->buddy_list = eina_list_append(tg_data->buddy_list, UC);
                                break;
                        case TGL_PEER_CHAT:
-                               // To-Do
+                               tg_data->chat_list = eina_list_append(tg_data->chat_list, UC);
                                break;
                        case TGL_PEER_ENCR_CHAT:
                                // To-Do
index 0be34c3..86cd61d 100644 (file)
@@ -143,6 +143,11 @@ typedef struct tg_engine_data {
        char* mhash;
        //Eina_Bool is_loading_completed;
        notification_h s_notififcation;
+       Eina_List *chat_list;
+       int current_chat_index;
+
+       Eina_List *buddy_list;
+       int current_buddy_index;
 } tg_engine_data_s;
 
 typedef struct contact_data {