summaryrefslogtreecommitdiff
path: root/account/include/email-account.h
blob: d9e9227a8df06de111d2c75b60a3949cc24d2229 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
/*
 * 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 __email_account_H__
#define __email_account_H__

#include <Edje.h>
#include <Elementary.h>
#include <libintl.h>
#include <ui-gadget-module.h>
#undef _
#include <appcore-efl.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
#include <glib.h>
#include <glib-object.h>
#include <Ecore_IMF.h>
#include <utilX.h>
#include <vconf.h>
#include <vconf-keys.h>
#include <glib/gprintf.h>
#include <status.h>

#include "email-api.h"
#include "email-types.h"

#include "email-utils.h"
#include "email-engine.h"
#include "email-debug.h"
#include "email-common-types.h"
#include "email-locale.h"

#define ACCOUNT_PACKAGE "email-account"
#define THEME_PATH EDJDIR"/email-account-theme.edj"

#define CONTROLBAR_ICON_COMPOSE IMGDIR"/M02_controlbar_icon_compose.png"
#define CONTROLBAR_ICON_UPDATE IMGDIR"/M02_controlbar_icon_update.png"
#define CONTROLBAR_ICON_ADD IMGDIR"/M02_controlbar_icon_add_folder.png"
#define CONTROLBAR_ICON_RENAME IMGDIR"/M02_controlbar_icon_edit.png"
#define CONTROLBAR_ICON_MOVE IMGDIR"/M02_controlbar_icon_move.png"
#define CONTROLBAR_ICON_DELETE IMGDIR"/M02_controlbar_icon_delete.png"

#define ACCOUNT_ICON_GMAIL IMGDIR"/M02_email_list_icon_gmail.png"
#define ACCOUNT_ICON_HOTMAIL IMGDIR"/M02_email_list_icon_hotmail.png"
#define ACCOUNT_ICON_YAHOO IMGDIR"/M02_email_list_icon_YahooMail.png"
#define ACCOUNT_ICON_AOL IMGDIR"/M02_email_list_icon_AOL.png"
#define ACCOUNT_ICON_OTHERS IMGDIR"/icon_email.png"

#define ACCOUNT_ICON_ADDACCOUNT IMGDIR"/M02_email_list_icon_addaccount.png"
#define ACCOUNT_ICON_ALLACCOUNT IMGDIR"/M02_email_list_icon_allaccount.png"

#define _EDJ(o) elm_layout_edje_get(o)

#define MAX_STR_LEN	1024
#define NUM_STR_LEN	20

#define EMAIL_HANDLE_INVALID -1

typedef enum
{
	ACC_MAILBOX_TYPE_INBOX		= 0,	/**< Specified inbox type*/
	ACC_MAILBOX_TYPE_FLAGGED	= 1,	/**< Specified flagged mailbox type on gmail */
	ACC_MAILBOX_TYPE_DRAFT		= 2,	/**< Specified draft box type*/
	ACC_MAILBOX_TYPE_OUTBOX		= 3,	/**< Specified outbox type*/
	ACC_MAILBOX_TYPE_SENTBOX	= 4,	/**< Specified sent box type*/
	ACC_MAILBOX_TYPE_SPAMBOX	= 5,	/**< Specified spam box type*/
	ACC_MAILBOX_TYPE_TRASH		= 6,	/**< Specified trash type*/
	ACC_MAILBOX_TYPE_MAX			= 7,	/**< Specified all emails type of gmail*/
}account_mailbox_type_e;

typedef enum
{
	ACC_UG_ACCOUNT_VIEW	= 0,		/** UG_MODE_FRAMEVIEW */
	ACC_UG_FOLDER_VIEW	= 1,		/** UG_MODE_FULLVIEW */
}account_ug_view_type_e;

typedef enum
{
	ACC_FOLDER_NONE			= 0,
	ACC_FOLDER_CREATE			= 1,
	ACC_FOLDER_RENAME		= 2,
	ACC_FOLDER_DELETE			= 3,
	ACC_FOLDER_MOVE_TO		= 4,
	ACC_FOLDER_MOVE_FROM	= 5,
//	ACC_FOLDER_EDIT			= 2,
}folder_view_type_e;

struct _menu_item {
	char *name;
	int i_boxtype;
	void (*func)(void *data, Evas_Object *obj, const char *part);
};

typedef struct ug_data EmailAccountUGD;
typedef struct email_account_list email_account_list;

typedef struct _Item_Data Item_Data;
struct _Item_Data {
	EmailAccountUGD *ug_data;
	email_account_list *alist;

	Elm_Object_Item *it; // Genlist Item pointer
	Eina_Bool checked; // Check status

	GNode *child;
};

struct email_account_list {
	EmailAccountUGD *ug_data;

	int read_count;
	int unread_count;
	int n_mailbox_list;
	email_mailbox_t *mailbox_list;
	email_account_t *account_info;
	GNode *folder_root;
};

struct ug_data {
	Evas *evas;
	Evas_Object *win;
	Evas_Object *bg;

	email_account_t *account_list;
	Evas_Object *ly;
	Evas_Object *sub_ly;
	Evas_Object *navi_bar;
	Elm_Object_Item *navibar_item;
	Evas_Object *navi_title_ly;
	Evas_Object *sp_icon;
	Evas_Object *title_arrow;
	Evas_Object *r_button;
	Evas_Object *ctr_bar;
	email_account_list *alist;
	gint account_count;
	Evas_Object *update_button;

	Evas_Object *gl;
	gint n_account_list;
	gint end_key_event;
	Elm_Object_Item *item[2];
	Evas_Object *control_bar;

	int all_read_count;
	int all_unread_count;
	int all_acc_read_count[ACC_MAILBOX_TYPE_MAX];
	int all_acc_unread_count[ACC_MAILBOX_TYPE_MAX];

	int block_item_click;
	int main_w;
	int main_h;
	int b_duplicated_node;
	char *traverse_compare;
	email_mailbox_t *traverse_compare_mlist;

	GNode *current_parent;

	int account_id;
	int folder_id;
	int ug_mode;
	int mailbox_type;

	int folder_mode;
	unsigned emf_handle;
	Elm_Object_Item *root_item;
	Elm_Object_Item *it;
	Evas_Object *entry;
	Evas_Object *popup;
	Evas_Object *conformant;
	Elm_Object_Item *move_from_item;

	Evas_Object *select_info;
	Evas_Object *selectioninfo_layout;
	int checked_count;
	Elm_Object_Item *renamed_it;

	E_DBus_Connection *dbus_conn;
	E_DBus_Signal_Handler *signal_handler_network;
	E_DBus_Signal_Handler *signal_handler_storage;

	Evas_Object *base;
	ui_gadget_h ug_composer;
	ui_gadget_h ug_setting;
	ui_gadget_h ug;
};

#define GET_ACCOUNT_SERVER_TYPE(account_id) \
		({\
			email_account_t *email_account = NULL;\
			int server_type = 0;\
			int e = email_get_account(account_id, 0, &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;\
		})

#endif	/* __email_account_H__ */

void _create_account_view(EmailAccountUGD *ug_data);
void _destroy_view(EmailAccountUGD *ug_data);
Evas_Object *_add_emtpy_list(void *data);
void _open_mail_list(void *data, Evas_Object *obj, void *event_info);

/* EOF */