summaryrefslogtreecommitdiff
path: root/mailbox/include/email-mailbox.h
diff options
context:
space:
mode:
Diffstat (limited to 'mailbox/include/email-mailbox.h')
-rwxr-xr-xmailbox/include/email-mailbox.h456
1 files changed, 456 insertions, 0 deletions
diff --git a/mailbox/include/email-mailbox.h b/mailbox/include/email-mailbox.h
new file mode 100755
index 0000000..27dbe1a
--- /dev/null
+++ b/mailbox/include/email-mailbox.h
@@ -0,0 +1,456 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __DEF_EMAIL_MAILBOX_H_
+#define __DEF_EMAIL_MAILBOX_H_
+
+#include <Elementary.h>
+#include <Ecore_IMF.h>
+#include <vconf.h>
+#include <libintl.h>
+#include <appcore-efl.h>
+#undef _
+#include <ui-gadget-module.h>
+#include <Ecore_X.h>
+
+#include <glib.h>
+#include <glib-object.h>
+#include <glib/gprintf.h>
+
+#include "email-types.h"
+#include "email-debug.h"
+#include "email-common-types.h"
+#include "email-engine.h"
+#include "email-utils.h"
+#include "email-locale.h"
+
+#include <unicode/uloc.h>
+#include <unicode/ucal.h>
+#include <unicode/udat.h>
+#include <unicode/udatpg.h>
+#include <unicode/ustring.h>
+
+#define MAILBOX_PACKAGE "email-mailbox"
+
+#define EDJ_PATH EDJDIR
+#define GRP_MAIN "main"
+#define GRP_MAIN_ALL_EMAILS "main_all_emails"
+#define THEME_PATH EDJ_PATH"/email-mailbox-theme.edj"
+#define EFFECT_EDJ_PATH EDJ_PATH"/email-effect-layout.edj"
+#define _EDJ(o) elm_layout_edje_get(o)
+
+#define ICON_BLOCK IMGDIR"/M02_controlbar_icon_block.png"
+#define ICON_MOVE IMGDIR"/M02_controlbar_icon_move.png"
+#define ICON_DELETE_ALL IMGDIR"/M02_controlbar_icon_delete_all.png"
+#define ICON_DELETE IMGDIR"/M02_controlbar_icon_delete.png"
+#define ICON_MARKUNREAD IMGDIR"/M02_controlbar_icon_mark_as_unread.png"
+#define ICON_CANCEL IMGDIR"/M02_controlbar_icon_cancel.png"
+#define ICON_COMPOSE IMGDIR"/M02_controlbar_icon_compose.png"
+#define ICON_UPDATE IMGDIR"/M02_controlbar_icon_update.png"
+#define ICON_FOLDERS IMGDIR"/M02_email_icon_title_folders.png"
+#define ICON_SORTBY IMGDIR"/M02_controlbar_icon_sort_by.png"
+#define ICON_VIEWMODE IMGDIR"/M02_controlbar_icon_view_mode.png"
+#define ICON_MORE IMGDIR"/M02_controlbar_icon_more.png"
+#define ICON_EDIT IMGDIR"/M02_controlbar_icon_edit.png"
+#define ICON_CLOSE IMGDIR"/M02_email_icon_title_down.png"
+#define ICON_OPEN IMGDIR"/M02_email_icon_title_up.png"
+#define ICON_TITLE_ALL_ACC IMGDIR"/M02_email_list_icon_allaccount.png"
+#define ICON_INDEX_CLOSE IMGDIR"/M02_email_icon_index_close.png"
+
+#define CK_UNCHECKED 0
+#define CK_CHECKED 1
+
+#define EMAIL_SLOT_UNIT 25
+
+typedef struct EmailMailboxListAppData EmailMailboxListAppData;
+
+struct EmailMailboxListAppData {
+ Evas *evas;
+ Evas_Object *win_main;
+ Evas_Object *layout_main; /* layout widget based on EDJ */
+};
+
+typedef struct ug_data EmailMailboxUGD;
+
+typedef struct {
+ EmailMailboxUGD *mailbox_ugd;
+
+ gchar *from;
+ gchar *alias;
+ gchar *sender;
+ gchar *preview_body;
+ char *title;
+ char *recipient;
+ gint group_index;
+ gchar *timeordate;
+ gchar *group_title;
+ gchar *group_date;
+ gint mailbox_id;
+ int mailbox_type;
+ gboolean is_attachment;
+ gboolean is_seen;
+ gboolean is_sending_now;
+ gboolean is_body_download;
+ gint mail_id;
+ gint account_id;
+ int account_color;
+ gint thread_id;
+ gint thread_count;
+ gint chksel;
+ Evas_Object *check;
+ Evas_Object *flag_ic;
+ gint imp_sel;
+ Evas_Object *important;
+ gint idx;
+ gint priority;
+ gint reply_flag;
+ gint forward_flag;
+ gint followup_flag;
+ time_t absolute_time;
+ Elm_Object_Item *item;
+} list_data;
+
+typedef enum {
+ EMAIL_MAILBOX_MODE_UNKOWN = -1,
+ EMAIL_MAILBOX_MODE_ALL,
+ EMAIL_MAILBOX_MODE_MAILBOX,
+ EMAIL_MAILBOX_MODE_MAX,
+} EmailMailboxMode;
+
+
+typedef enum {
+ VIEWBY_UNKNOWN = -1,
+ VIEWBY_DATE_RECENT,
+ VIEWBY_DATE_OLD,
+ VIEWBY_SENDER_ATOZ,
+ VIEWBY_SENDER_ZTOA,
+ VIEWBY_UNREAD,
+ VIEWBY_IMPORTANT,
+ VIEWBY_ATTACHMENT,
+ VIEWBY_PRIORITY,
+ VIEWBY_MAX,
+} EmailMailboxViewby;
+
+typedef enum {
+ VIEWMODE_UNKNOWN = -1,
+ VIEWMODE_STANDARD,
+ VIEWMODE_CONVERSATION,
+ VIEWMODE_MAX,
+} EmailMailboxViewmode;
+
+typedef enum {
+ SEARCHBY_UNKNOWN = -1,
+ SEARCHBY_ALL,
+ SEARCHBY_TITLE,
+ SEARCHBY_SENDER,
+ SEARCHBY_MAX,
+} EmailMailboxSearchby;
+
+typedef enum {
+ EMAIL_GROUP_UNKNOWN = -1,
+ EMAIL_GROUP_TODAY,
+ EMAIL_GROUP_YESTERDAY,
+ EMAIL_GROUP_SUN,
+ EMAIL_GROUP_MON,
+ EMAIL_GROUP_TUE,
+ EMAIL_GROUP_WED,
+ EMAIL_GROUP_THU,
+ EMAIL_GROUP_LASTWEEK,
+ EMAIL_GROUP_TWOWEEKS_AGO,
+ EMAIL_GROUP_THREEWEEKS_AGO,
+ EMAIL_GROUP_EARLIER_THISMONTH,
+ EMAIL_GROUP_LASTMONTH,
+ EMAIL_GROUP_OLDER,
+ EMAIL_GROUP_UNREAD,
+ EMAIL_GROUP_READ,
+ EMAIL_GROUP_FAVORITES,
+ EMAIL_GROUP_ATTACHMENTS,
+ EMAIL_GROUP_OTHER,
+ EMAIL_GROUP_PRIORITY_HIGH,
+ EMAIL_GROUP_PRIORITY_NORMAL,
+ EMAIL_GROUP_PRIORITY_LOW,
+ EMAIL_GROUP_MAX,
+} EmailMailboxGroup;
+
+typedef enum {
+ EMAIL_VIEW_UNKNOWN = -1,
+ EMAIL_VIEW_DATE, /* should display only seed mail */
+ EMAIL_VIEW_RECIPIENT, /* should display recipient list */
+ EMAIL_VIEW_UNREAD, /* should display only unread mail */
+ EMAIL_VIEW_IMPORTANT, /* Disply only important mail */
+ EMAIL_VIEW_EDIT, /* Delete / Block / MoveTo */
+ EMAIL_VIEW_SEARCH,
+ EMAIL_VIEW_PRIORITY,
+ EMAIL_VIEW_ATTACHMENTS,
+ EMAIL_VIEW_MAX,
+} EmailMailboxViewType;
+
+typedef struct _email_movefolder_list {
+ email_mailbox_t *mailbox_list;
+ EmailMailboxUGD *mailbox_ugd;
+} email_movefolder_list;
+
+typedef struct _MailboxAdvSearchViewInfo {
+ Evas_Object *clicked_object;
+ Evas_Object *entry_title;
+ Evas_Object *entry_sender_address;
+ Evas_Object *entry_date_from;
+ Evas_Object *entry_date_to;
+ Evas_Object *search_title;
+ Evas_Object *search_sender_address;
+ Evas_Object *search_date_from;
+ Evas_Object *search_date_to;
+ char* str_title;
+ char* str_sender_address;
+ char* str_search_criteria;
+ time_t from_date;
+ time_t to_date;
+ char* str_from_date;
+ char* str_to_date;
+ EmailMailboxUGD *mailbox_ugd;
+} MailboxAdvSearchViewInfo;
+
+typedef struct _noti_event {
+ int operation;
+ int data1;
+ int data2;
+ char* data3;
+ int data4;
+} noti_event;
+
+struct ug_data {
+ Evas *evas;
+ Evas_Object *win_main;
+ Evas_Object *layout_main;
+ Evas_Object *panes;
+ Evas_Object *gen_list_index;
+ Evas_Object *effect_account_ly;
+ Evas_Object *effect_composer_ly;
+
+ EmailMailboxViewType view_type;
+ EmailMailboxViewType previous_view;
+ Evas_Object *gl[EMAIL_VIEW_MAX];
+ Evas_Object *ly;
+ Evas_Object *check;
+ Evas_Object *navi_bar;
+ Evas_Object *controlbar_seg;
+ Evas_Object *controlbar_btns;
+ Evas_Object *prev_controlbar;
+ Evas_Object *no_content;
+ Evas_Object *no_content_sender;
+ Elm_Theme *theme;
+ Elm_Object_Item *navibar_item[EMAIL_VIEW_MAX];
+ Evas_Object *navi_title_ly;
+ Evas_Object *sp_icon;
+ Evas_Object *title_arrow;
+ Evas_Object *content_edit;
+ Evas_Object *searchbar_en;
+ Elm_Object_Item *load_more_button;
+ Elm_Object_Item *edit_button;
+ //Elm_Object_Item *edit_cancel_button;
+ Evas_Object *folder_button;
+ Evas_Object *update_button;
+ Evas_Object *sync_progress;
+ Elm_Object_Item *delete_all_button;
+ Evas_Object *ctxpopup;
+ Evas_Object *motion_popup;
+ GList *important_list;
+ Elm_Object_Item *date_tab;
+ Evas_Object *selectioninfo_layout;
+ Evas_Object *sub_layout[EMAIL_VIEW_MAX];
+ Evas_Object *move_button;
+ Evas_Object *block_button;
+ Evas_Object *search_layout;
+ Evas_Object *searchbar_layout;
+ Evas_Object *searchbar_area;
+ Evas_Object *searchby_button;
+ Evas_Object *prev_search_layout;
+ Evas_Object *prev_searchbar_layout;
+ Evas_Object *prev_searchbar_en;
+ Evas_Object *prev_searchbar_area;
+ Evas_Object *prev_searchby_button;
+ Elm_Object_Item *git[EMAIL_VIEW_MAX][EMAIL_GROUP_MAX];
+ app_device_orientation_e current_rotmode;
+ bool isRotate;
+ Evas_Object *viewer_ly;
+ Evas_Object *main_back_btn;
+ Evas_Object *viewby_popup;
+ Evas_Object *delete_popup;
+ Evas_Object *searchby_ctx_popup;
+ Evas_Object *account_dim;
+ GList *folder_list;
+ GList *selected_list; /* revised, used to move the mails selected in previous view */
+ GList *delete_mail_list;
+ GList *noti_Q;
+ gboolean need_sync;
+ gint sort_type_index;
+ gint from_width;
+ gint account_id;
+ gint thread_id;
+ gint thread_mail_count;
+ gint total_count;
+ gint date_type;
+ gint chk_cnt;
+ gint unread_cnt;
+ EmailSortType sort_type;
+ gboolean refresh;
+ gboolean bhour;
+ gchar *search_text;
+ guint index;
+ char *address;
+ gchar *display_name;
+ guint add_item_id;
+ gint mailbox_id;
+ email_mailbox_type_e mailbox_type;
+ gchar *folder_alias;
+ gchar *user_email;
+ gint uid;
+ gint cur_container_type;
+ gint initial_run;
+ gint b_thread_list;
+ gint main_w;
+ gint main_h;
+
+ EmailSearchType search_type;
+ email_movefolder_list *move_folder_list; /* revised, used to dealloc */
+ gint move_folder_cnt; /* revised, used to dealloc */
+
+ MailboxAdvSearchViewInfo *adv_search_info;
+ gboolean b_advanced_search_view;
+ unsigned emf_handle;
+ EmailAccountInfo *account_info;
+ E_DBus_Connection *edbus_conn;
+ gchar *prev_group_title;
+ //email_sender_list *sender_list;
+ //gint sender_cnt;
+ EmailMailboxMode mode;
+
+ /* index for mail list when mailbox receive email from emailservice */
+ gint download_idx;
+ Elm_Object_Item *after_item;
+ Evas_Object *base;
+ ui_gadget_h ug;
+ struct ug_cbs cbs;
+
+ ui_gadget_h ug_viewer;
+ ui_gadget_h ug_composer;
+ ui_gadget_h ug_account;
+ ui_gadget_h ug_setting;
+ ui_gadget_h ug_document;
+ int viewer_refresh;
+ int viewer_effect;
+ Evas_Object *temp_ly;
+ bool viewer_loading;
+ Evas_Object *split_nocontent;
+ GList *list_data[EMAIL_VIEW_MAX];
+ int create_progress_part;
+
+ Elm_Genlist_Item_Class itc1;
+ Elm_Genlist_Item_Class itc2;
+};
+
+
+/* int account_id, email_folder_type_e folder_type */
+#define GET_MAILBOX_ID(account_id, folder_type) \
+ ({\
+ int _acct = account_id;\
+ int _type = folder_type;\
+ int _folder = 0;\
+ email_mailbox_t *mbox = NULL;\
+ int e = email_get_mailbox_by_mailbox_type(_acct, _type, &mbox);\
+ if( e != EMAIL_ERROR_NONE || !mbox ) {\
+ debug_warning("Error to get mailbox id acct(%d) type(%d) - err(%d) or mbox is NULL(%p)",\
+ _acct, _type, e, mbox);\
+ }\
+ else _folder = mbox->mailbox_id;\
+ if(mbox) email_free_mailbox(&mbox, 1);\
+ _folder;\
+ })
+
+/* int mailbox_id */
+#define GET_MAILBOX_TYPE(mailbox_id) \
+ ({\
+ int _folder = mailbox_id;\
+ email_mailbox_t *mbox = NULL;\
+ int type = EMAIL_MAILBOX_TYPE_NONE;\
+ int e = email_get_mailbox_by_mailbox_id(_folder, &mbox);\
+ if( e != EMAIL_ERROR_NONE || !mbox )\
+ debug_warning("email_get_mailbox_by_mailbox_id folder(%d) - err(%d) or mbox is NULL(%p)",\
+ _folder, e, mbox);\
+ else type = mbox->mailbox_type;\
+ if(mbox) email_free_mailbox(&mbox, 1);\
+ type;\
+ })
+
+#define GET_ACCOUNT_SERVER_TYPE(account_id) \
+ ({\
+ email_account_t *email_account = NULL;\
+ int server_type = 0;\
+ int e = email_get_account(account_id, EMAIL_ACC_GET_OPT_DEFAULT, &email_account);\
+ if (e != EMAIL_ERROR_NONE || !email_account) {\
+ debug_warning("email_get_account acct(%d) - err(%d) or acct NULL(%p)",\
+ account_id, e, email_account);\
+ }\
+ else server_type = email_account->incoming_server_type;\
+ if(email_account) email_free_account(&email_account, 1);\
+ server_type;\
+ })
+
+#define GET_INBOX_TO_GETMORE(account_id) \
+ ({\
+ int _folder = GET_MAILBOX_ID(account_id, EMAIL_MAILBOX_TYPE_INBOX);\
+ email_mailbox_t *mbox = NULL;\
+ int i_getmore = 0;\
+ int e = email_get_mailbox_by_mailbox_id(_folder, &mbox);\
+ if( e != EMAIL_ERROR_NONE || !mbox )\
+ debug_warning("email_get_mailbox_by_mailbox_id folder(%d) - err(%d) or mbox is NULL(%p)",\
+ _folder, e, mbox);\
+ else i_getmore = (mbox->total_mail_count_on_server-mbox->total_mail_count_on_local);\
+ if(mbox) email_free_mailbox(&mbox, 1);\
+ i_getmore;\
+ })
+
+#define GET_MAILBOX_TO_GETMORE(mailbox_id) \
+ ({\
+ int _folder = mailbox_id;\
+ email_mailbox_t *mbox = NULL;\
+ int i_getmore = 0;\
+ int e = email_get_mailbox_by_mailbox_id(_folder, &mbox);\
+ if( e != EMAIL_ERROR_NONE || !mbox )\
+ debug_warning("email_get_mailbox_by_mailbox_id folder(%d) - err(%d) or mbox is NULL(%p)",\
+ _folder, e, mbox);\
+ else i_getmore = (mbox->total_mail_count_on_server-mbox->total_mail_count_on_local);\
+ if(mbox) email_free_mailbox(&mbox, 1);\
+ i_getmore;\
+ })
+
+void _update_navigationbar_title(EmailMailboxUGD *mailbox_ugd);
+ui_gadget_h create_composer_ug(char *ug_name, service_h service, void *data);
+void layout_composer_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+void result_composer_cb(ui_gadget_h ug, service_h service, void *priv);
+void _stop_emf_job(EmailMailboxUGD *mailbox_ugd, unsigned handle, gboolean change_download_label_in_panel);
+void email_rotate_landscape(EmailMailboxUGD *mailbox_ugd);
+void _update_toolbar_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void _update_toolbar_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void destroy_account_cb(ui_gadget_h ug, void *priv);
+void _sync_all_folder(EmailMailboxUGD *mailbox_ugd);
+void _sync_curr_folder(EmailMailboxUGD *mailbox_ugd, int mailbox_id);
+void _open_email_body(gint uid, Elm_Object_Item *item);
+void _create_email_no_content_view(EmailMailboxUGD *mailbox_ugd);
+void _reset_refer_item_and_idx(EmailMailboxUGD *mailbox_ugd);
+email_sort_type_t _mailbox_conv_sort_type(EmailSortType sort_type);
+
+#endif /* __DEF_email-mailbox_H__ */