ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"")
# Add your submodule directory name
+ADD_SUBDIRECTORY(mailbox)
+ADD_SUBDIRECTORY(block)
ADD_SUBDIRECTORY(common)
ADD_SUBDIRECTORY(setting)
ADD_SUBDIRECTORY(composer)
+ADD_SUBDIRECTORY(account)
+ADD_SUBDIRECTORY(main)
ADD_SUBDIRECTORY(po)
--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)\r
+PROJECT(ug-email-account-efl C)\r
+\r
+SET(SRCS\r
+ ./src/email-account.c\r
+ ./src/email-account-folder.c\r
+)\r
+SET(CMAKE_SKIP_BUILD_RPATH TRUE)\r
+\r
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")\r
+ SET(CMAKE_BUILD_TYPE "Release")\r
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")\r
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")\r
+\r
+SET(CMAKE_ACCOUNT_SOURCE_DIR "${CMAKE_SOURCE_DIR}/account")\r
+SET(CMAKE_ACCOUNT_BINARY_DIR "${CMAKE_BINARY_DIR}/account")\r
+INCLUDE_DIRECTORIES(${CMAKE_ACCOUNT_SOURCE_DIR}/include)\r
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include)\r
+\r
+INCLUDE(FindPkgConfig)\r
+pkg_check_modules(pkgs-account REQUIRED appcore-efl ui-gadget-1 x11 elementary email-service bundle dlog capi-appfw-application status)\r
+\r
+FOREACH(flag ${pkgs-account_CFLAGS})\r
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")\r
+ENDFOREACH(flag)\r
+\r
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")\r
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")\r
+\r
+FIND_PROGRAM(UNAME NAMES uname)\r
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")\r
+IF("${ARCH}" STREQUAL "arm")\r
+ ADD_DEFINITIONS("-DTARGET")\r
+ MESSAGE("add -DTARGET")\r
+ SET(CMAKE_C_FLAGS_RELEASE "-mabi=aapcs-linux -msoft-float -O2")\r
+ENDIF("${ARCH}" STREQUAL "arm")\r
+\r
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")\r
+ADD_DEFINITIONS("-DDEBUG")\r
+\r
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})\r
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} email-common ${pkgs-account_LDFLAGS})\r
+\r
+ADD_CUSTOM_TARGET(email-account-theme.edj\r
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images\r
+ ${CMAKE_ACCOUNT_SOURCE_DIR}/theme/email_account_theme.edc ${CMAKE_ACCOUNT_BINARY_DIR}/email-account-theme.edj\r
+ DEPENDS ${CMAKE_ACCOUNT_SOURCE_DIR}/theme/email_account_theme.edc\r
+)\r
+ADD_DEPENDENCIES(${PROJECT_NAME} email-account-theme.edj)\r
+\r
+ADD_CUSTOM_TARGET(email-effect-layout.edj\r
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images\r
+ ${CMAKE_ACCOUNT_SOURCE_DIR}/theme/email_effect_layout.edc ${CMAKE_ACCOUNT_BINARY_DIR}/email-effect-layout.edj\r
+ DEPENDS ${CMAKE_ACCOUNT_SOURCE_DIR}/theme/email_effect_layout.edc\r
+)\r
+ADD_DEPENDENCIES(${PROJECT_NAME} email-effect-layout.edj)\r
+\r
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR})\r
+INSTALL(FILES ${CMAKE_ACCOUNT_BINARY_DIR}/email-account-theme.edj DESTINATION ${EDJDIR})\r
+INSTALL(FILES ${CMAKE_ACCOUNT_BINARY_DIR}/email-effect-layout.edj DESTINATION ${EDJDIR})\r
+#INSTALL(DIRECTORY ${CMAKE_ACCOUNT_SOURCE_DIR}/images DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png")\r
+\r
+# i18n\r
+#ADD_SUBDIRECTORY(po)\r
--- /dev/null
+/*
+ * 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_folder_H_
+#define __email_account_folder_H__
+
+#include "email-account.h"
+
+Evas_Object *create_fullview(EmailAccountUGD *ug_data);
+void _create_folder_view(EmailAccountUGD *ug_data);
+void _refresh_folder_view(void *data);
+void _finish_folder_view(void *data, Evas_Object *obj, void *event_info);
+
+void _dbus_receiver_setup(EmailAccountUGD *ug_data);
+void _remove_dbus_receiver(EmailAccountUGD *ug_data);
+
+
+#endif /* __email_account_folder_H__ */
+
+/* EOF */
--- /dev/null
+/*
+ * 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_EXCHANGE IMGDIR"/M02_email_list_icon_exchange.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 */
--- /dev/null
+/*
+ * 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 UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+#include <Ecore_X.h>
+#include "email-account-folder.h"
+
+#include <unicode/uloc.h>
+#include <unicode/ucal.h>
+#include <unicode/udat.h>
+#include <unicode/udatpg.h>
+#include <unicode/ustring.h>
+
+static Evas_Object *_create_navigation_bar(EmailAccountUGD *ug_data);
+static void _create_controlbar(EmailAccountUGD * ug_data);
+static void _delete_controlbar(EmailAccountUGD * ug_data);
+static void _delete_selection_info(EmailAccountUGD * ug_data);
+static Evas_Object *create_control_option(EmailAccountUGD * ug_data);
+static Evas_Object *create_edit_control_option(EmailAccountUGD * ug_data);
+
+static void _refresh_account_list(void *data);
+static gboolean _check_duplicated_node(GNode *node, gpointer data);
+static void _make_folder_tree(email_account_list *alist, EmailAccountUGD *ug_data);
+
+static void _update_all_account_cb(void *data, Evas_Object *obj, void *event_info);
+
+static Eina_Bool _gl_state_get(void *data, Evas_Object *obj, const char *part);
+static char *_gl_label_get_for_subitem(void *data, Evas_Object *obj, const char *part);
+
+static void _gl_del(void *data, Evas_Object *obj);
+static char *_gl_label_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_gl_icon_get(void *data, Evas_Object *obj, const char *part);
+static void _gl_con(void *data, Evas_Object *obj, void *event_info);
+static void _gl_exp_req(void *data, Evas_Object *obj, void *event_info);
+static void _gl_con_req(void *data, Evas_Object *obj, void *event_info);
+static void _gl_exp(void *data, Evas_Object *obj, void *event_info);
+static void _gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void _gl_exp_sel(void *data, Evas_Object *obj, void *event_info);
+
+static char *_gl_label_get_for_all_acc_inbox(void *data, Evas_Object *obj, const char *part);
+static char *_gl_label_get_for_all_acc_favorite(void *data, Evas_Object *obj, const char *part);
+static char *_gl_label_get_for_all_acc_draft(void *data, Evas_Object *obj, const char *part);
+static char *_gl_label_get_for_all_acc_outbox(void *data, Evas_Object *obj, const char *part);
+static char *_gl_label_get_for_all_acc_sentbox(void *data, Evas_Object *obj, const char *part);
+static char *_gl_label_get_for_all_acc_spambox(void *data, Evas_Object *obj, const char *part);
+static char *_gl_label_get_for_all_acc_trash(void *data, Evas_Object *obj, const char *part);
+
+static void _open_allacc_boxtype(void *data, Evas_Object *obj, void *event_info);
+
+static void _edit_item_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
+
+static void _folder_create_cb(void *data, Evas_Object *obj, void *event_info);
+static void _popup_newfolder_cb(void *data, Evas_Object *obj, void *event_info);
+static void _create_con_cb(void *data, Evas_Object *obj, void *event_info);
+
+//static void _folder_edit_cb(void *data, Evas_Object *obj, void *event_info);
+//static void _folder_edit_sel_cb(void *data, Evas_Object *obj, void *event_info);
+static void _folder_rename_cb(void *data, Evas_Object *obj, void *event_info);
+static void _popup_rename_cb(void *data, Evas_Object *obj, void *event_info);
+static void _rename_con_cb(void *data, Evas_Object *obj, void *event_info);
+
+static void _folder_delete_cb(void *data, Evas_Object *obj, void *event_info);
+static void _popup_delfolder_cb(void *data, Evas_Object *obj, void *event_info);
+static void _delete_con_cb(void *data, Evas_Object *obj, void *event_info);
+
+static void _folder_move_cb(void *data, Evas_Object *obj, void *event_info);
+static void _popup_movefolder_cb(void *data, Evas_Object *obj, void *event_info);
+static void _move_con_cb(void *data, Evas_Object *obj, void *event_info);
+
+static void _popup_destroy_cb(void *data, Evas_Object *obj, void *event_info);
+static void _back_button_cb(void *data, Evas_Object *obj, void *event_info);
+static void _popup_success_cb(void *data, Evas_Object *obj, void *event_info);
+static void _popup_fail_cb(void *data, Evas_Object *obj, void *event_info);
+static void _popup_progress_cb(void *data, Evas_Object *obj, void *event_info);
+static void _cancel_button_cb(void *data, Evas_Object *obj, void *event_info);
+/*static void _go_button_clicked_cb(void *data, Evas_Object * obj, void *event_info);*/
+
+static void _edbus_event_account_receive(void *local_data, DBusMessage *message);
+static void _stop_emf_job(EmailAccountUGD *ug_data, unsigned handle);
+
+static void _entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void _entry_focused_cb(void *data, Evas_Object *obj, void *event_info);
+static void _entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info);
+static void _eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+//static void _changed_cb(void *data, Evas_Object *obj, void *event_info);
+//static void _focused_cb(void *data, Evas_Object *obj, void *event_info);
+//static void _unfocused_cb(void *data, Evas_Object *obj, void *event_info);
+//static Evas_Object *_singleline_editfield_add(Evas_Object *parent);
+//static void _maxlength_reached_cb(void *data, Evas_Object *obj, void *event_info);
+//static void _rename_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+//static void _unset_rename(EmailAccountUGD *ug_data);
+//static void _rename_unfocused_cb(void *data, Evas_Object *obj, void *event_info);
+//static void _rename_button_cb(void *data, Evas_Object *obj, void *event_info);
+
+extern EmailAccountUGD *g_account_ugd;
+
+static Elm_Genlist_Item_Class itc_item_for_all_acc_box[ACC_MAILBOX_TYPE_MAX];
+
+static Elm_Genlist_Item_Class itc_item;
+static Elm_Genlist_Item_Class itc_subtree;
+static Elm_Genlist_Item_Class itc_subtree2;
+
+extern bool g_isRotate;
+
+static struct _menu_item folder_menu_its[] = {
+ { "IDS_EMAIL_BODY_INBOX", ACC_MAILBOX_TYPE_INBOX, _gl_label_get_for_all_acc_inbox },
+ { "IDS_EMAIL_BODY_FAVOURITES", ACC_MAILBOX_TYPE_FLAGGED, _gl_label_get_for_all_acc_favorite },
+ { "IDS_EMAIL_BODY_DRAFTS", ACC_MAILBOX_TYPE_DRAFT, _gl_label_get_for_all_acc_draft },
+ { N_("Outbox"), ACC_MAILBOX_TYPE_OUTBOX, _gl_label_get_for_all_acc_outbox },
+ { "IDS_EMAIL_BODY_SENTBOX", ACC_MAILBOX_TYPE_SENTBOX, _gl_label_get_for_all_acc_sentbox },
+ { "IDS_EMAIL_BODY_SPAMBOX", ACC_MAILBOX_TYPE_SPAMBOX, _gl_label_get_for_all_acc_spambox },
+ { "IDS_EMAIL_BODY_TRASH", ACC_MAILBOX_TYPE_TRASH, _gl_label_get_for_all_acc_trash },
+
+ /* do not delete below */
+ { NULL, -1, NULL }
+};
+
+Evas_Object *create_fullview(EmailAccountUGD *ug_data)
+{
+ debug_log("");
+ Evas_Object *b_btn;
+
+ ug_data->evas = evas_object_evas_get(ug_data->win);
+
+ ug_data->bg = elm_bg_add(ug_data->win);
+ evas_object_size_hint_weight_set(ug_data->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ug_data->win, ug_data->bg);
+ evas_object_show(ug_data->bg);
+
+ ug_data->ly = elm_layout_add(ug_data->win);
+ if (ug_data->ly == NULL) {
+ debug_log("ug_data->ly == NULL");
+ return NULL;
+ }
+ elm_layout_theme_set(ug_data->ly, "layout", "application", "default");
+ evas_object_size_hint_weight_set(ug_data->ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ug_data->win, ug_data->ly);
+ evas_object_show(ug_data->ly);
+
+ elm_object_part_content_set(ug_data->ly, "elm.swallow.bg", ug_data->bg);
+
+ /* indicator */
+ elm_win_indicator_mode_set(ug_data->win, ELM_WIN_INDICATOR_SHOW);
+
+ /* navigation Bar */
+ _create_navigation_bar(ug_data);
+
+ b_btn = elm_button_add(ug_data->navi_bar);
+ evas_object_smart_callback_add(b_btn, "clicked", _back_button_cb, ug_data);
+ elm_object_style_set(b_btn, "naviframe/prev_btn/default");
+
+ /* push navi_bar */
+ ug_data->sub_ly = elm_layout_add(ug_data->win);
+ elm_layout_theme_set(ug_data->sub_ly, "layout", "application", "noindicator");
+ evas_object_size_hint_weight_set(ug_data->sub_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ /*elm_win_resize_object_add(ug_data->win, ug_data->sub_ly);*/
+
+#if 0 // 2line title text
+ // push the content to naviframe.
+ ug_data->navibar_item = elm_naviframe_item_push(ug_data->navi_bar, NULL, b_btn, NULL, ug_data->sub_ly, "empty");
+
+ // Create custom style layout
+ ug_data->navi_title_ly = elm_layout_add(ug_data->navi_bar);
+ elm_layout_file_set(ug_data->navi_title_ly, THEME_PATH, "title");
+ evas_object_size_hint_weight_set(ug_data->navi_title_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ug_data->navi_title_ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(ug_data->navi_title_ly);
+ elm_object_signal_callback_add(ug_data->navi_title_ly, "elm,action,title,clicked", "", NULL, ug_data);
+ elm_object_item_part_content_set(ug_data->navibar_item, "title", ug_data->navi_title_ly);
+
+ //Title Right Button for update
+ ug_data->update_button = elm_button_add(ug_data->navi_bar);
+ elm_object_style_set(ug_data->update_button, "naviframe/title/default");
+ Evas_Object *update_icon = elm_icon_add(ug_data->update_button);
+ elm_icon_file_set(update_icon, CONTROLBAR_ICON_UPDATE, NULL);
+ elm_icon_resizable_set(update_icon, 1, 1);
+ evas_object_image_smooth_scale_set(update_icon, 0);
+ elm_object_content_set(ug_data->update_button, update_icon);
+ evas_object_smart_callback_add(ug_data->update_button, "clicked", _update_all_account_cb, ug_data);
+ elm_object_part_content_set(ug_data->navi_title_ly, "right_btn", ug_data->update_button);
+
+ // add service provider icon
+ ug_data->sp_icon = elm_icon_add(ug_data->navi_title_ly);
+ evas_object_show(ug_data->sp_icon);
+ elm_object_part_content_set(ug_data->navi_title_ly, "sub_left_icon", ug_data->sp_icon);
+#else
+ ug_data->navibar_item = elm_naviframe_item_push(ug_data->navi_bar,
+ NULL, b_btn, NULL, ug_data->sub_ly, NULL);
+ elm_object_item_text_set(ug_data->navibar_item, dgettext("sys_string", "IDS_COM_OPT_FOLDERS"));
+
+ //Title Right Button for update
+ ug_data->update_button = elm_button_add(ug_data->navi_bar);
+ elm_object_style_set(ug_data->update_button, "naviframe/title/default");
+ Evas_Object *update_icon = elm_icon_add(ug_data->update_button);
+ elm_icon_file_set(update_icon, CONTROLBAR_ICON_UPDATE, NULL);
+ elm_icon_resizable_set(update_icon, 1, 1);
+ evas_object_image_smooth_scale_set(update_icon, 0);
+ elm_object_content_set(ug_data->update_button, update_icon);
+ evas_object_smart_callback_add(ug_data->update_button, "clicked", _update_all_account_cb, ug_data);
+ elm_object_item_part_content_set(ug_data->navibar_item, "title_right_btn", ug_data->update_button);
+
+#endif
+
+ /* contents */
+ _create_folder_view(ug_data);
+ elm_object_part_content_set(ug_data->sub_ly, "elm.swallow.content", ug_data->gl);
+
+ /* control bar */
+ if(ug_data->account_id == 0)
+ {
+ Evas_Object *cbar;
+ cbar = elm_toolbar_add(ug_data->navi_bar);
+ elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_object_style_set(cbar, "naviframe");
+ elm_object_item_part_content_set(ug_data->navibar_item, "controlbar", cbar);
+ ug_data->control_bar = cbar;
+ }
+ else
+ {
+ _create_controlbar(ug_data);
+ }
+
+ debug_log("account_id: [%d]", ug_data->account_id);
+
+#if 0 // 2line title text
+ // 2line title text
+ elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", _("IDS_EMAIL_HEADER_FOLDERS"));
+ if (ug_data->account_id == 0) {
+ elm_icon_file_set(ug_data->sp_icon, NULL, NULL);
+ elm_object_part_text_set(ug_data->navi_title_ly, "txt_sub", _("IDS_EMAIL_HEADER_ALL_ACCOUNTS"));
+ }
+ else{
+ email_account_t *account;
+ email_get_account(ug_data->account_id, WITHOUT_OPTION, &account);
+ elm_icon_file_set(ug_data->sp_icon, account->logo_icon_path, NULL);
+
+ elm_object_part_text_set(ug_data->navi_title_ly, "txt_sub", account->account_name);
+
+ if(account) email_free_account(&account, 1);
+ }
+#endif
+
+ return ug_data->ly;
+}
+
+static Evas_Object *_create_navigation_bar(EmailAccountUGD * ug_data)
+{
+ debug_log("");
+ Evas_Object *navi_bar;
+
+ navi_bar = elm_naviframe_add(ug_data->ly);
+ if (navi_bar == NULL) {
+ debug_log("navi_bar == NULL");
+ return NULL;
+ }
+ elm_object_part_content_set(ug_data->ly, "elm.swallow.content", navi_bar);
+ evas_object_show(navi_bar);
+
+ ug_data->navi_bar = navi_bar;
+ return navi_bar;
+}
+
+static void _create_controlbar(EmailAccountUGD * ug_data)
+{
+ debug_log("");
+
+ _delete_selection_info(ug_data);
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+
+ _delete_controlbar(ug_data);
+
+ switch (ug_data->folder_mode) {
+ case ACC_FOLDER_NONE:
+ ug_data->control_bar = create_control_option(ug_data);
+ break;
+ case ACC_FOLDER_CREATE:
+ case ACC_FOLDER_RENAME:
+ case ACC_FOLDER_DELETE:
+ case ACC_FOLDER_MOVE_TO:
+ case ACC_FOLDER_MOVE_FROM:
+ ug_data->control_bar = create_edit_control_option(ug_data);
+ break;
+ default:
+ break;
+ }
+}
+
+static void _delete_controlbar(EmailAccountUGD * ug_data)
+{
+ debug_log("");
+ if (ug_data->control_bar) {
+ evas_object_del(ug_data->control_bar);
+ ug_data->control_bar = NULL;
+ }
+}
+
+static void _delete_selection_info(EmailAccountUGD * ug_data)
+{
+ debug_log("");
+
+ if (ug_data->select_info != NULL) {
+ evas_object_del(ug_data->select_info);
+ ug_data->select_info = NULL;
+ }
+
+ if (ug_data->selectioninfo_layout != NULL) {
+ evas_object_del(ug_data->selectioninfo_layout);
+ ug_data->selectioninfo_layout = NULL;
+ }
+}
+
+static Evas_Object *create_control_option(EmailAccountUGD * ug_data)
+{
+ debug_log("");
+ Evas_Object *cbar;
+
+ cbar = elm_toolbar_add(ug_data->navi_bar);
+ elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_object_style_set(cbar, "naviframe");
+
+ elm_toolbar_item_append(cbar, CONTROLBAR_ICON_ADD, _("IDS_EMAIL_SK_CREATE_FOLDER"), _folder_create_cb, ug_data);
+ elm_toolbar_item_append(cbar, CONTROLBAR_ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _folder_delete_cb, ug_data);
+ elm_toolbar_item_append(cbar, CONTROLBAR_ICON_MOVE, _("IDS_EMAIL_SK_MOVE"), _folder_move_cb, ug_data);
+ elm_toolbar_item_append(cbar, CONTROLBAR_ICON_RENAME, dgettext("sys_string", "IDS_COM_SK_RENAME"), _folder_rename_cb, ug_data);
+
+ elm_object_item_part_content_set(ug_data->navibar_item, "controlbar", cbar);
+
+ return cbar;
+}
+
+static Evas_Object *create_edit_control_option(EmailAccountUGD * ug_data)
+{
+ debug_log("");
+ Evas_Object *cbar;
+
+ cbar = elm_toolbar_add(ug_data->navi_bar);
+ elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_object_style_set(cbar, "naviframe");
+
+// elm_toolbar_item_append(cbar, CONTROLBAR_ICON_MOVE, _("IDS_EMAIL_SK_MOVE"), _folder_move_cb, ug_data);
+// elm_toolbar_item_append(cbar, CONTROLBAR_ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _popup_delfolder_cb, ug_data);
+
+ elm_object_item_part_content_set(ug_data->navibar_item, "controlbar", cbar);
+
+ return cbar;
+}
+
+void _create_folder_view(EmailAccountUGD *ug_data)
+{
+ debug_log("");
+ Evas_Object *gl;
+
+ _destroy_view(ug_data);
+
+ /* accounts list */
+ if (ug_data->gl) {
+ gl = ug_data->gl;
+ } else {
+ gl = elm_genlist_add(ug_data->navi_bar);
+ elm_genlist_tree_effect_enabled_set(gl, 1);
+ elm_genlist_block_count_set(gl, 36);
+ ug_data->gl = gl;
+ }
+
+ email_account_t *account_list = NULL;
+ int account_count = 0;
+ email_account_t *account_info = NULL;
+ int err = 0;
+ int i = 0;
+ int j = 0;
+ struct _menu_item *menu_its;
+ Item_Data *tree_item_data;
+
+ memset((ug_data->all_acc_unread_count), 0, sizeof(ug_data->all_acc_unread_count));
+ memset((ug_data->all_acc_read_count), 0, sizeof(ug_data->all_acc_unread_count));
+
+ /* If one account only. Set as the account. */
+ err = email_engine_get_account_list(&account_count, &account_list);
+ if (err == 0) {
+ debug_critical("fail to get account list - err(%d)", err);
+ if (ug_data->gl) {
+ evas_object_del(ug_data->gl);
+ ug_data->gl = NULL;
+ }
+ ug_data->gl = _add_emtpy_list(ug_data);
+ return;
+ }
+ if (account_list == NULL || account_count == 0) {
+ debug_critical("account info is @niL");
+ if (ug_data->gl) {
+ evas_object_del(ug_data->gl);
+ ug_data->gl = NULL;
+ }
+ ug_data->gl = _add_emtpy_list(ug_data);
+ return;
+ }
+ debug_log("current account_id: %d", ug_data->account_id);
+ if (account_count == 1 && ug_data->account_id == 0)
+ {
+ ug_data->account_id = account_list[0].account_id;
+ }
+ err = email_engine_free_account_list(&account_list, account_count);
+ if (err == 0) {
+ debug_critical("fail to free account list - err(%d)", err);
+ }
+ else
+ {
+ account_list = NULL;
+ account_count = 0;
+ }
+
+ debug_log("current account_id: %d", ug_data->account_id);
+
+ /* If all account mode, show mailbox-type list. */
+ if(ug_data->account_id == 0)
+ {
+ err = email_engine_get_account_list(&account_count, &account_list);
+
+ if (err == 0) {
+ debug_critical("fail to get account list - err(%d)", err);
+ if (ug_data->gl) {
+ evas_object_del(ug_data->gl);
+ ug_data->gl = NULL;
+ }
+ ug_data->gl = _add_emtpy_list(ug_data);
+ return;
+ }
+
+ if (account_list == NULL || account_count == 0) {
+ debug_critical("account info is @niL");
+ if (ug_data->gl) {
+ evas_object_del(ug_data->gl);
+ ug_data->gl = NULL;
+ }
+ ug_data->gl = _add_emtpy_list(ug_data);
+ return;
+ }
+
+ ug_data->n_account_list = account_count;
+
+ menu_its = folder_menu_its;
+ for (i = ACC_MAILBOX_TYPE_INBOX; i < ACC_MAILBOX_TYPE_MAX; i++)
+ {
+ itc_item_for_all_acc_box[i].item_style = "2text";
+ itc_item_for_all_acc_box[i].func.text_get = menu_its[i].func;
+ itc_item_for_all_acc_box[i].func.state_get = _gl_state_get;
+ itc_item_for_all_acc_box[i].func.del = _gl_del;
+
+ tree_item_data = calloc(1, sizeof(Item_Data));
+ tree_item_data->ug_data = ug_data;
+ tree_item_data->it = elm_genlist_item_append(gl, &itc_item_for_all_acc_box[i], tree_item_data, NULL,
+ ELM_GENLIST_ITEM_NONE, _open_allacc_boxtype, (void*)menu_its[i].i_boxtype);
+ }
+
+ email_account_list *alist = (email_account_list *)calloc(account_count, sizeof(email_account_list));
+ memset((alist), 0, (sizeof(email_account_list)*account_count));
+
+ for (i = 0; i < account_count; i++) {
+ alist[i].ug_data = ug_data;
+ alist[i].account_info = &account_list[i];
+
+ int err = 0;
+ int mailbox_list_count = 0;
+ email_mailbox_t *mailbox_list = NULL;
+
+ err = email_get_mailbox_list_ex(account_list[i].account_id, -1, 1, &mailbox_list, &mailbox_list_count);
+ if (err != EMAIL_ERROR_NONE) {
+ debug_critical("email_get_mailbox_list return error");
+ continue;
+ }
+
+ alist[i].mailbox_list = mailbox_list;
+ alist[i].n_mailbox_list = mailbox_list_count;
+
+ if (mailbox_list_count > 0) {
+ for (j = 0; j < mailbox_list_count; j++) {
+ switch(mailbox_list[j].mailbox_type)
+ {
+ case EMAIL_MAILBOX_TYPE_INBOX:
+ {
+ ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_INBOX] += mailbox_list[j].total_mail_count_on_local;
+ ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_INBOX] += mailbox_list[j].unread_count;
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_SENTBOX:
+ {
+ ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_SENTBOX] += mailbox_list[j].total_mail_count_on_local;
+ ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_SENTBOX] += mailbox_list[j].unread_count;
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_TRASH:
+ {
+ ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_TRASH] += mailbox_list[j].total_mail_count_on_local;
+ ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_TRASH] += mailbox_list[j].unread_count;
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_DRAFT:
+ {
+ ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_DRAFT] += mailbox_list[j].total_mail_count_on_local;
+ ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_DRAFT] += mailbox_list[j].unread_count;
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_SPAMBOX:
+ {
+ ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_SPAMBOX] += mailbox_list[j].total_mail_count_on_local;
+ ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_SPAMBOX] += mailbox_list[j].unread_count;
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_OUTBOX:
+ {
+ ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_OUTBOX] += mailbox_list[j].total_mail_count_on_local;
+ ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_OUTBOX] += mailbox_list[j].unread_count;
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_FLAGGED:
+ {
+ ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_FLAGGED] += mailbox_list[j].total_mail_count_on_local;
+ ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_FLAGGED] += mailbox_list[j].unread_count;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ _make_folder_tree(alist + i, ug_data);
+ }
+
+ ug_data->alist = alist;
+ }
+ else
+ {
+ err = email_engine_get_account_full_data(ug_data->account_id, &account_info);
+
+ if (err == 0) {
+ debug_critical("fail to get account info - err(%d)", err);
+ if (ug_data->gl) {
+ evas_object_del(ug_data->gl);
+ ug_data->gl = NULL;
+ }
+ ug_data->gl = _add_emtpy_list(ug_data);
+ return;
+ }
+
+ if (account_info == NULL) {
+ debug_critical("account info is @niL");
+ if (ug_data->gl) {
+ evas_object_del(ug_data->gl);
+ ug_data->gl = NULL;
+ }
+ ug_data->gl = _add_emtpy_list(ug_data);
+ return;
+ }
+
+ itc_item.item_style = "dialogue/2text.2icon/expandable";
+ itc_item.func.text_get = _gl_label_get;
+ itc_item.func.content_get = _gl_icon_get;
+ itc_item.func.state_get = _gl_state_get;
+ itc_item.func.del = _gl_del;
+ itc_item.decorate_all_item_style = NULL;
+
+ email_account_list *alist = (email_account_list *)calloc(1, sizeof(email_account_list));
+ memset((alist), 0, sizeof(email_account_list));
+
+ alist->ug_data = ug_data;
+ alist->account_info = account_info;
+
+ int err = 0;
+ int mailbox_list_count = 0;
+ email_mailbox_t *mailbox_list = NULL;
+ Elm_Object_Item *account_item;
+
+ err = email_get_mailbox_list_ex(account_info->account_id, -1, 1, &mailbox_list, &mailbox_list_count);
+ if (err != EMAIL_ERROR_NONE) {
+ debug_critical("email_get_mailbox_list return error");
+ }
+
+ alist->mailbox_list = mailbox_list;
+ alist->n_mailbox_list = mailbox_list_count;
+
+ if (mailbox_list_count > 0) {
+ for (j = 0; j < mailbox_list_count; j++) {
+ alist->read_count += mailbox_list[j].total_mail_count_on_local;
+ alist->unread_count += mailbox_list[j].unread_count;
+ }
+
+ ug_data->all_read_count += alist->read_count;
+ ug_data->all_unread_count += alist->unread_count;
+ }
+
+ _make_folder_tree(alist, ug_data);
+
+ ug_data->alist = alist;
+
+ debug_log("ug_data->alist:%d, alist: %d", ug_data->alist, alist);
+
+ tree_item_data = calloc(1, sizeof(Item_Data));
+ tree_item_data->ug_data = ug_data;
+ tree_item_data->alist = alist;
+ tree_item_data->child = (GNode *)alist;
+ tree_item_data->it = account_item = elm_genlist_item_append(gl, &itc_item, tree_item_data, NULL, ELM_GENLIST_ITEM_TREE, _edit_item_check_changed_cb/*_open_mail_list*/, tree_item_data);
+
+ evas_object_smart_callback_add(gl, "expand,request", _gl_exp_req, gl);
+ evas_object_smart_callback_add(gl, "contract,request", _gl_con_req, gl);
+ evas_object_smart_callback_add(gl, "expanded", _gl_exp, ug_data);
+ evas_object_smart_callback_add(gl, "contracted", _gl_con, gl);
+
+ ug_data->root_item = account_item;
+ elm_genlist_item_expanded_set(account_item, 1);
+ elm_genlist_item_selected_set(account_item, EINA_FALSE);
+// elm_genlist_item_select_mode_set(account_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+
+ return;
+}
+
+static gboolean _check_duplicated_node(GNode *node, gpointer data)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return FALSE;
+ }
+
+ if (!node) {
+ debug_log("node is NULL");
+ return FALSE;
+ }
+
+ if (!(node->data)) {
+ debug_log("node data is NULL");
+ return FALSE;
+ }
+
+ gboolean b_search_parent = FALSE;
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+ email_mailbox_t *node_data = (email_mailbox_t *)node->data;
+ gchar **vector = NULL;
+ vector = g_strsplit_set(node_data->mailbox_name, "/", -1);
+ int vlen = g_strv_length(vector);
+// debug_log("compare(%s), vector(%s), vlen(%d)", ug_data->traverse_compare, vector[vlen-1], vlen);
+
+ gchar **vector2 = NULL;
+ vector2 = g_strsplit_set(ug_data->traverse_compare_mlist->mailbox_name, "/", -1);
+ int vlen2 = g_strv_length(vector2);
+ gchar *foler_name = g_strdup(vector2[vlen2-1]);
+ gchar* retval = g_strdup(ug_data->traverse_compare_mlist->mailbox_name);
+ gchar* ptr = NULL;
+ ptr = g_strstr_len(retval, -1, foler_name);
+ if (ptr != NULL && vlen > 1 && vlen2 > 1){
+ gchar* temp = g_strndup(retval, ptr-retval-1);
+ b_search_parent = TRUE;
+ g_free(retval);
+ retval = g_strdup(temp);
+ g_free(temp);
+ }
+// debug_log("retval(%s), mailbox_name(%s), foler_name(%s), vlen2(%d)",
+// retval, ug_data->traverse_compare_mlist->mailbox_name, foler_name, vlen2);
+// debug_log("node_data->mailbox_name(%s)", node_data->mailbox_name);
+// debug_log("node_data->mailbox_is(%d) : traverse_compare_mlist->mailbox_id(%d)", node_data->mailbox_id, ug_data->traverse_compare_mlist->mailbox_id);
+
+// debug_log("vlen(%d) : vlen2(%d), ug_data->b_duplicated_node(%d)", vlen, vlen2, ug_data->b_duplicated_node);
+ if(node_data->mailbox_id == ug_data->traverse_compare_mlist->mailbox_id
+ || vlen != (vlen2-1))
+ {
+// debug_log("same");
+ g_free(retval);
+ g_strfreev(vector);
+ g_strfreev(vector2);
+ return FALSE;
+ }
+
+ if ((b_search_parent == FALSE && g_strcmp0(vector[vlen-1], ug_data->traverse_compare) == 0)
+ ||( b_search_parent == TRUE && g_strcmp0(node_data->mailbox_name, retval) == 0)) {
+ ug_data->b_duplicated_node = 1;
+ ug_data->current_parent = node;
+ debug_log("** find dup(%s), b_search_parent(%d)", vector[vlen-1], b_search_parent);
+
+ g_free(retval);
+ g_strfreev(vector);
+ g_strfreev(vector2);
+ return TRUE;
+ }
+
+ g_free(retval);
+ g_strfreev(vector);
+ g_strfreev(vector2);
+ return FALSE;
+}
+
+static void _make_folder_tree(email_account_list *alist, EmailAccountUGD *ug_data)
+{
+ debug_log("");
+
+ int i = 0;
+ int j = 0;
+ email_mailbox_t *mailbox_list = alist->mailbox_list;
+ int mailbox_count = alist->n_mailbox_list;
+ gchar **vector[mailbox_count];
+ GNode *root = g_node_new(NULL);
+
+ for (i=0; i<mailbox_count; i++) {
+ vector[i] = g_strsplit_set(mailbox_list[i].mailbox_name, "/", -1);
+
+ if (vector[i] == NULL) {
+ debug_log("vector is NULL");
+ continue;
+ }
+
+ int vlen = g_strv_length(vector[i]);
+
+ if (vlen <= 0) {
+ continue;
+ }
+// debug_log("vector[%d]: %s, mailbox_list[%d].mailbox_name: %s", i, vector[i][vlen-1], i, mailbox_list[i].mailbox_name);
+
+ if (vlen == 1) {
+ GNode *child = g_node_new(mailbox_list+i);
+ g_node_insert(root, -1, child);
+ continue;
+ }
+
+ ug_data->current_parent = root;
+ for (j=0; j<vlen; j++) {
+ /*check if it exist among the leaves*/
+ ug_data->traverse_compare = g_strdup(vector[i][j]);
+ ug_data->traverse_compare_mlist = &mailbox_list[i];
+ g_node_traverse(ug_data->current_parent, G_IN_ORDER, G_TRAVERSE_ALL, -1, _check_duplicated_node, (gpointer)ug_data);
+ if (ug_data->b_duplicated_node == 1) {
+ GNode *child = g_node_new(mailbox_list+i);
+ email_mailbox_t *mlist = (email_mailbox_t *)(child->data);
+ email_mailbox_t *mlist_parent = (email_mailbox_t *)(ug_data->current_parent->data);
+
+ ug_data->current_parent = g_node_insert(ug_data->current_parent, -1, child);
+ debug_log("*** parent:%s - child:%s", mlist_parent->mailbox_name, mlist->mailbox_name);
+ }
+ ug_data->b_duplicated_node = 0;
+ g_free(ug_data->traverse_compare);
+ ug_data->traverse_compare = NULL;
+ }
+ g_strfreev(vector[i]);
+ }
+
+ alist->folder_root = root;
+}
+
+static Eina_Bool _gl_state_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ return EINA_FALSE;
+}
+
+static char *_gl_label_get_for_subitem(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ Item_Data *tree_item_data = (Item_Data*)data;
+ GNode *node = (GNode *)tree_item_data->child;
+ email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+ char tmp[MAX_STR_LEN] = { 0, };
+
+ if (mlist == NULL) {
+ debug_log("mlist is NULL !!");
+ goto FINISH;
+ }
+
+ if (!strcmp(part, "elm.text")) {
+ if (mlist->alias != NULL) {
+ snprintf(tmp, sizeof(tmp), "%s [%d/%d]", mlist->alias,
+ mlist->unread_count, mlist->total_mail_count_on_local);
+ debug_log("%s : tree_item_data: %p, tree_item_data->it: %p", tmp, tree_item_data, tree_item_data->it);
+ return g_strdup(tmp);
+ }
+ }
+
+FINISH:
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static void _gl_del(void *data, Evas_Object *obj)
+{
+ debug_log("");
+ Item_Data *item_data = (Item_Data *)data;
+ FREE(item_data);
+}
+
+static char *_gl_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ Item_Data *tree_item_data = (Item_Data *)data;
+ email_account_list *alist = tree_item_data->alist;
+ char tmp[MAX_STR_LEN] = { 0, }; /*account_name has no limitation on size*/
+
+ if (alist == NULL) {
+ debug_log("alist is NULL !!");
+ goto FINISH;
+ }
+
+ if (!strcmp(part, "elm.text.1")) {
+ if (alist->account_info->account_name != NULL) {
+ debug_log("account_name: %s", alist->account_info->account_name);
+ snprintf(tmp, sizeof(tmp), "%s [%d/%d]",
+ alist->account_info->account_name, alist->unread_count, alist->read_count);
+ return g_strdup(tmp);
+ }
+ } else if (!strcmp(part, "elm.text.2")) {
+ if (alist->account_info->user_email_address != NULL) {
+ debug_log("user_email_addr: %s", alist->account_info->user_email_address);
+ return g_strdup(alist->account_info->user_email_address);
+ }
+ } else {
+ debug_log("part is invalid");
+ }
+
+FINISH:
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static Evas_Object *_gl_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return NULL;
+ }
+
+ Item_Data *item_data = (Item_Data *)data;
+ email_account_list *alist = item_data->alist;
+// Evas_Object *btn = NULL, *check = NULL, *edit_field = NULL, *entry = NULL;
+// static Elm_Entry_Filter_Limit_Size limit_filter_data;
+
+ if (elm_genlist_decorate_mode_get(obj)) {
+#if 0
+ if (!strcmp(part, "elm.edit.icon.1")) {
+ check = elm_check_add(obj);
+ debug_log("alist: %p, ug_data: %p, ug_data->it: %p, alist->it: %p, obj: %p, checked: %d", alist, alist->ug_data, alist->ug_data->it, item_data->it, obj, item_data->checked);
+ elm_check_state_pointer_set(check, &item_data->checked);
+ evas_object_smart_callback_add(check, "changed", _edit_item_check_changed_cb, item_data);
+ return check;
+ } else if (!strcmp(part, "elm.edit.icon.2")) { // swallow rename button if need
+ btn = elm_button_add(obj);
+ elm_object_style_set(btn, "rename");
+ debug_log("item_data: %p, item_data->it: %p", item_data, item_data->it);
+ if (item_data/*item_data->it*/){
+ evas_object_smart_callback_add(btn, "clicked", _rename_button_cb, item_data);
+ }
+ return btn;
+ } else if (!strcmp(part, "elm.flip.icon")) {
+ btn = elm_button_add(obj);
+ elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ return btn;
+ } else if (!strcmp(part, "elm.flip.content")) { // this is used when the flip mode is enabled.
+ GNode *node = (GNode *)item_data->child;
+ email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+
+ edit_field = _singleline_editfield_add(obj);
+ debug_log("edit_field: %p, alias: %s", edit_field, mlist->alias);
+
+ entry = elm_object_part_content_get(edit_field, "elm.swallow.content");
+ elm_entry_entry_set(entry, mlist->alias);
+ elm_object_focus_set(entry, EINA_TRUE);
+ elm_entry_cursor_end_set(entry);
+
+ // the below is sample code for control entry. It is not mandatory.
+ limit_filter_data.max_char_count = 0;
+ limit_filter_data.max_byte_count = 30;
+ elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data);
+ evas_object_smart_callback_add(entry, "changed", _rename_entry_changed_cb, data);
+ evas_object_smart_callback_add(entry, "maxlength,reached", _maxlength_reached_cb, NULL);
+ evas_object_smart_callback_add(entry, "unfocused", _rename_unfocused_cb, obj);
+
+ return edit_field;
+ }
+#endif
+ }
+
+ if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1"))
+ {
+ Evas_Object *icon = elm_icon_add(obj);
+
+ // setting/include/email-setting.h
+ typedef enum {
+ ACTIVESYNC = 1,
+ HOTMAIL,
+ GMAIL,
+ YAHOOMAIL,
+ AOL,
+ OTHERS
+ } AccountInfo;
+
+ account_user_data_t *user_data = (account_user_data_t *)alist->account_info->user_data;
+ debug_log("is_preset_account:%d", user_data->is_preset_account);
+
+ switch (user_data->is_preset_account) {
+ case GMAIL:
+ elm_icon_file_set(icon, ACCOUNT_ICON_GMAIL, NULL);
+ break;
+ case HOTMAIL:
+ elm_icon_file_set(icon, ACCOUNT_ICON_HOTMAIL, NULL);
+ break;
+ case YAHOOMAIL:
+ elm_icon_file_set(icon, ACCOUNT_ICON_YAHOO, NULL);
+ break;
+ case AOL:
+ elm_icon_file_set(icon, ACCOUNT_ICON_AOL, NULL);
+ break;
+ case ACTIVESYNC:
+ elm_icon_file_set(icon, ACCOUNT_ICON_EXCHANGE, NULL);
+ break;
+ case OTHERS:
+ default:
+ elm_icon_file_set(icon, ACCOUNT_ICON_OTHERS, NULL);
+ break;
+ }
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+ return icon;
+ }
+ else if (!strcmp(part, "elm.swallow.colorbar"))
+ {
+ account_user_data_t *user_data = (account_user_data_t *)alist->account_info->user_data;
+ unsigned int val = user_data->index_color;
+ int r = (val & 0xff000000) >> 24;
+ int g = (val & 0x00ff0000) >> 16;
+ int b = (val & 0x0000ff00) >> 8;
+ int a = val & 0x000000ff;
+
+ Evas_Object *color_bar = evas_object_rectangle_add(evas_object_evas_get(obj));
+ evas_object_size_hint_fill_set(color_bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_color_set(color_bar, r, g, b, a);
+
+ return color_bar;
+ }
+ else
+ {
+ debug_log("part is invalid");
+ }
+
+ return NULL;
+}
+
+static void _gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ Elm_Object_Item *it = event_info;
+
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+ elm_genlist_item_subitems_clear(it);
+}
+
+static void _gl_exp_req(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_expanded_set(it, 1);
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ /*current_it = it;*/
+}
+
+static void _gl_con_req(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_expanded_set(it, 0);
+
+ /*current_it = it;*/
+}
+
+static void _gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ Elm_Object_Item *it = event_info;
+ /*elm_genlist_item_selected_set(it, 0);*/
+ Evas_Object *gl = elm_object_item_widget_get(it);
+
+ itc_subtree.item_style = "1text.1/expandable_n_depth";
+ itc_subtree.func.text_get = _gl_label_get_for_subitem;
+ itc_subtree.func.content_get = _gl_icon_get;
+ itc_subtree.func.state_get = _gl_state_get;
+ itc_subtree.func.del = _gl_del;
+ itc_subtree.decorate_all_item_style = NULL;
+
+ itc_subtree2.item_style = "1text.2/expandable_n_depth";
+ itc_subtree2.func.text_get = _gl_label_get_for_subitem;
+ itc_subtree2.func.content_get = _gl_icon_get;
+ itc_subtree2.func.state_get = _gl_state_get;
+ itc_subtree2.func.del = _gl_del;
+ itc_subtree2.decorate_all_item_style = NULL;
+
+ int i = 0;
+ int depth = elm_genlist_item_expanded_depth_get(it);
+ Elm_Object_Item *sub_it = NULL;
+ Item_Data *tree_item_data;
+
+ debug_log("depth: %d", depth);
+
+ if (depth == 0) {
+ //const void *item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ Item_Data *item_data = (Item_Data *)elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (item_data == NULL) {
+ debug_log("item data is NULL");
+ return;
+ }
+ email_account_list *alist = item_data->alist;
+
+ int n_children = g_node_n_children(alist->folder_root);
+ debug_log("n_children of root: %d", n_children);
+
+ for (i = 0; i < n_children; i++) {
+ GNode *child = g_node_nth_child(alist->folder_root, i);
+ if (g_node_n_children(child) > 0) {
+ tree_item_data = calloc(1, sizeof(Item_Data));
+ tree_item_data->ug_data = alist->ug_data;
+ tree_item_data->alist = alist;
+ tree_item_data->child = child;
+ sub_it = tree_item_data->it = elm_genlist_item_append(gl, &itc_subtree, tree_item_data, it,
+ ELM_GENLIST_ITEM_TREE, _gl_exp_sel, alist);
+ //debug_log("alist: %p, tree_item_data:%p, tree_item_data->it : %p, it: %p, child: %p", alist, tree_item_data, tree_item_data->it, it, child);
+ } else {
+ tree_item_data = calloc(1, sizeof(Item_Data));
+ tree_item_data->ug_data = alist->ug_data;
+ tree_item_data->alist = alist;
+ tree_item_data->child = child;
+ tree_item_data->it = elm_genlist_item_append(gl, &itc_subtree2, tree_item_data, it,
+ ELM_GENLIST_ITEM_NONE, _gl_sel, alist);
+ //debug_log("alist: %p, tree_item_data:%p, tree_item_data->it : %p, it: %p, child: %p", alist, tree_item_data, tree_item_data->it, it, child);
+ }
+ }
+ }
+ else if (depth > 0) {
+// const void *item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ Item_Data *item_data = (Item_Data *)elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (item_data == NULL) {
+ debug_log("item data is NULL");
+ return;
+ }
+ GNode *sub_root = (GNode *)item_data->child;
+
+ int n_children = g_node_n_children(sub_root);
+ debug_log("n_children of sub_root depth[%d]: %d", depth, n_children);
+
+ Elm_Object_Item *parent_it =it;
+ for (i = 0; i < depth; i++)
+ parent_it = elm_genlist_item_parent_get(parent_it);
+
+ //const void *parent_item_data = elm_object_item_data_get((const Elm_Object_Item *)parent_it);
+ Item_Data *parent_item_data = elm_object_item_data_get((const Elm_Object_Item *)parent_it);
+ if (parent_item_data == NULL) {
+ debug_log("parent item data is NULL");
+ return;
+ }
+ email_account_list *alist = (email_account_list *) parent_item_data->alist;
+
+ for (i = 0; i < n_children; i++) {
+ GNode *child = g_node_nth_child(sub_root, i);
+ if (g_node_n_children(child) > 0) {
+ tree_item_data = calloc(1, sizeof(Item_Data));
+ tree_item_data->ug_data = alist->ug_data;
+ tree_item_data->alist = alist;
+ tree_item_data->child = child;
+ sub_it = tree_item_data->it = elm_genlist_item_append(gl, &itc_subtree, tree_item_data, it,
+ ELM_GENLIST_ITEM_TREE, _gl_exp_sel, alist);
+ //debug_log("alist: %p, tree_item_data:%p, tree_item_data->it : %p, it: %p, child: %p", alist, tree_item_data, tree_item_data->it, it, child);
+ } else {
+ tree_item_data = calloc(1, sizeof(Item_Data));
+ tree_item_data->ug_data = alist->ug_data;
+ tree_item_data->alist = alist;
+ tree_item_data->child = child;
+ tree_item_data->it = elm_genlist_item_append(gl, &itc_subtree2, tree_item_data, it,
+ ELM_GENLIST_ITEM_NONE, _gl_sel, alist);
+ //debug_log("alist: %p, tree_item_data:%p, tree_item_data->it : %p, it: %p, child: %p", alist, tree_item_data, tree_item_data->it, it, child);
+ }
+ }
+ }
+}
+
+static void _gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ email_account_list *alist = (email_account_list *) data;
+
+ Elm_Object_Item *it = event_info;
+ Item_Data *item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (item_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+
+ Evas_Coord x, y = 0;
+ evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
+ debug_log("X = %d, Y = %d", x, y);
+
+ elm_genlist_item_selected_set(it, 0);
+
+ if (alist->ug_data == NULL) {
+ debug_log("ugd is NULL");
+ return;
+ }
+
+ int main_w = alist->ug_data->main_w;
+ int main_h = alist->ug_data->main_h;
+ debug_log("g_isRotate = %d, main_w: %d, main_h:%d", g_isRotate, main_w, main_h);
+/*
+ if (g_isRotate == false)
+ {
+ debug_log("Potrait Mode");
+ if (x > (main_w-96) && x < main_w) {
+ return;
+ }
+ } else {
+ debug_log("Landscape Mode");
+ if (x > (main_w-96) && x < main_w) {
+ return;
+ }
+ }
+*/
+ GNode *node = (GNode *)item_data->child;
+ email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+
+ if (alist->ug_data->block_item_click)
+ return;
+
+ if (elm_genlist_decorate_mode_get(alist->ug_data->gl)) {
+ if(ACC_FOLDER_CREATE == alist->ug_data->folder_mode)
+ {
+ _popup_newfolder_cb(data, obj, event_info);
+ }
+/* else if(ACC_FOLDER_EDIT == alist->ug_data->folder_mode)
+ {
+ _folder_edit_sel_cb(data, obj, event_info);
+ }
+*/
+ else if(ACC_FOLDER_DELETE == alist->ug_data->folder_mode)
+ {
+ _popup_delfolder_cb(data, obj, event_info);
+ }
+ else if(ACC_FOLDER_MOVE_FROM == alist->ug_data->folder_mode)
+ {
+ alist->ug_data->move_from_item = it;
+ alist->ug_data->it = it;
+ _folder_move_cb(alist->ug_data, obj, event_info);
+ }
+ else if(ACC_FOLDER_MOVE_TO == alist->ug_data->folder_mode)
+ {
+ _popup_movefolder_cb(data, obj, event_info);
+ }
+ else if(ACC_FOLDER_RENAME == alist->ug_data->folder_mode)
+ {
+ _popup_rename_cb(data, obj, event_info);
+ }
+ }
+ else
+ {
+ elm_genlist_item_update(it);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ char id[NUM_STR_LEN] = {0,};
+ snprintf(id, sizeof(id), "%d", alist->account_info->account_id);
+
+ char is_null[NUM_STR_LEN] = {0,};
+ snprintf(is_null, sizeof(is_null), "%d", false);
+
+ char mailbox_id[NUM_STR_LEN] = {0,};
+ snprintf(mailbox_id, sizeof(mailbox_id), "%d", mlist->mailbox_id);
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_IS_NULL, is_null);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailbox_id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_USER_EMAIL, alist->account_info->user_email_address);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX_ALIAS, mlist->alias);
+ ug_send_result(alist->ug_data->ug, service);
+
+ alist->ug_data->block_item_click = 1;
+
+ service_destroy(service);
+ }
+}
+
+static void _gl_exp_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ email_account_list *alist = (email_account_list *) data;
+
+ Elm_Object_Item *it = event_info;
+ Item_Data *item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (item_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+
+ elm_genlist_item_selected_set(it, 0);
+
+ Evas_Coord x, y = 0;
+ evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
+ debug_log("X = %d, Y = %d", x, y);
+
+ if (alist->ug_data == NULL) {
+ debug_log("ugd is NULL");
+ return;
+ }
+
+ GNode *node = (GNode *)item_data->child;
+ email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+ gchar **vector = NULL;
+ vector = g_strsplit_set(mlist->mailbox_name, "/", -1);
+ int vlen = g_strv_length(vector);
+
+ int main_w = alist->ug_data->main_w;
+ int main_h = alist->ug_data->main_h;
+ debug_log("g_isRotate = %d, main_w: %d, main_h:%d", g_isRotate, main_w, main_h);
+
+ if (g_isRotate == false)
+ {
+ if (x > 0 && x < (100+(vlen*28))) {
+ debug_log("Potrait Mode");
+ return;
+ }
+ } else {
+ if (x > 0 && x < (100+(vlen*28))) {
+ debug_log("Landscape Mode");
+ return;
+ }
+ }
+ g_strfreev(vector);
+/*
+ if (g_isRotate == false)
+ {
+ debug_log("Potrait Mode");
+ if (x > (main_w-96) && x < main_w) {
+ return;
+ }
+ } else {
+ debug_log("Landscape Mode");
+ if (x > (main_w-96) && x < main_w) {
+ return;
+ }
+ }
+*/
+
+ if (alist->ug_data->block_item_click)
+ return;
+
+ if (elm_genlist_decorate_mode_get(alist->ug_data->gl)) {
+ if(ACC_FOLDER_CREATE == alist->ug_data->folder_mode)
+ {
+ _popup_newfolder_cb(data, obj, event_info);
+ }
+/* else if(ACC_FOLDER_EDIT == alist->ug_data->folder_mode)
+ {
+ _folder_edit_sel_cb(data, obj, event_info);
+ }*/
+ else if(ACC_FOLDER_DELETE == alist->ug_data->folder_mode)
+ {
+ _popup_delfolder_cb(data, obj, event_info);
+ }
+ else if(ACC_FOLDER_MOVE_FROM == alist->ug_data->folder_mode)
+ {
+ alist->ug_data->move_from_item = it;
+ _folder_move_cb(alist->ug_data, obj, event_info);
+ }
+ else if(ACC_FOLDER_MOVE_TO == alist->ug_data->folder_mode)
+ {
+ _popup_movefolder_cb(data, obj, event_info);
+ }
+ else if(ACC_FOLDER_RENAME == alist->ug_data->folder_mode)
+ {
+ _popup_rename_cb(data, obj, event_info);
+ }
+ }
+ else
+ {
+ if (g_isRotate == false)
+ {
+ if (x > 0 && x < 148) {
+ debug_log("Potrait Mode");
+ return;
+ }
+ } else {
+ if (x > 0 && x < 148) {
+ debug_log("Landscape Mode");
+ return;
+ }
+ }
+
+ elm_genlist_item_update(it);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ char id[NUM_STR_LEN] = {0,};
+ snprintf(id, sizeof(id), "%d", alist->account_info->account_id);
+
+ char is_null[NUM_STR_LEN] = {0,};
+ snprintf(is_null, sizeof(is_null), "%d", false);
+
+ char mailbox_id[NUM_STR_LEN] = {0,};
+ snprintf(mailbox_id, sizeof(mailbox_id), "%d", mlist->mailbox_id);
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_IS_NULL, is_null);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailbox_id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_USER_EMAIL, alist->account_info->user_email_address);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX_ALIAS, mlist->alias);
+ ug_send_result(alist->ug_data->ug, service);
+
+ alist->ug_data->block_item_click = 1;
+
+ service_destroy(service);
+ }
+}
+
+void _refresh_folder_view(void *data)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+
+ if (ug_data == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ Evas_Object *gl = ug_data->gl;
+ if (ug_data->gl == NULL) {
+ debug_log("genlist is NULL");
+ return;
+ }
+
+ elm_genlist_clear(gl);
+ evas_object_del(gl);
+ ug_data->gl = NULL;
+
+ _destroy_view(ug_data);
+ _create_folder_view(ug_data);
+ elm_object_part_content_set(ug_data->sub_ly, "elm.swallow.content", ug_data->gl);
+
+ return;
+}
+
+static void _refresh_account_list(void *data)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+
+ if (ug_data == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ Evas_Object *gl = ug_data->gl;
+ if (ug_data->gl == NULL) {
+ debug_log("genlist is NULL");
+ return;
+ }
+
+ elm_genlist_clear(gl);
+ evas_object_del(gl);
+ ug_data->gl = NULL;
+
+ _destroy_view(ug_data);
+ _create_account_view(ug_data);
+ elm_object_part_content_set(ug_data->ly, "elm.swallow.content", ug_data->gl);
+
+ return;
+}
+
+void _finish_folder_view(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+
+ if (ug_data == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ Evas_Object *gl = ug_data->gl;
+ if (ug_data->gl == NULL) {
+ debug_log("genlist is NULL");
+ return;
+ }
+
+ elm_genlist_clear(gl);
+ evas_object_del(gl);
+ ug_data->gl = NULL;
+
+ _destroy_view(ug_data);
+
+ ug_data->folder_mode = ACC_FOLDER_NONE;
+
+ /* Change layout background color to default background color */
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,default", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ elm_object_item_part_content_set(ug_data->navibar_item, "controlbar", ug_data->control_bar);
+ evas_object_show(ug_data->control_bar);
+
+ _create_folder_view(ug_data);
+ elm_object_part_content_set(ug_data->sub_ly, "elm.swallow.content", ug_data->gl);
+
+ /* Set the navigation bar title */
+ //elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", _("IDS_EMAIL_HEADER_FOLDERS"));
+ elm_object_item_text_set(ug_data->navibar_item, _("IDS_EMAIL_HEADER_FOLDERS"));
+
+ _create_controlbar(ug_data);
+
+ return;
+}
+
+static void _update_all_account_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+
+ if(ug_data->ug_mode == ACC_UG_ACCOUNT_VIEW)
+ {
+ _refresh_account_list(ug_data);
+ }
+ else // UG_MODE_FULLVIEW
+ {
+ if (!elm_genlist_decorate_mode_get(ug_data->gl)) {
+ _refresh_folder_view(ug_data);
+ } else {
+ if(ACC_FOLDER_CREATE == ug_data->folder_mode)
+ {
+ _folder_create_cb(ug_data, NULL, NULL);
+ }
+ else if(ACC_FOLDER_DELETE == ug_data->folder_mode)
+ {
+ _folder_delete_cb(ug_data, NULL, NULL);
+ }
+ else if(ACC_FOLDER_MOVE_TO == ug_data->folder_mode)
+ {
+ _folder_move_cb(ug_data, NULL, NULL);
+ }
+ else if(ACC_FOLDER_RENAME == ug_data->folder_mode)
+ {
+ _folder_rename_cb(ug_data, NULL, NULL);
+ }
+ /*else if(ACC_FOLDER_EDIT == ug_data->folder_mode)
+ {
+ _folder_edit_cb(ug_data, NULL, NULL);
+ }*/
+ }
+ }
+}
+
+static char *_gl_label_get_for_all_acc_inbox(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ Item_Data *tree_item_data = (Item_Data *) data;
+ EmailAccountUGD *ug_data = tree_item_data->ug_data;
+ char tmp[MAX_STR_LEN] = { 0, };
+
+ if (!strcmp(part, "elm.text.1")) {
+ snprintf(tmp, sizeof(tmp), "%s", _("IDS_EMAIL_BODY_INBOX"));
+ return g_strdup(tmp);
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(tmp, sizeof(tmp), "[%d/%d]", ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_INBOX], ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_INBOX]);
+ return g_strdup(tmp);
+ } else {
+ debug_log("part is invalid");
+ }
+
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static char *_gl_label_get_for_all_acc_favorite(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ Item_Data *tree_item_data = (Item_Data *) data;
+ EmailAccountUGD *ug_data = tree_item_data->ug_data;
+ char tmp[MAX_STR_LEN] = { 0, };
+
+ if (!strcmp(part, "elm.text.1")) {
+ snprintf(tmp, sizeof(tmp), "%s", _("IDS_EMAIL_BODY_FAVOURITES"));
+ return g_strdup(tmp);
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(tmp, sizeof(tmp), "[%d/%d]", ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_FLAGGED], ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_FLAGGED]);
+ return g_strdup(tmp);
+ } else {
+ debug_log("part is invalid");
+ }
+
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static char *_gl_label_get_for_all_acc_draft(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ Item_Data *tree_item_data = (Item_Data *) data;
+ EmailAccountUGD *ug_data = tree_item_data->ug_data;
+ char tmp[MAX_STR_LEN] = { 0, };
+
+ if (!strcmp(part, "elm.text.1")) {
+ snprintf(tmp, sizeof(tmp), "%s", _("IDS_EMAIL_BODY_DRAFTS"));
+ return g_strdup(tmp);
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(tmp, sizeof(tmp), "[%d/%d]", ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_DRAFT], ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_DRAFT]);
+ return g_strdup(tmp);
+ } else {
+ debug_log("part is invalid");
+ }
+
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static char *_gl_label_get_for_all_acc_outbox(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ Item_Data *tree_item_data = (Item_Data *) data;
+ EmailAccountUGD *ug_data = tree_item_data->ug_data;
+ char tmp[MAX_STR_LEN] = { 0, };
+
+ if (!strcmp(part, "elm.text.1")) {
+ snprintf(tmp, sizeof(tmp), "%s", N_("Outbox"));
+ return g_strdup(tmp);
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(tmp, sizeof(tmp), "[%d/%d]", ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_OUTBOX], ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_OUTBOX]);
+ return g_strdup(tmp);
+ } else {
+ debug_log("part is invalid");
+ }
+
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static char *_gl_label_get_for_all_acc_sentbox(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ Item_Data *tree_item_data = (Item_Data *) data;
+ EmailAccountUGD *ug_data = tree_item_data->ug_data;
+ char tmp[MAX_STR_LEN] = { 0, };
+
+ if (!strcmp(part, "elm.text.1")) {
+ snprintf(tmp, sizeof(tmp), "%s", _("IDS_EMAIL_BODY_SENTBOX"));
+ return g_strdup(tmp);
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(tmp, sizeof(tmp), "[%d/%d]", ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_SENTBOX], ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_SENTBOX]);
+ return g_strdup(tmp);
+ } else {
+ debug_log("part is invalid");
+ }
+
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static char *_gl_label_get_for_all_acc_spambox(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ Item_Data *tree_item_data = (Item_Data *) data;
+ EmailAccountUGD *ug_data = tree_item_data->ug_data;
+ char tmp[MAX_STR_LEN] = { 0, };
+
+ if (!strcmp(part, "elm.text.1")) {
+ snprintf(tmp, sizeof(tmp), "%s", _("IDS_EMAIL_BODY_SPAMBOX"));
+ return g_strdup(tmp);
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(tmp, sizeof(tmp), "[%d/%d]", ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_SPAMBOX], ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_SPAMBOX]);
+ return g_strdup(tmp);
+ } else {
+ debug_log("part is invalid");
+ }
+
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static char *_gl_label_get_for_all_acc_trash(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ Item_Data *tree_item_data = (Item_Data *) data;
+ EmailAccountUGD *ug_data = tree_item_data->ug_data;
+ char tmp[MAX_STR_LEN] = { 0, };
+
+ if (!strcmp(part, "elm.text.1")) {
+ snprintf(tmp, sizeof(tmp), "%s", _("IDS_EMAIL_BODY_TRASH"));
+ return g_strdup(tmp);
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(tmp, sizeof(tmp), "[%d/%d]", ug_data->all_acc_unread_count[ACC_MAILBOX_TYPE_TRASH], ug_data->all_acc_read_count[ACC_MAILBOX_TYPE_TRASH]);
+ return g_strdup(tmp);
+ } else {
+ debug_log("part is invalid");
+ }
+
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static void _open_allacc_boxtype(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ int box_type = (account_mailbox_type_e)data;
+ email_mailbox_type_e mailbox_type = EMAIL_MAILBOX_TYPE_INBOX;
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ Item_Data *item_data = elm_object_item_data_get((const Elm_Object_Item *)item);
+ RETURN_IF_FAIL(item_data != NULL);
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) item_data->ug_data;
+
+ elm_genlist_item_selected_set(item, 0);
+
+ if (ug_data->block_item_click)
+ return;
+ elm_genlist_item_update(item);
+
+ switch(box_type)
+ {
+ case ACC_MAILBOX_TYPE_INBOX:
+ {
+ mailbox_type = EMAIL_MAILBOX_TYPE_INBOX;
+ }
+ break;
+ case ACC_MAILBOX_TYPE_FLAGGED:
+ {
+ mailbox_type = EMAIL_MAILBOX_TYPE_FLAGGED;
+ }
+ break;
+ case ACC_MAILBOX_TYPE_DRAFT:
+ {
+ mailbox_type = EMAIL_MAILBOX_TYPE_DRAFT;
+ }
+ break;
+ case ACC_MAILBOX_TYPE_OUTBOX:
+ {
+ mailbox_type = EMAIL_MAILBOX_TYPE_OUTBOX;
+ }
+ break;
+ case ACC_MAILBOX_TYPE_SENTBOX:
+ {
+ mailbox_type = EMAIL_MAILBOX_TYPE_SENTBOX;
+ }
+ break;
+ case ACC_MAILBOX_TYPE_SPAMBOX:
+ {
+ mailbox_type = EMAIL_MAILBOX_TYPE_SPAMBOX;
+ }
+ break;
+ case ACC_MAILBOX_TYPE_TRASH:
+ {
+ mailbox_type = EMAIL_MAILBOX_TYPE_TRASH;
+ }
+ break;
+ default:
+ {
+ mailbox_type = EMAIL_MAILBOX_TYPE_INBOX;
+ }
+ break;
+ }
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+ debug_log("box_type: [%d], mailbox_type: [%d]", box_type, mailbox_type);
+
+ char id[NUM_STR_LEN] = {0,};
+ snprintf(id, sizeof(id), "%d", 0);
+
+ char is_null[NUM_STR_LEN] = {0,};
+ snprintf(is_null, sizeof(is_null), "%d", true);
+
+ char ch_boxtype[NUM_STR_LEN] = {0,};
+ snprintf(ch_boxtype, sizeof(ch_boxtype), "%d", mailbox_type);
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_IS_NULL, is_null);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX_TYPE, ch_boxtype);
+ ug_send_result(ug_data->ug, service);
+
+ ug_data->block_item_click = 1;
+
+ service_destroy(service);
+}
+
+static void _edit_item_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ Elm_Object_Item *it = event_info;
+
+ Item_Data *item_data = (Item_Data *) data;
+ email_account_list *alist = item_data->alist;
+ if (item_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+ if (alist->ug_data == NULL) {
+ debug_log("ugd is NULL");
+ return;
+ }
+
+ elm_genlist_item_selected_set(it, 0);
+
+ if (alist->ug_data->block_item_click)
+ return;
+
+ if (elm_genlist_decorate_mode_get(alist->ug_data->gl)) {
+ if(ACC_FOLDER_CREATE == alist->ug_data->folder_mode)
+ {
+ _popup_newfolder_cb(data, obj, event_info);
+ }
+#if 0
+ else if(ACC_FOLDER_EDIT == alist->ug_data->folder_mode)
+ {
+ _folder_edit_sel_cb(data, obj, event_info);
+ }
+#endif
+ else if(ACC_FOLDER_DELETE == alist->ug_data->folder_mode)
+ {
+ _popup_delfolder_cb(data, obj, event_info);
+ }
+ else if(ACC_FOLDER_MOVE_FROM == alist->ug_data->folder_mode)
+ {
+ alist->ug_data->move_from_item = it;
+ _folder_move_cb(alist->ug_data, obj, event_info);
+ }
+ else if(ACC_FOLDER_MOVE_TO == alist->ug_data->folder_mode)
+ {
+ _popup_movefolder_cb(data, obj, event_info);
+ }
+ else if(ACC_FOLDER_RENAME == alist->ug_data->folder_mode)
+ {
+ _popup_rename_cb(data, obj, event_info);
+ }
+ }
+ else
+ {
+ _open_mail_list(alist, obj, event_info);
+ }
+
+ debug_log("");
+}
+
+#if 0
+static void _folder_edit_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+ //int account_id = ug_data->account_id;
+ Evas_Object *genlist = ug_data->gl;
+
+ if (!elm_genlist_decorate_mode_get(genlist)) {
+ debug_log("");
+
+ ug_data->folder_mode = ACC_FOLDER_EDIT;
+ ug_data->it = NULL;
+ ug_data->move_from_item = NULL;
+ ug_data->checked_count = 0;
+ _refresh_folder_view(ug_data);
+ genlist = ug_data->gl;
+
+ debug_log("");
+
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,edit_mode", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ evas_object_hide(ug_data->control_bar);
+
+ /* Set reorder and edit mode */
+ elm_genlist_reorder_mode_set(genlist, EINA_TRUE);
+ elm_genlist_decorate_mode_set(genlist, EINA_TRUE);
+
+ /* This means even if selected, every click will make the selected callbacks be called. */
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_object_item_disabled_set(ug_data->root_item, EINA_TRUE);
+
+ elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", N_("Select folder to edit"));
+
+ elm_genlist_tree_effect_enabled_set(ug_data->gl, EINA_FALSE);
+
+ _create_controlbar(ug_data);
+ }
+ else
+ {
+ debug_log("");
+
+ ug_data->folder_mode = ACC_FOLDER_NONE;
+
+ /* Change layout background color to default background color */
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,default", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ elm_object_item_part_content_set(ug_data->navibar_item, "controlbar", ug_data->control_bar);
+ evas_object_show(ug_data->control_bar);
+
+ /* Unset edit mode */
+ elm_genlist_decorate_mode_set(genlist, EINA_FALSE);
+ elm_genlist_reorder_mode_set(genlist, EINA_FALSE);
+
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ elm_object_item_disabled_set(ug_data->root_item, EINA_FALSE);
+
+ /* Set the navigation bar title */
+ elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", _("IDS_EMAIL_HEADER_FOLDERS"));
+
+ elm_genlist_tree_effect_enabled_set(ug_data->gl, EINA_TRUE);
+
+ _create_controlbar(ug_data);
+ }
+}
+#endif
+
+#if 0
+static void _folder_edit_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ email_account_list *alist = (email_account_list *) data;
+
+ Elm_Object_Item *it = event_info;
+ Item_Data *item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (item_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+ EmailAccountUGD *ug_data = alist->ug_data;
+
+ debug_log("folder_mode: %d : %d", ug_data->folder_mode, item_data->ug_data->folder_mode);
+ debug_log("it: %p, ug_data->it: %p : %p", it, ug_data->it, item_data->it);
+ debug_log("tree_item_data->checked: %d, checked_count: %d", item_data->checked, item_data->ug_data->checked_count);
+ debug_log("flip_get: %d, state_get: %d", elm_genlist_item_flip_get(it), elm_genlist_item_selected_get(it));
+
+ if (elm_genlist_item_flip_get(it))
+ {
+ debug_log("");
+ return;
+ }
+ _unset_rename(ug_data);
+
+ if (elm_genlist_decorate_mode_get(ug_data->gl)) {
+ item_data->checked = !item_data->checked;
+
+ if (item_data->checked) ug_data->checked_count++;
+ else ug_data->checked_count--;
+
+ //elm_check_state_set(it, item_data->checked);
+ elm_genlist_item_fields_update(it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+
+ debug_log("folder_mode: %d : %d", ug_data->folder_mode, item_data->ug_data->folder_mode);
+ debug_log("it: %p, ug_data->it: %p : %p", it, ug_data->it, item_data->it);
+ debug_log("tree_item_data->checked: %d, checked_count: %d", item_data->checked, item_data->ug_data->checked_count);
+
+ if(ug_data->it != NULL && ug_data->checked_count > 1)
+ {
+ Item_Data *it_tree_item_data = (Item_Data *)elm_object_item_data_get((const Elm_Object_Item *)ug_data->it);
+ debug_log("state: %d, ug_data->it: %p, it_tree_item_data: %p, it_tree_item_data->it = %p, ug_data: %p : %p, ug_data->checked_count : %d, it: %p",
+ elm_genlist_item_selected_get(ug_data->it), ug_data->it, it_tree_item_data, it_tree_item_data->it, ug_data, it_tree_item_data->ug_data, ug_data->checked_count, it);
+
+ it_tree_item_data->checked = EINA_FALSE;
+ //elm_check_state_set(it_tree_item_data->it, EINA_FALSE);
+ elm_genlist_item_fields_update(it_tree_item_data->it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+ ug_data->checked_count--;
+ }
+
+ if (item_data->checked)
+ {
+ debug_log("checked_count: %d", ug_data->checked_count);
+ ug_data->it = it;
+ ug_data->move_from_item = it;
+ }
+ else
+ {
+ debug_log("checked_count: %d", ug_data->checked_count);
+ ug_data->it = NULL;
+ ug_data->move_from_item = NULL;
+ }
+
+ debug_log("folder_mode: %d : %d", ug_data->folder_mode, item_data->ug_data->folder_mode);
+ debug_log("it: %p, ug_data->it: %p : %p", it, ug_data->it, item_data->it);
+ debug_log("tree_item_data->checked: %d, checked_count: %d", item_data->checked, item_data->ug_data->checked_count);
+
+ }
+ else {
+ debug_log("");
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+ }
+}
+#endif
+
+static void _folder_create_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+ Evas_Object *genlist = ug_data->gl;
+
+ if (!elm_genlist_decorate_mode_get(genlist)) {
+ ug_data->folder_mode = ACC_FOLDER_CREATE;
+
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,edit_mode", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ evas_object_hide(ug_data->control_bar);
+
+ /* Set reorder and edit mode */
+ elm_genlist_reorder_mode_set(genlist, EINA_TRUE);
+ elm_genlist_decorate_mode_set(genlist, EINA_TRUE);
+
+ /* This means even if selected, every click will make the selected callbacks be called. */
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_genlist_item_select_mode_set(ug_data->root_item, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+ //elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", _("IDS_EMAIL_HEADER_SELECT_FOLDER_ABB"));
+ elm_object_item_text_set(ug_data->navibar_item, _("IDS_EMAIL_HEADER_SELECT_FOLDER_ABB"));
+
+ elm_genlist_tree_effect_enabled_set(ug_data->gl, EINA_FALSE);
+ }
+ else {
+ ug_data->folder_mode = ACC_FOLDER_NONE;
+
+ /* Change layout background color to default background color */
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,default", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ elm_object_item_part_content_set(ug_data->navibar_item, "controlbar", ug_data->control_bar);
+ evas_object_show(ug_data->control_bar);
+
+ /* Unset edit mode */
+ elm_genlist_decorate_mode_set(genlist, EINA_FALSE);
+ elm_genlist_reorder_mode_set(genlist, EINA_FALSE);
+
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ elm_genlist_item_select_mode_set(ug_data->root_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ /* Set the navigation bar title */
+ //elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", _("IDS_EMAIL_HEADER_FOLDERS"));
+ elm_object_item_text_set(ug_data->navibar_item, _("IDS_EMAIL_HEADER_FOLDERS"));
+
+ elm_genlist_tree_effect_enabled_set(ug_data->gl, EINA_TRUE);
+ }
+
+}
+
+static void _folder_delete_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+ //int account_id = ug_data->account_id;
+ Evas_Object *genlist = ug_data->gl;
+
+ if (!elm_genlist_decorate_mode_get(genlist)) {
+ ug_data->folder_mode = ACC_FOLDER_DELETE;
+
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,edit_mode", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ evas_object_hide(ug_data->control_bar);
+
+ /* Set reorder and edit mode */
+ elm_genlist_reorder_mode_set(genlist, EINA_TRUE);
+ elm_genlist_decorate_mode_set(genlist, EINA_TRUE);
+
+ /* This means even if selected, every click will make the selected callbacks be called. */
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_object_item_disabled_set(ug_data->root_item, EINA_TRUE);
+
+ //elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", N_("Select delete folder"));
+ elm_object_item_text_set(ug_data->navibar_item, N_("Select delete folder"));
+
+ elm_genlist_tree_effect_enabled_set(ug_data->gl, EINA_FALSE);
+ }
+ else {
+ ug_data->folder_mode = ACC_FOLDER_NONE;
+
+ /* Change layout background color to default background color */
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,default", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ elm_object_item_part_content_set(ug_data->navibar_item, "controlbar", ug_data->control_bar);
+ evas_object_show(ug_data->control_bar);
+
+ /* Unset edit mode */
+ elm_genlist_decorate_mode_set(genlist, EINA_FALSE);
+ elm_genlist_reorder_mode_set(genlist, EINA_FALSE);
+
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ elm_object_item_disabled_set(ug_data->root_item, EINA_FALSE);
+
+ /* Set the navigation bar title */
+ //elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", _("IDS_EMAIL_HEADER_FOLDERS"));
+ elm_object_item_text_set(ug_data->navibar_item, _("IDS_EMAIL_HEADER_FOLDERS"));
+
+ elm_genlist_tree_effect_enabled_set(ug_data->gl, EINA_TRUE);
+
+ _create_controlbar(ug_data);
+ }
+
+}
+
+static void _folder_move_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+ //int account_id = ug_data->account_id;
+ Evas_Object *genlist = ug_data->gl;
+
+ if (!elm_genlist_decorate_mode_get(genlist)) {
+ ug_data->folder_mode = ACC_FOLDER_MOVE_FROM;
+
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,edit_mode", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ evas_object_hide(ug_data->control_bar);
+
+ /* Set reorder and edit mode */
+ elm_genlist_reorder_mode_set(genlist, EINA_TRUE);
+ elm_genlist_decorate_mode_set(genlist, EINA_TRUE);
+
+ /* This means even if selected, every click will make the selected callbacks be called. */
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_object_item_disabled_set(ug_data->root_item, EINA_TRUE);
+
+ //elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", N_("Select move folder"));
+ elm_object_item_text_set(ug_data->navibar_item, N_("Select move folder"));
+
+ elm_genlist_tree_effect_enabled_set(ug_data->gl, EINA_FALSE);
+ }
+ else {
+ if(ug_data->folder_mode == ACC_FOLDER_MOVE_FROM)
+ {
+ if(ug_data->it == NULL)
+ {
+ Evas_Object *popup = NULL, *btn1 = NULL;
+ popup = elm_popup_add(ug_data->win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(popup, dgettext("sys_string", "IDS_COM_BODY_SELECTED_DATA_NOT_FOUND"));
+ btn1 = elm_button_add(popup);
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _popup_destroy_cb, ug_data);
+ ug_data->popup = popup;
+
+ evas_object_show(popup);
+ return;
+ }
+ else
+ {
+ ug_data->folder_mode = ACC_FOLDER_MOVE_TO;
+ ug_data->move_from_item = ug_data->it;
+
+ elm_object_item_disabled_set(ug_data->move_from_item, EINA_TRUE);
+ elm_object_item_disabled_set(ug_data->root_item, EINA_FALSE);
+ elm_genlist_item_select_mode_set(ug_data->root_item, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+ //elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", N_("Select location folder"));
+ elm_object_item_text_set(ug_data->navibar_item, N_("Select location folder"));
+ }
+ }
+ else
+ {
+ ug_data->folder_mode = ACC_FOLDER_NONE;
+
+ /* Change layout background color to default background color */
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,default", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ elm_object_item_part_content_set(ug_data->navibar_item, "controlbar", ug_data->control_bar);
+ evas_object_show(ug_data->control_bar);
+
+ /* Unset edit mode */
+ elm_genlist_decorate_mode_set(genlist, EINA_FALSE);
+ elm_genlist_reorder_mode_set(genlist, EINA_FALSE);
+
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ elm_object_item_disabled_set(ug_data->root_item, EINA_FALSE);
+ elm_genlist_item_select_mode_set(ug_data->root_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ elm_object_item_disabled_set(ug_data->move_from_item, EINA_FALSE);
+ ug_data->move_from_item = NULL;
+
+ /* Set the navigation bar title */
+ //elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", _("IDS_EMAIL_HEADER_FOLDERS"));
+ elm_object_item_text_set(ug_data->navibar_item, _("IDS_EMAIL_HEADER_FOLDERS"));
+
+ elm_genlist_tree_effect_enabled_set(ug_data->gl, EINA_TRUE);
+
+ _create_controlbar(ug_data);
+ }
+ }
+
+}
+
+static void _folder_rename_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+ //int account_id = ug_data->account_id;
+ Evas_Object *genlist = ug_data->gl;
+
+ if (!elm_genlist_decorate_mode_get(genlist)) {
+ debug_log("");
+
+ ug_data->folder_mode = ACC_FOLDER_RENAME;
+ ug_data->checked_count = 0;
+// _refresh_folder_view(ug_data);
+// genlist = ug_data->gl;
+
+ debug_log("");
+
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,edit_mode", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ evas_object_hide(ug_data->control_bar);
+
+ /* Set reorder and edit mode */
+ elm_genlist_reorder_mode_set(genlist, EINA_TRUE);
+ elm_genlist_decorate_mode_set(genlist, EINA_TRUE);
+
+ /* This means even if selected, every click will make the selected callbacks be called. */
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_object_item_disabled_set(ug_data->root_item, EINA_TRUE);
+
+ //elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", N_("Select rename folder"));
+ elm_object_item_text_set(ug_data->navibar_item, N_("Select rename folder"));
+
+ elm_genlist_tree_effect_enabled_set(ug_data->gl, EINA_FALSE);
+
+ _create_controlbar(ug_data);
+ }
+ else
+ {
+ debug_log("");
+
+ ug_data->folder_mode = ACC_FOLDER_NONE;
+
+ /* Change layout background color to default background color */
+ edje_object_signal_emit(_EDJ(ug_data->ly), "elm,bg,show,default", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navibar_item, "controlbar");
+ elm_object_item_part_content_set(ug_data->navibar_item, "controlbar", ug_data->control_bar);
+ evas_object_show(ug_data->control_bar);
+
+ /* Unset edit mode */
+ elm_genlist_decorate_mode_set(genlist, EINA_FALSE);
+ elm_genlist_reorder_mode_set(genlist, EINA_FALSE);
+
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ elm_object_item_disabled_set(ug_data->root_item, EINA_FALSE);
+
+ /* Set the navigation bar title */
+ //elm_object_part_text_set(ug_data->navi_title_ly, "txt_title", _("IDS_EMAIL_HEADER_FOLDERS"));
+ elm_object_item_text_set(ug_data->navibar_item, _("IDS_EMAIL_HEADER_FOLDERS"));
+
+ elm_genlist_tree_effect_enabled_set(ug_data->gl, EINA_TRUE);
+
+ _create_controlbar(ug_data);
+ }
+}
+
+static void _delete_con_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+ if (ug_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+
+ Elm_Object_Item *it = ug_data->it;
+ Item_Data *item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (item_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+ GNode *node = (GNode *)item_data->child;
+ email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+ email_mailbox_t mbox = { 0, };
+ int err_code = EMAIL_ERROR_NONE;
+ unsigned handle;
+ int on_server = (EMAIL_SERVER_TYPE_POP3 == GET_ACCOUNT_SERVER_TYPE(ug_data->account_id)?0:1);
+
+ memset(&mbox, 0x00, sizeof(email_mailbox_t));
+ mbox.mailbox_id = mlist->mailbox_id;
+ mbox.mailbox_name = strdup(mlist->mailbox_name);
+ mbox.account_id = ug_data->account_id;
+
+ debug_log("delfolder name[%s], account_id[%d], on_server[%d]", mbox.mailbox_name, mbox.account_id, on_server);
+
+ err_code = email_delete_mailbox(mbox.mailbox_id, on_server, &handle);
+
+ if (err_code < 0) {
+ debug_log("\n email_delete_mailbox failed");
+ _popup_fail_cb(ug_data, obj, event_info);
+ }
+ else {
+ debug_log("\n email_delete_mailbox succeed : handle[%d]\n", handle);
+ ug_data->emf_handle = handle;
+ if(ug_data->emf_handle == 0)
+ {
+ _popup_success_cb(ug_data, NULL, NULL);
+ }
+ else
+ {
+ _popup_progress_cb(ug_data, obj, event_info);
+ }
+ }
+}
+
+static void _popup_delfolder_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ Item_Data *item_data = (Item_Data *) data;
+ EmailAccountUGD *ug_data = item_data->ug_data;
+ if (ug_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+ Elm_Object_Item *it = event_info;
+// Item_Data *item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+// GNode *node = (GNode *)item_data;
+// email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+
+ ug_data ->it = it;
+
+ if (ug_data->conformant) {
+ evas_object_del(ug_data->conformant);
+ ug_data->conformant = NULL;
+ }
+ if (ug_data->popup)
+ {
+ evas_object_del(ug_data->popup);
+ ug_data->popup = NULL;
+ }
+
+ if(ug_data ->it == NULL)
+ {
+ Evas_Object *popup = NULL, *btn1 = NULL;
+ popup = elm_popup_add(ug_data->win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(popup, dgettext("sys_string", "IDS_COM_BODY_SELECTED_DATA_NOT_FOUND"));
+ btn1 = elm_button_add(popup);
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _popup_destroy_cb, ug_data);
+ ug_data->popup = popup;
+
+ evas_object_show(popup);
+ }
+ else
+ {
+ ug_data->folder_mode = ACC_FOLDER_DELETE;
+
+ Evas_Object *notify = elm_popup_add(ug_data->win);
+ evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(notify, dgettext("sys_string", "IDS_COM_POP_DELETE_Q"));
+
+ Evas_Object *btn1 = elm_button_add(notify);
+ elm_object_style_set(btn1, "popup_button/default");
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+ elm_object_part_content_set(notify, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _delete_con_cb, ug_data);
+
+ Evas_Object *btn2 = elm_button_add(notify);
+ elm_object_style_set(btn2, "popup_button/default");
+ elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(notify, "button2", btn2);
+ evas_object_smart_callback_add(btn2, "clicked", _back_button_cb, ug_data);
+ ug_data->popup = notify;
+
+ evas_object_show(notify);
+ }
+}
+
+static void _create_con_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ Item_Data *item_data = (Item_Data *) data;
+ email_account_list *alist = item_data->alist;
+ if (alist->ug_data == NULL) {
+ debug_log("ugd is NULL");
+ return;
+ }
+
+ Elm_Object_Item *it = alist->ug_data->it;
+ Item_Data *tree_item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (tree_item_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+
+ if (elm_entry_is_empty(alist->ug_data->entry))
+ {
+ debug_log("Folder name NULL");
+ return;
+ }
+
+ GNode *node = (GNode *)tree_item_data->child;
+ email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+ email_mailbox_t mbox = { 0, };
+ int err_code = EMAIL_ERROR_NONE;
+ unsigned handle;
+ char arg1[MAX_STR_LEN] = { 0, };
+ char arg2[MAX_STR_LEN] = { 0, };
+ char arg3[MAX_STR_LEN] = { 0, };
+ int on_server = (EMAIL_SERVER_TYPE_POP3 == GET_ACCOUNT_SERVER_TYPE(alist->ug_data->account_id)?0:1);
+
+ strcpy(arg1, elm_entry_markup_to_utf8(elm_object_text_get(alist->ug_data->entry)));
+ strcpy(arg2, email_util_strrtrim(arg1));
+ if(strlen(mlist->mailbox_name) > 0)
+ g_snprintf(arg3, sizeof(arg3), "%s/%s", email_util_strltrim(mlist->mailbox_name), arg2);
+ else
+ g_snprintf(arg3, sizeof(arg3), "%s", arg2);
+
+ memset(&mbox, 0x00, sizeof(email_mailbox_t));
+ mbox.mailbox_name = g_strdup(arg3);
+ mbox.alias = g_strdup(arg2);
+ mbox.local = 0;
+ mbox.mailbox_type = EMAIL_MAILBOX_TYPE_USER_DEFINED;
+ mbox.account_id = alist->ug_data->account_id;
+
+ debug_log("arg1[%s], name[%s], alias[%s], on_server[%d], mlist->name[%s]", arg1, arg3, arg2, on_server, mlist->mailbox_name);
+
+ err_code = email_add_mailbox(&mbox, on_server, &handle);
+
+ if (err_code < 0) {
+ debug_log("\n email_add_mailbox failed");
+ _popup_fail_cb(alist->ug_data, obj, event_info);
+ }
+ else {
+ debug_log("\n email_add_mailbox succeed : handle[%d]\n", handle);
+ alist->ug_data->emf_handle = handle;
+ if(alist->ug_data->emf_handle == 0)
+ {
+ _popup_success_cb(alist->ug_data, NULL, NULL);
+ }
+ else
+ {
+ _popup_progress_cb(alist->ug_data, obj, event_info);
+ }
+ }
+}
+
+static void _popup_newfolder_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ Evas_Object *popup;
+ Evas_Object *layout, *entry;
+ Evas_Object *btn1, *btn2;
+ Evas_Object *content;
+
+ Elm_Object_Item *it = event_info;
+ Item_Data *tree_item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (tree_item_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+ debug_log("tree_item_data: %p, tree_item_data->it: %p", tree_item_data, tree_item_data->it);
+ email_account_list *alist = tree_item_data->alist;
+
+ if (alist->ug_data == NULL) {
+ debug_log("ugd is NULL");
+ return;
+ }
+ alist->ug_data->it = it;
+
+ if (alist->ug_data->conformant) {
+ evas_object_del(alist->ug_data->conformant);
+ alist->ug_data->conformant = NULL;
+ }
+ if (alist->ug_data->popup) {
+ evas_object_del(alist->ug_data->popup);
+ alist->ug_data->popup = NULL;
+ }
+
+ alist->ug_data->conformant = elm_conformant_add(alist->ug_data->win);
+ elm_win_conformant_set(alist->ug_data->win, EINA_TRUE);
+ elm_win_resize_object_add(alist->ug_data->win, alist->ug_data->conformant);
+ evas_object_size_hint_weight_set(alist->ug_data->conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(alist->ug_data->conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(alist->ug_data->conformant);
+
+ content = elm_layout_add(alist->ug_data->conformant);
+ elm_object_content_set(alist->ug_data->conformant, content);
+ popup = elm_popup_add(content);
+// elm_object_style_set(popup, "customstyle");
+// evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ elm_object_part_text_set(popup, "title,text", _("IDS_EMAIL_HEADER_CREATE_FOLDER"));
+
+ layout = elm_layout_add(popup);
+ elm_layout_theme_set(layout, "layout", "editfield", "default"); // Default editfield layout style without top title.
+
+ entry = elm_entry_add(popup);
+ elm_entry_scrollable_set(entry, EINA_TRUE); // Make entry as scrollable single line.
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ evas_object_smart_callback_add(entry, "changed", _entry_changed_cb, layout);
+ evas_object_smart_callback_add(entry, "focused", _entry_focused_cb, layout);
+ evas_object_smart_callback_add(entry, "unfocused", _entry_unfocused_cb, layout);
+
+ elm_object_part_content_set(layout, "elm.swallow.content", entry);
+ elm_object_part_text_set(layout, "elm.guidetext", _("IDS_EMAIL_POP_FOLDER_NAME")); // Set guidetext.
+ elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", _eraser_clicked_cb, entry);
+ evas_object_show(entry);
+ elm_object_part_content_set(layout, "elm.swallow.content", entry);
+ elm_object_content_set(popup, layout);
+
+ btn1 = elm_button_add(popup);
+ elm_object_style_set(btn1, "popup_button/default");
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _create_con_cb, tree_item_data);
+ btn2 = elm_button_add(popup);
+ elm_object_style_set(btn2, "popup_button/default");
+ elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(popup, "button2", btn2);
+ evas_object_smart_callback_add(btn2, "clicked", _back_button_cb, alist->ug_data);
+ alist->ug_data->entry = entry;
+ alist->ug_data->popup = popup;
+
+ evas_object_show(popup);
+}
+
+static void _rename_con_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ Item_Data *item_data = (Item_Data *) data;
+ email_account_list *alist = item_data->alist;
+ if (alist->ug_data == NULL) {
+ debug_log("ugd is NULL");
+ return;
+ }
+
+ Elm_Object_Item *it = item_data->it;
+ Item_Data *tree_item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (tree_item_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+
+ if (elm_entry_is_empty(alist->ug_data->entry))
+ {
+ debug_log("Folder name NULL");
+ return;
+ }
+
+ GNode *node = (GNode *)tree_item_data->child;
+ email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+ char *parent_path = NULL;
+ char arg1[MAX_STR_LEN] = { 0, };
+ char arg2[MAX_STR_LEN] = { 0, };
+ char arg3[MAX_STR_LEN] = { 0, };
+ int err_code = EMAIL_ERROR_NONE;
+ unsigned handle;
+ int on_server = (EMAIL_SERVER_TYPE_POP3 == GET_ACCOUNT_SERVER_TYPE(alist->ug_data->account_id)?0:1);
+
+ strcpy(arg1, elm_entry_markup_to_utf8(elm_object_text_get(alist->ug_data->entry)));
+ strcpy(arg2, email_util_strrtrim(arg1));
+
+ parent_path = email_util_get_parent_folder(mlist->mailbox_name);
+
+ if(parent_path != NULL)
+ {
+ snprintf(arg3, MAX_STR_LEN, "%s/%s", parent_path, arg2);
+ }
+ else
+ {
+ snprintf(arg3, MAX_STR_LEN, "%s", arg2);
+ }
+
+ debug_log("rename_to folder from[%s], to[%s], new_name[%s], on_server[%d]", mlist->mailbox_name, arg3, arg2, on_server);
+
+ if ((err_code = email_rename_mailbox(mlist->mailbox_id, arg3, arg2, on_server, &handle)) < 0) {
+ debug_log("email_rename_mailbox failed[%d]", err_code);
+ _popup_fail_cb(alist->ug_data, obj, event_info);
+ }
+ else {
+ debug_log("email_rename_mailbox succeed[%d]", handle);
+ alist->ug_data->emf_handle = handle;
+ if(alist->ug_data->emf_handle == 0)
+ {
+ _popup_success_cb(alist->ug_data, NULL, NULL);
+ }
+ else
+ {
+ _popup_progress_cb(alist->ug_data, obj, event_info);
+ }
+ }
+
+ g_free(parent_path);
+ return;
+}
+
+static void _popup_rename_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ Evas_Object *popup;
+ Evas_Object *layout, *entry;
+ Evas_Object *btn1, *btn2;
+ Evas_Object *content;
+
+ Elm_Object_Item *it = event_info;
+ Item_Data *tree_item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (tree_item_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+ GNode *node = (GNode *)tree_item_data->child;
+ email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+
+ debug_log("tree_item_data: %p, tree_item_data->it: %p", tree_item_data, tree_item_data->it);
+ debug_log("mlist.alias: %s", mlist->alias);
+ email_account_list *alist = tree_item_data->alist;
+
+ if (alist->ug_data == NULL) {
+ debug_log("ugd is NULL");
+ return;
+ }
+ alist->ug_data->it = it;
+
+ if (alist->ug_data->conformant) {
+ evas_object_del(alist->ug_data->conformant);
+ alist->ug_data->conformant = NULL;
+ }
+ if (alist->ug_data->popup) {
+ evas_object_del(alist->ug_data->popup);
+ alist->ug_data->popup = NULL;
+ }
+
+ alist->ug_data->conformant = elm_conformant_add(alist->ug_data->win);
+ elm_win_conformant_set(alist->ug_data->win, EINA_TRUE);
+ elm_win_resize_object_add(alist->ug_data->win, alist->ug_data->conformant);
+ evas_object_size_hint_weight_set(alist->ug_data->conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(alist->ug_data->conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(alist->ug_data->conformant);
+
+ content = elm_layout_add(alist->ug_data->conformant);
+ elm_object_content_set(alist->ug_data->conformant, content);
+ popup = elm_popup_add(content);
+// elm_object_style_set(popup, "customstyle");
+// evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_BODY_RENAME"));
+
+ layout = elm_layout_add(popup);
+ elm_layout_theme_set(layout, "layout", "editfield", "default"); // Default editfield layout style without top title.
+
+ entry = elm_entry_add(popup);
+ elm_entry_scrollable_set(entry, EINA_TRUE); // Make entry as scrollable single line.
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ elm_entry_entry_set(entry, mlist->alias); // set current folder name
+ evas_object_smart_callback_add(entry, "changed", _entry_changed_cb, layout);
+ evas_object_smart_callback_add(entry, "focused", _entry_focused_cb, layout);
+ evas_object_smart_callback_add(entry, "unfocused", _entry_unfocused_cb, layout);
+
+ elm_object_part_content_set(layout, "elm.swallow.content", entry);
+ elm_object_part_text_set(layout, "elm.guidetext", _("IDS_EMAIL_POP_FOLDER_NAME")); // Set guidetext.
+ elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", _eraser_clicked_cb, entry);
+ evas_object_show(entry);
+ elm_object_part_content_set(layout, "elm.swallow.content", entry);
+ elm_object_content_set(popup, layout);
+
+ btn1 = elm_button_add(popup);
+ elm_object_style_set(btn1, "popup_button/default");
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _rename_con_cb, tree_item_data);
+ btn2 = elm_button_add(popup);
+ elm_object_style_set(btn2, "popup_button/default");
+ elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(popup, "button2", btn2);
+ evas_object_smart_callback_add(btn2, "clicked", _back_button_cb, alist->ug_data);
+ alist->ug_data->entry = entry;
+ alist->ug_data->popup = popup;
+
+ evas_object_show(popup);
+}
+
+
+static void _move_con_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ email_account_list *alist = (email_account_list *) data;
+ if (alist->ug_data == NULL) {
+ debug_log("ugd is NULL");
+ return;
+ }
+
+ Elm_Object_Item *it_to = alist->ug_data->it;
+ Item_Data *item_data_to = elm_object_item_data_get((const Elm_Object_Item *)it_to);
+ if (item_data_to == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+
+ Elm_Object_Item *it_from = alist->ug_data->move_from_item;
+ Item_Data *item_data_from = elm_object_item_data_get((const Elm_Object_Item *)it_from);
+ if (item_data_from == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+
+ GNode *node_from = (GNode *)item_data_from->child;
+ email_mailbox_t *mlist_from = (email_mailbox_t *)(node_from->data);
+ GNode *node_to = (GNode *)item_data_to->child;
+ email_mailbox_t *mlist_to = (email_mailbox_t *)(node_to->data);
+ char arg1[MAX_STR_LEN] = { 0, };
+ int err_code = EMAIL_ERROR_NONE;
+ unsigned handle;
+ int on_server = (EMAIL_SERVER_TYPE_POP3 == GET_ACCOUNT_SERVER_TYPE(alist->ug_data->account_id)?0:1);
+
+ if(strlen(mlist_to->mailbox_name) > 0)
+ snprintf(arg1, sizeof(arg1), "%s/%s", mlist_to->mailbox_name, mlist_from->alias);
+ else
+ snprintf(arg1, sizeof(arg1), "%s", mlist_from->alias);
+
+ debug_log("move_to folder from[%s], to[%s], new_name[%s], on_server[%d]", mlist_from->mailbox_name, mlist_to->mailbox_name, arg1, on_server);
+
+ if ((err_code = email_rename_mailbox(mlist_from->mailbox_id, arg1, mlist_from->alias, on_server, &handle)) < 0) {
+ debug_log("email_rename_mailbox failed[%d]", err_code);
+ _popup_fail_cb(alist->ug_data, obj, event_info);
+ }
+ else {
+ debug_log("email_rename_mailbox succeed[%d]", handle);
+ alist->ug_data->emf_handle = handle;
+ if(alist->ug_data->emf_handle == 0)
+ {
+ _popup_success_cb(alist->ug_data, NULL, NULL);
+ }
+ else
+ {
+ _popup_progress_cb(alist->ug_data, obj, event_info);
+ }
+ }
+}
+
+static void _popup_movefolder_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ email_account_list *alist = (email_account_list *) data;
+ Elm_Object_Item *it = event_info;
+ Item_Data *item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ char arg1[MAX_STR_LEN] = { 0, };
+
+ if (item_data == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+
+ GNode *node = (GNode *)item_data->child;
+ email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+
+ if (alist->ug_data == NULL) {
+ debug_log("ugd is NULL");
+ return;
+ }
+ if (alist->ug_data->conformant){
+ evas_object_del(alist->ug_data->conformant);
+ alist->ug_data->conformant = NULL;
+ }
+ if (alist->ug_data->popup)
+ {
+ evas_object_del(alist->ug_data->popup);
+ alist->ug_data->popup = NULL;
+ }
+ alist->ug_data->it = it;
+
+ Elm_Object_Item *it_from = alist->ug_data->move_from_item;
+ Item_Data *item_data_from = elm_object_item_data_get((const Elm_Object_Item *)it_from);
+ if (item_data_from == NULL) {
+ debug_log("item_data is NULL");
+ return;
+ }
+ GNode *node_from = (GNode *)item_data_from->child;
+ email_mailbox_t *mlist_from = (email_mailbox_t *)(node_from->data);
+
+ snprintf(arg1, sizeof(arg1), "Move folder [%s] to [%s]", mlist_from->mailbox_name, mlist->mailbox_name);
+
+ Evas_Object *notify = elm_popup_add(alist->ug_data->win);
+ evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(notify, arg1);
+
+ Evas_Object *btn1 = elm_button_add(notify);
+ elm_object_style_set(btn1, "popup_button/default");
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(notify, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _move_con_cb, data);
+
+ Evas_Object *btn2 = elm_button_add(notify);
+ elm_object_style_set(btn2, "popup_button/default");
+ elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(notify, "button2", btn2);
+ evas_object_smart_callback_add(btn2, "clicked", _back_button_cb, alist->ug_data);
+ alist->ug_data->popup = notify;
+
+ evas_object_show(notify);
+}
+
+static void _back_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ RETURN_IF_FAIL(data != NULL);
+
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+
+ if (ug_data->conformant) {
+ evas_object_del(ug_data->conformant);
+ ug_data->conformant = NULL;
+ }
+ if(ug_data->popup) {
+ evas_object_del(ug_data->popup);
+ ug_data->popup = NULL;
+ }
+
+ if (!elm_genlist_decorate_mode_get(ug_data->gl)) {
+ ug_destroy_me(ug_data->ug);
+ } else {
+ ug_data->it = NULL;
+
+ if(ACC_FOLDER_CREATE == ug_data->folder_mode)
+ {
+ _folder_create_cb(ug_data, NULL, NULL);
+ }
+ else if(ACC_FOLDER_DELETE == ug_data->folder_mode)
+ {
+ _folder_delete_cb(ug_data, NULL, NULL);
+ }
+ else if(ACC_FOLDER_MOVE_FROM == ug_data->folder_mode)
+ {
+ ug_data->folder_mode = ACC_FOLDER_MOVE_TO;
+ _folder_move_cb(ug_data, NULL, NULL);
+ }
+ else if(ACC_FOLDER_MOVE_TO == ug_data->folder_mode)
+ {
+ _folder_move_cb(ug_data, NULL, NULL);
+ }
+ else if(ACC_FOLDER_RENAME == ug_data->folder_mode)
+ {
+ _folder_rename_cb(ug_data, NULL, NULL);
+ }
+ /*else if(ACC_FOLDER_EDIT == ug_data->folder_mode)
+ {
+ _folder_edit_cb(ug_data, NULL, NULL);
+ }*/
+ }
+}
+
+static void _popup_destroy_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ RETURN_IF_FAIL(data != NULL);
+
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+
+ if (ug_data->conformant) {
+ evas_object_del(ug_data->conformant);
+ ug_data->conformant = NULL;
+ }
+ if(ug_data->popup) {
+ evas_object_del(ug_data->popup);
+ ug_data->popup = NULL;
+ }
+}
+
+static void _popup_success_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+// Evas_Object *popup;
+// Evas_Object *btn1;
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+ int ret = 1;
+
+ if (ug_data->conformant){
+ evas_object_del(ug_data->conformant);
+ ug_data->conformant = NULL;
+ }
+ if(ug_data->popup) {
+ evas_object_del(ug_data->popup);
+ ug_data->popup = NULL;
+ }
+
+ debug_log("emf_handle [%d], folder_mode[%d]", ug_data->emf_handle, ug_data->folder_mode);
+ ug_data->emf_handle = EMAIL_HANDLE_INVALID;
+
+ if(ug_data->folder_mode == ACC_FOLDER_NONE)
+ {
+ debug_log("exit func without popup");
+ return;
+ }
+
+#if 0
+ popup = elm_popup_add(ug_data->win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ switch(ug_data->folder_mode)
+ {
+ case ACC_FOLDER_CREATE:
+ elm_object_text_set(popup, N_("Created"));
+ break;
+ case ACC_FOLDER_DELETE:
+ elm_object_text_set(popup, dgettext("sys_string", "IDS_COM_POP_DELETED"));
+ break;
+ case ACC_FOLDER_MOVE_TO:
+ elm_object_text_set(popup, dgettext("sys_string", "IDS_COM_POP_MOVED"));
+ break;
+ default:
+ elm_object_text_set(popup, dgettext("sys_string", "IDS_COM_POP_WARNING"));
+ break;
+ }
+ btn1 = elm_button_add(popup);
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _finish_folder_view, ug_data);
+ ug_data->popup = popup;
+ evas_object_show(popup);
+#else
+ switch(ug_data->folder_mode)
+ {
+ case ACC_FOLDER_CREATE:
+ ret = status_message_post(N_("Created"));
+ break;
+ case ACC_FOLDER_DELETE:
+ ret = status_message_post(dgettext("sys_string", "IDS_COM_POP_DELETED"));
+ break;
+ case ACC_FOLDER_MOVE_TO:
+ ret = status_message_post(dgettext("sys_string", "IDS_COM_POP_MOVED"));
+ break;
+ case ACC_FOLDER_RENAME:
+ ret = status_message_post(dgettext("sys_string", "IDS_COM_POP_SAVED"));
+ break;
+ default:
+ debug_log("Warning...");
+ break;
+ }
+ if (ret) {
+ debug_log("fail to status_message_post() : %d\n", ret);
+ }
+ _finish_folder_view(data, obj, event_info);
+#endif
+}
+
+static void _popup_fail_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+// Evas_Object *popup;
+// Evas_Object *btn1;
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+ int ret = 1;
+
+ if (ug_data->conformant){
+ evas_object_del(ug_data->conformant);
+ ug_data->conformant = NULL;
+ }
+ if(ug_data->popup) {
+ evas_object_del(ug_data->popup);
+ ug_data->popup = NULL;
+ }
+
+ debug_log("emf_handle [%d], folder_mode[%d]", ug_data->emf_handle, ug_data->folder_mode);
+ ug_data->emf_handle = EMAIL_HANDLE_INVALID;
+
+ if(ug_data->folder_mode == ACC_FOLDER_NONE)
+ {
+ debug_log("exit func without popup");
+ return;
+ }
+#if 0
+ popup = elm_popup_add(ug_data->win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ switch(ug_data->folder_mode)
+ {
+ case ACC_FOLDER_CREATE:
+ elm_object_text_set(popup, _("IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER"));
+ break;
+ case ACC_FOLDER_DELETE:
+ elm_object_text_set(popup, N_("Unable to delete folder"));
+ break;
+ case ACC_FOLDER_MOVE_TO:
+ elm_object_text_set(popup, N_("Unable to move folder"));
+ break;
+ default:
+ elm_object_text_set(popup, dgettext("sys_string", "IDS_COM_POP_WARNING"));
+ break;
+ }
+ btn1 = elm_button_add(popup);
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _back_button_cb, ug_data);
+ ug_data->popup = popup;
+ evas_object_show(popup);
+
+#else
+ switch(ug_data->folder_mode)
+ {
+ case ACC_FOLDER_CREATE:
+ ret = status_message_post(_("IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER"));
+ break;
+ case ACC_FOLDER_DELETE:
+ ret = status_message_post(N_("Unable to delete folder"));
+ break;
+ case ACC_FOLDER_MOVE_TO:
+ ret = status_message_post(N_("Unable to move folder"));
+ break;
+ case ACC_FOLDER_RENAME:
+ ret = status_message_post(N_("Unable to rename folder"));
+ break;
+ default:
+ debug_log("Warning...");
+ break;
+ }
+ if (ret) {
+ debug_log("fail to status_message_post() : %d\n", ret);
+ }
+ _back_button_cb(ug_data, NULL, NULL);
+#endif
+}
+
+static void _popup_progress_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ Evas_Object *popup;
+ Evas_Object *btn1;
+ Evas_Object * progressbar;
+// Evas_Object * layout, *label;
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+
+ if (ug_data->conformant){
+ evas_object_del(ug_data->conformant);
+ ug_data->conformant = NULL;
+ }
+ if(ug_data->popup) {
+ evas_object_del(ug_data->popup);
+ ug_data->popup = NULL;
+ }
+
+ popup = elm_popup_add(ug_data->win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ switch(ug_data->folder_mode)
+ {
+ case ACC_FOLDER_CREATE:
+ elm_object_part_text_set(popup, "title,text", N_("Creating folder..."));
+ break;
+ case ACC_FOLDER_DELETE:
+ elm_object_part_text_set(popup, "title,text", N_("Deleting folder..."));
+ break;
+ case ACC_FOLDER_MOVE_TO:
+ elm_object_part_text_set(popup, "title,text", N_("Moving folder..."));
+ break;
+ case ACC_FOLDER_RENAME:
+ elm_object_part_text_set(popup, "title,text", N_("Renaming folder..."));
+ break;
+ default:
+ elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_POP_WARNING"));
+ break;
+ }
+
+ progressbar = elm_progressbar_add(popup);
+ elm_object_style_set(progressbar, "pending_list");
+ elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
+ evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(progressbar);
+ elm_progressbar_pulse(progressbar, EINA_TRUE);
+
+ elm_object_content_set(popup, progressbar);
+
+ btn1 = elm_button_add(popup);
+ elm_object_style_set(btn1, "popup_button/default");
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(popup, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _cancel_button_cb, ug_data);
+
+ ug_data->popup = popup;
+ evas_object_show(popup);
+}
+
+static void _cancel_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+
+ if (ug_data->conformant){
+ evas_object_del(ug_data->conformant);
+ ug_data->conformant = NULL;
+ }
+ if(ug_data->popup) {
+ evas_object_del(ug_data->popup);
+ ug_data->popup = NULL;
+ }
+
+ _stop_emf_job(ug_data, ug_data->emf_handle);
+
+ _back_button_cb(ug_data, NULL, NULL);
+}
+
+/*static void _go_button_clicked_cb(void *data, Evas_Object * obj, void *event_info)
+{
+ debug_log("");
+
+ char buf[PATH_MAX];
+ Evas_Object *btn = obj;
+
+ if (toggle == 0) {
+ snprintf(buf, sizeof(buf), "expand/opened");
+ toggle = 1;
+ elm_genlist_item_expanded_set(current_it, 1);
+ elm_genlist_item_selected_set(current_it, EINA_FALSE);
+ } else {
+ snprintf(buf, sizeof(buf), "expand/closed");
+ toggle = 0;
+ elm_genlist_item_expanded_set(current_it, 0);
+ }
+
+ elm_object_style_set(btn, buf);
+}*/
+
+void _dbus_receiver_setup(EmailAccountUGD *ug_data)
+{
+ debug_log("");
+ if (ug_data == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ int ret = e_dbus_init();
+ debug_log("ret: %d", ret);
+
+ DBusError derror;
+
+ if (ug_data->dbus_conn == NULL) {
+ debug_log("");
+ dbus_error_init(&derror);
+ ug_data->dbus_conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+
+ if (ug_data->dbus_conn == NULL) {
+ debug_log("e_dbus_bus_get return NULL");
+ }
+
+ /* storage */
+ if (e_dbus_request_name(ug_data->dbus_conn, "User.Email.StorageChange", 0, NULL, NULL) == NULL) {
+ debug_critical("Failed to e_dbus_request_name()");
+ return;
+ }
+
+ if (ug_data->signal_handler_storage != NULL) {
+ debug_log("signal_handler_storage != NULL");
+ }
+
+ ug_data->signal_handler_storage = e_dbus_signal_handler_add(ug_data->dbus_conn, NULL,
+ "/User/Email/StorageChange",
+ "User.Email.StorageChange", "email",
+ _edbus_event_account_receive,
+ ug_data);
+
+ if (ug_data->signal_handler_storage == NULL) {
+ debug_log("Failed to e_dbus_signal_handler_add()");
+ return;
+ }
+
+ /* network */
+ if (e_dbus_request_name(ug_data->dbus_conn, "User.Email.NetworkStatus", 0, NULL, NULL) == NULL) {
+ debug_critical("Failed to e_dbus_request_name()");
+ return;
+ }
+ if (ug_data->signal_handler_network != NULL) {
+ debug_log("_g_setting_signal_handler_network != NULL");
+ }
+ ug_data->signal_handler_network = e_dbus_signal_handler_add(ug_data->dbus_conn, NULL,
+ "/User/Email/NetworkStatus",
+ "User.Email.NetworkStatus", "email",
+ _edbus_event_account_receive,
+ ug_data);
+
+ if (ug_data->signal_handler_network == NULL) {
+ debug_critical("Failed to e_dbus_signal_handler_add()");
+ return;
+ }
+ }
+}
+
+void _remove_dbus_receiver(EmailAccountUGD *ug_data)
+{
+ debug_log("");
+ if (ug_data == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ if (ug_data->signal_handler_storage != NULL) {
+ e_dbus_signal_handler_del(ug_data->dbus_conn, ug_data->signal_handler_storage);
+ ug_data->signal_handler_storage = NULL;
+ }
+
+ if (ug_data->signal_handler_network != NULL) {
+ e_dbus_signal_handler_del(ug_data->dbus_conn, ug_data->signal_handler_network);
+ ug_data->signal_handler_network = NULL;
+ }
+
+ if (e_dbus_release_name(ug_data->dbus_conn, "User.Email.StorageChange", NULL, NULL) == NULL) {
+ debug_critical("e_dbus_release_name to failed");
+ }
+
+ if (e_dbus_release_name(ug_data->dbus_conn, "User.Email.NetworkStatus", NULL, NULL) == NULL) {
+ debug_critical("e_dbus_release_name to failed");
+ }
+
+ if (ug_data->dbus_conn != NULL) {
+ /*e_dbus_connection_close(ugd->dbus_conn);*/
+ ug_data->dbus_conn = NULL;
+ }
+}
+
+static void _edbus_event_account_receive(void *local_data, DBusMessage *message)
+{
+ debug_enter();
+ if (get_app_terminated()) {
+ debug_log("App is in terminating");
+ return;
+ }
+
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)local_data;
+ DBusError error;
+
+ if (ug_data == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ debug_log("ug_mode[%d], folder_mode[%d]", ug_data->ug_mode, ug_data->folder_mode);
+ if (ug_data->ug_mode == ACC_UG_ACCOUNT_VIEW) {
+ debug_log("Account view.");
+ return;
+ }
+
+ if (dbus_message_is_signal(message, "User.Email.StorageChange", "email")) {
+ debug_log("User.Email.StorageChange");
+
+ int subtype = 0;
+ int data1 = 0;
+ int data2 = 0;
+ char *data3 = NULL;
+ int data4 = 0;
+
+ dbus_error_init(&error);
+
+ if (dbus_message_get_args(message, &error, DBUS_TYPE_INT32, &subtype,
+ DBUS_TYPE_INT32, &data1, DBUS_TYPE_INT32, &data2,
+ DBUS_TYPE_STRING, &data3, DBUS_TYPE_INT32, &data4, DBUS_TYPE_INVALID)) {
+ debug_log("STORE_ENABLE: subtype: %d, data1: %d, data2: %d, data3: %s, data4: %d", subtype, data1, data2, data3, data4);
+
+ int account_id = 0;
+ char* mailbox_name = NULL;
+
+ switch (subtype) {
+
+ case NOTI_MAILBOX_ADD:
+ account_id = data1;
+ mailbox_name = data3;
+ debug_log("NOTI_MAILBOX_ADD, account_id [%d]", account_id);
+
+ if(EMAIL_SERVER_TYPE_ACTIVE_SYNC != GET_ACCOUNT_SERVER_TYPE(account_id))
+ {
+ debug_log("Native account folder added: emf_handle[%d]", ug_data->emf_handle);
+ if(ug_data->emf_handle != EMAIL_HANDLE_INVALID)
+ {
+ _popup_success_cb(ug_data, NULL, NULL);
+ }
+ }
+ else
+ {
+ debug_log("EAS account folder added.");
+ }
+ break;
+
+ case NOTI_MAILBOX_DELETE:
+ account_id = data1;
+ mailbox_name = data3;
+ debug_log("NOTI_MAILBOX_DELETE");
+
+ if(EMAIL_SERVER_TYPE_ACTIVE_SYNC != GET_ACCOUNT_SERVER_TYPE(account_id))
+ {
+ debug_log("Native account folder deleted: emf_handle[%d]", ug_data->emf_handle);
+ if(ug_data->emf_handle != EMAIL_HANDLE_INVALID)
+ {
+ _popup_success_cb(ug_data, NULL, NULL);
+ }
+ }
+ else
+ {
+ debug_log("EAS account folder deleted");
+ }
+ break;
+
+ case NOTI_MAILBOX_UPDATE:
+ account_id = data1;
+ mailbox_name = data3;
+ debug_log("NOTI_MAILBOX_UPDATE");
+
+ if(EMAIL_SERVER_TYPE_ACTIVE_SYNC != GET_ACCOUNT_SERVER_TYPE(account_id))
+ {
+ debug_log("Native account folder moved: emf_handle[%d]", ug_data->emf_handle);
+ if(ug_data->emf_handle != EMAIL_HANDLE_INVALID)
+ {
+ _popup_success_cb(ug_data, NULL, NULL);
+ }
+ }
+ else
+ {
+ debug_log("EAS account folder moved");
+ }
+ break;
+
+ default:
+ debug_log("Uninterested notification");
+ break;
+ }
+ }
+ else {
+ debug_critical("receive data error: %s", error.message);
+ dbus_error_free(&error);
+ }
+ }else if (dbus_message_is_signal(message, "User.Email.NetworkStatus", "email")) {
+ debug_log("User.Email.NetworkStatus");
+
+ int subtype = 0;
+ int data1 = 0;
+ char *data2 = NULL;
+ int data3 = 0;
+ int data4 = 0;
+
+ dbus_error_init(&error);
+
+ if (dbus_message_get_args(message, &error, DBUS_TYPE_INT32, &subtype,
+ DBUS_TYPE_INT32, &data1, DBUS_TYPE_STRING, &data2,
+ DBUS_TYPE_INT32, &data3, DBUS_TYPE_INT32, &data4, DBUS_TYPE_INVALID)) {
+ debug_log("subtype: %d, data1: %d, data2: %s, data3: %d, data4: %d", subtype, data1, data2, data3, data4);
+
+ int account_id = 0;
+ int email_handle = 0;
+ int err_msg = 0;
+
+ switch (subtype) {
+ // EAS
+ account_id = data1;
+ email_handle = data3;
+ err_msg = data4;
+
+ case NOTI_ADD_MAILBOX_START:
+ debug_log("NOTI_ADD_MAILBOX_START");
+ break;
+
+ case NOTI_ADD_MAILBOX_CANCEL:
+ debug_log("NOTI_ADD_MAILBOX_CANCEL");
+ break;
+
+ case NOTI_ADD_MAILBOX_FINISH:
+ debug_log("NOTI_ADD_MAILBOX_FINISH");
+ _popup_success_cb(ug_data, NULL, NULL);
+ break;
+
+ case NOTI_ADD_MAILBOX_FAIL:
+ debug_log("NOTI_ADD_MAILBOX_FAIL");
+ _popup_fail_cb(ug_data, NULL, NULL);
+ break;
+
+ case NOTI_DELETE_MAILBOX_START:
+ debug_log("NOTI_DELETE_MAILBOX_START");
+ break;
+
+ case NOTI_DELETE_MAILBOX_CANCEL:
+ debug_log("NOTI_DELETE_MAILBOX_CANCEL");
+ break;
+
+ case NOTI_DELETE_MAILBOX_FINISH:
+ debug_log("NOTI_DELETE_MAILBOX_FINISH");
+ _popup_success_cb(ug_data, NULL, NULL);
+ break;
+
+ case NOTI_DELETE_MAILBOX_FAIL:
+ debug_log("NOTI_DELETE_MAILBOX_FAIL");
+ _popup_fail_cb(ug_data, NULL, NULL);
+ break;
+
+ case NOTI_RENAME_MAILBOX_START:
+ debug_log("NOTI_RENAME_MAILBOX_START");
+ break;
+
+ case NOTI_RENAME_MAILBOX_FINISH:
+ debug_log("NOTI_RENAME_MAILBOX_FINISH");
+ _popup_success_cb(ug_data, NULL, NULL);
+ break;
+
+ case NOTI_RENAME_MAILBOX_FAIL:
+ debug_log("NOTI_RENAME_MAILBOX_FAIL");
+ _popup_fail_cb(ug_data, NULL, NULL);
+ break;
+
+ case NOTI_RENAME_MAILBOX_CANCEL:
+ debug_log("NOTI_RENAME_MAILBOX_CANCEL");
+ break;
+
+ default:
+ debug_warning("unknown type");
+ break;
+ }
+ }
+ else {
+ debug_critical("receive data error: %s", error.message);
+ dbus_error_free(&error);
+ }
+ }
+ else {
+ debug_warning("We receive dbus message, but we can't do anything");
+ }
+ debug_leave();
+}
+
+static void _stop_emf_job(EmailAccountUGD *ug_data, unsigned handle)
+{
+ debug_log("");
+ if (!ug_data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ gint account_id = ug_data->account_id;
+
+ if (handle > 0) {
+ debug_log("stop job - handle (%d)", handle);
+ email_engine_stop_working(account_id, handle);
+ } else {
+ debug_warning("handle1 is %d. so we can't call email_engine_stop_working()", handle);
+ }
+
+ ug_data->emf_handle = EMAIL_HANDLE_INVALID;
+}
+
+static void _entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ if (elm_object_focus_get(data)) {
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+ else
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+ }
+}
+
+static void _entry_focused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+ elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+}
+
+static void _entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+}
+
+static void _eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ debug_log("");
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ elm_entry_entry_set(data, "");
+}
+
+// Codes for removing elm_editfield : START
+/*
+static void _changed_cb(void *data, Evas_Object *obj, void *event_info) // This callback is for showing(hiding) X marked button.
+{
+ debug_log("");
+ if (elm_object_focus_get(data)) {
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+ else
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+ }
+}
+
+static void _focused_cb(void *data, Evas_Object *obj, void *event_info) // Focused callback will show X marked button and hide guidetext.
+{
+ debug_log("");
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+ elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+}
+
+static void _unfocused_cb(void *data, Evas_Object *obj, void *event_info) // Unfocused callback will show guidetext and hide X marked button.
+{
+ debug_log("");
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+}
+
+static Evas_Object *_singleline_editfield_add(Evas_Object *parent) // For single lined editfield without top title.
+{
+ debug_log("");
+ Evas_Object *layout, *entry;
+
+ layout = elm_layout_add(parent);
+ elm_layout_theme_set(layout, "layout", "editfield", "default"); // Default editfield layout style without top title.
+ evas_object_show(layout);
+
+ entry = elm_entry_add(parent);
+ elm_entry_scrollable_set(entry, EINA_TRUE); // Make entry as scrollable single line.
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ evas_object_smart_callback_add(entry, "changed", _changed_cb, layout);
+ evas_object_smart_callback_add(entry, "preedit,changed", _changed_cb, layout);
+ evas_object_smart_callback_add(entry, "focused", _focused_cb, layout);
+ evas_object_smart_callback_add(entry, "unfocused", _unfocused_cb, layout);
+ evas_object_show(entry);
+
+ elm_object_part_content_set(layout, "elm.swallow.content", entry);
+ elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", _eraser_clicked_cb, entry);
+
+ return layout;
+}
+// Codes for removing elm_editfield : END
+*/
+/**************************** Rename && Entry Handling Routines ******************************/
+// Unfocus callback for edit field.
+// This is called when edit field lost its focus.
+/*static void _maxlength_reached_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ debug_log("Maxlength reached!");
+}
+
+static void _rename_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ //Item_Data *item_data = (Item_Data *)data;
+ GNode *node = (GNode *)data;
+ email_mailbox_t *mlist = (email_mailbox_t *)(node->data);
+
+ Evas_Object *entry = obj;
+
+ strcpy(mlist->alias, elm_entry_entry_get(entry));
+}
+
+// Unset rename mode if any item is in rename mode.
+static void _unset_rename(EmailAccountUGD *ug_data)
+{
+ debug_log("");
+
+ if ((ug_data) && (ug_data->renamed_it) && (elm_genlist_item_flip_get(ug_data->renamed_it)))
+ elm_genlist_item_flip_set(ug_data->renamed_it, EINA_FALSE);
+}
+
+static void _rename_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ //_unset_rename(data);
+}
+
+static void _rename_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ //View_Data *vd = (View_Data *)evas_object_data_get(elm_object_item_widget_get(data), "view_data");
+ Item_Data *tree_item_data = (Item_Data *)data;
+
+ debug_log("it: %p, alist: %p, item_data: %p", tree_item_data->it, tree_item_data->alist, tree_item_data);
+
+ if ((tree_item_data) && (tree_item_data->ug_data)) {
+ tree_item_data->ug_data->renamed_it = tree_item_data->it;
+ elm_genlist_item_flip_set(tree_item_data->it, EINA_TRUE);
+
+ elm_genlist_item_fields_update(tree_item_data->it, "elm.flip.content", ELM_GENLIST_ITEM_FIELD_CONTENT);
+ }
+}
+*/
+/* EOF */
--- /dev/null
+/*
+ * 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 UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+#include <Ecore_X.h>
+#include "email-account.h"
+#include "email-account-folder.h"
+
+#include <unicode/uloc.h>
+#include <unicode/ucal.h>
+#include <unicode/udat.h>
+#include <unicode/udatpg.h>
+#include <unicode/ustring.h>
+
+/* appcore */
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv);
+static void on_start(ui_gadget_h ug, service_h service, void *priv);
+static void on_pause(ui_gadget_h ug, service_h service, void *priv);
+static void on_resume(ui_gadget_h ug, service_h service, void *priv);
+static void on_destroy(ui_gadget_h ug, service_h services, void *priv);
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv);
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv);
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv);
+
+static void _win_profile_changed_cb(void *data, Evas_Object *obj, void *event);
+
+/* view logic */
+static Evas_Object *create_frameview(EmailAccountUGD *ugd);
+
+static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void result_cb(ui_gadget_h ug, service_h service, void *priv);
+static void destroy_cb(ui_gadget_h ug, void *priv);
+static ui_gadget_h create_ug(char *ug_name, service_h service, void *data);
+
+/* genlist cb */
+static void _gl_del(void *data, Evas_Object *obj);
+static char *_gl_label_get_for_4text(void *data, Evas_Object *obj, const char *part);
+static char *_gl_label_get_for_all_emails(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_gl_icon_get_for_all_emails(void *data, Evas_Object *obj, const char *part);
+static char *_gl_label_get_for_add_account(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_gl_icon_get_for_add_account(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_gl_icon_get(void *data, Evas_Object *obj, const char *part);
+static Eina_Bool _gl_state_get(void *data, Evas_Object *obj, const char *part);
+static void _open_all_emails(void *data, Evas_Object *obj, void *event_info);
+
+static void _get_icu_formatter(void);
+static void _close_icu_formatter(void);
+static void _get_date_text_with_formatter(time_t time, char *formatted_str);
+
+/* other cb */
+static void _add_account_cb(void *data, Evas_Object *obj, void *event_info);
+
+//static int _emf_account_init(EmailAccountUGD *ug_data);
+//static void _gl_con(void *data, Evas_Object *obj, void *event_info);
+//static void _gl_exp_req(void *data, Evas_Object *obj, void *event_info);
+//static void _gl_con_req(void *data, Evas_Object *obj, void *event_info);
+//static void _gl_exp(void *data, Evas_Object *obj, void *event_info);
+//static char *_gl_label_get(void *data, Evas_Object *obj, const char *part);
+//static char *_gl_group_text_get(void *data, Evas_Object *obj, const char *part);
+//static void _launch_composer_cb(void *data, Evas_Object *obj, void *event_info);
+//static Elm_Genlist_Item_Class itc_group;
+
+EmailAccountUGD *g_account_ugd;
+
+static Elm_Genlist_Item_Class itc_item;
+static Elm_Genlist_Item_Class itc_item_for_add_accounts;
+static Elm_Genlist_Item_Class itc_item_for_all_emails;
+
+bool g_isRotate = false;
+
+static UDateTimePatternGenerator *icu_pg = NULL;
+static UDateFormat *icu_formatter = NULL;
+static enum appcore_time_format icu_timeformat;
+
+/*static Elm_Object_Item *current_it = NULL;*/
+
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data;
+ char *argv[2] = { 0, };
+
+ if (!ug || !priv)
+ return NULL;
+
+ ug_data = priv;
+ ug_data->ug = ug;
+ g_account_ugd = ug_data;
+
+ ug_data->win = ug_get_window();
+ if (!(ug_data->win))
+ return NULL;
+
+ email_engine_initialize();
+ /*ret = _emf_account_init(ug_data);*/
+
+ int w, h;
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+ debug_log("WINDOW W[%d] H[%d]", w, h);
+ ug_data->main_w = w;
+ ug_data->main_h = h;
+
+ // parsing bundle data
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, &(argv[0]));
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, &(argv[1]));
+
+ if (argv[0])
+ {
+ ug_data->account_id = atoi(argv[0]);
+ g_free(argv[0]);
+ }
+ if (argv[1])
+ {
+ ug_data->folder_id = atoi(argv[1]);
+ g_free(argv[1]);
+ }
+ debug_log("account_id:%d, folder_id: %d", ug_data->account_id, ug_data->folder_id);
+
+ _get_icu_formatter();
+
+ if (mode == UG_MODE_FULLVIEW) // folder view
+ {
+ /* DBUS */
+ _dbus_receiver_setup(ug_data);
+
+ ug_data->ug_mode = ACC_UG_FOLDER_VIEW;
+ ug_data->folder_mode = ACC_FOLDER_NONE;
+ ug_data->base = create_fullview(ug_data);
+ }
+ else // account view
+ {
+ ug_data->ug_mode = ACC_UG_ACCOUNT_VIEW;
+ ug_data->folder_mode = ACC_FOLDER_NONE;
+ ug_data->base = create_frameview(ug_data);
+ }
+
+ evas_object_smart_callback_add(ug_data->win, "profile,changed", _win_profile_changed_cb, ug_data);
+
+ return ug_data->base;
+}
+
+static void on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+}
+
+static void on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+}
+
+static void on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data;
+
+ if (!ug || !priv)
+ return;
+
+ ug_data = priv;
+
+ /*_refresh_account_list(ug_data);*/
+}
+
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data;
+
+ if (!ug || !priv)
+ return;
+
+ ug_data = priv;
+
+ if (ug_data->ug_composer) {
+ ug_destroy(ug_data->ug_composer);
+ }
+
+ if (ug_data->ug_setting) {
+ ug_destroy(ug_data->ug_setting);
+ }
+
+ if (ug_data->ug_mode == ACC_UG_FOLDER_VIEW) // folder view
+ {
+ /* DBUS */
+ _remove_dbus_receiver(ug_data);
+
+ int ret = e_dbus_shutdown();
+ debug_log("ret: %d", ret);
+ }
+
+ _destroy_view(ug_data);
+
+ email_engine_finalize();
+
+ _close_icu_formatter();
+
+ if (ug_data->ly) {
+ evas_object_del(ug_data->ly);
+ ug_data->ly = NULL;
+ ug_data->base = NULL;
+ }
+}
+
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv)
+{
+ debug_log("");
+}
+
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv)
+{
+ debug_log("");
+
+ switch (event) {
+ case UG_EVENT_LOW_MEMORY:
+ break;
+ case UG_EVENT_LOW_BATTERY:
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ /*bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);*/
+ break;
+ case UG_EVENT_ROTATE_PORTRAIT:
+ debug_log("UG_EVENT_ROTATE_PORTRAIT");
+ g_isRotate = false;
+ break;
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ debug_log("UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN");
+ g_isRotate = false;
+ break;
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ debug_log("UG_EVENT_ROTATE_LANDSCAPE");
+ g_isRotate = true;
+ break;
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ debug_log("UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN");
+ g_isRotate = true;
+ break;
+ case UG_EVENT_REGION_CHANGE:
+ break;
+ default:
+ break;
+ }
+}
+
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv)
+{
+ debug_log("");
+
+ if (!ug)
+ return;
+
+ switch (event) {
+ case UG_KEY_EVENT_END:
+ ug_destroy_me(ug);
+ break;
+
+ default:
+ break;
+ }
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data;
+
+ if (!ops)
+ return -1;
+
+ ug_data = calloc(1, sizeof(EmailAccountUGD));
+ if (!ug_data)
+ return -1;
+
+ ops->create = on_create;
+ ops->start = on_start;
+ ops->pause = on_pause;
+ ops->resume = on_resume;
+ ops->destroy = on_destroy;
+ ops->message = on_message;
+ ops->event = on_event;
+ ops->key_event = on_key_event;
+ ops->priv = ug_data;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ return 0;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data;
+
+ if (!ops)
+ return;
+
+ ug_data = ops->priv;
+ if (ug_data)
+ free(ug_data);
+}
+
+static Evas_Object *create_frameview(EmailAccountUGD * ug_data)
+{
+ debug_log("");
+
+ ug_data->evas = evas_object_evas_get(ug_data->win);
+
+ ug_data->bg = elm_bg_add(ug_data->win);
+ evas_object_size_hint_weight_set(ug_data->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ug_data->win, ug_data->bg);
+ evas_object_show(ug_data->bg);
+
+ ug_data->ly = elm_layout_add(ug_data->win);
+ if (ug_data->ly == NULL) {
+ debug_log("ug_data->ly == NULL");
+ return NULL;
+ }
+ elm_layout_theme_set(ug_data->ly, "layout", "application", "noindicator");
+ //evas_object_size_hint_weight_set(ug_data->ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ //elm_win_resize_object_add(ug_data->win, ug_data->ly);
+ evas_object_show(ug_data->ly);
+
+ elm_object_part_content_set(ug_data->ly, "elm.swallow.bg", ug_data->bg);
+
+ /* contents */
+ _create_account_view(ug_data);
+ elm_object_part_content_set(ug_data->ly, "elm.swallow.content", ug_data->gl);
+
+ return ug_data->ly;
+}
+
+static void _win_profile_changed_cb(void *data, Evas_Object *obj, void *event)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+
+ const char *profile = elm_config_profile_get();
+ if (!g_strcmp0(profile, "desktop"))
+ elm_layout_theme_set(ug_data->ly, "layout", "application", "noindicator");
+ else
+ elm_layout_theme_set(ug_data->ly, "layout", "application", "default");
+
+ evas_object_size_hint_weight_set(ug_data->ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ug_data->win, ug_data->ly);
+ evas_object_show(ug_data->ly);
+}
+
+void _create_account_view(EmailAccountUGD *ug_data)
+{
+ debug_log("");
+ Evas_Object *gl;
+
+ _destroy_view(ug_data);
+
+ /* accounts list */
+ if (ug_data->gl) {
+ gl = ug_data->gl;
+ } else {
+ gl = elm_genlist_add(ug_data->ly);
+ elm_genlist_tree_effect_enabled_set(gl, 1);
+ elm_genlist_block_count_set(gl, 36);
+ ug_data->gl = gl;
+ }
+
+ email_account_t *account_list = NULL;
+ int account_count = 0;
+ int err = 0;
+ int i = 0;
+ int j = 0;
+
+ ug_data->all_unread_count = 0;
+ ug_data->all_read_count = 0;
+
+ err = email_engine_get_account_list(&account_count, &account_list);
+
+ if (err == 0) {
+ debug_critical("fail to get account list - err(%d)", err);
+ if (ug_data->gl) {
+ evas_object_del(ug_data->gl);
+ ug_data->gl = NULL;
+ }
+ ug_data->gl = _add_emtpy_list(ug_data);
+ return;
+ }
+
+ if (account_list == NULL || account_count == 0) {
+ debug_critical("account info is @niL");
+ if (ug_data->gl) {
+ evas_object_del(ug_data->gl);
+ ug_data->gl = NULL;
+ }
+ ug_data->gl = _add_emtpy_list(ug_data);
+ return;
+ }
+ ug_data->n_account_list = account_count;
+
+ /* If user make 2 more accounts, we will show `All emails` */
+ if (account_count > 1) {
+ itc_item_for_all_emails.item_style = "2text.1icon";
+ itc_item_for_all_emails.func.text_get = _gl_label_get_for_all_emails;
+ itc_item_for_all_emails.func.content_get = _gl_icon_get_for_all_emails;
+ itc_item_for_all_emails.func.state_get = _gl_state_get;
+ itc_item_for_all_emails.func.del = _gl_del;
+
+ elm_genlist_item_append(gl, &itc_item_for_all_emails, ug_data, NULL,
+ ELM_GENLIST_ITEM_NONE, _open_all_emails, NULL);
+
+ /*itc_group.item_style = "grouptitle";
+ itc_group.func.text_get = _gl_group_text_get;
+ itc_group.func.content_get = NULL;
+ itc_group.func.state_get = NULL;
+ itc_group.func.del = NULL;
+
+ Elm_Object_Item *git = elm_genlist_item_append(gl, &itc_group, NULL,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);*/
+ }
+
+ itc_item.item_style = "4text.1icon.3";
+ itc_item.func.text_get = _gl_label_get_for_4text;
+ itc_item.func.content_get = _gl_icon_get;
+ itc_item.func.state_get = _gl_state_get;
+ itc_item.func.del = _gl_del;
+
+ email_account_list *alist = (email_account_list *)
+ calloc(account_count, sizeof(email_account_list));
+
+ for (i = 0; i < account_count; i++) {
+ alist[i].ug_data = ug_data;
+ alist[i].account_info = &account_list[i];
+
+ int err = 0;
+ int mailbox_list_count = 0;
+ email_mailbox_t *mailbox_list = NULL;
+
+ err = email_get_mailbox_list_ex(account_list[i].account_id, -1, 1,
+ &mailbox_list, &mailbox_list_count);
+ if (err != EMAIL_ERROR_NONE) {
+ debug_critical("email_get_mailbox_list return error");
+ continue;
+ }
+
+ alist[i].mailbox_list = mailbox_list;
+ alist[i].n_mailbox_list = mailbox_list_count;
+
+ if (mailbox_list_count > 0) {
+ for (j = 0; j < mailbox_list_count; j++) {
+ alist[i].read_count += mailbox_list[j].total_mail_count_on_local;
+ alist[i].unread_count += mailbox_list[j].unread_count;
+ }
+
+ ug_data->all_read_count += alist[i].read_count;
+ ug_data->all_unread_count += alist[i].unread_count;
+ }
+
+// _make_folder_tree(alist + i, ug_data);
+ }
+
+ ug_data->alist = alist;
+
+ for (i = 0; i < account_count; i++) {
+ elm_genlist_item_append(gl, &itc_item, &alist[i], NULL,
+ ELM_GENLIST_ITEM_NONE, _open_mail_list, &alist[i]);
+ }
+/*
+ evas_object_smart_callback_add(gl, "expand,request", _gl_exp_req, gl);
+ evas_object_smart_callback_add(gl, "contract,request", _gl_con_req, gl);
+ evas_object_smart_callback_add(gl, "expanded", _gl_exp, ug_data);
+ evas_object_smart_callback_add(gl, "contracted", _gl_con, gl);
+*/
+
+ /* If user make 2 more accounts, we will show `Add account` */
+ itc_item_for_add_accounts.item_style = "2text.1icon";
+ itc_item_for_add_accounts.func.text_get = _gl_label_get_for_add_account;
+ itc_item_for_add_accounts.func.content_get = _gl_icon_get_for_add_account;
+ itc_item_for_add_accounts.func.state_get = _gl_state_get;
+ itc_item_for_add_accounts.func.del = _gl_del;
+
+ elm_genlist_item_append(gl, &itc_item_for_add_accounts, ug_data, NULL,
+ ELM_GENLIST_ITEM_NONE, _add_account_cb, ug_data);
+
+ return;
+}
+
+void _destroy_view(EmailAccountUGD *ug_data)
+{
+ debug_log("");
+
+ RETURN_IF_FAIL(ug_data != NULL);
+
+ int i = 0;
+ int err = 0;
+ email_account_list *alist = ug_data->alist;
+
+ if (ug_data->conformant) {
+ evas_object_del(ug_data->conformant);
+ ug_data->conformant = NULL;
+ }
+ if(ug_data->popup) {
+ evas_object_del(ug_data->popup);
+ ug_data->popup = NULL;
+ }
+
+ if (alist) {
+
+ if(ug_data->ug_mode == ACC_UG_ACCOUNT_VIEW
+ || (ug_data->ug_mode == ACC_UG_FOLDER_VIEW && ug_data->account_id == 0))
+ {
+ debug_log("account view: count_of_account_list: %d", ug_data->n_account_list);
+ err = email_engine_free_account_list(&(alist[0].account_info), ug_data->n_account_list);
+ if (err == 0) {
+ debug_critical("fail to free account - err(%d)", err);
+ }
+
+ for (i = 0; i < ug_data->n_account_list; i++) {
+ err = email_free_mailbox(&(alist[i].mailbox_list), alist[i].n_mailbox_list);
+ if (err != EMAIL_ERROR_NONE) {
+ debug_critical("fail to free mailbox list - err(%d)", err);
+ }
+
+ alist[i].mailbox_list = NULL;
+ alist[i].n_mailbox_list = 0;
+ alist[i].account_info = NULL;
+
+ g_node_destroy(alist[i].folder_root);
+ alist[i].folder_root = NULL;
+ }
+
+ g_free(alist);
+ alist = NULL;
+ ug_data->alist = NULL;
+ }
+ else // One account folder view.
+ {
+ debug_log("folder view: count_of_account_list: %d, account_id: %d", ug_data->n_account_list, ug_data->account_id);
+ if(ug_data->account_id > 0)
+ {
+ err = email_engine_free_account_list(&(alist->account_info), 1);
+ if (err == 0) {
+ debug_critical("fail to free account - err(%d)", err);
+ }
+
+ err = email_free_mailbox(&(alist->mailbox_list), alist->n_mailbox_list);
+ if (err != EMAIL_ERROR_NONE) {
+ debug_critical("fail to free mailbox list - err(%d)", err);
+ }
+
+ alist->mailbox_list = NULL;
+ alist->n_mailbox_list = 0;
+ alist->account_info = NULL;
+
+ g_node_destroy(alist->folder_root);
+ alist->folder_root = NULL;
+
+ debug_log("folder view");
+
+ g_free(alist);
+ alist = NULL;
+ ug_data->alist = NULL;
+ }
+ }
+ debug_log("folder view");
+ }
+}
+
+static char *_gl_label_get_for_4text(void *data, Evas_Object *obj, const char *part)
+{
+ email_account_list *alist = (email_account_list *) data;
+ char tmp[MAX_STR_LEN] = { 0, }; /*account_name has no limitation on size*/
+
+ if (alist == NULL) {
+ debug_log("alist is NULL !!");
+ goto FINISH;
+ }
+
+ if (!strcmp(part, "elm.text.1")) {
+ if (alist->account_info->account_name != NULL) {
+ debug_log("account_name: %s", alist->account_info->account_name);
+ snprintf(tmp, sizeof(tmp), "%s", alist->account_info->account_name);
+ return g_strdup(tmp);
+ }
+ } else if (!strcmp(part, "elm.text.2")) {
+ char buf[MAX_STR_LEN] = { 0, };
+ email_mailbox_t *mailbox = NULL;
+ email_get_mailbox_by_mailbox_type(alist->account_info->account_id, EMAIL_MAILBOX_TYPE_INBOX, &mailbox);
+ if (mailbox) {
+ debug_log("alias: %s, last_sync_time: %d", mailbox->alias, mailbox->last_sync_time);
+ time_t req_time = time(NULL); //mailbox->last_sync_time;
+ _get_date_text_with_formatter(req_time, buf);
+ }
+ return g_strdup(buf);
+ } else if (!strcmp(part, "elm.text.3")) {
+ if (alist->account_info->user_email_address != NULL) {
+ debug_log("user_email_addr: %s", alist->account_info->user_email_address);
+ return g_strdup(alist->account_info->user_email_address);
+ }
+ } else if (!strcmp(part, "elm.text.4")) {
+ int total_cnt = alist->unread_count;
+ if (total_cnt >= 0) {
+ debug_log("total_cnt: %d, unread_count: %d, read_count: %d", total_cnt, alist->unread_count, alist->read_count);
+ snprintf(tmp, sizeof(tmp), "%d", total_cnt);
+ return g_strdup(tmp);
+ }
+ } else {
+ debug_log("part is invalid");
+ }
+
+FINISH:
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static char *_gl_label_get_for_all_emails(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+ char tmp[MAX_STR_LEN] = { 0, };
+
+ if (!strcmp(part, "elm.text.1")) {
+ snprintf(tmp, sizeof(tmp), "%s", _("IDS_EMAIL_BODY_ALL_EMAILS"));
+ return g_strdup(tmp);
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(tmp, sizeof(tmp), "[%d/%d]", ug_data->all_unread_count, ug_data->all_read_count);
+ return g_strdup(tmp);
+ } else {
+ debug_log("part is invalid");
+ }
+
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static Evas_Object *_gl_icon_get_for_all_emails(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return NULL;
+ }
+// EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+
+ if (!strcmp(part, "elm.icon"))
+ {
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, ACCOUNT_ICON_ALLACCOUNT, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ return icon;
+ }
+ else
+ {
+ debug_log("part is invalid");
+ }
+
+ return NULL;
+}
+
+static char *_gl_label_get_for_add_account(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+// EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+ char tmp[MAX_STR_LEN] = { 0, };
+
+ if (!strcmp(part, "elm.text.1")) {
+ snprintf(tmp, sizeof(tmp), "%s", _("IDS_EMAIL_POP_ADD_ACCOUNTS"));
+ return g_strdup(tmp);
+ }else if (!strcmp(part, "elm.text.2")) {
+ memset(tmp, 0, sizeof(char) * MAX_STR_LEN);
+ return g_strdup(tmp);
+ } else {
+ debug_log("part is invalid");
+ }
+
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+
+static Evas_Object *_gl_icon_get_for_add_account(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return NULL;
+ }
+// EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+
+ if (!strcmp(part, "elm.icon"))
+ {
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, ACCOUNT_ICON_ADDACCOUNT, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ return icon;
+ }
+ else
+ {
+ debug_log("part is invalid");
+ }
+
+ return NULL;
+}
+
+static Evas_Object *_gl_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return NULL;
+ }
+
+ email_account_list *alist = (email_account_list *) data;
+#if 0 //check box
+ Evas_Object *check= NULL;
+
+ if (elm_genlist_decorate_mode_get(obj)) {
+ if (!strcmp(part, "elm.edit.icon.1")) {
+ check = elm_check_add(obj);
+ //elm_check_state_pointer_set(check, &alist->checked);
+ evas_object_smart_callback_add(check, "changed", _edit_item_check_changed_cb, data);
+ return check;
+ }
+ }
+#endif
+
+ if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1") )
+ {
+ Evas_Object *icon = elm_icon_add(obj);
+
+ // setting/include/email-setting.h
+ typedef enum {
+ ACTIVESYNC = 1,
+ HOTMAIL,
+ GMAIL,
+ YAHOOMAIL,
+ AOL,
+ OTHERS
+ } AccountInfo;
+
+ account_user_data_t *user_data = (account_user_data_t *)alist->account_info->user_data;
+ debug_log("is_preset_account:%d", user_data->is_preset_account);
+
+ switch (user_data->is_preset_account) {
+ case GMAIL:
+ elm_icon_file_set(icon, ACCOUNT_ICON_GMAIL, NULL);
+ break;
+ case HOTMAIL:
+ elm_icon_file_set(icon, ACCOUNT_ICON_HOTMAIL, NULL);
+ break;
+ case YAHOOMAIL:
+ elm_icon_file_set(icon, ACCOUNT_ICON_YAHOO, NULL);
+ break;
+ case AOL:
+ elm_icon_file_set(icon, ACCOUNT_ICON_AOL, NULL);
+ break;
+ case ACTIVESYNC:
+ elm_icon_file_set(icon, ACCOUNT_ICON_EXCHANGE, NULL);
+ break;
+ case OTHERS:
+ default:
+ elm_icon_file_set(icon, ACCOUNT_ICON_OTHERS, NULL);
+ break;
+ }
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+ return icon;
+ }
+ else if (!strcmp(part, "elm.swallow.colorbar"))
+ {
+ account_user_data_t *user_data = (account_user_data_t *)alist->account_info->user_data;
+ unsigned int val = user_data->index_color;
+ int r = (val & 0xff000000) >> 24;
+ int g = (val & 0x00ff0000) >> 16;
+ int b = (val & 0x0000ff00) >> 8;
+ int a = val & 0x000000ff;
+
+ Evas_Object *color_bar = evas_object_rectangle_add(evas_object_evas_get(obj));
+ evas_object_size_hint_fill_set(color_bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_color_set(color_bar, r, g, b, a);
+
+ return color_bar;
+ }
+ else
+ {
+ debug_log("part is invalid");
+ }
+
+ return NULL;
+}
+
+static void _gl_del(void *data, Evas_Object *obj)
+{
+ debug_log("");
+}
+
+static Eina_Bool _gl_state_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ return EINA_FALSE;
+}
+
+void _open_mail_list(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ email_account_list *alist = (email_account_list *)data;
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ elm_genlist_item_selected_set(item, 0);
+
+ Evas_Coord x, y = 0;
+ evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
+ debug_log("X = %d, Y = %d", x, y);
+
+/*
+ int main_w = alist->ug_data->main_w;
+ int main_h = alist->ug_data->main_h;
+ debug_log("g_isRotate = %d", g_isRotate);
+
+ if (g_isRotate == false) {
+ debug_log("Potrait Mode");
+ if (x > main_w-80 && x < main_w) {
+ return;
+ }
+ } else {
+ debug_log("Landscape Mode");
+ if (x > main_h-80 && x < main_h) {
+ return;
+ }
+ }
+*/
+ if (alist->ug_data->block_item_click)
+ return;
+
+ int account_id = alist->account_info->account_id;
+ debug_log("account_id: %d", account_id);
+
+ elm_genlist_item_update(item);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ char id[NUM_STR_LEN] = {0,};
+ snprintf(id, sizeof(id), "%d", account_id);
+
+ char is_null[NUM_STR_LEN] = {0,};
+ snprintf(is_null, sizeof(is_null), "%d", true);
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_IS_NULL, is_null);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_USER_EMAIL, alist->account_info->user_email_address);
+ ug_send_result(alist->ug_data->ug, service);
+
+ alist->ug_data->block_item_click = 1;
+
+ service_destroy(service);
+}
+
+static void _open_all_emails(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ email_mailbox_type_e mailbox_type = EMAIL_MAILBOX_TYPE_INBOX;
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ const void *item_data = elm_object_item_data_get((const Elm_Object_Item *)item);
+ RETURN_IF_FAIL(item_data != NULL);
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) item_data;
+
+ elm_genlist_item_selected_set(item, 0);
+
+ if (ug_data->block_item_click)
+ return;
+ elm_genlist_item_update(item);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ char id[NUM_STR_LEN] = {0,};
+ snprintf(id, sizeof(id), "%d", 0);
+
+ char is_null[NUM_STR_LEN] = {0,};
+ snprintf(is_null, sizeof(is_null), "%d", true);
+
+ char ch_boxtype[NUM_STR_LEN] = {0,};
+ snprintf(ch_boxtype, sizeof(ch_boxtype), "%d", mailbox_type);
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_IS_NULL, is_null);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX_TYPE, ch_boxtype);
+ ug_send_result(ug_data->ug, service);
+
+ ug_data->block_item_click = 1;
+
+ service_destroy(service);
+}
+
+static void _add_account_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+
+ elm_genlist_item_selected_set(item, 0);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIEW_TYPE, EMAIL_BUNDLE_VAL_VIEW_SELECT_ACCOUNT);
+ ug_data->ug_setting = create_ug(UG_NAME_EMAIL_SETTING, service, ug_data);
+ service_destroy(service);
+}
+
+static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+ debug_log("");
+ Evas_Object *base, *win;
+
+ if (!ug || !priv)
+ return;
+
+ base = ug_get_layout(ug);
+ if (!base)
+ return;
+
+ win = ug_get_window();
+
+ switch (mode) {
+ case UG_MODE_FULLVIEW:
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, base);
+ evas_object_show(base);
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void result_cb(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) priv;
+
+ if (ug == ug_data->ug_setting) {
+ ug_data->ug_setting = NULL;
+
+ char *val = NULL;
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_REFRESH_ACCOUNT, &val);
+ if (STR_VALID(val)) {
+ if (g_strcmp0(val, EMAIL_BUNDLE_KEY_REFRESH_ACCOUNT) == 0) {
+ ug_destroy(ug);
+ ug_destroy_me(ug_data->ug);
+ g_free(val);
+ return;
+ }
+ }
+ }
+
+FINISH:
+ ug_destroy(ug);
+}
+
+static void destroy_cb(ui_gadget_h ug, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ ug_destroy(ug);
+
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) priv;
+
+ if (ug == ug_data->ug_setting) {
+ ug_data->ug_setting = NULL;
+ } else if (ug == ug_data->ug_composer) {
+ ug_data->ug_composer = NULL;
+ }
+}
+
+static ui_gadget_h create_ug(char *ug_name, service_h service, void *data)
+{
+ debug_log("");
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0, };
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+
+ cbs.layout_cb = layout_cb;
+ cbs.result_cb = result_cb;
+ cbs.destroy_cb = destroy_cb;
+ cbs.priv = ug_data;
+
+ ug = ug_create(ug_data->ug, ug_name, UG_MODE_FULLVIEW, service, &cbs);
+
+ return ug;
+}
+
+Evas_Object *_add_emtpy_list(void *data)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *) data;
+
+ Evas_Object *list = elm_list_add(ug_data->win);
+ elm_list_mode_set(list, ELM_LIST_COMPRESS);
+
+ elm_list_item_append(list, dgettext("sys_string", "IDS_COM_POP_EMPTY"), NULL, NULL, NULL, ug_data);
+ elm_list_go(list);
+
+ return list;
+}
+
+static void _get_icu_formatter(void)
+{
+ debug_log("");
+ UErrorCode status = U_ZERO_ERROR;
+ char *icu_locale = NULL;
+
+ uloc_setDefault(getenv("LC_TIME"), &status);
+ if (U_FAILURE(status)) {
+ debug_critical("uloc_setDefault() failed: %s\n", u_errorName(status));
+ return;
+ }
+
+ icu_locale = (char *)uloc_getDefault();
+ debug_log("uloc_getDefault: %s", icu_locale);
+ appcore_get_timeformat(&icu_timeformat);
+
+ status = U_ZERO_ERROR;
+ icu_pg = udatpg_open(icu_locale, &status);
+ if (!icu_pg) {
+ debug_log("udatpg_open() failed: %s", u_errorName(status));
+ return;
+ }
+
+ char *skeleton = NULL;
+ if (icu_timeformat == APPCORE_TIME_FORMAT_12) {
+ skeleton = "EEEMMMddhmma";
+ } else {
+ skeleton = "EEEMMMddHmm";
+ }
+
+ UChar bestPattern[64] = { 0, };
+ UChar customSkeleton[64] = { 0, };
+ int32_t bestPatternCapacity;
+ int32_t bestPatternLength;
+ int skeletonLength = strlen(skeleton);
+
+ u_uastrncpy(customSkeleton, skeleton, skeletonLength);
+
+ status = U_ZERO_ERROR;
+ bestPatternCapacity = (int32_t) (sizeof(bestPattern) / sizeof(bestPattern[0]));
+ bestPatternLength = udatpg_getBestPattern(icu_pg, customSkeleton, u_strlen(customSkeleton), bestPattern, bestPatternCapacity, &status);
+
+ status = U_ZERO_ERROR;
+ icu_formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, icu_locale, NULL, -1, bestPattern, -1, &status);
+}
+
+static void _close_icu_formatter(void)
+{
+ debug_log("");
+
+ if (icu_pg) {
+ udatpg_close(icu_pg);
+ icu_pg = NULL;
+ }
+
+ if (icu_formatter) {
+ udat_close(icu_formatter);
+ icu_formatter = NULL;
+ }
+}
+
+static void _get_date_text_with_formatter(time_t time, char *formatted_str)
+{
+ debug_log("");
+ UErrorCode status = U_ZERO_ERROR;
+ UDate date = 0;
+ UChar formatted[64] = { 0, };
+ int32_t formattedCapacity;
+ int32_t formattedLength;
+
+ formattedCapacity = (int32_t) (sizeof(formatted) / sizeof(formatted[0]));
+ time_t msg_time = time;
+ date = (UDate)msg_time * 1000;
+
+ formattedLength = udat_format(icu_formatter, date, formatted, formattedCapacity, NULL, &status);
+ u_austrncpy(formatted_str, formatted, 127);
+ debug_log("time_t: %d", time);
+ debug_log("formatted time: %s", formatted_str);
+}
+
+#if 0
+static int _emf_account_init(EmailAccountUGD *ug_data)
+{
+ debug_log("");
+ int r;
+
+ /* Get Email Account List Info */
+ ug_data->account_list = NULL;
+ r = email_engine_get_account_list(&ug_data->account_count, &ug_data->account_list);
+ return r;
+}
+#endif
+#if 0
+static char *_gl_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ email_account_list *alist = (email_account_list *) data;
+ char tmp[MAX_STR_LEN] = { 0, }; /*account_name has no limitation on size*/
+
+ if (alist == NULL) {
+ debug_log("alist is NULL !!");
+ goto FINISH;
+ }
+
+ if (!strcmp(part, "elm.text.1")) {
+ if (alist->account_info->account_name != NULL) {
+ debug_log("account_name: %s", alist->account_info->account_name);
+ snprintf(tmp, sizeof(tmp), "%s [%d/%d]",
+ alist->account_info->account_name, alist->unread_count, alist->read_count);
+ return g_strdup(tmp);
+ }
+ } else if (!strcmp(part, "elm.text.2")) {
+ if (alist->account_info->user_email_address != NULL) {
+ debug_log("user_email_addr: %s", alist->account_info->user_email_address);
+ return g_strdup(alist->account_info->user_email_address);
+ }
+ } else {
+ debug_log("part is invalid");
+ }
+
+FINISH:
+ snprintf(tmp, sizeof(tmp), _("IDS_EMAIL_BODY_NO_TEXT"));
+ return g_strdup(tmp);
+}
+#endif
+
+/*static char *_gl_group_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ if (!strcmp(part, "elm.text")) {
+ return strdup(dgettext("sys_string", "IDS_COM_BODY_ACCOUNTS"));
+ }
+ return NULL;
+}*/
+
+#if 0
+static void _gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ Elm_Object_Item *it = event_info;
+
+ elm_genlist_item_selected_set(it, 0);
+ elm_genlist_item_subitems_clear(it);
+}
+
+static void _gl_exp_req(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_expanded_set(it, 1);
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ /*current_it = it;*/
+}
+
+static void _gl_con_req(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_expanded_set(it, 0);
+
+ /*current_it = it;*/
+}
+
+static void _gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ Elm_Object_Item *it = event_info;
+ /*elm_genlist_item_selected_set(it, 0);*/
+ Evas_Object *gl = elm_object_item_widget_get(it);
+
+ itc_subtree.item_style = "1text.1/expandable_n_depth";
+ itc_subtree.func.text_get = _gl_label_get_for_subitem;
+ itc_subtree.func.content_get = _gl_icon_get;
+ itc_subtree.func.state_get = _gl_state_get;
+ itc_subtree.func.del = _gl_del;
+// itc_subtree.decorate_all_item_style = "edit_default2";
+ itc_subtree.decorate_all_item_style = NULL;
+
+ itc_subtree2.item_style = "1text.2/expandable_n_depth";
+ itc_subtree2.func.text_get = _gl_label_get_for_subitem;
+ itc_subtree2.func.content_get = _gl_icon_get;
+ itc_subtree2.func.state_get = _gl_state_get;
+ itc_subtree2.func.del = _gl_del;
+// itc_subtree2.decorate_all_item_style = "edit_default2";
+ itc_subtree2.decorate_all_item_style = NULL;
+
+ int i = 0;
+ int depth = elm_genlist_item_expanded_depth_get(it);
+ Elm_Object_Item *sub_it = NULL;
+
+ debug_log("depth: %d", depth);
+
+ if (depth == 0) {
+ const void *item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (item_data == NULL) {
+ debug_log("item data is NULL");
+ return;
+ }
+ email_account_list *alist = (email_account_list *) item_data;
+
+ int n_children = g_node_n_children(alist->folder_root);
+ debug_log("n_children of root: %d", n_children);
+
+ for (i = 0; i < n_children; i++) {
+ GNode *child = g_node_nth_child(alist->folder_root, i);
+ if (g_node_n_children(child) > 0) {
+ sub_it = elm_genlist_item_append(gl, &itc_subtree, child, it,
+ ELM_GENLIST_ITEM_TREE, _gl_exp_sel, alist);
+ } else {
+ elm_genlist_item_append(gl, &itc_subtree2, child, it,
+ ELM_GENLIST_ITEM_NONE, _gl_sel, alist);
+ }
+ }
+ }
+ else if (depth > 0) {
+ const void *item_data = elm_object_item_data_get((const Elm_Object_Item *)it);
+ if (item_data == NULL) {
+ debug_log("item data is NULL");
+ return;
+ }
+ GNode *sub_root = (GNode *)item_data;
+
+ int n_children = g_node_n_children(sub_root);
+ debug_log("n_children of sub_root depth[%d]: %d", depth, n_children);
+
+ Elm_Object_Item *parent_it =it;
+ for (i = 0; i < depth; i++)
+ parent_it = elm_genlist_item_parent_get(parent_it);
+
+ const void *parent_item_data = elm_object_item_data_get((const Elm_Object_Item *)parent_it);
+ if (parent_item_data == NULL) {
+ debug_log("parent item data is NULL");
+ return;
+ }
+ email_account_list *alist = (email_account_list *) parent_item_data;
+
+ for (i = 0; i < n_children; i++) {
+ GNode *child = g_node_nth_child(sub_root, i);
+ if (g_node_n_children(child) > 0) {
+ sub_it = elm_genlist_item_append(gl, &itc_subtree, child, it,
+ ELM_GENLIST_ITEM_TREE, _gl_exp_sel, alist);
+ } else {
+ elm_genlist_item_append(gl, &itc_subtree2, child, it,
+ ELM_GENLIST_ITEM_NONE, _gl_sel, alist);
+ }
+ }
+ }
+}
+#endif
+/*static void _launch_composer_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailAccountUGD *ug_data = (EmailAccountUGD *)data;
+ int composer_type = RUN_COMPOSER_NEW;
+ int account_id = 0;
+ email_engine_get_default_account(&account_id);
+
+ debug_log("composer type: %d", composer_type);
+ debug_log("account id: %d", account_id);
+
+ if (account_id <= 0) {
+ return;
+ }
+
+ char type[14] = { 0, };
+ char id[14] = { 0, };
+ snprintf(type, sizeof(type), "%d", composer_type);
+ snprintf(id, sizeof(id), "%d", account_id);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, type);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, id);
+ ug_data->ug_composer = create_ug(UG_NAME_EMAIL_COMPOSER, service, ug_data);
+
+ service_destroy(service);
+}*/
+/* EOF */
--- /dev/null
+/*
+ * 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.
+ */
+
+// box list layout
+#define BOX_LIST_H 110
+
+collections {
+
+ group { name: "elm/genlist/item/dummy/default";
+ alias: "elm/genlist/item_odd/dummy/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "treesize" "20";
+ parts {
+ part { name: "rect";
+ type: RECT;
+ description {
+ min: 0 BOX_LIST_H;
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 (BOX_LIST_H-2);
+ }
+ }
+ part { name: "bg";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: 0 (BOX_LIST_H-2);
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ }
+ programs {
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ transition: LINEAR 0.5;
+ after: "go_passive";
+ }
+ program {
+ name: "go_passive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ transition: LINEAR 0.5;
+ }
+ }
+ }
+
+#if 0
+ group { name: "title";
+ images {
+ image: "00_winset_title_line.png" COMP;
+ image: "optionheader_arrow.png" COMP;
+ }
+
+ script {
+ public more_show = 0;
+ }
+
+ parts
+ {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 108;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 0 0 0 0;
+ align: 0.0 0.5;
+ }
+ }
+
+ part { name: "top_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 11;
+ fixed: 0 1;
+ visible: 0;
+ rel1 { to: "bg"; relative: 0 0; }
+ rel2 { to: "bg"; relative: 1 0; }
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "bottom_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 11;
+ fixed: 0 1;
+ visible: 0;
+ rel1 { to: "bg"; relative: 0 1; }
+ rel2 { to: "bg"; relative: 1 1; }
+ align: 0.0 1.0;
+ }
+ }
+
+ part { name: "left_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 5 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 { to: "bg"; relative: 0 0; }
+ rel2 { to: "bg"; relative: 0 1; }
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "right_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 5 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 { to: "bg"; relative: 1 0; }
+ rel2 { to: "bg"; relative: 1 1; }
+ align: 1.0 0.0;
+ }
+ }
+
+ part {
+ name: "title_area";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "left_padding";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: (440/720) 0.0;
+ to_x: "bg";
+ to_y: "bottom_padding";
+ }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "txt_title";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: (16/440) 0.0; to: "title_area";}
+ rel2 { relative: (424/440) (52/88); to: "title_area";}
+ color : 249 249 249 255;
+ text { font: "SLP:style=Medium";
+ size: 40;
+ min: 0 0;
+ max: 1 0;
+ align: 0.0 0.5;
+ text_class: "slp";
+ }
+ align: 0.0 0.0;
+ fixed: 1 1;
+ min: 0 48;
+ }
+ }
+
+ part { name: "sub_left_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 21 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "left_padding";
+ to_y: "txt_title";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "left_padding";
+ to_y: "bottom_padding";
+ }
+ align: 0.0 0.0;
+ }
+ }
+
+ part {
+ name: "sub_left_icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 32 32;
+ max: 32 32;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "sub_left_padding";
+ to_y: "txt_title";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "sub_left_padding";
+ to_y: "bottom_padding";
+ }
+ align: 0.0 0.5;
+ }
+ }
+
+ part { name: "sub_mid_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 10 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "sub_left_icon";
+ to_y: "txt_title";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "sub_left_icon";
+ to_y: "bottom_padding";
+ }
+ align: 0.0 0.0;
+ }
+ }
+
+ part {
+ name: "sub_right_icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 32 32;
+ max: 32 32;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "title_area";
+ to_y: "txt_title";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "title_area";
+ to_y: "bottom_padding";
+ }
+ align: 1.0 0.0;
+ }
+ }
+
+ part {
+ name: "txt_sub";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "sub_mid_padding";
+ to_y: "txt_title";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "sub_right_icon";
+ to_y: "bottom_padding";
+ }
+ color : 249 249 249 255;
+ text { font: "SLP:style=Medium";
+ size: 32;
+ min: 0 0;
+ max: 1 0;
+ align: 0.0 0.5;
+ text_class: "slp";
+ }
+ align: 0.0 0.0;
+ fixed: 1 1;
+ min: 0 40;
+ }
+ }
+
+ part {
+ name: "right_btn";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 0;
+ min: 120 78;
+ max: 120 78;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "right_padding";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "right_padding";
+ to_y: "bottom_padding";
+ }
+ }
+ }
+
+ part {
+ name: "seperator1";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 2 48;
+ max: 2 48;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "right_btn";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "right_btn";
+ to_y: "bottom_padding";
+ }
+ image.normal: "00_winset_title_line.png";
+ }
+ }
+/*
+ part {
+ name: "left_btn";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 0;
+ min: 120 78;
+ max: 120 78;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "seperator1";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "seperator1";
+ to_y: "bottom_padding";
+ }
+ }
+ }
+
+ part {
+ name: "seperator2";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 2 48;
+ max: 2 48;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "left_btn";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "left_btn";
+ to_y: "bottom_padding";
+ }
+ image.normal: "00_winset_title_line.png";
+ }
+ }
+*/
+ part {
+ name: "event_area";
+ ignore_flags: ON_HOLD;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { to: "title_area"; relative: 0 0; }
+ rel2 { to: "title_area"; relative: 1 1; }
+ }
+ }
+
+ part {
+ name: "arrow";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 28 24;
+ max: 28 24;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "title_area";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "title_area";
+ to_y: "bottom_padding";
+ }
+ image.normal: "optionheader_arrow.png";
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+
+ programs {
+ program {
+ name: "title_clicked";
+ signal: "mouse,clicked,1";
+ source: "event_area";
+ action: SIGNAL_EMIT "elm,action,title,clicked" "";
+ }
+
+ program {
+ name: "more_show";
+ signal: "elm,state,more,show";
+ source: "";
+ script {
+ set_int(more_show, 1);
+ set_state(PART:"arrow", "show", 0.0);
+ }
+ }
+
+ program {
+ name: "more_hide";
+ signal: "elm,state,more,hide";
+ source: "";
+ script {
+ set_int(more_show, 0);
+ set_state(PART:"arrow", "default", 0.0);
+ }
+ }
+ }
+ }
+#endif
+
+#if 0
+ group {
+ name: "elm/genlist/item/emaillisttree/title/default";
+ alias: "elm/genlist/item_odd/emaillisttree/title/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.count";
+ images {
+ image: "00_list_bar_press_1x80.png" COMP;
+ }
+ parts {
+ BEAT_GENLIST_PART_BASE( 90 )
+ BEAT_GENLIST_PART_BG_IMAGE
+ BEAT_GENLIST_PART_PADDING_TOP( 20 )
+ BEAT_GENLIST_PART_PADDING_BOTTOM( 20 )
+ BEAT_GENLIST_PART_PADDING_LEFT( 20 )
+ BEAT_GENLIST_PART_PADDING_RIGHT( 20 )
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 50;
+ fixed: 0 1;
+ align: 1 0.5;
+ rel1 { to_x: "elm.padding.left"; to_y: "elm.padding.top"; relative: 1 1; }
+ rel2 { to_x: "elm.padding.right"; to_y: "elm.padding.bottom"; relative: 0 0; }
+ color: 0 0 0 255;
+ text {
+ font: FONT_ROM;
+ size: 32;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 225 225 225 255;
+ }
+ }
+ part {
+ name: "elm.text.count";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 40;
+ fixed: 1 1;
+ rel1 { to_x: "elm.padding.left"; to_y: "elm.padding.top"; relative: 1 1; }
+ rel2 { to_x: "elm.padding.right"; to_y: "elm.padding.bottom"; relative: 0 0; }
+ color: 0 0 0 255;
+ text {
+ font: FONT_ROM;
+ size: 18;
+ min: 1 1;
+ align: 1.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 225 225 225 255;
+ }
+ }
+ part { name: "bottom_line";
+ type: RECT;
+ clip_to: "disclip";
+ mouse_events: 0;
+ description {
+ min: 0 1;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; offset: 0 -1; }
+ color: 199 195 183 255;
+ }
+ }
+ BEAT_GENLIST_PART_DISCLIP
+ }
+ programs {
+ program { name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg_image";
+ target: "elm.text.count";
+ target: "elm.text.title";
+ }
+ program { name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ target: "elm.text.count";
+ target: "elm.text.title";
+ transition: LINEAR 0.1;
+ }
+ program { name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group {
+ name: "elm/genlist/tree/emaillisttree/email/default";
+ alias: "elm/genlist/tree_odd/emaillisttree/email/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.email elm.text.account elm.text.count";
+ data.item: "contents" "elm.icon.bar elm.icon.email";
+ data.item: "treesize" "0";
+ images {
+ image: "00_list_bar_press_1x80.png" COMP;
+ image: "M02_button_expand_closed.png" COMP;
+ image: "M02_button_expand_closed_press.png" COMP;
+ image: "M02_button_expand_opened.png" COMP;
+ image: "M02_button_expand_opened_press.png" COMP;
+ }
+ parts {
+ BEAT_GENLIST_PART_BASE( 90 )
+ BEAT_GENLIST_PART_BG_IMAGE
+ BEAT_GENLIST_PART_PADDING_LEFT( 15 )
+ BEAT_GENLIST_PART_PADDING_RIGHT( 15 )
+ BEAT_GENLIST_PART_PADDING_TOP( 10 )
+ BEAT_GENLIST_PART_PADDING_BOTTOM( 10 )
+ part { name: "touch_arrow";
+ type: RECT;
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 70 80;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 {
+ relative: 0.5 0.5;
+ to: "arrow";
+ }
+ rel2 {
+ relative: 0.5 0.5;
+ to: "arrow";
+ }
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 40 40;
+ max: 40 40;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0; // needed?
+ rel1 { to_x: "elm.padding.left"; relative: 1 0; }
+ image.normal: "M02_button_expand_closed.png";
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "M02_button_expand_closed_press.png";
+ }
+ description {
+ state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "M02_button_expand_opened.png";
+ }
+ description {
+ state: "active" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "M02_button_expand_opened_press.png";
+ }
+ }
+ part {
+ name: "arrow_right_padding";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ min: 15 0;
+ fixed: 1 0;
+ visible: 0;
+ align: 0 0;
+ rel1 { to: "arrow"; relative: 1 0; }
+ rel2 { to: "arrow"; relative: 1 0; }
+ }
+ }
+ part {
+ name: "elm.icon.bar";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ min: 5 1;
+ max: 5 90;
+ fixed: 1 1;
+ rel1 { to_x: "arrow_right_padding"; to_y: "elm.padding.top"; relative: 1 1; }
+ rel2 { to_x: "arrow_right_padding"; to_y: "elm.padding.bottom"; relative: 1 0; }
+ }
+ }
+ part {
+ name: "iconbar_right_padding";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ min: 15 0;
+ fixed: 1 0;
+ visible: 0;
+ align: 0 0;
+ rel1 { to: "elm.icon.bar"; relative: 1 0; }
+ rel2 { to: "elm.icon.bar"; relative: 1 0; }
+ }
+ }
+ part { name: "elm.icon.email";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 50 50;
+ max: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { to_x: "iconbar_right_padding"; relative: 1.0 0; }
+ rel2 { to_x: "iconbar_right_padding"; relative: 1.0 1; }
+ }
+ }
+ part {
+ name: "icon_right_padding";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ min: 15 0;
+ fixed: 1 0;
+ visible: 0;
+ align: 0 0;
+ rel1 { to: "elm.icon.email"; relative: 1 0; }
+ rel2 { to: "elm.icon.email"; relative: 1 0; }
+ }
+ }
+ part { name: "elm.text.email";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0;
+ min: 1 40;
+ fixed: 0 1;
+ rel1 { relative: 1 1; to_x: "icon_right_padding"; to_y: "elm.padding.top"; }
+ rel2 { relative: 0 1; to_x: "elm.padding.right"; to_y: "elm.padding.top"; }
+ color: 0 0 0 255;
+ text {
+ font: FONT_ROM;
+ size: 32;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 225 225 225 255;
+ }
+ }
+ part { name: "elm.text.account";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0 0;
+ rel1 { relative: 0 1; to: "elm.text.email"; }
+ color: 0 0 0 255;
+ text {
+ font: FONT_ROM;
+ size: 24;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 225 225 225 255;
+ }
+ }
+ part {
+ name: "elm.text.count";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 40;
+ fixed: 1 1;
+ rel1 { to_x: "elm.padding.left"; to_y: "elm.padding.top"; relative: 1 1; }
+ rel2 { to_x: "elm.padding.right"; to_y: "elm.padding.bottom"; relative: 0 0; }
+ color: 0 0 0 255;
+ text {
+ font: FONT_ROM;
+ size: 18;
+ min: 1 1;
+ align: 1.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 225 225 225 255;
+ }
+ }
+ part { name: "bottom_line";
+ type: RECT;
+ clip_to: "disclip";
+ mouse_events: 0;
+ description {
+ min: 0 1;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; offset: 0 -1; }
+ color: 199 195 183 255;
+ }
+ }
+ BEAT_GENLIST_PART_DISCLIP
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ //a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg_image";
+ target: "elm.text.email";
+ target: "elm.text.account";
+ target: "elm.text.count";
+ target: "arrow";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ target: "elm.text.email";
+ target: "elm.text.account";
+ target: "elm.text.count";
+ target: "arrow";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "touch_arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "arrow_down";
+ signal: "mouse,down,1";
+ source: "touch_arrow";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl)
+ if (vl == 0.0)
+ set_state(PART:"arrow", st, 1.0);
+ else
+ set_state(PART:"arrow", st, 0.0);
+ }
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+
+ group {
+ name: "elm/genlist/tree/emaillisttree/sub_title/default";
+ alias: "elm/genlist/tree_odd/emaillisttree/sub_title/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.count";
+ data.item: "treesize" "15";
+ images {
+ image: "00_list_bar_press_1x80.png" COMP;
+ image: "M02_button_expand_closed.png" COMP;
+ image: "M02_button_expand_closed_press.png" COMP;
+ image: "M02_button_expand_opened.png" COMP;
+ image: "M02_button_expand_opened_press.png" COMP;
+ image: "00_list_expandable_bg.png" COMP;
+ }
+ parts {
+ BEAT_GENLIST_PART_BASE( 90 )
+ BEAT_GENLIST_PART_BG_IMAGE
+ BEAT_GENLIST_PART_PADDING_LEFT( 15 )
+ BEAT_GENLIST_PART_PADDING_RIGHT( 15 )
+ BEAT_GENLIST_PART_PADDING_TOP( 10 )
+ BEAT_GENLIST_PART_PADDING_BOTTOM( 10 )
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ }
+ }
+ }
+ part { name: "touch_arrow";
+ type: RECT;
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 70 80;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 {
+ relative: 0.5 0.5;
+ to: "arrow";
+ }
+ rel2 {
+ relative: 0.5 0.5;
+ to: "arrow";
+ }
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 40 40;
+ max: 40 40;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0; // needed?
+ rel1 { to_x: "elm.swallow.pad"; relative: 1 0; }
+ image.normal: "M02_button_expand_closed.png";
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "M02_button_expand_closed_press.png";
+ }
+ description {
+ state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "M02_button_expand_opened.png";
+ }
+ description {
+ state: "active" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "M02_button_expand_opened_press.png";
+ }
+ }
+ part {
+ name: "arrow_right_padding";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ min: 15 0;
+ fixed: 1 0;
+ visible: 0;
+ align: 0 0;
+ rel1 { to: "arrow"; relative: 1 0; }
+ rel2 { to: "arrow"; relative: 1 0; }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ min: 1 40;
+ fixed: 0 1;
+ rel1 { relative: 1 1; to_x: "arrow_right_padding"; to_y: "elm.padding.top"; }
+ rel2 { relative: 0 0; to_x: "elm.padding.right"; to_y: "elm.padding.bottom"; }
+ color: 0 0 0 255;
+ text {
+ font: FONT_ROM;
+ size: 32;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 225 225 225 255;
+ }
+ }
+ part {
+ name: "elm.text.count";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 40;
+ fixed: 1 1;
+ rel1 { to_x: "elm.padding.left"; to_y: "elm.padding.top"; relative: 1 1; }
+ rel2 { to_x: "elm.padding.right"; to_y: "elm.padding.bottom"; relative: 0 0; }
+ color: 0 0 0 255;
+ text {
+ font: FONT_ROM;
+ size: 18;
+ min: 1 1;
+ align: 1.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 225 225 225 255;
+ }
+ }
+ part { name: "bottom_line";
+ type: RECT;
+ clip_to: "disclip";
+ mouse_events: 0;
+ description {
+ min: 0 1;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; offset: 0 -1; }
+ color: 199 195 183 255;
+ }
+ }
+ BEAT_GENLIST_PART_DISCLIP
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg_image";
+ target: "elm.text.title";
+ target: "elm.text.count";
+ target: "arrow";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ target: "elm.text.title";
+ target: "elm.text.count";
+ target: "arrow";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "touch_arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "arrow_down";
+ signal: "mouse,down,1";
+ source: "touch_arrow";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl)
+ if (vl == 0.0)
+ set_state(PART:"arrow", st, 1.0);
+ else
+ set_state(PART:"arrow", st, 0.0);
+ }
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+
+ group {
+ name: "elm/genlist/item/emaillisttree/content/default";
+ alias: "elm/genlist/item_odd/emaillisttree/content/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.content elm.text.count";
+ data.item: "treesize" "15";
+ images {
+ image: "00_list_bar_press_1x80.png" COMP;
+ image: "00_list_expandable_2_bg.png" COMP;
+ }
+ parts {
+ BEAT_GENLIST_PART_BASE( 90 )
+ BEAT_GENLIST_PART_BG_IMAGE
+ BEAT_GENLIST_PART_PADDING_TOP( 20 )
+ BEAT_GENLIST_PART_PADDING_BOTTOM( 20 )
+ BEAT_GENLIST_PART_PADDING_LEFT( 20 )
+ BEAT_GENLIST_PART_PADDING_RIGHT( 20 )
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ }
+ }
+ }
+ part { name: "elm.text.content";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 50;
+ fixed: 0 1;
+ align: 1 0.5;
+ rel1 { to_x: "elm.swallow.pad"; to_y: "elm.padding.top"; relative: 1 1; }
+ rel2 { to_x: "elm.padding.right"; to_y: "elm.padding.bottom"; relative: 0 0; }
+ color: 0 0 0 255;
+ text {
+ font: FONT_ROM;
+ size: 32;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 225 225 225 255;
+ }
+ }
+ part {
+ name: "elm.text.count";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 40;
+ fixed: 1 1;
+ rel1 { to_x: "elm.padding.left"; to_y: "elm.padding.top"; relative: 1 1; }
+ rel2 { to_x: "elm.padding.right"; to_y: "elm.padding.bottom"; relative: 0 0; }
+ color: 0 0 0 255;
+ text {
+ font: FONT_ROM;
+ size: 18;
+ min: 1 1;
+ align: 1.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 225 225 225 255;
+ }
+ }
+ part { name: "bottom_line";
+ type: RECT;
+ clip_to: "disclip";
+ mouse_events: 0;
+ description {
+ min: 0 1;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; offset: 0 -1; }
+ color: 199 195 183 255;
+ }
+ }
+ BEAT_GENLIST_PART_DISCLIP
+ }
+ programs {
+ program { name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg_image";
+ target: "elm.text.count";
+ target: "elm.text.content";
+ }
+ program { name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ target: "elm.text.count";
+ target: "elm.text.content";
+ transition: LINEAR 0.1;
+ }
+ program { name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group {
+ name: "elm/genlist/tree/emaillisttree/email_nbeat/default";
+ alias: "elm/genlist/tree_odd/emaillisttree/email_nbeat/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.1 elm.text.2";
+ data.item: "contents" "elm.icon.1 elm.icon.2 elm.swallow.colorbar elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+
+ images {
+ image: "00_list_bar_press_1x80.png" COMP;
+ }
+
+ parts {
+ GENLIST_EXPANDABLE_PART_PERSPECTIVE_POINT()
+ GENLIST_EXPANDABLE_PART_BASE( 80, GENLIST_EXPANDABLE_PART_BG_COLOR_INC )
+ BEAT_GENLIST_PART_BOTTOM_EFFECT_LINE
+ BEAT_GENLIST_PART_PADDING_TOP( 6 )
+ BEAT_GENLIST_PART_PADDING_BOTTOM( 6 )
+ BEAT_GENLIST_PART_PADDING_LEFT( 10 )
+ BEAT_GENLIST_PART_PADDING_RIGHT( 10 )
+ BEAT_GENLIST_PART_EXPANDABLE_SWALLOW_PADDING
+
+ part { name: "elm.swallow.colorbar";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 6 13;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ }
+ }
+ }
+
+ part { name: "elm.padding.icon1.right";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 10 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon.1";
+ }
+ rel2.to_x: "elm.icon.1";
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.icon.1";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 40 40;
+ max: 40 40;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 1.0;
+ offset: 0 0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ }
+ }
+
+ part { name: "elm.icon.2";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 40 40;
+ max: 40 40;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ align: 1.0 0.5;
+ }
+
+ BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part { name: "elm.padding.icon2.left";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 10 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "elm.icon.2";
+ }
+ rel2.to_x: "elm.icon.2";
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+
+ part { name: "elm.text.1";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 38;
+ fixed: 0 1;
+ align: 0 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon1.right";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon2.left";
+ to_y: "elm.padding.top";
+ }
+ color: GENLIST_PART_TEXT_COLOR_INC;
+ text {
+ font: "SLP:style=Roman";
+ size: 28;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: GENLIST_PART_TEXT_SELECTED_COLOR_INC;
+ }
+ }
+
+ part { name: "elm.text.2";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon1.right";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ offset: 0 0;
+ to_x: "elm.padding.icon2.left";
+ to_y: "elm.padding.bottom";
+ }
+ color: GENLIST_PART_SUB_TEXT_COLOR_INC;
+ text {
+ font: "SLP:style=Medium";
+ size: 20;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: GENLIST_PART_TEXT_SELECTED_COLOR_INC;
+ }
+ }
+ BEAT_GENLIST_PART_DISCLIP
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program { name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "base";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ }
+ program { name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ transition: LINEAR 0.1;
+ }
+ program { name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "elm.icon.2";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+
+ program {
+ BEAT_GENLIST_PROGRAM_MAP_ROTATE_START()
+ target: "base";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.icon.2";
+ target: "elm.swallow.colorbar";
+ target: "elm.swallow.pad";
+ target: "bottom_line";
+ }
+ program {
+ BEAT_GENLIST_PROGRAM_MAP_ROTATE_FINISH( 0.4 )
+ target: "base";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.icon.2";
+ target: "elm.swallow.colorbar";
+ target: "elm.swallow.pad";
+ target: "bottom_line";
+ }
+ program {
+ BEAT_GENLIST_PROGRAM_MAP_END()
+ target: "base";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.icon.2";
+ target: "elm.swallow.colorbar";
+ target: "elm.swallow.pad";
+ target: "bottom_line";
+ }
+ program {
+ BEAT_GENLIST_PROGRAM_MAP_ROTATE_START2()
+ target: "base";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.icon.2";
+ target: "elm.swallow.colorbar";
+ target: "elm.swallow.pad";
+ target: "bottom_line";
+ }
+ program {
+ BEAT_GENLIST_PROGRAM_MAP_ROTATE_FINISH2( 0.4 )
+ target: "base";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.icon.2";
+ target: "elm.swallow.colorbar";
+ target: "elm.swallow.pad";
+ target: "bottom_line";
+ }
+ program {
+ BEAT_GENLIST_PROGRAM_MAP_END2()
+ target: "base";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.icon.2";
+ target: "elm.swallow.colorbar";
+ target: "elm.swallow.pad";
+ target: "bottom_line";
+ }
+ program {
+ name: "show";
+ signal: "elm,state,show";
+ action: STATE_SET "default" 0.0;
+ target: "base";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.icon.2";
+ target: "elm.swallow.colorbar";
+ target: "elm.swallow.pad";
+ target: "bottom_line";
+ }
+ program {
+ name: "hide";
+ signal: "elm,state,hide";
+ action: STATE_SET "hide" 0.0;
+ target: "base";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.icon.2";
+ target: "elm.swallow.colorbar";
+ target: "elm.swallow.pad";
+ target: "bottom_line";
+ }
+ }
+ }
+#endif
+}
+
--- /dev/null
+/*
+ * 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.
+ */
+
+collections {
+ group {
+ name: "ug_effect_sample";
+ parts {
+ part {
+ name: "clip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 1 0; }
+ rel2 { relative: 2 1; }
+ color: 255 255 255 0;
+ }
+ description {
+ state: "show" 0.0;
+ rel1 { relative: 0 0; }
+ rel2 { relative: 1 1; }
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clip";
+ description {
+ rel1.to: "clip";
+ rel2.to: "clip";
+ }
+ }
+ part {
+ name: "event_blocker";
+ description {
+ state: "default" 0.0;
+ rel1.to: "clip";
+ rel2.to: "clip";
+ visible: 1;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "show";
+ signal: "elm,state,show";
+ action: STATE_SET "show" 0.0;
+ target: "clip";
+ target: "event_blocker";
+ transition: "DECELERATE" 0.5;
+ after: "show_end";
+ }
+ program {
+ name: "hide";
+ signal: "elm,state,hide";
+ action: STATE_SET "default" 0.0;
+ target: "clip";
+ target: "event_blocker";
+ transition: "DECELERATE" 0.5;
+ after: "hide_end";
+ }
+ program {
+ name: "disable_event_blocker";
+ signal: "elm,state,blocker,disabled";
+ action: STATE_SET "disabled" 0.0;
+ target: "event_blocker";
+ }
+ program {
+ name: "disable_blocker";
+ action: SIGNAL_EMIT "elm,state,blocker,disabled" "";
+ }
+ program {
+ name: "show_end";
+ action: SIGNAL_EMIT "elm,action,show,finished" "";
+ after: "disable_blocker";
+ }
+ program {
+ name: "hide_end";
+ action: SIGNAL_EMIT "elm,action,hide,finished" "";
+ after: "disable_blocker";
+ }
+ }
+ }
+}
--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ug-email-block-efl C)
+
+SET(SRCS
+ ./src/email-block.c
+)
+SET(CMAKE_SKIP_BUILD_RPATH TRUE)
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+ SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+SET(CMAKE_MAILBLOCK_SOURCE_DIR "${CMAKE_SOURCE_DIR}/block")
+SET(CMAKE_MAILBLOCK_BINARY_DIR "${CMAKE_BINARY_DIR}/block")
+INCLUDE_DIRECTORIES(${CMAKE_MAILBLOCK_SOURCE_DIR}/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs-block REQUIRED appcore-efl contacts-service ui-gadget-1 elementary gobject-2.0 email-service dlog capi-appfw-application)
+
+FOREACH(flag ${pkgs-block_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -finstrument-functions")
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+ ADD_DEFINITIONS("-DTARGET")
+ MESSAGE("add -DTARGET")
+ SET(CMAKE_C_FLAGS_RELEASE "-mabi=aapcs-linux -msoft-float -O2")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+ADD_DEFINITIONS("-DDEBUG")
+ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"")
+ADD_DEFINITIONS("-DDATAFS=\"$ENV{DATAFS}\"")
+
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} email-common ${pkgs-block_LDFLAGS})
+
+ADD_CUSTOM_TARGET(email-block-theme.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
+ ${CMAKE_MAILBLOCK_SOURCE_DIR}/theme/email-block-theme.edc ${CMAKE_MAILBLOCK_BINARY_DIR}/email-block-theme.edj
+ DEPENDS ${CMAKE_MAILBLOCK_SOURCE_DIR}/theme/email-block-theme.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} email-block-theme.edj)
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR})
+INSTALL(FILES ${CMAKE_MAILBLOCK_BINARY_DIR}/email-block-theme.edj DESTINATION ${EDJDIR})
+
+# i18n
+#ADD_SUBDIRECTORY(po)
+
--- /dev/null
+/*
+ * 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_block_H_
+#define __DEF_email_block_H_
+
+#include <Edje.h>
+#include <Elementary.h>
+#include <appcore-efl.h>
+#include <libintl.h>
+#undef _
+#include <ui-gadget-module.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <glib.h>
+#include <glib-object.h>
+#include <Ecore_IMF.h>
+
+#include "email-api.h"
+#include "email-types.h"
+
+#include "email-engine.h"
+#include "email-debug.h"
+#include "email-locale.h"
+
+#define _EDJ(o) elm_layout_edje_get(o)
+
+#define MAX_RECIPIENT_ADDRESS_LEN 234
+#define MAX_RECIPIENT_COUNT 50
+#define MAX_RECENT_CNT 100
+#define MAX_RECENT_MAIL_TO_RETRIEVE 10
+
+#define ICON_PATH IMGDIR
+#define EDJ_PATH EDJDIR
+#define THEME_PATH EDJ_PATH"/email-setting-theme.edj"
+#define EMAIL_BLOCK_THEME_PATH EDJ_PATH"/email-block-theme.edj"
+
+typedef struct ug_data EmailBlockAppData;
+struct ug_data {
+ Evas *evas;
+ Evas_Object *win_main;
+
+ Evas_Object *layout_main;
+ Evas_Object *layout_add;
+ Evas_Object *layout_crt;
+ Evas_Object *layout_edit;
+ Evas_Object *timeout_popup;
+ Evas_Object *bg;
+ Elm_Theme *theme;
+ int account_id;
+ int mailbox_id;
+ char *str_filter_name;
+
+ ui_gadget_h ug;
+ ui_gadget_h ug_contact;
+ ui_gadget_h ug_group;
+ struct ug_cbs cbs;
+
+ Evas_Object *main_box;
+ Evas_Object *gl_addrs;
+ Evas_Object *gl_subject;
+ Evas_Object *gl_string;
+ Evas_Object *gl_edit;
+ Evas_Object *gl_add_filter;
+ Evas_Object *navi_bar;
+ Evas_Object *control_bar;
+ Evas_Object *control_bar_add;
+ Evas_Object *control_bar_edit;
+ Evas_Object *segment;
+ Evas_Object *segment_layout;
+ Evas_Object *noc;
+ Evas_Object *noc_ly;
+ Evas_Object *sub_ly;
+
+ email_rule_t *rule_list;
+ Elm_Genlist_Item_Class itc_block;
+ Elm_Genlist_Item_Class itc_del;
+ Elm_Genlist_Item_Class itc1;
+ Elm_Genlist_Item_Class itc2;
+ Elm_Genlist_Item_Class itc3;
+ Elm_Genlist_Item_Class itc4;
+ Elm_Genlist_Item_Class itc5;
+
+ int match_crt;
+ int update_filter_id;
+ int delete_filter_id;
+
+ Evas_Object *l_button;
+ Evas_Object *r_button;
+ Evas_Object *l_button2;
+ Evas_Object *r_button2;
+ Evas_Object *l_button3;
+ Evas_Object *r_button3;
+ Evas_Object *l_button4;
+ Evas_Object *r_button4;
+ Evas_Object *add_button;
+ Evas_Object *edit_button;
+ Evas_Object *del_button;
+ Evas_Object *back_btn_add;
+ Evas_Object *add_icon;
+ Evas_Object *edit_icon;
+ Evas_Object *del_icon;
+ Evas_Object *select_all_layout;
+ Evas_Object *select_all_checkbox;
+ Evas_Object *recent_lbutton;
+
+ Evas_Object *scr_add;
+ Evas_Object *scr_crt;
+ Evas_Object *filter_box;
+ Evas_Object *box_crt;
+ Evas_Object *dg_crt;
+ Evas_Object *df_filter_name;
+ Evas_Object *df_match;
+ Evas_Object *ef_match;
+ Evas_Object *ef_filter_name;
+ Evas_Object *entry_filter_name;
+ Evas_Object *di_btns;
+ Evas_Object *layout_btn;
+ Evas_Object *group_btn;
+ Evas_Object *contact_btn;
+ Evas_Object *recent_btn;
+ Evas_Object *waiting_popup;
+ email_mail_list_item_t *recent_mail_data;
+ Ecore_Timer *recent_timer;
+ Evas_Object *di_crt1;
+ Evas_Object *di_crt2;
+ Evas_Object *di_crt_rd1;
+ Evas_Object *di_crt_rd2;
+ Evas_Object *sp1;
+ Evas_Object *sp2;
+ Evas_Object *sp_crt;
+ Evas_Object *popup_empty;
+ Evas_Object *recent_genlist;
+ Evas_Object *block_recent_select_all_layout;
+ Evas_Object *recent_box;
+ Evas_Object *block_recent_select_all_checkbox;
+ Evas_Object *block_select_all_layout;
+ Evas_Object *no_content;
+ Evas_Object *recent_select_info;
+ Evas_Object *edit_select_info;
+ Evas_Object *recent_select_info_ly;
+ Evas_Object *edit_select_info_ly;
+ Eina_Bool block_recent_select_all_checked;
+
+ int checked_count;
+ int total_count;
+ int mode;
+ int block_type;
+ int edit_filter_id;
+ int address_rule_count;
+ int subject_rule_count;
+ int selected_segment;
+ int view_type;
+ int b_btn_layout_show;
+ int edit_total_count;
+ int edit_checked_count;
+ Eina_Bool select_all_checked;
+
+ Elm_Object_Item *selected_item;
+ Elm_Object_Item * c_item[4];
+ Elm_Object_Item * c_item_add[4];
+ Elm_Object_Item * c_item_edit[4];
+ Elm_Object_Item *del_btn_item;
+ Elm_Object_Item *empty_btn_item;
+
+ Elm_Object_Item *navi_main_it;
+};
+
+typedef struct {
+ gchar email_addr[MAX_RECIPIENT_ADDRESS_LEN];
+} EmailList;
+
+typedef struct {
+ int selected_email_idx;
+ int email_cnt;
+ bool is_contact_info;
+ gchar *display_name;
+ EmailList email_list[MAX_RECIPIENT_COUNT];
+} EmailRecipientInfo;
+
+typedef struct {
+ email_rule_t *rule;
+ Elm_Object_Item *it;
+ Eina_Bool checked;
+ Evas_Object *genlist;
+} ListItemData;
+
+enum {
+ TYPE_BLOCK_ADDRESS = 1,
+ TYPE_BLOCK_SUBJECT,
+ TYPE_BLOCK_STRING,
+ TYPE_BLOCK_MAX
+};
+
+enum {
+ TYPE_MATCH_CRT_INC_ON = 1,
+ TYPE_MATCH_CRT_WHOLE_ON,
+ TYPE_MATCH_CRT_MAX
+};
+
+enum {
+ BLOCK_MODE_ADD = 1,
+ BLOCK_MODE_EDIT,
+ BLOCK_MODE_MAX
+};
+
+enum {
+ VIEW_BLOCK_MAIN = 1,
+ VIEW_BLOCK_FILTER_DATA_SET,
+ VIEW_BLOCK_CRITERIA_SET,
+ VIEW_BLOCK_EDIT_FILTER_LIST,
+ VIEW_BLOCK_RECENT_ADD,
+ VIEW_BLOCK_CONTACT_ADD,
+ VIEW_BLOCK_MAX
+};
+
+typedef struct _Item_Data Item_Data;
+typedef struct _View_Data View_Data;
+
+struct _View_Data {
+ Evas_Object *select_all_layout;
+ Evas_Object *select_all_checkbox;
+ Eina_Bool select_all_checked;
+ int total_count;
+ int checked_count;
+};
+
+struct _Item_Data {
+ Elm_Object_Item *it; /* Genlist Item pointer */
+ Eina_Bool checked; /* Check status */
+ char *address;
+};
+
+#endif /* __DEF_email_block_H__ */
+
+/* EOF */
--- /dev/null
+/*
+ * 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 UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+#include "email-block.h"
+#include "email-utils.h"
+#include <contacts-svc.h>
+#include <contacts-ug.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <string.h>
+#include <stdlib.h>
+
+Evas_Object *g_delete_btn = NULL;
+char *block_addr = NULL;
+static EmailBlockAppData *_g_eb_ug_data = NULL;
+static Elm_Genlist_Item_Class itc;
+
+#define EMAIL_VCONF_KEY_BLOCK_RULE_CHANGED "file/private/org.tizen.email/spam_rule_changed"
+
+/* appcore */
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv);
+static void on_start(ui_gadget_h ug, service_h service, void *priv);
+static void on_pause(ui_gadget_h ug, service_h service, void *priv);
+static void on_resume(ui_gadget_h ug, service_h service, void *priv);
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv);
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv);
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv);
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv);
+
+static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void result_cb(ui_gadget_h ug, service_h service, void *priv);
+static void destroy_cb(ui_gadget_h ug, void *priv);
+static ui_gadget_h create_ug(char *ug_name, service_h service, void *data);
+static void _win_profile_changed_cb(void *data, Evas_Object *obj, void *event);
+
+static void eb_create_view(EmailBlockAppData *ug_data);
+static void eb_add_navigation_bar(EmailBlockAppData *ug_data);
+static void eb_add_control_bar(EmailBlockAppData *ug_data);
+static void eb_create_first_view(EmailBlockAppData *ug_data);
+static void eb_create_list(EmailBlockAppData *ug_data);
+static void eb_free_list(EmailBlockAppData *ug_data);
+static void eb_create_noc(EmailBlockAppData *ug_data);
+static void eb_free_noc(EmailBlockAppData *ug_data);
+static void eb_destroy_main_view(EmailBlockAppData *ug_data);
+static void eb_destroy_filter_add_view(EmailBlockAppData *ug_data);
+
+static void _add_filter_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _add_filter_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _add_one_rule(EmailBlockAppData *ug_data, char *buf);
+static void _changed_filter_type_cb(void *data, Evas_Object *obj, void *event_info);
+static void _back_cb(void *data, Evas_Object *obj, void *event_info);
+static void _edit_cb(void *data, Evas_Object *obj, void *event_info);
+static void _back_prev_view_cb(void *data, Evas_Object *obj, void *event_info);
+static void _delete_rule_cb(void *data, Evas_Object *obj, void *event_info);
+static void _rule_save_cb(void *data, Evas_Object *obj, void *event_info);
+static void _contact_button_cb(void *data, Evas_Object *obj, void *event_info);
+static void _recent_button_cb(void *data, Evas_Object *obj, void *event_info);
+static void _block_rule_vconf_key_changed_cb(keynode_t *key, void *data);
+static void _get_contact_email_list(const char *val, char **result, EmailBlockAppData *ug_data);
+
+static void _popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _del_button_state_set(EmailBlockAppData *ug_data);
+static void _show_selection_info(EmailBlockAppData *ugd);
+
+static void _block_recent_create_view(void *data);
+static void _block_recent_init(EmailBlockAppData *ugd);
+static Evas_Object *_block_recent_create_genlist_top_half(void *data);
+static Eina_Bool _block_recent_create_genlist_bottom_half(void *data);
+static bool _block_recent_check_addr_is_duplicated(const char *addr, Evas_Object *recent_list);
+static void _block_recent_back_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *_block_recent_create_no_content_view(Evas_Object *parent, void *data);
+static void _block_recent_show_selection_info(EmailBlockAppData *ugd);
+static void _block_recent_done_cb(void *data, Evas_Object *obj, void *event_info);
+static void _block_recent_item_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *_block_recent_create_layout(EmailBlockAppData *ugd);
+static void _block_recent_set_editmode(void *data);
+static void _block_recent_select_all_layout_mouse_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info);
+static void _block_recent_select_all_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void _block_recent_check_select_all(EmailBlockAppData *ugd);
+static void _block_recent_set_genlist_item_style(EmailBlockAppData *ugd);
+static void _block_recent_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static char *_block_recent_gl_label_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_block_recent_gl_icon_get(void *data, Evas_Object *obj, const char *part);
+
+static void _edit_item_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void _check_select_all(EmailBlockAppData *ug_data);
+static void _select_all_layout_mouse_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info);
+static void _select_all_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static char *_eb_gl_label_get(void *data, Evas_Object *obj, const char *part);
+static void _eb_gl_sel_cb(void *data, Evas_Object *obj, void *event_info);
+static void _eb_gl_del(void *data, Evas_Object *obj);
+static Evas_Object *_eb_gl_add_ef_icon_get(void *data, Evas_Object *obj, const char *part);
+/*static Evas_Object *_eb_gl_add_btn_icon_get(void *data, Evas_Object *obj, const char *part);*/
+static void _cb_backup_input(void *data, Evas_Object *obj, void *event_info);
+static void _cb_entry_focused(void *data, Evas_Object *obj, void *event_info);
+static void _cb_entry_unfocused(void *data, Evas_Object *obj, void *event_info);
+static void _cb_eraser_clicked(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+/* Call back function to get the information of buttons of underlying layer in sweep menu */
+static Evas_Object *_eb_gl_icon_get(void *data, Evas_Object *obj, const char *part);
+static void _eb_sweep_edit_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _eb_sweep_delete_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _my_gl_mode_right(void *data, Evas_Object *obj, void *event_info);
+static void _my_gl_mode_left(void *data, Evas_Object *obj, void *event_info);
+static void _my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info);
+
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv)
+{
+ debug_log("");
+
+ Evas_Object *win;
+ EmailBlockAppData *ug_data;
+
+ if (!ug || !priv)
+ return NULL;
+
+ ug_data = priv;
+ ug_data->ug = ug;
+
+ win = ug_get_window();
+ if (!win)
+ return NULL;
+
+ ug_data->win_main = win;
+ ug_data->evas = evas_object_evas_get(win);
+
+ char *id = NULL;
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, &id);
+ ug_data->account_id = atoi(id);
+ g_free(id);
+
+ char *mailbox_id = NULL;
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, &mailbox_id);
+ ug_data->mailbox_id = atoi(mailbox_id);
+ g_free(mailbox_id);
+
+ debug_log("ACCOUNT_ID:%d", ug_data->account_id);
+ debug_log("MAILBOX_ID:%d", ug_data->mailbox_id);
+
+ ug_data->cbs.layout_cb = layout_cb;
+ ug_data->cbs.result_cb = result_cb;
+ ug_data->cbs.destroy_cb = destroy_cb;
+ ug_data->cbs.priv = (void *)ug_data;
+
+ /* theme extension */
+ ug_data->theme = elm_theme_new();
+ elm_theme_ref_set(ug_data->theme, NULL);
+ elm_theme_extension_add(ug_data->theme, EMAIL_BLOCK_THEME_PATH);
+
+ eb_create_view(ug_data);
+
+ int vconf_ret = -1;
+ vconf_ret = vconf_notify_key_changed(EMAIL_VCONF_KEY_BLOCK_RULE_CHANGED, _block_rule_vconf_key_changed_cb, ug_data);
+ if (vconf_ret == -1) {
+ debug_log("vconf_notify_key_changed failed");
+ }
+
+ return ug_data->layout_main;
+}
+
+static void on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+}
+
+static void on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+}
+
+static void on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+}
+
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data;
+
+ if (!ug || !priv)
+ return;
+
+ ug_data = priv;
+
+ /* theme extension */
+ elm_theme_extension_del(ug_data->theme, EMAIL_BLOCK_THEME_PATH);
+ elm_theme_free(ug_data->theme);
+
+ int vconf_ret = -1;
+ vconf_ret = vconf_ignore_key_changed(EMAIL_VCONF_KEY_BLOCK_RULE_CHANGED, _block_rule_vconf_key_changed_cb);
+ if (vconf_ret == -1) {
+ debug_log("vconf_ignore_key_changed failed");
+ }
+
+ vconf_ret = vconf_unset(EMAIL_VCONF_KEY_BLOCK_RULE_CHANGED);
+ if (vconf_ret == -1) {
+ debug_log("vconf_unset failed");
+ }
+
+ eb_destroy_main_view(ug_data);
+}
+
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv)
+{
+ debug_log("");
+}
+
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv)
+{
+ debug_log("");
+
+ switch (event) {
+ case UG_EVENT_LOW_MEMORY:
+ break;
+ case UG_EVENT_LOW_BATTERY:
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ break;
+ case UG_EVENT_ROTATE_PORTRAIT:
+ break;
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ break;
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ break;
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ break;
+ case UG_EVENT_REGION_CHANGE:
+ break;
+ default:
+ break;
+ }
+}
+
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ EmailBlockAppData *ug_data;
+ ug_data = priv;
+
+ switch (event) {
+ case UG_KEY_EVENT_END:
+ if (elm_naviframe_top_item_get(ug_data->navi_bar) == elm_naviframe_bottom_item_get(ug_data->navi_bar))
+ ug_destroy_me(ug);
+ else
+ _back_prev_view_cb(ug_data, NULL, NULL);
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+ debug_log("");
+ Evas_Object *base, *win;
+
+ if (!ug || !priv)
+ return;
+
+ base = ug_get_layout(ug);
+ if (!base)
+ return;
+
+ win = ug_get_window();
+
+ switch (mode) {
+ case UG_MODE_FULLVIEW:
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, base);
+ evas_object_show(base);
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void result_cb(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)priv;
+
+ if (ug != ug_data->ug_contact) {
+ goto FINISH;
+ }
+
+ char *val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_RESULT_EMAIL_ID_LIST, &val);
+
+ if (!val) {
+ debug_log("service_get_extra_data return NULL");
+ goto FINISH;
+ }
+
+ char *result_address = NULL;
+ _get_contact_email_list(val, &result_address, ug_data);
+ g_free(val);
+
+ if (!result_address) {
+ ug_data->popup_empty = elm_popup_add(ug_data->layout_main);
+ evas_object_size_hint_weight_set(ug_data->popup_empty, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_popup_timeout_set(ug_data->popup_empty, 1);
+ elm_object_text_set(ug_data->popup_empty, _("IDS_EMAIL_POP_NO_EMAIL_ADDRESS"));
+ elm_object_part_text_set(ug_data->popup_empty, "title,text", _("IDS_EMAIL_POP_ALERT"));
+ evas_object_smart_callback_add(ug_data->popup_empty, "block,clicked", _popup_block_clicked_cb, ug_data);
+ evas_object_show(ug_data->popup_empty);
+ goto FINISH;
+ }
+
+ if (!block_addr) {
+ block_addr = g_strdup(result_address);
+ debug_log("Null block_addr = %s", block_addr);
+ elm_entry_entry_set(ug_data->entry_filter_name, block_addr);
+ } else {
+ char *addr_tmp = block_addr;
+ block_addr = g_strconcat(block_addr, ";", result_address, NULL);
+ debug_log("Not Null block_addr = %s", block_addr);
+ elm_entry_entry_set(ug_data->entry_filter_name, block_addr);
+ g_free(addr_tmp);
+ }
+
+ g_free(result_address);
+
+FINISH:
+ evas_object_show(ug_data->entry_filter_name);
+ elm_object_focus_set(ug_data->entry_filter_name, EINA_TRUE);
+ ug_data->view_type = VIEW_BLOCK_FILTER_DATA_SET;
+ ug_destroy(ug);
+}
+
+static void destroy_cb(ui_gadget_h ug, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)priv;
+
+ if (ug == ug_data->ug_contact) {
+ ug_data->view_type = VIEW_BLOCK_FILTER_DATA_SET;
+ /*elm_object_signal_emit(ug_data->ef_filter_name, "clicked", "elm");*/
+ evas_object_show(ug_data->entry_filter_name);
+ elm_object_focus_set(ug_data->entry_filter_name, EINA_TRUE);
+ }
+
+ ug_destroy(ug);
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data;
+
+ if (!ops)
+ return -1;
+
+ ug_data = calloc(1, sizeof(EmailBlockAppData));
+ if (!ug_data)
+ return -1;
+
+ ops->create = on_create;
+ ops->start = on_start;
+ ops->pause = on_pause;
+ ops->resume = on_resume;
+ ops->destroy = on_destroy;
+ ops->message = on_message;
+ ops->event = on_event;
+ ops->key_event = on_key_event;
+ ops->priv = ug_data;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ _g_eb_ug_data = ug_data;
+
+ return 0;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data;
+
+ if (!ops)
+ return;
+
+ ug_data = ops->priv;
+ if (ug_data)
+ free(ug_data);
+
+ _g_eb_ug_data = NULL;
+}
+
+static ui_gadget_h create_ug(char *ug_name, service_h service, void *data)
+{
+ debug_log("");
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0, };
+
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ cbs.layout_cb = layout_cb;
+ cbs.result_cb = result_cb;
+ cbs.destroy_cb = destroy_cb;
+ cbs.priv = data;
+
+ ug = ug_create(ug_data->ug, ug_name, UG_MODE_FULLVIEW, service, &cbs);
+
+ return ug;
+}
+
+static void eb_create_view(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+
+ Evas_Object *layout;
+
+ ug_data->bg = elm_bg_add(ug_data->win_main);
+ evas_object_size_hint_weight_set(ug_data->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ug_data->win_main, ug_data->bg);
+ evas_object_show(ug_data->bg);
+
+ layout = elm_layout_add(ug_data->win_main);
+ elm_layout_theme_set(layout, "layout", "application", "default");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ug_data->win_main, layout);
+ evas_object_show(layout);
+ ug_data->layout_main = layout;
+ elm_object_part_content_set(ug_data->layout_main, "elm.swallow.bg", ug_data->bg);
+
+ evas_object_smart_callback_add(ug_data->win_main, "profile,changed", _win_profile_changed_cb, ug_data);
+
+ ug_data->selected_segment = 0;
+ eb_add_navigation_bar(ug_data);
+ eb_add_control_bar(ug_data);
+ eb_create_first_view(ug_data);
+}
+
+static void _win_profile_changed_cb(void *data, Evas_Object *obj, void *event)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ const char *profile = elm_config_profile_get();
+ if (!g_strcmp0(profile, "desktop"))
+ elm_layout_theme_set(ug_data->layout_main, "layout", "application", "noindicator");
+ else
+ elm_layout_theme_set(ug_data->layout_main, "layout", "application", "default");
+
+ evas_object_size_hint_weight_set(ug_data->layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ug_data->win_main, ug_data->layout_main);
+ evas_object_show(ug_data->layout_main);
+}
+
+static void eb_add_navigation_bar(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+ Evas_Object *navi_bar;
+
+ navi_bar = elm_naviframe_add(ug_data->layout_main);
+ elm_object_part_content_set(ug_data->layout_main, "elm.swallow.content", navi_bar);
+ evas_object_show(navi_bar);
+
+ ug_data->navi_bar = navi_bar;
+}
+
+static void eb_add_control_bar(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+ Elm_Object_Item *it1, *it2;
+
+ if (ug_data == NULL)
+ return;
+
+ ug_data->control_bar = elm_toolbar_add(ug_data->navi_bar);
+ elm_toolbar_shrink_mode_set(ug_data->control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_object_style_set(ug_data->control_bar, "naviframe");
+ evas_object_show(ug_data->control_bar);
+
+ ug_data->c_item[0] = elm_toolbar_item_append(ug_data->control_bar, NULL,
+ dgettext("sys_string", "IDS_COM_SK_DELETE"), _edit_cb, ug_data);
+ elm_object_item_disabled_set(elm_toolbar_item_append(ug_data->control_bar, NULL, "", NULL, NULL), EINA_TRUE);
+ ug_data->c_item[1] = elm_toolbar_item_append(ug_data->control_bar, NULL,
+ dgettext("sys_string", "IDS_COM_SK_ADD"), _add_filter_clicked_cb, ug_data);
+
+ ug_data->segment = elm_segment_control_add(ug_data->navi_bar);
+ it1 = elm_segment_control_item_add(ug_data->segment, NULL, _("IDS_EMAIL_BODY_ADDRESS"));
+ it2 = elm_segment_control_item_add(ug_data->segment, NULL, dgettext("sys_string", "IDS_COM_BODY_SUBJECT"));
+ evas_object_smart_callback_add(ug_data->segment, "changed", _changed_filter_type_cb, ug_data);
+ evas_object_show(ug_data->segment);
+
+ debug_log("selected segment: %d", ug_data->selected_segment);
+ if (ug_data->selected_segment == 0) {
+ ug_data->block_type = TYPE_BLOCK_ADDRESS;
+ elm_segment_control_item_selected_set(it1, TRUE);
+ } else if (ug_data->selected_segment == 1) {
+ ug_data->block_type = TYPE_BLOCK_SUBJECT;
+ elm_segment_control_item_selected_set(it2, TRUE);
+ }
+}
+
+static void eb_create_first_view(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+
+ ug_data->view_type = VIEW_BLOCK_MAIN;
+
+ ug_data->sub_ly = elm_layout_add(ug_data->navi_bar);
+ elm_layout_theme_set(ug_data->sub_ly, "layout", "application", "noindicator");
+ evas_object_size_hint_weight_set(ug_data->sub_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(ug_data->sub_ly);
+
+ ug_data->l_button = elm_button_add(ug_data->navi_bar);
+ evas_object_smart_callback_add(ug_data->l_button, "clicked", _back_cb, ug_data);
+ elm_object_style_set(ug_data->l_button, "naviframe/back_btn/default");
+ evas_object_show(ug_data->l_button);
+
+ ug_data->navi_main_it = elm_naviframe_item_push(ug_data->navi_bar, _("IDS_EMAIL_HEADER_BLOCK_EMAILS"), ug_data->l_button, NULL, ug_data->sub_ly, NULL);
+ elm_naviframe_item_style_set(ug_data->navi_main_it, "segment");
+ elm_object_item_part_content_set(ug_data->navi_main_it, "segment", ug_data->segment);
+ elm_object_item_part_content_set(ug_data->navi_main_it, "controlbar", ug_data->control_bar);
+
+ _changed_filter_type_cb(ug_data, ug_data->segment, NULL);
+}
+
+static void eb_create_list(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+ int count, i;
+ email_rule_t *rule_list = NULL;
+
+ ug_data->main_box = elm_box_add(ug_data->navi_bar);
+ evas_object_size_hint_weight_set(ug_data->main_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(ug_data->main_box);
+ elm_object_part_content_set(ug_data->sub_ly, "elm.swallow.content", ug_data->main_box);
+
+ ug_data->gl_addrs = elm_genlist_add(ug_data->navi_bar);
+ elm_genlist_block_count_set(ug_data->gl_addrs, 25);
+ evas_object_size_hint_weight_set(ug_data->gl_addrs, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ug_data->gl_addrs, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(ug_data->gl_addrs, "drag,start,right", _my_gl_mode_right, NULL); /* sweep right */
+ evas_object_smart_callback_add(ug_data->gl_addrs, "drag,start,left", _my_gl_mode_left, NULL); /* sweep left */
+ evas_object_smart_callback_add(ug_data->gl_addrs, "drag,start,up", _my_gl_mode_cancel, NULL); /* flick */
+ evas_object_smart_callback_add(ug_data->gl_addrs, "drag,start,down", _my_gl_mode_cancel, NULL); /* flick */
+
+ ug_data->gl_subject = elm_genlist_add(ug_data->navi_bar);
+ elm_genlist_block_count_set(ug_data->gl_subject, 25);
+ evas_object_size_hint_weight_set(ug_data->gl_subject, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ug_data->gl_subject, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(ug_data->gl_subject, "drag,start,right", _my_gl_mode_right, NULL); /* sweep right */
+ evas_object_smart_callback_add(ug_data->gl_subject, "drag,start,left", _my_gl_mode_left, NULL); /* sweep left */
+ evas_object_smart_callback_add(ug_data->gl_subject, "drag,start,up", _my_gl_mode_cancel, NULL); /* flick */
+ evas_object_smart_callback_add(ug_data->gl_subject, "drag,start,down", _my_gl_mode_cancel, NULL); /* flick */
+
+ elm_object_style_set(ug_data->gl_addrs, "1text");
+ elm_object_style_set(ug_data->gl_subject, "1text");
+
+ ug_data->itc_block.item_style = "1text"; /* for upper layer */
+ ug_data->itc_block.decorate_item_style = "mode/slide2"; /* for lower layer */
+ ug_data->itc_block.func.text_get = _eb_gl_label_get;
+ ug_data->itc_block.func.del = _eb_gl_del;
+ ug_data->itc_block.func.content_get = _eb_gl_icon_get;
+ ug_data->itc_block.decorate_all_item_style = "edit_default";
+
+ /* get the rule list from service */
+ if (email_get_rule_list(&rule_list, &count) < 0) {
+ debug_log("email_get_rule_list failed");
+ }
+
+ if (count > 0) {
+ /* copy rule list */
+ if (ug_data->rule_list != NULL) {
+ free(ug_data->rule_list);
+ ug_data->rule_list = NULL;
+ }
+
+ ug_data->rule_list = (email_rule_t *) malloc(sizeof(email_rule_t)*count);
+ if (ug_data->rule_list && rule_list)
+ memcpy(ug_data->rule_list, rule_list, sizeof(email_rule_t)*count);
+ else
+ goto FINISH_OFF;
+
+ for (i = 0; i < count; i++) {
+ ListItemData *item_data = NULL;
+ if (ug_data->rule_list[i].type == EMAIL_FILTER_FROM) {
+ item_data = calloc(1, sizeof(ListItemData));
+ item_data->rule = &(ug_data->rule_list[i]);
+ item_data->rule->value = g_strdup(item_data->rule->value);
+ item_data->genlist = ug_data->gl_addrs;
+ item_data->it = elm_genlist_item_append(ug_data->gl_addrs, &(ug_data->itc_block), (void *)item_data, NULL, ELM_GENLIST_ITEM_NONE, _eb_gl_sel_cb, (void *)item_data);
+ ug_data->address_rule_count++;
+ } else if (ug_data->rule_list[i].type == EMAIL_FILTER_SUBJECT) {
+ item_data = calloc(1, sizeof(ListItemData));
+ item_data->rule = &(ug_data->rule_list[i]);
+ item_data->rule->value = g_strdup(item_data->rule->value);
+ item_data->genlist = ug_data->gl_subject;
+ item_data->it = elm_genlist_item_append(ug_data->gl_subject, &(ug_data->itc_block), (void *)item_data, NULL, ELM_GENLIST_ITEM_NONE, _eb_gl_sel_cb, (void *)item_data);
+ ug_data->subject_rule_count++;
+ } else {
+ debug_log("undefined rule type");
+ }
+
+ debug_log("ug_data->address_rule_count %d n ug_data->subject_rule_count %d", ug_data->address_rule_count, ug_data->subject_rule_count);
+ }
+ }
+
+FINISH_OFF:
+ /* free emf rule_list */
+ email_free_rule(&rule_list, count);
+}
+
+static void _my_gl_mode_right(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!event_info)
+ return;
+
+ /* Start genlist sweep */
+ elm_genlist_item_decorate_mode_set(event_info, "slide", EINA_TRUE);
+}
+
+static void _my_gl_mode_left(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!event_info)
+ return;
+
+ /* Finish genlist sweep */
+ elm_genlist_item_decorate_mode_set(event_info, "slide", EINA_FALSE);
+}
+
+static void _my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!obj)
+ return;
+
+ /* Get sweeped item */
+ Elm_Object_Item *it = (Elm_Object_Item *)elm_genlist_decorated_item_get(obj);
+ /* Finish genlist sweep */
+ if (it)
+ elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
+}
+
+static void eb_free_list(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+ if (ug_data->gl_addrs != NULL) {
+ elm_genlist_clear(ug_data->gl_addrs);
+ evas_object_del(ug_data->gl_addrs);
+ ug_data->gl_addrs = NULL;
+ }
+ if (ug_data->gl_subject != NULL) {
+ elm_genlist_clear(ug_data->gl_subject);
+ evas_object_del(ug_data->gl_subject);
+ ug_data->gl_subject = NULL;
+ }
+ if (ug_data->gl_string != NULL) {
+ elm_genlist_clear(ug_data->gl_string);
+ evas_object_del(ug_data->gl_string);
+ ug_data->gl_string = NULL;
+ }
+ ug_data->address_rule_count = 0;
+ ug_data->subject_rule_count = 0;
+
+ if (ug_data->main_box) {
+ evas_object_del(ug_data->main_box);
+ ug_data->main_box = NULL;
+ }
+}
+
+static void eb_create_noc(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+
+ ug_data->noc = elm_layout_add(ug_data->navi_bar);
+ elm_layout_theme_set(ug_data->noc, "layout", "nocontents", "text");
+ elm_object_part_text_set(ug_data->noc, "elm.text", dgettext("sys_string", "IDS_COM_BODY_NO_CONTENTS"));
+
+ ug_data->noc_ly = elm_layout_add(ug_data->navi_bar);
+ elm_layout_file_set(ug_data->noc_ly, THEME_PATH, "email_block_noc");
+ evas_object_size_hint_weight_set(ug_data->noc_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ elm_object_part_content_set(ug_data->noc_ly, "contents", ug_data->noc);
+}
+
+static void eb_free_noc(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+
+ elm_object_part_content_unset(ug_data->noc_ly, "contents");
+ if (ug_data->noc) {
+ evas_object_del(ug_data->noc);
+ ug_data->noc = NULL;
+ }
+
+ if (ug_data->noc_ly) {
+ evas_object_del(ug_data->noc_ly);
+ ug_data->noc_ly = NULL;
+ }
+}
+
+static void eb_destroy_main_view(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+
+ eb_free_list(ug_data);
+ eb_free_noc(ug_data);
+
+ if (ug_data->popup_empty) {
+ evas_object_del(ug_data->popup_empty);
+ ug_data->popup_empty = NULL;
+ }
+
+ if (ug_data->timeout_popup) {
+ evas_object_del(ug_data->timeout_popup);
+ ug_data->timeout_popup = NULL;
+ }
+
+ if (ug_data->segment) {
+ evas_object_del(ug_data->segment);
+ ug_data->segment = NULL;
+ }
+
+ if (ug_data->control_bar) {
+ evas_object_del(ug_data->control_bar);
+ ug_data->control_bar = NULL;
+ }
+
+ if (ug_data->navi_bar) {
+ evas_object_del(ug_data->navi_bar);
+ ug_data->navi_bar = NULL;
+ }
+
+ if (ug_data->sub_ly) {
+ evas_object_del(ug_data->sub_ly);
+ ug_data->sub_ly = NULL;
+ }
+
+ if (ug_data->layout_main) {
+ evas_object_del(ug_data->layout_main);
+ ug_data->layout_main = NULL;
+ }
+}
+
+static void eb_destroy_filter_add_view(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+
+ if (ug_data->str_filter_name) {
+ g_free(ug_data->str_filter_name);
+ ug_data->str_filter_name = NULL;
+ }
+}
+
+static void eb_create_add_filter_view(EmailBlockAppData *ug_data, email_rule_t * rule)
+{
+ debug_log("");
+ ug_data->view_type = VIEW_BLOCK_FILTER_DATA_SET;
+
+ Elm_Object_Item *item = NULL;
+ Elm_Object_Item *git = NULL;
+
+ ug_data->gl_add_filter = elm_genlist_add(ug_data->navi_bar);
+ elm_object_style_set(ug_data->gl_add_filter, "dialogue");
+ elm_genlist_bounce_set(ug_data->gl_add_filter, EINA_FALSE, EINA_FALSE);
+ elm_object_theme_set(ug_data->gl_add_filter, ug_data->theme);
+
+ ug_data->itc1.item_style = "dialogue/1icon";
+ ug_data->itc1.func.text_get = NULL;
+ ug_data->itc1.func.content_get = _eb_gl_add_ef_icon_get;
+ ug_data->itc1.func.state_get = NULL;
+ ug_data->itc1.func.del = NULL;
+
+ ug_data->itc2.item_style = "dialogue/email.2icon";
+ ug_data->itc2.func.text_get = NULL;
+ ug_data->itc2.func.content_get = _eb_gl_add_ef_icon_get;
+ ug_data->itc2.func.state_get = NULL;
+ ug_data->itc2.func.del = NULL;
+
+ ug_data->itc3.item_style = "dialogue/separator/21/with_line";
+ ug_data->itc3.func.text_get = NULL;
+ ug_data->itc3.func.content_get = NULL;
+ ug_data->itc3.func.state_get = NULL;
+ ug_data->itc3.func.del = NULL;
+
+ ug_data->itc4.item_style = "dialogue/separator/20";
+ ug_data->itc4.func.text_get = NULL;
+ ug_data->itc4.func.content_get = NULL;
+ ug_data->itc4.func.state_get = NULL;
+ ug_data->itc4.func.del = NULL;
+
+ git = elm_genlist_item_append(ug_data->gl_add_filter, &ug_data->itc3, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ if (ug_data->block_type == TYPE_BLOCK_ADDRESS && ug_data->mode == BLOCK_MODE_ADD) {
+ item = elm_genlist_item_append(ug_data->gl_add_filter, &ug_data->itc2, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ } else {
+ item = elm_genlist_item_append(ug_data->gl_add_filter, &ug_data->itc1, (void *)rule, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+
+ ug_data->match_crt = TYPE_MATCH_CRT_INC_ON;
+
+ Evas_Object *conform;
+ elm_win_conformant_set(ug_data->win_main, 1);
+ conform = elm_conformant_add(ug_data->win_main);
+ elm_object_style_set(conform, "internal_layout");
+ evas_object_show(conform);
+
+ ug_data->layout_add = elm_layout_add(ug_data->navi_bar);
+ elm_layout_theme_set(ug_data->layout_add, "layout", "application", "noindicator");
+ evas_object_size_hint_weight_set(ug_data->layout_add, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ elm_object_content_set(conform, ug_data->gl_add_filter);
+ elm_object_part_content_set(ug_data->layout_add, "elm.swallow.content", conform);
+
+ ug_data->r_button2 = elm_button_add(ug_data->navi_bar);
+ elm_object_style_set(ug_data->r_button2, "naviframe/title/default");
+ elm_object_text_set(ug_data->r_button2, dgettext("sys_string", "IDS_COM_SK_DONE"));
+ evas_object_smart_callback_add(ug_data->r_button2, "clicked", _rule_save_cb, ug_data);
+ evas_object_show(ug_data->r_button2);
+
+ ug_data->l_button2 = elm_button_add(ug_data->navi_bar);
+ elm_object_style_set(ug_data->l_button2, "naviframe/title/default");
+ elm_object_text_set(ug_data->l_button2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ evas_object_smart_callback_add(ug_data->l_button2, "clicked", _back_prev_view_cb, ug_data);
+ evas_object_show(ug_data->l_button2);
+
+ Elm_Object_Item *navi_it = NULL;
+ if (rule) {
+ navi_it = elm_naviframe_item_push(ug_data->navi_bar, _("IDS_EMAIL_HEADER_EDIT_RULES"), NULL, NULL, ug_data->layout_add, NULL);
+ } else {
+ elm_object_disabled_set(ug_data->r_button2, EINA_TRUE);
+
+ if (ug_data->block_type == TYPE_BLOCK_ADDRESS) {
+ navi_it = elm_naviframe_item_push(ug_data->navi_bar, _("IDS_EMAIL_BODY_ADD_ADDRESS"), NULL, NULL, ug_data->layout_add, NULL);
+ } else if (ug_data->block_type == TYPE_BLOCK_SUBJECT) {
+ navi_it = elm_naviframe_item_push(ug_data->navi_bar, N_("Add subject"), NULL, NULL, ug_data->layout_add, NULL);
+ }
+ }
+
+ elm_object_item_part_content_set(navi_it, "title_right_btn", ug_data->l_button2);
+ elm_object_item_part_content_set(navi_it, "title_left_btn", ug_data->r_button2);
+
+ ug_data->back_btn_add = elm_object_item_part_content_get(navi_it, "prev_btn");
+ if (ug_data->back_btn_add)
+ evas_object_smart_callback_add(ug_data->back_btn_add, "clicked", _add_filter_cancel_clicked_cb, ug_data);
+}
+
+static void _rule_save_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ if (block_addr) {
+ g_free(block_addr);
+ block_addr = NULL;
+ }
+
+ elm_object_disabled_set(ug_data->r_button2, EINA_TRUE);
+ elm_object_disabled_set(ug_data->l_button2, EINA_TRUE);
+ elm_object_disabled_set(ug_data->back_btn_add, EINA_TRUE);
+
+ char *buf_ = (char *)elm_entry_entry_get(ug_data->entry_filter_name);
+ char *buf = elm_entry_markup_to_utf8(buf_);
+
+ if (!buf || !strlen(buf)) {
+ ug_data->popup_empty = elm_popup_add(ug_data->layout_main);
+ evas_object_size_hint_weight_set(ug_data->popup_empty, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_popup_timeout_set(ug_data->popup_empty, 2);
+ elm_object_text_set(ug_data->popup_empty, _("IDS_EMAIL_POP_PLEASE_FILL_ALL_THE_MANDATORY_FIELDS"));
+ elm_object_part_text_set(ug_data->popup_empty, "title,text", _("IDS_EMAIL_POP_ALERT"));
+ evas_object_smart_callback_add(ug_data->popup_empty, "block,clicked", _popup_block_clicked_cb, ug_data);
+ evas_object_show(ug_data->popup_empty);
+ goto FINISH_OFF;
+ }
+
+ gchar **vector;
+ char *item_str;
+ int i = 0;
+ int valid_vector_cnt = 0;
+ vector = g_strsplit_set(buf, ";", -1);
+ guint str_cnt = g_strv_length(vector);
+ debug_log("addr_cnt: %d", str_cnt);
+
+ if (ug_data->block_type == TYPE_BLOCK_ADDRESS) {
+ for (i = 0; i < str_cnt; i++) {
+ /* check if valid address */
+ if (vector[i] != NULL && strlen(vector[i]) > 0) {
+ if (email_get_address_validation(vector[i]) == FALSE) {
+ valid_vector_cnt = 0;
+ break;
+ }
+
+ valid_vector_cnt++;
+ }
+ }
+
+ if (valid_vector_cnt == 0) {
+ ug_data->popup_empty = elm_popup_add(ug_data->layout_main);
+ evas_object_size_hint_weight_set(ug_data->popup_empty, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_popup_timeout_set(ug_data->popup_empty, 2);
+ elm_object_text_set(ug_data->popup_empty, _("IDS_EMAIL_POP_INVALID_EMAIL_ADDRESS"));
+ elm_object_part_text_set(ug_data->popup_empty, "title,text", _("IDS_EMAIL_POP_ALERT"));
+ evas_object_smart_callback_add(ug_data->popup_empty, "block,clicked", _popup_block_clicked_cb, ug_data);
+ evas_object_show(ug_data->popup_empty);
+
+ g_strfreev(vector);
+ goto FINISH_OFF;
+ }
+
+ for (i = 0; i < str_cnt; i++) {
+ if (vector[i] != NULL && strlen(vector[i]) > 0) {
+ item_str = g_strdup(vector[i]);
+ _add_one_rule(ug_data, item_str);
+ g_free(item_str);
+ }
+ }
+ } else { /* subject */
+ int empty = 1;
+ debug_log("subject: [%s] %d", buf, strlen(buf));
+ for (i = 0; i < strlen(buf); i++)
+ if (buf[i] != ' ') {
+ empty = 0;
+ break;
+ }
+
+ if (empty == 0)
+ _add_one_rule(ug_data, (char *)buf);
+ else {
+ ug_data->popup_empty = elm_popup_add(ug_data->layout_main);
+ evas_object_size_hint_weight_set(ug_data->popup_empty, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_popup_timeout_set(ug_data->popup_empty, 2);
+ elm_object_text_set(ug_data->popup_empty, _("IDS_EMAIL_POP_UNABLE_TO_SAVE_SUBJECT_EMPTY"));
+ elm_object_part_text_set(ug_data->popup_empty, "title,text", _("IDS_EMAIL_POP_ALERT"));
+ evas_object_smart_callback_add(ug_data->popup_empty, "block,clicked", _popup_block_clicked_cb, ug_data);
+ evas_object_show(ug_data->popup_empty);
+
+ g_strfreev(vector);
+ goto FINISH_OFF;
+ }
+ }
+
+ g_strfreev(vector);
+
+ _changed_filter_type_cb(ug_data, ug_data->segment, NULL);
+
+ _back_prev_view_cb(ug_data, NULL, NULL);
+
+ FINISH_OFF:
+ elm_object_disabled_set(ug_data->r_button2, EINA_FALSE);
+ elm_object_disabled_set(ug_data->l_button2, EINA_FALSE);
+ elm_object_disabled_set(ug_data->back_btn_add, EINA_FALSE);
+ g_free(buf);
+}
+
+static void _add_one_rule(EmailBlockAppData *ug_data, char *buf)
+{
+ int ret = EMAIL_ERROR_NONE;
+ email_rule_t *rule = NULL;
+
+ /* add filtering rule */
+ rule = malloc(sizeof(email_rule_t));
+ if (!rule)
+ return;
+ rule->account_id = ug_data->account_id;
+ rule->type = ug_data->block_type;
+ rule->value = g_strdup(buf);
+ rule->faction = 2; /* BLOCK */
+ rule->target_mailbox_id = ug_data->mailbox_id;
+ rule->flag1 = 1; /* on */
+ rule->flag2 = 1;
+
+ debug_log("priv->type_crt %d value %s", ug_data->block_type, rule->value);
+
+ if (ug_data->mode == BLOCK_MODE_ADD) {
+ ret = email_add_rule(rule);
+ if (ret < 0)
+ debug_log("email_add_rule failed %d", ret);
+ }
+
+ else if (ug_data->mode == BLOCK_MODE_EDIT) {
+ ret = email_update_rule(ug_data->edit_filter_id, rule);
+ if (ret < 0)
+ debug_log("email_update_rule failed");
+ }
+
+ if (ret == EMAIL_ERROR_ALREADY_EXISTS) {
+ /* Should display error popup */
+ ug_data->timeout_popup = elm_popup_add(ug_data->layout_main);
+ evas_object_size_hint_weight_set(ug_data->timeout_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_popup_timeout_set(ug_data->timeout_popup, 2);
+ if (rule->type == EMAIL_FILTER_FROM)
+ elm_object_text_set(ug_data->timeout_popup, _("IDS_EMAIL_POP_ALREADY_BLOCKED"));
+ else
+ elm_object_text_set(ug_data->timeout_popup, _("IDS_EMAIL_POP_ALREADY_BLOCKED"));
+ elm_object_part_text_set(ug_data->timeout_popup, "title,text", _("IDS_EMAIL_POP_ALERT"));
+ evas_object_smart_callback_add(ug_data->timeout_popup, "block,clicked", _popup_block_clicked_cb, ug_data);
+ evas_object_show(ug_data->timeout_popup);
+ }
+
+ email_free_rule(&rule, 1);
+ g_free(rule);
+}
+
+static void _add_filter_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ ug_data->mode = BLOCK_MODE_ADD;
+ eb_create_add_filter_view(ug_data, NULL);
+}
+
+static void _changed_filter_type_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+ Elm_Object_Item *it;
+ char *label_str = NULL;
+ int value;
+
+ it = elm_segment_control_item_selected_get(obj);
+ value = elm_segment_control_item_index_get(it);
+ debug_log("index is value %d", value);
+
+ if (value < 0 || value >= 2) {
+ debug_log("invalid index, return");
+ return;
+ }
+
+ label_str = (char *)elm_segment_control_item_label_get(obj, value);
+ debug_log("label:%s", label_str);
+
+ if (label_str == NULL) {
+ debug_log("label str is NULL, return");
+ return;
+ }
+
+ ug_data->selected_segment = value;
+
+ elm_object_part_content_unset(ug_data->sub_ly, "elm.swallow.content");
+ eb_free_list(ug_data);
+ eb_free_noc(ug_data);
+
+ eb_create_list(ug_data);
+
+ if (g_strcmp0(label_str, dgettext("sys_string", "IDS_COM_BODY_SUBJECT")) == 0) {
+ if (ug_data->subject_rule_count > 0) {
+ elm_box_pack_end(ug_data->main_box, ug_data->gl_subject);
+ evas_object_show(ug_data->gl_subject);
+ elm_object_item_disabled_set(ug_data->c_item[0], EINA_FALSE);
+ } else {
+ eb_create_noc(ug_data);
+ elm_object_part_text_set(ug_data->noc, "elm.text", _("IDS_EMAIL_BODY_NO_SUBJECT"));
+ elm_box_pack_end(ug_data->main_box, ug_data->noc_ly);
+ evas_object_show(ug_data->noc_ly);
+ elm_object_item_disabled_set(ug_data->c_item[0], EINA_TRUE);
+ }
+
+ ug_data->block_type = TYPE_BLOCK_SUBJECT;
+ } else if (g_strcmp0(label_str, _("IDS_EMAIL_BODY_ADDRESS")) == 0) {
+ if (ug_data->address_rule_count > 0) {
+ elm_box_pack_end(ug_data->main_box, ug_data->gl_addrs);
+ evas_object_show(ug_data->gl_addrs);
+ elm_object_item_disabled_set(ug_data->c_item[0], EINA_FALSE);
+ } else {
+ eb_create_noc(ug_data);
+ elm_object_part_text_set(ug_data->noc, "elm.text", _("IDS_EMAIL_BODY_NO_ADDRESS"));
+ elm_box_pack_end(ug_data->main_box, ug_data->noc_ly);
+ evas_object_show(ug_data->noc_ly);
+ elm_object_item_disabled_set(ug_data->c_item[0], EINA_TRUE);
+ }
+
+ ug_data->block_type = TYPE_BLOCK_ADDRESS;
+ }
+}
+
+static void _back_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ /* This avoids moving back to Email settings screen */
+ Evas_Object *genlist = NULL;
+
+ if (ug_data->block_type == TYPE_BLOCK_SUBJECT) {
+ genlist = ug_data->gl_subject;
+ } else if (ug_data->block_type == TYPE_BLOCK_ADDRESS) {
+ genlist = ug_data->gl_addrs;
+ }
+
+ if (!elm_genlist_decorate_mode_get(genlist)) {
+ ug_destroy_me(ug_data->ug);
+ } else {
+ _edit_cb(ug_data, NULL, NULL);
+ }
+}
+
+static void _edit_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ Evas_Object *genlist = NULL;
+
+ if (ug_data->block_type == TYPE_BLOCK_SUBJECT) {
+ genlist = ug_data->gl_subject;
+ ug_data->edit_total_count = ug_data->subject_rule_count;
+ } else if (ug_data->block_type == TYPE_BLOCK_ADDRESS) {
+ genlist = ug_data->gl_addrs;
+ ug_data->edit_total_count = ug_data->address_rule_count;
+ }
+
+ if (!elm_genlist_decorate_mode_get(genlist)) {
+ ug_data->edit_checked_count = 0;
+ /* Change layout background color to edit_mode color */
+ edje_object_signal_emit(_EDJ(ug_data->layout_main), "elm,bg,show,edit_mode", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navi_main_it, "segment");
+ elm_object_item_part_content_unset(ug_data->navi_main_it, "controlbar");
+ evas_object_hide(ug_data->segment);
+ evas_object_hide(ug_data->control_bar);
+ elm_naviframe_item_style_set(ug_data->navi_main_it, "basic");
+
+ ug_data->control_bar_edit = elm_toolbar_add(ug_data->navi_bar);
+ elm_toolbar_shrink_mode_set(ug_data->control_bar_edit, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_object_style_set(ug_data->control_bar_edit, "naviframe");
+ evas_object_show(ug_data->control_bar_edit);
+
+ ug_data->c_item[2] = elm_toolbar_item_append(ug_data->control_bar_edit, NULL,
+ dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_rule_cb, ug_data);
+ elm_object_item_disabled_set(ug_data->c_item[2], EINA_TRUE);
+ elm_object_item_disabled_set(elm_toolbar_item_append(ug_data->control_bar_edit, NULL, "", NULL, NULL), EINA_TRUE);
+ elm_object_item_disabled_set(elm_toolbar_item_append(ug_data->control_bar_edit, NULL, "", NULL, NULL), EINA_TRUE);
+ elm_object_item_part_content_set(ug_data->navi_main_it, "controlbar", ug_data->control_bar_edit);
+
+ /* Append 'Select All' layout */
+ ug_data->select_all_layout = elm_layout_add(ug_data->main_box);
+ elm_layout_theme_set(ug_data->select_all_layout, "genlist", "item", "select_all/default");
+ evas_object_size_hint_weight_set(ug_data->select_all_layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_size_hint_align_set(ug_data->select_all_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_event_callback_add(ug_data->select_all_layout, EVAS_CALLBACK_MOUSE_DOWN, _select_all_layout_mouse_down_cb, ug_data);
+
+ ug_data->select_all_checkbox = elm_check_add(ug_data->select_all_layout);
+ elm_check_state_pointer_set(ug_data->select_all_checkbox, &ug_data->select_all_checked);
+ evas_object_smart_callback_add(ug_data->select_all_checkbox, "changed", _select_all_check_changed_cb, ug_data);
+ evas_object_propagate_events_set(ug_data->select_all_checkbox, EINA_FALSE);
+ elm_object_part_content_set(ug_data->select_all_layout, "elm.icon", ug_data->select_all_checkbox);
+
+ elm_object_part_text_set(ug_data->select_all_layout, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
+ elm_box_pack_start(ug_data->main_box, ug_data->select_all_layout);
+ evas_object_show(ug_data->select_all_layout);
+
+ /* Set reorder and edit mode */
+ elm_genlist_reorder_mode_set(genlist, EINA_TRUE);
+ elm_genlist_decorate_mode_set(genlist, EINA_TRUE);
+
+ /* This means even if selected, every click will make the selected callbacks be called. */
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+ /* This disables sweep menu in edit mode */
+ ug_data->itc_block.decorate_item_style = NULL; /* for lower layer */
+
+ elm_object_item_text_set(ug_data->navi_main_it, _("IDS_EMAIL_HEADER_DELETE"));
+ } else {
+ /* Change layout background color to default background color */
+ edje_object_signal_emit(_EDJ(ug_data->layout_main), "elm,bg,show,default", "elm");
+
+ elm_object_item_part_content_unset(ug_data->navi_main_it, "controlbar");
+ if (ug_data->control_bar_edit) {
+ evas_object_del(ug_data->control_bar_edit);
+ ug_data->control_bar_edit = NULL;
+ }
+
+ elm_naviframe_item_style_set(ug_data->navi_main_it, "segment");
+ elm_object_item_part_content_set(ug_data->navi_main_it, "segment", ug_data->segment);
+ elm_object_item_part_content_set(ug_data->navi_main_it, "controlbar", ug_data->control_bar);
+ evas_object_show(ug_data->segment);
+ evas_object_show(ug_data->control_bar);
+
+ /* Remove 'Select All' layout. */
+ elm_box_unpack(ug_data->main_box, ug_data->select_all_layout);
+ evas_object_del(ug_data->select_all_layout);
+ ug_data->select_all_layout = NULL;
+
+ if (ug_data->edit_select_info) {
+ evas_object_del(ug_data->edit_select_info);
+ ug_data->edit_select_info = NULL;
+ }
+
+ /* Unset edit mode */
+ elm_genlist_decorate_mode_set(genlist, EINA_FALSE);
+ elm_genlist_reorder_mode_set(genlist, EINA_FALSE);
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+
+ ug_data->select_all_checked = EINA_FALSE;
+ elm_check_state_pointer_set(ug_data->select_all_checkbox, &ug_data->select_all_checked);
+ _changed_filter_type_cb(ug_data, ug_data->segment, NULL);
+
+ /* Set the navigation bar title */
+ elm_object_item_text_set(ug_data->navi_main_it, _("IDS_EMAIL_HEADER_BLOCK_EMAILS"));
+ }
+}
+
+static void _back_prev_view_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ if (ug_data->view_type != VIEW_BLOCK_FILTER_DATA_SET) {
+ debug_log("**double clicked**");
+ return;
+ }
+
+ elm_object_disabled_set(ug_data->r_button2, EINA_TRUE);
+ elm_object_disabled_set(ug_data->l_button2, EINA_TRUE);
+ elm_object_disabled_set(ug_data->back_btn_add, EINA_TRUE);
+
+ debug_log("view type is %d", ug_data->view_type);
+ elm_naviframe_item_pop(ug_data->navi_bar);
+
+ if (block_addr) {
+ g_free(block_addr);
+ block_addr = NULL;
+ }
+
+ switch (ug_data->view_type) {
+ case VIEW_BLOCK_EDIT_FILTER_LIST:
+ /*eb_destroy_edit_view(ug_data);*/
+ ug_data->gl_edit = NULL;
+ ug_data->view_type = VIEW_BLOCK_MAIN;
+ break;
+
+ case VIEW_BLOCK_CRITERIA_SET:
+ /*eb_destroy_criterion_view(ug_data);*/
+ ug_data->view_type = VIEW_BLOCK_FILTER_DATA_SET;
+ break;
+
+ case VIEW_BLOCK_FILTER_DATA_SET:
+ eb_destroy_filter_add_view(ug_data);
+ ug_data->view_type = VIEW_BLOCK_MAIN;
+ _changed_filter_type_cb(ug_data, ug_data->segment, NULL);
+ break;
+ }
+}
+
+static void _add_filter_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ if (ug_data->view_type != VIEW_BLOCK_FILTER_DATA_SET) {
+ debug_log("**double clicked**");
+ return;
+ }
+
+ elm_object_disabled_set(ug_data->r_button2, EINA_TRUE);
+ elm_object_disabled_set(ug_data->l_button2, EINA_TRUE);
+ elm_object_disabled_set(ug_data->back_btn_add, EINA_TRUE);
+
+ debug_log("view type is %d", ug_data->view_type);
+
+ if (block_addr) {
+ g_free(block_addr);
+ block_addr = NULL;
+ }
+
+ switch (ug_data->view_type) {
+ case VIEW_BLOCK_EDIT_FILTER_LIST:
+ /*eb_destroy_edit_view(ug_data);*/
+ ug_data->gl_edit = NULL;
+ ug_data->view_type = VIEW_BLOCK_MAIN;
+ break;
+
+ case VIEW_BLOCK_CRITERIA_SET:
+ /*eb_destroy_criterion_view(ug_data);*/
+ ug_data->view_type = VIEW_BLOCK_FILTER_DATA_SET;
+ break;
+
+ case VIEW_BLOCK_FILTER_DATA_SET:
+ eb_destroy_filter_add_view(ug_data);
+ ug_data->view_type = VIEW_BLOCK_MAIN;
+ _changed_filter_type_cb(ug_data, ug_data->segment, NULL);
+ break;
+ }
+}
+
+static void _check_select_all(EmailBlockAppData *ug_data)
+{
+ debug_log("");
+ ListItemData *it_data;
+ Elm_Object_Item *it;
+
+ Evas_Object *genlist = NULL;
+
+ if (ug_data->block_type == TYPE_BLOCK_SUBJECT) {
+ genlist = ug_data->gl_subject;
+ } else if (ug_data->block_type == TYPE_BLOCK_ADDRESS) {
+ genlist = ug_data->gl_addrs;
+ }
+
+ if (ug_data->select_all_checked)
+ ug_data->edit_checked_count = ug_data->edit_total_count;
+ else
+ ug_data->edit_checked_count = 0;
+
+ it = elm_genlist_first_item_get(genlist);
+ while (it) {
+ it_data = elm_object_item_data_get(it);
+ if (it_data)
+ it_data->checked = ug_data->select_all_checked;
+ it = elm_genlist_item_next_get(it);
+ }
+
+ _del_button_state_set(ug_data);
+ _show_selection_info(ug_data);
+
+ /* Update all realized items */
+ elm_genlist_realized_items_update(genlist);
+}
+
+static void _select_all_layout_mouse_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ ug_data->select_all_checked = !ug_data->select_all_checked;
+ elm_check_state_pointer_set(ug_data->select_all_checkbox, &ug_data->select_all_checked);
+
+ _check_select_all(ug_data);
+}
+
+static void _select_all_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ _check_select_all(data);
+}
+
+static void _delete_rule_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+ Elm_Object_Item *it;
+ ListItemData *item_data = NULL;
+ Evas_Object *genlist = NULL;
+
+ if (ug_data->block_type == TYPE_BLOCK_SUBJECT) {
+ genlist = ug_data->gl_subject;
+ } else if (ug_data->block_type == TYPE_BLOCK_ADDRESS) {
+ genlist = ug_data->gl_addrs;
+ }
+
+ it = elm_genlist_first_item_get(genlist);
+ while (it) {
+ item_data = (ListItemData *) elm_object_item_data_get(it);
+ it = elm_genlist_item_next_get(it);
+
+ if ((item_data) && (item_data->checked)) {
+ email_delete_rule(item_data->rule->filter_id);
+ elm_object_item_del(item_data->it);
+ ug_data->edit_total_count--;
+ ug_data->edit_checked_count--;
+ }
+ }
+
+ if (ug_data->edit_select_info) {
+ evas_object_del(ug_data->edit_select_info);
+ ug_data->edit_select_info = NULL;
+ }
+
+ _del_button_state_set(ug_data);
+
+ if (ug_data->edit_total_count == 0) {
+ ug_data->select_all_checked = EINA_FALSE;
+ elm_check_state_pointer_set(ug_data->select_all_checkbox, &ug_data->select_all_checked);
+
+ _edit_cb(ug_data, NULL, NULL);
+ }
+}
+
+static void _get_contact_email_list(const char *val, char **result, EmailBlockAppData *ug_data)
+{
+ debug_log("");
+
+ int i = 0;
+ int j = 0;
+ int c_id = 0;
+ int *c_id_list = NULL;
+ int error_code = 0;
+ gsize c_id_list_len = 0;
+
+ char *result_address = NULL;
+ char *result_address_ = NULL;
+ char *email_addr = NULL;
+ char *tmp_addr = NULL;
+
+ CTSstruct *email_contact = NULL;
+ GSList *email_list = NULL;
+ GSList *li = NULL;
+ CTSvalue *email = NULL;
+
+ c_id_list = (int *)g_base64_decode(val, &c_id_list_len);
+
+ for (j = 0; j < c_id_list_len / sizeof(int); j++) {
+ c_id = c_id_list[j];
+ debug_log("selected contact id: %d", c_id);
+
+ error_code = contacts_svc_get_contact_value(CTS_GET_EMAIL_VALUE, c_id, &email);
+ tmp_addr = g_strdup(contacts_svc_value_get_str(email, CTS_EMAIL_VAL_ADDR_STR));
+ contacts_svc_value_free(email);
+
+ if (!tmp_addr) {
+ debug_log("addr is NULL");
+ continue;
+ }
+ debug_log("addr = %s", tmp_addr);
+
+ int ct_idx = contacts_svc_find_contact_by(CTS_FIND_BY_EMAIL, tmp_addr);
+ debug_log("ct_idx = %d", ct_idx);
+
+ if (ct_idx < 0) {
+ debug_log("CT ID is not valid");
+ continue;
+ }
+
+ error_code = contacts_svc_get_contact(ct_idx, &email_contact);
+ error_code = contacts_svc_struct_get_list(email_contact, CTS_CF_EMAIL_LIST, &email_list);
+
+ if (email_list != NULL && g_slist_length(email_list) > 0) {
+ int cnt = 0;
+ EmailRecipientInfo *ri = (EmailRecipientInfo *) calloc(1, sizeof(EmailRecipientInfo));
+
+ for (li = email_list; li != NULL; li = g_slist_next(li)) {
+ email_addr = (char *)contacts_svc_value_get_str(li->data, CTS_EMAIL_VAL_ADDR_STR);
+ if (email_addr && strlen(email_addr) > 0) {
+ debug_log("email: %s", email_addr);
+ debug_log("dest buf size (%d)", sizeof(ri->email_list[cnt].email_addr));
+ snprintf(ri->email_list[cnt].email_addr, sizeof(ri->email_list[cnt].email_addr), "%s", email_addr);
+ cnt++;
+ }
+ }
+
+ for (i = 0; i < cnt; i++) {
+ debug_log("ri->email_list[i].email_addr : [%s]", ri->email_list[i].email_addr);
+ if (result_address)
+ result_address_ = g_strconcat(result_address, ";", ri->email_list[i].email_addr, NULL);
+ else
+ result_address_ = g_strdup(ri->email_list[i].email_addr);
+
+ if (result_address)
+ g_free(result_address);
+ result_address = result_address_;
+ }
+
+ debug_log("result address : [%s]", result_address);
+ contacts_svc_struct_free(email_contact);
+ free(ri);
+ }
+ }
+
+ g_free(c_id_list);
+ *result = result_address;
+}
+
+static void _contact_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ if (g_strcmp0("", ug_data->str_filter_name) == 0) {
+ g_free(block_addr);
+ block_addr = NULL;
+ } else if (g_strcmp0(block_addr, ug_data->str_filter_name) != 0) {
+ g_free(block_addr);
+ block_addr = g_strdup(ug_data->str_filter_name);
+ }
+
+ ug_data->view_type = VIEW_BLOCK_CONTACT_ADD;
+
+ /*struct ug_cbs cbs = { 0, };
+
+ cbs.layout_cb = layout_cb;
+ cbs.result_cb = result_cb;
+ cbs.destroy_cb = destroy_cb;
+ cbs.priv = (void *)ug_data;*/
+
+ int ret;
+ service_h service = NULL;
+
+ ret = service_create(&service);
+
+ if (service) {
+ char contact_ug[255] = { 0, };
+ snprintf(contact_ug, sizeof(contact_ug), "%d", CT_UG_REQUEST_CHECK_FOR_EMAIL);
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CONTACT_TYPE, contact_ug);
+ //ug_data->ug_contact = ug_create(ug_data->ug, UG_NAME_CONTACT, UG_MODE_FULLVIEW, service, &cbs);
+ ug_data->ug_contact = create_ug(UG_NAME_CONTACT, service, data);
+ ret = service_destroy(service);
+ }
+}
+
+static void _recent_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ugd = (EmailBlockAppData *)data;
+
+ if (ugd == NULL) {
+ debug_log("ugd is NULL");
+ return;
+ }
+
+ if (g_strcmp0("", ugd->str_filter_name) == 0)
+ block_addr = NULL;
+ else if (g_strcmp0(block_addr, ugd->str_filter_name) != 0)
+ block_addr = g_strdup(ugd->str_filter_name);
+
+ _block_recent_create_view(ugd);
+}
+
+static void _block_rule_vconf_key_changed_cb(keynode_t *key, void *data)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = (EmailBlockAppData *)data;
+
+ if (!ug_data) return;
+
+ if (ug_data->view_type != VIEW_BLOCK_MAIN) {
+ debug_log("not in block main view");
+ return;
+ }
+
+ if (ug_data->block_type == TYPE_BLOCK_ADDRESS) {
+ if (!elm_genlist_decorate_mode_get(ug_data->gl_addrs)) {
+ debug_log("TYPE_BLOCK_ADDRESS");
+ elm_object_part_content_unset(ug_data->sub_ly, "elm.swallow.content");
+ eb_free_list(ug_data);
+ eb_free_noc(ug_data);
+ eb_create_list(ug_data);
+
+ if (ug_data->address_rule_count > 0) {
+ elm_box_pack_end(ug_data->main_box, ug_data->gl_addrs);
+ evas_object_show(ug_data->gl_addrs);
+ elm_object_item_disabled_set(ug_data->c_item[0], EINA_FALSE);
+ } else {
+ eb_create_noc(ug_data);
+ elm_object_part_text_set(ug_data->noc, "elm.text", _("IDS_EMAIL_BODY_NO_ADDRESS"));
+ elm_box_pack_end(ug_data->main_box, ug_data->noc_ly);
+ evas_object_show(ug_data->noc_ly);
+ elm_object_item_disabled_set(ug_data->c_item[0], EINA_TRUE);
+ }
+ }
+ }
+}
+
+static void _popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ugd = (EmailBlockAppData *)data;
+
+ if (ugd->popup_empty) {
+ evas_object_del(ugd->popup_empty);
+ ugd->popup_empty = NULL;
+ }
+
+ if (ugd->timeout_popup) {
+ evas_object_del(ugd->timeout_popup);
+ ugd->timeout_popup = NULL;
+ }
+}
+
+static char *_eb_gl_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ ListItemData *item_data = (ListItemData *) data;
+
+ email_rule_t *rule = NULL;
+ char buf[256];
+ memset(buf, 0x00, 256);
+
+ rule = item_data->rule;
+ snprintf(buf, sizeof(buf), "%s", rule->value);
+
+ return strdup(buf);
+}
+
+static Evas_Object *_eb_gl_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ ListItemData *item_data = (ListItemData *) data;
+ Evas_Object *button;
+ Evas_Object *check;
+
+ if (elm_genlist_decorate_mode_get(obj)) {
+ if (!strcmp(part, "elm.edit.icon.1")) {
+ check = elm_check_add(obj);
+ elm_check_state_pointer_set(check, &item_data->checked);
+ evas_object_smart_callback_add(check, "changed", _edit_item_check_changed_cb, item_data);
+ return check;
+ }
+ } else {
+ if (0 == strcmp(part, "elm.slide.swallow.1")) {
+ button = elm_button_add(obj);
+ elm_object_style_set(button, "text_only/sweep");
+ elm_object_text_set(button, dgettext("sys_string", "IDS_COM_SK_EDIT"));
+ evas_object_smart_callback_add(button, "clicked", _eb_sweep_edit_clicked_cb, (void *)data);
+ return button;
+ } else if (0 == strcmp(part, "elm.slide.swallow.2")) {
+ button = elm_button_add(obj);
+ elm_object_style_set(button, "text_only/sweep");
+ elm_object_text_set(button, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+ evas_object_smart_callback_add(button, "clicked", _eb_sweep_delete_clicked_cb, (void *)data);
+ return button;
+ }
+ }
+
+ return NULL;
+}
+
+static Evas_Object *_eb_gl_add_ef_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+
+ EmailBlockAppData *ug_data = _g_eb_ug_data;
+ email_rule_t *rule = (email_rule_t *) data;
+
+ if (!strcmp(part, "elm.icon")) {
+ ug_data->ef_filter_name = elm_layout_add(obj);
+ elm_layout_theme_set(ug_data->ef_filter_name, "layout", "editfield", "title");
+ ug_data->entry_filter_name = elm_entry_add(obj);
+ elm_entry_scrollable_set(ug_data->entry_filter_name, EINA_TRUE);
+ elm_entry_single_line_set(ug_data->entry_filter_name, TRUE);
+ elm_entry_cnp_mode_set(ug_data->entry_filter_name, ELM_CNP_MODE_PLAINTEXT);
+ if (ug_data->block_type == TYPE_BLOCK_ADDRESS) {
+ elm_entry_input_panel_layout_set(ug_data->entry_filter_name, ELM_INPUT_PANEL_LAYOUT_EMAIL);
+ } else if (ug_data->block_type == TYPE_BLOCK_SUBJECT) {
+ elm_entry_input_panel_layout_set(ug_data->entry_filter_name, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+ }
+ evas_object_smart_callback_add(ug_data->entry_filter_name, "preedit,changed", _cb_backup_input, ug_data->ef_filter_name);
+ evas_object_smart_callback_add(ug_data->entry_filter_name, "changed", _cb_backup_input, ug_data->ef_filter_name);
+ evas_object_smart_callback_add(ug_data->entry_filter_name, "focused", _cb_entry_focused, ug_data->ef_filter_name);
+ evas_object_smart_callback_add(ug_data->entry_filter_name, "unfocused", _cb_entry_unfocused, ug_data->ef_filter_name);
+ evas_object_show(ug_data->entry_filter_name);
+
+ elm_object_part_content_set(ug_data->ef_filter_name, "elm.swallow.content", ug_data->entry_filter_name);
+ if (ug_data->block_type == TYPE_BLOCK_ADDRESS) {
+ elm_object_part_text_set(ug_data->ef_filter_name, "elm.text", _("IDS_EMAIL_BODY_ADDRESS"));
+ } else if (ug_data->block_type == TYPE_BLOCK_SUBJECT) {
+ elm_object_part_text_set(ug_data->ef_filter_name, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SUBJECT"));
+ }
+ elm_object_signal_callback_add(ug_data->ef_filter_name, "elm,eraser,clicked", "elm", _cb_eraser_clicked, ug_data->entry_filter_name);
+
+ evas_object_size_hint_weight_set(ug_data->ef_filter_name, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(ug_data->ef_filter_name);
+
+ if (ug_data->str_filter_name)
+ elm_entry_entry_set(ug_data->entry_filter_name, ug_data->str_filter_name);
+
+ if (rule) {
+ elm_entry_entry_set(ug_data->entry_filter_name, rule->value);
+ if (ug_data->block_type == TYPE_BLOCK_ADDRESS) {
+ block_addr = realloc(block_addr, strlen(rule->value) + 1);
+ sprintf(block_addr, "%s", rule->value);
+ }
+
+ ug_data->edit_filter_id = rule->filter_id;
+ }
+
+ if (ug_data->view_type == VIEW_BLOCK_FILTER_DATA_SET) {
+ evas_object_show(ug_data->entry_filter_name);
+ elm_object_focus_set(ug_data->entry_filter_name, EINA_TRUE);
+ }
+
+ return ug_data->ef_filter_name;
+ } else if (!strcmp(part, "elm.icon2")) {
+ char buf[MAX_STR_LEN] = { 0, };
+ Evas_Object *btn = elm_button_add(obj);
+ Evas_Object *ic = elm_icon_add(obj);
+ snprintf(buf, sizeof(buf), "%s/M02_function_ccbcc.png", IMGDIR);
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
+ evas_object_show(ic);
+ elm_object_style_set(btn, "circle/empty");
+ evas_object_show(btn);
+ elm_object_part_content_set(btn, "icon", ic);
+ evas_object_smart_callback_add(btn, "clicked", _contact_button_cb, ug_data);
+ return btn;
+ }
+
+ return NULL;
+}
+
+/*static Evas_Object *_eb_gl_add_btn_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+
+ EmailBlockAppData *ug_data = _g_eb_ug_data;
+
+ if (!strcmp(part, "elm.icon.1")) {
+ ug_data->recent_btn = elm_button_add(obj);
+ elm_object_text_set(ug_data->recent_btn, dgettext("sys_string", "IDS_COM_BUTTON_RECENT"));
+ evas_object_show(ug_data->recent_btn);
+ evas_object_smart_callback_add(ug_data->recent_btn, "clicked", _recent_button_cb, ug_data);
+ return ug_data->recent_btn;
+ } else if (!strcmp(part, "elm.icon.2")) {
+ ug_data->contact_btn = elm_button_add(obj);
+ elm_object_text_set(ug_data->contact_btn, dgettext("sys_string", "IDS_COM_BODY_CONTACTS"));
+ evas_object_smart_callback_add(ug_data->contact_btn, "clicked", _contact_button_cb, ug_data);
+ evas_object_show(ug_data->contact_btn);
+ return ug_data->contact_btn;
+ }
+
+ return NULL;
+}*/
+
+static void _eb_sweep_edit_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ ListItemData *item_data = (ListItemData *) data;
+ email_rule_t *rule = item_data->rule;
+
+ EmailBlockAppData *ug_data = _g_eb_ug_data;
+ ug_data->mode = BLOCK_MODE_EDIT;
+ eb_create_add_filter_view(ug_data, rule);
+}
+
+static void _eb_sweep_delete_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ ListItemData *item_data = (ListItemData *) data;
+ email_rule_t *rule = item_data->rule;
+
+ EmailBlockAppData *ug_data = _g_eb_ug_data;
+
+ if (EMAIL_ERROR_NONE != email_delete_rule(rule->filter_id)) {
+ debug_critical("email_delete_rule fails");
+ }
+
+ _changed_filter_type_cb(ug_data, ug_data->segment, NULL);
+}
+
+static void _eb_gl_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ EmailBlockAppData *ug_data = _g_eb_ug_data;
+ ListItemData *item_data = (ListItemData *) data;
+
+ if (elm_genlist_decorate_mode_get(item_data->genlist)) {
+ item_data->checked = !item_data->checked;
+
+ if (item_data->checked)
+ ug_data->edit_checked_count++;
+ else
+ ug_data->edit_checked_count--;
+
+ if (ug_data->select_all_layout) {
+ if (ug_data->edit_total_count == ug_data->edit_checked_count)
+ ug_data->select_all_checked = EINA_TRUE;
+ else
+ ug_data->select_all_checked = EINA_FALSE;
+
+ elm_check_state_pointer_set(ug_data->select_all_checkbox, &ug_data->select_all_checked);
+ }
+
+ elm_genlist_item_update(item_data->it);
+ _del_button_state_set(ug_data);
+ _show_selection_info(ug_data);
+
+ } else {
+ email_rule_t *rule = NULL;
+ ug_data->selected_item = elm_genlist_selected_item_get(obj);
+ ug_data->mode = BLOCK_MODE_EDIT;
+
+ if (item_data) {
+ rule = item_data->rule;
+ }
+ eb_create_add_filter_view(ug_data, rule);
+ elm_genlist_item_selected_set(ug_data->selected_item, EINA_FALSE);
+ }
+}
+
+static void _eb_gl_del(void *data, Evas_Object *obj)
+{
+ debug_log("");
+ ListItemData *item_data = (ListItemData *) data;
+
+ if (item_data)
+ g_free(item_data);
+}
+
+static void _cb_backup_input(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ug_data = _g_eb_ug_data;
+ Evas_Object *eo = (Evas_Object *)obj;
+
+ if (elm_object_focus_get(data)) {
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+ else
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+ }
+
+ if (eo == ug_data->entry_filter_name) {
+ if (ug_data->str_filter_name) {
+ g_free(ug_data->str_filter_name);
+ ug_data->str_filter_name = NULL;
+ }
+
+ ug_data->str_filter_name = g_strdup(elm_entry_entry_get(eo));
+
+ if (!g_strcmp0(ug_data->str_filter_name, "")) {
+ elm_object_disabled_set(ug_data->r_button2, EINA_TRUE);
+ } else {
+ elm_object_disabled_set(ug_data->r_button2, EINA_FALSE);
+ }
+ }
+}
+
+static void _cb_entry_focused(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+ elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+}
+
+static void _cb_entry_unfocused(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+}
+
+static void _cb_eraser_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ debug_log("");
+
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ elm_entry_entry_set(data, "");
+}
+
+static void _edit_item_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ ListItemData *item_data = (ListItemData *) data;
+ EmailBlockAppData *ug_data = _g_eb_ug_data;
+
+ if (item_data->checked)
+ ug_data->edit_checked_count++;
+ else
+ ug_data->edit_checked_count--;
+
+ /* update select all check button */
+ if (ug_data->select_all_layout) {
+ if (ug_data->edit_total_count == ug_data->edit_checked_count)
+ ug_data->select_all_checked = EINA_TRUE;
+ else
+ ug_data->select_all_checked = EINA_FALSE;
+
+ elm_check_state_pointer_set(ug_data->select_all_checkbox, &ug_data->select_all_checked);
+ }
+ _del_button_state_set(ug_data);
+ _show_selection_info(ug_data);
+}
+
+static void _del_button_state_set(EmailBlockAppData *ug_data)
+{
+ if (ug_data->edit_checked_count > 0)
+ elm_object_item_disabled_set(ug_data->c_item[2], EINA_FALSE);
+ else
+ elm_object_item_disabled_set(ug_data->c_item[2], EINA_TRUE);
+}
+
+static void _show_selection_info(EmailBlockAppData *ugd)
+{
+ if (!ugd->edit_select_info) {
+ ugd->edit_select_info = elm_notify_add(ugd->layout_main);
+ elm_notify_orient_set(ugd->edit_select_info, ELM_NOTIFY_ORIENT_BOTTOM);
+ ugd->edit_select_info_ly = elm_layout_add(ugd->layout_main);
+ elm_layout_theme_set(ugd->edit_select_info_ly, "standard", "selectioninfo", "vertical/bottom_64");
+ elm_object_content_set(ugd->edit_select_info, ugd->edit_select_info_ly);
+ }
+ if (ugd->edit_checked_count == 0)
+ evas_object_hide(ugd->edit_select_info);
+ else {
+ char text[128] = { '0', };
+ if (ugd->block_type == TYPE_BLOCK_ADDRESS) {
+ if (ugd->edit_checked_count == 1)
+ snprintf(text, 127, "%s (%d)", dgettext("sys_string", "IDS_COM_POP_SELECTED"), ugd->edit_checked_count);
+ else
+ snprintf(text, 127, "%s (%d)", dgettext("sys_string", "IDS_COM_POP_SELECTED"), ugd->edit_checked_count);
+ } else {
+ if (ugd->edit_checked_count == 1)
+ snprintf(text, 127, "%s (%d)", dgettext("sys_string", "IDS_COM_POP_SELECTED"), ugd->edit_checked_count);
+ else
+ snprintf(text, 127, "%s (%d)", dgettext("sys_string", "IDS_COM_POP_SELECTED"), ugd->edit_checked_count);
+ }
+ edje_object_part_text_set(_EDJ(ugd->edit_select_info_ly), "elm.text", text);
+ /*elm_notify_timeout_set(select_info, 1);*/
+ evas_object_show(ugd->edit_select_info);
+ }
+}
+
+static void _block_recent_create_view(void *data)
+{
+ debug_log("");
+
+ EmailBlockAppData *ugd = (EmailBlockAppData *)data;
+
+ Evas_Object *recent_layout;
+ Evas_Object *l_button;
+ Evas_Object *cbar;
+
+ _block_recent_init(ugd);
+
+ ugd->view_type = VIEW_BLOCK_RECENT_ADD;
+
+ _block_recent_set_genlist_item_style(ugd);
+
+ ugd->recent_genlist = _block_recent_create_genlist_top_half(ugd);
+
+ if (ugd->total_count > 0)
+ evas_object_data_set(ugd->recent_genlist, "view_data", ugd);
+
+ l_button = elm_button_add(ugd->navi_bar);
+ evas_object_smart_callback_add(l_button, "clicked", _block_recent_back_cb, ugd);
+ elm_object_style_set(l_button, "naviframe/back_btn/default");
+ ugd->recent_lbutton = l_button;
+
+ Elm_Object_Item *navi_it = NULL;
+
+ if (ugd->total_count > 0) {
+ recent_layout = _block_recent_create_layout(ugd);
+ _block_recent_set_editmode(ugd);
+
+ navi_it = elm_naviframe_item_push(ugd->navi_bar, _("IDS_EMAIL_HEADER_RECENT_T_HEADER"), l_button, NULL, recent_layout, NULL);
+
+ cbar = elm_toolbar_add(ugd->navi_bar);
+ elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_object_style_set(cbar, "naviframe");
+ evas_object_show(cbar);
+
+ elm_object_item_disabled_set(elm_toolbar_item_append(cbar, NULL, "", NULL, NULL), EINA_TRUE);
+ ugd->c_item[3] = elm_toolbar_item_append(cbar, NULL,
+ dgettext("sys_string", "IDS_COM_SK_DONE"), _block_recent_done_cb, ugd);
+
+ elm_object_item_part_content_set(navi_it, "controlbar", cbar);
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_TRUE);
+
+ evas_object_show(recent_layout);
+ evas_object_show(ugd->recent_genlist);
+
+ Evas_Object *waiting_popup = elm_popup_add(ugd->win_main);
+ evas_object_size_hint_weight_set(waiting_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(waiting_popup, _("IDS_EMAIL_POP_RETRIEVING_ADDRESS_LIST_ING"));
+ elm_object_part_text_set(waiting_popup, "title,text", _("IDS_EMAIL_HEADER_RECENT_T_HEADER"));
+ evas_object_smart_callback_add(waiting_popup, "block,clicked", _popup_block_clicked_cb, ugd);
+ evas_object_show(waiting_popup);
+ ugd->waiting_popup = waiting_popup;
+
+ elm_object_disabled_set(l_button, EINA_TRUE);
+ ugd->recent_timer = ecore_timer_add(0.5, _block_recent_create_genlist_bottom_half, ugd);
+
+ } else {
+ ugd->no_content = _block_recent_create_no_content_view(ugd->navi_bar, ugd);
+ navi_it = elm_naviframe_item_push(ugd->navi_bar, _("IDS_EMAIL_HEADER_RECENT_T_HEADER"), l_button, NULL, ugd->no_content, NULL);
+ evas_object_show(ugd->no_content);
+ }
+}
+
+static void _block_recent_init(EmailBlockAppData *ugd)
+{
+ elm_object_content_unset(ugd->recent_box);
+
+ elm_box_unpack(ugd->recent_box,ugd->block_select_all_layout);
+ elm_box_unpack(ugd->recent_box,ugd->recent_genlist);
+
+ if (ugd->recent_genlist!= NULL) {
+ elm_genlist_clear(ugd->recent_genlist);
+ evas_object_del(ugd->recent_genlist);
+ ugd->recent_genlist = NULL;
+ }
+ if (ugd->block_select_all_layout != NULL) {
+ debug_log("delete layout");
+ evas_object_del(ugd->block_select_all_layout);
+ ugd->block_select_all_layout = NULL;
+ }
+ if (ugd->no_content != NULL) {
+ evas_object_del(ugd->no_content);
+ ugd->no_content = NULL;
+ }
+ if (ugd->recent_box!= NULL) {
+ evas_object_del(ugd->recent_box);
+ ugd->recent_box = NULL;
+ }
+
+ edje_object_signal_emit(_EDJ(ugd->layout_main), "elm,bg,show,default", "elm");
+}
+
+static void _block_recent_set_editmode(void *data)
+{
+ debug_log("");
+
+ EmailBlockAppData *ugd = (EmailBlockAppData *)data;
+
+ Evas_Object *genlist = ugd->recent_genlist;
+ Evas_Object *layout, *check;
+
+ if (!elm_genlist_decorate_mode_get(genlist)) {
+ edje_object_signal_emit(_EDJ(ugd->layout_main), "elm,bg,show,edit_mode", "elm");
+
+ layout = ugd->block_select_all_layout = elm_layout_add(ugd->recent_box);
+ elm_layout_theme_set(layout, "genlist", "item", "select_all/default");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN, _block_recent_select_all_layout_mouse_down_cb, ugd);
+
+ check = ugd->select_all_checkbox = elm_check_add(ugd->block_select_all_layout);
+ elm_check_state_pointer_set(check, &ugd->block_recent_select_all_checked);
+ evas_object_smart_callback_add(check, "changed", _block_recent_select_all_check_changed_cb, ugd);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ elm_object_part_content_set(layout, "elm.icon", check);
+
+ elm_object_part_text_set(ugd->block_select_all_layout, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
+ elm_box_pack_start(ugd->recent_box, ugd->block_select_all_layout);
+ evas_object_show(ugd->block_select_all_layout);
+
+ elm_genlist_reorder_mode_set(genlist, EINA_FALSE);
+ elm_genlist_decorate_mode_set(genlist, EINA_TRUE);
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ }
+}
+
+static void _block_recent_select_all_layout_mouse_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
+{
+ EmailBlockAppData *ugd = (EmailBlockAppData *)data;
+
+ ugd->block_recent_select_all_checked = !ugd->block_recent_select_all_checked;
+ elm_check_state_pointer_set(ugd->select_all_checkbox, &ugd->block_recent_select_all_checked);
+
+ _block_recent_check_select_all(ugd);
+
+ if (ugd->checked_count > 0)
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_FALSE);
+ else
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_TRUE);
+}
+
+static void _block_recent_select_all_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ EmailBlockAppData *ugd = (EmailBlockAppData *)data;
+
+ _block_recent_check_select_all(data);
+
+ if (ugd->checked_count > 0)
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_FALSE);
+ else
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_TRUE);
+}
+
+static void _block_recent_check_select_all(EmailBlockAppData *ugd)
+{
+ debug_log("");
+ Item_Data *it_data;
+ Elm_Object_Item *it;
+
+ if (ugd->block_recent_select_all_checked)
+ ugd->checked_count = ugd->total_count;
+ else
+ ugd->checked_count = 0;
+
+ it = elm_genlist_first_item_get(ugd->recent_genlist);
+ while (it) {
+ it_data = elm_object_item_data_get(it);
+ if (it_data)
+ it_data->checked = ugd->block_recent_select_all_checked;
+ it = elm_genlist_item_next_get(it);
+ }
+ elm_genlist_realized_items_update(ugd->recent_genlist);
+
+ _block_recent_show_selection_info(ugd);
+}
+
+static Evas_Object *_block_recent_create_genlist_top_half(void *data)
+{
+ debug_log("");
+
+ EmailBlockAppData *ugd = (EmailBlockAppData *)data;
+
+ int mail_cnt = 0;
+ int err;
+
+ Evas_Object *recent_list = NULL;
+ recent_list = elm_genlist_add(ugd->navi_bar);
+
+ elm_genlist_homogeneous_set(recent_list, EINA_TRUE);
+ elm_genlist_tree_effect_enabled_set(recent_list, EINA_TRUE);
+ evas_object_size_hint_weight_set(recent_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(recent_list, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ email_mail_list_item_t *mail_data = NULL;
+ email_mailbox_t *mail_box = NULL;
+
+ err = email_get_mailbox_by_mailbox_type(ugd->account_id, EMAIL_MAILBOX_TYPE_INBOX, &mail_box);
+
+ if (err != EMAIL_ERROR_NONE || mail_box == NULL) {
+ debug_log("[FAILED] email_get_mailbox_by_mailbox_type:%d", err);
+ goto FINISH_OFF;
+ }
+
+ debug_log("mailbox_id = %d", mail_box->mailbox_id);
+
+ err = email_get_mail_list(ugd->account_id,
+ mail_box->mailbox_id, EMAIL_LIST_TYPE_NORMAL, -1,
+ 10,
+ EMAIL_SORT_DATETIME_HIGH, &mail_data, &mail_cnt);
+
+ if (mail_box) {
+ email_free_mailbox(&mail_box, 1);
+ mail_box = NULL;
+ }
+
+ if (err < 0 || mail_cnt < 0) {
+ debug_log("Get mail address list failed : [%d]", err);
+ goto FINISH_OFF;
+ }
+
+ ugd->recent_mail_data = mail_data;
+
+FINISH_OFF:
+ ugd->total_count = mail_cnt;
+ return recent_list;
+}
+
+static Eina_Bool _block_recent_create_genlist_bottom_half(void *data)
+{
+ debug_log("");
+
+ EmailBlockAppData *ugd = (EmailBlockAppData *)data;
+
+ int index;
+ int total_cnt = 0;
+
+ Evas_Object *recent_list = ugd->recent_genlist;
+ Item_Data *item_data = NULL;
+
+ email_address_info_list_t *addrs_info_list = NULL;
+ email_mail_list_item_t *mail_data = ugd->recent_mail_data;
+
+ if (!mail_data) {
+ debug_log("mail_data is NULL");
+ goto FINISH_OFF;
+ }
+
+ if (ugd->total_count > MAX_RECENT_MAIL_TO_RETRIEVE)
+ ugd->total_count = MAX_RECENT_MAIL_TO_RETRIEVE;
+
+ for (index = 0; index < ugd->total_count; index++, mail_data++) {
+
+ if (mail_data->mail_id <= 0) {
+ debug_log("Invalid mail ID");
+ goto FINISH_OFF;
+ }
+
+ email_get_address_info_list(mail_data->mail_id, &addrs_info_list);
+
+ if (!addrs_info_list || !(addrs_info_list->from)) {
+ debug_log("address info is NULL");
+ goto FINISH_OFF;
+ }
+
+ int n_to_list = g_list_length(addrs_info_list->from);
+ int i = 0;
+
+ for (i = 0; i < n_to_list; i++) {
+ email_address_info_t *addrs_info = NULL;
+
+ addrs_info = (email_address_info_t *) g_list_nth_data(addrs_info_list->from, i);
+
+ if (addrs_info && addrs_info->address) {
+ if (total_cnt == MAX_RECENT_CNT)
+ break;
+
+ item_data = calloc(1, sizeof(Item_Data));
+ item_data->address = g_strdup(addrs_info->address);
+ if (!_block_recent_check_addr_is_duplicated(addrs_info->address, recent_list)) {
+ item_data->it = elm_genlist_item_append(recent_list,
+ &itc,
+ item_data,
+ NULL, ELM_GENLIST_ITEM_NONE, _block_recent_gl_sel, item_data);
+
+ total_cnt++;
+ }
+ }
+ }
+ }
+
+ if (addrs_info_list) {
+ email_free_address_info_list(&addrs_info_list);
+ addrs_info_list = NULL;
+ }
+
+FINISH_OFF:
+
+ if (ugd->waiting_popup) {
+ evas_object_del(ugd->waiting_popup);
+ ugd->waiting_popup = NULL;
+ }
+
+ if (ugd->recent_mail_data) {
+ g_free(ugd->recent_mail_data);
+ ugd->recent_mail_data = NULL;
+ }
+
+ elm_object_disabled_set(ugd->recent_lbutton, EINA_FALSE);
+ ugd->total_count = total_cnt;
+ return EINA_FALSE;
+}
+
+static Evas_Object *_block_recent_create_layout(EmailBlockAppData *ugd)
+{
+ Evas_Object *genlist = ugd->recent_genlist;
+ Evas_Object *box, *conform;
+
+ elm_win_conformant_set(ugd->win_main, EINA_TRUE);
+
+ conform = elm_conformant_add(ugd->navi_bar);
+ elm_object_style_set(conform, "internal_layout");
+ evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(conform);
+
+ box = elm_box_add(ugd->navi_bar);
+ ugd->recent_box = box;
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(box);
+
+ evas_object_show(genlist);
+ elm_box_pack_end(box, genlist);
+
+ elm_object_content_set(conform, box);
+
+ return conform;
+}
+
+static void _block_recent_set_genlist_item_style(EmailBlockAppData *ugd)
+{
+ itc.item_style = "1text";
+ itc.func.text_get = _block_recent_gl_label_get;
+ itc.func.content_get = _block_recent_gl_icon_get;
+ itc.func.state_get = NULL;
+ itc.func.del = NULL;
+ itc.decorate_all_item_style = "edit_default";
+}
+
+static void _block_recent_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ Item_Data *item_data = (Item_Data *) data;
+ EmailBlockAppData *ugd = (EmailBlockAppData *)evas_object_data_get(obj, "view_data");
+
+ if (elm_genlist_decorate_mode_get(ugd->recent_genlist)) {
+ item_data->checked = !item_data->checked;
+
+ if (item_data->checked)
+ ugd->checked_count++;
+ else
+ ugd->checked_count--;
+
+ if (ugd->block_select_all_layout) {
+ if (ugd->total_count == ugd->checked_count)
+ ugd->block_recent_select_all_checked = EINA_TRUE;
+ else
+ ugd->block_recent_select_all_checked = EINA_FALSE;
+
+ elm_check_state_pointer_set(ugd->select_all_checkbox, &ugd->block_recent_select_all_checked);
+ }
+
+ elm_genlist_item_update(item_data->it);
+
+ if (ugd->checked_count > 0)
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_FALSE);
+ else
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_TRUE);
+
+ _block_recent_show_selection_info(ugd);
+ }
+}
+
+static char *_block_recent_gl_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+
+ Item_Data *item_data = (Item_Data *) data;
+ if (!item_data)
+ return NULL;
+
+ debug_log("addr = %s", item_data->address);
+
+ if (!g_strcmp0(part, "elm.text"))
+ return strdup(item_data->address);
+
+ return NULL;
+}
+
+static Evas_Object *_block_recent_gl_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ Evas_Object *check = NULL;
+ Item_Data *item_data = (Item_Data *) data;
+
+ if (elm_genlist_decorate_mode_get(obj)) {
+ if (!strcmp(part, "elm.edit.icon.1")) {
+ check = elm_check_add(obj);
+ elm_check_state_pointer_set(check, &item_data->checked);
+ evas_object_smart_callback_add(check, "changed", _block_recent_item_check_changed_cb, item_data);
+ return check;
+ }
+ }
+
+ return NULL;
+}
+
+static void _block_recent_item_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ Item_Data *item_data = (Item_Data *) data;
+ EmailBlockAppData *ugd = (EmailBlockAppData *)evas_object_data_get(elm_object_item_widget_get(item_data->it), "view_data");
+
+ if (item_data->checked)
+ ugd->checked_count++;
+ else
+ ugd->checked_count--;
+
+ if (ugd->block_select_all_layout) {
+ if (ugd->total_count == ugd->checked_count)
+ ugd->block_recent_select_all_checked = EINA_TRUE;
+ else
+ ugd->block_recent_select_all_checked = EINA_FALSE;
+
+ elm_check_state_pointer_set(ugd->select_all_checkbox, &ugd->block_recent_select_all_checked);
+ }
+
+ if (ugd->checked_count > 0)
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_FALSE);
+ else
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_TRUE);
+
+ _block_recent_show_selection_info(ugd);
+}
+
+static bool _block_recent_check_addr_is_duplicated(const char *addr, Evas_Object *recent_list)
+{
+ debug_log("");
+
+ Elm_Object_Item *item;
+ Item_Data *it_data;
+
+ debug_log("addr = %s", addr);
+
+ item = elm_genlist_first_item_get(recent_list);
+
+ while (item) {
+ it_data = (Item_Data *) elm_object_item_data_get(item);
+
+ debug_log("str = %s", it_data->address);
+
+ if (g_strcmp0(addr, it_data->address) == 0)
+ return true;
+
+ item = elm_genlist_item_next_get(item);
+ }
+
+ return false;
+}
+
+static void _block_recent_back_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ EmailBlockAppData *ugd = (EmailBlockAppData *)data;
+
+ if (ugd->view_type != VIEW_BLOCK_RECENT_ADD) {
+ debug_log("**double clicked**");
+ return;
+ }
+
+ elm_object_disabled_set(ugd->recent_lbutton, EINA_TRUE);
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_TRUE);
+
+ if (ugd->recent_select_info) {
+ evas_object_del(ugd->recent_select_info);
+ ugd->recent_select_info = NULL;
+ }
+
+ ugd->block_recent_select_all_checked = EINA_FALSE;
+
+ ugd->checked_count = 0;
+
+ ugd->view_type = VIEW_BLOCK_FILTER_DATA_SET;
+
+ /*elm_object_signal_emit(ugd->ef_filter_name, "clicked", "elm");*/
+ evas_object_show(ugd->entry_filter_name);
+ elm_object_focus_set(ugd->entry_filter_name, EINA_TRUE);
+
+ elm_naviframe_item_pop(ugd->navi_bar);
+}
+
+static void _block_recent_done_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailBlockAppData *ugd = (EmailBlockAppData *)data;
+
+ char *result_address = NULL;
+ char *result_address_ = NULL;
+
+ elm_object_disabled_set(ugd->recent_lbutton, EINA_TRUE);
+ elm_object_item_disabled_set(ugd->c_item[3], EINA_TRUE);
+
+ if (ugd->recent_select_info) {
+ evas_object_del(ugd->recent_select_info);
+ ugd->recent_select_info = NULL;
+ }
+
+ Item_Data *item_data;
+ Elm_Object_Item *it;
+
+ it = elm_genlist_first_item_get(ugd->recent_genlist);
+
+ while (it) {
+ item_data = elm_object_item_data_get(it);
+ it = elm_genlist_item_next_get(it);
+
+ if ((item_data) && (item_data->checked)) {
+ char *email_addr = item_data->address;
+ if (email_addr) {
+ if (result_address)
+ result_address_ = g_strconcat(result_address, ";", email_addr, NULL);
+ else
+ result_address_ = g_strdup(email_addr);
+
+ if (result_address)
+ g_free(result_address);
+
+ result_address = result_address_;
+ }
+ }
+ debug_log("result address : [%s]", result_address);
+ }
+
+ if (!block_addr) {
+ block_addr = g_strdup(result_address);
+ debug_log("Null block_addr = %s", block_addr);
+ elm_entry_entry_set(ugd->entry_filter_name, block_addr);
+ ugd->str_filter_name = g_strdup(block_addr);
+ } else {
+ char *addr_tmp = block_addr;
+ block_addr = g_strconcat(block_addr, ";", result_address, NULL);
+ debug_log("Not Null block_addr = %s", block_addr);
+ elm_entry_entry_set(ugd->entry_filter_name, block_addr);
+ g_free(addr_tmp);
+ ugd->str_filter_name = g_strdup(block_addr);
+ }
+
+ ugd->block_recent_select_all_checked = EINA_FALSE;
+
+ ugd->checked_count = 0;
+
+ ugd->view_type = VIEW_BLOCK_FILTER_DATA_SET;
+
+ g_free(result_address);
+
+ elm_genlist_decorate_mode_set(ugd->recent_genlist, EINA_FALSE);
+ elm_genlist_select_mode_set(ugd->recent_genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+
+ /*elm_object_signal_emit(ugd->ef_filter_name, "clicked", "elm");*/
+ evas_object_show(ugd->entry_filter_name);
+ elm_object_focus_set(ugd->entry_filter_name, EINA_TRUE);
+
+ elm_naviframe_item_pop(ugd->navi_bar);
+}
+
+static Evas_Object *_block_recent_create_no_content_view(Evas_Object *parent, void *data)
+{
+ debug_log("");
+
+ Evas_Object *no_content = elm_layout_add(parent);
+ elm_layout_theme_set(no_content, "layout", "nocontents", "full");
+ elm_object_part_text_set(no_content, "elm.text", dgettext("sys_string", "IDS_COM_BODY_NO_CONTENTS"));
+
+ evas_object_show(no_content);
+
+ return no_content;
+}
+
+static void _block_recent_show_selection_info(EmailBlockAppData *ugd)
+{
+ if (!ugd->recent_select_info) {
+ ugd->recent_select_info = elm_notify_add(ugd->layout_main);
+ elm_notify_orient_set(ugd->recent_select_info, ELM_NOTIFY_ORIENT_BOTTOM);
+ ugd->recent_select_info_ly = elm_layout_add(ugd->layout_main);
+ elm_layout_theme_set(ugd->recent_select_info_ly, "standard", "selectioninfo", "vertical/bottom_64");
+ elm_object_content_set(ugd->recent_select_info, ugd->recent_select_info_ly);
+ }
+
+ if (ugd->checked_count == 0)
+ evas_object_hide(ugd->recent_select_info);
+ else {
+ char text[128] = { '0', };
+ if (ugd->checked_count == 1)
+ snprintf(text, 127, "%s (%d)", dgettext("sys_string", "IDS_COM_POP_SELECTED"), ugd->checked_count);
+ else
+ snprintf(text, 127, "%s (%d)", dgettext("sys_string", "IDS_COM_POP_SELECTED"), ugd->checked_count);
+ edje_object_part_text_set(_EDJ(ugd->recent_select_info_ly), "elm.text", text);
+ /*elm_notify_timeout_set(select_info, 1);*/
+ evas_object_show(ugd->recent_select_info);
+ }
+}
+
+/* EOF */
--- /dev/null
+/*
+ Email Application
+
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd All Rights Reserved
+Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
+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.
+*/
+
+#define GENLIST_HEIGHT_1_INC 1
+#define GENLIST_HEIGHT_16_INC 16
+#define GENLIST_HEIGHT_33_INC 33
+#define GENLIST_HEIGHT_49_INC 49
+#define GENLIST_HEIGHT_62_INC 62
+#define GENLIST_HEIGHT_65_INC 65
+#define GENLIST_HEIGHT_73_INC 73
+#define GENLIST_HEIGHT_77_INC 77
+#define GENLIST_HEIGHT_89_INC 89
+#define GENLIST_HEIGHT_93_INC 93
+#define GENLIST_HEIGHT_97_INC 97
+#define GENLIST_HEIGHT_129_INC 129
+#define GENLIST_HEIGHT_161_INC 161
+#define GENLIST_HEIGHT_163_INC 163
+#define GENLIST_HEIGHT_164_INC 164
+#define GENLIST_HEIGHT_165_INC 165
+#define GENLIST_HEIGHT_177_INC 177
+#define GENLIST_HEIGHT_182_INC 182
+#define GENLIST_HEIGHT_190_INC 190
+#define GENLIST_HEIGHT_207_INC 207
+#define GENLIST_HEIGHT_260_INC 260
+#define GENLIST_HEIGHT_291_INC 291
+#define GENLIST_HEIGHT_454_INC 454
+#define GENLIST_HEIGHT_566_INC 566
+
+#define GENLIST_PADDING_4_INC 4
+#define GENLIST_PADDING_5_INC 5
+#define GENLIST_PADDING_6_INC 6
+#define GENLIST_PADDING_8_INC 8
+#define GENLIST_PADDING_10_INC 10
+#define GENLIST_PADDING_11_INC 11
+#define GENLIST_PADDING_12_INC 12
+#define GENLIST_PADDING_13_INC 13
+#define GENLIST_PADDING_14_INC 14
+#define GENLIST_PADDING_16_INC 16
+#define GENLIST_PADDING_18_INC 18
+#define GENLIST_PADDING_21_INC 21
+#define GENLIST_PADDING_22_INC 22
+#define GENLIST_PADDING_24_INC 24
+#define GENLIST_PADDING_27_INC 27
+#define GENLIST_PADDING_32_INC 32
+#define GENLIST_PADDING_34_INC 34
+#define GENLIST_PADDING_46_INC 46
+#define GENLIST_PADDING_48_INC 48
+#define GENLIST_PADDING_64_INC 64
+#define GENLIST_PADDING_74_INC 74
+#define GENLIST_PADDING_88_INC 88
+#define GENLIST_PADDING_124_INC 124
+
+#define GENLIST_TEXT_SIZE_LIST_MAIN_TEXT 44
+#define GENLIST_TEXT_SIZE_LIST_BUBBLE_TEXT 32
+#define GENLIST_TEXT_SIZE_NAME_TEXT 32
+#define GENLIST_TEXT_SIZE_LIST_MESSAGE_TEXT 32
+#define GENLIST_FONT_27_INC 27
+#define GENLIST_FONT_28_INC 28
+#define GENLIST_FONT_30_INC 30
+#define GENLIST_FONT_32_INC 32
+#define GENLIST_FONT_STYLE_32_INC "32"
+#define GENLIST_FONT_36_INC 36
+#define GENLIST_FONT_STYLE_36_INC "36"
+#define GENLIST_FONT_40_INC 40
+#define GENLIST_FONT_STYLE_40_INC "40"
+#define GENLIST_FONT_42_INC 42
+#define GENLIST_FONT_STYLE_42_INC "42"
+#define GENLIST_FONT_48_INC 48
+#define GENLIST_FONT_STYLE_48_INC "48"
+
+#define GENLIST_SIZE_4_INC 4
+#define GENLIST_SIZE_6_INC 6
+#define GENLIST_SIZE_8_INC 8
+#define GENLIST_SIZE_10_INC 10
+#define GENLIST_SIZE_13_INC 13
+#define GENLIST_SIZE_16_INC 16
+#define GENLIST_SIZE_18_INC 18
+#define GENLIST_SIZE_21_INC 21
+#define GENLIST_SIZE_28_INC 28
+#define GENLIST_SIZE_35_INC 35
+#define GENLIST_SIZE_38_INC 38
+#define GENLIST_SIZE_40_INC 40
+#define GENLIST_SIZE_42_INC 42
+#define GENLIST_SIZE_44_INC 44
+#define GENLIST_SIZE_45_INC 45
+#define GENLIST_SIZE_46_INC 46
+#define GENLIST_SIZE_48_INC 48
+#define GENLIST_SIZE_54_INC 54
+#define GENLIST_SIZE_56_INC 56
+#define GENLIST_SIZE_57_INC 57
+#define GENLIST_SIZE_60_INC 60
+#define GENLIST_SIZE_61_INC 61
+#define GENLIST_SIZE_SLIDE_60_INC 60
+#define GENLIST_SIZE_66_INC 66
+#define GENLIST_SIZE_74_INC 74
+#define GENLIST_SIZE_SLIDE_74_INC 74
+#define GENLIST_SIZE_80_INC 80
+#define GENLIST_SIZE_88_INC 88
+#define GENLIST_SIZE_90_INC 90
+#define GENLIST_SIZE_96_INC 96
+#define GENLIST_SIZE_112_INC 112
+#define GENLIST_SIZE_116_INC 116
+#define GENLIST_SIZE_128_INC 128
+#define GENLIST_SIZE_133_INC 133
+#define GENLIST_SIZE_141_INC 141
+#define GENLIST_SIZE_144_INC 144
+#define GENLIST_SIZE_154_INC 154
+#define GENLIST_SIZE_160_INC 160
+#define GENLIST_SIZE_163_INC 163
+#define GENLIST_SIZE_168_INC 168
+#define GENLIST_SIZE_174_INC 174
+#define GENLIST_SIZE_SLIDE_165_INC 165
+#define GENLIST_SIZE_176_INC 176
+#define GENLIST_SIZE_177_INC 177
+#define GENLIST_SIZE_192_INC 192
+#define GENLIST_SIZE_195_INC 195
+#define GENLIST_SIZE_197_INC 197
+#define GENLIST_SIZE_206_INC 206
+#define GENLIST_SIZE_234_INC 234
+#define GENLIST_SIZE_235_INC 235
+#define GENLIST_SIZE_SLIDE_220_INC 220
+#define GENLIST_SIZE_304_INC 304
+#define GENLIST_SIZE_390_INC 390
+#define GENLIST_SIZE_448_INC 448
+#define GENLIST_SIZE_560_INC 560
+#define GENLIST_SIZE_576_INC 576
+#define GENLIST_SIZE_672_INC 672
+
+#define GENLIST_TREESIZE_16_INC 16
+#define GENLIST_TREESIZE_20_INC 20
+
+// ----------- TEXT COLOR ---------------- //
+#define GENLIST_TEXT_COLOR_LIST_MAIN_TEXT_READ 124 124 124 255
+#define GENLIST_TEXT_COLOR_LIST_MAIN_TEXT_UNREAD 0 0 0 255
+#define GENLIST_TEXT_COLOR_LIST_MAIN_TEXT_FOCUS 249 249 249 255
+
+#define GENLIST_TEXT_COLOR_LIST_SUB_TEXT_DEFAULT 124 124 124 255
+#define GENLIST_TEXT_COLOR_LIST_SUB_TEXT_SETTINGS 42 137 194 204
+#define GENLIST_TEXT_COLOR_LIST_SUB_TEXT_FOCUS 249 249 249 255
+
+#define GENLIST_TEXT_COLOR_FLEXIBLE_TEXT_MAIN 0 0 0 255
+#define GENLIST_TEXT_COLOR_FLEXIBLE_TEXT_SUB 149 149 149 255
+
+#define GENLIST_TEXT_COLOR_EDITFIELD_TEXT 158 187 205 255
+#define GENLIST_TEXT_COLOR_EDITFIELD_TEXT_CURSOR 42 137 194 255
+
+#define GENLIST_TEXT_COLOR_MULTILINE_TEXT 124 124 124 255
+
+#define GENLIST_TEXT_COLOR_INDEX_LIST 29 100 149 255
+#define GENLIST_TEXT_COLOR_3LINE_MAIN_TEXT_01_READ 124 124 124 255
+#define GENLIST_TEXT_COLOR_3LINE_MAIN_TEXT_01_UNREAD 0 0 0 255
+#define GENLIST_TEXT_COLOR_3LINE_MAIN_TEXT_01_FOCUS 249 249 249 255
+
+#define GENLIST_TEXT_COLOR_3LINE_MAIN_TEXT_02 124 124 124 255
+#define GENLIST_TEXT_COLOR_3LINE_MAIN_TEXT_02_FOCUS 249 249 249 255
+
+#define GENLIST_TEXT_COLOR_3LINE_MAIN_TEXT_03 124 124 124 255
+#define GENLIST_TEXT_COLOR_3LINE_MAIN_TEXT_03_FOCUS 249 249 249 255
+
+#define GENLIST_TEXT_COLOR_CONVERTOR_STYLE 249 249 249 255
+#define GENLIST_TEXT_COLOR_CONVERTOR_STYLE_FOCUS 249 249 249 255
+
+#define GENLIST_TEXT_COLOR_UNREAD_EMAIL 0 0 0 255
+#define GENLIST_TEXT_COLOR_CONTENTS_TEXT 210 210 210 255
+#define GENLIST_TEXT_COLOR_NAME_TEXT 128 128 128 255
+#define GENLIST_TEXT_COLOR_NAME_TEXT_DIM 42 137 194 255
+#define GENLIST_TEXT_COLOR_LIST_BUBBLE_TEXT 249 249 249 255
+#define GENLIST_TEXT_COLOR_LIST_MESSAGE_TEXT 0 0 0 255
+
+#define GENLIST_TEXT_COLOR_BUBBLE_READ_MESSAGE 0 0 0 255
+#define GENLIST_TEXT_COLOR_BUBBLE_MESSAGE_TIME 0 0 0 255
+#define GENLIST_TEXT_COLOR_BUBBLE_SENT_MESSAGE 0 0 0 255
+#define GENLIST_TEXT_COLOR_BUBBLE_SOS_MESSAGE 192 23 23 255
+#define GENLIST_TEXT_COLOR_BUBBLE_MESSAGE_DATE 128 128 128 255
+#define GENLIST_TEXT_COLOR_BUBBLE_LINK_MESSAGE 34 129 157 255
+#define GENLIST_TEXT_COLOR_BUBBLE_MESSAGE_FAILED 211 0 0 255
+#define GENLIST_TEXT_COLOR_BUBBLE_READ_MESSAGE_NAME 57 166 215 255
+#define GENLIST_TEXT_COLOR_BUBBLE_MESSAGE_HELP 146 146 146 255
+#define GENLIST_TEXT_COLOR_SWEEP_STYLE 118 118 118 255
+
+#define GENLIST_TEXT_COLOR_STYLE_NAME_TEXT "#808080FF"
+#define GENLIST_TEXT_COLOR_STYLE_LIST_MAIN_TEXT_READ "#000000FF"
+#define GENLIST_TEXT_COLOR_STYLE_LIST_SUB_TEXT "#7C7C7CFF"
+#define GENLIST_TEXT_COLOR_LIST_MESSAGE_TEXT_STYLE "#000000FF"
+#define GENLIST_PART_FONT_FLEXIBLE_TEXT_MAIN_STYLE_COLOR_INC "#000000FF"
+#define GENLIST_PART_FONT_FLEXIBLE_TEXT_SUB_STYLE_COLOR_INC "#959595FF"
+#define GENLIST_PART_FONT_MULTILINE_TEXT_STYLE_COLOR_INC "#959595FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_READ_STYLE_COLOR_INC "#7C7C7CFF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_UNREAD_STYLE_COLOR_INC "#000000FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_FOCUS_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_STYLE_COLOR_INC "#7C7C7CFF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_FOCUS_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_HELP_TEXT_STYLE_COLOR_INC "#7C7C7CFF"
+#define GENLIST_TEXT_COLOR_LIST_BUBBLE_TEXT_STYLE "#F9F9F9FF"
+
+#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 110 // alpha was 64 [???]
+#define GENLIST_PART_BG_COLOR_INC 236 240 242 255
+#define GENLIST_PART_LIST_BG_COLOR_INC 249 249 249 255
+#define GENLIST_PART_LIST_LINE_COLOR_INC 169 169 169 255
+#define GENLIST_PART_LIST_PRESS_COLOR_INC 42 137 194 255
+#define GENLIST_PART_TEXT_PRESS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_EXPANDABLE_2ND_DEPTH_BG_COLOR_INC 215 225 232 255
+#define GENLIST_PART_EXPANDABLE_3ND_DEPTH_BG_COLOR_INC 215 225 232 255
+#define GENLIST_PART_EDIT_SELECT_ALL_BG_COLOR_INC 215 225 232 255
+#define GENLIST_PART_EDIT_REORDER_BG_COLOR_INC 215 225 232 255
+#define GENLIST_PART_EDIT_1PIXEL_LINE_COLOR_INC 169 169 169 255
+#define GENLIST_PART_BUBBLE_DATE_BG_COLOR_INC 56 69 90 255
+#define GENLIST_PART_BUBBLE_1PIXEL_LINE_COLOR_INC 153 153 153 255
+//
+// Remove this, use GENLIST_PART_BASE_EVENT_OFF instead
+#define GENLIST_PART_INDEX_LIST_BASE_EVENT_INC \
+ part { name: "base_event";\
+ type: RECT;\
+ repeat_events: 0;\
+ description { state: "default" 0.0;\
+ color: 0 0 0 0;\
+ }\
+ }
+#define GENLIST_PART_INDEX_LIST_BASE_IMAGE_INC \
+ part { name: "base_image";\
+ repeat_events: 1;\
+ description { state: "default" 0.0;\
+ rel1.to: "rect";\
+ rel2.to: "rect";\
+ image {\
+ normal: "00_index list_bg.png";\
+ border: 0 0 2 2;\
+ }\
+ }\
+ }
+
+#define GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_MATCH_TAG_COLOR_INC "+ color=#3F8DAD"
+
+#define GENLIST_DIALOGUE_GT_TEXT_COLOR 102 102 102 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_01_COLOR_INC 100 100 100 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_01_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_02_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_02_DIM_COLOR_INC 7 180 211 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_02_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_TEXT_MAIN_COLOR_INC 0 0 0 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_TEXT_SUB_COLOR_INC 124 124 124 255
+#define GENLIST_DIALOGUE_FONT_APPS_NAME_COLOR_INC 0 0 0 255
+#define GENLIST_DIALOGUE_FONT_APPS_INC_COLOR_INC 124 124 124 255
+#define GENLIST_DIALOGUE_FONT_APPS_RATING_COLOR_INC 124 124 124 255
+#define GENLIST_DIALOGUE_FONT_APPS_PRICE_ORIGINAL_COLOR_INC 7 180 211 255
+#define GENLIST_DIALOGUE_FONT_APPS_PRICE_SALE_COLOR_INC 221 134 21 255
+#define GENLIST_DIALOGUE_FONT_APPS_PRICE_FREE_COLOR_INC 7 180 211 255
+#define GENLIST_DIALOGUE_FONT_PASSWORD_TITLE_COLOR_INC 124 124 124 255
+#define GENLIST_DIALOGUE_FONT_PASSWORD_INPUT_TEXT_COLOR_INC 0 0 0 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_WORD_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_PRONUNCIATION_COLOR_INC 7 180 211 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_NATION_COLOR_INC 146 146 146 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_INFO_01_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_INFO_02_COLOR_INC 146 146 146 255
+
+#define GENLIST_DIALOGUE_GROUP_BG_COLOR_INC 236 240 242 255
+#define GENLIST_DIALOGUE_GROUP_LIST_BG_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC 108 168 199 255
+#define GENLIST_DIALOGUE_1PIXEL_LINE_COLOR_INC 142 154 163 255
+#define GENLIST_DIALOGUE_ICON_1PIXEL_LINE_COLOR_INC 68 68 68 255
+#define GENLIST_DIALOGUE_PHOTO_ID_1PIXEL_LINE_COLOR_INC 68 68 68 255
+#define GENLIST_DIALOGUE_BG_IMAGE_COLOR_INC 236 240 242 255
+
+#define GENLIST_SWEEP_BG_COLOR_INC 236 240 242 255
+
+#define GENLIST_PART_EMAIL_MSGCOUNT_TEXT_COLOR_INC 255 255 255 255
+#define GENLIST_PART_TEXTBLOCK_STYLE_COLOR_INC "#a8a8a8FF"
+#define GENLIST_PART_TEXTBLOCK_STYLE_SELECTED_COLOR_INC "#646464"
+#define GENLIST_PART_TEXTBLOCK_READ_STYLE_COLOR_INC "#9E9E9EFF"
+#define GENLIST_PART_TEXTBLOCK_UNREAD_STYLE_COLOR_INC "#000000FF"
+#define GENLIST_PART_TEXTBLOCK_SUB_STYLE_COLOR_INC "#a8a8a8"
+#define GENLIST_PART_TEXTBLOCK_URGENCY_READ_STYLE_COLOR_INC "#AB5252"
+#define GENLIST_PART_TEXTBLOCK_URGENCY_UNREAD_STYLE_COLOR_INC "#CF2525"
+
+#define GENLIST_HEIGHT_1LINE 113 // excep bottom 1 line
+//FIXME: Change from GENLIST_TREESIZE_DEFAULT to below macro
+#define GENLIST_TREESIZE_DEFAULT 32
+
+#define GENLIST_PADDING_SIZE_DEFAULT 16
+#define GENLIST_PADDING_SIZE_LEFT GENLIST_PADDING_SIZE_DEFAULT
+#define GENLIST_PADDING_SIZE_RIGHT GENLIST_PADDING_SIZE_DEFAULT
+#define GENLIST_PADDING_SIZE_TOP 10
+#define GENLIST_PADDING_SIZE_BOTTOM 10
+
+#define GENLIST_TEXT2_WIDTH_MIN 150
+
+#define GENLIST_SIZE_PASSWORD_ICON 114
+
+#define GENLIST_TEXT_BTN_HEIGHT 72
+#define GENLIST_ICON_SMALL_SIZE 32
+#define GENLIST_ICON_MEDIUM_SIZE 48
+#define GENLIST_ICON_BIG_SIZE 64
+#define GENLIST_ICON_ONOFF_HEIGHT 80
+#define GENLIST_ICON_ONOFF_WIDTH 60
+#define GENLIST_ICON_CHECK_SIZE 60
+#define GENLIST_ICON_RADIO_SIZE 60
+
+// Group Title
+#define GENLIST_GT_PAD_T_H 36
+#define GENLIST_GT_PAD_B_H 10
+#define GENLIST_GT_TEXT_H 36
+#define GENLIST_GT_PAD_L_W 16
+#define GENLIST_GT_PAD_R_W 36
+#define GENLIST_GT_PAD_M_W 16
+#define GENLIST_GT_H GENLIST_GT_PAD_T_H + GENLIST_GT_PAD_B_H + GENLIST_GT_TEXT_H
+
+#define GENLIST_DIALOGUE_SEPARATOR_DEFAULT_HEIGHT 40
+
+
+#define GENLIST_DESCRIPT_DEFAULT( left, right, top, bottom ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+
+#define GENLIST_DESCRIPT_DOT_LT( left, top ) \
+ description { state: "default" 0.0;\
+ align: 0 0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 1 1;\
+ to_x: left;\
+ to_y: top;\
+ }\
+
+#define GENLIST_DESCRIPT_DOT_RT( right, top ) \
+ description { state: "default" 0.0;\
+ align: 1 0;\
+ rel1 { \
+ relative: 0 1; \
+ to_x: right; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right;\
+ to_y: top;\
+ }\
+
+#define GENLIST_DESCRIPT_DOT_LB( left, bottom ) \
+ description { state: "default" 0.0;\
+ align: 0 1;\
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: bottom; \
+ }\
+ rel2 {\
+ relative: 1 0;\
+ to_x: left;\
+ to_y: bottom;\
+ }\
+
+#define GENLIST_DESCRIPT_DOT_RB( right, bottom ) \
+ description { state: "default" 0.0;\
+ align: 1 1;\
+ rel1 { \
+ relative: 0 0; \
+ to_x: right; \
+ to_y: bottom; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+
+#define GENLIST_DESCRIPT_LINE_LEFT( left, top, bottom ) \
+ description { state: "default" 0.0;\
+ align: 0 0.5;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 1 0;\
+ to_x: left;\
+ to_y: bottom;\
+ }\
+
+#define GENLIST_DESCRIPT_LINE_RIGHT( right, top, bottom ) \
+ description { state: "default" 0.0;\
+ align: 1 0.5;\
+ rel1 { \
+ relative: 0 1; \
+ to_x: right; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+
+#define GENLIST_DESCRIPT_LINE_TOP( left, right, top ) \
+ description { state: "default" 0.0;\
+ align: 0.5 0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right;\
+ to_y: top;\
+ }\
+
+#define GENLIST_DESCRIPT_LINE_BOTTOM( left, right, bottom ) \
+ description { state: "default" 0.0;\
+ align: 0.5 1;\
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: bottom; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+
+#define GENLIST_PADDING(NAME, SIZE_X, SIZE_Y, DESCRIPT) \
+ part { name: NAME; \
+ type: RECT; \
+ scale: 1; \
+ DESCRIPT \
+ min: SIZE_X SIZE_Y; \
+ fixed: 1 1; \
+ visible: 0; \
+ }\
+ } \
+
+
+// *************** Function Macro ******************* //
+#define GENLIST_PART_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PART_BASE_BG( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+ }
+
+/// This block events
+#define GENLIST_PART_BASE_EVENT_OFF \
+ part { name: "base_event";\
+ type: RECT;\
+ repeat_events: 0;\
+ description { state: "default" 0.0;\
+ color: 0 0 0 0;\
+ }\
+ }
+
+#define GENLIST_PART_BG \
+ part { name: "bg"; \
+ type: RECT; \
+ clip_to: "disclip"; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+ description { state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ rel1 { relative: 0.025 0.0; } \
+ rel2 { relative: 1.025 1.0; } \
+ } \
+ description { state: "hide" 0.1; \
+ inherit: "default" 0.0; \
+ rel1 { relative: 0.13 0.0; } \
+ rel2 { relative: 1.13 1.0; } \
+ } \
+ description { state: "hide" 0.2; \
+ inherit: "default" 0.0; \
+ rel1 { relative: 0.5 0.0; } \
+ rel2 { relative: 1.5 1.0; } \
+ } \
+ description { state: "hide" 0.3; \
+ inherit: "default" 0.0; \
+ rel1 { relative: 1.0 0.0; } \
+ rel2 { relative: 2.0 1.0; } \
+ } \
+ }
+
+#define GENLIST_PART_BG_IMAGE \
+ part { name: "bg_image"; \
+ type: RECT; \
+ clip_to: "disclip"; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ color: GENLIST_PART_LIST_BG_COLOR_INC; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PART_BOTTOM_LINE \
+ part { name: "bottom_line"; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+ rel1 { \
+ relative: 0.0 1.0; \
+ offset: 0 -1; \
+ } \
+ } \
+ }
+
+#define GENLIST_PART_BOTTOM_EFFECT_LINE \
+ part { name: "bottom_line"; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+ rel1 { \
+ relative: 0.0 1.0; \
+ offset: 0 -1; \
+ } \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ }
+
+#define GENLIST_PART_PADDING_TOP( param_padding_size ) \
+ part { name: "elm.padding.top"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 param_padding_size; \
+ fixed: 0 1; \
+ visible: 0; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.0 0.0; \
+ } \
+ }
+
+#define GENLIST_PART_PADDING_TEXT_TOP( param_padding_size ) \
+ part { name: "elm.padding.text.top"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 param_padding_size; \
+ fixed: 0 1; \
+ visible: 0; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.0 0.0; \
+ } \
+ }
+
+#define GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \
+ part { name: "elm.padding.bottom"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_padding_size; \
+ fixed: 0 1; \
+ visible: 0; \
+ rel1.relative: 0.0 1.0; \
+ align: 1.0 1.0; \
+ } \
+ }
+
+#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \
+ part { name: "elm.padding.left"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+ }
+
+#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \
+ part { name: "elm.padding.right"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel1.relative: 1.0 0.0; \
+ align: 1.0 0.0; \
+ } \
+ }
+
+#define GENLIST_DIALOGUE_PART_BASE( param_item_height ) \
+ part { name: "base_part"; \
+ type: RECT; \
+ clip_to: "disclip"; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: LAYOUT_GROUP_LIST_BG_COLOR_INC; \
+ } \
+ }
+
+// FIXME: Use above instead
+#define GENLIST_PART_DIALOGUE_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ clip_to: "disclip"; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: LAYOUT_GROUP_LIST_BG_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PART_DIALOGUE_BG_IMAGE \
+ part { name: "bg_image"; \
+ type: RECT; \
+ clip_to: "disclip"; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ color: GENLIST_DIALOGUE_BG_IMAGE_COLOR_INC; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PART_DIALOGUE_ITEM \
+ part { name: "elm.rect.dialogue"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_12_INC 0; \
+ fixed: 1 0; \
+ color: GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+ }
+
+#define GENLIST_PART_DIALOGUE_RIGHT_LINE \
+ part { name: "elm.rect.dialogue.right.line"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 1 0; \
+ fixed: 1 0; \
+ visible: 1; \
+ rel1 { \
+ relative: 1.0 0.0; \
+ offset: -1 0; \
+ } \
+ align: 1.0 0.0; \
+ color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PART_DIALOGUE_EXPANDABLE_ITEM \
+ part { name: "elm.rect.dialogue"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_12_INC 0; \
+ fixed: 1 0; \
+ color: GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ }
+
+#define GENLIST_PART_SWALLOW_END( param_padding_size ) \
+ part { name: "elm.padding.left.swallow.end";\
+ clip_to: "disclip"; \
+ type: RECT;\
+ scale: 1;\
+ description { state: "default" 0.0;\
+ min: param_padding_size 0;\
+ fixed: 1 0;\
+ visible: 0; \
+ rel1.to_x: "elm.swallow.end";\
+ rel2 {\
+ relative: 0.0 1.0;\
+ to_x: "elm.swallow.end";\
+ }\
+ align: 1.0 0.5;\
+ }\
+ }\
+ part { name: "elm.swallow.end";\
+ clip_to: "disclip"; \
+ type: SWALLOW;\
+ scale: 1;\
+ description { state: "default" 0.0;\
+ fixed: 1 0;\
+ align: 1.0 0.5;\
+ rel1.to_x: "elm.padding.right";\
+ rel2 {\
+ relative: 0.0 1.0;\
+ to_x: "elm.padding.right";\
+ }\
+ }\
+ }
+
+// When rotating, sometimes item size is expaned.
+#define GENLIST_PART_DISCLIP \
+ part { name: "disclip"; \
+ type: RECT; \
+ description { state: "default" 0.0; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_DISCLIP_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_EXPANDABLE_PART_PERSPECTIVE_POINT() \
+ part { name: "point"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ color: 0 0 0 0; \
+ rel1 { relative: 0.0 0.0; } \
+ rel2 { relative: 1.0 0.0; } \
+ } \
+ }
+
+#define GENLIST_PART_MAP_START( param_x, param_y, param_z ) \
+ description { state: "map_transition" 0.0; \
+ inherit: "default" 0.0; \
+ color: 50 50 50 100; \
+ map { \
+ perspective: "point"; \
+ on: 1; \
+ smooth: 1; \
+ perspective_on: 1; \
+ backface_cull: 1; \
+ rotation { \
+ center: "point"; \
+ x: param_x; \
+ y: param_y; \
+ z: param_z; \
+ } \
+ } \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ }
+
+#define GENLIST_PART_MAP_FINISH( param_x, param_y, param_z ) \
+ description { \
+ state: "map_rotate" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ perspective: "point"; \
+ on: 1; \
+ smooth: 1; \
+ perspective_on: 1; \
+ backface_cull: 1; \
+ rotation { \
+ center: "point"; \
+ x: param_x; \
+ y: param_y; \
+ z: param_z; \
+ } \
+ } \
+ } \
+
+#define GENLIST_PART_MAP_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ }
+
+#define GENLIST_EXPANDABLE_PART_BASE( GE_HEIGHT , GE_COLOR ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 GE_HEIGHT; \
+ color: GE_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ }
+
+/* XXX: refactor expandable edc first.
+ and use GENLIST_EXPANDABLE_PART_BASE_NEW as GENLIST_EXPANDABLE_PART_BASE.
+*/
+#define GENLIST_EXPANDABLE_PART_BASE_NEW( GE_HEIGHT , GE_COLOR ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 GE_HEIGHT; \
+ color: GE_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PROGRAM_MAP_ROTATE_EXPAND_START() \
+ name: "rotaion_transition"; \
+ signal: "flip_item"; \
+ action: STATE_SET "map_transition" 0.0; \
+ after: "rotation";
+
+#define GENLIST_PROGRAM_MAP_ROTATE_EXPAND_FINISH( second ) \
+ name: "rotation"; \
+ action: STATE_SET "map_rotate" 0.0; \
+ transition: LINEAR second; \
+ after: "rotation_end";
+
+#define GENLIST_PROGRAM_MAP_EXPAND_END() \
+ name: "rotation_end"; \
+ action: STATE_SET "default" 0.0;
+
+#define GENLIST_PROGRAM_MAP_ROTATE_CONTRACT_START() \
+ name: "rotation_transition2"; \
+ signal: "elm,state,contract_flip"; \
+ action: STATE_SET "map_rotate" 0.0; \
+ after: "rotation2";
+
+#define GENLIST_PROGRAM_MAP_ROTATE_CONTRACT_FINISH( second ) \
+ name: "rotation2"; \
+ action: STATE_SET "map_transition" 0.0; \
+ transition: LINEAR second; \
+ after: "rotation3";
+
+#define GENLIST_PROGRAM_MAP_CONTRACT_END() \
+ name: "rotation3"; \
+ action: STATE_SET "hide" 0.0;
+
+#define GENLIST_PART_EXPANDABLE2_NOSHADOW_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_EXPANDABLE_2ND_DEPTH_BG_COLOR_INC; \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ }
+
+#define GENLIST_PART_EXPANDABLE_SWALLOW_PADDING \
+ part { name: "elm.swallow.pad"; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ fixed: 1 0; \
+ align: 0.0 0.5; \
+ rel1 { \
+ relative: 1.0 0.0;\
+ to_x: "elm.padding.left"; \
+ } \
+ rel2.to_x: "elm.padding.left"; \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ } \
+
+#define GENLIST_PART_PADDING_LEFT_SLIDE( param_padding_size ) \
+ part { name: "elm.padding.left"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel1 { relative: 0.0 0.0; to: "bg"; } \
+ rel2 { relative: 0.0 1.0; to: "bg"; } \
+ align: 0.0 0.0; \
+ } \
+ }
+
+/* only for demo */
+#define GENLIST_PART_BUTTON( param_name, param_text_name, param_text, param_left, param_right, param_top, param_bottom ) \
+ part { name: param_name; \
+ mouse_events: 1; \
+ description { state: "default" 0.0; \
+ visible: 1; \
+ rel1 { relative: param_left param_top; offset: 0 0; } \
+ rel2 { relative: param_right param_bottom; offset: -1 -1; } \
+ image { \
+ normal: "btn_normal.png"; \
+ border: 10 10 10 10; \
+ border_scale: 1; \
+ } \
+ image.middle: SOLID; \
+ fill.smooth: 0; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ image { \
+ normal: "btn_selected.png"; \
+ } \
+ } \
+ } \
+ part { name: param_text_name; \
+ type: TEXT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ align: 0.0 0.0; \
+ state: "default" 0.0; \
+ color: 0 0 0 255; \
+ rel1 { relative: 0.0 0.0; to: param_name; } \
+ rel2 { relative: 1.0 1.0; to: param_name; } \
+ text { \
+ text: param_text; \
+ font: "SLP:style=Roman"; \
+ size: 24; \
+ min: 1 1; \
+ align: 0.5 0.5; \
+ text_class: "list_item"; \
+ } \
+ } \
+ }
+
+/* only for demo */
+#define GENLIST_PROGRAM_BUTTON( param_name_focused, param_name_normal, param_part_name ) \
+ program { name: param_name_focused; \
+ source: param_part_name; \
+ signal: "mouse,down,1"; \
+ action: STATE_SET "selected" 0.0; \
+ target: param_part_name; \
+ } \
+ program { name: param_name_normal; \
+ source: param_part_name; \
+ signal: "mouse,up,1"; \
+ action: STATE_SET "default" 0.0; \
+ target: param_part_name; \
+ }
+
+#define GENLIST_PROGRAM_SLIDE_WITH_AFTER( param_name, param_state, param_next ) \
+ program { name: param_name; \
+ action: STATE_SET "hide" param_state; \
+ target: "bg"; \
+ transition: LINEAR 0.3; \
+ after: param_next; \
+ }
+
+#define GENLIST_PROGRAM_SLIDE( param_name, param_state_name, param_state_value ) \
+ program { name: param_name; \
+ action: STATE_SET param_state_name param_state_value; \
+ target: "bg"; \
+ transition: LINEAR 0.3; \
+ }
+
+#define DESC_FLIP_IMAGE( param_state_value, param_image_file_name ) \
+ description { state: "flipping" param_state_value; \
+ inherit: "default" 0.0; \
+ image { normal: param_image_file_name; } \
+ }
+
+#define DESC_TEXT_HIDE( param_state_value ) \
+ description { state: "hide" param_state_value; \
+ inherit: "default" 0.0; \
+ color: 0 0 0 (255*(1-param_state_value/0.20)); \
+ }
+
+#define GENLIST_EDIT_PART_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 0; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: 0 0 0 0; \
+ } \
+ }
+
+#define GENLIST_PART_FLIP \
+ part { name: "elm.flip.icon"; \
+ clip_to: "disclip"; \
+ type: SWALLOW; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ fixed: 1 1; \
+ align: 1 0; \
+ min: 80 0; \
+ rel1 { \
+ relative: 0.0 0.0; \
+ to_x: "elm.padding.right"; \
+ } \
+ rel2 { \
+ relative: 0.0 1.0; \
+ to_x: "elm.padding.right"; \
+ } \
+ } \
+ description { state: "flip_enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ } \
+ part { name: "elm.flip.content"; \
+ clip_to: "disclip"; \
+ type: SWALLOW; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ fixed: 1 1; \
+ rel1 { \
+ relative: 1.0 0.5; \
+ to_x: "elm.padding.left"; \
+ } \
+ rel2 { \
+ relative: 0.0 0.5; \
+ to_x: "elm.flip.icon"; \
+ } \
+ } \
+ description { state: "flip_enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ }
+
+#define GENLIST_DESCRIPTION_INVISIBLE_SELECTED \
+ description { state: "selected" 1.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ }
+
+#define GENLIST_DESCRIPTION_FLIP_ENABLED \
+ description { state: "flip_enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_1TEXT \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"elm.text", st, 30, vl); \
+ set_state(PART:"bg_image", "selected", 0.0); \
+ if (!strcmp(st, "flip_enabled")) \
+ set_state(PART:"elm.text", "selected", 1.0); \
+ else \
+ set_state(PART:"elm.text", "selected", 0.0); \
+ }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"elm.text.1", st, 30, vl); \
+ set_state(PART:"bg_image", "selected", 0.0); \
+ if (!strcmp(st, "flip_enabled")) { \
+ set_state(PART:"elm.text.1", "selected", 1.0); \
+ set_state(PART:"elm.text.2", "selected", 1.0); \
+ } \
+ else { \
+ set_state(PART:"elm.text.1", "selected", 0.0); \
+ set_state(PART:"elm.text.2", "selected", 0.0); \
+ } \
+ }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"elm.text.1", st, 30, vl); \
+ set_state(PART:"bg_image", "selected", 0.0); \
+ if (!strcmp(st, "flip_enabled")) { \
+ set_state(PART:"elm.text.1", "selected", 1.0); \
+ set_state(PART:"elm.text.2", "selected", 1.0); \
+ set_state(PART:"elm.text.3", "selected", 1.0); \
+ } \
+ else { \
+ set_state(PART:"elm.text.1", "selected", 0.0); \
+ set_state(PART:"elm.text.2", "selected", 0.0); \
+ set_state(PART:"elm.text.3", "selected", 0.0); \
+ } \
+ }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_1ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_2ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_3ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_1ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_2ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_3ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_1ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_2ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_3ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ }
+
+/* genlist multisense macro - start */
+#define GENLIST_PROGRAM_AFTER_PLAY_BUTTON_PRESS \
+ after: "play_button_press";
+
+#define GENLIST_PROGRAM_PLAY_BUTTON_PRESS \
+ program { name: "play_button_press"; \
+ action: PLAY_SAMPLE "button-pressed" 1.0; \
+ }
+
+
+
+/* genlist multisense macro - end */
\ No newline at end of file
--- /dev/null
+/*
+ Email Application
+
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd All Rights Reserved
+Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
+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.
+*/
+
+#include "email-block-theme-macro.edc"
+
+collections {
+
+ group { name: "segment_layout";
+ parts {
+ part { name: "bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "segment";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 219 42;
+ max: 780 42;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 1.0 1.0; to: "bg"; }
+ }
+ }
+ }
+ }
+
+
+ group { name: "elm/genlist/item/dialogue/email.2icon/default";
+ alias: "elm/genlist/item_odd/dialogue/email.2icon/default";
+ alias: "elm/genlist/item_compress/dialogue/email.2icon/default";
+ alias: "elm/genlist/item_compress_odd/dialogue/email.2icon/default";
+ alias: "elm/layout/dialogue/email.2icon";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "contents" "elm.icon elm.icon2";
+ parts {
+ GENLIST_PART_BASE( GENLIST_HEIGHT_1LINE )
+ GENLIST_PART_DIALOGUE_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_32_INC )
+ GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_SIZE_RIGHT )
+ GENLIST_PART_DIALOGUE_ITEM
+ GENLIST_PART_DIALOGUE_RIGHT_LINE
+ part { name: "elm.icon2";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ offset: -80 0;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ }
+ align: 0.5 0.5;
+ }
+ }
+
+ part { name: "elm.padding.icon2.left";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_PADDING_16_INC 0;
+ fixed: 1 0;
+ rel1.to_x: "elm.icon2";
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon2";
+ }
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+
+ part { name: "elm.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon2.left";
+ }
+ align: 0.0 0.0;
+ }
+ }
+
+ GENLIST_PART_DISCLIP
+ }
+ programs {
+ program { name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+}
INCLUDE(FindPkgConfig)
pkg_check_modules(pkgs-common REQUIRED ecore ecore-imf appcore-common glib-2.0 gobject-2.0 email-service
- dlog db-util elementary efreet-mime drm-client ecore-x sysman vconf evas eina edje icu-i18n)
+ dlog db-util elementary efreet-mime drm-client ecore-x sysman vconf evas eina edje icu-i18n ui-gadget-1)
FOREACH(flag ${pkgs-common_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
/* define bundle key */
#define EMAIL_BUNDLE_KEY_ACCOUNT_ID "ACCOUNT_ID"
+#define EMAIL_BUNDLE_KEY_IS_NULL "IS_NULL"
#define EMAIL_BUNDLE_KEY_MAILBOX "MAILBOX_ID"
+#define EMAIL_BUNDLE_KEY_MAILBOX_ALIAS "MAILBOX_ALIAS"
+#define EMAIL_BUNDLE_KEY_USER_EMAIL "USER_EMAIL"
#define EMAIL_BUNDLE_KEY_SAVE_ALL "SAVE_ALL"
#define EMAIL_BUNDLE_KEY_CANCEL_ALL "CANCEL_ALL"
#define EMAIL_BUNDLE_KEY_VIEW_TYPE "VIEW_TYPE"
#define EMAIL_BUNDLE_KEY_RUN_TYPE "RUN_TYPE"
#define EMAIL_BUNDLE_KEY_MAIL_ID "MAIL_ID"
+#define EMAIL_BUNDLE_KEY_LIVEMAGAZINE "bLiveMagazine"
+#define EMAIL_BUNDLE_KEY_INTERNAL "bInternal"
+#define EMAIL_BUNDLE_KEY_FIRST_LANDSCAPE "bFirstLandscape"
+#define EMAIL_BUNDLE_KEY_MSG "MSG"
+#define EMAIL_BUNDLE_KEY_DO_DELETE "DO_DELETE"
+#define EMAIL_BUNDLE_KEY_UNLOCK_LIST "UNLOCK_LIST"
#define EMAIL_BUNDLE_KEY_TO "TO"
#define EMAIL_BUNDLE_KEY_CC "CC"
#define EMAIL_BUNDLE_KEY_BCC "BCC"
#define EMAIL_BUNDLE_KEY_SUBJECT "SUBJECT"
+#define EMAIL_BUNDLE_KEY_MAILBOX_SIZE "MAILBOX_SIZE"
#define EMAIL_BUNDLE_KEY_BODY "BODY"
#define EMAIL_BUNDLE_KEY_ATTACHMENT "ATTACHMENT"
+#define EMAIL_BUNDLE_KEY_THREAD_ID "thread_id"
#define EMAIL_BUNDLE_KEY_ESP_NAME "ESP_NAME"
#define EMAIL_BUNDLE_KEY_INITIAL_RUN "INITIAL_RUN"
#define EMAIL_BUNDLE_KEY_REFRESH_ACCOUNT "REFRESH_ACCOUNT"
+#define EMAIL_BUNDLE_KEY_MAILBOX_TYPE "MAILBOX_TYPE"
-#define EMAIL_BUNDLE_KEY_VIDEO_PLAYER_LAUNCH_APP "launching_application"
+#define EMAIL_BUNDLE_KEY_CONTACT_TYPE "type"
+
+/* define ug name */
+#define UG_NAME_EMAIL_MAILBOX "email-mailbox-efl"
+#define UG_NAME_EMAIL_VIEWER "email-viewer-efl"
+#define UG_NAME_EMAIL_COMPOSER "email-composer-efl"
+#define UG_NAME_EMAIL_SETTING "email-setting-efl"
+#define UG_NAME_EMAIL_ACCOUNT "email-account-efl"
+#define UG_NAME_EMAIL_DOCUMENT "email-docsearch-efl"
+#define UG_NAME_CONTACT "contacts-tabui-efl"/*"phoneui-efl"*/
/* define bundle value */
+#define EMAIL_BUNDLE_VAL_NEXT_MSG "NEXT_MSG"
+#define EMAIL_BUNDLE_VAL_PREV_MSG "PREV_MSG"
+#define EMAIL_BUNDLE_VAL_UNREAD "UNREAD"
+#define EMAIL_BUNDLE_VAL_READ "READ"
+
#define EMAIL_BUNDLE_VAL_VIEW_SETTING_MAIN "main-view"
#define EMAIL_BUNDLE_VAL_VIEW_FIRST_SETUP "first-setup"
#define EMAIL_BUNDLE_VAL_VIEW_ACCOUNT_EDIT "account-edit"
RUN_COMPOSER_REPLY_ALL, /*< Specific reply all type. this type is used to replay email to all */
RUN_COMPOSER_FORWARD, /*< Specific forward type. this type is used to forward email */
RUN_COMPOSER_EXTERNAL, /*< Specific external type. this type is used to create new email from external app except email app */
+ RUN_VIEWER,
+ RUN_MAILBOX_THREAD,
+ RUN_SETTING_ACCOUNT_ADD,
RUN_TYPE_MAX
} EmailRunType;
+typedef enum {
+ EMAIL_SEARCH_NONE,
+ EMAIL_SEARCH_ALL,
+ EMAIL_SEARCH_SUBJECT,
+ EMAIL_SEARCH_FROM,
+ EMAIL_SEARCH_TO,
+ EMAIL_SEARCH_DATE,
+ EMAIL_SEARCH_ADVANCED,
+ EMAIL_SEARCH_MAX
+} EmailSearchType;
+
+typedef enum {
+ EMAIL_SORT_NONE,
+ EMAIL_SORT_DATE_RECENT,
+ EMAIL_SORT_DATE_OLDEST,
+ EMAIL_SORT_SENDER_ATOZ,
+ EMAIL_SORT_SENDER_ZTOA,
+ EMAIL_SORT_RCPT_ATOZ,
+ EMAIL_SORT_RCPT_ZTOA,
+ EMAIL_SORT_UNREAD,
+ EMAIL_SORT_IMPORTANT,
+ EMAIL_SORT_PRIORITY,
+ EMAIL_SORT_MEETING_REQUEST,
+ EMAIL_SORT_ATTACHMENTS,
+ EMAIL_SORT_MAX,
+} EmailSortType;
+
+typedef enum {
+ EMAIL_GET_MAIL_THREAD = -1,
+ EMAIL_GET_MAIL_NORMAL = 0,
+} EmailGetMailType;
+
+typedef struct {
+ gchar *name;
+ gchar *alias;
+ email_mailbox_type_e mailbox_type;
+ int mailbox_id;
+ int unread_count;
+ int total_mail_count_on_local;
+ int total_mail_count_on_server;
+} EmailMailboxNameAndAlias;
+
typedef struct {
int is_preset_account;
int index_color;
int pop3_deleting_option;
} account_user_data_t;
+typedef struct {
+ char *subject;
+ char *sender;
+ char *recipient;
+ time_t from_time;
+ time_t to_time;
+} EmailSearchData;
+
#endif /* _EMAIL_COMMON_TYPES_H_ */
/* EOF */
#define RECIPIENT_LEN 100
+typedef struct {
+ gchar *account_name;
+ gchar *email_address;
+ gchar *user_name;
+ gchar *password;
+ gchar *receiving_address;
+ gchar *smtp_address;
+ gchar *smtp_user_name;
+ gchar *smtp_password;
+ gint smtp_auth;
+ gint smtp_port;
+ gint same_as;
+ gint receiving_port;
+ gint receiving_type;
+ gint smtp_ssl;
+ gint receiving_ssl;
+ gint download_mode;
+} EmailAccountInfo;
+
gboolean email_engine_initialize(void);
void email_engine_finalize(void);
+void email_engine_finalize_force(void);
gboolean email_engine_add_account_with_validation(email_account_t *_account, int *account_id, unsigned *handle, int *error_code);
gboolean email_engine_add_account(email_account_t *_account, int *account_id);
gboolean email_engine_update_account_with_validation(gint account_id, email_account_t *_account);
gboolean email_engine_sync_folder(gint account_id, int mailbox_id, unsigned *handle);
void email_engine_stop_working(gint account_id, unsigned handle);
+int email_engine_check_body_download(int mail_id);
gboolean email_engine_delete_mail(gint account_id, int mailbox_id, gint mail_id, int sync);
+gboolean email_engine_delete_all_mail(gint account_id, int mailbox_id, int sync);
+gboolean email_engine_move_all_mail(gint account_id, int old_mailbox_id, int new_mailbox_id);
gchar *email_engine_get_attachment_path(gint attach_id); /* g_free(). */
+gboolean email_engine_get_account_info(gint account_id, EmailAccountInfo **account_info);
+void email_engine_free_account_info(EmailAccountInfo **account_info);
+
+void email_engine_free_ca_mailbox_list_using_glist(GList **mailbox_list);
+
+int email_engine_get_max_account_id(void);
+int email_engine_get_count_account(void);
+gboolean email_engine_get_eas_acc_exist_only(void);
G_END_DECLS
#endif /* _EMAIL_ENGINE_H_ */
#undef STR_LEN
#define STR_LEN(str) \
({ const char *s = (const char *)str; (s) ? strlen(s) : 0; })
+#undef STR_CMP
+#define STR_CMP(s1, s2) \
+ (((s1) == NULL || (s2) == NULL)? FALSE : (g_ascii_strcasecmp(s1, s2) == 0 ? TRUE : FALSE))
+
+#undef STR_NCPY
+/* note that sizeof(dest) > n. n is not array size but max num of copied char */
+/* dest requires NULL space only when src is not null terminated */
+#define STR_NCPY(dest, src, n) \
+ ({\
+ const char *_src = (const char *) src;\
+ if( n > 0 && dest && _src ) {\
+ char *e = strncpy(dest, _src, n);\
+ if(!e) debug_critical("strncpy error: (%s)", strerror(errno));\
+ dest[n] = '\0';\
+ }\
+ dest;\
+ })
+
+#undef STRNDUP
+/* return heap array of size n */
+#define STRNDUP(src, n) \
+ ({\
+ char *_ret = NULL;\
+ char *_src = src;\
+ if ( _src && n > 0 ) {\
+ _ret = strndup(_src, n);\
+ if( !_ret ) debug_critical("strndup error: (%s)", strerror(errno));\
+ }\
+ _ret;\
+ })
+
+#undef MEM_ALLOC
+#define MEM_ALLOC(ptr, size) \
+ ({\
+ int _size = size;\
+ typeof(ptr) mem = NULL;\
+ if(_size > 0 ) {\
+ mem = (typeof(ptr)) calloc (_size, sizeof(typeof(*ptr)));\
+ if(!mem) debug_critical("%s: memory allocation failed", #ptr);\
+ }\
+ else\
+ debug_critical("PARAM error(%d): must be positive", _size);\
+ mem;\
+ })
+
+#undef MEM_ALLOC_STR
+#define MEM_ALLOC_STR(size) \
+ ({\
+ int _size = size;\
+ char* mem = NULL;\
+ if( size > 1 ) {\
+ mem = (char*) calloc (1, size);\
+ if(!mem) debug_critical("MALLOC error: char str (%d) memory allocation failed", _size);\
+ }\
+ else\
+ debug_critical("MALLOC error: char str size(%d) must be greater than 1", _size);\
+ mem;\
+ })
+
+#undef FREE
+#define FREE(ptr) \
+ do {\
+ if(ptr) free(ptr);\
+ ptr = NULL;\
+ } while(0)
/*
* Exported fuctions.
guint64 email_get_file_size(const gchar *path);
gboolean email_get_address_validation(const char *address);
+char* email_get_str_datetime(const time_t time_val);
char *email_get_date_text(const char *locale, char *skeleton, void *time);
+char *email_get_date_text_with_formatter(UDateFormat *formatter, void *time);
+int email_get_group_title_str(const time_t time_val, gchar **group_title, gchar **group_date);
int email_open_icu_pattern_generator(void);
int email_close_icu_pattern_generator(void);
gboolean email_drm_file_is_right(const gchar *path);
gboolean email_drm_file_forward_lock_check(const gchar *path);
+void set_app_terminated();
+int get_app_terminated();
+void set_app_paused();
+void reset_app_paused();
+void reset_eas_validation_started();
+int get_eas_validation_started();
+char* email_util_strrtrim(char* s);
+char* email_util_strltrim(char* s);
+char* email_util_get_parent_folder(char *s);
G_END_DECLS
#endif /* _EMAIL_UTILS_H_ */
#include <email-api.h>
#include <db-util.h>
#include <vconf.h>
+#include <ui-gadget-module.h>
#include "email-common-types.h"
#include "email-debug.h"
#define ACCOUNT_MIN -1
+ui_gadget_h _g_mailbox_ug = NULL;
+
static guint _g_edb_ref_count = 0;
}
}
+void email_engine_finalize_force(void)
+{
+ debug_log("");
+
+ int err = 0;
+
+ err = email_close_db();
+ if (err != EMAIL_ERROR_NONE) {
+ debug_critical("fail to close db - err(%d)", err);
+ }
+
+ debug_log("email_service_end");
+
+ err = email_service_end();
+ if (err != EMAIL_ERROR_NONE) {
+ debug_critical("fail to email_service_begin - err(%d)", err);
+ }
+}
+
gboolean email_engine_add_account(email_account_t *_account, int *account_id)
{
debug_log("");
}
}
+
+int email_engine_check_body_download(int mail_id)
+{
+ debug_log("");
+ RETURN_VAL_IF_FAIL(mail_id > 0, FALSE);
+
+ int res = 0;
+ int err = 0;
+ email_mail_data_t *mail_info = NULL;
+
+ if ((err = email_get_mail_data(mail_id, &mail_info)) != EMAIL_ERROR_NONE) {
+ debug_log("fail to get mail data - err (%d)", err);
+ return 0;
+ }
+
+ if (mail_info == NULL) {
+ debug_critical("mail_info is @niL");
+ return 0;
+ }
+
+ res = mail_info->body_download_status;
+ debug_log("body_download_yn: %d", res);
+
+ err = email_free_mail_data(&mail_info, 1);
+
+ if (err != EMAIL_ERROR_NONE) {
+ debug_critical("fail to free mail info - err (%d)", err);
+ }
+
+ return res;
+}
+
gboolean email_engine_delete_mail(gint account_id, int mailbox_id, gint mail_id, int sync)
{
debug_log("");
return res;
}
+gboolean email_engine_delete_all_mail(gint account_id, int mailbox_id, int sync)
+{
+ debug_log("");
+ RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE);
+ /*
+ RETURN_VAL_IF_FAIL(STR_VALID(folder_name), FALSE);
+ */
+
+ int err = 0;
+ gboolean res = TRUE; /* MUST BE initialized TRUE. */
+
+ err = email_delete_all_mails_in_mailbox(mailbox_id, sync);
+
+ if (err != EMAIL_ERROR_NONE) {
+ debug_warning("failed to delete all message - err (%d)", err);
+ res = FALSE;
+ }
+
+ return res;
+}
+
+gboolean email_engine_move_all_mail(gint account_id, int old_mailbox_id, int new_mailbox_id)
+{
+ debug_log("");
+ RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE);
+
+ int err = 0;
+ gboolean res = TRUE; /* MUST BE initialized TRUE. */
+
+ err = email_move_all_mails_to_mailbox(old_mailbox_id, new_mailbox_id);
+
+ if (err != EMAIL_ERROR_NONE) {
+ debug_warning("failed to move all message - err (%d)", err);
+ res = FALSE;
+ }
+
+ return res;
+}
+
gchar *email_engine_get_attachment_path(gint attach_id)
{
debug_log("");
return attachment_path;
}
+gboolean email_engine_get_account_info(gint account_id, EmailAccountInfo **account_info)
+{
+ debug_log("");
+ RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE);
+
+ (*account_info) = NULL;
+
+ EmailAccountInfo *info = (EmailAccountInfo *) calloc(1, sizeof(EmailAccountInfo));
+
+ if (info == NULL) {
+ debug_critical("failed to memory allocation");
+ return FALSE;
+ }
+
+ email_account_t *account = NULL;
+ int err = 0;
+
+ err = email_get_account(account_id, EMAIL_ACC_GET_OPT_FULL_DATA, &account);
+
+ if (err != EMAIL_ERROR_NONE) {
+ debug_critical("failed to get account info - err (%d)", err);
+ goto error;
+ }
+
+ if (STR_VALID(account->account_name)) {
+ info->account_name = strdup(account->account_name);
+ }
+
+ if (STR_VALID(account->user_email_address)) {
+ info->email_address = strdup(account->user_email_address);
+ }
+
+ if (STR_VALID(account->user_display_name)) {
+ info->user_name = strdup(account->user_display_name);
+ }
+
+ if (STR_VALID(account->incoming_server_password)) {
+ info->password = strdup(account->incoming_server_password);
+ }
+
+ if (STR_VALID(account->outgoing_server_address)) {
+ info->smtp_address = strdup(account->outgoing_server_address);
+ }
+
+ if (STR_VALID(account->outgoing_server_user_name)) {
+ info->smtp_user_name = strdup(account->outgoing_server_user_name);
+ }
+
+ if (STR_VALID(account->outgoing_server_password)) {
+ info->smtp_password = strdup(account->outgoing_server_password);
+ }
+
+ if (STR_VALID(account->incoming_server_address)) {
+ info->receiving_address = strdup(account->incoming_server_address);
+ }
+
+ info->smtp_auth = account->outgoing_server_need_authentication;
+ info->smtp_port = account->outgoing_server_port_number;
+ info->receiving_port = account->incoming_server_port_number;
+ info->receiving_type = account->incoming_server_type;
+ info->same_as = account->outgoing_server_use_same_authenticator;
+ info->smtp_ssl = account->outgoing_server_secure_connection;
+ info->receiving_ssl = account->incoming_server_secure_connection;
+ info->download_mode = account->auto_download_size;
+
+ err = email_free_account(&account, 1);
+
+ if (err != EMAIL_ERROR_NONE) {
+ debug_critical("failed to free account info - err (%d)", err);
+ }
+
+ (*account_info) = info;
+
+ return TRUE;
+
+ error:
+ if (info) {
+ free(info);
+ }
+ return FALSE;
+}
+
+void email_engine_free_account_info(EmailAccountInfo **account_info)
+{
+ debug_log("");
+ RETURN_IF_FAIL(*account_info != NULL);
+
+ EmailAccountInfo *info = (*account_info);
+
+ if (STR_VALID(info->account_name)) {
+ free(info->account_name);
+ info->account_name = NULL;
+ }
+
+ if (STR_VALID(info->email_address)) {
+ free(info->email_address);
+ info->email_address = NULL;
+ }
+
+ if (STR_VALID(info->user_name)) {
+ free(info->user_name);
+ info->user_name = NULL;
+ }
+
+ if (STR_VALID(info->password)) {
+ free(info->password);
+ info->password = NULL;
+ }
+
+ if (STR_VALID(info->receiving_address)) {
+ free(info->receiving_address);
+ info->receiving_address = NULL;
+ }
+
+ if (STR_VALID(info->smtp_address)) {
+ free(info->smtp_address);
+ info->smtp_address = NULL;
+ }
+
+ if (STR_VALID(info->smtp_user_name)) {
+ free(info->smtp_user_name);
+ info->smtp_user_name = NULL;
+ }
+
+ if (STR_VALID(info->smtp_password)) {
+ free(info->smtp_password);
+ info->smtp_password = NULL;
+ }
+
+ free(info);
+ info = NULL;
+}
+
+void email_engine_free_ca_mailbox_list_using_glist(GList **mailbox_list)
+{
+ debug_log("");
+ RETURN_IF_FAIL(mailbox_list != NULL);
+ RETURN_IF_FAIL(*mailbox_list != NULL);
+
+ GList *list = (GList *)(*mailbox_list);
+ int list_cnt = g_list_length(list);
+ int i = 0;
+
+ for (i = 0; i < list_cnt; i++) {
+ EmailMailboxNameAndAlias *nameandalias = (EmailMailboxNameAndAlias *) g_list_nth_data(list, i);
+ if (nameandalias == NULL) {
+ debug_warning("nameandalias is NULL");
+ } else {
+ g_free(nameandalias->name);
+ g_free(nameandalias->alias);
+ }
+ }
+ g_list_free(list);
+ *mailbox_list = NULL;
+}
+
+int email_engine_get_max_account_id(void)
+{
+ debug_enter();
+
+ email_account_t *account_list = NULL;
+ int count = 0;
+ int e = email_get_account_list(&account_list, &count);
+ if (e != EMAIL_ERROR_NONE) {
+ debug_critical("email_get_account_list - err(%d)", e);
+ return -1;
+ }
+ debug_log("-- total account count : %d", count);
+
+ int max_account_id = 0;
+ int i = 0;
+ for (i = 0; i < count; i++) {
+ max_account_id = (account_list[i].account_id > max_account_id) ?
+ account_list[i].account_id : max_account_id;
+ debug_log("%2d) %-15s %-30s\n", account_list[i].account_id, account_list[i].account_name,
+ account_list[i].user_email_address);
+ }
+ email_free_account(&account_list, count);
+
+ debug_leave();
+ return max_account_id;
+}
+
+
+int email_engine_get_count_account(void)
+{
+ debug_enter();
+
+ email_account_t *account_list = NULL;
+ int count = 0;
+ int e = email_get_account_list(&account_list, &count);
+ if (e != EMAIL_ERROR_NONE) {
+ debug_critical("email_get_account_list - err(%d)", e);
+ return -1;
+ }
+ debug_log("-- total account count : %d", count);
+
+ email_free_account(&account_list, count);
+
+ debug_leave();
+ return count;
+}
+
+gboolean email_engine_get_eas_acc_exist_only(void)
+{
+ debug_enter();
+
+ email_account_t *account_list = NULL;
+ int account_count = 0;
+ int err = 0;
+ int i = 0;
+ gboolean b_activeSyncOnly = TRUE;
+
+ /* If one account only. Set as the account. */
+ err = email_engine_get_account_list(&account_count, &account_list);
+ if (err == 0) {
+ debug_critical("fail to get account list - err(%d)", err);
+ return b_activeSyncOnly;
+ }
+
+ for (i = 0; i < account_count; ++i) {
+ if (account_list[i].incoming_server_type != EMAIL_SERVER_TYPE_ACTIVE_SYNC) {
+ b_activeSyncOnly = FALSE;
+ break;
+ }
+ }
+
+ err = email_engine_free_account_list(&account_list, account_count);
+ if (err == 0) {
+ debug_critical("fail to free account list - err(%d)", err);
+ }
+ else
+ {
+ account_list = NULL;
+ account_count = 0;
+ }
+
+ debug_log("current b_activeSyncOnly: %d", b_activeSyncOnly);
+ return b_activeSyncOnly;
+}
+
/* EOF */
enum appcore_time_format icu_timeformat;
+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_MEETING_REQUEST,
+ EMAIL_GROUP_OTHER,
+ EMAIL_GROUP_PRIORITY_HIGH,
+ EMAIL_GROUP_PRIORITY_NORMAL,
+ EMAIL_GROUP_PRIORITY_LOW,
+ EMAIL_GROUP_MAX,
+};
+
+
static void _generate_best_pattern(const char *locale, UChar * customSkeleton, char *formattedString, void *time);
static int _open_icu_pattern_n_formatter(const char *locale, char *skeleton, UDateFormat **formatter);
static int _close_icu_pattern_n_formatter(UDateFormat *formatter);
return ret;
}
+static int is_yesterday(struct tm *req_tm, struct tm *now_tm)
+{
+ if (now_tm->tm_yday == 0) { /* It is the first day of year */
+ if (req_tm->tm_year == now_tm->tm_year-1 && req_tm->tm_mon == 12 && req_tm->tm_mday == 31)
+ return 1;
+ else
+ return 0;
+ } else {
+ if (req_tm->tm_year == now_tm->tm_year && req_tm->tm_yday == now_tm->tm_yday - 1)
+ return 1;
+ else
+ return 0;
+ }
+}
+
+static int is_today(struct tm *req_tm, struct tm *now_tm)
+{
+ if (req_tm->tm_year == now_tm->tm_year && req_tm->tm_yday == now_tm->tm_yday)
+ return 1;
+ else
+ return 0;
+}
+
+static int is_nth_weeks_ago(struct tm *req_tm, struct tm *now_tm, int num)
+{
+ time_t req = mktime(req_tm);
+ time_t now = mktime(now_tm);
+ time_t nth_begin = 0, nth_end = 0;
+ nth_end = now - (now_tm->tm_wday * 3600 * 24 + now_tm->tm_hour * 3600 + now_tm->tm_min * 60 + now_tm->tm_sec) - ((num - 1) * 7 * 3600 * 24);
+ nth_begin = now - (now_tm->tm_wday * 3600 * 24 + now_tm->tm_hour * 3600 + now_tm->tm_min * 60 + now_tm->tm_sec) - (num * 7 * 3600 * 24);
+
+ if(req > nth_begin && req < nth_end)
+ return 1;
+ else
+ return 0;
+}
+
+static int is_lastmonth(struct tm *req_tm, struct tm *now_tm)
+{
+ if((req_tm->tm_year == now_tm->tm_year - 1) && (req_tm->tm_mon == 11) && (now_tm->tm_mon == 0))
+ return 1;
+ else if((req_tm->tm_year == now_tm->tm_year) && (req_tm->tm_mon == now_tm->tm_mon - 1))
+ return 1;
+ else
+ return 0;
+}
+
+int email_get_group_title_str(const time_t req_time, gchar **group_title,
+ gchar **group_date)
+{
+ debug_log("");
+ RETURN_VAL_IF_FAIL(group_title != NULL, 0);
+ RETURN_VAL_IF_FAIL(group_date != NULL, 0);
+
+ int groupIndex = EMAIL_GROUP_UNKNOWN;
+ tzset(); /* MUST BE. */
+
+ time_t now_time = time(NULL);
+
+ struct tm *dummy = localtime(&now_time);
+ struct tm now_tm;
+ memcpy(&now_tm, dummy, sizeof(struct tm));
+
+ dummy = localtime(&req_time);
+ struct tm req_tm;
+ memcpy(&req_tm, dummy, sizeof(struct tm));
+
+ if (is_today(&req_tm, &now_tm) || req_time > now_time /*future mail :)*/) {
+ *group_title = g_strdup(dgettext("sys_string", "IDS_COM_BODY_TODAY"));
+ *group_date = email_get_date_text_with_formatter(icu_formatter_EEEMMMd, (void *)&req_time);
+ groupIndex = EMAIL_GROUP_TODAY;
+ }
+ else if (is_yesterday(&req_tm, &now_tm)) {
+ *group_title = g_strdup(dgettext("sys_string", "IDS_COM_BODY_YESTERDAY"));
+ *group_date = email_get_date_text_with_formatter(icu_formatter_EEEMMMd, (void *)&req_time);
+ groupIndex = EMAIL_GROUP_YESTERDAY;
+ }
+ else if (is_nth_weeks_ago(&req_tm, &now_tm, 0)) {
+ switch(req_tm.tm_wday)
+ {
+ case 0:
+ *group_title = g_strdup(_("IDS_EMAIL_BODY_SUNDAY"));
+ groupIndex = EMAIL_GROUP_SUN;
+ break;
+ case 1:
+ *group_title = g_strdup(_("IDS_EMAIL_BODY_MONDAY"));
+ groupIndex = EMAIL_GROUP_MON;
+ break;
+ case 2:
+ *group_title = g_strdup(_("IDS_EMAIL_BODY_TUESDAY"));
+ groupIndex = EMAIL_GROUP_TUE;
+ break;
+ case 3:
+ *group_title = g_strdup(_("IDS_EMAIL_BODY_WEDNESDAY"));
+ groupIndex = EMAIL_GROUP_WED;
+ break;
+ case 4:
+ *group_title = g_strdup(_("IDS_EMAIL_BODY_THURSDAY"));
+ groupIndex = EMAIL_GROUP_THU;
+ break;
+ case 5:
+ *group_title = g_strdup(_("IDS_EMAIL_BODY_FRIDAY"));
+ groupIndex = EMAIL_GROUP_THU;
+ break;
+ case 6:
+ *group_title = g_strdup(_("IDS_EMAIL_BODY_SATURDAY"));
+ groupIndex = EMAIL_GROUP_THU;
+ break;
+ default:
+ debug_log("invalid date");
+ break;
+ }
+ *group_date = email_get_date_text_with_formatter(icu_formatter_EEEMMMd, (void *)&req_time);
+ }
+ else if(is_nth_weeks_ago(&req_tm, &now_tm, 1)) {
+ *group_title = g_strdup(_("IDS_EMAIL_BODY_LAST_WEEK"));
+ groupIndex = EMAIL_GROUP_LASTWEEK;
+ *group_date = NULL;
+ }
+ else if(is_nth_weeks_ago(&req_tm, &now_tm, 2)) {
+ char str[MAX_STR_LEN] = { 0, };
+ snprintf(str, sizeof(str), _("IDS_EMAIL_BODY_PD_WEEKS_AGO"), 2);
+ *group_title = g_strdup(str);
+ groupIndex = EMAIL_GROUP_TWOWEEKS_AGO;
+ *group_date = NULL;
+ }
+ else if(is_nth_weeks_ago(&req_tm, &now_tm, 3)) {
+ char str[MAX_STR_LEN] = { 0, };
+ snprintf(str, sizeof(str), _("IDS_EMAIL_BODY_PD_WEEKS_AGO"), 3);
+ *group_title = g_strdup(str);
+ groupIndex = EMAIL_GROUP_THREEWEEKS_AGO;
+ *group_date = NULL;
+ }
+ else if((req_tm.tm_year == now_tm.tm_year) && (req_tm.tm_mon == now_tm.tm_mon)) {
+ //*group_title = g_strdup(dgettext("sys_string", "IDS_COM_BODY_EARLIER_THISMONTH"));
+ *group_title = g_strdup(N_("Earlier this Month"));
+ groupIndex = EMAIL_GROUP_EARLIER_THISMONTH;
+ *group_date = NULL;
+ }
+ else if(is_lastmonth(&req_tm, &now_tm)) {
+ //*group_title = g_strdup(dgettext("sys_string", "IDS_COM_BODY_LAST_MONTH"));
+ *group_title = g_strdup(N_("Last Month"));
+ groupIndex = EMAIL_GROUP_LASTMONTH;
+ *group_date = NULL;
+ }
+ else {
+ *group_title = g_strdup(_("IDS_EMAIL_BODY_OLDER_M_HISTORY"));
+ groupIndex = EMAIL_GROUP_OLDER;
+ *group_date = NULL;
+ }
+
+ /* debug_log("-now : %d.%d (%d)", now_tm.tm_year + 1900, now_tm.tm_yday, now_time);
+ debug_log("-req : %d.%d (%d)", req_tm.tm_year + 1900, req_tm.tm_yday, req_time);
+ debug_log("(%s) (%s)", *group_title, *group_date); */
+
+ return groupIndex;
+}
+
+char *email_get_str_datetime(const time_t req_time)
+{
+ debug_log("");
+
+ tzset(); /* MUST BE. */
+
+ time_t now_time = time(NULL);
+
+ struct tm *dummy = localtime(&now_time);
+ struct tm now_tm;
+ memcpy(&now_tm, dummy, sizeof(struct tm));
+
+ dummy = localtime(&req_time);
+ struct tm req_tm;
+ memcpy(&req_tm, dummy, sizeof(struct tm));
+
+/* debug_log("*now : %d.%d.%d", now_tm.tm_year + 1900, now_tm.tm_mon, now_tm.tm_mday);
+ debug_log("*req : %d.%d.%d", req_tm.tm_year + 1900, req_tm.tm_mon, req_tm.tm_mday); */
+
+ char *datetime = ({
+ char *_ret_str = NULL;
+ if (is_today(&req_tm, &now_tm) || is_yesterday(&req_tm, &now_tm) ||
+ req_time > now_time) /* sometimes, future mail arrives :) */ {
+ /* today or yesterday */
+ _ret_str = (icu_timeformat == APPCORE_TIME_FORMAT_12)?
+ email_get_date_text_with_formatter(icu_formatter_hmm, (void *)&req_time):
+ email_get_date_text_with_formatter(icu_formatter_Hmm, (void *)&req_time);
+ } else if (req_tm.tm_year < now_tm.tm_year) /* previous year */
+ _ret_str = email_get_date_text_with_formatter(icu_formatter_MMMyyyy, (void *)&req_time);
+ else /* days before yesterday in this year */
+ _ret_str = email_get_date_text_with_formatter(icu_formatter_MMMd, (void *)&req_time);
+ _ret_str;
+ });
+
+ return datetime;
+}
+
char *email_get_date_text(const char *locale, char *skeleton, void *time)
{
debug_log("");
return g_strdup(formattedString);
}
+char *email_get_date_text_with_formatter(UDateFormat *formatter, void *time)
+{
+ debug_log("");
+ char formattedString[128] = { 0, };
+
+ UErrorCode status = U_ZERO_ERROR;
+ UDate date = 0;
+ UChar formatted[64] = { 0, };
+ int32_t formattedCapacity;
+ int32_t formattedLength;
+
+ formattedCapacity = (int32_t) (sizeof(formatted) / sizeof(formatted[0]));
+ if (time) {
+ time_t msg_time = *(time_t *)time;
+ date = (UDate)msg_time * 1000; /* Equivalent to Date = ucal_getNow() in Milliseconds */
+ }
+ formattedLength = udat_format(formatter, date, formatted, formattedCapacity, NULL, &status);
+ u_austrncpy(formattedString, formatted, 128);
+ return g_strdup(formattedString);
+}
+
int email_open_icu_pattern_generator(void)
{
debug_log("");
return FALSE;
}
+
+
+static int termination_flag = 0;
+static int pause_flag = 0;
+static int eas_validation_started_flag = 0;
+
+void set_app_terminated()
+{
+ termination_flag = 1;
+}
+
+int get_app_terminated()
+{
+ return termination_flag;
+}
+
+void set_app_paused()
+{
+ pause_flag = 1;
+}
+
+void reset_app_paused()
+{
+ pause_flag = 0;
+}
+
+void reset_eas_validation_started()
+{
+ eas_validation_started_flag = 0;
+}
+
+int get_eas_validation_started()
+{
+ return eas_validation_started_flag;
+}
+
+char* email_util_strrtrim(char* s)
+{
+ char t[MAX_STR_LEN];
+ char *end;
+
+ strcpy(t, s);
+ end = t + strlen(t) - 1;
+ while (end != t && isspace(*end))
+ {
+ end--;
+ }
+ *(end + 1) = '\0';
+ s = t;
+
+ debug_log("result [%s]", s);
+ return s;
+}
+
+char* email_util_strltrim(char* s)
+{
+ char* begin;
+ begin = s;
+
+ while (*begin != '\0') {
+ if (isspace(*begin))
+ begin++;
+ else {
+ s = begin;
+ break;
+ }
+ }
+
+ debug_log("result [%s]", s);
+ return s;
+}
+
+char* email_util_get_parent_folder(char *s)
+{
+ gchar **vector = NULL;
+ vector = g_strsplit_set(s, "/", -1);
+ int vlen = g_strv_length(vector);
+ gchar *foler_name = g_strdup(vector[vlen-1]);
+ gchar* retval = g_strdup(s);
+ gchar* ptr = NULL;
+ ptr = g_strstr_len(retval, -1, foler_name);
+
+ debug_log("input [%s], vlen(%d)", s, vlen);
+
+ if (ptr != NULL && vlen > 1){
+ gchar* temp = g_strndup(retval, ptr-retval-1);
+ g_free(retval);
+ retval = g_strdup(temp);
+ g_free(temp);
+
+ debug_log("foler_name [%s], retval[%s]", foler_name, retval);
+
+ g_free(foler_name);
+ return retval;
+ }
+ else
+ {
+ debug_log("foler_name [%s]: parent == root. ", foler_name);
+ g_free(foler_name);
+ return NULL;
+ }
+}
+
/* EOF */
--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ug-email-mailbox-efl C)
+
+SET(SRCS
+ ./src/email-mailbox.c
+ ./src/email-mailbox-controlbar.c
+ ./src/email-mailbox-item.c
+ ./src/email-mailbox-list.c
+ ./src/email-mailbox-noti-mgr.c
+ ./src/email-mailbox-search.c
+ ./src/email-mailbox-sweep.c
+)
+SET(CMAKE_SKIP_BUILD_RPATH TRUE)
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+ SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+SET(CMAKE_MAILBOX_SOURCE_DIR "${CMAKE_SOURCE_DIR}/mailbox")
+SET(CMAKE_MAILBOX_BINARY_DIR "${CMAKE_BINARY_DIR}/mailbox")
+INCLUDE_DIRECTORIES(${CMAKE_MAILBOX_SOURCE_DIR}/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs-mailbox REQUIRED appcore-efl ui-gadget-1
+ elementary email-service glib-2.0 edbus bundle dlog capi-system-sensor
+ syspopup-caller capi-appfw-application status)
+
+FOREACH(flag ${pkgs-mailbox_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_LDFLAGS "-Wl,-z,nodelete")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+ ADD_DEFINITIONS("-DTARGET")
+ MESSAGE("add -DTARGET")
+ SET(CMAKE_C_FLAGS_RELEASE "-mabi=aapcs-linux -msoft-float -O2")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+ADD_DEFINITIONS("-DDEBUG")
+#ADD_DEFINITIONS("-D__NEW_UX__")
+ADD_DEFINITIONS("-D_POPUP_WITH_LIST")
+#ADD_DEFINITIONS("-D__TIZEN_BETA__")
+
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} email-common ${pkgs-mailbox_LDFLAGS})
+
+ADD_CUSTOM_TARGET(email-mailbox-theme.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
+ ${CMAKE_MAILBOX_SOURCE_DIR}/theme/email-mailbox-theme.edc ${CMAKE_MAILBOX_BINARY_DIR}/email-mailbox-theme.edj
+ DEPENDS ${CMAKE_MAILBOX_SOURCE_DIR}/theme/email-mailbox-theme.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} email-mailbox-theme.edj)
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR})
+INSTALL(FILES ${CMAKE_MAILBOX_BINARY_DIR}/email-mailbox-theme.edj DESTINATION ${EDJDIR})
+#INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/images DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png")
+
+# i18n
+#ADD_SUBDIRECTORY(po)
+
--- /dev/null
+/*
+ * 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_CONTROL_BAR_H_
+#define __DEF_EMAIL_MAILBOX_CONTROL_BAR_H_
+
+
+void _create_controlbar(EmailMailboxUGD *mailbox_ugd);
+void _delete_controlbar(EmailMailboxUGD *mailbox_ugd);
+
+#endif /* __DEF_EMAIL_MAILBOX_CONTROL_BAR_H_ */
--- /dev/null
+/*
+ * 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_ITEM_H_
+#define __DEF_EMAIL_MAILBOX_ITEM_H_
+
+
+typedef struct {
+ int account_id;
+ int current_view;
+ int mailbox_type;
+ char *msg_buf;
+ EmailMailboxUGD *mailbox_ugd;
+} move_req_t;
+
+typedef struct {
+ EmailMailboxViewType previous_view;
+ EmailMailboxUGD *mailbox_ugd;
+} edit_req_t;
+
+typedef struct {
+ int account_id;
+ int current_view;
+ int mailbox_type;
+ char *msg_buf;
+ EmailMailboxUGD *mailbox_ugd;
+} delete_req_t;
+
+typedef struct {
+ int account_id;
+ int thread_id;
+ int mail_id;
+ int mailbox_id;
+ int view_type;
+ EmailMailboxMode mode;
+ EmailMailboxUGD *mailbox_ugd;
+} sync_req_t;
+
+typedef struct {
+ list_data *ld;
+ int mail_id;
+} delete_ret_t;
+
+typedef struct {
+ int mail_id;
+ EmailMailboxUGD *mailbox_ugd;
+ int view_type;
+}update_req_t;
+
+
+void mailbox_process_move_mail(EmailMailboxUGD *mailbox_ugd);
+void mailbox_process_delete_mail(void* data, Ecore_Thread *thd);
+void mailbox_delete_mail_item_from_list(EmailMailboxUGD * mailbox_ugd, list_data * ld);
+void _popup_response_delete_ok_cb(void *data, Evas_Object *obj, void *event_info);
+void _popup_response_delete_all_ok_cb(void *data, Evas_Object *obj, void *event_info);
+void _resend_mail_cb(void *data, Evas_Object *obj, void *event_info);
+void _cancel_send_mail_cb(void *data, Evas_Object *obj, void *event_info);
+
+#endif /* __DEF_EMAIL_MAILBOX_ITEM_H_ */
--- /dev/null
+/*
+ Email Application
+
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd All Rights Reserved
+Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
+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_LIST_H_
+#define __DEF_EMAIL_MAILBOX_LIST_H_
+
+
+typedef struct {
+ email_mail_list_item_t *mail_list;
+ int start;
+ int count;
+ int view_type;
+ EmailMailboxMode mode;
+ EmailMailboxUGD *mailbox_ugd;
+} mail_remaining_list_t;
+
+
+#define G_LIST_FOREACH(list, ith, ith_data) \
+ for (ith = g_list_first(list), ith_data = (typeof(ith_data)) g_list_nth_data(ith,0);\
+ ith;\
+ ith = g_list_next(ith), ith_data = (typeof(ith_data)) g_list_nth_data(ith,0))
+
+#define G_LIST_FREE(list) \
+ do {\
+ if(list) g_list_free(list);\
+ list = NULL;\
+ } while(0)
+
+
+void mailbox_create_list_view(EmailMailboxUGD *mailbox_ugd);
+void mailbox_make_date_mail_list(void *data);
+void mailbox_make_sender_mail_list(void *data);
+void mailbox_make_unread_mail_list(void *data);
+void mailbox_make_attachment_mail_list(void *data);
+void mailbox_make_important_mail_list(void *data);
+void mailbox_make_priority_mail_list(void *data);
+void mailbox_make_meeting_request_mail_list(void *data);
+void _make_account_mail_list(void *data);
+gint _compare_sort_rule_by_viewtype(gconstpointer a, gconstpointer b);
+void _update_item_in_view_cb(void *data, Ecore_Thread *thd, void* msg_data);
+void _refresh_mailbox(EmailMailboxUGD *mailbox_ugd);
+void _make_mail_list(EmailMailboxUGD *mailbox_ugd, const EmailSearchData *search_data);
+void _delete_selection_info(EmailMailboxUGD *mailbox_ugd);
+void _create_mail_list(EmailMailboxUGD *mailbox_ugd);
+email_mail_list_item_t* get_mail_info(int mail_id);
+list_data *_find_mailinfo_by_mailid(int mailid, GList *mail_list);
+void email_maillist_select_info(EmailMailboxUGD *mailbox_ugd);
+void _clear_checked_status(EmailMailboxUGD *mailbox_ugd);
+void _edit_back_cb(void *data, Evas_Object *obj, void *event_info);
+void _item_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
+void _item_check_touched_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info);
+void _mailbox_list_clear(EmailMailboxUGD *sg);
+void _insert_mail_to_mailist(EmailMailboxUGD *mailbox_ugd, list_data* ld);
+void _worker_get_move_mail_list_cb(void* data, Ecore_Thread *thd);
+void _worker_get_delete_mail_list_cb(void* data, Ecore_Thread *thd);
+void _worker_get_mail_info_cb(void* data, Ecore_Thread *thd);
+void _free_list_data_simple(list_data *ld);
+void _mailbox_list_add_item(EmailMailboxUGD *sg, gint uid);
+void _add_mail_list_n_data(EmailMailboxUGD *mailbox_ugd, email_mail_list_item_t* mail_list, int count, const EmailSearchData *search_data);
+void _remove_get_more_progress_item(EmailMailboxUGD *mailbox_ugd);
+email_mail_list_item_t *_mailbox_get_mail_list_by_mailbox_type(int account_id, int mailbox_type, int sort_type, int thread_id, EmailSearchType search_type, const EmailSearchData *search_data, int *mail_count);
+email_mail_list_item_t *_mailbox_get_mail_list_by_mailbox_id(int account_id, int mailbox_id, int sort_type, int thread_id, EmailSearchType search_type, const EmailSearchData *search_data, int *mail_count);
+
+#endif /* __DEF_EMAIL_MAILBOX_LIST_H_ */
--- /dev/null
+/*
+ * 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_NOTI_MGR_H_
+#define __DEF_EMAIL_MAILBOX_NOTI_MGR_H_
+
+
+void _dbus_receiver_setup(EmailMailboxUGD *mailbox_ugd);
+void _remove_dbus_receiver(EmailMailboxUGD *mailbox_ugd);
+void _release_noti_Q_event(EmailMailboxUGD *mailbox_ugd);
+void _move_mail_item_cb(void *data, Ecore_Thread *thd, void* msg_data);
+void _move_finish_cb(void* data, Ecore_Thread *thd);
+void _delete_mail_item_cb(void *data, Ecore_Thread *thd, void* msg_data);
+void _delete_finish_cb(void* data, Ecore_Thread *thd);
+void _response_cb(void *data, Evas_Object *obj, void *event_info);
+
+
+
+#endif /* __DEF_EMAIL_MAILBOX_NOTI_MGR_H_ */
--- /dev/null
+/*
+ * 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_SEARCH_H_
+#define __DEF_EMAIL_MAILBOX_SEARCH_H_
+
+
+void mailbox_create_searchbar(EmailMailboxUGD *mailbox_ugd);
+void mailbox_finish_search_mode(EmailMailboxUGD *mailbox_ugd);
+void mailbox_request_search_server(EmailMailboxUGD *mailbox_ugd);
+void mailbox_show_search_server_result(EmailMailboxUGD *mailbox_ugd);
+void mailbox_clear_search_server_result(EmailMailboxUGD *mailbox_ugd);
+
+#endif /* __DEF_EMAIL_MAILBOX_SEARCH_H_ */
--- /dev/null
+/*
+ * 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_SWEEP_H_
+#define __DEF_EMAIL_MAILBOX_SWEEP_H_
+
+
+Evas_Object* _create_sweep_delete_button(Evas_Object* parent,list_data* ld);
+Evas_Object* _create_sweep_read_unread_button(Evas_Object* parent,list_data* ld);
+Evas_Object* _create_sweep_move_button(Evas_Object* parent,list_data* ld);
+Evas_Object* _create_sweep_reply_button(Evas_Object* parent,list_data* ld);
+Evas_Object* _create_sweep_forward_button(Evas_Object* parent,list_data* ld);
+
+#endif /* __DEF_EMAIL_MAILBOX_SWEEP_H_ */
\ No newline at end of file
--- /dev/null
+/*
+ * 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>
+
+#include <sensors.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;
+ gint meeting_request;
+ 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_MEETING_REQUEST,
+ 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_MEETING_REQUEST,
+ 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_THREAD, /* Disply only thread mail */
+ EMAIL_VIEW_EDIT, /* Delete / Block / MoveTo */
+ EMAIL_VIEW_SEARCH,
+ EMAIL_VIEW_PRIORITY,
+ EMAIL_VIEW_MEETING_REQUEST,
+ 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;
+ Evas_Object *no_content_thread;
+ 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 *thread_update_button;
+ Evas_Object *sync_progress;
+ Elm_Object_Item *delete_all_button;
+ Evas_Object *ctxpopup;
+ Evas_Object *motion_popup;
+ GList *important_list;
+ sensor_h shake_handle;
+ sensor_h double_handle;
+ 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__ */
--- /dev/null
+/*
+ * 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.
+ */
+
+#include <status.h>
+
+#include "email-mailbox.h"
+#include "email-mailbox-controlbar.h"
+#include "email-mailbox-item.h"
+#include "email-mailbox-list.h"
+
+
+static Elm_Genlist_Item_Class itc_popup;
+static Evas_Object *radio_grp;
+static Evas_Coord touch_x;
+static Evas_Coord touch_y;
+Elm_Object_Item *g_delete_button;
+Elm_Object_Item *g_move_button;
+Elm_Object_Item *g_block_button;
+Elm_Object_Item *g_markunread_button;
+
+
+typedef struct {
+ int index;
+ Evas_Object *radio;
+ EmailMailboxUGD *mailbox_ugd;
+} viewby_req_t;
+viewby_req_t viewby_req[VIEWBY_MAX];
+
+extern Eina_List *edit_list;
+extern gboolean b_editmode;
+extern int ug_pushed;
+
+
+static Evas_Object *create_control_option(EmailMailboxUGD *ad);
+static Evas_Object *create_edit_control_option(EmailMailboxUGD *ad);
+static void _viewby_cb(void *data, Evas_Object *obj, void *event_info);
+static void _more_toolbar_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _delete_all_emails_cb(void *data, Evas_Object *obj, void *event_info);
+static void _document_search_cb(void *data, Evas_Object *obj, void *event_info);
+static void _delete_mail_cb(void *data, Evas_Object *obj, void *event_info);
+static void _block_mail_cb(void *data, Evas_Object *obj, void *event_info);
+static void _markunread_mail_cb(void *data, Evas_Object *obj, void *event_info);
+static void _compose_toolbar_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static ui_gadget_h create_document_ug(char *ug_name, service_h service, void *data);
+static void _popup_response_cb(void *data, Evas_Object *obj, void *event_info);
+static void destroy_document_cb(ui_gadget_h ug, void *priv);
+static void _radio_cb(void *data, Evas_Object *obj, void *event_info);
+static void _move_ctxpopup(Evas_Object *ctxpopup, Evas_Object *win);
+static void _mousedown_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _move_mail_cb(void *data, Evas_Object *obj, void *event_info);
+
+
+static void destroy_document_cb(ui_gadget_h ug, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)priv;
+
+ if (mailbox_ugd->ug_document) {
+ ug_destroy(mailbox_ugd->ug_document);
+ mailbox_ugd->ug_document = NULL;
+ }
+}
+
+
+static ui_gadget_h create_document_ug(char *ug_name, service_h service, void *data)
+{
+ debug_log("");
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0, };
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ cbs.layout_cb = layout_composer_cb;
+ cbs.result_cb = result_composer_cb;
+ cbs.destroy_cb = destroy_document_cb;
+ cbs.priv = mailbox_ugd;
+ mailbox_ugd->cbs = cbs;
+
+ ug = ug_create(mailbox_ugd->ug, ug_name, UG_MODE_FULLVIEW, service, &mailbox_ugd->cbs);
+
+ return ug;
+}
+
+static void _block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ evas_object_del(obj);
+}
+
+static void _block_mail_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ int i = 0, block_count = 0;
+ int e = 0;
+
+ Eina_List *list = edit_list;
+ int checked_count = eina_list_count(list);
+
+ if (checked_count <= 0) return;
+
+ for (i = 0; i < checked_count; i++) {
+ Eina_List *nth_list = eina_list_nth_list(list, i);
+
+ list_data *ld = eina_list_data_get(nth_list);
+ email_rule_t *rule = NULL;
+
+ rule = MEM_ALLOC(rule, 1);
+ if(!rule) continue;
+
+ rule->account_id = mailbox_ugd->account_id;
+ rule->type = EMAIL_FILTER_FROM;
+
+ if (g_strcmp0(ld->sender, _("IDS_EMAIL_POP_NO_SENDER")) == 0) {
+ FREE(rule);
+ continue;
+ } else {
+ rule->value = g_strdup(ld->sender);
+ }
+ rule->faction = EMAIL_FILTER_BLOCK;
+ rule->target_mailbox_id = GET_MAILBOX_ID(ld->account_id, EMAIL_MAILBOX_TYPE_SPAMBOX);
+ rule->flag1 = 1;
+ rule->flag2 = RULE_TYPE_INCLUDES;
+
+ if (email_add_rule(rule) < 0)
+ debug_log("email_add_rule failed");
+
+ FREE(rule->value);
+ FREE(rule);
+ block_count++;
+ }
+
+#if 0
+ /* Create popup */
+ if (block_count > 0) {
+ debug_log("mail block popup");
+ Evas_Object *popup = elm_popup_add(mailbox_ugd->win_main);
+ elm_object_text_set(popup, _("IDS_EMAIL_POP_BLOCKED"));
+ //elm_popup_buttons_add(popup, 1, dgettext("sys_string", "IDS_COM_SK_OK"), ELM_POPUP_RESPONSE_OK, NULL);
+ Evas_Object *btn1 = elm_button_add(popup);
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn1);
+ //evas_object_smart_callback_add(popup, "response", _response_cb, mailbox_ugd);
+ evas_object_smart_callback_add(btn1, "clicked", _response_cb, popup);
+ evas_object_smart_callback_add(popup, "block,clicked", _block_clicked_cb, NULL);
+ evas_object_show(popup);
+ }
+#else
+ if (block_count > 0) {
+ e = status_message_post(_("IDS_EMAIL_POP_BLOCKED"));
+
+ if (e) {
+ debug_log("fail to status_message_post() : %d\n", e);
+ }
+ }
+#endif
+
+ mailbox_ugd->view_type = mailbox_ugd->previous_view;
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD)
+ mailbox_ugd->previous_view = EMAIL_VIEW_DATE;
+
+ edit_list = eina_list_free(edit_list);
+
+ //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "focused", _searchbar_entry_focus_cb, mailbox_ugd);
+ //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "unfocused", _searchbar_entry_unfocus_cb, mailbox_ugd);
+
+ elm_genlist_decorate_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_FALSE);
+ elm_genlist_reorder_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_FALSE);
+ elm_genlist_select_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], ELM_OBJECT_SELECT_MODE_DEFAULT);
+ b_editmode = false;
+ elm_object_disabled_set(mailbox_ugd->folder_button, EINA_FALSE);
+ _update_navigationbar_title(mailbox_ugd);
+
+ if (mailbox_ugd->isRotate == true) {
+ email_rotate_landscape(mailbox_ugd);
+ /*
+ if (mailbox_ugd->current_rotmode == APP_DEVICE_ORIENTATION_270)
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE, NULL, mailbox_ugd);
+ else
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN, NULL, mailbox_ugd);
+ */
+ } else {
+ elm_object_part_content_set(mailbox_ugd->search_layout, "searchbar", mailbox_ugd->searchbar_layout);
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_searchbar", "search");
+ }
+}
+
+static void _markunread_mail_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ int i = 0, mark_count = 0;
+
+ Eina_List *list = edit_list;
+ int checked_count = eina_list_count(list);
+
+ if (checked_count <= 0) return;
+
+ for (i = 0; i < checked_count; i++) {
+ Eina_List *nth_list = eina_list_nth_list(list, i);
+
+ list_data *ld = eina_list_data_get(nth_list);
+ /* For all other views where mail list is present but threaded mail list is not present */
+ int seen_flag = (ld->is_seen == false)? 1 /* make it read */ :
+ 0 /* make it unread */;
+
+ int err = email_set_flags_field(ld->account_id, &(ld->mail_id), 1, EMAIL_FLAGS_SEEN_FIELD, seen_flag, 1);
+ if (err != EMAIL_ERROR_NONE)
+ debug_log("email_set_flags_field - err(%d)", err);
+
+ mark_count++;
+ }
+
+ /* check count */
+ if (mark_count > 0) {
+ debug_log("mail mark unread count: %d", mark_count);
+ }
+
+ mailbox_ugd->view_type = mailbox_ugd->previous_view;
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD)
+ mailbox_ugd->previous_view = EMAIL_VIEW_DATE;
+
+ edit_list = eina_list_free(edit_list);
+
+ //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "focused", _searchbar_entry_focus_cb, mailbox_ugd);
+ //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "unfocused", _searchbar_entry_unfocus_cb, mailbox_ugd);
+
+ elm_genlist_decorate_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_FALSE);
+ elm_genlist_reorder_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_FALSE);
+ elm_genlist_select_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], ELM_OBJECT_SELECT_MODE_DEFAULT);
+ b_editmode = false;
+ elm_object_disabled_set(mailbox_ugd->folder_button, EINA_FALSE);
+ _update_navigationbar_title(mailbox_ugd);
+
+ if (mailbox_ugd->isRotate == true) {
+ email_rotate_landscape(mailbox_ugd);
+ /*
+ if (mailbox_ugd->current_rotmode == APP_DEVICE_ORIENTATION_270)
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE, NULL, mailbox_ugd);
+ else
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN, NULL, mailbox_ugd);
+ */
+ } else {
+ elm_object_part_content_set(mailbox_ugd->search_layout, "searchbar", mailbox_ugd->searchbar_layout);
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_searchbar", "search");
+ }
+
+ _refresh_mailbox(mailbox_ugd);
+
+}
+
+
+static void _dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ evas_object_del(mailbox_ugd->ctxpopup);
+ mailbox_ugd->ctxpopup = NULL;
+}
+
+
+static void _delete_mail_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ if (mailbox_ugd->delete_popup) {
+ evas_object_del(mailbox_ugd->delete_popup);
+ mailbox_ugd->delete_popup = NULL;
+ }
+
+ Evas_Object *notify = elm_popup_add(mailbox_ugd->win_main);
+ evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(notify, dgettext("sys_string", "IDS_COM_POP_DELETE_Q"));
+ mailbox_ugd->delete_popup = notify;
+
+ Evas_Object *btn1 = elm_button_add(notify);
+ elm_object_style_set(btn1, "popup_button/default");
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+ elm_object_part_content_set(notify, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _popup_response_delete_ok_cb, data);
+
+ Evas_Object *btn2 = elm_button_add(notify);
+ elm_object_style_set(btn2, "popup_button/default");
+ elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(notify, "button2", btn2);
+ evas_object_smart_callback_add(btn2, "clicked", _popup_response_cb, mailbox_ugd);
+
+ evas_object_show(notify);
+}
+
+static void _delete_all_emails_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+ EmailMailboxUGD* mailbox_ugd = (EmailMailboxUGD *)data;
+
+ if (mailbox_ugd->ctxpopup) {
+ evas_object_del(mailbox_ugd->ctxpopup);
+ mailbox_ugd->ctxpopup = NULL;
+ }
+
+ if (mailbox_ugd->delete_popup) {
+ evas_object_del(mailbox_ugd->delete_popup);
+ mailbox_ugd->delete_popup = NULL;
+ }
+
+ Evas_Object *notify = elm_popup_add(mailbox_ugd->win_main);
+ evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(notify, _("IDS_EMAIL_BODY_DELETE_ALL_Q"));
+ mailbox_ugd->delete_popup = notify;
+
+ Evas_Object *btn1 = elm_button_add(notify);
+ elm_object_style_set(btn1, "popup_button/default");
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+ elm_object_part_content_set(notify, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _popup_response_delete_all_ok_cb, mailbox_ugd);
+
+ Evas_Object *btn2 = elm_button_add(notify);
+ elm_object_style_set(btn2, "popup_button/default");
+ elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(notify, "button2", btn2);
+ evas_object_smart_callback_add(btn2, "clicked", _popup_response_cb, mailbox_ugd);
+ evas_object_show(notify);
+}
+
+static void _popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ if (mailbox_ugd->delete_popup) {
+ evas_object_del(mailbox_ugd->delete_popup);
+ mailbox_ugd->delete_popup = NULL;
+ }
+}
+
+static void _document_search_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ RETURN_IF_FAIL(mailbox_ugd != NULL);
+
+ if (mailbox_ugd->ctxpopup) {
+ evas_object_del(mailbox_ugd->ctxpopup);
+ mailbox_ugd->ctxpopup = NULL;
+ }
+
+ if (mailbox_ugd->ug_document) {
+ debug_log("Document UG is already launched");
+ return;
+ }
+
+ gint account_id = mailbox_ugd->account_id;
+ RETURN_IF_FAIL(account_id > 0);
+
+ email_account_t *account = NULL;
+ int err = email_get_account(account_id, EMAIL_ACC_GET_OPT_OPTIONS, &account);
+ if (err != EMAIL_ERROR_NONE || !account) {
+ debug_warning("email_get_account acct(%d) - err(%d) or acct NULL(%p)", account_id, err, account);
+ if(account) email_free_account(&account, 1);
+ return;
+ }
+
+ int account_svc_id = account->account_svc_id;
+ debug_log("account id: %d, accountd_svc_id: %d", account_id, account_svc_id);
+ if(account) email_free_account(&account, 1);
+
+ char s_account_id[14] = { 0, };
+ snprintf(s_account_id, sizeof(s_account_id), "%d", account_svc_id);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, s_account_id);
+ mailbox_ugd->ug_document = create_document_ug(UG_NAME_EMAIL_DOCUMENT, service, mailbox_ugd);
+
+ service_destroy(service);
+}
+
+static void _more_toolbar_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ mailbox_ugd->ctxpopup = elm_ctxpopup_add(mailbox_ugd->navi_bar);
+ evas_object_smart_callback_add(mailbox_ugd->ctxpopup, "dismissed", _dismissed_cb, mailbox_ugd);
+ elm_ctxpopup_item_append(mailbox_ugd->ctxpopup, _("IDS_EMAIL_OPT_DELETE_ALL"), NULL, _delete_all_emails_cb, mailbox_ugd);
+ elm_ctxpopup_item_append(mailbox_ugd->ctxpopup, _("IDS_EMAIL_OPT_DOCUMENTS_ABB"), NULL, _document_search_cb, mailbox_ugd);
+ _move_ctxpopup(mailbox_ugd->ctxpopup, mailbox_ugd->win_main);
+ evas_object_show(mailbox_ugd->ctxpopup);
+}
+
+static void _move_ctxpopup(Evas_Object *ctxpopup, Evas_Object *win)
+{
+ Evas_Coord w, h;
+ int degree = elm_win_rotation_get(win);
+ evas_object_geometry_get(win, NULL, NULL, &w, &h);
+
+ if(degree == 90) {
+ evas_object_move(ctxpopup, w - touch_y, touch_x);
+ } else if (degree == 180) {
+ evas_object_move(ctxpopup, w - touch_x, h - touch_y);
+ } else if (degree == -90) {
+ evas_object_move(ctxpopup, touch_y, h - touch_x);
+ } else {
+ evas_object_move(ctxpopup, touch_x, touch_y);
+ }
+}
+
+static void _gl_viewby_popup_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ viewby_req_t *req = (viewby_req_t *)elm_object_item_data_get(item);
+ debug_log("radio: [%p], index[%d]", req->radio, req->index);
+ elm_radio_value_set(req->radio, req->index);
+ evas_object_smart_callback_call(req->radio, "changed", req->mailbox_ugd);
+
+ debug_log("view_type: [%d], gl:[%p]", req->mailbox_ugd->view_type, req->mailbox_ugd->gl[req->mailbox_ugd->view_type]);
+
+ //evas_object_smart_callback_del(mailbox_ugd->gl[mailbox_ugd->view_type], "realized", _recipient_list_realized_cb);
+ if (req->mailbox_ugd->sort_type_index != VIEWBY_DATE_RECENT)
+ req->mailbox_ugd->b_thread_list = false;
+
+ switch(req->mailbox_ugd->sort_type_index)
+ {
+ case VIEWBY_DATE_RECENT:
+ req->mailbox_ugd->sort_type = EMAIL_SORT_DATE_RECENT;
+ mailbox_make_date_mail_list(req->mailbox_ugd);
+ break;
+ case VIEWBY_DATE_OLD:
+ req->mailbox_ugd->sort_type = EMAIL_SORT_DATE_OLDEST;
+ mailbox_make_date_mail_list(req->mailbox_ugd);
+ break;
+ case VIEWBY_SENDER_ATOZ:
+ req->mailbox_ugd->sort_type = EMAIL_SORT_SENDER_ATOZ;
+ mailbox_make_sender_mail_list(req->mailbox_ugd);
+ break;
+ case VIEWBY_SENDER_ZTOA:
+ req->mailbox_ugd->sort_type = EMAIL_SORT_SENDER_ZTOA;
+ mailbox_make_sender_mail_list(req->mailbox_ugd);
+ break;
+ case VIEWBY_UNREAD:
+ req->mailbox_ugd->sort_type = EMAIL_SORT_UNREAD;
+ mailbox_make_unread_mail_list(req->mailbox_ugd);
+ break;
+ case VIEWBY_IMPORTANT:
+ req->mailbox_ugd->sort_type = EMAIL_SORT_IMPORTANT;
+ mailbox_make_important_mail_list(req->mailbox_ugd);
+ break;
+ case VIEWBY_ATTACHMENT:
+ req->mailbox_ugd->sort_type = EMAIL_SORT_ATTACHMENTS;
+ mailbox_make_attachment_mail_list(req->mailbox_ugd);
+ break;
+ case VIEWBY_PRIORITY:
+ req->mailbox_ugd->sort_type = EMAIL_SORT_PRIORITY;
+ mailbox_make_priority_mail_list(req->mailbox_ugd);
+ break;
+ case VIEWBY_MEETING_REQUEST:
+ req->mailbox_ugd->sort_type = EMAIL_SORT_MEETING_REQUEST;
+ mailbox_make_meeting_request_mail_list(req->mailbox_ugd);
+ break;
+ }
+
+ evas_object_del(req->mailbox_ugd->viewby_popup);
+ req->mailbox_ugd->viewby_popup = NULL;
+}
+
+static Evas_Object* _gl_viewby_popup_content_get(void *data, Evas_Object *obj, const char *source)
+{
+ viewby_req_t *req = (viewby_req_t *)data;
+ if (!g_strcmp0(source, "elm.icon")) {
+ req->radio = elm_radio_add(obj);
+ elm_radio_state_value_set(req->radio, req->index);
+ if(req->index == VIEWBY_DATE_RECENT)
+ radio_grp = req->radio;
+ else
+ elm_radio_group_add(req->radio,radio_grp);
+
+ if(req->index == req->mailbox_ugd->sort_type_index)
+ elm_radio_value_set(req->radio, req->index);
+ evas_object_smart_callback_add(req->radio, "changed", _radio_cb, req->mailbox_ugd);
+ return req->radio;
+ }
+ return NULL;
+}
+
+static void _radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ mailbox_ugd->sort_type_index = elm_radio_value_get(obj);
+}
+
+
+static char *_gl_viewby_popup_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ viewby_req_t *req = (viewby_req_t *)data;
+ int type = GET_ACCOUNT_SERVER_TYPE(req->mailbox_ugd->account_id);
+
+ char* ret = NULL;
+ if (!g_strcmp0(part, "elm.text"))
+ {
+ switch(req->index)
+ {
+ case VIEWBY_DATE_RECENT:
+ ret = g_strdup(_("IDS_EMAIL_OPT_DATE_HMOST_RECENT"));
+ break;
+ case VIEWBY_DATE_OLD:
+ ret = g_strdup(_("IDS_EMAIL_OPT_DATE_HOLDEST"));
+ break;
+ case VIEWBY_SENDER_ATOZ:
+ ret = g_strdup(_("IDS_EMAIL_OPT_SENDER_HA_TO_Z"));
+ break;
+ case VIEWBY_SENDER_ZTOA:
+ ret = g_strdup(_("IDS_EMAIL_OPT_SENDER_HZ_TO_A"));
+ break;
+ case VIEWBY_UNREAD:
+ ret = g_strdup(_("IDS_EMAIL_OPT_READ_UNREAD"));
+ break;
+ case VIEWBY_IMPORTANT:
+ if(type == EMAIL_SERVER_TYPE_ACTIVE_SYNC)
+ ret = g_strdup(_("IDS_EMAIL_OPT_FLAG"));
+ else
+ ret = g_strdup(_("IDS_EMAIL_OPT_FAVOURITES"));
+ break;
+ case VIEWBY_PRIORITY:
+ ret = g_strdup(dgettext("sys_string", "IDS_COM_POP_PRIORITY"));
+ break;
+ case VIEWBY_MEETING_REQUEST:
+ ret = g_strdup(_("IDS_EMAIL_OPT_MEETING_REQUEST"));
+ break;
+ case VIEWBY_ATTACHMENT:
+ ret = g_strdup(_("IDS_EMAIL_OPT_ATTACHMENTS"));
+ break;
+ }
+ }
+ return ret;
+}
+
+static void _viewby_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+/* debug_log("view_type: [%d], gl:[%p]", mailbox_ugd->view_type, mailbox_ugd->gl[mailbox_ugd->view_type]);
+
+ //evas_object_smart_callback_del(mailbox_ugd->gl[mailbox_ugd->view_type], "realized", _recipient_list_realized_cb);
+ switch(mailbox_ugd->sort_type_index)
+ {
+ case VIEWBY_DATE_RECENT:
+ mailbox_ugd->sort_type = EMAIL_SORT_DATE_ASC;
+ mailbox_make_date_mail_list(mailbox_ugd);
+ break;
+ case VIEWBY_DATE_OLD:
+ mailbox_ugd->sort_type = EMAIL_SORT_DATE_DESC;
+ mailbox_make_date_mail_list(mailbox_ugd);
+ break;
+ case VIEWBY_SENDER_ATOZ:
+ mailbox_ugd->sort_type = EMAIL_SORT_SUBJECT_ASC;
+ mailbox_make_sender_mail_list(mailbox_ugd);
+ break;
+ case VIEWBY_SENDER_ZTOA:
+ mailbox_ugd->sort_type = EMAIL_SORT_SUBJECT_DESC;
+ mailbox_make_sender_mail_list(mailbox_ugd);
+ break;
+ case VIEWBY_UNREAD:
+ mailbox_make_unread_mail_list(mailbox_ugd);
+ break;
+ case VIEWBY_IMPORTANT:
+ mailbox_make_important_mail_list(mailbox_ugd);
+ break;
+ case VIEWBY_ATTACHMENT:
+ mailbox_make_attachment_mail_list(mailbox_ugd);
+ break;
+ case VIEWBY_PRIORITY:
+ mailbox_make_priority_mail_list(mailbox_ugd);
+ break;
+ case VIEWBY_MEETING_REQUEST:
+ mailbox_make_meeting_request_mail_list(mailbox_ugd);
+ break;
+
+ }
+*/
+ evas_object_del(mailbox_ugd->viewby_popup);
+ mailbox_ugd->viewby_popup = NULL;
+}
+
+static void _viewby_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ Elm_Object_Item *item;
+ Evas_Object *genlist;
+ mailbox_ugd->viewby_popup = elm_popup_add(mailbox_ugd->win_main);
+#ifdef _POPUP_WITH_LIST
+ elm_object_style_set(mailbox_ugd->viewby_popup, "min_menustyle");
+#else
+ elm_object_style_set(mailbox_ugd->viewby_popup, "menustyle");
+#endif
+ elm_object_part_text_set(mailbox_ugd->viewby_popup, "title,text", _("IDS_EMAIL_HEADER_SORT_BY"));
+ evas_object_smart_callback_add(mailbox_ugd->viewby_popup, "block,clicked", _block_clicked_cb, NULL);
+ evas_object_size_hint_weight_set(mailbox_ugd->viewby_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ Evas_Object *btn1 = elm_button_add(mailbox_ugd->viewby_popup);
+ elm_object_style_set(btn1, "popup_button/default");
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_POP_CANCEL"));
+ elm_object_part_content_set(mailbox_ugd->viewby_popup, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _viewby_response_cb, mailbox_ugd);
+
+ itc_popup.item_style = "1text.1icon.2";
+ itc_popup.func.text_get =_gl_viewby_popup_text_get;
+ itc_popup.func.content_get = _gl_viewby_popup_content_get;
+ itc_popup.func.state_get = NULL;
+ itc_popup.func.del = NULL;
+ genlist = elm_genlist_add(mailbox_ugd->viewby_popup);
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ EmailMailboxViewby index = 0;
+ for (; index < VIEWBY_MAX; index++) {
+ viewby_req[index] = (viewby_req_t){index, NULL, mailbox_ugd};
+ int type = GET_ACCOUNT_SERVER_TYPE(mailbox_ugd->account_id);
+
+ switch(index)
+ {
+ case VIEWBY_DATE_RECENT:
+ case VIEWBY_DATE_OLD:
+ case VIEWBY_SENDER_ATOZ:
+ case VIEWBY_SENDER_ZTOA:
+ case VIEWBY_UNREAD:
+ case VIEWBY_ATTACHMENT:
+ item = elm_genlist_item_append(genlist, &itc_popup, &viewby_req[index], NULL,
+ ELM_GENLIST_ITEM_NONE, _gl_viewby_popup_sel, NULL);
+ break;
+ case VIEWBY_IMPORTANT:
+ if(mailbox_ugd->account_id != 0)
+ item = elm_genlist_item_append(genlist, &itc_popup, &viewby_req[index], NULL,
+ ELM_GENLIST_ITEM_NONE, _gl_viewby_popup_sel, NULL);
+ break;
+ case VIEWBY_PRIORITY:
+ case VIEWBY_MEETING_REQUEST:
+ if(type == EMAIL_SERVER_TYPE_ACTIVE_SYNC)
+ item = elm_genlist_item_append(genlist, &itc_popup, &viewby_req[index], NULL,
+ ELM_GENLIST_ITEM_NONE, _gl_viewby_popup_sel, NULL);
+ break;
+ case VIEWBY_UNKNOWN:
+ case VIEWBY_MAX:
+ debug_critical("cannot be here.");
+ break;
+ }
+ }
+#ifdef _POPUP_WITH_LIST
+ debug_log("index:%d", index);
+ if (index > 4)
+ index = 4;
+ Evas_Object *box = elm_box_add(mailbox_ugd->viewby_popup);
+ evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 114 * index * elm_scale_get());
+ evas_object_show(genlist);
+ elm_box_pack_end(box, genlist);
+ elm_object_content_set(mailbox_ugd->viewby_popup, box);
+#else
+ elm_object_content_set(mailbox_ugd->viewby_popup, genlist);
+#endif
+ evas_object_show(mailbox_ugd->viewby_popup);
+}
+
+void _create_controlbar(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ _delete_selection_info(mailbox_ugd);
+
+ elm_object_item_part_content_unset(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar");
+
+ _delete_controlbar(mailbox_ugd);
+
+ switch (mailbox_ugd->view_type) {
+ case EMAIL_VIEW_DATE:
+ case EMAIL_VIEW_UNREAD:
+ case EMAIL_VIEW_IMPORTANT:
+ case EMAIL_VIEW_RECIPIENT:
+ case EMAIL_VIEW_THREAD:
+ case EMAIL_VIEW_ATTACHMENTS:
+ case EMAIL_VIEW_MEETING_REQUEST:
+ case EMAIL_VIEW_PRIORITY:
+ mailbox_ugd->controlbar_btns = create_control_option(mailbox_ugd);
+ break;
+ case EMAIL_VIEW_EDIT:
+ mailbox_ugd->controlbar_btns = create_edit_control_option(mailbox_ugd);
+ break;
+ default:
+ break;
+ }
+}
+
+void _delete_controlbar(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ if (mailbox_ugd->controlbar_btns) {
+ evas_object_del(mailbox_ugd->controlbar_btns);
+ mailbox_ugd->controlbar_btns = NULL;
+ //mailbox_ugd->update_button = NULL;
+ //mailbox_ugd->edit_button = NULL;
+ //mailbox_ugd->edit_cancel_button = NULL;
+ mailbox_ugd->delete_all_button = NULL;
+ }
+}
+
+static void _compose_toolbar_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ int account_id = 0;
+
+ if (email_engine_get_default_account(&account_id) == false) {
+ Evas_Object *popup = elm_popup_add(mailbox_ugd->win_main);
+
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_POP_WARNING"));
+ elm_object_text_set(popup, _("IDS_EMAIL_POP_THERE_IS_NO_ACCOUNT_CREATE_A_NEW_ACCOUNT_FIRST"));
+ //elm_popup_mode_set(popup, ELM_POPUP_TYPE_ALERT);
+ evas_object_smart_callback_add(popup, "block,clicked", _block_clicked_cb, NULL);
+ elm_popup_timeout_set(popup, 3);
+ evas_object_show(popup);
+ return;
+ }
+
+ if (ug_pushed == false) {
+ RETURN_IF_FAIL(mailbox_ugd != NULL);
+
+ if (mailbox_ugd->ug_composer) {
+ debug_log("Composer UG is already launched");
+ return;
+ }
+
+ ug_pushed = true;
+
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+
+ gint composer_type = RUN_COMPOSER_NEW;
+ gint account_id = mailbox_ugd->account_id;
+ if (account_id == 0) { /* If user execute all emails view, we will use default account id */
+ email_engine_get_default_account(&account_id);
+ }
+ RETURN_IF_FAIL(account_id > 0);
+
+ debug_log("composer type: %d", composer_type);
+ debug_log("account id: %d", account_id);
+
+ char s_composer_type[14] = { 0, };
+ char s_account_id[14] = { 0, };
+ snprintf(s_composer_type, sizeof(s_composer_type), "%d", composer_type);
+ snprintf(s_account_id, sizeof(s_account_id), "%d", account_id);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, s_composer_type);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, s_account_id);
+ mailbox_ugd->ug_composer = create_composer_ug(UG_NAME_EMAIL_COMPOSER, service, mailbox_ugd);
+
+ service_destroy(service);
+ }
+}
+
+
+static Evas_Object *create_control_option(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ Evas_Object *control_bar;
+
+ control_bar = elm_toolbar_add(mailbox_ugd->navi_bar);
+ elm_toolbar_shrink_mode_set(control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+ elm_toolbar_item_append(control_bar, ICON_COMPOSE, _("IDS_EMAIL_SK_COMPOSE"),
+ _compose_toolbar_clicked_cb, mailbox_ugd);
+
+ if (mailbox_ugd->view_type != EMAIL_VIEW_THREAD) {
+ elm_toolbar_item_append(control_bar, ICON_SORTBY, _("IDS_EMAIL_SK_SORT_BY"),
+ _viewby_cb, mailbox_ugd);
+ }
+
+ int type = GET_ACCOUNT_SERVER_TYPE(mailbox_ugd->account_id);
+ if (type == EMAIL_SERVER_TYPE_ACTIVE_SYNC && mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_INBOX) {
+ elm_toolbar_item_append(control_bar, ICON_MORE, dgettext("sys_string", "IDS_COM_SK_MORE"),
+ _more_toolbar_clicked_cb, mailbox_ugd);
+ evas_object_event_callback_add(control_bar, EVAS_CALLBACK_MOUSE_DOWN, _mousedown_cb, NULL);
+ } else {
+ elm_toolbar_item_append(control_bar, ICON_DELETE_ALL, _("IDS_EMAIL_SK_DELETE_ALL"),
+ _delete_all_emails_cb, mailbox_ugd);
+ }
+
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar", control_bar);
+
+ return control_bar;
+}
+
+
+static void _mousedown_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ Evas_Event_Mouse_Down *ev = event_info;
+
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ touch_x = ev->canvas.x;
+ touch_y = ev->canvas.y;
+}
+
+
+static Evas_Object *create_edit_control_option(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ Evas_Object *control_bar;
+
+ email_mailbox_type_e mbox_type = EMAIL_MAILBOX_TYPE_NONE;
+ mbox_type = GET_MAILBOX_TYPE(mailbox_ugd->mailbox_id);
+
+ g_delete_button = NULL;
+ g_move_button = NULL;
+ g_block_button = NULL;
+ g_markunread_button = NULL;
+
+ control_bar = elm_toolbar_add(mailbox_ugd->navi_bar);
+ elm_toolbar_shrink_mode_set(control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+ g_delete_button = elm_toolbar_item_append(control_bar, ICON_DELETE,
+ dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_mail_cb, mailbox_ugd);
+
+ if (mbox_type != EMAIL_MAILBOX_TYPE_OUTBOX && mbox_type != EMAIL_MAILBOX_TYPE_DRAFT)
+ {
+ g_move_button = elm_toolbar_item_append(control_bar, ICON_MOVE,
+ dgettext("sys_string", "IDS_COM_BODY_MOVE"), _move_mail_cb, mailbox_ugd);
+ }
+ if (mbox_type != EMAIL_MAILBOX_TYPE_DRAFT && mbox_type != EMAIL_MAILBOX_TYPE_OUTBOX &&
+ mbox_type != EMAIL_MAILBOX_TYPE_SPAMBOX && mbox_type != EMAIL_MAILBOX_TYPE_SENTBOX)
+ {
+ g_block_button = elm_toolbar_item_append(control_bar, ICON_BLOCK,
+ _("IDS_EMAIL_SK_BLOCK"), _block_mail_cb, mailbox_ugd);
+ }
+
+ g_markunread_button = elm_toolbar_item_append(control_bar, ICON_MARKUNREAD,
+ _("IDS_EMAIL_OPT_MARK_AS_UNREAD"), _markunread_mail_cb, mailbox_ugd);
+
+// mailbox_ugd->edit_cancel_button = elm_toolbar_item_append(control_bar, ICON_CANCEL,
+// NULL/*dgettext("sys_string", "IDS_COM_SK_CANCEL")*/, _edit_back_cb, mailbox_ugd);
+
+ return control_bar;
+}
+
+static void _move_mail_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ _delete_selection_info(mailbox_ugd);
+ mailbox_process_move_mail(mailbox_ugd);
+}
+
+
+
+
--- /dev/null
+/*
+ * 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.
+ */
+
+#include <status.h>
+
+#include "email-mailbox.h"
+#include "email-mailbox-item.h"
+#include "email-mailbox-list.h"
+
+
+gboolean _g_move_lock = false;
+gboolean _g_move_cancel_lock = false;
+static Elm_Genlist_Item_Class itc_mailbox;
+
+extern Eina_List *edit_list;
+extern gboolean b_editmode;
+extern gboolean list_lock;
+
+
+static Eina_Bool _create_mailbox_list_view(void *data);
+static void _mailbox_list_item_clicked(void *data, Evas_Object *obj, void *event_info);
+static void _mailbox_list_move_cancel_cb(void *data, Evas_Object *obj, void *event_info);
+static char *_gl_mailbox_list_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_gl_mailbox_list_content_get(void *data, Evas_Object *obj, const char *source);
+Eina_Bool _gl_mailbox_list_state_get(void *data, Evas_Object *obj, const char *part);
+static void _gl_mailbox_list_del(void *data, Evas_Object *obj);
+
+
+static Eina_Bool _create_mailbox_list_view(void *data)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ Evas_Object *genlist = elm_genlist_add(mailbox_ugd->navi_bar);
+ Evas_Object *btn = elm_button_add(mailbox_ugd->navi_bar);
+ elm_object_style_set(btn, "naviframe/end_btn/default");
+ evas_object_smart_callback_add(btn, "clicked", _mailbox_list_move_cancel_cb, mailbox_ugd);
+ /*Elm_Object_Item *navibar_item = */elm_naviframe_item_push(mailbox_ugd->navi_bar, dgettext("sys_string", "IDS_COM_BODY_MOVE"), btn, NULL, genlist, NULL);
+ email_mailbox_t *mailbox_list = NULL;
+ int mailbox_count = 0;
+ int i = 0;
+
+ email_get_mailbox_list(mailbox_ugd->account_id, -1, &mailbox_list, &mailbox_count);
+
+ itc_mailbox.item_style = "1text.1icon.2";
+ itc_mailbox.func.text_get = _gl_mailbox_list_text_get;
+ itc_mailbox.func.content_get = _gl_mailbox_list_content_get;
+ itc_mailbox.func.state_get = _gl_mailbox_list_state_get;
+ itc_mailbox.func.del = _gl_mailbox_list_del;
+
+ email_movefolder_list *move_folder = (email_movefolder_list *) calloc(mailbox_count, sizeof(email_movefolder_list));
+
+ for (i = 0; i < mailbox_count; ++i) {
+
+ if (mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_OUTBOX &&
+ mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_SENTBOX &&
+ mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_DRAFT &&
+ mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_TRASH &&
+ mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_ALL_EMAILS &&
+ mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_SEARCH_RESULT) {
+ debug_log("mailbox_name: [%s], mailbox_alias: [%s] ", mailbox_list[i].mailbox_name, mailbox_list[i].alias);
+
+ if (g_strcmp0(mailbox_list[i].alias, "[Gmail]")) {
+ move_folder[i].mailbox_list = &mailbox_list[i];
+ move_folder[i].mailbox_ugd = mailbox_ugd;
+ elm_genlist_item_append(genlist, &itc_mailbox, &move_folder[i], NULL, ELM_GENLIST_ITEM_NONE, _mailbox_list_item_clicked, NULL);
+ }
+ }
+ }
+ mailbox_ugd->move_folder_list = move_folder;
+ mailbox_ugd->move_folder_cnt = mailbox_count;
+
+ return 0;
+}
+
+static void _mailbox_list_item_clicked(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ const Elm_Object_Item *it = (Elm_Object_Item *)event_info;
+ const void *item_data = elm_object_item_data_get(it);
+ email_movefolder_list *move_folder = (email_movefolder_list *) item_data;
+ EmailMailboxUGD *mailbox_ugd = move_folder->mailbox_ugd;
+ int post_rt = 0;
+
+ int count = g_list_length(mailbox_ugd->selected_list);
+ int mail_ids[count];
+ memset(mail_ids, 0, sizeof(mail_ids));
+ int i=0;
+ GList* cur = g_list_first(mailbox_ugd->selected_list);
+ for( ; i < count ; i++, cur=g_list_next(cur)) {
+ mail_ids[i] = (int) g_list_nth_data(cur, 0);
+ debug_log("mail_id (%d)", mail_ids[i]);
+ }
+
+ int e = email_move_mail_to_mailbox(mail_ids, count,move_folder->mailbox_list->mailbox_id);
+ if (e != EMAIL_ERROR_NONE) {
+ debug_warning("email_move_mail_to_mailbox acct(%d) mailbox_id(%d) num(%d) - err (%d)",
+ mailbox_ugd->account_id, move_folder->mailbox_list->mailbox_id, count, e);
+ }
+
+ if (e == EMAIL_ERROR_NONE && count >0) {
+ post_rt = status_message_post(dgettext("sys_string", "IDS_COM_POP_MOVED"));
+ if (post_rt) {
+ debug_log("fail to status_message_post() : %d\n", e);
+ }
+ }
+
+ g_list_free(mailbox_ugd->selected_list);
+ mailbox_ugd->selected_list = NULL;
+ email_free_mailbox(&(mailbox_ugd->move_folder_list->mailbox_list), mailbox_ugd->move_folder_cnt);
+ FREE(mailbox_ugd->move_folder_list);
+
+ elm_naviframe_item_pop(mailbox_ugd->navi_bar);
+
+ if(mailbox_ugd->view_type == EMAIL_VIEW_EDIT)
+ {
+ mailbox_ugd->view_type = mailbox_ugd->previous_view;
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD)
+ mailbox_ugd->previous_view = EMAIL_VIEW_DATE;
+
+ edit_list = eina_list_free(edit_list);
+ //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "focused", _searchbar_entry_focus_cb, mailbox_ugd);
+ //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "unfocused", _searchbar_entry_unfocus_cb, mailbox_ugd);
+
+ elm_genlist_decorate_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_FALSE);
+ elm_genlist_reorder_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_FALSE);
+ elm_genlist_select_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], ELM_OBJECT_SELECT_MODE_DEFAULT);
+
+ b_editmode = false;
+ elm_object_disabled_set(mailbox_ugd->folder_button, EINA_FALSE);
+ _update_navigationbar_title(mailbox_ugd);
+
+ if (mailbox_ugd->isRotate == true) {
+ email_rotate_landscape(mailbox_ugd);
+ /*
+ if (mailbox_ugd->current_rotmode == APP_DEVICE_ORIENTATION_270)
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE, NULL, mailbox_ugd);
+ else
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN, NULL, mailbox_ugd);
+ */
+ } else {
+ elm_object_part_content_set(mailbox_ugd->search_layout, "searchbar", mailbox_ugd->searchbar_layout);
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_searchbar", "search");
+ }
+ }
+
+ if (_g_move_lock) {
+ _g_move_lock = false;
+ }
+
+}
+
+static void _mailbox_list_move_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ if (_g_move_cancel_lock)
+ return;
+ else
+ _g_move_cancel_lock = true;
+
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+ elm_naviframe_item_pop(mailbox_ugd->navi_bar);
+
+ if (_g_move_lock) {
+ _g_move_lock = false;
+ }
+}
+
+static char *_gl_mailbox_list_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ email_movefolder_list *move_folder = (email_movefolder_list *) data;
+
+ if (!g_strcmp0(part, "elm.text")) {
+ if (move_folder->mailbox_list->alias != NULL)
+ return g_strdup(move_folder->mailbox_list->alias);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *_gl_mailbox_list_content_get(void *data, Evas_Object *obj, const char *source)
+{
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return NULL;
+ }
+
+ if (!g_strcmp0(source, "elm.icon")) {
+ char folder_icon_path[1024] = { 0, };
+ Evas_Object *ic = elm_icon_add(obj);
+ snprintf(folder_icon_path, sizeof(folder_icon_path), IMGDIR "/U01_icon_folder.png");
+ elm_icon_file_set(ic, folder_icon_path, NULL);
+ elm_icon_resizable_set(ic, 0, 0);
+ evas_object_image_smooth_scale_set(ic, 0);
+ evas_object_show(ic);
+
+ return ic;
+ }
+
+ return NULL;
+}
+
+Eina_Bool _gl_mailbox_list_state_get(void *data, Evas_Object *obj, const char *part)
+{
+ return EINA_FALSE;
+}
+
+static void _gl_mailbox_list_del(void *data, Evas_Object *obj)
+{
+ return;
+}
+
+void mailbox_process_move_mail(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ if (_g_move_lock) {
+ return;
+ }
+
+ Eina_List *list = edit_list;
+ int checked_count = eina_list_count(list);
+ debug_log("checked_count: [%d]", checked_count);
+ if (checked_count<= 0) return;
+
+ int i = 0;
+ for ( ; i < checked_count; i++)
+ {
+ Eina_List *nth_list = eina_list_nth_list(list, i);
+ list_data *ld = eina_list_data_get(nth_list);
+
+ /* save the mail-id to be moved */
+ if (mailbox_ugd->previous_view == EMAIL_VIEW_THREAD ||
+ mailbox_ugd->previous_view == EMAIL_VIEW_UNREAD ||
+ mailbox_ugd->previous_view == EMAIL_VIEW_IMPORTANT ||
+ mailbox_ugd->previous_view == EMAIL_VIEW_ATTACHMENTS ||
+ mailbox_ugd->previous_view == EMAIL_VIEW_MEETING_REQUEST ||
+ mailbox_ugd->previous_view == EMAIL_VIEW_PRIORITY ||
+ mailbox_ugd->previous_view == EMAIL_VIEW_RECIPIENT ||
+ mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX ||
+ mailbox_ugd->b_thread_list == false)
+ {
+ int mail_id = ld->mail_id;
+ mailbox_ugd->selected_list =
+ g_list_prepend(mailbox_ugd->selected_list, GINT_TO_POINTER(mail_id));
+ }
+ /* get mails of thread id and add them to selected_list */
+ else {
+ /* Get thread mail list */
+ email_mail_list_item_t *mailbox_data = NULL;
+ int mail_count = 0;
+ int err = email_get_mail_list(ld->account_id, 0, ld->thread_id,
+ -1, /* start_index */
+ -1, /* limit_count */
+ _mailbox_conv_sort_type(mailbox_ugd->sort_type), &mailbox_data, &mail_count);
+ if( err != EMAIL_ERROR_NONE ) {
+ debug_warning("email_get_mail_list_ex - err(%d)", err);
+ }
+ int k = 0;
+ for( ; k<mail_count ; k++ )
+ mailbox_ugd->selected_list = g_list_prepend(mailbox_ugd->selected_list,
+ GINT_TO_POINTER(mailbox_data[k].mail_id));
+ FREE(mailbox_data);
+ }
+
+ }
+
+
+ _create_mailbox_list_view(mailbox_ugd);
+
+ _g_move_lock = true;
+ _g_move_cancel_lock = false;
+
+ //edit_list = eina_list_free(edit_list);
+}
+
+void mailbox_process_delete_mail(void* data, Ecore_Thread *thd)
+{
+ debug_enter();
+ if( !data ) {
+ debug_warning("PARAM NULL: data(%p)", data);
+ return;
+ }
+
+ edit_req_t *req = (edit_req_t *)data;
+ EmailMailboxUGD *mailbox_ugd = req->mailbox_ugd;
+ EmailMailboxViewType previous_view = req->previous_view;
+
+ int i = 0;
+ int max_account_id = email_engine_get_max_account_id();
+ int result = EMAIL_ERROR_UNKNOWN;
+
+ if (max_account_id < 0) {
+ debug_error("Invalid max_account_id was returned.");
+ return;
+ }
+
+ GList *move_mail_list[max_account_id];
+ memset(move_mail_list, 0, max_account_id*sizeof(GList *));
+
+ /* delete list and count */
+ GList *del_mail_list = NULL;
+
+ Eina_List *list = edit_list;
+ int checked_count = eina_list_count(list);
+ debug_log("checked_count: %d", checked_count);
+ if (checked_count <= 0) return;
+
+ /* if single mail view (not threaded view), */
+ if (previous_view == EMAIL_VIEW_THREAD ||
+ previous_view == EMAIL_VIEW_UNREAD ||
+ previous_view == EMAIL_VIEW_IMPORTANT ||
+ previous_view == EMAIL_VIEW_PRIORITY ||
+ previous_view == EMAIL_VIEW_MEETING_REQUEST ||
+ previous_view == EMAIL_VIEW_ATTACHMENTS ||
+ previous_view == EMAIL_VIEW_RECIPIENT ||
+ mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX ||
+ mailbox_ugd->b_thread_list == false)
+ {
+ /* get the first item and check if item is in trash box. if so, all other items are in trash */
+ list_data* ld = eina_list_data_get(list);
+ int is_trash = (GET_MAILBOX_TYPE(ld->mailbox_id) == EMAIL_MAILBOX_TYPE_TRASH)? 1:0;
+
+ Eina_List* cur = NULL;
+ EINA_LIST_FOREACH(list, cur, ld)
+ {
+ if ( is_trash )
+ del_mail_list =
+ g_list_prepend(del_mail_list, GINT_TO_POINTER(ld->mail_id));
+ else
+ move_mail_list[ld->account_id-1] =
+ g_list_prepend(move_mail_list[ld->account_id-1], GINT_TO_POINTER(ld->mail_id));
+ }
+ }
+ /* if threaded mail view */
+ else if (previous_view == EMAIL_VIEW_DATE)
+ {
+ /* Get thread mail list */
+ Eina_List* cur = NULL;
+ list_data* ld = NULL;
+ EINA_LIST_FOREACH(list, cur, ld)
+ {
+
+ int count = 0;
+ int acct = ld->account_id;
+ if( acct <= 0 ) {
+ debug_log("acct(%d) should be positive", acct);
+ }
+ email_mail_list_item_t *mail_list = NULL;
+ int e = email_get_mail_list(acct, 0, ld->thread_id, -1, -1,
+ _mailbox_conv_sort_type(mailbox_ugd->sort_type), &mail_list, &count);
+ debug_log("id %d, count %d", acct, count);
+ if( e != EMAIL_ERROR_NONE || !mail_list ) {
+ debug_warning("email_get_mail_list -err(%d), acct(%d), th_id(%d), sort(%d) or mail_list NULL(%p)",
+ e, acct, NULL, ld->thread_id, mailbox_ugd->sort_type, mail_list);
+ continue;
+ }
+ int i=0;
+ for( ; i < count ; i++ )
+ move_mail_list[acct-1] =
+ g_list_prepend(move_mail_list[acct-1], GINT_TO_POINTER(mail_list[i].mail_id));
+
+ FREE(mail_list);
+ }
+ }
+
+
+ /* delete routine */
+ if ( del_mail_list )
+ {
+ int count = g_list_length(del_mail_list);
+ int mail_ids[count]; memset(mail_ids, 0, sizeof(mail_ids));
+ int i=0;
+ GList* cur = g_list_first(del_mail_list);
+ for ( ; i < count; ++i, cur = g_list_next(cur)) {
+ mail_ids[i] = (int) g_list_nth_data(cur, 0);
+ }
+
+ result = email_delete_mail(mailbox_ugd->mailbox_id, mail_ids, count, EMAIL_DELETE_LOCAL_AND_SERVER);
+
+ if (result != EMAIL_ERROR_NONE) {
+ debug_warning("email_delete_message account_id(%d) count(%d)- err (%d)",
+ mailbox_ugd->account_id, count, result);
+ }
+ }
+
+ /* move-mails-to-trash routine */
+ int acct = 0;
+ for ( acct = 0; acct < max_account_id; ++acct) {
+ if ( !move_mail_list[acct]) continue;
+ else
+ {
+ /* convert GList to int array */
+ int count = g_list_length(move_mail_list[acct]);
+ int mail_ids[count]; memset(mail_ids, 0, sizeof(mail_ids));
+ int i=0;
+ GList* cur = g_list_first(move_mail_list[acct]);
+ for( ; i < count ; i++, cur=g_list_next(cur))
+ mail_ids[i] = (int) g_list_nth_data(cur, 0);
+
+ /* making dest folder - trash */
+ int trashbox_id = GET_MAILBOX_ID(acct+1, EMAIL_MAILBOX_TYPE_TRASH);
+
+ result = email_move_mail_to_mailbox(mail_ids, count, trashbox_id);
+ if (result != EMAIL_ERROR_NONE) {
+ debug_warning("email_move_mail_to_mailbox acct(%d) folder_id(%d) num(%d) - err (%d)",
+ acct+1, trashbox_id, count, result);
+ }
+ }
+ }
+
+ int e_post = 0;
+ if (result == EMAIL_ERROR_NONE) {
+ e_post = status_message_post(dgettext("sys_string", "IDS_COM_POP_DELETED"));
+
+ if (e_post) {
+ debug_log("fail to status_message_post() : %d\n", e_post);
+ }
+ }
+
+//CLEANUP:
+
+ if (del_mail_list) {
+ g_list_free(del_mail_list);
+ }
+
+ for (i = 0; i < max_account_id; ++i) {
+ if (move_mail_list[i] != NULL) {
+ g_list_free(move_mail_list[i]);
+ move_mail_list[i] = NULL;
+ }
+ }
+
+ edit_list = eina_list_free(edit_list);
+
+}
+
+void mailbox_delete_mail_item_from_list(EmailMailboxUGD * mailbox_ugd, list_data * ld)
+{
+ debug_log("");
+ if(ld == NULL || ld->item == NULL) {
+ debug_warning("ld == NULL or ld->item == NULL");
+ return;
+ }
+ Elm_Object_Item *parent = elm_genlist_item_parent_get(ld->item);
+ Elm_Object_Item *next = elm_genlist_item_next_get(ld->item);
+ Elm_Object_Item *prev = elm_genlist_item_prev_get(ld->item);
+ if(parent == prev && (NULL == next || NULL == elm_genlist_item_parent_get(next))) {
+ elm_object_item_del(parent);
+ mailbox_ugd->git[mailbox_ugd->view_type][ld->group_index] = NULL;
+ }
+ if(ld->item) elm_object_item_del(ld->item);
+
+ mailbox_ugd->list_data[mailbox_ugd->view_type] =
+ g_list_remove(mailbox_ugd->list_data[mailbox_ugd->view_type], ld);
+ _free_list_data_simple(ld);
+}
+
+void _popup_response_delete_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ if (mailbox_ugd->delete_popup) {
+ evas_object_del(mailbox_ugd->delete_popup);
+ mailbox_ugd->delete_popup = NULL;
+ }
+
+ edit_req_t *req = MEM_ALLOC(req, 1);
+ if(!req) return;
+ req->previous_view = mailbox_ugd->previous_view;
+ req->mailbox_ugd = mailbox_ugd;
+ ecore_thread_feedback_run(mailbox_process_delete_mail, NULL,
+ NULL, NULL, req, EINA_TRUE);
+
+ mailbox_ugd->view_type = mailbox_ugd->previous_view;
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD)
+ mailbox_ugd->previous_view = EMAIL_VIEW_DATE;
+
+ //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "focused", _searchbar_entry_focus_cb, mailbox_ugd);
+ //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "unfocused", _searchbar_entry_unfocus_cb, mailbox_ugd);
+
+ elm_genlist_decorate_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_FALSE);
+ elm_genlist_reorder_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_FALSE);
+ elm_genlist_select_mode_set(mailbox_ugd->gl[mailbox_ugd->view_type], ELM_OBJECT_SELECT_MODE_DEFAULT);
+
+ b_editmode = false;
+ elm_object_disabled_set(mailbox_ugd->folder_button, EINA_FALSE);
+
+ _update_navigationbar_title(mailbox_ugd);
+
+ if (mailbox_ugd->isRotate == true) {
+ email_rotate_landscape(mailbox_ugd);
+ /*
+ if (mailbox_ugd->current_rotmode == APP_DEVICE_ORIENTATION_270)
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE, NULL, mailbox_ugd);
+ else
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN, NULL, mailbox_ugd);
+ */
+ } else {
+ elm_object_part_content_set(mailbox_ugd->search_layout, "searchbar", mailbox_ugd->searchbar_layout);
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_searchbar", "search");
+ }
+
+}
+
+void _popup_response_delete_all_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ if (mailbox_ugd->delete_popup) {
+ evas_object_del(mailbox_ugd->delete_popup);
+ mailbox_ugd->delete_popup = NULL;
+ }
+/*
+ if (mailbox_ugd->folder_name == NULL || mailbox_ugd->account_id == 0) {
+ debug_log("delete all in All emails");
+ return;
+ }
+*/
+ debug_log("account id: [%d], folder_id: [%d], emf_handle: [%d]", mailbox_ugd->account_id, mailbox_ugd->mailbox_id, mailbox_ugd->emf_handle);
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+
+ {
+ if (mailbox_ugd->account_id != 0 && mailbox_ugd->mailbox_id != 0)
+ {
+ email_mailbox_t *trashbox = NULL;
+ email_get_mailbox_by_mailbox_type(mailbox_ugd->account_id, EMAIL_MAILBOX_TYPE_TRASH, &trashbox);
+
+ if (trashbox) {
+ if (mailbox_ugd->mailbox_id == trashbox->mailbox_id) {
+ if (FALSE == email_engine_delete_all_mail(mailbox_ugd->account_id, mailbox_ugd->mailbox_id, EMAIL_DELETE_LOCALLY)) {
+ debug_critical("email_engine_delete_all_mail failed");
+ } else {
+ elm_object_item_disabled_set(mailbox_ugd->delete_all_button, EINA_TRUE);
+ }
+ } else {
+ if (FALSE == email_engine_move_all_mail(mailbox_ugd->account_id, mailbox_ugd->mailbox_id, trashbox->mailbox_id)) {
+ debug_critical("email_engine_move_all_mail failed");
+ } else {
+ elm_object_item_disabled_set(mailbox_ugd->delete_all_button, EINA_TRUE);
+ }
+ }
+ } else {
+ debug_critical("trashbox is NULL, email_engine_move_all_mail failed");
+ }
+
+ if (trashbox)
+ email_free_mailbox(&trashbox, 1);
+ }
+ else if (mailbox_ugd->account_id != 0 && mailbox_ugd->mailbox_id == 0)
+ {
+ email_mailbox_t *inbox = NULL;
+ email_mailbox_t *trashbox = NULL;
+
+ email_get_mailbox_by_mailbox_type(mailbox_ugd->account_id, EMAIL_MAILBOX_TYPE_INBOX, &inbox);
+ email_get_mailbox_by_mailbox_type(mailbox_ugd->account_id, EMAIL_MAILBOX_TYPE_TRASH, &trashbox);
+
+ if (inbox && trashbox) {
+ if (FALSE == email_engine_move_all_mail(mailbox_ugd->account_id, inbox->mailbox_id, trashbox->mailbox_id)) {
+ debug_critical("email_engine_move_all_mail failed");
+ } else {
+ elm_object_item_disabled_set(mailbox_ugd->delete_all_button, EINA_TRUE);
+ }
+ } else {
+ debug_critical("trashbox(%p) or inbox(%p) is NULL, email_engine_move_all_mail failed", inbox, trashbox);
+ }
+
+ if (inbox)
+ email_free_mailbox(&inbox, 1);
+ if (trashbox)
+ email_free_mailbox(&trashbox, 1);
+ }
+ else // all account
+ {
+ email_account_t *account_list = NULL;
+ int account_count = 0;
+ int err = 0;
+ int i = 0;
+
+ err = email_engine_get_account_list(&account_count, &account_list);
+
+ if (err == 0) {
+ debug_critical("fail to get account list - err(%d)", err);
+ return;
+ }
+
+ if (account_list == NULL || account_count == 0) {
+ debug_critical("account info is @niL");
+ return;
+ }
+
+ for (i = 0; i < account_count; i++) {
+ email_mailbox_t *inbox = NULL;
+ email_mailbox_t *trashbox = NULL;
+
+ email_get_mailbox_by_mailbox_type(account_list[i].account_id, EMAIL_MAILBOX_TYPE_INBOX, &inbox);
+ email_get_mailbox_by_mailbox_type(account_list[i].account_id, EMAIL_MAILBOX_TYPE_TRASH, &trashbox);
+
+ if (inbox && trashbox) {
+ if (FALSE == email_engine_move_all_mail(account_list[i].account_id, inbox->mailbox_id, trashbox->mailbox_id)) {
+ debug_critical("email_engine_move_all_mail failed, account_id: %d", account_list[i].account_id);
+ } else {
+ debug_log("account id[%d]: [%d] delete inbox.", i, account_list[i].account_id);
+ }
+ } else {
+ debug_critical("trashbox(%p) or inbox(%p) is NULL, email_engine_move_all_mail failed", inbox, trashbox);
+ }
+
+
+ if (inbox)
+ email_free_mailbox(&inbox, 1);
+ if (trashbox)
+ email_free_mailbox(&trashbox, 1);
+ }
+ elm_object_item_disabled_set(mailbox_ugd->delete_all_button, EINA_TRUE);
+
+ err = email_engine_free_account_list(&account_list, account_count);
+ if (err == 0) {
+ debug_critical("fail to free account list - err(%d)", err);
+ }
+ }
+ }
+}
+
+void _resend_mail_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ unsigned handle = 0;
+
+ list_data *ld = (list_data *)data;
+
+ email_account_t *account = NULL;
+
+ /* Get sending option for account from email-service */
+ int err = email_get_account(ld->account_id, ONLY_OPTION, &account);
+ if (err != EMAIL_ERROR_NONE) {
+ debug_warning("email_get_account acct(%d) - err(%d)", ld->account_id, err);
+ goto CLEANUP;
+ }
+
+ /* Send email again */
+ err = email_send_mail(ld->mail_id, &(account->options), &handle);
+ if ( err != EMAIL_ERROR_NONE ) {
+ debug_warning("email_send_mail acct(%d) - err(%d)", ld->account_id, err);
+ }
+
+
+CLEANUP:
+ if(account) email_free_account(&account, 1);
+
+}
+
+void _cancel_send_mail_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ list_data *ld = (list_data *)data;
+
+ int err = email_cancel_sending_mail(ld->mail_id);
+
+ if (err != EMAIL_ERROR_NONE) {
+ debug_warning("email_engine_cancel_send_mail failed - err(%d)", err);
+ } else {
+ /* Mail send is cancelled. Change the label of button to Resend */
+ elm_object_text_set(obj, _("IDS_EMAIL_OPT_RESEND"));
+
+ /* Delete cancel mail callback added to button */
+ evas_object_smart_callback_del(obj, "clicked", _cancel_send_mail_cb);
+
+ /* Add new callback to button which can resend the email */
+ evas_object_smart_callback_add(obj, "clicked", _resend_mail_cb, data);
+
+ /* Emit the signal to remove gray out */
+ elm_object_item_signal_emit(ld->item, "elm,state,enabled", "elm");
+
+ /* Enable the genlist item to receive events*/
+ elm_genlist_item_select_mode_set(ld->item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+
+ }
+}
+
--- /dev/null
+/*
+ Email Application
+
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd All Rights Reserved
+Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
+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.
+*/
+
+#include "email-mailbox.h"
+#include "email-mailbox-list.h"
+#include "email-mailbox-item.h"
+#include "email-mailbox-search.h"
+#include "email-mailbox-sweep.h"
+#include "email-mailbox-controlbar.h"
+
+
+static Elm_Genlist_Item_Class itc_item_for_sender_index;
+static char *alias;
+static Elm_Object_Item *sender_group;
+gboolean b_editmode = false;
+Eina_List *edit_list = NULL;
+gboolean list_lock = false;
+char *group_title[EMAIL_GROUP_MAX][2];
+static bool b_first_time_after_get_more = false;
+static Elm_Object_Item *g_get_more_progress_item;
+static Elm_Genlist_Item_Class itc_get_more_progress;
+Elm_Object_Item *g_selected_item;
+int is_main_thread_busy = false;
+extern Elm_Object_Item *g_server_search_item;
+
+#define WORKER_SLEEP_PERIOD 2
+#define BLOCK_COUNT 10
+#define FIRST_BLOCK_SIZE 6
+
+#undef ITEM_EXIST
+#define ITEM_EXIST(p) (p && p->item)
+
+#undef ITEM_IN_SAME_GROUP
+#define ITEM_IN_SAME_GROUP(src, cur) \
+ (src && src->item && mailbox_ugd->git[view_type][src->group_index] == mailbox_ugd->git[view_type][cur->group_index])
+
+#undef GROUP_INDEX
+#define GROUP_INDEX(p) ((p && p->item)? p->group_index : -1)
+
+#define UTF8_VALIDATE(from, len) \
+ ({\
+ char *end = NULL;\
+ if(STR_VALID(from))\
+ if(!g_utf8_validate(from, len, (const gchar **)&end) && end)\
+ *end = '\0';\
+ NULL;\
+ })
+
+#define GET_NAME_FROM_ALIAS(alias, len) \
+ ({\
+ char *_from = NULL;\
+ if (STR_VALID(alias)) {\
+ gchar **token = NULL;\
+ token = g_strsplit_set(alias, "\"", -1);\
+ if (token && STR_VALID(token[1])) {\
+ _from = STRNDUP(token[1], len);\
+ g_strfreev(token);\
+ } else { \
+ debug_log("***FROM == [%s]", alias);\
+ _from = STRNDUP(dgettext("sys_string", "IDS_COM_BODY_NO_NAME"), len);\
+ }\
+ } else\
+ _from = STRNDUP(dgettext("sys_string", "IDS_COM_BODY_NO_NAME"), len);\
+ _from;\
+ })
+
+#define GET_ACCOUNT_COLOR(account_id) \
+ ({\
+ email_account_t *email_account = NULL;\
+ account_user_data_t email_userdata = {0};\
+ int color = 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 {\
+ memcpy((void*)&email_userdata, email_account->user_data, email_account->user_data_length);\
+ color = email_userdata.index_color;\
+ }\
+ if(email_account) email_free_account(&email_account, 1);\
+ color;\
+ })
+
+#define CHECK_THREAD_BUSY() \
+ ({\
+ while(is_main_thread_busy) { \
+ sleep(WORKER_SLEEP_PERIOD); \
+ } \
+ })
+
+#define SNPRINTF_OFFSET(base_buf, offset, base_size, format, args...) \
+ ({\
+ int _offset = offset;\
+ snprintf(base_buf + _offset, base_size - _offset - 1, format, ##args);\
+ })
+
+
+static email_mail_list_item_t *_get_mail_list_by_view(EmailMailboxUGD *mailbox_ugd, const EmailSearchData *search_data, int *mail_count);
+static void _insert_mail_to_recipient_mailist(EmailMailboxUGD *mailbox_ugd, list_data* ld);
+static void _insert_normal_item_to_mailist(EmailMailboxUGD *mailbox_ugd, list_data *ld, list_data *prev, list_data *next);
+//static gint _compare_date_asc(gconstpointer a, gconstpointer b);
+//static gint _compare_date_desc(gconstpointer a, gconstpointer b);
+static void _clear_genlist(EmailMailboxUGD *mailbox_ugd);
+static void _free_list_data(GList *list_data);
+static void _handle_last_sending_email(EmailMailboxUGD *mailbox_ugd);
+static void _parse_delete_mail_buf(char *inbuf, GList **mail_list);
+static int email_set_group(list_data *ld);
+static void insert_search_tag (char *dest, int dest_len, const char *src, const char *key);
+static char *_gl_recipient_group_text_get(void *data, Evas_Object *obj, const char *part);
+static void _remaining_finish_cb(void* data, Ecore_Thread *thd);
+static void _list_item_clicked(void *data, Evas_Object *obj, void *event_info);
+static void _process_item_check_changed_cb(list_data *ld);
+static void _my_gl_mode_right(void *data, Evas_Object *obj, void *event_info);
+static void _my_gl_mode_left(void *data, Evas_Object *obj, void *event_info);
+static char *_gl_group_text_get(void *data, Evas_Object *obj, const char *part);
+static char *_gl_mail_item_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_gl_mail_item_content_get(void *data, Evas_Object *obj, const char *source);
+static void _important_status_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void _item_followup_flag_touched_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info);
+static void _realized_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *_create_progress_part_in_outbox(list_data *ld, Evas_Object *obj);
+static void _my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info);
+static void _get_more_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _add_get_more_progress_item(EmailMailboxUGD *mailbox_ugd);
+static char *_gl_get_more_btn_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_gl_get_more_btn_content_get(void *data, Evas_Object *obj, const char *source);
+static void add_mail_to_threaded (EmailMailboxUGD *mailbox_ugd, list_data *ld);
+static void _parse_move_mail_buf(char *inbuf, char **src_folder, char **dst_folder, GList **mail_list);
+static void add_remining_item_cb(void *data, Ecore_Thread *thd, void* msg_data);
+static void worker_get_remaing_list_cb(void* data, Ecore_Thread *thd);
+static void set_busy_cb(void *data, Evas *e, Evas_Object *o, void *info);
+static void reset_busy_cb(void *data, Evas *e, Evas_Object *o, void *info);
+
+void _free_list_data_simple(list_data *ld)
+{
+
+ if (ld == NULL) {
+ return;
+ }
+
+ FREE(ld->from);
+ FREE(ld->alias);
+ FREE(ld->sender);
+ FREE(ld->preview_body);
+ FREE(ld->title);
+ FREE(ld->recipient);
+ FREE(ld->timeordate);
+ FREE(ld->group_title);
+ FREE(ld->group_date);
+ ld->item = NULL;
+ FREE(ld);
+}
+
+static void _parse_move_mail_buf(char *inbuf, char **src_folder, char **dst_folder, GList **mail_list)
+{
+ debug_enter();
+ if(!STR_VALID(inbuf)) {
+ return;
+ }
+
+ /* notification format: <src_folder><0x01><dst_folder><0x01><<mail_id><,><mail_id>>*/
+ gchar **outer_tok;
+ char delimiter[2] ={0x01, 0x00};
+ outer_tok = g_strsplit_set(inbuf, delimiter, -1);
+ if (outer_tok == NULL) {
+ debug_log("outer_tok == NULL");
+ return;
+ }
+ if (outer_tok[0] && strlen(outer_tok[0]) > 0)
+ *src_folder = strdup(outer_tok[0]);
+ if(outer_tok[1] && strlen(outer_tok[1]) > 0)
+ *dst_folder = strdup(outer_tok[1]);
+ if(outer_tok[2] && strlen(outer_tok[2]) >0) {
+ gchar **inner_tok;
+ int i = 0;
+ inner_tok = g_strsplit_set(outer_tok[2], ",", -1);
+ for(i = 0; i < g_strv_length(inner_tok) - 1; ++i) {
+ debug_log("%s", inner_tok[i]);
+ if(!strcmp(inner_tok[i], "\"")) /* skip the empty token */
+ continue;
+ else {
+ int *mail_id = (int *)calloc(1, sizeof(int));
+ *mail_id = atoi(inner_tok[i]);
+ *mail_list = g_list_append(*mail_list, mail_id);
+ }
+ }
+ g_strfreev(inner_tok);
+ }
+ g_strfreev(outer_tok);
+ debug_log("src_folder: [%s], dst_folder: [%s]", *src_folder, *dst_folder);
+}
+
+static char *_gl_get_more_btn_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+
+ if (!g_strcmp0(part, "elm.text"))
+ return g_strdup(_("IDS_EMAIL_BODY_LOADING_MORE_EMAILS_ING"));
+ return NULL;
+}
+
+static Evas_Object *_gl_get_more_btn_content_get(void *data, Evas_Object *obj, const char *source)
+{
+ debug_log("");
+
+ if (!g_strcmp0(source, "elm.icon")) {
+ Evas_Object *progressbar = elm_progressbar_add(obj);
+ elm_object_style_set(progressbar, "list_process");
+ evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(progressbar);
+ elm_progressbar_pulse(progressbar, EINA_TRUE);
+ return progressbar;
+ }
+
+ return NULL;
+}
+
+static void _get_more_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ /* should know the current mode, account id, and mailbox name. */
+ /* The view type is always DATE view. */
+ debug_log("Current Mode: [%d]", mailbox_ugd->mode);
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX &&
+ GET_MAILBOX_TYPE(mailbox_ugd->mailbox_id) == EMAIL_MAILBOX_TYPE_OUTBOX) {
+ /* Sync is not required in Outbox because it is local mailbox */
+ debug_log("return");
+ return;
+ }
+
+ email_mailbox_t *mailbox_list = NULL;
+ email_account_t *account_list = NULL;
+ int mailbox_count = 0, account_count = 0;
+ int new_slot_size = 0;
+ int i = 0, j = 0;
+
+ if (g_get_more_progress_item || mailbox_ugd->view_type != EMAIL_VIEW_DATE || email_engine_get_eas_acc_exist_only() == TRUE) {
+ debug_log("is_get_more_button exists or download in progress");
+ return;
+ }
+
+ if (b_first_time_after_get_more) {
+ debug_log("this is the first edge.bottom event after the get more operation.");
+ b_first_time_after_get_more = false;
+ return;
+ }
+
+ email_get_account_list(&account_list, &account_count);
+ _add_get_more_progress_item(mailbox_ugd);
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+
+ /* Get the current count of mailbox slot */
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL) {
+ /* loop: All account */
+ for (i = 0; i < account_count; ++i) {
+ email_get_mailbox_list(account_list[i].account_id, -1, &mailbox_list, &mailbox_count);
+ /* loop: All Mailbox */
+ for (j = 0; j < mailbox_count; ++j) {
+ new_slot_size = 0;
+ email_set_mail_slot_size(account_list[i].account_id, mailbox_list[j].mailbox_id, new_slot_size);
+ debug_log("account_id: [%d], mailbox_name: [%s], slot_size: [%d]", account_list[i].account_id, mailbox_list[j].mailbox_name, new_slot_size);
+ }
+ email_free_mailbox(&mailbox_list, mailbox_count);
+ }
+
+ _sync_all_folder(mailbox_ugd);
+ } else { /* mailbox mode */
+
+ email_get_mailbox_list(mailbox_ugd->account_id, -1, &mailbox_list, &mailbox_count);
+ for (i = 0; i < mailbox_count; ++i) {
+ if (mailbox_list[i].mailbox_id == mailbox_ugd->mailbox_id) {
+ new_slot_size = 0;
+ break;
+ }
+ }
+ email_set_mail_slot_size(mailbox_ugd->account_id, mailbox_ugd->mailbox_id, new_slot_size);
+ debug_log("account_id: [%d], mailbox_id: [%d], slot_size: [%d]", mailbox_ugd->account_id, mailbox_ugd->mailbox_id, new_slot_size);
+ _sync_curr_folder(mailbox_ugd, mailbox_ugd->mailbox_id);
+ }
+ //elm_object_disabled_set(mailbox_ugd->update_button, EINA_TRUE);
+ email_free_account(&account_list, account_count);
+}
+
+static void _add_get_more_progress_item(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ evas_object_smart_callback_del(mailbox_ugd->gl[mailbox_ugd->view_type], "edge,bottom", _get_more_clicked_cb);
+
+ itc_get_more_progress.item_style = "1text.1icon.2";
+ itc_get_more_progress.func.text_get = _gl_get_more_btn_text_get;
+ itc_get_more_progress.func.content_get = _gl_get_more_btn_content_get;
+ itc_get_more_progress.func.state_get = NULL;
+ itc_get_more_progress.func.del = NULL;
+ //itc_get_more_progress.func.moved = NULL;
+ itc_get_more_progress.decorate_all_item_style = NULL;
+
+ g_get_more_progress_item = elm_genlist_item_append(mailbox_ugd->gl[mailbox_ugd->view_type],
+ &itc_get_more_progress,
+ NULL,
+ NULL,
+ ELM_GENLIST_ITEM_NONE,
+ NULL, NULL);
+
+ elm_genlist_item_select_mode_set(g_get_more_progress_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ elm_genlist_item_bring_in(g_get_more_progress_item, ELM_GENLIST_ITEM_SCROLLTO_IN);
+
+ evas_object_smart_callback_add(mailbox_ugd->gl[mailbox_ugd->view_type], "edge,bottom", _get_more_clicked_cb, mailbox_ugd);
+
+ debug_leave();
+}
+
+void _remove_get_more_progress_item(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ if (g_get_more_progress_item) {
+ b_first_time_after_get_more = true;
+
+ elm_object_item_del(g_get_more_progress_item);
+ g_get_more_progress_item = NULL;
+ }
+}
+
+static void _my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!obj)
+ return;
+
+ /* Get sweeped item */
+ Elm_Object_Item *it = (Elm_Object_Item *)elm_genlist_decorated_item_get(obj);
+
+ /* Finish genlist sweep */
+ if (it)
+ {
+ elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+}
+
+
+static Evas_Object *_create_progress_part_in_outbox(list_data *ld, Evas_Object *obj)
+{
+ /* debug_log(""); */
+ if (ld == NULL || obj == NULL) {
+ debug_critical("ld or obj is NULL");
+ return NULL;
+ }
+
+ switch(ld->is_sending_now) {
+ case EMAIL_MAIL_STATUS_SENDING: {
+ /* Since mail send is in progress,
+ add a process icon to the entry in mail list view */
+
+ Evas_Object *progressbar = NULL;
+
+ progressbar = elm_progressbar_add(obj);
+ elm_object_style_set(progressbar, "list_process");
+ evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(progressbar);
+ elm_progressbar_pulse(progressbar, EINA_TRUE);
+
+ debug_log("Added process icon");
+ return progressbar;
+ }
+
+ case EMAIL_MAIL_STATUS_SEND_WAIT: {
+ /* Since email is waiting to be sent in queue,
+ add a button to the entry in mail list view with label as 'Cancel' */
+
+ Evas_Object *button = NULL;
+
+ button = elm_button_add(obj);
+ elm_object_style_set(button, "text_only/style1");
+ elm_object_text_set(button, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ evas_object_smart_callback_add(button, "clicked", _cancel_send_mail_cb, ld);
+ evas_object_propagate_events_set(button, EINA_FALSE);
+
+ debug_log("Added Cancel Button");
+ return button;
+ }
+
+ case EMAIL_MAIL_STATUS_SEND_CANCELED:
+ case EMAIL_MAIL_STATUS_SEND_FAILURE: {
+ /* Since sending email is cancelled or failed,
+ add a button to the entry in mail list view with label as 'Resend' */
+
+ Evas_Object *button = NULL;
+
+ button = elm_button_add(obj);
+ elm_object_style_set(button, "text_only/style1");
+ elm_object_text_set(button, _("IDS_EMAIL_OPT_RESEND"));
+ evas_object_smart_callback_add(button, "clicked", _resend_mail_cb, ld);
+ evas_object_propagate_events_set(button, EINA_FALSE);
+
+ return button;
+ }
+
+ default:
+ debug_critical("unexpected sending status of an email in Outbox - sending_status [%d]", ld->is_sending_now);
+ break;
+ }
+
+ return NULL;
+}
+
+static void _realized_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ if (item == NULL) {
+ debug_log("Genlist item is null");
+ return;
+ }
+ if(!elm_genlist_item_parent_get(item))
+ return;
+
+ list_data *ld = (list_data*)elm_object_item_data_get(item);
+ switch(ld->is_sending_now) {
+ case EMAIL_MAIL_STATUS_SENDING:
+ case EMAIL_MAIL_STATUS_SEND_WAIT:
+ if(ld->item)
+ elm_object_item_signal_emit(ld->item, "elm,state,disabled", "elm");
+ break;
+
+ case EMAIL_MAIL_STATUS_SEND_CANCELED:
+ case EMAIL_MAIL_STATUS_SEND_FAILURE:
+ if(ld->item)
+ elm_object_item_signal_emit(ld->item, "elm,state,enabled", "elm");
+ break;
+
+ default:
+ break;
+ }
+
+ if (ld->thread_count > 0 && ld->mailbox_ugd->b_thread_list)
+ { // Thread 1 case, should show thread_count(UX request)
+ if(ld->mailbox_ugd->view_type == EMAIL_VIEW_DATE
+ || (ld->mailbox_ugd->previous_view == EMAIL_VIEW_DATE && (ld->mailbox_ugd->view_type == EMAIL_VIEW_SEARCH
+ || ld->mailbox_ugd->view_type == EMAIL_VIEW_EDIT)))
+ elm_object_item_signal_emit(ld->item, "elm,state,num", "elm");
+ }
+ if (ld->is_attachment == true) {
+ elm_object_item_signal_emit(ld->item, "elm,state,attach", "elm");
+ }
+ if(ld->priority != EMAIL_OPTION_PRIORITY_NORMAL) {
+ elm_object_item_signal_emit(ld->item, "elm,state,priority", "elm");
+ }
+ if(ld->reply_flag || ld->forward_flag) {
+ elm_object_item_signal_emit(ld->item, "elm,state,lastverb", "elm");
+ }
+
+ if (ld->is_seen == true) {
+ elm_object_item_signal_emit(ld->item, "elm,state,read", "elm");
+ } else {
+ elm_object_item_signal_emit(ld->item, "elm,state,unread", "elm");
+ }
+
+ if(ld->mailbox_ugd->view_type == EMAIL_VIEW_SEARCH)
+ elm_object_disabled_set(ld->check, EINA_TRUE);
+}
+
+static void _important_status_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ list_data *ld = (list_data *)data;
+ int vt = ld->mailbox_ugd->view_type;
+ int count = 0;
+
+ if(vt == EMAIL_VIEW_DATE ||((vt == EMAIL_VIEW_EDIT || vt == EMAIL_VIEW_SEARCH)
+ && ld->mailbox_ugd->previous_view == EMAIL_VIEW_DATE))
+ {
+ email_mail_list_item_t *mail_data = NULL;
+ int mail_count = 0;
+ int err = email_get_mail_list(ld->account_id, 0, ld->thread_id,
+ -1, /* start_index */
+ -1, /* limit_count */
+ _mailbox_conv_sort_type(ld->mailbox_ugd->sort_type), &mail_data, &mail_count);
+ if( err != EMAIL_ERROR_NONE ) {
+ debug_warning("email_get_mail_list_ex - err(%d)", err);
+ }
+ int k = 0;
+ count = mail_count;
+ for( ; k<mail_count ; k++ )
+ ld->mailbox_ugd->important_list = g_list_prepend(ld->mailbox_ugd->important_list,
+ GINT_TO_POINTER(mail_data[k].mail_id));
+ FREE(mail_data);
+ }
+ else
+ {
+ ld->mailbox_ugd->important_list = g_list_prepend(ld->mailbox_ugd->important_list,
+ GINT_TO_POINTER(ld->mail_id));
+ count = 1;
+ }
+
+ if (ld->mailbox_ugd->important_list)
+ {
+ int mail_ids[count];
+ memset(mail_ids, 0, sizeof(mail_ids));
+ int i=0;
+ GList* cur = g_list_first(ld->mailbox_ugd->important_list);
+ for ( ; i < count; ++i, cur = g_list_next(cur)) {
+ mail_ids[i] = (int) g_list_nth_data(cur, 0);
+ }
+
+ int e = email_set_flags_field(ld->account_id, mail_ids, count,
+ EMAIL_FLAGS_FLAGGED_FIELD, ld->imp_sel, true);
+ if (e != EMAIL_ERROR_NONE) {
+ debug_warning("_important_status_changed_cb account_id(%d) count(%d)- err (%d)",
+ ld->account_id, count, e);
+ }
+ g_list_free(ld->mailbox_ugd->important_list);
+ ld->mailbox_ugd->important_list = NULL;
+ }
+}
+
+static void _item_followup_flag_touched_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ list_data *ld = (list_data *)data;
+
+ switch(ld->followup_flag)
+ {
+ case EMAIL_FLAG_TASK_STATUS_CLEAR:
+ ld->followup_flag = EMAIL_FLAG_TASK_STATUS_ACTIVE;
+ elm_icon_file_set(ld->flag_ic, IMGDIR "/M02_email_Flag_Active.png", NULL);
+ break;
+ case EMAIL_FLAG_TASK_STATUS_ACTIVE:
+ ld->followup_flag = EMAIL_FLAG_TASK_STATUS_COMPLETE;
+ elm_icon_file_set(ld->flag_ic, IMGDIR "/M02_email_Flag_Complete.png", NULL);
+ break;
+ case EMAIL_FLAG_TASK_STATUS_COMPLETE:
+ ld->followup_flag = EMAIL_FLAG_TASK_STATUS_CLEAR;
+ elm_icon_file_set(ld->flag_ic, IMGDIR "/M02_email_Flag_Clear.png", NULL);
+ break;
+ default :
+ debug_log("mail item has no followup flag");
+ }
+ email_set_flags_field(ld->account_id, &ld->mail_id, 1, EMAIL_FLAGS_FLAGGED_FIELD,
+ ld->followup_flag, true);
+}
+
+
+
+static Evas_Object *_gl_mail_item_content_get(void *data, Evas_Object *obj, const char *source)
+{
+// debug_enter();
+ if (data == NULL) {
+ debug_log("data is NULL");
+ return NULL;
+ }
+
+ list_data *ld = (list_data *)data;
+
+ if (!g_strcmp0(source, "elm.icon.colorbar")) {
+ Evas_Object *small_rect = evas_object_rectangle_add(evas_object_evas_get(obj));
+ evas_object_size_hint_fill_set(small_rect, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ int r = (ld->account_color & 0xff000000) >> 24;
+ int g = (ld->account_color & 0x00ff0000) >> 16;
+ int b = (ld->account_color & 0x0000ff00) >> 8;
+ int a = ld->account_color & 0x000000ff;
+
+ evas_object_color_set(small_rect, r, g, b, a);
+ return (void *)small_rect;
+
+ } else if (!g_strcmp0(source, "elm.icon.important")) {
+ if(ld->followup_flag > EMAIL_FLAG_FLAGED)
+ {
+ ld->flag_ic = elm_icon_add(obj);
+ evas_object_event_callback_add(ld->flag_ic, EVAS_CALLBACK_MOUSE_DOWN, _item_followup_flag_touched_cb, data);
+
+ switch(ld->followup_flag)
+ {
+ case EMAIL_FLAG_TASK_STATUS_CLEAR:
+ elm_icon_file_set(ld->flag_ic, IMGDIR "/M02_email_Flag_Clear.png", NULL);
+ break;
+ case EMAIL_FLAG_TASK_STATUS_ACTIVE:
+ elm_icon_file_set(ld->flag_ic, IMGDIR "/M02_email_Flag_Active.png", NULL);
+ break;
+ case EMAIL_FLAG_TASK_STATUS_COMPLETE:
+ elm_icon_file_set(ld->flag_ic, IMGDIR "/M02_email_Flag_Complete.png", NULL);
+ break;
+ }
+ elm_icon_resizable_set(ld->flag_ic, 0, 1);
+ evas_object_image_smooth_scale_set(ld->flag_ic, 0);
+ //evas_object_propagate_events_set(flag_ic, EINA_FALSE);
+ return ld->flag_ic;
+ }
+ else
+ {
+ ld->important = elm_check_add(obj);
+ elm_check_state_pointer_set(ld->important, (Eina_Bool *)&ld->imp_sel);
+ elm_object_style_set(ld->important, "favorite/extended");
+ evas_object_smart_callback_add(ld->important, "changed", _important_status_changed_cb, data);
+ evas_object_propagate_events_set(ld->important, EINA_FALSE);
+ return ld->important;
+ }
+
+ } else if (!g_strcmp0(source, "elm.icon.important.touch")) {
+ if(ld->followup_flag > EMAIL_FLAG_FLAGED)
+ {
+ Evas_Object *small_rect = evas_object_rectangle_add(evas_object_evas_get(obj));
+ evas_object_size_hint_fill_set(small_rect, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_color_set(small_rect, 0, 0, 0, 0);
+
+ evas_object_event_callback_add(small_rect, EVAS_CALLBACK_MOUSE_DOWN, _item_followup_flag_touched_cb, data);
+ evas_object_propagate_events_set(small_rect, EINA_FALSE);
+ return small_rect;
+ }
+ }
+
+ else if (!g_strcmp0(source, "elm.icon.checkbox")) {
+ ld->check = elm_check_add(obj);
+ elm_check_state_pointer_set(ld->check, (Eina_Bool *)&ld->chksel);
+ evas_object_smart_callback_add(ld->check, "changed", _item_check_changed_cb, data);
+ evas_object_propagate_events_set(ld->check, EINA_FALSE);
+ return ld->check;
+ }
+
+ else if(!g_strcmp0(source, "elm.icon.checkbox.touch")) {
+ Evas_Object *small_rect = evas_object_rectangle_add(evas_object_evas_get(obj));
+ evas_object_size_hint_fill_set(small_rect, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_color_set(small_rect, 0, 0, 0, 0);
+ evas_object_event_callback_add(small_rect, EVAS_CALLBACK_MOUSE_DOWN, _item_check_touched_cb, data);
+ evas_object_propagate_events_set(small_rect, EINA_FALSE);
+
+ return small_rect;
+ }
+
+ else if(!g_strcmp0(source, "elm.icon.num")){
+
+ }
+
+ else if (!g_strcmp0(source, "elm.slide.swallow.1")) {
+ /* First button of Sweep Menu */
+ if (NULL == ld->mailbox_ugd) {
+ debug_critical(" ld->mailbox_ugd [%p] ", ld->mailbox_ugd);
+ return NULL;
+ }
+
+ if (ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX || ld->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT)
+ {
+ return _create_sweep_read_unread_button(obj,ld);
+ }
+ else
+ {
+ return _create_sweep_reply_button(obj,ld);
+ }
+
+ } else if (!g_strcmp0(source, "elm.slide.swallow.2")) {
+ /* Second button of Sweep Menu */
+ if (NULL == ld->mailbox_ugd) {
+ debug_critical(" ld->mailbox_ugd [%p] ", ld->mailbox_ugd);
+ return NULL;
+ }
+
+ if (ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX || ld->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT)
+ {
+ return _create_sweep_delete_button(obj,ld);
+ }
+ else
+ {
+ return _create_sweep_forward_button(obj,ld);
+ }
+ }
+ else if (!g_strcmp0(source, "elm.slide.swallow.3")) {
+ /* 3rd button of Sweep Menu */
+ if (NULL == ld->mailbox_ugd) {
+ debug_critical(" ld->mailbox_ugd [%p] ", ld->mailbox_ugd);
+ return NULL;
+ }
+
+ if (ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX || ld->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT)
+ {
+ return NULL;
+ }
+
+ if (ld->mailbox_ugd->mode != EMAIL_MAILBOX_MODE_MAILBOX) {
+ return _create_sweep_read_unread_button(obj,ld);
+ }
+
+ if (ld->mailbox_type == EMAIL_MAILBOX_TYPE_TRASH || ld->mailbox_type == EMAIL_MAILBOX_TYPE_SPAMBOX) {
+ return _create_sweep_move_button(obj,ld);
+ } else if (ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX || ld->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT) {
+ return _create_sweep_delete_button(obj,ld);
+ } else {
+ return _create_sweep_read_unread_button(obj,ld);
+ }
+ }
+ else if (!g_strcmp0(source, "elm.slide.swallow.4")) {
+ /* 4th button of Sweep Menu */
+ if (NULL == ld->mailbox_ugd) {
+ debug_critical(" ld->mailbox_ugd [%p] ", ld->mailbox_ugd);
+ return NULL;
+ }
+
+ if (ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX || ld->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT)
+ {
+ return NULL;
+ }
+ else
+ {
+ return _create_sweep_delete_button(obj, ld);
+ }
+ }
+ else if (0 == g_strcmp0(source, "elm.swallow.outbox.progress")) {
+
+ Evas_Object *outbox_progress_part = NULL;
+
+ if (ld->mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX && ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX) {
+ if (ld->mailbox_ugd->view_type != EMAIL_VIEW_SEARCH && ld->mailbox_ugd->view_type != EMAIL_VIEW_EDIT) {
+ if (ld->mailbox_ugd->create_progress_part == true) {
+ outbox_progress_part = _create_progress_part_in_outbox(ld, obj);
+ }
+ }
+ }
+ return (void *)outbox_progress_part;
+ }
+ else if(!g_strcmp0(source, "elm.icon.attach"))
+ {
+ if(ld->is_attachment == true)
+ {
+ Evas_Object *ic = elm_icon_add(obj);
+ elm_icon_file_set(ic, IMGDIR "/M02_email_icon_attach.png", NULL);
+ elm_icon_resizable_set(ic, 0, 0);
+ evas_object_image_smooth_scale_set(ic, 0);
+ evas_object_show(ic);
+ return (void *)ic;
+ }
+ }
+
+ else if(!g_strcmp0(source, "elm.icon.priority"))
+ {
+ if(ld->priority == EMAIL_OPTION_PRIORITY_HIGH) {
+ Evas_Object *ic = elm_icon_add(obj);
+ elm_icon_file_set(ic, IMGDIR "/M02_email_icon_priority.png", NULL);
+ elm_icon_resizable_set(ic, 0, 0);
+ evas_object_image_smooth_scale_set(ic, 0);
+ evas_object_show(ic);
+ return (void *)ic;
+ }
+#if 0 // support low priority message
+ else if(ld->priority == EMAIL_OPTION_PRIORITY_LOW) {
+ if(ld->item)
+ edje_object_signal_emit((Evas_Object *)elm_genlist_item_object_get(ld->item), "elm,state,priority", "elm");
+ Evas_Object *ic = elm_icon_add(obj);
+ elm_icon_file_set(ic, IMGDIR "/M02_email_icon_priority.png", NULL);
+ elm_icon_resizable_set(ic, 0, 0);
+ evas_object_image_smooth_scale_set(ic, 0);
+ evas_object_show(ic);
+ return (void *)ic;
+ }
+#endif
+ }
+
+ else if(!g_strcmp0(source, "elm.icon.lastverb"))
+ {
+
+ if(ld->reply_flag || ld->forward_flag)
+ {
+ Evas_Object *ic = elm_icon_add(obj);
+
+ if(ld->reply_flag == true)
+ elm_icon_file_set(ic, IMGDIR "/M02_email_icon_reply.png", NULL);
+ else
+ elm_icon_file_set(ic, IMGDIR "/M02_email_icon_forward.png", NULL);
+ elm_icon_resizable_set(ic, 0, 0);
+ evas_object_image_smooth_scale_set(ic, 0);
+ evas_object_show(ic);
+ return (void *)ic;
+ }
+ }
+#if 0
+ else if(!g_strcmp0(source, "elm.icon.appointment"))
+ {
+ if(ld->priority == 1)
+ {
+ if(ld->item)
+ edje_object_signal_emit((Evas_Object *)elm_genlist_item_object_get(ld->item), "elm,state,priority", "elm");
+ Evas_Object *ic = elm_icon_add(obj);
+ elm_icon_file_set(ic, IMGDIR "/05_email_icon_attach_30x30.png", NULL);
+ elm_icon_resizable_set(ic, 0, 0);
+ evas_object_image_smooth_scale_set(ic, 0);
+ evas_object_show(ic);
+ return (void *)ic;
+ }
+ }
+#endif
+ return NULL;
+}
+
+static char *_gl_mail_item_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ if (data == NULL) {
+ debug_warning("ld is NULL");
+ return NULL;
+ }
+
+ list_data *ld = (list_data *)data;
+ EmailMailboxUGD *mailbox_ugd = ld->mailbox_ugd;
+
+ if (mailbox_ugd == NULL) {
+ debug_warning("mailbox_ugd is NULL");
+ return NULL;
+ }
+ if (!g_strcmp0(part, "elm.text.subject")) {
+ char title[SUBJECT_LEN + TAG_LEN*2 + 1] = {0}; /* two tags can be inserted */
+ strncat(title, ld->title, SUBJECT_LEN + TAG_LEN); /* search tag may be contained */
+ strcat(title, "</>");
+ return g_strdup(title);
+
+ } else if (!g_strcmp0(part, "elm.text.name")) {
+ /*
+ if (ld->from == NULL) {
+ debug_log("from is NULL");
+ return NULL;
+ }
+ */
+ if (mailbox_ugd->view_type == EMAIL_VIEW_SEARCH) {
+ if(ld->mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX &&
+ (ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX ||
+ ld->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX ||
+ ld->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT))
+ return g_strdup(ld->recipient);
+ else {
+ if(ld->from)
+ return g_strdup(ld->from);
+ else if(ld->alias)
+ return g_strdup(ld->alias);
+ }
+ } else {
+ if(ld->mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX &&
+ (ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX ||
+ ld->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX ||
+ ld->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT))
+ return g_strdup(ld->recipient);
+ else
+ return g_strdup(ld->alias);
+ }
+
+ } else if (!g_strcmp0(part, "elm.text.date")) {
+
+ if (ld->timeordate == NULL) {
+ debug_log("timeordate is NULL");
+ return NULL;
+ }
+
+ if (ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX && ld->mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX)
+ return g_strdup("");
+ else
+ return g_strdup(ld->timeordate);
+ } else if (!g_strcmp0(part, "elm.text.preview")) {
+ if (ld->preview_body == NULL) {
+ debug_log("preview text is NULL");
+ return NULL;
+ } else {
+ return g_strdup(ld->preview_body);
+ }
+
+ } else if (!g_strcmp0(part, "elm.slide.text.1")) { /* Subject is to be displayed in Sweep Menu. ld->title stores Subject of email */
+ return g_strdup(ld->title);
+ } else if(!g_strcmp0(part,"elm.text.num")) {
+ char thread_cnt[10] = { 0, };
+ sprintf(thread_cnt, "%d", ld->thread_count);
+ return g_strdup(thread_cnt);
+ } else {
+ debug_log("");
+ return NULL;
+ }
+
+ return NULL;
+}
+
+
+static void _my_gl_mode_right(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!event_info)
+ return;
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ Evas_Coord x = 0, y = 0, w = 0, h = 0;
+ Elm_Object_Item *prev = NULL;
+ evas_object_geometry_get((mailbox_ugd->gl[mailbox_ugd->view_type]), &x, &y, &w, &h);
+ debug_log("x = %d, y = %d, w=%d, h=%d, isRotate = %d, view_type = %d", x, y, w,h, mailbox_ugd->isRotate, mailbox_ugd->view_type);
+
+ /*if(mailbox_ugd->isRotate == true && w < 700)
+ {
+ debug_log("sweep menu bigger than current width. can't open sweep.");
+ return;
+ }*/
+
+ /* Get sweeped item */
+ prev = (Elm_Object_Item *)elm_genlist_decorated_item_get(obj);
+ debug_log("prev: %p, event_info: %p", prev, event_info);
+
+ /* Start genlist sweep */
+ if (mailbox_ugd->view_type != EMAIL_VIEW_EDIT && mailbox_ugd->view_type != EMAIL_VIEW_SEARCH)
+ {
+ if(prev && (prev != event_info))
+ {
+ elm_genlist_item_decorate_mode_set(prev, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(prev, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ elm_genlist_item_decorate_mode_set(event_info, "slide", EINA_TRUE);
+ elm_genlist_item_select_mode_set(event_info, ELM_OBJECT_SELECT_MODE_NONE);
+ }
+
+}
+
+static void _my_gl_mode_left(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("event_info:%p", event_info);
+ if (!event_info) {
+ debug_log("event_info is NULL");return;
+ }
+
+ /* Finish genlist sweep */
+ elm_genlist_item_decorate_mode_set(event_info, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(event_info, ELM_OBJECT_SELECT_MODE_DEFAULT);
+}
+
+
+static char *_gl_group_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_enter();
+ if (data == NULL) {
+ debug_log("data is NULL");
+ return NULL;
+ }
+
+ int index = (int)data - 1;
+ debug_log("group_index: [%d], %s", index, part);
+
+ gchar buf[60] = { 0, };
+ if (g_strcmp0(part, "elm.text") == 0) {
+ if(STR_VALID(group_title[index][1]))
+ snprintf(buf, sizeof(buf), "%s (%s)", group_title[index][0], group_title[index][1]);
+ else
+ snprintf(buf, sizeof(buf), "%s", group_title[index][0]);
+ return strdup(buf);
+ }
+
+ return NULL;
+}
+
+
+void mailbox_create_list_view(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ if (mailbox_ugd == NULL) {
+ debug_log("mailbox_ugd is NULL");
+ return;
+ }
+
+ debug_log("mailbox_ugd->view_type[%d] mailbox_ugd->mailbox_type[%d]",
+ mailbox_ugd->view_type, mailbox_ugd->mailbox_type);
+
+ if(mailbox_ugd->gl[mailbox_ugd->view_type]) {
+ elm_genlist_clear(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ evas_object_del(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ mailbox_ugd->gl[mailbox_ugd->view_type] = NULL;
+ }
+
+ /* Set genlist item class */
+ mailbox_ugd->itc1.item_style = "4text.8icon";
+
+ mailbox_ugd->itc1.func.text_get = _gl_mail_item_text_get;
+ mailbox_ugd->itc1.func.content_get = _gl_mail_item_content_get;
+ mailbox_ugd->itc1.func.state_get = NULL;
+ mailbox_ugd->itc1.func.del = NULL;
+ mailbox_ugd->itc1.decorate_all_item_style = "edit_default";
+
+ mailbox_ugd->itc2.item_style = "grouptitle";
+ mailbox_ugd->itc2.func.text_get = _gl_group_text_get;
+ mailbox_ugd->itc2.func.content_get = NULL;
+ mailbox_ugd->itc2.func.state_get = NULL;
+ mailbox_ugd->itc2.func.del = NULL;
+ mailbox_ugd->itc2.decorate_all_item_style = NULL;
+
+ Evas_Object *gl = elm_genlist_add(mailbox_ugd->sub_layout[mailbox_ugd->view_type]);
+ /*elm_object_theme_set(gl, mailbox_ugd->theme);*/
+ evas_object_smart_callback_add(gl, "realized", _realized_cb, NULL);
+
+ evas_object_smart_callback_add(gl, "drag,start,right", _my_gl_mode_right, mailbox_ugd);
+ evas_object_smart_callback_add(gl, "drag,start,left", _my_gl_mode_left, NULL);
+ evas_object_smart_callback_add(gl, "drag,start,up", _my_gl_mode_cancel, mailbox_ugd);
+ evas_object_smart_callback_add(gl, "drag,start,down", _my_gl_mode_cancel, NULL);
+
+ elm_object_style_set(gl, "handler");
+ elm_genlist_block_count_set(gl, BLOCK_COUNT);
+ elm_genlist_homogeneous_set(gl, EINA_TRUE);
+ elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
+ elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ if ((mailbox_ugd->view_type == EMAIL_VIEW_DATE
+ && mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL
+ && email_engine_get_eas_acc_exist_only() == FALSE)
+ ||
+ (mailbox_ugd->view_type == EMAIL_VIEW_DATE
+ && mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX
+ && EMAIL_SERVER_TYPE_ACTIVE_SYNC != GET_ACCOUNT_SERVER_TYPE(mailbox_ugd->account_id)
+ && GET_MAILBOX_TO_GETMORE(mailbox_ugd->mailbox_id) > 0))
+ {
+
+ evas_object_smart_callback_add(gl, "edge,bottom", _get_more_clicked_cb, mailbox_ugd);
+ }
+
+ evas_object_show(gl);
+ mailbox_ugd->gl[mailbox_ugd->view_type] = gl;
+
+ mailbox_ugd->chk_cnt = 0;
+ edit_list = eina_list_free(edit_list);
+
+ evas_object_event_callback_add(gl, EVAS_CALLBACK_MOUSE_DOWN, set_busy_cb, NULL);
+ evas_object_event_callback_add(gl, EVAS_CALLBACK_MOUSE_UP, reset_busy_cb, NULL);
+
+ return;
+}
+
+void email_maillist_select_info(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ double dou_panes = elm_panes_content_left_size_get(mailbox_ugd->panes);
+ debug_log("panes: %lf ", dou_panes);
+
+ if(!mailbox_ugd->selectioninfo_layout)
+ {
+ mailbox_ugd->selectioninfo_layout = elm_layout_add(mailbox_ugd->sub_layout[mailbox_ugd->previous_view]);
+ elm_object_part_content_set(mailbox_ugd->sub_layout[mailbox_ugd->previous_view], "selection_info", mailbox_ugd->selectioninfo_layout);
+ evas_object_size_hint_weight_set(mailbox_ugd->selectioninfo_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(mailbox_ugd->selectioninfo_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ }
+
+ Eina_List *list = NULL;
+ int cnt = 0;
+ list = edit_list;
+ cnt = eina_list_count(list);
+
+ char text[128];
+
+ /* Set the layout theme */
+ elm_layout_theme_set(mailbox_ugd->selectioninfo_layout, "standard", "selectioninfo", "default");
+
+ if (!cnt) {
+ elm_object_signal_emit(mailbox_ugd->sub_layout[mailbox_ugd->previous_view], "hide_selection_info", "elm");
+ return;
+ }
+
+ if (cnt == 1)
+ snprintf(text, sizeof(text), "%s (%d)", dgettext("sys_string", "IDS_COM_POP_SELECTED"), cnt);
+ else
+ snprintf(text, sizeof(text), "%s (%d)", dgettext("sys_string", "IDS_COM_POP_SELECTED"), cnt);
+
+ /* Set the text */
+ elm_object_part_text_set(mailbox_ugd->selectioninfo_layout, "elm.text", text);
+ elm_object_signal_emit(mailbox_ugd->sub_layout[mailbox_ugd->previous_view], "show_selection_info", "elm");
+}
+
+
+void _clear_checked_status(EmailMailboxUGD *mailbox_ugd)
+{
+ Eina_List *list = edit_list;
+ int checked_count = eina_list_count(list);
+ debug_log("checked_count [%d]", checked_count);
+ if (checked_count <= 0) return;
+
+ int i = 0;
+ for (i = 0; i < checked_count; i++) {
+ Eina_List *nth_list = eina_list_nth_list(list, i);
+ list_data *ld = (list_data *)eina_list_data_get(nth_list);
+ ld->chksel = EINA_FALSE;
+
+ }
+ edit_list = eina_list_free(edit_list);
+}
+
+
+void _item_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ list_data *ld = (list_data *)data;
+
+ if (ld != NULL) {
+ if (ld->is_sending_now == EMAIL_MAIL_STATUS_SENDING || ld->is_sending_now == EMAIL_MAIL_STATUS_SEND_WAIT) {
+ debug_log("email being sent selected - unselect it");
+ elm_check_state_set(ld->check, EINA_FALSE);
+ return;
+ }
+ }
+ _process_item_check_changed_cb(ld);
+}
+
+void _item_check_touched_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ list_data *ld = (list_data *)data;
+ ld->chksel = !ld->chksel;
+ elm_check_state_set(ld->check, ld->chksel);
+ _process_item_check_changed_cb(ld);
+}
+
+static void _process_item_check_changed_cb(list_data *ld)
+{
+ debug_log("");
+
+ EmailMailboxUGD *mailbox_ugd = ld->mailbox_ugd;
+
+ if (ld->chksel) {
+ edit_list = eina_list_append(edit_list, ld);
+ mailbox_ugd->chk_cnt++;
+ } else {
+ edit_list = eina_list_remove(edit_list, ld);
+ mailbox_ugd->chk_cnt--;
+ }
+
+ int cnt = eina_list_count(edit_list);
+ debug_log("list count = %d", cnt);
+
+ if(cnt > 0 && !b_editmode)
+ {
+
+ debug_log("Enter edit mode");
+
+ /* update controlbar to edit menu */
+ b_editmode = true;
+ if (GET_MAILBOX_TYPE(mailbox_ugd->mailbox_id) == EMAIL_MAILBOX_TYPE_OUTBOX) {
+ mailbox_ugd->create_progress_part = false;
+ debug_log("mailbox_ugd->view_type[%d]", mailbox_ugd->view_type);
+ elm_genlist_realized_items_update(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ }
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+ mailbox_ugd->previous_view = mailbox_ugd->view_type;
+ mailbox_ugd->view_type = EMAIL_VIEW_EDIT;
+
+ elm_entry_entry_set(mailbox_ugd->searchbar_en, "");
+ elm_object_focus_set(mailbox_ugd->searchbar_layout, EINA_FALSE);
+ elm_object_part_content_unset(mailbox_ugd->search_layout, "searchbar");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_searchbar", "search");
+ evas_object_hide(mailbox_ugd->searchbar_layout);
+
+ _create_controlbar(mailbox_ugd);
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->previous_view], "controlbar", mailbox_ugd->controlbar_btns);
+ elm_object_disabled_set(mailbox_ugd->folder_button, EINA_TRUE);
+ }
+ else if(cnt <= 0)
+ {
+ debug_log("Exit edit mode");
+
+ /* update controlbar to mailbox menu */
+ b_editmode = false;
+// elm_toolbar_item_selected_set(mailbox_ugd->edit_cancel_button, EINA_TRUE);
+ _edit_back_cb(mailbox_ugd, NULL, NULL);
+ elm_object_disabled_set(mailbox_ugd->folder_button, EINA_FALSE);
+ }
+ email_maillist_select_info(mailbox_ugd);
+}
+
+static void _list_item_clicked(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ gboolean b_thread_view = false;
+
+ if (!event_info) {
+ debug_log("event_info is NULL");
+ return;
+ }
+
+ Elm_Object_Item *it = (Elm_Object_Item *)event_info;
+ list_data *ld = elm_object_item_data_get(it);
+
+ if (ld == NULL) {
+ debug_critical("list_data is NULL");
+ return;
+ }
+
+ if (ld->mailbox_ugd == NULL) {
+ debug_critical("ld->mailbox_ugd == NULL");
+ return;
+ }
+
+ if (b_editmode) {
+ ld->mailbox_ugd->view_type = EMAIL_VIEW_EDIT;
+ }
+
+ _stop_emf_job(ld->mailbox_ugd, ld->mailbox_ugd->emf_handle, true);
+
+ if (elm_genlist_item_selected_get((Elm_Object_Item *)it) == EINA_TRUE) {
+ elm_genlist_item_selected_set((Elm_Object_Item *)it, EINA_FALSE);
+ }
+
+ g_selected_item = it;
+ if (ld->mailbox_ugd->b_thread_list == true && ld->mailbox_ugd->view_type != EMAIL_VIEW_THREAD && ld->thread_count > 1 ) {
+ b_thread_view = TRUE;
+ }
+
+ {
+ // fast double taps cause to tap the other email in all mail
+ if(ld->mailbox_ugd->view_type == EMAIL_VIEW_THREAD && ld->mailbox_ugd->thread_id != ld->thread_id)
+ return;
+
+ int id = ld->mail_id;
+
+ email_mailbox_t *mbox = NULL;
+ int e = email_get_mailbox_by_mailbox_id(ld->mailbox_id, &mbox);
+ if (e != EMAIL_ERROR_NONE) {
+ debug_log(" email_get_mailbox_by_mailbox_id mailbox_id(%d)- err[%d]", ld->mailbox_id, e);
+ return;
+ }
+
+ if ((mbox->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT
+ || (mbox->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX
+ && (ld->is_sending_now == EMAIL_MAIL_STATUS_SEND_CANCELED
+ || ld->is_sending_now == EMAIL_MAIL_STATUS_SEND_FAILURE)))
+ && email_engine_check_body_download(ld->mail_id)) {
+
+ if (ld->mailbox_ugd->ug_composer) {
+ debug_log("Composer UG is already launched");
+ return;
+ }
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ char cmd[30] = { 0, };
+ snprintf(cmd, sizeof(cmd), "%d", RUN_COMPOSER_EDIT);
+
+ char mailid[30] = { 0, };
+ snprintf(mailid, sizeof(mailid), "%d", id);
+ char acctid[30] = { 0, };
+ snprintf(acctid, sizeof(acctid), "%d", ld->account_id);
+ char mailboxid[30] = { 0, };
+ snprintf(mailboxid, sizeof(mailboxid), "%d", ld->mailbox_id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, cmd);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, acctid);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailboxid);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAIL_ID, mailid);
+
+ ld->mailbox_ugd->ug_composer = create_composer_ug(UG_NAME_EMAIL_COMPOSER, service, ld->mailbox_ugd);
+
+ service_destroy(service);
+ }
+ else {
+ if (ld->mailbox_ugd->isRotate == true) {
+ if (evas_object_pass_events_get(ld->mailbox_ugd->gl[ld->mailbox_ugd->view_type]) == EINA_FALSE) {
+ debug_log("Set pass event - EINA_TRUE");
+ evas_object_pass_events_set(ld->mailbox_ugd->gl[ld->mailbox_ugd->view_type], EINA_TRUE);
+ }
+ }
+ _open_email_body(id, (Elm_Object_Item *)it);
+ }
+ email_free_mailbox(&mbox, 1);
+ }
+}
+
+static void _insert_normal_item_to_mailist(EmailMailboxUGD *mailbox_ugd, list_data *ld,
+ list_data *prev, list_data *next)
+{
+ debug_log("");
+ debug_log("prev_group_id: [%d], current_group_id: [%d], next_group_id: [%d]",
+ prev? prev->group_index : -1, ld->group_index, next? next->group_index : -1);
+ EmailMailboxViewType view_type = mailbox_ugd->view_type;
+
+ /* group item is not in genlist, insert group item and normal item in sequence*/
+ if( !mailbox_ugd->git[view_type][ld->group_index] ) {
+ /* if next item exists, group item is placed before the next group item */
+ if( ITEM_EXIST(next) ) {
+ mailbox_ugd->git[view_type][ld->group_index] = elm_genlist_item_insert_before(
+ mailbox_ugd->gl[view_type],
+ &(mailbox_ugd->itc2),
+ (void *)(ld->group_index + 1),
+ NULL,
+ mailbox_ugd->git[view_type][next->group_index],
+ ELM_GENLIST_ITEM_GROUP,
+ NULL, NULL);
+ }
+ /* if there is no next node, this group item is placed at end of list */
+ else {
+ mailbox_ugd->git[view_type][ld->group_index] = elm_genlist_item_append(
+ mailbox_ugd->gl[view_type],
+ &(mailbox_ugd->itc2),
+ (void *)(ld->group_index + 1),
+ NULL,
+ ELM_GENLIST_ITEM_GROUP,
+ NULL, NULL);
+ }
+
+ if( !mailbox_ugd->git[view_type][ld->group_index] ) {
+ debug_critical("group item should not be NULL");
+ return;
+ }
+
+ if (ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX || ld->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT)
+ {
+ debug_log("mode/slide ld->mailbox_type: %d, mailbox_ugd->view_type: %d", ld->mailbox_type,mailbox_ugd->view_type);
+ mailbox_ugd->itc1.decorate_item_style = "mode/slide2";
+ } else {
+ debug_log("mode/slide4 ld->mailbox_type: %d, mailbox_ugd->view_type: %d", ld->mailbox_type,mailbox_ugd->view_type);
+ mailbox_ugd->itc1.decorate_item_style = "mode/slide4";
+ }
+
+ /* insert the item after group item */
+ ld->item = elm_genlist_item_insert_after(
+ mailbox_ugd->gl[view_type],
+ &(mailbox_ugd->itc1),
+ ld,
+ mailbox_ugd->git[view_type][ld->group_index],
+ mailbox_ugd->git[view_type][ld->group_index],
+ ELM_GENLIST_ITEM_NONE,
+ _list_item_clicked,
+ NULL);
+ }
+ /* there exists the another normal item among the same group. find the normal item in same group */
+ else {
+ if ( !ITEM_EXIST(prev) && !ITEM_EXIST(next) ) {
+ debug_warning("there is group item, but neither of prev item or next item exists");
+ return;
+ }
+
+ if( ITEM_IN_SAME_GROUP(prev, ld) )
+ ld->item = elm_genlist_item_insert_after(mailbox_ugd->gl[view_type],
+ &(mailbox_ugd->itc1),
+ ld,
+ mailbox_ugd->git[view_type][ld->group_index],
+ prev->item,
+ ELM_GENLIST_ITEM_NONE,
+ _list_item_clicked,
+ NULL);
+
+ else if ( ITEM_IN_SAME_GROUP(next, ld) )
+ ld->item = elm_genlist_item_insert_before(mailbox_ugd->gl[view_type],
+ &(mailbox_ugd->itc1),
+ ld,
+ mailbox_ugd->git[view_type][ld->group_index],
+ next->item,
+ ELM_GENLIST_ITEM_NONE,
+ _list_item_clicked,
+ NULL);
+ else {
+ debug_warning("There is group item(%d), but prev item(%d) or next item(%d) is not same group",
+ ld->group_index, GROUP_INDEX(prev), GROUP_INDEX(next));
+ return;
+ }
+ }
+
+ if(!ld->item)
+ debug_critical("ld->item should not be NULL");
+}
+
+
+list_data *_find_mailinfo_by_mailid(int mailid, GList *mail_list)
+{
+// debug_enter();
+
+ list_data *ld = NULL;
+
+ /* find the list node having same mailid */
+ GList* cur = g_list_first(mail_list);
+ for( ; cur ; cur = g_list_next(cur)) {
+ ld = (list_data*) g_list_nth_data(cur, 0);
+ if( ld->mail_id == mailid ) return ld;
+ }
+
+ return NULL;
+}
+
+
+static int email_set_group(list_data *ld)
+{
+ int group_index = 0;
+ EmailMailboxUGD *mailbox_ugd = ld->mailbox_ugd;
+#if 1
+ int type = 0;
+ if(mailbox_ugd->view_type == EMAIL_VIEW_SEARCH ||mailbox_ugd->view_type == EMAIL_VIEW_EDIT)
+ type = mailbox_ugd->previous_view;
+ else
+ type = mailbox_ugd->view_type;
+ switch(type)
+#else
+ switch(mailbox_ugd->view_type)
+#endif
+ {
+ case EMAIL_VIEW_DATE:
+ case EMAIL_VIEW_THREAD:
+ group_index = email_get_group_title_str(ld->absolute_time, &ld->group_title, &ld->group_date);
+ break;
+
+ case EMAIL_VIEW_UNREAD:
+ if(ld->is_seen == false){
+ group_index = 0;
+ ld->group_title = g_strdup(_("IDS_EMAIL_OPT_UNREAD"));
+ }
+ else
+ {
+ group_index = 1;
+ ld->group_title = g_strdup(_("IDS_EMAIL_OPT_READ"));
+ }
+ ld->group_date = NULL;
+ break;
+
+ case EMAIL_VIEW_ATTACHMENTS:
+ if(ld->is_attachment == false){
+ group_index = 0;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_OTHER"));
+ }
+ else
+ {
+ group_index = 1;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_ATTACHMENTS"));
+ }
+ ld->group_date = NULL;
+ break;
+
+ case EMAIL_VIEW_PRIORITY:
+ if(ld->priority == EMAIL_OPTION_PRIORITY_HIGH){
+ group_index = 0;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_HIGH_M_PRIORITY"));
+ }
+ else if(ld->priority == EMAIL_OPTION_PRIORITY_NORMAL)
+ {
+ group_index = 1;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_NORMAL_M_EMAILPRIORITY"));
+ }
+ else
+ {
+ group_index = 2;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_LOW_M_EMAILPRIORITY"));
+ }
+ ld->group_date = NULL;
+ break;
+
+ case EMAIL_VIEW_MEETING_REQUEST:
+ if(ld->meeting_request == false){
+ group_index = 0;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_OTHER"));
+ }
+ else
+ {
+ group_index = 1;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_MEETING_REQUEST"));
+ }
+ ld->group_date = NULL;
+ break;
+
+ case EMAIL_VIEW_IMPORTANT:
+ if(ld->imp_sel == EMAIL_FLAG_NONE)
+ {
+ group_index = 0;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_OTHER"));
+ }
+ else if(ld->imp_sel == EMAIL_FLAG_FLAGED)
+ {
+ group_index = 1;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_FAVOURITES"));
+ }
+ else if(ld->imp_sel == EMAIL_FLAG_TASK_STATUS_CLEAR)
+ {
+ group_index = 2;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_CLEAR"));
+ }
+ else if(ld->imp_sel == EMAIL_FLAG_TASK_STATUS_ACTIVE)
+ {
+ group_index = 3;
+ ld->group_title = g_strdup(N_("Active"));
+ }
+ else
+ {
+ group_index = 4;
+ ld->group_title = g_strdup(_("IDS_EMAIL_BODY_COMPLETE"));
+ }
+ ld->group_date = NULL;
+ break;
+
+ }
+ return group_index;
+}
+
+void _delete_selection_info(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ if (mailbox_ugd->selectioninfo_layout != NULL) {
+ evas_object_del(mailbox_ugd->selectioninfo_layout);
+ mailbox_ugd->selectioninfo_layout = NULL;
+ }
+}
+
+static void _handle_last_sending_email(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("view_type [%d] item pointer [%p]", mailbox_ugd->view_type, mailbox_ugd->navibar_item[mailbox_ugd->view_type]);
+
+ _create_email_no_content_view(mailbox_ugd);
+}
+
+/* dest_len is max str len of dest (not including \0)*/
+static void insert_search_tag (char *dest, int dest_len, const char *src, const char *key)
+{
+ if (!key || !dest || !src) return;
+ int src_len = STR_LEN(src);
+ int key_len = STR_LEN(key);
+ if (src_len <= 0 || key_len <= 0) {
+ debug_warning("src(%d) or key(%d) 0 long", src_len, key_len);
+ return;
+ }
+
+ char *sub = (char *)strcasestr(src, key);
+ if (!sub) {
+ STR_NCPY(dest, src, dest_len);
+ return;
+ }
+
+ /* pre unmatched */
+ int pre_len = src_len - STR_LEN(sub);
+ dest[0] = '\0';
+ strncat(dest, src, pre_len);
+
+ /* tagged key */
+ strcat(dest, "<match>");
+ strncat(dest, src + pre_len, STR_LEN(key));
+ strcat(dest, "</>");
+
+ /* remainder */
+ const char *remainder = src + pre_len + STR_LEN(key);
+ strcat(dest, remainder);
+}
+
+list_data *make_list_data(email_mail_list_item_t* mail_info, const EmailSearchData *search_data, EmailMailboxUGD *mailbox_ugd)
+{
+ if(!mail_info) {
+ debug_warning("mail_info is NULL"); return NULL;
+ }
+
+ list_data *ld = MEM_ALLOC(ld, 1);
+ if(!ld) return NULL;
+
+ /* info field. */
+ ld->mail_id = mail_info->mail_id;
+ ld->is_seen = mail_info->flags_seen_field;
+ ld->is_attachment = mail_info->has_attachment;
+ ld->priority = mail_info->priority;
+ ld->is_body_download = mail_info->is_text_downloaded;
+ ld->account_id = mail_info->account_id;
+ ld->imp_sel = mail_info->flags_flagged_field;
+ ld->is_sending_now = mail_info->save_status;
+ ld->mailbox_id = mail_info->mailbox_id;
+ ld->preview_body = STRNDUP(mail_info->previewBodyText, MAX_PREVIEW_TEXT_LENGTH - 1);
+ ld->reply_flag = mail_info->flags_answered_field;
+ ld->forward_flag = mail_info->flags_forwarded_field;
+ ld->followup_flag = mail_info->flags_flagged_field;
+ ld->meeting_request = mail_info->is_meeting_request;
+ //debug_log("preview_body: %s", mail_info->previewBodyText);
+
+ /* datetime. */
+ ld->absolute_time = mail_info->date_time;
+
+ /* sender. */
+ ld->sender = (STR_VALID(mail_info->from_email_address))?
+ STRNDUP(mail_info->from_email_address, ADDR_LEN - 1) :
+ STRNDUP(_("IDS_EMAIL_POP_NO_SENDER"), ADDR_LEN - 1);
+
+
+
+ UTF8_VALIDATE(mail_info->from, FROM_LEN - 1);
+ ld->alias = GET_NAME_FROM_ALIAS(mail_info->from, FROM_LEN - 1);
+ debug_log("alias: %s", ld->alias);
+
+ if(mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX &&
+ (ld->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX ||
+ ld->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX ||
+ ld->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT)) {
+ /* recipient display name from email alais */
+ UTF8_VALIDATE(mail_info->recipients, RECIPIENT_LEN - 1);
+ ld->recipient = GET_NAME_FROM_ALIAS(mail_info->recipients, RECIPIENT_LEN - 1);
+ debug_log("info->recipient: %s", ld->recipient);
+ } else {
+ /* sender display name from email alias */
+ if (mailbox_ugd->view_type == EMAIL_VIEW_SEARCH) {
+ char *from = GET_NAME_FROM_ALIAS(mail_info->from, FROM_LEN - 1);
+ char *_from = elm_entry_utf8_to_markup(from);
+ char *_search_sender = NULL;
+ int from_len = STR_LEN(_from); /* it is never zero */
+ ld->from = MEM_ALLOC_STR(from_len + TAG_LEN + 1);
+
+ if(search_data)
+ _search_sender = elm_entry_utf8_to_markup(search_data->sender);
+
+ if( search_data && STR_VALID(search_data->sender) ) {
+ insert_search_tag(ld->from, from_len + TAG_LEN, (const char *) _from, _search_sender);
+ }
+ else
+ STR_NCPY(ld->from, _from, from_len + TAG_LEN);
+
+ FREE(from);
+ FREE(_from);
+ FREE(_search_sender);
+ }
+ }
+
+ /* subject. */
+ if(STR_VALID(mail_info->subject)) {
+ UTF8_VALIDATE(mail_info->subject, SUBJECT_LEN);
+ char *_subject = elm_entry_utf8_to_markup(mail_info->subject);
+ int title_len = STR_LEN(_subject);
+ ld->title = MEM_ALLOC_STR(title_len + TAG_LEN + 1);
+ if( search_data && STR_VALID(search_data->subject) )
+ insert_search_tag(ld->title, title_len + TAG_LEN, (const char *) _subject, search_data->subject);
+ else
+ STR_NCPY(ld->title, _subject, title_len + TAG_LEN);
+ FREE(_subject);
+ }
+ else {
+ ld->title = MEM_ALLOC_STR(SUBJECT_LEN + TAG_LEN + 1);
+ STR_NCPY(ld->title, _("IDS_EMAIL_BODY_NO_SUBJECT"), SUBJECT_LEN + TAG_LEN);
+ }
+ debug_log("title: %s", ld->title);
+
+ ld->mailbox_type = GET_MAILBOX_TYPE(mail_info->mailbox_id);
+ ld->account_color = GET_ACCOUNT_COLOR(mail_info->account_id);
+ ld->mailbox_ugd = mailbox_ugd;
+ /* convert datetime format. */
+ ld->timeordate = email_get_str_datetime(ld->absolute_time);
+ //ld->group_index = email_get_group_title_str(ld->absolute_time, &ld->group_title, &ld->group_date);
+ ld->group_index = email_set_group(ld);
+ ld->chksel = EINA_FALSE;
+
+ debug_log("time %d [%s]", ld->absolute_time, ld->timeordate);
+ return ld;
+}
+
+
+static void _free_list_data(GList *p_list_data)
+{
+ debug_log("");
+ if (p_list_data == NULL) {
+ debug_log("GList * == NULL");
+ return;
+ }
+
+ int i = 0;
+ GList *list = (GList *)(p_list_data);
+ list_data *ld = NULL;
+ debug_log("g_list_length(list): %d", g_list_length(list));
+
+ for (i = 0; i < g_list_length(list); i++) {
+ ld = (list_data *)g_list_nth_data(list, i);
+ _free_list_data_simple(ld);
+ }
+
+ if (list) {
+ g_list_free(list);
+ }
+ p_list_data = NULL;
+}
+
+
+void _make_mail_list(EmailMailboxUGD *mailbox_ugd, const EmailSearchData *search_data)
+{
+ debug_enter();
+ debug_log("view_type: [%d]", mailbox_ugd->view_type);
+
+ email_mail_list_item_t *mail_list = NULL;
+ int mail_count = 0;
+
+ mail_list = _get_mail_list_by_view(mailbox_ugd, search_data, &mail_count);
+ mailbox_ugd->total_count = mail_count;
+ alias = NULL;
+
+ if( mail_list ) {
+ if(mailbox_ugd->view_type == EMAIL_VIEW_SEARCH) {
+ _add_mail_list_n_data(mailbox_ugd, mail_list, mail_count, search_data);
+ FREE(mail_list);
+ }
+ else
+ {
+ _add_mail_list_n_data(mailbox_ugd, mail_list, MIN(mail_count, FIRST_BLOCK_SIZE), search_data);
+ debug_log("COUNT: %d", mail_count);
+ if( mail_count > FIRST_BLOCK_SIZE ) {/* add remainder list by using thread */
+ mail_remaining_list_t *req = MEM_ALLOC(req, 1);
+ if(!req) return;
+ *req = (mail_remaining_list_t) {mail_list, FIRST_BLOCK_SIZE, mail_count,
+ mailbox_ugd->view_type, mailbox_ugd->mode, mailbox_ugd};
+ debug_log("Spawning thread");
+ Ecore_Thread *e = ecore_thread_feedback_run(worker_get_remaing_list_cb, add_remining_item_cb,
+ _remaining_finish_cb, NULL, req, EINA_TRUE);
+ if( !e )
+ debug_log("ecore_thread_feedback_run error");
+ } else {
+ FREE(mail_list);
+ }
+ }
+ debug_log("total count is not 0");
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_SEARCH)
+ {
+ debug_log("");
+ if (list_lock) {
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_noc", "elm");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_list", "elm");
+ }
+ list_lock = false;
+ }
+ else
+ {
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_noc", "elm");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_list", "elm");
+ //elm_object_item_disabled_set(mailbox_ugd->edit_button, EINA_FALSE);
+ if (mailbox_ugd->delete_all_button != NULL) {
+ elm_object_item_disabled_set(mailbox_ugd->delete_all_button, EINA_FALSE);
+ }
+ list_lock = false;
+ }
+
+ }
+ else
+ {
+ if (evas_object_visible_get(mailbox_ugd->gl[mailbox_ugd->view_type]))
+ evas_object_hide(mailbox_ugd->gl[mailbox_ugd->view_type]);
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_SEARCH) {
+
+ Evas_Object *no_content = elm_object_part_content_get(mailbox_ugd->search_layout, "noc");
+ elm_layout_theme_set(no_content, "layout", "nocontents", "search");
+ elm_object_part_text_set(no_content, "elm.text", dgettext("sys_string", "IDS_COM_BODY_NO_SEARCH_RESULTS"));
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_list", "elm");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_noc", "elm");
+
+ list_lock = true;
+ } else {
+
+ if (b_editmode)
+ _edit_back_cb(mailbox_ugd, NULL, NULL);
+
+ if ((mailbox_ugd->current_rotmode == APP_DEVICE_ORIENTATION_270 || mailbox_ugd->current_rotmode == APP_DEVICE_ORIENTATION_90) && elm_panes_content_left_size_get(mailbox_ugd->panes) == 0.4) {
+ _handle_last_sending_email(mailbox_ugd);
+ }
+ Evas_Object *no_content = elm_object_part_content_get(mailbox_ugd->search_layout, "noc");
+ elm_layout_theme_set(no_content, "layout", "nocontents", "text");
+ elm_object_part_text_set(no_content, "elm.text", dgettext("sys_string", "IDS_COM_BODY_NO_CONTENTS"));
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_list", "elm");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_noc", "elm");
+
+ if(mailbox_ugd->delete_all_button) {
+ elm_object_item_disabled_set(mailbox_ugd->delete_all_button, EINA_TRUE);
+ }
+ list_lock = true;
+
+ }
+ }
+
+ debug_leave();
+}
+
+email_mail_list_item_t *_get_mail_list_by_view(EmailMailboxUGD *mailbox_ugd, const EmailSearchData *search_data, int *mail_count)
+{
+ debug_enter();
+ email_mail_list_item_t *mail_data = NULL;
+ int mailbox_type = EMAIL_MAILBOX_TYPE_NONE;
+
+ if(mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_NONE)
+ mailbox_type = EMAIL_MAILBOX_TYPE_INBOX;
+ else
+ mailbox_type = mailbox_ugd->mailbox_type;
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_SEARCH) {
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL) {
+ mail_data = _mailbox_get_mail_list_by_mailbox_type(0, mailbox_type, mailbox_ugd->sort_type, EMAIL_GET_MAIL_NORMAL, mailbox_ugd->search_type, search_data, mail_count);
+ } else {
+ mail_data = _mailbox_get_mail_list_by_mailbox_id(mailbox_ugd->account_id, mailbox_ugd->mailbox_id, mailbox_ugd->sort_type, EMAIL_GET_MAIL_NORMAL, mailbox_ugd->search_type, search_data, mail_count);
+ }
+ } else {
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL) {
+ mail_data = _mailbox_get_mail_list_by_mailbox_type(0, mailbox_type, mailbox_ugd->sort_type, EMAIL_GET_MAIL_NORMAL, EMAIL_SEARCH_NONE, NULL, mail_count);
+ } else {
+ mail_data = _mailbox_get_mail_list_by_mailbox_id(mailbox_ugd->account_id, mailbox_ugd->mailbox_id, mailbox_ugd->sort_type, EMAIL_GET_MAIL_NORMAL, EMAIL_SEARCH_NONE, NULL, mail_count);
+ }
+ }
+ debug_leave();
+ return mail_data;
+}
+
+
+int _mailbox_get_filter_cnt_for_search_data(EmailSearchType search_type, const EmailSearchData *search_data)
+{
+ debug_enter();
+
+ int search_filter_cnt = 0;
+
+ switch (search_type) {
+ case EMAIL_SEARCH_ALL:
+ if (search_data->subject) {
+ search_filter_cnt += 2;
+ }
+ if (search_data->sender) {
+ search_filter_cnt += 2;
+ }
+ if (search_data->recipient) {
+ search_filter_cnt += 2;
+ }
+ if (search_filter_cnt > 0) {
+ search_filter_cnt += 2;
+ }
+ break;
+ case EMAIL_SEARCH_SUBJECT:
+ search_filter_cnt += 2;
+ break;
+ case EMAIL_SEARCH_FROM:
+ search_filter_cnt += 2;
+ break;
+ case EMAIL_SEARCH_TO:
+ search_filter_cnt += 2;
+ break;
+ case EMAIL_SEARCH_DATE:
+ if (search_data->from_time) {
+ search_filter_cnt += 2;
+ }
+ if (search_data->to_time) {
+ search_filter_cnt += 2;
+ }
+ break;
+ case EMAIL_SEARCH_ADVANCED:
+ if (search_data) {
+ if (search_data->subject) {
+ search_filter_cnt += 2;
+ }
+ if (search_data->sender) {
+ search_filter_cnt += 2;
+ }
+ if (search_data->recipient) {
+ search_filter_cnt += 2;
+ }
+ if (search_data->from_time) {
+ search_filter_cnt += 2;
+ }
+ if (search_data->to_time) {
+ search_filter_cnt += 2;
+ }
+ }
+ break;
+ default:
+ debug_log("invlaid search_type(%d)", search_type);
+ break;
+ }
+
+ debug_log("search_filter_cnt: %d", search_filter_cnt);
+
+ return search_filter_cnt;
+
+}
+
+void mailbox_add_search_data_into_filter_list(EmailSearchType search_type, const EmailSearchData *search_data, email_list_filter_t *filter_list, int *current_index)
+{
+ debug_enter();
+
+ int i = *current_index;
+
+ if (!search_data) {
+ debug_critical("search_data is NULL");
+ return;
+ }
+
+ switch (search_type) {
+ case EMAIL_SEARCH_ALL:
+ {
+ int filter_rule_cnt = 0;
+ if (search_data->subject || search_data->sender || search_data->recipient) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_LEFT_PARENTHESIS;
+ i++;
+ }
+ if (search_data->subject) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_SUBJECT;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
+ filter_list[i].list_filter_item.rule.key_value.string_type_value = g_strdup(search_data->subject);
+ i++;
+ filter_rule_cnt++;
+ }
+ if (search_data->sender) {
+ if (filter_rule_cnt > 0) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_OR;
+ i++;
+ }
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_FROM;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
+ filter_list[i].list_filter_item.rule.key_value.string_type_value = g_strdup(search_data->sender);
+ i++;
+ filter_rule_cnt++;
+ }
+ if (search_data->recipient) {
+ if (filter_rule_cnt > 0) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_OR;
+ i++;
+ }
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_TO;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
+ filter_list[i].list_filter_item.rule.key_value.string_type_value = g_strdup(search_data->recipient);
+ i++;
+ filter_rule_cnt++;
+ }
+ if (filter_rule_cnt > 0) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_RIGHT_PARENTHESIS;
+ i++;
+ }
+ }
+ break;
+ case EMAIL_SEARCH_SUBJECT:
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_SUBJECT;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
+ filter_list[i].list_filter_item.rule.key_value.string_type_value = g_strdup(search_data->subject);
+ i++;
+ break;
+ case EMAIL_SEARCH_FROM:
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_FROM;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
+ filter_list[i].list_filter_item.rule.key_value.string_type_value = g_strdup(search_data->sender);
+ i++;
+ break;
+ case EMAIL_SEARCH_TO:
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_TO;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
+ filter_list[i].list_filter_item.rule.key_value.string_type_value = g_strdup(search_data->recipient);
+ i++;
+ break;
+ case EMAIL_SEARCH_DATE:
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_DATE_TIME;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_GREATER_THAN_OR_EQUAL;
+ filter_list[i].list_filter_item.rule.key_value.datetime_type_value = search_data->from_time;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_DATE_TIME;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_LESS_THAN_OR_EQUAL;
+ filter_list[i].list_filter_item.rule.key_value.datetime_type_value = search_data->to_time;
+ i++;
+
+ break;
+ case EMAIL_SEARCH_ADVANCED:
+ if (search_data->subject) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_SUBJECT;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
+ filter_list[i].list_filter_item.rule.key_value.string_type_value = g_strdup(search_data->subject);
+ i++;
+ }
+ if (search_data->sender) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_FROM;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
+ filter_list[i].list_filter_item.rule.key_value.string_type_value = g_strdup(search_data->sender);
+ i++;
+ }
+ if (search_data->recipient) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_TO;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_INCLUDE;
+ filter_list[i].list_filter_item.rule.key_value.string_type_value = g_strdup(search_data->recipient);
+ i++;
+ }
+ if (search_data->from_time) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_DATE_TIME;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_GREATER_THAN_OR_EQUAL;
+ filter_list[i].list_filter_item.rule.key_value.datetime_type_value = search_data->from_time;
+ i++;
+ }
+ if (search_data->to_time) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_DATE_TIME;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_LESS_THAN_OR_EQUAL;
+ filter_list[i].list_filter_item.rule.key_value.datetime_type_value = search_data->to_time;
+ i++;
+ }
+ break;
+ default:
+ debug_log("invlaid search_type(%d)", search_type);
+ break;
+ }
+
+ *current_index = i;
+
+ debug_leave();
+}
+
+void _mailbox_make_sorting_rule_list(EmailSortType sort_type, email_list_sorting_rule_t *sorting_rule_list)
+{
+ debug_enter();
+
+ switch (sort_type) {
+ case EMAIL_SORT_DATE_RECENT:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_DATE_TIME;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_DESCEND;
+ sorting_rule_list[0].force_boolean_check = false;
+ break;
+ case EMAIL_SORT_DATE_OLDEST:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_DATE_TIME;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_ASCEND;
+ sorting_rule_list[0].force_boolean_check = false;
+ break;
+ case EMAIL_SORT_SENDER_ATOZ:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_FROM;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_ASCEND;
+ sorting_rule_list[0].force_boolean_check = false;
+ break;
+ case EMAIL_SORT_SENDER_ZTOA:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_FROM;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_DESCEND;
+ sorting_rule_list[0].force_boolean_check = false;
+ break;
+ case EMAIL_SORT_RCPT_ATOZ:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_TO;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_ASCEND;
+ sorting_rule_list[0].force_boolean_check = false;
+ break;
+ case EMAIL_SORT_RCPT_ZTOA:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_TO;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_DESCEND;
+ sorting_rule_list[0].force_boolean_check = false;
+ break;
+ case EMAIL_SORT_UNREAD:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_FLAGS_SEEN_FIELD;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_ASCEND;
+ sorting_rule_list[0].force_boolean_check = false;
+ break;
+ case EMAIL_SORT_IMPORTANT:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_FLAGS_FLAGGED_FIELD;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_DESCEND;
+ sorting_rule_list[0].force_boolean_check = false;
+ break;
+ case EMAIL_SORT_PRIORITY:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_PRIORITY;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_DESCEND;
+ sorting_rule_list[0].force_boolean_check = false;
+ break;
+ case EMAIL_SORT_ATTACHMENTS:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_ATTACHMENT_COUNT;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_ASCEND;
+ sorting_rule_list[0].force_boolean_check = true;
+ break;
+ case EMAIL_SORT_MEETING_REQUEST:
+ sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_MEETING_REQUEST_STATUS;
+ sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_DESCEND;
+ sorting_rule_list[0].force_boolean_check = false;
+ break;
+ default:
+ debug_error("INVALID sort_type.");
+ break;
+ }
+}
+
+email_mail_list_item_t *_mailbox_get_mail_list_by_mailbox_id(int account_id, int mailbox_id, int sort_type, int thread_id, EmailSearchType search_type, const EmailSearchData *search_data, int *mail_count)
+{
+ debug_enter();
+ debug_log("account_id: %d, mailbox_id: %d, sort_type: %d, thread_id : %d, search_type: %d", account_id, mailbox_id, sort_type, thread_id, search_type);
+
+ email_mail_list_item_t *mail_list = NULL;
+ email_list_filter_t *filter_list = NULL;
+ email_list_sorting_rule_t *sorting_rule_list = NULL;
+ int cnt_filter_list = 0;
+ int cnt_soring_rule = 0;
+ int err = 0;
+ int i = 0;
+
+
+ if (account_id == 0)
+ cnt_filter_list += 1;
+ else if (account_id > 0)
+ cnt_filter_list += 3;
+ else {
+ debug_error("account_id SHOULD be greater than or equal to 0.");
+ return NULL;
+ }
+
+
+ if (search_data && search_type > EMAIL_SEARCH_NONE && search_type < EMAIL_SEARCH_MAX)
+ cnt_filter_list += _mailbox_get_filter_cnt_for_search_data(search_type, search_data);
+
+ debug_log("cnt_filter_list: %d", cnt_filter_list);
+
+ filter_list = malloc(sizeof(email_list_filter_t) * cnt_filter_list);
+ memset(filter_list, 0, sizeof(email_list_filter_t) * cnt_filter_list);
+
+ if (account_id == 0) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_MAILBOX_ID;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
+ filter_list[i].list_filter_item.rule.key_value.integer_type_value = mailbox_id;
+ i++;
+ } else if (account_id > 0) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_ACCOUNT_ID;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
+ filter_list[i].list_filter_item.rule.key_value.integer_type_value = account_id;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_MAILBOX_ID;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
+ filter_list[i].list_filter_item.rule.key_value.integer_type_value = mailbox_id;
+ i++;
+ }
+
+ if (search_type > EMAIL_SEARCH_NONE && search_type < EMAIL_SEARCH_MAX)
+ mailbox_add_search_data_into_filter_list(search_type, search_data, filter_list, &i);
+
+ debug_log("filled filter count: %d", i + 1);
+
+ cnt_soring_rule = 1;
+ sorting_rule_list = malloc(sizeof(email_list_sorting_rule_t) * cnt_soring_rule);
+ memset(sorting_rule_list, 0, sizeof(email_list_sorting_rule_t) * cnt_soring_rule);
+
+ _mailbox_make_sorting_rule_list(sort_type, sorting_rule_list);
+
+ err = email_get_mail_list_ex(filter_list, cnt_filter_list, sorting_rule_list, cnt_soring_rule, -1, -1, &mail_list, mail_count);
+ if (err != EMAIL_ERROR_NONE)
+ debug_warning("email_get_mail_list_ex - err (%d)", err);
+
+ FREE(sorting_rule_list);
+ email_free_list_filter(&filter_list, cnt_filter_list);
+
+ debug_leave();
+
+ return mail_list;
+}
+
+email_mail_list_item_t *_mailbox_get_mail_list_by_mailbox_type(int account_id, int mailbox_type, int sort_type, int thread_id, EmailSearchType search_type, const EmailSearchData *search_data, int *mail_count)
+{
+ debug_enter();
+ debug_log("account_id: %d, mailbox_type: %d, sort_type: %d, thread_id : %d search_type: %d", account_id, mailbox_type, sort_type, thread_id, search_type);
+
+ email_mail_list_item_t *mail_list = NULL;
+ email_list_filter_t *filter_list = NULL;
+ email_list_sorting_rule_t *sorting_rule_list = NULL;
+ int cnt_filter_list = 0;
+ int cnt_soring_rule = 0;
+ int err = 0;
+ int i = 0;
+
+
+ if (account_id == 0)
+ cnt_filter_list += 1;
+ else if (account_id > 0)
+ cnt_filter_list += 3;
+ else {
+ debug_error("account_id SHOULD be greater than or equal to 0.");
+ return NULL;
+ }
+
+ if (search_type > EMAIL_SEARCH_NONE && search_type < EMAIL_SEARCH_MAX)
+ cnt_filter_list += _mailbox_get_filter_cnt_for_search_data(search_type, search_data);
+
+ debug_log("cnt_filter_list: %d", cnt_filter_list);
+
+ filter_list = malloc(sizeof(email_list_filter_t) * cnt_filter_list);
+ memset(filter_list, 0, sizeof(email_list_filter_t) * cnt_filter_list);
+
+ if (account_id == 0) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_MAILBOX_TYPE;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
+ filter_list[i].list_filter_item.rule.key_value.integer_type_value = mailbox_type;
+ i++;
+ } else if (account_id > 0) {
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_ACCOUNT_ID;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
+ filter_list[i].list_filter_item.rule.key_value.integer_type_value = account_id;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_OPERATOR;
+ filter_list[i].list_filter_item.operator_type = EMAIL_LIST_FILTER_OPERATOR_AND;
+ i++;
+
+ filter_list[i].list_filter_item_type = EMAIL_LIST_FILTER_ITEM_RULE;
+ filter_list[i].list_filter_item.rule.target_attribute = EMAIL_MAIL_ATTRIBUTE_MAILBOX_TYPE;
+ filter_list[i].list_filter_item.rule.rule_type = EMAIL_LIST_FILTER_RULE_EQUAL;
+ filter_list[i].list_filter_item.rule.key_value.integer_type_value = mailbox_type;
+ i++;
+ }
+
+ if (search_type > EMAIL_SEARCH_NONE && search_type < EMAIL_SEARCH_MAX)
+ mailbox_add_search_data_into_filter_list(search_type, search_data, filter_list, &i);
+
+ debug_log("filled filter count: %d", i);
+
+ cnt_soring_rule = 1;
+ sorting_rule_list = malloc(sizeof(email_list_sorting_rule_t) * cnt_soring_rule);
+ memset(sorting_rule_list, 0, sizeof(email_list_sorting_rule_t) * cnt_soring_rule);
+
+ _mailbox_make_sorting_rule_list(sort_type, sorting_rule_list);
+
+ err = email_get_mail_list_ex(filter_list, cnt_filter_list, sorting_rule_list, cnt_soring_rule, -1, -1, &mail_list, mail_count);
+ if (err != EMAIL_ERROR_NONE)
+ debug_warning("email_get_mail_list_ex - err (%d)", err);
+
+ FREE(sorting_rule_list);
+ email_free_list_filter(&filter_list, cnt_filter_list);
+
+ debug_warning("mail_count(%d)", *mail_count);
+
+ return mail_list;
+}
+
+void _edit_back_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_enter();
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ debug_log("mailbox_ugd->view_type: [%d]", mailbox_ugd->view_type);
+
+ /*clear checked status of mail item*/
+ _clear_checked_status(mailbox_ugd);
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_EDIT && mailbox_ugd->isRotate == true)
+ {
+ elm_object_item_part_content_unset(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar");
+ _delete_controlbar(mailbox_ugd);
+ email_maillist_select_info(mailbox_ugd);
+ }
+
+ mailbox_ugd->view_type = mailbox_ugd->previous_view;
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD)
+ mailbox_ugd->previous_view = EMAIL_VIEW_DATE;
+
+ if (GET_MAILBOX_TYPE(mailbox_ugd->mailbox_id) == EMAIL_MAILBOX_TYPE_OUTBOX) {
+ mailbox_ugd->create_progress_part= true;
+ debug_log("mailbox_ugd->view_type[%d]", mailbox_ugd->view_type);
+ elm_genlist_realized_items_update(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ }
+ elm_genlist_realized_items_update(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ _update_navigationbar_title(mailbox_ugd);
+ b_editmode = false;
+ elm_object_disabled_set(mailbox_ugd->folder_button, EINA_FALSE);
+
+ if (mailbox_ugd->isRotate == true) {
+ email_rotate_landscape(mailbox_ugd);
+ /*
+ if (mailbox_ugd->current_rotmode == APP_DEVICE_ORIENTATION_270)
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE, NULL, mailbox_ugd);
+ else
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN, NULL, mailbox_ugd);
+ */
+ } else {
+ elm_object_part_content_set(mailbox_ugd->search_layout, "searchbar", mailbox_ugd->searchbar_layout);
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_searchbar", "search");
+ }
+
+ debug_leave();
+}
+
+
+static void _remaining_finish_cb(void* data, Ecore_Thread *thd)
+{
+ debug_enter();
+ if( !data ) {
+ debug_warning("PARAM NULL: data(%p)", data);
+ return;
+ }
+ mail_remaining_list_t *req = (mail_remaining_list_t *)data;
+ FREE(req);
+ debug_leave();
+}
+
+
+
+// TODO: move engine.....
+/* the _list should be free after use */
+email_mail_list_item_t* get_mail_info(int mail_id)
+{
+ char _where[256] = {0};
+ snprintf(_where, 255, "where mail_id=%d", mail_id);
+
+ int count = 0;
+ email_mail_list_item_t* mail_info = NULL;
+
+ int _e = email_query_mail_list(_where, &mail_info, &count);
+ if(_e != EMAIL_ERROR_NONE || !mail_info || count != 1) {
+ debug_warning("get mail info - err (%d) or list NULL(%p) or _list != 1 (%d)",
+ _e, mail_info, count);
+ goto CLEANUP;
+ }
+
+ return mail_info;
+
+CLEANUP:
+ FREE(mail_info);
+ return NULL;
+}
+
+
+void _mailbox_list_clear(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_enter();
+
+ if (mailbox_ugd == NULL) {
+ debug_log("mailbox_ugd is NULL");
+ return;
+ }
+
+ debug_log("mailbox_ugd->view_type: [%d], list_data[%p]", mailbox_ugd->view_type, mailbox_ugd->list_data[mailbox_ugd->view_type]);
+
+ int i = 0;
+ for (i = 0; i < EMAIL_GROUP_MAX; ++i) {
+ mailbox_ugd->git[mailbox_ugd->view_type][i] = NULL;
+ FREE(group_title[i][0]);
+ FREE(group_title[i][1]);
+ }
+
+ if (mailbox_ugd->list_data[mailbox_ugd->view_type]) {
+ _free_list_data(mailbox_ugd->list_data[mailbox_ugd->view_type]);
+ mailbox_ugd->list_data[mailbox_ugd->view_type] = NULL;
+ }
+ debug_log("mailbox_ugd->gl: 0x%x", mailbox_ugd->gl[mailbox_ugd->view_type]);
+
+ if ( !mailbox_ugd->gl[mailbox_ugd->view_type] ) {
+ debug_critical("mailbox_ugd->gl view_type(%d) is null", mailbox_ugd->view_type);
+ return;
+ }
+
+ _clear_genlist(mailbox_ugd);
+ debug_leave();
+}
+
+
+void _mailbox_list_add_item(EmailMailboxUGD *mailbox_ugd, gint mail_id)
+{
+ debug_enter();
+ if (mailbox_ugd == NULL) {
+ debug_log("mailbox_ugd is NULL");
+ return;
+ }
+
+ if (mail_id == 0) {
+ debug_log("uid is 0");
+ return;
+ }
+
+ _remove_get_more_progress_item(mailbox_ugd);
+
+ email_mail_list_item_t* mail_info = get_mail_info(mail_id);
+
+ if (!mail_info) {
+ goto CLEANUP;
+ }
+
+ list_data *ld = make_list_data(mail_info, NULL, mailbox_ugd);
+ if(!ld) {
+ goto CLEANUP;
+ }
+
+ ld->mailbox_ugd = mailbox_ugd;
+
+ mailbox_ugd->list_data[mailbox_ugd->view_type] =
+ g_list_insert_sorted(mailbox_ugd->list_data[mailbox_ugd->view_type], ld, _compare_sort_rule_by_viewtype);
+
+ if (mailbox_ugd->view_type != EMAIL_VIEW_RECIPIENT) {
+ if (!group_title[ld->group_index][0])
+ group_title[ld->group_index][0] = g_strdup(ld->group_title);
+ if (!group_title[ld->group_index][1])
+ group_title[ld->group_index][1] = g_strdup(ld->group_date);
+ debug_log("group_title: %s", group_title[ld->group_index][0]);
+ }
+ _insert_mail_to_mailist(mailbox_ugd, ld);
+
+ debug_log("mode: %d, mailbox_id: %d, ld->recipient : %s", ld->mailbox_ugd->mode, ld->mailbox_id, ld->recipient);
+
+ if (list_lock) {
+ debug_log("locked");
+ if (!evas_object_visible_get(mailbox_ugd->gl[mailbox_ugd->view_type]))
+ evas_object_show(mailbox_ugd->gl[mailbox_ugd->view_type]);
+
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_noc", "elm");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_list", "elm");
+ list_lock = false;
+ }
+ if (mailbox_ugd->delete_all_button != NULL) {
+ elm_object_item_disabled_set(mailbox_ugd->delete_all_button, EINA_FALSE);
+ }
+
+ CLEANUP:
+
+ FREE(mail_info);
+ debug_leave();
+}
+
+
+static void _clear_genlist(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("VIEW TYPE[%d]",mailbox_ugd->view_type);
+ if (mailbox_ugd == NULL) {
+ debug_log("mailbox_ugd is NULL");
+ return;
+ }
+
+ if (mailbox_ugd->gl[mailbox_ugd->view_type]) {
+ elm_genlist_clear(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ _reset_refer_item_and_idx(mailbox_ugd);
+ }
+}
+
+
+void _refresh_mailbox(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ int mbox_type = GET_MAILBOX_TYPE(mailbox_ugd->mailbox_id);
+ if (mbox_type == EMAIL_MAILBOX_TYPE_OUTBOX) {
+ mailbox_ugd->create_progress_part = true;
+ }
+ _mailbox_list_clear(mailbox_ugd);
+ _create_mail_list(mailbox_ugd);
+}
+
+void _create_mail_list(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ if (mailbox_ugd->view_type != EMAIL_VIEW_SEARCH) {
+ list_lock = false;
+ }
+ _make_mail_list(mailbox_ugd, NULL);
+}
+
+void mailbox_make_unread_mail_list(void *data)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ mailbox_ugd->gl[EMAIL_VIEW_UNREAD] = mailbox_ugd->gl[mailbox_ugd->view_type];
+ list_lock = false;
+ mailbox_ugd->previous_view = mailbox_ugd->view_type;
+ mailbox_ugd->view_type = EMAIL_VIEW_UNREAD;
+ mailbox_ugd->navibar_item[EMAIL_VIEW_UNREAD] = mailbox_ugd->navibar_item[mailbox_ugd->previous_view];
+
+ _refresh_mailbox(mailbox_ugd);
+
+ return;
+}
+
+void mailbox_make_important_mail_list(void *data)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ mailbox_ugd->gl[EMAIL_VIEW_IMPORTANT] = mailbox_ugd->gl[mailbox_ugd->view_type];
+ list_lock = false;
+ mailbox_ugd->previous_view = mailbox_ugd->view_type;
+ mailbox_ugd->view_type = EMAIL_VIEW_IMPORTANT;
+ mailbox_ugd->navibar_item[EMAIL_VIEW_IMPORTANT] = mailbox_ugd->navibar_item[mailbox_ugd->previous_view];
+
+ _refresh_mailbox(mailbox_ugd);
+
+ return;
+}
+
+void mailbox_make_date_mail_list(void *data)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ mailbox_ugd->gl[EMAIL_VIEW_DATE] = mailbox_ugd->gl[mailbox_ugd->view_type];
+ list_lock = false;
+ mailbox_ugd->previous_view = mailbox_ugd->view_type;
+ mailbox_ugd->view_type = EMAIL_VIEW_DATE;
+ mailbox_ugd->navibar_item[EMAIL_VIEW_DATE] = mailbox_ugd->navibar_item[mailbox_ugd->previous_view];
+
+ _refresh_mailbox(mailbox_ugd);
+
+ return;
+}
+
+void mailbox_make_sender_mail_list(void *data)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ mailbox_ugd->gl[EMAIL_VIEW_RECIPIENT] = mailbox_ugd->gl[mailbox_ugd->view_type];
+ list_lock = false;
+ mailbox_ugd->previous_view = mailbox_ugd->view_type;
+ mailbox_ugd->view_type = EMAIL_VIEW_RECIPIENT;
+ mailbox_ugd->navibar_item[EMAIL_VIEW_RECIPIENT] = mailbox_ugd->navibar_item[mailbox_ugd->previous_view];
+
+ _refresh_mailbox(mailbox_ugd);
+
+ return;
+}
+
+void mailbox_make_attachment_mail_list(void *data)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ mailbox_ugd->gl[EMAIL_VIEW_ATTACHMENTS] = mailbox_ugd->gl[mailbox_ugd->view_type];
+ list_lock = false;
+ mailbox_ugd->previous_view = mailbox_ugd->view_type;
+ mailbox_ugd->view_type = EMAIL_VIEW_ATTACHMENTS;
+ mailbox_ugd->navibar_item[EMAIL_VIEW_ATTACHMENTS] = mailbox_ugd->navibar_item[mailbox_ugd->previous_view];
+
+ _refresh_mailbox(mailbox_ugd);
+
+ return;
+}
+
+void mailbox_make_priority_mail_list(void *data)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ mailbox_ugd->gl[EMAIL_VIEW_PRIORITY] = mailbox_ugd->gl[mailbox_ugd->view_type];
+ list_lock = false;
+ mailbox_ugd->previous_view = mailbox_ugd->view_type;
+ mailbox_ugd->view_type = EMAIL_VIEW_PRIORITY;
+ mailbox_ugd->navibar_item[EMAIL_VIEW_PRIORITY] = mailbox_ugd->navibar_item[mailbox_ugd->previous_view];
+
+ _refresh_mailbox(mailbox_ugd);
+
+ return;
+}
+
+void mailbox_make_meeting_request_mail_list(void *data)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ mailbox_ugd->gl[EMAIL_VIEW_MEETING_REQUEST] = mailbox_ugd->gl[mailbox_ugd->view_type];
+ list_lock = false;
+ mailbox_ugd->previous_view = mailbox_ugd->view_type;
+ mailbox_ugd->view_type = EMAIL_VIEW_MEETING_REQUEST;
+ mailbox_ugd->navibar_item[EMAIL_VIEW_MEETING_REQUEST] = mailbox_ugd->navibar_item[mailbox_ugd->previous_view];
+
+ _refresh_mailbox(mailbox_ugd);
+
+ return;
+}
+
+void _make_account_mail_list(void *data)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ if (mailbox_ugd->account_id == 0) {
+ mailbox_ugd->mode = EMAIL_MAILBOX_MODE_ALL;
+ debug_log("mailbox_type:[%d], mailbox_id:[%d]", mailbox_ugd->mailbox_type, mailbox_ugd->mailbox_id);
+ switch(mailbox_ugd->mailbox_type)
+ {
+ case EMAIL_MAILBOX_TYPE_INBOX:
+ {
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", _("IDS_EMAIL_BODY_INBOX"));
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_SENTBOX:
+ {
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", _("IDS_EMAIL_BODY_SENTBOX"));
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_TRASH:
+ {
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", _("IDS_EMAIL_BODY_TRASH"));
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_DRAFT:
+ {
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", _("IDS_EMAIL_BODY_DRAFTS"));
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_SPAMBOX:
+ {
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", _("IDS_EMAIL_BODY_SPAMBOX"));
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_OUTBOX:
+ {
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", N_("Outbox"));
+ }
+ break;
+ case EMAIL_MAILBOX_TYPE_FLAGGED:
+ {
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", _("IDS_EMAIL_OPT_FAVOURITES"));
+ }
+ break;
+ default:
+ {
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", _("IDS_EMAIL_BODY_INBOX"));
+ }
+ break;
+ }
+ elm_icon_file_set(mailbox_ugd->sp_icon, ICON_TITLE_ALL_ACC, NULL);
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_sub", _("IDS_EMAIL_HEADER_ALL_ACCOUNTS"));
+ }
+ else {
+ debug_log("mailbox_id: [%d], account_id: [%d]", mailbox_ugd->mailbox_id, mailbox_ugd->account_id);
+
+ mailbox_ugd->mode = EMAIL_MAILBOX_MODE_MAILBOX;
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", mailbox_ugd->folder_alias);
+ mailbox_ugd->mailbox_type = GET_MAILBOX_TYPE(mailbox_ugd->mailbox_id);
+
+ email_account_t *account;
+ email_get_account(mailbox_ugd->account_id, EMAIL_ACC_GET_OPT_DEFAULT, &account);
+ elm_icon_file_set(mailbox_ugd->sp_icon, account->logo_icon_path, NULL);
+
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_sub", mailbox_ugd->user_email);
+
+ if(account) email_free_account(&account, 1);
+ }
+
+ if (mailbox_ugd->isRotate == false) {
+ _create_controlbar(mailbox_ugd);
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar", mailbox_ugd->controlbar_btns);
+ }
+ _refresh_mailbox(mailbox_ugd);
+
+ return;
+}
+
+
+void _add_mail_list_n_data(EmailMailboxUGD *mailbox_ugd, email_mail_list_item_t* mail_list, int count, const EmailSearchData *search_data)
+{
+ if (!mailbox_ugd || !mail_list) {
+ debug_warning("mailbox_ugd NULL(%p) or mail_info NULL(%p)", mailbox_ugd, mail_list);
+ return;
+ }
+
+ /* view_type is used as array index - validity required */
+ if( mailbox_ugd->view_type >= EMAIL_VIEW_MAX || mailbox_ugd->view_type < 0 ) {
+ debug_critical("MailBox View(%d) is NOT defined", mailbox_ugd->view_type);
+ return;
+ }
+
+ int i=0;
+ for( ; i < count ; i++ )
+ {
+ list_data *ld = make_list_data(mail_list + i, search_data, mailbox_ugd);
+ if( !ld ) continue;
+
+ ld->mailbox_ugd = mailbox_ugd;
+
+ mailbox_ugd->list_data[mailbox_ugd->view_type] =
+ g_list_insert_sorted(mailbox_ugd->list_data[mailbox_ugd->view_type], ld, _compare_sort_rule_by_viewtype);
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_RECIPIENT || (mailbox_ugd->view_type == EMAIL_VIEW_SEARCH && mailbox_ugd->previous_view == EMAIL_VIEW_RECIPIENT))
+ {
+ _insert_mail_to_recipient_mailist(mailbox_ugd, ld);
+ }
+ else
+ {
+ if (!group_title[ld->group_index][0])
+ group_title[ld->group_index][0] = g_strdup(ld->group_title);
+ if (!group_title[ld->group_index][1])
+ group_title[ld->group_index][1] = g_strdup(ld->group_date);
+ debug_log("group_title: %s", group_title[ld->group_index][0]);
+
+ _insert_mail_to_mailist(mailbox_ugd, ld);
+ }
+
+ debug_log("mode: %d, mailbox_id: %d, ld->recipient : %s", ld->mailbox_ugd->mode, ld->mailbox_id, ld->recipient);
+ }
+}
+
+
+static void add_remining_item_cb(void *data, Ecore_Thread *thd, void* msg_data)
+{
+ debug_enter();
+
+ if(!data || !msg_data) {
+ debug_warning("PARAM NULL: data(%p), msg_data(%p)", data, msg_data);
+ return;
+ }
+
+ mail_remaining_list_t *req = (mail_remaining_list_t *)data;
+ EmailMailboxUGD *mailbox_ugd = req->mailbox_ugd;
+ list_data *ld = (list_data *) msg_data;
+
+ /* view_type is used as array index - validity required */
+ if( mailbox_ugd->view_type >= EMAIL_VIEW_MAX || mailbox_ugd->view_type < 0 ) {
+ debug_critical("MailBox View(%d) is NOT defined", mailbox_ugd->view_type);
+ _free_list_data_simple(ld);
+ return;
+ }
+
+ ld->mailbox_ugd = mailbox_ugd;
+
+ mailbox_ugd->list_data[mailbox_ugd->view_type] =
+ g_list_insert_sorted(mailbox_ugd->list_data[mailbox_ugd->view_type], ld, _compare_sort_rule_by_viewtype);
+// debug_log("ADDED: vt(%d), thdid(%d), mailid(%d)", mailbox_ugd->view_type, ld->thread_id, ld->mail_id);
+
+ if (mailbox_ugd->view_type != EMAIL_VIEW_RECIPIENT) {
+ if (!group_title[ld->group_index][0])
+ group_title[ld->group_index][0] = g_strdup(ld->group_title);
+ if (!group_title[ld->group_index][1])
+ group_title[ld->group_index][1] = g_strdup(ld->group_date);
+ debug_log("group_title: %s", group_title[ld->group_index][0]);
+ }
+
+ /* if view_type is changed, inserted item may cause crash */
+ if(req->view_type == mailbox_ugd->view_type && req->mode == mailbox_ugd->mode)
+ {
+ if(mailbox_ugd->view_type == EMAIL_VIEW_RECIPIENT)
+ _insert_mail_to_recipient_mailist(mailbox_ugd, ld);
+
+ else
+ _insert_mail_to_mailist(mailbox_ugd, ld);
+ }
+
+ debug_log("mode: %d, mailbox_id: %d, ld->recipient : %s", ld->mailbox_ugd->mode, ld->mailbox_id, ld->recipient);
+ debug_leave();
+}
+
+void _worker_get_delete_mail_list_cb(void* data, Ecore_Thread *thd)
+{
+ debug_enter();
+ if( !data ) {
+ debug_warning("PARAM NULL: data(%p)", data);
+ return;
+ }
+
+ CHECK_THREAD_BUSY();
+ debug_log("wake up now");
+
+ delete_req_t *req = (delete_req_t *)data;
+ EmailMailboxUGD *mailbox_ugd = req->mailbox_ugd;
+ EmailMailboxViewType vt = mailbox_ugd->view_type;
+ GList *mail_list = NULL;
+ list_data *ld = NULL;
+
+ GList* cur = NULL;
+ int *idx = NULL;
+
+ _parse_delete_mail_buf(req->msg_buf, &mail_list);
+
+ debug_log("size of mail_list : %d", g_list_length(mail_list));
+ G_LIST_FOREACH(mail_list, cur, idx) {
+ debug_log("idx: [%d]", *idx);
+ ld = _find_mailinfo_by_mailid(*idx, mailbox_ugd->list_data[vt]);
+ if(ld) {
+ CHECK_THREAD_BUSY();
+ delete_ret_t *ret = MEM_ALLOC(ret, 1);
+ if(!ret) return;
+ *ret = (delete_ret_t) {ld, *idx};
+ ecore_thread_feedback(thd, ret);
+ }
+ }
+
+ if(mail_list) {
+ G_LIST_FOREACH(mail_list, cur, idx) {
+ FREE(idx);
+ }
+ g_list_free(mail_list);
+ }
+
+ debug_leave();
+}
+
+static void _parse_delete_mail_buf(char *inbuf, GList **mail_list)
+{
+ debug_enter();
+ if(!STR_VALID(inbuf)) {
+ return;
+ }
+
+ /* notification format: <<mail_id><,><mail_id>>*/
+ gchar **inner_tok;
+ int i = 0;
+ inner_tok = g_strsplit_set(inbuf, ",", -1);
+ for(i = 0; i < g_strv_length(inner_tok) -1; ++i) {
+ debug_log("%s", inner_tok[i]);
+ if(!strcmp(inner_tok[i], "\"")) /* skip the empty token */
+ continue;
+ else {
+ int *mail_id = (int *)calloc(1, sizeof(int));
+ *mail_id = atoi(inner_tok[i]);
+ *mail_list = g_list_append(*mail_list, mail_id);
+ }
+ }
+ g_strfreev(inner_tok);
+
+}
+
+/* get email list using email lib */
+void _worker_get_mail_info_cb(void* data, Ecore_Thread *thd)
+{
+ debug_enter();
+ if( !data ) {
+ debug_warning("PARAM NULL: data(%p)", data);
+ return;
+ }
+
+ CHECK_THREAD_BUSY();
+ debug_log("wake up now");
+
+ sync_req_t *req = (sync_req_t *)data;
+ EmailMailboxUGD *mailbox_ugd = req->mailbox_ugd;
+
+ int mailbox_type = GET_MAILBOX_TYPE(req->mailbox_id);
+ if(mailbox_type == EMAIL_MAILBOX_TYPE_TRASH || mailbox_type == EMAIL_MAILBOX_TYPE_SPAMBOX)
+ return;
+
+ email_mail_list_item_t* mail_info = get_mail_info(req->mail_id);
+ if (!mail_info) {
+ goto CLEANUP;
+ }
+ list_data *ld = make_list_data(mail_info, NULL, mailbox_ugd);
+ if(!ld) {
+ goto CLEANUP;
+ }
+
+ ld->mailbox_ugd = mailbox_ugd;
+
+ CHECK_THREAD_BUSY();
+ debug_log("wake up now");
+
+ ecore_thread_feedback(thd, ld);
+
+ CLEANUP:
+
+ FREE(mail_info);
+ debug_leave();
+}
+
+
+void _worker_get_move_mail_list_cb(void* data, Ecore_Thread *thd)
+{
+
+ debug_enter();
+ if( !data ) {
+ debug_warning("PARAM NULL: data(%p)", data);
+ return;
+ }
+
+ CHECK_THREAD_BUSY();
+ debug_log("wake up now");
+
+ move_req_t *req = (move_req_t *)data;
+ EmailMailboxUGD *mailbox_ugd = req->mailbox_ugd;
+ EmailMailboxViewType vt = mailbox_ugd->view_type;
+ char *src_folder = NULL;
+ char *dst_folder = NULL;
+ int src_mailbox_id = 0, dst_mailbox_id = 0;
+ GList *mail_list = NULL;
+ list_data *ld = NULL;
+
+ GList* cur = NULL;
+ int *idx = NULL;
+
+ _parse_move_mail_buf(req->msg_buf, &src_folder, &dst_folder, &mail_list);
+
+ if(!STR_VALID(src_folder) || !STR_VALID(dst_folder))
+ return;
+
+ src_mailbox_id = atoi(src_folder);
+ dst_mailbox_id = atoi(dst_folder);
+
+ if(src_mailbox_id == dst_mailbox_id) //need not to move
+ goto CLEANUP;
+
+ int folder_type = GET_MAILBOX_TYPE(dst_mailbox_id);
+ req->mailbox_type = folder_type;
+
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL)
+ {
+ if(vt != EMAIL_VIEW_EDIT && vt != EMAIL_VIEW_SEARCH)
+ {
+ switch (folder_type)
+ {
+ case EMAIL_MAILBOX_TYPE_TRASH:
+ case EMAIL_MAILBOX_TYPE_SPAMBOX:
+ debug_log("size of mail_list : %d", g_list_length(mail_list));
+ G_LIST_FOREACH(mail_list, cur, idx) {
+ debug_log("idx: [%d]", *idx);
+ ld = _find_mailinfo_by_mailid(*idx, mailbox_ugd->list_data[vt]);
+ if(ld) {
+ delete_ret_t *ret = MEM_ALLOC(ret, 1);
+ if(!ret) return;
+ *ret = (delete_ret_t) {ld, *idx};
+ CHECK_THREAD_BUSY();
+ ecore_thread_feedback(thd, ret);
+ }
+ }
+ break;
+
+ case EMAIL_MAILBOX_TYPE_SENTBOX:
+ G_LIST_FOREACH(mail_list, cur, idx) {
+ debug_log("idx: [%d]", *idx);
+ ld = _find_mailinfo_by_mailid(*idx, mailbox_ugd->list_data[vt]);
+ if(ld) {
+ ld->is_sending_now = EMAIL_MAIL_STATUS_SENT;
+ delete_ret_t *ret = MEM_ALLOC(ret, 1);
+ if(!ret) return;
+ *ret = (delete_ret_t) {ld, *idx};
+ CHECK_THREAD_BUSY();
+ ecore_thread_feedback(thd, ret);
+ }
+ }
+ break;
+ default :
+ /* Do Nothing */
+ goto CLEANUP;
+ }
+
+ }
+ else {
+ /* Do Nothing */
+ goto CLEANUP;
+ }
+ }
+ /* is mailbox_ugd->account_id == account_id necessary?*/
+ else if(mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX && mailbox_ugd->account_id == req->account_id)
+ {
+ if(vt != EMAIL_VIEW_EDIT && vt != EMAIL_VIEW_SEARCH)
+ {
+ G_LIST_FOREACH(mail_list, cur, idx) {
+ ld = _find_mailinfo_by_mailid(*idx, mailbox_ugd->list_data[vt]);
+ if(ld) {
+ //mailbox_delete_mail_item_from_list(mailbox_ugd, ld);
+ delete_ret_t *ret = MEM_ALLOC(ret, 1);
+ if(!ret) return;
+ *ret = (delete_ret_t) {ld, *idx};
+ CHECK_THREAD_BUSY();
+ ecore_thread_feedback(thd, ret);
+ debug_log("Mail(%d) found in this view(%d)", *idx, vt);
+ }
+ }
+ }
+ else {
+ debug_log("Nothing to move: mode(%d), view(%d), acc(%d)", mailbox_ugd->mode, vt, mailbox_ugd->account_id);
+ goto CLEANUP;
+ }
+ }
+ else {
+ debug_log("Nothing to move: mode(%d), view(%d), acc(%d)", mailbox_ugd->mode, vt, mailbox_ugd->account_id);
+ goto CLEANUP;
+ }
+
+ CLEANUP:
+
+ if(mail_list) {
+ G_LIST_FOREACH(mail_list, cur, idx) {
+ FREE(idx);
+ }
+ g_list_free(mail_list);
+ }
+ FREE(src_folder);
+ FREE(dst_folder);
+
+ debug_log("wake up now");
+
+ debug_leave();
+ return;
+}
+
+
+
+
+static void worker_get_remaing_list_cb(void* data, Ecore_Thread *thd)
+{
+ debug_enter();
+ if( !data ) {
+ debug_warning("PARAM NULL: data(%p)", data);
+ return;
+ }
+
+ mail_remaining_list_t *_list = (mail_remaining_list_t *)data;
+ email_mail_list_item_t *mail_list = _list->mail_list;
+ int count = _list->count;
+
+ int i=_list->start;
+ for( ; i < count ; i++ )
+ {
+ list_data *ld = make_list_data(mail_list+i, NULL, _list->mailbox_ugd);
+ if( !ld ) continue;
+
+ debug_log("feeding to main");
+ ecore_thread_feedback(thd, ld);
+ }
+ FREE(_list->mail_list);
+ malloc_trim(0);
+ debug_leave();
+}
+
+
+static void add_mail_to_threaded (EmailMailboxUGD *mailbox_ugd, list_data *ld)
+{
+ if (!mailbox_ugd || !ld) {
+ debug_log("mailbox_ugd(%p)==NULL or mailbox_info(%p)==NULL", mailbox_ugd, ld);
+ return;
+ }
+
+ _remove_get_more_progress_item(mailbox_ugd);
+
+ if (list_lock) {
+ debug_log("locked");
+ if (!evas_object_visible_get(mailbox_ugd->gl[mailbox_ugd->view_type]))
+ evas_object_show(mailbox_ugd->gl[mailbox_ugd->view_type]);
+
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_noc", "elm");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_list", "elm");
+
+ list_lock = false;
+ }
+
+ /* The group items might be inserted before to receive any normal mail item */
+ mailbox_ugd->list_data[mailbox_ugd->view_type] =
+ g_list_insert_sorted(mailbox_ugd->list_data[mailbox_ugd->view_type], ld, _compare_sort_rule_by_viewtype);
+// debug_log("ADDED: vt(%d), thdid(%d), mailid(%d)", mailbox_ugd->view_type, ld->thread_id, ld->mail_id);
+ if (mailbox_ugd->view_type != EMAIL_VIEW_RECIPIENT) {
+ if (!group_title[ld->group_index][0])
+ group_title[ld->group_index][0] = g_strdup(ld->group_title);
+ if (!group_title[ld->group_index][1])
+ group_title[ld->group_index][1] = g_strdup(ld->group_date);
+ debug_log("group_title: %s", group_title[ld->group_index][0]);
+ }
+ _insert_mail_to_mailist(mailbox_ugd, ld);
+ debug_log("mode: %d, mailbox_id: %d, ld->recipient : %s", ld->mailbox_ugd->mode, ld->mailbox_id, ld->recipient);
+
+ if (mailbox_ugd->delete_all_button != NULL) {
+ elm_object_item_disabled_set(mailbox_ugd->delete_all_button, EINA_FALSE);
+ }
+}
+
+/* add item to genlist or update item in view */
+void _update_item_in_view_cb(void *data, Ecore_Thread *thd, void* msg_data)
+{
+ debug_enter();
+
+ if(!data || !msg_data) {
+ debug_warning("PARAM NULL: data(%p), msg_data(%p)", data, msg_data);
+ return;
+ }
+
+ sync_req_t *req = (sync_req_t *)data;
+ EmailMailboxUGD *mailbox_ugd = req->mailbox_ugd;
+ list_data *new_item = (list_data *) msg_data;
+ int thread_id = req->thread_id;
+
+ debug_log("THD: thdid(%d) mailid(%d) info(%p)", req->thread_id, req->mail_id, new_item);
+
+ //EmailMailboxViewType vt = mailbox_ugd->view_type;
+ EmailMailboxViewType vt = req->view_type;
+ RETURN_IF_FAIL(mailbox_ugd->list_data[vt]!=NULL);
+
+ // 1. search the list data which one has same thread id
+ list_data *ld = ({
+ list_data *_matched = NULL;
+// debug_log("VT: %d, LEN:%d", vt, g_list_length(mailbox_ugd->list_data[vt]));
+ GList* cur = g_list_first(mailbox_ugd->list_data[vt]);
+ for( ; cur ; cur = g_list_next(cur))
+ {
+ list_data *_ld = (list_data*) g_list_nth_data(cur, 0);
+// debug_log("COMP: ld->thread_id: %d, ld->mail_id: %d vs thdid: %d", _ld->thread_id, _ld->mail_id, thread_id);
+ /* find the matching item */
+ if(_ld->thread_id == thread_id)
+ {
+ _matched = _ld;
+ debug_log("Found mail for thdid(%d), mailid(%d)",req->thread_id, req->mail_id);
+ break;
+ }
+ }
+ _matched;
+ });
+
+ if( !ld ) {
+ debug_warning("NOT Found seed mail for thdid(%d), mailid(%d)", req->thread_id, req->mail_id);
+ goto CLEANUP;
+ }
+
+ /* If this item is the most recent mail, replace the old one with the new one*/
+ if (new_item->absolute_time > ld->absolute_time)
+ {
+ mailbox_delete_mail_item_from_list(mailbox_ugd, ld);
+
+ // insert new data
+ add_mail_to_threaded(mailbox_ugd, new_item);
+ }
+ /* just increasing thread count */
+ else {
+ ld->thread_count = new_item->thread_count;
+ if(ld->item)
+ elm_genlist_item_update(ld->item);
+ }
+
+// debug_log("ld: thdid(%d), mailid(%d), count(%d)", ld->thread_id, ld->mail_id, ld->thread_count);
+
+CLEANUP:
+ FREE(req);
+ debug_leave();
+}
+
+/*
+static gint _compare_date_asc(gconstpointer a, gconstpointer b)
+{
+ int ret = 0;
+ if(a == NULL || b == NULL)
+ return 0;
+
+ list_data *first_item = (list_data*)a;
+ list_data *second_item = (list_data*)b;
+ if(first_item->absolute_time > second_item->absolute_time) {
+ ret = -1;
+ } else if (first_item->absolute_time == second_item->absolute_time) {
+ ret = 0;
+ } else {
+ ret = 1;
+ }
+ return ret;
+}
+*/
+/*
+static gint _compare_date_desc(gconstpointer a, gconstpointer b)
+{
+ int ret = 0;
+ if(a == NULL || b == NULL)
+ return 0;
+
+ list_data *first_item = (list_data*)a;
+ list_data *second_item = (list_data*)b;
+
+ if(first_item->absolute_time > second_item->absolute_time) {
+ ret = 1;
+ } else if (first_item->absolute_time == second_item->absolute_time) {
+ ret = 0;
+ } else {
+ ret = -1;
+ }
+ return ret;
+}
+*/
+
+gint _compare_sort_rule_by_viewtype(gconstpointer a, gconstpointer b)
+{
+ int ret = 0;
+ if(a == NULL || b == NULL)
+ return 0;
+ list_data *first_item = (list_data*)a;
+ list_data *second_item = (list_data*)b;
+ EmailMailboxUGD *mailbox_ugd = first_item->mailbox_ugd;
+
+ int type = 0;
+ if(mailbox_ugd->view_type == EMAIL_VIEW_SEARCH || mailbox_ugd->view_type == EMAIL_VIEW_EDIT)
+ type = mailbox_ugd->previous_view;
+ else
+ type = mailbox_ugd->view_type;
+ switch(type)
+ {
+ case EMAIL_VIEW_DATE:
+ case EMAIL_VIEW_THREAD:
+ if(first_item->absolute_time > second_item->absolute_time)
+ ret = (mailbox_ugd->sort_type == EMAIL_SORT_DATE_RECENT) ? -1 : 1;
+ else if (first_item->absolute_time == second_item->absolute_time)
+ ret = 1;
+ else
+ ret = (mailbox_ugd->sort_type == EMAIL_SORT_DATE_RECENT) ? 1 : -1;
+ break;
+
+ case EMAIL_VIEW_UNREAD:
+ if(first_item->is_seen > second_item->is_seen)
+ ret = 1;
+ else if (first_item->is_seen == second_item->is_seen)
+ ret = 1;
+ else
+ ret = -1;
+ break;
+
+ case EMAIL_VIEW_IMPORTANT:
+ if(first_item->imp_sel > second_item->imp_sel)
+ ret = -1;
+ else if (first_item->imp_sel == second_item->imp_sel)
+ ret = 1;
+ else
+ ret = 1;
+ break;
+
+ case EMAIL_VIEW_PRIORITY:
+ if(first_item->priority > second_item->priority)
+ ret = -1;
+ else if (first_item->priority == second_item->priority)
+ ret = 1;
+ else
+ ret = 1;
+ break;
+
+ case EMAIL_VIEW_ATTACHMENTS:
+ if(first_item->is_attachment > second_item->is_attachment)
+ ret = -1;
+ else if (first_item->is_attachment == second_item->is_attachment)
+ ret = 1;
+ else
+ ret = 1;
+ break;
+
+ case EMAIL_VIEW_MEETING_REQUEST:
+ if(first_item->is_attachment > second_item->is_attachment)
+ ret = -1;
+ else if (first_item->is_attachment == second_item->is_attachment)
+ ret = 1;
+ else
+ ret = 1;
+ break;
+ }
+ return ret;
+}
+
+static char *_gl_recipient_group_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_enter();
+ if (data == NULL) {
+ debug_log("data is NULL");
+ return NULL;
+ }
+ list_data *ld = (list_data *)data;
+ if (g_strcmp0(part, "elm.text") == 0) {
+ return strdup(ld->alias);
+ }
+
+ return NULL;
+}
+
+
+
+
+static void _insert_mail_to_recipient_mailist(EmailMailboxUGD *mailbox_ugd, list_data* ld)
+{
+ debug_enter();
+
+ itc_item_for_sender_index.item_style = "grouptitle";
+ itc_item_for_sender_index.func.text_get = _gl_recipient_group_text_get;
+ itc_item_for_sender_index.func.content_get = NULL;
+ itc_item_for_sender_index.func.state_get = NULL;
+ itc_item_for_sender_index.func.del = NULL;
+ itc_item_for_sender_index.decorate_all_item_style = NULL;
+
+ //debug_log("alias: [%s], ld->alias: [%s]", alias, ld->alias);
+ if(alias)
+ {
+ if(g_strcmp0(ld->alias, alias))
+ {
+ // insert group item
+ sender_group = elm_genlist_item_append(mailbox_ugd->gl[mailbox_ugd->view_type],
+ &itc_item_for_sender_index,
+ ld,
+ NULL,
+ ELM_GENLIST_ITEM_GROUP,
+ NULL, NULL);
+ alias = g_strdup(ld->alias);
+ }
+
+ // insert normal item
+ ld->item = elm_genlist_item_append(mailbox_ugd->gl[mailbox_ugd->view_type],
+ &(mailbox_ugd->itc1),
+ ld,
+ sender_group,
+ ELM_GENLIST_ITEM_NONE,
+ _list_item_clicked,
+ NULL);
+
+ }
+ else
+ {
+ // insert group item
+ sender_group = elm_genlist_item_append(mailbox_ugd->gl[mailbox_ugd->view_type],
+ &itc_item_for_sender_index,
+ ld,
+ NULL,
+ ELM_GENLIST_ITEM_GROUP,
+ NULL, NULL);
+ alias = g_strdup(ld->alias);
+ // insert normal item
+ ld->item = elm_genlist_item_append(mailbox_ugd->gl[mailbox_ugd->view_type],
+ &(mailbox_ugd->itc1),
+ ld,
+ sender_group,
+ ELM_GENLIST_ITEM_NONE,
+ _list_item_clicked,
+ NULL);
+ }
+ debug_leave();
+}
+
+
+void _insert_mail_to_mailist(EmailMailboxUGD *mailbox_ugd, list_data* ld)
+{
+ debug_enter();
+
+ GList *cur = g_list_find(mailbox_ugd->list_data[mailbox_ugd->view_type], ld);
+ if( !cur ) {
+ debug_log("No such list_data");
+ return;
+ }
+ GList *prev = g_list_previous(cur);
+ list_data* prev_data = prev? g_list_nth_data(prev, 0) : NULL;
+ GList *next = g_list_next(cur);
+ list_data *next_data = next? g_list_nth_data(next, 0) : NULL;
+
+ _insert_normal_item_to_mailist(mailbox_ugd, ld, prev_data, next_data);
+ debug_leave();
+}
+
+static void set_busy_cb(void *data, Evas *e, Evas_Object *o, void *info)
+{
+ debug_log("");
+ is_main_thread_busy = true;
+}
+
+
+static void reset_busy_cb(void *data, Evas *e, Evas_Object *o, void *info)
+{
+ debug_log("");
+ is_main_thread_busy = false;
+}
+
+
--- /dev/null
+/*
+ * 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.
+ */
+
+#include "email-mailbox.h"
+#include "email-mailbox-item.h"
+#include "email-mailbox-list.h"
+#include "email-mailbox-search.h"
+#include "email-mailbox-noti-mgr.h"
+
+
+E_DBus_Connection *_g_mailbox_conn = NULL;
+E_DBus_Signal_Handler *_g_signal_handler_storage = NULL;
+E_DBus_Signal_Handler *_g_signal_handler_network = NULL;
+
+extern int ug_pushed;
+extern gboolean list_lock;
+extern Eina_List *g_account_list;
+extern char *group_title[EMAIL_GROUP_MAX][2];
+
+
+DBusHandlerResult _on_dbus_receive(DBusConnection *connection, DBusMessage *message, void *user_data);
+static void _edbus_event_mailbox_receive(void *local_data, DBusMessage *message);
+static Eina_Bool email_check_account_list(int account_id);
+static void email_maillist_insert_sorted(list_data *ld);
+static void add_seed_mail_cb(void *data, Ecore_Thread *thd, void* msg_data);
+static gint _find_insert_position(gconstpointer a, gconstpointer b);
+static gint _find_next_group_position(gconstpointer a, gconstpointer b);
+
+
+static gint _find_next_group_position(gconstpointer a, gconstpointer b)
+{
+ list_data *pos = (list_data *)a;
+ list_data *src = (list_data *)b;
+
+ if(pos->group_index > src->group_index)
+ return 0;
+ else
+ return -1;
+
+}
+
+void _release_noti_Q_event(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_enter();
+
+ GList *noti_Q = mailbox_ugd->noti_Q;
+ int i = 0;
+ int count = g_list_length(noti_Q);
+ GList *cur = g_list_last(noti_Q);
+
+ for(; i < count; ++i, cur = g_list_previous(cur))
+ {
+ noti_event *noti = (noti_event *)g_list_nth_data(cur, 0);
+ FREE(noti->data3);
+ }
+ G_LIST_FREE(mailbox_ugd->noti_Q);
+
+ debug_leave();
+}
+
+static gint _find_insert_position(gconstpointer a, gconstpointer b)
+{
+ list_data *pos = (list_data *)a;
+ list_data *src = (list_data *)b;
+
+ if(pos->group_index == src->group_index && pos->absolute_time < src->absolute_time)
+ return 0;
+ else
+ return -1;
+
+}
+
+void _response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ evas_object_del(data);
+}
+
+void _delete_finish_cb(void* data, Ecore_Thread *thd)
+{
+ debug_enter();
+ if( !data ) {
+ debug_warning("PARAM NULL: data(%p)", data);
+ return;
+ }
+ delete_req_t *req = (delete_req_t *)data;
+ if(req->mailbox_ugd->view_type != EMAIL_VIEW_THREAD) {
+ _release_noti_Q_event(req->mailbox_ugd);
+ }
+ FREE(req->msg_buf);
+ FREE(req);
+ debug_leave();
+}
+
+static void email_maillist_insert_sorted(list_data *ld)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = ld->mailbox_ugd;
+ GList *_list = mailbox_ugd->list_data[mailbox_ugd->view_type];
+ GList *pos = NULL;
+
+ pos = g_list_find_custom(_list, ld, _find_insert_position);
+
+ if(pos)
+ _list = g_list_insert_before(_list, pos, ld);
+ else
+ {
+ // ld is the only entry having corresponding group index
+ if(!mailbox_ugd->git[mailbox_ugd->view_type][ld->group_index]) {
+ _list = g_list_insert_sorted(_list, ld, _compare_sort_rule_by_viewtype);
+ }
+ else // ld is the oldest mail in same group
+ {
+ // find the first entry in next group
+ pos = g_list_find_custom(_list, ld, _find_next_group_position);
+ if(pos)
+ _list = g_list_insert_before(_list, pos, ld);
+ else // the list has one group
+ _list = g_list_append(_list,ld);
+ }
+ }
+
+}
+
+static Eina_Bool email_check_account_list(int account_id)
+{
+ debug_log("");
+ Eina_List *it = NULL;
+ int *acc_id = NULL;
+
+ int checked_count = eina_list_count(g_account_list);
+ debug_log("checked_count = [%d]", checked_count);
+
+ EINA_LIST_FOREACH(g_account_list, it, acc_id) {
+ if (*acc_id == account_id) {
+ g_account_list = eina_list_remove(g_account_list, acc_id);
+ }
+ }
+ if (eina_list_count(g_account_list))
+ return EINA_FALSE;
+ else
+ return EINA_TRUE;
+}
+
+static void add_seed_mail_cb(void *data, Ecore_Thread *thd, void* msg_data)//(EmailMailboxUGD *mailbox_ugd, gint uid)
+{
+ debug_enter();
+
+ if( !data || !msg_data) {
+ debug_warning("PARAM NULL: data(%p), msg_data(%p)", data, msg_data);
+ return;
+ }
+
+ sync_req_t *req = (sync_req_t *)data;
+ EmailMailboxUGD *mailbox_ugd = req->mailbox_ugd;
+ list_data *ld = (list_data *) msg_data;
+
+ debug_log("SEED: thdid(%d) mailid(%d) info(%p)", req->thread_id, req->mail_id, ld);
+
+ _remove_get_more_progress_item(mailbox_ugd);
+
+ if (list_lock) {
+ debug_log("locked");
+ if (!evas_object_visible_get(mailbox_ugd->gl[mailbox_ugd->view_type]))
+ evas_object_show(mailbox_ugd->gl[mailbox_ugd->view_type]);
+
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_noc", "elm");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_list", "elm");
+
+ list_lock = false;
+ }
+
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL) {
+ mailbox_ugd->account_id = 0;
+ mailbox_ugd->mailbox_id = 0;
+ }
+
+ debug_log("req->view_type[%d], mailbox_ugd->view_type[%d], req->mode[%d], mailbox_ugd->mode[%d]", req->view_type, mailbox_ugd->view_type, req->mode, mailbox_ugd->mode);
+
+ if(req->view_type == mailbox_ugd->view_type && req->mode == mailbox_ugd->mode)
+ {
+ /* The group items might be inserted before to receive any normal mail item */
+ mailbox_ugd->list_data[mailbox_ugd->view_type] =
+ g_list_insert_sorted(mailbox_ugd->list_data[mailbox_ugd->view_type], ld, _compare_sort_rule_by_viewtype);
+ if(mailbox_ugd->view_type != EMAIL_VIEW_DATE)
+ email_maillist_insert_sorted(ld);
+
+ // debug_log("ADDED: vt(%d), thdid(%d), mailid(%d)", mailbox_ugd->view_type, ld->thread_id, ld->mail_id);
+ if (mailbox_ugd->view_type != EMAIL_VIEW_RECIPIENT) {
+ if (!group_title[ld->group_index][0])
+ group_title[ld->group_index][0] = g_strdup(ld->group_title);
+ if (!group_title[ld->group_index][1])
+ group_title[ld->group_index][1] = g_strdup(ld->group_date);
+ debug_log("group_title: %s", group_title[ld->group_index][0]);
+ }
+
+ _insert_mail_to_mailist(mailbox_ugd, ld);
+ }
+
+ debug_log("mode: %d, folder_id: %d, ld->recipient : %s", ld->mailbox_ugd->mode, ld->mailbox_id, ld->recipient);
+
+ if (mailbox_ugd->delete_all_button != NULL) {
+ elm_object_item_disabled_set(mailbox_ugd->edit_button, EINA_FALSE);
+ }
+ debug_leave();
+ FREE(req);
+}
+
+void _delete_mail_item_cb(void *data, Ecore_Thread *thd, void* msg_data)
+{
+ debug_enter();
+
+ delete_req_t *req = (delete_req_t *)data;
+ delete_ret_t *ret = (delete_ret_t *)msg_data;
+
+ if( !req || !ret) {
+ debug_warning("PARAM NULL: data(%p), msg_data(%p)", req, ret);
+ goto CLEANUP;
+ }
+
+ list_data *ld = ret->ld;
+ EmailMailboxUGD *mailbox_ugd = req->mailbox_ugd;
+ EmailMailboxViewType vt = mailbox_ugd->view_type;
+
+ if(!_find_mailinfo_by_mailid(ret->mail_id, mailbox_ugd->list_data[vt]))
+ goto CLEANUP;
+
+ if(req->current_view != vt) {
+ debug_warning("mismatched view_type: current_view(%d), mailbox_ugd_view(%d)", req->current_view, vt);
+ goto CLEANUP;
+ }
+ mailbox_delete_mail_item_from_list(mailbox_ugd, ld);
+
+ if(!g_list_length(mailbox_ugd->list_data[vt]))
+ {
+ if (!list_lock) {
+ if (evas_object_visible_get(mailbox_ugd->gl[mailbox_ugd->view_type]))
+ evas_object_hide(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ }
+
+ Evas_Object *no_content = elm_object_part_content_get(mailbox_ugd->search_layout, "noc");
+ elm_layout_theme_set(no_content, "layout", "nocontents", "text");
+ elm_object_part_text_set(no_content, "elm.text", dgettext("sys_string", "IDS_COM_BODY_NO_CONTENTS"));
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_list", "elm");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_noc", "elm");
+ //elm_object_item_disabled_set(mailbox_ugd->edit_button, EINA_TRUE);
+ if (mailbox_ugd->delete_all_button != NULL) {
+ elm_object_item_disabled_set(mailbox_ugd->delete_all_button, EINA_TRUE);
+ }
+ list_lock = true;
+ }
+
+CLEANUP:
+ FREE(ret);
+ debug_leave();
+}
+
+void _move_mail_item_cb(void *data, Ecore_Thread *thd, void* msg_data)
+{
+ debug_enter();
+
+ move_req_t *req = (move_req_t *)data;
+ delete_ret_t *ret = (delete_ret_t *)msg_data;
+
+ if( !req || !ret) {
+ debug_warning("PARAM NULL: data(%p), msg_data(%p)", req, ret);
+ goto CLEANUP;
+ }
+
+ list_data *ld = ret->ld;
+ EmailMailboxUGD *mailbox_ugd = req->mailbox_ugd;
+ EmailMailboxViewType vt = mailbox_ugd->view_type;
+
+ if(req->current_view != vt) {
+ debug_warning("mismatched view_type: current_view(%d), mailbox_ugd_view(%d)", req->current_view, vt);
+ goto CLEANUP;
+ }
+
+ if(!_find_mailinfo_by_mailid(ret->mail_id, mailbox_ugd->list_data[vt]))
+ goto CLEANUP;
+
+
+ if(mailbox_ugd->mode != EMAIL_MAILBOX_MODE_MAILBOX
+ && req->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX)
+ {
+ if(ld->item) elm_genlist_item_update(ld->item);
+ }
+ else
+ {
+ mailbox_delete_mail_item_from_list(mailbox_ugd, ld);
+ }
+
+ if(!g_list_length(mailbox_ugd->list_data[vt]))
+ {
+ if (!list_lock) {
+ if (evas_object_visible_get(mailbox_ugd->gl[mailbox_ugd->view_type]))
+ evas_object_hide(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ }
+
+ Evas_Object *no_content = elm_object_part_content_get(mailbox_ugd->search_layout, "noc");
+ elm_layout_theme_set(no_content, "layout", "nocontents", "text");
+ elm_object_part_text_set(no_content, "elm.text", dgettext("sys_string", "IDS_COM_BODY_NO_CONTENTS"));
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_list", "elm");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_noc", "elm");
+ //elm_object_item_disabled_set(mailbox_ugd->edit_button, EINA_TRUE);
+ if (mailbox_ugd->delete_all_button != NULL) {
+ elm_object_item_disabled_set(mailbox_ugd->delete_all_button, EINA_TRUE);
+ }
+ list_lock = true;
+ }
+
+CLEANUP:
+ FREE(ret);
+ debug_leave();
+}
+
+void _move_finish_cb(void* data, Ecore_Thread *thd)
+{
+ debug_enter();
+ if( !data ) {
+ debug_warning("PARAM NULL: data(%p)", data);
+ return;
+ }
+ move_req_t *req = (move_req_t *)data;
+ if(req->mailbox_ugd->view_type != EMAIL_VIEW_THREAD) {
+ _release_noti_Q_event(req->mailbox_ugd);
+ }
+
+ FREE(req->msg_buf);
+ FREE(req);
+ debug_leave();
+}
+
+void _dbus_receiver_setup(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ int ret = e_dbus_init();
+ debug_log("ret: %d", ret);
+
+ DBusError derror;
+
+ if (_g_mailbox_conn == NULL) {
+ debug_log("");
+ dbus_error_init(&derror);
+ _g_mailbox_conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+
+ if (e_dbus_request_name(_g_mailbox_conn, "User.Email.StorageChange", 0, NULL, NULL) == NULL) {
+ debug_critical("Failed to e_dbus_request_name()");
+ return;
+ }
+ if (_g_signal_handler_storage != NULL) {
+ debug_warning("_g_signal_handler_storage must be NULL at this point");
+ }
+ _g_signal_handler_storage = e_dbus_signal_handler_add(_g_mailbox_conn, NULL, "/User/Email/StorageChange", "User.Email.StorageChange", "email", _edbus_event_mailbox_receive, mailbox_ugd);
+ if (_g_signal_handler_storage == NULL) {
+ debug_critical("Failed to e_dbus_signal_handler_add()");
+ return;
+ }
+
+ if (e_dbus_request_name(_g_mailbox_conn, "User.Email.NetworkStatus", 0, NULL, NULL) == NULL) {
+ debug_critical("Failed to e_dbus_request_name()");
+ return;
+ }
+ if (_g_signal_handler_network != NULL) {
+ debug_warning("_g_signal_handler_storage must be NULL at this point");
+ }
+ _g_signal_handler_network = e_dbus_signal_handler_add(_g_mailbox_conn, NULL, "/User/Email/NetworkStatus", "User.Email.NetworkStatus", "email", _edbus_event_mailbox_receive, mailbox_ugd);
+ if (_g_signal_handler_network == NULL) {
+ debug_critical("Failed to e_dbus_signal_handler_add()");
+ return;
+ }
+ }
+}
+
+void _remove_dbus_receiver(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ if (_g_signal_handler_storage != NULL) {
+ e_dbus_signal_handler_del(_g_mailbox_conn, _g_signal_handler_storage);
+ _g_signal_handler_storage = NULL;
+ }
+
+ if (_g_signal_handler_network != NULL) {
+ e_dbus_signal_handler_del(_g_mailbox_conn, _g_signal_handler_network);
+ _g_signal_handler_network = NULL;
+ }
+
+ if (e_dbus_release_name(_g_mailbox_conn, "User.Email.StorageChange", NULL, NULL) == NULL) {
+ debug_critical("e_dbus_release_name to failed");
+ }
+
+ if (_g_mailbox_conn != NULL) {
+ _g_mailbox_conn = NULL;
+ }
+}
+
+
+static void _edbus_event_mailbox_receive(void *local_data, DBusMessage *message)
+{
+ debug_enter();
+ if (get_app_terminated()) {
+ debug_log("App is in terminating");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)local_data;
+ DBusError error;
+
+ if (mailbox_ugd == NULL) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ if (dbus_message_is_signal(message, "User.Email.StorageChange", "email")) {
+ debug_log("User.Email.StorageChange");
+
+ int subtype = 0;
+ int data1 = 0;
+ int data2 = 0;
+ char *data3 = NULL;
+ int data4 = 0;
+
+ dbus_error_init(&error);
+
+ if (dbus_message_get_args(message, &error, DBUS_TYPE_INT32, &subtype,
+ DBUS_TYPE_INT32, &data1, DBUS_TYPE_INT32, &data2,
+ DBUS_TYPE_STRING, &data3, DBUS_TYPE_INT32, &data4, DBUS_TYPE_INVALID)) {
+ debug_log("STORE_ENABLE: subtype: %d, data1: %d, data2: %d, data3: %s, data4: %d", subtype, data1, data2, data3, data4);
+
+ int account_id = 0;
+ int thread_id = 0;
+ int mailid = 0;
+ int mailbox_id = 0;
+ char* msg_buf = NULL;
+ int view_type = mailbox_ugd->view_type;
+
+ switch (subtype) {
+
+ /* This notification could be called in pause state when an account is added or deleted in setting app */
+ case NOTI_ACCOUNT_ADD:
+ case NOTI_ACCOUNT_DELETE:
+ debug_log("account added or deleted during pause status");
+ if (get_eas_validation_started()) {
+ reset_eas_validation_started();
+ break;
+ }
+ /* destroy all top ug and refresh all emails */
+ if (mailbox_ugd->ug_account) {
+ destroy_account_cb(mailbox_ugd->ug_account, mailbox_ugd);
+ ug_pushed = false;
+ }
+ if (mailbox_ugd->ug_composer) {
+ ug_destroy(mailbox_ugd->ug_composer);
+ mailbox_ugd->ug_composer = NULL;
+ ug_pushed = false;
+ }
+
+ if (!email_engine_get_default_account(&account_id)) {
+ debug_log("no account exists");
+ ug_destroy_me(mailbox_ugd->ug);
+ } else {
+ if (subtype == NOTI_ACCOUNT_ADD) {
+ EmailAccountInfo *account_info = NULL;
+ if (email_engine_get_account_info(data1, &account_info)) {
+ if (account_info && account_info->receiving_type == EMAIL_SERVER_TYPE_ACTIVE_SYNC) {
+ debug_log("EAS account added, cancel sync header");
+ break;
+ }
+ if (account_info)
+ email_engine_free_account_info(&account_info);
+ }
+ }
+ if (list_lock) {
+ debug_log("locked");
+ if (!evas_object_visible_get(mailbox_ugd->gl[view_type]))
+ evas_object_show(mailbox_ugd->gl[view_type]);
+
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_noc", "elm");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_list", "elm");
+
+ list_lock = false;
+ }
+
+ mailbox_ugd->account_id = 0;
+ mailbox_ugd->mode = EMAIL_MAILBOX_MODE_ALL;
+ mailbox_ugd->mailbox_type = EMAIL_MAILBOX_TYPE_NONE;
+ mailbox_ugd->mailbox_id = 0;
+ FREE(mailbox_ugd->user_email);
+ FREE(mailbox_ugd->folder_alias);
+
+ switch(view_type)
+ {
+ case EMAIL_VIEW_SEARCH:
+ elm_object_focus_set(mailbox_ugd->gl[view_type], EINA_TRUE);
+ evas_object_smart_callback_call(mailbox_ugd->searchbar_layout, "cancel,clicked", mailbox_ugd);
+ break;
+ case EMAIL_VIEW_EDIT:
+ //elm_toolbar_item_selected_set(mailbox_ugd->edit_cancel_button, EINA_TRUE);
+ _edit_back_cb(mailbox_ugd, NULL, NULL);
+ break;
+ default:
+ break;
+ }
+ elm_segment_control_item_selected_set(mailbox_ugd->date_tab, EINA_TRUE);
+ _update_navigationbar_title(mailbox_ugd);
+ mailbox_make_date_mail_list(mailbox_ugd);
+ _sync_all_folder(mailbox_ugd);
+
+ }
+ break;
+
+ case NOTI_MAIL_MOVE:
+ account_id = data1;
+ msg_buf = data3;
+
+ if(view_type == EMAIL_VIEW_RECIPIENT) {
+ _refresh_mailbox(mailbox_ugd);
+ }
+ else {
+ move_req_t *req = MEM_ALLOC(req, 1);
+ if(!req) return;
+ /* this dynamic var should be freed in NotiCB */
+ *req = (move_req_t) {account_id, view_type, 0, g_strdup(msg_buf), mailbox_ugd};
+ ecore_thread_feedback_run(_worker_get_move_mail_list_cb, _move_mail_item_cb,
+ _move_finish_cb, NULL, req, EINA_TRUE);
+
+ debug_log("Insert noti event to noti_Q to update previous view: data[%s]", data3);
+ // insert the notification to noti_Q to update previous view (EMAIL_VIEW_DATE || EMAIL_VIEW_RECIPIENT)
+ noti_event *noti = MEM_ALLOC(noti, 1);
+ *noti = (noti_event){NOTI_MAIL_MOVE, data1, data2, g_strdup(data3), data4};
+ mailbox_ugd->noti_Q = g_list_prepend(mailbox_ugd->noti_Q, (gpointer)noti);
+ }
+ break;
+
+ case NOTI_MAIL_DELETE:
+ account_id = data1;
+ msg_buf = data3;
+
+ if(view_type == EMAIL_VIEW_RECIPIENT) {
+ _refresh_mailbox(mailbox_ugd);
+ } else {
+ delete_req_t *req = MEM_ALLOC(req, 1);
+ if(!req) return;
+ /* this dynamic var should be freed in NotiCB */
+ *req = (delete_req_t) {account_id, view_type, 0, g_strdup(msg_buf), mailbox_ugd};
+ ecore_thread_feedback_run(_worker_get_delete_mail_list_cb, _delete_mail_item_cb,
+ _delete_finish_cb, NULL, req, EINA_TRUE);
+
+ debug_log("Insert noti event to noti_Q to update previous view: data[%s]", data3);
+ // insert the notification to noti_Q to update previous view (EMAIL_VIEW_RECIPIENT || EMAIL_VIEW_DATE)
+ noti_event *noti = MEM_ALLOC(noti, 1);
+ *noti = (noti_event){NOTI_MAIL_DELETE, data1, data2, g_strdup(data3), data4};
+ mailbox_ugd->noti_Q = g_list_prepend(mailbox_ugd->noti_Q, (gpointer)noti);
+
+ }
+ break;
+
+ case NOTI_MAIL_ADD: /* Seed mail was received */
+ account_id = data1;
+ thread_id = data4;
+ mailid = data2;
+ mailbox_id = atoi(data3);
+
+ email_mailbox_type_e mailbox_type = GET_MAILBOX_TYPE(mailbox_id);
+
+ if(mailid == thread_id)
+ {
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL && mailbox_ugd->mailbox_type == mailbox_type)
+ {
+ if ( view_type == EMAIL_VIEW_DATE || view_type == EMAIL_VIEW_UNREAD ||
+ view_type == EMAIL_VIEW_IMPORTANT || view_type == EMAIL_VIEW_MEETING_REQUEST ||
+ view_type == EMAIL_VIEW_PRIORITY || view_type == EMAIL_VIEW_ATTACHMENTS)
+ {
+ sync_req_t *req = MEM_ALLOC(req, 1);
+ if(!req) return;
+ /* this dynamic var should be freed in NotiCB */
+ *req = (sync_req_t) {account_id, thread_id, mailid, mailbox_id,
+ view_type, mailbox_ugd->mode, mailbox_ugd};
+ ecore_thread_feedback_run(_worker_get_mail_info_cb, add_seed_mail_cb,
+ NULL, NULL, req, EINA_TRUE);
+
+ }
+ else if (view_type == EMAIL_VIEW_RECIPIENT)
+ {
+ _refresh_mailbox(mailbox_ugd);
+ }
+ else {
+ /* Do nothing */
+ debug_log("Do nothing in view_type[%d]", view_type);
+ }
+ }
+ else
+ {
+ if (mailbox_ugd->mailbox_id == mailbox_id) {
+ if ((view_type == EMAIL_VIEW_DATE || view_type == EMAIL_VIEW_UNREAD ||
+ view_type == EMAIL_VIEW_IMPORTANT || view_type == EMAIL_VIEW_MEETING_REQUEST ||
+ view_type == EMAIL_VIEW_PRIORITY || view_type == EMAIL_VIEW_ATTACHMENTS) &&
+ mailbox_ugd->account_id == account_id &&
+ mailbox_ugd->mailbox_id == mailbox_id)
+ {
+ _mailbox_list_add_item(mailbox_ugd, data2);
+ }
+ else if (view_type == EMAIL_VIEW_RECIPIENT && mailbox_ugd->account_id == account_id
+ && mailbox_ugd->mailbox_id == mailbox_id)
+ {
+ _refresh_mailbox(mailbox_ugd);
+ }
+ else {
+ /* Do nothing */
+ debug_log("Do nothing in view_type[%d]", view_type);
+ }
+ }
+ }
+ }
+ break;
+
+ case NOTI_MAIL_UPDATE:
+ account_id = data1;
+ mailid = data2;
+ int type = data4;
+
+ if(view_type == EMAIL_VIEW_THREAD)
+ {
+ noti_event *noti = MEM_ALLOC(noti, 1);
+ *noti = (noti_event){NOTI_MAIL_UPDATE, data1, data2, g_strdup(data3), data4};
+ mailbox_ugd->noti_Q = g_list_prepend(mailbox_ugd->noti_Q, (gpointer)noti);
+ }
+
+ if(type == UPDATE_PARTIAL_BODY_DOWNLOAD) {
+ list_data *ld = _find_mailinfo_by_mailid(mailid, mailbox_ugd->list_data[view_type]);
+ if(ld) {
+ email_mail_list_item_t* mail_info = NULL;
+ mail_info = get_mail_info(mailid);
+ if(!mail_info) break;
+ ld->is_attachment = mail_info->has_attachment;
+ ld->preview_body = STRNDUP(mail_info->previewBodyText, MAX_PREVIEW_TEXT_LENGTH-1);
+ elm_genlist_item_update(ld->item);
+ FREE(mail_info);
+ }
+ } else if(type == UPDATE_EXTRA_FLAG) {
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX && mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX)
+ {
+ list_data *ld = _find_mailinfo_by_mailid(mailid, mailbox_ugd->list_data[view_type]);
+ if(ld) {
+ email_mail_list_item_t* mail_info = NULL;
+ mail_info = get_mail_info(mailid);
+ if(!mail_info) break;
+ ld->is_sending_now = mail_info->save_status;
+ elm_genlist_item_update(ld->item);
+ FREE(mail_info);
+ }
+ }
+ } else if(type == UPDATE_MAIL){
+ list_data *ld = _find_mailinfo_by_mailid(mailid, mailbox_ugd->list_data[view_type]);
+ if(ld) {
+ email_mail_list_item_t* mail_info = NULL;
+ mail_info = get_mail_info(mailid);
+ if(!mail_info) break;
+ ld->is_seen = mail_info->flags_seen_field;
+ ld->followup_flag = mail_info->flags_flagged_field;
+ ld->reply_flag = mail_info->flags_answered_field;
+ ld->forward_flag = mail_info->flags_forwarded_field;
+ elm_genlist_item_update(ld->item);
+ FREE(mail_info);
+ }
+ }
+ break;
+
+ default:
+ debug_log("Uninterested notification");
+ break;
+ }
+ }
+ else {
+ debug_critical("receive data error: %s", error.message);
+ dbus_error_free(&error);
+ }
+
+ }
+ else if (dbus_message_is_signal(message, "User.Email.NetworkStatus", "email"))
+ {
+ debug_log("User.Email.NetworkStatus");
+
+ int subtype = 0;
+ int data1 = 0;
+ char *data2 = NULL;
+ int data3 = 0;
+ int data4 = 0;
+
+ dbus_error_init(&error);
+
+ if (dbus_message_get_args(message, &error, DBUS_TYPE_INT32, &subtype,
+ DBUS_TYPE_INT32, &data1, DBUS_TYPE_STRING, &data2,
+ DBUS_TYPE_INT32, &data3, DBUS_TYPE_INT32, &data4, DBUS_TYPE_INVALID)) {
+ debug_log("subtype: %d, data1: %d, data2: %s, data3: %d, data4: %d", subtype, data1, data2, data3, data4);
+
+ switch (subtype) {
+ case NOTI_DOWNLOAD_START:
+ break;
+
+ case NOTI_DOWNLOAD_FINISH:
+ case NOTI_DOWNLOAD_FAIL:
+ if (email_check_account_list(data1)) {
+ _remove_get_more_progress_item(mailbox_ugd);
+
+ if (EMAIL_VIEW_THREAD != mailbox_ugd->view_type)
+ {
+ if (mailbox_ugd->sync_progress == elm_object_part_content_get(mailbox_ugd->navi_title_ly, "right_btn"))
+ {
+ elm_object_part_content_unset(mailbox_ugd->navi_title_ly, "right_btn");
+ evas_object_hide(mailbox_ugd->sync_progress);
+ elm_object_part_content_set(mailbox_ugd->navi_title_ly, "right_btn", mailbox_ugd->update_button);
+ evas_object_show(mailbox_ugd->update_button);
+ }
+ }
+ else
+ {
+ if (mailbox_ugd->sync_progress == elm_object_part_content_get(mailbox_ugd->navi_bar, "title_right_btn"))
+ {
+ elm_object_part_content_unset(mailbox_ugd->navi_bar, "title_right_btn");
+ evas_object_hide(mailbox_ugd->sync_progress);
+ elm_object_part_content_set(mailbox_ugd->navi_bar, "title_right_btn", mailbox_ugd->thread_update_button);
+ evas_object_show(mailbox_ugd->thread_update_button);
+ }
+ }
+ }
+ break;
+
+ case NOTI_VALIDATE_AND_CREATE_ACCOUNT_FINISH:
+ break;
+
+ default:
+ debug_log("Uninterested notification");
+ break;
+ }
+ }
+ else {
+ debug_critical("receive data error: %s", error.message);
+ dbus_error_free(&error);
+ }
+ }
+ else {
+ debug_warning("We receive dbus message, but we can't do anything");
+ }
+ debug_leave();
+}
+
+
--- /dev/null
+/*
+ * 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.
+ */
+
+#include <stdio.h>
+#include <appcore-efl.h>
+#include <glib.h>
+#include <glib/gprintf.h>
+#include <Ecore_X.h>
+
+#include "email-debug.h"
+#include "email-common-types.h"
+#include "email-mailbox.h"
+#include "email-mailbox-list.h"
+#include "email-mailbox-search.h"
+
+
+//static Elm_Genlist_Item_Class itc_popup;
+gboolean g_focus_lock = false;
+extern gboolean list_lock;
+
+static Evas_Object *genlist_for_search;
+static Elm_Genlist_Item_Class itc_search_view;
+
+
+typedef struct {
+ int index;
+ Evas_Object *radio;
+ EmailMailboxUGD *mailbox_ugd;
+} searchby_req_t;
+searchby_req_t searchby_req[SEARCHBY_MAX];
+
+typedef enum {
+ MAILBOX_SEARCH_LIST_TYPE_UNKNOWN = -1,
+ MAILBOX_SEARCH_LIST_TYPE_TITLE,
+ MAILBOX_SEARCH_LIST_TYPE_SENDER,
+ MAILBOX_SEARCH_LIST_TYPE_FROM_DATE,
+ MAILBOX_SEARCH_LIST_TYPE_TO_DATE,
+ MAILBOX_SEARCH_LIST_TYPE_MAX,
+} MailboxSearchListItemType;
+
+typedef struct {
+ int type;
+ MailboxAdvSearchViewInfo* search_info;
+} mailbox_search_list_item;
+
+static void _move_searchby_ctxpopup(Evas_Object *ctxpopup, Evas_Object *btn);
+static void _searchby_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
+static void _searchby_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info);
+static void _searchbar_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _bg_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _searchby_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _searchsymbol_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static int late_search(EmailMailboxUGD *mailbox_ugd);
+static void _searchbar_entry_key_down_cb(void *data, Evas * e, Evas_Object * obj, void *event_info);
+static void _searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *event_info);
+static void _searchbar_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
+static void _searchbar_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+
+static Eina_Bool _mailbox_create_search_criteria_view(int search_type, void *data);
+static void _mailbox_advanced_search_start_cb(void *data, Evas_Object *obj, void *event_info);
+static void _mailbox_advanced_search_cancel_cb(void *data, Evas_Object *obj, void *event_info);
+static void _mailbox_advanced_search_key_down_cb(void *data, Evas * e, Evas_Object * obj, void *event_info);
+static void _mailbox_advanced_edit_entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info);
+static void _mailbox_advanced_edit_entry_focused_cb(void *data, Evas_Object *obj, void *event_info);
+static void _mailbox_advanced_search_backup_input_cb(void *data, Evas_Object *obj, void *event_info);
+static void _mailbox_advanced_edit_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *_gl_advanced_searcn_view_content_get_cb(void *data, Evas_Object *obj, const char *part);
+static void _gl_advanced_search_sel_cb(void *data, Evas_Object *obj, void *event_info);
+static void _mailbox_create_list_view_for_advanced_search(void *data, int search_type);
+static void _mailbox_advanced_edit_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _mailbox_search_from_date_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void _mailbix_search_to_date_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void _mailbox_advanced_view_create_controlbar_button(Evas_Object *btn, char *label, char *style, void (*func) (void *data, Evas_Object *obj, void *event_info), void* data);
+void _mailbox_free_search_list_data(MailboxAdvSearchViewInfo *search_info);
+
+void mailbox_create_searchbar(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ Evas_Object *searchbar_layout = elm_layout_add(mailbox_ugd->navi_bar);
+ elm_layout_file_set(searchbar_layout, THEME_PATH, "search");
+ evas_object_size_hint_weight_set(searchbar_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(searchbar_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_object_part_content_set(mailbox_ugd->sub_layout[mailbox_ugd->view_type], "searchbar", searchbar_layout);
+
+ //searchbar category button
+ mailbox_ugd->searchby_button = elm_button_add(searchbar_layout);
+ Evas_Object *searchby_icon = elm_icon_add(mailbox_ugd->searchby_button);
+ elm_icon_file_set(searchby_icon, IMGDIR"/M02_email_icon_popup_all_press.png", NULL);
+ elm_icon_resizable_set(searchby_icon, 0, 0);
+ evas_object_image_smooth_scale_set(searchby_icon, 0);
+ elm_object_content_set(mailbox_ugd->searchby_button, searchby_icon);
+ evas_object_smart_callback_add(mailbox_ugd->searchby_button, "clicked", _searchby_clicked_cb, mailbox_ugd);
+ mailbox_ugd->search_type = EMAIL_SEARCH_ALL;
+
+ elm_object_part_content_set(searchbar_layout, "searchbar_area_category", mailbox_ugd->searchby_button);
+
+ //searchbar area
+ Evas_Object *searchbar_area = elm_layout_add(searchbar_layout);
+ elm_layout_theme_set(searchbar_area, "layout", "searchbar", "cancel_button");
+ elm_object_part_content_set(searchbar_layout, "searchbar_area_entry", searchbar_area);
+
+ Evas_Object *entry = elm_entry_add(searchbar_area);
+ elm_entry_scrollable_set(entry, EINA_TRUE);
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_DOWN, _searchbar_entry_key_down_cb, mailbox_ugd);
+ evas_object_smart_callback_add(entry, "focused", _searchbar_entry_focus_cb, mailbox_ugd);
+ evas_object_smart_callback_add(entry, "unfocused", _searchbar_entry_unfocus_cb, mailbox_ugd);
+ elm_object_part_content_set(searchbar_area, "elm.swallow.content", entry);
+ elm_object_part_text_set(searchbar_area, "elm.guidetext", dgettext("sys_string", "IDS_COM_BODY_SEARCH"));
+ elm_object_signal_callback_add(searchbar_area, "elm,eraser,clicked", "elm", _eraser_clicked_cb, entry);
+ elm_object_signal_callback_add(searchbar_area, "elm,bg,clicked", "elm", _bg_clicked_cb, entry);
+ elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+ evas_object_size_hint_weight_set(searchbar_area, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(searchbar_area, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ Evas_Object *cancel_btn = elm_button_add(searchbar_area);
+ elm_object_part_content_set(searchbar_area, "button_cancel", cancel_btn);
+ elm_object_style_set(cancel_btn, "searchbar/default");
+ elm_object_text_set(cancel_btn, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+
+ evas_object_smart_callback_add(cancel_btn, "clicked", _searchbar_cancel_clicked_cb, mailbox_ugd);
+ elm_object_signal_callback_add(searchbar_area, "elm,action,click", "", _searchsymbol_clicked_cb, mailbox_ugd);
+
+ mailbox_ugd->searchbar_en = entry;
+ mailbox_ugd->searchbar_layout = searchbar_layout;
+ mailbox_ugd->searchbar_area = searchbar_area;
+
+}
+
+static void _bg_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ elm_object_focus_set(data, EINA_TRUE);
+}
+
+
+static void _eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ elm_entry_entry_set(data, "");
+
+ Ecore_IMF_Context *imf_context = (Ecore_IMF_Context *)elm_entry_imf_context_get(data);
+
+ if (imf_context) {
+ ecore_imf_context_input_panel_show(imf_context);
+ }
+}
+
+static void _searchby_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+// Elm_Object_Item *item;
+// Evas_Object *genlist;
+/*
+ if (mailbox_ugd->view_type == EMAIL_VIEW_SEARCH) {
+ debug_log("focused from search view, return");
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(mailbox_ugd->searchbar_layout, "elm,state,eraser,show", "elm");
+ elm_object_signal_emit(mailbox_ugd->searchbar_layout, "elm,state,guidetext,hide", "elm");
+
+ return;
+ }
+*/
+
+ if(mailbox_ugd->searchby_ctx_popup) {
+ evas_object_del(mailbox_ugd->searchby_ctx_popup);
+ mailbox_ugd->searchby_ctx_popup = NULL;
+ }
+
+ mailbox_ugd->searchby_ctx_popup = elm_ctxpopup_add(mailbox_ugd->navi_bar);
+ evas_object_smart_callback_add(mailbox_ugd->searchby_ctx_popup, "dismissed", _searchby_dismissed_cb, mailbox_ugd);
+
+ Evas_Object* icon;
+ icon = elm_icon_add(mailbox_ugd->searchby_ctx_popup);
+ elm_icon_file_set(icon, IMGDIR "/M02_email_icon_popup_all.png", NULL);
+ elm_ctxpopup_item_append(mailbox_ugd->searchby_ctx_popup, dgettext("sys_string", "IDS_COM_BODY_ALL"), icon, _searchby_ctxpopup_cb, mailbox_ugd);
+
+ icon = elm_icon_add(mailbox_ugd->searchby_ctx_popup);
+ elm_icon_file_set(icon, IMGDIR "/M02_email_icon_popup_title.png", NULL);
+ elm_ctxpopup_item_append(mailbox_ugd->searchby_ctx_popup, dgettext("sys_string", "IDS_COM_BODY_DETAILS_TITLE"), icon, _searchby_ctxpopup_cb, mailbox_ugd);
+
+ icon = elm_icon_add(mailbox_ugd->searchby_ctx_popup);
+ elm_icon_file_set(icon, IMGDIR "/M02_email_icon_popup_sender.png", NULL);
+
+ if ((mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX)
+ || (mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX)
+ || (mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT)) {
+ elm_ctxpopup_item_append(mailbox_ugd->searchby_ctx_popup, _("IDS_EMAIL_OPT_RECIPIENT"), icon, _searchby_ctxpopup_cb, mailbox_ugd);
+ } else {
+ elm_ctxpopup_item_append(mailbox_ugd->searchby_ctx_popup, _("IDS_EMAIL_OPT_SENDER"), icon, _searchby_ctxpopup_cb, mailbox_ugd);
+ }
+
+ icon = elm_icon_add(mailbox_ugd->searchby_ctx_popup);
+ elm_icon_file_set(icon, IMGDIR "/M02_email_icon_popup_date.png", NULL);
+ elm_ctxpopup_item_append(mailbox_ugd->searchby_ctx_popup, _("IDS_EMAIL_OPT_DATE"), icon, _searchby_ctxpopup_cb, mailbox_ugd);
+
+ icon = elm_icon_add(mailbox_ugd->searchby_ctx_popup);
+ elm_icon_file_set(icon, IMGDIR "/M02_email_icon_popup_advanced.png", NULL);
+ elm_ctxpopup_item_append(mailbox_ugd->searchby_ctx_popup, _("IDS_EMAIL_OPT_ADVANCED"), icon, _searchby_ctxpopup_cb, mailbox_ugd);
+
+ _move_searchby_ctxpopup(mailbox_ugd->searchby_ctx_popup, obj);
+
+ elm_ctxpopup_direction_priority_set(mailbox_ugd->searchby_ctx_popup, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_RIGHT, ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_UP);
+
+ evas_object_show(mailbox_ugd->searchby_ctx_popup);
+}
+
+static void _move_searchby_ctxpopup(Evas_Object *ctxpopup, Evas_Object *btn)
+{
+ debug_log("");
+
+ 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 _searchby_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ evas_object_del(mailbox_ugd->searchby_ctx_popup);
+ mailbox_ugd->searchby_ctx_popup = NULL;
+}
+
+static void _searchby_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ int search_type;
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ const char *label = elm_object_item_text_get((Elm_Object_Item *) event_info);
+ if(!label)
+ goto CLEANUP;
+ debug_log("text(%s) is clicked\n", label);
+
+ if(!g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_ALL")))
+ search_type = EMAIL_SEARCH_ALL;
+ else if(!g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_DETAILS_TITLE")))
+ search_type = EMAIL_SEARCH_SUBJECT;
+ else if(!g_strcmp0(label, _("IDS_EMAIL_OPT_SENDER")))
+ search_type = EMAIL_SEARCH_FROM;
+ else if(!g_strcmp0(label, _("IDS_EMAIL_OPT_RECIPIENT")))
+ search_type = EMAIL_SEARCH_TO;
+ else if(!g_strcmp0(label, _("IDS_EMAIL_OPT_DATE")))
+ search_type = EMAIL_SEARCH_DATE;
+ else if(!g_strcmp0(label, _("IDS_EMAIL_OPT_ADVANCED")))
+ search_type = EMAIL_SEARCH_ADVANCED;
+ else
+ goto CLEANUP;
+
+ debug_log("the previous type: %d, the new type: %d", mailbox_ugd->search_type, search_type);
+
+ if (mailbox_ugd->search_type == search_type)
+ goto CLEANUP;
+
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+
+ //change searchby icon
+ Evas_Object *searchby_icon = elm_icon_add(mailbox_ugd->searchby_button);
+ Evas_Object *prev_searchby_btn = elm_object_content_get(mailbox_ugd->searchby_button);
+ evas_object_del(prev_searchby_btn);
+ mailbox_ugd->search_type = search_type;
+
+ if (search_type == EMAIL_SEARCH_ALL) // All
+ {
+ elm_icon_file_set(searchby_icon, IMGDIR"/M02_email_icon_popup_all_press.png", NULL);
+ }
+ else if (search_type == EMAIL_SEARCH_SUBJECT) // SUBJECT
+ {
+ elm_icon_file_set(searchby_icon, IMGDIR"/M02_email_icon_popup_title_press.png", NULL);
+ }
+ else if (search_type == EMAIL_SEARCH_FROM || search_type == EMAIL_SEARCH_TO) // FROM or Recipient(TO)
+ {
+ elm_icon_file_set(searchby_icon, IMGDIR"/M02_email_icon_popup_sender_press.png", NULL);
+ }
+ else if (search_type == EMAIL_SEARCH_DATE) // Date
+ {
+ elm_icon_file_set(searchby_icon, IMGDIR"/M02_email_icon_popup_date_press.png", NULL);
+ }
+ else if (search_type == EMAIL_SEARCH_ADVANCED) // Advanced
+ {
+ elm_icon_file_set(searchby_icon, IMGDIR"/M02_email_icon_popup_advanced_press.png", NULL);
+ }
+ else
+ goto CLEANUP;
+
+ elm_icon_resizable_set(searchby_icon, 0, 0);
+ evas_object_image_smooth_scale_set(searchby_icon, 0);
+ elm_object_content_set(mailbox_ugd->searchby_button, searchby_icon);
+
+ if (search_type == EMAIL_SEARCH_ADVANCED || search_type == EMAIL_SEARCH_DATE)
+ _mailbox_create_search_criteria_view(search_type, data);
+ else if (mailbox_ugd->view_type == EMAIL_VIEW_SEARCH)
+ late_search(mailbox_ugd);
+
+
+CLEANUP:
+
+ evas_object_del(mailbox_ugd->searchby_ctx_popup);
+ mailbox_ugd->searchby_ctx_popup = NULL;
+ return;
+}
+
+static void _searchbar_entry_key_down_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *) event_info;
+
+ debug_log("ev->key : %s", ev->key);
+
+ if (STR_CMP(ev->key, "Return")) {
+ debug_log("Return key is pressed. hide the entry ");
+ ecore_imf_context_input_panel_hide((Ecore_IMF_Context *)elm_entry_imf_context_get(mailbox_ugd->searchbar_en));
+ }
+}
+
+static void _searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ if (!mailbox_ugd->b_advanced_search_view && (mailbox_ugd->search_type == EMAIL_SEARCH_ADVANCED || mailbox_ugd->search_type == EMAIL_SEARCH_DATE)) {
+ elm_entry_entry_set(mailbox_ugd->searchbar_en, "");
+ _mailbox_create_search_criteria_view(mailbox_ugd->search_type, data);
+ return;
+ }
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_SEARCH) {
+ debug_log("focused from search view, return");
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "elm,state,eraser,show", "elm");
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "elm,state,guidetext,hide", "elm");
+
+ return;
+ }
+
+ elm_genlist_realized_items_update(mailbox_ugd->gl[mailbox_ugd->view_type]);
+
+ //elm_object_item_part_content_unset(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar");
+
+ //_delete_controlbar(mailbox_ugd);
+ elm_object_item_signal_emit(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "elm,state,controlbar,close", "");
+
+ debug_log("view_type = %d", mailbox_ugd->view_type);
+ elm_object_item_text_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], _("IDS_EMAIL_HEADER_SEARCH"));
+
+ mailbox_ugd->previous_view = mailbox_ugd->view_type;
+ mailbox_ugd->view_type = EMAIL_VIEW_SEARCH;
+
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+ mailbox_ugd->gl[mailbox_ugd->view_type] = mailbox_ugd->gl[mailbox_ugd->previous_view];
+
+ elm_object_disabled_set(mailbox_ugd->folder_button, EINA_TRUE);
+
+ g_focus_lock = true;
+ evas_object_smart_callback_add(obj, "changed", _searchbar_entry_changed_cb, mailbox_ugd);
+ evas_object_smart_callback_add(obj, "preedit,changed", _searchbar_entry_changed_cb, mailbox_ugd);
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "elm,state,eraser,show", "elm");
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "elm,state,guidetext,hide", "elm");
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "cancel,in", "");
+}
+
+static void _searchbar_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "elm,state,guidetext,show", "elm");
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "elm,state,eraser,hide", "elm");
+}
+
+static void _searchbar_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ if (elm_object_focus_get(mailbox_ugd->searchbar_area)) {
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "elm,state,eraser,hide", "elm");
+ else
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "elm,state,eraser,show", "elm");
+ }
+ late_search(mailbox_ugd);
+// evas_render(evas_object_evas_get(obj));
+}
+
+static void _searchbar_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ evas_object_smart_callback_del(mailbox_ugd->searchbar_en, "changed", _searchbar_entry_changed_cb);
+ evas_object_smart_callback_del(mailbox_ugd->searchbar_en, "preedit,changed", _searchbar_entry_changed_cb);
+
+ elm_object_focus_set(mailbox_ugd->main_back_btn, EINA_TRUE);
+ mailbox_finish_search_mode(mailbox_ugd);
+}
+
+void mailbox_finish_search_mode(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ debug_log("[Search Bar] Canceled Callback Called");
+
+ if (!g_focus_lock)
+ return;
+ else
+ g_focus_lock = false;
+
+ evas_object_smart_callback_del(mailbox_ugd->searchbar_en, "changed", _searchbar_entry_changed_cb);
+ elm_entry_entry_set(mailbox_ugd->searchbar_en, "");
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "elm,state,guidetext,show", "elm");
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "cancel,out", "");
+ elm_object_focus_set(mailbox_ugd->searchbar_area, EINA_FALSE);
+ elm_object_focus_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_TRUE);
+
+ elm_object_disabled_set(mailbox_ugd->folder_button, EINA_FALSE);
+
+ mailbox_ugd->view_type = mailbox_ugd->previous_view;
+ if(mailbox_ugd->view_type == EMAIL_VIEW_THREAD)
+ mailbox_ugd->previous_view = EMAIL_VIEW_DATE;
+ list_lock = false;
+
+ _update_navigationbar_title(mailbox_ugd);
+ _refresh_mailbox(mailbox_ugd);
+}
+
+
+static void _searchsymbol_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ debug_log("");
+ debug_log("[Search Bar] SearchSymbol Callback Called");
+}
+
+static int late_search(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ EmailSearchData search_data = {0};
+
+ if (!mailbox_ugd)
+ return 0;
+
+ if (mailbox_ugd->search_type == EMAIL_SEARCH_ALL) {
+ search_data.subject = (char *)elm_entry_markup_to_utf8(elm_object_text_get(mailbox_ugd->searchbar_en));
+ if((mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX)
+ || (mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX)
+ || (mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT)) {
+ search_data.recipient= (char *)elm_entry_markup_to_utf8(elm_object_text_get(mailbox_ugd->searchbar_en));
+ } else {
+ search_data.sender= (char *)elm_entry_markup_to_utf8(elm_object_text_get(mailbox_ugd->searchbar_en));
+ }
+ debug_log("[EMAIL_SEARCH_ALL] %s", search_data.subject);
+ } else if (mailbox_ugd->search_type == EMAIL_SEARCH_SUBJECT) {
+ search_data.subject = (char *)elm_entry_markup_to_utf8(elm_object_text_get(mailbox_ugd->searchbar_en));
+ debug_log("[EMAIL_SEARCH_SUBJECT] %s", search_data.subject);
+ } else if (mailbox_ugd->search_type == EMAIL_SEARCH_FROM) {
+ search_data.sender = (char *)elm_entry_markup_to_utf8(elm_object_text_get(mailbox_ugd->searchbar_en));
+ debug_log("[EMAIL_SEARCH_FROM] %s", search_data.sender);
+ } else if (mailbox_ugd->search_type == EMAIL_SEARCH_TO) {
+ search_data.recipient = (char *)elm_entry_markup_to_utf8(elm_object_text_get(mailbox_ugd->searchbar_en));
+ debug_log("[EMAIL_SEARCH_RECIPIENT] %s", search_data.recipient);
+ }
+ else if (mailbox_ugd->search_type == EMAIL_SEARCH_DATE) {
+ if(mailbox_ugd->adv_search_info) {
+ search_data.from_time = mailbox_ugd->adv_search_info->from_date ? mailbox_ugd->adv_search_info->from_date : 0;
+ search_data.to_time = mailbox_ugd->adv_search_info->to_date ? mailbox_ugd->adv_search_info->to_date : 0;
+ debug_log("[EMAIL_SEARCH_DATE] from_time : %d, to_time : %d", search_data.from_time, search_data.to_time);
+ }
+ } else if (mailbox_ugd->search_type == EMAIL_SEARCH_ADVANCED) {
+ if(mailbox_ugd->adv_search_info) {
+ if(mailbox_ugd->adv_search_info->str_title)
+ search_data.subject = g_strdup(mailbox_ugd->adv_search_info->str_title);
+
+ if(mailbox_ugd->adv_search_info->str_sender_address) {
+ if((mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX)
+ || (mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX)
+ || (mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT))
+ search_data.recipient = g_strdup(mailbox_ugd->adv_search_info->str_sender_address);
+ else
+ search_data.sender = g_strdup(mailbox_ugd->adv_search_info->str_sender_address);
+ }
+
+ search_data.from_time = mailbox_ugd->adv_search_info->from_date ? mailbox_ugd->adv_search_info->from_date : 0;
+ search_data.to_time = mailbox_ugd->adv_search_info->to_date ? mailbox_ugd->adv_search_info->to_date : 0;
+ debug_log("[EMAIL_SEARCH_ADVANCED] subject : %s, sender : %s, recipient : %s", search_data.subject, search_data.sender, search_data.recipient);
+ debug_log("[EMAIL_SEARCH_ADVANCED] from_time : %d, to_time : %d", search_data.from_time, search_data.to_time);
+ }
+ }
+
+ _mailbox_list_clear(mailbox_ugd);
+ _make_mail_list(mailbox_ugd, &search_data);
+
+ FREE(search_data.subject);
+ FREE(search_data.sender);
+ FREE(search_data.recipient);
+
+ return 0;
+}
+
+static Eina_Bool _mailbox_create_search_criteria_view(int search_type, void *data)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ Elm_Object_Item* navi_item;
+ Evas_Object *btn_ok;
+ Evas_Object *btn_cancel;
+ Evas_Object *btn_back;
+ MailboxAdvSearchViewInfo *adv_search_info = NULL;
+
+ if (!mailbox_ugd || (search_type != EMAIL_SEARCH_ADVANCED && search_type != EMAIL_SEARCH_DATE)) {
+ debug_log("_create_search_criteria_view failed search type is invalid(or mailbox_ugd : null)\n");
+ return 0;
+ }
+
+ if(mailbox_ugd->adv_search_info)
+ _mailbox_free_search_list_data(mailbox_ugd->adv_search_info);
+
+ adv_search_info = (MailboxAdvSearchViewInfo *) calloc(1, sizeof(MailboxAdvSearchViewInfo));
+
+ if (!adv_search_info) {
+ debug_log("adv_search_info: memory alloc failed!\n");
+ return 0;
+ }
+
+ adv_search_info->mailbox_ugd = (EmailMailboxUGD *)data;
+ mailbox_ugd->adv_search_info = adv_search_info;
+ mailbox_ugd->b_advanced_search_view = true;
+
+ genlist_for_search = elm_genlist_add(mailbox_ugd->navi_bar);
+
+ _mailbox_create_list_view_for_advanced_search(data, search_type);
+
+ /* back button */
+ btn_back = elm_button_add(mailbox_ugd->navi_bar);
+ evas_object_smart_callback_add(btn_back, "clicked", _mailbox_advanced_search_cancel_cb, data);
+ elm_object_style_set(btn_back, "naviframe/back_btn/default");
+
+ //should be replaced with new string
+ if ( search_type == EMAIL_SEARCH_ADVANCED ) {
+ navi_item = elm_naviframe_item_push(mailbox_ugd->navi_bar, N_("Advanced search"), btn_back, NULL, genlist_for_search, NULL);
+ } else if ( search_type == EMAIL_SEARCH_DATE ) {
+ navi_item = elm_naviframe_item_push(mailbox_ugd->navi_bar, N_("Date range"), btn_back, NULL, genlist_for_search, NULL);
+ }
+
+ btn_ok = elm_button_add(mailbox_ugd->navi_bar);
+ _mailbox_advanced_view_create_controlbar_button(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"), "naviframe/title/default", _mailbox_advanced_search_start_cb, data);
+ elm_object_item_part_content_set(navi_item, "title_left_btn", btn_ok);
+
+ btn_cancel = elm_button_add(mailbox_ugd->navi_bar);
+ _mailbox_advanced_view_create_controlbar_button(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"), "naviframe/title/default", _mailbox_advanced_search_cancel_cb, data);
+ elm_object_item_part_content_set(navi_item, "title_right_btn", btn_cancel);
+
+ elm_object_item_signal_emit(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "elm,state,controlbar,close", "");
+
+ return 0;
+}
+void _mailbox_free_search_list_data(MailboxAdvSearchViewInfo *search_info)
+{
+ debug_log("");
+ if (search_info == NULL) {
+ return;
+ }
+
+ FREE(search_info->str_title);
+ FREE(search_info->str_sender_address);
+ FREE(search_info->str_from_date);
+ FREE(search_info->str_to_date);
+ FREE(search_info->str_search_criteria);
+
+ FREE(search_info);
+}
+static void _mailbox_advanced_view_create_controlbar_button(Evas_Object *btn, char *label, char *style, void (*func) (void *data, Evas_Object *obj, void *event_info), void* data)
+{
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ elm_object_style_set(btn, style);
+ evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.5);
+ elm_object_text_set(btn, label);
+ evas_object_smart_callback_add(btn, "clicked", func, mailbox_ugd);
+ evas_object_show(btn);
+}
+static void _mailbox_advanced_search_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ elm_naviframe_item_pop(mailbox_ugd->navi_bar);
+ mailbox_ugd->b_advanced_search_view = false;
+
+ if(g_focus_lock) {
+ evas_object_smart_callback_del(mailbox_ugd->searchbar_en, "changed", _searchbar_entry_changed_cb);
+ evas_object_smart_callback_del(mailbox_ugd->searchbar_en, "preedit,changed", _searchbar_entry_changed_cb);
+
+ elm_object_focus_set(mailbox_ugd->main_back_btn, EINA_TRUE);
+ mailbox_finish_search_mode(mailbox_ugd);
+ }else {
+ _update_navigationbar_title(mailbox_ugd);
+ }
+
+}
+static void _mailbox_advanced_search_start_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ MailboxAdvSearchViewInfo* search_info = NULL;
+
+ struct tm tm_from;
+ struct tm tm_to;
+
+ elm_naviframe_item_pop(mailbox_ugd->navi_bar);
+
+ if (mailbox_ugd) {
+ search_info = mailbox_ugd->adv_search_info;
+
+ if (search_info)
+ {
+ localtime_r(&search_info->from_date, &tm_from);
+ localtime_r(&search_info->to_date, &tm_to);
+
+ search_info->str_search_criteria = g_strdup_printf("%s%s%s%s%d.%d.%d~%d.%d.%d",
+ search_info->str_title ? search_info->str_title : "", search_info->str_title ? ";" : "",
+ search_info->str_sender_address ? search_info->str_sender_address : "", search_info->str_sender_address ? ";" : "",
+ tm_from.tm_year + 1900, tm_from.tm_mon + 1, tm_from.tm_mday,
+ tm_to.tm_year + 1900, tm_to.tm_mon + 1, tm_to.tm_mday);
+
+ elm_entry_entry_set(mailbox_ugd->searchbar_en, search_info->str_search_criteria);
+ debug_log("search_info->str_search_criteria[%s]",search_info->str_search_criteria);
+ }
+
+ mailbox_ugd->b_advanced_search_view = false;
+
+ elm_object_item_signal_emit(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "elm,state,controlbar,close", "");
+
+ elm_object_item_text_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], _("IDS_EMAIL_HEADER_SEARCH"));
+
+ if(!g_focus_lock) {
+ mailbox_ugd->previous_view = mailbox_ugd->view_type;
+ mailbox_ugd->view_type = EMAIL_VIEW_SEARCH;
+ g_focus_lock = true;
+ mailbox_ugd->gl[mailbox_ugd->view_type] = mailbox_ugd->gl[mailbox_ugd->previous_view];
+ }
+
+
+ debug_log("view_type = %d mailbox_ugd->previous_view = %d", mailbox_ugd->view_type, mailbox_ugd->previous_view);
+
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "elm,state,guidetext,hide", "elm");
+ elm_object_signal_emit(mailbox_ugd->searchbar_area, "cancel,in", "");
+ late_search(mailbox_ugd);
+ }
+}
+static void _mailbox_create_list_view_for_advanced_search(void *data, int search_type)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ int i = -1;
+ Elm_Object_Item *item = NULL;
+ mailbox_search_list_item *item_data = NULL;
+
+ elm_object_style_set(genlist_for_search, "dialogue");
+
+ itc_search_view.item_style = "dialogue/1icon";
+ itc_search_view.func.text_get = NULL;
+ itc_search_view.func.content_get = _gl_advanced_searcn_view_content_get_cb;
+ itc_search_view.func.state_get = NULL;
+ itc_search_view.func.del = NULL;
+
+ if (search_type == EMAIL_SEARCH_ADVANCED) {
+ item_data = (mailbox_search_list_item *)calloc(4, sizeof(mailbox_search_list_item));
+
+ /* Title */
+ i = 2;
+ item_data[i].type = MAILBOX_SEARCH_LIST_TYPE_TITLE;
+ item_data[i].search_info = mailbox_ugd->adv_search_info;
+ item = elm_genlist_item_append(genlist_for_search, &itc_search_view, &item_data[i], NULL,
+ ELM_GENLIST_ITEM_NONE, _gl_advanced_search_sel_cb, &item_data[i]);
+ /* Sender */
+ i = 3;
+ item_data[i].type = MAILBOX_SEARCH_LIST_TYPE_SENDER;
+ item_data[i].search_info = mailbox_ugd->adv_search_info;
+ item = elm_genlist_item_append(genlist_for_search, &itc_search_view, &item_data[i], NULL,
+ ELM_GENLIST_ITEM_NONE, _gl_advanced_search_sel_cb, &item_data[i]);
+ } else if (search_type == EMAIL_SEARCH_DATE) {
+ item_data = (mailbox_search_list_item *)calloc(2, sizeof(mailbox_search_list_item));
+ }
+
+ /* Date From*/
+ i = 0;
+ item_data[i].type = MAILBOX_SEARCH_LIST_TYPE_FROM_DATE;
+ item_data[i].search_info = mailbox_ugd->adv_search_info;
+ item = elm_genlist_item_append(genlist_for_search, &itc_search_view, &item_data[i], NULL,
+ ELM_GENLIST_ITEM_NONE, _gl_advanced_search_sel_cb, &item_data[i]);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE);
+
+ /* Date To*/
+ i = 1;
+ item_data[i].type = MAILBOX_SEARCH_LIST_TYPE_TO_DATE;
+ item_data[i].search_info = mailbox_ugd->adv_search_info;
+ item = elm_genlist_item_append(genlist_for_search, &itc_search_view, &item_data[i], NULL,
+ ELM_GENLIST_ITEM_NONE, _gl_advanced_search_sel_cb, &item_data[i]);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE);
+
+}
+static void _gl_advanced_search_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ const Elm_Object_Item *it = (Elm_Object_Item *)event_info;
+ const void *item_data = elm_object_item_data_get(it);
+ mailbox_search_list_item *list_item_data = (mailbox_search_list_item *)item_data;
+ MailboxAdvSearchViewInfo *adv_search_info = (MailboxAdvSearchViewInfo *)list_item_data->search_info;
+
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ debug_log("_gl_search_sel_cb type[%d]", list_item_data->type);
+ switch (list_item_data->type) {
+ case MAILBOX_SEARCH_LIST_TYPE_FROM_DATE:
+ adv_search_info->clicked_object = adv_search_info->entry_date_from;
+ break;
+ case MAILBOX_SEARCH_LIST_TYPE_TO_DATE:
+ adv_search_info->clicked_object = adv_search_info->entry_date_to;
+ break;
+ case MAILBOX_SEARCH_LIST_TYPE_TITLE:
+ adv_search_info->clicked_object = adv_search_info->entry_title;
+ break;
+ case MAILBOX_SEARCH_LIST_TYPE_SENDER:
+ adv_search_info->clicked_object = adv_search_info->entry_sender_address;
+ break;
+ default:
+ adv_search_info->clicked_object = NULL;
+ debug_warning("No corresponding item");
+ break;
+ }
+}
+static Evas_Object *_gl_advanced_searcn_view_content_get_cb(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ mailbox_search_list_item *item_data = (mailbox_search_list_item *)data;
+ MailboxAdvSearchViewInfo *search_info = (MailboxAdvSearchViewInfo *) item_data->search_info;
+ EmailMailboxUGD *mailbox_ugd = NULL;
+
+ if(!search_info)
+ return NULL;
+
+ mailbox_ugd = search_info->mailbox_ugd;
+
+ time_t t;
+ struct tm time1;
+
+ if (!g_strcmp0(part, "elm.icon")) {
+ switch (item_data->type) {
+ case MAILBOX_SEARCH_LIST_TYPE_TITLE:
+ search_info->search_title = elm_layout_add(genlist_for_search);
+ elm_layout_theme_set(search_info->search_title, "layout", "editfield", "title");
+ search_info->entry_title = elm_entry_add(genlist_for_search);
+ elm_entry_scrollable_set(search_info->entry_title, EINA_TRUE);
+ elm_entry_single_line_set(search_info->entry_title, EINA_TRUE);
+ elm_entry_cnp_mode_set(search_info->entry_title, ELM_CNP_MODE_PLAINTEXT);
+ elm_entry_input_panel_layout_set(search_info->entry_title, ELM_INPUT_PANEL_LAYOUT_EMAIL);
+ elm_entry_editable_set(search_info->entry_title, TRUE);
+ evas_object_event_callback_add(search_info->entry_title, EVAS_CALLBACK_KEY_DOWN, _mailbox_advanced_search_key_down_cb, data);
+ evas_object_smart_callback_add(search_info->entry_title, "changed", _mailbox_advanced_search_backup_input_cb, data);
+ evas_object_smart_callback_add(search_info->entry_title, "changed", _mailbox_advanced_edit_entry_changed_cb, search_info->search_title);
+ evas_object_smart_callback_add(search_info->entry_title, "focused", _mailbox_advanced_edit_entry_focused_cb, search_info->search_title);
+ evas_object_smart_callback_add(search_info->entry_title, "unfocused", _mailbox_advanced_edit_entry_unfocused_cb, search_info->search_title);
+ evas_object_show(search_info->entry_title);
+
+ elm_object_part_content_set(search_info->search_title, "elm.swallow.content", search_info->entry_title);
+ elm_object_part_text_set(search_info->search_title, "elm.text", _("IDS_EMAIL_OPT_TITLE"));
+ elm_object_signal_callback_add(search_info->search_title, "elm,eraser,clicked", "elm", _mailbox_advanced_edit_eraser_clicked_cb, search_info->entry_title);
+
+ evas_object_size_hint_weight_set(search_info->search_title, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(search_info->search_title);
+
+ if (search_info->str_title)
+ elm_entry_entry_set(search_info->entry_title, search_info->str_title);
+
+ return search_info->search_title;
+
+ case MAILBOX_SEARCH_LIST_TYPE_SENDER:
+ search_info->search_sender_address = elm_layout_add(genlist_for_search);
+ elm_layout_theme_set(search_info->search_sender_address, "layout", "editfield", "title");
+ search_info->entry_sender_address = elm_entry_add(genlist_for_search);
+ elm_entry_scrollable_set(search_info->entry_sender_address, EINA_TRUE);
+ elm_entry_single_line_set(search_info->entry_sender_address, EINA_TRUE);
+ elm_entry_cnp_mode_set(search_info->entry_sender_address, ELM_CNP_MODE_PLAINTEXT);
+ elm_entry_input_panel_layout_set(search_info->entry_sender_address, ELM_INPUT_PANEL_LAYOUT_EMAIL);
+ elm_entry_editable_set(search_info->entry_sender_address, TRUE);
+ evas_object_event_callback_add(search_info->entry_sender_address, EVAS_CALLBACK_KEY_DOWN, _mailbox_advanced_search_key_down_cb, data);
+ evas_object_smart_callback_add(search_info->entry_sender_address, "changed", _mailbox_advanced_search_backup_input_cb, data);
+ evas_object_smart_callback_add(search_info->entry_sender_address, "changed", _mailbox_advanced_edit_entry_changed_cb, search_info->search_sender_address);
+ evas_object_smart_callback_add(search_info->entry_sender_address, "focused", _mailbox_advanced_edit_entry_focused_cb, search_info->search_sender_address);
+ evas_object_smart_callback_add(search_info->entry_sender_address, "unfocused", _mailbox_advanced_edit_entry_unfocused_cb, search_info->search_sender_address);
+ evas_object_show(search_info->entry_sender_address);
+
+ elm_object_part_content_set(search_info->search_sender_address, "elm.swallow.content", search_info->entry_sender_address);
+
+ if ((mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX)
+ || (mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX)
+ || (mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_DRAFT)) {
+ elm_object_part_text_set(search_info->search_sender_address, "elm.text", _("IDS_EMAIL_OPT_RECIPIENT"));
+ } else {
+ elm_object_part_text_set(search_info->search_sender_address, "elm.text", _("IDS_EMAIL_OPT_SENDER"));
+ }
+
+ elm_object_signal_callback_add(search_info->search_sender_address, "elm,eraser,clicked", "elm", _mailbox_advanced_edit_eraser_clicked_cb, search_info->entry_sender_address);
+
+ evas_object_size_hint_weight_set(search_info->search_sender_address, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(search_info->search_sender_address);
+
+ if (search_info->str_sender_address)
+ elm_entry_entry_set(search_info->entry_sender_address, search_info->str_sender_address);
+
+ return search_info->search_sender_address;
+
+ case MAILBOX_SEARCH_LIST_TYPE_FROM_DATE:
+ search_info->search_date_from = elm_layout_add(genlist_for_search);
+ elm_layout_file_set(search_info->search_date_from, THEME_PATH, "dialoguegroup/email_datetime");
+ evas_object_size_hint_weight_set(search_info->search_date_from, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ search_info->entry_date_from = elm_datetime_add(search_info->search_date_from);
+
+ elm_datetime_field_visible_set(search_info->entry_date_from, ELM_DATETIME_HOUR, EINA_FALSE);
+ elm_datetime_field_visible_set(search_info->entry_date_from, ELM_DATETIME_MINUTE, EINA_FALSE);
+ elm_datetime_field_visible_set(search_info->entry_date_from, ELM_DATETIME_AMPM, EINA_FALSE);
+
+ t = time(NULL);
+ t = t - (60*60*24*7);
+ localtime_r(&t, &time1);
+
+ elm_datetime_value_set(search_info->entry_date_from, &time1);
+ search_info->from_date = t;
+ //should be replaced with new string
+ elm_object_part_content_set(search_info->search_date_from, "elm.icon", search_info->entry_date_from);
+ elm_object_part_text_set(search_info->search_date_from, "elm.text", N_("From"));
+ evas_object_smart_callback_add(search_info->entry_date_from, "changed", _mailbox_search_from_date_changed_cb, data);
+
+ evas_object_show(search_info->entry_date_from);
+
+ return search_info->search_date_from;
+
+ case MAILBOX_SEARCH_LIST_TYPE_TO_DATE:
+ search_info->search_date_to = elm_layout_add(genlist_for_search);
+ elm_layout_file_set(search_info->search_date_to, THEME_PATH, "dialoguegroup/email_datetime");
+ evas_object_size_hint_weight_set(search_info->search_date_to, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ search_info->entry_date_to = elm_datetime_add(search_info->search_date_to);
+
+ elm_datetime_field_visible_set(search_info->entry_date_to, ELM_DATETIME_HOUR, EINA_FALSE);
+ elm_datetime_field_visible_set(search_info->entry_date_to, ELM_DATETIME_MINUTE, EINA_FALSE);
+ elm_datetime_field_visible_set(search_info->entry_date_to, ELM_DATETIME_AMPM, EINA_FALSE);
+
+ t = time(NULL);
+ localtime_r(&t, &time1);
+
+ elm_datetime_value_set(search_info->entry_date_to, &time1);
+ search_info->to_date = t;
+ //should be replaced with new string
+ elm_object_part_content_set(search_info->search_date_to, "elm.icon", search_info->entry_date_to);
+ elm_object_part_text_set(search_info->search_date_to, "elm.text", N_("To"));
+ evas_object_smart_callback_add(search_info->entry_date_to, "changed", _mailbix_search_to_date_changed_cb, data);
+
+ evas_object_show(search_info->entry_date_to);
+
+ return search_info->search_date_to;
+
+ default:
+ debug_warning("No corresponding item for index(%d)", index);
+ return NULL;
+ }
+ }
+
+ return NULL;
+}
+static void _mailbox_advanced_search_key_down_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+ debug_log("");
+ Evas_Object *eo = (Evas_Object *)obj;
+ mailbox_search_list_item *item_data = (mailbox_search_list_item *)data;
+ MailboxAdvSearchViewInfo *search_info = (MailboxAdvSearchViewInfo *) item_data->search_info;
+ Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *) event_info;
+
+ debug_log("ev->key : %s", ev->key);
+
+ if (STR_CMP(ev->key, "Return")) {
+ debug_log("Return key is pressed. hide the entry ");
+ if(eo == search_info->entry_title) {
+ ecore_imf_context_input_panel_hide((Ecore_IMF_Context *)elm_entry_imf_context_get(search_info->entry_title));
+ }else if (eo == search_info->entry_sender_address) {
+ ecore_imf_context_input_panel_hide((Ecore_IMF_Context *)elm_entry_imf_context_get(search_info->entry_sender_address));
+ }
+ }
+}
+static void _mailbox_advanced_search_backup_input_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ Evas_Object *eo = (Evas_Object *)obj;
+ mailbox_search_list_item *item_data = (mailbox_search_list_item *)data;
+ MailboxAdvSearchViewInfo *search_info = (MailboxAdvSearchViewInfo *) item_data->search_info;
+
+ if (eo == search_info->entry_title) {
+ debug_log("entry_title");
+ if (search_info->str_title) {
+ g_free(search_info->str_title);
+ search_info->str_title = NULL;
+ }
+ char *str_title = elm_entry_markup_to_utf8(elm_entry_entry_get(eo));
+ search_info->str_title = g_strdup(str_title);
+ debug_log("search_info->str_title[%s]", search_info->str_title);
+ g_free(str_title);
+ } else if (eo == search_info->entry_sender_address) {
+ debug_log("entry_sender_address");
+ if (search_info->str_sender_address) {
+ g_free(search_info->str_sender_address);
+ search_info->str_sender_address = NULL;
+ }
+ char *str_sender_address = elm_entry_markup_to_utf8(elm_entry_entry_get(eo));
+ search_info->str_sender_address = g_strdup(str_sender_address);
+ g_free(str_sender_address);
+ debug_log("search_info->str_sender_address[%s]", search_info->str_sender_address);
+ } else
+ debug_warning("No corresponding item");
+}
+
+static void _mailbox_advanced_edit_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ if (elm_object_focus_get(data)) {
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+ }
+ else {
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
+ else
+ elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+ }
+}
+static void _mailbox_advanced_edit_entry_focused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+ elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+}
+
+static void _mailbox_advanced_edit_entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+}
+static void _mailbox_advanced_edit_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ debug_log("");
+
+ if (!data || !obj) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ elm_entry_entry_set(data, "");
+}
+static void _mailbox_search_from_date_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ struct tm tm;
+ mailbox_search_list_item *item_data = (mailbox_search_list_item *)data;
+ MailboxAdvSearchViewInfo *search_info = (MailboxAdvSearchViewInfo *)item_data->search_info;
+
+ //time_t t = time(NULL);
+ search_info->from_date = time(NULL);
+ localtime_r(&search_info->from_date, &tm); // to fill hidden field
+
+ elm_datetime_value_get(obj, &tm);
+
+ search_info->from_date = mktime(&tm);
+ debug_log("search_info->from_date : %d", search_info->from_date);
+
+}
+static void _mailbix_search_to_date_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ struct tm tm;
+ mailbox_search_list_item *item_data = (mailbox_search_list_item *)data;
+ MailboxAdvSearchViewInfo *search_info = (MailboxAdvSearchViewInfo *)item_data->search_info;
+
+ search_info->to_date = time(NULL);
+ localtime_r(&search_info->to_date, &tm); // to fill hidden field
+ elm_datetime_value_get(obj, &tm);
+
+ search_info->to_date = mktime(&tm);
+ debug_log("search_info->to_date : %d", search_info->to_date);
+}
--- /dev/null
+/*
+ * 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.
+ */
+
+#include "email-mailbox.h"
+#include "email-mailbox-sweep.h"
+#include "email-mailbox-item.h"
+
+
+extern Eina_List *edit_list;
+
+
+static void _sweep_move_cb(void *data, Evas_Object *obj, void *event_info);
+static void _sweep_delete_cb(void *data, Evas_Object *obj, void *event_info);
+static void _sweep_reply_cb(void *data, Evas_Object *obj, void *event_info);
+static void _sweep_forward_cb(void *data, Evas_Object *obj, void *event_info);
+static void _sweep_mark_as_read_unread_cb(void *data, Evas_Object *obj, void *event_info);
+static void _popup_response_cb(void *data, Evas_Object *obj, void *event_info);
+static void _popup_response_sweep_delete_ok_cb(void *data, Evas_Object *obj, void *event_info);
+
+Evas_Object* _create_sweep_delete_button(Evas_Object* parent,list_data* ld)
+{
+
+ Evas_Object *button = elm_button_add(parent);
+ elm_object_style_set(button, "sweep/delete");
+
+ if(ld->thread_count > 1 && ld->mailbox_ugd->b_thread_list) {
+ elm_object_text_set(button, dgettext("sys_string", "IDS_COM_BODY_DELETE_ALL"));
+ }
+ else{
+ elm_object_text_set(button, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+ }
+
+ evas_object_smart_callback_add(button, "clicked", _sweep_delete_cb, ld);
+
+ if (ld != NULL && (ld->is_sending_now == EMAIL_MAIL_STATUS_SENDING || ld->is_sending_now == EMAIL_MAIL_STATUS_SEND_WAIT))
+ elm_object_disabled_set(button,EINA_TRUE);
+
+ return button;
+
+}
+
+Evas_Object* _create_sweep_read_unread_button(Evas_Object* parent,list_data* ld)
+{
+
+ Evas_Object *button = elm_button_add(parent);
+ elm_object_style_set(button, "sweep/multiline");
+ if (ld->is_seen == false)
+ elm_object_text_set(button, _("IDS_EMAIL_OPT_MARK_AS_READ"));
+ else
+ elm_object_text_set(button, _("IDS_EMAIL_OPT_MARK_AS_UNREAD"));
+
+ evas_object_smart_callback_add(button, "clicked", _sweep_mark_as_read_unread_cb, ld);
+
+ if ((ld != NULL && (ld->is_sending_now == EMAIL_MAIL_STATUS_SENDING || ld->is_sending_now == EMAIL_MAIL_STATUS_SEND_WAIT))
+ || (ld->thread_count > 1 && ld->mailbox_ugd->b_thread_list))
+ {
+ elm_object_disabled_set(button,EINA_TRUE);
+ }
+
+ return button;
+}
+
+Evas_Object* _create_sweep_move_button(Evas_Object* parent,list_data* ld)
+{
+
+ Evas_Object *button = elm_button_add(parent);
+ elm_object_style_set(button, "sweep/multiline");
+ elm_object_text_set(button, dgettext("sys_string", "IDS_COM_BODY_MOVE"));
+ evas_object_smart_callback_add(button, "clicked", _sweep_move_cb, ld);
+
+ if (ld != NULL && (ld->is_sending_now == EMAIL_MAIL_STATUS_SENDING || ld->is_sending_now == EMAIL_MAIL_STATUS_SEND_WAIT))
+ elm_object_disabled_set(button,EINA_TRUE);
+
+ return button;
+}
+
+Evas_Object* _create_sweep_reply_button(Evas_Object* parent,list_data* ld)
+{
+
+ Evas_Object *button = elm_button_add(parent);
+ elm_object_style_set(button, "sweep/multiline");
+ elm_object_text_set(button, dgettext("sys_string", "IDS_COM_SK_REPLY"));
+ evas_object_smart_callback_add(button, "clicked", _sweep_reply_cb, ld);
+
+ if (ld != NULL && (ld->is_sending_now == EMAIL_MAIL_STATUS_SENDING || ld->is_sending_now == EMAIL_MAIL_STATUS_SEND_WAIT))
+ elm_object_disabled_set(button,EINA_TRUE);
+
+ return button;
+
+}
+
+Evas_Object* _create_sweep_forward_button(Evas_Object* parent,list_data* ld)
+{
+
+ Evas_Object *button = elm_button_add(parent);
+ elm_object_style_set(button, "sweep/multiline");
+ elm_object_text_set(button, dgettext("sys_string", "IDS_COM_BODY_FORWARD"));
+ evas_object_smart_callback_add(button, "clicked", _sweep_forward_cb, ld);
+
+ if (ld != NULL && (ld->is_sending_now == EMAIL_MAIL_STATUS_SENDING || ld->is_sending_now == EMAIL_MAIL_STATUS_SEND_WAIT))
+ elm_object_disabled_set(button,EINA_TRUE);
+
+ return button;
+
+}
+
+static void _sweep_move_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_enter();
+
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ list_data *ld = (list_data *)data;
+ int prev_view = ld->mailbox_ugd->previous_view;
+ ld->mailbox_ugd->previous_view = ld->mailbox_ugd->view_type;
+
+ if(edit_list) {
+ debug_warning("edit_list is not released in previous use");
+ edit_list = eina_list_free(edit_list);
+ }
+ edit_list = eina_list_append(edit_list, ld);
+ mailbox_process_move_mail(ld->mailbox_ugd);
+ edit_list = eina_list_free(edit_list);
+
+ ld->mailbox_ugd->previous_view = prev_view;
+}
+
+static void _sweep_delete_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (data == NULL) {
+ debug_log("data == NULL");
+ return;
+ }
+ list_data *ld = (list_data *)data;
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)(ld->mailbox_ugd);
+ debug_log("ld->thread_id: %d, ld->account_id: %d", ld->thread_id, ld->account_id);
+ debug_log("ld->mail_id: %d", ld->mail_id);
+ debug_log("mailbox_ugd->mailbox_id: %d", mailbox_ugd->mailbox_id);
+
+ if (mailbox_ugd->delete_popup) {
+ evas_object_del(mailbox_ugd->delete_popup);
+ mailbox_ugd->delete_popup = NULL;
+ }
+
+ Evas_Object *notify = elm_popup_add(mailbox_ugd->win_main);
+ evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(notify, dgettext("sys_string", "IDS_COM_POP_DELETE_Q"));
+ mailbox_ugd->delete_popup = notify;
+
+ Evas_Object *btn1 = elm_button_add(notify);
+ elm_object_style_set(btn1, "popup_button/default");
+ elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+ elm_object_part_content_set(notify, "button1", btn1);
+ evas_object_smart_callback_add(btn1, "clicked", _popup_response_sweep_delete_ok_cb, data);
+
+ Evas_Object *btn2 = elm_button_add(notify);
+ elm_object_style_set(btn2, "popup_button/default");
+ elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(notify, "button2", btn2);
+ evas_object_smart_callback_add(btn2, "clicked", _popup_response_cb, mailbox_ugd);
+
+ evas_object_show(notify);
+}
+
+static void _popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ if (mailbox_ugd->delete_popup) {
+ evas_object_del(mailbox_ugd->delete_popup);
+ mailbox_ugd->delete_popup = NULL;
+ }
+}
+
+static void _sweep_reply_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+ list_data *ld = (list_data *)data;
+// EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)(ld->mailbox_ugd);
+
+ debug_log("mailbox_ugd->account_id: %d", ld->account_id);
+ debug_log("ld->mail_id: %d", ld->mail_id);
+
+ /* fast double taps cause to tap the other email in all mail */
+ if(ld->mailbox_ugd->view_type == EMAIL_VIEW_THREAD && ld->mailbox_ugd->thread_id != ld->thread_id )
+ return;
+
+ email_mailbox_t *mbox = NULL;
+ int e = email_get_mailbox_by_mailbox_id(ld->mailbox_id, &mbox);
+ if (e != EMAIL_ERROR_NONE) {
+ debug_log("email_get_mailbox_by_mailbox_id mailbox_id(%d)- err[%d]", ld->mailbox_id, e);
+ goto CLEANUP;
+ }
+
+ if (ld->mailbox_ugd->ug_composer) {
+ debug_log("Composer UG is already launched");
+ goto CLEANUP;
+ }
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ goto CLEANUP;
+ }
+
+ char cmd[30] = { 0, };
+ snprintf(cmd, sizeof(cmd), "%d", RUN_COMPOSER_REPLY);
+
+ char mailid[30] = { 0, };
+ snprintf(mailid, sizeof(mailid), "%d", ld->mail_id);
+ char acctid[30] = { 0, };
+ snprintf(acctid, sizeof(acctid), "%d", ld->account_id);
+ char mailboxid[30] = { 0, };
+ snprintf(mailboxid, sizeof(mailboxid), "%d", ld->mailbox_id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, cmd);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, acctid);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailboxid);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAIL_ID, mailid);
+
+ ld->mailbox_ugd->ug_composer = create_composer_ug(UG_NAME_EMAIL_COMPOSER, service, ld->mailbox_ugd);
+ service_destroy(service);
+
+CLEANUP:
+ email_free_mailbox(&mbox, 1);
+
+}
+
+static void _sweep_forward_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+ list_data *ld = (list_data *)data;
+// EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)(ld->mailbox_ugd);
+
+ debug_log("mailbox_ugd->account_id: %d", ld->account_id);
+ debug_log("ld->mail_id: %d", ld->mail_id);
+
+ /* fast double taps cause to tap the other email in all mail */
+ if(ld->mailbox_ugd->view_type == EMAIL_VIEW_THREAD && ld->mailbox_ugd->thread_id != ld->thread_id )
+ return;
+
+ email_mailbox_t *mbox = NULL;
+ int e = email_get_mailbox_by_mailbox_id(ld->mailbox_id, &mbox);
+ if (e != EMAIL_ERROR_NONE) {
+ debug_log("email_get_mailbox_by_mailbox_id mailbox_id(%d)- err[%d]", ld->mailbox_id, e);
+ goto CLEANUP;
+ }
+
+ if (ld->mailbox_ugd->ug_composer) {
+ debug_log("Composer UG is already launched");
+ goto CLEANUP;
+ }
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ goto CLEANUP;
+ }
+
+ char cmd[30] = { 0, };
+ snprintf(cmd, sizeof(cmd), "%d", RUN_COMPOSER_FORWARD);
+
+ char mailid[30] = { 0, };
+ snprintf(mailid, sizeof(mailid), "%d", ld->mail_id);
+ char acctid[30] = { 0, };
+ snprintf(acctid, sizeof(acctid), "%d", ld->account_id);
+ char mailboxid[30] = { 0, };
+ snprintf(mailboxid, sizeof(mailboxid), "%d", ld->mailbox_id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, cmd);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, acctid);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailboxid);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAIL_ID, mailid);
+
+ ld->mailbox_ugd->ug_composer = create_composer_ug(UG_NAME_EMAIL_COMPOSER, service, ld->mailbox_ugd);
+ service_destroy(service);
+
+CLEANUP:
+ email_free_mailbox(&mbox, 1);
+
+}
+
+static void _sweep_mark_as_read_unread_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ list_data *ld = (list_data *)data;
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)(ld->mailbox_ugd);
+
+ debug_log("mailbox_ugd->account_id: %d", ld->account_id);
+ debug_log("mailbox_ugd->mailbox_id: %d", mailbox_ugd->mailbox_id);
+ debug_log("ld->mail_id: %d", ld->mail_id);
+ debug_log("mailbox_ugd->previous_view: %d", mailbox_ugd->previous_view);
+ debug_log("current view: %d, thread_list: %d", mailbox_ugd->view_type, mailbox_ugd->b_thread_list);
+ debug_log("thread id: %d", ld->thread_id);
+ debug_log("mode: %d", mailbox_ugd->mode);
+
+ /* Finish genlist sweep */
+ elm_genlist_item_decorate_mode_set(ld->item, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(ld->item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+
+ int seen_flag = (ld->is_seen == false)? 1/* make it read */ : 0/* make it unread */;
+ debug_log("updated seen_flag(%d)", seen_flag);
+ ld->is_seen = seen_flag;
+ elm_genlist_item_update(ld->item);
+
+ if ( mailbox_ugd->view_type == EMAIL_VIEW_DATE &&
+ mailbox_ugd->b_thread_list == true) {
+
+ int *mail_id_list = NULL;
+ email_mail_list_item_t *mail_list = NULL;
+ int count = 0;
+ int err = email_get_mail_list(ld->account_id, 0, ld->thread_id,
+ -1, /* start_index */
+ -1, /* limit_count */
+ _mailbox_conv_sort_type(mailbox_ugd->sort_type),
+ &mail_list, &count);
+ if ( err != EMAIL_ERROR_NONE || !mail_list ) {
+ debug_warning("email_get_mail_list_ex - err(%d) or mailbox_data NULL(%p)",
+ err, mail_list);
+ goto CLEANUP;
+ }
+
+ mail_id_list = MEM_ALLOC(mail_id_list, count);
+ if(!mail_id_list) return;
+ int i = 0;
+ for (i = 0; i < count; ++i)
+ mail_id_list[i] = mail_list[i].mail_id;
+
+ err = email_set_flags_field(ld->account_id, mail_id_list, count, EMAIL_FLAGS_SEEN_FIELD, seen_flag, 1);
+ if (err != EMAIL_ERROR_NONE)
+ debug_log("email_set_flags_field - err(%d)", err);
+
+CLEANUP:
+ FREE(mail_list);
+ FREE(mail_id_list);
+ }
+ else {
+ /* For all other views where mail list is present but threaded mail list is not present */
+ int err = email_set_flags_field(ld->account_id, &(ld->mail_id), 1, EMAIL_FLAGS_SEEN_FIELD, seen_flag, 1);
+ if (err != EMAIL_ERROR_NONE)
+ debug_log("email_set_flags_field - err(%d)", err);
+ }
+}
+
+
+
+static void _popup_response_sweep_delete_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+ list_data *ld = (list_data *)data;
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)(ld->mailbox_ugd);
+ debug_log("ld->thread_id: %d, ld->account_id: %d", ld->thread_id, ld->account_id);
+ debug_log("ld->mail_id: %d", ld->mail_id);
+ debug_log("mailbox_ugd->previous_view: %d", mailbox_ugd->previous_view);
+
+ if (mailbox_ugd->delete_popup) {
+ evas_object_del(mailbox_ugd->delete_popup);
+ mailbox_ugd->delete_popup = NULL;
+ }
+
+ int prev_view = ld->mailbox_ugd->previous_view;
+ ld->mailbox_ugd->previous_view = ld->mailbox_ugd->view_type;
+
+ if(edit_list) {
+ debug_warning("edit_list is not released in previous use");
+ edit_list = eina_list_free(edit_list);
+ }
+ edit_list = eina_list_append(edit_list, ld);
+
+ edit_req_t *req = MEM_ALLOC(req, 1);
+ if(!req){
+ debug_warning("edit_req_t alloc failed");
+ return;
+ }
+ req->previous_view = ld->mailbox_ugd->previous_view;
+ req->mailbox_ugd = ld->mailbox_ugd;
+
+ ecore_thread_feedback_run(mailbox_process_delete_mail, NULL, NULL, NULL, req, EINA_TRUE);
+ ld->mailbox_ugd->previous_view = prev_view;
+
+}
+
+
--- /dev/null
+/*
+ * 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 UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "syspopup_caller.h"
+#include "email-mailbox.h"
+#include "email-mailbox-controlbar.h"
+#include "email-mailbox-list.h"
+#include "email-mailbox-search.h"
+#include "email-mailbox-noti-mgr.h"
+
+//static Elm_Genlist_Item_Class itc_item_for_sender;
+Elm_Object_Item *item[3];
+int _g_fd, _g_ret;
+Evas_Object *sub_view[10];
+int ug_pushed = false;
+Eina_List *g_account_list = NULL;
+extern enum appcore_time_format icu_timeformat;
+extern Eina_List *edit_list;
+extern Elm_Object_Item *g_selected_item;
+
+
+/*
+ * Function prototype declaration
+ */
+static void _create_view(EmailMailboxUGD *mailbox_ugd);
+static void _win_profile_changed_cb(void *data, Evas_Object *obj, void *event);
+static void _title_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _change_unread_icon_to_read_icon(Elm_Object_Item *item);
+static void _create_all_emails_view(Evas_Object *parent, EmailMailboxUGD *mailbox_ugd);
+static Evas_Object *_create_navigation_layout(Evas_Object *parent);
+static void _account_cb(void *data, Evas_Object *obj, void *event_info);
+static void _folder_cb(void *data, Evas_Object *obj, void *event_info);
+//static void _process_mailview_back(EmailMailboxUGD *mailbox_ugd);
+//static char *_gl_text_get(void *data, Evas_Object *obj, const char *part);
+//static Evas_Object *_gl_content_get(void *data, Evas_Object *obj, const char *part);
+//static void _create_sender_mail_list(void *data);
+//static void _delete_sender_mail_cb(void *data, Evas_Object *obj, void *event_info);
+//static void _process_sender_mail_delete(EmailMailboxUGD *mailbox_ugd);
+//static void _block_sender_mail_cb(void *data, Evas_Object *obj, void *event_info);
+//static void _process_sender_mail_block(EmailMailboxUGD *mailbox_ugd);
+//static void _move_sender_mail_cb(void *data, Evas_Object *obj, void *event_info);
+//static Evas_Object *_create_search_segment(EmailMailboxUGD *mailbox_ugd);
+//static email_mail_list_item_t *_get_sender_mail_list(EmailMailboxUGD *mailbox_ugd, const char *key, int* mail_count);
+//static void _create_recipient_list(EmailMailboxUGD *mailbox_ugd, const char *text);
+//static void _sender_item_clicked(void *data, Evas_Object *obj, void *event_info);
+static void _main_back_clicked(void *data, Evas_Object *obj, void *event_info);
+static void _account_dim_clicked(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+/* Callback function for Control bar */
+static void _process_update(EmailMailboxUGD *mailbox_ugd);
+static void _mailbox_rotate_to_potrait(void *data, int angle);
+static void _mailbox_rotate_to_landscape(void *data, int angle);
+
+/* ============================================================*/
+/* appcore prototype declaration */
+/* ============================================================*/
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv);
+static void on_start(ui_gadget_h ug, service_h service, void *priv);
+static void on_pause(ui_gadget_h ug, service_h service, void *priv);
+static void on_resume(ui_gadget_h ug, service_h service, void *priv);
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv);
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv);
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv);
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv);
+
+/* ============================================================*/
+/* ui-gadget prototype declaration */
+/* ============================================================*/
+static Evas_Object *create_fullview(Evas_Object *parent, EmailMailboxUGD *mailbox_ugd);
+static void layout_account_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void layout_viewer_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void result_cb(ui_gadget_h ug, service_h service, void *priv);
+static void destroy_viewer_cb(ui_gadget_h ug, void *priv);
+static void destroy_composer_cb(ui_gadget_h ug, void *priv);
+static ui_gadget_h create_account_ug(char *ug_name, service_h service, void *data);
+static ui_gadget_h create_folder_ug(char *ug_name, service_h service, void *data);
+static ui_gadget_h create_viewer_ug(char *ug_name, service_h service, void *data);
+static void result_viewer_cb(ui_gadget_h ug, service_h service, void *priv);
+
+
+#define THREADID_MASK 0xFFFF
+#define MAILID_MASK (THREADID_MASK << 16)
+#define MAX_UTF8_CHAR_SIZE 7
+
+
+#if 0
+struct timeval before_time;
+struct timeval after_time;
+long int elapsed_time = 0;
+
+void before_time_check()
+{
+ gettimeofday(&before_time, NULL);
+}
+
+void after_time_check(char *title)
+{
+ gettimeofday(&after_time, NULL);
+ elapsed_time = (after_time.tv_sec-before_time.tv_sec)*1000000 + (after_time.tv_usec-before_time.tv_usec);
+ debug_log("%6ld (microsec) : %s\n", elapsed_time, title);
+}
+#endif
+
+void email_rotate_landscape(EmailMailboxUGD *mailbox_ugd)
+{
+ if (mailbox_ugd->current_rotmode == APP_DEVICE_ORIENTATION_270)
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE, NULL, mailbox_ugd);
+ else
+ on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN, NULL, mailbox_ugd);
+}
+
+
+/*
+
+#define GET_MAIL_INFO(mail_id, mail_info, thread_id, thread_count) \
+ ({\
+ char _where[256] = {0};\
+ int count = 0;\
+ email_mail_list_item_t* _list = NULL;\
+ snprintf(_where, 255, "where mail_id=%d or (thread_id=%d and thread_item_count <> 0)", mail_id, thread_id);\
+ int _e = email_query_message_ex(_where, &_list, &count);\
+ if(_e != EMAIL_ERROR_NONE || !_list || (count != 1 && count != 2)) {\
+ debug_warning("get mail info - err (%d) or list NULL(%p) or count not 1,2(%d)",\
+ _e, _list, count);\
+ }\
+ else {\
+ switch( count ) {\
+ case 1: mail_info = _list;\
+ thread_count = 1;\
+ break;\
+ case 2: mail_info = (_list[0].thread_item_count) ? _list : _list + 1;\
+ thread_count = (_list[0].thread_item_count) ? _list[0].thread_item_count :\
+ _list[1].thread_item_count;\
+ break;\
+ default: debug_log("never happens!!");\
+ }\
+ }\
+ _list;\
+ })
+*/
+
+static Evas_Object *create_fullview(Evas_Object *parent, EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ mailbox_ugd->mode = EMAIL_MAILBOX_MODE_ALL;
+ mailbox_ugd->sort_type = EMAIL_SORT_DATE_RECENT;
+
+ /* thread id is null */
+ if (mailbox_ugd->thread_id < 0) {
+ mailbox_ugd->view_type = EMAIL_VIEW_DATE;
+ _create_all_emails_view(parent, mailbox_ugd);
+ }
+ return mailbox_ugd->ly;
+}
+
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv)
+{
+ debug_log("");
+ Evas_Object *parent;
+ EmailMailboxUGD *mailbox_ugd;
+
+ if (!ug || !priv)
+ return NULL;
+
+ mailbox_ugd = (EmailMailboxUGD *)priv;
+ mailbox_ugd->ug = ug;
+
+ parent = ug_get_window();
+ if (!parent)
+ return NULL;
+
+ /* init email common module */
+ email_engine_initialize();
+
+ /* init members of mailbox */
+ mailbox_ugd->account_id = 0;
+ mailbox_ugd->mailbox_id = 0;
+ mailbox_ugd->mailbox_type = EMAIL_MAILBOX_TYPE_INBOX;
+ int i;
+ for (i = 0; i < EMAIL_VIEW_MAX; ++i)
+ mailbox_ugd->gl[i] = NULL;
+ for (i = 0; i < EMAIL_VIEW_MAX; ++i)
+ mailbox_ugd->list_data[i] = NULL;
+ mailbox_ugd->sort_type = EMAIL_SORT_MAX;
+ mailbox_ugd->sort_type_index= VIEWBY_DATE_RECENT;
+ mailbox_ugd->search_type = EMAIL_SEARCH_ALL;
+ mailbox_ugd->download_idx = 0;
+ mailbox_ugd->isRotate = false;
+
+ int w, h;
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+ debug_log("WINDOW W[%d] H[%d]", w, h);
+ mailbox_ugd->main_w = w;
+ mailbox_ugd->main_h = h;
+
+ /* theme extension */
+ /*mailbox_ugd->theme = elm_theme_new();
+ elm_theme_ref_set(mailbox_ugd->theme, NULL);
+ elm_theme_extension_add(mailbox_ugd->theme, THEME_PATH);*/
+
+ /* DBUS */
+ _dbus_receiver_setup(mailbox_ugd);
+
+ if (mode == UG_MODE_FULLVIEW) {
+ char *thread_id = NULL;
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_THREAD_ID, &(thread_id));
+ if (thread_id != NULL) {
+ mailbox_ugd->thread_id = atoi(thread_id);
+ g_free(thread_id);
+ } else {
+ mailbox_ugd->thread_id = -1;
+ }
+
+ char *initial_run = NULL;
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_INITIAL_RUN, &(initial_run));
+ if (initial_run != NULL) {
+ mailbox_ugd->initial_run = atoi(initial_run);
+ g_free(initial_run);
+ }
+
+ mailbox_ugd->base = create_fullview(parent, mailbox_ugd);
+ } else {
+ mailbox_ugd->base = NULL;
+ }
+
+ return mailbox_ugd->layout_main;
+}
+
+static void on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+}
+
+static void on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+}
+
+static void on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+}
+
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+
+ EmailMailboxUGD *mailbox_ugd;
+
+ if (!ug || !priv) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ mailbox_ugd = (EmailMailboxUGD *)priv;
+
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+ int view_type = 0;
+ for (view_type = 0; view_type < EMAIL_VIEW_MAX; ++view_type) {
+ if (mailbox_ugd->list_data[view_type]) {
+ GList *view_list = mailbox_ugd->list_data[view_type];
+ GList *cur = NULL;
+ list_data *ld = NULL;
+ G_LIST_FOREACH(view_list, cur, ld) {
+ _free_list_data_simple(ld);
+ }
+ g_list_free(view_list);
+ }
+ }
+
+ email_engine_free_ca_mailbox_list_using_glist(&mailbox_ugd->folder_list);
+ email_engine_finalize();
+
+ FREE(mailbox_ugd->address);
+ FREE(mailbox_ugd->folder_alias);
+ FREE(mailbox_ugd->user_email);
+ FREE(mailbox_ugd->display_name);
+
+ /* theme extension */
+ /*elm_theme_extension_del(mailbox_ugd->theme, THEME_PATH);
+ elm_theme_free(mailbox_ugd->theme);*/
+
+ _remove_dbus_receiver(mailbox_ugd);
+
+ int ret = e_dbus_shutdown();
+ debug_log("ret: %d", ret);
+
+ if (mailbox_ugd->ly != NULL && elm_object_part_content_get(mailbox_ugd->panes, "left") == NULL) {
+ elm_object_part_content_set(mailbox_ugd->panes, "left", mailbox_ugd->ly);
+ }
+ evas_object_del(mailbox_ugd->base);
+ mailbox_ugd->base = NULL;
+}
+
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv)
+{
+ debug_log("");
+
+ EmailMailboxUGD *mailbox_ugd;
+
+ if (!ug || !priv) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ mailbox_ugd = (EmailMailboxUGD *)priv;
+
+ char *msg_type = NULL;
+ service_get_extra_data(msg, EMAIL_BUNDLE_KEY_MSG, &(msg_type));
+ char *c_do_delete = NULL;
+ service_get_extra_data(msg, EMAIL_BUNDLE_KEY_DO_DELETE, &(c_do_delete));
+ int do_delete = 0;
+ if (c_do_delete)
+ do_delete = (int)atoi(c_do_delete);
+
+ if (g_strcmp0(msg_type, EMAIL_BUNDLE_KEY_UNLOCK_LIST) == 0) {
+ if (mailbox_ugd->isRotate == true) {
+ if (evas_object_pass_events_get(mailbox_ugd->gl[mailbox_ugd->view_type]) == EINA_TRUE) {
+ debug_log("Set pass event - EINA_FALSE");
+ evas_object_pass_events_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_FALSE);
+ }
+ }
+ }
+ else if (g_strcmp0(msg_type, EMAIL_BUNDLE_VAL_NEXT_MSG) == 0) {
+ Elm_Object_Item *first = NULL, *last = NULL;
+ if(mailbox_ugd->view_type == EMAIL_VIEW_SEARCH || mailbox_ugd->view_type == EMAIL_VIEW_EDIT) {
+ first = elm_genlist_first_item_get(mailbox_ugd->gl[mailbox_ugd->previous_view]);
+ last = elm_genlist_last_item_get(mailbox_ugd->gl[mailbox_ugd->previous_view]);
+ } else {
+ first = elm_genlist_first_item_get(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ last = elm_genlist_last_item_get(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ }
+
+
+ first = elm_genlist_item_next_get(first); /* The first item is group item */
+
+ if(g_selected_item != first || g_selected_item != last)
+ {
+ debug_log("there are multiple items");
+ if(g_selected_item != last)
+ {
+ do
+ {
+ g_selected_item = elm_genlist_item_next_get(g_selected_item);
+ } while(elm_genlist_item_parent_get(g_selected_item) == NULL && g_selected_item != NULL);
+ }
+ else
+ {
+ g_selected_item = first;
+ }
+ if(g_selected_item)
+ {
+ list_data *ld = (list_data *)elm_object_item_data_get(g_selected_item);
+ if(ld)
+ _open_email_body(ld->mail_id, g_selected_item);
+ }
+
+ }
+ else {
+ debug_log("only one item exist");
+ if(do_delete)
+ {
+ if(mailbox_ugd->isRotate)
+ {
+ _create_email_no_content_view(mailbox_ugd);
+ }
+ else
+ {
+ elm_panes_content_left_size_set(mailbox_ugd->panes, 1.0);
+ elm_object_part_content_unset(mailbox_ugd->panes, "right");
+ }
+ }
+ else
+ {
+ list_data *ld = (list_data *)elm_object_item_data_get(g_selected_item);
+ if(ld)
+ _open_email_body(ld->mail_id, g_selected_item);
+ }
+
+ }
+ }
+ else if (g_strcmp0(msg_type, EMAIL_BUNDLE_VAL_PREV_MSG) == 0) {
+ Elm_Object_Item *first = NULL, *last = NULL;
+ if(mailbox_ugd->view_type == EMAIL_VIEW_SEARCH || mailbox_ugd->view_type == EMAIL_VIEW_EDIT) {
+ first = elm_genlist_first_item_get(mailbox_ugd->gl[mailbox_ugd->previous_view]);
+ last = elm_genlist_last_item_get(mailbox_ugd->gl[mailbox_ugd->previous_view]);
+ } else {
+ first = elm_genlist_first_item_get(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ last = elm_genlist_last_item_get(mailbox_ugd->gl[mailbox_ugd->view_type]);
+ }
+
+ first = elm_genlist_item_next_get(first); /* The first item is group item */
+
+ if(g_selected_item != first || g_selected_item != last)
+ {
+ debug_log("there are multiple items");
+ if(g_selected_item != first)
+ {
+ do
+ {
+ g_selected_item = elm_genlist_item_prev_get(g_selected_item);
+ } while(elm_genlist_item_parent_get(g_selected_item) == NULL && g_selected_item != NULL);
+ }
+ else
+ {
+ g_selected_item = last;
+ }
+ if(g_selected_item)
+ {
+ list_data *ld = (list_data *)elm_object_item_data_get(g_selected_item);
+ if(ld)
+ _open_email_body(ld->mail_id, g_selected_item);
+ }
+
+ }
+ else {
+ debug_log("only one item exist");
+ if(do_delete)
+ {
+ if(mailbox_ugd->isRotate)
+ {
+ _create_email_no_content_view(mailbox_ugd);
+ }
+ else
+ {
+ elm_panes_content_left_size_set(mailbox_ugd->panes, 1.0);
+ elm_object_part_content_unset(mailbox_ugd->panes, "right");
+ }
+ }
+ else
+ {
+ list_data *ld = (list_data *)elm_object_item_data_get(g_selected_item);
+ if(ld)
+ _open_email_body(ld->mail_id, g_selected_item);
+ }
+
+ }
+ }
+ else if (g_strcmp0(msg_type, EMAIL_BUNDLE_VAL_UNREAD) == 0) {
+ list_data *ld = (list_data *)elm_object_item_data_get(g_selected_item);
+ if(ld)
+ {
+ ld->is_seen = false;
+ elm_genlist_item_update(g_selected_item);
+ }
+ }
+ else if (g_strcmp0(msg_type, EMAIL_BUNDLE_VAL_READ) == 0) {
+ list_data *ld = (list_data *)elm_object_item_data_get(g_selected_item);
+ if(ld)
+ {
+ ld->is_seen = true;
+ elm_genlist_item_update(g_selected_item);
+ }
+ }
+
+ g_free(msg_type);
+ g_free(c_do_delete);
+}
+
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv)
+{
+ debug_log("ug event %d", event);
+
+ RETURN_IF_FAIL(priv);
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)priv;
+ int angle = 0;
+ app_device_orientation_e rotmode = -1;
+
+ switch (event) {
+ case UG_EVENT_LOW_MEMORY:
+ break;
+ case UG_EVENT_LOW_BATTERY:
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ break;
+
+ case UG_EVENT_ROTATE_PORTRAIT:
+ rotmode = APP_DEVICE_ORIENTATION_0;
+ angle = 0;
+ break;
+
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ rotmode = APP_DEVICE_ORIENTATION_180;
+ angle = 180;
+ break;
+
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ rotmode = APP_DEVICE_ORIENTATION_270;
+ angle = -90;
+ break;
+
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ rotmode = APP_DEVICE_ORIENTATION_90;
+ angle = 90;
+ break;
+
+ case UG_EVENT_REGION_CHANGE:
+ appcore_get_timeformat(&icu_timeformat);
+ _refresh_mailbox(mailbox_ugd);
+ break;
+
+ default:
+ break;
+ }
+
+ if (rotmode != -1) {
+ /* Rotation ug event has come */
+
+ mailbox_ugd->current_rotmode = rotmode;
+ int account_id = 0;
+ if (FALSE == email_engine_get_default_account(&account_id)) {
+ /* Ignore Rotation if there are no accounts added */
+ debug_log("No accounts");
+ return;
+ }
+
+ if (rotmode == APP_DEVICE_ORIENTATION_0 || rotmode == APP_DEVICE_ORIENTATION_180) {
+ if (mailbox_ugd->isRotate == true)
+ mailbox_ugd->isRotate = false;
+ } else if (rotmode == APP_DEVICE_ORIENTATION_270 || rotmode == APP_DEVICE_ORIENTATION_90) {
+ if (mailbox_ugd->isRotate == false)
+ mailbox_ugd->isRotate = true;
+ }
+
+// if (mailbox_ugd->view_type == EMAIL_VIEW_EDIT || b_editmode) {
+// elm_win_rotation_with_resize_set(mailbox_ugd->win_main, angle);
+// return; /* Ignore Rotation for Edit view and Search View and Sender View */
+// }
+
+ if (rotmode == APP_DEVICE_ORIENTATION_0 || rotmode == APP_DEVICE_ORIENTATION_180) {
+ if (elm_panes_content_left_size_get(mailbox_ugd->panes) == 0.4) {
+ _mailbox_rotate_to_potrait(mailbox_ugd, angle);
+ } else {
+ _mailbox_rotate_to_landscape(mailbox_ugd, angle);
+ _mailbox_rotate_to_potrait(mailbox_ugd, angle);
+ }
+ } else if (rotmode == APP_DEVICE_ORIENTATION_270 || rotmode == APP_DEVICE_ORIENTATION_90) {
+ if (elm_panes_content_left_size_get(mailbox_ugd->panes) != 0.4) {
+ _mailbox_rotate_to_landscape(mailbox_ugd, angle);
+ } else {
+ _mailbox_rotate_to_potrait(mailbox_ugd, angle);
+ _mailbox_rotate_to_landscape(mailbox_ugd, angle);
+ }
+ }
+ }
+}
+
+static void _mailbox_rotate_to_potrait(void *data, int angle)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ debug_log("view type = %d, previous_view = %d", mailbox_ugd->view_type, mailbox_ugd->previous_view);
+
+ elm_object_item_part_content_unset(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar");
+ _create_controlbar(mailbox_ugd);
+ if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD)
+ {
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar", mailbox_ugd->controlbar_btns);
+ }
+ else if (mailbox_ugd->view_type == EMAIL_VIEW_EDIT)
+ {
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->previous_view], "controlbar", mailbox_ugd->controlbar_btns);
+ }
+ else
+ {
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar", mailbox_ugd->controlbar_btns);
+ }
+
+ elm_win_rotation_with_resize_set(mailbox_ugd->win_main, angle);
+
+ if (!evas_object_visible_get(mailbox_ugd->navi_title_ly)) {
+ debug_log("title is not visible, show title. view_type:%d, previous_view:%d", mailbox_ugd->view_type, mailbox_ugd->previous_view);
+ if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD || mailbox_ugd->view_type == EMAIL_VIEW_EDIT)
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->previous_view], "title", mailbox_ugd->navi_title_ly);
+ else
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "title", mailbox_ugd->navi_title_ly);
+ }
+
+ if (mailbox_ugd->view_type != EMAIL_VIEW_EDIT && !evas_object_visible_get(mailbox_ugd->searchbar_layout)) {
+ debug_log("search_bar is not visible, show search bar");
+ elm_object_part_content_set(mailbox_ugd->search_layout, "searchbar", mailbox_ugd->searchbar_layout);
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_searchbar", "search");
+ }
+
+ if (elm_object_part_content_get(mailbox_ugd->panes, "right") == mailbox_ugd->split_nocontent) {
+ elm_panes_content_left_size_set(mailbox_ugd->panes, 1.0);
+ Evas_Object *r_content = elm_object_part_content_get(mailbox_ugd->panes, "right");
+ if (r_content) evas_object_hide(r_content);
+ elm_object_part_content_unset(mailbox_ugd->panes, "right");
+ } else {
+ elm_panes_content_left_size_set(mailbox_ugd->panes, 0.0);
+ elm_object_part_content_unset(mailbox_ugd->panes, "left");
+ evas_object_hide(mailbox_ugd->ly);
+ }
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_EDIT)
+ {
+ email_maillist_select_info(mailbox_ugd);
+ }
+}
+
+
+
+
+static void _mailbox_rotate_to_landscape(void *data, int angle)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ debug_log("view type = %d, previous_view = %d", mailbox_ugd->view_type, mailbox_ugd->previous_view);
+
+ if (elm_panes_content_left_size_get(mailbox_ugd->panes) == 1.0) {
+ if(mailbox_ugd->b_advanced_search_view) {
+ debug_log("advanced search view exists. should be removed");
+ elm_naviframe_item_pop(mailbox_ugd->navi_bar);
+ mailbox_ugd->b_advanced_search_view = false;
+ }
+
+ if(mailbox_ugd->view_type == EMAIL_VIEW_SEARCH)
+ mailbox_finish_search_mode(mailbox_ugd);
+ elm_win_rotation_with_resize_set(mailbox_ugd->win_main, angle);
+ _create_email_no_content_view(mailbox_ugd);
+ }
+ else {
+ debug_log("Landscape from viewer, just set right size to 0.4");
+ elm_win_rotation_with_resize_set(mailbox_ugd->win_main, angle);
+
+ if (mailbox_ugd->ly != NULL && elm_object_part_content_get(mailbox_ugd->panes, "left") == NULL)
+ elm_object_part_content_set(mailbox_ugd->panes, "left", mailbox_ugd->ly);
+
+ elm_panes_content_left_size_set(mailbox_ugd->panes, 0.4);
+ }
+
+ if (!evas_object_visible_get(mailbox_ugd->gl[mailbox_ugd->view_type]))
+ evas_object_show(mailbox_ugd->gl[mailbox_ugd->view_type]);
+
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_EDIT)
+ {
+ _create_controlbar(mailbox_ugd);
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->previous_view], "controlbar", mailbox_ugd->controlbar_btns);
+ email_maillist_select_info(mailbox_ugd);
+ }
+ else
+ {
+ elm_object_item_part_content_unset(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar");
+ _delete_controlbar(mailbox_ugd);
+ }
+
+ if (evas_object_visible_get(mailbox_ugd->navi_title_ly)) {
+ debug_log("title is visible, hide title");
+ debug_log("title is not visible, show title. view_type:%d, previous_view:%d", mailbox_ugd->view_type, mailbox_ugd->previous_view);
+
+ if (mailbox_ugd->view_type == EMAIL_VIEW_EDIT) {
+ elm_object_item_part_content_unset(mailbox_ugd->navibar_item[mailbox_ugd->previous_view], "title");
+ } else {
+ elm_object_item_part_content_unset(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "title");
+ }
+ evas_object_hide(mailbox_ugd->navi_title_ly);
+ }
+
+ if (evas_object_visible_get(mailbox_ugd->searchbar_layout)) {
+ debug_log("search_bar is visible, hide search bar");
+ elm_entry_entry_set(mailbox_ugd->searchbar_en, "");
+ elm_object_focus_set(mailbox_ugd->searchbar_layout, EINA_FALSE);
+ elm_object_part_content_unset(mailbox_ugd->search_layout, "searchbar");
+ edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "hide_searchbar", "search");
+ evas_object_hide(mailbox_ugd->searchbar_layout);
+ }
+
+ /* destroy account ug and create mailbox ug */
+ if (mailbox_ugd->ug_account && mailbox_ugd->account_dim) {
+ debug_log("account frameview is visible, destroy account view");
+ destroy_account_cb(mailbox_ugd->ug_account, mailbox_ugd);
+ }
+
+}
+
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd;
+
+ if (!ug || !priv) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ mailbox_ugd = (EmailMailboxUGD *)priv;
+
+ switch (event) {
+ case UG_KEY_EVENT_END:
+ break;
+
+ default:
+ break;
+ }
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ debug_log("");
+ EmailMailboxUGD *ugd;
+
+ if (!ops)
+ return -1;
+
+ ugd = calloc(1, sizeof(EmailMailboxUGD));
+
+ if (!ugd)
+ return -1;
+
+ ops->create = on_create;
+ ops->start = on_start;
+ ops->pause = on_pause;
+ ops->resume = on_resume;
+ ops->destroy = on_destroy;
+ ops->message = on_message;
+ ops->event = on_event;
+ ops->key_event = on_key_event;
+ ops->priv = ugd;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ return 0;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ debug_log("");
+ EmailMailboxUGD *ugd;
+
+ if (!ops)
+ return;
+
+ ugd = ops->priv;
+
+ FREE(ugd);
+}
+
+static void layout_account_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+ debug_log("");
+ Evas_Object *base;
+ EmailMailboxUGD *ugd;
+ Elm_Transit* transit;
+ Evas_Object *blk;
+
+ float scale_factor=0;
+ int acc_max_h=909, acc_w=688;
+
+ if (!ug || !priv)
+ return;
+
+ ugd = (EmailMailboxUGD *)priv;
+
+ base = ug_get_layout(ug);
+ if (!base)
+ return;
+
+ scale_factor = elm_scale_get();
+ debug_log("ELM Scale[%f]", scale_factor);
+
+ switch (mode) {
+ case UG_MODE_FULLVIEW:
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ugd->win_main, base);
+ evas_object_show(base);
+ break;
+
+ case UG_MODE_FRAMEVIEW:
+ blk = edje_object_add(evas_object_evas_get(ugd->win_main));
+ edje_object_file_set(blk, THEME_PATH, "email/dim_area");
+ evas_object_size_hint_weight_set(blk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ugd->win_main, blk);
+ ugd->account_dim = blk;
+ evas_object_show(blk);
+ edje_object_signal_callback_add(blk, "action,click", "", _account_dim_clicked, ugd);/*when dim area is clicked this signal is sent*/
+
+ // create frame view
+ evas_object_raise(base);
+ evas_object_resize(base, acc_w, acc_max_h);
+ evas_object_move(base, 16, 168); // indicator(50)+Navi(108) + 10(gap)
+
+ //Hide wipe effect. and direction is up.
+ transit = elm_transit_add();
+ elm_transit_object_add(transit, base);
+ elm_transit_effect_wipe_add(transit, ELM_TRANSIT_EFFECT_WIPE_TYPE_SHOW, ELM_TRANSIT_EFFECT_WIPE_DIR_DOWN);
+ elm_transit_duration_set(transit, 0.5);
+ elm_transit_go(transit);
+ evas_object_show(base);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void layout_composer_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+ debug_log("");
+ Evas_Object *base;
+ EmailMailboxUGD *ugd;
+
+ if (!ug || !priv)
+ return;
+
+ ugd = (EmailMailboxUGD *)priv;
+
+ base = ug_get_layout(ug);
+ if (!base)
+ return;
+
+ switch (mode) {
+ case UG_MODE_FULLVIEW:
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ugd->win_main, base);
+ evas_object_show(base);
+ break;
+ default:
+ break;
+ }
+}
+
+static void layout_viewer_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+ debug_log("");
+
+ Evas_Object *base;
+ EmailMailboxUGD *ugd;
+
+ if (!ug || !priv)
+ return;
+
+ ugd = (EmailMailboxUGD *)priv;
+
+ base = ug_get_layout(ug);
+ if (!base)
+ return;
+
+ ugd->viewer_ly = base;
+
+ switch (mode) {
+ case UG_MODE_FULLVIEW:
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ ug_disable_effect(ug);
+ evas_object_show(base);
+ break;
+ default:
+ break;
+ }
+}
+
+static void result_cb(ui_gadget_h ug, service_h service, void *priv)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd;
+
+ if (!ug || !priv)
+ return;
+
+ mailbox_ugd = (EmailMailboxUGD *)priv;
+
+ FREE(mailbox_ugd->user_email);
+ FREE(mailbox_ugd->folder_alias);
+ mailbox_ugd->mailbox_type = EMAIL_MAILBOX_TYPE_NONE;
+ mailbox_ugd->mailbox_id = 0;
+
+ ug_pushed = false;
+ char *account_id = NULL;
+ char *c_is_null = NULL;
+ char *mailbox_type = NULL;
+
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, &(account_id));
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_IS_NULL, &(c_is_null));
+
+ mailbox_ugd->account_id = (gint) atoi(account_id);
+ if (atoi(c_is_null)) {
+ if (mailbox_ugd->account_id != 0) {
+ email_mailbox_t *mailbox = NULL;
+ int e = email_get_mailbox_by_mailbox_type(mailbox_ugd->account_id, EMAIL_MAILBOX_TYPE_INBOX, &mailbox);
+
+ if( e == EMAIL_ERROR_NONE && mailbox ) {
+ debug_log("email_get_mailbox_by_mailbox_type : account_id(%d) type(INBOX) - err(%d) or mailbox is NULL(%p)", mailbox_ugd->account_id, e, mailbox);
+
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_USER_EMAIL, &(mailbox_ugd->user_email));
+ mailbox_ugd->mode = EMAIL_MAILBOX_MODE_MAILBOX;
+ mailbox_ugd->mailbox_id = mailbox->mailbox_id;
+ mailbox_ugd->mailbox_type = EMAIL_MAILBOX_TYPE_INBOX;
+ mailbox_ugd->folder_alias = g_strdup(mailbox->alias);
+ debug_log("account_id: [%d], mailbox_id: [%d], folder_alias[%s], user_email: [%s]",
+ mailbox_ugd->account_id, mailbox_ugd->mailbox_id, mailbox_ugd->folder_alias, mailbox_ugd->user_email);
+
+ email_free_mailbox(&mailbox, 1);
+ }
+ }
+ else
+ {
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX_TYPE, &(mailbox_type));
+ mailbox_ugd->mailbox_type = (gint) atoi(mailbox_type);
+ mailbox_ugd->mode = EMAIL_MAILBOX_MODE_ALL;
+ debug_log("account_id: [%d], mailbox_type: [%d]", mailbox_ugd->account_id, mailbox_ugd->mailbox_type);
+ }
+ }
+ else
+ {
+ char *mailbox_id = NULL;
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, &(mailbox_id));
+ if (mailbox_id)
+ {
+ mailbox_ugd->mailbox_id = (int)atoi(mailbox_id);
+ g_free(mailbox_id);
+ }
+ else
+ debug_critical("failure on getting mailbox_id");
+
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX_ALIAS, &(mailbox_ugd->folder_alias));
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_USER_EMAIL, &(mailbox_ugd->user_email));
+ mailbox_ugd->mode = EMAIL_MAILBOX_MODE_MAILBOX;
+ debug_log("account_id: [%d], mailbox_id: [%d], folder_alias[%s], user_email: [%s]",
+ mailbox_ugd->account_id, mailbox_ugd->mailbox_id, mailbox_ugd->folder_alias, mailbox_ugd->user_email);
+ }
+ if (mailbox_ugd->ug_account) {
+ destroy_account_cb(mailbox_ugd->ug_account, mailbox_ugd);
+ }
+ ug_pushed = false;
+
+ _make_account_mail_list(mailbox_ugd);
+
+ g_free(account_id);
+ g_free(c_is_null);
+ g_free(mailbox_type);
+}
+
+static void result_viewer_cb(ui_gadget_h ug, service_h service, void *priv)
+{
+ EmailMailboxUGD *mailbox_ugd;
+ debug_log("");
+
+ if (NULL == ug || NULL == priv) {
+ return;
+ }
+
+ mailbox_ugd = priv;
+
+ char *mailbox_msg = NULL;
+ service_get_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX_SIZE, &(mailbox_msg));
+
+ if (NULL != mailbox_msg) {
+ if (0 == g_strcmp0(mailbox_msg, "MAILBOX_RESIZE_FULL")) {
+ debug_log("MAILBOX_RESIZE_FULL");
+ if (elm_genlist_item_selected_get((Elm_Object_Item *)g_selected_item) == EINA_TRUE)
+ elm_genlist_item_selected_set((Elm_Object_Item *)g_selected_item, EINA_FALSE);
+
+ if (!evas_object_visible_get(mailbox_ugd->gl[mailbox_ugd->view_type]))
+ evas_object_show(mailbox_ugd->gl[mailbox_ugd->view_type]);
+
+ elm_panes_content_left_size_set(mailbox_ugd->panes, 1.0);
+ if (mailbox_ugd->ly != NULL && elm_object_part_content_get(mailbox_ugd->panes, "left") == NULL)
+ elm_object_part_content_set(mailbox_ugd->panes, "left", mailbox_ugd->ly);
+
+ Evas_Object *r_content = elm_object_part_content_get(mailbox_ugd->panes, "right");
+ if (r_content) evas_object_hide(r_content);
+ elm_object_part_content_unset(mailbox_ugd->panes, "right");
+ }
+
+ g_free(mailbox_msg);
+ } else {
+ debug_critical("Mailbox size string sent by viewer is NULL");
+ }
+}
+
+void result_composer_cb(ui_gadget_h ug, service_h service, void *priv)
+{
+ EmailMailboxUGD *mailbox_ugd;
+ debug_log("");
+
+ if (NULL == ug || NULL == priv) {
+ return;
+ }
+
+ mailbox_ugd = priv;
+}
+
+void destroy_account_cb(ui_gadget_h ug, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)priv;
+
+ if (mailbox_ugd->ug_account) {
+
+ Elm_Object_Item *nf_it = mailbox_ugd->navibar_item[mailbox_ugd->view_type];
+ int oh_opened = (int) elm_object_item_data_get(nf_it);
+// Evas_Object *title_content = elm_object_item_part_content_get(nf_it, "title");
+
+ if (oh_opened)
+ {
+ elm_icon_file_set(mailbox_ugd->title_arrow, ICON_CLOSE, NULL);
+ elm_object_item_data_set(nf_it, (void *) (!oh_opened));
+ }
+
+ ug_destroy(mailbox_ugd->ug_account);
+ mailbox_ugd->ug_account = NULL;
+ }
+
+ if(mailbox_ugd->account_dim)
+ {
+ evas_object_del(mailbox_ugd->account_dim);
+ mailbox_ugd->account_dim = NULL;
+ }
+ ug_pushed = false;
+}
+
+static void destroy_composer_cb(ui_gadget_h ug, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)priv;
+
+ if (mailbox_ugd->isRotate == false) {
+ if (elm_genlist_item_selected_get((Elm_Object_Item *)g_selected_item) == EINA_TRUE)
+ elm_genlist_item_selected_set((Elm_Object_Item *)g_selected_item, EINA_FALSE);
+
+ if (elm_panes_content_left_size_get(mailbox_ugd->panes) == 0.0 && elm_object_part_content_get(mailbox_ugd->panes, "right") != NULL) {
+ Evas_Object *r_content = elm_object_part_content_get(mailbox_ugd->panes, "right");
+ if (r_content) evas_object_hide(r_content);
+ elm_object_part_content_unset(mailbox_ugd->panes, "right");
+
+ elm_panes_content_left_size_set(mailbox_ugd->panes, 1.0);
+
+ if (mailbox_ugd->ly != NULL)
+ elm_object_part_content_set(mailbox_ugd->panes, "left", mailbox_ugd->ly);
+
+ }
+ }
+
+ if (mailbox_ugd->ug_composer) {
+ ug_destroy(mailbox_ugd->ug_composer);
+ mailbox_ugd->ug_composer = NULL;
+ }
+ ug_pushed = false;
+}
+
+static void destroy_viewer_cb(ui_gadget_h ug, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)priv;
+
+ if (mailbox_ugd)
+ mailbox_ugd->viewer_refresh = 0;
+
+ ug_destroy(ug);
+}
+
+
+ui_gadget_h create_composer_ug(char *ug_name, service_h service, void *data)
+{
+ debug_log("");
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0, };
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ cbs.layout_cb = layout_composer_cb;
+ cbs.result_cb = result_composer_cb;
+ cbs.destroy_cb = destroy_composer_cb;
+ cbs.priv = mailbox_ugd;
+ mailbox_ugd->cbs = cbs;
+
+ ug = ug_create(mailbox_ugd->ug, ug_name, UG_MODE_FULLVIEW, service, &mailbox_ugd->cbs);
+
+ return ug;
+}
+
+static ui_gadget_h create_account_ug(char *ug_name, service_h service, void *data)
+{
+ debug_log("");
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0, };
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ cbs.layout_cb = layout_account_cb;
+ cbs.result_cb = result_cb;
+ cbs.destroy_cb = destroy_account_cb;
+ cbs.priv = mailbox_ugd;
+ mailbox_ugd->cbs = cbs;
+
+ ug = ug_create(mailbox_ugd->ug, ug_name, UG_MODE_FRAMEVIEW, service, &mailbox_ugd->cbs);
+
+ return ug;
+}
+
+static ui_gadget_h create_folder_ug(char *ug_name, service_h service, void *data)
+{
+ debug_log("");
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0, };
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ cbs.layout_cb = layout_account_cb;
+ cbs.result_cb = result_cb;
+ cbs.destroy_cb = destroy_account_cb;
+ cbs.priv = mailbox_ugd;
+ mailbox_ugd->cbs = cbs;
+
+ ug = ug_create(mailbox_ugd->ug, ug_name, UG_MODE_FULLVIEW, service, &mailbox_ugd->cbs);
+
+ return ug;
+}
+
+static ui_gadget_h create_viewer_ug(char *ug_name, service_h service, void *data)
+{
+ debug_log("");
+ struct ug_cbs cbs = { 0, };
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ /* destroy account ug and create mailbox ug */
+ if (mailbox_ugd->ug_account) {
+ destroy_account_cb(mailbox_ugd->ug_account, mailbox_ugd);
+ }
+
+ cbs.layout_cb = layout_viewer_cb;
+ cbs.result_cb = result_viewer_cb;
+ cbs.destroy_cb = destroy_viewer_cb;
+ cbs.priv = data;
+
+ if (mailbox_ugd->viewer_refresh == 0) {
+ mailbox_ugd->viewer_refresh = 1;
+
+ mailbox_ugd->ug_viewer = ug_create(mailbox_ugd->ug, ug_name, UG_MODE_FULLVIEW, service, &cbs);
+ } else {
+ ug_send_message(mailbox_ugd->ug_viewer, service);
+ }
+
+ Evas_Object *r_content = elm_object_part_content_get(mailbox_ugd->panes, "right");
+
+ if (mailbox_ugd->isRotate == false) {
+ debug_log("@@@@@ Potrait @@@@@");
+ if (elm_object_part_content_get(mailbox_ugd->panes, "left") != NULL) {
+ elm_object_part_content_unset(mailbox_ugd->panes, "left");
+ evas_object_hide(mailbox_ugd->ly);
+ elm_panes_content_left_size_set(mailbox_ugd->panes, 0.0);
+ }
+
+ if (elm_object_part_content_get(mailbox_ugd->panes, "right") != NULL) {
+ elm_object_part_content_unset(mailbox_ugd->panes, "right");
+ if (r_content) evas_object_hide(r_content);
+ }
+
+ if (mailbox_ugd->viewer_ly != NULL)
+ elm_object_part_content_set(mailbox_ugd->panes, "right", mailbox_ugd->viewer_ly);
+ } else {
+ debug_log("@@@@@ Landscape @@@@@");
+ if (elm_object_part_content_get(mailbox_ugd->panes, "right") != NULL) {
+ elm_object_part_content_unset(mailbox_ugd->panes, "right");
+ if (r_content) evas_object_hide(r_content);
+ }
+
+ if (mailbox_ugd->viewer_ly != NULL)
+ elm_object_part_content_set(mailbox_ugd->panes, "right", mailbox_ugd->viewer_ly);
+
+ if (elm_object_part_content_get(mailbox_ugd->panes, "left") != NULL) {
+ elm_object_part_content_unset(mailbox_ugd->panes, "left");
+ evas_object_hide(mailbox_ugd->ly);
+ }
+
+ if (mailbox_ugd->ly != NULL)
+ elm_object_part_content_set(mailbox_ugd->panes, "left", mailbox_ugd->ly);
+
+ elm_panes_content_left_size_set(mailbox_ugd->panes, 0.4);
+ }
+
+ return mailbox_ugd->ug_viewer;
+}
+
+static void _create_all_emails_view(Evas_Object *parent, EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ mailbox_ugd->win_main = parent;
+ mailbox_ugd->evas = evas_object_evas_get(mailbox_ugd->win_main);
+
+ /* create accouts list view */
+ _create_view(mailbox_ugd);
+
+ _refresh_mailbox(mailbox_ugd);
+
+ /* download new mails */
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+
+ if (mailbox_ugd->initial_run || email_engine_get_eas_acc_exist_only() == FALSE) {
+ _sync_all_folder(mailbox_ugd);
+ Evas_Object * sync_button = elm_object_part_content_get(mailbox_ugd->navi_title_ly, "right_btn");
+ if (sync_button == mailbox_ugd->update_button)
+ {
+ elm_object_part_content_unset(mailbox_ugd->navi_title_ly, "right_btn");
+ evas_object_hide(mailbox_ugd->update_button);
+ elm_object_part_content_set(mailbox_ugd->navi_title_ly, "right_btn", mailbox_ugd->sync_progress);
+ evas_object_show(mailbox_ugd->sync_progress);
+ }
+ }
+}
+
+
+
+static inline int index_check_utf8(char c)
+{
+ if (c < 128)
+ return 1;
+ else if ((c & 0xe0) == 0xc0)
+ return 2;
+ else if ((c & 0xf0) == 0xe0)
+ return 3;
+ else if ((c & 0xf8) == 0xf0)
+ return 4;
+ else if ((c & 0xfc) == 0xf8)
+ return 5;
+ else if ((c & 0xfe) == 0xfc)
+ return 6;
+ else
+ return -1;
+}
+
+Eina_Bool _state_get(void *data, Evas_Object *obj, const char *part)
+{
+ debug_log("");
+ return EINA_FALSE;
+}
+
+void _stop_emf_job(EmailMailboxUGD *mailbox_ugd, unsigned handle, gboolean change_download_label_in_panel)
+{
+ debug_log("");
+ gint account_id = mailbox_ugd->account_id;
+
+ if (handle > 0) {
+ debug_log("stop job - handle (%d)", handle);
+ email_engine_stop_working(account_id, handle);
+ } else {
+ debug_warning("handle1 is %d. so we can't call email_engine_stop_working()", handle);
+ }
+
+ mailbox_ugd->emf_handle = 0;
+ _reset_refer_item_and_idx(mailbox_ugd);
+}
+
+void _reset_refer_item_and_idx(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ if (mailbox_ugd == NULL) {
+ debug_log("mailbox_ugd == NULL");
+ return;
+ }
+
+ mailbox_ugd->download_idx = 0;
+}
+
+void _sync_curr_folder(EmailMailboxUGD *mailbox_ugd, int mailbox_id)
+{
+ debug_log("");
+
+ unsigned handle = 0;
+ gboolean res = FALSE;
+ gint account_id = mailbox_ugd->account_id;
+
+ res = email_engine_sync_folder(account_id, mailbox_id, &handle);
+ debug_log("handle: %d", handle);
+
+ mailbox_ugd->emf_handle = handle;
+
+ int *_account_id = (int *)calloc(1, sizeof(int));
+ *_account_id = account_id;
+ g_account_list = eina_list_append(g_account_list, _account_id);
+
+}
+
+void _sync_all_folder(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ unsigned handle = 0;
+ int err = 0;
+
+ err = email_sync_header_for_all_account(&handle);
+
+ if (err == 0) {
+ debug_critical("fail to sync header for all account - err(%d)", err);
+ return;
+ }
+ mailbox_ugd->emf_handle = handle;
+ email_account_t *account_list = NULL;
+ int account_cnt = 0, i = 0;
+ int e = email_get_account_list(&account_list, &account_cnt);
+ if (e != EMAIL_ERROR_NONE) {
+ debug_critical("email_get_account_list - err(%d)", e);
+ return;
+ }
+
+ /* free list before append all item */
+ int *data = NULL;
+ EINA_LIST_FREE(g_account_list, data) {
+ g_free(data);
+ }
+ for (i = 0; i < account_cnt; ++i) {
+ int *account_id = (int *)calloc(1, sizeof(int));
+ *account_id = account_list[i].account_id;
+ g_account_list = eina_list_append(g_account_list, account_id);
+ }
+ email_free_account(&account_list, account_cnt);
+}
+
+
+static void _create_view(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ Evas_Object *win = mailbox_ugd->win_main;
+ Evas_Object *bg, *layout, *panes;
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ /*elm_object_theme_set(bg, mailbox_ugd->theme);
+ elm_object_style_set(bg, "email_default");*/
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ layout = elm_layout_add(win);
+ elm_layout_theme_set(layout, "layout", "application", "default");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_content_set(layout, "elm.swallow.bg", bg);
+ evas_object_show(layout);
+ mailbox_ugd->layout_main = layout;
+
+ elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_SHOW);
+
+ evas_object_smart_callback_add(mailbox_ugd->win_main, "profile,changed", _win_profile_changed_cb, mailbox_ugd);
+
+ panes = elm_panes_add(layout);
+ evas_object_size_hint_weight_set(panes, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(panes, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(panes);
+ elm_panes_fixed_set(panes, EINA_TRUE);
+ elm_panes_content_left_size_set(panes, 1.0);
+ mailbox_ugd->panes = panes;
+
+ elm_object_part_content_set(mailbox_ugd->layout_main, "elm.swallow.content", mailbox_ugd->panes);
+
+ mailbox_ugd->ly = elm_layout_add(panes);
+ elm_layout_theme_set(mailbox_ugd->ly, "layout", "application", "noindicator");
+ evas_object_size_hint_weight_set(mailbox_ugd->ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ if(elm_object_part_content_get(mailbox_ugd->panes, "right"))
+ elm_object_part_content_unset(mailbox_ugd->panes, "right");
+ if (mailbox_ugd->ly != NULL && elm_object_part_content_get(mailbox_ugd->panes, "left") == NULL)
+ elm_object_part_content_set(mailbox_ugd->panes, "left", mailbox_ugd->ly);
+
+ /* Navigation Bar */
+ mailbox_ugd->navi_bar = _create_navigation_layout(mailbox_ugd->ly);
+
+ mailbox_ugd->sub_layout[mailbox_ugd->view_type] = elm_layout_add(mailbox_ugd->navi_bar);
+ evas_object_size_hint_weight_set(mailbox_ugd->sub_layout[mailbox_ugd->view_type], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ if (mailbox_ugd->main_w == 720)
+ elm_layout_file_set(mailbox_ugd->sub_layout[mailbox_ugd->view_type], THEME_PATH, "layout.email.mailbox.hd");
+ else
+ elm_layout_file_set(mailbox_ugd->sub_layout[mailbox_ugd->view_type], THEME_PATH, "layout.email.mailbox");
+ mailbox_create_searchbar(mailbox_ugd);
+
+ /* create genlist */
+ mailbox_create_list_view(mailbox_ugd);
+
+ Evas_Object *no_content = NULL;
+ no_content = elm_layout_add(mailbox_ugd->sub_layout[mailbox_ugd->view_type]);
+ elm_layout_theme_set(no_content, "layout", "nocontents", "full");
+ elm_object_part_text_set(no_content, "elm.text", dgettext("sys_string", "IDS_COM_BODY_NO_CONTENTS"));
+ mailbox_ugd->no_content = no_content;
+
+ //elm_object_part_content_set(mailbox_ugd->sub_layout[mailbox_ugd->view_type], "searchbar", mailbox_ugd->search_bar);
+ elm_object_part_content_set(mailbox_ugd->sub_layout[mailbox_ugd->view_type], "list", mailbox_ugd->gl[mailbox_ugd->view_type]);
+ elm_object_part_content_set(mailbox_ugd->sub_layout[mailbox_ugd->view_type], "noc", mailbox_ugd->no_content);
+ mailbox_ugd->search_layout = mailbox_ugd->sub_layout[mailbox_ugd->view_type];
+
+ Evas_Object *btn = elm_button_add(mailbox_ugd->navi_bar);
+ elm_object_style_set(btn, "naviframe/end_btn/default");
+ evas_object_smart_callback_add(btn, "clicked", _main_back_clicked, mailbox_ugd);
+ mailbox_ugd->main_back_btn = btn;
+
+ // push the content to naviframe.
+ mailbox_ugd->navibar_item[mailbox_ugd->view_type] = elm_naviframe_item_push(mailbox_ugd->navi_bar, NULL, btn, NULL, mailbox_ugd->sub_layout[mailbox_ugd->view_type], "empty");
+
+ // Create custom style layout
+ mailbox_ugd->navi_title_ly = elm_layout_add(mailbox_ugd->navi_bar);
+ elm_layout_file_set(mailbox_ugd->navi_title_ly, THEME_PATH, "title");
+ evas_object_size_hint_weight_set(mailbox_ugd->navi_title_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(mailbox_ugd->navi_title_ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(mailbox_ugd->navi_title_ly);
+ elm_object_signal_callback_add(mailbox_ugd->navi_title_ly, "elm,action,title,clicked", "", _title_clicked_cb, mailbox_ugd);
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "title", mailbox_ugd->navi_title_ly);
+
+ //Title Left Button
+ mailbox_ugd->folder_button = elm_button_add(mailbox_ugd->navi_bar);
+ elm_object_style_set(mailbox_ugd->folder_button, "naviframe/title/default");
+ Evas_Object *folder_icon = elm_icon_add(mailbox_ugd->folder_button);
+ elm_icon_file_set(folder_icon, ICON_FOLDERS, NULL);
+ elm_icon_resizable_set(folder_icon, 1, 1);
+ evas_object_image_smooth_scale_set(folder_icon, 0);
+ elm_object_content_set(mailbox_ugd->folder_button, folder_icon);
+ evas_object_smart_callback_add(mailbox_ugd->folder_button, "clicked", _folder_cb, mailbox_ugd);
+ elm_object_part_content_set(mailbox_ugd->navi_title_ly, "left_btn", mailbox_ugd->folder_button);
+
+ //Title Right Button for update
+ mailbox_ugd->update_button = elm_button_add(mailbox_ugd->navi_bar);
+ elm_object_style_set(mailbox_ugd->update_button, "naviframe/title/default");
+ Evas_Object *update_icon = elm_icon_add(mailbox_ugd->update_button);
+ elm_icon_file_set(update_icon, ICON_UPDATE, NULL);
+ elm_icon_resizable_set(update_icon, 1, 1);
+ evas_object_image_smooth_scale_set(update_icon, 0);
+ elm_object_content_set(mailbox_ugd->update_button, update_icon);
+ evas_object_smart_callback_add(mailbox_ugd->update_button, "clicked", _update_toolbar_clicked_cb, mailbox_ugd);
+ elm_object_part_content_set(mailbox_ugd->navi_title_ly, "right_btn", mailbox_ugd->update_button);
+
+ //sync progress on Title Right
+ mailbox_ugd->sync_progress = elm_progressbar_add(mailbox_ugd->navi_bar);
+ elm_object_style_set(mailbox_ugd->sync_progress, "list_process");
+ evas_object_size_hint_align_set(mailbox_ugd->sync_progress, EVAS_HINT_FILL, 0.5);
+ evas_object_size_hint_weight_set(mailbox_ugd->sync_progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_pulse(mailbox_ugd->sync_progress, EINA_TRUE);
+
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", _("IDS_EMAIL_BODY_INBOX"));
+
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL)
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_sub", _("IDS_EMAIL_HEADER_ALL_ACCOUNTS"));
+ else
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_sub", mailbox_ugd->user_email);
+
+ // add service provider icon
+ mailbox_ugd->sp_icon = elm_icon_add(mailbox_ugd->navi_title_ly);
+ evas_object_show(mailbox_ugd->sp_icon);
+ elm_object_part_content_set(mailbox_ugd->navi_title_ly, "sub_left_icon", mailbox_ugd->sp_icon);
+ elm_icon_file_set(mailbox_ugd->sp_icon, ICON_TITLE_ALL_ACC, NULL);
+
+ // add expand/collapse icon
+ mailbox_ugd->title_arrow = elm_icon_add(mailbox_ugd->navi_title_ly);
+ evas_object_show(mailbox_ugd->title_arrow);
+ elm_object_part_content_set(mailbox_ugd->navi_title_ly, "sub_right_icon", mailbox_ugd->title_arrow);
+ elm_icon_file_set(mailbox_ugd->title_arrow, ICON_CLOSE, NULL);
+
+ _create_controlbar(mailbox_ugd);
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar", mailbox_ugd->controlbar_btns);
+
+ evas_object_show(mailbox_ugd->ly);
+}
+
+static void _win_profile_changed_cb(void *data, Evas_Object *obj, void *event)
+{
+ debug_log("");
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+
+ const char *profile = elm_config_profile_get();
+ if (!g_strcmp0(profile, "desktop"))
+ elm_layout_theme_set(mailbox_ugd->layout_main, "layout", "application", "noindicator");
+ else
+ elm_layout_theme_set(mailbox_ugd->layout_main, "layout", "application", "default");
+
+ evas_object_size_hint_weight_set(mailbox_ugd->layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(mailbox_ugd->win_main, mailbox_ugd->layout_main);
+ evas_object_show(mailbox_ugd->layout_main);
+}
+
+static void _title_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = data;
+ Elm_Object_Item *nf_it = mailbox_ugd->navibar_item[mailbox_ugd->view_type];
+ int oh_opened = (int) elm_object_item_data_get(nf_it);
+// Evas_Object *title_content = elm_object_item_part_content_get(nf_it, "title");
+
+ debug_log("mailbox_ugd->view_type(%d), oh_opened(%d)", mailbox_ugd->view_type, oh_opened);
+
+ if (oh_opened)
+ {
+ elm_icon_file_set(mailbox_ugd->title_arrow, ICON_CLOSE, NULL);
+ destroy_account_cb(mailbox_ugd->ug_account, mailbox_ugd);
+ elm_object_item_data_set(nf_it, (void *) (!oh_opened));
+ }
+ else
+ {
+ if (mailbox_ugd->view_type != EMAIL_VIEW_EDIT && mailbox_ugd->view_type != EMAIL_VIEW_SEARCH)
+ {
+ elm_icon_file_set(mailbox_ugd->title_arrow, ICON_OPEN, NULL);
+ _account_cb(data, obj, NULL);
+ elm_object_item_data_set(nf_it, (void *) (!oh_opened));
+ }
+ else
+ debug_log("account couldn't open. Edit/Search mode");
+ }
+
+}
+
+static void _main_back_clicked(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (!data) {
+ debug_log("data is NULL");
+ return;
+ }
+
+ EmailMailboxUGD *mailbox_ugd = data;
+ Evas_Object *cancel_btn = elm_object_part_content_get(mailbox_ugd->searchbar_layout, "button_cancel");
+ if (mailbox_ugd->view_type == EMAIL_VIEW_SEARCH) {
+ elm_object_focus_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_TRUE);
+ //evas_object_smart_callback_call(mailbox_ugd->searchbar_layout, "cancel,clicked", mailbox_ugd);
+ evas_object_smart_callback_call(cancel_btn, "clicked", mailbox_ugd);
+ } else if (mailbox_ugd->view_type == EMAIL_VIEW_EDIT) {
+ //elm_toolbar_item_selected_set(mailbox_ugd->edit_cancel_button, EINA_TRUE);
+ _edit_back_cb(mailbox_ugd, NULL, NULL);
+ } else {
+ Elm_Object_Item* it_sweep = NULL;
+ it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(mailbox_ugd->gl[mailbox_ugd->view_type]);
+
+ if (it_sweep) {
+ elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+
+ elm_win_lower(ug_get_window());
+ }
+}
+
+
+
+
+static void _change_unread_icon_to_read_icon(Elm_Object_Item *item)
+{
+ debug_log("");
+
+ if (item == NULL) {
+ debug_log("item == NULL");
+ return;
+ }
+
+ const void* item_data = elm_object_item_data_get(item);
+ list_data *ld = (list_data *)item_data;
+ ld->is_seen = true;
+ elm_genlist_item_update(item);
+}
+
+void _open_email_body(gint uid, Elm_Object_Item *item)
+{
+ debug_log("");
+ if (item == NULL) {
+ debug_log("item == NULL");
+ return;
+ }
+
+ if (uid <= 0) {
+ debug_log("uid <= 0");
+ return;
+ }
+
+ const void* item_data = elm_object_item_data_get(item);
+ list_data *ld = (list_data *)item_data;
+
+ if (ld == NULL) {
+ debug_critical(" ld == NULL");
+ return;
+ }
+ _change_unread_icon_to_read_icon(item);
+
+ EmailMailboxUGD *mailbox_ugd = ld->mailbox_ugd;
+ if (mailbox_ugd == NULL) {
+ debug_log("mailbox_ugd == NULL");
+ return;
+ }
+
+ debug_log("account_id: %d, mailbox_id: %d, mail_id; %d", ld->account_id, ld->mailbox_id, uid);
+
+ char id[30] = { 0, };
+ snprintf(id, sizeof(id), "%d", ld->account_id);
+ char suid[30] = { 0, };
+ snprintf(suid, sizeof(suid), "%d", uid);
+ char mailboxid[30] = { 0, };
+ snprintf(mailboxid, sizeof(mailboxid), "%d", ld->mailbox_id);
+
+ int nidx = g_list_index(mailbox_ugd->list_data[mailbox_ugd->view_type], ld);
+ debug_log("nidx: %d", nidx);
+
+ char idx[30] = { 0, };
+ snprintf(idx, sizeof(idx), "%d", nidx);
+
+ char internal[30] = { 0, };
+ snprintf(internal, sizeof(internal), "%d", 1);
+
+ debug_log("account_id: %s", id);
+ debug_log("idx: %d", nidx);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAIL_ID, suid);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailboxid);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_INTERNAL, internal);
+
+ char bLandscape[30] = { 0, };
+ memset(bLandscape, 0x00, 30 * sizeof(char));
+
+ if (mailbox_ugd->isRotate)
+ sprintf(bLandscape, "%d", 1);
+ else
+ sprintf(bLandscape, "%d", 0);
+
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_FIRST_LANDSCAPE, bLandscape);
+ mailbox_ugd->ug_viewer = create_viewer_ug(UG_NAME_EMAIL_VIEWER, service, ld->mailbox_ugd);
+
+ service_destroy(service);
+}
+
+void _create_email_no_content_view(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+
+ if (mailbox_ugd->split_nocontent == NULL) {
+ Evas_Object *no_content = elm_layout_add(mailbox_ugd->navi_bar);
+ elm_layout_theme_set(no_content, "layout", "nocontents", "full");
+ elm_object_part_text_set(no_content, "elm.text", dgettext("sys_string", "IDS_COM_BODY_NO_CONTENTS"));
+ mailbox_ugd->split_nocontent = no_content;
+ }
+
+ Evas_Object *r_content = elm_object_part_content_get(mailbox_ugd->panes, "right");
+ if (r_content) evas_object_hide(r_content);
+ elm_object_part_content_unset(mailbox_ugd->panes, "right");
+ elm_object_part_content_set(mailbox_ugd->panes, "right", mailbox_ugd->split_nocontent);
+
+ elm_panes_content_left_size_set(mailbox_ugd->panes, 0.4);
+}
+
+static Evas_Object *_create_navigation_layout(Evas_Object *parent)
+{
+ debug_log("");
+
+ if (parent == NULL) {
+ debug_log("parent == NULL");
+ return NULL;
+ }
+
+ Evas_Object *navi_bar;
+ navi_bar = elm_naviframe_add(parent);
+ elm_object_part_content_set(parent, "elm.swallow.content", navi_bar);
+ evas_object_show(navi_bar);
+
+ return navi_bar;
+}
+
+static void _block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ evas_object_del(obj);
+}
+
+
+
+
+static void _account_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ int account_id = 0;
+ if (email_engine_get_default_account(&account_id) == false) {
+ Evas_Object *popup = elm_popup_add(mailbox_ugd->win_main);
+
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_POP_WARNING"));
+ elm_object_text_set(popup, _("IDS_EMAIL_POP_THERE_IS_NO_ACCOUNT_CREATE_A_NEW_ACCOUNT_FIRST"));
+ //elm_popup_mode_set(popup, ELM_POPUP_TYPE_ALERT);
+ evas_object_smart_callback_add(popup, "block,clicked", _block_clicked_cb, NULL);
+ elm_popup_timeout_set(popup, 3);
+ evas_object_show(popup);
+ return;
+ }
+
+ if (ug_pushed == false) {
+ ug_pushed = true;
+
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ mailbox_ugd->ug_account = create_account_ug(UG_NAME_EMAIL_ACCOUNT, service, mailbox_ugd);
+ service_destroy(service);
+ } else
+ return;
+}
+
+static void _folder_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ int account_id = 0;
+
+ if (email_engine_get_default_account(&account_id) == false) {
+ Evas_Object *popup = elm_popup_add(mailbox_ugd->win_main);
+
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_POP_WARNING"));
+ elm_object_text_set(popup, _("IDS_EMAIL_POP_THERE_IS_NO_ACCOUNT_CREATE_A_NEW_ACCOUNT_FIRST"));
+ //elm_popup_mode_set(popup, ELM_POPUP_TYPE_ALERT);
+ evas_object_smart_callback_add(popup, "block,clicked", _block_clicked_cb, NULL);
+ elm_popup_timeout_set(popup, 3);
+ evas_object_show(popup);
+ return;
+ }
+
+ if (ug_pushed == false) {
+ ug_pushed = true;
+
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+
+ service_h service;
+ if (SERVICE_ERROR_NONE != service_create(&service))
+ {
+ debug_log("creating service handle failed");
+ return;
+ }
+
+ char acctid[30] = { 0, };
+ snprintf(acctid, sizeof(acctid), "%d", mailbox_ugd->account_id);
+ char mailboxid[30] = { 0, };
+ snprintf(mailboxid, sizeof(mailboxid), "%d", mailbox_ugd->mailbox_id);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, acctid);
+ service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailboxid);
+ debug_log("account_id: %s, mailbox_id: %s", acctid, mailboxid);
+
+ mailbox_ugd->ug_account = create_folder_ug(UG_NAME_EMAIL_ACCOUNT, service, mailbox_ugd);
+ service_destroy(service);
+ }
+ else
+ {
+ /* destroy account ug and create mailbox ug */
+ if (mailbox_ugd->ug_account) {
+ destroy_account_cb(mailbox_ugd->ug_account, mailbox_ugd);
+ }
+ }
+ return;
+}
+
+
+
+
+
+
+
+static void _process_update(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_enter();
+ int account_id = 0;
+
+ if (email_engine_get_default_account(&account_id) == false) {
+ Evas_Object *popup = elm_popup_add(mailbox_ugd->win_main);
+
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_POP_WARNING"));
+ elm_object_text_set(popup, _("IDS_EMAIL_POP_THERE_IS_NO_ACCOUNT_CREATE_A_NEW_ACCOUNT_FIRST"));
+ //elm_popup_mode_set(popup, ELM_POPUP_TYPE_ALERT);
+ evas_object_smart_callback_add(popup, "block,clicked", _block_clicked_cb, NULL);
+ elm_popup_timeout_set(popup, 3);
+ evas_object_show(popup);
+ return;
+ }
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL) {
+ _sync_all_folder(mailbox_ugd);
+ } else {
+ _sync_curr_folder(mailbox_ugd, mailbox_ugd->mailbox_id);
+ }
+
+ elm_object_focus_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_TRUE);
+
+ if (EMAIL_VIEW_THREAD != mailbox_ugd->view_type)
+ {
+ if (mailbox_ugd->update_button == elm_object_part_content_get(mailbox_ugd->navi_title_ly, "right_btn"))
+ {
+ elm_object_part_content_unset(mailbox_ugd->navi_title_ly, "right_btn");
+ evas_object_hide(mailbox_ugd->update_button);
+ elm_object_part_content_set(mailbox_ugd->navi_title_ly, "right_btn", mailbox_ugd->sync_progress);
+ evas_object_show(mailbox_ugd->sync_progress);
+ }
+ }
+ else
+ {
+ if (mailbox_ugd->thread_update_button == elm_object_part_content_get(mailbox_ugd->navi_bar, "title_right_btn"))
+ {
+ elm_object_part_content_unset(mailbox_ugd->navi_bar, "title_right_btn");
+ evas_object_hide(mailbox_ugd->thread_update_button);
+ elm_object_part_content_set(mailbox_ugd->navi_bar, "title_right_btn", mailbox_ugd->sync_progress);
+ evas_object_show(mailbox_ugd->sync_progress);
+ }
+ }
+ debug_leave();
+}
+
+void _update_toolbar_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ _process_update(mailbox_ugd);
+}
+
+void _update_toolbar_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
+ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true);
+}
+
+
+/*
+static void email_delete_mail_bulk(EmailMailboxUGD *mailbox_ugd, const GList* del_list)
+{
+ debug_enter();
+ if ( !del_list ) return;
+
+ int account_id = mailbox_ugd->account_id;
+ GList *dlist = (GList*) del_list;
+ guint size = g_list_length(dlist);
+ int mail_ids[size];
+ memset(mail_ids, 0, sizeof(mail_ids));
+
+ email_mailbox_t mail_box = {0};
+ mail_box.account_id = account_id;
+
+ GList *cur = NULL;
+ int data = 0;
+ int i=0;
+ G_LIST_FOREACH(dlist, cur, data)
+ mail_ids[i++] = data;
+
+ int err = email_delete_message(&mail_box, mail_ids, (int)size, EMAIL_DELETE_LOCAL_AND_SERVER);
+
+ if (err != EMAIL_ERROR_NONE) {
+ debug_warning("email_delete_message account_id(%d) - err (%d)",
+ account_id, err);
+ }
+}
+*/
+
+
+void _update_navigationbar_title(EmailMailboxUGD *mailbox_ugd)
+{
+ debug_log("");
+ debug_log("mailbox_ugd->view_type: [%d], mailbox_ugd->mode: [%d]", mailbox_ugd->view_type, mailbox_ugd->mode);
+ debug_log("mailbox_ugd->account_id: [%d], mailbox_ugd->folder_alias: [%s]", mailbox_ugd->account_id, mailbox_ugd->folder_alias);
+
+ if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL) {
+
+ elm_icon_file_set(mailbox_ugd->sp_icon, ICON_TITLE_ALL_ACC, NULL);
+
+ {
+ elm_object_item_text_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], _("IDS_EMAIL_BODY_INBOX"));
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", _("IDS_EMAIL_BODY_INBOX"));
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_sub", _("IDS_EMAIL_HEADER_ALL_ACCOUNTS"));
+
+ if (mailbox_ugd->isRotate == false) {
+ _create_controlbar(mailbox_ugd);
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar", mailbox_ugd->controlbar_btns);
+ }
+ }
+ } else {
+ _create_controlbar(mailbox_ugd);
+ elm_object_item_text_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], mailbox_ugd->folder_alias);
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_title", mailbox_ugd->folder_alias);
+ elm_object_part_text_set(mailbox_ugd->navi_title_ly, "txt_sub", mailbox_ugd->user_email);
+
+ email_account_t *account;
+ email_get_account(mailbox_ugd->account_id, 0, &account);
+ elm_icon_file_set(mailbox_ugd->sp_icon, account->logo_icon_path, NULL);
+ if(account) email_free_account(&account, 1);
+
+ elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar", mailbox_ugd->controlbar_btns);
+
+ }
+}
+
+static void _account_dim_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ debug_log("");
+
+ EmailMailboxUGD *mailbox_ugd;
+ mailbox_ugd = (EmailMailboxUGD *)data;
+
+ /* destroy account ug and create mailbox ug */
+ if (mailbox_ugd->ug_account) {
+ destroy_account_cb(mailbox_ugd->ug_account, mailbox_ugd);
+ }
+}
+
+email_sort_type_t _mailbox_conv_sort_type(EmailSortType sort_type)
+{
+ email_sort_type_t email_svc_sort_type = EMAIL_SORT_END;
+
+ if (sort_type == EMAIL_SORT_DATE_RECENT)
+ email_svc_sort_type = EMAIL_SORT_DATETIME_HIGH;
+ else if (sort_type == EMAIL_SORT_DATE_OLDEST)
+ email_svc_sort_type = EMAIL_SORT_DATETIME_LOW;
+ else if (sort_type == EMAIL_SORT_SENDER_ATOZ)
+ email_svc_sort_type = EMAIL_SORT_SENDER_HIGH;
+ else if (sort_type == EMAIL_SORT_SENDER_ZTOA)
+ email_svc_sort_type = EMAIL_SORT_SENDER_LOW;
+ else if (sort_type == EMAIL_SORT_RCPT_ATOZ)
+ email_svc_sort_type = EMAIL_SORT_RCPT_HIGH;
+ else if (sort_type == EMAIL_SORT_RCPT_ZTOA)
+ email_svc_sort_type = EMAIL_SORT_RCPT_LOW;
+ else if (sort_type == EMAIL_SORT_UNREAD)
+ email_svc_sort_type = EMAIL_SORT_SEEN_FLAG_HIGH;
+ else if (sort_type == EMAIL_SORT_IMPORTANT)
+ email_svc_sort_type = EMAIL_SORT_FAVORITE_HIGH;
+ else if (sort_type == EMAIL_SORT_PRIORITY)
+ email_svc_sort_type = EMAIL_SORT_PRIORITY_HIGH;
+ else if (sort_type == EMAIL_SORT_MEETING_REQUEST)
+ email_svc_sort_type = EMAIL_SORT_FLAGGED_FLAG_HIGH;
+ else if (sort_type == EMAIL_SORT_ATTACHMENTS)
+ email_svc_sort_type = EMAIL_SORT_ATTACHMENT_HIGH;
+ else
+ debug_error("INVALID sort_type");
+
+ return email_svc_sort_type;
+}
--- /dev/null
+/*
+ * 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.
+ */
+
+#define GENLIST_HEIGHT_1_INC 1
+#define GENLIST_HEIGHT_16_INC 16
+#define GENLIST_HEIGHT_33_INC 33
+#define GENLIST_HEIGHT_49_INC 49
+#define GENLIST_HEIGHT_62_INC 62
+#define GENLIST_HEIGHT_65_INC 65
+#define GENLIST_HEIGHT_73_INC 73
+#define GENLIST_HEIGHT_77_INC 77
+#define GENLIST_HEIGHT_89_INC 89
+#define GENLIST_HEIGHT_93_INC 93
+#define GENLIST_HEIGHT_97_INC 97
+#define GENLIST_HEIGHT_113_INC 113
+#define GENLIST_HEIGHT_129_INC 129
+#define GENLIST_HEIGHT_177_INC 177
+#define GENLIST_HEIGHT_182_INC 182
+#define GENLIST_HEIGHT_190_INC 190
+#define GENLIST_HEIGHT_207_INC 207
+#define GENLIST_HEIGHT_260_INC 260
+#define GENLIST_HEIGHT_291_INC 291
+#define GENLIST_HEIGHT_454_INC 454
+#define GENLIST_HEIGHT_566_INC 566
+
+#define GENLIST_PADDING_4_INC 4
+#define GENLIST_PADDING_5_INC 5
+#define GENLIST_PADDING_6_INC 6
+#define GENLIST_PADDING_8_INC 8
+#define GENLIST_PADDING_10_INC 10
+#define GENLIST_PADDING_11_INC 11
+#define GENLIST_PADDING_12_INC 12
+#define GENLIST_PADDING_13_INC 13
+#define GENLIST_PADDING_14_INC 14
+#define GENLIST_PADDING_16_INC 16
+#define GENLIST_PADDING_18_INC 18
+#define GENLIST_PADDING_21_INC 21
+#define GENLIST_PADDING_22_INC 22
+#define GENLIST_PADDING_24_INC 24
+#define GENLIST_PADDING_27_INC 27
+#define GENLIST_PADDING_32_INC 32
+#define GENLIST_PADDING_34_INC 34
+#define GENLIST_PADDING_46_INC 46
+#define GENLIST_PADDING_48_INC 48
+#define GENLIST_PADDING_64_INC 64
+#define GENLIST_PADDING_74_INC 74
+#define GENLIST_PADDING_88_INC 88
+#define GENLIST_PADDING_124_INC 124
+
+#define GENLIST_FONT_27_INC 27
+#define GENLIST_FONT_28_INC 28
+#define GENLIST_FONT_30_INC 30
+#define GENLIST_FONT_32_INC 32
+#define GENLIST_FONT_STYLE_32_INC "32"
+#define GENLIST_FONT_36_INC 36
+#define GENLIST_FONT_STYLE_36_INC "36"
+#define GENLIST_FONT_40_INC 40
+#define GENLIST_FONT_STYLE_40_INC "40"
+#define GENLIST_FONT_42_INC 42
+#define GENLIST_FONT_STYLE_42_INC "42"
+#define GENLIST_FONT_44_INC 44
+#define GENLIST_FONT_STYLE_44_INC "44"
+#define GENLIST_FONT_48_INC 48
+#define GENLIST_FONT_STYLE_48_INC "48"
+
+#define GENLIST_SIZE_6_INC 6
+#define GENLIST_SIZE_8_INC 8
+#define GENLIST_SIZE_10_INC 10
+#define GENLIST_SIZE_13_INC 13
+#define GENLIST_SIZE_16_INC 16
+#define GENLIST_SIZE_18_INC 18
+#define GENLIST_SIZE_21_INC 21
+#define GENLIST_SIZE_32_INC 32
+#define GENLIST_SIZE_35_INC 35
+#define GENLIST_SIZE_38_INC 38
+#define GENLIST_SIZE_40_INC 40
+#define GENLIST_SIZE_42_INC 42
+#define GENLIST_SIZE_44_INC 44
+#define GENLIST_SIZE_45_INC 45
+#define GENLIST_SIZE_46_INC 46
+#define GENLIST_SIZE_48_INC 48
+#define GENLIST_SIZE_54_INC 54
+#define GENLIST_SIZE_56_INC 56
+#define GENLIST_SIZE_57_INC 57
+#define GENLIST_SIZE_61_INC 61
+#define GENLIST_SIZE_SLIDE_60_INC 60
+#define GENLIST_SIZE_64_INC 64
+#define GENLIST_SIZE_74_INC 74
+#define GENLIST_SIZE_SLIDE_74_INC 74
+#define GENLIST_SIZE_80_INC 80
+#define GENLIST_SIZE_90_INC 90
+#define GENLIST_SIZE_96_INC 96
+#define GENLIST_SIZE_112_INC 112
+#define GENLIST_SIZE_116_INC 116
+#define GENLIST_SIZE_128_INC 128
+#define GENLIST_SIZE_133_INC 133
+#define GENLIST_SIZE_141_INC 141
+#define GENLIST_SIZE_144_INC 144
+#define GENLIST_SIZE_154_INC 154
+#define GENLIST_SIZE_160_INC 160
+#define GENLIST_SIZE_163_INC 163
+#define GENLIST_SIZE_168_INC 168
+#define GENLIST_SIZE_174_INC 174
+#define GENLIST_SIZE_SLIDE_165_INC 165
+#define GENLIST_SIZE_176_INC 176
+#define GENLIST_SIZE_177_INC 177
+#define GENLIST_SIZE_192_INC 192
+#define GENLIST_SIZE_195_INC 195
+#define GENLIST_SIZE_197_INC 197
+#define GENLIST_SIZE_206_INC 206
+#define GENLIST_SIZE_234_INC 234
+#define GENLIST_SIZE_235_INC 235
+#define GENLIST_SIZE_SLIDE_220_INC 220
+#define GENLIST_SIZE_304_INC 304
+#define GENLIST_SIZE_390_INC 390
+#define GENLIST_SIZE_448_INC 448
+#define GENLIST_SIZE_560_INC 560
+#define GENLIST_SIZE_576_INC 576
+#define GENLIST_SIZE_672_INC 672
+
+#define GENLIST_TREESIZE_16_INC 16
+#define GENLIST_TREESIZE_20_INC 20
+#define GENLIST_TREESIZE_32_INC 32
+
+#define GENLIST_PART_FONT_LIST_MAIN_TEXT_READ_COLOR_INC 158 158 158 255
+#define GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_LIST_MAIN_TEXT_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC 100 100 100 255
+#define GENLIST_PART_FONT_LIST_SUB_TEXT_SETTINGS_COLOR_INC 0 140 210 255
+#define GENLIST_PART_FONT_LIST_SUB_TEXT_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_FLEXIBLE_TEXT_MAIN_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_FLEXIBLE_TEXT_SUB_COLOR_INC 149 149 149 255
+#define GENLIST_PART_FONT_INDEX_LIST_COLOR_INC 164 164 164 255
+#define GENLIST_PART_FONT_EDITFIELD_TEXT_COLOR_INC 70 70 70 255
+#define GENLIST_PART_FONT_EDITFIELD_TEXT_CURSOR_COLOR_INC 0 140 210 255
+#define GENLIST_PART_FONT_MULTILINE_TEXT_COLOR_INC 149 149 149 255
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_READ_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_UNREAD_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_COLOR_INC 104 137 152 255
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_CONVERTOR_STYLE_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_CONVERTOR_STYLE_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_UNREAD_EMAIL_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_CONTENTS_TEXT_COLOR_INC 119 119 119 255
+#define GENLIST_PART_FONT_NAME_TEXT_COLOR_INC 129 129 129 255
+#define GENLIST_PART_FONT_NAME_TEXT_DIM_COLOR_INC 0 140 210 255
+#define GENLIST_PART_FONT_BUBBLE_READ_MESSAGE_COLOR_INC 0 0 0 255
+#define GENLIST_PART_FONT_BUBBLE_MESSAGE_TIME_COLOR_INC 96 96 96 255
+#define GENLIST_PART_FONT_BUBBLE_SENT_MESSAGE_COLOR_INC 0 0 0 255
+#define GENLIST_PART_FONT_BUBBLE_SOS_MESSAGE_COLOR_INC 211 0 0 255
+#define GENLIST_PART_FONT_BUBBLE_MESSAGE_DATE_COLOR_INC 164 164 164 255
+#define GENLIST_PART_FONT_BUBBLE_LINK_MESSAGE_COLOR_INC 34 129 157 255
+#define GENLIST_PART_FONT_BUBBLE_MESSAGE_FAILED_COLOR_INC 211 0 0 255
+#define GENLIST_PART_FONT_BUBBLE_READ_MESSAGE_NAME_COLOR_INC 57 166 215 255
+#define GENLIST_PART_FONT_BUBBLE_MESSAGE_HELP_COLOR_INC 146 146 146 255
+#define GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC 118 118 118 255
+
+#define GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_LIST_SUB_TEXT_STYLE_COLOR_INC "#646464FF"
+#define GENLIST_PART_FONT_FLEXIBLE_TEXT_MAIN_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_FLEXIBLE_TEXT_SUB_STYLE_COLOR_INC "#959595FF"
+#define GENLIST_PART_FONT_MULTILINE_TEXT_STYLE_COLOR_INC "#959595FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_READ_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_UNREAD_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_FOCUS_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_STYLE_COLOR_INC "#688998FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_FOCUS_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_HELP_TEXT_STYLE_COLOR_INC "#929292FF"
+
+#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 110 // alpha was 64
+#define GENLIST_PART_BG_COLOR_INC 239 239 239 255
+#define GENLIST_PART_LIST_BG_COLOR_INC 239 239 239 255
+#define GENLIST_PART_LIST_LINE_COLOR_INC 187 187 187 255
+#define GENLIST_PART_LIST_PRESS_COLOR_INC 0 140 210 255
+#define GENLIST_PART_TEXT_PRESS_COLOR_INC 68 120 169 255
+#define GENLIST_PART_EXPANDABLE_2ND_DEPTH_BG_COLOR_INC 31 31 31 255
+#define GENLIST_PART_EXPANDABLE_3ND_DEPTH_BG_COLOR_INC 46 46 46 255
+#define GENLIST_PART_EDIT_SELECT_ALL_BG_COLOR_INC 36 36 36 255
+#define GENLIST_PART_EDIT_REORDER_BG_COLOR_INC 36 36 36 255
+#define GENLIST_PART_EDIT_1PIXEL_LINE_COLOR_INC 68 68 68 255
+#define GENLIST_PART_BUBBLE_DATE_BG_COLOR_INC 66 66 66 255
+#define GENLIST_PART_BUBBLE_1PIXEL_LINE_COLOR_INC 153 153 153 255
+#define GENLIST_PART_INDEX_LIST_BASE_EVENT_INC \
+ part { name: "base_event";\
+ type: RECT;\
+ repeat_events: 0;\
+ description { state: "default" 0.0;\
+ color: 0 0 0 0;\
+ }\
+ }
+#define GENLIST_PART_INDEX_LIST_BASE_IMAGE_INC \
+ part { name: "base_image";\
+ repeat_events: 1;\
+ description { state: "default" 0.0;\
+ rel1.to: "rect";\
+ rel2.to: "rect";\
+ image {\
+ normal: "00_index_list_bg.png";\
+ }\
+ }\
+ }
+
+#define GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_MATCH_TAG_COLOR_INC "+ color=#3F8DAD"
+
+#define GENLIST_DIALOGUE_FONT_SUB_TITLE_COLOR_INC 102 102 102 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_01_COLOR_INC 153 153 153 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_01_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_02_COLOR_INC 63 141 173 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_02_DIM_COLOR_INC 63 141 173 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_02_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_TEXT_MAIN_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_TEXT_SUB_COLOR_INC 146 146 146 255
+#define GENLIST_DIALOGUE_FONT_APPS_NAME_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_APPS_INC_COLOR_INC 146 146 146 255
+#define GENLIST_DIALOGUE_FONT_APPS_RATING_COLOR_INC 146 146 146 255
+#define GENLIST_DIALOGUE_FONT_APPS_PRICE_ORIGINAL_COLOR_INC 0 140 210 255
+#define GENLIST_DIALOGUE_FONT_APPS_PRICE_SALE_COLOR_INC 221 134 21 255
+#define GENLIST_DIALOGUE_FONT_APPS_PRICE_FREE_COLOR_INC 0 140 210 255
+#define GENLIST_DIALOGUE_FONT_PASSWORD_TITLE_COLOR_INC 153 153 153 255
+#define GENLIST_DIALOGUE_FONT_PASSWORD_INPUT_TEXT_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_WORD_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_PRONUNCIATION_COLOR_INC 152 89 0 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_NATION_COLOR_INC 146 146 146 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_INFO_01_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_INFO_02_COLOR_INC 146 146 146 255
+
+#define GENLIST_DIALOGUE_GROUP_BG_COLOR_INC 36 36 36 255
+#define GENLIST_DIALOGUE_GROUP_LIST_BG_COLOR_INC 36 36 36 255
+#define GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC 68 68 68 255
+#define GENLIST_DIALOGUE_1PIXEL_LINE_COLOR_INC 68 68 68 255
+#define GENLIST_DIALOGUE_ICON_1PIXEL_LINE_COLOR_INC 68 68 68 255
+#define GENLIST_DIALOGUE_PHOTO_ID_1PIXEL_LINE_COLOR_INC 68 68 68 255
+
+#define GENLIST_PART_TEXTBLOCK_READ_STYLE_COLOR_INC "#9E9E9EFF"
+#define GENLIST_PART_TEXTBLOCK_UNREAD_STYLE_COLOR_INC "#000000FF"
+#define GENLIST_PART_TEXTBLOCK_URGENCY_READ_STYLE_COLOR_INC "#AB5252"
+#define GENLIST_PART_TEXTBLOCK_URGENCY_UNREAD_STYLE_COLOR_INC "#CF2525"
+#define GENLIST_PART_TEXTBLOCK_STYLE_COLOR_INC "#818181FF"
+#define GENLIST_PART_TEXTBLOCK_STYLE_SELECTED_COLOR_INC "#4478A9FF"
+
+#define GENLIST_PART_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PART_BG \
+ part { name: "bg"; \
+ type: RECT; \
+ clip_to: "disclip"; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+ description { state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ rel1 { relative: 0.025 0.0; } \
+ rel2 { relative: 1.025 1.0; } \
+ } \
+ description { state: "hide" 0.1; \
+ inherit: "default" 0.0; \
+ rel1 { relative: 0.13 0.0; } \
+ rel2 { relative: 1.13 1.0; } \
+ } \
+ description { state: "hide" 0.2; \
+ inherit: "default" 0.0; \
+ rel1 { relative: 0.5 0.0; } \
+ rel2 { relative: 1.5 1.0; } \
+ } \
+ description { state: "hide" 0.3; \
+ inherit: "default" 0.0; \
+ rel1 { relative: 1.0 0.0; } \
+ rel2 { relative: 2.0 1.0; } \
+ } \
+ }
+
+#define GENLIST_PART_BG_IMAGE \
+ part { name: "bg_image"; \
+ type: RECT; \
+ clip_to: "disclip"; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ color: GENLIST_PART_LIST_BG_COLOR_INC; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PART_BOTTOM_LINE \
+ part { name: "bottom_line"; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+ rel1 { \
+ relative: 0.0 1.0; \
+ offset: 0 -1; \
+ } \
+ } \
+ }
+
+#define GENLIST_PART_BOTTOM_EFFECT_LINE \
+ part { name: "bottom_line"; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+ rel1 { \
+ relative: 0.0 1.0; \
+ offset: 0 -1; \
+ } \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ }
+
+#define GENLIST_PART_PADDING_TOP( param_padding_size ) \
+ part { name: "elm.padding.top"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 param_padding_size; \
+ fixed: 0 1; \
+ visible: 0; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.0 0.0; \
+ } \
+ }
+
+#define GENLIST_PART_PADDING_TEXT_TOP( param_padding_size ) \
+ part { name: "elm.padding.text.top"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 param_padding_size; \
+ fixed: 0 1; \
+ visible: 0; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.0 0.0; \
+ } \
+ }
+
+#define GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \
+ part { name: "elm.padding.bottom"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_padding_size; \
+ fixed: 0 1; \
+ visible: 0; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.0 1.0; \
+ } \
+ }
+
+#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \
+ part { name: "elm.padding.left"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+ }
+
+#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \
+ part { name: "elm.padding.right"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel1.relative: 1.0 0.0; \
+ align: 1.0 0.0; \
+ } \
+ }
+
+#define GENLIST_PART_DIALOGUE_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ clip_to: "disclip"; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: LAYOUT_GROUP_LIST_BG_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PART_DIALOGUE_ITEM \
+ part { name: "elm.rect.dialogue"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_12_INC 0; \
+ fixed: 1 0; \
+ color: GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+ }
+
+#define GENLIST_PART_DIALOGUE_EXPANDABLE_ITEM \
+ part { name: "elm.rect.dialogue"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_12_INC 0; \
+ fixed: 1 0; \
+ color: GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ }
+
+#define GENLIST_PART_SWALLOW_END( param_padding_size ) \
+ part { name: "elm.padding.left.swallow.end";\
+ clip_to: "disclip"; \
+ type: RECT;\
+ scale: 1;\
+ description { state: "default" 0.0;\
+ min: param_padding_size 0;\
+ fixed: 1 0;\
+ visible: 0; \
+ rel1.to_x: "elm.swallow.end";\
+ rel2 {\
+ relative: 0.0 1.0;\
+ to_x: "elm.swallow.end";\
+ }\
+ align: 1.0 0.5;\
+ }\
+ }\
+ part { name: "elm.swallow.end";\
+ clip_to: "disclip"; \
+ type: SWALLOW;\
+ scale: 1;\
+ description { state: "default" 0.0;\
+ fixed: 1 0;\
+ align: 1.0 0.5;\
+ rel1.to_x: "elm.padding.right";\
+ rel2 {\
+ relative: 0.0 1.0;\
+ to_x: "elm.padding.right";\
+ }\
+ }\
+ }
+
+#define GENLIST_PART_DISCLIP \
+ part { name: "disclip"; \
+ type: RECT; \
+ description { state: "default" 0.0; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_DISCLIP_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_EXPANDABLE_PART_PERSPECTIVE_POINT() \
+ part { name: "point"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ color: 0 0 0 0; \
+ rel1 { relative: 0.0 0.0; } \
+ rel2 { relative: 1.0 0.0; } \
+ } \
+ }
+
+#define GENLIST_PART_MAP_START( param_x, param_y, param_z ) \
+ description { state: "map_transition" 0.0; \
+ inherit: "default" 0.0; \
+ color: 50 50 50 100; \
+ map { \
+ perspective: "point"; \
+ on: 1; \
+ smooth: 1; \
+ perspective_on: 1; \
+ backface_cull: 1; \
+ rotation { \
+ center: "point"; \
+ x: param_x; \
+ y: param_y; \
+ z: param_z; \
+ } \
+ } \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ }
+
+#define GENLIST_PART_MAP_FINISH( param_x, param_y, param_z ) \
+ description { \
+ state: "map_rotate" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ perspective: "point"; \
+ on: 1; \
+ smooth: 1; \
+ perspective_on: 1; \
+ backface_cull: 1; \
+ rotation { \
+ center: "point"; \
+ x: param_x; \
+ y: param_y; \
+ z: param_z; \
+ } \
+ } \
+ } \
+
+#define GENLIST_PART_MAP_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ }
+
+#define GENLIST_EXPANDABLE_PART_BASE( GE_HEIGHT , GE_COLOR ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 GE_HEIGHT; \
+ color: GE_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ }
+
+/* XXX: refactor expandable edc first.
+ and use GENLIST_EXPANDABLE_PART_BASE_NEW as GENLIST_EXPANDABLE_PART_BASE.
+*/
+#define GENLIST_EXPANDABLE_PART_BASE_NEW( GE_HEIGHT , GE_COLOR ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 GE_HEIGHT; \
+ color: GE_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PROGRAM_MAP_ROTATE_EXPAND_START() \
+ name: "rotaion_transition"; \
+ signal: "flip_item"; \
+ action: STATE_SET "map_transition" 0.0; \
+ after: "rotation";
+
+#define GENLIST_PROGRAM_MAP_ROTATE_EXPAND_FINISH( second ) \
+ name: "rotation"; \
+ action: STATE_SET "map_rotate" 0.0; \
+ transition: LINEAR second; \
+ after: "rotation_end";
+
+#define GENLIST_PROGRAM_MAP_EXPAND_END() \
+ name: "rotation_end"; \
+ action: STATE_SET "default" 0.0;
+
+#define GENLIST_PROGRAM_MAP_ROTATE_CONTRACT_START() \
+ name: "rotation_transition2"; \
+ signal: "elm,state,contract_flip"; \
+ action: STATE_SET "map_rotate" 0.0; \
+ after: "rotation2";
+
+#define GENLIST_PROGRAM_MAP_ROTATE_CONTRACT_FINISH( second ) \
+ name: "rotation2"; \
+ action: STATE_SET "map_transition" 0.0; \
+ transition: LINEAR second; \
+ after: "rotation3";
+
+#define GENLIST_PROGRAM_MAP_CONTRACT_END() \
+ name: "rotation3"; \
+ action: STATE_SET "hide" 0.0;
+
+#define GENLIST_PART_EXPANDABLE2_NOSHADOW_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_EXPANDABLE_2ND_DEPTH_BG_COLOR_INC; \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ }
+
+#define GENLIST_PART_EXPANDABLE_SWALLOW_PADDING \
+ part { name: "elm.swallow.pad"; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ fixed: 1 0; \
+ align: 0.0 0.5; \
+ rel1 { \
+ relative: 1.0 0.0;\
+ to_x: "elm.padding.left"; \
+ } \
+ rel2.to_x: "elm.padding.left"; \
+ } \
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+ } \
+
+#define GENLIST_PART_PADDING_LEFT_SLIDE( param_padding_size ) \
+ part { name: "elm.padding.left"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel1 { relative: 0.0 0.0; to: "bg"; } \
+ rel2 { relative: 0.0 1.0; to: "bg"; } \
+ align: 0.0 0.0; \
+ } \
+ }
+
+/* only for demo */
+#define GENLIST_PART_BUTTON( param_name, param_text_name, param_text, param_left, param_right, param_top, param_bottom ) \
+ part { name: param_name; \
+ mouse_events: 1; \
+ description { state: "default" 0.0; \
+ visible: 1; \
+ rel1 { relative: param_left param_top; offset: 0 0; } \
+ rel2 { relative: param_right param_bottom; offset: -1 -1; } \
+ image { \
+ normal: "btn_normal.png"; \
+ border: 10 10 10 10; \
+ border_scale: 1; \
+ } \
+ image.middle: SOLID; \
+ fill.smooth: 0; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ image { \
+ normal: "btn_selected.png"; \
+ } \
+ } \
+ } \
+ part { name: param_text_name; \
+ type: TEXT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ align: 0.0 0.0; \
+ state: "default" 0.0; \
+ color: 0 0 0 255; \
+ rel1 { relative: 0.0 0.0; to: param_name; } \
+ rel2 { relative: 1.0 1.0; to: param_name; } \
+ text { \
+ text: param_text; \
+ font: "SLP:style=Roman"; \
+ size: 24; \
+ min: 1 1; \
+ align: 0.5 0.5; \
+ text_class: "list_item"; \
+ } \
+ } \
+ }
+
+/* only for demo */
+#define GENLIST_PROGRAM_BUTTON( param_name_focused, param_name_normal, param_part_name ) \
+ program { name: param_name_focused; \
+ source: param_part_name; \
+ signal: "mouse,down,1"; \
+ action: STATE_SET "selected" 0.0; \
+ target: param_part_name; \
+ } \
+ program { name: param_name_normal; \
+ source: param_part_name; \
+ signal: "mouse,up,1"; \
+ action: STATE_SET "default" 0.0; \
+ target: param_part_name; \
+ }
+
+#define GENLIST_PROGRAM_SLIDE_WITH_AFTER( param_name, param_state, param_next ) \
+ program { name: param_name; \
+ action: STATE_SET "hide" param_state; \
+ target: "bg"; \
+ transition: LINEAR 0.3; \
+ after: param_next; \
+ }
+
+#define GENLIST_PROGRAM_SLIDE( param_name, param_state_name, param_state_value ) \
+ program { name: param_name; \
+ action: STATE_SET param_state_name param_state_value; \
+ target: "bg"; \
+ transition: LINEAR 0.3; \
+ }
+
+#define DESC_FLIP_IMAGE( param_state_value, param_image_file_name ) \
+ description { state: "flipping" param_state_value; \
+ inherit: "default" 0.0; \
+ image { normal: param_image_file_name; } \
+ }
+
+#define DESC_TEXT_HIDE( param_state_value ) \
+ description { state: "hide" param_state_value; \
+ inherit: "default" 0.0; \
+ color: 0 0 0 (255*(1-param_state_value/0.20)); \
+ }
+
+#define GENLIST_EDIT_PART_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 0; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: 0 0 0 0; \
+ } \
+ }
+
+#define GENLIST_PART_FLIP \
+ part { name: "elm.flip.content"; \
+ clip_to: "disclip"; \
+ type: SWALLOW; \
+ mouse_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ fixed: 1 1; \
+ rel1 { \
+ relative: 1.0 0.5; \
+ to_x: "elm.padding.left"; \
+ } \
+ rel2 { \
+ relative: 0.0 0.5; \
+ to_x: "elm.padding.right"; \
+ } \
+ } \
+ description { state: "flip_enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ }
+
+#define GENLIST_DESCRIPTION_INVISIBLE_SELECTED \
+ description { state: "selected" 1.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ }
+
+#define GENLIST_DESCRIPTION_FLIP_ENABLED \
+ description { state: "flip_enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_1TEXT \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"elm.text", st, 30, vl); \
+ set_state(PART:"bg_image", "selected", 0.0); \
+ if (!strcmp(st, "flip_enabled")) \
+ set_state(PART:"elm.text", "selected", 1.0); \
+ else \
+ set_state(PART:"elm.text", "selected", 0.0); \
+ }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"elm.text.1", st, 30, vl); \
+ set_state(PART:"bg_image", "selected", 0.0); \
+ if (!strcmp(st, "flip_enabled")) { \
+ set_state(PART:"elm.text.1", "selected", 1.0); \
+ set_state(PART:"elm.text.2", "selected", 1.0); \
+ } \
+ else { \
+ set_state(PART:"elm.text.1", "selected", 0.0); \
+ set_state(PART:"elm.text.2", "selected", 0.0); \
+ } \
+ }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"elm.text.1", st, 30, vl); \
+ set_state(PART:"bg_image", "selected", 0.0); \
+ if (!strcmp(st, "flip_enabled")) { \
+ set_state(PART:"elm.text.1", "selected", 1.0); \
+ set_state(PART:"elm.text.2", "selected", 1.0); \
+ set_state(PART:"elm.text.3", "selected", 1.0); \
+ } \
+ else { \
+ set_state(PART:"elm.text.1", "selected", 0.0); \
+ set_state(PART:"elm.text.2", "selected", 0.0); \
+ set_state(PART:"elm.text.3", "selected", 0.0); \
+ } \
+ }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_1ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_2ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_3ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_1ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_2ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_3ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_1ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_2ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.flip.content"; \
+ }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_3ICON \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.1"; \
+ target: "elm.text.2"; \
+ target: "elm.text.3"; \
+ target: "elm.icon.1"; \
+ target: "elm.icon.2"; \
+ target: "elm.icon.3"; \
+ target: "elm.flip.content"; \
+ }
+
+/* genlist multisense macro - start */
+#define GENLIST_PROGRAM_AFTER_PLAY_BUTTON_PRESS \
+ after: "play_button_press";
+
+#define GENLIST_PROGRAM_PLAY_BUTTON_PRESS \
+ program { name: "play_button_press"; \
+ action: PLAY_SAMPLE "button-pressed" 1.0; \
+ }
+
+
+#define TEXTBLOCK_TAG \
+ tag: "br" "\n";\
+ tag: "ps" "ps";\
+ tag: "tab" "\t";\
+ tag: "b" "+ font=SLP:style=Bold";\
+ tag: "match" GENLIST_PART_MATCH_TAG_COLOR_INC;
+
+styles {
+ style { name: "text_style"; // TODO: remove this later
+ base: "font=SLP:style=Roman font_size=28 color=#000000 wrap=char ellipsis=1.0 text_class=list_item";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "tab" "\t";
+ tag: "b" "+ font=SLP:style=Bold";
+ tag: "match" "+ color=#E58616FF";
+ }
+ style { name: "genlist_default_textblock_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_44_INC" color="GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_default_textblock_selected_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_44_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_sub_textblock_style";
+ base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_FONT_LIST_SUB_TEXT_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_sub_textblock_selected_style";
+ base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_multiline_textblock_style";
+ base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_FONT_MULTILINE_TEXT_STYLE_COLOR_INC" wrap=char text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_multiline_textblock_selected_style";
+ base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_textblock_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_42_INC" color="GENLIST_PART_FONT_3LINE_MAIN_TEXT_UNREAD_STYLE_COLOR_INC" wrap=char text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_textblock_selected_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_42_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_textblock_sub_style";
+ base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_STYLE_COLOR_INC" wrap=char text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_textblock_sub_selected_style";
+ base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_textblock_flexible_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_48_INC" color="GENLIST_PART_FONT_FLEXIBLE_TEXT_MAIN_STYLE_COLOR_INC" wrap=char text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_textblock_flexible_selected_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_48_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_textblock_flexible_sub_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_FONT_FLEXIBLE_TEXT_SUB_STYLE_COLOR_INC" wrap=char text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_textblock_flexible_sub_selected_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_textblock_help_style";
+ base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_FONT_HELP_TEXT_STYLE_COLOR_INC" wrap=mixed text_class=list_item";
+ TEXTBLOCK_TAG
+ }
+
+ /* email styles */
+ style { name: "genlist_email_textblock_selected_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_44_INC" color="GENLIST_PART_TEXTBLOCK_STYLE_SELECTED_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_email_textblock_read_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_44_INC" color="GENLIST_PART_TEXTBLOCK_READ_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_email_textblock_unread_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_44_INC" color="GENLIST_PART_TEXTBLOCK_UNREAD_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_email_textblock_urgency_unread_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_44_INC" color="GENLIST_PART_TEXTBLOCK_URGENCY_UNREAD_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_email_textblock_urgency_read_style";
+ base: "font=SLP:style=Roman font_size="GENLIST_FONT_44_INC" color="GENLIST_PART_TEXTBLOCK_URGENCY_READ_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_email_textblock2_style";
+ base: "font=SLP:style=Medium font_size="GENLIST_FONT_32_INC" color="GENLIST_PART_TEXTBLOCK_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+ style { name: "genlist_email_textblock2_selected_style";
+ base: "font=SLP:style=Medium font_size="GENLIST_FONT_32_INC" color="GENLIST_PART_TEXTBLOCK_STYLE_SELECTED_COLOR_INC" text_class=list_item ellipsis=1.0";
+ TEXTBLOCK_TAG
+ }
+}
+/* genlist multisense macro - end */
+
+#define SEARCHBAR_BACKGROUND_COLOR_DEFAULT 215 225 232 255
+#define SEARCHBAR_BACKGROUND_COLOR_BLACK 36 36 36 255
+#define SEARCHBAR_BACKGROUND_COLOR_BLUE 17 23 27 255
+#define SEARCHBAR_BACKGROUND_COLOR_WHITE 215 225 232 255
+
+#define SELECTION_INFO_BACKGROUND_COLOR_INC 215 225 232 255
+#define SELECTION_INFO_TEXT_COLOR_INC 1 1 1 255
+#define SELECTION_INFO_MIN_VER_W_INC 512
+#define SELECTION_INFO_MIN_HORZ_W_INC 1280
+#define SELECTION_INFO_VER_PADDING_INC 48
+#define SELECTION_INFO_TEXT_FONT_SIZE_INC 32
+#define SELECTION_INFO_MIN_VER_BOTTOM_64_H_INC 150
--- /dev/null
+/*
+ * 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.
+ */
+
+#include "email-mailbox-theme-macro.edc"
+
+collections
+{
+ group
+ {
+ name: "layout.email.mailbox.hd";
+ parts
+ {
+ part { name: "bg";
+ mouse_events: 0;
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 0;
+ }
+ }
+
+ part
+ {
+ name: "searchbar.bg";
+ type: RECT;
+ scale: 1;
+
+ description
+ {
+ state: "default" 0.0;
+ min: 0 106;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ visible: 1;
+ color: 255 255 255 0;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 1.0 0.0; to: "bg";}
+ }
+ description
+ {
+ state: "searchbar_hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ visible: 0;
+ color: 255 255 255 0;
+ }
+ }
+ part {
+ name: "searchbar";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ }
+ }
+
+ part
+ {
+ name: "list";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ visible: 1;
+ color: 255 255 255 0;
+ rel1 { relative: 0.0 1.0; to: "searchbar";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ }
+ description
+ {
+ state: "list_hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part
+ {
+ name: "noc";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ color: 255 255 255 0;
+ visible: 0;
+ rel1 { relative: 0.0 1.0; to: "searchbar";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ }
+ description
+ {
+ state: "noc_show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ } //end parts
+
+ programs {
+ program {
+ name: "searchbar_show";
+ signal: "show_searchbar";
+ source: "search";
+ action: STATE_SET "default" 0.0;
+ target: "searchbar.bg";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "searchbar_hide";
+ signal: "hide_searchbar";
+ source: "search";
+ action: STATE_SET "searchbar_hide" 0.0;
+ target: "searchbar.bg";
+ transition: LINEAR 0.1;
+ }
+
+ program {
+ name: "list_show";
+ signal: "show_list";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "list";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "list_hide";
+ signal: "hide_list";
+ source: "elm";
+ action: STATE_SET "list_hide" 0.0;
+ target: "list";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "noc_show";
+ signal: "show_noc";
+ source: "elm";
+ action: STATE_SET "noc_show" 0.0;
+ target: "noc";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "noc_hide";
+ signal: "hide_noc";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "noc";
+ transition: LINEAR 0.1;
+ }
+ }
+ } //end group
+
+ group {
+ name: "search";
+ parts {
+ part {
+ name: "bg";
+ mouse_events: 0;
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: SEARCHBAR_BACKGROUND_COLOR_DEFAULT;
+ }
+ }
+ part {
+ name: "searchbar_area_category_pad_left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 16 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 0.0 1.0; to: "bg";}
+ color: SEARCHBAR_BACKGROUND_COLOR_DEFAULT;
+ }
+ }
+ part {
+ name: "searchbar_area_category_top";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 80 16;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "searchbar_area_category_pad_left";}
+ rel2 { relative: 1.0 0.0; to: "searchbar_area_category_pad_left";}
+ color: SEARCHBAR_BACKGROUND_COLOR_DEFAULT;
+ }
+ }
+ part {
+ name: "searchbar_area_category_bottom";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 80 16;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "searchbar_area_category_pad_left";}
+ rel2 { relative: 1.0 1.0; to: "searchbar_area_category_pad_left";}
+ color: SEARCHBAR_BACKGROUND_COLOR_DEFAULT;
+ }
+ }
+ part {
+ name: "searchbar_area_category";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 80 80;
+ max: 80 80;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 1.0;
+ to_x: "searchbar_area_category_pad_left";
+ to_y: "searchbar_area_category_top";}
+ rel2 { relative: 1.0 0.0;
+ to_x: "searchbar_area_category_pad_left";
+ to_y: "searchbar_area_category_bottom";}
+ }
+ }
+ part {
+ name: "searchbar_area_entry";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 107;
+ rel1 { relative: 1.0 0.0;
+ to_x: "searchbar_area_category";
+ to_y: "bg";
+ }
+ rel2 { relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "bg";}
+ }
+ }
+ } //end parts
+ } //end group
+
+group { name: "horizontal_bottom_64";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: SELECTION_INFO_MIN_VER_W_INC SELECTION_INFO_MIN_VER_BOTTOM_64_H_INC;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1.relative: 0.5 1.0;
+ rel2.relative: 0.5 1.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "base";
+ type: RECT;
+ mouse_events: 1;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 0 SELECTION_INFO_VER_PADDING_INC;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 1.0 0.32; to: "bg"; }
+ color: SELECTION_INFO_BACKGROUND_COLOR_INC;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ rel1 { to: "base"; }
+ rel2 { to: "base"; }
+ color: SELECTION_INFO_TEXT_COLOR_INC;
+ text {
+ font: "SLP";
+ size: SELECTION_INFO_TEXT_FONT_SIZE_INC;
+ text: "";
+ text_class: "slp";
+ }
+ }
+ }
+ }
+ programs {
+ program {
+ name: "clicked";
+ signal: "mouse,clicked,1";
+ source: "base";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ }
+}
+ group
+ {
+ name: "layout.email.mailbox";
+ parts
+ {
+ part { name: "bg";
+ mouse_events: 0;
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 0;
+ }
+ }
+
+ part
+ {
+ name: "searchbar.bg";
+ type: RECT;
+
+ description
+ {
+ state: "default" 0.0;
+ min: 0 69;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ visible: 1;
+ color: 255 255 255 0;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 1.0 0.0; to: "bg";}
+ }
+ description
+ {
+ state: "searchbar_hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ visible: 0;
+ color: 255 255 255 0;
+ }
+ }
+
+ part {
+ name: "searchbar";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "searchbar.bg";}
+ rel2 { relative: 1.0 1.0; to: "searchbar.bg";}
+ }
+ }
+
+ part
+ {
+ name: "list";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ visible: 1;
+ color: 255 255 255 0;
+ rel1 { relative: 0.0 1.0; to: "searchbar.bg";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ }
+ description
+ {
+ state: "list_hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part
+ {
+ name: "noc";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ color: 255 255 255 0;
+ visible: 1;
+ rel1 { relative: 0.0 1.0; to: "searchbar.bg";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ }
+ description
+ {
+ state: "noc_hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ } //end parts
+
+ programs {
+ program {
+ name: "searchbar_show";
+ signal: "show_searchbar";
+ source: "search";
+ action: STATE_SET "default" 0.0;
+ target: "searchbar.bg";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "searchbar_hide";
+ signal: "hide_searchbar";
+ source: "search";
+ action: STATE_SET "searchbar_hide" 0.0;
+ target: "searchbar.bg";
+ transition: LINEAR 0.1;
+ }
+
+ program {
+ name: "list_show";
+ signal: "show_list";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "list";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "list_hide";
+ signal: "hide_list";
+ source: "elm";
+ action: STATE_SET "list_hide" 0.0;
+ target: "list";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "noc_show";
+ signal: "show_noc";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "noc";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "noc_hide";
+ signal: "hide_noc";
+ source: "elm";
+ action: STATE_SET "noc_hide" 0.0;
+ target: "noc";
+ transition: LINEAR 0.1;
+ }
+ }
+ } //end group
+
+ group { name: "title";
+ images {
+ image: "00_winset_title_line.png" COMP;
+ image: "optionheader_arrow.png" COMP;
+ }
+
+ script {
+ public more_show = 0;
+ }
+
+ parts
+ {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 108;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 0 0 0 0;
+ align: 0.0 0.5;
+ }
+ }
+
+ part { name: "top_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 11;
+ fixed: 0 1;
+ visible: 0;
+ rel1 { to: "bg"; relative: 0 0; }
+ rel2 { to: "bg"; relative: 1 0; }
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "bottom_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 11;
+ fixed: 0 1;
+ visible: 0;
+ rel1 { to: "bg"; relative: 0 1; }
+ rel2 { to: "bg"; relative: 1 1; }
+ align: 0.0 1.0;
+ }
+ }
+
+ part { name: "left_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 5 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 { to: "bg"; relative: 0 0; }
+ rel2 { to: "bg"; relative: 0 1; }
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "right_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 5 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 { to: "bg"; relative: 1 0; }
+ rel2 { to: "bg"; relative: 1 1; }
+ align: 1.0 0.0;
+ }
+ }
+
+ part {
+ name: "title_area";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "left_padding";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: (440/720) 0.0;
+ to_x: "bg";
+ to_y: "bottom_padding";
+ }
+ color: 0 0 0 10;
+ }
+ }
+
+ part {
+ name: "txt_title";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: (16/440) 0.0; to: "title_area";}
+ rel2 { relative: (424/440) (52/88); to: "title_area";}
+ color : 249 249 249 255;
+ text { font: "SLP:style=Medium";
+ size: 40;
+ min: 0 0;
+ max: 1 0;
+ align: 0.0 0.5;
+ text_class: "slp";
+ }
+ align: 0.0 0.0;
+ fixed: 1 1;
+ min: 0 48;
+ }
+ }
+
+ part { name: "sub_left_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 21 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "left_padding";
+ to_y: "txt_title";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "left_padding";
+ to_y: "bottom_padding";
+ }
+ align: 0.0 0.0;
+ }
+ }
+
+ part {
+ name: "sub_left_icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 32 32;
+ max: 32 32;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "sub_left_padding";
+ to_y: "txt_title";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "sub_left_padding";
+ to_y: "bottom_padding";
+ }
+ align: 0.0 0.5;
+ }
+ }
+
+ part { name: "sub_mid_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 10 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "sub_left_icon";
+ to_y: "txt_title";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "sub_left_icon";
+ to_y: "bottom_padding";
+ }
+ align: 0.0 0.0;
+ }
+ }
+
+ part {
+ name: "sub_right_icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 32 32;
+ max: 32 32;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "title_area";
+ to_y: "txt_title";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "title_area";
+ to_y: "bottom_padding";
+ }
+ align: 1.0 0.0;
+ }
+ }
+
+ part {
+ name: "txt_sub";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "sub_mid_padding";
+ to_y: "txt_title";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "sub_right_icon";
+ to_y: "bottom_padding";
+ }
+ color : 249 249 249 255;
+ text { font: "SLP:style=Medium";
+ size: 32;
+ min: 0 0;
+ max: 1 0;
+ align: 0.0 0.5;
+ text_class: "slp";
+ }
+ align: 0.0 0.0;
+ fixed: 1 1;
+ min: 0 40;
+ }
+ }
+
+ part {
+ name: "right_btn";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 0;
+ min: 120 78;
+ max: 120 78;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "right_padding";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "right_padding";
+ to_y: "bottom_padding";
+ }
+ }
+ }
+
+ part {
+ name: "seperator1";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 2 48;
+ max: 2 48;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "right_btn";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "right_btn";
+ to_y: "bottom_padding";
+ }
+ image.normal: "00_winset_title_line.png";
+ }
+ }
+
+ part {
+ name: "left_btn";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 0;
+ min: 120 78;
+ max: 120 78;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "seperator1";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "seperator1";
+ to_y: "bottom_padding";
+ }
+ }
+ }
+
+ part {
+ name: "seperator2";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 2 48;
+ max: 2 48;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "left_btn";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "left_btn";
+ to_y: "bottom_padding";
+ }
+ image.normal: "00_winset_title_line.png";
+ }
+ }
+
+ part {
+ name: "event_area";
+ ignore_flags: ON_HOLD;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { to: "title_area"; relative: 0 0; }
+ rel2 { to: "title_area"; relative: 1 1; }
+ }
+ }
+
+ part {
+ name: "arrow";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 28 24;
+ max: 28 24;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "title_area";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "title_area";
+ to_y: "bottom_padding";
+ }
+ image.normal: "optionheader_arrow.png";
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+
+ programs {
+ program {
+ name: "title_clicked";
+ signal: "mouse,clicked,1";
+ source: "event_area";
+ action: SIGNAL_EMIT "elm,action,title,clicked" "";
+ }
+
+ program {
+ name: "more_show";
+ signal: "elm,state,more,show";
+ source: "";
+ script {
+ set_int(more_show, 1);
+ set_state(PART:"arrow", "show", 0.0);
+ }
+ }
+
+ program {
+ name: "more_hide";
+ signal: "elm,state,more,hide";
+ source: "";
+ script {
+ set_int(more_show, 0);
+ set_state(PART:"arrow", "default", 0.0);
+ }
+ }
+ }
+ }
+
+ group { name: "email/dim_area";
+ images {
+ image: "M02_email_popup_bubble_tail_top.png" COMP;
+ }
+
+ parts {
+ part { name: "block_events";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 0 0 0 153;
+ min: 0 1127; //213; height(1280) - (indicator(50)+Navi(108)+frameview(909)+10) +5
+ max: 9999 213;
+ fixed: 1 1;
+ visible: 1;
+ align: 0.0 1.0;
+ }
+ }
+ part { name: "bubble_tail";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 26 21;
+ max: 26 21;
+ align: 0.5 1.0;
+
+ rel1 { relative: (56/720) (10/1122); to: "block_events";}
+ rel2 { relative: (82/720) (10/1122); to: "block_events";}
+ image.normal: "M02_email_popup_bubble_tail_top.png";
+ }
+ }
+ }
+ programs {
+ program {
+ name: "block_clicked";
+ signal: "mouse,clicked,1";
+ source: "block_events";
+ action: SIGNAL_EMIT "action,click" "";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item/email.4text.8icon/default";
+ alias: "elm/genlist/item_odd/email.4text.8icon/default";
+ alias: "elm/genlist/item_compress/email.4text.8icon/default";
+ alias: "elm/genlist/item_compress_odd/email.4text.8icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.subject elm.text.name elm.text.date elm.text.preview elm.text.num";
+ data.item: "contents" "elm.icon.important elm.icon.important.touch elm.icon.num elm.icon.attach elm.icon.colorbar elm.swallow.outbox.progress elm.icon.checkbox elm.icon.checkbox.touch elm.icon.priority elm.icon.lastverb elm.icon.appointment";
+ data.item: "flips" "elm.flip.content";
+ images {
+ image: "00_list_bar_press_1x80.png" COMP;
+ image: "M02_button_06_normal.png" COMP;
+ }
+
+ parts {
+ GENLIST_PART_BASE( GENLIST_SIZE_160_INC )
+ GENLIST_PART_BG
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+ GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+ GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+ GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+ part { name: "elm.icon.colorbar";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_10_INC GENLIST_SIZE_21_INC;
+ fixed: 1 1;
+ rel2.relative: 0.0 0.0;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.icon.checkbox.touch";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ max: GENLIST_PADDING_74_INC GENLIST_SIZE_160_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ align: 0.0 0.5;
+ }
+ }
+ part { name: "elm.icon.checkbox";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ max: GENLIST_SIZE_42_INC 0;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ align: 0.0 0.5;
+ }
+ }
+ part { name: "elm.padding.icon.checkbox.right";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_PADDING_16_INC 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon.checkbox";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon.checkbox";
+ to_y: "elm.padding.bottom";
+ }
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+
+ part { name: "elm.icon.important";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_56_INC GENLIST_SIZE_SLIDE_60_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.top";
+ }
+ align: 1.0 0.0;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+
+ part { name: "elm.icon.important.touch";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_56_INC GENLIST_SIZE_SLIDE_60_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.top";
+ }
+ align: 1.0 0.0;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+
+ part { name: "elm.padding.icon.important.left";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_PADDING_16_INC 0;
+ fixed: 1 0;
+ rel1{
+ relative: 0.0 1.0;
+ to_x: "elm.icon.important";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.important";
+ }
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+
+ part { name: "elm.icon.num";
+ clip_to: "disclip";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ max: 0 GENLIST_SIZE_SLIDE_60_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 GENLIST_SIZE_8_INC;
+ to_x: "elm.padding.icon.important.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 0 GENLIST_SIZE_8_INC;
+ to_x: "elm.padding.icon.important.left";
+ to_y: "elm.padding.top";
+ }
+ align: 1.0 0.0;
+ image.normal: "M02_button_06_normal.png";
+ image.border: 5 5 5 5;
+ }
+ description { state: "num_enable" 0.0;
+ inherit: "default" 0.0;
+ max: GENLIST_HEIGHT_62_INC GENLIST_SIZE_SLIDE_60_INC;
+ min: GENLIST_SIZE_46_INC GENLIST_SIZE_44_INC;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+
+ part { name: "elm.text.num";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ max: 0 GENLIST_SIZE_SLIDE_60_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 GENLIST_SIZE_8_INC;
+ to_x: "elm.padding.icon.important.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 0 GENLIST_SIZE_8_INC;
+ to_x: "elm.padding.icon.important.left";
+ to_y: "elm.padding.top";
+ }
+ align: 1.0 0.0;
+ }
+ description { state: "num_enable" 0.0;
+ inherit: "default" 0.0;
+ max: GENLIST_HEIGHT_62_INC GENLIST_SIZE_SLIDE_60_INC;
+ min: GENLIST_SIZE_46_INC GENLIST_SIZE_44_INC;
+ text {
+ font: "SLP:style=Medium";
+ size: GENLIST_FONT_32_INC;
+ min: 1 1;
+ align: 0.5 0.5;
+ text_class: "slp_medium";
+ }
+ color: GENLIST_PART_FONT_CONVERTOR_STYLE_COLOR_INC;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+
+ part { name: "elm.icon.attach";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 GENLIST_SIZE_SLIDE_60_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.num";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.num";
+ to_y: "elm.padding.top";
+ }
+ align: 1.0 0.0;
+ }
+ description { state: "attach_enable" 0.0;
+ inherit: "default" 0.0;
+ min: GENLIST_SIZE_48_INC GENLIST_SIZE_SLIDE_60_INC;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.text.subject";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 GENLIST_SIZE_SLIDE_60_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon.checkbox.right";
+ to_y: "elm.padding.top";
+ }
+ rel2{
+ relative: 0.0 1.0;
+ to_x: "elm.icon.attach";
+ to_y: "elm.padding.top";
+ }
+ align: 0.0 0.0;
+ text {
+ style: "genlist_email_textblock_unread_style";
+ min: 0 1;
+ max: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_email_textblock_selected_style";
+ }
+ description { state: "read" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_email_textblock_read_style";
+ }
+ description { state: "unread" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_email_textblock_unread_style";
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+
+ part { name: "elm.padding.intermediate";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 GENLIST_PADDING_4_INC;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon.checkbox.right";
+ to_y: "elm.icon.attach";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon.checkbox.right";
+ to_y: "elm.icon.attach";
+ }
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+
+ part { name: "elm.icon.priority";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 GENLIST_SIZE_40_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon.checkbox.right";
+ to_y: "elm.padding.intermediate";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon.checkbox.right";
+ to_y: "elm.padding.intermediate";
+ }
+ align: 0.0 0.0;
+ }
+ description { state: "priority_enable" 0.0;
+ inherit: "default" 0.0;
+ min: GENLIST_SIZE_48_INC GENLIST_SIZE_40_INC;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.icon.lastverb";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 GENLIST_SIZE_40_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon.checkbox.right";
+ to_y: "elm.icon.priority";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon.checkbox.right";
+ to_y: "elm.icon.priority";
+ }
+ align: 0.0 0.0;
+ }
+ description { state: "lastverb_enable" 0.0;
+ inherit: "default" 0.0;
+ min: GENLIST_SIZE_48_INC GENLIST_SIZE_40_INC;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+
+ part { name: "elm.text.date";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_154_INC GENLIST_SIZE_40_INC;
+ fixed: 1 1;
+ rel1 {
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ align: 1.0 1.0;
+ color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+ text {
+ font: "SLP:style=Medium";
+ size: GENLIST_FONT_32_INC;
+ min: 0 1;
+ align: 1.0 0.5;
+ text_class: "slp_medium";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+
+ part { name: "elm.icon.appointment";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 GENLIST_SIZE_40_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.intermediate";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.intermediate";
+ }
+ align: 1.0 0.0;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.text.name";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 GENLIST_SIZE_40_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.icon.priority";
+ to_y: "elm.padding.intermediate";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.appointment";
+ to_y: "elm.padding.intermediate";
+ }
+ align: 0.0 0.0;
+ text {
+ style: "genlist_email_textblock2_style";
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_email_textblock2_selected_style";
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.text.preview";
+ clip_to: "disclip";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 GENLIST_SIZE_40_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon.lastverb";
+ to_y: "elm.padding.bottom";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.text.date";
+ to_y: "elm.padding.bottom";
+ }
+ align: 0.0 1.0;
+ color: GENLIST_PART_FONT_CONTENTS_TEXT_COLOR_INC;
+ text {
+ font: "SLP:style=Medium";
+ size: GENLIST_FONT_30_INC;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "slp_medium";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.swallow.outbox.progress";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ repeat_events: 0;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_168_INC 0;
+ fixed: 1 1;
+ color: 0 0 0 0;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ offset: 0 0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ }
+ }
+ GENLIST_PART_FLIP
+ GENLIST_PART_DISCLIP
+ }
+
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program { name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg_image";
+ target: "elm.text.subject";
+ target: "elm.text.name";
+ target: "elm.text.date";
+ target: "elm.text.preview";
+ //GENLIST_PROGRAM_AFTER_PLAY_BUTTON_PRESS
+ }
+ program { name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ target: "elm.text.subject";
+ target: "elm.text.name";
+ target: "elm.text.date";
+ target: "elm.text.preview";
+ transition: LINEAR 0.1;
+ }
+ program { name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_read";
+ signal: "elm,state,read";
+ source: "elm";
+ action: STATE_SET "read" 0.0;
+ target: "elm.text.subject";
+ }
+ program { name: "go_unread";
+ signal: "elm,state,unread";
+ source: "elm";
+ action: STATE_SET "unread" 0.0;
+ target: "elm.text.subject";
+ }
+ program { name: "go_attach";
+ signal: "elm,state,attach";
+ source: "elm";
+ action: STATE_SET "attach_enable" 0.0;
+ target: "elm.icon.attach";
+ }
+ program { name: "go_priority";
+ signal: "elm,state,priority";
+ source: "elm";
+ action: STATE_SET "priority_enable" 0.0;
+ target: "elm.icon.priority";
+ }
+ program { name: "go_lastverb";
+ signal: "elm,state,lastverb";
+ source: "elm";
+ action: STATE_SET "lastverb_enable" 0.0;
+ target: "elm.icon.lastverb";
+ }
+ program { name: "go_num";
+ signal: "elm,state,num";
+ source: "elm";
+ action: STATE_SET "num_enable" 0.0;
+ target: "elm.icon.num";
+ target: "elm.text.num";
+ }
+ program { name: "click";
+ signal: "mouse,up,1";
+ source: "elm.icon.checkbox.touch";
+ action: SIGNAL_EMIT "elm,action,check,toggle" "";
+ }
+ //GENLIST_PROGRAM_PLAY_BUTTON_PRESS
+ }
+ }
+
+ /* NOTE: This style is a temporary style for email application. Otherwise do not use this. */
+ group { name: "elm/genlist/item/email.3text.6icon/default";
+ alias: "elm/genlist/item_odd/email.3text.6icon/default";
+ alias: "elm/genlist/item_compress/email.3text.6icon/default";
+ alias: "elm/genlist/item_compress_odd/email.3text.6icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+ data.item: "contents" "elm.icon.1 elm.icon.2 elm.icon.3 elm.icon.4 elm.swallow.colorbar elm.swallow.outbox.progress";
+ data.item: "flips" "elm.flip.content";
+ images {
+ image: "00_list_bar_press_1x80.png" COMP;
+ }
+ parts {
+ GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
+ GENLIST_PART_BG
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_TOP( GENLIST_PADDING_10_INC )
+ GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_10_INC )
+ GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+ GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+ part { name: "elm.swallow.colorbar";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_10_INC GENLIST_SIZE_21_INC;
+ rel2.relative: 0.0 0.0;
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "elm.text.3";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_154_INC GENLIST_SIZE_61_INC;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ align: 1.0 1.0;
+ color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+ text {
+ font: "SLP:style=Medium";
+ size: GENLIST_FONT_32_INC;
+ min: 0 1;
+ align: 1.0 0.5;
+ text_class: "slp_medium";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.icon.1";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.text.3";
+ }
+ align: 1.0 0.0;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.padding.icon1.left";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_PADDING_16_INC 0;
+ rel1.to_x: "elm.icon.1";
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.1";
+ }
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.text1.rect";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 GENLIST_SIZE_61_INC;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.swallow.colorbar";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.icon1.left";
+ to_y: "elm.padding.top";
+ }
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.text.1";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "elm.text1.rect";
+ rel2.to: "elm.text1.rect";
+ align: 0.0 0.0;
+ text {
+ style: "genlist_email_textblock_unread_style";
+ min: 0 1;
+ max: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_email_textblock_selected_style";
+ }
+ description { state: "read" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_email_textblock_read_style";
+ }
+ description { state: "unread" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_email_textblock_unread_style";
+ }
+ description { state: "urgency_read" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_email_textblock_urgency_read_style";
+ }
+ description { state: "urgency_unread" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_email_textblock_urgency_unread_style";
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.text.2";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.icon2.left";
+ to_y: "elm.padding.bottom";
+ }
+ align: 0.0 0.5;
+ text {
+ style: "genlist_email_textblock2_style";
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_email_textblock2_selected_style";
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.padding.icon2.left";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_PADDING_16_INC 0;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.2";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.icon.2";
+ to_y: "elm.padding.bottom";
+ }
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.icon.2";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_32_INC GENLIST_SIZE_32_INC;
+ max: GENLIST_SIZE_32_INC GENLIST_SIZE_32_INC;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon3.left";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.icon3.left";
+ to_y: "elm.padding.bottom";
+ }
+ align: 1.0 0.5;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.padding.icon3.left";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_PADDING_16_INC 0;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.3";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.icon.3";
+ to_y: "elm.padding.bottom";
+ }
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.icon.3";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_32_INC GENLIST_SIZE_32_INC;
+ max: GENLIST_SIZE_32_INC GENLIST_SIZE_32_INC;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon4.left";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.icon4.left";
+ to_y: "elm.padding.bottom";
+ }
+ align: 1.0 0.5;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.padding.icon4.left";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_PADDING_16_INC 0;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.4";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.icon.4";
+ to_y: "elm.padding.bottom";
+ }
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.icon.4";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_32_INC GENLIST_SIZE_32_INC;
+ max: GENLIST_SIZE_32_INC GENLIST_SIZE_32_INC;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.text.3";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.text.3";
+ to_y: "elm.padding.bottom";
+ }
+ align: 1.0 0.5;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.swallow.outbox.progress";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ repeat_events: 0;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_168_INC 0;
+ color: 0 0 0 0;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ offset: 0 0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ }
+ }
+ GENLIST_PART_FLIP
+ GENLIST_PART_DISCLIP
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program { name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg_image";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.text.3";
+ //GENLIST_PROGRAM_AFTER_PLAY_BUTTON_PRESS
+ }
+ program { name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.text.3";
+ transition: LINEAR 0.1;
+ }
+ program { name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ GENLIST_PROGRAM_FLIP_3TEXT_2ICON
+ program { name: "go_read";
+ signal: "elm,state,read";
+ source: "elm";
+ action: STATE_SET "read" 0.0;
+ target: "elm.text.1";
+ }
+ program { name: "go_unread";
+ signal: "elm,state,unread";
+ source: "elm";
+ action: STATE_SET "unread" 0.0;
+ target: "elm.text.1";
+ }
+ program { name: "go_urgeny_unread";
+ signal: "elm,state,urgency_unread";
+ source: "elm";
+ action: STATE_SET "urgency_unread" 0.0;
+ target: "elm.text.1";
+ }
+ program { name: "go_urgency_read";
+ signal: "elm,state,urgency_read";
+ source: "elm";
+ action: STATE_SET "urgency_read" 0.0;
+ target: "elm.text.1";
+ }
+ //GENLIST_PROGRAM_PLAY_BUTTON_PRESS
+ }
+ }
+
+
+ group { name: "elm/genlist/item/email.grouptitle/default";
+ alias: "elm/genlist/item_odd/email.grouptitle/default";
+ alias: "elm/genlist/item_compress/email.grouptitle/default";
+ alias: "elm/genlist/item_compress_odd/email.grouptitle/default";
+
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "treesize" "GENLIST_TREESIZE_32_INC";
+
+ images {
+ image: "00_index_list_bg.png" COMP;
+ }
+ parts {
+ GENLIST_PART_INDEX_LIST_BASE_EVENT_INC
+ GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+ GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+ part { name: "rect";
+ type: RECT;
+ repeat_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 GENLIST_HEIGHT_49_INC;
+ color: GENLIST_DIALOGUE_GROUP_BG_COLOR_INC;
+ }
+ description { state: "alpha_off" 0.0;
+ min: 0 GENLIST_SIZE_48_INC;
+ color: GENLIST_DIALOGUE_GROUP_BG_COLOR_INC;
+ }
+ }
+ GENLIST_PART_INDEX_LIST_BASE_IMAGE_INC
+
+ part { name: "elm.text";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to_x: "elm.padding.right";
+ }
+ color: GENLIST_PART_FONT_INDEX_LIST_COLOR_INC;
+ text {
+ font: "SLP:style=Medium";
+ size: GENLIST_FONT_32_INC;
+ min: 1 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ }
+ }
+ program {
+ name: "enable_alpha";
+ signal: "elm,state,alpha,enable";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "rect";
+ }
+ program {
+ name: "disable_alpha";
+ signal: "elm,state,alpha,disable";
+ source: "elm";
+ action: STATE_SET "alpha_off" 0.0;
+ target: "rect";
+ }
+ program {
+ name: "selected";
+ source: "rect";
+ signal: "mouse,clicked,1";
+ action: SIGNAL_EMIT "elm,title_action,item,click" "elm";
+ }
+ }
+
+ group { name: "elm/genlist/item/dialogue/email.1text.1icon.2/default";
+ alias: "elm/genlist/item_odd/dialogue/email.1text.1icon.2/default";
+ alias: "elm/genlist/item_compress/dialogue/email.1text.1icon.2/default";
+ alias: "elm/genlist/item_compress_odd/dialogue/email.1text.1icon.2/default";
+ alias: "elm/layout/dialogue/email.1text.1icon.2";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.icon";
+ data.item: "flips" "elm.flip.content";
+ parts {
+ GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC )
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_32_INC )
+ GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+ GENLIST_PART_DIALOGUE_ITEM
+ part { name: "elm.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_64_INC GENLIST_SIZE_64_INC;
+ max: GENLIST_SIZE_64_INC GENLIST_SIZE_64_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ }
+ align: 0.0 0.5;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part { name: "elm.padding.icon.right";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_PADDING_16_INC 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon";
+ }
+ rel2.to_x: "elm.icon";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.icon.right";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ }
+ align: 0.0 0.0;
+ color: GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_COLOR_INC;
+ text {
+ font: "SLP:style=Roman";
+ size: GENLIST_FONT_44_INC;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+ }
+ GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ GENLIST_PART_FLIP
+ GENLIST_PART_DISCLIP
+ }
+ programs {
+ program { name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_1TEXT
+ //GENLIST_PROGRAM_AFTER_PLAY_BUTTON_PRESS
+ }
+ program { name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program { name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ GENLIST_PROGRAM_FLIP_1TEXT_1ICON
+ //GENLIST_PROGRAM_PLAY_BUTTON_PRESS
+ }
+ }
+
+ group { name: "elm/genlist/item/email.edit_default/default";
+ alias: "elm/genlist/item_odd/email.edit_default/default";
+ alias: "elm/genlist/item_compress/email.edit_default/default";
+ alias: "elm/genlist/item_compress_odd/email.edit_default/default";
+ alias: "elm/genlist/tree/email.edit_default/default";
+ alias: "elm/genlist/tree_odd/email.edit_default/default";
+ alias: "elm/genlist/tree_compress/email.edit_default/default";
+ alias: "elm/genlist/tree_compress_odd/email.edit_default/default";
+ data.item: "stacking" "above";
+ data.item: "decorate_contents" "elm.edit.icon.1 elm.edit.icon.2";
+
+ images {
+ image: "01_list_reorder_bg_above.png" COMP;
+ image: "01_list_reorder_bg_below.png" COMP;
+ }
+ parts {
+ part { name: "base";
+ type: RECT;
+ repeat_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ GENLIST_PART_PADDING_TOP( 0 )
+ GENLIST_PART_PADDING_BOTTOM( 0 )
+ GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+
+ part { name: "elm.padding.reorder";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_16_INC 0;
+ fixed: 1 0;
+ visible: 0;
+ rel2.relative: 0.0 1.0;
+ align: 1.0 0.0;
+ }
+ description { state: "reorder" 0.0;
+ inherit: "default" 0.0;
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "elm.decorate_bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.reorder";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_y: "elm.padding.bottom";
+ }
+ color: GENLIST_PART_BG_COLOR_INC;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: GENLIST_PART_LIST_PRESS_COLOR_INC;
+ }
+ }
+
+ part { name: "elm.padding.left";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_16_INC 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.reorder";
+ }
+ rel2.to_x: "elm.padding.reorder";
+ rel2.relative: 0.0 1.0;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.edit.icon.1";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 1.0 1.0;
+ offset: 0 0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ align: 0.0 0.5;
+ }
+ }
+
+ part { name: "elm.padding.icon1.right";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_16_INC 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.edit.icon.1";
+ }
+ rel2.to_x: "elm.edit.icon.1";
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.swallow.decorate.content";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon1.right";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.2 0.0;
+ to_x: "elm.edit.icon.2";
+ to_y: "elm.padding.bottom";
+ }
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description { state: "flipped" 0.0;
+ inherit: "default" 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 1.3 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ }
+ }
+ part { name: "elm.padding.icon2.left";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENLIST_SIZE_16_INC 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.swallow.decorate.content";
+ }
+ rel2.to_x: "elm.swallow.decorate.content";
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.edit.icon.2";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ visible: 1;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -GENLIST_SIZE_16_INC GENLIST_SIZE_6_INC;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -GENLIST_SIZE_16_INC -GENLIST_SIZE_8_INC;
+ }
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ align: 1.0 0.5;
+ }
+ }
+
+ part { name: "bottom_line";
+ type: RECT;
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 0 1;
+ visible: 1;
+ color: GENLIST_PART_LIST_LINE_COLOR_INC;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.decorate_bg";
+ offset: 0 -1;
+ }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ min: 0 GENLIST_SIZE_8_INC;
+ fixed: 0 1;
+ }
+ }
+ part { name: "reorder_glow_above";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1.relative: 0.0 -0.3;
+ rel2.relative: 1.0 0.0;
+ image {
+ normal: "01_list_reorder_bg_above.png";
+ }
+ fill.smooth: 0;
+ }
+ description { state: "reorder" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "reorder_glow_below";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1.relative: 0.0 1.0;
+ rel2.relative: 1.0 1.3;
+ image {
+ normal: "01_list_reorder_bg_below.png";
+ }
+ fill.smooth: 0;
+ }
+ description { state: "reorder" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ GENLIST_PART_DISCLIP
+ }
+ programs {
+ program { name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "elm.decorate_bg";
+ }
+ program { name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: LINEAR 0.1;
+ target: "elm.decorate_bg";
+ }
+ program { name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ // decorate mode enable signal
+ program { name: "decorate_mode_enabled_effect";
+ signal: "elm,state,decorate,enabled,effect";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ transition: DECELERATE 0.7;
+ target: "elm.edit.icon.1";
+ target: "elm.edit.icon.2";
+ target: "bottom_line";
+ }
+ program { name: "decorate_mode_disabled_effect";
+ signal: "elm,state,decorate,disabled,effect";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.7;
+ target: "elm.edit.icon.1";
+ target: "elm.edit.icon.2";
+ target: "bottom_line";
+ }
+ program { name: "decorate_mode_enabled";
+ signal: "elm,state,decorate,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "elm.edit.icon.1";
+ target: "elm.edit.icon.2";
+ target: "bottom_line";
+ }
+ program { name: "decorate_mode_disabled";
+ signal: "elm,state,decorate,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.edit.icon.1";
+ target: "elm.edit.icon.2";
+ target: "bottom_line";
+ }
+
+ // reorder signal
+ program { name: "reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "reorder" 0.0;
+ target: "elm.padding.reorder";
+ }
+ program { name: "reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.padding.reorder";
+ }
+
+ program { name: "reorder_enabled_effect";
+ signal: "elm,state,reorder_enabled_effect";
+ source: "elm";
+ action: STATE_SET "reorder" 0.0;
+ transition: DECELERATE 0.7;
+ target: "elm.padding.reorder";
+ }
+ program { name: "reorder_disabled_effect";
+ signal: "elm,state,reorder_disabled_effect";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.7;
+ target: "elm.padding.reorder";
+ }
+ // reorder glow
+ program {
+ name: "show_reorder_glow";
+ signal: "elm,action,item,reorder_start";
+ source: "elm";
+ action: STATE_SET "reorder" 0.0;
+ target: "reorder_glow_above";
+ target: "reorder_glow_below";
+ }
+ program {
+ name: "hide_reorder_glow";
+ signal: "elm,action,item,reorder_end";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_glow_above";
+ target: "reorder_glow_below";
+ }
+ // flip
+ program {
+ name: "enable_flip_mode";
+ signal: "elm,state,flip,enabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "elm.edit.icon.2";
+ after: "enable_flip_mode_next";
+ }
+ program {
+ name: "enable_flip_mode_next";
+ action: STATE_SET "flipped" 0.0;
+ transition: DECELERATE 0.5;
+ target: "elm.swallow.decorate.content";
+ }
+ program {
+ name: "disable_flip_mode";
+ signal: "elm,state,flip,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.5;
+ target: "elm.swallow.decorate.content";
+ target: "elm.edit.icon.2";
+ }
+ }
+ }
+
+
+ group { name: "elm/bg/base/email_default";
+ parts {
+ part { name: "base";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ color: 239 239 239 255;
+ }
+ }
+ part { name: "elm.swallow.rectangle";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ }
+ }
+ part { name: "elm.swallow.background";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ }
+ }
+ }
+ }
+
+ group { name, "dialoguegroup/email_datetime";
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 100;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 30 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 {
+ relative: 0.0 1.0;
+ to: "base";
+ }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 30 0;
+ fixed, 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "base";
+ }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: 50 20;
+ fixed: 1 1;
+ visible: 1;
+ rel1 {
+ relative: 0.0 0.1;
+ to_x: "left_padding";
+ }
+ rel2 {
+ relative: 1.0 0.1;
+ to_y: "left_padding";
+ }
+ align: 0.0 0.2;
+ color: 165 165 165 255;
+ text {
+ font: "SLP:style=Roman";
+ size: 33;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ }
+ part { name: "elm.icon";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to_x: "left_padding";
+ to_y: "elm.text";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to_x: "right_padding";
+ to_y: "base";
+ }
+ }
+ }
+ }
+ }
+ group { name: "email/popup_smartstay1_internal";
+ parts {
+ part { name: "elm.swallow.content1";
+ type: SWALLOW;
+ scale : 1;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel2.relative: 1.0 0.0;
+ }
+ }
+ part { name: "elm.content.bg";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 0 443;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "elm.swallow.content1";
+ }
+ rel2.to: "elm.swallow.content1";
+ }
+ }
+ part { name: "elm.swallow.content2";
+ type: SWALLOW;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 390 390;
+ max: 390 390;
+ fixed: 1 1;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1.to: "elm.content.bg";
+ rel2.to: "elm.content.bg";
+ }
+ }
+ part { name: "elm.swallow.content3";
+ type: SWALLOW;
+ scale : 1;
+ description { state: "default" 0.0;
+ align: 0.0 1.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "elm.content.bg";
+ }
+ }
+ }
+ }
+ }
+ group { name: "email/popup_smartstay1";
+ parts {
+ part { name: "pad_t";
+ scale: 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 5;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 0.0;to_x: "pad_l";
+ }
+ rel2 {
+ relative: 0.0 0.0;to_x: "pad_r";
+ }
+ }
+ }
+ part { name: "pad_l";
+ scale: 1;
+ description { state: "default" 0.0;
+ min : 32 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "pad_r";
+ scale: 1;
+ description { state: "default" 0.0;
+ min : 32 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part { name:"elm.swallow.layout";
+ type: SWALLOW;
+ scale : 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ min: 0 600;
+ align: 0.5 1.0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "pad_t";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "pad_b";
+ scale : 1;
+ mouse_events: 0;
+ type: RECT;
+ description { state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 0 66;
+ visible: 0;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 1.0;to_x: "pad_l";
+ }
+ rel2 {
+ relative: 0.0 1.0;to_x: "pad_r";
+ }
+ }
+ }
+ part { name: "elm.swallow.check";
+ type: SWALLOW;
+ scale : 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 42 42;
+ max: 42 42;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_b";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ text {
+ font: "SLP:style=Medium";
+ size: 38;
+ min: 0 0;
+ align: 0.0 0.5;
+ }
+ color: 0 0 0 255;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x:"elm.swallow.check"; to_y: "pad_b";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_b";
+ }
+ }
+ }
+ }
+ }
+}
+
--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(email C)
+
+SET(SRCS email.c)
+SET(CMAKE_SKIP_BUILD_RPATH TRUE)
+
+SET(VENDOR "tizen")
+SET(PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+ SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+SET(CMAKE_EMAIL_SOURCE_DIR "${CMAKE_SOURCE_DIR}/main")
+SET(CMAKE_EMAIL_BINARY_DIR "${CMAKE_BINARY_DIR}/main")
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs-email REQUIRED appcore-efl ui-gadget-1 elementary email-service bundle dlog ecore-input edbus)
+
+FOREACH(flag ${pkgs-email_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -finstrument-functions")
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fpie")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+SET(CMAKE_LDFLAGS "-Wl,-zdefs -Wl,-rpath=${LIBDIR}")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+ ADD_DEFINITIONS("-DTARGET")
+ MESSAGE("add -DTARGET")
+ SET(CMAKE_C_FLAGS_RELEASE "-mabi=aapcs-linux -msoft-float -O2")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
+ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
+ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
+ADD_DEFINITIONS("-DDEBUG")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} email-common ${CMAKE_LDFLAGS} ${pkgs-email_LDFLAGS})
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+
+# install desktop file & icon
+#CONFIGURE_FILE(${CMAKE_EMAIL_SOURCE_DIR}/${PKGNAME}.desktop.in ${CMAKE_EMAIL_BINARY_DIR}/${PKGNAME}.desktop)
+#INSTALL(FILES ${CMAKE_EMAIL_BINARY_DIR}/${PKGNAME}.desktop DESTINATION /opt/share/applications)
+INSTALL(FILES ${CMAKE_EMAIL_BINARY_DIR}/${PKGNAME}.xml DESTINATION /opt/share/packages)
+INSTALL(FILES ${CMAKE_EMAIL_SOURCE_DIR}/${PKGNAME}.png DESTINATION ${ICONDIR})
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/images DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png")
+
+# install ini file
+INSTALL(FILES ${CMAKE_EMAIL_SOURCE_DIR}/${PROJECT_NAME}.ini DESTINATION /usr/share/process-info)
+
+# i18n
+#ADD_SUBDIRECTORY(po)
--- /dev/null
+/*
+ * 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.
+ */
+
+#include <stdio.h>
+#include <appcore-efl.h>
+#undef _
+#include <ui-gadget-module.h>
+#include <Ecore_X.h>
+#include <utilX.h>
+#include <vconf.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <aul.h>
+#include <E_DBus.h>
+#include <email-api.h>
+
+#include "email.h"
+#include "email-debug.h"
+#include "email-utils.h"
+#include "email-common-types.h"
+#include "email-engine.h"
+
+#define URI_SCHEME_MAILTO "mailto:"
+#define URI_SCHEME_FILE "file://"
+#define URI_SCHEME_HTTP "http://"
+
+typedef struct appdata appdata;
+struct appdata {
+ int root_w;
+ int root_h;
+ int root_x;
+ int root_y;
+
+ Evas *evas;
+ Evas_Object *win_main;
+
+ int account_id;
+ char *account_name;
+
+ ui_gadget_h mailbox_ug;
+ ui_gadget_h setting_ug;
+// ui_gadget_h *passwd_ug;
+ ui_gadget_h composer_ug;
+ ui_gadget_h viewer_ug;
+};
+
+gboolean _b_setting_opened = false;
+extern ui_gadget_h _g_mailbox_ug;
+//extern int _g_b_in_terminating;
+//extern int _g_b_on_pause;
+
+static bool app_create(void *data);
+static int app_terminate(void *data);
+static int app_pause(void *data);
+static int app_resume(void *data);
+static int app_reset(service_h b, void *data);
+static int app_low_memory(void *data);
+static int app_low_battery(void *data);
+static int app_lang_changed(void *data);
+static int app_region_changed(void *data);
+
+static Evas_Object *create_win(const char *name);
+static void win_del(void *data, Evas_Object *obj, void *event);
+/*static Eina_Bool _email_ui_keydown_cb(void *data, int type, void *event);*/
+static void launch_email_ug(service_h b, struct appdata *ad);
+static int check_app_svc_operation(service_h b, struct appdata *ad, gint account_id);
+static int check_aul_mime_operation(service_h b, struct appdata *ad);
+static int check_aul_launch_operation(service_h b, struct appdata *ad);
+static void block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void popup_response_cb(void *data, Evas_Object *obj, void *event_info);
+static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void result_cb(ui_gadget_h ug, service_h result, void *priv);
+static void destroy_cb(ui_gadget_h ug, void *priv);
+static void aul_destroy_cb(ui_gadget_h ug, void *priv);
+ui_gadget_h create_ug(char *ug_name, service_h bd, void *data);
+static int _email_main_rotation_cb(app_device_orientation_e m, void *data);
+
+/*static Ecore_Event_Handler *key_down_handler = NULL;*/
+
+static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+ debug_log("");
+ Evas_Object *base, *win;
+
+ if (!ug || !priv)
+ return;
+
+ base = ug_get_layout(ug);
+ if (!base) {
+ debug_log("ug_get_layout returns NULL");
+ return;
+ }
+
+ win = ug_get_window();
+
+ switch (mode) {
+ case UG_MODE_FULLVIEW:
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, base);
+ ug_disable_effect(ug);
+ evas_object_show(base);
+ break;
+ default:
+ break;
+ }
+}
+
+static void result_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ ug_destroy(ug);
+}
+
+static void destroy_cb(ui_gadget_h ug, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ struct appdata *ad = (struct appdata *)priv;
+
+ if (_b_setting_opened == true && ug == ad->setting_ug) {
+ _b_setting_opened = false;
+
+ int ret;
+ ug_destroy(ad->setting_ug);
+ ad->setting_ug = NULL;
+
+ /*relaunch setting when account deleted immediately*/
+ if (!email_engine_get_default_account(&ad->account_id)) {
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ return;
+ }
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIEW_TYPE, EMAIL_BUNDLE_VAL_VIEW_FIRST_SETUP);
+ debug_log("service_add_extra_data: %d", ret);
+
+ if (NULL != (ad->setting_ug = create_ug(UG_NAME_EMAIL_SETTING, service, ad))) {
+ _b_setting_opened = true;
+ }
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+ return;
+ }
+
+ if (ad->mailbox_ug) {
+ debug_log("Mailbox is already running");
+ return;
+ }
+
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ return;
+ }
+
+ char initial[4] = { 0, };
+ snprintf(initial, sizeof(initial), "%d", 0);
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_INITIAL_RUN, initial);
+ debug_log("service_add_extra_data: %d", ret);
+
+ ad->mailbox_ug = create_ug(UG_NAME_EMAIL_MAILBOX, service, ad);
+ _g_mailbox_ug = ad->mailbox_ug;
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+
+ return;
+ }
+
+ if (ug == ad->mailbox_ug) {
+ if (!email_engine_get_default_account(&ad->account_id)) {
+ ug_destroy(ad->mailbox_ug);
+ ad->mailbox_ug = NULL;
+
+ if (ad->setting_ug) {
+ debug_log("Setting is already running");
+ return;
+ }
+
+ int ret;
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ return;
+ }
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIEW_TYPE, EMAIL_BUNDLE_VAL_VIEW_FIRST_SETUP);
+ debug_log("service_add_extra_data: %d", ret);
+
+ if (NULL != (ad->setting_ug = create_ug(UG_NAME_EMAIL_SETTING, service, ad))) {
+ _b_setting_opened = true;
+ }
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+
+ return;
+ }
+ }
+
+ if (ug == ad->composer_ug) {
+ debug_log("destroy composer_ug");
+ ug_destroy(ad->composer_ug);
+ ad->composer_ug = NULL;
+ }
+
+ if (ug == ad->viewer_ug) {
+ debug_log("destroy viewer_ug");
+ ug_destroy(ad->viewer_ug);
+ ad->viewer_ug = NULL;
+ }
+
+ elm_exit();
+ return;
+}
+
+static void aul_destroy_cb(ui_gadget_h ug, void *priv)
+{
+ debug_log("");
+
+ if (!ug || !priv)
+ return;
+
+ elm_exit();
+}
+
+ui_gadget_h create_ug(char *ug_name, service_h bd, void *data)
+{
+ debug_log("");
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0, };
+
+ cbs.layout_cb = layout_cb;
+ cbs.result_cb = result_cb;
+ cbs.destroy_cb = destroy_cb;
+ cbs.priv = data;
+
+ ug = ug_create(NULL, ug_name, UG_MODE_FULLVIEW, bd, &cbs);
+
+ return ug;
+}
+
+static int _email_main_rotation_cb(app_device_orientation_e m, void *data)
+{
+ debug_log("");
+ struct appdata *ad = data;
+
+ if (ad == NULL || ad->win_main == NULL) {
+ return -1;
+ }
+ debug_log("%d", m);
+
+ switch (m) {
+ case APP_DEVICE_ORIENTATION_0:
+ ug_send_event(UG_EVENT_ROTATE_PORTRAIT);
+ break;
+
+ case APP_DEVICE_ORIENTATION_180:
+ ug_send_event(UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN);
+ break;
+
+ case APP_DEVICE_ORIENTATION_270:
+ ug_send_event(UG_EVENT_ROTATE_LANDSCAPE);
+ break;
+
+ case APP_DEVICE_ORIENTATION_90:
+ ug_send_event(UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN);
+ break;
+
+ default:
+ break;
+ }
+
+ return 0;
+}
+
+static bool app_create(void *data)
+{
+ debug_log("");
+
+ struct appdata *ad = data;
+ Evas_Object *win;
+
+ elm_config_preferred_engine_set("opengl_x11"); //"software_x11"
+
+ /* create window */
+ win = create_win(PACKAGE);
+ if (win == NULL) {
+ debug_log("create_win returns NULL");
+ return false;
+ }
+ ad->win_main = win;
+
+ /*key_down_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _email_ui_keydown_cb, ad);*/
+
+ UG_INIT_EFL(ad->win_main, UG_OPT_INDICATOR_ENABLE);
+
+ /* icu */
+ email_open_icu_pattern_generator();
+
+ return true;
+}
+
+static int app_terminate(void *data)
+{
+ debug_log("");
+ //struct appdata *ad = data;
+
+ //_g_b_in_terminating = 1;
+ set_app_terminated();
+
+ //email_close_icu_pattern_generator();
+
+ email_engine_finalize_force();
+
+ int ret = e_dbus_shutdown();
+ debug_log("ret: %d", ret);
+#if 0
+ if (ad) {
+ if (ad->win_main)
+ evas_object_del(ad->win_main);
+
+ free(ad);
+ ad = NULL;
+ }
+#endif
+ debug_log("");
+
+ return 0;
+}
+
+static int app_pause(void *data)
+{
+ debug_log("");
+
+ set_app_paused();
+ ug_pause();
+
+ return 0;
+}
+
+static int app_resume(void *data)
+{
+ debug_log("");
+
+ reset_app_paused();
+ ug_resume();
+
+ email_clear_all_notification_bar();
+
+ return 0;
+}
+
+static int app_reset(service_h b, void *data)
+{
+ debug_log("");
+ struct appdata *ad = data;
+
+ if (ad->win_main)
+ elm_win_activate(ad->win_main);
+
+ /* init email common module */
+ if (email_engine_initialize() == FALSE) {
+ debug_log("Failed to initialize email engine");
+ evas_object_show(ad->win_main);
+
+ Evas_Object *popup = elm_popup_add(ad->win_main);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_popup_timeout_set(popup, 2.0);
+ elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_POP_WARNING"));
+ elm_object_text_set(popup, _("IDS_EMAIL_POP_FAILED_TO_START_EMAIL_APPLICATION"));
+ evas_object_smart_callback_add(popup, "block,clicked", popup_block_clicked_cb, NULL);
+ evas_object_smart_callback_add(popup, "timeout", popup_response_cb, NULL);
+ evas_object_show(popup);
+ return -1;
+ }
+
+ if (ad->setting_ug) {
+ debug_log("destroy setting_ug");
+ ug_destroy(ad->setting_ug);
+ ad->setting_ug = NULL;
+ }
+
+ /*if (ad->mailbox_ug) {
+ debug_log("destroy mailbox_ug");
+ ug_destroy(ad->mailbox_ug);
+ ad->mailbox_ug = NULL;
+ }
+
+ if (ad->composer_ug) {
+ debug_log("destroy composer_ug");
+ ug_destroy(ad->composer_ug);
+ ad->composer_ug = NULL;
+ }
+
+ if (ad->viewer_ug) {
+ debug_log("destroy viewer_ug");
+ ug_destroy(ad->viewer_ug);
+ ad->viewer_ug = NULL;
+ }*/
+
+ email_clear_all_notification_bar();
+
+ launch_email_ug(b, ad);
+
+ evas_object_show(ad->win_main);
+
+ return 0;
+}
+
+static int app_low_memory(void *data)
+{
+ debug_log("");
+ ug_send_event(UG_EVENT_LOW_MEMORY);
+ return 0;
+}
+
+static int app_low_battery(void *data)
+{
+ debug_log("");
+ ug_send_event(UG_EVENT_LOW_BATTERY);
+ return 0;
+}
+
+static int app_lang_changed(void *data)
+{
+ debug_log("");
+ ug_send_event(UG_EVENT_LANG_CHANGE);
+ return 0;
+}
+
+static int app_region_changed(void *data)
+{
+ debug_log("");
+ ug_send_event(UG_EVENT_REGION_CHANGE);
+ return 0;
+}
+
+int main(int argc, char *argv[])
+{
+ debug_log("");
+
+ if (!g_thread_supported()) {
+ g_thread_init(NULL);
+ }
+ g_type_init();
+
+ app_event_callback_s ops;
+ memset(&ops, 0x0, sizeof(app_event_callback_s));
+
+ ops.create = (app_create_cb)app_create;
+ ops.terminate = (app_terminate_cb)app_terminate;
+ ops.pause = (app_pause_cb)app_pause;
+ ops.resume = (app_resume_cb)app_resume;
+ ops.service = (app_service_cb)app_reset;
+ ops.low_memory = (app_low_memory_cb)app_low_memory;
+ ops.low_battery = (app_low_battery_cb)app_low_battery;
+ ops.device_orientation = (app_device_orientation_cb)_email_main_rotation_cb;
+ ops.language_changed = (app_language_changed_cb)app_lang_changed;
+ ops.region_format_changed = (app_region_format_changed_cb)app_region_changed;
+
+ ecore_init();
+ ecore_thread_max_set(1); /* spawn 1 thread for getting mail list in mailbox */
+
+ struct appdata ad;
+ memset(&ad, 0x0, sizeof(struct appdata));
+
+ return app_efl_main(&argc, &argv, &ops, &ad);
+}
+
+static Evas_Object *create_win(const char *name)
+{
+ debug_log("");
+ Evas_Object *eo;
+ int w, h;
+
+ eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+ if (eo) {
+ elm_win_title_set(eo, name);
+// elm_win_borderless_set(eo, EINA_TRUE);
+ evas_object_smart_callback_add(eo, "delete,request", win_del, NULL);
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+ evas_object_resize(eo, w, h);
+ }
+
+ return eo;
+}
+
+static void win_del(void *data, Evas_Object *obj, void *event)
+{
+ debug_log("");
+ elm_exit();
+}
+
+/*static Eina_Bool _email_ui_keydown_cb(void *data, int type, void *event)
+{
+ debug_log("");
+
+ if (data == NULL) {
+ elm_exit();
+ }
+
+ struct appdata *ad;
+ ad = (struct appdata *)data;
+
+ Ecore_Event_Key *ev = event;
+ debug_log("%s:%s", ev->keyname, KEY_END);
+
+ if (strcmp(ev->keyname, KEY_END) == 0) {
+ ecore_event_handler_del(key_down_handler);
+ set_app_terminated();//_g_b_in_terminating = 1;
+ elm_exit();
+ }
+
+ return ECORE_CALLBACK_RENEW;
+}*/
+
+static void launch_email_ug(service_h b, struct appdata *ad)
+{
+ debug_log("");
+
+ if (b == NULL || ad == NULL) {
+ debug_log("bundle data is NULL");
+ return;
+ }
+
+ gint acct_id = 0;
+
+ /* 0. run email in no default account */
+ if (!email_engine_get_default_account(&acct_id)) {
+ debug_log("Initial Access");
+
+ if (ad->setting_ug) {
+ debug_log("Setting is already running");
+ return;
+ }
+
+ int ret;
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ return;
+ }
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIEW_TYPE, EMAIL_BUNDLE_VAL_VIEW_FIRST_SETUP);
+ debug_log("service_add_extra_data: %d", ret);
+
+ ad->setting_ug = create_ug(UG_NAME_EMAIL_SETTING, service, ad);
+
+ if (NULL != ad->setting_ug) {
+ _b_setting_opened = true;
+ }
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+ }
+
+ /* 1. run email ug from app service */
+ if (check_app_svc_operation(b, ad, acct_id)) {
+ return;
+ }
+
+ /* 2. run email ug from mime type parsing */
+ if (check_aul_mime_operation(b, ad)) {
+ return;
+ }
+
+ /* 3. run email ug from run type */
+ if (check_aul_launch_operation(b, ad)) {
+ return;
+ }
+
+ /* 4. run email in normal case (from menuscreen) */
+ if (email_engine_get_default_account(&acct_id)) {
+ debug_log("run email in normal case");
+ if (ad->mailbox_ug) {
+ debug_log("Mailbox is already running");
+ return;
+ }
+
+ int ret;
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ return;
+ }
+
+ char initial[4] = { 0, };
+ snprintf(initial, sizeof(initial), "%d", 1);
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_INITIAL_RUN, initial);
+ debug_log("service_add_extra_data: %d", ret);
+
+ ad->mailbox_ug = create_ug(UG_NAME_EMAIL_MAILBOX, service, ad);
+ _g_mailbox_ug = ad->mailbox_ug;
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+ }
+}
+
+static int check_app_svc_operation(service_h b, struct appdata *ad, gint account_id)
+{
+ debug_log("");
+
+ char *uri = NULL;
+ char *mime = NULL;
+ char *to = NULL;
+ char *cc = NULL;
+ char *bcc = NULL;
+ char *subject = NULL;
+ char *body = NULL;
+ char *operation = NULL;
+ char rtype[10] = { 0, };
+
+ service_get_operation(b, &operation);
+ debug_log("operation = %s", operation);
+
+ if (!operation) {
+ return FALSE;
+ } else {
+ if (g_strcmp0(operation, SERVICE_OPERATION_SEND) != 0 &&
+ g_strcmp0(operation, SERVICE_OPERATION_SEND_TEXT) != 0) {
+ return FALSE;
+ }
+
+ if (email_engine_get_default_account(&account_id) == FALSE) {
+ Evas_Object *popup = elm_popup_add(ad->win_main);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_popup_timeout_set(popup, 2.0);
+ elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_POP_WARNING"));
+ elm_object_text_set(popup, _("IDS_EMAIL_POP_THERE_IS_NO_ACCOUNT_CREATE_A_NEW_ACCOUNT_FIRST"));
+ evas_object_smart_callback_add(popup, "block,clicked", block_clicked_cb, NULL);
+ evas_object_show(popup);
+ return FALSE;
+ }
+
+ int ret;
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ return FALSE;
+ }
+
+ snprintf(rtype, sizeof(rtype), "%d", RUN_COMPOSER_EXTERNAL);
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, rtype);
+ debug_log("service_add_extra_data: %d", ret);
+
+ if (g_strcmp0(operation, SERVICE_OPERATION_SEND) == 0) {
+ service_get_uri(b, &uri);
+ if (uri) {
+ debug_log("uri: %s", uri);
+
+ if (g_str_has_prefix(uri, URI_SCHEME_MAILTO)) {
+ gchar **vector;
+ vector = g_strsplit_set(uri, "?", -1);
+ if (vector != NULL) {
+ char *mailto_uri = g_strdup(vector[0]);
+ g_strfreev(vector);
+
+ if (mailto_uri && (strlen(mailto_uri) - strlen(URI_SCHEME_MAILTO)) > 0) {
+ to = g_strndup(mailto_uri + strlen(URI_SCHEME_MAILTO),
+ strlen(mailto_uri) - strlen(URI_SCHEME_MAILTO));
+ }
+
+ g_free(mailto_uri);
+ }
+ } else if (g_str_has_prefix(uri, URI_SCHEME_FILE)) {
+ char *file_uri = g_strndup(uri + strlen(URI_SCHEME_FILE),
+ strlen(uri) - strlen(URI_SCHEME_FILE));
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ATTACHMENT, file_uri);
+ debug_log("service_add_extra_data: %d", ret);
+ } else if (g_str_has_prefix(uri, URI_SCHEME_HTTP)) {
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BODY, uri);
+ debug_log("service_add_extra_data: %d", ret);
+ } else if (g_str_has_prefix(uri, "/")) {
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ATTACHMENT, uri);
+ debug_log("service_add_extra_data: %d", ret);
+ }
+ }
+
+ service_get_mime(b, &mime);
+ if (mime)
+ debug_log("mime: %s", mime);
+ }
+
+ if (!to)
+ service_get_extra_data(b, SERVICE_DATA_TO, &to);
+ if (to) {
+ debug_log("to address = %s", to);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_TO, to);
+ debug_log("service_add_extra_data: %d", ret);
+ }
+
+ service_get_extra_data(b, SERVICE_DATA_CC, &cc);
+
+ if (cc) {
+ debug_log("cc address = %s", cc);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CC, cc);
+ debug_log("service_add_extra_data: %d", ret);
+ }
+
+ service_get_extra_data(b, SERVICE_DATA_BCC, &bcc);
+
+ if (bcc) {
+ debug_log("bcc address = %s", bcc);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BCC, bcc);
+ debug_log("service_add_extra_data: %d", ret);
+ }
+
+ service_get_extra_data(b, SERVICE_DATA_SUBJECT, &subject);
+
+ if (subject) {
+ debug_log("subject = %s", subject);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_SUBJECT, subject);
+ debug_log("service_add_extra_data: %d", ret);
+ }
+
+ service_get_extra_data(b, SERVICE_DATA_TEXT, &body);
+
+ if (body) {
+ debug_log("body = %s", body);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BODY, body);
+ debug_log("service_add_extra_data: %d", ret);
+ }
+
+ ad->composer_ug = create_ug(UG_NAME_EMAIL_COMPOSER, service, ad);
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+
+ if (to)
+ g_free(to);
+ if (cc)
+ g_free(cc);
+ if (bcc)
+ g_free(bcc);
+ if (subject)
+ g_free(subject);
+ if (body)
+ g_free(body);
+
+ return TRUE;
+ }
+}
+
+static int check_aul_mime_operation(service_h b, struct appdata *ad)
+{
+ debug_log("");
+ char *aul_content = NULL;
+ char *aul_mime_type = NULL;
+ char rtype[10] = { 0, };
+
+ int ret = service_get_extra_data(b, AUL_K_MIME_TYPE, &aul_mime_type); //"__AUL_MIME_TYPE__"
+ debug_log("service_get_extra_data: %d", ret);
+ ret = service_get_extra_data(b, AUL_K_MIME_CONTENT, &aul_content); //"__AUL_MIME_CONTENT__"
+ debug_log("service_get_extra_data: %d", ret);
+
+ debug_log("mime_type:%s, content:%s", aul_mime_type, aul_content);
+ if (aul_mime_type != NULL && aul_content != NULL) {
+ if (strcmp(aul_mime_type, "email.uri") == 0) {
+ debug_log("AUL CONTENT OPEN, launch composer");
+ struct ug_cbs cbs = { 0, };
+
+ cbs.layout_cb = layout_cb;
+ cbs.result_cb = result_cb;
+ cbs.destroy_cb = aul_destroy_cb;
+ cbs.priv = ad;
+
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ goto FINISH_MIME_LAUNCH;
+ }
+
+ snprintf(rtype, sizeof(rtype), "%d", RUN_COMPOSER_EXTERNAL);
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, rtype);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_TO, aul_content);
+ debug_log("service_add_extra_data: %d", ret);
+
+ ad->composer_ug = ug_create(NULL, UG_NAME_EMAIL_COMPOSER, UG_MODE_FULLVIEW, service, &cbs);
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+ } else {
+ debug_log("Not supported mime type : %s", aul_mime_type);
+ }
+
+FINISH_MIME_LAUNCH:
+ g_free(aul_content);
+ g_free(aul_mime_type);
+ return TRUE;
+ } else {
+ if (aul_content)
+ g_free(aul_content);
+ if (aul_mime_type)
+ g_free(aul_mime_type);
+ return FALSE;
+ }
+}
+
+static int check_aul_launch_operation(service_h b, struct appdata *ad)
+{
+ debug_log("");
+
+ char *runtype = NULL;
+ char *account_id = NULL;
+ char *mail_id = NULL;
+ char *mailbox_id = NULL;
+ char *thread_id = NULL;
+ char *to = NULL;
+ char *cc = NULL;
+ char *bcc = NULL;
+ char *subject = NULL;
+ char *body = NULL;
+ char *attachment = NULL;
+
+ int ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_RUN_TYPE, &runtype);
+ debug_log("service_get_extra_data: %d", ret);
+
+ debug_log("runtype:%s", runtype);
+ if (runtype != NULL) {
+ if (atoi(runtype) == RUN_COMPOSER_EDIT) {
+ debug_log("RUN_COMPOSER_EDIT");
+ if (ad->composer_ug) {
+ debug_log("Composer is already running");
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_MAILBOX, &mailbox_id);
+ debug_log("service_get_extra_data: %d", ret);
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_MAIL_ID, &mail_id);
+ debug_log("service_get_extra_data: %d", ret);
+
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ goto ERROR_AUL_LAUNCH;
+ }
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, runtype);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailbox_id);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAIL_ID, mail_id);
+ debug_log("service_add_extra_data: %d", ret);
+
+ ad->composer_ug = create_ug(UG_NAME_EMAIL_COMPOSER, service, ad);
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ else if (atoi(runtype) == RUN_COMPOSER_NEW) {
+ debug_log("RUN_COMPOSER_NEW");
+ if (ad->composer_ug) {
+ debug_log("Composer is already running");
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ int acc_id;
+ email_engine_get_default_account(&acc_id);
+
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ goto ERROR_AUL_LAUNCH;
+ }
+
+ char s_composer_type[14] = { 0, };
+ char s_account_id[14] = { 0, };
+ snprintf(s_composer_type, sizeof(s_composer_type), "%d", RUN_COMPOSER_NEW);
+ snprintf(s_account_id, sizeof(s_account_id), "%d", acc_id);
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, s_composer_type);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, s_account_id);
+ debug_log("service_add_extra_data: %d", ret);
+
+ ad->composer_ug = create_ug(UG_NAME_EMAIL_COMPOSER, service, ad);
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ else if (atoi(runtype) == RUN_COMPOSER_EXTERNAL) {
+ debug_log("RUN_COMPOSER_EXTERNAL");
+ if (ad->composer_ug) {
+ debug_log("Composer is already running");
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_TO, &to);
+ debug_log("service_get_extra_data: %d", ret);
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_CC, &cc);
+ debug_log("service_get_extra_data: %d", ret);
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_BCC, &bcc);
+ debug_log("service_get_extra_data: %d", ret);
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_SUBJECT, &subject);
+ debug_log("service_get_extra_data: %d", ret);
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_BODY, &body);
+ debug_log("service_get_extra_data: %d", ret);
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_ATTACHMENT, &attachment);
+ debug_log("service_get_extra_data: %d", ret);
+
+ int acc_id;
+ email_engine_get_default_account(&acc_id);
+
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ goto ERROR_AUL_LAUNCH;
+ }
+
+ char s_composer_type[14] = { 0, };
+ char s_account_id[14] = { 0, };
+
+ snprintf(s_composer_type, sizeof(s_composer_type), "%d", RUN_COMPOSER_EXTERNAL);
+ snprintf(s_account_id, sizeof(s_account_id), "%d", acc_id);
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, s_composer_type);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, s_account_id);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_TO, to);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CC, cc);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BCC, bcc);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_SUBJECT, subject);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BODY, body);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ATTACHMENT, attachment);
+ debug_log("service_add_extra_data: %d", ret);
+
+ ad->composer_ug = create_ug(UG_NAME_EMAIL_COMPOSER, service, ad);
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ else if (atoi(runtype) == RUN_VIEWER) {
+ debug_log("RUN_VIEWER");
+ if (ad->viewer_ug) {
+ debug_log("Viewer is already running");
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ char livemagazine[10] = { 0, };
+ char internal[10] = { 0, };
+
+ snprintf(livemagazine, sizeof(livemagazine), "%d", 0);
+ snprintf(internal, sizeof(internal), "%d", 0);
+
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_ACCOUNT_ID, &account_id);
+ debug_log("service_get_extra_data: %d", ret);
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_MAIL_ID, &mail_id);
+ debug_log("service_get_extra_data: %d", ret);
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_MAILBOX, &mailbox_id);
+ debug_log("service_get_extra_data: %d", ret);
+
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ goto ERROR_AUL_LAUNCH;
+ }
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, account_id);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAIL_ID, mail_id);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailbox_id);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_LIVEMAGAZINE, livemagazine);
+ debug_log("service_add_extra_data: %d", ret);
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_INTERNAL, internal);
+ debug_log("service_add_extra_data: %d", ret);
+
+ ad->viewer_ug = create_ug(UG_NAME_EMAIL_VIEWER, service, ad);
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ else if (atoi(runtype) == RUN_MAILBOX_THREAD) {
+ debug_log("RUN_MAILBOX_THREAD");
+ if (ad->mailbox_ug) {
+ debug_log("Mailbox is already running");
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_THREAD_ID, &thread_id);
+ debug_log("service_get_extra_data: %d", ret);
+ debug_log("thread_id: [%d]", atoi(thread_id));
+
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ goto ERROR_AUL_LAUNCH;
+ }
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_THREAD_ID, thread_id);
+ debug_log("service_add_extra_data: %d", ret);
+
+ ad->mailbox_ug = create_ug(UG_NAME_EMAIL_MAILBOX, service, ad);
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ else if (atoi(runtype) == RUN_SETTING_ACCOUNT_ADD) {
+ debug_log("RUN_SETTING_ACCOUNT_ADD");
+
+ gint acct_id = 0;
+ if (email_engine_get_default_account(&acct_id)) {
+ debug_log("Default accont is exist");
+ goto ERROR_AUL_LAUNCH;
+ }
+
+ if (ad->setting_ug) {
+ debug_log("Setting is already running");
+ goto FINISH_AUL_LAUNCH;
+ }
+
+ service_h service = NULL;
+
+ ret = service_create(&service);
+ debug_log("service_create: %d", ret);
+ if (!service) {
+ debug_log("service create failed");
+ goto ERROR_AUL_LAUNCH;
+ }
+
+ ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIEW_TYPE, EMAIL_BUNDLE_VAL_VIEW_FIRST_SETUP);
+ debug_log("service_add_extra_data: %d", ret);
+
+ ad->setting_ug = create_ug(UG_NAME_EMAIL_SETTING, service, ad);
+
+ ret = service_destroy(service);
+ debug_log("service_destroy: %d", ret);
+
+ goto FINISH_AUL_LAUNCH;
+ }
+
+FINISH_AUL_LAUNCH:
+ g_free(runtype);
+ g_free(mailbox_id);
+ g_free(mail_id);
+ g_free(account_id);
+ g_free(thread_id);
+ g_free(to);
+ g_free(cc);
+ g_free(bcc);
+ g_free(subject);
+ g_free(body);
+ g_free(attachment);
+ return TRUE;
+
+ERROR_AUL_LAUNCH:
+ g_free(runtype);
+ g_free(mailbox_id);
+ g_free(mail_id);
+ g_free(account_id);
+ g_free(thread_id);
+ g_free(to);
+ g_free(cc);
+ g_free(bcc);
+ g_free(subject);
+ g_free(body);
+ g_free(attachment);
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+static void block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ evas_object_del(obj);
+}
+
+static void popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+
+ if (obj)
+ evas_object_del(obj);
+
+ elm_exit();
+}
+
+static void popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ debug_log("");
+ elm_exit();
+}
+
+/* EOF */
--- /dev/null
+/*
+ * 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_H_
+#define __DEF_EMAIL_H_
+
+#include <Elementary.h>
+
+#include "email-locale.h"
+
+#endif
+
+/* EOF */
--- /dev/null
+[ProcessSetting]
+BG_SCHEDULE=true
--- /dev/null
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.email" version="0.9.30" install-location="internal-only">
+ <label>Email</label>
+ <author email="minnsoo.kim@samsung.com" href="www.samsung.com">Minsoo Kim</author>
+ <description>Email Application</description>
+ <ui-application appid="org.tizen.email" exec="/opt/apps/org.tizen.email/bin/email" nodisplay="false" taskmanage="true" multiple="false" type = "capp">
+ <label>Email</label>
+ <icon>org.tizen.email.png</icon>
+ <label xml:lang="en-us">Email</label>
+ <label xml:lang="nl-nl">E-mail</label>
+ <label xml:lang="de-de">E-Mail</label>
+ <label xml:lang="zh-hk">電子郵件</label>
+ <label xml:lang="zh-cn">电子邮件</label>
+ <label xml:lang="ru-ru">E-mail</label>
+ <label xml:lang="zh-tw">電子郵件</label>
+ <label xml:lang="ja-jp">Eメール</label>
+ <label xml:lang="es-es">Email</label>
+ <label xml:lang="el-gr">Email</label>
+ <label xml:lang="it-it">E-mail</label>
+ <label xml:lang="tr-tr">E-posta</label>
+ <label xml:lang="pt-pt">E-mail</label>
+ <label xml:lang="fr-fr">E-mail</label>
+ <label xml:lang="ko-kr">이메일</label>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/send"/>
+ <mime name="*/*"/>
+ </application-service>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/send_text"/>
+ </application-service>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/send"/>
+ <uri name="mailto"/>
+ </application-service>
+ </ui-application>
+ <ui-application appid="email-composer-efl" exec="/opt/ug/bin/email-composer-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+ <label>Email composer</label>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/send"/>
+ <mime name="*/*"/>
+ </application-service>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/send_text"/>
+ </application-service>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/send"/>
+ <uri name="mailto"/>
+ </application-service>
+ </ui-application>
+</manifest>
Source0: %{name}-%{version}.tar.gz
Requires(post): /usr/bin/vconftool
BuildRequires: cmake
+BuildRequires: libug-contacts-devel
BuildRequires: libicu-devel
BuildRequires: edje-tools
BuildRequires: embryo-bin
BuildRequires: pkgconfig(heynoti)
BuildRequires: pkgconfig(syspopup-caller)
BuildRequires: pkgconfig(status)
+BuildRequires: pkgconfig(capi-system-sensor)
%description
%files
%defattr(-,root,root,-)
+%exclude %{_datadir}/process-info/email.ini
%{_appdir}/org.tizen.email/lib/libemail-common.so
-%{_ugdir}/lib/libug-email-setting-efl.so
%{_ugdir}/lib/libug-email-composer-efl.so
+#%{_ugdir}/lib/libug-email-viewer-efl.so
+%{_ugdir}/lib/libug-email-account-efl.so
+%{_ugdir}/lib/libug-email-block-efl.so
+%{_ugdir}/lib/libug-email-mailbox-efl.so
+%{_ugdir}/lib/libug-email-setting-efl.so
%{_ugdir}/res/locale/*/LC_MESSAGES/*
+#%{_appdir}/org.tizen.email/res/edje/email-viewer-theme.edj
%{_appdir}/org.tizen.email/res/edje/email-setting-theme.edj
+%{_appdir}/org.tizen.email/res/edje/email-block-theme.edj
+%{_appdir}/org.tizen.email/res/edje/email-account-theme.edj
+%{_appdir}/org.tizen.email/res/edje/email-effect-layout.edj
%{_appdir}/org.tizen.email/res/edje/email-composer-view.edj
+%{_appdir}/org.tizen.email/res/edje/email-mailbox-theme.edj
%{_appdir}/org.tizen.email/res/locale/*/LC_MESSAGES/*
%{_appdir}/org.tizen.email/res/images/*
+%{_appdir}/org.tizen.email/bin/email
%{_appdir}/org.tizen.email/data/_email_default.html
+%{_optdir}/share/packages/org.tizen.email.xml
%{_optdir}/share/packages/ug-email-composer-efl.xml
%{_optdir}/share/icons/default/small/org.tizen.email.png