// type_of_chat 0-buddy, 1-group_chat 2-encrpted_chat
void send_request_for_message_transport(appdata_s *ad, service_client* service_client, const int buddy_id, const int message_id, const int msg_type, const char* data, const int type_of_chat);
void send_request_for_marked_as_read(service_client* service_client, const int buddy_id, const int type_of_chat);
+void send_delete_selected_group_chats_request(service_client* service_client, Eina_List *sel_grp_chats);
void send_delete_group_chat_request(service_client* service_client, const int chat_id);
void send_add_buddy_request(service_client* service_client, const int buddy_id, const char *first_name, const char *last_name, const char *phone_number);
void send_delete_buddy_request(service_client* service_client, const int buddy_id);
}
+
+
+void send_delete_selected_group_chats_request(service_client* service_client, Eina_List *sel_grp_chats)
+{
+ if (!service_client || !sel_grp_chats) {
+ // error
+ return;
+ }
+ bundle *msg;
+ char tmp[50];
+ char chat_id_key[50];
+ int result;
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
+ if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
+ ERR("Failed to add data by key to bundle");
+ bundle_free(msg);
+ return;
+ }
+
+ if (bundle_add_str(msg, "command", "delete_selected_group_chats_request") != 0) {
+ ERR("Failed to add data by key to bundle");
+ bundle_free(msg);
+ return;
+ }
+
+ // add count
+ int list_size = eina_list_count(sel_grp_chats);
+
+ char cnt_str[50] = {0,};
+ sprintf(cnt_str, "%d", list_size);
+
+ if (bundle_add_str(msg, "list_size", cnt_str) != 0) {
+ ERR("Failed to add data by key to bundle");
+ bundle_free(msg);
+ return;
+ }
+
+ // add chat ids
+ for (int i = 0; i < list_size ; i++) {
+ tg_main_list_item_s *item = eina_list_nth(sel_grp_chats, i);
+ snprintf(tmp, sizeof(tmp) - 1, "%d", item->peer_id);
+ snprintf(chat_id_key, sizeof(chat_id_key) - 1, "chat_id_%d", i);
+
+ if (bundle_add_str(msg, chat_id_key, tmp) != 0) {
+ ERR("Failed to add data by key to bundle");
+ bundle_free(msg);
+ return;
+ }
+ }
+
+ result = service_client_send_message(service_client, msg);
+ if(result != SVC_RES_OK) {
+ // error
+ }
+ bundle_free(msg);
+}
+
+
+
void send_delete_group_chat_request(service_client* service_client, const int chat_id)
{
if (!service_client) {
bundle_free(msg);
return;
}
-
-
result = service_client_send_message(service_client, msg);
if(result != SVC_RES_OK) {
// error
if (app->current_app_state == TG_SET_USER_INFO_STATE) {
on_user_unblock_response_received(app, buddy_id, is_success);
}
+ } else if (strcmp(rec_key_val, "selected_group_chats_deleted_response") == 0) {
+
+ if (app->current_app_state == TG_USER_MAIN_VIEW_SELECTION_STATE) {
+ elm_naviframe_item_pop(app->nf);
+ app->current_app_state = TG_USER_MAIN_VIEW_STATE;
+ show_floating_button(app);
+ load_buddy_list_data(app);
+ load_unknown_buddy_list_data(app);
+ load_peer_data(app);
+ load_main_list_data(app);
+ refresh_main_list_view(app, EINA_FALSE);
+ }
} else if (strcmp(rec_key_val, "group_chat_deleted_response") == 0) {
char* chat_id_str = NULL;
ad->s_notififcation = NULL;
ad->panel = NULL;
ad->is_server_ready = EINA_FALSE;
+ ad->msg_count = 0;
create_base_gui(ad);
int err = badge_new(TELEGRAM_APP_ID);
if (BADGE_ERROR_NONE != err) {
* Author: sandeep
*/
-
#include "tg_main_item_deletion_view.h"
+#include "tg_user_main_view.h"
+#include "tg_db_manager.h"
+#include "server_requests.h"
static Evas_Object* create_image_object_from_file(const char *icon_name, Evas_Object *parent)
{
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 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) {
}
}
+
+void change_main_item_selection_state(appdata_s *ad, Evas_Object *gen_list, Eina_Bool checked, int org_id)
+{
+ if (!ad || !gen_list) {
+ return;
+ }
+ if (ad->main_list && eina_list_count(ad->main_list) > 0) {
+ if (org_id ==0) {
+ 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);
+ item->is_selected = checked;
+ Eina_Bool all_items_selected = checked;
+ evas_object_data_set(gen_list, "all_selected", (void *)((int)all_items_selected));
+ Elm_Object_Item* list_item = elm_genlist_nth_item_get(gen_list, i + 1);
+ if (list_item) {
+ elm_genlist_item_selected_set(list_item, EINA_FALSE);
+ Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
+ Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
+ elm_check_state_set(lcheckbox, checked);
+ }
+ }
+ } else {
+ tg_main_list_item_s *item = eina_list_nth(ad->main_list, org_id - 1);
+ item->is_selected = checked;
+
+ if (!checked) {
+ Elm_Object_Item* list_item = elm_genlist_nth_item_get(gen_list, 0);
+ if (list_item) {
+ elm_genlist_item_selected_set(list_item, EINA_FALSE);
+ Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
+ Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
+ elm_check_state_set(lcheckbox, EINA_FALSE);
+ }
+ } else {
+ Eina_Bool all_items_selected = EINA_TRUE;
+ 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->is_selected) {
+ all_items_selected = EINA_FALSE;
+ break;
+ }
+ }
+ Elm_Object_Item* list_item = elm_genlist_nth_item_get(gen_list, 0);
+ if (list_item) {
+ elm_genlist_item_selected_set(list_item, EINA_FALSE);
+ Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
+ Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
+ elm_check_state_set(lcheckbox, all_items_selected);
+ }
+ }
+ }
+ }
+}
+
+void on_main_item_checkbox_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ int org_id = (int) data;
+ appdata_s *ad = evas_object_data_get(obj, "app_data");
+ Evas_Object *gen_list = evas_object_data_get(obj, "selection_gen_list");
+ Eina_Bool checked = elm_check_state_get(obj);
+ change_main_item_selection_state(ad, gen_list, checked, org_id);
+}
+
+void on_main_item_selected(void *data, Evas_Object *obj, void *event_info)
+{
+ int org_id = (int) data;
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+ Evas_Object *layout = elm_object_item_part_content_get(event_info, "elm.swallow.end");
+ Evas_Object *checkbox = elm_object_part_content_get(layout, "elm.swallow.content");
+ Eina_Bool checked = elm_check_state_get(checkbox);
+ appdata_s *ad = evas_object_data_get(checkbox, "app_data");
+ checked = !checked;
+ elm_check_state_set(checkbox, checked);
+ change_main_item_selection_state(ad, obj, checked, org_id);
+}
+
Evas_Object* on_mainlist_content_requested(void *data, Evas_Object *obj, const char *part)
{
int org_id = (int) data;
+ appdata_s* ad = evas_object_data_get(obj, "app_data");
+ Evas_Object *eo = NULL;
+ int id = org_id - 1;
+ if (ad->main_list == NULL || eina_list_count(ad->main_list) <= 0) {
+ return NULL;
+ }
if (!strcmp("elm.swallow.end", part)) {
- return create_check(obj);
+ eo = elm_layout_add(obj);
+ elm_layout_theme_set(eo, "layout", "list/C/type.2", "default");
+ Evas_Object *check = elm_check_add(obj);
+ elm_object_focus_set(check, EINA_FALSE);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ evas_object_data_set(check, "app_data", ad);
+ evas_object_data_set(check, "selection_gen_list", obj);
+ evas_object_smart_callback_add(check, "changed", on_main_item_checkbox_sel_cb, data);
+ elm_layout_content_set(eo, "elm.swallow.content", check);
+ if (org_id == 0) {
+ Eina_Bool all_items_selected = (Eina_Bool)evas_object_data_get(obj, "all_selected");
+ elm_check_state_set(check, all_items_selected);
+ } else {
+ tg_main_list_item_s* item = eina_list_nth(ad->main_list, id);
+ elm_check_state_set(check, item->is_selected);
+ }
+ return eo;
}
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;
}
+void on_delete_selected_items_clicked(void *data, Evas_Object *object, void *event_info)
+{
+ appdata_s *ad = data;
+ if (!ad)
+ return;
+
+ show_loading_popup(ad);
+ // delete users.
+
+ Eina_List *sel_grp_chat = NULL;
+
+ for (int i = 0; i < eina_list_count(ad->main_list); i++) {
+ tg_main_list_item_s* sel_item = eina_list_nth(ad->main_list, i);
+ if (sel_item && sel_item->is_selected) {
+ if (sel_item->peer_type == TGL_PEER_USER) {
+ char* tablename = get_table_name_from_number(sel_item->peer_id);
+ delete_all_records(tablename);
+ free(tablename);
+
+ // delete from main list
+ if (sel_item->peer_print_name) {
+ free(sel_item->peer_print_name);
+ sel_item->peer_print_name = NULL;
+ }
+ if (sel_item->last_message) {
+ free(sel_item->last_message);
+ sel_item->last_message = NULL;
+ }
+ if (sel_item->profile_pic_path) {
+ free(sel_item->profile_pic_path);
+ sel_item->profile_pic_path = NULL;
+ }
+ sel_item->date_lbl = NULL;
+ sel_item->msg_status_lbl = NULL;
+ sel_item->main_item_layout = NULL;
+ sel_item->profile_pic = NULL;
+ sel_item->profile_pic_path = NULL;
+ sel_item->status_lbl = NULL;
+ sel_item->user_name_lbl = NULL;
+ //ad->main_list
+ ad->main_list = eina_list_remove(ad->main_list, sel_item);
+ } else if (sel_item->peer_type == TGL_PEER_CHAT) {
+ sel_grp_chat = eina_list_append(sel_grp_chat, sel_item);
+ }
+ }
+ }
+
+ if (sel_grp_chat && eina_list_count(sel_grp_chat) > 0) {
+ send_delete_selected_group_chats_request(ad->service_client, sel_grp_chat);
+ } else {
+ refresh_main_list_view(ad, EINA_FALSE);
+ elm_naviframe_item_pop(ad->nf);
+ ad->current_app_state = TG_USER_MAIN_VIEW_STATE;
+ show_floating_button(ad);
+ hide_loading_popup(ad);
+ }
+}
+
+void on_selection_cancel_clicked(void *data, Evas_Object *object, void *event_info)
+{
+ appdata_s *ad = data;
+ if (!ad)
+ return;
+
+ elm_naviframe_item_pop(ad->nf);
+ ad->current_app_state = TG_USER_MAIN_VIEW_STATE;
+ show_floating_button(ad);
+}
+
+
void launch_main_item_deletion_view_cb(appdata_s* ad)
{
if (!ad)
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 {
evas_object_data_set(buddy_list, "app_data", ad);
elm_genlist_homogeneous_set(buddy_list, EINA_TRUE);
+ evas_object_data_set(buddy_list, "app_data", ad);
+ Eina_Bool all_items_selected = EINA_FALSE;
+ evas_object_data_set(buddy_list, "all_selected", (void *)((int)all_items_selected));
+
itc.item_style = "type1";
itc.func.text_get = on_mainlist_title_requested;
itc.func.content_get = on_mainlist_content_requested;
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);
+ if (i < size) {
+ tg_main_list_item_s *item = eina_list_nth(ad->main_list, i);
+ item->is_selected = EINA_FALSE;
+ }
+ elm_genlist_item_append(buddy_list, &itc, (void *) i, NULL, ELM_GENLIST_ITEM_NONE, on_main_item_selected, (void*) i);
}
} else {
i = 1;
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);
-
+ Elm_Object_Item* buddy_sel_nav_item = elm_naviframe_item_push(ad->nf, i18n_get_text("IDS_TGRAM_HEADER_SELECT_CHATS_ABB"), NULL, NULL, scroller, NULL);
+
+ Evas_Object* delete_btn = elm_button_add(ad->layout);
+ elm_object_style_set(delete_btn, "naviframe/title_left");
+ evas_object_smart_callback_add(delete_btn, "clicked", on_delete_selected_items_clicked, ad);
+ elm_object_text_set(delete_btn, i18n_get_text("IDS_TGRAM_OPT_DELETE"));
+ evas_object_show(delete_btn);
+
+ Evas_Object* cancel_btn = elm_button_add(ad->layout);
+ elm_object_style_set(cancel_btn, "naviframe/title_right");
+ evas_object_smart_callback_add(cancel_btn, "clicked", on_selection_cancel_clicked, ad);
+ elm_object_text_set(cancel_btn, i18n_get_text("IDS_TGRAM_BUTTON_CANCEL_ABB5"));
+ evas_object_show(cancel_btn);
+
+ elm_object_item_part_content_set(buddy_sel_nav_item, "title_right_btn", delete_btn);
+ elm_object_item_part_content_set(buddy_sel_nav_item, "title_left_btn", cancel_btn);
}
Evas_Object *ser_lbl = elm_label_add(obj);
char temp_msg[4*256] = {0,};
- snprintf(temp_msg, sizeof(temp_msg), "<font=Tizen:style=Bold color=#008000 align=center><font_size=30>%s</font_size></font>", msg->message);
+ snprintf(temp_msg, sizeof(temp_msg), "<font=Tizen:style=Bold color=#808080 align=center><font_size=27>%s</font_size></font>", msg->message);
elm_object_text_set(ser_lbl, temp_msg);
elm_label_ellipsis_set(ser_lbl, EINA_TRUE);
//evas_object_resize(ser_lbl, 200, 15);
if (!text_to_send || (strlen(text_to_send) == 0))
return ECORE_CALLBACK_CANCEL;
- int unique_id = time(NULL);
+ ad->msg_count = ad->msg_count + 1001;
+ int unique_id = time(NULL) + ad->msg_count;
tg_message_s msg;
msg.msg_id = unique_id;
msg.from_id = ad->current_user_data->user_id.id;
return;
if(add_date_item_to_chat(data)) {
- ecore_timer_add(3, on_new_text_message_send_cb, chat_list);
+ ecore_timer_add(1, on_new_text_message_send_cb, chat_list);
return;
}
-
- int unique_id = time(NULL);
+ ad->msg_count = ad->msg_count + 1001;
+ int unique_id = time(NULL) + ad->msg_count;
tg_message_s msg;
msg.msg_id = unique_id;
msg.from_id = ad->current_user_data->user_id.id;
}
}
+static Eina_Bool on_change_input_type_requested(void *data)
+{
+ Evas_Object* text_entry = data;
+
+ elm_entry_input_panel_layout_set(text_entry, ELM_INPUT_PANEL_LAYOUT_EMOTICON);
+ elm_object_focus_set(text_entry, EINA_TRUE);
+ elm_entry_input_panel_show(text_entry);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
static void on_message_smiley_clicked(void *data, Evas_Object *obj, void *event_info)
{
Evas_Object* text_entry = data;
- //elm_entry_input_panel_hide(text_entry);
- elm_entry_input_panel_layout_set(text_entry,ELM_INPUT_PANEL_LAYOUT_EMOTICON);
+ elm_object_focus_set(obj, EINA_FALSE);
+ elm_object_focus_set(text_entry, EINA_FALSE);
+ elm_entry_input_panel_hide(text_entry);
+ ecore_timer_add(0.3, on_change_input_type_requested, text_entry);
+ /*
+ elm_entry_input_panel_layout_set(text_entry, ELM_INPUT_PANEL_LAYOUT_EMOTICON);
elm_object_focus_set(text_entry, EINA_TRUE);
- //elm_entry_input_panel_show(text_entry);
+ elm_entry_input_panel_show(text_entry);*/
}
static void on_message_text_entry_clicked(void *data, Evas_Object *obj, void *event_info)
{
- //elm_entry_input_panel_hide(obj);
+ elm_entry_input_panel_hide(obj);
elm_entry_input_panel_layout_set(obj,ELM_INPUT_PANEL_LAYOUT_NORMAL);
- //elm_entry_input_panel_show(obj);
+ elm_entry_input_panel_show(obj);
}
peer_with_pic_s *sel_item = eina_list_nth(ad->peer_list, user_id);
- int unique_id = time(NULL);
+ ad->msg_count = ad->msg_count + 1001;
+ int unique_id = time(NULL) + ad->msg_count;
char unique_id_str[50];
sprintf(unique_id_str, "%d", unique_id);
evas_object_data_set(chat_list, "contact_last_name", strdup(last_name));
evas_object_data_set(chat_list, "contact_phone_number", strdup(phone_number));
- ecore_timer_add(3, on_new_contact_message_send_cb, chat_list);
+ ecore_timer_add(1, on_new_contact_message_send_cb, chat_list);
return;
}
peer_with_pic_s *sel_item = eina_list_nth(ad->peer_list, user_id);
- int unique_id = time(NULL);
+ ad->msg_count = ad->msg_count + 1001;
+ int unique_id = time(NULL) + ad->msg_count;
char unique_id_str[50];
sprintf(unique_id_str, "%d", unique_id);
peer_with_pic_s *sel_item = eina_list_nth(ad->peer_list, user_id);
- int unique_id = time(NULL);
+ ad->msg_count = ad->msg_count + 1001;
+ int unique_id = time(NULL) + ad->msg_count;
char unique_id_str[50];
sprintf(unique_id_str, "%d", unique_id);
if(add_date_item_to_chat(data)) {
evas_object_data_set(chat_list, "contact_latitude", strdup(latitude));
evas_object_data_set(chat_list, "contact_longitude", strdup(longitude));
- ecore_timer_add(3, on_new_location_message_send_cb, chat_list);
+ ecore_timer_add(1, on_new_location_message_send_cb, chat_list);
return;
}
peer_with_pic_s *sel_item = eina_list_nth(ad->peer_list, user_id);
- int unique_id = time(NULL);
+ ad->msg_count = ad->msg_count + 1001;
+ int unique_id = time(NULL) + ad->msg_count;
char unique_id_str[50];
sprintf(unique_id_str, "%d", unique_id);
peer_with_pic_s *sel_item = eina_list_nth(ad->peer_list, user_id);
- int unique_id = time(NULL);
+ ad->msg_count = ad->msg_count + 1001;
+ int unique_id = time(NULL) + ad->msg_count;
char unique_id_str[50];
sprintf(unique_id_str, "%d", unique_id);
evas_object_data_set(chat_list, "file_type", strdup(file_type_char));
evas_object_data_set(chat_list, "file_path", strdup(file_path));
- ecore_timer_add(3, on_new_media_message_send_cb, chat_list);
+ ecore_timer_add(1, on_new_media_message_send_cb, chat_list);
return;
}
peer_with_pic_s *sel_item = eina_list_nth(ad->peer_list, user_id);
- int unique_id = time(NULL);
+ ad->msg_count = ad->msg_count + 1001;
+ int unique_id = time(NULL) + ad->msg_count;
char unique_id_str[50];
sprintf(unique_id_str, "%d", unique_id);
evas_object_color_set(data, 45, 165, 224, 178);
}
+void on_message_back_button_clicked(void *data, Evas_Object *obj, void *event_info)
+{
+ appdata_s *ad = data;
+ if (!ad)
+ return;
+
+ app_nf_back_cb(data, obj, event_info);
+}
+
void on_user_info_button_clicked(void *data, Evas_Object *obj, void *event_info)
{
appdata_s *ad = data;
elm_object_part_content_set(main_layout, "swallow.item", title_layout);
Evas_Object *back_btn = create_button(ad->nf, "naviframe/back_btn/default", NULL);
+ evas_object_smart_callback_add(back_btn, "clicked", on_message_back_button_clicked, ad);
elm_object_part_content_set(title_layout, "swallow.back_arrow", back_btn);
tg_main_list_item_s *sel_item = (tg_main_list_item_s*)evas_object_data_get(popup, "selected_chat_item");
int item_id = (int)evas_object_data_get(popup, "selected_chat_item_index");
-
-
Elm_Object_Item *it = event_info;
elm_genlist_item_selected_set(it, EINA_FALSE);
int id = (int)elm_object_item_data_get(it);
int i = 0;
static Elm_Genlist_Item_Class itc;
- itc.item_style = "type1";
+ itc.item_style = "full";
itc.func.text_get = NULL;
itc.func.content_get = on_chat_item_load_requested;
itc.func.state_get = NULL;
if (buddy_list) {
if (is_new_item) {
static Elm_Genlist_Item_Class itc;
- itc.item_style = "type1";
+ itc.item_style = "full";
itc.func.text_get = NULL;
itc.func.content_get = on_chat_item_load_requested;
itc.func.state_get = NULL;
int size = eina_list_count(ad->main_list);
int i = size - 1;
elm_genlist_item_append(buddy_list, &itc, (void*) i, NULL, ELM_GENLIST_ITEM_NONE, NULL, (void*) i);
+ } else {
+ elm_genlist_clear(buddy_list);
+
+ static Elm_Genlist_Item_Class itc;
+ itc.item_style = "full";
+ itc.func.text_get = NULL;
+ itc.func.content_get = on_chat_item_load_requested;
+ itc.func.state_get = NULL;
+ itc.func.del = NULL;
+
+ int i = 0;
+ if (ad->main_list) {
+ 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);
+ }
+ }
}
elm_genlist_realized_items_update(buddy_list);
} else {
evas_object_size_hint_align_set(buddy_list, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_data_set(buddy_list, "app_data", ad);
- itc.item_style = "type1";
+ itc.item_style = "full";
itc.func.text_get = NULL;
itc.func.content_get = on_chat_item_load_requested;
itc.func.state_get = NULL;
Evas_Object* date_lbl;
Evas_Object* msg_status_lbl;
Evas_Object* main_item_layout;
+ Eina_Bool is_selected;
} tg_main_list_item_s;
typedef struct appdata {
Elm_Theme *theme;
int screen_mode_for_fb; // for floating button icon
Evas_Object *menu_popup;
+ int msg_count;
} appdata_s;
extern void show_toast(appdata_s* ad, char* value);
ret = sqlite3_exec(db,var_query, NULL, NULL, &err_msg);
close_database(db);
if( ret != SQLITE_OK ){
+ free(var_query);
sqlite3_free(err_msg);
return EINA_FALSE;
}
extern void process_send_message_command(int buddy_id, int message_id, int msg_type, char* msg_data, int type_of_chat);
extern void process_marked_as_read_command(int buddy_id, int type_of_chat);
extern void process_delete_group_chat_request(tg_engine_data_s* tg_data, int chat_id);
+extern void process_delete_selected_group_chats_request(tg_engine_data_s* tg_data, Eina_List *sel_grp_chats);
extern void process_add_user_request(tg_engine_data_s* tg_data, int buddy_id, char *first_name, char *last_name, char *phone_num);
extern void process_update_chat_request(tg_engine_data_s* tg_data, int chat_id);
extern void process_delete_user_request(tg_engine_data_s* tg_data, int buddy_id);
extern void send_message_received_response(tg_engine_data_s *tg_data, int from_id, int to_id, long long message_id, int type_of_chat);
extern void send_message_sent_to_buddy_response(tg_engine_data_s *tg_data, int buddy_id, int message_id, char* table_name, Eina_Bool is_success, int type_of_chat);
extern void send_group_chat_deleted_response(tg_engine_data_s *tg_data, int chat_id, Eina_Bool is_success);
+extern void send_selected_group_chats_deleted_response(tg_engine_data_s *tg_data);
extern void send_message_read_by_buddy_response(tg_engine_data_s *tg_data, int buddy_id, int message_id, char* table_name, char* phone, int type_of_chat);
extern void send_media_download_completed_response(tg_engine_data_s *tg_data, int buddy_id, int to_id, long long media_id, const char* filename);
extern void send_video_thumb_download_completed_response(tg_engine_data_s *tg_data, int buddy_id, int to_id, long long media_id, const char* filename);
send_message_to_buddy(buddy_id, message_id, msg_type, msg_data, type_of_chat);
}
+void process_delete_selected_group_chats_request(tg_engine_data_s* tg_data, Eina_List *sel_grp_chats)
+{
+ if (!tgl_engine_get_TLS()) {
+ return;
+ }
+ delete_selected_group_chat(tg_data, sel_grp_chats);
+}
+
void process_delete_group_chat_request(tg_engine_data_s* tg_data, int chat_id)
{
if (!tgl_engine_get_TLS()) {
}
+void send_selected_group_chats_deleted_response(tg_engine_data_s *tg_data)
+{
+ bundle *msg = bundle_create();
+ if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
+ ERR("Failed to add data by key to bundle");
+ bundle_free(msg);
+ }
+
+ if (bundle_add_str(msg, "command", "selected_group_chats_deleted_response") != 0) {
+ ERR("Failed to add data by key to bundle");
+ bundle_free(msg);
+ }
+ int result = SVC_RES_FAIL;
+ result = tg_server_send_message(tg_data->tg_server, msg);
+
+ if(result != SVC_RES_OK) {
+ // error: cient not ready
+ }
+ bundle_free(msg);
+}
+
void send_group_chat_deleted_response(tg_engine_data_s *tg_data, int chat_id, Eina_Bool is_success)
{
bundle *msg = bundle_create();
int chat_id = atoi(chat_id_str);
process_delete_group_chat_request(tg_data, chat_id);
+
+ } else if (strcmp(cmd_key_val, "delete_selected_group_chats_request") == 0) {
+
+ char* count_str = NULL;
+ res = bundle_get_str(rec_msg, "list_size", &count_str);
+ int size = atoi(count_str);
+ Eina_List* chat_id_list = NULL;
+
+ for (int count = 0 ; count < size ; count++) {
+ char count_str[10];
+ sprintf(count_str, "%d", count);
+
+ char chat_id_key[20];
+ strcpy(chat_id_key, "chat_id_");
+ strcat(chat_id_key, count_str);
+
+ char* chat_id_str = NULL;
+ res = bundle_get_str(rec_msg, chat_id_key, &chat_id_str);
+
+
+ int chat_id = atoi(chat_id_str);
+ chat_id_list = eina_list_append(chat_id_list, chat_id);
+ }
+
+ if (chat_id_list && eina_list_count(chat_id_list) > 0) {
+ process_delete_selected_group_chats_request(tg_data, chat_id_list);
+ }
+
} else if (strcmp(cmd_key_val, "add_buddy") == 0) {
char* buddy_id_str = NULL;
}
for (int i = size - 1; i >= 0; i--) {
tgl_peer_t* UC = tgl_peer_get(TLS, peers[i]);
+ // user exited from chat
+ if(UC->flags == 144) {
+ continue;
+ }
+
// insert into peer table
insert_peer_into_database(UC, last_msg_id[i], unread_count[i], 0);
switch (tgl_get_peer_type(peers[i])) {
tgl_do_unblock_user(s_info.TLS, peer_id, &on_user_unblock_response , (void*)(buddy_id));
}
+void on_selected_group_chats_delete_reponse(struct tgl_state *TLS, void *callback_extra, int success, struct tgl_message *M)
+{
+ Eina_List *sel_grp_chats = callback_extra;
+ tg_engine_data_s *tg_data = TLS->callback_data;
+ int chat_id = eina_list_nth(sel_grp_chats, tg_data->current_group_chat_index);
+
+ if (success) {
+ // update database
+ // delete from peer table
+ delete_chat_from_db(chat_id);
+ char* msg_table = get_table_name_from_number(chat_id);
+ drop_table(msg_table);
+ free(msg_table);
+ } else {
+
+ }
+
+ tg_data->current_group_chat_index = tg_data->current_group_chat_index + 1;
+
+ if (tg_data->current_group_chat_index < eina_list_count(sel_grp_chats)) {
+ int group_chat_id = (int)eina_list_nth(sel_grp_chats, tg_data->current_group_chat_index);
+
+ tgl_peer_id_t chat_id;
+ chat_id.id = group_chat_id;
+ chat_id.type = TGL_PEER_CHAT;
+
+ tgl_peer_id_t self_id = tg_data->id;
+
+ tgl_do_del_user_from_chat(s_info.TLS, chat_id, self_id, on_selected_group_chats_delete_reponse, (void*)(sel_grp_chats));
+ } else {
+ send_selected_group_chats_deleted_response(tg_data);
+ }
+}
+
+void delete_selected_group_chat(tg_engine_data_s *tg_data, Eina_List *sel_grp_chats)
+{
+ if (sel_grp_chats && eina_list_count(sel_grp_chats) > 0) {
+
+ tg_data->current_group_chat_index = 0;
+ int group_chat_id = (int)eina_list_nth(sel_grp_chats, tg_data->current_group_chat_index);
+
+ tgl_peer_id_t chat_id;
+ chat_id.id = group_chat_id;
+ chat_id.type = TGL_PEER_CHAT;
+
+ tgl_peer_id_t self_id = tg_data->id;
+
+ tgl_do_del_user_from_chat(s_info.TLS, chat_id, self_id, on_selected_group_chats_delete_reponse, (void*)(sel_grp_chats));
+ }
+}
+
void on_group_chat_delete_reponse(struct tgl_state *TLS, void *callback_extra, int success, struct tgl_message *M)
{
int chat_id = (int)callback_extra;
tgl_do_del_user_from_chat(s_info.TLS, chat_id, self_id, on_group_chat_delete_reponse, (void*)(group_chat_id));
}
+
#if 0
void on_new_msg_requested_chat_info_received(struct tgl_state *TLS, void *callback_extra, int success, struct tgl_chat *chat_info)
{
Eina_List *buddy_list;
int current_buddy_index;
+ int current_group_chat_index;
} tg_engine_data_s;
typedef struct contact_data {
extern void request_for_code_via_call(struct tgl_state *TLS, char* phone_no, Eina_Bool trough_sms);
extern void free_contact_data(Eina_List *contact_data);
extern void leave_group_chat(tg_engine_data_s *tg_data, int group_chat_id);
+extern void delete_selected_group_chat(tg_engine_data_s *tg_data, Eina_List *sel_grp_chats);
extern void do_delete_buddy(int buddy_id);
extern void do_add_buddy(int buddy_id, char *first_name, char *last_name, char *phone_num);
extern void do_update_chat_info(int chat_id);