From b594fd2b28430a019a902ce4518546a6edb03738 Mon Sep 17 00:00:00 2001 From: "polu.sandeep" Date: Wed, 19 Aug 2015 20:49:32 +0900 Subject: [PATCH] Following new GUI guide lines Change-Id: I71c8d4a9ad3856803ae2699f5fe9087a6779cf28 --- TelegramTizen/inc/server_requests.h | 4 +- TelegramTizen/inc/tg_chat_conv_view.h | 4 +- TelegramTizen/inc/tg_db_wrapper.h | 7 + TelegramTizen/inc/tg_registration.h | 2 +- TelegramTizen/res/edje/telegram_chat_conv.edc | 281 +++++++++--- TelegramTizen/src/contact_selection_view.c | 4 +- TelegramTizen/src/group_chat_entry_view.c | 4 +- TelegramTizen/src/server_requests.c | 36 +- TelegramTizen/src/telegramtizen.c | 150 ++++++- TelegramTizen/src/tg_buddy_list.c | 138 +++++- TelegramTizen/src/tg_chat_conv_view.c | 16 +- TelegramTizen/src/tg_db_wrapper.c | 608 +++++++++++++++++++++++++- TelegramTizen/src/tg_registration.c | 265 ++++++++++- TelegramTizen/tg_utils/tg_common.h | 501 ++++++++++++++++++++- tg-engine-service/inc/server_response.h | 4 +- tg-engine-service/inc/tg_db_wrapper.h | 3 + tg-engine-service/mtprotocol/queries.c | 49 ++- tg-engine-service/mtprotocol/structures.c | 2 +- tg-engine-service/mtprotocol/tgl-layout.h | 1 + tg-engine-service/src/server_response.c | 21 +- tg-engine-service/src/tg-engine-service.c | 22 +- tg-engine-service/src/tg_db_wrapper.c | 252 ++++++++++- tg-engine-service/tg_engine/tg_engine.c | 233 +++++----- tg-engine-service/tg_engine/tg_engine.h | 4 +- tg-engine-service/tg_engine_utils/tg_common.h | 12 + 25 files changed, 2342 insertions(+), 281 deletions(-) diff --git a/TelegramTizen/inc/server_requests.h b/TelegramTizen/inc/server_requests.h index cb37524..2cdc161 100644 --- a/TelegramTizen/inc/server_requests.h +++ b/TelegramTizen/inc/server_requests.h @@ -14,9 +14,9 @@ void send_request_for_registration(service_client* service_client, const char* p void send_request_for_profile_registration(service_client* service_client, const char* first_name, const char* last_name); void send_request_for_validation(service_client* service_client, const char* sms_code); // type_of_chat 0-buddy, 1-group_chat 2-encrpted_chat -void send_request_for_message_transport(service_client* service_client, const int buddy_id, const int msg_type, const char* data, const int type_of_chat); +void send_request_for_message_transport(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_image_downloading(service_client* service_client, const int buddy_id, const long long media_id); -void send_request_for_media_transport(service_client* service_client, const int buddy_id, const int msg_type, const char* file_path); +void send_request_for_media_transport(service_client* service_client, const int buddy_id, const int message_id, const int media_id, const int msg_type, const char* file_path, const int type_of_chat); void send_contacts_list_to_server(service_client* service_client, Eina_List* contacts_list); void send_group_creation_request_to_server(service_client* service_client, Eina_List* buddy_list, const char* group_name, const char* group_image); diff --git a/TelegramTizen/inc/tg_chat_conv_view.h b/TelegramTizen/inc/tg_chat_conv_view.h index e91741f..70f6b68 100644 --- a/TelegramTizen/inc/tg_chat_conv_view.h +++ b/TelegramTizen/inc/tg_chat_conv_view.h @@ -14,7 +14,7 @@ extern void launch_chat_conv_view_cb(void *data, int user_id); extern void on_chat_buddy_msg_receive(tg_message_s *M, int type_of_chat); extern void on_received_image_loaded(int buddy_id, long long media_id, const char* file_path); -extern void on_message_sent_to_buddy_successfully(tg_message_s *M, int type_of_chat); -extern void on_message_read_by_buddy_successfully(tg_message_s *M, int type_of_chat); +extern void on_message_sent_to_buddy_successfully(appdata_s* ad, tg_message_s *M, int type_of_chat); +extern void on_message_read_by_buddy_successfully(appdata_s* ad, tg_message_s *M, int type_of_chat); #endif /* TG_CHAT_CONV_VIEW_H_ */ diff --git a/TelegramTizen/inc/tg_db_wrapper.h b/TelegramTizen/inc/tg_db_wrapper.h index 093dcda..546dfc9 100644 --- a/TelegramTizen/inc/tg_db_wrapper.h +++ b/TelegramTizen/inc/tg_db_wrapper.h @@ -115,6 +115,7 @@ #define MESSAGE_INFO_TABLE_DATE "date" #define MESSAGE_INFO_TABLE_SERVICE "service" #define MESSAGE_INFO_TABLE_MESSAGE "message" +#define MESSAGE_INFO_TABLE_MESSAGE_STATE "message_state" #define MESSAGE_INFO_TABLE_MESSAGE_LENGTH "message_len" #define MESSAGE_INFO_TABLE_MEDIA_TYPE "media_type" #define MESSAGE_INFO_TABLE_MEDIA_ID "media_id" @@ -174,4 +175,10 @@ Eina_List* get_group_chat_details(); Eina_List* get_all_peer_details(); +void insert_msg_into_db(tg_message_s *M, char* table_name, int unique_id); +void insert_media_info_to_db(tg_message_s *M, char* file_path, int width, int height, int size); + +Eina_List* get_image_details_from_db(long long media_id); +Eina_List* get_image_sizes_from_db(long long media_id); + #endif /* TG_DB_WRAPPER_H_ */ diff --git a/TelegramTizen/inc/tg_registration.h b/TelegramTizen/inc/tg_registration.h index 862469f..d596cf0 100644 --- a/TelegramTizen/inc/tg_registration.h +++ b/TelegramTizen/inc/tg_registration.h @@ -9,6 +9,6 @@ #define TG_REGISTRATION_H_ #include "tg_common.h" -extern void launch_registration_cb(void *data); +extern void launch_registration_cb(appdata_s* ad); #endif /* TG_REGISTRATION_H_ */ diff --git a/TelegramTizen/res/edje/telegram_chat_conv.edc b/TelegramTizen/res/edje/telegram_chat_conv.edc index 23d64d4..345aaa8 100644 --- a/TelegramTizen/res/edje/telegram_chat_conv.edc +++ b/TelegramTizen/res/edje/telegram_chat_conv.edc @@ -1,4 +1,3 @@ - collections { images { @@ -51,6 +50,147 @@ collections } } + +group +{ + name: "chat_image_list_item_group"; + parts{ + part { + name: "swallow.chat_image_list_item,bg"; + type: RECT; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to, "swallow.chat_image_list_item"; } + rel2 { relative: 1.0 1.0; to, "swallow.chat_image_list_item"; } + color: 0 0 0 0; + } + } + part{ + name: "chat_image_list_item_br"; + type:IMAGE; + description{ + state: "default" 0.0; + rel1 { relative: -0.1 -0.1; to, "swallow.chat_image_list_item,bg"; } + rel2 { relative: 1.1 1.1; to, "swallow.chat_image_list_item,bg"; } + image { + border: 13 12 15 11; + normal: "msg_in_photo.9.png"; + } + } + } + part{ + name: "swallow.chat_image_list_item"; + type:SWALLOW; + description{ + state: "default" 0.0; + rel1 { relative: 0.6 0.1; } + rel2 { relative: 0.9 0.9; } + color: 0 0 0 0; + } + } + } +} + + + group + { + name: "chat_image_item"; + parts{ + part{ + name: "swallow.chat_item_bg_image"; + type:SWALLOW; + description{ + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part{ + name: "swallow.chat_image_size"; + type:SWALLOW; + description{ + state: "default" 0.0; + rel1 { relative: 0.3 0.4; } + rel2 { relative: 0.6 0.6; } + color: 0 0 0 0; + } + } + part{ + name: "swallow.chat_image_item"; + type:SWALLOW; + description{ + state: "default" 0.0; + rel1 { relative: 0.8 0.3; } + rel2 { relative: 0.9 0.7; } + color: 0 0 0 0; + } + } + part{ + name: "swallow.chat_image_progress"; + type:SWALLOW; + description{ + state: "default" 0.0; + rel1 { relative: 0.4 0.4; } + rel2 { relative: 0.6 0.6; } + color: 0 0 0 0; + } + } + } + } + + + group + { + name: "image_rounded_mask"; + parts{ + part { + name: "swallow.bg"; + type:SWALLOW; + description { + state: "default" 0.0; + rel1 { relative: -0.2 -0.2; to, "swallow.image_rounded_mask"; } + rel2 { relative: 1.2 1.2; to, "swallow.image_rounded_mask"; } + color: 0 0 0 0; + } + } + part{ + name: "swallow.image_rounded_mask"; + type:SWALLOW; + description{ + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + } + } + + group + { + name: "chat_list_with_bg"; + parts{ + part { + name: "swallow.bg"; + type:SWALLOW; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 0; + } + } + part{ + name: "swallow.chat_list_with_bg"; + type:SWALLOW; + description{ + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + } + } + group { name: "chat_bg_conv"; @@ -90,65 +230,106 @@ collections } } + +group +{ + name: "chat_title_box"; + parts{ + part { + name: "swallow.profile_pic,bg"; + type: RECT; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.2 1.0; } + color: 50 255 255 200; + } + } + part{ + name: "swallow.profile_pic"; + type:SWALLOW; + description{ + state: "default" 0.0; + rel1 { relative: 0.05 0.05; } + rel2 { relative: 0.15 0.95; } + } + } + + part { + name: "swallow.profile_name,bg"; + type: RECT; + description { + state: "default" 0.0; + rel1 { relative: 0.2 0.0; } + rel2 { relative: 1.0 0.5; } + color: 50 255 255 200; + } + } + + part{ + name: "swallow.profile_name"; + type:SWALLOW; + description{ + state: "default" 0.0; + rel1 { relative: 0.2 0.0; } + rel2 { relative: 1.0 0.5; } + } + } + + part { + name: "swallow.profile_time,bg"; + type: RECT; + description { + state: "default" 0.0; + rel1 { relative: 0.2 0.5; } + rel2 { relative: 1.0 1.0; } + color: 50 255 255 200; + } + } + + part{ + name: "swallow.profile_time"; + type:SWALLOW; + description{ + state: "default" 0.0; + rel1 { relative: 0.2 0.5; } + rel2 { relative: 1.0 1.0; } + } + } + } +} + + + + group { name: "chat_conv"; parts{ - part { - name: "swallow.chat_box,bg"; - type: RECT; - description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; to, "swallow.chat_box"; } - rel2 { relative: 1.0 1.0; to, "swallow.chat_box"; } - color: 0 0 0 0; - } - } - part{ - name: "chat_box_bg_image"; - type:IMAGE; - description{ - state: "default" 0.0; - rel1 { relative: 0.0 0.0; to, "swallow.chat_box,bg"; } - rel2 { relative: 1.0 1.0; to, "swallow.chat_box,bg"; } - image { - normal: "chat_bg.jpg"; - } - } - } - part{ - name: "swallow.chat_box"; + part{ + name: "swallow.title_box"; type:SWALLOW; description{ state: "default" 0.0; rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 0.9; } + rel2 { relative: 1.0 0.1; } + align: 0.3 1.0; + fixed: 0.5 1.0; + min: 0 100; } } - part { - name: "swallow.entry_box,bg"; - type: RECT; - description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; to, "swallow.entry_box"; } - rel2 { relative: 1.0 1.0; to, "swallow.entry_box"; } - color: 0 0 0 0; - } - } - part{ - name: "chat_entry_bg_image"; - type:IMAGE; + part{ + name: "swallow.chat_box"; + type:SWALLOW; description{ state: "default" 0.0; - rel1 { relative: 0.0 0.0; to, "swallow.entry_box,bg"; } - rel2 { relative: 1.0 1.0; to, "swallow.entry_box,bg"; } - image { - normal: "chat_bg.jpg"; - } + rel1 { relative: 0.0 0.1; } + rel2 { relative: 1.0 0.9; } + align: 0.5 1.0; + fixed: 0.5 1.0; } } - - part{ + part{ name: "swallow.entry_box"; type:SWALLOW; description{ @@ -170,14 +351,14 @@ collections name: "chat_entry_box"; parts{ part{ - name: "swallow.attach_icon"; + name: "swallow.smiely_icon"; type:SWALLOW; description{ state: "default" 0.0; rel1 { relative: 0.0 0.1; } rel2 { relative: 0.15 0.9; } - min: 75 75; - max: 75 75; + min: 50 50; + max: 50 50; } } part { @@ -200,7 +381,7 @@ collections } } part{ - name: "swallow.smiely_icon"; + name: "swallow.attach_icon"; type:SWALLOW; description{ state: "default" 0.0; diff --git a/TelegramTizen/src/contact_selection_view.c b/TelegramTizen/src/contact_selection_view.c index 49af302..9ff1a94 100644 --- a/TelegramTizen/src/contact_selection_view.c +++ b/TelegramTizen/src/contact_selection_view.c @@ -167,9 +167,9 @@ Evas_Object* on_buddy_selection_part_content_get_cb(void *data, Evas_Object *obj user_data_s* user = item->use_data; if (user->photo_path && strcmp(user->photo_path, "") != 0) { - image = buddy_widget_main_icon_get(user->photo_path, obj); + image = create_image_object_from_file(user->photo_path, obj); } else { - image = buddy_widget_main_icon_get(ui_utils_get_resource(FM_ICON_ROBO_BUDDY), obj); + image = create_image_object_from_file(ui_utils_get_resource(FM_ICON_ROBO_BUDDY), obj); } item->contact_icon = image; diff --git a/TelegramTizen/src/group_chat_entry_view.c b/TelegramTizen/src/group_chat_entry_view.c index b1e2291..9cb1116 100644 --- a/TelegramTizen/src/group_chat_entry_view.c +++ b/TelegramTizen/src/group_chat_entry_view.c @@ -165,9 +165,9 @@ Evas_Object* on_group_buddy_selection_part_content_get_cb(void *data, Evas_Objec user_data_s* user = item->use_data; if (user->photo_path && strcmp(user->photo_path, "") != 0) { - image = buddy_widget_main_icon_get(user->photo_path, obj); + image = create_image_object_from_file(user->photo_path, obj); } else { - image = buddy_widget_main_icon_get(ui_utils_get_resource(FM_ICON_ROBO_BUDDY), obj); + image = create_image_object_from_file(ui_utils_get_resource(FM_ICON_ROBO_BUDDY), obj); } item->contact_icon = image; diff --git a/TelegramTizen/src/server_requests.c b/TelegramTizen/src/server_requests.c index 265c68f..6eee303 100644 --- a/TelegramTizen/src/server_requests.c +++ b/TelegramTizen/src/server_requests.c @@ -122,7 +122,7 @@ void send_request_for_validation(service_client* service_client, const char* sms bundle_free(msg); } -void send_request_for_message_transport(service_client* service_client, const int buddy_id, const int msg_type, const char* data, const int type_of_chat) +void send_request_for_message_transport(service_client* service_client, const int buddy_id, const int message_id, const int msg_type, const char* data, const int type_of_chat) { if (!service_client || !data) { // error @@ -148,6 +148,14 @@ void send_request_for_message_transport(service_client* service_client, const in bundle_free(msg); } + char message_id_str[50]; + sprintf(message_id_str, "%d", message_id); + + if (bundle_add_str(msg, "message_id", message_id_str) != 0) { + ERR("Failed to add data by key to bundle"); + bundle_free(msg); + } + char msg_type_str[10]; sprintf(msg_type_str, "%d", msg_type); @@ -178,7 +186,7 @@ void send_request_for_message_transport(service_client* service_client, const in bundle_free(msg); } -void send_request_for_media_transport(service_client* service_client, const int buddy_id, const int msg_type, const char* file_path) +void send_request_for_media_transport(service_client* service_client, const int buddy_id, const int message_id, const int media_id, const int msg_type, const char* file_path, const int type_of_chat) { if (!service_client || !file_path) { // error @@ -204,6 +212,22 @@ void send_request_for_media_transport(service_client* service_client, const int bundle_free(msg); } + char message_id_str[50]; + sprintf(message_id_str, "%d", message_id); + + if (bundle_add_str(msg, "message_id", message_id_str) != 0) { + ERR("Failed to add data by key to bundle"); + bundle_free(msg); + } + + char media_id_str[50]; + sprintf(media_id_str, "%d", media_id); + + if (bundle_add_str(msg, "media_id", media_id_str) != 0) { + ERR("Failed to add data by key to bundle"); + bundle_free(msg); + } + char msg_type_str[10]; sprintf(msg_type_str, "%d", msg_type); @@ -217,6 +241,14 @@ void send_request_for_media_transport(service_client* service_client, const int bundle_free(msg); } + char type_of_chat_str[50]; + sprintf(type_of_chat_str, "%d", type_of_chat); + + if (bundle_add_str(msg, "type_of_chat", type_of_chat_str) != 0) { + ERR("Failed to add data by key to bundle"); + bundle_free(msg); + } + int result = SVC_RES_FAIL; result = service_client_send_message(service_client, msg); diff --git a/TelegramTizen/src/telegramtizen.c b/TelegramTizen/src/telegramtizen.c index d9412f4..c36b5fd 100644 --- a/TelegramTizen/src/telegramtizen.c +++ b/TelegramTizen/src/telegramtizen.c @@ -9,6 +9,8 @@ #include "device_contacts_manager.h" #include "contacts-db-utils.h" #include "server_requests.h" +#include "tg_buddy_chat_view.h" +#include "tg_init_screen.h" static void popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info) @@ -267,6 +269,65 @@ void load_peer_data(appdata_s *ad) peer_with_pic_s *item = (peer_with_pic_s*) malloc(sizeof (peer_with_pic_s)); item->use_data = peer_info; item->contact_icon = NULL; + + if (peer_info->last_msg_id > 0) { + // get message from message table. + + char* tablename = get_table_name_from_number(peer_info->peer_id); + tg_message_s* msg = get_message_from_message_table(peer_info->last_msg_id, tablename); + + if (msg) { + int media_type = msg->media_type; + if(media_type == tgl_message_media_none) { + if (msg->message && strlen(msg->message) > 0) { + item->last_message = strdup(msg->message); + } else { + item->last_message = strdup(" "); + } + } else if(media_type == tgl_message_media_photo) { + item->last_message = strdup("Image"); + } else if(media_type == tgl_message_media_document) { + item->last_message = strdup("Document"); + } else if(media_type == tgl_message_media_geo) { + item->last_message = strdup("Geo location"); + } else if(media_type == tgl_message_media_contact) { + item->last_message = strdup("Contact"); + } else if(media_type == tgl_message_media_unsupported) { + item->last_message = strdup(" "); + } else if(media_type == tgl_message_media_photo_encr) { + item->last_message = strdup("Image encrypted"); + } else if(media_type == tgl_message_media_document_encr) { + item->last_message = strdup("Document encrypted"); + } else { + item->last_message = strdup(" "); + } + + // delete message object + + if(msg->message) { + free(msg->message); + msg->message = NULL; + } + + if(msg->media_id) { + free(msg->media_id); + msg->media_id = NULL; + } + + free(msg); + msg = NULL; + + } else { + item->last_message = strdup(" "); + } + + if (tablename) { + free(tablename); + tablename = NULL; + } + + } + ad->peer_list = eina_list_append(ad->peer_list, item); } eina_list_free(peer_details); @@ -800,13 +861,26 @@ static int _on_service_client_msg_received_cb(void *data, bundle *const rec_msg) if (type_of_chat == TGL_PEER_USER) { if (app->current_app_state == TG_BUDDY_CHAT_CONV_STATE && app->buddy_in_cahtting_data && app->buddy_in_cahtting_data->peer_id == from_id) { +#if 0 char* tablename = get_table_name_from_number(from_id); tg_message_s* msg = get_message_from_message_table(message_id, tablename); if (msg) { on_chat_buddy_msg_receive(msg, type_of_chat); } + if(msg->message) { + free(msg->message); + msg->message = NULL; + } + + if(msg->media_id) { + free(msg->media_id); + msg->media_id = NULL; + } free(tablename); free(msg); +#else + on_message_received_from_buddy(app, message_id, type_of_chat); +#endif } } else if (type_of_chat == TGL_PEER_CHAT) { if (app->current_app_state == TG_BUDDY_CHAT_CONV_STATE && app->buddy_in_cahtting_data @@ -816,6 +890,15 @@ static int _on_service_client_msg_received_cb(void *data, bundle *const rec_msg) if (msg) { on_chat_buddy_msg_receive(msg, type_of_chat); } + if(msg->message) { + free(msg->message); + msg->message = NULL; + } + + if(msg->media_id) { + free(msg->media_id); + msg->media_id = NULL; + } free(tablename); free(msg); } @@ -845,14 +928,23 @@ static int _on_service_client_msg_received_cb(void *data, bundle *const rec_msg) if (msg && app->current_app_state == TG_BUDDY_CHAT_CONV_STATE && app->buddy_in_cahtting_data && app->buddy_in_cahtting_data->peer_id == buddy_id) { - // update message to sent state // show_toast(app, "message sent successfully"); - on_message_sent_to_buddy_successfully(msg, type_of_chat); - + //on_message_sent_to_buddy_successfully(app, msg, type_of_chat); + on_message_state_changed(app, msg, type_of_chat); } + if (msg) { + if(msg->message) { + free(msg->message); + msg->message = NULL; + } - free(msg); + if(msg->media_id) { + free(msg->media_id); + msg->media_id = NULL; + } + free(msg); + } } else if (strcmp(rec_key_val, "message_read_by_buddy") == 0) { char* buddy_id_str = NULL; result = bundle_get_str(rec_msg, "buddy_id", &buddy_id_str); @@ -879,10 +971,21 @@ static int _on_service_client_msg_received_cb(void *data, bundle *const rec_msg) // update message to sent state // show_toast(app, "message sent successfully"); - on_message_read_by_buddy_successfully(msg, type_of_chat); + //on_message_read_by_buddy_successfully(app, msg, type_of_chat); + on_message_state_changed(app, msg, type_of_chat); } + if (msg) { + if(msg->message) { + free(msg->message); + msg->message = NULL; + } - free(msg); + if(msg->media_id) { + free(msg->media_id); + msg->media_id = NULL; + } + free(msg); + } } else if (strcmp(rec_key_val, "media_download_completed") == 0) { char* buddy_id_str = NULL; @@ -899,7 +1002,8 @@ static int _on_service_client_msg_received_cb(void *data, bundle *const rec_msg) if (file_name && app->current_app_state == TG_BUDDY_CHAT_CONV_STATE && app->buddy_in_cahtting_data && app->buddy_in_cahtting_data->peer_id == buddy_id) { // update media to sent state - on_received_image_loaded(buddy_id, media_id, file_name); + //on_received_image_loaded(buddy_id, media_id, file_name); + on_image_download_completed(app, buddy_id, media_id, file_name); } } else if (strcmp(rec_key_val, "name_registration_request") == 0) { @@ -995,9 +1099,13 @@ static int _on_service_client_msg_received_cb(void *data, bundle *const rec_msg) char* buddy_id_str = NULL; result = bundle_get_str(rec_msg, "buddy_id", &buddy_id_str); int buddy_id = atoi(buddy_id_str); - // update to online or last seen, if current view is conversation. + // sandeep + if (app->current_app_state == TG_BUDDY_CHAT_CONV_STATE && app->buddy_in_cahtting_data && app->buddy_in_cahtting_data->peer_id == buddy_id) { + on_budy_state_changed(app, buddy_id); + } + } else if (strcmp(rec_key_val, "type_status_updated") == 0) { char* buddy_id_str = NULL; @@ -1115,6 +1223,10 @@ void app_nf_back_cb(void *data, Evas_Object *obj, void *event_info) { appdata_s *ad = data; switch(ad->current_app_state) { + case TG_INIT_SCREEN_STATE: + elm_win_lower(ad->win); + elm_exit(); + break; case TG_REGISTRATION_STATE: elm_win_lower(ad->win); elm_exit(); @@ -1133,6 +1245,11 @@ void app_nf_back_cb(void *data, Evas_Object *obj, void *event_info) elm_exit(); break; case TG_BUDDY_CHAT_CONV_STATE: + ad->buddy_in_cahtting_data = NULL; + if (ad->loaded_msg_list) { + eina_list_free(ad->loaded_msg_list); + ad->loaded_msg_list = NULL; + } elm_naviframe_item_pop(ad->nf); ad->current_app_state = TG_BUDDY_LIST_STATE; //evas_object_show(ad->panel); @@ -1211,11 +1328,18 @@ static void create_base_gui(appdata_s *ad) elm_win_conformant_set(ad->win, EINA_TRUE); elm_win_autodel_set(ad->win, EINA_TRUE); + elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW); + elm_app_base_scale_set(1.8); + if (elm_win_wm_rotation_supported_get(ad->win)) { int rots[4] = { 0, 90, 180, 270 }; elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4); } + char edj_path[PATH_MAX] = {0, }; + app_get_resource(TELEGRAM_CUSTOM_WINSET_EDJ, edj_path, (int)PATH_MAX); + + elm_theme_extension_add(NULL, edj_path); evas_object_smart_callback_add(ad->win, "delete,request", win_delete_request_cb, NULL); ad->conform = elm_conformant_add(ad->win); @@ -1248,10 +1372,9 @@ static void create_base_gui(appdata_s *ad) if (!user_info) { elm_naviframe_item_pop(ad->nf); ad->current_app_state = TG_REGISTRATION_STATE; - launch_registration_cb(ad); - + //launch_registration_cb(ad); //launch_first_registration_cb(ad); - + launch_init_screen(ad); } else { //show_toast(ad, "user already registered"); load_registered_user_data(ad, user_info); @@ -1280,6 +1403,7 @@ app_create(void *data) ad->buddy_list = NULL; ad->is_first_time_registration = EINA_FALSE; ad->panel = NULL; + ad->loaded_msg_list = NULL; create_base_gui(ad); init_service(ad); return true; @@ -1379,3 +1503,7 @@ main(int argc, char *argv[]) return ret; } + + + + diff --git a/TelegramTizen/src/tg_buddy_list.c b/TelegramTizen/src/tg_buddy_list.c index acb991b..fc9e17f 100644 --- a/TelegramTizen/src/tg_buddy_list.c +++ b/TelegramTizen/src/tg_buddy_list.c @@ -7,17 +7,10 @@ #include "tg_buddy_list.h" #include "tg_chat_conv_view.h" #include "contact_selection_view.h" +#include "tg_buddy_conversation_view.h" +#include "tg_buddy_chat_view.h" -Evas_Object *on_list_main_icon_get(const char *icon_name, Evas_Object *parent) -{ - Evas_Object *icon = elm_image_add(parent); - elm_object_focus_set(icon, EINA_FALSE); - elm_image_file_set(icon, icon_name, NULL); - evas_object_show(icon); - return icon; -} - char* on_list_text_get_cb(void *data, Evas_Object *obj, const char *part) { @@ -42,12 +35,19 @@ char* on_list_text_get_cb(void *data, Evas_Object *obj, const char *part) tg_peer_info_s* user = item->use_data; if (!strcmp(part,"elm.text")){ - //return strdup(user->print_name); + + char* user_name = replace(user->print_name, '_', " "); + char buf[512] = {'\0'}; - snprintf(buf, 512, "%s", user->print_name); + snprintf(buf, 512, "%s", user_name); + + free(user_name); + return strdup(buf); } else if (!strcmp(part, "elm.text.sub")) { + +#if 0 time_t t = user->last_seen_time; const char *format = "last seen %b %d %Y at %H:%M"; struct tm lt; @@ -61,10 +61,16 @@ char* on_list_text_get_cb(void *data, Evas_Object *obj, const char *part) sizeof(res), format); exit(0); } - +#else + char* res = NULL; + if (item->last_message) { + res = item->last_message; + } else { + res = " "; + } +#endif char buf[512] = {'\0'}; - snprintf(buf, 512, "%s", res); - + snprintf(buf, 512, "%s", res); return strdup(buf); } @@ -188,6 +194,7 @@ Evas_Object* on_list_content_get_cb(void *data, Evas_Object *obj, const char *pa { Evas_Object *eo = NULL; if (!strcmp(part, "elm.swallow.icon")) { +#if 0 Evas_Object *image = NULL; int id = (int) data; appdata_s* ad = evas_object_data_get(obj, "app_data"); @@ -216,6 +223,105 @@ Evas_Object* on_list_content_get_cb(void *data, Evas_Object *obj, const char *pa elm_layout_theme_set(eo, "layout", "list/C/type.3", "default"); elm_layout_content_set(eo, "elm.swallow.content", image); } +#else +#if 0 + Evas_Object *layout = NULL; + + char edj_path[PATH_MAX] = {0, }; + layout = elm_layout_add(obj); + app_get_resource(EDJ_CHAT_CONV_FILE, edj_path, (int)PATH_MAX); + elm_layout_file_set(layout, edj_path, "image_rounded_mask"); + evas_object_show(layout); + + + Evas_Object *image = NULL; + int id = (int) data; + appdata_s* ad = evas_object_data_get(obj, "app_data"); + + int size = eina_list_count(ad->peer_list); + + if (size <= 0) { + return eo; + } + + peer_with_pic_s* item = eina_list_nth(ad->peer_list, id); + tg_peer_info_s* user = item->use_data; + + if (user->photo_path && strcmp(user->photo_path, "") != 0) { + image = on_list_main_icon_get(user->photo_path, obj); + } else { + image = on_list_main_icon_get(ui_utils_get_resource(FM_ICON_ROBO_BUDDY), obj); + + //image = on_list_main_icon_get(ui_utils_get_resource(LIST_CONTACT_ROUND_MASK_ICON), obj); + } + + item->contact_icon = image; + evas_object_event_callback_add(item->contact_icon, EVAS_CALLBACK_DEL, icon_del_cb, item); + + if(image) { + eo = elm_layout_add(obj); + elm_layout_theme_set(eo, "layout", "list/C/type.3", "default"); + elm_layout_content_set(eo, "elm.swallow.content", image); + } + + + Evas_Object *mask_image = NULL; + mask_image = on_list_main_icon_get(ui_utils_get_resource(LIST_CONTACT_ROUND_MASK_ICON), obj); + + Evas_Object* mask_eo = elm_layout_add(obj); + elm_layout_theme_set(mask_eo, "layout", "list/C/type.3", "default"); + elm_layout_content_set(mask_eo, "elm.swallow.content", mask_image); + + elm_object_part_content_set(layout, "swallow.bg", mask_eo); + elm_object_part_content_set(layout, "swallow.image_rounded_mask", eo); + + return layout; +#endif + + + Evas_Object* button = elm_button_add(obj); + //elm_object_style_set(button, "transparent"); + evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL); + //Evas_Object *mask_image = NULL; + //mask_image = on_list_main_icon_get(ui_utils_get_resource(LIST_CONTACT_ROUND_MASK_ICON), obj); + //elm_object_content_set(button, mask_image); + + + Evas_Object *image = NULL; + int id = (int) data; + appdata_s* ad = evas_object_data_get(obj, "app_data"); + + int size = eina_list_count(ad->peer_list); + + if (size <= 0) { + return eo; + } + + peer_with_pic_s* item = eina_list_nth(ad->peer_list, id); + tg_peer_info_s* user = item->use_data; + + if (user->photo_path && strcmp(user->photo_path, "") != 0) { + image = create_image_object_from_file(user->photo_path, obj); + } else { + image = create_image_object_from_file(ui_utils_get_resource(FM_ICON_ROBO_BUDDY), obj); + } + + elm_image_fill_outside_set(image, EINA_TRUE); + elm_image_resizable_set(image, EINA_TRUE, EINA_TRUE); + elm_image_prescale_set(image, 100); + + item->contact_icon = image; + evas_object_event_callback_add(item->contact_icon, EVAS_CALLBACK_DEL, icon_del_cb, item); + + elm_object_part_content_set(button, "icon", image); + + eo = elm_layout_add(obj); + elm_layout_theme_set(eo, "layout", "list/C/type.3", "default"); + elm_layout_content_set(eo, "elm.swallow.content", button); + + return eo; +#endif } return eo; } @@ -231,7 +337,9 @@ static void on_buddy_clicked(void *data, Evas_Object *obj, void *event_info) peer_with_pic_s* sel_item = eina_list_nth(ad->peer_list, item_id); ad->buddy_in_cahtting_data = sel_item->use_data; - launch_chat_conv_view_cb(ad, item_id); + //launch_chat_conv_view_cb(ad, item_id); + //launch_buddy_conversation_view(ad, item_id); + launch_buddy_chat_view_cb(ad, item_id); } void on_search_clicked(void *data, Evas_Object *obj, void *event_info) diff --git a/TelegramTizen/src/tg_chat_conv_view.c b/TelegramTizen/src/tg_chat_conv_view.c index 527afca..3ae90b2 100644 --- a/TelegramTizen/src/tg_chat_conv_view.c +++ b/TelegramTizen/src/tg_chat_conv_view.c @@ -30,16 +30,10 @@ typedef struct appdata_chat_conv_view{ static appdata_chat_conv_view_s chat_conv_view_data = {0,}; -typedef enum { - CHAT_MESSAGE_BUBBLE_NONE = 0, - CHAT_MESSAGE_BUBBLE_SENT, - CHAT_MESSAGE_BUBBLE_RECEIVE, - CHAT_MESSAGE_BUBBLE_LAST -} Chat_message_Bubble_Style; #define CHAT_BUBBLE_TEXT_WIDTH 200 #define CHAT_BUBBLE_MAIN_TEXT_STYLE "%s" -#define CHAT_BUBBLE_SUB_TEXT_STYLE "%s" + static Evas_Object *create_bubble_table(Evas_Object *parent, Chat_message_Bubble_Style style, const char *main_text, const char *sub_text); static Evas_Object *create_image_bubble_table(Evas_Object *parent, Chat_message_Bubble_Style style, const char *file_path, const char *sub_text, char* media_id); @@ -61,12 +55,12 @@ static void on_chat_item_clicked(void *data, Evas_Object *obj, void *event_info) } } -void on_message_sent_to_buddy_successfully(tg_message_s *M, int type_of_chat) +void on_message_sent_to_buddy_successfully(appdata_s* ad, tg_message_s *M, int type_of_chat) { // update UI } -void on_message_read_by_buddy_successfully(tg_message_s *M, int type_of_chat) +void on_message_read_by_buddy_successfully(appdata_s* ad, tg_message_s *M, int type_of_chat) { // update UI } @@ -449,7 +443,7 @@ void send_message_to_buddy(appdata_chat_conv_view_s *ad) return; // send request to service - send_request_for_message_transport(ad->ad->service_client, ad->sel_item->use_data->peer_id, tgl_message_media_none, text_to_send, chat_conv_view_data.sel_item->use_data->peer_type); + //send_request_for_message_transport(ad->ad->service_client, ad->sel_item->use_data->peer_id, tgl_message_media_none, text_to_send, chat_conv_view_data.sel_item->use_data->peer_type); bubble_table = create_bubble_table(ad->ad->win, CHAT_MESSAGE_BUBBLE_SENT, elm_entry_entry_get(ad->text_entry), @@ -466,7 +460,7 @@ void send_message_to_buddy(appdata_chat_conv_view_s *ad) void send_image_to_buddy(appdata_chat_conv_view_s *ad, const char* file_path) { Evas_Object *bubble_table; - send_request_for_media_transport(ad->ad->service_client, ad->sel_item->use_data->peer_id, tgl_message_media_photo, file_path); + //send_request_for_media_transport(ad->ad->service_client, ad->sel_item->use_data->peer_id, tgl_message_media_photo, file_path); int t = time(NULL); // to identify message after getting id. char unique_id[50]; sprintf(unique_id, "%d", t); diff --git a/TelegramTizen/src/tg_db_wrapper.c b/TelegramTizen/src/tg_db_wrapper.c index 7de0562..eeadc7d 100644 --- a/TelegramTizen/src/tg_db_wrapper.c +++ b/TelegramTizen/src/tg_db_wrapper.c @@ -727,6 +727,7 @@ tg_message_s* get_message_from_message_table(long long msg_id, char* table_name) col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID); @@ -746,6 +747,7 @@ tg_message_s* get_message_from_message_table(long long msg_id, char* table_name) col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); @@ -839,25 +841,31 @@ tg_message_s* get_message_from_message_table(long long msg_id, char* table_name) free(temp_msg); } - int *temp_message_len = (int*)eina_list_nth(ts_msg, 11); + int *temp_message_state = (int*)eina_list_nth(ts_msg, 11); + if (temp_message_state) { + message->msg_state = *temp_message_state; + free(temp_message_state); + } + + int *temp_message_len = (int*)eina_list_nth(ts_msg, 12); if (temp_message_len) { message->message_len = *temp_message_len; free(temp_message_len); } - int *temp_media_type = (int*)eina_list_nth(ts_msg, 12); + int *temp_media_type = (int*)eina_list_nth(ts_msg, 13); if (temp_media_type) { message->media_type = *temp_media_type; free(temp_media_type); } - char *temp_media_id = (char*)eina_list_nth(ts_msg, 13); + char *temp_media_id = (char*)eina_list_nth(ts_msg, 14); if (temp_media_id) { message->media_id = strdup(temp_media_id); free(temp_media_id); } - int *temp_unique_id = (int*)eina_list_nth(ts_msg, 14); + int *temp_unique_id = (int*)eina_list_nth(ts_msg, 15); if (temp_unique_id) { message->unique_id = *temp_unique_id; free(temp_unique_id); @@ -866,6 +874,410 @@ tg_message_s* get_message_from_message_table(long long msg_id, char* table_name) return message; } +void insert_msg_into_db(tg_message_s *M, char* table_name, int unique_id) +{ + if(!M) { + return; + } + sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH); + if(db) { + Eina_List* col_names = NULL; + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID); + + + Eina_List* col_types = NULL; + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + + + Eina_List* col_values = NULL; + col_values = eina_list_append(col_values, &(M->msg_id)); + col_values = eina_list_append(col_values, &(M->flags)); + col_values = eina_list_append(col_values, &(M->fwd_from_id)); + col_values = eina_list_append(col_values, &(M->fwd_date)); + col_values = eina_list_append(col_values, &(M->from_id)); + col_values = eina_list_append(col_values, &(M->to_id)); + col_values = eina_list_append(col_values, &(M->out)); + col_values = eina_list_append(col_values, &(M->unread)); + col_values = eina_list_append(col_values, &(M->date)); + col_values = eina_list_append(col_values, &(M->service)); + + if(M->message) + col_values = eina_list_append(col_values, M->message); + else + col_values = eina_list_append(col_values, " "); + + col_values = eina_list_append(col_values, &(M->msg_state)); + col_values = eina_list_append(col_values, &(M->message_len)); + col_values = eina_list_append(col_values, &(M->media_type)); + + col_values = eina_list_append(col_values, M->media_id); + + col_values = eina_list_append(col_values, &unique_id); + + Eina_Bool ret = insert_table(db, table_name, col_names, col_types,col_values); + if(!ret) { + //("error: database creation failed"); + } else { + + } + eina_list_free(col_names); + eina_list_free(col_types); + eina_list_free(col_values); + close_database(db); + } +} + +void insert_media_info_to_db(tg_message_s *M, char* file_path, int width, int height, int size) +{ + if(!M || !file_path) { + return; + } + + sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH); + char* table_name = MEDIA_INFO_TABLE_NAME; + + if(db) { + Eina_List* col_names = NULL; + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM); + + + /********************************************************************/ + + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1); + + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2); + + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3); + + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4); + + + /********************************************************************/ + + + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH); + + Eina_List* col_types = NULL; + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + + + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + + Eina_List* col_values = NULL; + + + int media_type = M->media_type; + + if (media_type == tgl_message_media_photo) { + + col_values = eina_list_append(col_values,M->media_id); + col_values = eina_list_append(col_values, &(media_type)); + + long temp_val = 0; + + char access_hash_str[50]; + sprintf(access_hash_str, "%lld", temp_val); + + col_values = eina_list_append(col_values, access_hash_str); + col_values = eina_list_append(col_values, &(temp_val)); + col_values = eina_list_append(col_values, &(M->date)); + + col_values = eina_list_append(col_values, ""); + + double longitude = 0.0f; + double latitude = 0.0f; + + char long_str[50]; + sprintf(long_str,"%lf",longitude); + + char lat_str[50]; + sprintf(lat_str,"%lf",latitude); + + col_values = eina_list_append(col_values, long_str); + col_values = eina_list_append(col_values, long_str); + + + + int temp_sizes = 4; + col_values = eina_list_append(col_values, &temp_sizes); + + + for (int j = 0; j < 4; j++) { + + char* photo_type = ""; + col_values = eina_list_append(col_values, photo_type); + + int photo_loc_dc = -1; + col_values = eina_list_append(col_values, &photo_loc_dc); + + col_values = eina_list_append(col_values, ""); + + int photo_loc_id = -1; + col_values = eina_list_append(col_values, &photo_loc_id); + + + col_values = eina_list_append(col_values, ""); + + + col_values = eina_list_append(col_values, &width); + + col_values = eina_list_append(col_values, &height); + + col_values = eina_list_append(col_values, &size); + + char* photo_data = ""; + col_values = eina_list_append(col_values, photo_data); + + } + + + } else if (media_type == tgl_message_media_document) { + + int temp_val = 0; + col_values = eina_list_append(col_values, &(temp_val)); + col_values = eina_list_append(col_values, &(temp_val)); + col_values = eina_list_append(col_values, &(temp_val)); + col_values = eina_list_append(col_values, &(temp_val)); + col_values = eina_list_append(col_values, &(temp_val)); + + + col_values = eina_list_append(col_values, ""); + + double longitude = 0.0f; + double latitude = 0.0f; + + char long_str[50]; + sprintf(long_str,"%lf",longitude); + + char lat_str[50]; + sprintf(lat_str,"%lf",latitude); + + col_values = eina_list_append(col_values, long_str); + col_values = eina_list_append(col_values, long_str); + col_values = eina_list_append(col_values, &(temp_val)); + + + for (int j = 0; j < 4; j++) { + + char* photo_type = ""; + col_values = eina_list_append(col_values, photo_type); + + int photo_loc_dc = -1; + col_values = eina_list_append(col_values, &photo_loc_dc); + + col_values = eina_list_append(col_values, ""); + + int photo_loc_id = -1; + col_values = eina_list_append(col_values, &photo_loc_id); + + col_values = eina_list_append(col_values, ""); + + col_values = eina_list_append(col_values, &width); + + col_values = eina_list_append(col_values, &height); + + col_values = eina_list_append(col_values, &size); + + char* photo_data = ""; + col_values = eina_list_append(col_values, photo_data); + + } + } else { + // To be checked + int dummy = 0; + col_values = eina_list_append(col_values, &(dummy)); + col_values = eina_list_append(col_values, &(media_type)); + col_values = eina_list_append(col_values, &(dummy)); + col_values = eina_list_append(col_values, &(dummy)); + col_values = eina_list_append(col_values, &(dummy)); + + col_values = eina_list_append(col_values, ""); + + double longitude = 0.0f; + double latitude = 0.0f; + + char long_str[50]; + sprintf(long_str,"%lf",longitude); + + char lat_str[50]; + sprintf(lat_str,"%lf",latitude); + + col_values = eina_list_append(col_values, long_str); + col_values = eina_list_append(col_values, long_str); + col_values = eina_list_append(col_values, &(dummy)); + + for (int j = 0; j < 4; j++) { + + char* photo_type = ""; + col_values = eina_list_append(col_values, photo_type); + + int photo_loc_dc = -1; + col_values = eina_list_append(col_values, &photo_loc_dc); + + col_values = eina_list_append(col_values, ""); + + int photo_loc_id = -1; + col_values = eina_list_append(col_values, &photo_loc_id); + + + col_values = eina_list_append(col_values, ""); + + col_values = eina_list_append(col_values, &width); + + col_values = eina_list_append(col_values, &height); + + col_values = eina_list_append(col_values, &size); + + char* photo_data = ""; + col_values = eina_list_append(col_values, photo_data); + } + } + + col_values = eina_list_append(col_values, ""); + + col_values = eina_list_append(col_values, ""); + + col_values = eina_list_append(col_values, ""); + + col_values = eina_list_append(col_values, file_path); + + Eina_Bool ret = insert_table(db, table_name, col_names, col_types,col_values); + if(!ret) { + //("error: database creation failed"); + } else { + + } + eina_list_free(col_names); + eina_list_free(col_types); + eina_list_free(col_values); + close_database(db); + } +} + char* get_image_path_from_db(long long media_id) { @@ -921,3 +1333,191 @@ char* get_image_path_from_db(long long media_id) return file_path; } +Eina_List* get_image_sizes_from_db(long long media_id) +{ + Eina_List* vals = NULL; + sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH); + if(db) { + char* table_name = MEDIA_INFO_TABLE_NAME; + char usr_str[50]; + sprintf(usr_str,"%lld",media_id); + char* where_clause = (char*)malloc(strlen(MEDIA_INFO_TABLE_MEDIA_ID) + strlen(" = ") + strlen(usr_str) + 1); + strcpy(where_clause, MEDIA_INFO_TABLE_MEDIA_ID); + strcat(where_clause, " = "); + strcat(where_clause, usr_str); + + Eina_List* col_types = NULL; + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + + Eina_List* col_names = NULL; + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4); + vals = get_values_from_table_sync(db, table_name, col_names, col_types, where_clause); + close_database(db); + eina_list_free(col_types); + eina_list_free(col_names); + } + return vals; +} + +Eina_List* get_image_details_from_db(long long media_id) +{ + Eina_List* vals = NULL; + sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH); + if(db) { + char* table_name = MEDIA_INFO_TABLE_NAME; + + char usr_str[50]; + sprintf(usr_str,"%lld",media_id); + char* where_clause = (char*)malloc(strlen(MEDIA_INFO_TABLE_MEDIA_ID) + strlen(" = ") + strlen(usr_str) + 1); + strcpy(where_clause, MEDIA_INFO_TABLE_MEDIA_ID); + strcat(where_clause, " = "); + strcat(where_clause, usr_str); + + Eina_List* col_types = NULL; + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + + + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + + + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + + + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + + Eina_List* col_names = NULL; + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM); + + /********************************************************************/ + + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1); + + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2); + + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3); + + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4); + + /********************************************************************/ + + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME); + col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH); + + vals = get_values_from_table_sync(db, table_name, col_names, col_types, where_clause); + close_database(db); + eina_list_free(col_types); + eina_list_free(col_names); + } + return vals; +} diff --git a/TelegramTizen/src/tg_registration.c b/TelegramTizen/src/tg_registration.c index 6e6e927..661630e 100644 --- a/TelegramTizen/src/tg_registration.c +++ b/TelegramTizen/src/tg_registration.c @@ -12,6 +12,66 @@ #include "device_contacts_manager.h" #include "contacts-db-utils.h" + +static void on_text_change_enable_ok_button(void *data, Evas_Object *obj, void *event_info) +{ + appdata_s* ad = data; + Evas_Object* country_name_btn = evas_object_data_get(ad->nf, "country_name_btn"); + //Evas_Object* country_code_btn = evas_object_data_get(ad->nf, "country_code_btn"); + //Evas_Object* pn_number_entry = evas_object_data_get(ad->nf, "pn_number_entry"); + //evas_object_data_set(ad->nf, "reg_cancel_btn", (void*)cancel_btn); + Evas_Object* done_btn = evas_object_data_get(ad->nf, "reg_done_btn"); + char buf[256] = {'\0',}; + snprintf(buf, sizeof(buf), "%s", elm_object_text_get(obj)); + + char code_buf[256] = {'\0',}; + snprintf(code_buf, sizeof(code_buf), "%s", elm_object_text_get(country_name_btn)); + + if (strlen(buf) == MAX_NUM_LENGTH && strcasecmp(code_buf, "Select your country") != 0) { + elm_object_disabled_set(done_btn, EINA_FALSE); + } else { + elm_object_disabled_set(done_btn, EINA_TRUE); + } + +} + +static void on_naviframe_done_clicked(void *data, Evas_Object *obj, void *event_info) +{ + appdata_s* ad = data; + Evas_Object* country_name_btn = evas_object_data_get(ad->nf, "country_name_btn"); + Evas_Object* country_code_btn = evas_object_data_get(ad->nf, "country_code_btn"); + Evas_Object* pn_number_entry = evas_object_data_get(ad->nf, "pn_number_entry"); + + char buf[256] = {'\0',}; + snprintf(buf, sizeof(buf), "%s", elm_object_text_get(pn_number_entry)); + + char code_buf[256] = {'\0',}; + snprintf(code_buf, sizeof(code_buf), "%s", elm_object_text_get(country_name_btn)); + + char country_code[256] = {'\0',}; + snprintf(country_code, sizeof(country_code), "%s", elm_object_text_get(country_code_btn)); + + if (strlen(buf) == MAX_NUM_LENGTH && strcasecmp(code_buf, "Select your country") != 0) { + char phone_number[256]; + strcpy(phone_number, country_code); + strcat(phone_number, buf); + ad->phone_number = strdup(phone_number); + send_request_for_registration(ad->service_client, ad->phone_number, EINA_TRUE); + } else { + + } + +} + +static void on_naviframe_cancel_clicked(void *data, Evas_Object *obj, void *event_info) +{ + appdata_s* ad = data; + elm_win_lower(ad->win); + elm_exit(); +} + + + void _send_code_sms_cb(void *data, Evas_Object *obj, void *event_info) { appdata_s* ad = evas_object_data_get(obj, "app_data"); @@ -37,16 +97,93 @@ static void _send_code_call_cb(void *data, Evas_Object *obj, void *event) //appdata_reg_s* ad_reg = data; } -void launch_registration_cb(void *data) +static void country_name_popup_dismissed_cb(void *data, Evas_Object *obj, void *event_info) +{ + evas_object_del(obj); +} + + +static void country_name_popup_item_select_cb(void *data, Evas_Object *obj, void *event_info) +{ + + appdata_s* ad = data; + Evas_Object* country_name_btn = evas_object_data_get(ad->nf, "country_name_btn"); + Evas_Object* country_code_btn = evas_object_data_get(ad->nf, "country_code_btn"); + Evas_Object* pn_number_entry = evas_object_data_get(ad->nf, "pn_number_entry"); + + + const char *label = elm_object_item_text_get((Elm_Object_Item *)event_info); + if (label) { + elm_object_text_set(country_name_btn, label); + + for (int i = 0 ; i < SIZE_CODE; i++) { + if(strcasecmp(phone_codes[i][0], label) == 0) { + char temp_str[50]; + sprintf(temp_str, "%s", phone_codes[i][1]); + elm_object_text_set(country_code_btn, temp_str); + + Evas_Object* done_btn = evas_object_data_get(ad->nf, "reg_done_btn"); + char buf[256] = {'\0',}; + snprintf(buf, sizeof(buf), "%s", elm_object_text_get(pn_number_entry)); + + if (strlen(buf) == MAX_NUM_LENGTH && strcasecmp(label, "Select your country") != 0) { + elm_object_disabled_set(done_btn, EINA_FALSE); + } else { + elm_object_disabled_set(done_btn, EINA_TRUE); + } + + break; + } + } + } + + evas_object_del(obj); +} + +static void move_dropdown(Evas_Object *ctxpopup, Evas_Object *btn) +{ + Evas_Coord x, y, w , h; + evas_object_geometry_get(btn, &x, &y, &w, &h); + evas_object_move(ctxpopup, x + (w / 2), y + h); +} + +static void on_country_name_list_clicked(void *data, Evas_Object *obj, void *event_info) { + appdata_s *ad = data; + Evas_Object* country_name_popup = evas_object_data_get(ad->nf, "country_name_popup"); + + if (country_name_popup) { + evas_object_del(country_name_popup); + } + + country_name_popup = elm_ctxpopup_add(ad->nf); + elm_object_style_set(country_name_popup, "dropdown/list"); + eext_object_event_callback_add(country_name_popup, EEXT_CALLBACK_BACK, eext_ctxpopup_back_cb, NULL); + evas_object_smart_callback_add(country_name_popup,"dismissed", country_name_popup_dismissed_cb, NULL); + + + for (int i = 0 ; i < SIZE_CODE; i++) { + elm_ctxpopup_item_append(country_name_popup, phone_codes[i][0], NULL, country_name_popup_item_select_cb, ad); + } + + elm_ctxpopup_direction_priority_set(country_name_popup, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN); + + move_dropdown(country_name_popup, obj); + evas_object_show(country_name_popup); + + evas_object_data_set(ad->nf, "country_name_popup", country_name_popup); +} + + +void launch_registration_cb(appdata_s* ad) +{ +#if 0 appdata_s* ad = data; char edj_path[PATH_MAX] = {0, }; ad->current_app_state = TG_REGISTRATION_STATE; - Evas_Coord w, h; - elm_win_screen_size_get(ad->win, NULL, NULL, &w, &h); Evas_Object* layout = elm_layout_add(ad->win); app_get_resource(EDJ_REG_FILE, edj_path, (int)PATH_MAX); elm_layout_file_set(layout, edj_path, "login"); @@ -54,7 +191,6 @@ void launch_registration_cb(void *data) Evas_Object* box = elm_box_add(layout); evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.0); evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0); - evas_object_size_hint_min_set(box, w, h - 200); elm_object_part_content_set(layout, "bg", box); elm_object_part_text_set(layout, "label", "Enter Phone Number"); @@ -84,5 +220,124 @@ void launch_registration_cb(void *data) evas_object_data_set(call_btn, "app_data", ad); evas_object_data_set(call_btn, "entry_obj", entry); evas_object_smart_callback_add(call_btn, "clicked", _send_code_call_cb, ad); - elm_naviframe_item_push(ad->nf, "Telegram", NULL, NULL, layout, NULL); + + Elm_Object_Item* navi_item = elm_naviframe_item_push(ad->nf, "Your phone", NULL, NULL, layout, NULL); + + Evas_Object *cancel_btn = elm_button_add(layout); + elm_object_style_set(cancel_btn, "naviframe/title_icon"); + elm_object_text_set(cancel_btn, "Cancel"); + evas_object_smart_callback_add(cancel_btn, "clicked", on_naviframe_cancel_clicked, ad); + + Evas_Object *done_btn = elm_button_add(layout); + elm_object_style_set(done_btn, "naviframe/title_icon"); + elm_object_text_set(done_btn, "Done"); + evas_object_smart_callback_add(done_btn, "clicked", on_naviframe_done_clicked, ad); + + + elm_object_item_part_content_set(navi_item, "title_left_btn", cancel_btn); + elm_object_item_part_content_set(navi_item, "title_right_btn", done_btn); +#else + + ad->current_app_state = TG_REGISTRATION_STATE; + + + 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, "registration_screen"); + 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* country_name_btn = elm_button_add(layout); + elm_object_text_set(country_name_btn, "Select your country"); + elm_object_style_set(country_name_btn, "dropdown"); + evas_object_size_hint_weight_set(country_name_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(country_name_btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(country_name_btn, "clicked", on_country_name_list_clicked, ad); + elm_object_part_content_set(layout, "country_name", country_name_btn); + + evas_object_data_set(ad->nf, "country_name_btn", (void*)country_name_btn); + + + Evas_Object* country_code_btn = elm_entry_add(layout); + elm_object_text_set(country_code_btn, "--"); + evas_object_size_hint_weight_set(country_code_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(country_code_btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_entry_single_line_set(country_code_btn, EINA_TRUE); + elm_entry_editable_set(country_code_btn, EINA_FALSE); + evas_object_show(country_code_btn); + elm_object_part_content_set(layout, "country_code", country_code_btn); + + evas_object_data_set(ad->nf, "country_code_btn", (void*)country_code_btn); + + + Evas_Object* pn_number_entry = elm_entry_add(layout); + elm_object_part_text_set(pn_number_entry, "elm.guide", "Enter phone number"); + elm_entry_cursor_end_set(pn_number_entry); + evas_object_size_hint_weight_set(pn_number_entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(pn_number_entry, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_entry_single_line_set(pn_number_entry, EINA_TRUE); + elm_entry_scrollable_set (pn_number_entry, EINA_FALSE); + elm_entry_cnp_mode_set(pn_number_entry, ELM_CNP_MODE_NO_IMAGE); + elm_entry_context_menu_disabled_set(pn_number_entry, EINA_TRUE); + elm_entry_text_style_user_push(pn_number_entry, "DEFAULT='color=#000000'"); + evas_object_show(pn_number_entry); + elm_object_part_content_set(layout, "phone_number_entry", pn_number_entry); + + evas_object_data_set(ad->nf, "pn_number_entry", (void*)pn_number_entry); + + + limit_filter_data.max_char_count = MAX_NUM_LENGTH; + + elm_entry_markup_filter_append(pn_number_entry, elm_entry_filter_limit_size, &limit_filter_data); + //Set the entry field to accept only numbers + elm_entry_markup_filter_append(pn_number_entry, elm_entry_filter_accept_set, &accept_set); + + Ecore_IMF_Context *imf_context; + imf_context = elm_entry_imf_context_get(pn_number_entry); + ecore_imf_context_input_panel_layout_set(imf_context, ECORE_IMF_INPUT_PANEL_LAYOUT_PHONENUMBER); + //Enable OK button if no of chars has reached to 10 then + evas_object_smart_callback_add(pn_number_entry, "changed", on_text_change_enable_ok_button, ad); + + + Evas_Object* note_btn = elm_entry_add(layout); + elm_object_text_set(note_btn, "Please confirm your country code and enter your phone number."); + evas_object_size_hint_weight_set(note_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(note_btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_entry_single_line_set(note_btn, EINA_FALSE); + elm_entry_editable_set(note_btn, EINA_FALSE); + elm_entry_line_wrap_set(note_btn, EINA_TRUE); + evas_object_show(note_btn); + elm_object_part_content_set(layout, "text_display", note_btn); + + + Elm_Object_Item* navi_item = elm_naviframe_item_push(ad->nf, "Your phone", NULL, NULL, scroller, NULL); + + Evas_Object *cancel_btn = elm_button_add(ad->nf); + elm_object_style_set(cancel_btn, "naviframe/title_icon"); + elm_object_text_set(cancel_btn, "Cancel"); + evas_object_smart_callback_add(cancel_btn, "clicked", on_naviframe_cancel_clicked, ad); + + Evas_Object *done_btn = elm_button_add(ad->nf); + elm_object_style_set(done_btn, "naviframe/title_icon"); + elm_object_text_set(done_btn, "Done"); + evas_object_smart_callback_add(done_btn, "clicked", on_naviframe_done_clicked, ad); + + + elm_object_item_part_content_set(navi_item, "title_left_btn", cancel_btn); + elm_object_item_part_content_set(navi_item, "title_right_btn", done_btn); + + evas_object_data_set(ad->nf, "reg_done_btn", (void*)done_btn); + evas_object_data_set(ad->nf, "reg_cancel_btn", (void*)cancel_btn); + elm_object_disabled_set(done_btn, EINA_TRUE); + +#endif } diff --git a/TelegramTizen/tg_utils/tg_common.h b/TelegramTizen/tg_utils/tg_common.h index 76dd077..c89af44 100644 --- a/TelegramTizen/tg_utils/tg_common.h +++ b/TelegramTizen/tg_utils/tg_common.h @@ -29,6 +29,11 @@ #define EDJ_CHAT_LIST_FILE "edje/telegram_chat_list.edj" #define EDJ_CHAT_CONV_FILE "edje/telegram_chat_conv.edj" +#define TELEGRAM_CUSTOM_WINSET_EDJ "edje/telegram_theme.edj" +#define TELEGRAM_CHAT_VIEW_EDJ "edje/telegram_chat_view.edj" +#define TELEGRAM_INIT_VIEW_EDJ "edje/telegram_init_screen.edj" + + #define GRP_MAIN "main" #define DEFAULT_TELEGRAM_PATH "/opt/usr/media/telegram/" #define DEFAULT_TG_DATABASE_PATH "/opt/usr/media/telegram/tg_data_base.db" @@ -42,6 +47,35 @@ #define CHAT_BG FM_ICON_PATH"/chat_bg.jpg" #define BLUR_BG FM_ICON_PATH"/blur_img.jpg" #define CAMERA_ICON FM_ICON_PATH"/camera-icon.png" +#define MESSAGE_READ_ICON FM_ICON_PATH"/ic_message_read.png" +#define MESSAGE_SENDING_ICON FM_ICON_PATH"/ic_message_sending.png" +#define MESSAGE_SENT_ICON FM_ICON_PATH"/ic_message_sent.png" +#define MESSAGE_FAILED_ICON FM_ICON_PATH"/ic_message_failed.png" +#define MESSAGE_DELIVERED_ICON FM_ICON_PATH"/ic_message_delivered.png" + +#define MEDIA_DOWNLOAD_ICON FM_ICON_PATH"/ic_attach_download.png" +#define MEDIA_MANUAL_DOWNLOAD_ICON FM_ICON_PATH"/ic_attach_manual_download.png" + + +#define FM_ICON_CAMERA FM_ICON_PATH"floating_camera.png" +#define FM_ICON_GALLERY FM_ICON_PATH"ic_attach_photo.png" +#define FM_ICON_VIDEO FM_ICON_PATH"ic_attach_video.png" +#define FM_ICON_FILE FM_ICON_PATH"ic_attach_doc.png" +#define FM_ICON_LOCATION FM_ICON_PATH"ic_attach_location.png" + + +#define INIT_SCREEN_1 FM_ICON_PATH"screenshot_1.png" +#define INIT_SCREEN_2 FM_ICON_PATH"screenshot_2.png" +#define INIT_SCREEN_3 FM_ICON_PATH"screenshot_3.png" +#define INIT_SCREEN_4 FM_ICON_PATH"screenshot_4.png" +#define INIT_SCREEN_5 FM_ICON_PATH"screenshot_5.png" +#define INIT_SCREEN_6 FM_ICON_PATH"screenshot_6.png" +#define INIT_SCREEN_7 FM_ICON_PATH"screenshot_7.png" + + + +#define LIST_CONTACT_ROUND_MASK_ICON FM_ICON_PATH"/info_page_pic_mask.png" + #define FM_ICON_MSG_SENT FM_ICON_PATH"bubble_sent_bg.#.png" #define FM_ICON_MSG_RECEIVE FM_ICON_PATH"bubble_rec_bg.#.png" @@ -71,14 +105,81 @@ #define TGL_PEER_ENCR_CHAT 4 #define TGL_PEER_UNKNOWN 0 +#define SIZE_CODE 10 +static char *phone_codes[SIZE_CODE][2] = { {"Argentina (+54)", "+54"}, + {"Brazil (+55)", "+55"}, + {"China (+86)", "+86"}, + {"France (+33)", "+33"}, + {"India (+91)", "+91"}, + {"Malaysia (+60)", "+60"}, + {"Russia (+7)", "+7"}, + {"Singapore (+65)", "+65"}, + {"South Korea (+82)", "+82"}, + {"United States (+1)" , "+1"} + }; + +typedef enum { + CHAT_MESSAGE_BUBBLE_NONE = 0, + CHAT_MESSAGE_BUBBLE_SENT, + CHAT_MESSAGE_BUBBLE_RECEIVE, + CHAT_MESSAGE_BUBBLE_LAST +} Chat_message_Bubble_Style; + +#define CHAT_BUBBLE_SUB_TEXT_STYLE "%s" + + + +static Elm_Entry_Filter_Limit_Size limit_filter_data; +static Elm_Entry_Filter_Accept_Set accept_set = { + .accepted = "0123456789", + .rejected = NULL + }; + +#define MAX_NUM_LENGTH 10 + typedef struct { int type; int id; } tgl_peer_id_t; + +typedef enum { + TELEGRAM_APP_FILE_TYPE_NONE = 0, + TELEGRAM_APP_FILE_TYPE_IMAGE, /**< Image category */ + TELEGRAM_APP_FILE_TYPE_VIDEO, /**< Video category */ + TELEGRAM_APP_FILE_TYPE_MUSIC, /**< Music category */ + TELEGRAM_APP_FILE_TYPE_STICKER, /** Sticker / Anicon category */ + TELEGRAM_APP_FILE_TYPE_PDF, /**< Pdf category */ + TELEGRAM_APP_FILE_TYPE_DOC, /**< Word category */ + TELEGRAM_APP_FILE_TYPE_PPT, /**< Powerpoint category */ + TELEGRAM_APP_FILE_TYPE_EXCEL, /**< Excel category */ + TELEGRAM_APP_FILE_TYPE_VOICE, /**< Voice category */ + TELEGRAM_APP_FILE_TYPE_HTML, /**< Html category */ + TELEGRAM_APP_FILE_TYPE_FLASH, /**< Flash category */ + TELEGRAM_APP_FILE_TYPE_TXT, /**< Txt category */ + TELEGRAM_APP_FILE_TYPE_VCONTACT, /**< Vcontact category */ + TELEGRAM_APP_FILE_TYPE_VCALENDAR, /**< Vcalendar category */ + TELEGRAM_APP_FILE_TYPE_VNOTE, /**< Vnote category */ + TELEGRAM_APP_FILE_TYPE_VBOOKMARK, /**< Vbookmark category */ + TELEGRAM_APP_FILE_TYPE_SNB, /**< Snotes category */ + TELEGRAM_APP_FILE_TYPE_SVG, /**< Svg category */ + TELEGRAM_APP_FILE_TYPE_RSS, /**< Rss reader file, *.opml */ + TELEGRAM_APP_FILE_TYPE_JAVA, /**< java file, *.jad, *.jar */ + TELEGRAM_APP_FILE_TYPE_WGT, /**< wrt , *.wgt, *.wgt */ + TELEGRAM_APP_FILE_TYPE_TPK, /**< *.tpk */ + TELEGRAM_APP_FILE_TYPE_HWP, /**< *.hwp */ + TELEGRAM_APP_FILE_TYPE_EMAIL, /**< *.eml */ + TELEGRAM_APP_FILE_TYPE_DRM, /**< drm file , *.dcf */ + TELEGRAM_APP_FILE_TYPE_ZIP, /**< zip compressed file , *.zip */ + TELEGRAM_APP_FILE_TYPE_ETC, /**< Other files category */ + TELEGRAM_APP_FILE_TYPE_MAX +} TELEGRAM_APP_FILE_TYPE_E; + + typedef enum state_of_app { TG_SPLASH_SCREEN_STATE, + TG_INIT_SCREEN_STATE, TG_REGISTRATION_STATE, TG_PROFILE_REGISTRATION_STATE, TG_LOGIN_STATE, @@ -103,6 +204,15 @@ enum tgl_typing_status { tgl_typing_choose_contact }; +typedef enum MESSAGE_STATE { + TG_MESSAGE_STATE_SENDING = 1, + TG_MESSAGE_STATE_SENT, + TG_MESSAGE_STATE_DELIVERED, + TG_MESSAGE_STATE_FAILED, + TG_MESSAGE_STATE_RECEIVED, + TG_MESSAGE_STATE_READ, + TG_MESSAGE_STATE_UNKNOWN +} TG_MESSAGE_STATE; typedef struct user_data { @@ -179,6 +289,9 @@ typedef struct tg_peer_info { typedef struct peer_with_pic { tg_peer_info_s *use_data; Evas_Object *contact_icon; + Evas_Object *name_object; + Evas_Object *msg_object; + char *last_message; } peer_with_pic_s; typedef struct group_chat_with_pic { @@ -198,6 +311,7 @@ typedef struct tg_message { int date; int service; char* message; + int msg_state; int message_len; int media_type; char* media_id; @@ -225,6 +339,7 @@ typedef struct appdata { Eina_Bool is_network_connected; service_client* service_client; Eina_Bool is_first_time_registration; + Eina_List* loaded_msg_list; } appdata_s; extern void show_toast(appdata_s* ad, char* value); @@ -233,10 +348,6 @@ extern void tg_login_nf_back_cb(void *data, Evas_Object *obj, void *event_info); extern void detail_list_nf_back_cb(void *data, Evas_Object *obj, void *event_info); extern void load_rec_msg_to_db(struct tgl_state *TLS, struct tgl_message *M); extern void create_buddy_msg_table(const char* table_name); -extern void insert_msg_into_db(struct tgl_message *M, char* table_name, int unique_id); -extern void update_msg_into_db(struct tgl_message *M, char* table_name, int unique_id); -extern void insert_photo_info_to_db(struct tgl_message *M, char* file_path); -extern void update_photo_info_in_db(struct tgl_message *M, char* file_path, int unique_val); extern void load_buddy_list_data(appdata_s *ad); extern void load_group_chat_data(appdata_s *ad); extern void load_peer_data(appdata_s *ad); @@ -307,6 +418,32 @@ static char* get_table_name_from_number(const int id) return msg_table; } +static Eina_Bool compare_date_with_current_date(int rtime) { + + const char *format = " %d/%b/%Y"; + time_t local_t = time(NULL); + struct tm lt; + char local_res[256]; + (void) localtime_r(&local_t, <); + if (strftime(local_res, sizeof(local_res), format, <) == 0) { + return EINA_FALSE; + } + + + time_t remote_t = rtime; + struct tm rt; + char remote_res[32]; + (void) localtime_r(&remote_t, &rt); + + if (strftime(remote_res, sizeof(remote_res), format, &rt) == 0) { + return EINA_FALSE; + } + if (strcasecmp (local_res, remote_res) == 0) { + return EINA_TRUE; + } + return EINA_FALSE; +} + static void telegram_set_mask_and_circular_pic(Evas_Object *image, char *image_path, char *mask_path, int width, int height) { if (image == NULL) @@ -326,9 +463,11 @@ static void telegram_set_mask_and_circular_pic(Evas_Object *image, char *image_p evas_object_event_callback_add(img_obj, EVAS_CALLBACK_DEL, telegram_image_mask_delete_cb, NULL); } -static Evas_Object* buddy_widget_main_icon_get(const char *icon_name, Evas_Object *parent) +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_object_focus_set(icon, EINA_FALSE); elm_image_file_set(icon, icon_name, NULL); evas_object_show(icon); @@ -374,6 +513,358 @@ static char* get_current_time() return ret; } +static char *replace(const char *s, char ch, const char *repl) +{ + int count = 0; + const char *t; + for(t=s; *t; t++) + count += (*t == ch); + + size_t rlen = strlen(repl); + char *res = malloc(strlen(s) + (rlen-1)*count + 1); + char *ptr = res; + for(t=s; *t; t++) { + if(*t == ch) { + memcpy(ptr, repl, rlen); + ptr += rlen; + } else { + *ptr++ = *t; + } + } + *ptr = 0; + return res; +} + +static Evas_Object * create_scroller(Evas_Object *parent) +{ + Evas_Object *scroller = elm_scroller_add(parent); + elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_FALSE); + elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); + evas_object_show(scroller); + return scroller; +} + +static int telegram_is_drm_file(const char *file_path) +{ + return 0; +} + +static TELEGRAM_APP_FILE_TYPE_E __telegram_common_get_file_type_by_file_ext(const char * file_ext, const char * fullpath) +{ + int i = 0; + + if (file_ext == NULL) { + LOGI("file_ext is NULL"); + return TELEGRAM_APP_FILE_TYPE_ETC; + } + + switch (file_ext[i]) { + case 'a': + case 'A': + if (strcasecmp("ASF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + if (strcasecmp("AMR", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VOICE; + } + if (strcasecmp("AWB", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VOICE; + } + if (strcasecmp("AAC", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("AVI", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + break; + + case 'b': + case 'B': + if (strcasecmp("BMP", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_IMAGE; + } + break; + + case 'd': + case 'D': + if (strcasecmp("DOC", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_DOC; + } + if (strcasecmp("DOCX", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_DOC; + } + if (strcasecmp("DIVX", &file_ext[i]) == 0) { + if (telegram_is_drm_file(fullpath) == 0) { + return TELEGRAM_APP_FILE_TYPE_DRM; + } else { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + } + if (strcasecmp("DCF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_DRM; + } + if (strcasecmp("DM", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_DRM; + } + break; + + case 'g': + case 'G': + if (strcasecmp("GIF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_IMAGE; + } + if (strcasecmp("G72", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + break; + + case 'h': + case 'H': + if (strcasecmp("HTML", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_HTML; + } + if (strcasecmp("HTM", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_HTML; + } + break; + + case 'i': + case 'I': + if (strcasecmp("IMY", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("ICS", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VCALENDAR; + } + break; + + case 'j': + case 'J': + if (strcasecmp("JPG", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_IMAGE; + } + if (strcasecmp("JPEG", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_IMAGE; + } + if (strcasecmp("JPE", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_IMAGE; + } + break; + + case 'm': + case 'M': + if (strcasecmp("MMF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("MP3", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("MID", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("MIDI", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("MP4", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + if (strcasecmp("MPG", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + if (strcasecmp("MPEG", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + if (strcasecmp("M4A", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("M3G", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_FLASH; + } + if (strcasecmp("MXMF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("MKV", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + break; + + case 'o': + case 'O': + if (strcasecmp("opml", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_RSS; + } + if (strcasecmp("ODF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_DRM; + } + if (strcasecmp("ORO", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_DRM; + } + break; + + case 'p': + case 'P': + if (strcasecmp("PNG", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_IMAGE; + } + if (strcasecmp("PJPEG", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_IMAGE; + } + if (strcasecmp("PDF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_PDF; + } + if (strcasecmp("PPT", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_PPT; + } + if (strcasecmp("PPTX", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_PPT; + } + break; + + case 'r': + case 'R': + if (strcasecmp("RO", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_DRM; + } + break; + + case 's': + case 'S': + if (strcasecmp("SDP", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + if (strcasecmp("SPM", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("SMP", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("SPF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("SWF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_FLASH; + } + if (strcasecmp("SVG", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_SVG; + } + if (strcasecmp("SVGZ", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_SVG; + } + break; + + case 't': + case 'T': + if (strcasecmp("TXT", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_TXT; + } + if (strcasecmp("TPK", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_TPK; + } + break; + + case 'v': + case 'V': + if (strcasecmp("VCF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VCONTACT; + } + if (strcasecmp("VTS", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VCALENDAR; + } + if (strcasecmp("VCS", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VCALENDAR; + } + break; + + case 'w': + case 'W': + if (strcasecmp("WAV", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("WBMP", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_IMAGE; + } + if (strcasecmp("WGT", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_WGT; + } + if (strcasecmp("WMA", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("WMV", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + break; + + case 'x': + case 'X': + if (strcasecmp("XLS", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_EXCEL; + } + if (strcasecmp("XLSX", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_EXCEL; + } + if (strcasecmp("XMF", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_MUSIC; + } + if (strcasecmp("XHTML", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_HTML; + } + break; + + case '3': + if (strcasecmp("3GP", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + if (strcasecmp("3GPP", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + if (strcasecmp("3G2", &file_ext[i]) == 0) { + return TELEGRAM_APP_FILE_TYPE_VIDEO; + } + break; + } + return TELEGRAM_APP_FILE_TYPE_ETC; +} + + + +static char* telegram_common_get_file_ext(const char *a_pszfile_name) +{ + if (a_pszfile_name != NULL) { + int nlen = strlen(a_pszfile_name); + char *psztemp = (char *)a_pszfile_name + nlen; + + while (nlen--) { + psztemp--; + if (*psztemp == '.') { + psztemp++; + break; + } + } + return psztemp; + } + + return NULL; +} + + +static TELEGRAM_APP_FILE_TYPE_E telegram_common_get_file_type(const char *filepath) +{ + TELEGRAM_APP_FILE_TYPE_E file_type = TELEGRAM_APP_FILE_TYPE_NONE; + if(filepath == NULL) + { + return TELEGRAM_APP_FILE_TYPE_NONE; + } + char *file_ext = telegram_common_get_file_ext(filepath); + + if (file_ext) { + file_type = __telegram_common_get_file_type_by_file_ext(file_ext, filepath); + } else { + LOGI("file_ext is NULL"); + } + + return file_type; +} + typedef struct _telegram_Time { int hours; diff --git a/tg-engine-service/inc/server_response.h b/tg-engine-service/inc/server_response.h index 9c7b631..49a71af 100644 --- a/tg-engine-service/inc/server_response.h +++ b/tg-engine-service/inc/server_response.h @@ -14,8 +14,8 @@ void process_registration_command(char* phone_no, Eina_Bool trough_sms); void process_validation_command(char* code); -void process_send_message_command(int buddy_id, int msg_type, char* msg_data, int type_of_chat); -void process_send_media_command(int buddy_id, int msg_type, char* file_path); +void process_send_message_command(int buddy_id, int message_id, int msg_type, char* msg_data, int type_of_chat); +void process_send_media_command(int buddy_id, int message_id, int media_id, int msg_type, char* file_path, int type_of_chat); void process_media_download_command(int buddy_id, long long media_id); void process_add_contacts_command(int size, Eina_List* contact_list); void process_new_group_create_command(Eina_List* buddy_ids, const char* group_name, const char* group_icon); diff --git a/tg-engine-service/inc/tg_db_wrapper.h b/tg-engine-service/inc/tg_db_wrapper.h index 879e7a0..4d76090 100644 --- a/tg-engine-service/inc/tg_db_wrapper.h +++ b/tg-engine-service/inc/tg_db_wrapper.h @@ -113,6 +113,7 @@ #define MESSAGE_INFO_TABLE_DATE "date" #define MESSAGE_INFO_TABLE_SERVICE "service" #define MESSAGE_INFO_TABLE_MESSAGE "message" +#define MESSAGE_INFO_TABLE_MESSAGE_STATE "message_state" #define MESSAGE_INFO_TABLE_MESSAGE_LENGTH "message_len" #define MESSAGE_INFO_TABLE_MEDIA_TYPE "media_type" #define MESSAGE_INFO_TABLE_MEDIA_ID "media_id" @@ -170,6 +171,8 @@ void create_buddy_msg_table(const char* table_name); void insert_buddy_msg_to_db(struct tgl_message *M); +struct tgl_message* get_message_from_message_table(long long msg_id, char* table_name); + void insert_msg_into_db(struct tgl_message *M, char* table_name, int unique_id); void update_msg_into_db(struct tgl_message *M, char* table_name, int unique_id); diff --git a/tg-engine-service/mtprotocol/queries.c b/tg-engine-service/mtprotocol/queries.c index 0223f97..95aa996 100644 --- a/tg-engine-service/mtprotocol/queries.c +++ b/tg-engine-service/mtprotocol/queries.c @@ -842,30 +842,33 @@ static int msg_send_on_answer(struct tgl_state *TLS, struct query *q) long long y = *(long long *)q->extra; tfree(q->extra, 8); struct tgl_message *M = tgl_message_get(TLS, y); - if (M && M->id != id) { - bl_do_set_msg_id(TLS, M, id); - } - int date = fetch_int(); - int pts = fetch_int(); - int seq = fetch_int(); - if (seq == TLS->seq + 1 && !(TLS->locks & TGL_LOCK_DIFF)) { - bl_do_set_date(TLS, date); - bl_do_set_pts(TLS, pts); - bl_do_msg_seq_update(TLS, id); - } else { - if (seq > TLS->seq + 1) { - vlogprintf(E_NOTICE, "Hole in seq\n"); - tgl_do_get_difference(TLS, 0, 0, 0); + + if (M) { + if (M && M->id != id) { + bl_do_set_msg_id(TLS, M, id); + } + int date = fetch_int(); + int pts = fetch_int(); + int seq = fetch_int(); + if (seq == TLS->seq + 1 && !(TLS->locks & TGL_LOCK_DIFF)) { + bl_do_set_date(TLS, date); + bl_do_set_pts(TLS, pts); + bl_do_msg_seq_update(TLS, id); + } else { + if (seq > TLS->seq + 1) { + vlogprintf(E_NOTICE, "Hole in seq\n"); + tgl_do_get_difference(TLS, 0, 0, 0); + } + } + if (x == CODE_messages_sent_message_link) { + assert(skip_type_any(TYPE_TO_PARAM_1(vector, TYPE_TO_PARAM(contacts_link))) >= 0); + } + if (M->flags & FLAG_PENDING) { + bl_do_set_message_sent(TLS, M); + } + if (q->callback) { + ((void(*)(struct tgl_state *,void *, int, struct tgl_message *))q->callback)(TLS, q->callback_extra, 1, M); } - } - if (x == CODE_messages_sent_message_link) { - assert(skip_type_any(TYPE_TO_PARAM_1(vector, TYPE_TO_PARAM(contacts_link))) >= 0); - } - if (M->flags & FLAG_PENDING) { - bl_do_set_message_sent(TLS, M); - } - if (q->callback) { - ((void(*)(struct tgl_state *,void *, int, struct tgl_message *))q->callback)(TLS, q->callback_extra, 1, M); } return 0; } diff --git a/tg-engine-service/mtprotocol/structures.c b/tg-engine-service/mtprotocol/structures.c index 55d0cc2..1f69a97 100644 --- a/tg-engine-service/mtprotocol/structures.c +++ b/tg-engine-service/mtprotocol/structures.c @@ -2077,7 +2077,7 @@ void tglm_update_message_id(struct tgl_state *TLS, struct tgl_message *M, long l void tglm_message_insert_tree(struct tgl_state *TLS, struct tgl_message *M) { - assert(M->id); + //assert(M->id); TLS->message_tree = tree_insert_message(TLS->message_tree, M, lrand48()); } diff --git a/tg-engine-service/mtprotocol/tgl-layout.h b/tg-engine-service/mtprotocol/tgl-layout.h index 5b5e231..c341918 100644 --- a/tg-engine-service/mtprotocol/tgl-layout.h +++ b/tg-engine-service/mtprotocol/tgl-layout.h @@ -477,6 +477,7 @@ struct tgl_message { int unread; int date; int service; + int msg_state; union { struct tgl_message_action action; struct { diff --git a/tg-engine-service/src/server_response.c b/tg-engine-service/src/server_response.c index 101f9d0..91b5493 100644 --- a/tg-engine-service/src/server_response.c +++ b/tg-engine-service/src/server_response.c @@ -44,20 +44,20 @@ void process_validation_command(char* code) tg_data->get_string(TLS, code, tg_data->callback_arg); } -void process_send_message_command(int buddy_id, int msg_type, char* msg_data, int type_of_chat) +void process_send_message_command(int buddy_id, int message_id, int msg_type, char* msg_data, int type_of_chat) { if (!msg_data || !TLS) { return; } - send_message_to_buddy(buddy_id, msg_type, msg_data, type_of_chat); + send_message_to_buddy(buddy_id, message_id, msg_type, msg_data, type_of_chat); } -void process_send_media_command(int buddy_id, int msg_type, char* file_path) +void process_send_media_command(int buddy_id, int message_id, int media_id, int msg_type, char* file_path, int type_of_chat) { if (!file_path || !TLS) { return; } - send_media_to_buddy(buddy_id, msg_type, file_path); + send_media_to_buddy(buddy_id, message_id, media_id, msg_type, file_path, type_of_chat); } @@ -518,9 +518,16 @@ void send_media_download_completed_response(int buddy_id, long long media_id, co bundle_free(msg); } - if (bundle_add_str(msg, "file_name", filename) != 0) { - ERR("Failed to add data by key to bundle"); - bundle_free(msg); + if (filename) { + if (bundle_add_str(msg, "file_name", filename) != 0) { + ERR("Failed to add data by key to bundle"); + bundle_free(msg); + } + } else { + if (bundle_add_str(msg, "file_name", "failed_to_load") != 0) { + ERR("Failed to add data by key to bundle"); + bundle_free(msg); + } } int result = SVC_RES_FAIL; diff --git a/tg-engine-service/src/tg-engine-service.c b/tg-engine-service/src/tg-engine-service.c index 23e9c52..08a5e26 100644 --- a/tg-engine-service/src/tg-engine-service.c +++ b/tg-engine-service/src/tg-engine-service.c @@ -48,6 +48,10 @@ static int _on_tg_server_msg_received_cb(void *data, bundle *const rec_msg) res = bundle_get_str(rec_msg, "buddy_id", &buddy_id_str); int buddy_id = atoi(buddy_id_str); + char* message_id_str = NULL; + res = bundle_get_str(rec_msg, "message_id", &message_id_str); + int message_id = atoi(message_id_str); + char* msg_type_str = NULL; res = bundle_get_str(rec_msg, "message_type", &msg_type_str); int msg_type = atoi(msg_type_str); @@ -59,7 +63,7 @@ static int _on_tg_server_msg_received_cb(void *data, bundle *const rec_msg) res = bundle_get_str(rec_msg, "type_of_chat", &type_of_chat_str); int type_of_chat = atoi(type_of_chat_str); - process_send_message_command(buddy_id, msg_type, msg_data_str, type_of_chat); + process_send_message_command(buddy_id, message_id, msg_type, msg_data_str, type_of_chat); } else if (strcmp(cmd_key_val, "media_download_request") == 0) { @@ -78,13 +82,26 @@ static int _on_tg_server_msg_received_cb(void *data, bundle *const rec_msg) res = bundle_get_str(rec_msg, "buddy_id", &buddy_id_str); int buddy_id = atoi(buddy_id_str); + char* message_id_str = NULL; + res = bundle_get_str(rec_msg, "message_id", &message_id_str); + int message_id = atoi(message_id_str); + + char* media_id_str = NULL; + res = bundle_get_str(rec_msg, "media_id", &media_id_str); + int media_id = atoi(media_id_str); + char* msg_type_str = NULL; res = bundle_get_str(rec_msg, "message_type", &msg_type_str); int msg_type = atoi(msg_type_str); char* file_path_str = NULL; res = bundle_get_str(rec_msg, "file_path", &file_path_str); - process_send_media_command(buddy_id, msg_type, file_path_str); + + char* type_of_chat_str = NULL; + res = bundle_get_str(rec_msg, "type_of_chat", &type_of_chat_str); + int type_of_chat = atoi(type_of_chat_str); + + process_send_media_command(buddy_id, message_id, media_id, msg_type, file_path_str, type_of_chat); } else if (strcmp(cmd_key_val, "profile_registration") == 0) { @@ -251,6 +268,7 @@ bool service_app_create(void *data) tg_data->is_login_activated = EINA_FALSE; tg_data->is_group_creation_requested = EINA_FALSE; tg_data->new_group_icon = NULL; + tg_data->is_first_time_registration = EINA_FALSE; tg_engine_data_s* ad = data; diff --git a/tg-engine-service/src/tg_db_wrapper.c b/tg-engine-service/src/tg_db_wrapper.c index 69d50bb..0107590 100644 --- a/tg-engine-service/src/tg_db_wrapper.c +++ b/tg-engine-service/src/tg_db_wrapper.c @@ -322,6 +322,7 @@ void create_buddy_msg_table(const char* table_name) col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID); @@ -341,6 +342,7 @@ void create_buddy_msg_table(const char* table_name) col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); @@ -507,7 +509,15 @@ void insert_peer_into_database(tgl_peer_t* UC, int last_msg_id, int unread_count Eina_Bool ret = insert_table(db, table_name, col_names, col_types,col_values); if(!ret) { - //("error: database creation failed"); + // already exist. So update the table + char* where_clause = NULL; + char user_id_str[50]; + sprintf(user_id_str,"%d",UC->id.id); + where_clause = (char*)malloc(strlen(PEER_INFO_TABLE_CHAT_ID) + strlen(" = ") + strlen(user_id_str) + 1); + strcpy(where_clause, PEER_INFO_TABLE_CHAT_ID); + strcat(where_clause, " = "); + strcat(where_clause, user_id_str); + ret = update_table(db, table_name, col_names, col_types, col_values, where_clause); } else { } @@ -518,6 +528,226 @@ void insert_peer_into_database(tgl_peer_t* UC, int last_msg_id, int unread_count } } +struct tgl_message* get_message_from_message_table(long long msg_id, char* table_name) +{ + struct tgl_message* message = NULL; + + Eina_List* message_details = NULL; + sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH); + if (db) { + Eina_List* col_names = NULL; + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID); + + Eina_List* col_types = NULL; + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + + char* where_clause = NULL; + char msg_id_str[50]; + sprintf(msg_id_str,"%d",msg_id); + where_clause = (char*)malloc(strlen(MESSAGE_INFO_TABLE_MESSAGE_ID) + strlen(" = ") + strlen(msg_id_str) + 1); + strcpy(where_clause, MESSAGE_INFO_TABLE_MESSAGE_ID); + strcat(where_clause, " = "); + strcat(where_clause, msg_id_str); + + message_details = get_values_from_table_sync(db, table_name, col_names, col_types, where_clause); + + free(where_clause); + eina_list_free(col_names); + eina_list_free(col_types); + } + + if (message_details && eina_list_count(message_details) > 0) { + Eina_List* ts_msg = eina_list_nth(message_details, 0); + + message = (struct tgl_message*)malloc(sizeof(struct tgl_message)); + + + int *temp_msg_id = (int*)eina_list_nth(ts_msg, 0); + if (temp_msg_id) { + message->id = *temp_msg_id; + free(temp_msg_id); + } + + int *temp_flags = (int*)eina_list_nth(ts_msg, 1); + if (temp_flags) { + message->flags = *temp_flags; + free(temp_flags); + } + + + int *temp_fwd_from_id = (int*)eina_list_nth(ts_msg, 2); + if (temp_fwd_from_id) { + message->fwd_from_id.id = *temp_fwd_from_id; + free(temp_fwd_from_id); + } + + + int *temp_fwd_date = (int*)eina_list_nth(ts_msg, 3); + if (temp_fwd_date) { + message->fwd_date = *temp_fwd_date; + free(temp_fwd_date); + } + + + int *temp_from_id = (int*)eina_list_nth(ts_msg, 4); + if (temp_from_id) { + message->from_id.id = *temp_from_id; + free(temp_from_id); + } + + int *temp_to_id = (int*)eina_list_nth(ts_msg, 5); + if (temp_to_id) { + message->to_id.id = *temp_to_id; + free(temp_to_id); + } + + int *temp_out = (int*)eina_list_nth(ts_msg, 6); + if (temp_out) { + message->out = *temp_out; + free(temp_out); + } + + int *temp_unread = (int*)eina_list_nth(ts_msg, 7); + if (temp_unread) { + message->unread = *temp_unread; + free(temp_unread); + } + + int *temp_date = (int*)eina_list_nth(ts_msg, 8); + if (temp_date) { + message->date = *temp_date; + free(temp_date); + } + + int *temp_service = (int*)eina_list_nth(ts_msg, 9); + if (temp_service) { + message->service = *temp_service; + free(temp_service); + } + + char *temp_msg = (char*)eina_list_nth(ts_msg, 10); + if (temp_msg) { + message->message = strdup(temp_msg); + free(temp_msg); + } + + int *temp_message_state = (int*)eina_list_nth(ts_msg, 11); + if (temp_message_state) { + message->msg_state = *temp_message_state; + free(temp_message_state); + } + + int *temp_message_len = (int*)eina_list_nth(ts_msg, 12); + if (temp_message_len) { + message->message_len = *temp_message_len; + free(temp_message_len); + } + + int *temp_media_type = (int*)eina_list_nth(ts_msg, 13); + if (temp_media_type) { + message->media.type = *temp_media_type; + free(temp_media_type); + } + + char *temp_media_id = (char*)eina_list_nth(ts_msg, 14); + + char* dummy_val = ""; + char *eptr; + if(message->media.type == tgl_message_media_none) { + + if (temp_media_id) { + free(temp_media_id); + } + + } else if(message->media.type == tgl_message_media_photo) { + + if (temp_media_id) { + message->media.photo.id = strtoll(temp_media_id, &eptr, 10); + free(temp_media_id); + } + + } else if(message->media.type == tgl_message_media_document) { + + if (temp_media_id) { + message->media.document.id = strtoll(temp_media_id, &eptr, 10); + free(temp_media_id); + } + + } else if(message->media.type == tgl_message_media_geo) { + + if (temp_media_id) { + free(temp_media_id); + } + + } else if(message->media.type == tgl_message_media_contact) { + + if (temp_media_id) { + free(temp_media_id); + } + + } else if(message->media.type == tgl_message_media_unsupported) { + + if (temp_media_id) { + free(temp_media_id); + } + + } else if(message->media.type == tgl_message_media_photo_encr) { + + if (temp_media_id) { + message->media.encr_photo.id = strtoll(temp_media_id, &eptr, 10); + free(temp_media_id); + } + + } else if(message->media.type == tgl_message_media_document_encr) { + + if (temp_media_id) { + message->media.encr_document.id = strtoll(temp_media_id, &eptr, 10); + free(temp_media_id); + } + + } else { + if (temp_media_id) { + free(temp_media_id); + } + } + int *temp_unique_id = (int*)eina_list_nth(ts_msg, 15); + if (temp_unique_id) { + free(temp_unique_id); + } + } + return message; +} + void insert_msg_into_db(struct tgl_message *M, char* table_name, int unique_id) { if(!M) { @@ -537,6 +767,7 @@ void insert_msg_into_db(struct tgl_message *M, char* table_name, int unique_id) col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID); @@ -556,6 +787,7 @@ void insert_msg_into_db(struct tgl_message *M, char* table_name, int unique_id) col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); @@ -576,6 +808,7 @@ void insert_msg_into_db(struct tgl_message *M, char* table_name, int unique_id) else col_values = eina_list_append(col_values, " "); + col_values = eina_list_append(col_values, &(M->msg_state)); col_values = eina_list_append(col_values, &(M->message_len)); col_values = eina_list_append(col_values, &(M->media.type)); @@ -655,10 +888,13 @@ void update_msg_into_db(struct tgl_message *M, char* table_name, int unique_id) col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE); + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE); col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID); - col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID); + if (unique_id != -1) { + col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID); + } Eina_List* col_types = NULL; col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); @@ -674,8 +910,11 @@ void update_msg_into_db(struct tgl_message *M, char* table_name, int unique_id) col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); - col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT); + if (unique_id != -1) { + col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); + } Eina_List* col_values = NULL; col_values = eina_list_append(col_values, &(M->id)); @@ -694,6 +933,7 @@ void update_msg_into_db(struct tgl_message *M, char* table_name, int unique_id) else col_values = eina_list_append(col_values, " "); + col_values = eina_list_append(col_values, &(M->msg_state)); col_values = eina_list_append(col_values, &(M->message_len)); col_values = eina_list_append(col_values, &(M->media.type)); @@ -738,8 +978,10 @@ void update_msg_into_db(struct tgl_message *M, char* table_name, int unique_id) col_values = eina_list_append(col_values, (dummy_val)); } - int u_id = 0; - col_values = eina_list_append(col_values, &u_id); + if (unique_id != -1) { + int u_id = unique_id; + col_values = eina_list_append(col_values, &u_id); + } char* where_clause = NULL; diff --git a/tg-engine-service/tg_engine/tg_engine.c b/tg-engine-service/tg_engine/tg_engine.c index 0849e64..1ed3668 100644 --- a/tg-engine-service/tg_engine/tg_engine.c +++ b/tg-engine-service/tg_engine/tg_engine.c @@ -266,14 +266,10 @@ void tg_new_msg(struct tgl_state *TLS, struct tgl_message *M) void tg_marked_read(struct tgl_state *TLS, int num, struct tgl_message *list[]) { - for (int i = 0; i < num; i++) { //struct tgl_message struct tgl_message* message = list[i]; - int identifier = -1; - - tgl_peer_t* UC; UC = tgl_peer_get(TLS, message->to_id); struct tgl_user* buddy; @@ -282,6 +278,9 @@ void tg_marked_read(struct tgl_state *TLS, int num, struct tgl_message *list[]) if (buddy) { phone = buddy->phone; } + + message->msg_state = TG_MESSAGE_STATE_READ; + char* tb_name = get_table_name_from_number(message->to_id.id); update_msg_into_db(message, tb_name, identifier); if (message->media.type == tgl_message_media_photo) { @@ -289,9 +288,6 @@ void tg_marked_read(struct tgl_state *TLS, int num, struct tgl_message *list[]) } send_message_read_by_buddy_response(message->to_id.id, message->id, tb_name, phone, tgl_get_peer_type(message->to_id)); free(tb_name); - - - } } @@ -444,11 +440,27 @@ void tg_chat_update(struct tgl_state *TLS, struct tgl_chat* chat_info, unsigned } } #else + +#if 0 if (tg_data->is_group_creation_requested) { if (flags == TGL_GROUP_CHAT_CREATED) { tgl_do_get_chat_info(TLS, chat_info->id, 0, &on_chat_info_received, (void*)flags); } } +#else + + if (!(flags & TGL_UPDATE_CREATED)) { + printf("created"); + + if (!(flags & TGL_UPDATE_DELETED)) { + printf("updated"); + } else { + printf("deleted"); + } + } + + +#endif #endif } @@ -936,61 +948,42 @@ void on_user_info_loaded(struct tgl_state *TLSR, void *extra, int success, struc void on_message_sent_to_buddy(struct tgl_state *TLS, void *callback_extra, int success, struct tgl_message *message) { int identifier = (int)callback_extra; - -#if 0 - Eina_List* buddy_details_array = get_buddy_info(message->to_id.id); - if (buddy_details_array && eina_list_count(buddy_details_array) > 0) { - Eina_List* buddy_details = eina_list_nth(buddy_details_array, 0); - if (buddy_details && eina_list_count(buddy_details) > 0) { - char* phone = eina_list_nth(buddy_details, 7); - if (phone) { - char* tb_name = get_table_name_from_number(phone); - update_msg_into_db(message,tb_name, identifier); - if (message->media.type == tgl_message_media_photo) { - update_sent_media_info_in_db(message, (long long)identifier); - } - // update message sent status to application. - // send message table name, message id, buddy id and phone number - send_message_sent_to_buddy_response(message->to_id.id, message->id, tb_name, phone); - free(tb_name); - free(phone); - } - } + tgl_peer_t* UC = tgl_peer_get(TLS, message->to_id); + struct tgl_user* buddy = &(UC->user); + char* phone = NULL; + if (buddy) { + phone = buddy->phone; } -#else + if (success) { - tgl_peer_t* UC; - UC = tgl_peer_get(TLS, message->to_id); - struct tgl_user* buddy; - buddy = &(UC->user); - char* phone = NULL; - if (buddy) { - phone = buddy->phone; - } - char* tb_name = get_table_name_from_number(message->to_id.id); - update_msg_into_db(message, tb_name, identifier); - if (message->media.type == tgl_message_media_photo) { - update_sent_media_info_in_db(message, (long long)identifier); - } - send_message_sent_to_buddy_response(message->to_id.id, message->id, tb_name, phone, tgl_get_peer_type(message->to_id)); - free(tb_name); + message->msg_state = TG_MESSAGE_STATE_SENT; } else { - // message sent failed. + message->msg_state = TG_MESSAGE_STATE_FAILED; } -#endif + + char* tb_name = get_table_name_from_number(message->to_id.id); + update_msg_into_db(message, tb_name, identifier); + if (message->media.type == tgl_message_media_photo) { + update_sent_media_info_in_db(message, (long long)identifier); + } + send_message_sent_to_buddy_response(message->to_id.id, message->id, tb_name, phone, tgl_get_peer_type(message->to_id)); + free(tb_name); } void on_image_download_completed(struct tgl_state *TLS, void *callback_extra, int success, char *filename) { struct tgl_photo* photo_prop = (struct tgl_photo*)callback_extra; - - if(photo_prop && filename) { - long long media_id = photo_prop->id; - int buddy_id = photo_prop->user_id; - update_receive_media_info_in_db(media_id, filename); - //send response to application - send_media_download_completed_response(buddy_id, media_id, filename); - free(photo_prop); + long long media_id = photo_prop->id; + int buddy_id = photo_prop->user_id; + if (success) { + if(photo_prop && filename) { + update_receive_media_info_in_db(media_id, filename); + //send response to application + send_media_download_completed_response(buddy_id, media_id, filename); + free(photo_prop); + } + } else { + send_media_download_completed_response(buddy_id, media_id, NULL); } } @@ -1077,6 +1070,7 @@ void media_download_request(int buddy_id, long long media_id) Eina_List* img_details = get_image_details_from_db(media_id); if(!img_details) { + send_media_download_completed_response(buddy_id, media_id, NULL); return; } else { @@ -1580,72 +1574,39 @@ void media_download_request(int buddy_id, long long media_id) } -void send_message_to_buddy(int buddy_id, int msg_type, char* msg_data, int type_of_chat) +void send_message_to_buddy(int buddy_id, int message_id, int msg_type, char* msg_data, int type_of_chat) { // get type of chat from buddy_id. - struct tgl_message msg; - msg.from_id.id = tg_data->id.id; - - msg.date = 0; - msg.flags = 0; - msg.fwd_date = 0; - msg.fwd_from_id.id = 0; - msg.fwd_from_id.type = 0; - msg.id = 0; - msg.message = msg_data; - msg.message_len = strlen (msg_data); - msg.out = 0; - msg.service = 0; - msg.to_id.id = buddy_id; - msg.unread = 0; - msg.media.type = msg_type; - -#if 0 - Eina_List* buddy_details_array = get_buddy_info(buddy_id); - - if (buddy_details_array && eina_list_count(buddy_details_array) > 0) { - Eina_List* buddy_details = eina_list_nth(buddy_details_array, 0); - if (buddy_details && eina_list_count(buddy_details) > 0) { - char* phone = eina_list_nth(buddy_details, 7); - if (phone) { - // get table name from phone number - char* msg_table = get_table_name_from_number(phone); - int t = time(NULL); - insert_msg_into_db(&msg, msg_table, t); - tgl_do_send_message(TLS, msg.to_id, msg_data, strlen (msg_data), &on_message_sent_to_buddy, (void*)(t)); - free(msg_table); - free(phone); - // buddy_details_array memory to be deleted - } - } - } -#else char* msg_table = get_table_name_from_number(buddy_id); - int t = time(NULL); - insert_msg_into_db(&msg, msg_table, t); + struct tgl_message* msg = get_message_from_message_table(message_id, msg_table); + + if (msg) { + if (type_of_chat == TGL_PEER_USER) { + msg->from_id.type = TGL_PEER_USER; + msg->to_id.type = TGL_PEER_USER; + tgl_do_send_message(TLS, msg->to_id, msg->message, strlen(msg->message), &on_message_sent_to_buddy, (void*)(msg->id)); + } else if (type_of_chat == TGL_PEER_CHAT) { + msg->from_id.type = TGL_PEER_CHAT; + msg->to_id.type = TGL_PEER_CHAT; + tgl_do_send_message(TLS, msg->to_id, msg_data, strlen(msg_data), &on_message_sent_to_buddy, (void*)(msg->id)); + } else if (type_of_chat == TGL_PEER_ENCR_CHAT) { - if (type_of_chat == TGL_PEER_USER) { - msg.from_id.type = TGL_PEER_USER; - msg.to_id.type = TGL_PEER_USER; - tgl_do_send_message(TLS, msg.to_id, msg_data, strlen(msg_data), &on_message_sent_to_buddy, (void*)(t)); - } else if (type_of_chat == TGL_PEER_CHAT) { - msg.from_id.type = TGL_PEER_CHAT; - msg.to_id.type = TGL_PEER_CHAT; - tgl_do_send_message(TLS, msg.to_id, msg_data, strlen(msg_data), &on_message_sent_to_buddy, (void*)(t)); - } else if (type_of_chat == TGL_PEER_ENCR_CHAT) { - - } else { + } else { + } + if (msg->message) { + free(msg->message); + } + free(msg); } - free(msg_table); -#endif } -void send_media_to_buddy(int buddy_id, int msg_type, char* file_path) +void send_media_to_buddy(int buddy_id, int message_id, int media_id, int msg_type, char* file_path, int type_of_chat) { +#if 0 int t = time(NULL); struct tgl_message msg; msg.from_id.id = tg_data->id.id; @@ -1666,31 +1627,49 @@ void send_media_to_buddy(int buddy_id, int msg_type, char* file_path) msg.media.type = msg_type; msg.media.photo.id = (long long)t; -#if 0 - Eina_List* buddy_details_array = get_buddy_info(buddy_id); - - if (buddy_details_array && eina_list_count(buddy_details_array) > 0) { - Eina_List* buddy_details = eina_list_nth(buddy_details_array, 0); - if (buddy_details && eina_list_count(buddy_details) > 0) { - char* phone = eina_list_nth(buddy_details, 7); - if (phone) { - // get table name from phone number - char* msg_table = get_table_name_from_number(phone); - - insert_msg_into_db(&msg, msg_table, t); - insert_media_info_to_db(&msg, file_path); - tgl_do_send_document(TLS, -1, msg.to_id, file_path, &on_message_sent_to_buddy, (void*) (t)); - free(msg_table); - free(phone); - } - } - } -#else char* msg_table = get_table_name_from_number(buddy_id); insert_msg_into_db(&msg, msg_table, t); insert_media_info_to_db(&msg, file_path); tgl_do_send_document(TLS, -1, msg.to_id, file_path, &on_message_sent_to_buddy, (void*) (t)); free(msg_table); +#else + + char* msg_table = get_table_name_from_number(buddy_id); + struct tgl_message* msg = get_message_from_message_table(message_id, msg_table); + + if (msg) { + if (type_of_chat == TGL_PEER_USER) { + + msg->from_id.type = TGL_PEER_USER; + msg->to_id.type = TGL_PEER_USER; + + + if (msg->media.type == tgl_message_media_photo) { + tgl_do_send_document(TLS, -1, msg->to_id, file_path, &on_message_sent_to_buddy, (void*) (msg->id)); + } + + + } else if (type_of_chat == TGL_PEER_CHAT) { + msg->from_id.type = TGL_PEER_CHAT; + msg->to_id.type = TGL_PEER_CHAT; + + if (msg->media.type == tgl_message_media_photo) { + tgl_do_send_document(TLS, -1, msg->to_id, file_path, &on_message_sent_to_buddy, (void*) (msg->id)); + } + + + } else if (type_of_chat == TGL_PEER_ENCR_CHAT) { + + } else { + + } + if (msg->message) { + free(msg->message); + } + free(msg); + } + free(msg_table); + #endif } diff --git a/tg-engine-service/tg_engine/tg_engine.h b/tg-engine-service/tg_engine/tg_engine.h index b027959..e61db17 100644 --- a/tg-engine-service/tg_engine/tg_engine.h +++ b/tg-engine-service/tg_engine/tg_engine.h @@ -178,8 +178,8 @@ typedef struct contact_data { } contact_data_s; -void send_message_to_buddy(int buddy_id, int msg_type, char* msg_data, int type_of_chat); -void send_media_to_buddy(int buddy_id, int msg_type, char* file_path); +void send_message_to_buddy(int buddy_id, int message_id, int msg_type, char* msg_data, int type_of_chat); +void send_media_to_buddy(int buddy_id, int message_id, int media_id, int msg_type, char* file_path, int type_of_chat); void media_download_request(int buddy_id, long long media_id); void add_contacts_to_user(int size, Eina_List* contact_list); diff --git a/tg-engine-service/tg_engine_utils/tg_common.h b/tg-engine-service/tg_engine_utils/tg_common.h index f0b9658..b7a8450 100644 --- a/tg-engine-service/tg_engine_utils/tg_common.h +++ b/tg-engine-service/tg_engine_utils/tg_common.h @@ -14,6 +14,18 @@ #define DEFAULT_TELEGRAM_PATH "/opt/usr/media/telegram/" #define DEFAULT_TG_DATABASE_PATH "/opt/usr/media/telegram/tg_data_base.db" +typedef enum MESSAGE_STATE { + TG_MESSAGE_STATE_SENDING = 1, + TG_MESSAGE_STATE_SENT, + TG_MESSAGE_STATE_DELIVERED, + TG_MESSAGE_STATE_FAILED, + TG_MESSAGE_STATE_RECEIVED, + TG_MESSAGE_STATE_READ, + TG_MESSAGE_STATE_UNKNOWN +} TG_MESSAGE_STATE; + + + //static char* get_table_name_from_number(const char* phone_no) static char* get_table_name_from_number(const int id) { -- 2.7.4