diff options
author | Seongho Jeong <seongho@linux-ioz5.site> | 2012-09-28 14:45:50 +0900 |
---|---|---|
committer | Seongho Jeong <seongho@linux-ioz5.site> | 2012-09-28 14:45:50 +0900 |
commit | 93025334955ee4844c860a202e3cb4e2355b11c9 (patch) | |
tree | b8ce904f94438fd2605fbb92b7f99c6029702bfd | |
parent | ff11d4aeead0ecc08c5eac4d351a5cddae7950ec (diff) | |
download | email-master.tar.gz email-master.tar.bz2 email-master.zip |
Signed-off-by: Seongho Jeong <seongho@linux-ioz5.site>
245 files changed, 46133 insertions, 551 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 8212d10..d2e0638 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ SET(LOCALEDIR "${RESDIR}/locale") SET(ICONDIR "/opt/share/icons/default/small") SET(EDJDIR "${RESDIR}/edje") SET(IMGDIR "${RESDIR}/images") +SET(JSDIR "${RESDIR}/js") SET(UGDIR "/opt/ug/lib") ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"") @@ -18,9 +19,15 @@ ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"") ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"") ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"") ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"") +ADD_DEFINITIONS("-DJSDIR=\"${JSDIR}\"") # Add your submodule directory name ADD_SUBDIRECTORY(common) ADD_SUBDIRECTORY(setting) ADD_SUBDIRECTORY(composer) +ADD_SUBDIRECTORY(viewer) +ADD_SUBDIRECTORY(mailbox) +ADD_SUBDIRECTORY(block) +ADD_SUBDIRECTORY(account) +ADD_SUBDIRECTORY(main) ADD_SUBDIRECTORY(po) diff --git a/account/CMakeLists.txt b/account/CMakeLists.txt new file mode 100755 index 0000000..41a99bc --- /dev/null +++ b/account/CMakeLists.txt @@ -0,0 +1,61 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ug-email-account-efl C)
+
+SET(SRCS
+ ./src/email-account.c
+ ./src/email-account-folder.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_ACCOUNT_SOURCE_DIR "${CMAKE_SOURCE_DIR}/account")
+SET(CMAKE_ACCOUNT_BINARY_DIR "${CMAKE_BINARY_DIR}/account")
+INCLUDE_DIRECTORIES(${CMAKE_ACCOUNT_SOURCE_DIR}/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs-account REQUIRED appcore-efl ui-gadget-1 x11 elementary email-service bundle dlog capi-appfw-application status)
+
+FOREACH(flag ${pkgs-account_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")
+
+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_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} email-common ${pkgs-account_LDFLAGS})
+
+ADD_CUSTOM_TARGET(email-account-theme.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
+ ${CMAKE_ACCOUNT_SOURCE_DIR}/theme/email_account_theme.edc ${CMAKE_ACCOUNT_BINARY_DIR}/email-account-theme.edj
+ DEPENDS ${CMAKE_ACCOUNT_SOURCE_DIR}/theme/email_account_theme.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} email-account-theme.edj)
+
+ADD_CUSTOM_TARGET(email-effect-layout.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
+ ${CMAKE_ACCOUNT_SOURCE_DIR}/theme/email_effect_layout.edc ${CMAKE_ACCOUNT_BINARY_DIR}/email-effect-layout.edj
+ DEPENDS ${CMAKE_ACCOUNT_SOURCE_DIR}/theme/email_effect_layout.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} email-effect-layout.edj)
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR})
+INSTALL(FILES ${CMAKE_ACCOUNT_BINARY_DIR}/email-account-theme.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_ACCOUNT_BINARY_DIR}/email-effect-layout.edj DESTINATION ${EDJDIR})
+
diff --git a/account/include/email-account-folder.h b/account/include/email-account-folder.h new file mode 100755 index 0000000..a118eff --- /dev/null +++ b/account/include/email-account-folder.h @@ -0,0 +1,33 @@ +/* + * 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 */ diff --git a/account/include/email-account.h b/account/include/email-account.h new file mode 100755 index 0000000..d9e9227 --- /dev/null +++ b/account/include/email-account.h @@ -0,0 +1,224 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __email_account_H__ +#define __email_account_H__ + +#include <Edje.h> +#include <Elementary.h> +#include <libintl.h> +#include <ui-gadget-module.h> +#undef _ +#include <appcore-efl.h> + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <getopt.h> +#include <glib.h> +#include <glib-object.h> +#include <Ecore_IMF.h> +#include <utilX.h> +#include <vconf.h> +#include <vconf-keys.h> +#include <glib/gprintf.h> +#include <status.h> + +#include "email-api.h" +#include "email-types.h" + +#include "email-utils.h" +#include "email-engine.h" +#include "email-debug.h" +#include "email-common-types.h" +#include "email-locale.h" + +#define ACCOUNT_PACKAGE "email-account" +#define THEME_PATH EDJDIR"/email-account-theme.edj" + +#define CONTROLBAR_ICON_COMPOSE IMGDIR"/M02_controlbar_icon_compose.png" +#define CONTROLBAR_ICON_UPDATE IMGDIR"/M02_controlbar_icon_update.png" +#define CONTROLBAR_ICON_ADD IMGDIR"/M02_controlbar_icon_add_folder.png" +#define CONTROLBAR_ICON_RENAME IMGDIR"/M02_controlbar_icon_edit.png" +#define CONTROLBAR_ICON_MOVE IMGDIR"/M02_controlbar_icon_move.png" +#define CONTROLBAR_ICON_DELETE IMGDIR"/M02_controlbar_icon_delete.png" + +#define ACCOUNT_ICON_GMAIL IMGDIR"/M02_email_list_icon_gmail.png" +#define ACCOUNT_ICON_HOTMAIL IMGDIR"/M02_email_list_icon_hotmail.png" +#define ACCOUNT_ICON_YAHOO IMGDIR"/M02_email_list_icon_YahooMail.png" +#define ACCOUNT_ICON_AOL IMGDIR"/M02_email_list_icon_AOL.png" +#define ACCOUNT_ICON_OTHERS IMGDIR"/icon_email.png" + +#define ACCOUNT_ICON_ADDACCOUNT IMGDIR"/M02_email_list_icon_addaccount.png" +#define ACCOUNT_ICON_ALLACCOUNT IMGDIR"/M02_email_list_icon_allaccount.png" + +#define _EDJ(o) elm_layout_edje_get(o) + +#define MAX_STR_LEN 1024 +#define NUM_STR_LEN 20 + +#define EMAIL_HANDLE_INVALID -1 + +typedef enum +{ + ACC_MAILBOX_TYPE_INBOX = 0, /**< Specified inbox type*/ + ACC_MAILBOX_TYPE_FLAGGED = 1, /**< Specified flagged mailbox type on gmail */ + ACC_MAILBOX_TYPE_DRAFT = 2, /**< Specified draft box type*/ + ACC_MAILBOX_TYPE_OUTBOX = 3, /**< Specified outbox type*/ + ACC_MAILBOX_TYPE_SENTBOX = 4, /**< Specified sent box type*/ + ACC_MAILBOX_TYPE_SPAMBOX = 5, /**< Specified spam box type*/ + ACC_MAILBOX_TYPE_TRASH = 6, /**< Specified trash type*/ + ACC_MAILBOX_TYPE_MAX = 7, /**< Specified all emails type of gmail*/ +}account_mailbox_type_e; + +typedef enum +{ + ACC_UG_ACCOUNT_VIEW = 0, /** UG_MODE_FRAMEVIEW */ + ACC_UG_FOLDER_VIEW = 1, /** UG_MODE_FULLVIEW */ +}account_ug_view_type_e; + +typedef enum +{ + ACC_FOLDER_NONE = 0, + ACC_FOLDER_CREATE = 1, + ACC_FOLDER_RENAME = 2, + ACC_FOLDER_DELETE = 3, + ACC_FOLDER_MOVE_TO = 4, + ACC_FOLDER_MOVE_FROM = 5, +// ACC_FOLDER_EDIT = 2, +}folder_view_type_e; + +struct _menu_item { + char *name; + int i_boxtype; + void (*func)(void *data, Evas_Object *obj, const char *part); +}; + +typedef struct ug_data EmailAccountUGD; +typedef struct email_account_list email_account_list; + +typedef struct _Item_Data Item_Data; +struct _Item_Data { + EmailAccountUGD *ug_data; + email_account_list *alist; + + Elm_Object_Item *it; // Genlist Item pointer + Eina_Bool checked; // Check status + + GNode *child; +}; + +struct email_account_list { + EmailAccountUGD *ug_data; + + int read_count; + int unread_count; + int n_mailbox_list; + email_mailbox_t *mailbox_list; + email_account_t *account_info; + GNode *folder_root; +}; + +struct ug_data { + Evas *evas; + Evas_Object *win; + Evas_Object *bg; + + email_account_t *account_list; + Evas_Object *ly; + Evas_Object *sub_ly; + Evas_Object *navi_bar; + Elm_Object_Item *navibar_item; + Evas_Object *navi_title_ly; + Evas_Object *sp_icon; + Evas_Object *title_arrow; + Evas_Object *r_button; + Evas_Object *ctr_bar; + email_account_list *alist; + gint account_count; + Evas_Object *update_button; + + Evas_Object *gl; + gint n_account_list; + gint end_key_event; + Elm_Object_Item *item[2]; + Evas_Object *control_bar; + + int all_read_count; + int all_unread_count; + int all_acc_read_count[ACC_MAILBOX_TYPE_MAX]; + int all_acc_unread_count[ACC_MAILBOX_TYPE_MAX]; + + int block_item_click; + int main_w; + int main_h; + int b_duplicated_node; + char *traverse_compare; + email_mailbox_t *traverse_compare_mlist; + + GNode *current_parent; + + int account_id; + int folder_id; + int ug_mode; + int mailbox_type; + + int folder_mode; + unsigned emf_handle; + Elm_Object_Item *root_item; + Elm_Object_Item *it; + Evas_Object *entry; + Evas_Object *popup; + Evas_Object *conformant; + Elm_Object_Item *move_from_item; + + Evas_Object *select_info; + Evas_Object *selectioninfo_layout; + int checked_count; + Elm_Object_Item *renamed_it; + + E_DBus_Connection *dbus_conn; + E_DBus_Signal_Handler *signal_handler_network; + E_DBus_Signal_Handler *signal_handler_storage; + + Evas_Object *base; + ui_gadget_h ug_composer; + ui_gadget_h ug_setting; + ui_gadget_h ug; +}; + +#define GET_ACCOUNT_SERVER_TYPE(account_id) \ + ({\ + email_account_t *email_account = NULL;\ + int server_type = 0;\ + int e = email_get_account(account_id, 0, &email_account);\ + if (e != EMAIL_ERROR_NONE || !email_account) {\ + debug_warning("email_get_account acct(%d) - err(%d) or acct NULL(%p)",\ + account_id, e, email_account);\ + }\ + else server_type = email_account->incoming_server_type;\ + if(email_account) email_free_account(&email_account, 1);\ + server_type;\ + }) + +#endif /* __email_account_H__ */ + +void _create_account_view(EmailAccountUGD *ug_data); +void _destroy_view(EmailAccountUGD *ug_data); +Evas_Object *_add_emtpy_list(void *data); +void _open_mail_list(void *data, Evas_Object *obj, void *event_info); + +/* EOF */ diff --git a/account/src/email-account-folder.c b/account/src/email-account-folder.c new file mode 100755 index 0000000..70b6dc9 --- /dev/null +++ b/account/src/email-account-folder.c @@ -0,0 +1,3575 @@ +/* + * 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 { + HOTMAIL =1, + 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 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); + + 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); + } + break; + + case NOTI_MAILBOX_DELETE: + account_id = data1; + mailbox_name = data3; + debug_log("NOTI_MAILBOX_DELETE"); + + 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); + } + break; + + case NOTI_MAILBOX_UPDATE: + account_id = data1; + mailbox_name = data3; + debug_log("NOTI_MAILBOX_UPDATE"); + + 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); + } + 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 */ diff --git a/account/src/email-account.c b/account/src/email-account.c new file mode 100755 index 0000000..f70751d --- /dev/null +++ b/account/src/email-account.c @@ -0,0 +1,1328 @@ +/* + * 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 { + HOTMAIL = 1, + 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 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 */ diff --git a/account/theme/email_account_theme.edc b/account/theme/email_account_theme.edc new file mode 100755 index 0000000..21c528b --- /dev/null +++ b/account/theme/email_account_theme.edc @@ -0,0 +1,1638 @@ +/* + * 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 +} + diff --git a/account/theme/email_effect_layout.edc b/account/theme/email_effect_layout.edc new file mode 100755 index 0000000..c58661a --- /dev/null +++ b/account/theme/email_effect_layout.edc @@ -0,0 +1,106 @@ +/* + * 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"; + } + } + } +} diff --git a/block/CMakeLists.txt b/block/CMakeLists.txt new file mode 100755 index 0000000..4ceca17 --- /dev/null +++ b/block/CMakeLists.txt @@ -0,0 +1,55 @@ +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}) + diff --git a/block/include/email-block.h b/block/include/email-block.h new file mode 100755 index 0000000..60d925c --- /dev/null +++ b/block/include/email-block.h @@ -0,0 +1,251 @@ +/* + * 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 */ diff --git a/block/src/email-block.c b/block/src/email-block.c new file mode 100755 index 0000000..bb4bd9a --- /dev/null +++ b/block/src/email-block.c @@ -0,0 +1,2572 @@ +/* + * 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 */ diff --git a/block/theme/email-block-theme-macro.edc b/block/theme/email-block-theme-macro.edc new file mode 100755 index 0000000..968cf7b --- /dev/null +++ b/block/theme/email-block-theme-macro.edc @@ -0,0 +1,1410 @@ +/* + * 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_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 diff --git a/block/theme/email-block-theme.edc b/block/theme/email-block-theme.edc new file mode 100755 index 0000000..a7d8e76 --- /dev/null +++ b/block/theme/email-block-theme.edc @@ -0,0 +1,135 @@ +/* + * 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-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"; + } + } + } + +} diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index ec8f5a9..ca52802 100755 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -5,6 +5,7 @@ SET(PROJECT_NAME "email-common") SET(SRCS-common ./src/email-debug.c ./src/email-engine.c + ./src/email-html-converter.c ./src/email-utils.c ) @@ -18,7 +19,7 @@ INCLUDE_DIRECTORIES(${CMAKE_COMMON_SOURCE_DIR}/include) 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}") diff --git a/common/include/email-common-types.h b/common/include/email-common-types.h index b531cdf..5b0e1c7 100755 --- a/common/include/email-common-types.h +++ b/common/include/email-common-types.h @@ -25,27 +25,64 @@ #define MAX_URL_LEN 1024 #define MAX_RECPT_LEN (MAX_STR_LEN * 8 + 1) +#define DIR_DEFAULT_MEDIA_PHONE "/opt/media" + /* 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_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_CONTACT_TYPE "type" +#define EMAIL_BUNDLE_KEY_CALENDAR_EDIT_ACCOUNT_ID "account_id" +#define EMAIL_BUNDLE_KEY_CALENDAR_EDIT_MAIL_ID "mail_id" +#define EMAIL_BUNDLE_KEY_CALENDAR_EDIT_SRC_BOX "src_box" +#define EMAIL_BUNDLE_KEY_CALENDAR_EDIT_INDEX "index" +#define EMAIL_BUNDLE_KEY_CALENDAR_EDIT_NOTE "note" #define EMAIL_BUNDLE_KEY_VIDEO_PLAYER_LAUNCH_APP "launching_application" +/* define ug name */ +#define UG_NAME_EMAIL_MAILBOX "email-mailbox-efl" +#define UG_NAME_EMAIL_VIEWER "email-viewer-efl" +#define UG_NAME_EMAIL_BLOCK "email-block-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" +#define UG_NAME_CALENDAR_EDIT "calendar-edit-efl" + /* define bundle value */ +#define EMAIL_BUNDLE_VAL_CALENDAR_EDIT_INDEX "0" +#define EMAIL_BUNDLE_VAL_END_KEY "END_KEY_EVENT" +#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" @@ -67,9 +104,60 @@ typedef enum { 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_COMPOSER_REPLY_INTERNAL, + 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_ATTACHMENTS, + EMAIL_SORT_MAX, +} EmailSortType; + +typedef enum { + EMAIL_GET_MAIL_THREAD = -1, + EMAIL_GET_MAIL_NORMAL = 0, +} EmailGetMailType; + +typedef enum { + EMAIL_EXT_SAVE_ERR_NONE = 0, + EMAIL_EXT_SAVE_ERR_ALREADY_EXIST, + EMAIL_EXT_SAVE_ERR_UNKNOWN +} EmailExtSaveErrType; + +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; @@ -78,6 +166,14 @@ typedef struct { 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 */ diff --git a/common/include/email-engine.h b/common/include/email-engine.h index 0143c85..90f7750 100755 --- a/common/include/email-engine.h +++ b/common/include/email-engine.h @@ -32,8 +32,28 @@ G_BEGIN_DECLS #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); @@ -48,10 +68,26 @@ gboolean email_engine_set_default_account(gint account_id); gboolean email_engine_sync_folder(gint account_id, int mailbox_id, unsigned *handle); void email_engine_stop_working(gint account_id, unsigned handle); +gboolean email_engine_check_seen_mail(gint account_id, gint mail_id); +int email_engine_check_body_download(int mail_id); +gboolean email_engine_body_download(gint account_id, gint mail_id, unsigned *handle); +gboolean email_engine_attachment_download(gint account_id, gint mail_id, gint index, unsigned *handle); + 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_mail(gint account_id, int mailbox_id, gint mail_id); +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); + +GList *email_engine_get_ca_mailbox_list_using_glist(int account_id); +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); G_END_DECLS #endif /* _EMAIL_ENGINE_H_ */ diff --git a/common/include/email-html-converter.h b/common/include/email-html-converter.h new file mode 100755 index 0000000..b232f55 --- /dev/null +++ b/common/include/email-html-converter.h @@ -0,0 +1,29 @@ +/* + * 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_HTML_CONVERTER_H_ +#define _EMAIL_HTML_CONVERTER_H_ + +#include <glib.h> + +G_BEGIN_DECLS +/* g_free(). */ +gchar *email_html_converter(const gchar *plain_text, const gchar *charset); + +G_END_DECLS +#endif /* _EMAIL_HTML_CONVERTER_H_ */ + +/* EOF */ diff --git a/common/include/email-utils.h b/common/include/email-utils.h index 7c0409f..5b64ad4 100755 --- a/common/include/email-utils.h +++ b/common/include/email-utils.h @@ -33,6 +33,8 @@ #include <unicode/udatpg.h> #include <unicode/ustring.h> +#define MAX_DEFAULT_DIR_PATH 256 + G_BEGIN_DECLS /* @@ -47,6 +49,71 @@ G_BEGIN_DECLS #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. @@ -65,7 +132,12 @@ gchar *email_get_file_size_string(guint64 size); /* g_free(). */ 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_attachments_save_file(const gchar *path, gchar *newpath, gboolean(*copy_file_cb) (float percentage)); int email_open_icu_pattern_generator(void); int email_close_icu_pattern_generator(void); @@ -73,6 +145,14 @@ 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(); +int get_app_paused(); +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_ */ diff --git a/common/src/email-engine.c b/common/src/email-engine.c index 0a09b39..11d1144 100755 --- a/common/src/email-engine.c +++ b/common/src/email-engine.c @@ -21,6 +21,7 @@ #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" @@ -29,6 +30,8 @@ #define ACCOUNT_MIN -1 +ui_gadget_h _g_mailbox_ug = NULL; + static guint _g_edb_ref_count = 0; @@ -46,7 +49,6 @@ gboolean email_engine_initialize(void) debug_log("email_service_begin"); - /*err = ipcEmailProxy_Initialize(0);*/ err = email_service_begin(); if (err != EMAIL_ERROR_NONE) { debug_critical("fail to email_service_begin - err(%d)", err); @@ -90,6 +92,25 @@ void email_engine_finalize(void) } } +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(""); @@ -103,7 +124,7 @@ gboolean email_engine_add_account(email_account_t *_account, int *account_id) debug_critical("Error code(%d)", err); return FALSE; } - debug_log("Create Succeed"); + debug_log("Succeed in adding account"); *account_id = _account->account_id; debug_log("account id is %d", _account->account_id); @@ -126,7 +147,7 @@ gboolean email_engine_add_account_with_validation(email_account_t *_account, int return FALSE; } - debug_log("Create Succeed"); + debug_log("Succeed in adding account with validation"); *account_id = _account->account_id; debug_log("account id is %d", _account->account_id); @@ -143,7 +164,7 @@ gboolean email_engine_update_account(gint account_id, email_account_t *_account) err = email_update_account(account_id, _account); if (err == EMAIL_ERROR_NONE) { - debug_log("email_update_account successful"); + debug_log("Suceeded in email_update_account"); return TRUE; } else { debug_critical("Failed to update account Err(%d)", err); @@ -161,7 +182,7 @@ gboolean email_engine_update_account_with_validation(gint account_id, email_acco err = email_update_account_with_validation(account_id, _account); if (err == EMAIL_ERROR_NONE) { - debug_log("email_update_account_with_validation successful"); + debug_log("Suceeded in email_update_account_with_validation"); return TRUE; } else { debug_critical("Failed to update account with validation Err(%d)", err); @@ -217,7 +238,7 @@ gboolean email_engine_free_account_list(email_account_t **_account_list, int cou debug_critical("Fail to free account list Err(%d)", err); return FALSE; } else { - debug_log("Success to free account list"); + debug_log("Succeed in freeing account list"); return TRUE; } } @@ -323,7 +344,7 @@ gboolean email_engine_sync_folder(gint account_id, int mailbox_id, unsigned *han int err = 0; err = email_sync_header(account_id, mailbox_id, &email_handle); - debug_critical("email_handle: %d", email_handle); + debug_log("email_handle: %d", email_handle); if (err != EMAIL_ERROR_NONE) { debug_critical("fail to sync current folder - err (%d)", err); @@ -358,6 +379,126 @@ void email_engine_stop_working(gint account_id, unsigned handle) } } +gboolean email_engine_check_seen_mail(gint account_id, gint mail_id) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE); + 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->flags_seen_field; + debug_log("flags_seen_field: %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; +} + +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_body_download(gint account_id, gint mail_id, unsigned *handle) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE); + RETURN_VAL_IF_FAIL(mail_id > 0, FALSE); + + int err = 0; + unsigned email_handle = 0; + gboolean res = FALSE; + + err = email_download_body(mail_id, 0, &email_handle); + + if (err != EMAIL_ERROR_NONE) { + debug_warning("fail to download body - err (%d)", err); + goto error; + } + + if (handle != NULL) { + debug_log("email_handle for body download: %d", email_handle); + *handle = email_handle; + } + + res = TRUE; + + error: + return res; +} + +gboolean email_engine_attachment_download(gint account_id, gint mail_id, gint index, unsigned *handle) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE); + RETURN_VAL_IF_FAIL(mail_id > 0, FALSE); + RETURN_VAL_IF_FAIL(index > 0, FALSE); + + int err = 0; + unsigned email_handle = 0; + gboolean res = FALSE; + + err = email_download_attachment(mail_id, index, &email_handle); + + if (err != EMAIL_ERROR_NONE) { + debug_warning("fail to download attachment - err (%d)", err); + goto error; + } + + if (handle != NULL) { + debug_log("email_handle for attachment download: %d", email_handle); + *handle = email_handle; + } + + res = TRUE; + + error: + return res; +} + gboolean email_engine_delete_mail(gint account_id, int mailbox_id, gint mail_id, int sync) { debug_log(""); @@ -384,6 +525,69 @@ gboolean email_engine_delete_mail(gint account_id, int mailbox_id, gint mail_id, 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); + + 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_mail(gint account_id, int mailbox_id, gint mail_id) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE); + RETURN_VAL_IF_FAIL(mail_id > 0, FALSE); + + debug_log("account_id: %d", account_id); + debug_log("mail_id: %d", mail_id); + + int err = 0; + gboolean res = TRUE; /* MUST BE initialized TRUE. */ + + RETURN_VAL_IF_FAIL(mailbox_id > 0, FALSE); + + int mail_ids[1] = { 0 }; + mail_ids[0] = mail_id; + + err = email_move_mail_to_mailbox(mail_ids, 1, mailbox_id); + + if (err != EMAIL_ERROR_NONE) { + debug_warning("failed to move 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(""); @@ -420,4 +624,266 @@ gchar *email_engine_get_attachment_path(gint attach_id) 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; +} + +GList *email_engine_get_ca_mailbox_list_using_glist(int account_id) +{ + debug_log(""); + int i, count = 0; + email_mailbox_t *mailbox_list = NULL; + GList *ret = NULL; + int err = 0; + /* + debug_log("account_id: %d", account_id); + debug_log("&mailbox_list: 0x%x", &mailbox_list); + */ + + err = email_get_mailbox_list_ex(account_id, -1, 1, &mailbox_list, &count); + if (err != EMAIL_ERROR_NONE) { + debug_critical("email_get_mailbox_list return error"); + goto finally; + } + /* + debug_log("Executing email_get_mailbox_list is ended."); + debug_log("count: %d", count); + */ + + for (i = 0; i < count; i++) { + EmailMailboxNameAndAlias *nameandalias = calloc(1, sizeof(EmailMailboxNameAndAlias)); + if (mailbox_list[i].mailbox_name == NULL) { + debug_critical("mailbox_list[%d].name is null", i); + free(nameandalias); + continue; + } else { + /* debug_log("mailbox_list[].name is %s", mailbox_list[i].mailbox_name); */ + } + nameandalias->name = g_strdup(mailbox_list[i].mailbox_name); + nameandalias->mailbox_id = mailbox_list[i].mailbox_id; + + if (mailbox_list[i].alias == NULL) { + debug_critical("alias is NULL"); + nameandalias->alias = nameandalias->name; + } else { + /* debug_log("mailbox_list[].alias is %s", mailbox_list[i].alias); */ + nameandalias->alias = g_strdup(mailbox_list[i].alias); + } + + nameandalias->mailbox_type = mailbox_list[i].mailbox_type; + nameandalias->unread_count = mailbox_list[i].unread_count; + nameandalias->total_mail_count_on_local = mailbox_list[i].total_mail_count_on_local; + nameandalias->total_mail_count_on_server = mailbox_list[i].total_mail_count_on_server; + + ret = g_list_append(ret, (gpointer)nameandalias); + + /* debug_log("mailbox name: %s", mailbox_list[i].mailbox_name); */ + } + + finally: + + email_free_mailbox(&mailbox_list, count); + return ret; +} + +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; +} + + /* EOF */ diff --git a/common/src/email-html-converter.c b/common/src/email-html-converter.c new file mode 100755 index 0000000..2d79e20 --- /dev/null +++ b/common/src/email-html-converter.c @@ -0,0 +1,215 @@ +/* + * 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 <string.h> +#include <sys/types.h> + +#include <glib.h> +#include <glib/gprintf.h> + +#include "email-common-types.h" +#include "email-debug.h" +#include "email-utils.h" +#include "email-html-converter.h" + +#define _USE_HTML_DUMP_ 0 + +static const gchar *_get_html_tag(const gchar char_val) +{ + const gchar *tag = NULL; + + switch (char_val) { + case '\n': + tag = "<br>"; + break; + case '\r': + tag = ""; /* skip. */ + break; + case '<': + tag = "<"; + break; + case '>': + tag = ">"; + break; + default: + break; + } + return tag; +} + +/* g_free(). */ +static gchar *_get_parse_plain_text(const gchar *text, gint size) +{ + RETURN_VAL_IF_FAIL(STR_VALID(text), NULL); + RETURN_VAL_IF_FAIL(size > 0, NULL); + + gchar *html = NULL; + gchar *buff = NULL; + gchar *temp = NULL; + guint i = 0; + guint old_offset = 0, offset = 0; + + for (i = 0; i < size; ++i) { + + /* Get html tag. */ + const gchar *tag = _get_html_tag(text[i]); + + /* If need, convert text to html format. */ + if (tag) { + + temp = html; + + if (i > old_offset) { + offset = i - old_offset; + buff = g_strndup(&text[old_offset], offset); + if (temp) { + html = g_strconcat(temp, buff, tag, NULL); + } else { + html = g_strconcat(buff, tag, NULL); + } + if (buff) { + g_free(buff); + buff = NULL; + } + } else { + if (temp) { + html = g_strconcat(temp, tag, NULL); + } else { + html = g_strconcat(tag, NULL); + } + } + + if (temp) { + g_free(temp); + temp = NULL; + } + + old_offset = i + 1; + } + } + + /* If not terminated. */ + if (old_offset < size) { + if (html) { + temp = html; + buff = g_strndup(&text[old_offset], size - old_offset); + html = g_strconcat(temp, buff, NULL); + if (buff) { + g_free(buff); + } + g_free(temp); + } + } + + return html ? html : g_strndup(text, size); +} + +static void _dump_buff(const gchar *buff) +{ + RETURN_IF_FAIL(STR_VALID(buff)); + +#if _USE_HTML_DUMP_ == 1 + tzset(); /* MUST BE. */ + time_t now = time(NULL); + struct tm *t = localtime(&now); + + gchar buff_path[MAX_STR_LEN] = "\0"; + + g_sprintf(buff_path, "%s/%04d.%02d.%02d[%02dH.%02dM].html", DIR_SRV_PREFIX, t->tm_year + 1900, t->tm_mon, t->tm_mday, t->tm_hour, t->tm_min); + + debug_log("path [%s]", buff_path); + + email_save_file(buff_path, buff, STR_LEN((gchar *)buff)); +#endif /* _USE_HTML_DUMP_ */ +} + +/* Exported API. + */ +gchar *email_html_converter(const gchar *plain_text, const gchar *charset) +{ + /*debug_time();*/ + char meta_charset[MAX_STR_LEN] = { 0, }; + g_snprintf(meta_charset, sizeof(meta_charset), "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=0.8, maximum-scale=2.0, minimum-scale=0.5, user-scalable=yes, target-densitydpi=medium-dpi\"/>" + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">", charset); + debug_log("meta charset:%s", meta_charset); + + /*const char *text_css = "<STYLE type=\"text/css\"> \ +body {background-color: #1a1a1a; \ +color: #ffffff; \ +font-size: 32px; \ +margin-left: 18px; \ +margin-right: 18px; \ +margin-top: 8px; \ +margin-bottom: 8px;} \ +p {font-size: 32px;} \ +table {font-size: 32px;} \ +a:link {color: white} \ +a:visited {color: red} \ +a:active {color: red; background: #1a1a1a} \ +</STYLE></head><body>";*/ + + const char *text_css = "<STYLE type=\"text/css\"> \ +body {font-size: 16px; \ +margin-left: 18px; \ +margin-right: 18px; \ +margin-top: 8px; \ +margin-bottom: 8px;} \ +p {font-size: 16px;} \ +table {font-size: 16px;} \ +</STYLE></head><body>"; + + const gchar *html_etag = "</body></html>"; + gchar *html_stag = NULL; + gchar *html = NULL; + + html_stag = g_strconcat(meta_charset, text_css, NULL); + + if (STR_INVALID(plain_text)) { + debug_log("empty file detected"); + html = g_strconcat(html_stag, html_etag, NULL); + g_free(html_stag); + return html; + } + + /* + debug_log("plain-text [%s]", plain_text); + */ + + gchar *text = NULL; + gchar *buff = NULL; + + if (STR_INVALID(html)) { + debug_log("not found cut-link - convert plain/text to html"); + text = _get_parse_plain_text(plain_text, STR_LEN((gchar *)plain_text)); + buff = g_strconcat(html_stag, text, NULL); + if (text) + g_free(text); + html = g_strconcat(buff, html_etag, NULL); + g_free(buff); + } + /*debug_time();*/ + + _dump_buff(html); + + if (html_stag) + g_free(html_stag); + + return html; +} + +/* EOF */ diff --git a/common/src/email-utils.c b/common/src/email-utils.c index 741a5d1..40f6d19 100755 --- a/common/src/email-utils.c +++ b/common/src/email-utils.c @@ -37,6 +37,34 @@ static UDateFormat *icu_formatter_EEEMMMd = NULL; 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_OTHER, + EMAIL_GROUP_PRIORITY_HIGH, + EMAIL_GROUP_PRIORITY_NORMAL, + EMAIL_GROUP_PRIORITY_LOW, + EMAIL_GROUP_MAX, +}; + + +static gboolean _copy_actual_file(const char *src_full_path, const char *dest_full_path, gboolean(*copy_file_cb) (float percentage)); 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); @@ -119,11 +147,6 @@ gchar *email_parse_get_filename_from_path(const gchar *path) g_strfreev(token_list); /* MUST BE. */ - /*token_list = g_strsplit_set(file_name, ".", -1); - RETURN_VAL_IF_FAIL(token_list != NULL, NULL); - gchar *file_name_without_ext = g_strdup(token_list[0]); - g_strfreev(token_list);*/ - int len = 0; if (file_name) len = strlen(file_name); @@ -163,11 +186,6 @@ void email_parse_get_filename_n_ext_from_path(const gchar *path, gchar **ret_fil g_strfreev(token_list); /* MUST BE. */ - /*token_list = g_strsplit_set(file_name, ".", -1); - RETURN_VAL_IF_FAIL(token_list != NULL, NULL); - gchar *file_name_without_ext = g_strdup(token_list[0]); - g_strfreev(token_list);*/ - int len = 0; if (file_name) len = strlen(file_name); @@ -183,6 +201,27 @@ void email_parse_get_filename_n_ext_from_path(const gchar *path, gchar **ret_fil g_free(file_name); } +gchar *email_parse_get_filepath_from_path(const gchar *path) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(STR_VALID(path), NULL); + + gchar *file_path = NULL; + gint i = 0; + gint size = STR_LEN((gchar *)path); + + for (i = (size - 1); i >= 0; --i) { + if (path[i] == '/') { + file_path = g_strndup(path, i + 1); + break; + } + } + + debug_log("file path (%s)", file_path); + + return file_path; +} + void email_save_file(const gchar *path, const gchar *buf, gsize len) { debug_log(""); @@ -331,6 +370,215 @@ gboolean email_get_address_validation(const char *address) return ret; } +gchar *email_cut_text_by_byte_len(const gchar *text, gint len) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(STR_VALID(text), NULL); + RETURN_VAL_IF_FAIL(len > 0, NULL); + + gint char_len2 = g_utf8_strlen(text, len); + gchar *offset = g_utf8_offset_to_pointer(text, char_len2); + + gchar *ret_text = (gchar *)g_malloc0(offset - text + 1); + + STR_NCPY(ret_text, (gchar *)text, offset - text); + + return ret_text; +} + +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(N_("Earlier this Month")); + groupIndex = EMAIL_GROUP_EARLIER_THISMONTH; + *group_date = NULL; + } + else if(is_lastmonth(&req_tm, &now_tm)) { + *group_title = g_strdup(_("IDS_EMAIL_BODY_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(""); @@ -343,6 +591,27 @@ char *email_get_date_text(const char *locale, char *skeleton, void *time) 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(""); @@ -445,6 +714,227 @@ static void _generate_best_pattern(const char *locale, UChar * customSkeleton, c udat_close(formatter); } +void _create_download_folder() +{ + debug_log(""); + + if (!email_check_dir_exist(DIR_DEFAULT_MEDIA_PHONE"/Downloads")) { + int nErr = -1; + nErr = mkdir(DIR_DEFAULT_MEDIA_PHONE"/Downloads", 0755); + debug_log("errno: %d", nErr); + if (nErr == -1) + debug_log("Downloads folder creation failed"); + } else + debug_log("Downloads folder already exists."); +} + +int email_attachments_save_file(const gchar *path, gchar *newpath, gboolean(*copy_file_cb) (float percentage)) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(STR_VALID(path), EMAIL_EXT_SAVE_ERR_UNKNOWN); + + gchar new_path[MAX_DEFAULT_DIR_PATH] = { 0, }; + gchar tmp_path[MAX_DEFAULT_DIR_PATH] = { 0, }; + gchar new_filename[MAX_DEFAULT_DIR_PATH] = { 0, }; + gchar prefix[MAX_DEFAULT_DIR_PATH] = { 0, }; + gboolean saved = FALSE; + gint err = 0; + gint max_length = MAX_DEFAULT_DIR_PATH; + + snprintf(prefix, sizeof(prefix), "%s", DIR_DEFAULT_MEDIA_PHONE"/Downloads"); + + debug_log("prefix:%s", prefix); + + memset(new_path, 0, sizeof(MAX_DEFAULT_DIR_PATH)); + memset(tmp_path, 0, sizeof(MAX_DEFAULT_DIR_PATH)); + + if (STR_LEN(tmp_path) == 0) { + g_sprintf(tmp_path, "%s", path); + } + + gchar *file_name = NULL; + gchar *file_ext = NULL; + gchar *file_path = email_parse_get_filepath_from_path(tmp_path); + email_parse_get_filename_n_ext_from_path(tmp_path, &file_name, &file_ext); + + debug_log("file_name:%s", file_name); + debug_log("file_ext:%s", file_ext); + + if (file_ext == NULL) + file_ext = ""; + + if (STR_VALID(file_name) && file_ext != NULL) { + debug_log(""); + if (STR_LEN(file_name) + STR_LEN(file_ext) > max_length - STR_LEN(prefix)) { + gint available_len = max_length - STR_LEN(prefix); + + if (STR_VALID(file_ext)) { + available_len -= STR_LEN(file_ext); + } + + gchar *new_name = email_cut_text_by_byte_len(file_name, available_len); + + if (STR_VALID(new_name)) { + g_sprintf(new_path, "%s/%s%s", prefix, new_name, file_ext); + g_sprintf(new_filename, "%s%s", new_name, file_ext); + g_free(new_name); /* MUST BE. */ + } + } else { + g_sprintf(new_path, "%s/%s%s", prefix, file_name, file_ext); + } + } + + if (STR_VALID(file_path)) { + g_free(file_path); /* MUST BE. */ + } + + if (STR_VALID(file_name)) { + g_free(file_name); /* MUST BE. */ + } + + if (STR_VALID(file_ext)) { + g_free(file_ext); /* MUST BE. */ + } + + debug_log("new_path:%s", new_path); + + /* Move for DRM file */ + + _create_download_folder(); + + /* Copy for non-DRM */ + if (access(new_path, F_OK) != -1) { + debug_log("file existed"); + err = EMAIL_EXT_SAVE_ERR_ALREADY_EXIST; + } else { + saved = _copy_actual_file(path, new_path, copy_file_cb); + debug_log("saved(%d), err(%d), errno(%d)", saved, err, errno); + + if (saved) + err = EMAIL_EXT_SAVE_ERR_NONE; + else + err = EMAIL_EXT_SAVE_ERR_UNKNOWN; + } + + snprintf(newpath, MAX_STR_LEN, "%s", new_path); + + return err; +} + +static gboolean _copy_actual_file(const char *src_full_path, const char *dest_full_path, gboolean(*copy_file_cb) (float percentage)) +{ + debug_log(""); + FILE *fs = NULL; + FILE *fd = NULL; + char buff[4096] = { 0, }; + int n = 0; + gboolean result = FALSE; + gboolean stop_copying = FALSE; + int m = 0; + int cnt = 0; + struct stat statbuf = { 0 }; + int ret = 0; + int total_size = 0; + int copied_size = 0; + gboolean remove_dest = FALSE; + clock_t begin; + clock_t finish; /* consumed time to copy whole file */ + double totaltime; + float percentage = 0.0; + + fs = fopen(src_full_path, "rb"); + if (fs == NULL) { + int err = errno; + debug_log("fopen error(%d)", err); + return FALSE; + } + + ret = fstat(fileno(fs), &statbuf); + if (ret != 0) { + debug_log("fstat error"); + fclose(fs); + return FALSE; + } + + total_size = (int)statbuf.st_size; + + fseek(fs, 0, SEEK_SET); + + fd = fopen(dest_full_path, "wb"); + + remove_dest = TRUE; + + if (fd == NULL) { + int err = errno; + debug_log("fopen error(%d)", err); + fclose(fs); + return FALSE; + } + + fseek(fd, 0, SEEK_SET); + + copied_size = 0; + + begin = clock(); + + while (1) { + result = feof(fs); + if (!result) { + n = fread(buff, sizeof(char), sizeof(buff), fs); + if (n > 0) { + m = fwrite(buff, sizeof(char), n, fd); + if (m <= 0) { + debug_log("fwrite = %d", m); + result = FALSE; + goto CATCH; + } + + cnt++; + copied_size += m; + + if (cnt > 100) { + percentage = ((float)(total_size - copied_size) / (float)total_size) * 100.0; + if (copy_file_cb) + stop_copying = copy_file_cb(percentage); + + if (stop_copying) { + result = FALSE; + remove_dest = TRUE; + goto CATCH; + } + + cnt = 0; + } + } else { + result = TRUE; + goto CATCH; + } + } else { + result = TRUE; + goto CATCH; + } + } + + CATCH: + fflush(fd); + fsync(fileno(fd)); + fclose(fd); + fclose(fs); + + if (remove_dest && result == FALSE) { + remove(dest_full_path); + sync(); + } + + if (result) { + finish = clock(); + totaltime = (double)(finish - begin) / CLOCKS_PER_SEC; + debug_log("takes %f s to copy %s", totaltime, src_full_path); + } + + return result; +} + gboolean email_drm_file_is_right(const gchar *path) { RETURN_VAL_IF_FAIL(STR_VALID(path), FALSE); @@ -482,4 +972,101 @@ gboolean email_drm_file_forward_lock_check(const gchar *path) return FALSE; } + + +static int termination_flag = 0; +static int pause_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; +} + +int get_app_paused() +{ + return pause_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 */ diff --git a/composer/CMakeLists.txt b/composer/CMakeLists.txt index 4d8b6dd..6f5c276 100755 --- a/composer/CMakeLists.txt +++ b/composer/CMakeLists.txt @@ -24,8 +24,8 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include) INCLUDE(FindPkgConfig) pkg_check_modules(pkgs-composer REQUIRED ecore ecore-file glib-2.0 gobject-2.0 edbus - appcore-common elementary capi-appfw-application - sysman dlog email-service contacts-service syspopup-caller + appcore-common elementary capi-appfw-application status + sysman dlog email-service contacts-service efreet-mime ewebkit2 ui-gadget-1 bundle mm-fileinfo mmutil-jpeg libmedia-utils ethumb ecore-x) FOREACH(flag ${pkgs-composer_CFLAGS}) @@ -50,7 +50,6 @@ ADD_DEFINITIONS("-DDEBUG") ADD_DEFINITIONS("-D_TEMPORARY_FIX_FOR_ROTATION_") ADD_DEFINITIONS("-D_POPUP_WITH_LIST") ADD_DEFINITIONS("-D_ALWAYS_CC_MYSELF") -ADD_DEFINITIONS("-D_CC_BCC") ##ADD_DEFINITIONS("-D_LAUNCH_APP") ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) @@ -66,9 +65,4 @@ ADD_DEPENDENCIES(${PROJECT_NAME} email-composer-view.edj) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR}) INSTALL(FILES ${CMAKE_COMPOSER_BINARY_DIR}/email-composer-view.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_COMPOSER_SOURCE_DIR}/ug-email-composer-efl.xml DESTINATION /opt/share/packages) -INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/images DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png") -INSTALL(FILES ${CMAKE_COMPOSER_SOURCE_DIR}/theme/_email_default.html DESTINATION ${DATADIR}) - -# i18n -#ADD_SUBDIRECTORY(po) diff --git a/composer/include/email-composer-callback.h b/composer/include/email-composer-callback.h index 43d6a76..98222ef 100755 --- a/composer/include/email-composer-callback.h +++ b/composer/include/email-composer-callback.h @@ -55,9 +55,12 @@ char *_composer_from_gl_text_get(void *data, Evas_Object *obj, const char *part) Evas_Object *_composer_from_gl_content_get(void *data, Evas_Object *obj, const char *part); void _composer_cbar_cc_clicked(void *data, Evas_Object *obj, void *event_info); -#ifndef _CC_BCC -void _composer_cbar_bcc_clicked(void *data, Evas_Object *obj, void *event_info); -#endif + +void _composer_cbar_add_me_clicked(void *data, Evas_Object *obj, void *event_info); +void _composer_cbar_save_as_draft_clicked(void *data, Evas_Object *obj, void *event_info); +void _composer_cbar_priority_clicked(void *data, Evas_Object *obj, void *event_info); +void _composer_cbar_tracking_clicked(void *data, Evas_Object *obj, void *event_info); + void _composer_cbar_send_clicked(void *data, Evas_Object *obj, void *event_info); void _composer_script_executed_cb(Evas_Object *o, const char *result, void *data); diff --git a/composer/include/email-composer-type.h b/composer/include/email-composer-type.h index 0c72425..cb0fb64 100755 --- a/composer/include/email-composer-type.h +++ b/composer/include/email-composer-type.h @@ -53,12 +53,12 @@ #define MAX_RECIPIENT_ADDRESS_LEN 234 #define MAX_RECIPIENT_COUNT 100 -#define MAX_RECIPIENT_ADDRESSES_LEN (MAX_RECIPIENT_ADDRESS_LEN*MAX_RECIPIENT_COUNT) +#define MAX_RECIPIENT_ADDRESSES_LEN (MAX_RECIPIENT_ADDRESS_LEN * MAX_RECIPIENT_COUNT) #define MAX_SUBJECT_LEN 1024 #define MAX_BODY_SIZE 32763 #define MAX_ATTACHMENT_ITEM 100 -#define MAX_ATTACHMENT_SIZE 10*1024*1024 +#define MAX_ATTACHMENT_SIZE 10 * 1024 * 1024 #define MAX_ATTACHMENT_FILE_LEN 1024 #define CONV_THUMB_WIDTH 250 diff --git a/composer/include/email-composer-util.h b/composer/include/email-composer-util.h index 5f3661a..eafd435 100755 --- a/composer/include/email-composer-util.h +++ b/composer/include/email-composer-util.h @@ -112,5 +112,8 @@ void _composer_display_position(void *data); void _composer_print_hit_test_result(Ewk_Hit_Test *hit_test); void _composer_coords_ewk_to_evas(Evas_Object *view, int ewkX, int ewkY, int *evasX, int *evasY); void _composer_coords_evas_to_ewk(Evas_Object *view, int evasX, int evasY, int *ewkX, int *ewkY); +void _composer_set_option_tray_menu(int num, EmailComposerUGD *ugd); +void _composer_unset_option_tray_menu(int num, EmailComposerUGD *ugd); + #endif /* __DEF_email_composer_util_H__ */ diff --git a/composer/include/email-composer.h b/composer/include/email-composer.h index dc4b1fd..2fb9af9 100755 --- a/composer/include/email-composer.h +++ b/composer/include/email-composer.h @@ -43,7 +43,6 @@ #define _ENABLE_ENDKEY_ 0 #define MAX_RECENT_ITEM 100 -#define MB_SVC_FILE_PATH_LEN_MAX 255 #define TEMP_BUFFER_SIZE 1024 #define MAX_WEBVIEW_HEIGHT 88 @@ -62,7 +61,7 @@ struct ug_data { Evas *evas; Evas_Object *bg; - /*Elm_Theme *th;*/ + Elm_Theme *th; /* New notify - TODO: unify the popup usage */ Evas_Object *composer_noti; @@ -93,6 +92,7 @@ struct ug_data { bool bSendBtnDisabled; bool cc_added; bool bcc_added; + bool me_added; int indicator_height; bool is_main_scroller_scrolling; @@ -108,11 +108,22 @@ struct ug_data { int option_header_opened; -#ifndef _CC_BCC - Elm_Object_Item *controlbar_item[2]; -#else - Elm_Object_Item *controlbar_item[1]; -#endif + Evas_Object *dummy_btn; + Evas_Object *add_me_btn; + Evas_Object *save_as_draft_btn; + + int priority_option; + Evas_Object *priority_btn; + Evas_Object *priority_rdg; + Evas_Object *priority_rd[3]; + + Evas_Object *tracking_btn; + Eina_Bool tracking_option[2]; + + Evas_Object *cbar; + Evas_Object *cbar2; + Elm_Object_Item *controlbar_item[6]; + Evas_Object *cc_btn; Evas_Object *bcc_btn; @@ -257,6 +268,16 @@ typedef enum { COMPOSER_RECIPIENT_TYPE_MAX, } COMPOSER_RECIPIENT_TYPE_E; +enum { + EMAIL_COMPOSER_ADD_ME_BTN, + EMAIL_COMPOSER_ADD_CC_BCC_BTN, + EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN, + EMAIL_COMPOSER_PRIORITY_BTN, + EMAIL_COMPOSER_TRACKING_BTN, + EMAIL_COMPOSER_DUMMY_BTN, + EMAIL_COMPOSER_BTN_MAX +}; + /****************************************************/ /* Function Declaration */ /****************************************************/ diff --git a/composer/src/email-composer-callback.c b/composer/src/email-composer-callback.c index dfafbd4..f33602a 100755 --- a/composer/src/email-composer-callback.c +++ b/composer/src/email-composer-callback.c @@ -15,6 +15,7 @@ */ #include <string.h> +#include <status.h> #include "email-composer.h" #include "email-composer-util.h" @@ -24,6 +25,12 @@ #include "email-composer-predictive-search.h" #include "email-composer-js.h" +#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" + static EmailComposerUGD *g_ugd = NULL; bool edit_mode = false; @@ -35,6 +42,8 @@ EmailList email_list[MAX_RECIPIENT_COUNT]; static Elm_Genlist_Item_Class itc; static Elm_Genlist_Item_Class from_itc; +static Elm_Genlist_Item_Class priority_itc; +static Elm_Genlist_Item_Class tracking_itc; static void _composer_mbe_popup_change_addr_selected_cb(void *data, Evas_Object *obj, void *event_info); static void _composer_from_change_response_cb(void *data, Evas_Object *obj, void *event_info); @@ -42,9 +51,6 @@ static void _composer_from_radio_cb(void *data, Evas_Object *obj, void *event_in static void _composer_from_gl_sel(void *data, Evas_Object *obj, void *event_info); static Eina_Bool _composer_cc_mbe_set_focus(void *data); -#ifndef _CC_BCC -static Eina_Bool _composer_bcc_mbe_set_focus(void *data); -#endif static void *_composer_contact_search_by_email(EmailComposerUGD *ugd, const char *search_word); static void _composer_delete_contacts_list(EMAIL_CONTACT_LIST_INFO_S *contacts_list_item); static void _composer_get_html_content_for_draft_cb(Evas_Object *o, const char *result, void *data); @@ -99,13 +105,26 @@ void _composer_more_button_cb(void *data, Evas_Object *obj, void *event_info) debug_log("More Button Clicked"); - if (ugd->option_header_opened) + if (ugd->option_header_opened) { + if (ugd->isRotated == true) { + _composer_resize_body_webview(ugd, 316); + } else { + _composer_resize_body_webview(ugd, ugd->ime_height); + } elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); - else - elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,open", ""); + } else { + if (ugd->isRotated == true) { + _composer_resize_body_webview(ugd, 316 + 122); + } else { + _composer_resize_body_webview(ugd, ugd->ime_height + 122); + } + elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,open", ""); + } ugd->option_header_opened = !ugd->option_header_opened; + elm_layout_sizing_eval(ugd->c_layout); + _composer_mbe_set_focus(ugd); } @@ -774,14 +793,9 @@ void _composer_mbe_popup_move_to_cc_cb(void *data, Evas_Object *obj, void *event if (!ugd->cc_added) { edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } @@ -837,14 +851,9 @@ void _composer_mbe_popup_move_to_bcc_cb(void *data, Evas_Object *obj, void *even if (!ugd->bcc_added) { edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } @@ -1307,7 +1316,7 @@ Eina_Bool _composer_mbe_create_change_addr_list(void *data) if (index > 5) index = 5; Evas_Object *box = elm_box_add(ugd->change_addr_noti); - evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 113 * index * elm_scale_get()); + 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(ugd->change_addr_noti, box); @@ -1525,7 +1534,7 @@ void _composer_from_show_popup(EmailComposerUGD *ugd) #endif elm_object_focus_allow_set(ugd->composer_noti, EINA_FALSE); - from_itc.item_style = "1text.1icon.2"; + from_itc.item_style = "email.2text.3icon.3"; from_itc.func.text_get = _composer_from_gl_text_get; from_itc.func.content_get = _composer_from_gl_content_get; from_itc.func.state_get = NULL; @@ -1533,6 +1542,7 @@ void _composer_from_show_popup(EmailComposerUGD *ugd) elm_genlist_clear(ugd->account_gen_list); ugd->account_gen_list = elm_genlist_add(ugd->composer_noti); + elm_object_theme_set(ugd->account_gen_list, ugd->th); evas_object_size_hint_weight_set(ugd->account_gen_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(ugd->account_gen_list, EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -1549,7 +1559,7 @@ void _composer_from_show_popup(EmailComposerUGD *ugd) if (acc_index > 5) acc_index = 5; Evas_Object *box = elm_box_add(ugd->composer_noti); - evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 113 * acc_index * elm_scale_get()); + evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 122 * acc_index * elm_scale_get()); evas_object_show(ugd->account_gen_list); elm_box_pack_end(box, ugd->account_gen_list); elm_object_content_set(ugd->composer_noti, box); @@ -1563,10 +1573,15 @@ char *_composer_from_gl_text_get(void *data, Evas_Object *obj, const char *part) int index = (int)data; debug_log("label index = %d", index); - debug_log("email_addr = %s", g_ugd->account_info->account_list[index].user_email_address); - if (!g_strcmp0(part, "elm.text")) { + if (!strncmp(part, "elm.text.1", 10)) { + debug_log("email_addr = %s", g_ugd->account_info->account_list[index].account_name); + return g_strdup(g_ugd->account_info->account_list[index].account_name); + } else if (!strncmp(part, "elm.text.2", 10)) { + debug_log("email_addr = %s", g_ugd->account_info->account_list[index].user_email_address); return g_strdup(g_ugd->account_info->account_list[index].user_email_address); + } else { + debug_log("part is invalid"); } return NULL; @@ -1580,7 +1595,7 @@ Evas_Object *_composer_from_gl_content_get(void *data, Evas_Object *obj, const c debug_log("account_id = %d", g_ugd->account_info->account_list[count].account_id); debug_log("default account_id = %d", g_ugd->account_info->account_id); - if (!strncmp(part, "elm.icon", 8)) { + if (!strncmp(part, "elm.icon.1", 10)) { g_ugd->account_info->account_rd[count] = elm_radio_add(obj); elm_radio_state_value_set(g_ugd->account_info->account_rd[count], count); @@ -1595,6 +1610,57 @@ Evas_Object *_composer_from_gl_content_get(void *data, Evas_Object *obj, const c evas_object_smart_callback_add(g_ugd->account_info->account_rd[count], "changed", _composer_from_radio_cb, g_ugd); return g_ugd->account_info->account_rd[count]; + } else if (!strncmp(part, "elm.icon.2", 10)) { + Evas_Object *icon = elm_icon_add(obj); + + // setting/include/email-setting.h + typedef enum { + HOTMAIL = 1, + GMAIL, + YAHOOMAIL, + AOL, + OTHERS + } AccountInfo; + + account_user_data_t *ud = (account_user_data_t *)g_ugd->account_info->account_list[count].user_data; + debug_log("is_preset_account:%d", ud->is_preset_account); + + switch (ud->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 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 (!strncmp(part, "elm.swallow.colorbar", 20)) { + account_user_data_t *ud = (account_user_data_t *)g_ugd->account_info->account_list[count].user_data; + unsigned int val = ud->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; @@ -1634,8 +1700,6 @@ static void _composer_from_change_response_cb(void *data, Evas_Object *obj, void ugd->account_info->account_name = g_strdup(ugd->account_info->account_list[set_val].user_email_address); debug_log("account_id = %d", ugd->account_info->account_id); - if (!email_engine_get_account_full_data(ugd->account_info->account_id, &(ugd->account_info->account))) - debug_log("Failed to Get account full data"); debug_log("priority = %d", (*ugd->account_info->account).options.priority); @@ -1804,13 +1868,9 @@ void _composer_cbar_cc_clicked(void *data, Evas_Object *obj, void *event_info) edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.cc", "*"); email_composer_delete_cc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.bcc", "*"); email_composer_delete_bcc_field(ugd); - elm_object_text_set(ugd->cc_btn, _("IDS_EMAIL_OPT_ADD_CC_BCC")); -#endif if (ugd->b_cc_ps_open == true) { edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); @@ -1819,6 +1879,8 @@ void _composer_cbar_cc_clicked(void *data, Evas_Object *obj, void *event_info) ugd->b_cc_bcc = false; + elm_layout_sizing_eval(ugd->c_layout); + if (!_composer_check_popup_exist(ugd)) { ugd->idler_set_focus = ecore_idler_add(_composer_mbe_set_focus, ugd); } @@ -1834,74 +1896,531 @@ void _composer_cbar_cc_clicked(void *data, Evas_Object *obj, void *event_info) edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif + + elm_layout_sizing_eval(ugd->c_layout); ugd->idler_set_focus = ecore_idler_add(_composer_cc_mbe_set_focus, ugd); } +} - if (ugd->isRotated == true) - elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); +void _composer_cbar_add_me_clicked(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + EmailComposerUGD *ugd = (EmailComposerUGD *)data; + + if (ugd->me_added == false) { + EmailRecpInfo *from_ri = NULL; + Elm_Object_Item *from_item = NULL; + from_item = elm_multibuttonentry_first_item_get(ugd->from_mbe); + + if (from_item) { + from_ri = elm_object_item_data_get(from_item); + + debug_log("from_ri = %s", from_ri->email_list[0].email_addr); + } + Elm_Object_Item *to_item = NULL; + to_item = elm_multibuttonentry_first_item_get(ugd->to_mbe); + + while (to_item) { + EmailRecpInfo *to_ri = NULL; + int index = 0; + + to_ri = (EmailRecpInfo *) elm_object_item_data_get(to_item); + + index = to_ri->selected_email_idx; + + debug_log("to_ri email_addr = %s", to_ri->email_list[index].email_addr); + + if (g_strcmp0(to_ri->email_list[index].email_addr, from_ri->email_list[0].email_addr) == 0) { + elm_object_item_del(to_item); + break; + } + + to_item = elm_multibuttonentry_item_next_get(to_item); + } + + EmailRecpInfo *new_to_ri = (EmailRecpInfo *) calloc(1, sizeof(EmailRecpInfo)); + + new_to_ri->selected_email_idx = 0; + new_to_ri->display_name = ugd->account_info->account->user_display_name; + snprintf(new_to_ri->email_list[0].email_addr, MAX_RECIPIENT_ADDRESS_LEN, "%s", ugd->account_info->account->user_email_address); + new_to_ri->email_cnt = 1; + new_to_ri->is_contact_info = false; + new_to_ri->is_always_bcc = false; + new_to_ri->is_from_addr = true; + + to_item = elm_multibuttonentry_first_item_get(ugd->to_mbe); + elm_multibuttonentry_item_insert_before(ugd->to_mbe, to_item, g_strdup(new_to_ri->display_name), NULL, new_to_ri); + + elm_object_text_set(ugd->add_me_btn, N_("Remove me")); + + ugd->me_added = true; + } else { + Elm_Object_Item *to_item = NULL; + to_item = elm_multibuttonentry_first_item_get(ugd->to_mbe); + if (to_item) { + elm_object_item_del(to_item); + ugd->me_added = false; + elm_object_text_set(ugd->add_me_btn, N_("Add me")); + } + } + + if (ugd->selected_entry == ugd->to_mbe_entry) { + elm_object_focus_set(ugd->to_mbe, EINA_TRUE); + } } -#ifndef _CC_BCC -void _composer_cbar_bcc_clicked(void *data, Evas_Object *obj, void *event_info) +static void _composer_cbar_save_as_draft_cb(Evas_Object *o, const char *result, void *data) { debug_log(""); - EmailComposerUGD *ugd = (EmailComposerUGD *)data; - if (ugd->bcc_added) { - if (ugd->b_cc_bcc) { - debug_log("b_cc_bcc is ON"); - return; + if (NULL != ugd->latest_html_content) { + g_free(ugd->latest_html_content); + ugd->latest_html_content = NULL; + } + + ugd->latest_html_content = g_strdup(result); + debug_log("ugd->latest_html_content => %s", ugd->latest_html_content); + + if (EINA_FALSE == ewk_view_plain_text_get(ugd->body_ewkview, _composer_plain_text_get_cb, (void *)ugd)) { + debug_log("ewk_view_plain_text_get Failed"); + } + + if (EINA_FALSE == ewk_view_script_execute(ugd->body_ewkview, COMPOSER_JS_GET_IMAGE_LIST, _composer_get_image_list_cb, (void *)ugd)) { + debug_log("COMPOSER_JS_GET_IMAGE_LIST error."); + } + + if (ugd->timeout_noti) { + debug_log("delete timeout_noti"); + evas_object_del(ugd->timeout_noti); + ugd->timeout_noti = NULL; + } + + if (ugd->composer_noti) { + debug_log("delete composer_noti"); + evas_object_del(ugd->composer_noti); + ugd->composer_noti = NULL; + } + + if (ugd->ps_list) { + debug_log("ps stop"); + _composer_ps_stop(ugd); + ugd->sc_timer = ecore_timer_add(0.5, _composer_ps_scroll_pop, ugd); + } + + if (ugd->selected_entry == ugd->body_ewkview) { + evas_object_focus_set(ugd->body_ewkview, EINA_FALSE); + } else { + Ecore_IMF_Context *imf_context = NULL; + imf_context = elm_entry_imf_context_get(ugd->selected_entry); + if (imf_context) + ecore_imf_context_input_panel_hide(imf_context); + } + + if (_composer_check_mail_is_modified(ugd)) { + debug_log("mail is changed."); + ugd->save_drafts = 1; + } else { + debug_log("mail is NOT changed."); + ugd->save_drafts = 0; + + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", _("IDS_EMAIL_OPT_COMPOSE_EMAIL")); + /*_show_select_info(ug_data, str);*/ + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + return; + } + + debug_log("account_type: %d", ugd->account_info->account_type); + + int ret = _composer_add_mailbox_folder(ugd, EMAIL_MAILBOX_TYPE_DRAFT); + + if (ret < COMPOSER_ERROR_NONE) { + debug_log("Failed save in Drafts(%d)", ret); + + if (ugd->popup_list) { + debug_log("popup count = %d", eina_list_count(ugd->popup_list)); + debug_log("obj: %p", o); + debug_log("composer_noti: %p", ugd->composer_noti); + + ugd->popup_list = eina_list_remove(ugd->popup_list, ugd->composer_noti/*obj*/); } - edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.bcc", "*"); - email_composer_delete_bcc_field(ugd); + evas_object_del(ugd->composer_noti); + ugd->composer_noti = NULL; - if (ugd->b_bcc_ps_open == true) { - edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); + ugd->idler_save_draft = ecore_idler_add(_composer_show_fail_to_save, ugd); + } else { + debug_log("Success save in Drafts"); + + debug_log("composer_type:%d", ugd->composer_type); + if (ugd->composer_type == RUN_COMPOSER_EDIT) { + //After a new draft mail is added, the old draft mail is deleted and synced to server + debug_log("Account id [%d] mailbox id [%d] mail id [%d]", ugd->account_info->account->account_id, ugd->mailbox_info->mailbox_id, ugd->nExistingMailID); - if (ugd->cc_added) { - edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); + if (!email_engine_delete_mail(ugd->account_info->account->account_id, ugd->mailbox_info->mailbox_id, ugd->nExistingMailID, EMAIL_DELETE_LOCAL_AND_SERVER)) { + debug_log("Deleting email is failed."); } + } + + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", _("IDS_EMAIL_POP_SAVED_IN_DRAFTS")); + /*_show_select_info(ug_data, str);*/ + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + } +} - ugd->b_bcc_ps_open = false; +void _composer_cbar_save_as_draft_clicked(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailComposerUGD *ugd = (EmailComposerUGD *)data; + + if (EINA_FALSE == ewk_view_script_execute(ugd->body_ewkview, COMPOSER_JS_GET_HTML_CONTENT, _composer_cbar_save_as_draft_cb, (void *)ugd)) + debug_log("COMPOSER_JS_GET_HTML_CONTENT failed."); +} + +static void _composer_priority_radio_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailComposerUGD *ugd = (EmailComposerUGD *)data; + int i; + + for (i = 0; i < 3; i++) { + if (obj == ugd->priority_rd[i]) { + elm_radio_value_set(ugd->priority_rdg, i); } + } +} - ugd->b_cc_bcc = false; +static char *_composer_priority_gl_text_get(void *data, Evas_Object *obj, const char *part) +{ + int index = (int)data; - if (!_composer_check_popup_exist(ugd)) { - ugd->idler_set_focus = ecore_idler_add(_composer_mbe_set_focus, ugd); + debug_log("\n text index = %d", index); + + if (!g_strcmp0(part, "elm.text")) { + if (index == 0) + return strdup(_("IDS_EMAIL_BODY_HIGH_M_PRIORITY")); + else if (index == 1) + return strdup(_("IDS_EMAIL_BODY_NORMAL_M_EMAILPRIORITY")); + else if (index == 2) + return strdup(_("IDS_EMAIL_BODY_LOW_M_EMAILPRIORITY")); + } + return NULL; +} + +static Evas_Object *_composer_priority_gl_content_get(void *data, Evas_Object *obj, const char *part) +{ + int index = (int)data; + + debug_log("\n content index = %d", index); + + if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) { + g_ugd->priority_rd[index] = elm_radio_add(obj); + elm_radio_state_value_set(g_ugd->priority_rd[index], index); + + if (index == 0) { + g_ugd->priority_rdg = g_ugd->priority_rd[index]; + } else { + elm_radio_group_add(g_ugd->priority_rd[index], g_ugd->priority_rdg); + } + + if (g_ugd->priority_option == EMAIL_MAIL_PRIORITY_HIGH) { + elm_radio_value_set(g_ugd->priority_rdg, 0); + } else if ( g_ugd->priority_option == EMAIL_MAIL_PRIORITY_NORMAL) { + elm_radio_value_set(g_ugd->priority_rdg, 1); + } else if ( g_ugd->priority_option == EMAIL_MAIL_PRIORITY_LOW) { + elm_radio_value_set(g_ugd->priority_rdg, 2); + } else { + debug_log("\n g_ugd->priority_option4 = %d", g_ugd->priority_option); } + + evas_object_smart_callback_add(g_ugd->priority_rd[index], "changed", _composer_priority_radio_cb, g_ugd); + + return g_ugd->priority_rd[index]; + } + + return NULL; +} + +static Eina_Bool _composer_priority_gl_state_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + return EINA_FALSE; +} + +static void _composer_priority_gl_del(void *data, Evas_Object *obj) +{ + debug_log(""); + return; +} + +static void _composer_priority_gl_sel(void *data, Evas_Object *obj, void *event_info) +{ + int index = (int)data; + + elm_radio_value_set(g_ugd->priority_rdg, index); + + if (index == 0) { + g_ugd->priority_option = EMAIL_MAIL_PRIORITY_HIGH; + } else if (index == 1) { + g_ugd->priority_option = EMAIL_MAIL_PRIORITY_NORMAL; + } else if (index == 2) { + g_ugd->priority_option = EMAIL_MAIL_PRIORITY_LOW; } else { - if (ugd->b_cc_bcc) { - debug_log("b_cc_bcc is ON"); - return; + debug_log("\n g_ugd->priority_option = %d", g_ugd->priority_option); + } + debug_log("\n _composer_priority_gl_sel : priority_option = %d", g_ugd->priority_option); +} + +void _composer_cbar_priority_clicked(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailComposerUGD *ugd = (EmailComposerUGD *)data; + Elm_Object_Item *gen_item[2]; + int index; + + g_ugd = ugd; + + Evas_Object *popup; + + if (ugd->composer_noti) { + evas_object_del(ugd->composer_noti); + ugd->composer_noti = NULL; + } + popup = _composer_create_noti(ugd, false, _("IDS_EMAIL_BODY_PRIORITY"), NULL, 1, + dgettext("sys_string", "IDS_COM_POP_CLOSE"), NULL, 0.0, _composer_noti_response_cb); + + ugd->composer_noti = popup; + + if (ugd->clipboard_on) { + ugd->clipboard_on = false; + } + + if (ugd->cc_added) { + if (ugd->b_cc_ps_open == true) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); + ugd->b_cc_ps_open = false; } + } - if (ugd->clipboard_on) { - ugd->clipboard_on = false; + if (ugd->b_bcc_ps_open == true) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); + + if (ugd->cc_added) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); } - edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); - email_composer_create_bcc_field(ugd); + ugd->b_bcc_ps_open = false; + } - ugd->idler_set_focus = ecore_idler_add(_composer_bcc_mbe_set_focus, ugd); +#ifdef _POPUP_WITH_LIST + elm_object_style_set(ugd->composer_noti, "min_menustyle"); +#else + elm_object_style_set(ugd->composer_noti, "menustyle"); +#endif + elm_object_focus_allow_set(ugd->composer_noti, EINA_FALSE); + + priority_itc.item_style = "1text.1icon.2"; + priority_itc.func.text_get = _composer_priority_gl_text_get; + priority_itc.func.content_get = _composer_priority_gl_content_get; + priority_itc.func.state_get = _composer_priority_gl_state_get; + priority_itc.func.del = _composer_priority_gl_del; + + Evas_Object *priority_genlist; + priority_genlist = elm_genlist_add(ugd->composer_noti); + + evas_object_size_hint_weight_set(priority_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(priority_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + for (index = 0; index < 3; index++) { + gen_item[index] = elm_genlist_item_append(priority_genlist, &priority_itc, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, _composer_priority_gl_sel, (void *)index); } - if (ugd->isRotated == true) - elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); +// elm_genlist_effect_set(security_genlist, EINA_FALSE); + elm_genlist_tree_effect_enabled_set(priority_genlist, EINA_FALSE); + +#ifdef _POPUP_WITH_LIST + Evas_Object *box = elm_box_add(ugd->composer_noti); + evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 114 * index * elm_scale_get()); + evas_object_show(priority_genlist); + elm_box_pack_end(box, priority_genlist); + elm_object_content_set(ugd->composer_noti, box); +#else + elm_object_content_set(ugd->composer_noti, priority_genlist); +#endif + +} + +static char *_composer_tracking_gl_text_get(void *data, Evas_Object *obj, const char *part) +{ + int index = (int)data; + + debug_log("\n text index = %d", index); + + if (!g_strcmp0(part, "elm.text")) { + if (index == 0) + return strdup(N_("Read report")); + else if (index == 1) + return strdup(N_("Delivery report")); + } + return NULL; +} + +static Evas_Object *_composer_tracking_gl_content_get(void *data, Evas_Object *obj, const char *part) +{ + int index = (int)data; + + debug_log("\n content index = %d", index); + + if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) { + Evas_Object *check = elm_check_add(obj); + + if (index == 0 && g_ugd->tracking_option[0] == 1) { + debug_log("Read report"); + elm_check_state_set(check, EINA_TRUE); + } else if (index == 1 && g_ugd->tracking_option[1] == 1) { + debug_log("Delivery report"); + elm_check_state_set(check, EINA_TRUE); + } else { + debug_log("NONE"); + elm_check_state_set(check, EINA_FALSE); + } + + evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL); + + return check; + } + + return NULL; +} + +static Eina_Bool _composer_tracking_gl_state_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + return EINA_FALSE; +} + +static void _composer_tracking_gl_del(void *data, Evas_Object *obj) +{ + debug_log(""); + return; +} + +static void _composer_tracking_gl_sel(void *data, Evas_Object *obj, void *event_info) +{ + int index; + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + + debug_log("\nsel index = %d", (int)data); + + if (item != NULL) { + index = (int)elm_object_item_data_get(item); + elm_genlist_item_selected_set(item, EINA_FALSE); + + debug_log("tracking_option[%d]:%d, !tracking_option[%d]:%d", index, g_ugd->tracking_option[index], index, !g_ugd->tracking_option[index]); + g_ugd->tracking_option[index] = !g_ugd->tracking_option[index]; + elm_genlist_item_update(item); + } } + +void _composer_cbar_tracking_clicked(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailComposerUGD *ugd = (EmailComposerUGD *)data; + Elm_Object_Item *gen_item[2]; + int index; + + g_ugd = ugd; + + Evas_Object *popup; + + if (ugd->composer_noti) { + evas_object_del(ugd->composer_noti); + ugd->composer_noti = NULL; + } + popup = _composer_create_noti(ugd, false, N_("Tracking"), NULL, 1, + dgettext("sys_string", "IDS_COM_POP_CLOSE"), NULL, 0.0, _composer_noti_response_cb); + + ugd->composer_noti = popup; + + if (ugd->clipboard_on) { + ugd->clipboard_on = false; + } + + if (ugd->cc_added) { + if (ugd->b_cc_ps_open == true) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); + ugd->b_cc_ps_open = false; + } + } + + if (ugd->b_bcc_ps_open == true) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); + + if (ugd->cc_added) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); + } + + ugd->b_bcc_ps_open = false; + } + +#ifdef _POPUP_WITH_LIST + elm_object_style_set(ugd->composer_noti, "min_menustyle"); +#else + elm_object_style_set(ugd->composer_noti, "menustyle"); #endif + elm_object_focus_allow_set(ugd->composer_noti, EINA_FALSE); + + tracking_itc.item_style = "1text.1icon.2"; + tracking_itc.func.text_get = _composer_tracking_gl_text_get; + tracking_itc.func.content_get = _composer_tracking_gl_content_get; + tracking_itc.func.state_get = _composer_tracking_gl_state_get; + tracking_itc.func.del = _composer_tracking_gl_del; + + Evas_Object *tracking_genlist; + tracking_genlist = elm_genlist_add(ugd->composer_noti); + + evas_object_size_hint_weight_set(tracking_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(tracking_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + for (index = 0; index < 2; index++) { + gen_item[index] = elm_genlist_item_append(tracking_genlist, &tracking_itc, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, _composer_tracking_gl_sel, (void *)index); + } + +// elm_genlist_effect_set(security_genlist, EINA_FALSE); + elm_genlist_tree_effect_enabled_set(tracking_genlist, EINA_FALSE); + +#ifdef _POPUP_WITH_LIST + Evas_Object *box = elm_box_add(ugd->composer_noti); + evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 114 * index * elm_scale_get()); + evas_object_show(tracking_genlist); + elm_box_pack_end(box, tracking_genlist); + elm_object_content_set(ugd->composer_noti, box); +#else + elm_object_content_set(ugd->composer_noti, tracking_genlist); +#endif +} void _composer_cbar_send_clicked(void *data, Evas_Object *obj, void *event_info) { @@ -1949,26 +2468,6 @@ static Eina_Bool _composer_cc_mbe_set_focus(void *data) return EINA_FALSE; } -#ifndef _CC_BCC -static Eina_Bool _composer_bcc_mbe_set_focus(void *data) -{ - debug_log(""); - - EmailComposerUGD *ugd = (EmailComposerUGD *)data; - - if (ugd->idler_set_focus) { - ecore_idler_del(ugd->idler_set_focus); - ugd->idler_set_focus = NULL; - } - - elm_object_focus_set(ugd->bcc_mbe, EINA_TRUE); - - ugd->b_cc_bcc = false; - - return EINA_FALSE; -} -#endif - void _composer_script_executed_cb(Evas_Object *o, const char *result, void *data) { debug_log(""); diff --git a/composer/src/email-composer-contents.c b/composer/src/email-composer-contents.c index 442c321..9552033 100755 --- a/composer/src/email-composer-contents.c +++ b/composer/src/email-composer-contents.c @@ -329,7 +329,11 @@ void _composer_webkit_loadFinished_cb(void *data, Evas_Object *obj, void *event_ //ewk_setting_auto_load_images_set(ewkSetting, EINA_TRUE); ewk_setting_editable_link_behavior_set(ewkSetting, EWK_EDITABLE_LINK_BEHAVIOR_NEVER_LIVE); - _composer_resize_body_webview(ugd, ugd->ime_height); + if (ugd->isRotated == true) { + _composer_resize_body_webview(ugd, 316); + } else { + _composer_resize_body_webview(ugd, ugd->ime_height); + } if (ugd->selected_entry == ugd->body_ewkview) { // focus to the body field when reply the email. @@ -499,7 +503,11 @@ static void _composer_webkit_ime_opened_cb(void *data, Evas_Object *obj, void *e debug_log(""); EmailComposerUGD *ugd = (EmailComposerUGD *)data; - _composer_resize_body_webview(ugd, ugd->ime_height); + if (ugd->isRotated == true) { + _composer_resize_body_webview(ugd, 316); + } else { + _composer_resize_body_webview(ugd, ugd->ime_height); + } } static void _composer_webkit_resized_cb(void *data, Evas_Object *obj, void *event_info) diff --git a/composer/src/email-composer-predictive-search.c b/composer/src/email-composer-predictive-search.c index 8cd4ebb..a4e93ba 100755 --- a/composer/src/email-composer-predictive-search.c +++ b/composer/src/email-composer-predictive-search.c @@ -122,20 +122,20 @@ Evas_Object *_composer_recipient_create_ps_field(Evas_Object *parent, EmailCompo Evas_Object *list; list = elm_genlist_add(parent); - /*elm_object_theme_set(list, ugd->th);*/ + elm_object_theme_set(list, ugd->th); evas_object_size_hint_align_set(list, EVAS_HINT_FILL, 0.0); elm_genlist_homogeneous_set(list, EINA_TRUE); elm_object_focus_allow_set(list, EINA_FALSE); - ugd->ps_itc_2.item_style = "2text.8"; /*"email/predictive/2text.8";*/ + ugd->ps_itc_2.item_style = "email.2text.1icon"; /*"email/predictive/2text.8";*/ ugd->ps_itc_2.func.text_get = composer_ps_text_get; - ugd->ps_itc_2.func.content_get = NULL; + ugd->ps_itc_2.func.content_get = composer_ps_icon_get; ugd->ps_itc_2.func.state_get = NULL; ugd->ps_itc_2.func.del = NULL; - ugd->ps_itc_1.item_style = "1text.2"; /*"email/predictive/1text.2";*/ + ugd->ps_itc_1.item_style = "email.1text.1icon"; /*"email/predictive/1text.2";*/ ugd->ps_itc_1.func.text_get = composer_ps_text_get; - ugd->ps_itc_1.func.content_get = NULL; + ugd->ps_itc_1.func.content_get = composer_ps_icon_get; ugd->ps_itc_1.func.state_get = NULL; ugd->ps_itc_1.func.del = NULL; @@ -288,7 +288,8 @@ Eina_List *composer_ps_search_contact(EmailComposerUGD *ugd, const char *search_ while (CTS_SUCCESS == contacts_svc_iter_next(iter)) { CTSvalue *contact = NULL; CTSvalue *email = NULL; - const char *first, *last, *img_path, *email_addr; + const char *first, *last; + const char *img_path, *email_addr; char *display = NULL; contact = contacts_svc_iter_get_info(iter); @@ -410,25 +411,32 @@ char *composer_ps_text_get(void *data, Evas_Object *obj, const char *part) Evas_Object *composer_ps_icon_get(void *data, Evas_Object *obj, const char *part) { + debug_log(""); + EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *) data; Evas_Object *ic = elm_icon_add(obj); - if (g_strcmp0(part, "swl.img") == 0) { + if (!strncmp(part, "elm.icon", 8)) { if (contacts_list_item->image_path) { + debug_log("contacts_list_item->image_path : %s", contacts_list_item->image_path); elm_icon_file_set(ic, contacts_list_item->image_path, NULL); } else { - char buf[64] = { 0, }; + char buf[MAX_PATH_LEN] = { 0, }; snprintf(buf, sizeof(buf), "%s/00_list_photo_default.png", COMPOSER_ICON_DIR); + debug_log("buf : %s", buf); elm_icon_file_set(ic, buf, NULL); } - } - elm_icon_resizable_set(ic, 1, 1); - evas_object_image_smooth_scale_set(ic, 1); - evas_object_show(ic); + evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(ic, 1, 1); + evas_object_image_smooth_scale_set(ic, 1); + evas_object_show(ic); + + return ic; + } - return ic; + return NULL; } void composer_ps_delete_contacts_list(Eina_List *predict_list) diff --git a/composer/src/email-composer-util.c b/composer/src/email-composer-util.c index bceb935..204c793 100755 --- a/composer/src/email-composer-util.c +++ b/composer/src/email-composer-util.c @@ -462,41 +462,43 @@ int _composer_make_mail(EmailComposerUGD *ugd) { debug_log(""); - email_account_t *account = NULL; - if (!email_engine_get_account_full_data(ugd->account_info->account_id, &account)) - debug_log("Failed to Get account full data"); - if (ugd->composer_type == RUN_COMPOSER_EDIT || ugd->composer_type == RUN_COMPOSER_REPLY || ugd->composer_type == RUN_COMPOSER_REPLY_ALL || ugd->composer_type == RUN_COMPOSER_FORWARD) { - debug_log("acc id = %d, %d, %d", ugd->account_info->account_id, account->account_id, ugd->existing_mail_info->mail_data->account_id); - debug_log("priority = %d, %d", (*account).options.priority, ugd->existing_mail_info->mail_data->priority); + debug_log("acc id = %d, %d", ugd->account_info->account_id, ugd->existing_mail_info->mail_data->account_id); + debug_log("priority = %d, %d", (*ugd->account_info->account).options.priority, ugd->existing_mail_info->mail_data->priority); debug_log("mailbox = %s, %s", ugd->mailbox_info->mail_box->mailbox_name, ugd->existing_mail_info->mail_data->server_mailbox_name); ugd->new_mail_info->mail_data->account_id = ugd->existing_mail_info->mail_data->account_id; - ugd->new_mail_info->mail_data->priority = ugd->existing_mail_info->mail_data->priority; + //ugd->new_mail_info->mail_data->priority = ugd->existing_mail_info->mail_data->priority; } else { //RUN_COMPOSER_NEW || RUN_COMPOSER_EXTERNAL - debug_log("acc id = %d, %d", ugd->account_info->account_id, account->account_id); - debug_log("priority = %d", (*account).options.priority); + debug_log("acc id = %d", ugd->account_info->account_id); + debug_log("priority = %d", (*ugd->account_info->account).options.priority); debug_log("mailbox = %s", ugd->mailbox_info->mail_box->mailbox_name); ugd->new_mail_info->mail_data->account_id = ugd->account_info->account_id; - ugd->new_mail_info->mail_data->priority = (*account).options.priority; + //ugd->new_mail_info->mail_data->priority = (*account).options.priority; } + ugd->new_mail_info->mail_data->report_status = EMAIL_MAIL_REPORT_NONE; +/* + if (ugd->tracking_option[0] == 1) { + ugd->new_mail_info->mail_data->report_status |= EMAIL_MAIL_REQUEST_MDN; + } + if (ugd->tracking_option[1] == 1) { + ugd->new_mail_info->mail_data->report_status |= EMAIL_MAIL_REQUEST_DSN; + } + debug_log("ugd->new_mail_info->mail_data->report_status = %d", ugd->new_mail_info->mail_data->report_status); +*/ + ugd->new_mail_info->mail_data->priority = ugd->priority_option; + ugd->new_mail_info->mail_data->server_mailbox_name = strdup(ugd->mailbox_info->mail_box->mailbox_name); ugd->new_mail_info->mail_data->mailbox_id = ugd->mailbox_info->mail_box->mailbox_id; - debug_log("user_name = %s", account->user_display_name); - debug_log("email_addr = %s", account->user_email_address); + debug_log("user_name = %s", ugd->account_info->account->user_display_name); + debug_log("email_addr = %s", ugd->account_info->account->user_email_address); char uc[MAX_ACCOUNT_NAME_LEN + 20]; - snprintf(uc, sizeof(uc), "\"%s\"<%s>", account->user_display_name, account->user_email_address); + snprintf(uc, sizeof(uc), "\"%s\"<%s>", ugd->account_info->account->user_display_name, ugd->account_info->account->user_email_address); ugd->new_mail_info->mail_data->full_address_from = g_strdup(uc); debug_log("from = %s", uc); - if (account) { - debug_log("email_free_account is called"); - email_free_account(&account, 1); - account = NULL; - } - if (elm_object_item_text_get(elm_multibuttonentry_first_item_get(ugd->to_mbe)) != NULL) { debug_log("to mbe"); if (_composer_make_recipient_char_to_list(ugd, ugd->to_mbe, &(ugd->new_mail_info->mail_data->full_address_to)) < COMPOSER_ERROR_NONE) @@ -970,7 +972,7 @@ void _composer_save_popup_response_cb(void *data, Evas_Object *obj, void *event_ if (ugd->composer_type == RUN_COMPOSER_EDIT) { //After a new draft mail is added, the old draft mail is deleted and synced to server - debug_log("Account id [%d] mailbox id [%s] mail id [%d]", ugd->account_info->account->account_id, ugd->mailbox_info->mailbox_id, ugd->nExistingMailID); + debug_log("Account id [%d] mailbox id [%d] mail id [%d]", ugd->account_info->account->account_id, ugd->mailbox_info->mailbox_id, ugd->nExistingMailID); if (!email_engine_delete_mail(ugd->account_info->account->account_id, ugd->mailbox_info->mailbox_id, ugd->nExistingMailID, EMAIL_DELETE_LOCAL_AND_SERVER)) { debug_log("Deleting email is failed."); @@ -1247,8 +1249,7 @@ void _composer_set_mail_info(EmailComposerUGD *ugd) _composer_add_subject(ugd); _composer_add_body(ugd); - if (ugd->composer_type != RUN_COMPOSER_EDIT) - { + if (ugd->composer_type != RUN_COMPOSER_EDIT) { _composer_add_origin_msg(ugd); } @@ -1278,7 +1279,9 @@ void _composer_set_mail_info(EmailComposerUGD *ugd) (ugd->composer_type == RUN_COMPOSER_EDIT || ugd->composer_type == RUN_COMPOSER_REPLY || ugd->composer_type == RUN_COMPOSER_REPLY_ALL || ugd->composer_type == RUN_COMPOSER_FORWARD)) { _composer_add_softlink_to_inline_images(ugd); - char *plain_charset = email_parse_get_filename_from_path(ugd->existing_mail_info->mail_data->file_path_plain); + char *plain_charset = NULL; + if (ugd->existing_mail_info->mail_data && ugd->existing_mail_info->mail_data->file_path_plain) + plain_charset = email_parse_get_filename_from_path(ugd->existing_mail_info->mail_data->file_path_plain); debug_log("plain_charset : %s", plain_charset); if (plain_charset) { @@ -1306,8 +1309,7 @@ void _composer_set_mail_info(EmailComposerUGD *ugd) } } - if (EINA_TRUE == ugd->has_body_html) - { + if (EINA_TRUE == ugd->has_body_html) { debug_log(""); char file_path[100] = { 0, }; @@ -1416,12 +1418,7 @@ Eina_Bool _composer_show_progress_popup(void *data) progressbar = elm_progressbar_add(popup); - if (ugd->account_info->account_type == EMAIL_SERVER_TYPE_ACTIVE_SYNC) { - elm_object_style_set(progressbar, "pending_list"); - elm_progressbar_pulse(progressbar, EINA_TRUE); - } else { - elm_object_style_set(progressbar, "list_progress"); - } + elm_object_style_set(progressbar, "list_progress"); evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5); evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); @@ -1998,14 +1995,9 @@ void _composer_add_cc_address(EmailComposerUGD *ugd) if (ugd->cc_mbe == NULL) { edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } @@ -2112,14 +2104,9 @@ void _composer_add_cc_address(EmailComposerUGD *ugd) debug_log(""); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } } @@ -2145,14 +2132,9 @@ void _composer_add_bcc_address(EmailComposerUGD *ugd) if (ugd->bcc_mbe == NULL) { edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } @@ -2259,14 +2241,9 @@ void _composer_add_bcc_address(EmailComposerUGD *ugd) debug_log(""); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } } @@ -2366,8 +2343,7 @@ void _composer_add_body(EmailComposerUGD *ugd) if (ugd->existing_mail_info->mail_data && ugd->existing_mail_info->mail_data->body_download_status) { if (ugd->composer_type == RUN_COMPOSER_EDIT) { - if (ugd->has_body_html) - { + if (ugd->has_body_html) { debug_log("html composer_type: EDIT"); char *html_text_for_body = NULL; @@ -2380,14 +2356,23 @@ void _composer_add_body(EmailComposerUGD *ugd) debug_log("\nHTML-TEXT:\n%s", html_text_for_body); free(temp_body_plain); } + + char szMetaViewportInfo[TEMP_BUFFER_SIZE + 1] = { 0x00, }; + strncpy(szMetaViewportInfo, HTML_META_INFORMATION, TEMP_BUFFER_SIZE); + char *full_text = NULL; + full_text = g_strconcat(szMetaViewportInfo, html_text_for_body, NULL); + debug_log("html_text_for_body: %s", html_text_for_body); + if (html_text_for_body) { - email_composer_save_file(ugd->saved_html_path, html_text_for_body, STR_LEN(html_text_for_body)); + email_composer_save_file(ugd->saved_html_path, full_text, STR_LEN(full_text)); g_free(html_text_for_body); } else { html_text_for_body = (char *)email_get_buff_from_file(DATADIR"/_email_default.html", 0); - email_composer_save_file(ugd->saved_html_path, html_text_for_body, STR_LEN(html_text_for_body)); + email_composer_save_file(ugd->saved_html_path, full_text, STR_LEN(full_text)); g_free(html_text_for_body); } + + debug_log("full text:\n%s", full_text); } } } @@ -2422,8 +2407,7 @@ void _composer_make_html_body(EmailComposerUGD *ugd) char *temp; char *token; - if (((ugd->composer_type == RUN_COMPOSER_REPLY || ugd->composer_type == RUN_COMPOSER_REPLY_ALL) && ugd->account_info->account->options.reply_with_body) || ugd->composer_type == RUN_COMPOSER_FORWARD) - { + if (((ugd->composer_type == RUN_COMPOSER_REPLY || ugd->composer_type == RUN_COMPOSER_REPLY_ALL) && ugd->account_info->account->options.reply_with_body) || ugd->composer_type == RUN_COMPOSER_FORWARD) { if (ugd->existing_mail_info->mail_data->full_address_to) { temp = COMPOSER_STRDUP(ugd->existing_mail_info->mail_data->full_address_to); token = strtok(temp, ";"); @@ -3262,6 +3246,7 @@ void _composer_popup_response_cb(void *data, Evas_Object *obj, void *event_info) } // elm_multibuttonentry_item_unselect_all(mbe); + elm_object_tree_focus_allow_set(ugd->c_layout, EINA_TRUE); if (ugd->popup_list) { debug_log("popup count = %d", eina_list_count(ugd->popup_list)); @@ -3454,9 +3439,12 @@ void _composer_resize_body_webview(EmailComposerUGD *ugd, int ime_height) evas_object_geometry_get(ugd->webkit_ly, &x, &y, &w, &h); debug_log(" === resize webkit_ly x:%d, y:%d, w:%d, h:%d", x, y, w, h); - debug_log("nHeight:%d, COMPOSER_NAVI_HEIGHT:%d, indicator_height:%d", nHeight, COMPOSER_NAVI_HEIGHT, ugd->indicator_height); - - evas_object_size_hint_min_set(ugd->webkit_ly, 0, nHeight - COMPOSER_NAVI_HEIGHT - ugd->indicator_height - ime_height); + if (ugd->isRotated == false) { + debug_log("nHeight:%d, COMPOSER_NAVI_HEIGHT:%d, indicator_height:%d", nHeight, COMPOSER_NAVI_HEIGHT, ugd->indicator_height); + evas_object_size_hint_min_set(ugd->webkit_ly, 0, nHeight - COMPOSER_NAVI_HEIGHT - ugd->indicator_height - ime_height); + } else { + evas_object_size_hint_min_set(ugd->webkit_ly, 0, nWidth - COMPOSER_NAVI_HEIGHT - ime_height); + } } void _composer_input_panel_state_changed_cb(void *data, Ecore_IMF_Context *ctx, int value) @@ -3584,3 +3572,122 @@ void _composer_coords_evas_to_ewk(Evas_Object *view, int evasX, int evasY, int * *ewkY = evasY + scrollY - viewY; } +void _composer_set_option_tray_menu(int num, EmailComposerUGD *ugd) +{ + debug_log(""); + + Evas_Object *btn = NULL; + + switch (num) { + case EMAIL_COMPOSER_ADD_ME_BTN : // Add me btn + btn = elm_button_add(ugd->cbar); + elm_object_style_set(btn, "naviframe_control/default"); + 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); + ugd->controlbar_item[EMAIL_COMPOSER_ADD_ME_BTN] = elm_toolbar_item_append(ugd->cbar, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(ugd->controlbar_item[EMAIL_COMPOSER_ADD_ME_BTN], "object", btn); + elm_object_text_set(btn, N_("Add me")); + ugd->add_me_btn = btn; + evas_object_smart_callback_add(ugd->add_me_btn, "clicked", _composer_cbar_add_me_clicked, ugd); + break; + case EMAIL_COMPOSER_ADD_CC_BCC_BTN : // Add Cc/Bcc btn + btn = elm_button_add(ugd->cbar); + elm_object_style_set(btn, "naviframe_control/default"); + 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); + ugd->controlbar_item[EMAIL_COMPOSER_ADD_CC_BCC_BTN] = elm_toolbar_item_append(ugd->cbar, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(ugd->controlbar_item[EMAIL_COMPOSER_ADD_CC_BCC_BTN], "object", btn); + if (ugd->cc_added) { + elm_object_text_set(btn, N_("Remove Cc/Bcc")); + } else { + elm_object_text_set(btn, _("IDS_EMAIL_OPT_ADD_CC_BCC")); + } + ugd->cc_btn = btn; + evas_object_smart_callback_add(ugd->cc_btn, "clicked", _composer_cbar_cc_clicked, ugd); + break; + case EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN : // Save as draft btn + { + Evas_Object *cbar = NULL; + cbar = ugd->cbar; + btn = elm_button_add(cbar); + elm_object_style_set(btn, "naviframe_control/default"); + 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); + ugd->controlbar_item[EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN] = elm_toolbar_item_append(cbar, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(ugd->controlbar_item[EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN], "object", btn); + elm_object_text_set(btn, N_("Save as draft")); + ugd->save_as_draft_btn = btn; + evas_object_smart_callback_add(ugd->save_as_draft_btn, "clicked", _composer_cbar_save_as_draft_clicked, ugd); + } + break; + case EMAIL_COMPOSER_PRIORITY_BTN : // Priority btn + btn = elm_button_add(ugd->cbar2); + elm_object_style_set(btn, "naviframe_control/default"); + 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); + ugd->controlbar_item[EMAIL_COMPOSER_PRIORITY_BTN] = elm_toolbar_item_append(ugd->cbar2, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(ugd->controlbar_item[EMAIL_COMPOSER_PRIORITY_BTN], "object", btn); + elm_object_text_set(btn, _("IDS_EMAIL_BODY_PRIORITY")); + ugd->priority_btn = btn; + evas_object_smart_callback_add(ugd->priority_btn, "clicked", _composer_cbar_priority_clicked, ugd); + break; + case EMAIL_COMPOSER_TRACKING_BTN : // Tracking btn + btn = elm_button_add(ugd->cbar2); + elm_object_style_set(btn, "naviframe_control/default"); + 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); + ugd->controlbar_item[EMAIL_COMPOSER_TRACKING_BTN] = elm_toolbar_item_append(ugd->cbar2, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(ugd->controlbar_item[EMAIL_COMPOSER_TRACKING_BTN], "object", btn); + elm_object_text_set(btn, N_("Tracking")); + ugd->tracking_btn = btn; + evas_object_smart_callback_add(ugd->tracking_btn, "clicked", _composer_cbar_tracking_clicked, ugd); + break; + case EMAIL_COMPOSER_DUMMY_BTN : // Dummy btn + ugd->dummy_btn = NULL; + break; + default : // never get here! + debug_log("default"); + } + + evas_object_show(btn); +} + +void _composer_unset_option_tray_menu(int num, EmailComposerUGD *ugd) +{ + debug_log(""); + + elm_object_item_del(ugd->controlbar_item[num]); + ugd->controlbar_item[num] = NULL; + + switch (num) { + case EMAIL_COMPOSER_ADD_ME_BTN : // Add me btn + evas_object_del(ugd->add_me_btn); + ugd->add_me_btn = NULL; + break; + case EMAIL_COMPOSER_ADD_CC_BCC_BTN : // Add Cc/Bcc btn + evas_object_del(ugd->cc_btn); + ugd->cc_btn = NULL; + break; + case EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN : // Save as draft btn + { + evas_object_del(ugd->save_as_draft_btn); + ugd->save_as_draft_btn = NULL; + } + break; + case EMAIL_COMPOSER_PRIORITY_BTN : // Priority btn + evas_object_del(ugd->priority_btn); + ugd->priority_btn = NULL; + break; + case EMAIL_COMPOSER_TRACKING_BTN : // Tracking btn + evas_object_del(ugd->tracking_btn); + ugd->tracking_btn = NULL; + break; + case EMAIL_COMPOSER_DUMMY_BTN : // Dummy btn + evas_object_del(ugd->dummy_btn); + ugd->dummy_btn = NULL; + break; + default : // never get here! + debug_log("default"); + } +} + diff --git a/composer/src/email-composer.c b/composer/src/email-composer.c index 7847ccf..e0889d4 100755 --- a/composer/src/email-composer.c +++ b/composer/src/email-composer.c @@ -404,14 +404,24 @@ static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void * case UG_EVENT_ROTATE_PORTRAIT: elm_layout_theme_set(ugd->main_layout, "layout", "application", "default"); // elm_win_indicator_mode_set(ugd->win_main, ELM_WIN_INDICATOR_SHOW); + if (ugd->option_header_opened) { + elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); + ugd->option_header_opened = FALSE; + } ugd->isRotated = false; win_main_angle = 0; + _composer_resize_body_webview(ugd, ugd->ime_height); break; case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: elm_layout_theme_set(ugd->main_layout, "layout", "application", "default"); // elm_win_indicator_mode_set(ugd->win_main, ELM_WIN_INDICATOR_SHOW); + if (ugd->option_header_opened) { + elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); + ugd->option_header_opened = FALSE; + } ugd->isRotated = false; win_main_angle = 180; + _composer_resize_body_webview(ugd, ugd->ime_height); break; case UG_EVENT_ROTATE_LANDSCAPE: elm_layout_theme_set(ugd->main_layout, "layout", "application", "noindicator"); @@ -422,6 +432,7 @@ static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void * } ugd->isRotated = true; win_main_angle = 270; + _composer_resize_body_webview(ugd, 316); break; case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: elm_layout_theme_set(ugd->main_layout, "layout", "application", "noindicator"); @@ -432,6 +443,7 @@ static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void * } ugd->isRotated = true; win_main_angle = 90; + _composer_resize_body_webview(ugd, 316); break; case UG_EVENT_REGION_CHANGE: break; @@ -439,6 +451,8 @@ static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void * break; } + elm_layout_sizing_eval(ugd->c_layout); + // win_main_angle = elm_win_rotation_get(ugd->win_main); // win_main_angle = app_get_device_orientation(); debug_log("win_main_angle: %d, event: %d", win_main_angle, event); @@ -796,7 +810,7 @@ void create_composer_frame(EmailComposerUGD *ugd) snprintf(title_str, sizeof(title_str), "%s", dgettext("sys_string", "IDS_COM_HEADER_EDIT")); else snprintf(title_str, sizeof(title_str), "%s", N_("New email")); - ugd->navi_item = elm_naviframe_item_push(ugd->navi_bar, title_str, NULL, NULL, outer_layout, NULL); + ugd->navi_item = elm_naviframe_item_push(ugd->navi_bar, title_str, NULL, NULL, outer_layout, "2line"); // Right : cancel button cancel_btn = elm_button_add(ugd->navi_bar); @@ -806,7 +820,7 @@ void create_composer_frame(EmailComposerUGD *ugd) evas_object_smart_callback_add(cancel_btn, "clicked", _composer_back_button_cb, ugd); ugd->cancel_btn = cancel_btn; debug_log("cancel_btn of composer: %p", ugd->cancel_btn); - elm_object_disabled_set(ugd->cancel_btn, EINA_TRUE); // It prevents clicking the cancel button before initializing. + //elm_object_disabled_set(ugd->cancel_btn, EINA_TRUE); // It prevents clicking the cancel button before initializing. // Middle : more button more_btn = elm_button_add(ugd->navi_bar); @@ -831,53 +845,25 @@ void create_composer_frame(EmailComposerUGD *ugd) elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND); elm_object_style_set(cbar, "naviframe"); evas_object_show(cbar); + ugd->cbar = cbar; - elm_object_item_part_content_set(ugd->navi_item, "optionheader", cbar); - - ugd->option_header_opened = 0; + cbar = elm_toolbar_add(ugd->navi_bar); + if (cbar == NULL) + return; -#ifndef _CC_BCC - Evas_Object *cc_btn = elm_button_add(cbar); - elm_object_style_set(cc_btn, "naviframe_control/default"); - evas_object_size_hint_weight_set(cc_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(cc_btn, EVAS_HINT_FILL, 0.5); - elm_object_text_set(cc_btn, _("IDS_EMAIL_BODY_CC")); - evas_object_show(cc_btn); - ugd->cc_btn = cc_btn; - - Evas_Object *bcc_btn = elm_button_add(cbar); - elm_object_style_set(bcc_btn, "naviframe_control/default"); - evas_object_size_hint_weight_set(bcc_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(bcc_btn, EVAS_HINT_FILL, 0.5); - elm_object_text_set(bcc_btn, _("IDS_EMAIL_BODY_BCC")); - evas_object_show(bcc_btn); - ugd->bcc_btn = bcc_btn; - - ugd->controlbar_item[0] = elm_toolbar_item_append(cbar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(ugd->controlbar_item[0], "object", cc_btn); - - ugd->controlbar_item[1] = elm_toolbar_item_append(cbar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(ugd->controlbar_item[1], "object", bcc_btn); -#else - Evas_Object *cc_btn = elm_button_add(cbar); - elm_object_style_set(cc_btn, "naviframe_control/default"); - evas_object_size_hint_weight_set(cc_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(cc_btn, EVAS_HINT_FILL, 0.5); - if (ugd->cc_added) - elm_object_text_set(cc_btn, N_("Remove Cc/Bcc")); - else - elm_object_text_set(cc_btn, _("IDS_EMAIL_OPT_ADD_CC_BCC")); - evas_object_show(cc_btn); - ugd->cc_btn = cc_btn; + elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(cbar, "naviframe"); + evas_object_show(cbar); + ugd->cbar2 = cbar; - ugd->controlbar_item[0] = elm_toolbar_item_append(cbar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(ugd->controlbar_item[0], "object", cc_btn); -#endif + int i = 0; + for (i = EMAIL_COMPOSER_ADD_ME_BTN; i < EMAIL_COMPOSER_BTN_MAX; i++) { + _composer_set_option_tray_menu(i, ugd); + } + ugd->option_header_opened = 0; - evas_object_smart_callback_add(cc_btn, "clicked", _composer_cbar_cc_clicked, ugd); -#ifndef _CC_BCC - evas_object_smart_callback_add(bcc_btn, "clicked", _composer_cbar_bcc_clicked, ugd); -#endif + elm_object_item_part_content_set(ugd->navi_item, "optionheader", ugd->cbar); + elm_object_item_part_content_set(ugd->navi_item, "optionheader2", ugd->cbar2); elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); _composer_register_scroller_callback(ugd); @@ -976,6 +962,7 @@ static void _composer_init_data(void *data) ugd->ps_on = false; ugd->cc_added = false; ugd->bcc_added = false; + ugd->me_added = false; ugd->isRotated = false; ugd->is_recipient_duplicated = false; @@ -989,10 +976,10 @@ static void _composer_init_data(void *data) ugd->b_load_finished = EINA_FALSE; - /*Elm_Theme *th = elm_theme_new(); + Elm_Theme *th = elm_theme_new(); elm_theme_ref_set(th, NULL); ugd->th = th; - elm_theme_extension_add(ugd->th, COMPOSER_EDJ_NAME);*/ + elm_theme_extension_add(ugd->th, COMPOSER_EDJ_NAME); if (ethumb_init() != EINA_TRUE) { debug_log("Fail to ethumb_init()"); @@ -1013,6 +1000,7 @@ static void _composer_init_data(void *data) memset(ugd->account_info, 0x00, sizeof(EmailComposerMail)); ugd->ime_height = 444; + ugd->priority_option = EMAIL_MAIL_PRIORITY_NORMAL; } static int _composer_init_service(void *data) @@ -1099,11 +1087,11 @@ static void _composer_delete_evas_objects(EmailComposerUGD *ugd) ugd->bg = NULL; } - /*if (ugd->th) { + if (ugd->th) { elm_theme_extension_del(ugd->th, COMPOSER_EDJ_NAME); elm_theme_free(ugd->th); ugd->th = NULL; - }*/ + } if (ugd->idler_save_draft) { debug_log("delete idler_save_draft"); @@ -1875,18 +1863,11 @@ static void _on_edbus_event_composer_receive(void *data, DBusMessage * message) debug_log("receive noti, DOWNLOAD_ATTACHMENT"); char buf[128] = { 0, }; - if (ugd->account_info->account_type == EMAIL_SERVER_TYPE_ACTIVE_SYNC) { - char buf[128] = { 0, }; - - snprintf(buf, sizeof(buf), "%s [%d/%d]", _("IDS_EMAIL_POP_DOWNLOADING_ATTACHMENT_ING"), ugd->fw_dn_idx + 1, ugd->fw_dn_total_cnt); - elm_object_text_set(ugd->fw_dn_label, buf); - } else { - debug_log("Download : %d / %d", data4 + (ugd->fw_dn_idx * 100), (ugd->fw_dn_total_cnt * 100)); - snprintf(buf, sizeof(buf), "%s [%d/%d]", _("IDS_EMAIL_POP_DOWNLOADING_ATTACHMENT_ING"), ugd->fw_dn_idx + 1, ugd->fw_dn_total_cnt); - elm_object_text_set(ugd->fw_dn_label, buf); - elm_progressbar_value_set(ugd->fw_dn_progress, (double)(data4 + (ugd->fw_dn_idx * 100)) / (ugd->fw_dn_total_cnt * 100)); - evas_render(evas_object_evas_get(ugd->main_layout)); - } + debug_log("Download : %d / %d", data4 + (ugd->fw_dn_idx * 100), (ugd->fw_dn_total_cnt * 100)); + snprintf(buf, sizeof(buf), "%s [%d/%d]", _("IDS_EMAIL_POP_DOWNLOADING_ATTACHMENT_ING"), ugd->fw_dn_idx + 1, ugd->fw_dn_total_cnt); + elm_object_text_set(ugd->fw_dn_label, buf); + elm_progressbar_value_set(ugd->fw_dn_progress, (double)(data4 + (ugd->fw_dn_idx * 100)) / (ugd->fw_dn_total_cnt * 100)); + evas_render(evas_object_evas_get(ugd->main_layout)); break; diff --git a/composer/theme/_email_default.html b/composer/theme/_email_default.html deleted file mode 100755 index 6ead580..0000000 --- a/composer/theme/_email_default.html +++ /dev/null @@ -1 +0,0 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><STYLE type="text/css"> body {background-color: #f6f5ed; font-size: 24px; margin-left: 18px; margin-right: 18px; margin-top: 8px; margin-bottom: 8px;} p {font-size: 24px;} table {font-size: 24px;} </STYLE></head><body></body></html>
\ No newline at end of file diff --git a/composer/theme/email-composer-genlist.edc b/composer/theme/email-composer-genlist.edc new file mode 100755 index 0000000..27acad0 --- /dev/null +++ b/composer/theme/email-composer-genlist.edc @@ -0,0 +1,786 @@ +/* + * 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. + */ + +/* For Genlist */ +#define GENLIST_HEIGHT_1LINE 114 +#define GENLIST_HEIGHT_16_INC 16 +#define GENLIST_HEIGHT_60_INC 60 +#define GENLIST_HEIGHT_129_INC 129 + +#define GENLIST_FONT_32_INC 32 +#define GENLIST_FONT_44_INC 44 + +#define GENLIST_SIZE_10_INC 10 +#define GENLIST_SIZE_16_INC 16 +#define GENLIST_SIZE_21_INC 21 +#define GENLIST_SIZE_60_INC 60 +#define GENLIST_SIZE_61_INC 61 + +#define GENLIST_PADDING_10_INC 10 +#define GENLIST_PADDING_16_INC 16 +#define GENLIST_PADDING_26_INC 26 + +#define GENLIST_ICON_SMALL_SIZE 60 +#define GENLIST_ICON_BIG_SIZE 64 +#define GENLIST_LIST_MAIN_TEXT_SIZE GENLIST_FONT_44_INC +#define GENLIST_LIST_SUB_TEXT_SIZE 32 +#define GENLIST_PADDING_SIZE_LEFT GENLIST_PADDING_16_INC +#define GENLIST_PADDING_SIZE_RIGHT GENLIST_PADDING_16_INC + +#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR 0 0 0 255 +#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE "#000000FF" +#define GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR 249 249 249 255 +#define GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR_STYLE "#F9F9F9FF" + +#define GENLIST_PART_MATCH_TAG_COLOR_INC "+ color=#3F8DAD" +#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 110 // alpha was 64 +#define GENLIST_PART_BG_COLOR_INC 0 0 0 255 +#define GENLIST_PART_LIST_BG_COLOR 239 239 239 255 +#define GENLIST_PART_LIST_LINE_COLOR_INC 68 68 68 255 +#define GENLIST_PART_LIST_PRESS_COLOR_INC 0 140 210 255 +#define GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR 100 100 100 255 +#define GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR_STYLE "#646464FF" +#define GENLIST_LIST_SUB_TEXT_FOCUS_COLOR 249 249 249 255 +#define GENLIST_LIST_SUB_TEXT_FOCUS_COLOR_STYLE "#F9F9F9FF" + + +#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; + +#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_IMAGE \ + part { name: "bg_image"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + color: GENLIST_PART_LIST_BG_COLOR; \ + } \ + 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_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_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_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_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_FLIP_ENABLED \ + description { state: "flip_enabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } + +#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_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"; \ + } + +/* for From popup Genlist */ +group { name: "elm/genlist/item/email.2text.3icon.3/default"; + alias: "elm/genlist/item_odd/email.2text.3icon.3/default"; + alias: "elm/genlist/item_compress/email.2text.3icon.3/default"; + alias: "elm/genlist/item_compress_odd/email.2text.3icon.3/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"; + data.item: "flips" "elm.flip.content"; + images { + image: "00_list_bar_press_1x80.png" COMP; + } + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_1LINE ) + 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_SIZE_LEFT ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_SIZE_RIGHT ) + 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; + fixed: 1 1; + rel2.relative: 0.0 0.0; + align: 0.0 0.0; + } + } + part { name: "elm.icon.1"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_60_INC GENLIST_SIZE_60_INC; + max: GENLIST_SIZE_60_INC GENLIST_SIZE_60_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.padding.icon1.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_10_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon.1"; + } + rel2.to_x: "elm.icon.1"; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.icon.2"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE; + max: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon1.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.padding.icon1.right"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.padding.icon2.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.2"; + } + rel2.to_x: "elm.icon.2"; + align: 0.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 GENLIST_SIZE_61_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon2.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + color: GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR; + text { + font: "SLP:style=Roman"; + size: GENLIST_LIST_MAIN_TEXT_SIZE; + min: 0 1; + align: 0.0 0.5; + text_class: "list_item"; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + 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.icon2.right"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.0 0.5; + text_class: "slp_medium"; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_LIST_SUB_TEXT_FOCUS_COLOR; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + 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"; + //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"; + 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_2TEXT_2ICON + //GENLIST_PROGRAM_PLAY_BUTTON_PRESS + } +} + +/* For Gal photo Genlist */ +group { name: "elm/genlist/item/email.2text.1icon/default"; + alias: "elm/genlist/item_odd/email.2text.1icon/default"; + alias: "elm/genlist/item_compress/email.2text.1icon/default"; + alias: "elm/genlist/item_compress_odd/email.2text.1icon/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2"; + data.item: "contents" "elm.icon"; + data.item: "flips" "elm.flip.content"; + images { + image: "00_list_bar_press_1x80.png" COMP; + } + styles { + style { + name: "genlist_style_list_main_text_unread"; + base: "font=SLP:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE" text_class=list_item ellipsis=1.0"; + TEXTBLOCK_TAG + } + + style { name: "genlist_style_list_main_text_focus"; + base: "font=SLP:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR_STYLE" text_class=list_item ellipsis=1.0"; + TEXTBLOCK_TAG + } + + style { name: "genlist_style_list_sub_text_default"; + base: "font=SLP:style=Medium font_size="GENLIST_LIST_SUB_TEXT_SIZE" color="GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR_STYLE" ellipsis=1.0"; + TEXTBLOCK_TAG + } + style { name: "genlist_style_list_sub_text_focus"; + base: "font=SLP:style=Medium font_size="GENLIST_LIST_SUB_TEXT_SIZE" color="GENLIST_LIST_SUB_TEXT_FOCUS_COLOR_STYLE" ellipsis=1.0"; + TEXTBLOCK_TAG + } + } + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + 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_SIZE_LEFT ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_SIZE_RIGHT ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + 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.padding.bottom"; + } + align: 1.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.padding.icon.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.icon"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.icon"; + } + align: 1.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; + min: 0 GENLIST_SIZE_61_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.icon.left"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + text { + style: "genlist_style_list_main_text_unread"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + text.style: "genlist_style_list_main_text_focus"; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + fixed: 1 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.icon.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.0; + text { + style: "genlist_style_list_sub_text_default"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + text.style: "genlist_style_list_sub_text_focus"; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + 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"; + } + 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"; + 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_2TEXT_1ICON + } +} + +group { name: "elm/genlist/item/email.1text.1icon/default"; + alias: "elm/genlist/item_odd/email.1text.1icon/default"; + alias: "elm/genlist/item_compress/email.1text.1icon/default"; + alias: "elm/genlist/item_compress_odd/email.1text.1icon/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text"; + data.item: "contents" "elm.icon"; + 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_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_SIZE_LEFT ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_SIZE_RIGHT ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + 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.padding.bottom"; + } + align: 1.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.padding.icon.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.icon"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.icon"; + } + align: 1.0 0.0; + visible: 0; + } + } + part { name: "elm.text"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_61_INC; + fixed: 1 1; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.icon.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.0; + text { + style: "genlist_style_list_main_text_unread"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + text.style: "genlist_style_list_main_text_focus"; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + 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"; + } + 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 + } +} + diff --git a/composer/theme/email-composer-view.edc b/composer/theme/email-composer-view.edc index 7f432d1..f845ffc 100755 --- a/composer/theme/email-composer-view.edc +++ b/composer/theme/email-composer-view.edc @@ -48,4 +48,5 @@ collections { } #include "email-composer-layouts.edc" + #include "email-composer-genlist.edc" } diff --git a/composer/ug-email-composer-efl.xml b/composer/ug-email-composer-efl.xml index ffe86fc..102755e 100755 --- a/composer/ug-email-composer-efl.xml +++ b/composer/ug-email-composer-efl.xml @@ -7,14 +7,9 @@ <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> diff --git a/images/00_badge_34x34.png b/images/00_badge_34x34.png Binary files differdeleted file mode 100644 index 326ca8c..0000000 --- a/images/00_badge_34x34.png +++ /dev/null diff --git a/images/01_controlbar_icon_accounts.png b/images/01_controlbar_icon_accounts.png Binary files differdeleted file mode 100644 index 768d8db..0000000 --- a/images/01_controlbar_icon_accounts.png +++ /dev/null diff --git a/images/01_controlbar_icon_change_group.png b/images/01_controlbar_icon_change_group.png Binary files differdeleted file mode 100644 index 0d3938b..0000000 --- a/images/01_controlbar_icon_change_group.png +++ /dev/null diff --git a/images/01_controlbar_icon_favorite.png b/images/01_controlbar_icon_favorite.png Binary files differdeleted file mode 100644 index aa13cf9..0000000 --- a/images/01_controlbar_icon_favorite.png +++ /dev/null diff --git a/images/01_controlbar_icon_forward.png b/images/01_controlbar_icon_forward.png Binary files differdeleted file mode 100644 index a1fca43..0000000 --- a/images/01_controlbar_icon_forward.png +++ /dev/null diff --git a/images/01_controlbar_icon_reply.png b/images/01_controlbar_icon_reply.png Binary files differdeleted file mode 100644 index 4bdadbd..0000000 --- a/images/01_controlbar_icon_reply.png +++ /dev/null diff --git a/images/01_controlbar_icon_send.png b/images/01_controlbar_icon_send.png Binary files differdeleted file mode 100644 index 2a31a6f..0000000 --- a/images/01_controlbar_icon_send.png +++ /dev/null diff --git a/images/01_controlbar_icon_set_as.png b/images/01_controlbar_icon_set_as.png Binary files differdeleted file mode 100644 index 1673ad9..0000000 --- a/images/01_controlbar_icon_set_as.png +++ /dev/null diff --git a/images/01_controlbar_icon_store.png b/images/01_controlbar_icon_store.png Binary files differdeleted file mode 100644 index a5cb24d..0000000 --- a/images/01_controlbar_icon_store.png +++ /dev/null diff --git a/images/01_controlbar_icon_tag.png b/images/01_controlbar_icon_tag.png Binary files differdeleted file mode 100644 index 5b57cf7..0000000 --- a/images/01_controlbar_icon_tag.png +++ /dev/null diff --git a/images/01_controllbar_icon_add_tag.png b/images/01_controllbar_icon_add_tag.png Binary files differdeleted file mode 100644 index 2fb4713..0000000 --- a/images/01_controllbar_icon_add_tag.png +++ /dev/null diff --git a/images/01_header_icon_delete.png b/images/01_header_icon_delete.png Binary files differdeleted file mode 100644 index f02f45c..0000000 --- a/images/01_header_icon_delete.png +++ /dev/null diff --git a/images/01_header_icon_done.png b/images/01_header_icon_done.png Binary files differdeleted file mode 100644 index d771640..0000000 --- a/images/01_header_icon_done.png +++ /dev/null diff --git a/images/01_header_icon_edit.png b/images/01_header_icon_edit.png Binary files differdeleted file mode 100644 index ea2535d..0000000 --- a/images/01_header_icon_edit.png +++ /dev/null diff --git a/images/B15_double_tap_02.png b/images/B15_double_tap_02.png Binary files differnew file mode 100755 index 0000000..289e908 --- /dev/null +++ b/images/B15_double_tap_02.png diff --git a/images/M02_arrow_expand_dim.png b/images/M02_arrow_expand_dim.png Binary files differdeleted file mode 100644 index eda2fef..0000000 --- a/images/M02_arrow_expand_dim.png +++ /dev/null diff --git a/images/M02_btn_circle_bg_01.png b/images/M02_btn_circle_bg_01.png Binary files differdeleted file mode 100644 index 23b80f0..0000000 --- a/images/M02_btn_circle_bg_01.png +++ /dev/null diff --git a/images/M02_btn_circle_bg_press.png b/images/M02_btn_circle_bg_press.png Binary files differdeleted file mode 100644 index 9408a25..0000000 --- a/images/M02_btn_circle_bg_press.png +++ /dev/null diff --git a/images/M02_btn_play.png b/images/M02_btn_play.png Binary files differdeleted file mode 100644 index 79c2e5f..0000000 --- a/images/M02_btn_play.png +++ /dev/null diff --git a/images/M02_button_05_dim.png b/images/M02_button_05_dim.png Binary files differdeleted file mode 100644 index f375553..0000000 --- a/images/M02_button_05_dim.png +++ /dev/null diff --git a/images/M02_button_05_normal.png b/images/M02_button_05_normal.png Binary files differdeleted file mode 100644 index f375553..0000000 --- a/images/M02_button_05_normal.png +++ /dev/null diff --git a/images/M02_button_05_press.png b/images/M02_button_05_press.png Binary files differdeleted file mode 100644 index 236f1be..0000000 --- a/images/M02_button_05_press.png +++ /dev/null diff --git a/images/M02_button_06_dim.png b/images/M02_button_06_dim.png Binary files differdeleted file mode 100644 index 93626cd..0000000 --- a/images/M02_button_06_dim.png +++ /dev/null diff --git a/images/M02_button_06_press.png b/images/M02_button_06_press.png Binary files differdeleted file mode 100644 index d2446e7..0000000 --- a/images/M02_button_06_press.png +++ /dev/null diff --git a/images/M02_btn_circle_bg.png b/images/M02_button_download_press.png Binary files differindex 74cf5ca..e607aca 100644..100755 --- a/images/M02_btn_circle_bg.png +++ b/images/M02_button_download_press.png diff --git a/images/M02_button_expand_collapse.png b/images/M02_button_expand.png Binary files differindex 32ae2b5..32ae2b5 100644..100755 --- a/images/M02_button_expand_collapse.png +++ b/images/M02_button_expand.png diff --git a/images/M02_button_expand_opened_press.png b/images/M02_button_expand_opened_press.png Binary files differindex 02e9ea5..56f15ea 100644..100755 --- a/images/M02_button_expand_opened_press.png +++ b/images/M02_button_expand_opened_press.png diff --git a/images/M02_icon_favorite_off_02.png b/images/M02_button_expand_press.png Binary files differindex 3a9fcb4..6df4ece 100644..100755 --- a/images/M02_icon_favorite_off_02.png +++ b/images/M02_button_expand_press.png diff --git a/images/M02_button_sweep.png b/images/M02_button_sweep.png Binary files differdeleted file mode 100644 index 6f39fb5..0000000 --- a/images/M02_button_sweep.png +++ /dev/null diff --git a/images/M02_button_sweep_delete.png b/images/M02_button_sweep_delete.png Binary files differdeleted file mode 100644 index 87d7185..0000000 --- a/images/M02_button_sweep_delete.png +++ /dev/null diff --git a/images/M02_button_sweep_dim.png b/images/M02_button_sweep_dim.png Binary files differdeleted file mode 100644 index c53e775..0000000 --- a/images/M02_button_sweep_dim.png +++ /dev/null diff --git a/images/M02_button_sweep_press.png b/images/M02_button_sweep_press.png Binary files differdeleted file mode 100644 index 451bf38..0000000 --- a/images/M02_button_sweep_press.png +++ /dev/null diff --git a/images/M02_email_Flag_Active_press.png b/images/M02_email_Flag_Active_press.png Binary files differdeleted file mode 100644 index 7590172..0000000 --- a/images/M02_email_Flag_Active_press.png +++ /dev/null diff --git a/images/M02_email_Flag_Clear.png b/images/M02_email_Flag_Clear.png Binary files differindex 3db2b90..8d08871 100644..100755 --- a/images/M02_email_Flag_Clear.png +++ b/images/M02_email_Flag_Clear.png diff --git a/images/M02_email_Flag_Clear_press.png b/images/M02_email_Flag_Clear_press.png Binary files differdeleted file mode 100644 index 54fc1c6..0000000 --- a/images/M02_email_Flag_Clear_press.png +++ /dev/null diff --git a/images/M02_email_btn_icon_down.png b/images/M02_email_btn_icon_down.png Binary files differdeleted file mode 100644 index 942c16c..0000000 --- a/images/M02_email_btn_icon_down.png +++ /dev/null diff --git a/images/M02_email_btn_icon_down_press.png b/images/M02_email_btn_icon_down_press.png Binary files differdeleted file mode 100644 index 1ea6794..0000000 --- a/images/M02_email_btn_icon_down_press.png +++ /dev/null diff --git a/images/M02_email_icon_Encryption_press.png b/images/M02_email_icon_Encryption_press.png Binary files differdeleted file mode 100644 index f83cbb6..0000000 --- a/images/M02_email_icon_Encryption_press.png +++ /dev/null diff --git a/images/M02_email_icon_attach_press.png b/images/M02_email_icon_attach_press.png Binary files differdeleted file mode 100644 index 49d7a83..0000000 --- a/images/M02_email_icon_attach_press.png +++ /dev/null diff --git a/images/M02_email_icon_favorite_off.png b/images/M02_email_icon_favorite_off.png Binary files differindex a71e9f8..7986bbe 100644..100755 --- a/images/M02_email_icon_favorite_off.png +++ b/images/M02_email_icon_favorite_off.png diff --git a/images/M02_email_icon_favorite_on.png b/images/M02_email_icon_favorite_on.png Binary files differindex 809de1b..48f4573 100644..100755 --- a/images/M02_email_icon_favorite_on.png +++ b/images/M02_email_icon_favorite_on.png diff --git a/images/M02_email_icon_forward_press.png b/images/M02_email_icon_forward_press.png Binary files differdeleted file mode 100644 index 4ea3c85..0000000 --- a/images/M02_email_icon_forward_press.png +++ /dev/null diff --git a/images/M02_email_icon_priority_press.png b/images/M02_email_icon_index_close.png Binary files differindex 79f46e4..d5d1f49 100644..100755 --- a/images/M02_email_icon_priority_press.png +++ b/images/M02_email_icon_index_close.png diff --git a/images/M02_email_icon_lock.png b/images/M02_email_icon_lock.png Binary files differdeleted file mode 100644 index 215e0f7..0000000 --- a/images/M02_email_icon_lock.png +++ /dev/null diff --git a/images/M02_email_icon_lock_press.png b/images/M02_email_icon_lock_press.png Binary files differdeleted file mode 100644 index 7829a53..0000000 --- a/images/M02_email_icon_lock_press.png +++ /dev/null diff --git a/images/M02_icon_upper_folder_press.png b/images/M02_email_icon_popup_advanced.png Binary files differindex 050c295..85362cc 100644..100755 --- a/images/M02_icon_upper_folder_press.png +++ b/images/M02_email_icon_popup_advanced.png diff --git a/images/U01_icon_upper_folder.png b/images/M02_email_icon_popup_advanced_press.png Binary files differindex 050c295..1f345f6 100644..100755 --- a/images/U01_icon_upper_folder.png +++ b/images/M02_email_icon_popup_advanced_press.png diff --git a/images/M02_email_icon_popup_all.png b/images/M02_email_icon_popup_all.png Binary files differindex 0de4137..929cd98 100755 --- a/images/M02_email_icon_popup_all.png +++ b/images/M02_email_icon_popup_all.png diff --git a/images/M02_icon_upper_folder.png b/images/M02_email_icon_popup_all_press.png Binary files differindex 050c295..0de4137 100644..100755 --- a/images/M02_icon_upper_folder.png +++ b/images/M02_email_icon_popup_all_press.png diff --git a/images/M02_email_icon_popup_date.png b/images/M02_email_icon_popup_date.png Binary files differnew file mode 100755 index 0000000..4e477ef --- /dev/null +++ b/images/M02_email_icon_popup_date.png diff --git a/images/M02_email_icon_popup_date_press.png b/images/M02_email_icon_popup_date_press.png Binary files differnew file mode 100755 index 0000000..7c883bf --- /dev/null +++ b/images/M02_email_icon_popup_date_press.png diff --git a/images/M02_email_icon_popup_sender.png b/images/M02_email_icon_popup_sender.png Binary files differindex c921611..34df142 100755 --- a/images/M02_email_icon_popup_sender.png +++ b/images/M02_email_icon_popup_sender.png diff --git a/images/M02_button_delete.png b/images/M02_email_icon_popup_sender_press.png Binary files differindex 7e3d02a..c921611 100644..100755 --- a/images/M02_button_delete.png +++ b/images/M02_email_icon_popup_sender_press.png diff --git a/images/M02_email_icon_popup_title.png b/images/M02_email_icon_popup_title.png Binary files differindex c307de8..1415601 100755 --- a/images/M02_email_icon_popup_title.png +++ b/images/M02_email_icon_popup_title.png diff --git a/images/01_header_icon_add.png b/images/M02_email_icon_popup_title_press.png Binary files differindex 43c4984..c307de8 100644..100755 --- a/images/01_header_icon_add.png +++ b/images/M02_email_icon_popup_title_press.png diff --git a/images/M02_email_icon_reply_press.png b/images/M02_email_icon_reply_press.png Binary files differdeleted file mode 100644 index 77cfe29..0000000 --- a/images/M02_email_icon_reply_press.png +++ /dev/null diff --git a/images/M02_email_icon_sign_press.png b/images/M02_email_icon_sign_press.png Binary files differdeleted file mode 100644 index 1b16c74..0000000 --- a/images/M02_email_icon_sign_press.png +++ /dev/null diff --git a/images/M02_email_minus.png b/images/M02_email_minus.png Binary files differdeleted file mode 100644 index 5026a7b..0000000 --- a/images/M02_email_minus.png +++ /dev/null diff --git a/images/M02_email_popup_bubble_tail_top.png b/images/M02_email_popup_bubble_tail_top.png Binary files differnew file mode 100755 index 0000000..ed771ad --- /dev/null +++ b/images/M02_email_popup_bubble_tail_top.png diff --git a/images/M02_function_attach.png b/images/M02_function_attach.png Binary files differdeleted file mode 100644 index 8fa7872..0000000 --- a/images/M02_function_attach.png +++ /dev/null diff --git a/images/M02_function_security.png b/images/M02_function_security.png Binary files differdeleted file mode 100644 index f1f5d9e..0000000 --- a/images/M02_function_security.png +++ /dev/null diff --git a/images/M02_help_bg.png b/images/M02_help_bg.png Binary files differdeleted file mode 100644 index 5144879..0000000 --- a/images/M02_help_bg.png +++ /dev/null diff --git a/images/M02_icon_favorite_off_01.png b/images/M02_icon_favorite_off_01.png Binary files differdeleted file mode 100644 index ea37003..0000000 --- a/images/M02_icon_favorite_off_01.png +++ /dev/null diff --git a/images/M02_icon_favorite_on.png b/images/M02_icon_favorite_on.png Binary files differdeleted file mode 100644 index 1d100a9..0000000 --- a/images/M02_icon_favorite_on.png +++ /dev/null diff --git a/images/M02_icon_favorite_on_01.png b/images/M02_icon_favorite_on_01.png Binary files differdeleted file mode 100644 index f36d000..0000000 --- a/images/M02_icon_favorite_on_01.png +++ /dev/null diff --git a/images/M02_icon_favorite_on_02.png b/images/M02_icon_favorite_on_02.png Binary files differdeleted file mode 100644 index f09c852..0000000 --- a/images/M02_icon_favorite_on_02.png +++ /dev/null diff --git a/images/M02_icon_next_press.png b/images/M02_icon_next_press.png Binary files differdeleted file mode 100644 index c455e5b..0000000 --- a/images/M02_icon_next_press.png +++ /dev/null diff --git a/images/M02_icon_previous_press.png b/images/M02_icon_previous_press.png Binary files differdeleted file mode 100644 index cb39eb6..0000000 --- a/images/M02_icon_previous_press.png +++ /dev/null diff --git a/images/M02_logo_bg.png b/images/M02_logo_bg.png Binary files differdeleted file mode 100644 index 8a95432..0000000 --- a/images/M02_logo_bg.png +++ /dev/null diff --git a/images/M02_rich_text_bar_Aleadsymbol_press.png b/images/M02_rich_text_bar_Aleadsymbol_press.png Binary files differnew file mode 100755 index 0000000..c6defea --- /dev/null +++ b/images/M02_rich_text_bar_Aleadsymbol_press.png diff --git a/images/M02_rich_text_bar_Indent_press.png b/images/M02_rich_text_bar_Indent_press.png Binary files differnew file mode 100755 index 0000000..e4447df --- /dev/null +++ b/images/M02_rich_text_bar_Indent_press.png diff --git a/images/M02_rich_text_bar_Outdent_press.png b/images/M02_rich_text_bar_Outdent_press.png Binary files differnew file mode 100755 index 0000000..882526f --- /dev/null +++ b/images/M02_rich_text_bar_Outdent_press.png diff --git a/images/M02_contact_style_press.png b/images/M02_rich_text_bar_align_all_center.png Binary files differindex 01c4172..67665d1 100644..100755 --- a/images/M02_contact_style_press.png +++ b/images/M02_rich_text_bar_align_all_center.png diff --git a/images/M02_email_minus_press.png b/images/M02_rich_text_bar_align_all_center_press.png Binary files differindex 01f8d32..1aa7117 100644..100755 --- a/images/M02_email_minus_press.png +++ b/images/M02_rich_text_bar_align_all_center_press.png diff --git a/images/01_header_icon_others.png b/images/M02_rich_text_bar_align_center.png Binary files differindex 4fc9dfa..180a883 100644..100755 --- a/images/01_header_icon_others.png +++ b/images/M02_rich_text_bar_align_center.png diff --git a/images/M02_rich_text_bar_align_center_press.png b/images/M02_rich_text_bar_align_center_press.png Binary files differnew file mode 100755 index 0000000..94e7313 --- /dev/null +++ b/images/M02_rich_text_bar_align_center_press.png diff --git a/images/00_list_thumbnail_bg.png b/images/M02_rich_text_bar_align_left.png Binary files differindex 88522c5..b64b92a 100644..100755 --- a/images/00_list_thumbnail_bg.png +++ b/images/M02_rich_text_bar_align_left.png diff --git a/images/M02_contact_style.png b/images/M02_rich_text_bar_align_left_press.png Binary files differindex b5d6ac8..49ca62a 100644..100755 --- a/images/M02_contact_style.png +++ b/images/M02_rich_text_bar_align_left_press.png diff --git a/images/00_list_bar_press_1x90.png b/images/M02_rich_text_bar_align_right.png Binary files differindex fe01174..2431a2f 100644..100755 --- a/images/00_list_bar_press_1x90.png +++ b/images/M02_rich_text_bar_align_right.png diff --git a/images/M02_rich_text_bar_align_right_press.png b/images/M02_rich_text_bar_align_right_press.png Binary files differnew file mode 100755 index 0000000..47c4bb3 --- /dev/null +++ b/images/M02_rich_text_bar_align_right_press.png diff --git a/images/M02_rich_text_bar_bold_press.png b/images/M02_rich_text_bar_bold_press.png Binary files differnew file mode 100755 index 0000000..cf84090 --- /dev/null +++ b/images/M02_rich_text_bar_bold_press.png diff --git a/images/M02_rich_text_bar_btn_01_press.png b/images/M02_rich_text_bar_btn_01_press.png Binary files differindex 33eecd6..95e8421 100644..100755 --- a/images/M02_rich_text_bar_btn_01_press.png +++ b/images/M02_rich_text_bar_btn_01_press.png diff --git a/images/M02_rich_text_bar_btn_02_press.png b/images/M02_rich_text_bar_btn_02_press.png Binary files differindex 46c33f1..303c940 100644..100755 --- a/images/M02_rich_text_bar_btn_02_press.png +++ b/images/M02_rich_text_bar_btn_02_press.png diff --git a/images/M02_rich_text_bar_fontbgcolor_text.png b/images/M02_rich_text_bar_fontbgcolor_text.png Binary files differnew file mode 100755 index 0000000..3a70b80 --- /dev/null +++ b/images/M02_rich_text_bar_fontbgcolor_text.png diff --git a/images/M02_rich_text_bar_fontbgcolor_text_press.png b/images/M02_rich_text_bar_fontbgcolor_text_press.png Binary files differnew file mode 100755 index 0000000..6765982 --- /dev/null +++ b/images/M02_rich_text_bar_fontbgcolor_text_press.png diff --git a/images/M02_rich_text_bar_fontcolor.png b/images/M02_rich_text_bar_fontcolor.png Binary files differindex 9aecb6f..19192a7 100644..100755 --- a/images/M02_rich_text_bar_fontcolor.png +++ b/images/M02_rich_text_bar_fontcolor.png diff --git a/images/M02_rich_text_bar_fontcolor_press.png b/images/M02_rich_text_bar_fontcolor_press.png Binary files differnew file mode 100755 index 0000000..752355f --- /dev/null +++ b/images/M02_rich_text_bar_fontcolor_press.png diff --git a/images/M02_rich_text_bar_fontsize.png b/images/M02_rich_text_bar_fontsize.png Binary files differnew file mode 100755 index 0000000..6e3cb3a --- /dev/null +++ b/images/M02_rich_text_bar_fontsize.png diff --git a/images/M02_rich_text_bar_fontsize_press.png b/images/M02_rich_text_bar_fontsize_press.png Binary files differnew file mode 100755 index 0000000..77f0a71 --- /dev/null +++ b/images/M02_rich_text_bar_fontsize_press.png diff --git a/images/M02_rich_text_bar_insert.png b/images/M02_rich_text_bar_insert.png Binary files differnew file mode 100755 index 0000000..4a543f0 --- /dev/null +++ b/images/M02_rich_text_bar_insert.png diff --git a/images/M02_rich_text_bar_insert_press.png b/images/M02_rich_text_bar_insert_press.png Binary files differnew file mode 100755 index 0000000..3dbee48 --- /dev/null +++ b/images/M02_rich_text_bar_insert_press.png diff --git a/images/01_header_icon_cancel.png b/images/M02_rich_text_bar_italic_press.png Binary files differindex 4fb54c3..a31a529 100644..100755 --- a/images/01_header_icon_cancel.png +++ b/images/M02_rich_text_bar_italic_press.png diff --git a/images/M02_rich_text_bar_numbering_press.png b/images/M02_rich_text_bar_numbering_press.png Binary files differnew file mode 100755 index 0000000..83cfa03 --- /dev/null +++ b/images/M02_rich_text_bar_numbering_press.png diff --git a/images/M02_rich_text_bar_que_left.png b/images/M02_rich_text_bar_que_left.png Binary files differnew file mode 100755 index 0000000..03ff4d5 --- /dev/null +++ b/images/M02_rich_text_bar_que_left.png diff --git a/images/00_list_img_check.png b/images/M02_rich_text_bar_que_right.png Binary files differindex c954b08..0d0d9ea 100644..100755 --- a/images/00_list_img_check.png +++ b/images/M02_rich_text_bar_que_right.png diff --git a/images/M02_rich_text_bar_redo_press.png b/images/M02_rich_text_bar_redo_press.png Binary files differnew file mode 100755 index 0000000..d9d0d5c --- /dev/null +++ b/images/M02_rich_text_bar_redo_press.png diff --git a/images/00_input_bg.png b/images/M02_rich_text_bar_underline_press.png Binary files differindex d5c11f5..4e63ff7 100755 --- a/images/00_input_bg.png +++ b/images/M02_rich_text_bar_underline_press.png diff --git a/images/M02_rich_text_bar_undo_press.png b/images/M02_rich_text_bar_undo_press.png Binary files differnew file mode 100755 index 0000000..63cdcee --- /dev/null +++ b/images/M02_rich_text_bar_undo_press.png diff --git a/images/M02_shadow_01.png b/images/M02_shadow_01.png Binary files differdeleted file mode 100644 index 8f75d8d..0000000 --- a/images/M02_shadow_01.png +++ /dev/null diff --git a/images/M02_shadow_02.png b/images/M02_shadow_02.png Binary files differdeleted file mode 100644 index 7351259..0000000 --- a/images/M02_shadow_02.png +++ /dev/null diff --git a/images/M02_title_button.png b/images/M02_title_button.png Binary files differdeleted file mode 100644 index 5adf893..0000000 --- a/images/M02_title_button.png +++ /dev/null diff --git a/images/M02_title_button_press.png b/images/M02_title_button_press.png Binary files differdeleted file mode 100644 index c92145e..0000000 --- a/images/M02_title_button_press.png +++ /dev/null diff --git a/images/M02_toolbar_Next.png b/images/M02_toolbar_Next.png Binary files differdeleted file mode 100644 index 3d0ef00..0000000 --- a/images/M02_toolbar_Next.png +++ /dev/null diff --git a/images/M02_toolbar_Previous.png b/images/M02_toolbar_Previous.png Binary files differdeleted file mode 100644 index 6031430..0000000 --- a/images/M02_toolbar_Previous.png +++ /dev/null diff --git a/images/U01_icon_ring_tone.png b/images/U01_icon_ring_tone.png Binary files differdeleted file mode 100644 index 5e6d2c5..0000000 --- a/images/U01_icon_ring_tone.png +++ /dev/null diff --git a/images/U01_icon_rss.png b/images/U01_icon_rss.png Binary files differdeleted file mode 100644 index 1b566e2..0000000 --- a/images/U01_icon_rss.png +++ /dev/null diff --git a/images/email_viewer_attach_multi.png b/images/email_viewer_attach_multi.png Binary files differdeleted file mode 100644 index 1f1a6a8..0000000 --- a/images/email_viewer_attach_multi.png +++ /dev/null diff --git a/images/nf_title_separator.png b/images/nf_title_separator.png Binary files differdeleted file mode 100755 index 62c098e..0000000 --- a/images/nf_title_separator.png +++ /dev/null diff --git a/images/org.tizen.email.png b/images/org.tizen.email.png Binary files differdeleted file mode 100755 index c10fbce..0000000 --- a/images/org.tizen.email.png +++ /dev/null diff --git a/mailbox/CMakeLists.txt b/mailbox/CMakeLists.txt new file mode 100755 index 0000000..0fd91a8 --- /dev/null +++ b/mailbox/CMakeLists.txt @@ -0,0 +1,62 @@ +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-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_POPUP_WITH_LIST") + +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}) + diff --git a/mailbox/include/email-mailbox-controlbar.h b/mailbox/include/email-mailbox-controlbar.h new file mode 100755 index 0000000..137beca --- /dev/null +++ b/mailbox/include/email-mailbox-controlbar.h @@ -0,0 +1,24 @@ +/* + * 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_ */ diff --git a/mailbox/include/email-mailbox-item.h b/mailbox/include/email-mailbox-item.h new file mode 100755 index 0000000..230a91e --- /dev/null +++ b/mailbox/include/email-mailbox-item.h @@ -0,0 +1,72 @@ +/* + * 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_ */ diff --git a/mailbox/include/email-mailbox-list.h b/mailbox/include/email-mailbox-list.h new file mode 100755 index 0000000..c489443 --- /dev/null +++ b/mailbox/include/email-mailbox-list.h @@ -0,0 +1,76 @@ +/* + * 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_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 _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_ */ diff --git a/mailbox/include/email-mailbox-noti-mgr.h b/mailbox/include/email-mailbox-noti-mgr.h new file mode 100755 index 0000000..cea2da3 --- /dev/null +++ b/mailbox/include/email-mailbox-noti-mgr.h @@ -0,0 +1,32 @@ +/* + * 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_ */ diff --git a/mailbox/include/email-mailbox-search.h b/mailbox/include/email-mailbox-search.h new file mode 100755 index 0000000..15f6fea --- /dev/null +++ b/mailbox/include/email-mailbox-search.h @@ -0,0 +1,27 @@ +/* + * 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_ */ diff --git a/mailbox/include/email-mailbox-sweep.h b/mailbox/include/email-mailbox-sweep.h new file mode 100755 index 0000000..85259c8 --- /dev/null +++ b/mailbox/include/email-mailbox-sweep.h @@ -0,0 +1,27 @@ +/* + * 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 diff --git a/mailbox/include/email-mailbox.h b/mailbox/include/email-mailbox.h new file mode 100755 index 0000000..27dbe1a --- /dev/null +++ b/mailbox/include/email-mailbox.h @@ -0,0 +1,456 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __DEF_EMAIL_MAILBOX_H_ +#define __DEF_EMAIL_MAILBOX_H_ + +#include <Elementary.h> +#include <Ecore_IMF.h> +#include <vconf.h> +#include <libintl.h> +#include <appcore-efl.h> +#undef _ +#include <ui-gadget-module.h> +#include <Ecore_X.h> + +#include <glib.h> +#include <glib-object.h> +#include <glib/gprintf.h> + +#include "email-types.h" +#include "email-debug.h" +#include "email-common-types.h" +#include "email-engine.h" +#include "email-utils.h" +#include "email-locale.h" + +#include <unicode/uloc.h> +#include <unicode/ucal.h> +#include <unicode/udat.h> +#include <unicode/udatpg.h> +#include <unicode/ustring.h> + +#define MAILBOX_PACKAGE "email-mailbox" + +#define EDJ_PATH EDJDIR +#define GRP_MAIN "main" +#define GRP_MAIN_ALL_EMAILS "main_all_emails" +#define THEME_PATH EDJ_PATH"/email-mailbox-theme.edj" +#define EFFECT_EDJ_PATH EDJ_PATH"/email-effect-layout.edj" +#define _EDJ(o) elm_layout_edje_get(o) + +#define ICON_BLOCK IMGDIR"/M02_controlbar_icon_block.png" +#define ICON_MOVE IMGDIR"/M02_controlbar_icon_move.png" +#define ICON_DELETE_ALL IMGDIR"/M02_controlbar_icon_delete_all.png" +#define ICON_DELETE IMGDIR"/M02_controlbar_icon_delete.png" +#define ICON_MARKUNREAD IMGDIR"/M02_controlbar_icon_mark_as_unread.png" +#define ICON_CANCEL IMGDIR"/M02_controlbar_icon_cancel.png" +#define ICON_COMPOSE IMGDIR"/M02_controlbar_icon_compose.png" +#define ICON_UPDATE IMGDIR"/M02_controlbar_icon_update.png" +#define ICON_FOLDERS IMGDIR"/M02_email_icon_title_folders.png" +#define ICON_SORTBY IMGDIR"/M02_controlbar_icon_sort_by.png" +#define ICON_VIEWMODE IMGDIR"/M02_controlbar_icon_view_mode.png" +#define ICON_MORE IMGDIR"/M02_controlbar_icon_more.png" +#define ICON_EDIT IMGDIR"/M02_controlbar_icon_edit.png" +#define ICON_CLOSE IMGDIR"/M02_email_icon_title_down.png" +#define ICON_OPEN IMGDIR"/M02_email_icon_title_up.png" +#define ICON_TITLE_ALL_ACC IMGDIR"/M02_email_list_icon_allaccount.png" +#define ICON_INDEX_CLOSE IMGDIR"/M02_email_icon_index_close.png" + +#define CK_UNCHECKED 0 +#define CK_CHECKED 1 + +#define EMAIL_SLOT_UNIT 25 + +typedef struct EmailMailboxListAppData EmailMailboxListAppData; + +struct EmailMailboxListAppData { + Evas *evas; + Evas_Object *win_main; + Evas_Object *layout_main; /* layout widget based on EDJ */ +}; + +typedef struct ug_data EmailMailboxUGD; + +typedef struct { + EmailMailboxUGD *mailbox_ugd; + + gchar *from; + gchar *alias; + gchar *sender; + gchar *preview_body; + char *title; + char *recipient; + gint group_index; + gchar *timeordate; + gchar *group_title; + gchar *group_date; + gint mailbox_id; + int mailbox_type; + gboolean is_attachment; + gboolean is_seen; + gboolean is_sending_now; + gboolean is_body_download; + gint mail_id; + gint account_id; + int account_color; + gint thread_id; + gint thread_count; + gint chksel; + Evas_Object *check; + Evas_Object *flag_ic; + gint imp_sel; + Evas_Object *important; + gint idx; + gint priority; + gint reply_flag; + gint forward_flag; + gint followup_flag; + time_t absolute_time; + Elm_Object_Item *item; +} list_data; + +typedef enum { + EMAIL_MAILBOX_MODE_UNKOWN = -1, + EMAIL_MAILBOX_MODE_ALL, + EMAIL_MAILBOX_MODE_MAILBOX, + EMAIL_MAILBOX_MODE_MAX, +} EmailMailboxMode; + + +typedef enum { + VIEWBY_UNKNOWN = -1, + VIEWBY_DATE_RECENT, + VIEWBY_DATE_OLD, + VIEWBY_SENDER_ATOZ, + VIEWBY_SENDER_ZTOA, + VIEWBY_UNREAD, + VIEWBY_IMPORTANT, + VIEWBY_ATTACHMENT, + VIEWBY_PRIORITY, + VIEWBY_MAX, +} EmailMailboxViewby; + +typedef enum { + VIEWMODE_UNKNOWN = -1, + VIEWMODE_STANDARD, + VIEWMODE_CONVERSATION, + VIEWMODE_MAX, +} EmailMailboxViewmode; + +typedef enum { + SEARCHBY_UNKNOWN = -1, + SEARCHBY_ALL, + SEARCHBY_TITLE, + SEARCHBY_SENDER, + SEARCHBY_MAX, +} EmailMailboxSearchby; + +typedef enum { + EMAIL_GROUP_UNKNOWN = -1, + EMAIL_GROUP_TODAY, + EMAIL_GROUP_YESTERDAY, + EMAIL_GROUP_SUN, + EMAIL_GROUP_MON, + EMAIL_GROUP_TUE, + EMAIL_GROUP_WED, + EMAIL_GROUP_THU, + EMAIL_GROUP_LASTWEEK, + EMAIL_GROUP_TWOWEEKS_AGO, + EMAIL_GROUP_THREEWEEKS_AGO, + EMAIL_GROUP_EARLIER_THISMONTH, + EMAIL_GROUP_LASTMONTH, + EMAIL_GROUP_OLDER, + EMAIL_GROUP_UNREAD, + EMAIL_GROUP_READ, + EMAIL_GROUP_FAVORITES, + EMAIL_GROUP_ATTACHMENTS, + EMAIL_GROUP_OTHER, + EMAIL_GROUP_PRIORITY_HIGH, + EMAIL_GROUP_PRIORITY_NORMAL, + EMAIL_GROUP_PRIORITY_LOW, + EMAIL_GROUP_MAX, +} EmailMailboxGroup; + +typedef enum { + EMAIL_VIEW_UNKNOWN = -1, + EMAIL_VIEW_DATE, /* should display only seed mail */ + EMAIL_VIEW_RECIPIENT, /* should display recipient list */ + EMAIL_VIEW_UNREAD, /* should display only unread mail */ + EMAIL_VIEW_IMPORTANT, /* Disply only important mail */ + EMAIL_VIEW_EDIT, /* Delete / Block / MoveTo */ + EMAIL_VIEW_SEARCH, + EMAIL_VIEW_PRIORITY, + EMAIL_VIEW_ATTACHMENTS, + EMAIL_VIEW_MAX, +} EmailMailboxViewType; + +typedef struct _email_movefolder_list { + email_mailbox_t *mailbox_list; + EmailMailboxUGD *mailbox_ugd; +} email_movefolder_list; + +typedef struct _MailboxAdvSearchViewInfo { + Evas_Object *clicked_object; + Evas_Object *entry_title; + Evas_Object *entry_sender_address; + Evas_Object *entry_date_from; + Evas_Object *entry_date_to; + Evas_Object *search_title; + Evas_Object *search_sender_address; + Evas_Object *search_date_from; + Evas_Object *search_date_to; + char* str_title; + char* str_sender_address; + char* str_search_criteria; + time_t from_date; + time_t to_date; + char* str_from_date; + char* str_to_date; + EmailMailboxUGD *mailbox_ugd; +} MailboxAdvSearchViewInfo; + +typedef struct _noti_event { + int operation; + int data1; + int data2; + char* data3; + int data4; +} noti_event; + +struct ug_data { + Evas *evas; + Evas_Object *win_main; + Evas_Object *layout_main; + Evas_Object *panes; + Evas_Object *gen_list_index; + Evas_Object *effect_account_ly; + Evas_Object *effect_composer_ly; + + EmailMailboxViewType view_type; + EmailMailboxViewType previous_view; + Evas_Object *gl[EMAIL_VIEW_MAX]; + Evas_Object *ly; + Evas_Object *check; + Evas_Object *navi_bar; + Evas_Object *controlbar_seg; + Evas_Object *controlbar_btns; + Evas_Object *prev_controlbar; + Evas_Object *no_content; + Evas_Object *no_content_sender; + Elm_Theme *theme; + Elm_Object_Item *navibar_item[EMAIL_VIEW_MAX]; + Evas_Object *navi_title_ly; + Evas_Object *sp_icon; + Evas_Object *title_arrow; + Evas_Object *content_edit; + Evas_Object *searchbar_en; + Elm_Object_Item *load_more_button; + Elm_Object_Item *edit_button; + //Elm_Object_Item *edit_cancel_button; + Evas_Object *folder_button; + Evas_Object *update_button; + Evas_Object *sync_progress; + Elm_Object_Item *delete_all_button; + Evas_Object *ctxpopup; + Evas_Object *motion_popup; + GList *important_list; + Elm_Object_Item *date_tab; + Evas_Object *selectioninfo_layout; + Evas_Object *sub_layout[EMAIL_VIEW_MAX]; + Evas_Object *move_button; + Evas_Object *block_button; + Evas_Object *search_layout; + Evas_Object *searchbar_layout; + Evas_Object *searchbar_area; + Evas_Object *searchby_button; + Evas_Object *prev_search_layout; + Evas_Object *prev_searchbar_layout; + Evas_Object *prev_searchbar_en; + Evas_Object *prev_searchbar_area; + Evas_Object *prev_searchby_button; + Elm_Object_Item *git[EMAIL_VIEW_MAX][EMAIL_GROUP_MAX]; + app_device_orientation_e current_rotmode; + bool isRotate; + Evas_Object *viewer_ly; + Evas_Object *main_back_btn; + Evas_Object *viewby_popup; + Evas_Object *delete_popup; + Evas_Object *searchby_ctx_popup; + Evas_Object *account_dim; + GList *folder_list; + GList *selected_list; /* revised, used to move the mails selected in previous view */ + GList *delete_mail_list; + GList *noti_Q; + gboolean need_sync; + gint sort_type_index; + gint from_width; + gint account_id; + gint thread_id; + gint thread_mail_count; + gint total_count; + gint date_type; + gint chk_cnt; + gint unread_cnt; + EmailSortType sort_type; + gboolean refresh; + gboolean bhour; + gchar *search_text; + guint index; + char *address; + gchar *display_name; + guint add_item_id; + gint mailbox_id; + email_mailbox_type_e mailbox_type; + gchar *folder_alias; + gchar *user_email; + gint uid; + gint cur_container_type; + gint initial_run; + gint b_thread_list; + gint main_w; + gint main_h; + + EmailSearchType search_type; + email_movefolder_list *move_folder_list; /* revised, used to dealloc */ + gint move_folder_cnt; /* revised, used to dealloc */ + + MailboxAdvSearchViewInfo *adv_search_info; + gboolean b_advanced_search_view; + unsigned emf_handle; + EmailAccountInfo *account_info; + E_DBus_Connection *edbus_conn; + gchar *prev_group_title; + //email_sender_list *sender_list; + //gint sender_cnt; + EmailMailboxMode mode; + + /* index for mail list when mailbox receive email from emailservice */ + gint download_idx; + Elm_Object_Item *after_item; + Evas_Object *base; + ui_gadget_h ug; + struct ug_cbs cbs; + + ui_gadget_h ug_viewer; + ui_gadget_h ug_composer; + ui_gadget_h ug_account; + ui_gadget_h ug_setting; + ui_gadget_h ug_document; + int viewer_refresh; + int viewer_effect; + Evas_Object *temp_ly; + bool viewer_loading; + Evas_Object *split_nocontent; + GList *list_data[EMAIL_VIEW_MAX]; + int create_progress_part; + + Elm_Genlist_Item_Class itc1; + Elm_Genlist_Item_Class itc2; +}; + + +/* int account_id, email_folder_type_e folder_type */ +#define GET_MAILBOX_ID(account_id, folder_type) \ + ({\ + int _acct = account_id;\ + int _type = folder_type;\ + int _folder = 0;\ + email_mailbox_t *mbox = NULL;\ + int e = email_get_mailbox_by_mailbox_type(_acct, _type, &mbox);\ + if( e != EMAIL_ERROR_NONE || !mbox ) {\ + debug_warning("Error to get mailbox id acct(%d) type(%d) - err(%d) or mbox is NULL(%p)",\ + _acct, _type, e, mbox);\ + }\ + else _folder = mbox->mailbox_id;\ + if(mbox) email_free_mailbox(&mbox, 1);\ + _folder;\ + }) + +/* int mailbox_id */ +#define GET_MAILBOX_TYPE(mailbox_id) \ + ({\ + int _folder = mailbox_id;\ + email_mailbox_t *mbox = NULL;\ + int type = EMAIL_MAILBOX_TYPE_NONE;\ + int e = email_get_mailbox_by_mailbox_id(_folder, &mbox);\ + if( e != EMAIL_ERROR_NONE || !mbox )\ + debug_warning("email_get_mailbox_by_mailbox_id folder(%d) - err(%d) or mbox is NULL(%p)",\ + _folder, e, mbox);\ + else type = mbox->mailbox_type;\ + if(mbox) email_free_mailbox(&mbox, 1);\ + type;\ + }) + +#define GET_ACCOUNT_SERVER_TYPE(account_id) \ + ({\ + email_account_t *email_account = NULL;\ + int server_type = 0;\ + int e = email_get_account(account_id, EMAIL_ACC_GET_OPT_DEFAULT, &email_account);\ + if (e != EMAIL_ERROR_NONE || !email_account) {\ + debug_warning("email_get_account acct(%d) - err(%d) or acct NULL(%p)",\ + account_id, e, email_account);\ + }\ + else server_type = email_account->incoming_server_type;\ + if(email_account) email_free_account(&email_account, 1);\ + server_type;\ + }) + +#define GET_INBOX_TO_GETMORE(account_id) \ + ({\ + int _folder = GET_MAILBOX_ID(account_id, EMAIL_MAILBOX_TYPE_INBOX);\ + email_mailbox_t *mbox = NULL;\ + int i_getmore = 0;\ + int e = email_get_mailbox_by_mailbox_id(_folder, &mbox);\ + if( e != EMAIL_ERROR_NONE || !mbox )\ + debug_warning("email_get_mailbox_by_mailbox_id folder(%d) - err(%d) or mbox is NULL(%p)",\ + _folder, e, mbox);\ + else i_getmore = (mbox->total_mail_count_on_server-mbox->total_mail_count_on_local);\ + if(mbox) email_free_mailbox(&mbox, 1);\ + i_getmore;\ + }) + +#define GET_MAILBOX_TO_GETMORE(mailbox_id) \ + ({\ + int _folder = mailbox_id;\ + email_mailbox_t *mbox = NULL;\ + int i_getmore = 0;\ + int e = email_get_mailbox_by_mailbox_id(_folder, &mbox);\ + if( e != EMAIL_ERROR_NONE || !mbox )\ + debug_warning("email_get_mailbox_by_mailbox_id folder(%d) - err(%d) or mbox is NULL(%p)",\ + _folder, e, mbox);\ + else i_getmore = (mbox->total_mail_count_on_server-mbox->total_mail_count_on_local);\ + if(mbox) email_free_mailbox(&mbox, 1);\ + i_getmore;\ + }) + +void _update_navigationbar_title(EmailMailboxUGD *mailbox_ugd); +ui_gadget_h create_composer_ug(char *ug_name, service_h service, void *data); +void layout_composer_cb(ui_gadget_h ug, enum ug_mode mode, void *priv); +void result_composer_cb(ui_gadget_h ug, service_h service, void *priv); +void _stop_emf_job(EmailMailboxUGD *mailbox_ugd, unsigned handle, gboolean change_download_label_in_panel); +void email_rotate_landscape(EmailMailboxUGD *mailbox_ugd); +void _update_toolbar_clicked_cb(void *data, Evas_Object *obj, void *event_info); +void _update_toolbar_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info); +void destroy_account_cb(ui_gadget_h ug, void *priv); +void _sync_all_folder(EmailMailboxUGD *mailbox_ugd); +void _sync_curr_folder(EmailMailboxUGD *mailbox_ugd, int mailbox_id); +void _open_email_body(gint uid, Elm_Object_Item *item); +void _create_email_no_content_view(EmailMailboxUGD *mailbox_ugd); +void _reset_refer_item_and_idx(EmailMailboxUGD *mailbox_ugd); +email_sort_type_t _mailbox_conv_sort_type(EmailSortType sort_type); + +#endif /* __DEF_email-mailbox_H__ */ diff --git a/mailbox/src/email-mailbox-controlbar.c b/mailbox/src/email-mailbox-controlbar.c new file mode 100755 index 0000000..1b7b0f0 --- /dev/null +++ b/mailbox/src/email-mailbox-controlbar.c @@ -0,0 +1,875 @@ +/* + * 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; + + 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; + + 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; + } + + 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; + + 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: + ret = g_strdup(_("IDS_EMAIL_OPT_FAVOURITES")); + break; + case VIEWBY_PRIORITY: + ret = g_strdup(dgettext("sys_string", "IDS_COM_POP_PRIORITY")); + 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; + } +*/ + 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}; + + 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: + 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_ATTACHMENTS: + 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); + + elm_toolbar_item_append(control_bar, ICON_SORTBY, _("IDS_EMAIL_SK_SORT_BY"), + _viewby_cb, mailbox_ugd); + + 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 (mailbox_ugd->mode != EMAIL_MAILBOX_MODE_ALL && 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); +} + + + + diff --git a/mailbox/src/email-mailbox-item.c b/mailbox/src/email-mailbox-item.c new file mode 100755 index 0000000..6e3680d --- /dev/null +++ b/mailbox/src/email-mailbox-item.c @@ -0,0 +1,711 @@ +/* + * 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; + + 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_UNREAD || + mailbox_ugd->previous_view == EMAIL_VIEW_IMPORTANT || + mailbox_ugd->previous_view == EMAIL_VIEW_ATTACHMENTS || + 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_UNREAD || + previous_view == EMAIL_VIEW_IMPORTANT || + previous_view == EMAIL_VIEW_PRIORITY || + 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; + + //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); + + } +} + diff --git a/mailbox/src/email-mailbox-list.c b/mailbox/src/email-mailbox-list.c new file mode 100755 index 0000000..4ab5f86 --- /dev/null +++ b/mailbox/src/email-mailbox-list.c @@ -0,0 +1,3356 @@ +/* + * 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-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) { + 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 + ) + || + (mailbox_ugd->view_type == EMAIL_VIEW_DATE + && mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX + && 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(""); + + 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; + + { + 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: + 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_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; + //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; + 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 (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 == false) { + 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 _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: + 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; + + } + 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; +} + + diff --git a/mailbox/src/email-mailbox-noti-mgr.c b/mailbox/src/email-mailbox-noti-mgr.c new file mode 100755 index 0000000..4f5de4d --- /dev/null +++ b/mailbox/src/email-mailbox-noti-mgr.c @@ -0,0 +1,730 @@ +/* + * 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; + _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; + _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"); + + /* 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 (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_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_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(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 (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); + } + } + 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(); +} + + diff --git a/mailbox/src/email-mailbox-search.c b/mailbox/src/email-mailbox-search.c new file mode 100755 index 0000000..2f9fef1 --- /dev/null +++ b/mailbox/src/email-mailbox-search.c @@ -0,0 +1,1033 @@ +/* + * 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; + + 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); +} diff --git a/mailbox/src/email-mailbox-sweep.c b/mailbox/src/email-mailbox-sweep.c new file mode 100755 index 0000000..045fbd6 --- /dev/null +++ b/mailbox/src/email-mailbox-sweep.c @@ -0,0 +1,417 @@ +/* + * 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); + + 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); + + 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; + +} + + diff --git a/mailbox/src/email-mailbox.c b/mailbox/src/email-mailbox.c new file mode 100755 index 0000000..5c29727 --- /dev/null +++ b/mailbox/src/email-mailbox.c @@ -0,0 +1,1951 @@ +/* + * 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 "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_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_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) { + _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 (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); + } + + 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_ATTACHMENTS) + email_svc_sort_type = EMAIL_SORT_ATTACHMENT_HIGH; + else + debug_error("INVALID sort_type"); + + return email_svc_sort_type; +} diff --git a/mailbox/theme/email-mailbox-theme-macro.edc b/mailbox/theme/email-mailbox-theme-macro.edc new file mode 100755 index 0000000..aac48f4 --- /dev/null +++ b/mailbox/theme/email-mailbox-theme-macro.edc @@ -0,0 +1,1235 @@ +/* + * 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 diff --git a/mailbox/theme/email-mailbox-theme.edc b/mailbox/theme/email-mailbox-theme.edc new file mode 100755 index 0000000..66bf60c --- /dev/null +++ b/mailbox/theme/email-mailbox-theme.edc @@ -0,0 +1,2841 @@ +/* + * 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"; + } + } + } + } + } +} + diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt new file mode 100755 index 0000000..2ed2473 --- /dev/null +++ b/main/CMakeLists.txt @@ -0,0 +1,61 @@ +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 xml file & icon +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) + diff --git a/main/email.c b/main/email.c new file mode 100755 index 0000000..b7ac5dc --- /dev/null +++ b/main/email.c @@ -0,0 +1,1106 @@ +/* + * 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 composer_ug; + ui_gadget_h viewer_ug; +}; + +gboolean _b_setting_opened = false; +extern ui_gadget_h _g_mailbox_ug; + +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 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 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; + + 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(""); + + set_app_terminated(); + + email_engine_finalize_force(); + + int ret = e_dbus_shutdown(); + debug_log("ret: %d", ret); + + 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; + } + + 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); + 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 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 internal[10] = { 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_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 */ diff --git a/main/email.h b/main/email.h new file mode 100755 index 0000000..c90b12c --- /dev/null +++ b/main/email.h @@ -0,0 +1,26 @@ +/* + * 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 */ diff --git a/main/email.ini b/main/email.ini new file mode 100755 index 0000000..5abbace --- /dev/null +++ b/main/email.ini @@ -0,0 +1,2 @@ +[ProcessSetting] +BG_SCHEDULE=true diff --git a/main/org.tizen.email.png b/main/org.tizen.email.png Binary files differnew file mode 100755 index 0000000..2b9edb4 --- /dev/null +++ b/main/org.tizen.email.png diff --git a/main/org.tizen.email.xml b/main/org.tizen.email.xml new file mode 100755 index 0000000..91e9a11 --- /dev/null +++ b/main/org.tizen.email.xml @@ -0,0 +1,44 @@ +<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.email" version="0.0.1" 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> + <mime name="*/*"/> + </application-service> + <application-service> + <uri name="mailto"/> + </application-service> + </ui-application> +</manifest> diff --git a/packaging/org.tizen.email.spec b/packaging/org.tizen.email.spec index a7fb4ce..23993a8 100755 --- a/packaging/org.tizen.email.spec +++ b/packaging/org.tizen.email.spec @@ -12,6 +12,7 @@ License: Flora 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 @@ -40,10 +41,11 @@ BuildRequires: pkgconfig(mmutil-jpeg) BuildRequires: pkgconfig(mmutil-imgp) BuildRequires: pkgconfig(libmedia-service) BuildRequires: pkgconfig(libmedia-utils) +BuildRequires: pkgconfig(calendar) BuildRequires: pkgconfig(drm-client) -BuildRequires: pkgconfig(heynoti) -BuildRequires: pkgconfig(syspopup-caller) BuildRequires: pkgconfig(status) +BuildRequires: pkgconfig(capi-media-metadata-extractor) +BuildRequires: pkgconfig(capi-media-image-util) %description @@ -69,68 +71,80 @@ rm -rf %{buildroot} %post -/usr/bin/vconftool set -t int file/private/com.samsung.email/defaultaccount "1" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/slot_size "50" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/spam_rule_changed "0" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/threadlist "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/aol_sending_address "smtp.aol.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/aol_sending_port "587" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/aol_sending_ssl "0" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/aol_receiving_type "2" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/aol_receiving_address "imap.aol.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/aol_receiving_port "143" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/aol_receiving_ssl "0" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/gmail_sending_address "smtp.gmail.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/gmail_sending_port "465" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/gmail_sending_ssl "1" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/gmail_receiving_type "2" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/gmail_receiving_address "imap.gmail.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/gmail_receiving_port "993" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/gmail_receiving_ssl "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/yahoo_sending_address "smtp.mail.yahoo.co.kr" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/yahoo_sending_port "465" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/yahoo_sending_ssl "1" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/yahoo_receiving_type "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/yahoo_receiving_address "pop.mail.yahoo.co.kr" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/yahoo_receiving_port "995" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/yahoo_receiving_ssl "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/hotmail_sending_address "smtp.live.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/hotmail_sending_port "587" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/hotmail_sending_ssl "2" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/hotmail_receiving_type "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/hotmail_receiving_address "pop3.live.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/hotmail_receiving_port "995" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/hotmail_receiving_ssl "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/samsung_pop3_sending_address "165.213.73.235" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_pop3_sending_port "465" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_pop3_sending_ssl "1" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_pop3_receiving_type "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/samsung_pop3_receiving_address "165.213.73.235" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_pop3_receiving_port "995" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_pop3_receiving_ssl "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/samsung_imap4_sending_address "165.213.73.235" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_imap4_sending_port "465" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_imap4_sending_ssl "1" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_imap4_receiving_type "2" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/samsung_imap4_receiving_address "165.213.73.235" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_imap4_receiving_port "993" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_imap4_receiving_ssl "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/defaultaccount "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/slot_size "50" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/spam_rule_changed "0" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/threadlist "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/aol_sending_address "smtp.aol.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/aol_sending_port "587" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/aol_sending_ssl "0" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/aol_receiving_type "2" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/aol_receiving_address "imap.aol.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/aol_receiving_port "143" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/aol_receiving_ssl "0" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/gmail_sending_address "smtp.gmail.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/gmail_sending_port "465" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/gmail_sending_ssl "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/gmail_receiving_type "2" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/gmail_receiving_address "imap.gmail.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/gmail_receiving_port "993" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/gmail_receiving_ssl "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/yahoo_sending_address "smtp.mail.yahoo.co.kr" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/yahoo_sending_port "465" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/yahoo_sending_ssl "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/yahoo_receiving_type "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/yahoo_receiving_address "pop.mail.yahoo.co.kr" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/yahoo_receiving_port "995" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/yahoo_receiving_ssl "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/hotmail_sending_address "smtp.live.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/hotmail_sending_port "587" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/hotmail_sending_ssl "2" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/hotmail_receiving_type "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/hotmail_receiving_address "pop3.live.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/hotmail_receiving_port "995" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/hotmail_receiving_ssl "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/samsung_pop3_sending_address "165.213.73.235" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_pop3_sending_port "465" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_pop3_sending_ssl "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_pop3_receiving_type "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/samsung_pop3_receiving_address "165.213.73.235" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_pop3_receiving_port "995" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_pop3_receiving_ssl "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/samsung_imap4_sending_address "165.213.73.235" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_imap4_sending_port "465" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_imap4_sending_ssl "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_imap4_receiving_type "2" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/samsung_imap4_receiving_address "165.213.73.235" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_imap4_receiving_port "993" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_imap4_receiving_ssl "1" -g 6514 chown -R 5000:5000 /opt/apps/org.tizen.email/data mkdir -p /opt/ug/bin/ ln -sf /usr/bin/ug-client /opt/ug/bin/email-composer-efl + %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}/res/locale/*/LC_MESSAGES/* +%{_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 +%{_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 diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index d5434c9..d1723e1 100755 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -1,6 +1,6 @@ # for i18n -SET(POFILES en.po nl_NL.po de_DE.po zh_HK.po zh_CN.po ru_RU.po ko_KR.po zh_TW.po ja_JP.po es_ES.po el_GR.po it_IT.po tr_TR.po pt_PT.po fr_FR.po ar.po bg.po ca.po cs.po da.po en_US.po fi.po hi.po hr.po hu.po lt.po lv.po pl.po ro.po sk.po sl.po sr.po sv.po uk.po az.po en_PH.po es_US.po et.po eu.po fr_CA.po ga.po gl.po hy.po is.po ka.po kk.po mk.po pt_BR.po zh_SG.po) +SET(POFILES en.po nl_NL.po de_DE.po zh_HK.po zh_CN.po ru_RU.po ko_KR.po zh_TW.po ja_JP.po es_ES.po el_GR.po it_IT.po tr_TR.po pt_PT.po fr_FR.po ar.po bg.po ca.po cs.po da.po en_US.po fi.po hi.po hr.po hu.po lt.po lv.po pl.po ro.po sk.po sl.po sr.po sv.po uk.po az.po en_PH.po es_US.po et.po eu.po fr_CA.po ga.po gl.po hy.po is.po ka.po kk.po mk.po pt_BR.po zh_SG.po nb.po uz.po) #he.po id.po ms.po no.po th.po vi.po SET(MSGFMT "/usr/bin/msgfmt") @@ -19,9 +19,6 @@ FOREACH(pofile ${POFILES}) INSTALL(FILES ${moFile} DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME email.mo) - INSTALL(FILES ${moFile} - DESTINATION /opt/ug/res/locale/${lang}/LC_MESSAGES RENAME email.mo) - SET(moFiles ${moFiles} ${moFile}) ENDFOREACH(pofile) @@ -1390,3 +1390,60 @@ msgstr "كل d% دقائق" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "إضافة عنوان" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "بريد إلكتروني جديد" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "تحديد مجلد" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "التقاط فيديو" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "نقل لـ إلى" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "تحديد عنوان بريد إلكتروني" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "يتعذر البحث" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "المقروءة" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "انقر نقرا مزدوجا للانتقال إلى أعلى قوائم جهات الاتصال وقوائم البريد الإلكتروني ورسائل البريد الإلكتروني" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "تعديل الرد قبل الإرسال" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "إرسال الرد الآن" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "عدم إرسال الرد" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "التحقق من التوقيع" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "التحقق من التوقيع" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "يتعذر التحقق من التوقيع. لم يتم تثبيت المفتاح العام" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "التوقيع الرقمي الموجود في هذه الرسالة صالح وموثوق به" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "فك تشفير الرسالة" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "حفظ بريد إلكتروني" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "غير قادر على إنشاء مجلد" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "التقاط صورة" + @@ -1390,3 +1390,60 @@ msgstr "Hər %d dəqiqədən" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Ünvan əlavə edin" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Yeni epoçt" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Qovluq seç" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Video yaz" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Kimə sahəsinə keç" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "E-poçt ünvanını seç" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Axtarış mümkün deyil" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Oxu" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Kontakt siyahılarının, e-poçt siyahılarının və mesajların yuxarısına keçmək üçün iki dəfə vurun" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Göndərməzdən əvvəl cavabı redaktə et" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Cavabı indi göndər" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Cavab göndərmə" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "İmzanı yoxla" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "İmzanı yoxla" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "İmzanı yoxlamaq mümkün deyil. Ümumi açar quraşdırılmayıb" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Bu mesajın rəqəmsal imzası etibarlı və doğrudur" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Mesajı şifrlə" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-poçtu saxla" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Qovluq yaratmaq olmur" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Şəkil çək" + @@ -1390,3 +1390,60 @@ msgstr "През %d минути" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Добавяне на адрес" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Нов имейл" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Изберете папка" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Запис на видео" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Преместване в До" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Избор на email адрес" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Не може да се търси" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Прочетено" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Чукнете двукратно, за да отидете в горната част на списъците със записи, списъците с имейли и имейл съобщенията" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Редактиране на отговор преди изпращане" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Изпращане на отговор сега" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Не изпращай отговор" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Потвържд. подпис" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Потвърждаване на подпис" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Подписът не може да бъде проверен. Няма инсталиран публичен ключ" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Цифровият подпис на това съобщение е валиден и е надежден" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Дешифров. на съобщ." + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Записване на имейл" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Не може да се създаде папка" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Направи снимка" + @@ -1390,3 +1390,60 @@ msgstr "Cada %d minuts" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Afegir adreça" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nou correu electrònic" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleccioni carpeta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturar vídeo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Moure a Per a" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleccionar adreça de correu electrònic" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Error de cerca" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Llegir" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toqui dos cops per anar al principi de la llista de contactes, la llista de correus electrònics i els missatges de correu electrònic" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar la resposta abans d'enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar resposta ara" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "No enviar resposta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verifiqui signatura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verifiqui la signatura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Error en verificar la signatura. La clau pública no està instal·lada" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La signatura digital d'aquest missatge és vàlida i de confiança" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Desxifrar missatge" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Desar correu elect" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "No es pot crear la carpeta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Fer foto" + @@ -1390,3 +1390,60 @@ msgstr "Každých %d minut" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Přidat adresu" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nový e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Vybrat složku" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Nahrávání videoklipů" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Přesunout do Komu" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Vybrat e-mailovou adresu" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Chyba vyhledávání" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Přečteno" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Poklepáním přejdete na začátek seznamů kontaktů, seznamů e-mailů a e-mailových zpráv" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Upravit odpověď před odesláním" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Odeslat odpověď" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Neodeslat odpověď" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Ověřit podpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Ověřit podpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Podpis nelze ověřit. Veřejný klíč není nainstalován" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Digitální podpis této zprávy je platný a důvěryhodný" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dešifrovat zprávu" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Uložit e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Složku nelze vytvořit" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Vyfotografovat" + @@ -590,7 +590,7 @@ msgid "IDS_EMAIL_OPT_SIGN" msgstr "Signatur" msgid "IDS_EMAIL_OPT_ENCRYPT" -msgstr "Krypter" +msgstr "Kryptér" msgid "IDS_EMAIL_POP_AUTHENTICATION_FAILED" msgstr "Godkendelse mislykkedes" @@ -1310,13 +1310,13 @@ msgid "IDS_EMAIL_POP_CERTIFICATE_DOES_NOT_MATCH_EMAIL_ADDRESS" msgstr "Certifikat stemmer ikke overens med e-mail-adresse" msgid "IDS_EMAIL_BODY_ENCRYPT" -msgstr "Krypter" +msgstr "Kryptér" msgid "IDS_EMAIL_BODY_SIGN" msgstr "Signatur" msgid "IDS_EMAIL_POP_DECRYPTING_MESSAGE_ING" -msgstr "Dekrypterer meddelelse..." +msgstr "Dekrypterer meddelelse ..." msgid "IDS_EMAIL_BODY_1_MONTH_AGO" msgstr "1 måned siden" @@ -1390,3 +1390,60 @@ msgstr "Hvert %d minut" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Tilføj adresse" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Ny e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Vælg mappe" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Optag video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Flyt til Til" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Vælg e-mail-adresse" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Kan ikke søge" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Læs" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Tap to gange for at gå til toppen af listen over kontakter, liste over e-mails og e-mail-meddelelser" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Rediger svar før afsendelse" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Send svar nu" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Send ikke svar" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Godkend signatur" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Godkend signatur" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Kunne ikke bekræfte signatur. Offentlig nøgle er ikke installeret" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Den digitale signatur på denne meddelelse er gyldig og er troværdig" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dekryptér besked" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Gem e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Kunne ikke oprette mappe" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Tag billede" + diff --git a/po/de_DE.po b/po/de_DE.po index 7f6c84e..9d464cd 100755 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -1390,3 +1390,60 @@ msgstr "Alle %d Minuten" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adresse hinzufügen" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Neue E-Mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Ordner auswählen" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Video aufnehmen" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "In 'An' verschieben" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Wählen Sie eine E-Mail-Adresse aus" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Suche nicht möglich" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Gelesen" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Tippen Sie zweimal, um zum Anfang der Kontakt-, E-Mail-Liste und der E-Mails zu gelangen." + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Antwort vor dem Senden bearbeiten" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Antwort jetzt senden" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Antwort nicht senden" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Signatur überprüfen" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Signatur überprüfen" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Die Signatur kann nicht überprüft werden. Kein öffentlicher Schlüssel installiert." + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Die digitale Signatur dieser Nachricht ist gültig und vertrauenswürdig." + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Nachricht entschl." + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-Mail speichern" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Ordner kann nicht erstellt werden" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Foto aufnehmen" + diff --git a/po/el_GR.po b/po/el_GR.po index 835bd7d..b8c6824 100755 --- a/po/el_GR.po +++ b/po/el_GR.po @@ -1390,3 +1390,60 @@ msgstr "Κάθε %d λεπτά" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Προσθήκη διεύθυνσης" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Νέο email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Επιλογή φακέλου" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Λήψη βίντεο" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Μετακίνηση σε Προς" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Επιλογή διεύθυνσης email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Δεν είναι δυνατή η αναζήτηση" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Ανάγνωση" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Μεταβείτε στην κορυφή της λίστας επαφών, της λίστας email και των μηνυμάτων email με διπλό πάτημα" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Επεξεργασία απάντησης πριν από την αποστολή" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Αποστολή απάντησης τώρα" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Να μην γίνει αποστολή της απάντησης" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Επαλήθευση υπογραφής" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Επαλήθευση υπογραφής" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Δεν είναι δυνατή η επαλήθευση υπογραφής, Δεν έχει εγκατασταθεί δημόσιο κλειδί" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Η ψηφιακή υπογραφή αυτού του μηνύματος είναι έγκυρη και αξιόπιστη" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Αποκρυπτ. μηνύματος" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Αποθήκευση email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Δεν είναι δυνατή η δημιουργία φακέλου" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Λήψη φωτογραφίας" + @@ -1390,3 +1390,60 @@ msgstr "Every %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Add address" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "New email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Select folder" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capture video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Move to To" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Select email address" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Unable to search" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Read" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Double tap to go to the top of contacts lists, email lists and email messages" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Edit response before sending" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Send response now" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Do not send response" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verify signature" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verify signature" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Unable to verify signature. Public key is not installed" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "The digital signature on this message is valid and trusted" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decrypt message" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Save email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Unable to create folder" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Take picture" + diff --git a/po/en_PH.po b/po/en_PH.po index 337dd91..28f76f1 100755 --- a/po/en_PH.po +++ b/po/en_PH.po @@ -1390,3 +1390,60 @@ msgstr "Every %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Add address" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "New Email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Select folder" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capture video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Move to To" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Select Email address" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Unable to search" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Read" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Double tap to go to the top of contacts lists, Email lists and email messages" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Edit response before sending" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Send response now" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Do not send response" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verify signature" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verify signature" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Unable to verify signature. Public key is not installed" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "The digital signature on this message is valid and trusted" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decrypt message" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Save Email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Unable to create folder" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Take picture" + diff --git a/po/en_US.po b/po/en_US.po index f596e6a..0760963 100755 --- a/po/en_US.po +++ b/po/en_US.po @@ -1175,7 +1175,7 @@ msgid "IDS_EMAIL_BODY_ADD_ACCOUNT" msgstr "Add account" msgid "IDS_EMAIL_BODY_REMOVE_EVENT_FROM_CALENDAR" -msgstr "Remove event from Calendar" +msgstr "Delete event from Calendar" msgid "IDS_EMAIL_POP_GETTING_RECIPIENTS_CERTIFICATES_ING" msgstr "Getting recipients certificates..." @@ -1390,3 +1390,60 @@ msgstr "Every %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Add address" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "New email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Select folder" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capture video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Move to To" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Select email address" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Unable to search" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Read" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Double tap to go to the top of contacts lists, email lists and email messages" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Edit response before sending" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Send response now" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Do not send response" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verify signature" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verify signature" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Unable to verify signature. Public key is not installed" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "The digital signature on this message is valid and trusted" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decrypt message" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Save email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Unable to create folder" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Take picture" + diff --git a/po/es_ES.po b/po/es_ES.po index c530776..a297678 100755 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -1390,3 +1390,60 @@ msgstr "Cada %d minutos" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Añadir dirección" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Correo electrónico nuevo" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleccione carpeta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturar vídeo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mover a Para" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleccionar dirección de correo electrónico" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "No se puede buscar" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Leído" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toque dos veces para ir al principio de la lista de contactos, la lista de correos electrónicos y los mensajes de correo electrónico" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar respuesta antes de enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar respuesta ahora" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "No enviar respuesta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verifique la firma" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verifique la firma" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "No se puede verificar la firma. La clave pública no está instalada" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La firma digital de este mensaje es válida y de confianza" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Descifrar mensaje" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Guardar correo electrónico" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "No se puede crear carpeta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Hacer foto" + diff --git a/po/es_US.po b/po/es_US.po index dd13fd9..7822a65 100755 --- a/po/es_US.po +++ b/po/es_US.po @@ -590,7 +590,7 @@ msgid "IDS_EMAIL_OPT_SIGN" msgstr "Firma" msgid "IDS_EMAIL_OPT_ENCRYPT" -msgstr "Cifrar" +msgstr "Encriptar" msgid "IDS_EMAIL_POP_AUTHENTICATION_FAILED" msgstr "Error de autentificación" @@ -1136,7 +1136,7 @@ msgid "IDS_EMAIL_POP_UNABLE_TO_DECRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" msgstr "No se puede descifrar el mensaje. Certificado no instalado" msgid "IDS_EMAIL_POP_UNABLE_TO_SIGN_OR_ENCRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" -msgstr "No se puede firmar o cifrar el mensaje. Certificado no instalado" +msgstr "No se puede firmar o encriptar el mensaje. Certificado no instalado" msgid "IDS_EMAIL_POP_DOWNLOAD_MORE_DETAILS_TO_SHOW_S_MIME_MESSAGES_CONTINUE_Q" msgstr "Descargue más detalles para mostrar los mensajes S/MIME. ¿Continuar?" @@ -1310,7 +1310,7 @@ msgid "IDS_EMAIL_POP_CERTIFICATE_DOES_NOT_MATCH_EMAIL_ADDRESS" msgstr "El certificado no coincide con la dirección de correo" msgid "IDS_EMAIL_BODY_ENCRYPT" -msgstr "Cifrar" +msgstr "Encriptar" msgid "IDS_EMAIL_BODY_SIGN" msgstr "Firma" @@ -1390,3 +1390,60 @@ msgstr "Cada %d minutos" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Añadir dirección" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nuevo correo" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleccionar carpeta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturar video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mover a A" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleccionar dirección de correo" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "No se puede buscar" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Leídos" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Presione dos veces para ir al inicio de las listas de contactos, listas de correo y mensajes de correo" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar respuesta antes de enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar respuesta ahora" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "No enviar respuesta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificar firma" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificar firma" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "No es posible verificar la firma. El código público no está instalado" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La firma digital en este mensaje es válida y es de confianza" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Descifrar mensaje" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Guardar correo" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "No se puede crear la carpeta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Capturar imagen" + @@ -1390,3 +1390,60 @@ msgstr "Iga %d minuti järel" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Lisa aadress" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Uus e-kiri" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Vali kaust" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Salvesta video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Teisalda kausta Kellele" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Vali e-posti aadress" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Ei saa otsida" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Loe" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toksake kaks korda, et liikuda kontaktide loendi, e-kirjade loendi ja e-kirjade ülaossa" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Redigeeri vastust enne saatmist" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Saada vastus kohe" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ära saada vastust" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Kinnitage allkiri" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Kinnitage allkiri" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Allkirja ei saa kinnitada. Avalikku võtit pole installitud" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Selles sõnumis olev digiallkiri on kehtiv ja usaldusväärne" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dekrüpti sõnum" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Salvesta e-kiri" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Kausta ei saa luua" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Pildista" + @@ -1390,3 +1390,60 @@ msgstr "%d minuturo" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Gehitu helbidea" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Mezu elektroniko berria" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Hautatu karpeta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Bideoa grabatu" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mugitu Nori-ra" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Aukeratu helbide elektronikoa" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Ezin da bilatu" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Irakurrita" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Ukitu bi aldiz kontaktu zerrendaren, mezu elektronikoen zerrendaren eta mezu elektronikoen goiko aldera joateko" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editatu erantzuna bidali aurretik" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Bidali erantzuna orain" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ez bidali erantzunik" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Egiaztatu sinadura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Egiaztatu sinadura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Ezin da sinadura egiaztatu. Gako publikoa ez da instalatu" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Mezu honetako sinadura digitala baliogarria eta fidagarria da" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Desenkriptatu mezua" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Gorde mezu elekt." + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Ezin da karpeta sortu" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Atera argazkia" + @@ -1390,3 +1390,60 @@ msgstr "%d minuutin välein" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Lisää osoite" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Uusi sähköposti" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Valitse kansio" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Kuvaa video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Siirrä kohteeseen" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Valitse sähköpostiosoite" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Ei voi hakea" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lue" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Siirry yhteystietoluetteloiden, sähköpostiluetteloiden ja sähköpostiviestien alkuun kaksoisnapauttamalla" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Muokkaa vastausta ennen lähettämistä" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Lähetä vastaus nyt" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Älä lähetä vastausta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Tarkista allekirj." + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Tarkista allekirjoitus" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Allekirjoitusta ei voi tarkistaa. Julkista avainta ei ole asennettu" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Tässä viestissä oleva digitaalinen allekirjoitus kelpaa ja on luotettu" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Poista salaus" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Tallenna sähköposti" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Kansion luonti epäonnistui" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Ota kuva" + diff --git a/po/fr_CA.po b/po/fr_CA.po index 4e0a579..0742861 100755 --- a/po/fr_CA.po +++ b/po/fr_CA.po @@ -1390,3 +1390,60 @@ msgstr "Toutes les %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Ajouter l'adresse" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nouveau courriel" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Sélectionner dossier" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Saisir une vidéo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Déplacer vers A" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Sélectionner une adresse courriel" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Impossible de rechercher" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lu" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Touchez deux fois pour revenir en haut des listes de contacts, des listes de courriels et des courriels" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Modifier la réponse avant l'envoi" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Envoyer la réponse maintenant" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ne pas envoyer la réponse" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Vérifier signature" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Vérifier la signature" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Impossible de vérifier la signature. La clé publique n'est pas installée" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La signature numérique sur ce message est valide et fiable" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Décrypter le message" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Enregistrer courriel" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Impossible de créer un dossier" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Prendre une photo" + diff --git a/po/fr_FR.po b/po/fr_FR.po index 52155ed..bb863bd 100755 --- a/po/fr_FR.po +++ b/po/fr_FR.po @@ -1390,3 +1390,60 @@ msgstr "Toutes les %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Ajouter adresse" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nouvel e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Sélectionner dossier" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturer une vidéo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Déplacer dans A" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Sélectionner une adresse e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Impossible de rechercher" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lu" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Appuyez deux fois pour revenir en haut des listes de contacts, des listes d'e-mails et des e-mails" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Modifier la réponse avant l'envoi" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Envoyer la réponse maintenant" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ne pas envoyer la réponse" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Vérifier signature" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Vérifier la signature" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Impossible de vérifier la signature. La clé publique n'est pas installée" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La signature numérique sur ce message est valide et fiable" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Décrypter le message" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Enregistrer e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Création de fichier impossible" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Prendre une photo" + @@ -1390,3 +1390,60 @@ msgstr "Gach %d nóiméad" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Cuir seoladh leis" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "R-phost nua" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Roghnaigh fillteán" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Gabh físeán" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Bog chuig Chuig" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Roghnaigh seoladh r-phoist" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Ní féidir cuardach" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Léite" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Déthapáil le dhul chuig barr an liosta teagmhálaithe, liostaí r-phoist, agus teachtaireachtaí r-phoist" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Cuir an fhreagairt in eagar roimh seoladh" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Seol freagairt anois" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ná seol freagairt" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Fíoraigh an síniú" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Fíoraigh an síniú" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Ní féidir an síniú a fhíordheimhniú. Níl an eochair phoiblí suiteáilte" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Tá an síniú digiteach ar an teachtaireacht seo bailí agus iontaofa" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Díchriptigh tcht" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Sábháil r-phost" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Ní féidir fillteán a dhéanamh" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Glac pictiúr" + @@ -1390,3 +1390,60 @@ msgstr "Cada %d minutos" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Engadir enderezo" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Correo electrónico novo" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleccionar carpeta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturar Vídeo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mover a Para" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleccionar enderezo de correo electrónico" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Non se pode buscar" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Ler" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toca dúas veces para ir á parte superior das listas de contactos, das listas de correos electrónicos e das mensaxes de correo electrónico" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar resposta antes de enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar resposta agora" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Non enviar resposta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificar sinatura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificar sinatura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Non se pode verificar a sinatura. A clave pública non está instalada" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "A sinatura dixital desta mensaxe é válida e fiable" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Descifrar mensaxe" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Gardar correo e." + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Non se pode crear a carpeta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Facer unha foto" + @@ -1010,7 +1010,7 @@ msgid "IDS_EMAIL_OPT_RECIPIENT_HZ_TO_A" msgstr "प्राप्तकर्ता (Z से A)" msgid "IDS_EMAIL_HEADER_SEARCH_SHAREPOINT" -msgstr "SharePoint खोजें" +msgstr "शेयरपॉइंट्स खोजें" msgid "IDS_EMAIL_BODY_ENTER_PATH_OF_WINDOWS_SHAREPOINT_SERVICES_OR_WINDOWS_FILE_SHARE_HUNC_TO_ACCESS_DOCUMENTS_REMOTELY" msgstr "दस्तावेज़ों को दूरस्थ रूप से ऍक्सेस करने के लिए विंडोज़ SharePoint सेवाएँ या विंडोज़ फ़ाइल साझाकरण (UNC) का पथ दर्ज करें" @@ -1390,3 +1390,60 @@ msgstr "प्रत्येक %d मिनट" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "पता ज़ोडे" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "नयी ईमेल" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "फ़ोल्डर चुनें" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "वीडियो कैप्चर करें" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "प्रति में ले जाएँ" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "ईमेल पता चुनें" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "खोजने में अक्षम" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "पठित" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "संपर्क सूचियों, ईमेल सूचियों, और ईमेल संदेशों के शीर्ष पर जाने के लिए डबल टैप करें" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "भेजने से पहले प्रतिक्रिया संपादित करें" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "अभी प्रतिक्रिया भेजें" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "प्रतिक्रिया नहीं भेजें" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "हस्ताक्षर सत्यापित करें" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "हस्ताक्षर सत्यापित करें" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "हस्ताक्षर सत्यापित करने में अक्षम। सार्वजनिक कुंजी स्थापित नहीं की गई" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "इस संदेश पर डिज़िटल हस्ताक्षर मान्य और विश्वयनीय है" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "संदेश डिक्रिप्ट करें" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "ईमेल सुरक्षित" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "फ़ोल्डर बनाने में अक्षम" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "तस्वीर लें" + @@ -1390,3 +1390,60 @@ msgstr "Svakih %d minuta" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Dodaj adresu" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Novi email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Odaberi mapu" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Snimanje videa" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Premjesti u Za" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Odaberite e-mail adresu" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Traženje nemoguće" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Pročitano" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dvaput dodirnite za odlazak na vrh popisa kontakata, popisa emailova i email poruka" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Uredi odgovor prije slanja" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Pošalji odgovor" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nemoj poslati odgovor" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Provjeri potpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Provjeri potpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nemoguće provjeriti potpis. Javni ključ nije instaliran" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Digitalni potpis u ovoj poruci je valjan i pouzdan" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dešifriraj poruku" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Spremi email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Nemoguće napraviti mapu" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Fotografiraj" + @@ -89,7 +89,7 @@ msgid "IDS_EMAIL_BODY_DOWNLOAD_FULL_MESSAGE" msgstr "Egész üzenet letöltése" msgid "IDS_EMAIL_BODY_GENERAL_SETTINGS" -msgstr "Ált. beállítások" +msgstr "Általános beállítások" msgid "IDS_EMAIL_BODY_TENTATIVE_C_PS" msgstr "Feltételes: %s" @@ -1390,3 +1390,60 @@ msgstr "%d percenként" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Cím hozzáadása" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Új e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Mappa kiválasztása" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Videó rögzítése" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Áthelyezés a Címzett mezőbe" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Válasszon e-mail címet" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Nem sikerült keresni" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Elolvasva" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dupla érintéssel a névjegyzékek, e-mail listák, illetve e-mail üzenetek tetejére ugorhat" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Válasz szerkesztése küldés előtt" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Válasz küldése most" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nem küld választ" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Aláírás ellenőrzése" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Aláírás ellenőrzése" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nem lehet hitelesíteni az aláírást. Nincs telepítve a nyilvános kulcs" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Az üzenet digitális aláírása érvényes és megbízható" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Üzenet dekódolása" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-mail mentése" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Mappa létrehozása sikertelen" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Kép készítése" + @@ -1390,3 +1390,60 @@ msgstr "Յուրաքանչյուր %d րոպե" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Ավելացնել հասցե" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Նոր էլ. փոստ" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Ընտրել թղթապանակ" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Տսհլվկ նկրլ" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Տեղափոխել դեպի Ում" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Ընտրել էլփոստի հասցե" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Անհնար է որոնել" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Ընթերցում" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Կրկնակի թակեք՝ կոնտակտների ցանկերի վերնամաս, էլ-նամակների ցանկեր և էլեկտրոնային հաղորդագրություններ գնալու համար" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Խմբագրել պատասխանը նախքան ուղարկելը" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Ուղարկել պատասխանը հիմա" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Պատասխան չուղարկել" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Ստուգել ստորագրթյուն" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Ստուգել ստորագրությունը" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Անհնար է ստուգել ստորագրությունը: Բաց բանալին տեղադրված չէ" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Այս հաղորդագրության թվային ստորագրությունը վավեր և վստահելի է" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Վերծանել հղգրթյունը" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Պահպանել էլ-նամակը" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Անհնար է ստեղծել ծրար" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Լուսանկարել" + @@ -1390,3 +1390,60 @@ msgstr "Á %d mínútna fresti" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Bæta við heimilisfangi" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nýr póstur" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Velja möppu" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Taka upp vídeó" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Færa í Til" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Veldu netfang" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Mistókst að leita" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lesið" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Tvípikkaðu til að fara efst í tengiliðalista, lista yfir tölvupóst og í meginmáli" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Breyta svari fyrir sendingu" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Senda svar núna" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ekki senda svar" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Staðf. undirskrift" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Staðfesta undirskrift" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Mistókst að sannvotta undirritun. Almennur lykill er ekki uppsettur" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Stafræn undirskrift þessa skeytis er gild og henni er treyst" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Afkóða skilaboð" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Vista netfang" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Ekki tókst að búa til möppu" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Taka mynd" + diff --git a/po/it_IT.po b/po/it_IT.po index 51196bd..2ce4b6c 100755 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -878,7 +878,7 @@ msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_FILE" msgstr "Impossibile allegare file" msgid "IDS_EMAIL_OPT_CALENDAR" -msgstr "Agenda" +msgstr "Calendario" msgid "IDS_EMAIL_OPT_MEMO" msgstr "Promemoria" @@ -1390,3 +1390,60 @@ msgstr "Ogni %d minuti" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Aggiungi indirizzo" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nuova e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleziona cartella" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Registra video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Sposta in A" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleziona indirizzo e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Ricerca impossibile" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Letto" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toccate due volte per tornare all'inizio degli elenchi contatti, degli elenchi e-mail e dei messaggi e-mail" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Modifica risposta prima dell'invio" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Invia risposta subito" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Non inviare risposta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verifica firma" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verifica firma" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Impossibile verificare la firma. La chiave pubblica non è installata" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La firma digitale su questo messaggio è valida e attendibile" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decrittografa msg" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Salva e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Impossibile creare cartella" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Scatta foto" + diff --git a/po/ja_JP.po b/po/ja_JP.po index 4962a8e..309a1c1 100755 --- a/po/ja_JP.po +++ b/po/ja_JP.po @@ -140,7 +140,7 @@ msgid "IDS_EMAIL_BODY_ACCOUNT_NAME" msgstr "アカウント名" msgid "IDS_EMAIL_BODY_ATTACHMENTS" -msgstr "ファイル添付" +msgstr "添付" msgid "IDS_EMAIL_BODY_FROM_C" msgstr "発信元:" @@ -458,7 +458,7 @@ msgid "IDS_EMAIL_BODY_FROM" msgstr "送信元" msgid "IDS_EMAIL_BODY_NO_ADDRESS" -msgstr "アドレスはありません" +msgstr "アドレスがありません。" msgid "IDS_EMAIL_OPT_RECORD_SOUND" msgstr "ボイスレコーダー起動" @@ -983,7 +983,7 @@ msgid "IDS_EMAIL_OPT_MEETING_REQUEST" msgstr "ミーティングリクエスト" msgid "IDS_EMAIL_OPT_ATTACHMENTS" -msgstr "ファイル添付" +msgstr "添付" msgid "IDS_EMAIL_HEADER_FOLDERS" msgstr "フォルダ" @@ -1390,3 +1390,60 @@ msgstr "%d分ごと" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "アドレス追加" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "新規Eメール" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "フォルダ選択" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "動画撮影" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "宛先に移動" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Eメールアドレスを選択" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "検索できません。" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "既読" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "連絡先リスト、EメールリストおよびEメールメッセージのトップに移動するには、ダブルタップしてください。" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "送信前に返信内容を編集" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "今すぐ返信" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "返信しない" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "署名を認証" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "署名を認証" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "署名を認証できません。公開キーがインストールされていません。" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "このメッセージのデジタル署名は有効かつ、信頼できます。" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "メッセージを復号" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Eメールを保存" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "フォルダを作成できません。" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "カメラ撮影" + @@ -365,7 +365,7 @@ msgid "IDS_EMAIL_OPT_SENDER" msgstr "გამგზავნი" msgid "IDS_EMAIL_OPT_SEND_EMAIL" -msgstr "ელ.წერილის გაგზავნა" +msgstr "ელ. წერილის გაგზავნა" msgid "IDS_EMAIL_OPT_UPDATE_EXISTING" msgstr "არსებულის განახლება" @@ -476,7 +476,7 @@ msgid "IDS_EMAIL_OPT_CHANGE_EMAIL_ADDRESS_ABB" msgstr "ელ.ფოსტის მისამართის შეცვლა" msgid "IDS_EMAIL_OPT_CLIPBOARD" -msgstr "ბუფერული მეხსიერება" +msgstr "ბუფერული მეხს." msgid "IDS_EMAIL_OPT_VIEW_CONTACT_DETAILS" msgstr "საკონტაქტო მონაცემების დათვალიერება" @@ -1390,3 +1390,60 @@ msgstr "ყოველ %d წუთში" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "მისამართის დამატება" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "ახალი ელ.წერილი" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "აირჩიეთ საქაღალდე" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "ვიდეოს გადაღება" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "გადასვლა ველზე ”ვის”" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "აირჩიეთ ელ.ფოსტის მისამართი" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "ვერ იძებნება" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "წაკითხვა" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "ორჯერ შეხებით გადახვალთ კონტაქტების სიების თავში, ელფოსტების სიებში და ელფოსტის წერილებში" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "შეასწორეთ პასუხი, სანამ გაგზავნით" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "გაგზავნეთ პასუხი ახლა" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "არ გაგზავნოთ პასუხი" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "ხელმოწერის დამოწმება" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "ხელმოწერის დამოწმება" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "ხელმოწერა ვერ დადასტურდა. საჯარო კოდი არ არის დაინსტალირებული" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "ამ წერილში ციფრული ხელმოწერა ქმედითი და სანდოა" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "წერილის გაშიფვრა" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "ელ.წერილის შენახვა" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "ვერ შექმნით საქაღალდეს" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "სურათის გადაღება" + @@ -1390,3 +1390,60 @@ msgstr "Әр %d минут" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Мекенжайды қосу" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Жаңа email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Қалта таңдау" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Видео бөгеліс" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "'Кімге' жолына ауыстыру" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Электрондық пошта мекенжайын таңдаңыз" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Іздеу мүмкін емес" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Оқу" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Контактілер тізімінің, электрондық пошта тізімінің және электрондық пошта хабарларының жоғарғы жағына өту үшін екі рет түртіңіз" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Жібермес бұрын жауапты өзгерту" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Қазір жауап жіберу" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Жауап жібермеу" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Қолтаңбаны тексеру" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Қолтаңбаны тексеру" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Қолтаңбаны тексеру мүмкін емес. Ашық кілт орнатылмаған" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Бұл хабардағы сандық қолтаңба жарамды әрі сенімді" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Хабарды шифрсыздан-у" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Элек. хабар сақтау" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Қалта құрылмады" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Суретке түсіру" + diff --git a/po/ko_KR.po b/po/ko_KR.po index 1488f57..607f15d 100755 --- a/po/ko_KR.po +++ b/po/ko_KR.po @@ -923,10 +923,10 @@ msgid "IDS_EMAIL_OPT_DATE_HOLDEST" msgstr "날짜(오래된순)" msgid "IDS_EMAIL_OPT_SENDER_HA_TO_Z" -msgstr "발신인(오름차순)" +msgstr "발신인(가나다순)" msgid "IDS_EMAIL_OPT_SENDER_HZ_TO_A" -msgstr "발신인(내림차순)" +msgstr "발신인(가나다역순)" msgid "IDS_EMAIL_OPT_READ_UNREAD" msgstr "읽음/읽지 않음" @@ -1004,10 +1004,10 @@ msgid "IDS_EMAIL_OPT_ALL" msgstr "전체" msgid "IDS_EMAIL_OPT_RECIPIENT_HA_TO_Z" -msgstr "받는 사람(오름차순)" +msgstr "받는 사람(가나다순)" msgid "IDS_EMAIL_OPT_RECIPIENT_HZ_TO_A" -msgstr "받는 사람(내림차순)" +msgstr "받는 사람(가나다역순)" msgid "IDS_EMAIL_HEADER_SEARCH_SHAREPOINT" msgstr "SharePoint 검색" @@ -1390,3 +1390,60 @@ msgstr "%d분 마다" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "주소 추가" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "새 이메일" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "폴더 선택" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "동영상 촬영" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "수신인으로 이동" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "이메일 주소를 선택하세요" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "검색할 수 없습니다" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "읽음" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "연락처 목록, 이메일 목록 및 이메일 메시지의 맨 위로 이동하려면 두 번 누르세요" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "전송하기 전에 응답 편집" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "지금 응답 전송" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "응답 보내지 않음" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "서명 확인" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "서명 확인" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "서명을 인증할 수 없습니다. 공개키가 설치되어 있지 않습니다" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "이 메시지의 전자 서명은 유효하며 신뢰할 수 있습니다" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "메시지 암호화 해제" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "이메일 저장" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "폴더를 생성할 수 없습니다" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "사진 촬영" + @@ -1390,3 +1390,60 @@ msgstr "Kas %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Pridėti adresą" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Naujas el. laiškas" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Pasirinkite aplanką" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Filmuoti vaizdo įrašą" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Perkelti į „Kam“" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Pasirinkti el. pašto adresą" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Neįmanoma ieškoti" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Skaityti" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Bakstelėkite dukart, kad pereitumėte į adresatų sąrašo, el. laiškų sąrašo ir el. laiškų pradžią" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Redaguoti atsakymą prieš siunčiant" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Siųsti atsakymą dabar" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nesiųsti atsakymo" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Patvirtinti parašą" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Patvirtinti parašą" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Neįmanoma patvirtinti parašo. Viešasis raktas neįdiegtas" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Skaitmeninis parašas šioje žinutėje yra galiojantis ir patikimas" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Iššifruoti žinutę" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Išsaugoti el. laišką" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Neįmanoma sukurti aplanko" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Fotografuoti" + @@ -1390,3 +1390,60 @@ msgstr "Ik pēc %d minūtēm" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adreses pievienošana" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Jauna e-pasta ziņa" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Mapes izvēle" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Uzņemt videoklipu" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Pārvietot uz Kam" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Izvēlēties e-pasta adresi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Nevar meklēt" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lasīta" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Veiciet dubultskārienu, lai dotos uz kontaktu saraksta, e-pastu saraksta un e-pasta ziņu saraksta sākumu" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Rediģēt atbildi pirms sūtīšanas" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Sūtīt atbildi tagad" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nesūtīt atbildi" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificēt parakstu" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificēt parakstu" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nevar verificēt parakstu. Nav instalēta publiskā atslēga" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Šīs ziņas ciparparaksts ir derīgs un uzticams" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Atšifrēt ziņu" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Saglabāt e-pastu" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Nevar izveidot mapi" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Fotografēt" + @@ -1390,3 +1390,60 @@ msgstr "На %d минути" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Додај адреса" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Нова email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Одбери папка" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Сними видео" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Премести во До" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Изберете адреса за email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Не може да се пребара" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Читање" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Допрете двапати да одите најгоре во листата контакти, листата е-пошта и пораки" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Измени одговор пред праќање" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Прати одговор веднаш" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Не праќај одговор" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Потврди потпис" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Потврди потпис" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Не може да се потврди потписот. Не е инсталиран јавен клуч" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Дигиталниот потпис на оваа порака е важечки и доверлив" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Дешифрирај порака" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Сочувај email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Не може да се направи папка" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Сликај" + diff --git a/po/nb.po b/po/nb.po new file mode 100755 index 0000000..31fb396 --- /dev/null +++ b/po/nb.po @@ -0,0 +1,1449 @@ +msgid "IDS_EMAIL_BODY_ACCOUNT" +msgstr "Konto" + +msgid "IDS_EMAIL_BODY_B" +msgstr "B" + +msgid "IDS_EMAIL_BODY_BYTE" +msgstr "Byte" + +msgid "IDS_EMAIL_BODY_GB" +msgstr "GB" + +msgid "IDS_EMAIL_BODY_IMAP4_PORT" +msgstr "IMAP4-port" + +msgid "IDS_EMAIL_BODY_INCOMING" +msgstr "Innkommende" + +msgid "IDS_EMAIL_BODY_KB" +msgstr "KB" + +msgid "IDS_EMAIL_BODY_MB" +msgstr "MB" + +msgid "IDS_EMAIL_BODY_OUTGOING" +msgstr "Utgående" + +msgid "IDS_EMAIL_BODY_POP3_PORT" +msgstr "POP3-port" + +msgid "IDS_EMAIL_BODY_YOUR_NAME" +msgstr "Ditt navn" + +msgid "IDS_EMAIL_OPT_COPY" +msgstr "Kopier" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE" +msgstr "Kopier bilde" + +msgid "IDS_EMAIL_OPT_CUT" +msgstr "Klipp ut" + +msgid "IDS_EMAIL_OPT_PASTE" +msgstr "Lim inn" + +msgid "IDS_EMAIL_OPT_SAVE_IMAGE" +msgstr "Lagre bilde" + +msgid "IDS_EMAIL_OPT_SELECT" +msgstr "Velg" + +msgid "IDS_EMAIL_OPT_SELECT_ALL" +msgstr "Merk alt" + +msgid "IDS_EMAIL_OPT_SEND_IMAGE_VIA_MESSAGING" +msgstr "Send bilde via Meldinger" + +msgid "IDS_EMAIL_POP_FILE_NAME_EMPTY" +msgstr "Filnavn tomt" + +msgid "IDS_EMAIL_POP_INCORRECT_USER_NAME_OR_PASSWORD" +msgstr "Feil brukernavn eller passord" + +msgid "IDS_EMAIL_POP_SERVER_NOT_AVAILABLE" +msgstr "Server ikke tilgjengelig" + +msgid "IDS_EMAIL_OPT_DOWNLOAD_MESSAGE" +msgstr "Last ned melding" + +msgid "IDS_EMAIL_OPT_TENTATIVE" +msgstr "Foreløpig" + +msgid "IDS_EMAIL_POP_TRY_AGAIN_IN_PD_MINUTES" +msgstr "Prøv igjen om %d minutter" + +msgid "IDS_EMAIL_POP_NO_EMAIL_ADDRESS" +msgstr "Mangler e-postadresse" + +msgid "IDS_EMAIL_BODY_COMPLETE" +msgstr "Fullført" + +msgid "IDS_EMAIL_BODY_ACCEPTED_C_PS" +msgstr "Godkjent: %s" + +msgid "IDS_EMAIL_BODY_DECLINED_C_PS" +msgstr "Avvist: %s" + +msgid "IDS_EMAIL_BODY_DOWNLOAD_FULL_MESSAGE" +msgstr "Last ned fullstendig melding" + +msgid "IDS_EMAIL_BODY_GENERAL_SETTINGS" +msgstr "Generelle innstillinger" + +msgid "IDS_EMAIL_BODY_TENTATIVE_C_PS" +msgstr "Foreløpig: %s" + +msgid "IDS_EMAIL_BODY_WHEN_C_PS" +msgstr "Når: %s" + +msgid "IDS_EMAIL_BODY_WHERE_C_PS" +msgstr "Hvor: %s" + +msgid "IDS_EMAIL_BUTTON_DECLINE_ABB" +msgstr "Avslå" + +msgid "IDS_EMAIL_BODY_ORIGINAL_MESSAGE" +msgstr "Opprinnelig melding" + +msgid "IDS_EMAIL_HEADER_ACCOUNT_SETTINGS" +msgstr "Kontoinnstillinger" + +msgid "IDS_EMAIL_OPT_BLOCK" +msgstr "Blokker" + +msgid "IDS_EMAIL_OPT_MARK_AS_READ" +msgstr "Marker som lest" + +msgid "IDS_EMAIL_OPT_MARK_AS_UNREAD" +msgstr "Marker som ulest" + +msgid "IDS_EMAIL_OPT_OTHERS" +msgstr "Andre" + +msgid "IDS_EMAIL_OPT_UNREAD" +msgstr "Ulest" + +msgid "IDS_EMAIL_SK_COMPOSE" +msgstr "Opprett" + +msgid "IDS_EMAIL_HEADER_DOWNLOAD_FAILED" +msgstr "Nedlasting mislyktes" + +msgid "IDS_EMAIL_OPT_ADD_TO_CONTACT" +msgstr "Legg til kontakt" + +msgid "IDS_EMAIL_OPT_VOICE_CALL" +msgstr "Taleanrop" + +msgid "IDS_EMAIL_BODY_ACCOUNT_NAME" +msgstr "Kontonavn" + +msgid "IDS_EMAIL_BODY_ATTACHMENTS" +msgstr "Vedlegg" + +msgid "IDS_EMAIL_BODY_FROM_C" +msgstr "Fra:" + +msgid "IDS_EMAIL_BODY_IMAP4_SERVER" +msgstr "IMAP4-server" + +msgid "IDS_EMAIL_BODY_INCLUDES" +msgstr "Inkluderer" + +msgid "IDS_EMAIL_BODY_INCOMING_PORT" +msgstr "Innkommende port" + +msgid "IDS_EMAIL_BODY_INCOMING_SERVER" +msgstr "Innkommende server" + +msgid "IDS_EMAIL_BODY_IN_PD_MINUTES" +msgstr "Om %d minutter" + +msgid "IDS_EMAIL_BODY_KEEP_IN_SERVER" +msgstr "Behold på server" + +msgid "IDS_EMAIL_BODY_NO_TEXT" +msgstr "Ingen tekst" + +msgid "IDS_EMAIL_BODY_OUTGOING_PORT" +msgstr "Utgående port" + +msgid "IDS_EMAIL_BODY_OUTGOING_SERVER" +msgstr "Utgående server" + +msgid "IDS_EMAIL_BODY_PD_EMAILS" +msgstr "%d e-poster" + +msgid "IDS_EMAIL_BODY_POP3_SERVER" +msgstr "POP3-server" + +msgid "IDS_EMAIL_BODY_RECENT" +msgstr "Nylige" + +msgid "IDS_EMAIL_BODY_RETRIEVING_OPTIONS" +msgstr "Hentealternativer" + +msgid "IDS_EMAIL_BODY_RE_C" +msgstr "SV:" + +msgid "IDS_EMAIL_BODY_SENT_C" +msgstr "Sendt:" + +msgid "IDS_EMAIL_BODY_SENT_FROM_SAMSUNG_MOBILE" +msgstr "Sendt fra en Samsung Mobil" + +msgid "IDS_EMAIL_BODY_USER_PASSWORD" +msgstr "Brukerpassord" + +msgid "IDS_EMAIL_HEADER_EDIT_RULES" +msgstr "Rediger regler" + +msgid "IDS_EMAIL_HEADER_EMAIL_SETTINGS" +msgstr "E-postinnst." + +msgid "IDS_EMAIL_HEADER_MAILBOXES" +msgstr "Postbokser" + +msgid "IDS_EMAIL_POP_ALERT" +msgstr "Varsling" + +msgid "IDS_EMAIL_POP_FILE_ALREADY_EXISTS" +msgstr "Filen finnes allerede" + +msgid "IDS_EMAIL_POP_NO_SENDER" +msgstr "Ingen avsender" + +msgid "IDS_EMAIL_POP_SUCCEEDED" +msgstr "Fullført" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_MAXIMUM_NUMBER_OF_FILES_IS_PD" +msgstr "Kan ikke legge ved. Maksimalt antall filer er %d" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB" +msgstr "Kan ikke legge ved. Maksimal filstørrelse er %d kB" + +msgid "IDS_EMAIL_POP_VALIDATION_FAILED" +msgstr "Validering mislyktes" + +msgid "IDS_EMAIL_SK_REPLY_ALL" +msgstr "Svar alle" + +msgid "IDS_EMAIL_BODY_1_ITEM" +msgstr "1 element" + +msgid "IDS_EMAIL_BODY_ADD_MY_NAMECARD" +msgstr "Legg til mitt visittkort" + +msgid "IDS_EMAIL_BODY_ADD_SIGNATURE" +msgstr "Legg til signatur" + +msgid "IDS_EMAIL_BODY_ALL_EMAILS" +msgstr "Alle e-postmeldinger" + +msgid "IDS_EMAIL_BODY_ALWAYS_BCC_MYSELF" +msgstr "Alltid send blindkopi til meg selv" + +msgid "IDS_EMAIL_BODY_BCC" +msgstr "Bko" + +msgid "IDS_EMAIL_BODY_BLOCK_EMAILS" +msgstr "Blokker e-poster" + +msgid "IDS_EMAIL_BODY_BODY" +msgstr "Brødtekst" + +msgid "IDS_EMAIL_BODY_CC" +msgstr "Kopi" + +msgid "IDS_EMAIL_BODY_CC_BCC" +msgstr "Kopi/Blindkopi" + +msgid "IDS_EMAIL_BODY_CHECK_INTERVAL" +msgstr "Sjekk intervall" + +msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT" +msgstr "Standard konto" + +msgid "IDS_EMAIL_BODY_DRAFTS" +msgstr "Utkast" + +msgid "IDS_EMAIL_BODY_EMAIL_ACCOUNTS" +msgstr "E-postkontoer" + +msgid "IDS_EMAIL_BODY_END_TIME" +msgstr "Sluttid" + +msgid "IDS_EMAIL_BODY_ENTIRE_EMAIL" +msgstr "Hel e-post" + +msgid "IDS_EMAIL_BODY_EXACTLY_THE_SAME_AS" +msgstr "Eksakt samme som" + +msgid "IDS_EMAIL_BODY_EXAMPLE" +msgstr "Eksempel" + +msgid "IDS_EMAIL_BODY_FROM_M_SENDER" +msgstr "Fra:" + +msgid "IDS_EMAIL_BODY_INBOX" +msgstr "Innboks" + +msgid "IDS_EMAIL_BODY_INCLUDE" +msgstr "Ta med" + +msgid "IDS_EMAIL_BODY_MATCH_CRITERIA" +msgstr "Avvisningskriterier" + +msgid "IDS_EMAIL_BODY_NOT_USED" +msgstr "Brukes ikke" + +msgid "IDS_EMAIL_BODY_NO_ACCOUNTS" +msgstr "Ingen kontoer" + +msgid "IDS_EMAIL_BODY_PD_DAYS" +msgstr "%d dager" + +msgid "IDS_EMAIL_BODY_PD_ITEMS" +msgstr "%d elementer" + +msgid "IDS_EMAIL_BODY_PRIORITY" +msgstr "Prioritet" + +msgid "IDS_EMAIL_BODY_RECEIVING_OPTIONS" +msgstr "Mottaksalternativer" + +msgid "IDS_EMAIL_BODY_SECURE_CONNECTION" +msgstr "Sikker tilkobling" + +msgid "IDS_EMAIL_BODY_SENDING_OPTIONS" +msgstr "Sendingsalternativer" + +msgid "IDS_EMAIL_BODY_SENTBOX" +msgstr "Sendte meldinger" + +msgid "IDS_EMAIL_BODY_SERVER_URL" +msgstr "Server-URL" + +msgid "IDS_EMAIL_BODY_SIGNATURE" +msgstr "Signatur" + +msgid "IDS_EMAIL_BODY_SPAMBOX" +msgstr "Søppelpost" + +msgid "IDS_EMAIL_BODY_START_TIME" +msgstr "Starttid" + +msgid "IDS_EMAIL_BODY_TRASH" +msgstr "Søppel" + +msgid "IDS_EMAIL_BODY_WITHOUT_ATTACHMENTS" +msgstr "Uten vedlegg" + +msgid "IDS_EMAIL_BUTTON_GROUP" +msgstr "Gruppe" + +msgid "IDS_EMAIL_HEADER_ADD_RULES" +msgstr "Legg til regler" + +msgid "IDS_EMAIL_OPT_ATTACH_ITEMS" +msgstr "Legg ved elementer" + +msgid "IDS_EMAIL_OPT_EXCHANGE" +msgstr "Exchange" + +msgid "IDS_EMAIL_OPT_FILE" +msgstr "Fil" + +msgid "IDS_EMAIL_OPT_NAMECARD" +msgstr "Visittkort" + +msgid "IDS_EMAIL_OPT_OPEN_URL" +msgstr "Åpne URL" + +msgid "IDS_EMAIL_OPT_SENDER" +msgstr "Avsender" + +msgid "IDS_EMAIL_OPT_SEND_EMAIL" +msgstr "Send e-post" + +msgid "IDS_EMAIL_OPT_UPDATE_EXISTING" +msgstr "Oppdater eksisterende" + +msgid "IDS_EMAIL_POP_ADD_ACCOUNTS" +msgstr "Legg til kontoer" + +msgid "IDS_EMAIL_POP_DOWNLOADING_ATTACHMENT_ING" +msgstr "Laster ned vedlegg..." + +msgid "IDS_EMAIL_POP_INVALID_EMAIL_ADDRESS" +msgstr "Ugyldig e-postadresse" + +msgid "IDS_EMAIL_POP_LOADING_CONTENTS_ING" +msgstr "Laster innhold..." + +msgid "IDS_EMAIL_POP_MAXIMUM_NUMBER_OF_ATTACHMENTS_REACHED" +msgstr "Maksimalt antall vedlegg er nådd" + +msgid "IDS_EMAIL_POP_MOVE_TO_SPAMBOX_Q" +msgstr "Flytte til Søppelpost?" + +msgid "IDS_EMAIL_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS" +msgstr "Ingen mottakere lagt til. Angi mottakere" + +msgid "IDS_EMAIL_POP_PLEASE_FILL_ALL_THE_MANDATORY_FIELDS" +msgstr "Fyll ut alle de obligatoriske feltene" + +msgid "IDS_EMAIL_POP_SAVE_IN_DRAFTS_Q" +msgstr "Lagre i Utkast?" + +msgid "IDS_EMAIL_POP_THERE_IS_NO_ACCOUNT_CREATE_A_NEW_ACCOUNT_FIRST" +msgstr "Det finnes ikke noen konto. Opprett en ny konto først" + +msgid "IDS_EMAIL_POP_TOO_MANY_RECIPIENTS" +msgstr "For mange mottakere" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DOWNLOAD" +msgstr "Kan ikke laste ned" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ENTER_TEXT" +msgstr "Kan ikke angi tekst" + +msgid "IDS_EMAIL_POP_UNABLE_TO_LAUNCH_APPLICATION" +msgstr "Kan ikke starte program" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_ATTACHMENT" +msgstr "Kan ikke åpne vedlegg" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_ATTACHMENT" +msgstr "Kan ikke lagre vedlegg" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_IN_DRAFTS" +msgstr "Kan ikke lagre i Utkast" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEND_EMAIL" +msgstr "Kan ikke sende e-post" + +msgid "IDS_EMAIL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Filtypen støttes ikke" + +msgid "IDS_EMAIL_POP_VALIDATING_ACCOUNT_ING" +msgstr "Validerer konto..." + +msgid "IDS_EMAIL_SK_RESEND" +msgstr "Send på nytt" + +msgid "IDS_EMAIL_BODY_ACCEPT_ALL_SSL_CERTIFICATES" +msgstr "Godta alle SSL-sertifikater" + +msgid "IDS_EMAIL_SK3_ACCOUNT_LIST" +msgstr "Konto liste" + +msgid "IDS_EMAIL_BODY_USER_ID" +msgstr "Bruker-ID" + +msgid "IDS_EMAIL_POP_ACCOUNT_ALREADY_REGISTERED" +msgstr "Kontoen er allerede registrert" + +msgid "IDS_EMAIL_HEADER_ATTACH_FILE" +msgstr "Legg ved fil" + +msgid "IDS_EMAIL_POP_ACCOUNT_ALREADY_EXISTS" +msgstr "Kontoen finnes allerede" + +msgid "IDS_EMAIL_BODY_NO_SUBJECT" +msgstr "Intet emne" + +msgid "IDS_EMAIL_BODY_FROM" +msgstr "Fra" + +msgid "IDS_EMAIL_BODY_NO_ADDRESS" +msgstr "Ingen adresse" + +msgid "IDS_EMAIL_OPT_RECORD_SOUND" +msgstr "Spill inn lyd" + +msgid "IDS_EMAIL_OPT_RECORD_VIDEO" +msgstr "Spill inn video" + +msgid "IDS_EMAIL_OPT_INSERT_IMAGE" +msgstr "Sett inn bilde" + +msgid "IDS_EMAIL_OPT_ADD_TO_CALENDAR" +msgstr "Legg til kalender" + +msgid "IDS_EMAIL_OPT_CHANGE_EMAIL_ADDRESS_ABB" +msgstr "Endre e-postadresse" + +msgid "IDS_EMAIL_OPT_CLIPBOARD" +msgstr "Utklippstavle" + +msgid "IDS_EMAIL_OPT_VIEW_CONTACT_DETAILS" +msgstr "Vis kontaktinformasjon" + +msgid "IDS_EMAIL_POP_SAVED_IN_DRAFTS" +msgstr "Lagret i Utkast" + +msgid "IDS_EMAIL_POP_NETWORK_BUSY" +msgstr "Nettverk opptatt" + +msgid "IDS_EMAIL_POP_LOGIN_ALLOWED_ONLY_EVERY_PD_MINUTES" +msgstr "Login allowed only every %d minutes" + +msgid "IDS_EMAIL_POP_HOST_NOT_FOUND" +msgstr "Finner ikke vert" + +msgid "IDS_EMAIL_POP_HOST_NOT_REACHABLE" +msgstr "Vert kan ikke nås" + +msgid "IDS_EMAIL_POP_NO_SERVICE" +msgstr "Nettv. mangler" + +msgid "IDS_EMAIL_POP_UNABLE_TO_FORWARD_DRM_CONTENTS" +msgstr "Kan ikke videresende DRM-innhold" + +msgid "IDS_EMAIL_POP_BLOCKED" +msgstr "Blokkert" + +msgid "IDS_EMAIL_POP_1_EMAIL_SELECTED" +msgstr "1 e-post valgt" + +msgid "IDS_EMAIL_POP_PD_EMAILS_SELECTED" +msgstr "%d e-poster valgt" + +msgid "IDS_EMAIL_POP_1_RECIPIENT_SELECTED" +msgstr "1 mottaker valgt" + +msgid "IDS_EMAIL_POP_PD_RECIPIENTS_SELECTED" +msgstr "%d mottakere valgt" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ADD_ACCOUNT" +msgstr "Kan ikke legge til konto" + +msgid "IDS_EMAIL_SK3_MOVE_HERE" +msgstr "Flytt hit" + +msgid "IDS_EMAIL_OPT_UNDO" +msgstr "Angre" + +msgid "IDS_EMAIL_OPT_REDO" +msgstr "Gjør om" + +msgid "IDS_EMAIL_OPT_BOLD" +msgstr "Fet" + +msgid "IDS_EMAIL_OPT_ITALIC" +msgstr "Kursiv" + +msgid "IDS_EMAIL_OPT_UNDERLINE" +msgstr "Understreking" + +msgid "IDS_EMAIL_OPT_FONT_SIZE" +msgstr "Skriftstørrelse" + +msgid "IDS_EMAIL_OPT_INDENT" +msgstr "Sett inn innrykk" + +msgid "IDS_EMAIL_OPT_VIEW_BY" +msgstr "Vis etter" + +msgid "IDS_EMAIL_OPT_IMPORTANT" +msgstr "Viktig" + +msgid "IDS_EMAIL_OPT_REFRESH" +msgstr "Oppdater" + +msgid "IDS_EMAIL_POP_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED" +msgstr "Maksimalt antall mottakere (%d) er nådd" + +msgid "IDS_EMAIL_BODY_TLS" +msgstr "TLS" + +msgid "IDS_EMAIL_BODY_SSL" +msgstr "SSL" + +msgid "IDS_EMAIL_BODY_POP3" +msgstr "POP3" + +msgid "IDS_EMAIL_BODY_IMAP4" +msgstr "IMAP4" + +msgid "IDS_EMAIL_OPT_VIDEO_CALL" +msgstr "Videoanrop" + +msgid "IDS_EMAIL_OPT_SEND_MESSAGE" +msgstr "Send melding" + +msgid "IDS_EMAIL_OPT_COMPOSE_EMAIL" +msgstr "Skriv e-post" + +msgid "IDS_EMAIL_OPT_OTHER" +msgstr "Annet" + +msgid "IDS_EMAIL_OPT_TAKE_PHOTO" +msgstr "Ta bilde" + +msgid "IDS_EMAIL_OPT_SECURITY" +msgstr "Sikkerhet" + +msgid "IDS_EMAIL_OPT_SIGN" +msgstr "Signatur" + +msgid "IDS_EMAIL_OPT_ENCRYPT" +msgstr "Krypter" + +msgid "IDS_EMAIL_POP_AUTHENTICATION_FAILED" +msgstr "Godkjenning mislyktes" + +msgid "IDS_EMAIL_POP_DOWNLOAD_CANCELLED" +msgstr "Nedlasting avbrutt" + +msgid "IDS_EMAIL_POP_SENDING_CANCELLED" +msgstr "Sending avbrutt" + +msgid "IDS_EMAIL_POP_ACCOUNT_EDITED" +msgstr "Konto redigert" + +msgid "IDS_EMAIL_POP_ACCOUNT_LIST_NOT_FOUND" +msgstr "Finner ikke kontolisten" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE_LOCATION" +msgstr "Kopier bildeplassering" + +msgid "IDS_EMAIL_POP_DEVICE_STORAGE_FULL" +msgstr "Enhetsminnet er fullt" + +msgid "IDS_EMAIL_POP_DOWNLOAD_ATTACHMENT_Q" +msgstr "Laste ned vedlegg?" + +msgid "IDS_EMAIL_POP_EMAIL_DELETED_FROM_SERVER" +msgstr "E-post slettet fra serveren" + +msgid "IDS_EMAIL_POP_FAILED_TO_ACTIVATE_PDP" +msgstr "Kunne ikke aktivere PDP" + +msgid "IDS_EMAIL_POP_FAILED_TO_ADD_BLOCK_RULE" +msgstr "Kunne ikke legge til blokkeringsregel" + +msgid "IDS_EMAIL_POP_FAILED_TO_MARK_AS_UNREAD" +msgstr "Kunne ikke merke som ulest" + +msgid "IDS_EMAIL_BODY_INCOMING_MAIL_SERVER_TYPE" +msgstr "Servertype for innkommende e-post" + +msgid "IDS_EMAIL_BODY_LOADING_MORE_EMAILS_ING" +msgstr "Laster inn flere e-poster..." + +msgid "IDS_EMAIL_POP_LOG_IN_FAILED" +msgstr "Pålogging mislyktes" + +msgid "IDS_EMAIL_POP_RETRIEVING_ADDRESS_LIST_ING" +msgstr "Henter adresseliste..." + +msgid "IDS_EMAIL_OPT_SEND_IMAGE_VIA_EMAIL" +msgstr "Send bilde via e-post" + +msgid "IDS_EMAIL_BODY_YOU_CAN_USE_EMAIL_ON_YOUR_DEVICE_BY_ADDING_YOUR_ACCOUNT_IF_YOU_DO_NOT_HAVE_AN_EMAIL_ACCOUNT_SIGN_UP_FIRST" +msgstr "Du kan bruke e-post på enheten ved å legge til kontoen din. Hvis du ikke har en e-postkonto, må du registrere deg for en først" + +msgid "IDS_EMAIL_POP_DOWNLOADING_ATTACHMENTS_ON_THE_MOBILE_DEVICE_IS_NOT_ALLOWED_BY_EXCHANGE_SERVER_POLICY" +msgstr "Nedlasting av vedlegg på mobilenheten er ikke tillatt av Exchange Server-policy" + +msgid "IDS_EMAIL_POP_FAILED_TO_DELETE" +msgstr "Kunne ikke slette" + +msgid "IDS_EMAIL_POP_FAILED_TO_MOVE" +msgstr "Kunne ikke flytte" + +msgid "IDS_EMAIL_POP_MARKED_AS_UNREAD" +msgstr "Markert som ulest" + +msgid "IDS_EMAIL_POP_DOWNLOAD_ATTACHMENTS_Q" +msgstr "Laste ned vedlegg?" + +msgid "IDS_EMAIL_POP_MAXIMUM_RECIPIENT_EMAIL_LENGTH_EXCEEDED" +msgstr "Maksimal lengde på e-post for mottaker oversteget" + +msgid "IDS_EMAIL_POP_ACCOUNT_CREATION_CANCELLED" +msgstr "Kontooppretting avbrutt" + +msgid "IDS_EMAIL_MBODY_MAILBOX_LIST" +msgstr "Postboksliste" + +msgid "IDS_EMAIL_BODY_MAILBOX_SETUP" +msgstr "Konfigurering av postkasse" + +msgid "IDS_EMAIL_POP_ALREADY_DOWNLOADING_T_HEADER" +msgstr "Laster allerede ned" + +msgid "IDS_EMAIL_POP_CANCELLING_ATTACHMENT_DOWNLOAD_ING" +msgstr "Avbryter vedleggsnedlastingen..." + +msgid "IDS_EMAIL_BODY_SENT_USING_TIZEN_MOBILE" +msgstr "Sendt fra en TIZEN-mobil" + +msgid "IDS_EMAIL_POP_EXCHANGE_ACTIVESYNC_ACCOUNT_NOT_AVAILABLE_NOTI" +msgstr "Exchange ActiveSync-konto ikke tilgjengelig" + +msgid "IDS_EMAIL_BODY_RE" +msgstr "Svar" + +msgid "IDS_EMAIL_BODY_FWD_T_EMAIL_PREFIX_ABB" +msgstr "Videresend" + +msgid "IDS_EMAIL_BODY_EXCHANGE_ACTIVESYNC" +msgstr "Exchange ActiveSync" + +msgid "IDS_EMAIL_BODY_GMAIL" +msgstr "Gmail" + +msgid "IDS_EMAIL_BODY_HOTMAIL" +msgstr "Hotmail" + +msgid "IDS_EMAIL_BODY_AOL" +msgstr "AOL" + +msgid "IDS_EMAIL_BODY_YAHOO_E_MAIL" +msgstr "Yahoo! e-post" + +msgid "IDS_EMAIL_OPT_ADD_ACCOUNTS" +msgstr "Legg til kontoer" + +msgid "IDS_EMAIL_BODY_DOWNLOAD_MESSAGE" +msgstr "Last ned melding" + +msgid "IDS_EMAIL_POP_ALREADY_BLOCKED" +msgstr "Allerede blokkert" + +msgid "IDS_EMAIL_BODY_SEARCH_ON_SERVER" +msgstr "Søk på server" + +msgid "IDS_EMAIL_OPT_RECIPIENT" +msgstr "Mottaker" + +msgid "IDS_EMAIL_OPT_DELETE_ALL" +msgstr "Slett alle" + +msgid "IDS_EMAIL_OPT_RECENT_HPD" +msgstr "Nylige (%d)" + +msgid "IDS_EMAIL_OPT_REPLY_TO_SENDER" +msgstr "Svar til avsender" + +msgid "IDS_EMAIL_HEADER_RECENT_T_HEADER" +msgstr "Nylige" + +msgid "IDS_EMAIL_OPT_CONTACT_DETAILS" +msgstr "Kontaktinformasjon" + +msgid "IDS_EMAIL_OPT_REPLY_TO_ALL" +msgstr "Svar til alle" + +msgid "IDS_EMAIL_BODY_THREADED_LIST" +msgstr "Trådliste" + +msgid "IDS_EMAIL_BODY_SELECT_EMAIL" +msgstr "Velg e-post" + +msgid "IDS_EMAIL_OPT_VIEW_AS" +msgstr "Vis som" + +msgid "IDS_EMAIL_HEADER_BLOCK_EMAILS" +msgstr "Blokker e-poster" + +msgid "IDS_EMAIL_HEADER_DELETE" +msgstr "Slett" + +msgid "IDS_EMAIL_HEADER_DEFAULT_ACCOUNT" +msgstr "Standard konto" + +msgid "IDS_EMAIL_HEADER_EMAIL" +msgstr "E-post" + +msgid "IDS_EMAIL_BODY_SHOW_EMAILS" +msgstr "Vis e-poster" + +msgid "IDS_EMAIL_OPT_DATE" +msgstr "Dato" + +msgid "IDS_EMAIL_HEADER_SEARCH" +msgstr "Søk" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_EMAIL_MESSAGE" +msgstr "Kan ikke åpne e-postmeldingen" + +msgid "IDS_EMAIL_POP_UNABLE_TO_COMPOSE_EMAIL_MESSAGE" +msgstr "Kan ikke skrive e-postmelding" + +msgid "IDS_EMAIL_POP_FAILED_TO_START_EMAIL_APPLICATION" +msgstr "Kunne ikke starte E-postprogram" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_SUBJECT_EMPTY" +msgstr "Kan ikke lagre. Emnet er tomt" + +msgid "IDS_EMAIL_HEADER_ALL_EMAILS" +msgstr "Alle e-postmeldinger" + +msgid "IDS_EMAIL_HEADER_MAILBOX_SETUP" +msgstr "Konfigurering av postkasse" + +msgid "IDS_EMAIL_HEADER_RETRIEVING_OPTIONS" +msgstr "Hentealternativer" + +msgid "IDS_EMAIL_HEADER_ADD_ACCOUNT" +msgstr "Legg til konto" + +msgid "IDS_EMAIL_HEADER_TEXT_COLOUR" +msgstr "Tekstfarge" + +msgid "IDS_EMAIL_HEADER_TEXT_BACKGROUND_COLOUR" +msgstr "Tekstbakgrunnsfarge" + +msgid "IDS_EMAIL_BODY_ADDRESS" +msgstr "Adresse" + +msgid "IDS_EMAIL_SK_DECLINE" +msgstr "Avslå" + +msgid "IDS_EMAIL_OPT_RESEND" +msgstr "Send på nytt" + +msgid "IDS_EMAIL_OPT_ATTACH_FILE" +msgstr "Legg ved fil" + +msgid "IDS_EMAIL_HEADER_COMPOSE_EMAIL" +msgstr "Skriv e-post" + +msgid "IDS_EMAIL_HEADER_ADD_ACCOUNTS" +msgstr "Legg til kontoer" + +msgid "IDS_EMAIL_OPT_PD_MOST_RECENT_EMAILS" +msgstr "%d nyeste e-poster" + +msgid "IDS_EMAIL_POP_YOU_CAN_ONLY_LOG_IN_ONCE_EVERY_PD_MINUTES" +msgstr "Du kan bare logge på én gang hvert %d. minutt" + +msgid "IDS_EMAIL_BODY_DEFAULT_SENDING_ACCOUNT" +msgstr "Standard sendekonto" + +msgid "IDS_EMAIL_HEADER_DEFAULT_SENDING_ACCOUNT" +msgstr "Standard sendekonto" + +msgid "IDS_EMAIL_BODY_DO_NOT_MATCH_FOLDER_WITH_SERVER" +msgstr "Ikke match mappe med server" + +msgid "IDS_EMAIL_POP_QUERYING_SERVER_INFORMATION_ING" +msgstr "Ber om serverinformasjon..." + +msgid "IDS_EMAIL_POP_SERVER_INFORMATION_QUERY_FAILED_ENTER_SERVER_INFORMATION_MANUALLY" +msgstr "Forespørsel om serverinformasjon mislyktes. Angi serverinformasjon manuelt" + +msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL" +msgstr "Sikkerhetspolicy begrenser bruk av POP/IMAP-e-post" + +msgid "IDS_EMAIL_OPT_VIEW" +msgstr "Vis" + +msgid "IDS_EMAIL_OPT_COPY_LINK" +msgstr "Kopier kobling" + +msgid "IDS_EMAIL_POP_FAILED_TO_MARK_AS_READ" +msgstr "Kunne ikke merke som lest" + +msgid "IDS_EMAIL_POP_MARKED_AS_READ" +msgstr "Markert som lest" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE_URL" +msgstr "Kopier bilde-URL" + +msgid "IDS_EMAIL_OPT_COPY_URL" +msgstr "Kopier URL" + +msgid "IDS_EMAIL_OPT_MOVE_TO_SPAMBOX" +msgstr "Flytt til Søppelpost" + +msgid "IDS_EMAIL_POP_DISCARD_CURRENT_MESSAGE_Q" +msgstr "Forkast aktuell melding?" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_DECLINED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Møteforespørsel avslått. Meldingen blir flyttet til papirkurven" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_TENTATIVELY_ACCEPTED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Møteforespørsel foreløpig godtatt. Meldingen blir flyttet til papirkurven" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_ACCEPTED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Møteforespørsel godtatt. Meldingen blir flyttet til papirkurven" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_FILE" +msgstr "Kan ikke legge ved fil" + +msgid "IDS_EMAIL_OPT_CALENDAR" +msgstr "Kalender" + +msgid "IDS_EMAIL_OPT_MEMO" +msgstr "Notat" + +msgid "IDS_EMAIL_OPT_TINY_M_TEXTSIZE" +msgstr "Veldig liten" + +msgid "IDS_EMAIL_OPT_SMALL_M_TEXTSIZE" +msgstr "Liten" + +msgid "IDS_EMAIL_OPT_NORMAL_M_TEXTSIZE" +msgstr "Normal" + +msgid "IDS_EMAIL_OPT_LARGE_M_TEXTSIZE" +msgstr "Stor" + +msgid "IDS_EMAIL_OPT_HUGE_M_TEXTSIZE" +msgstr "Veldig stor" + +msgid "IDS_EMAIL_BODY_ALWAYS_CC_BCC_MYSELF" +msgstr "Alltid send kopi/blindkopi til meg selv" + +msgid "IDS_EMAIL_BODY_ALWAYS_CC_MYSELF" +msgstr "Alltid send kopi til meg selv" + +msgid "IDS_EMAIL_BODY_SEND_READ_REPORT" +msgstr "Send leserapport" + +msgid "IDS_EMAIL_OPT_VIEW_MODE" +msgstr "Visningsmodus" + +msgid "IDS_EMAIL_OPT_STANDARD_VIEW" +msgstr "Standard visning" + +msgid "IDS_EMAIL_OPT_CONVERSATION_VIEW" +msgstr "Samtalevisning" + +msgid "IDS_EMAIL_OPT_DATE_HMOST_RECENT" +msgstr "Dato (nyeste)" + +msgid "IDS_EMAIL_OPT_DATE_HOLDEST" +msgstr "Dato (eldste)" + +msgid "IDS_EMAIL_OPT_SENDER_HA_TO_Z" +msgstr "Avsender (A til Å)" + +msgid "IDS_EMAIL_OPT_SENDER_HZ_TO_A" +msgstr "Avsender (Å til A)" + +msgid "IDS_EMAIL_OPT_READ_UNREAD" +msgstr "Lest/ulest" + +msgid "IDS_EMAIL_OPT_FAVOURITES" +msgstr "Favoritter" + +msgid "IDS_EMAIL_HEADER_ALL_ACCOUNTS" +msgstr "Alle kontoer" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAILS" +msgstr "Velg e-postmeldinger" + +msgid "IDS_EMAIL_BODY_MICROSOFT_EXCHANGE_ACTIVESYNC" +msgstr "Microsoft Exchange ActiveSync" + +msgid "IDS_EMAIL_HEADER_VIEW_MODE_ABB" +msgstr "Visningsmodus" + +msgid "IDS_EMAIL_BODY_NO_EMAILS" +msgstr "Ingen e-poster" + +msgid "IDS_EMAIL_OPT_DOCUMENTS_ABB" +msgstr "Dokumenter" + +msgid "IDS_EMAIL_OPT_ATTACH" +msgstr "Legg ved" + +msgid "IDS_EMAIL_OPT_PRINT" +msgstr "Skriv ut" + +msgid "IDS_EMAIL_OPT_GALLERY" +msgstr "Galleri" + +msgid "IDS_EMAIL_OPT_MY_FILES" +msgstr "Mine Filer" + +msgid "IDS_EMAIL_OPT_CONTACTS" +msgstr "Kontakter" + +msgid "IDS_EMAIL_OPT_INSERT" +msgstr "Sett inn" + +msgid "IDS_EMAIL_BODY_SHOW_IMAGES" +msgstr "Vis bilder" + +msgid "IDS_EMAIL_OPT_SORT_BY" +msgstr "Sorter etter" + +msgid "IDS_EMAIL_OPT_FLAG" +msgstr "Flagg" + +msgid "IDS_EMAIL_OPT_MEETING_REQUEST" +msgstr "Møteinnkallelse" + +msgid "IDS_EMAIL_OPT_ATTACHMENTS" +msgstr "Vedlegg" + +msgid "IDS_EMAIL_HEADER_FOLDERS" +msgstr "Mapper" + +msgid "IDS_EMAIL_OPT_ADD_FOLDER" +msgstr "Legg til mappe" + +msgid "IDS_EMAIL_OPT_TITLE" +msgstr "Tittel" + +msgid "IDS_EMAIL_HEADER_PD_CONVERSATIONS" +msgstr "%d samtaler" + +msgid "IDS_EMAIL_HEADER_SERVER" +msgstr "Server" + +msgid "IDS_EMAIL_OPT_ALL" +msgstr "Alle" + +msgid "IDS_EMAIL_OPT_RECIPIENT_HA_TO_Z" +msgstr "Mottaker (A til Å)" + +msgid "IDS_EMAIL_OPT_RECIPIENT_HZ_TO_A" +msgstr "Mottaker (Å til A)" + +msgid "IDS_EMAIL_HEADER_SEARCH_SHAREPOINT" +msgstr "Søk i SharePoint" + +msgid "IDS_EMAIL_BODY_ENTER_PATH_OF_WINDOWS_SHAREPOINT_SERVICES_OR_WINDOWS_FILE_SHARE_HUNC_TO_ACCESS_DOCUMENTS_REMOTELY" +msgstr "Angi banen til Windows SharePoint Services eller Windows-fildeling (UNC) for å få tilgang til eksterne dokumenter" + +msgid "IDS_EMAIL_OPT_DELETE_FROM_CALENDAR" +msgstr "Slett fra Kalender" + +msgid "IDS_EMAIL_BODY_FLICK_UP_TO_SEARCH_ON_SERVER" +msgstr "Flikk opp for å søke på server" + +msgid "IDS_EMAIL_BODY_FLICK_UP_TO_SEARCH_ON_SERVER_AGAIN" +msgstr "Flikk opp for å søke på server igjen" + +msgid "IDS_EMAIL_BODY_RECENT_EMAILS" +msgstr "Nylige e-poster" + +msgid "IDS_EMAIL_BODY_DELETING_OPTIONS" +msgstr "Slettealternativer" + +msgid "IDS_EMAIL_BODY_FAVOURITES" +msgstr "Favoritter" + +msgid "IDS_EMAIL_BODY_HIGH_M_PRIORITY" +msgstr "Høy" + +msgid "IDS_EMAIL_BODY_NORMAL_M_EMAILPRIORITY" +msgstr "Normal" + +msgid "IDS_EMAIL_BODY_LOW_M_EMAILPRIORITY" +msgstr "Lav" + +msgid "IDS_EMAIL_BODY_MEETING_REQUEST" +msgstr "Møteinnkallelse" + +msgid "IDS_EMAIL_BODY_MEETING_INVITATION" +msgstr "Møteinvitasjon" + +msgid "IDS_EMAIL_OPT_SUGGEST_NEW_TIME_ABB" +msgstr "Foreslå nytt klokkeslett" + +msgid "IDS_EMAIL_BODY_VIEW_IN_CALENDAR" +msgstr "Vis i Kalender" + +msgid "IDS_EMAIL_BODY_SEARCH_EMAIL" +msgstr "Søk e-post" + +msgid "IDS_EMAIL_BODY_ALWAYS_SHOW_THIS_MESSAGE" +msgstr "Vis alltid denne meldingen" + +msgid "IDS_EMAIL_BODY_SEND_EMAIL_FROM_THIS_ACCOUNT_BY_DEFAULT" +msgstr "Send e-post fra denne kontoen som standard" + +msgid "IDS_EMAIL_BODY_SMTP_SERVER" +msgstr "SMTP-server" + +msgid "IDS_EMAIL_OPT_SEARCH" +msgstr "Søk" + +msgid "IDS_EMAIL_OPT_SHARE" +msgstr "Del" + +msgid "IDS_EMAIL_OPT_MESSAGE" +msgstr "Melding" + +msgid "IDS_EMAIL_OPT_EMAIL" +msgstr "E-post" + +msgid "IDS_EMAIL_OPT_FACEBOOK" +msgstr "Facebook" + +msgid "IDS_EMAIL_OPT_TWITTER" +msgstr "Twitter" + +msgid "IDS_EMAIL_OPT_NFC" +msgstr "NFC" + +msgid "IDS_EMAIL_BODY_SECURITY_OPTIONS" +msgstr "Sikkerhetsalternativer" + +msgid "IDS_EMAIL_HEADER_SECURITY_OPTIONS" +msgstr "Sikkerhetsalternativer" + +msgid "IDS_EMAIL_BODY_ENCRYPTION_ALGORITHM" +msgstr "Kryperingsalgoritme" + +msgid "IDS_EMAIL_BODY_SIGN_ALGORITHM" +msgstr "Signaturalgoritme" + +msgid "IDS_EMAIL_BODY_EMAIL_CERTIFICATE" +msgstr "E-postsertifikat" + +msgid "IDS_EMAIL_BODY_SUNDAY" +msgstr "Søndag" + +msgid "IDS_EMAIL_BODY_MONDAY" +msgstr "Mandag" + +msgid "IDS_EMAIL_BODY_TUESDAY" +msgstr "Tirsdag" + +msgid "IDS_EMAIL_BODY_WEDNESDAY" +msgstr "Onsdag" + +msgid "IDS_EMAIL_BODY_THURSDAY" +msgstr "Torsdag" + +msgid "IDS_EMAIL_BODY_FRIDAY" +msgstr "Fredag" + +msgid "IDS_EMAIL_BODY_SATURDAY" +msgstr "Lørdag" + +msgid "IDS_EMAIL_BODY_OTHER" +msgstr "Annet" + +msgid "IDS_EMAIL_BODY_PHONE" +msgstr "Telefon" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DECRYPT_MESSAGE" +msgstr "Kan ikke dekryptere melding" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DECRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" +msgstr "Kan ikke dekryptere melding. Sertifikat ikke installert" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SIGN_OR_ENCRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" +msgstr "Kan ikke signere eller kryptere melding. Sertifikat ikke installert" + +msgid "IDS_EMAIL_POP_DOWNLOAD_MORE_DETAILS_TO_SHOW_S_MIME_MESSAGES_CONTINUE_Q" +msgstr "Last ned mer informasjon for å vise S/MIME-meldinger. Fortsette?" + +msgid "IDS_EMAIL_BODY_LAST_WEEK" +msgstr "Siste uke" + +msgid "IDS_EMAIL_BODY_PD_WEEKS_AGO" +msgstr "%d uker siden" + +msgid "IDS_EMAIL_BODY_READ" +msgstr "Lese" + +msgid "IDS_EMAIL_BODY_UNREAD" +msgstr "Ulest" + +msgid "IDS_EMAIL_BODY_CLEAR" +msgstr "Slett" + +msgid "IDS_EMAIL_BODY_MANUAL_SETUP" +msgstr "Manuelt oppsett" + +msgid "IDS_EMAIL_BODY_OLDER_M_HISTORY" +msgstr "Eldre" + +msgid "IDS_EMAIL_HEADER_CHECKING" +msgstr "Kontrollerer" + +msgid "IDS_EMAIL_POP_THIS_ATTACHMENT_CANNOT_BE_DISPLAYED" +msgstr "Kan ikke vise vedlegg" + +msgid "IDS_EMAIL_BODY_SERVER" +msgstr "Server" + +msgid "IDS_EMAIL_BODY_ADD_ACCOUNT" +msgstr "Legg til konto" + +msgid "IDS_EMAIL_BODY_REMOVE_EVENT_FROM_CALENDAR" +msgstr "Fjern hendelse fra Kalender" + +msgid "IDS_EMAIL_POP_GETTING_RECIPIENTS_CERTIFICATES_ING" +msgstr "Henter mottakersertifikater..." + +msgid "IDS_EMAIL_POP_VALIDATING_CERTIFICATES_ING" +msgstr "Validerer sertifikater..." + +msgid "IDS_EMAIL_HEADER_CERTIFICATES" +msgstr "Sertifikater" + +msgid "IDS_EMAIL_POP_FOLLOWING_RECIPIENTS_HAVE_INVALID_CERTIFICATES" +msgstr "Følgende mottakere har ugyldige sertifikater" + +msgid "IDS_EMAIL_POP_VERIFYING_SIGNATURE_ING" +msgstr "Bekrefter signatur ..." + +msgid "IDS_EMAIL_BODY_ADVANCED" +msgstr "Avansert" + +msgid "IDS_EMAIL_BODY_SEARCH_BY" +msgstr "Søk etter" + +msgid "IDS_EMAIL_BODY_WINDOWS_LIVE_HOTMAIL" +msgstr "Windows Live Hotmail" + +msgid "IDS_EMAIL_BODY_DELETE_ALL_Q" +msgstr "Slette alle?" + +msgid "IDS_EMAIL_BODY_MOVE_TO" +msgstr "Flytt til" + +msgid "IDS_EMAIL_BODY_TOTAL_EMAILS" +msgstr "Totalt antall e-poster" + +msgid "IDS_EMAIL_BODY_HEADER_ONLY" +msgstr "Bare meldingshode" + +msgid "IDS_EMAIL_BODY_PHONE_AND_SERVER" +msgstr "Telefon og server" + +msgid "IDS_EMAIL_BODY_PHONE_ONLY" +msgstr "Bare telefon" + +msgid "IDS_EMAIL_BODY_USE_SAME_USERNAME_PASSWORD_AS_POP3_IMAP4" +msgstr "Bruk samme brukernavn/passord som POP3/IMAP4" + +msgid "IDS_EMAIL_BODY_USE_POP3_IMAP4_BEFORE_SMTP" +msgstr "Bruk POP3/IMAP4 før SMTP" + +msgid "IDS_EMAIL_POP_FAILED_TO_VALIDATE_ACCOUNT_CHECK_EMAIL_ADDRESS_AND_PASSWORD" +msgstr "Kunne ikke validere konto. Kontroller e-postadresse og passord" + +msgid "IDS_EMAIL_BODY_SMTP_PORT" +msgstr "SMTP-port" + +msgid "IDS_EMAIL_BODY_SHOW_PASSWORD" +msgstr "Vis passord" + +msgid "IDS_EMAIL_BODY_LAST_MONTH" +msgstr "Forrige måned" + +msgid "IDS_EMAIL_BODY_1_WEEK_AGO" +msgstr "1 uke siden" + +msgid "IDS_EMAIL_OPT_LOG_IN" +msgstr "Logg inn" + +msgid "IDS_EMAIL_BODY_FORWARD_WITH_FILES" +msgstr "Videresend med filer" + +msgid "IDS_EMAIL_BODY_REPLY_WITH_BODY" +msgstr "Svar med brødtekst" + +msgid "IDS_EMAIL_BODY_SAVE_ALL" +msgstr "Lagre alle" + +msgid "IDS_EMAIL_OPT_NEW_MEETING_INVITATION" +msgstr "Ny møteinvitasjon" + +msgid "IDS_EMAIL_OPT_MEETING_INVITATION" +msgstr "Møteinvitasjon" + +msgid "IDS_EMAIL_HEADER_REPLY_ABB" +msgstr "Svar" + +msgid "IDS_EMAIL_OPT_TO_SENDER_ABB" +msgstr "Til avsender" + +msgid "IDS_EMAIL_OPT_TO_ALL_ABB" +msgstr "Til alle" + +msgid "IDS_EMAIL_OPT_ADD_CC_BCC" +msgstr "Legg til Kopi/Blindkopi" + +msgid "IDS_EMAIL_OPT_MOVE_TO_CC" +msgstr "Flytt til Kopi" + +msgid "IDS_EMAIL_OPT_MOVE_TO_BCC" +msgstr "Flytt til Blindkopi" + +msgid "IDS_EMAIL_OPT_VIEW_CONTACT" +msgstr "Vis kontakter" + +msgid "IDS_EMAIL_HEADER_ATTACH_ABB" +msgstr "Vedlegg" + +msgid "IDS_EMAIL_HEADER_MOVE_TO" +msgstr "Flytt til" + +msgid "IDS_EMAIL_HEADER_SEARCH_BY" +msgstr "Søk etter" + +msgid "IDS_EMAIL_OPT_ADVANCED" +msgstr "Avansert" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_NOT_VALID_AND_IS_NOT_TRUSTED" +msgstr "Den digitale signaturen på denne meldingen er ikke gyldig og er ikke pålitelig" + +msgid "IDS_EMAIL_POP_CONNECTION_ERROR" +msgstr "Tilkoblingsfeil" + +msgid "IDS_EMAIL_BODY_EVERY_30_MINUTES" +msgstr "Hvert 30. minutt" + +msgid "IDS_EMAIL_BODY_EVERY_PD_HOURS" +msgstr "Hver %d. time" + +msgid "IDS_EMAIL_BODY_ONCE_A_DAY" +msgstr "Én gang om dagen" + +msgid "IDS_EMAIL_POP_CERTIFICATE_DOES_NOT_MATCH_EMAIL_ADDRESS" +msgstr "Sertifikat samsvarer ikke med e-postadresse" + +msgid "IDS_EMAIL_BODY_ENCRYPT" +msgstr "Krypter" + +msgid "IDS_EMAIL_BODY_SIGN" +msgstr "Signatur" + +msgid "IDS_EMAIL_POP_DECRYPTING_MESSAGE_ING" +msgstr "Dekrypterer melding..." + +msgid "IDS_EMAIL_BODY_1_MONTH_AGO" +msgstr "1 måned siden" + +msgid "IDS_EMAIL_OPT_ACCEPT" +msgstr "Godta" + +msgid "IDS_EMAIL_OPT_DECLINE" +msgstr "Avslå" + +msgid "IDS_EMAIL_BODY_ALL_ACCOUNTS" +msgstr "Alle kontoer" + +msgid "IDS_EMAIL_HEADER_SORT_BY" +msgstr "Sorter etter" + +msgid "IDS_EMAIL_SK_SORT_BY" +msgstr "Sorter" + +msgid "IDS_EMAIL_SK_DELETE_ALL" +msgstr "Slett alle" + +msgid "IDS_EMAIL_SK_MOVE" +msgstr "Flytt" + +msgid "IDS_EMAIL_SK_BLOCK" +msgstr "Sperr" + +msgid "IDS_EMAIL_SK_CREATE_FOLDER" +msgstr "Lag mappe" + +msgid "IDS_EMAIL_HEADER_CREATE_FOLDER" +msgstr "Opprett mappe" + +msgid "IDS_EMAIL_POP_FOLDER_NAME" +msgstr "Mappenavn" + +msgid "IDS_EMAIL_OPT_REPLY" +msgstr "Svar" + +msgid "IDS_EMAIL_OPT_FORWARD" +msgstr "Videresend" + +msgid "IDS_EMAIL_OPT_SHARE_VIA_EMAIL" +msgstr "Del via e-post" + +msgid "IDS_EMAIL_OPT_OPEN" +msgstr "Åpne" + +msgid "IDS_EMAIL_OPT_RECORD_AUDIO" +msgstr "Spill inn lyd" + +msgid "IDS_EMAIL_HEADER_SECURITY" +msgstr "Sikkerhet" + +msgid "IDS_EMAIL_BODY_PD_ATTACHMENTS" +msgstr "%d vedlegg" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_FILE" +msgstr "Kan ikke åpne fil" + +msgid "IDS_EMAIL_POP_RETRIEVING_ING" +msgstr "Henter..." + +msgid "IDS_EMAIL_BODY_SYNC_SCHEDULE" +msgstr "Synkroniser oppføringer" + +msgid "IDS_EMAIL_BODY_EVERY_PD_MINUTES" +msgstr "Hvert %d minutt" + +msgid "IDS_EMAIL_BODY_ADD_ADDRESS" +msgstr "Legg til adresse" + +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Ny e-post" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Velg mappe" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Ta opp video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Flytt til Til" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Velg e-postadresse" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Søking mislyktes" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lest" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dobbeltrykk for å gå til toppen av kontaktlistene, e-postlistene og e-postmeldingene" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Rediger svar før sending" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Send svar nå" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ikke send svar" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Bekreft signatur" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Bekreft signatur" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Kan ikke bekrefte signatur. Offentlig nøkkel er ikke installert" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Den digitale signaturen på denne meldingen er gyldig og pålitelig" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dekrypter melding" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Lagre e-post" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Kan ikke opprette mappe" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Ta bilde" + diff --git a/po/nl_NL.po b/po/nl_NL.po index 3c69949..3fd4b28 100755 --- a/po/nl_NL.po +++ b/po/nl_NL.po @@ -1390,3 +1390,60 @@ msgstr "Om de %d minuten" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adres toevoegen" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nieuwe e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Map selecteren" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Video opnemen" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Verplaatsen naar Aan" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "E-mailadres selecteren" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Kan niet zoeken" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Gelezen" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dubbeltik om naar het begin van contactenlijsten, e-maillijsten of e-mailberichten te gaan" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Reactie bewerken voor verzenden" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Reactie nu verzenden" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Geen reactie verzenden" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Handtek. controleren" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Handtekening controleren" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Kan handtekening niet controleren. Openbare sleutel is niet geïnstalleerd" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "De digitale handtekening op dit bericht is geldig en vertrouwd" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Bericht decoderen" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-mail opslaan" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Kan map niet maken" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Foto maken" + @@ -1390,3 +1390,60 @@ msgstr "Co %d min" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Dodaj adres" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr ": Nowy e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Wybierz katalog" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Nagraj video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Przenieś do Do" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Wybierz adres e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Nie można wyszukać" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Przeczytano" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dotknij dwukrotnie, aby przejść na górę list kontaktów, adresów i wiadomości e-mail" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Edytuj odpowiedź przed wysłaniem" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Wyślij odpowiedź teraz" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nie wysyłaj odpowiedzi" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Weryfikuj podpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Weryfikuj podpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nie można zweryfikować podpisu. Nie zainstalowano klucza publicznego" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Podpis cyfrowy w tej wiadomości jest prawidłowy i należy do zaufanych" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Odszyfruj wiadomość" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Zapisz wiadomość" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Nie można utworzyć katalogu" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Zrób zdjęcie" + diff --git a/po/pt_BR.po b/po/pt_BR.po index 004d520..fe2a4e9 100755 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1390,3 +1390,60 @@ msgstr "A cada %d minutos" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adicionar endereço" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Novo e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Selecionar pasta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Gravar vídeo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mover para Para" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Selecionar endereço de e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Impossível procurar" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lida" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toque duas vezes para ir para o topo das listas de contatos, listas de e-mail e mensagens de e-mail" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar resposta antes de enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar resposta agora" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Não enviar resposta agora" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificar assinatura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificar assinatura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Não é possível verificar a assinatura. A chave Pública não está instalada" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "A assinatura digital nesta mensagem é válida e confiável" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decodificar mensagem" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Salvar e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Impossível criar pasta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Tirar foto" + diff --git a/po/pt_PT.po b/po/pt_PT.po index c52ded4..5af483f 100755 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -1390,3 +1390,60 @@ msgstr "Cada %d minutos" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adicionar endereço" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Novo e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleccionar pasta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturar vídeo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mover para Para" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleccionar endereço de e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Impossível procurar" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Ler" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toque duas vezes para ir para o início de listas de contactos, listas de e-mails e mensagens de e-mail" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar a resposta antes de enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar resposta agora" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Não enviar resposta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificar assinatura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificar assinatura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Impossível verificar a assinatura. A chave pública não está instalada" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "A assinatura digital desta mensagem é válida e fidedigna" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Desencript. mensagem" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Guardar e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Impossível criar pasta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Tirar fotografia" + @@ -1390,3 +1390,60 @@ msgstr "La fiecare %d minute" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adăugare adresă" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Email nou" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Selectare folder" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Captură video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mutare la Către" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Selectare adresă de e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Imposibil de căutat" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Citit" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Atingeţi de două ori pentru a vă deplasa la începutul listei de contacte, al listei de e-mailuri şi al mesajelor de e-mail" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editare răspuns înainte de trimitere" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Trimitere răspuns imediat" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nu se trimite răspunsul" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificaţi semnătura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificaţi semnătura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nu se poate verifica semnătura. Cheia publică nu este instalată" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Semnătura digitală de pe acest mesaj este validă şi acreditată" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decriptaţi mesajul" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Salvare e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Imposibil de creat folderul" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Fotografiere" + diff --git a/po/ru_RU.po b/po/ru_RU.po index e0090a5..f67c4f9 100755 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -1390,3 +1390,60 @@ msgstr "Каждые %d мин." msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Добавить адрес" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Новое сообщение E-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Выберите папку" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Записать видео" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Переместить в" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Выберите адрес электронной почты" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Не удалось выполнить поиск" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Прочитано" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Коснитесь дважды для перехода в начало списка контактов, адресов электронной почты или сообщений" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Изменить ответ перед отправкой" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Отправить ответ" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Не отправлять ответ" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Проверить подпись" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Проверить подпись" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Не удалось проверить подпись. Открытый ключ не установлен" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Цифровая подпись данного сообщения является верной и надежной" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Расшифров. сообщение" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Сохранить эл. почту" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Невозможно создать папку" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Сделать снимок" + @@ -1390,3 +1390,60 @@ msgstr "Po každých %d minútach" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Pridať adresu" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nový e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Vybrať priečinok" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Snímať video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Premiestniť do poľa Adresát" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Vyberte e-mailovú adresu" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Nedá sa nájsť" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Prečítané" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dvojitým ťuknutím môžete prejsť na začiatok zoznamu kontaktov, e-mailov a e-mailových správ" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Pred odoslaním upraviť odpoveď" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Odoslať odpoveď teraz" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Neodoslať odpoveď" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Overiť podpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Overiť podpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nedá sa overiť podpis. Verejný kľúč nie je nainštalovaný" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Digitálny podpis v tejto správe je platný a dôveryhodný" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dešifrovať správu" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Uložiť e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Nedá sa vytvoriť priečinok" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Odfotografovať" + @@ -1390,3 +1390,60 @@ msgstr "Vsakih %d minut" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Dodaj naslov" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nova e-pošta" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Izberi mapo" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Posnemi video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Premakni v polje Za" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Izberite e-poštni naslov" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Iskanje ni mogoče" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Prebrano" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dvakrat pritisnite, če se želite premakniti na vrh seznamov stikov, seznamov e-pošte in e-poštnih sporočil" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Pred pošiljanjem uredi odgovor" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Pošlji odgovor" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ne pošlji odgovora" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Preveri podpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Preveri podpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Podpisa ni mogoče preveriti. Javni ključ ni nameščen" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Digitalni podpis v tem sporočilu je veljaven in je zaupanja vreden" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dešifriraj sporočilo" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Shrani e-pošto" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Mape ni mogoče ustvariti" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Posnemi sliko" + @@ -1390,3 +1390,60 @@ msgstr "Svakih %d min" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Dodaj adresu" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nova e-poruka" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Izaberi folder" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Snimi video zapis" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Premesti u „Za“" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Izaberi adresu e-pošte" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Nemoguće pretraživati" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Pročitano" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dvaput kucni za odlazak na vrh listi kontakata, slanje listi putem e-pošte ili slanje e-poruka" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Izmeni odgovor pre slanja" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Pošalji odgovor sada" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ne šalji odgovor" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Potvrdi potpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Potvrdi potpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nije moguće potvrditi potpis. Javni ključ nije instaliran" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Digitalni potpis u ovoj poruci je važeći i pouzdan" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dešifruj poruku" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Sačuvaj e-poruku" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Nemoguće kreirati folder" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Slikaj" + @@ -1390,3 +1390,60 @@ msgstr "Var %d minut" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Lägg till adress" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Ny e-post" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Välj mapp" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Spela in video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Flytta till Till" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Vald e-postadress" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Det går inte att söka" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Läs" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dubbeltryck för att gå till toppen av kontaktlistan, e-postlistan och e-postmeddelanden" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Redigera svar före sändning" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Skicka svar nu" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Skicka inte svar" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verifiera signatur" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verifiera signatur" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Det går inte att verifiera signaturen. Den offentliga nyckeln är inte installerad" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Den digitala signaturen i detta meddelande är giltig och betrodd" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Avkryptera meddel." + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Spara e-post" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Det går inte att skapa mapp" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Ta foto" + diff --git a/po/tr_TR.po b/po/tr_TR.po index 3eea32f..8c6a07c 100755 --- a/po/tr_TR.po +++ b/po/tr_TR.po @@ -1390,3 +1390,60 @@ msgstr "Her %d dakikada bir" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adres ekle" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "yeni E-posta" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Dosya seç" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Video yakala" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Alıcıya taşı" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "E-posta adresi seç" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Aranamıyor" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Oku" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Kişi listeleri, e-posta listeleri ve e-posta mesajlarının başına gitmek için çift dokunun" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Göndermeden önce yanıtı düzenle" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Yanıtı şimdi gönder" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Yanıt gönderme" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "İmzayı doğrula" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "İmzayı doğrula" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "İmza doğrulanamıyor. Genel anahtar yüklü değil" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Bu mesajdaki dijital imza geçerli ve güvenilir" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Mesajın şifrsni çöz" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-postayı kaydet" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Klasör oluşturulamıyor" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Resim çek" + @@ -1390,3 +1390,60 @@ msgstr "Кожні %d хвилин(-и)" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Додати адресу" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Новий Email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Вибір папки" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Відеозйомка" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Перемістити у поле 'Кому'" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Вибір адреси Email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Неможливо виконати пошук" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Прочитане" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Двічі постукайте, щоб перейти вгору списку контактів, списку повідомлень Email або будь-якого повідомлення Email" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Редагувати відповіді перед надсиланням" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Надіслати відповідь зараз" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Не надсилати відповідь" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Перевірка підпису" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Перевірка підпису" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Неможливо перевірити підпис. Відкритий ключ не встановлено" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Цифровий підпис, наявний у цьому повідомленні, є дійсним і підтримується" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Дешифрувати повідом." + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Зберег. повід. Email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Неможливо створити папку" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Зробити знімок" + diff --git a/po/uz.po b/po/uz.po new file mode 100755 index 0000000..832b534 --- /dev/null +++ b/po/uz.po @@ -0,0 +1,1449 @@ +msgid "IDS_EMAIL_BODY_ACCOUNT" +msgstr "Hisob qaydnomasi" + +msgid "IDS_EMAIL_BODY_B" +msgstr "B" + +msgid "IDS_EMAIL_BODY_BYTE" +msgstr "Bayt" + +msgid "IDS_EMAIL_BODY_GB" +msgstr "Gb" + +msgid "IDS_EMAIL_BODY_IMAP4_PORT" +msgstr "IMAP4 port" + +msgid "IDS_EMAIL_BODY_INCOMING" +msgstr "Kiruvchi" + +msgid "IDS_EMAIL_BODY_KB" +msgstr "KB" + +msgid "IDS_EMAIL_BODY_MB" +msgstr "Mb" + +msgid "IDS_EMAIL_BODY_OUTGOING" +msgstr "Chiquvchi" + +msgid "IDS_EMAIL_BODY_POP3_PORT" +msgstr "POP3 porti" + +msgid "IDS_EMAIL_BODY_YOUR_NAME" +msgstr "Sizning ismingiz" + +msgid "IDS_EMAIL_OPT_COPY" +msgstr "Nusxa olish" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE" +msgstr "Suratdan nusxa olish" + +msgid "IDS_EMAIL_OPT_CUT" +msgstr "Qirqish" + +msgid "IDS_EMAIL_OPT_PASTE" +msgstr "Qo‘shib qo‘yish" + +msgid "IDS_EMAIL_OPT_SAVE_IMAGE" +msgstr "Tasvirni saqlash" + +msgid "IDS_EMAIL_OPT_SELECT" +msgstr "Tanlash" + +msgid "IDS_EMAIL_OPT_SELECT_ALL" +msgstr "Barchasini tanlash" + +msgid "IDS_EMAIL_OPT_SEND_IMAGE_VIA_MESSAGING" +msgstr "Xabar yuborish orqali tasvir yuborish" + +msgid "IDS_EMAIL_POP_FILE_NAME_EMPTY" +msgstr "Fayl nomi bo‘sh" + +msgid "IDS_EMAIL_POP_INCORRECT_USER_NAME_OR_PASSWORD" +msgstr "Foydalanuvchi nomi yoki parol noto‘g‘ri" + +msgid "IDS_EMAIL_POP_SERVER_NOT_AVAILABLE" +msgstr "Serverdan foydalanib bo‘lmaydi" + +msgid "IDS_EMAIL_OPT_DOWNLOAD_MESSAGE" +msgstr "Xabar yuklab olish" + +msgid "IDS_EMAIL_OPT_TENTATIVE" +msgstr "Tajribaviy" + +msgid "IDS_EMAIL_POP_TRY_AGAIN_IN_PD_MINUTES" +msgstr "%d daqiqada qayta urinib ko‘ring" + +msgid "IDS_EMAIL_POP_NO_EMAIL_ADDRESS" +msgstr "Elektron pochta manzili yo‘q" + +msgid "IDS_EMAIL_BODY_COMPLETE" +msgstr "Yakunlamoq" + +msgid "IDS_EMAIL_BODY_ACCEPTED_C_PS" +msgstr "Qabul qilindi: %s" + +msgid "IDS_EMAIL_BODY_DECLINED_C_PS" +msgstr "Rad etilgan: %s" + +msgid "IDS_EMAIL_BODY_DOWNLOAD_FULL_MESSAGE" +msgstr "To‘liq xabarni yuklab olish" + +msgid "IDS_EMAIL_BODY_GENERAL_SETTINGS" +msgstr "Umumiy parametrlar" + +msgid "IDS_EMAIL_BODY_TENTATIVE_C_PS" +msgstr "Sinov: %s" + +msgid "IDS_EMAIL_BODY_WHEN_C_PS" +msgstr "Qachon: %s" + +msgid "IDS_EMAIL_BODY_WHERE_C_PS" +msgstr "Qayerda: %s" + +msgid "IDS_EMAIL_BUTTON_DECLINE_ABB" +msgstr "Rad etish" + +msgid "IDS_EMAIL_BODY_ORIGINAL_MESSAGE" +msgstr "Asl xabar" + +msgid "IDS_EMAIL_HEADER_ACCOUNT_SETTINGS" +msgstr "Hisob qaydnomasi parametrlari" + +msgid "IDS_EMAIL_OPT_BLOCK" +msgstr "Bloklash" + +msgid "IDS_EMAIL_OPT_MARK_AS_READ" +msgstr "O‘qilgan sifatida belgilash" + +msgid "IDS_EMAIL_OPT_MARK_AS_UNREAD" +msgstr "O‘qilmagan sifatida belgilash" + +msgid "IDS_EMAIL_OPT_OTHERS" +msgstr "Boshqalar" + +msgid "IDS_EMAIL_OPT_UNREAD" +msgstr "O‘qilmaganlar" + +msgid "IDS_EMAIL_SK_COMPOSE" +msgstr "Yaratish" + +msgid "IDS_EMAIL_HEADER_DOWNLOAD_FAILED" +msgstr "Yuklash bajarilmadi" + +msgid "IDS_EMAIL_OPT_ADD_TO_CONTACT" +msgstr "Kontaktga qo‘shish" + +msgid "IDS_EMAIL_OPT_VOICE_CALL" +msgstr "Ovozli qo‘ng‘iroq" + +msgid "IDS_EMAIL_BODY_ACCOUNT_NAME" +msgstr "Hisob qaydnomasi nomi" + +msgid "IDS_EMAIL_BODY_ATTACHMENTS" +msgstr "Biriktirmalar" + +msgid "IDS_EMAIL_BODY_FROM_C" +msgstr "Kimdan:" + +msgid "IDS_EMAIL_BODY_IMAP4_SERVER" +msgstr "IMAP4 server" + +msgid "IDS_EMAIL_BODY_INCLUDES" +msgstr "O‘z ichiga oladi" + +msgid "IDS_EMAIL_BODY_INCOMING_PORT" +msgstr "Kiruvchi port" + +msgid "IDS_EMAIL_BODY_INCOMING_SERVER" +msgstr "Kiruvchi server" + +msgid "IDS_EMAIL_BODY_IN_PD_MINUTES" +msgstr "%d daqiqada" + +msgid "IDS_EMAIL_BODY_KEEP_IN_SERVER" +msgstr "Serverda saqlash" + +msgid "IDS_EMAIL_BODY_NO_TEXT" +msgstr "Matn yo‘q" + +msgid "IDS_EMAIL_BODY_OUTGOING_PORT" +msgstr "Chiquvchi port" + +msgid "IDS_EMAIL_BODY_OUTGOING_SERVER" +msgstr "Chiquvchi server" + +msgid "IDS_EMAIL_BODY_PD_EMAILS" +msgstr "%d elektron pochta xabari" + +msgid "IDS_EMAIL_BODY_POP3_SERVER" +msgstr "POP3 serveri" + +msgid "IDS_EMAIL_BODY_RECENT" +msgstr "Oxirgi" + +msgid "IDS_EMAIL_BODY_RETRIEVING_OPTIONS" +msgstr "Qayta olish opsiyalari" + +msgid "IDS_EMAIL_BODY_RE_C" +msgstr "JAV:" + +msgid "IDS_EMAIL_BODY_SENT_C" +msgstr "Yuborgan:" + +msgid "IDS_EMAIL_BODY_SENT_FROM_SAMSUNG_MOBILE" +msgstr "Samsung Mobiledan yuborilgan" + +msgid "IDS_EMAIL_BODY_USER_PASSWORD" +msgstr "Foydalanuvchi paroli" + +msgid "IDS_EMAIL_HEADER_EDIT_RULES" +msgstr "Qoidalarni o‘zgartirish" + +msgid "IDS_EMAIL_HEADER_EMAIL_SETTINGS" +msgstr "E-pochta parametri" + +msgid "IDS_EMAIL_HEADER_MAILBOXES" +msgstr "Pochta qutilari" + +msgid "IDS_EMAIL_POP_ALERT" +msgstr "Signal" + +msgid "IDS_EMAIL_POP_FILE_ALREADY_EXISTS" +msgstr "Fayl avvaldan mavjud" + +msgid "IDS_EMAIL_POP_NO_SENDER" +msgstr "Yuboruvchi yo‘q" + +msgid "IDS_EMAIL_POP_SUCCEEDED" +msgstr "Muvaffaqiyatli bajarildi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_MAXIMUM_NUMBER_OF_FILES_IS_PD" +msgstr "Biriktirib bo‘lmaydi. Fayllarning maksimal soni: %d" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB" +msgstr "Biriktirib bo‘lmaydi. Fayllarning mumkin bo‘lgan maksimal o‘lchami: %d Kb" + +msgid "IDS_EMAIL_POP_VALIDATION_FAILED" +msgstr "Tasdiqlab bo‘lmadi" + +msgid "IDS_EMAIL_SK_REPLY_ALL" +msgstr "Barchaga j/ber." + +msgid "IDS_EMAIL_BODY_1_ITEM" +msgstr "1 element" + +msgid "IDS_EMAIL_BODY_ADD_MY_NAMECARD" +msgstr "Tashrif kartamni qo‘shish" + +msgid "IDS_EMAIL_BODY_ADD_SIGNATURE" +msgstr "Imzo qo‘shish" + +msgid "IDS_EMAIL_BODY_ALL_EMAILS" +msgstr "Barcha elektron pochta xabarlari" + +msgid "IDS_EMAIL_BODY_ALWAYS_BCC_MYSELF" +msgstr "O‘zimga har doim yashirin nusxa yuborish" + +msgid "IDS_EMAIL_BODY_BCC" +msgstr "Yashirin nusxa" + +msgid "IDS_EMAIL_BODY_BLOCK_EMAILS" +msgstr "E-pochtalarni bloklash" + +msgid "IDS_EMAIL_BODY_BODY" +msgstr "Matn" + +msgid "IDS_EMAIL_BODY_CC" +msgstr "Nusxa" + +msgid "IDS_EMAIL_BODY_CC_BCC" +msgstr "Nusxa/Yashirin nusxa" + +msgid "IDS_EMAIL_BODY_CHECK_INTERVAL" +msgstr "Intervalni tekshirish" + +msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT" +msgstr "Sukut his/qaydnoma" + +msgid "IDS_EMAIL_BODY_DRAFTS" +msgstr "Qoralamalar" + +msgid "IDS_EMAIL_BODY_EMAIL_ACCOUNTS" +msgstr "E-pochta hisob qaydnomalari" + +msgid "IDS_EMAIL_BODY_END_TIME" +msgstr "Tugatish vaqti" + +msgid "IDS_EMAIL_BODY_ENTIRE_EMAIL" +msgstr "Butun e-pochta" + +msgid "IDS_EMAIL_BODY_EXACTLY_THE_SAME_AS" +msgstr "Quyidagi bilan bir xil" + +msgid "IDS_EMAIL_BODY_EXAMPLE" +msgstr "Namuna" + +msgid "IDS_EMAIL_BODY_FROM_M_SENDER" +msgstr "Quyidagidan:" + +msgid "IDS_EMAIL_BODY_INBOX" +msgstr "Kiruvchilar" + +msgid "IDS_EMAIL_BODY_INCLUDE" +msgstr "O‘z ichiga oladi" + +msgid "IDS_EMAIL_BODY_MATCH_CRITERIA" +msgstr "Moslik kriteriyasi" + +msgid "IDS_EMAIL_BODY_NOT_USED" +msgstr "Foydalanilmaydi" + +msgid "IDS_EMAIL_BODY_NO_ACCOUNTS" +msgstr "Hisob qaydnomalar yo‘q" + +msgid "IDS_EMAIL_BODY_PD_DAYS" +msgstr "%d kun" + +msgid "IDS_EMAIL_BODY_PD_ITEMS" +msgstr "%d element" + +msgid "IDS_EMAIL_BODY_PRIORITY" +msgstr "Ustunlik" + +msgid "IDS_EMAIL_BODY_RECEIVING_OPTIONS" +msgstr "Qabul qilish opsiyalari" + +msgid "IDS_EMAIL_BODY_SECURE_CONNECTION" +msgstr "Xavfsiz ulanish" + +msgid "IDS_EMAIL_BODY_SENDING_OPTIONS" +msgstr "Yuborish variantlari" + +msgid "IDS_EMAIL_BODY_SENTBOX" +msgstr "Yuborilganlar jildi" + +msgid "IDS_EMAIL_BODY_SERVER_URL" +msgstr "Server URL-manzili" + +msgid "IDS_EMAIL_BODY_SIGNATURE" +msgstr "Imzo" + +msgid "IDS_EMAIL_BODY_SPAMBOX" +msgstr "Spam quti" + +msgid "IDS_EMAIL_BODY_START_TIME" +msgstr "Boshlash vaqti" + +msgid "IDS_EMAIL_BODY_TRASH" +msgstr "Keraksiz" + +msgid "IDS_EMAIL_BODY_WITHOUT_ATTACHMENTS" +msgstr "Biriktirmalarsiz" + +msgid "IDS_EMAIL_BUTTON_GROUP" +msgstr "Guruh" + +msgid "IDS_EMAIL_HEADER_ADD_RULES" +msgstr "Qoidalar qo‘shish" + +msgid "IDS_EMAIL_OPT_ATTACH_ITEMS" +msgstr "Elementlarni biriktirish" + +msgid "IDS_EMAIL_OPT_EXCHANGE" +msgstr "Exchange" + +msgid "IDS_EMAIL_OPT_FILE" +msgstr "Fayl" + +msgid "IDS_EMAIL_OPT_NAMECARD" +msgstr "Tashrif kartasi" + +msgid "IDS_EMAIL_OPT_OPEN_URL" +msgstr "URLni ochish" + +msgid "IDS_EMAIL_OPT_SENDER" +msgstr "Yuboruvchi" + +msgid "IDS_EMAIL_OPT_SEND_EMAIL" +msgstr "E-pochta yub." + +msgid "IDS_EMAIL_OPT_UPDATE_EXISTING" +msgstr "Mavjudni yangilash" + +msgid "IDS_EMAIL_POP_ADD_ACCOUNTS" +msgstr "Hisob qaydnomalarini qo‘shish" + +msgid "IDS_EMAIL_POP_DOWNLOADING_ATTACHMENT_ING" +msgstr "Biriktirma yuklanishi..." + +msgid "IDS_EMAIL_POP_INVALID_EMAIL_ADDRESS" +msgstr "Noto‘g‘ri e-pochta manzili" + +msgid "IDS_EMAIL_POP_LOADING_CONTENTS_ING" +msgstr "Tarkib yuklanmoqda..." + +msgid "IDS_EMAIL_POP_MAXIMUM_NUMBER_OF_ATTACHMENTS_REACHED" +msgstr "Biriktirmalar soni maksimal miqdorga yetdi" + +msgid "IDS_EMAIL_POP_MOVE_TO_SPAMBOX_Q" +msgstr "Spamlar qutisiga ko‘chirilsinmi?" + +msgid "IDS_EMAIL_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS" +msgstr "Oluvchilar qo‘shilmagan. Oluvchilarni kiritish" + +msgid "IDS_EMAIL_POP_PLEASE_FILL_ALL_THE_MANDATORY_FIELDS" +msgstr "Iltimos, barcha majburiy maydonlarni to‘ldiring" + +msgid "IDS_EMAIL_POP_SAVE_IN_DRAFTS_Q" +msgstr "Qoralamalarda saqlansinmi?" + +msgid "IDS_EMAIL_POP_THERE_IS_NO_ACCOUNT_CREATE_A_NEW_ACCOUNT_FIRST" +msgstr "Hisob qaydnomasi yo‘q. Avval hisob qaydnomasi yarating" + +msgid "IDS_EMAIL_POP_TOO_MANY_RECIPIENTS" +msgstr "Juda ko‘p oluvchilar" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DOWNLOAD" +msgstr "Yuklab olib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ENTER_TEXT" +msgstr "Matn kiritib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_LAUNCH_APPLICATION" +msgstr "Ilovani ishga tushirib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_ATTACHMENT" +msgstr "Biriktirmani ochib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_ATTACHMENT" +msgstr "Biriktirmani saqlab bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_IN_DRAFTS" +msgstr "Qoralamalarga saqlab bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEND_EMAIL" +msgstr "E-pochta yuborib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Qo‘llab-quvvatlanmaydigan fayl turi" + +msgid "IDS_EMAIL_POP_VALIDATING_ACCOUNT_ING" +msgstr "Hisob qaydnomasi tasdiqlanmoqda..." + +msgid "IDS_EMAIL_SK_RESEND" +msgstr "Qay. Yub." + +msgid "IDS_EMAIL_BODY_ACCEPT_ALL_SSL_CERTIFICATES" +msgstr "Barcha SSL sertifikatlarini qabul qilish" + +msgid "IDS_EMAIL_SK3_ACCOUNT_LIST" +msgstr "His/qayd. ro‘yx." + +msgid "IDS_EMAIL_BODY_USER_ID" +msgstr "Foydalanuvchi IDsi" + +msgid "IDS_EMAIL_POP_ACCOUNT_ALREADY_REGISTERED" +msgstr "Hisob qaydnomasi avvaldan ro‘yxatga olingan" + +msgid "IDS_EMAIL_HEADER_ATTACH_FILE" +msgstr "Fayl biriktirish" + +msgid "IDS_EMAIL_POP_ACCOUNT_ALREADY_EXISTS" +msgstr "Hisob qaydnomasi avvaldan mavjud" + +msgid "IDS_EMAIL_BODY_NO_SUBJECT" +msgstr "Mavzu yo‘q" + +msgid "IDS_EMAIL_BODY_FROM" +msgstr "Quyidagidan" + +msgid "IDS_EMAIL_BODY_NO_ADDRESS" +msgstr "Manzil mavjud emas" + +msgid "IDS_EMAIL_OPT_RECORD_SOUND" +msgstr "Tovushni yozib olish" + +msgid "IDS_EMAIL_OPT_RECORD_VIDEO" +msgstr "Video yozib olish" + +msgid "IDS_EMAIL_OPT_INSERT_IMAGE" +msgstr "Tasvir kiritish" + +msgid "IDS_EMAIL_OPT_ADD_TO_CALENDAR" +msgstr "Kalendarga qo‘shish" + +msgid "IDS_EMAIL_OPT_CHANGE_EMAIL_ADDRESS_ABB" +msgstr "E-pochta manzilini o‘zgartirish" + +msgid "IDS_EMAIL_OPT_CLIPBOARD" +msgstr "Bufer" + +msgid "IDS_EMAIL_OPT_VIEW_CONTACT_DETAILS" +msgstr "Kontakt tafsilotlarini ko‘rib chiqish" + +msgid "IDS_EMAIL_POP_SAVED_IN_DRAFTS" +msgstr "Qoralamalarda saqlandi" + +msgid "IDS_EMAIL_POP_NETWORK_BUSY" +msgstr "Tarmoq band" + +msgid "IDS_EMAIL_POP_LOGIN_ALLOWED_ONLY_EVERY_PD_MINUTES" +msgstr "Kirish faqat har %d daqiqada ruxsat etiladi" + +msgid "IDS_EMAIL_POP_HOST_NOT_FOUND" +msgstr "Xost topilmadi" + +msgid "IDS_EMAIL_POP_HOST_NOT_REACHABLE" +msgstr "Xost yetib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_NO_SERVICE" +msgstr "Xizmat yo‘q" + +msgid "IDS_EMAIL_POP_UNABLE_TO_FORWARD_DRM_CONTENTS" +msgstr "DRM tarkibni boshqa raqamga yo‘naltirib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_BLOCKED" +msgstr "Bloklangan" + +msgid "IDS_EMAIL_POP_1_EMAIL_SELECTED" +msgstr "1 ta e-pochta tanlangan" + +msgid "IDS_EMAIL_POP_PD_EMAILS_SELECTED" +msgstr "%d e-pochtalar tanlangan" + +msgid "IDS_EMAIL_POP_1_RECIPIENT_SELECTED" +msgstr "1 ta oluvchi tanlangan" + +msgid "IDS_EMAIL_POP_PD_RECIPIENTS_SELECTED" +msgstr "%d ta oluvchi tanlangan" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ADD_ACCOUNT" +msgstr "Hisob qaydnoma qo‘shib bo‘lmaydi" + +msgid "IDS_EMAIL_SK3_MOVE_HERE" +msgstr "Bu yerga ko‘ch." + +msgid "IDS_EMAIL_OPT_UNDO" +msgstr "Bekor qilish" + +msgid "IDS_EMAIL_OPT_REDO" +msgstr "Qayta bajarish" + +msgid "IDS_EMAIL_OPT_BOLD" +msgstr "Quyuq" + +msgid "IDS_EMAIL_OPT_ITALIC" +msgstr "Kursiv" + +msgid "IDS_EMAIL_OPT_UNDERLINE" +msgstr "Tagiga chizish" + +msgid "IDS_EMAIL_OPT_FONT_SIZE" +msgstr "Shrift o‘lchami" + +msgid "IDS_EMAIL_OPT_INDENT" +msgstr "Oraliq" + +msgid "IDS_EMAIL_OPT_VIEW_BY" +msgstr "Quyidagi bo‘yicha ko‘rib chiqish" + +msgid "IDS_EMAIL_OPT_IMPORTANT" +msgstr "Muhim" + +msgid "IDS_EMAIL_OPT_REFRESH" +msgstr "Yangilash" + +msgid "IDS_EMAIL_POP_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED" +msgstr "Qabul qiluvchilar soni ruxsat etilgan maksimal miqdorga (%d) yetdi" + +msgid "IDS_EMAIL_BODY_TLS" +msgstr "TLS" + +msgid "IDS_EMAIL_BODY_SSL" +msgstr "SSL" + +msgid "IDS_EMAIL_BODY_POP3" +msgstr "POP3" + +msgid "IDS_EMAIL_BODY_IMAP4" +msgstr "IMAP4" + +msgid "IDS_EMAIL_OPT_VIDEO_CALL" +msgstr "Video qo‘ng‘iroq" + +msgid "IDS_EMAIL_OPT_SEND_MESSAGE" +msgstr "Xabar yuborish" + +msgid "IDS_EMAIL_OPT_COMPOSE_EMAIL" +msgstr "E-pochta yozish" + +msgid "IDS_EMAIL_OPT_OTHER" +msgstr "Boshqa" + +msgid "IDS_EMAIL_OPT_TAKE_PHOTO" +msgstr "Suratga olish" + +msgid "IDS_EMAIL_OPT_SECURITY" +msgstr "Xavfsizlik" + +msgid "IDS_EMAIL_OPT_SIGN" +msgstr "Imzo" + +msgid "IDS_EMAIL_OPT_ENCRYPT" +msgstr "Shifrlash" + +msgid "IDS_EMAIL_POP_AUTHENTICATION_FAILED" +msgstr "Haqiqiylik tekshiruvi bajarilmadi" + +msgid "IDS_EMAIL_POP_DOWNLOAD_CANCELLED" +msgstr "Yuklab olish bekor qilindi" + +msgid "IDS_EMAIL_POP_SENDING_CANCELLED" +msgstr "Yuborish bekor qilindi" + +msgid "IDS_EMAIL_POP_ACCOUNT_EDITED" +msgstr "Hisob qaydnomasi tahrirlandi" + +msgid "IDS_EMAIL_POP_ACCOUNT_LIST_NOT_FOUND" +msgstr "Hisob qaydnomalar ro‘yxati topilmadi" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE_LOCATION" +msgstr "Tasvir joylashuvidan nusxa ko‘chirish" + +msgid "IDS_EMAIL_POP_DEVICE_STORAGE_FULL" +msgstr "Qurilma xotirasi to‘la" + +msgid "IDS_EMAIL_POP_DOWNLOAD_ATTACHMENT_Q" +msgstr "Biriktirma yuklab olinsinmi?" + +msgid "IDS_EMAIL_POP_EMAIL_DELETED_FROM_SERVER" +msgstr "E-pochta serverdan o'chirildi" + +msgid "IDS_EMAIL_POP_FAILED_TO_ACTIVATE_PDP" +msgstr "PDPni faollashtirib bo‘lmadi" + +msgid "IDS_EMAIL_POP_FAILED_TO_ADD_BLOCK_RULE" +msgstr "Bloklash qoidasini qo‘shib bo‘lmadi" + +msgid "IDS_EMAIL_POP_FAILED_TO_MARK_AS_UNREAD" +msgstr "O‘qilmagan sifatida belgilab bo‘lmadi" + +msgid "IDS_EMAIL_BODY_INCOMING_MAIL_SERVER_TYPE" +msgstr "Kiruvchi pochta serveri turi" + +msgid "IDS_EMAIL_BODY_LOADING_MORE_EMAILS_ING" +msgstr "Ko‘proq e-pochtalar yuklanmoqda..." + +msgid "IDS_EMAIL_POP_LOG_IN_FAILED" +msgstr "Kirish bajarilmadi" + +msgid "IDS_EMAIL_POP_RETRIEVING_ADDRESS_LIST_ING" +msgstr "Manzillar ro‘yxati olinmoqda..." + +msgid "IDS_EMAIL_OPT_SEND_IMAGE_VIA_EMAIL" +msgstr "Tasvirni E-pochta orqali yuborish" + +msgid "IDS_EMAIL_BODY_YOU_CAN_USE_EMAIL_ON_YOUR_DEVICE_BY_ADDING_YOUR_ACCOUNT_IF_YOU_DO_NOT_HAVE_AN_EMAIL_ACCOUNT_SIGN_UP_FIRST" +msgstr "Hisob qaydnomangizni qo‘shish orqali e-pochtadan qurilmangizda foydalanishingiz mumkin. Agar e-pochta hisob qaydnomangiz mavjud bo‘lmasa, avval ro‘yxatdan o‘ting" + +msgid "IDS_EMAIL_POP_DOWNLOADING_ATTACHMENTS_ON_THE_MOBILE_DEVICE_IS_NOT_ALLOWED_BY_EXCHANGE_SERVER_POLICY" +msgstr "Mobil qurilmada biriktirmalarni yuklab olish Exchange server tomonidan ruxsat berilmagan" + +msgid "IDS_EMAIL_POP_FAILED_TO_DELETE" +msgstr "O'chirib bo‘lmadi" + +msgid "IDS_EMAIL_POP_FAILED_TO_MOVE" +msgstr "Ko‘chirib bo‘lmadi" + +msgid "IDS_EMAIL_POP_MARKED_AS_UNREAD" +msgstr "O‘qilmagan sifatida belgilash" + +msgid "IDS_EMAIL_POP_DOWNLOAD_ATTACHMENTS_Q" +msgstr "Biriktirmalar yuklab olinsinmi?" + +msgid "IDS_EMAIL_POP_MAXIMUM_RECIPIENT_EMAIL_LENGTH_EXCEEDED" +msgstr "Qabul qiluvchi e-pochtasining maksimal uzunligidan oshib ketildi" + +msgid "IDS_EMAIL_POP_ACCOUNT_CREATION_CANCELLED" +msgstr "Hisob qaydnomasi yaratilishi bekor qilindi" + +msgid "IDS_EMAIL_MBODY_MAILBOX_LIST" +msgstr "Pochta qutilari ro‘yxati" + +msgid "IDS_EMAIL_BODY_MAILBOX_SETUP" +msgstr "Pochta qutisini o‘rnatish" + +msgid "IDS_EMAIL_POP_ALREADY_DOWNLOADING_T_HEADER" +msgstr "Avvaldan yuklab olinmoqda" + +msgid "IDS_EMAIL_POP_CANCELLING_ATTACHMENT_DOWNLOAD_ING" +msgstr "Biriktirma yuklab olinishi bekor qilinmoqda..." + +msgid "IDS_EMAIL_BODY_SENT_USING_TIZEN_MOBILE" +msgstr "TIZEN mobil yordamida yuborilgan" + +msgid "IDS_EMAIL_POP_EXCHANGE_ACTIVESYNC_ACCOUNT_NOT_AVAILABLE_NOTI" +msgstr "Exchange ActiveSync hisob qaydnomasidan foydalanib bo‘lmaydi" + +msgid "IDS_EMAIL_BODY_RE" +msgstr "Ja" + +msgid "IDS_EMAIL_BODY_FWD_T_EMAIL_PREFIX_ABB" +msgstr "Boshq/yub" + +msgid "IDS_EMAIL_BODY_EXCHANGE_ACTIVESYNC" +msgstr "Exchange ActiveSync" + +msgid "IDS_EMAIL_BODY_GMAIL" +msgstr "Gmail" + +msgid "IDS_EMAIL_BODY_HOTMAIL" +msgstr "Hotmail" + +msgid "IDS_EMAIL_BODY_AOL" +msgstr "AOL" + +msgid "IDS_EMAIL_BODY_YAHOO_E_MAIL" +msgstr "Yahoo! pochtasi" + +msgid "IDS_EMAIL_OPT_ADD_ACCOUNTS" +msgstr "Hisob qaydnomalarini qo‘shish" + +msgid "IDS_EMAIL_BODY_DOWNLOAD_MESSAGE" +msgstr "Xabar yuklab olish" + +msgid "IDS_EMAIL_POP_ALREADY_BLOCKED" +msgstr "Avval bloklangan" + +msgid "IDS_EMAIL_BODY_SEARCH_ON_SERVER" +msgstr "Serverda qidirish" + +msgid "IDS_EMAIL_OPT_RECIPIENT" +msgstr "Oluvchi" + +msgid "IDS_EMAIL_OPT_DELETE_ALL" +msgstr "Barchasi o'chirish" + +msgid "IDS_EMAIL_OPT_RECENT_HPD" +msgstr "Oxirgi (%d)" + +msgid "IDS_EMAIL_OPT_REPLY_TO_SENDER" +msgstr "Yuboruvchiga javob berish" + +msgid "IDS_EMAIL_HEADER_RECENT_T_HEADER" +msgstr "Oxirgi" + +msgid "IDS_EMAIL_OPT_CONTACT_DETAILS" +msgstr "Kontakt tafsilotlari" + +msgid "IDS_EMAIL_OPT_REPLY_TO_ALL" +msgstr "Barchaga javob berish" + +msgid "IDS_EMAIL_BODY_THREADED_LIST" +msgstr "Bog‘langan ro‘yxat" + +msgid "IDS_EMAIL_BODY_SELECT_EMAIL" +msgstr "E-pochta tanlash" + +msgid "IDS_EMAIL_OPT_VIEW_AS" +msgstr "Quyidagi sifatida ko‘rib chiqish" + +msgid "IDS_EMAIL_HEADER_BLOCK_EMAILS" +msgstr "E-pochtalarni bloklash" + +msgid "IDS_EMAIL_HEADER_DELETE" +msgstr "O'chirish" + +msgid "IDS_EMAIL_HEADER_DEFAULT_ACCOUNT" +msgstr "Sukut his/qaydnoma" + +msgid "IDS_EMAIL_HEADER_EMAIL" +msgstr "E-pochta" + +msgid "IDS_EMAIL_BODY_SHOW_EMAILS" +msgstr "E-pochtalar ko‘rsatilsin" + +msgid "IDS_EMAIL_OPT_DATE" +msgstr "Sana" + +msgid "IDS_EMAIL_HEADER_SEARCH" +msgstr "Qidirish" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_EMAIL_MESSAGE" +msgstr "E-pochta xabarini ochib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_COMPOSE_EMAIL_MESSAGE" +msgstr "E-pochta xabarini yaratib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_FAILED_TO_START_EMAIL_APPLICATION" +msgstr "E-pochta ilovasini ishga tushirib bo‘lmadi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_SUBJECT_EMPTY" +msgstr "Saqlab bo‘lmaydi. Mavzu bo‘sh" + +msgid "IDS_EMAIL_HEADER_ALL_EMAILS" +msgstr "Barcha elektron pochta xabarlari" + +msgid "IDS_EMAIL_HEADER_MAILBOX_SETUP" +msgstr "Pochta qutisini o‘rnatish" + +msgid "IDS_EMAIL_HEADER_RETRIEVING_OPTIONS" +msgstr "Qayta olish opsiyalari" + +msgid "IDS_EMAIL_HEADER_ADD_ACCOUNT" +msgstr "Hisob qaydnoma qo‘shish" + +msgid "IDS_EMAIL_HEADER_TEXT_COLOUR" +msgstr "Matn rangi" + +msgid "IDS_EMAIL_HEADER_TEXT_BACKGROUND_COLOUR" +msgstr "Matn foni rangi" + +msgid "IDS_EMAIL_BODY_ADDRESS" +msgstr "Manzil" + +msgid "IDS_EMAIL_SK_DECLINE" +msgstr "Rad etish" + +msgid "IDS_EMAIL_OPT_RESEND" +msgstr "Qayta yuborish" + +msgid "IDS_EMAIL_OPT_ATTACH_FILE" +msgstr "Fayl biriktirish" + +msgid "IDS_EMAIL_HEADER_COMPOSE_EMAIL" +msgstr "E-pochta yozish" + +msgid "IDS_EMAIL_HEADER_ADD_ACCOUNTS" +msgstr "Hisob qaydnomalarini qo‘shish" + +msgid "IDS_EMAIL_OPT_PD_MOST_RECENT_EMAILS" +msgstr "Oxirgi %d e-pochta" + +msgid "IDS_EMAIL_POP_YOU_CAN_ONLY_LOG_IN_ONCE_EVERY_PD_MINUTES" +msgstr "Har %d daqiqada faqat bir marta kirishingiz mumkin" + +msgid "IDS_EMAIL_BODY_DEFAULT_SENDING_ACCOUNT" +msgstr "Birlamchi o'rnatilgan yuborish hisob qaydnomasi" + +msgid "IDS_EMAIL_HEADER_DEFAULT_SENDING_ACCOUNT" +msgstr "Birlamchi o'rnatilgan yuborish hisob qaydnomasi" + +msgid "IDS_EMAIL_BODY_DO_NOT_MATCH_FOLDER_WITH_SERVER" +msgstr "Jildni server bilan bog‘lamang" + +msgid "IDS_EMAIL_POP_QUERYING_SERVER_INFORMATION_ING" +msgstr "Server ma’lumoti so‘rovi..." + +msgid "IDS_EMAIL_POP_SERVER_INFORMATION_QUERY_FAILED_ENTER_SERVER_INFORMATION_MANUALLY" +msgstr "Server ma’lumoti so‘rovi yuborilmadi. Server ma’lumotini qo‘lda kiriting" + +msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL" +msgstr "Xavfsizlik siyosati POP/IMAP e-pochtasidan foydalanishni cheklaydi" + +msgid "IDS_EMAIL_OPT_VIEW" +msgstr "Ko‘rib chiqish" + +msgid "IDS_EMAIL_OPT_COPY_LINK" +msgstr "'Link'dan nusxa ko‘chirish" + +msgid "IDS_EMAIL_POP_FAILED_TO_MARK_AS_READ" +msgstr "O‘qilgan sifatida belgilab bo‘lmadi" + +msgid "IDS_EMAIL_POP_MARKED_AS_READ" +msgstr "O‘qilgan sifatida belgilash" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE_URL" +msgstr "Tasvir URL-manzilidan nusxa olish" + +msgid "IDS_EMAIL_OPT_COPY_URL" +msgstr "URLdan nusxa olish" + +msgid "IDS_EMAIL_OPT_MOVE_TO_SPAMBOX" +msgstr "Spamlar qutisiga ko‘chirish" + +msgid "IDS_EMAIL_POP_DISCARD_CURRENT_MESSAGE_Q" +msgstr "Joriy xabar rad etilsinmi?" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_DECLINED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Uchrashuv so‘rovi rad etildi. Xabar Savatga ko‘chiriladi" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_TENTATIVELY_ACCEPTED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Uchrashuv so‘rovi shartli ravishda qabul qilindi. Xabar Savatga ko‘chiriladi" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_ACCEPTED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Uchrashuv so‘rovi qabul qilindi. Xabar Savatga ko‘chiriladi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_FILE" +msgstr "Fayl biriktirib bo‘lmaydi" + +msgid "IDS_EMAIL_OPT_CALENDAR" +msgstr "Kalendar" + +msgid "IDS_EMAIL_OPT_MEMO" +msgstr "Eslatma" + +msgid "IDS_EMAIL_OPT_TINY_M_TEXTSIZE" +msgstr "Mitti" + +msgid "IDS_EMAIL_OPT_SMALL_M_TEXTSIZE" +msgstr "Kichik" + +msgid "IDS_EMAIL_OPT_NORMAL_M_TEXTSIZE" +msgstr "Normal" + +msgid "IDS_EMAIL_OPT_LARGE_M_TEXTSIZE" +msgstr "Katta" + +msgid "IDS_EMAIL_OPT_HUGE_M_TEXTSIZE" +msgstr "Ulkan" + +msgid "IDS_EMAIL_BODY_ALWAYS_CC_BCC_MYSELF" +msgstr "Doim menga Nusxa/Yashirin nusxa yuborish" + +msgid "IDS_EMAIL_BODY_ALWAYS_CC_MYSELF" +msgstr "Har doim bir nusxa o‘zimga yuborilsin" + +msgid "IDS_EMAIL_BODY_SEND_READ_REPORT" +msgstr "O‘qilganlik haqida hisobot yuborish" + +msgid "IDS_EMAIL_OPT_VIEW_MODE" +msgstr "Ko‘rib chiqish rejimi" + +msgid "IDS_EMAIL_OPT_STANDARD_VIEW" +msgstr "Standart ko‘rinish" + +msgid "IDS_EMAIL_OPT_CONVERSATION_VIEW" +msgstr "Suhbat ko‘rinishi" + +msgid "IDS_EMAIL_OPT_DATE_HMOST_RECENT" +msgstr "Sana (Eng oxirgi)" + +msgid "IDS_EMAIL_OPT_DATE_HOLDEST" +msgstr "Sana (Eng eski)" + +msgid "IDS_EMAIL_OPT_SENDER_HA_TO_Z" +msgstr "Yuboruvchi (Adan Yagacha)" + +msgid "IDS_EMAIL_OPT_SENDER_HZ_TO_A" +msgstr "Yuboruvchi (Yadan Agacha)" + +msgid "IDS_EMAIL_OPT_READ_UNREAD" +msgstr "O‘qilgan/O‘qilmagan" + +msgid "IDS_EMAIL_OPT_FAVOURITES" +msgstr "Tanlanganlar" + +msgid "IDS_EMAIL_HEADER_ALL_ACCOUNTS" +msgstr "Barcha hisob qaydnomalar" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAILS" +msgstr "Elektron pochta xabarlarini tanlash" + +msgid "IDS_EMAIL_BODY_MICROSOFT_EXCHANGE_ACTIVESYNC" +msgstr "Microsoft Exchange ActiveSync" + +msgid "IDS_EMAIL_HEADER_VIEW_MODE_ABB" +msgstr "Ko‘rinish rejimi" + +msgid "IDS_EMAIL_BODY_NO_EMAILS" +msgstr "E-pochta yo‘q" + +msgid "IDS_EMAIL_OPT_DOCUMENTS_ABB" +msgstr "Hujjatlar" + +msgid "IDS_EMAIL_OPT_ATTACH" +msgstr "Biriktirish" + +msgid "IDS_EMAIL_OPT_PRINT" +msgstr "Chop etish" + +msgid "IDS_EMAIL_OPT_GALLERY" +msgstr "Galereya" + +msgid "IDS_EMAIL_OPT_MY_FILES" +msgstr "Mening fayllarim" + +msgid "IDS_EMAIL_OPT_CONTACTS" +msgstr "Kontaktlar" + +msgid "IDS_EMAIL_OPT_INSERT" +msgstr "Kiritish" + +msgid "IDS_EMAIL_BODY_SHOW_IMAGES" +msgstr "Rasmlarni ko'rsat" + +msgid "IDS_EMAIL_OPT_SORT_BY" +msgstr "Saralash" + +msgid "IDS_EMAIL_OPT_FLAG" +msgstr "Bayroq" + +msgid "IDS_EMAIL_OPT_MEETING_REQUEST" +msgstr "Uchrashish so‘rovi" + +msgid "IDS_EMAIL_OPT_ATTACHMENTS" +msgstr "Biriktirmalar" + +msgid "IDS_EMAIL_HEADER_FOLDERS" +msgstr "Jildlar" + +msgid "IDS_EMAIL_OPT_ADD_FOLDER" +msgstr "Jild qo‘shish" + +msgid "IDS_EMAIL_OPT_TITLE" +msgstr "Sarlavha" + +msgid "IDS_EMAIL_HEADER_PD_CONVERSATIONS" +msgstr "%d suhbat" + +msgid "IDS_EMAIL_HEADER_SERVER" +msgstr "Server" + +msgid "IDS_EMAIL_OPT_ALL" +msgstr "Barchasi" + +msgid "IDS_EMAIL_OPT_RECIPIENT_HA_TO_Z" +msgstr "Qabul qiluvchi (Adan Zgacha)" + +msgid "IDS_EMAIL_OPT_RECIPIENT_HZ_TO_A" +msgstr "Qabul qiluvchi (Zdan Agacha)" + +msgid "IDS_EMAIL_HEADER_SEARCH_SHAREPOINT" +msgstr "SharePointni qidirish" + +msgid "IDS_EMAIL_BODY_ENTER_PATH_OF_WINDOWS_SHAREPOINT_SERVICES_OR_WINDOWS_FILE_SHARE_HUNC_TO_ACCESS_DOCUMENTS_REMOTELY" +msgstr "Hujjatlarga masofadan kirish uchun, Windows SharePoint Xizmatlari yoki Windows faylini ulashish xizmati(UNC) yo‘lini kiriting" + +msgid "IDS_EMAIL_OPT_DELETE_FROM_CALENDAR" +msgstr "Kalendardan o'chirish" + +msgid "IDS_EMAIL_BODY_FLICK_UP_TO_SEARCH_ON_SERVER" +msgstr "Serverda qidirish uchun cherting" + +msgid "IDS_EMAIL_BODY_FLICK_UP_TO_SEARCH_ON_SERVER_AGAIN" +msgstr "Serverda yana qidirish uchun cherting" + +msgid "IDS_EMAIL_BODY_RECENT_EMAILS" +msgstr "Oxrigi e-pochtalar" + +msgid "IDS_EMAIL_BODY_DELETING_OPTIONS" +msgstr "O'chirib tashlash opsiyalari" + +msgid "IDS_EMAIL_BODY_FAVOURITES" +msgstr "Tanlanganlar" + +msgid "IDS_EMAIL_BODY_HIGH_M_PRIORITY" +msgstr "Yuqori" + +msgid "IDS_EMAIL_BODY_NORMAL_M_EMAILPRIORITY" +msgstr "Normal" + +msgid "IDS_EMAIL_BODY_LOW_M_EMAILPRIORITY" +msgstr "Past" + +msgid "IDS_EMAIL_BODY_MEETING_REQUEST" +msgstr "Uchrashish so‘rovi" + +msgid "IDS_EMAIL_BODY_MEETING_INVITATION" +msgstr "Uchrashuv taklifnomasi" + +msgid "IDS_EMAIL_OPT_SUGGEST_NEW_TIME_ABB" +msgstr "Yangi vaqt taklif qiling" + +msgid "IDS_EMAIL_BODY_VIEW_IN_CALENDAR" +msgstr "Kalendarda ko‘rib chiqish" + +msgid "IDS_EMAIL_BODY_SEARCH_EMAIL" +msgstr "E-pochtada qidirish" + +msgid "IDS_EMAIL_BODY_ALWAYS_SHOW_THIS_MESSAGE" +msgstr "Ushbu xabar doim ko‘rsatilsin" + +msgid "IDS_EMAIL_BODY_SEND_EMAIL_FROM_THIS_ACCOUNT_BY_DEFAULT" +msgstr "Ushbu hisob qaydnomasidan sukut bo‘yicha e-pochta xabarini yuborish" + +msgid "IDS_EMAIL_BODY_SMTP_SERVER" +msgstr "SMTP serveri" + +msgid "IDS_EMAIL_OPT_SEARCH" +msgstr "Qidirish" + +msgid "IDS_EMAIL_OPT_SHARE" +msgstr "Ulashish" + +msgid "IDS_EMAIL_OPT_MESSAGE" +msgstr "Xabar" + +msgid "IDS_EMAIL_OPT_EMAIL" +msgstr "E-pochta" + +msgid "IDS_EMAIL_OPT_FACEBOOK" +msgstr "Facebook" + +msgid "IDS_EMAIL_OPT_TWITTER" +msgstr "Twitter" + +msgid "IDS_EMAIL_OPT_NFC" +msgstr "NFC" + +msgid "IDS_EMAIL_BODY_SECURITY_OPTIONS" +msgstr "Xavfsizlik opsiyalari" + +msgid "IDS_EMAIL_HEADER_SECURITY_OPTIONS" +msgstr "Xavfsizlik opsiyalari" + +msgid "IDS_EMAIL_BODY_ENCRYPTION_ALGORITHM" +msgstr "Shifrlash algoritmi" + +msgid "IDS_EMAIL_BODY_SIGN_ALGORITHM" +msgstr "Imzo algoritmi" + +msgid "IDS_EMAIL_BODY_EMAIL_CERTIFICATE" +msgstr "E-pochta sertifikati" + +msgid "IDS_EMAIL_BODY_SUNDAY" +msgstr "Yakshanba" + +msgid "IDS_EMAIL_BODY_MONDAY" +msgstr "Dushanba" + +msgid "IDS_EMAIL_BODY_TUESDAY" +msgstr "Seshanba" + +msgid "IDS_EMAIL_BODY_WEDNESDAY" +msgstr "Chorshanba" + +msgid "IDS_EMAIL_BODY_THURSDAY" +msgstr "Payshaba" + +msgid "IDS_EMAIL_BODY_FRIDAY" +msgstr "Juma" + +msgid "IDS_EMAIL_BODY_SATURDAY" +msgstr "Shanba" + +msgid "IDS_EMAIL_BODY_OTHER" +msgstr "Boshqa" + +msgid "IDS_EMAIL_BODY_PHONE" +msgstr "Telefon" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DECRYPT_MESSAGE" +msgstr "Xabar shifrini ochib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DECRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" +msgstr "Xabar shifrini ochib bo‘lmaydi. Sertifikat o‘rnatilmagan" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SIGN_OR_ENCRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" +msgstr "Xabarni imzolab yoki shifrlab bo‘lmaydi. Sertifikat o‘rnatilmagan" + +msgid "IDS_EMAIL_POP_DOWNLOAD_MORE_DETAILS_TO_SHOW_S_MIME_MESSAGES_CONTINUE_Q" +msgstr "S/MIME xabarlarini ko‘rsatish uchun, qo‘shimcha ma’lumotlarni yuklang. Davom ettirilsinmi?" + +msgid "IDS_EMAIL_BODY_LAST_WEEK" +msgstr "Oxirgi hafta" + +msgid "IDS_EMAIL_BODY_PD_WEEKS_AGO" +msgstr "%d hafta avval" + +msgid "IDS_EMAIL_BODY_READ" +msgstr "O‘qish" + +msgid "IDS_EMAIL_BODY_UNREAD" +msgstr "O‘qilmagan" + +msgid "IDS_EMAIL_BODY_CLEAR" +msgstr "Tozalash" + +msgid "IDS_EMAIL_BODY_MANUAL_SETUP" +msgstr "Qo‘lda o‘rnatish" + +msgid "IDS_EMAIL_BODY_OLDER_M_HISTORY" +msgstr "Eskiroq" + +msgid "IDS_EMAIL_HEADER_CHECKING" +msgstr "Tekshirilmoqda" + +msgid "IDS_EMAIL_POP_THIS_ATTACHMENT_CANNOT_BE_DISPLAYED" +msgstr "Biriktirmani aks ettirib bo‘lmaydi" + +msgid "IDS_EMAIL_BODY_SERVER" +msgstr "Server" + +msgid "IDS_EMAIL_BODY_ADD_ACCOUNT" +msgstr "Hisob qaydnoma qo‘shish" + +msgid "IDS_EMAIL_BODY_REMOVE_EVENT_FROM_CALENDAR" +msgstr "Kalendardan voqeani olib tashlash" + +msgid "IDS_EMAIL_POP_GETTING_RECIPIENTS_CERTIFICATES_ING" +msgstr "Qabul qiluvchilar sertifikatlari olinmoqda..." + +msgid "IDS_EMAIL_POP_VALIDATING_CERTIFICATES_ING" +msgstr "Sertifikatlar tasdiqlanmoqda..." + +msgid "IDS_EMAIL_HEADER_CERTIFICATES" +msgstr "Sertifikatlar" + +msgid "IDS_EMAIL_POP_FOLLOWING_RECIPIENTS_HAVE_INVALID_CERTIFICATES" +msgstr "Quyidagi qabul qiluvchilar noto‘g‘ri sertifikatlarga ega" + +msgid "IDS_EMAIL_POP_VERIFYING_SIGNATURE_ING" +msgstr "Imzo tekshirilmoqda..." + +msgid "IDS_EMAIL_BODY_ADVANCED" +msgstr "Takomillashgan" + +msgid "IDS_EMAIL_BODY_SEARCH_BY" +msgstr "Quyidagi bo‘yicha qidirish" + +msgid "IDS_EMAIL_BODY_WINDOWS_LIVE_HOTMAIL" +msgstr "Windows Live Hotmail" + +msgid "IDS_EMAIL_BODY_DELETE_ALL_Q" +msgstr "Barchasi o'chirilsinmi?" + +msgid "IDS_EMAIL_BODY_MOVE_TO" +msgstr "Quyidagiga ko‘chirish" + +msgid "IDS_EMAIL_BODY_TOTAL_EMAILS" +msgstr "Jami e-pochta xabarlari" + +msgid "IDS_EMAIL_BODY_HEADER_ONLY" +msgstr "Faqat sarlavha" + +msgid "IDS_EMAIL_BODY_PHONE_AND_SERVER" +msgstr "Telefon va server" + +msgid "IDS_EMAIL_BODY_PHONE_ONLY" +msgstr "Faqat telefon" + +msgid "IDS_EMAIL_BODY_USE_SAME_USERNAME_PASSWORD_AS_POP3_IMAP4" +msgstr "Bir xil foydalanuvchi nomi/parolni POP3/IMAP4 sifatida foydalaning" + +msgid "IDS_EMAIL_BODY_USE_POP3_IMAP4_BEFORE_SMTP" +msgstr "SMTPdan oldin POP3/IMAP4dan foydalaning" + +msgid "IDS_EMAIL_POP_FAILED_TO_VALIDATE_ACCOUNT_CHECK_EMAIL_ADDRESS_AND_PASSWORD" +msgstr "Hisob qaydnomasini tasdiqlab bo‘lmadi. Elektron pochta manzili va parolni tekshirish" + +msgid "IDS_EMAIL_BODY_SMTP_PORT" +msgstr "SMTP porti" + +msgid "IDS_EMAIL_BODY_SHOW_PASSWORD" +msgstr "Parol ko‘rsatilsin" + +msgid "IDS_EMAIL_BODY_LAST_MONTH" +msgstr "Oxirgi oy" + +msgid "IDS_EMAIL_BODY_1_WEEK_AGO" +msgstr "1 hafta avval" + +msgid "IDS_EMAIL_OPT_LOG_IN" +msgstr "Kirish" + +msgid "IDS_EMAIL_BODY_FORWARD_WITH_FILES" +msgstr "Fayllar b-n bosh/yub." + +msgid "IDS_EMAIL_BODY_REPLY_WITH_BODY" +msgstr "Matn b-n javob berish" + +msgid "IDS_EMAIL_BODY_SAVE_ALL" +msgstr "Barchasini saqlash" + +msgid "IDS_EMAIL_OPT_NEW_MEETING_INVITATION" +msgstr "Yangi uchrashuv taklifi" + +msgid "IDS_EMAIL_OPT_MEETING_INVITATION" +msgstr "Uchrashuv taklifnomasi" + +msgid "IDS_EMAIL_HEADER_REPLY_ABB" +msgstr "Javob berish" + +msgid "IDS_EMAIL_OPT_TO_SENDER_ABB" +msgstr "Yuboruvchiga" + +msgid "IDS_EMAIL_OPT_TO_ALL_ABB" +msgstr "Barchaga" + +msgid "IDS_EMAIL_OPT_ADD_CC_BCC" +msgstr "Nusxa/Yashirin nusxa qo‘shish" + +msgid "IDS_EMAIL_OPT_MOVE_TO_CC" +msgstr "Nusxaga (Cc) ko‘chirish" + +msgid "IDS_EMAIL_OPT_MOVE_TO_BCC" +msgstr "Yashirin nusxaga (Bcc) ko‘chirish" + +msgid "IDS_EMAIL_OPT_VIEW_CONTACT" +msgstr "Kontaktlarni ko‘rib chiqish" + +msgid "IDS_EMAIL_HEADER_ATTACH_ABB" +msgstr "Biriktirish" + +msgid "IDS_EMAIL_HEADER_MOVE_TO" +msgstr "Quyidagiga ko‘chirish" + +msgid "IDS_EMAIL_HEADER_SEARCH_BY" +msgstr "Quyidagi bo‘yicha qidirish" + +msgid "IDS_EMAIL_OPT_ADVANCED" +msgstr "Takomillashgan" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_NOT_VALID_AND_IS_NOT_TRUSTED" +msgstr "Ushbu xabardagi raqamli imzo haqiqiy ham ishonchli ham emas" + +msgid "IDS_EMAIL_POP_CONNECTION_ERROR" +msgstr "Ulanish xatosi" + +msgid "IDS_EMAIL_BODY_EVERY_30_MINUTES" +msgstr "Har 30 daqiqa" + +msgid "IDS_EMAIL_BODY_EVERY_PD_HOURS" +msgstr "Har %d soat" + +msgid "IDS_EMAIL_BODY_ONCE_A_DAY" +msgstr "Kunda bir marta" + +msgid "IDS_EMAIL_POP_CERTIFICATE_DOES_NOT_MATCH_EMAIL_ADDRESS" +msgstr "Sertifikat e-pochta manziliga mos kelmadi" + +msgid "IDS_EMAIL_BODY_ENCRYPT" +msgstr "Shifrlash" + +msgid "IDS_EMAIL_BODY_SIGN" +msgstr "Imzo" + +msgid "IDS_EMAIL_POP_DECRYPTING_MESSAGE_ING" +msgstr "Xabar shifri ochilmoqda..." + +msgid "IDS_EMAIL_BODY_1_MONTH_AGO" +msgstr "1 oy oldin" + +msgid "IDS_EMAIL_OPT_ACCEPT" +msgstr "Qabul qilish" + +msgid "IDS_EMAIL_OPT_DECLINE" +msgstr "Rad etish" + +msgid "IDS_EMAIL_BODY_ALL_ACCOUNTS" +msgstr "Barcha hisob qaydnomalar" + +msgid "IDS_EMAIL_HEADER_SORT_BY" +msgstr "Saralash" + +msgid "IDS_EMAIL_SK_SORT_BY" +msgstr "Saralash" + +msgid "IDS_EMAIL_SK_DELETE_ALL" +msgstr "Bar. o'ch" + +msgid "IDS_EMAIL_SK_MOVE" +msgstr "Ko‘chir." + +msgid "IDS_EMAIL_SK_BLOCK" +msgstr "Bloklash" + +msgid "IDS_EMAIL_SK_CREATE_FOLDER" +msgstr "Jild yaratish" + +msgid "IDS_EMAIL_HEADER_CREATE_FOLDER" +msgstr "Jild yaratish" + +msgid "IDS_EMAIL_POP_FOLDER_NAME" +msgstr "Jild nomi" + +msgid "IDS_EMAIL_OPT_REPLY" +msgstr "Javob berish" + +msgid "IDS_EMAIL_OPT_FORWARD" +msgstr "Boshqaga yo‘naltirish" + +msgid "IDS_EMAIL_OPT_SHARE_VIA_EMAIL" +msgstr "E-pochta orqali ulashish" + +msgid "IDS_EMAIL_OPT_OPEN" +msgstr "Ochish" + +msgid "IDS_EMAIL_OPT_RECORD_AUDIO" +msgstr "Audio yozib olish" + +msgid "IDS_EMAIL_HEADER_SECURITY" +msgstr "Xavfsizlik" + +msgid "IDS_EMAIL_BODY_PD_ATTACHMENTS" +msgstr "%d biriktirma" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_FILE" +msgstr "Faylni ochib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_RETRIEVING_ING" +msgstr "Qayta olinmoqda..." + +msgid "IDS_EMAIL_BODY_SYNC_SCHEDULE" +msgstr "Sinx. jadvali" + +msgid "IDS_EMAIL_BODY_EVERY_PD_MINUTES" +msgstr "Har %d daqiqa" + +msgid "IDS_EMAIL_BODY_ADD_ADDRESS" +msgstr "Add address" + +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Yangi e-pochta" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Jild tanlash" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Video olish" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Quyidagiga ko‘chirish" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "E-pochta manzilini tanlash" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Qidirib bo‘lmaydi" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "O‘qilganlar" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Kontaktlar ro‘yxati, e-pochtalar ro‘yxati va e-pochta xabarlarining eng yuqorisiga o‘tish uchun, ikki marta cherting" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Yuborishdan avval javobni tahrirlang" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Javob endi yuborilsin" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Javob yuborilmasin" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Imzoni tasdiqlash" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Imzoni tasdiqlash" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Imzoni tekshirib bo‘lmaydi. Umumiy kalit o‘rnatilmagan" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Ushbu xabardagi raqamli imzo haqiqiy va ishonchli" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Xabar shifrdan chiq" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-pochtani saqlash" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Jild yaratib bo‘lmaydi" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Rasmga olish" + diff --git a/po/zh_CN.po b/po/zh_CN.po index 748c18c..2b486ba 100755 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1390,3 +1390,60 @@ msgstr "每 %d 分钟" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "添加地址" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "新邮件" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "选择文件夹" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "拍摄录像" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "移到收件人" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "选择电子邮件地址" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "无法搜索" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "已读" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "双击以转至联系人列表、电子邮件列表和电子邮件消息的顶部" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "编辑响应然后发送" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "立即发送响应" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "请勿发送响应" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "验证签名" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "验证签名" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "无法验证签名。公共密钥未安装" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "该消息上的数字签名有效且被信任" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "解密消息" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "保存电子邮件" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "不能创建文件夹" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "拍摄照片" + diff --git a/po/zh_HK.po b/po/zh_HK.po index ba085ac..6986777 100755 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -896,7 +896,7 @@ msgid "IDS_EMAIL_OPT_LARGE_M_TEXTSIZE" msgstr "大" msgid "IDS_EMAIL_OPT_HUGE_M_TEXTSIZE" -msgstr "巨大" +msgstr "超大" msgid "IDS_EMAIL_BODY_ALWAYS_CC_BCC_MYSELF" msgstr "總是抄送/密送自己" @@ -1390,3 +1390,60 @@ msgstr "每 %d 分鐘" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "加入地址" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "新電子郵件" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "選擇資料夾" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "拍攝影片" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "移動到頂部" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "選擇電子郵件地址" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "無法搜尋" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "已讀取" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "輕觸兩次以前往聯絡人清單、電子郵件清單以及電子郵件訊息的頂部" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "在發送前的編輯回應" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "現在發送回應" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "不要發送回應" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "驗證簽署" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "驗證簽署" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "無法驗證簽名。未安裝公開金鑰" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "此訊息上的數位簽署有效且受信任" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "解密訊息" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "儲存電子郵件" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "無法建立資料夾" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "拍照" + diff --git a/po/zh_SG.po b/po/zh_SG.po index 8c90810..f1fdd93 100755 --- a/po/zh_SG.po +++ b/po/zh_SG.po @@ -1390,3 +1390,60 @@ msgstr "每 %d 分钟" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "添加地址" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "新邮件" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "选择文件夹" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "拍摄视频" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "移动到收件人" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "选择电子邮件地址" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "无法搜索" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "阅读" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "双击以转至联系人列表、电子邮件列表和电子邮件消息的顶部" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "编辑响应然后发送" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "立即发送响应" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "请勿发送响应" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "验证签名" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "验证签名" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "无法验证签名。公共密钥未安装" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "该消息上的数字签名有效且被信任" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "解密消息" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "保存电子邮件" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "不能创建文件夹" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "拍摄照片" + diff --git a/po/zh_TW.po b/po/zh_TW.po index 1b4c139..6a0eb54 100755 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1390,3 +1390,60 @@ msgstr "每 %d 分鐘" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "加入地址" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "新電子郵件" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "選取資料夾" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "拍攝影片" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "移動到至" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "選擇電子郵件位址" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "無法搜尋" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "已讀取" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "輕觸兩次前往聯絡人清單、電子郵件清單以及電子郵件訊息頂部" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "在發送前編輯回應" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "立刻發送回應" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "不要發送回應" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "驗證簽名" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "驗證簽名" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "無法驗證簽名。未安裝公開金鑰" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "此訊息的數位簽署有效且受信任" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "解密訊息" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "儲存電子郵件" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "無法建立資料夾" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "拍攝圖片" + diff --git a/setting/CMakeLists.txt b/setting/CMakeLists.txt index f20138c..00da175 100755 --- a/setting/CMakeLists.txt +++ b/setting/CMakeLists.txt @@ -65,7 +65,4 @@ ADD_DEPENDENCIES(${PROJECT_NAME} email-setting-theme.edj) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR}) INSTALL(FILES ${CMAKE_SETTING_BINARY_DIR}/email-setting-theme.edj DESTINATION ${EDJDIR}) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/images/org.tizen.email.png DESTINATION ${ICONDIR}) -# i18n -#ADD_SUBDIRECTORY(po) diff --git a/setting/include/email-setting.h b/setting/include/email-setting.h index 57d3a44..5536f5d 100755 --- a/setting/include/email-setting.h +++ b/setting/include/email-setting.h @@ -121,7 +121,6 @@ struct ug_data { int setup_mailbox; int navi_flag[16]; int start_account_validation; - int b_exchange; int change_view_ing; int b_on_pause; int wds_account_creation; diff --git a/setting/src/email-setting-account-set.c b/setting/src/email-setting-account-set.c index c43d84d..78549a4 100755 --- a/setting/src/email-setting-account-set.c +++ b/setting/src/email-setting-account-set.c @@ -211,14 +211,14 @@ static void _set_gmail(struct viewdata *vd) account->user_email_address = g_strdup("<User ID>@gmail.com"); account->incoming_server_password = g_strdup(<User Password>);*/ - vconf_get_int("file/private/com.samsung.email/gmail_receiving_type", (int *)&(account->incoming_server_type)); - vconf_get_int("file/private/com.samsung.email/gmail_receiving_port", &(account->incoming_server_port_number)); - vconf_get_int("file/private/com.samsung.email/gmail_receiving_ssl", &(account->incoming_server_secure_connection)); - account->incoming_server_address = vconf_get_str("file/private/com.samsung.email/gmail_receiving_address"); - - vconf_get_int("file/private/com.samsung.email/gmail_sending_port", &(account->outgoing_server_port_number)); - vconf_get_int("file/private/com.samsung.email/gmail_sending_ssl", &(account->outgoing_server_secure_connection)); - account->outgoing_server_address = vconf_get_str("file/private/com.samsung.email/gmail_sending_address"); + vconf_get_int("file/private/org.tizen.email/gmail_receiving_type", (int *)&(account->incoming_server_type)); + vconf_get_int("file/private/org.tizen.email/gmail_receiving_port", &(account->incoming_server_port_number)); + vconf_get_int("file/private/org.tizen.email/gmail_receiving_ssl", &(account->incoming_server_secure_connection)); + account->incoming_server_address = vconf_get_str("file/private/org.tizen.email/gmail_receiving_address"); + + vconf_get_int("file/private/org.tizen.email/gmail_sending_port", &(account->outgoing_server_port_number)); + vconf_get_int("file/private/org.tizen.email/gmail_sending_ssl", &(account->outgoing_server_secure_connection)); + account->outgoing_server_address = vconf_get_str("file/private/org.tizen.email/gmail_sending_address"); account->outgoing_server_user_name = g_strdup(account->incoming_server_user_name); account->outgoing_server_password = g_strdup(account->incoming_server_password); @@ -291,14 +291,14 @@ static void _set_yahoomail(struct viewdata *vd) account->user_email_address = g_strdup("<User ID>@yahoo.com"); account->incoming_server_password = g_strdup(<User Password>);*/ - vconf_get_int("file/private/com.samsung.email/yahoo_receiving_type", (int *)&(account->incoming_server_type)); - vconf_get_int("file/private/com.samsung.email/yahoo_receiving_port", &(account->incoming_server_port_number)); - vconf_get_int("file/private/com.samsung.email/yahoo_receiving_ssl", &(account->incoming_server_secure_connection)); - account->incoming_server_address = vconf_get_str("file/private/com.samsung.email/yahoo_receiving_address"); + vconf_get_int("file/private/org.tizen.email/yahoo_receiving_type", (int *)&(account->incoming_server_type)); + vconf_get_int("file/private/org.tizen.email/yahoo_receiving_port", &(account->incoming_server_port_number)); + vconf_get_int("file/private/org.tizen.email/yahoo_receiving_ssl", &(account->incoming_server_secure_connection)); + account->incoming_server_address = vconf_get_str("file/private/org.tizen.email/yahoo_receiving_address"); - account->outgoing_server_address = vconf_get_str("file/private/com.samsung.email/yahoo_sending_address"); - vconf_get_int("file/private/com.samsung.email/yahoo_sending_port", &(account->outgoing_server_port_number)); - vconf_get_int("file/private/com.samsung.email/yahoo_sending_ssl", &(account->outgoing_server_secure_connection)); + account->outgoing_server_address = vconf_get_str("file/private/org.tizen.email/yahoo_sending_address"); + vconf_get_int("file/private/org.tizen.email/yahoo_sending_port", &(account->outgoing_server_port_number)); + vconf_get_int("file/private/org.tizen.email/yahoo_sending_ssl", &(account->outgoing_server_secure_connection)); account->outgoing_server_user_name = g_strdup(account->incoming_server_user_name); account->outgoing_server_password = g_strdup(account->incoming_server_password); @@ -372,14 +372,14 @@ static void _set_hotmail(struct viewdata *vd) account->user_email_address = g_strdup("<User ID>@aol.com"); account->incoming_server_password = g_strdup(<User Password>);*/ - vconf_get_int("file/private/com.samsung.email/hotmail_receiving_type", (int *)&(account->incoming_server_type)); - vconf_get_int("file/private/com.samsung.email/hotmail_receiving_port", &(account->incoming_server_port_number)); - vconf_get_int("file/private/com.samsung.email/hotmail_receiving_ssl", &(account->incoming_server_secure_connection)); - account->incoming_server_address = vconf_get_str("file/private/com.samsung.email/hotmail_receiving_address"); + vconf_get_int("file/private/org.tizen.email/hotmail_receiving_type", (int *)&(account->incoming_server_type)); + vconf_get_int("file/private/org.tizen.email/hotmail_receiving_port", &(account->incoming_server_port_number)); + vconf_get_int("file/private/org.tizen.email/hotmail_receiving_ssl", &(account->incoming_server_secure_connection)); + account->incoming_server_address = vconf_get_str("file/private/org.tizen.email/hotmail_receiving_address"); - account->outgoing_server_address = vconf_get_str("file/private/com.samsung.email/hotmail_sending_address"); - vconf_get_int("file/private/com.samsung.email/hotmail_sending_port", &(account->outgoing_server_port_number)); - vconf_get_int("file/private/com.samsung.email/hotmail_sending_ssl", &(account->outgoing_server_secure_connection)); + account->outgoing_server_address = vconf_get_str("file/private/org.tizen.email/hotmail_sending_address"); + vconf_get_int("file/private/org.tizen.email/hotmail_sending_port", &(account->outgoing_server_port_number)); + vconf_get_int("file/private/org.tizen.email/hotmail_sending_ssl", &(account->outgoing_server_secure_connection)); account->outgoing_server_user_name = g_strdup(account->incoming_server_user_name); account->outgoing_server_password = g_strdup(account->incoming_server_password); @@ -452,14 +452,14 @@ static void _set_aol(struct viewdata *vd) account->user_email_address = g_strdup("<User ID>@aol.com"); account->incoming_server_password = g_strdup(<User Password>);*/ - vconf_get_int("file/private/com.samsung.email/aol_receiving_type", (int *)&(account->incoming_server_type)); - vconf_get_int("file/private/com.samsung.email/aol_receiving_port", &(account->incoming_server_port_number)); - vconf_get_int("file/private/com.samsung.email/aol_receiving_ssl", &(account->incoming_server_secure_connection)); - account->incoming_server_address = vconf_get_str("file/private/com.samsung.email/aol_receiving_address"); + vconf_get_int("file/private/org.tizen.email/aol_receiving_type", (int *)&(account->incoming_server_type)); + vconf_get_int("file/private/org.tizen.email/aol_receiving_port", &(account->incoming_server_port_number)); + vconf_get_int("file/private/org.tizen.email/aol_receiving_ssl", &(account->incoming_server_secure_connection)); + account->incoming_server_address = vconf_get_str("file/private/org.tizen.email/aol_receiving_address"); - account->outgoing_server_address = vconf_get_str("file/private/com.samsung.email/aol_sending_address"); - vconf_get_int("file/private/com.samsung.email/aol_sending_port", &(account->outgoing_server_port_number)); - vconf_get_int("file/private/com.samsung.email/aol_sending_ssl", &(account->outgoing_server_secure_connection)); + account->outgoing_server_address = vconf_get_str("file/private/org.tizen.email/aol_sending_address"); + vconf_get_int("file/private/org.tizen.email/aol_sending_port", &(account->outgoing_server_port_number)); + vconf_get_int("file/private/org.tizen.email/aol_sending_ssl", &(account->outgoing_server_secure_connection)); account->outgoing_server_user_name = g_strdup(account->incoming_server_user_name); account->outgoing_server_password = g_strdup(account->incoming_server_password); diff --git a/setting/src/email-setting-utils.c b/setting/src/email-setting-utils.c index e637358..974cb63 100755 --- a/setting/src/email-setting-utils.c +++ b/setting/src/email-setting-utils.c @@ -706,7 +706,7 @@ char *setting_get_service_fail_type(int type) ret = N_("DB operation failed"); return strdup(ret); } else if (type == EMAIL_ERROR_ALREADY_EXISTS) { - ret = N_("Already exists"); + ret = _("IDS_EMAIL_POP_ACCOUNT_ALREADY_EXISTS"); return strdup(ret); } else if (type == EMAIL_ERROR_TLS_NOT_SUPPORTED) { ret = N_("Server not support TLS"); diff --git a/setting/src/email-view-account-edit.c b/setting/src/email-view-account-edit.c index 5308d77..9caf9bd 100755 --- a/setting/src/email-view-account-edit.c +++ b/setting/src/email-view-account-edit.c @@ -441,10 +441,27 @@ static void _push_naviframe(struct viewdata *vd) evas_object_smart_callback_add(p->r_button2, "clicked", _save_cb, vd); evas_object_show(p->r_button2);*/ + Evas_Object *title_ic = elm_icon_add(vd->ugd->navi_bar); + evas_object_size_hint_aspect_set(title_ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(title_ic, EINA_TRUE, EINA_TRUE); + + account_user_data_t *user_data = (account_user_data_t *)account_data->user_data; + + if (user_data->is_preset_account == GMAIL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_GMAIL, NULL); + } else if (user_data->is_preset_account == HOTMAIL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_HOTMAIL, NULL); + } else if (user_data->is_preset_account == YAHOOMAIL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_YAHOO, NULL); + } else if (user_data->is_preset_account == AOL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_AOL, NULL); + } + Elm_Object_Item *navi_it = NULL; navi_it = elm_naviframe_item_push(vd->ugd->navi_bar, p->str_account_name, p->l_button, NULL, p->layout, NULL); /*elm_object_item_part_content_set(navi_it, "title_left_btn", p->r_button1); elm_object_item_part_content_set(navi_it, "title_right_btn", p->r_button2);*/ + elm_object_item_part_content_set(navi_it, "icon", title_ic); elm_object_item_part_content_set(navi_it, "controlbar", p->cbar); evas_object_show(vd->ugd->navi_bar); } @@ -962,21 +979,25 @@ static void _onoff_cb(void *data, Evas_Object *obj, void *event_info) /* user name */ if (p->gl_sending_user_item) { elm_object_item_disabled_set(p->gl_sending_user_item, EINA_TRUE); + elm_entry_context_menu_disabled_set(p->entry_sending_username, EINA_TRUE); } /* password */ if (p->gl_sending_pw_item) { elm_object_item_disabled_set(p->gl_sending_pw_item, EINA_TRUE); + elm_entry_context_menu_disabled_set(p->entry_sending_password, EINA_TRUE); } } else { /* user name */ if (p->gl_sending_user_item) { elm_object_item_disabled_set(p->gl_sending_user_item, EINA_FALSE); + elm_entry_context_menu_disabled_set(p->entry_sending_username, EINA_FALSE); } /* password */ if (p->gl_sending_pw_item) { elm_object_item_disabled_set(p->gl_sending_pw_item, EINA_FALSE); + elm_entry_context_menu_disabled_set(p->entry_sending_password, EINA_FALSE); } } } @@ -1247,8 +1268,6 @@ static char *_gl_secure_text_get_cb(void *data, Evas_Object *obj, const char *pa debug_enter(); int index = (int)data; - struct viewdata *vd = g_vd; - struct priv_data *p = vd->priv; email_account_t *account = account_data; char buf[MAX_STR_LEN] = { 0, }; @@ -1333,8 +1352,6 @@ static char *_gl_server_type_text_get_cb(void *data, Evas_Object *obj, const cha { debug_enter(); - struct viewdata *vd = g_vd; - struct priv_data *p = vd->priv; email_account_t *account = account_data; char buf[MAX_STR_LEN] = { 0, }; @@ -1660,6 +1677,11 @@ static Evas_Object *_gl_ef_content_get_cb(void *data, Evas_Object *obj, const ch elm_entry_input_panel_return_key_disabled_set(p->entry_sending_username, EINA_TRUE); elm_entry_cnp_mode_set(p->entry_sending_username, ELM_CNP_MODE_PLAINTEXT); elm_entry_input_panel_layout_set(p->entry_sending_username, ELM_INPUT_PANEL_LAYOUT_EMAIL); + if (account_data->outgoing_server_use_same_authenticator) { + elm_entry_context_menu_disabled_set(p->entry_sending_username, EINA_TRUE); + } else { + elm_entry_context_menu_disabled_set(p->entry_sending_username, EINA_FALSE); + } evas_object_smart_callback_add(p->entry_sending_username, "changed", _backup_input_cb, p->ef_sending_username); evas_object_smart_callback_add(p->entry_sending_username, "focused", _entry_focused_cb, p->ef_sending_username); @@ -1688,6 +1710,11 @@ static Evas_Object *_gl_ef_content_get_cb(void *data, Evas_Object *obj, const ch elm_entry_password_set(p->entry_sending_password, 1); elm_entry_cnp_mode_set(p->entry_sending_password, ELM_CNP_MODE_PLAINTEXT); elm_entry_input_panel_layout_set(p->entry_sending_password, ELM_INPUT_PANEL_LAYOUT_EMAIL); + if (account_data->outgoing_server_use_same_authenticator) { + elm_entry_context_menu_disabled_set(p->entry_sending_password, EINA_TRUE); + } else { + elm_entry_context_menu_disabled_set(p->entry_sending_password, EINA_FALSE); + } evas_object_smart_callback_add(p->entry_sending_password, "changed", _backup_input_cb, p->ef_sending_password); evas_object_smart_callback_add(p->entry_sending_password, "focused", _entry_focused_cb, p->ef_sending_password); @@ -1969,21 +1996,25 @@ static void _gl_onoff_sel_cb(void *data, Evas_Object *obj, void *event_info) /* user name */ if (p->gl_sending_user_item) { elm_object_item_disabled_set(p->gl_sending_user_item, EINA_TRUE); + elm_entry_context_menu_disabled_set(p->entry_sending_username, EINA_TRUE); } /* password */ if (p->gl_sending_pw_item) { elm_object_item_disabled_set(p->gl_sending_pw_item, EINA_TRUE); + elm_entry_context_menu_disabled_set(p->entry_sending_password, EINA_TRUE); } } else { /* user name */ if (p->gl_sending_user_item) { elm_object_item_disabled_set(p->gl_sending_user_item, EINA_FALSE); + elm_entry_context_menu_disabled_set(p->entry_sending_username, EINA_FALSE); } /* password */ if (p->gl_sending_pw_item) { elm_object_item_disabled_set(p->gl_sending_pw_item, EINA_FALSE); + elm_entry_context_menu_disabled_set(p->entry_sending_password, EINA_FALSE); } } break; diff --git a/setting/src/email-view-account-options.c b/setting/src/email-view-account-options.c index 493bdfd..86e2668 100755 --- a/setting/src/email-view-account-options.c +++ b/setting/src/email-view-account-options.c @@ -905,7 +905,7 @@ static char *_gl_onoff_text_get_cb(void *data, Evas_Object *obj, const char *par } if (index == 6) { - snprintf(buf, sizeof(buf), "%s", N_("Send read report")); + snprintf(buf, sizeof(buf), "%s", _("IDS_EMAIL_BODY_SEND_READ_REPORT")); } return g_strdup(buf); @@ -1317,7 +1317,7 @@ static Evas_Object *_gl_ef_content_get_cb(void *data, Evas_Object *obj, const ch p->entry_sig = elm_entry_add(p->genlist); elm_entry_cnp_mode_set(p->entry_sig, ELM_CNP_MODE_PLAINTEXT); - elm_entry_input_panel_layout_set(p->entry_sig, ELM_INPUT_PANEL_LAYOUT_EMAIL); + elm_entry_input_panel_layout_set(p->entry_sig, ELM_INPUT_PANEL_LAYOUT_NORMAL); if (account_data->options.add_signature) { elm_entry_editable_set(p->entry_sig, TRUE); elm_entry_context_menu_disabled_set(p->entry_sig, EINA_FALSE); diff --git a/setting/src/email-view-account-setup.c b/setting/src/email-view-account-setup.c index d7acf20..e1b8664 100755 --- a/setting/src/email-view-account-setup.c +++ b/setting/src/email-view-account-setup.c @@ -35,6 +35,8 @@ static int _check_null_field(struct viewdata *vd); static int _check_preset_null_field(struct viewdata *vd); static int _check_preset_isp_name(char *addr, int isp_type); static void _read_all_entries(struct viewdata *vd); +/*static void _set_help_string(Evas_Object *eo, struct viewdata *vd);*/ +static void _set_domain_string(struct viewdata *vd); static void _next_cb(void *data, Evas_Object *obj, void *event_info); static void _save_cb(void *data, Evas_Object *obj, void *event_info); @@ -42,8 +44,8 @@ static void _manual_cb(void *data, Evas_Object *obj, void *event_info); static void _back_cb(void *data, Evas_Object *obj, void *event_info); static void _check1_clicked_cb(void *data, Evas_Object *obj, void *event_info); static void _check2_clicked_cb(void *data, Evas_Object *obj, void *event_info); -static void _check1_clicked_cb2(void *data, Evas * evas, Evas_Object *obj, void *event_info); -static void _check2_clicked_cb2(void *data, Evas * evas, Evas_Object *obj, void *event_info); +static void _check1_clicked_cb2(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _check2_clicked_cb2(void *data, Evas_Object *obj, const char *emission, const char *source); static Eina_Bool _after_validation_cb(void *data); static void _popup_ok_cb(void *data, Evas_Object *obj, void *event_info); @@ -224,6 +226,10 @@ static int _create(struct viewdata *vd) g_vd = vd; ugd->wds_account_creation = 0; + if (vd->ugd->account_info != OTHERS) { + _set_domain_string(vd); + } + _create_view(vd); vd->refresh = 1; @@ -405,9 +411,10 @@ static void _create_view(struct viewdata *vd) char *desc = g_strdup(_("IDS_EMAIL_BODY_SEND_EMAIL_FROM_THIS_ACCOUNT_BY_DEFAULT")); Evas_Object *label1 = elm_label_add(checkbox_set); - char *text = g_strconcat("<color=#838B8BFF><font_size=30><align=left>", + char *text = g_strconcat("<color=#838B8BFF><font_size=32><align=left>", desc, "</align></font_size></color>", NULL); - evas_object_event_callback_add(label1, EVAS_CALLBACK_MOUSE_UP, _check1_clicked_cb2, (void *)vd); + edje_object_signal_callback_add(elm_layout_edje_get(checkbox_set), + "elm,action,text1_clicked", "elm", _check1_clicked_cb2, (void *)vd); elm_object_text_set(label1, text); evas_object_show(label1); g_free(desc); @@ -416,9 +423,10 @@ static void _create_view(struct viewdata *vd) desc = g_strdup(_("IDS_EMAIL_BODY_SHOW_PASSWORD")); Evas_Object *label2 = elm_label_add(checkbox_set); - text = g_strconcat("<color=#838B8BFF><font_size=30><align=left>", + text = g_strconcat("<color=#838B8BFF><font_size=32><align=left>", desc, "</align></font_size></color>", NULL); - evas_object_event_callback_add(label2, EVAS_CALLBACK_MOUSE_UP, _check2_clicked_cb2, (void *)vd); + edje_object_signal_callback_add(elm_layout_edje_get(checkbox_set), + "elm,action,text2_clicked", "elm", _check2_clicked_cb2, (void *)vd); elm_object_text_set(label2, text); evas_object_show(label2); g_free(desc); @@ -432,17 +440,6 @@ static void _create_view(struct viewdata *vd) evas_object_size_hint_weight_set(button_set, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(button_set); - desc = g_strdup(N_("Setup POP3 or IMAP4?")); - Evas_Object *label3 = elm_label_add(button_set); - text = g_strconcat("<color=#838B8BFF><font_size=30><align=left>", - desc, "</align></font_size></color>", NULL); - - elm_object_text_set(label3, text); - evas_object_show(label3); - g_free(desc); - g_free(text); - elm_object_part_content_set(button_set, "text", label3); - Evas_Object *btn = elm_button_add(button_set); elm_object_text_set(btn, _("IDS_EMAIL_BODY_MANUAL_SETUP")); evas_object_smart_callback_add(btn, "clicked", _manual_cb, (void *)vd); @@ -734,6 +731,26 @@ static void _read_all_entries(struct viewdata *vd) } } +static void _set_domain_string(struct viewdata *vd) +{ + debug_log(""); + EmailSettingUGD *ugd = vd->ugd; + struct priv_data *p; + p = vd->priv; + + if (ugd->account_info == HOTMAIL) { + p->str_email_address = g_strdup("@hotmail.com"); + } else if (ugd->account_info == YAHOOMAIL) { + p->str_email_address = g_strdup("@yahoo.com"); + } else if (ugd->account_info == GMAIL) { + p->str_email_address = g_strdup("@gmail.com"); + } else if (ugd->account_info == AOL) { + p->str_email_address = g_strdup("@aol.com"); + } else { + debug_log("Unknown account type"); + } +} + static void _next_cb(void *data, Evas_Object *obj, void *event_info) { debug_log(""); @@ -1047,7 +1064,7 @@ static void _check1_clicked_cb(void *data, Evas_Object *obj, void *event_info) p->set_default_account = 0; } -static void _check1_clicked_cb2(void *data, Evas * evas, Evas_Object *obj, void *event_info) +static void _check1_clicked_cb2(void *data, Evas_Object *obj, const char *emission, const char *source) { debug_log(""); struct viewdata *vd = (struct viewdata *)data; @@ -1088,7 +1105,7 @@ static void _check2_clicked_cb(void *data, Evas_Object *obj, void *event_info) elm_entry_password_set(p->entry_password, EINA_TRUE); } -static void _check2_clicked_cb2(void *data, Evas * evas, Evas_Object *obj, void *event_info) +static void _check2_clicked_cb2(void *data, Evas_Object *obj, const char *emission, const char *source) { debug_log(""); struct viewdata *vd = (struct viewdata *)data; @@ -1533,10 +1550,20 @@ static Evas_Object *_gl_ef_content_get_cb(void *data, Evas_Object *obj, const ch if (p->str_email_address) elm_entry_entry_set(p->entry_email_address, p->str_email_address); - if (ugd->account_info != OTHERS && p->icon_get_cnt2 == 2) { + if (ugd->account_info != OTHERS && p->icon_get_cnt2 == 2 && + strcmp(ugd->start_view_type, EMAIL_BUNDLE_VAL_VIEW_ACCOUNT_ADD) != 0) { + p->clicked_object = p->entry_email_address; + evas_object_show(p->entry_email_address); + elm_object_focus_set(p->entry_email_address, EINA_TRUE); + elm_entry_cursor_begin_set(p->entry_email_address); + } + + if (ugd->account_info != OTHERS && p->icon_get_cnt2 == 3 && + strcmp(ugd->start_view_type, EMAIL_BUNDLE_VAL_VIEW_ACCOUNT_ADD) == 0) { p->clicked_object = p->entry_email_address; evas_object_show(p->entry_email_address); elm_object_focus_set(p->entry_email_address, EINA_TRUE); + elm_entry_cursor_begin_set(p->entry_email_address); } return p->ef_email_address; diff --git a/setting/src/email-view-manual-setup.c b/setting/src/email-view-manual-setup.c index 226814e..9676269 100755 --- a/setting/src/email-view-manual-setup.c +++ b/setting/src/email-view-manual-setup.c @@ -351,9 +351,29 @@ static void _push_naviframe(struct viewdata *vd) elm_object_style_set(p->l_button2, "naviframe/back_btn/default"); evas_object_show(p->l_button2); + Evas_Object *title_ic = elm_icon_add(vd->ugd->navi_bar); + evas_object_size_hint_aspect_set(title_ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(title_ic, EINA_TRUE, EINA_TRUE); + + char title_str[50] = { 0, }; + if (vd->ugd->account_info == GMAIL) { + snprintf(title_str, sizeof(title_str), "%s", dgettext("sys_string", "IDS_COM_BODY_GOOGLE")); + elm_icon_file_set(title_ic, ACCOUNT_ICON_GMAIL, NULL); + } else if (vd->ugd->account_info == HOTMAIL) { + snprintf(title_str, sizeof(title_str), "%s", _("IDS_EMAIL_BODY_WINDOWS_LIVE_HOTMAIL")); + elm_icon_file_set(title_ic, ACCOUNT_ICON_HOTMAIL, NULL); + } else if (vd->ugd->account_info == YAHOOMAIL) { + snprintf(title_str, sizeof(title_str), "%s", _("IDS_EMAIL_BODY_YAHOO_E_MAIL")); + elm_icon_file_set(title_ic, ACCOUNT_ICON_YAHOO, NULL); + } else if (vd->ugd->account_info == AOL) { + snprintf(title_str, sizeof(title_str), "%s", _("IDS_EMAIL_BODY_AOL")); + elm_icon_file_set(title_ic, ACCOUNT_ICON_AOL, NULL); + } else + snprintf(title_str, sizeof(title_str), "%s", dgettext("sys_string", "IDS_COM_BODY_OTHERS")); + Elm_Object_Item *navi_it = NULL; - navi_it = elm_naviframe_item_push(vd->ugd->navi_bar, - _("IDS_EMAIL_HEADER_ADD_ACCOUNT"), p->l_button2, NULL, p->layout, NULL); + navi_it = elm_naviframe_item_push(vd->ugd->navi_bar, title_str, p->l_button2, NULL, p->layout, NULL); + elm_object_item_part_content_set(navi_it, "icon", title_ic); elm_object_item_part_content_set(navi_it, "title_left_btn", p->r_button); elm_object_item_part_content_set(navi_it, "title_right_btn", p->l_button); evas_object_show(vd->ugd->navi_bar); diff --git a/setting/src/email-view-sync-schedule.c b/setting/src/email-view-sync-schedule.c index 198df28..5f975e4 100755 --- a/setting/src/email-view-sync-schedule.c +++ b/setting/src/email-view-sync-schedule.c @@ -68,9 +68,9 @@ static void _gl_con_cb(void *data, Evas_Object *obj, void *event_info); static int sync_schedule[7] = { 0, 30, 60, 180, 360, 720, 1440 }; -#define SYNC_STATUS_FINISHED 0 /* BIN 00000000 */ -#define SYNC_STATUS_SYNCING 1 /* BIN 00000001 */ -#define SYNC_STATUS_HAVE_NEW_MAILS 2 /* BIN 00000010 */ +#define SYNC_STATUS_FINISHED 0 /* BIN 00000000 */ +#define SYNC_STATUS_SYNCING 1 /* BIN 00000001 */ +#define SYNC_STATUS_HAVE_NEW_MAILS 2 /* BIN 00000010 */ struct priv_data { struct viewdata *vd; @@ -122,6 +122,11 @@ void setting_schedule_sync_started(struct viewdata *vd, int account_id) EmailSettingUGD *ugd = vd->ugd; p = vd->priv; + if (p == NULL) { + debug_log("priv is NULL"); + return; + } + if (ugd->account_id != account_id) { debug_log("not interested"); return; @@ -143,6 +148,11 @@ void setting_schedule_sync_finished(struct viewdata *vd, int account_id) EmailSettingUGD *ugd = vd->ugd; p = vd->priv; + if (p == NULL) { + debug_log("priv is NULL"); + return; + } + if (ugd->account_id != account_id) { debug_log("not interested"); return; @@ -332,8 +342,25 @@ static void _push_naviframe(struct viewdata *vd) evas_object_smart_callback_add(p->l_button, "clicked", _back_cb, vd); elm_object_style_set(p->l_button, "naviframe/back_btn/default"); + Evas_Object *title_ic = elm_icon_add(vd->ugd->navi_bar); + evas_object_size_hint_aspect_set(title_ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(title_ic, EINA_TRUE, EINA_TRUE); + + account_user_data_t *user_data = (account_user_data_t *)account_data->user_data; + + if (user_data->is_preset_account == GMAIL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_GMAIL, NULL); + } else if (user_data->is_preset_account == HOTMAIL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_HOTMAIL, NULL); + } else if (user_data->is_preset_account == YAHOOMAIL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_YAHOO, NULL); + } else if (user_data->is_preset_account == AOL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_AOL, NULL); + } + Elm_Object_Item *navi_it = NULL; navi_it = elm_naviframe_item_push(vd->ugd->navi_bar, account_data->account_name, p->l_button, NULL, p->layout, NULL); + elm_object_item_part_content_set(navi_it, "icon", title_ic); elm_object_item_part_content_set(navi_it, "title_right_btn", p->r_button); elm_object_item_part_content_set(navi_it, "controlbar", p->cbar); evas_object_show(vd->ugd->navi_bar); @@ -361,7 +388,7 @@ static void _create_list(struct viewdata *vd) p->genlist = elm_genlist_add(ugd->navi_bar); elm_object_style_set(p->genlist, "dialogue"); - p->itc_account.item_style = "dialogue/2text.3icon"; + p->itc_account.item_style = "dialogue/2text.1icon.6"; p->itc_account.func.text_get = _gl_account_text_get_cb; p->itc_account.func.content_get = _gl_account_content_get_cb; p->itc_account.func.state_get = NULL; @@ -902,9 +929,9 @@ static Evas_Object *_gl_account_content_get_cb(void *data, Evas_Object *obj, con struct viewdata *vd = g_vd; EmailSettingUGD *ugd = vd->ugd; struct priv_data *p = vd->priv; - Evas_Object *color_bar = NULL; + /*Evas_Object *color_bar = NULL;*/ - if (!g_strcmp0(part, "elm.icon.1")) { + /*if (!g_strcmp0(part, "elm.icon.1")) { Evas_Object *icon = elm_icon_add(ugd->navi_bar); account_user_data_t *user_data = (account_user_data_t *)account_data->user_data; @@ -932,9 +959,9 @@ static Evas_Object *_gl_account_content_get_cb(void *data, Evas_Object *obj, con evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); p->account_icon = icon; return icon; - } + }*/ - if (!g_strcmp0(part, "elm.icon.2")) { + if (!g_strcmp0(part, "elm.icon")) { if (p->syncing) { Evas_Object *pb = elm_progressbar_add(ugd->navi_bar); elm_object_style_set(pb, "list_process_small"); @@ -944,7 +971,7 @@ static Evas_Object *_gl_account_content_get_cb(void *data, Evas_Object *obj, con } } - if (!g_strcmp0(part, "elm.swallow.colorbar")) { + /*if (!g_strcmp0(part, "elm.swallow.colorbar")) { account_user_data_t *user_data = (account_user_data_t *)account_data->user_data; unsigned int val = user_data->index_color; int r = (val & 0xff000000) >> 24; @@ -959,7 +986,7 @@ static Evas_Object *_gl_account_content_get_cb(void *data, Evas_Object *obj, con evas_object_color_set(color_bar, r, g, b, a); return color_bar; - } + }*/ return NULL; } diff --git a/setting/src/email-view-sync-setup.c b/setting/src/email-view-sync-setup.c index d5a408d..0f68fe2 100755 --- a/setting/src/email-view-sync-setup.c +++ b/setting/src/email-view-sync-setup.c @@ -122,6 +122,11 @@ void setting_setup_sync_started(struct viewdata *vd, int account_id) EmailSettingUGD *ugd = vd->ugd; p = vd->priv; + if (p == NULL) { + debug_log("priv is NULL"); + return; + } + if (ugd->account_id != account_id) { debug_log("not interested"); return; @@ -143,6 +148,11 @@ void setting_setup_sync_finished(struct viewdata *vd, int account_id) EmailSettingUGD *ugd = vd->ugd; p = vd->priv; + if (p == NULL) { + debug_log("priv is NULL"); + return; + } + if (ugd->account_id != account_id) { debug_log("not interested"); return; @@ -332,8 +342,25 @@ static void _push_naviframe(struct viewdata *vd) evas_object_smart_callback_add(p->l_button, "clicked", _back_cb, vd); elm_object_style_set(p->l_button, "naviframe/back_btn/default"); + Evas_Object *title_ic = elm_icon_add(vd->ugd->navi_bar); + evas_object_size_hint_aspect_set(title_ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(title_ic, EINA_TRUE, EINA_TRUE); + + account_user_data_t *user_data = (account_user_data_t *)account_data->user_data; + + if (user_data->is_preset_account == GMAIL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_GMAIL, NULL); + } else if (user_data->is_preset_account == HOTMAIL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_HOTMAIL, NULL); + } else if (user_data->is_preset_account == YAHOOMAIL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_YAHOO, NULL); + } else if (user_data->is_preset_account == AOL) { + elm_icon_file_set(title_ic, ACCOUNT_ICON_AOL, NULL); + } + Elm_Object_Item *navi_it = NULL; navi_it = elm_naviframe_item_push(vd->ugd->navi_bar, account_data->account_name, p->l_button, NULL, p->layout, NULL); + elm_object_item_part_content_set(navi_it, "icon", title_ic); elm_object_item_part_content_set(navi_it, "title_right_btn", p->r_button); elm_object_item_part_content_set(navi_it, "controlbar", p->cbar); evas_object_show(vd->ugd->navi_bar); @@ -361,7 +388,7 @@ static void _create_list(struct viewdata *vd) p->genlist = elm_genlist_add(ugd->navi_bar); elm_object_style_set(p->genlist, "dialogue"); - p->itc_account.item_style = "dialogue/2text.3icon"; + p->itc_account.item_style = "dialogue/2text.1icon.6"; p->itc_account.func.text_get = _gl_account_text_get_cb; p->itc_account.func.content_get = _gl_account_content_get_cb; p->itc_account.func.state_get = NULL; @@ -923,9 +950,9 @@ static Evas_Object *_gl_account_content_get_cb(void *data, Evas_Object *obj, con struct viewdata *vd = g_vd; EmailSettingUGD *ugd = vd->ugd; struct priv_data *p = vd->priv; - Evas_Object *color_bar = NULL; + /*Evas_Object *color_bar = NULL;*/ - if (!g_strcmp0(part, "elm.icon.1")) { + /*if (!g_strcmp0(part, "elm.icon.1")) { Evas_Object *icon = elm_icon_add(ugd->navi_bar); account_user_data_t *user_data = (account_user_data_t *)account_data->user_data; @@ -953,9 +980,9 @@ static Evas_Object *_gl_account_content_get_cb(void *data, Evas_Object *obj, con evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); p->account_icon = icon; return icon; - } + }*/ - if (!g_strcmp0(part, "elm.icon.2")) { + if (!g_strcmp0(part, "elm.icon")) { if (p->syncing) { Evas_Object *pb = elm_progressbar_add(ugd->navi_bar); elm_object_style_set(pb, "list_process_small"); @@ -965,7 +992,7 @@ static Evas_Object *_gl_account_content_get_cb(void *data, Evas_Object *obj, con } } - if (!g_strcmp0(part, "elm.swallow.colorbar")) { + /*if (!g_strcmp0(part, "elm.swallow.colorbar")) { account_user_data_t *user_data = (account_user_data_t *)account_data->user_data; unsigned int val = user_data->index_color; int r = (val & 0xff000000) >> 24; @@ -980,7 +1007,7 @@ static Evas_Object *_gl_account_content_get_cb(void *data, Evas_Object *obj, con evas_object_color_set(color_bar, r, g, b, a); return color_bar; - } + }*/ return NULL; } diff --git a/setting/theme/email-setting-theme-macro.edc b/setting/theme/email-setting-theme-macro.edc index fe2b56a..ec03455 100755 --- a/setting/theme/email-setting-theme-macro.edc +++ b/setting/theme/email-setting-theme-macro.edc @@ -1103,8 +1103,8 @@ program { name: "play_button_press"; \ action: PLAY_SAMPLE "button-pressed" 1.0; \ } - - + + #define TEXTBLOCK_TAG \ tag: "br" "\n";\ tag: "ps" "ps";\ diff --git a/setting/theme/email-setting-theme.edc b/setting/theme/email-setting-theme.edc index dbc3337..c5feb19 100755 --- a/setting/theme/email-setting-theme.edc +++ b/setting/theme/email-setting-theme.edc @@ -1006,7 +1006,7 @@ collections { } } } - + group { name: "initial_access_hd_public"; images { @@ -1022,8 +1022,8 @@ collections { scale: 1; description { state: "default" 0.0; - min: 720 80; - max: 720 80; + min: 720 26; + max: 720 26; fixed: 0 1; rel1 { relative: 0 0; } rel2 { relative: 1 0; } @@ -1039,8 +1039,8 @@ collections { description { state: "default" 0.0; fixed: 1 1; - min: 720 80; - max: 720 80; + min: 720 248; + max: 720 248; rel1 { relative: 0 1.0; to_y: "top_padding"; } align: 0.5 0; color: 0 0 0 0; @@ -1057,7 +1057,7 @@ collections { max: 80 80; rel1 { relative: 0 0; offset: 180 0; to: "bg_for_sp"; } rel2 { relative: 0 1; offset: 260 0; to: "bg_for_sp"; } - align: 0.5 0; + align: 0.5 0.5; image.normal: "M02_email_list_icon_gmail.png"; } } @@ -1072,7 +1072,7 @@ collections { max: 80 80; rel1 { relative: 0 0; offset: 320 0; to: "bg_for_sp"; } rel2 { relative: 0 1; offset: 400 0; to: "bg_for_sp"; } - align: 0.5 0; + align: 0.5 0.5; image.normal: "M02_email_list_icon_hotmail.png"; } } @@ -1087,7 +1087,7 @@ collections { max: 80 80; rel1 { relative: 0 0; offset: 460 0; to: "bg_for_sp"; } rel2 { relative: 0 1; offset: 540 0; to: "bg_for_sp"; } - align: 0.5 0; + align: 0.5 0.5; image.normal: "M02_email_list_icon_AOL.png"; } } @@ -1098,8 +1098,8 @@ collections { scale: 1; description { state: "default" 0.0; - min: 720 50; - max: 720 50; + min: 720 16; + max: 720 16; fixed: 1 1; align: 0.5 0; rel1 { relative: 0 1.0; to_y: "bg_for_sp"; } @@ -1115,20 +1115,36 @@ collections { description { state: "default" 0.0; fixed: 1 1; - min: 620 160; - max: 620 160; + min: 620 114; + max: 620 114; rel1 { relative: 0 1.0; to_y: "middle_padding2"; } align: 0.5 0; } } part { + name: "middle_padding3"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 720 16; + max: 720 16; + fixed: 1 1; + align: 0.5 0; + rel1 { relative: 0 1.0; to_y: "label"; } + rel2 { relative: 1 1.0; to_y: "label"; } + color: 0 0 0 0; + } + } + + part { name: "list"; type: SWALLOW; scale: 1; description { state: "default" 0.0; - rel1 { relative: 0 1.0; to_y: "label"; } + rel1 { relative: 0 1.0; to_y: "middle_padding3"; } } } } @@ -1150,8 +1166,8 @@ collections { scale: 1; description { state: "default" 0.0; - min: 720 80; - max: 720 80; + min: 720 26; + max: 720 26; fixed: 0 1; rel1 { relative: 0 0; } rel2 { relative: 1 0; } @@ -1167,8 +1183,8 @@ collections { description { state: "default" 0.0; fixed: 1 1; - min: 720 80; - max: 720 80; + min: 720 248; + max: 720 248; rel1 { relative: 0 1.0; to_y: "top_padding"; } align: 0.5 0; color: 0 0 0 0; @@ -1185,7 +1201,7 @@ collections { max: 80 80; rel1 { relative: 0 0; offset: 110 0; to: "bg_for_sp"; } rel2 { relative: 0 1; offset: 190 0; to: "bg_for_sp"; } - align: 0.5 0; + align: 0.5 0.5; image.normal: "M02_email_list_icon_exchange.png"; } } @@ -1200,7 +1216,7 @@ collections { max: 80 80; rel1 { relative: 0 0; offset: 250 0; to: "bg_for_sp"; } rel2 { relative: 0 1; offset: 330 0; to: "bg_for_sp"; } - align: 0.5 0; + align: 0.5 0.5; image.normal: "M02_email_list_icon_gmail.png"; } } @@ -1215,7 +1231,7 @@ collections { max: 80 80; rel1 { relative: 0 0; offset: 390 0; to: "bg_for_sp"; } rel2 { relative: 0 1; offset: 470 0; to: "bg_for_sp"; } - align: 0.5 0; + align: 0.5 0.5; image.normal: "M02_email_list_icon_hotmail.png"; } } @@ -1230,7 +1246,7 @@ collections { max: 80 80; rel1 { relative: 0 0; offset: 530 0; to: "bg_for_sp"; } rel2 { relative: 0 1; offset: 610 0; to: "bg_for_sp"; } - align: 0.5 0; + align: 0.5 0.5; image.normal: "M02_email_list_icon_AOL.png"; } } @@ -1241,8 +1257,8 @@ collections { scale: 1; description { state: "default" 0.0; - min: 720 50; - max: 720 50; + min: 720 16; + max: 720 16; fixed: 1 1; align: 0.5 0; rel1 { relative: 0 1.0; to_y: "bg_for_sp"; } @@ -1258,20 +1274,36 @@ collections { description { state: "default" 0.0; fixed: 1 1; - min: 620 160; - max: 620 160; + min: 620 114; + max: 620 114; rel1 { relative: 0 1.0; to_y: "middle_padding2"; } align: 0.5 0; } } part { + name: "middle_padding3"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 720 16; + max: 720 16; + fixed: 1 1; + align: 0.5 0; + rel1 { relative: 0 1.0; to_y: "label"; } + rel2 { relative: 1 1.0; to_y: "label"; } + color: 0 0 0 0; + } + } + + part { name: "list"; type: SWALLOW; scale: 1; description { state: "default" 0.0; - rel1 { relative: 0 1.0; to_y: "label"; } + rel1 { relative: 0 1.0; to_y: "middle_padding3"; } } } } @@ -1285,49 +1317,22 @@ collections { repeat_events: 1; scale: 1; description { state: "default" 0.0; - min: 720 168; - max: 720 168; + min: 720 200; + max: 720 200; 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 16; - fixed: 0 1; - visible: 0; - rel1 { to: "base"; relative: 0 0; } - rel2 { to: "base"; relative: 1 0; offset: 0 16; } - align: 0.0 0.0; - } - } - - part { name: "bottom_padding"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - min: 0 16; - fixed: 0 1; - visible: 0; - rel1 { to: "base"; relative: 0 1; offset: 0 -16; } - rel2 { to: "base"; relative: 1 1; } - align: 0.0 0.0; - } - } - part { name: "left_padding"; type: RECT; scale: 1; description { state: "default" 0.0; - min: 20 0; + min: 16 0; fixed: 1 0; visible: 0; rel1 { to: "base"; relative: 0 0; } - rel2 { to: "base"; relative: 0 1; offset: 20 0; } + rel2 { to: "base"; relative: 0 1; } align: 0.0 0.0; } } @@ -1336,12 +1341,12 @@ collections { type: RECT; scale: 1; description { state: "default" 0.0; - min: 20 0; + min: 16 0; fixed: 1 0; visible: 0; - rel1 { to: "base"; relative: 1 0; offset: -20 0; } + rel1 { to: "base"; relative: 1 0; } rel2 { to: "base"; relative: 1 1; } - align: 0.0 0.0; + align: 1.0 0.0; } } @@ -1349,20 +1354,20 @@ collections { type: RECT; scale: 1; description { state: "default" 0.0; - min: 0 68; + min: 0 100; fixed: 1 0; visible: 0; align: 0.0 0.5; rel1 { - relative: 1.0 1.0; + relative: 1.0 0.0; to_x: "left_padding"; - to_y: "top_padding"; + to_y: "base"; } rel2 { - relative: 0.0 1.0; - offset: 0 68; + relative: 0.0 0.0; + offset: 0 100; to_x: "right_padding"; - to_y: "top_padding"; + to_y: "base"; } } } @@ -1371,7 +1376,7 @@ collections { type: RECT; scale: 1; description { state: "default" 0.0; - min: 0 68; + min: 0 100; fixed: 1 0; visible: 0; align: 0.0 0.5; @@ -1381,9 +1386,9 @@ collections { to_y: "subbox.1"; } rel2 { - relative: 0.0 0.0; + relative: 0.0 1.0; to_x: "right_padding"; - to_y: "bottom_padding"; + to_y: "base"; } } } @@ -1413,21 +1418,22 @@ collections { part { name: "text.1"; type: SWALLOW; + ignore_flags: ON_HOLD; mouse_events: 1; scale: 1; description { state: "default" 0.0; - min: 0 30; + min: 0 32; fixed: 0 1; align: 0 0.5; rel1 { relative: 1.0 0.0; - offset: 16 19; + offset: 16 34; to_x: "checkbox.1"; to_y: "subbox.1"; } rel2 { relative: 0.0 1.0; - offset: 0 -19; + offset: 0 -34; to_x: "right_padding"; to_y: "subbox.1"; } @@ -1459,27 +1465,44 @@ collections { part { name: "text.2"; type: SWALLOW; + ignore_flags: ON_HOLD; mouse_events: 1; scale: 1; description { state: "default" 0.0; - min: 0 30; + min: 0 32; fixed: 0 1; align: 0 0.5; rel1 { relative: 1.0 0.0; - offset: 16 19; + offset: 16 34; to_x: "checkbox.2"; to_y: "subbox.2"; } rel2 { relative: 0.0 1.0; - offset: 0 -19; + offset: 0 -34; to_x: "right_padding"; to_y: "subbox.2"; } } } } + + programs { + program { + name: "text1_clicked"; + signal: "mouse,up,1"; + source: "text.1"; + action: SIGNAL_EMIT "elm,action,text1_clicked" "elm"; + } + + program { + name: "text2_clicked"; + signal: "mouse,up,1"; + source: "text.2"; + action: SIGNAL_EMIT "elm,action,text2_clicked" "elm"; + } + } } group { name: "account_add_manual_button"; @@ -1489,8 +1512,8 @@ collections { repeat_events: 1; scale: 1; description { state: "default" 0.0; - min: 720 161; - max: 720 161; + min: 720 128; + max: 720 128; color: 0 0 0 0; align: 0.0 0.5; } @@ -1501,11 +1524,11 @@ collections { scale: 1; description { state: "default" 0.0; - min: 0 5; + min: 0 40; fixed: 0 1; visible: 0; rel1 { to: "base"; relative: 0 0; } - rel2 { to: "base"; relative: 1 0; offset: 0 5; } + rel2 { to: "base"; relative: 1 0; } align: 0.0 0.0; } } @@ -1517,9 +1540,9 @@ collections { min: 0 16; fixed: 0 1; visible: 0; - rel1 { to: "base"; relative: 0 1; offset: 0 -16; } + rel1 { to: "base"; relative: 0 1; } rel2 { to: "base"; relative: 1 1; } - align: 0.0 0.0; + align: 0.0 1.0; } } @@ -1527,11 +1550,11 @@ collections { type: RECT; scale: 1; description { state: "default" 0.0; - min: 78 0; + min: 117 0; fixed: 1 0; visible: 0; rel1 { to: "base"; relative: 0 0; } - rel2 { to: "base"; relative: 0 1; offset: 78 0; } + rel2 { to: "base"; relative: 0 1; } align: 0.0 0.0; } } @@ -1540,35 +1563,12 @@ collections { type: RECT; scale: 1; description { state: "default" 0.0; - min: 78 0; + min: 117 0; fixed: 1 0; visible: 0; - rel1 { to: "base"; relative: 1 0; offset: -78 0; } + rel1 { to: "base"; relative: 1 0; } rel2 { to: "base"; relative: 1 1; } - align: 0.0 0.0; - } - } - - part { name: "text"; - type: SWALLOW; - mouse_events: 0; - scale: 1; - description { state: "default" 0.0; - min: 0 30; - fixed: 0 1; - align: 0 0.5; - rel1 { - relative: 1.0 1.0; - offset: 0 19; - to_x: "left_padding"; - to_y: "top_padding"; - } - rel2 { - relative: 0.0 1.0; - offset: 0 49; - to_x: "right_padding"; - to_y: "top_padding"; - } + align: 1.0 0.0; } } @@ -1582,9 +1582,8 @@ collections { align: 0 0; rel1 { relative: 1.0 1.0; - offset: 0 19; to_x: "left_padding"; - to_y: "text"; + to_y: "top_padding"; } rel2 { relative: 0.0 0.0; @@ -1598,14 +1597,27 @@ collections { group { name: "account_add"; parts { + part { name: "bg"; + type: RECT; + repeat_events: 1; + scale: 1; + description { state: "default" 0.0; + min: 720 623; + max: 720 623; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + align: 0.0 0.0; + } + } part { name: "list"; type: SWALLOW; scale: 1; description { state: "default" 0.0; align: 0 0; - rel1 { relative: 0 0; } - rel2 { relative: 1 0; offset: 0 295; } + rel1 { relative: 0 0; to: "bg"; } + rel2 { relative: 1 0; offset: 0 295; to: "bg"; } } } @@ -1613,11 +1625,11 @@ collections { type: SWALLOW; scale: 1; description { state: "default" 0.0; - min: 720 168; - max: 720 168; + min: 720 200; + max: 720 200; align: 0 0; rel1 { relative: 0 1.0; to_y: "list"; } - rel2 { relative: 1 1.0; offset: 0 168; to_y: "list"; } + rel2 { relative: 1 1.0; offset: 0 200; to_y: "list"; } } } @@ -1625,11 +1637,11 @@ collections { type: SWALLOW; scale: 1; description { state: "default" 0.0; - min: 720 161; - max: 720 161; + min: 720 128; + max: 720 128; align: 0 0; rel1 { relative: 0 1.0; to_y: "checkbox_set"; } - rel2 { relative: 1 1.0; offset: 0 161; to_y: "checkbox_set"; } + rel2 { relative: 1 1.0; offset: 0 128; to_y: "checkbox_set"; } } } } @@ -1642,15 +1654,15 @@ collections { repeat_events: 1; scale: 1; description { state: "default" 0.0; - min: 720 750; - max: 720 750; + min: 720 753; + max: 720 753; rel1 { relative: 0.0 0.0;} rel2 { relative: 1.0 1.0;} color: 0 0 0 0; align: 0.0 0.0; } } - + part { name: "list"; type: SWALLOW; scale: 1; @@ -1665,11 +1677,11 @@ collections { type: SWALLOW; scale: 1; description { state: "default" 0.0; - min: 720 168; - max: 720 168; + min: 720 200; + max: 720 200; align: 0 0; rel1 { relative: 0 1.0; to_y: "list"; } - rel2 { relative: 1 1.0; offset: 0 168; to_y: "list"; } + rel2 { relative: 1 1.0; offset: 0 200; to_y: "list"; } } } @@ -1677,16 +1689,16 @@ collections { type: SWALLOW; scale: 1; description { state: "default" 0.0; - min: 720 161; - max: 720 161; + min: 720 128; + max: 720 128; align: 0 0; rel1 { relative: 0 1.0; to_y: "checkbox_set"; } - rel2 { relative: 1 1.0; offset: 0 161; to_y: "checkbox_set"; } + rel2 { relative: 1 1.0; offset: 0 128; to_y: "checkbox_set"; } } } } } - + 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"; @@ -1724,7 +1736,7 @@ collections { } GENLIST_DESCRIPTION_FLIP_ENABLED } - + part { name: "elm.padding.icon.right"; clip_to: "disclip"; type: RECT; @@ -1741,7 +1753,7 @@ collections { visible: 0; } } - + part { name: "elm.text"; clip_to: "disclip"; type: TEXT; @@ -1809,7 +1821,7 @@ collections { //GENLIST_PROGRAM_PLAY_BUTTON_PRESS } } - + group { name: "elm/bg/base/email_default"; parts { part { name: "base"; @@ -1819,17 +1831,17 @@ collections { color: 210 210 210 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; } diff --git a/viewer/CMakeLists.txt b/viewer/CMakeLists.txt new file mode 100755 index 0000000..021818c --- /dev/null +++ b/viewer/CMakeLists.txt @@ -0,0 +1,63 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(ug-email-viewer-efl C) + +SET(SRCS + ./src/email-viewer.c + ./src/email-viewer-webview.c + ./src/email-viewer-logic.c + ./src/email-viewer-utils.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_MAILVIEWER_SOURCE_DIR "${CMAKE_SOURCE_DIR}/viewer") +SET(CMAKE_MAILVIEWER_BINARY_DIR "${CMAKE_BINARY_DIR}/viewer") +INCLUDE_DIRECTORIES(${CMAKE_MAILVIEWER_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs-viewer REQUIRED appcore-efl ui-gadget-1 x11 elementary ecore glib-2.0 gobject-2.0 + status capi-media-metadata-extractor capi-media-image-util + email-service edbus capi-appfw-application vconf ewebkit2 contacts-service sysman bundle dlog efreet-mime mm-fileinfo mmutil-jpeg libmedia-utils calendar ethumb) + +FOREACH(flag ${pkgs-viewer_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") +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("-DFACTORYFS=\"$ENV{FACTORYFS}\"") +ADD_DEFINITIONS("-DDATAFS=\"$ENV{DATAFS}\"") +ADD_DEFINITIONS("-D_POPUP_WITH_LIST") +ADD_DEFINITIONS("-D_NEW_CT_SVC_API") + +ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} email-common ${CMAKE_LDFLAGS} ${pkgs-viewer_LDFLAGS}) + +ADD_CUSTOM_TARGET(email-viewer-theme.edj + COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images + ${CMAKE_MAILVIEWER_SOURCE_DIR}/theme/email-viewer-theme.edc ${CMAKE_MAILVIEWER_BINARY_DIR}/email-viewer-theme.edj + DEPENDS ${CMAKE_MAILVIEWER_SOURCE_DIR}/theme/email-viewer-theme.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} email-viewer-theme.edj) + +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR}) +INSTALL(FILES ${CMAKE_MAILVIEWER_BINARY_DIR}/email-viewer-theme.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_MAILVIEWER_SOURCE_DIR}/theme/_email_default.html DESTINATION ${DATADIR}) + diff --git a/viewer/include/email-viewer-js.h b/viewer/include/email-viewer-js.h new file mode 100755 index 0000000..93a7c54 --- /dev/null +++ b/viewer/include/email-viewer-js.h @@ -0,0 +1,44 @@ +/* + * 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_VIEWER_JS_H_ +#define EMAIL_VIEWER_JS_H_ + +#include "email-viewer.h" + +#define VIEWER_JS_FILE_PATH JSDIR"/email-viewer.js" + +#define COMPOSER_JS_REMOVE_IM "IM_JS.parentNode.removeChild(IM_JS);" + +#define VIEWER_JS_GET_HTML_BODY_CONTENT \ + "function getHtmlContent() { " \ + "console.log(\"Here\");" \ + "var elements = document.getElementsByTagName(\"body\");" \ + "console.log(\"elements[0].outerHTML : \" + elements[0].outerHTML);" \ + "return elements[0].outerHTML;" \ + "};" \ + "getHtmlContent();" + +#define VIEWER_JS_INSERT_IM(s) \ + "var IM_JS = document.createElement(\"script\");" \ + "IM_JS.setAttribute(\"type\", \"text/javascript\");" \ + "IM_JS.setAttribute(\"src\", \""s"\");" \ + "console.log(IM_JS);" \ + "if (typeof IM_JS != \"undefined\")" \ + "document.getElementsByTagName(\"head\")[0].appendChild(IM_JS);" + + +#endif /* EMAIL_VIEWER_JS_H_ */ diff --git a/viewer/include/email-viewer-logic.h b/viewer/include/email-viewer-logic.h new file mode 100755 index 0000000..0638294 --- /dev/null +++ b/viewer/include/email-viewer-logic.h @@ -0,0 +1,118 @@ +/* + * 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_viewer_logic_H__ +#define __DEF_email_viewer_logic_H__ + +#include <Elementary.h> +#include <glib.h> +#include <sys/time.h> +#include "email-api.h" +#include "email-types.h" + +#define ATTACH_MAX 65536 +#define CONCAT_FORMAT(x, y, z) ((x<<16) | (y<<8) | z) + +typedef struct _EmailViewerPrivate EmailViewerPrivate; +struct _EmailViewerPrivate { + int mailbox_id; + int mail_id; + int account_id; + unsigned int download_id; + gboolean download_mail; + gboolean multi_body; + gboolean b_att_open; + gboolean b_att_save; + gboolean b_all_att_save; + char *file_id; + char *att_file_id; + int file_size; + int attachment_id; + unsigned int view_creation_id; + unsigned int download_progress_id; + unsigned int download_fail_id; + unsigned int email_handle; + unsigned int download_all_email_handle[ATTACH_MAX]; + unsigned int download_all_cnt; + unsigned int download_all_fail_cnt; + email_mail_data_t *mail_info; + email_attachment_data_t *attachment_info; + email_address_info_list_t *addrs_info_list; + int attachment_count; +}; + +typedef struct _EmailViewerProp EmailViewerProp; +struct _EmailViewerProp { + int composer_type; + int account_id; + int mail_id; + int status; + int status2; + int priority; + int att_len; + int real_att_len; + + char *src_box; + char *sender; + char *sender_display_name; + char *recipient_to; + char *recipient_cc; + char *recipient_bcc; + char *from_contact_name; + char *to_contact_name; + char *cc_contact_name; + char *bcc_contact_name; + + unsigned int date; + unsigned int time; + time_t mktime; + + char *subject; + char *charset; + char *body; + char *body_uri; + GList *attachments; + + gint64 total_att_size; + + gboolean has_html; + gboolean has_attachment; + gboolean seen; + gboolean lock; + gboolean favorite; + gboolean request_report; + int body_download; +}; + +typedef struct _EmailAttachmentType EmailAttachmentType; +struct _EmailAttachmentType { + int attach_id; + int index; + char *name; + char *path; + gint64 size; + gboolean download_yn; + gboolean drm; + gboolean inline_content; +}; + +gboolean viewer_get_internal_mail_info(EmailViewerProp *prop, EmailViewerPrivate *email_data); +void viewer_make_internal_mail(EmailViewerProp *prop, EmailViewerPrivate *email_data); +void viewer_set_mail_seen(EmailViewerProp *prop, email_mail_data_t * mail_info); + +#endif /* __DEF_email_viewer_logic_H__ */ + +/* EOF */ diff --git a/viewer/include/email-viewer-utils.h b/viewer/include/email-viewer-utils.h new file mode 100755 index 0000000..88aeeaa --- /dev/null +++ b/viewer/include/email-viewer-utils.h @@ -0,0 +1,69 @@ +/* + * 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_viewer_utils_H__ +#define __DEF_email_viewer_utils_H__ + +#include <glib.h> +#include <glib/gprintf.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include <Elementary.h> +#include "email-viewer.h" + +#undef STR_VALID +#define STR_VALID(str) \ + ((str != NULL && strlen(str) > 0) ? TRUE : FALSE) + +#undef STR_INVALID +#define STR_INVALID(str) \ + ((str == NULL || strlen(str) == 0) ? TRUE : FALSE) + +#undef STR_LEN +#define STR_LEN(str) \ + ({ char *s = str; (s) ? strlen(s) : 0; }) + +/* GList iterator */ +#define LIST_ITER_START(i, list) \ + for (i = 0; i < g_list_length(list); ++i) + +#define LIST_ITER_START_REVERSE(i, list) \ + for (i = (g_list_length(list) - 1); i >= 0; --i) + +#define LIST_ITER_GET(i, list) \ + g_list_nth(list, i) + +#define LIST_ITER_GET_DATA(i, list) \ + g_list_nth_data(list, i) + +typedef void (*popup_cb) (void *data, Evas_Object *obj, void *event_info); + +Evas_Object *viewer_make_thumbnail(char *path, Evas_Object *parent); +void _create_notify(EmailViewerUGD *ug_data, char *header, char *content, + int btn_num, char *btn1_lb, popup_cb resp_cb1, + char *btn2_lb, popup_cb resp_cb2, popup_cb resp_block_cb); + +int _find_folder_id_using_folder_type(EmailViewerUGD *ug_data, email_mailbox_type_e mailbox_type); + +void _move_email(EmailViewerUGD *ug_data, int dest_folder_id, gboolean is_delete); +void _delete_email(EmailViewerUGD *ug_data); +void _notify_mailbox_size(EmailViewerUGD *ug_data, char *size); + +#endif /* __DEF_email_viewer_utils_H__ */ + +/* EOF */ diff --git a/viewer/include/email-viewer-webview.h b/viewer/include/email-viewer-webview.h new file mode 100755 index 0000000..f1a922c --- /dev/null +++ b/viewer/include/email-viewer-webview.h @@ -0,0 +1,33 @@ +/* + * 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_viewer_webview_H__ +#define __DEF_email_viewer_webview_H__ + +#include "email-viewer.h" + +#define EMAIL_TMP_FILE_PATH DATADIR"/_email.tmp" + +Evas_Object *viewer_get_webview(EmailViewerUGD *ug_data, gboolean has_html); +void viewer_set_webview_content(EmailViewerUGD *ug_data, int reload); +char *viewer_set_html_content_file(EmailViewerWebview *wvd); +void viewer_coords_ewk_to_evas(Evas_Object *view, int ewkX, int ewkY, int *evasX, int *evasY); +void viewer_coords_evas_to_ewk(Evas_Object *view, int evasX, int evasY, int *ewkX, int *ewkY); +Eina_Bool viewer_send_message(void *data); + +#endif /* __DEF_email_viewer_webview_H__ */ + +/* EOF */ diff --git a/viewer/include/email-viewer.h b/viewer/include/email-viewer.h new file mode 100755 index 0000000..84ed1b9 --- /dev/null +++ b/viewer/include/email-viewer.h @@ -0,0 +1,342 @@ +/* + * 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_viewer_H_ +#define _DEF_email_viewer_H_ + +#include <Elementary.h> +#include <libintl.h> +#include <appcore-efl.h> +#undef _ +#include <ui-gadget-module.h> +#include <Evas.h> +#include <Ecore_X.h> +#include <Edje.h> +#include <Eina.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> +#include <time.h> +#include <E_DBus.h> +#include <sysman.h> +#include <aul.h> +#include <db-util.h> +#include <vconf.h> +#include <vconf-keys.h> +#include <glib.h> +#include <glib-object.h> +#include <EWebKit2.h> + +#include "email-viewer-logic.h" +#include <contacts-svc.h> +#include "email-utils.h" +#include "email-locale.h" + +#define VIEWER_PACKAGE "email-viewer" +#define EV_THEME_PATH EDJDIR"/email-viewer-theme.edj" +#define PATH_VTCALL "/usr/bin/vtmain" + +#define _EDJ(o) elm_layout_edje_get(o) + +#define DEFAULT_CHARSET "UTF-8" + +#define MAILBOX_STR_MAX 128 +#define MAX_STR_LEN 1024 +#define MAX_LABEL_LEN 512 + +#define CONTACTUI_REQ_ADD_PHONE_NUMBER 19 +#define CONTACTUI_REQ_ADD_EMAIL 20 +#define CONTACTUI_REQ_ADD_URL 21 +#define CONTACTUI_REQ_SELECT_UPDATE_ITEM 11 +#define CONTACTUI_UPDATE_PHONE_NUMBER 0 +#define CONTACTUI_UPDATE_EMAIL 1 +#define CONTACTUI_UPDATE_HOMEPAGE 2 +#define CONTACT_PHONE_CONTACT 0 +#define CONTACTUI_REQ_CONTACT_DETAIL_INFO_VIEW 43 + +#define EMAIL_VIEW_MAX_TO_COUNT 50 +#define EMAIL_VIEW_MAX_CC_COUNT 50 +#define EMAIL_VIEW_MAX_BCC_COUNT 50 + +#define ICON_REPLY IMGDIR"/M02_controlbar_icon_reply.png" +#define ICON_REPLY_ALL IMGDIR"/M02_controlbar_icon_reply.png" +#define ICON_FORWARD IMGDIR"/M02_controlbar_icon_forward.png" +#define ICON_MOVE IMGDIR"/M02_controlbar_icon_move.png" +#define ICON_DELETE IMGDIR"/M02_controlbar_icon_delete.png" +#define ICON_RESEND IMGDIR"/M02_controlbar_icon_resend.png" +#define ICON_ADD_TO_CALENDAR IMGDIR"/M02_controlbar_icon_add_calendar.png" +#define ICON_CONTROLBAR_MORE IMGDIR"/M02_controlbar_icon_more.png" + +#define EMAIL_DEFAULT_HTML "file://"DATADIR"/_email_default.html" + +#define EMAIL_VIEWER_NOC_WIDTH 710.0 +#define EMAIL_VIEWER_NOC_HIGHT 949.0 + +typedef enum { + EMAIL_POPUP_BODY_DN_OK = 10, + EMAIL_POPUP_EMAIL_DELETE_OK, + EMAIL_POPUP_EMAIL_MOVETO_SPAM_OK, + EMAIL_POPUP_EMAIL_MOVETO_INBOX_OK, + EMAIL_POPUP_BODY_DN_CANCEL, + EMAIL_POPUP_ATT_DN_CANCEL, + EMAIL_POPUP_ATT_ALL_DN_CANCEL, + EMAIL_POPUP_HTML_LOAD_CANCEL, + EMAIL_POPUP_MAX +} EV_POPUP_RESPONSE_ID; + +typedef enum { + BODY_TYPE_TEXT = 0, + BODY_TYPE_HTML = 1, + BODY_TYPE_INVALID +} MESSAGE_BODY_TYPE; + +typedef enum { + EMAIL_VIEWER_PROGRESSBAR_ATT = 0, + EMAIL_VIEWER_PROGRESSBAR_ATT_ALL, + EMAIL_VIEWER_PROGRESSBAR_BODY, + EMAIL_VIEWER_PROGRESSBAR_HTML, + EMAIL_VIEWER_PROGRESSBAR_MAX +} EMAIL_VIEWER_PROGRESSBAR_TYPE; + +typedef struct list_data list_data; +struct list_data { + gchar *mailbox_ug; + + gchar *from; + gchar *title; + gchar *timeordate; + gchar *group_title; + gboolean is_attachment; + gboolean is_seen; + gboolean is_sending_now; + gboolean is_body_download; + gint mail_id; + gint account_id; + gint chksel; + gint idx; + Elm_Object_Item *item; +}; + +typedef struct _EMAIL_CONTACT_LIST_INFO_S { + int index; +#ifndef _NEW_CT_SVC_API + char *first_name; + char *last_name; +#else + char *display; +#endif + char *email_address; + char display_name[40]; +} EMAIL_CONTACT_LIST_INFO_S; + +typedef struct _EmailViewerWebview EmailViewerWebview; +struct _EmailViewerWebview { + Evas_Coord minw, minh; + Evas_Coord w, h; + int content_w, content_h; + float zoom_rate; + + MESSAGE_BODY_TYPE body_type; + MESSAGE_BODY_TYPE body_type_prev; + + char *html_content; + char *text_content; + char *uri; + char *charset; +}; + +typedef struct ug_data EmailViewerUGD; +struct ug_data { + Evas_Object *base; + ui_gadget_h ug; + + /* base */ + Evas *evas; + Evas_Object *win_main; + Evas_Object *layout_main; + Evas_Object *sub_ly; + Evas_Object *bg; + Elm_Theme *theme; + int main_w; + int main_h; + + /* arguments */ + int account_id; + int account_type; + int mail_id; + char *mailbox_name; + int mailbox_id; + char account_email_address[MAX_STR_LEN]; + + /* for flick */ + int prev_mail_id; + int next_mail_id; + int list_prev_idx; + int list_next_idx; + int mail_list_cur_idx; + GList *mail_list; + + /* flags */ + int got_att; + int b_internal; + int subject_onoff_flag; + int attach_onoff_flag; + int reset_view; + int b_noc; + int b_direct_destroy; + int b_partial_body; + int m_is_multi_touch; + int scroller_locked; + int b_contact_ug_launched; + int display_download_result; + int option_header_opened; + Eina_Bool b_load_finished; + Eina_Bool b_show_remote_images; + Eina_Bool is_webview_scrolling; + Eina_Bool is_main_scroller_scrolling; + + /* for ug create */ + int create_contact_arg; + int update_contact_type; + + /* Scalable UI */ + float scale_factor; + float webview_width; + float webview_height; + float webview_width_landscape; + float webview_height_landscape; + int webview_margin; + int webview_margin_landscape; + + /* for cut link */ + Ecore_Timer *cutlink_timer; + Eina_Bool last_click_have_link; + Eina_Bool last_click_have_image; + char *last_click_link_url; + char *last_click_link_text; + char *last_click_img_url; + + /* rotation */ + int isRotate; + + /* mailbox list */ + email_mailbox_type_e mailbox_type; + GList *folder_list; + email_mailbox_t *move_mailbox_list; + int move_mailbox_count; + + /* Evas Object */ + Evas_Object *dg_subject; + Evas_Object *lb_subject; + Evas_Object *ly_subject; + Evas_Object *dg_attach; + Evas_Object *addrs; + Evas_Object *scroller; + Evas_Object *conformant; + Evas_Object *webview_bx; + Evas_Object *main_bx; + Evas_Object *navi_bar; + Evas_Object *ctr_bar; + Evas_Object *up_ctrl_bar; + Evas_Object *webview; + Evas_Object *webkit; + Evas_Object *con_popup; + Evas_Object *timeout_popup; + Evas_Object *select_info; + Evas_Object *selectioninfo_layout; + Evas_Object *notify; + Evas_Object *pb_notify; + Evas_Object *pb_notify_lb; + Evas_Object *dn_popup; + Evas_Object *dn_progress; + Evas_Object *att_progress; + Evas_Object *b_btn; + Evas_Object *prev_btn; + Evas_Object *more_btn; + Evas_Object *next_btn; + Evas_Object *dn_btn; + Evas_Object *partial_dn_btn; + Evas_Object *partial_dn_btn_bx; + Evas_Object *top_sp; + Evas_Object *noc_bx; + Evas_Object *noc; + Evas_Object *to_mbe; + Evas_Object *cc_mbe; + Evas_Object *bcc_mbe; + + Evas_Object *opt_btn1; + Evas_Object *opt_btn2; + Evas_Object *opt_btn3; + Evas_Object *move_cbar; + + Evas_Object *to_ly; + Evas_Object *cc_ly; + Evas_Object *bcc_ly; + Evas_Object *from_btn; + Evas_Object *attach_hd_ly; + Evas_Object **attach_ex_ly; + Evas_Object *attach_hd_bk; + Evas_Object **attach_ex_bk; + + Evas_Object *progress_bar[ATTACH_MAX]; + Evas_Object *progress_bar_ly[ATTACH_MAX]; + + Elm_Object_Item *reply_ctr_it; + Elm_Object_Item *replyall_ctr_it; + Elm_Object_Item *forward_ctr_it; + Elm_Object_Item *calendar_ctr_it; + Elm_Object_Item *resend_ctr_it; + Elm_Object_Item *move_ctr_it; + Elm_Object_Item *del_ctr_it; + Elm_Object_Item *more_ctr_it; + + Elm_Object_Item *more_ctx_block_item; + + Elm_Object_Item *navi_main_it; + Elm_Object_Item *navi_move_it1; + Elm_Object_Item *navi_move_it2; + + E_DBus_Connection *edbus_conn; + EmailViewerWebview *webview_data; + EmailViewerPrivate *email_data; + EmailViewerProp *property; + + Evas_Object *gl; + Elm_Genlist_Item_Class itc1; + Elm_Genlist_Item_Class itc2; + Elm_Genlist_Item_Class itc3; + + GList *from_list; + GList *to_list; + GList *cc_list; + GList *bcc_list; + + ui_gadget_h ug_composer; + ui_gadget_h ug_image_viewer; + ui_gadget_h ug_contacts_search; + ui_gadget_h ug_calendar_edit; + + Ecore_Idler *idler; + Ecore_Timer *timer; +}; + +void _hide_view(EmailViewerUGD *ug_data); +void _launch_composer(EmailViewerUGD *ug_data, int type); + +#endif /* __DEF_email-viewer_H__ */ + +/* EOF */ diff --git a/viewer/src/email-viewer-logic.c b/viewer/src/email-viewer-logic.c new file mode 100755 index 0000000..383510c --- /dev/null +++ b/viewer/src/email-viewer-logic.c @@ -0,0 +1,492 @@ +/* + * 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-viewer-logic.h" +#include "email-viewer-utils.h" +#include "email-utils.h" +#include "email-engine.h" +#include "email-debug.h" + +void _set_mail_flags(EmailViewerProp *prop, EmailViewerPrivate *email_data); +static void _set_status(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _set_priority(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _set_lock(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _set_favorite(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _set_request_report(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _set_body_download(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_sender(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_date(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_recipients(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_subject(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_body(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_html_body(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_attachments(EmailViewerProp *prop, email_attachment_data_t *attachment_info, int attachment_count); +static char *_str_removing_quots(char *src); + +gboolean viewer_get_internal_mail_info(EmailViewerProp *prop, EmailViewerPrivate *email_data) +{ + debug_log(""); + + int err = 0; + + if (email_data->mail_info) { + debug_log("mail_info freed"); + email_free_mail_data(&(email_data->mail_info), 1); + email_data->mail_info = NULL; + } + + if (email_data->attachment_info && email_data->attachment_count > 0) { + debug_log("attachment_info freed p[%p] n[%d]", email_data->attachment_info, email_data->attachment_count); + email_free_attachment_data(&(email_data->attachment_info), email_data->attachment_count); + email_data->attachment_info = NULL; + email_data->attachment_count = 0; + } + + if ((err = email_get_mail_data(email_data->mail_id, &(email_data->mail_info))) != EMAIL_ERROR_NONE) { + debug_log("fail to get mail data - err (%d)", err); + return FALSE; + } + + if (email_data->mail_info == NULL) { + debug_log("mail_info is NULL"); + return FALSE; + } + + if ((err = email_get_attachment_data_list(email_data->mail_id, &(email_data->attachment_info), &(email_data->attachment_count))) != EMAIL_ERROR_NONE) { + debug_log("fail to get attachment data - err (%d)", err); + return FALSE; + } + + _set_mail_flags(prop, email_data); + + return TRUE; +} + +void viewer_make_internal_mail(EmailViewerProp *prop, EmailViewerPrivate *email_data) +{ + debug_log(""); + email_mail_data_t *mail_info = email_data->mail_info; + email_attachment_data_t *attachment_info = email_data->attachment_info; + int attachment_count = email_data->attachment_count; + + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + /* sender */ + _make_internal_sender(prop, mail_info); + + /* datetime */ + _make_internal_date(prop, mail_info); + + /* recipient to, cc, bcc */ + _make_internal_recipients(prop, mail_info); + + /* subject */ + _make_internal_subject(prop, mail_info); + + /* body */ + _make_internal_body(prop, mail_info); + + /* html body */ + _make_internal_html_body(prop, mail_info); + + /* attachment */ + _make_internal_attachments(prop, attachment_info, attachment_count); +} + +void viewer_set_mail_seen(EmailViewerProp *prop, email_mail_data_t *mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + int err = 0; + + if (!mail_info->flags_seen_field) { + debug_log("newly arrived mail"); + + int mail_id = mail_info->mail_id; + err = email_set_flags_field(mail_info->account_id, &mail_id, 1, EMAIL_FLAGS_SEEN_FIELD, 1, 1); + + if (err != EMAIL_ERROR_NONE) { + debug_log("Failed to modify mail seen flag"); + } + } +} + +void _set_mail_flags(EmailViewerProp *prop, EmailViewerPrivate *email_data) +{ + debug_log(""); + email_mail_data_t *mail_info = email_data->mail_info; + + _set_status(prop, mail_info); + _set_priority(prop, mail_info); + _set_lock(prop, mail_info); + _set_favorite(prop, mail_info); + _set_request_report(prop, mail_info); + _set_body_download(prop, mail_info); +} + +static void _set_status(EmailViewerProp *prop, email_mail_data_t *mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + prop->status2 = mail_info->save_status; + debug_log("status2 (%d)", prop->status2); +} + +static void _set_priority(EmailViewerProp *prop, email_mail_data_t *mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + prop->priority = mail_info->priority; + debug_log("priority (%d)", prop->priority); +} + +static void _set_lock(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + prop->lock = mail_info->lock_status ? TRUE : FALSE; + debug_log("lock (%d)", prop->lock); +} + +static void _set_favorite(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + prop->favorite = mail_info->flags_flagged_field; + debug_log("favorite (%d)", prop->favorite); +} + +static void _set_request_report(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + email_account_t *account = NULL; + if (!email_engine_get_account_full_data(mail_info->account_id, &account)) { + debug_log("Failed email_engine_get_account_full_data"); + return; + } + + if (account) { + account_user_data_t *ud = (account_user_data_t*)account->user_data; + if (ud != NULL) { + debug_log("send_read_report is %d", ud->send_read_report); + prop->request_report = ud->send_read_report; + } + email_free_account(&account, 1); + account = NULL; + } + debug_log("request_report (%d)", prop->request_report); +} + +static void _set_body_download(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + prop->body_download = mail_info->body_download_status; + debug_log("body_download (%d)", prop->body_download); +} + +static void _make_internal_sender(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + gchar **vector; + if (STR_VALID(mail_info->full_address_from)) { + if (STR_VALID(prop->sender)) { + free(prop->sender); + prop->sender = NULL; + } + debug_log("head from (%s)", mail_info->full_address_from); + + vector = g_strsplit_set(mail_info->full_address_from, "<>", -1); + if (vector == NULL) { + debug_log("vector == NULL"); + return; + } + + prop->sender_display_name = _str_removing_quots(vector[0]); + prop->sender = g_strdup(vector[1]); + + debug_log("display name (%s)", prop->sender_display_name); + debug_log("sender (%s)", prop->sender); + + g_strfreev(vector); + } + debug_log("sender (%s)", prop->sender ? prop->sender : "@niL"); +} + +static void _make_internal_date(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + + prop->mktime = mail_info->date_time; +} + +static void _make_internal_recipients(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + + if (STR_VALID(mail_info->full_address_to)) { + if (STR_VALID(prop->recipient_to)) { + free(prop->recipient_to); + prop->recipient_to = NULL; + } + prop->recipient_to = g_strdup(mail_info->full_address_to); + } + debug_log("recipient to (%s)", prop->recipient_to); + + if (STR_VALID(mail_info->full_address_cc)) { + if (STR_VALID(prop->recipient_cc)) { + free(prop->recipient_cc); + prop->recipient_cc = NULL; + } + prop->recipient_cc = g_strdup(mail_info->full_address_cc); + } + debug_log("recipient cc (%s)", prop->recipient_cc); + + if (STR_VALID(mail_info->full_address_bcc)) { + if (STR_VALID(prop->recipient_bcc)) { + free(prop->recipient_bcc); + prop->recipient_bcc = NULL; + } + prop->recipient_bcc = g_strdup(mail_info->full_address_bcc); + } + debug_log("recipient bcc (%s)", prop->recipient_bcc); +} + +static void _make_internal_subject(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + if (!STR_VALID(mail_info->subject)) { + debug_log("mail_info->head->subject is not valid"); + return; + } + + if (STR_VALID(prop->subject)) { + free(prop->subject); + prop->subject = NULL; + } + prop->subject = g_strdup(mail_info->subject); + + debug_log("subject (%s)", prop->subject); +} + +static void _make_internal_body(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + char *body_plain = NULL; + + if (STR_VALID(mail_info->file_path_plain)) { + if (STR_VALID(prop->body_uri)) { + free(prop->body_uri); + prop->body_uri = NULL; + } + prop->body_uri = g_strdup(mail_info->file_path_plain); + } + + char *plain_charset = email_parse_get_filename_from_path(mail_info->file_path_plain); + + if (STR_VALID(plain_charset)) { + if (STR_VALID(prop->charset)) { + free(prop->charset); + prop->charset = NULL; + } + prop->charset = g_strdup(plain_charset); + debug_log("charset: %s", prop->charset); + g_free(plain_charset); + } + + if (STR_VALID(mail_info->file_path_plain)) { + if (STR_VALID(prop->body)) { + free(prop->body); + prop->body = NULL; + } + body_plain = email_get_buff_from_file(mail_info->file_path_plain, 0); + prop->body = body_plain; + } +} + +static void _make_internal_html_body(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + + char *html = mail_info->file_path_html; + + if (STR_VALID(html)) { + debug_log("html body path (%s)", html); + + if (STR_VALID(prop->body_uri)) { + free(prop->body_uri); + prop->body_uri = NULL; + } + + prop->body_uri = g_strdup(mail_info->file_path_html); + prop->has_html = TRUE; + + if (prop->body_uri) { + if (STR_VALID(prop->charset)) { + free(prop->charset); + prop->charset = NULL; + } + + prop->charset = email_parse_get_filename_from_path(prop->body_uri); + debug_log("charset: %s", prop->charset); + } + } +} + +static void _make_internal_attachments(EmailViewerProp *prop, email_attachment_data_t *attachment_info, int attachment_count) +{ + debug_log(""); + int index = 0; + + if (attachment_info == NULL) { + debug_log("attachment_info is NULL"); + return; + } + + if (attachment_count <= 0) { + debug_log("attachment_count <= 0"); + return; + } + + if (prop->attachments) { + debug_log("Free the existing attachments.."); + int i; + LIST_ITER_START(i, prop->attachments) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, prop->attachments); + if (info->name) + free(info->name); + if (info->path) + free(info->path); + } + g_list_free(prop->attachments); + prop->attachments = NULL; + prop->real_att_len = 0; + prop->total_att_size = 0; + prop->att_len = 0; + } + + int i = 0; + for (i = 0; i < attachment_count; i++) { + email_attachment_data_t *attachment = attachment_info + i; + debug_log("attachments id (%d)", attachment->attachment_id); + debug_log("attachments name (%s)", attachment->attachment_name ? attachment->attachment_name : "@niL"); + debug_log("attachments path (%s)", attachment->attachment_path ? attachment->attachment_path : "@niL"); + debug_log("attachments size (%d)", attachment->attachment_size); + debug_log("attachments download (%d)", attachment->save_status); + debug_log("attachments drm (%d)", attachment->drm_status); + debug_log("attachments inline? (%d)", attachment->inline_content_status); + + EmailAttachmentType *attachment_item = g_new0(EmailAttachmentType, 1); + if (attachment_item) { + /* id */ + attachment_item->attach_id = attachment->attachment_id; + + /* index */ + attachment_item->index = ++index; + + /* name */ + if (STR_VALID(attachment->attachment_name)) { + attachment_item->name = g_strdup(attachment->attachment_name); + } + /* path */ + if (STR_VALID(attachment->attachment_path)) { + if (STR_INVALID(attachment_item->name)) { + attachment_item->name = email_parse_get_filename_from_path(attachment->attachment_path); + } + attachment_item->path = g_strdup(attachment->attachment_path); + } + /* size */ + if (attachment->attachment_size <= 0) { + attachment_item->size = email_get_file_size(attachment->attachment_path); + } else { + attachment_item->size = (guint64) attachment->attachment_size; + debug_log("attachment_item size (%d)", (gint) attachment_item->size); + } + + /* downloaded. */ + attachment_item->download_yn = attachment->save_status ? TRUE : FALSE; + + /* drm */ + attachment_item->drm = attachment->drm_status ? TRUE : FALSE; + + /* inline */ + attachment_item->inline_content = attachment->inline_content_status ? TRUE : FALSE; + if (!attachment->inline_content_status) { + (prop->real_att_len)++; + prop->total_att_size += (guint64) attachment->attachment_size; + } + + (prop->att_len)++; + + prop->attachments = g_list_append(prop->attachments, attachment_item); + } + } + + if (prop->real_att_len > 0) + prop->has_attachment = TRUE; +} + +static char *_str_removing_quots(char *src) +{ + int i = 0, j = 0; + int len = strlen(src); + char *ret; + + ret = (char *)malloc(len + 1); + memset(ret, 0, len + 1); + + for (i = 0; i < len; i++) { + if (src[i] != '"') { + ret[j++] = src[i]; + } + } + + return ret; +} + +/* EOF */ diff --git a/viewer/src/email-viewer-utils.c b/viewer/src/email-viewer-utils.c new file mode 100755 index 0000000..5d18639 --- /dev/null +++ b/viewer/src/email-viewer-utils.c @@ -0,0 +1,486 @@ +/* + * 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 <sys/time.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <time.h> +#include <errno.h> +#include <Ethumb.h> +#include <mm_file.h> +#include <mm_util_jpeg.h> +#include <mm_error.h> +#include <Efreet_Mime.h> +#include <status.h> + +#include "email-viewer-utils.h" +#include "email-common-types.h" +#include "email-utils.h" +#include "email-engine.h" +#include "email-debug.h" + +#define MYFILE_IMGE_PATH "/opt/apps/com.samsung.myfile/res/images" +#define MB_SVC_FILE_PATH_LEN_MAX 255 + +static void _thumbnail_generated_cb(void *data, Ethumb *e, Eina_Bool success); + +struct _mtd { + char *category; /* Not used at present */ + char *key; + char *icon_path; + char *exe_path; /* Not used at present */ + char *param; /* Not used at present */ + int is_direct_launch; /* Not used at present */ + int need_sort_param; /* Not used at present */ + int having_a_thumbnail; /* Not used at present */ +}; + +static struct _mtd mtd_main[] = { + {"ETC", "etc", MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL, NULL, TRUE, FALSE, FALSE}, + {"Music", "audio/mpeg", IMGDIR "/U01_icon_music.png", "music", NULL, TRUE, TRUE, TRUE}, + {"Music", "audio/x-wav", IMGDIR "/U01_icon_music.png", "music", NULL, TRUE, TRUE, TRUE}, + {"Music", "audio/x-ms-wma", IMGDIR "/U01_icon_music.png", "music", NULL, TRUE, TRUE, TRUE}, + {"Voice", "audio/AMR", IMGDIR "/U01_icon_music.png", "voicerecorder", NULL, TRUE, FALSE, FALSE}, + {"Video", "video/x-msvideo", IMGDIR "/U01_icon_video.png", "video-player", NULL, TRUE, FALSE, TRUE}, + {"Video", "video/mp4", IMGDIR "/U01_icon_video.png", "video-player", NULL, TRUE, FALSE, TRUE}, + {"Video", "video/3gpp", IMGDIR "/U01_icon_video.png", "video-player", NULL, TRUE, FALSE, TRUE}, + {"Video", "video/x-ms-asf", IMGDIR "/U01_icon_video.png", "video-player", NULL, TRUE, FALSE, TRUE}, + {"Video", "video/x-ms-wmv", IMGDIR "/U01_icon_video.png", "video-player", NULL, TRUE, FALSE, TRUE}, + {"Image", "image/svg+xml", MYFILE_IMGE_PATH "/myfile_icon_svg.png", "svg-viewer", NULL, TRUE, FALSE, FALSE}, + {"PDF", "application/pdf", IMGDIR "/U01_icon_pdf.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Doc", "application/msword", IMGDIR "/U01_icon_word.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Doc", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", IMGDIR "/U01_icon_word.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"PPT", "application/vnd.ms-powerpoint", IMGDIR "/U01_icon_ppt.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"PPT", "application/vnd.openxmlformats-officedocument.presentationml.presentation", IMGDIR "/U01_icon_ppt.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Text", "text/plain", IMGDIR "/U01_icon_text.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Text", "text/html", IMGDIR "/U01_icon_html.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Excel", "application/vnd.ms-excel", IMGDIR "/U01_icon_excel.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", IMGDIR "/U01_icon_excel.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Flash", "application/x-shockwave-flash", IMGDIR "/U01_icon_swf.png", "flash-player", NULL, TRUE, FALSE, TRUE}, + {"None", "video/x-flv", IMGDIR "/U01_icon_video.png", NULL, NULL, FALSE, FALSE, FALSE}, + {"Java", "text/vnd.sun.j2me.app-descriptor", MYFILE_IMGE_PATH "/myfile_icon_java.png", NULL, NULL, FALSE, FALSE, FALSE}, + {"Java", "application/x-java-archive", MYFILE_IMGE_PATH "/myfile_icon_java.png", NULL, NULL, FALSE, FALSE, FALSE}, + {"SVG", "image/svg+xml", MYFILE_IMGE_PATH "/myfile_icon_svg.png", "svg-viewer", NULL, TRUE, FALSE, FALSE}, + {"ETC", "etc", MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL, NULL, TRUE, FALSE, FALSE}, + {"VCARD", "text/directory", MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL, NULL, FALSE, FALSE, FALSE}, + {"VCALENDAR", "text/calendar", MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL, NULL, FALSE, FALSE, FALSE}, + {NULL, NULL, NULL, NULL} +}; + +static void _popup_response_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } +} + +Evas_Object *viewer_make_thumbnail(char *path, Evas_Object *parent) +{ + debug_log(""); + + if (parent == NULL) { + debug_log("parent obj is NULL"); + return NULL; + } + + Evas_Object *icon = NULL; + icon = elm_icon_add(parent); + + if (STR_INVALID(path)) { + elm_icon_file_set(icon, MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL); + evas_object_size_hint_min_set(icon, 30, 30); + return icon; + } + + char *default_icon_path = NULL; + char thumb_path[MB_SVC_FILE_PATH_LEN_MAX] = { 0, }; + + debug_log("file path: %s", path); + efreet_mime_init(); + char *type = (char *)efreet_mime_type_get(ecore_file_file_get(path)); + char *mime_type = g_strdup(type); + debug_log("mime type: %s", mime_type); + efreet_mime_shutdown(); + + if (mime_type) { + struct _mtd *mtd = (struct _mtd *)mtd_main; + + while (mtd && mtd->key) { + if (strncmp(mime_type, mtd->key, strlen(mime_type)) == 0) { + debug_log("key (%s)", mtd->key); + debug_log("type(%s)", type); + default_icon_path = g_strdup(mtd->icon_path); + debug_log("default_icon_path: %s", default_icon_path); + break; + } + mtd++; + } + + if (strncmp(mime_type, "image", 5) == 0) { + Ethumb *e = NULL; + e = ethumb_new(); + + ethumb_thumb_format_set(e, ETHUMB_THUMB_FDO); + ethumb_thumb_aspect_set(e, ETHUMB_THUMB_KEEP_ASPECT); + ethumb_thumb_size_set(e, 40, 40); + ethumb_thumb_category_set(e, "thumbnails"); + ethumb_thumb_dir_path_set(e, DATADIR); + ethumb_file_set(e, path, NULL); + + const char *thumb_path_tmp = NULL; + const char *key = NULL; + ethumb_thumb_path_get(e, &thumb_path_tmp, &key); + + if (!ecore_file_exists(thumb_path_tmp)) { + if (!ethumb_exists(e)) { + ethumb_generate(e, _thumbnail_generated_cb, NULL, NULL); + } + } + + if (thumb_path_tmp) { + debug_log("thumbnail path = %s", thumb_path); + snprintf(thumb_path, sizeof(thumb_path), "%s", thumb_path_tmp); + } + + ethumb_free(e); + } else if (strncmp(mime_type, "video", 5) == 0) { + int ret = 0; + int video_track_num = 0; + int video_w = 0; + int video_h = 0; + int thumb_len = 0; + void *stream = NULL; + MMHandleType content_attrs = 0; + + ret = mm_file_create_content_attrs(&content_attrs, path); + + if (ret == MM_ERROR_NONE && content_attrs) { + mm_file_get_attrs(content_attrs, NULL, + MM_FILE_CONTENT_VIDEO_TRACK_COUNT, + &video_track_num, NULL); + + if (video_track_num) { + mm_file_get_attrs(content_attrs, NULL, + MM_FILE_CONTENT_VIDEO_WIDTH, &video_w, + MM_FILE_CONTENT_VIDEO_HEIGHT, &video_h, + MM_FILE_CONTENT_VIDEO_THUMBNAIL, &stream, + &thumb_len, NULL); + + if (stream) { + int mm_ret = 0; + char filename[1024] = { 0, }; + char *file_name = NULL; + char *file_ext = NULL; + + email_parse_get_filename_n_ext_from_path(path, &file_name, &file_ext); + snprintf(filename, sizeof(filename), "%s%s%s%s", DATADIR"/", file_name, file_ext, ".jpg"); + g_free(file_name); + g_free(file_ext); + + mm_ret = mm_util_jpeg_encode_to_file(filename, stream, + video_w, video_h, + MM_UTIL_JPEG_FMT_RGB888, 70); + + if (ecore_file_exists(filename)) { + snprintf(thumb_path, sizeof(thumb_path), "%s", filename); + debug_log("file : %s, thumb_path : %s", path, thumb_path); + } + } + } + + mm_file_destroy_content_attrs(content_attrs); + } else { + debug_log("fail to mm_file_create_content_attrs - error(%x)", ret); + } + } else if (strncmp(mime_type, "audio", 5) == 0) { + int tag_ret = 0; + MMHandleType tag_attrs = 0; + + tag_ret = mm_file_create_tag_attrs(&tag_attrs, path); + + if (tag_ret == MM_ERROR_NONE && tag_attrs) { + char *error = NULL; + char *art_name = NULL; + int art_len = 0; + int art_size = 0; + + tag_ret = mm_file_get_attrs(tag_attrs, &error, + MM_FILE_TAG_ARTWORK, &art_name, &art_len, + MM_FILE_TAG_ARTWORK_SIZE, &art_size, NULL); + + if (tag_ret != MM_ERROR_NONE) { + if (error) { + debug_log("fail to mm_file_get_attrs() - ret(%x), error(%s)", tag_ret, error); + free(error); + } else { + debug_log("fail to mm_file_get_attrs() - ret(%x)", tag_ret); + } + } + + if (art_name) { + gchar *mm_path = NULL; + int fd = g_file_open_tmp(NULL, &mm_path, NULL); + + if (fd != -1) { + FILE *fp = fdopen(fd, "w"); + if (fp == NULL) { + debug_log("fail to fdopen()"); + close(fd); + } else { + int n = fwrite((unsigned char *)art_name, sizeof(char), art_size, fp); + if (n != art_size) { + debug_log("fail to fwrite()"); + fclose(fp); + close(fd); + } else { + fflush(fp); + fclose(fp); + close(fd); + } + } + } + + snprintf(thumb_path, sizeof(thumb_path), "%s", mm_path); + debug_log("file : %s, albumart_path : %s", path, thumb_path); + if (mm_path) + g_free(mm_path); + } + } + + mm_file_destroy_tag_attrs(tag_attrs); + } + + if (strlen(thumb_path) > 0) { + debug_log("thumbpath: %s", thumb_path); + elm_icon_file_set(icon, thumb_path, NULL); + } else { + if (default_icon_path) { + debug_log("thumbpath: %s", default_icon_path); + elm_icon_file_set(icon, default_icon_path, NULL); + } else { + elm_icon_file_set(icon, MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL); + evas_object_size_hint_min_set(icon, 30, 30); + } + } + } else { + elm_icon_file_set(icon, MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL); + evas_object_size_hint_min_set(icon, 30, 30); + } + + g_free(mime_type); + g_free(default_icon_path); + + return icon; +} + +static void _thumbnail_generated_cb(void *data, Ethumb *e, Eina_Bool success) +{ + debug_log(""); + + if (success) { + debug_log("Succeed in thumbnail generation"); + } else { + debug_log("Fail to create thumbnail"); + } +} + +void _create_notify(EmailViewerUGD *ug_data, char *header, char *content, + int btn_num, char *btn1_lb, popup_cb resp_cb1, + char *btn2_lb, popup_cb resp_cb2, popup_cb resp_block_cb) +{ + debug_log(""); + Evas_Object *notify = NULL; + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } + + notify = elm_popup_add(ug_data->win_main); + debug_log("notify: %p, win_main: %p", notify, ug_data->win_main); + if (!notify) { + debug_log("elm_popup_add returns NULL"); + return; + } + evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + ug_data->notify = notify; + + if (header) { + elm_object_part_text_set(notify, "title,text", header); + } + + if (content) { + elm_object_text_set(notify, content); + } + + if (btn_num == 0) { + elm_popup_timeout_set(notify, 2.0); + evas_object_smart_callback_add(notify, "block,clicked", resp_block_cb, ug_data); + } + + if (btn_num == 1) { + Evas_Object *btn1 = elm_button_add(notify); + elm_object_style_set(btn1, "popup_button/default"); + elm_object_text_set(btn1, btn1_lb); + elm_object_part_content_set(notify, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", resp_cb1, ug_data); + } + if (btn_num == 2) { + Evas_Object *btn1 = elm_button_add(notify); + elm_object_style_set(btn1, "popup_button/default"); + elm_object_text_set(btn1, btn1_lb); + elm_object_part_content_set(notify, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", resp_cb1, ug_data); + + Evas_Object *btn2 = elm_button_add(notify); + elm_object_style_set(btn2, "popup_button/default"); + elm_object_text_set(btn2, btn2_lb); + elm_object_part_content_set(notify, "button2", btn2); + evas_object_smart_callback_add(btn2, "clicked", resp_cb2, ug_data); + } + + evas_object_show(notify); +} + +int _find_folder_id_using_folder_type(EmailViewerUGD *ug_data, email_mailbox_type_e mailbox_type) +{ + debug_log(""); + if (ug_data->folder_list == NULL) { + return -1; + } + + int i = 0; + int cnt = g_list_length(ug_data->folder_list); + for (i = 0; i < cnt; i++) { + EmailMailboxNameAndAlias *nameandalias = (EmailMailboxNameAndAlias *) g_list_nth_data(ug_data->folder_list, i); + int folder_id = nameandalias->mailbox_id; + if (mailbox_type == nameandalias->mailbox_type) { + return folder_id; + } + } + + return -1; +} + +void _move_email(EmailViewerUGD *ug_data, int dest_folder_id, gboolean is_delete) +{ + debug_log(""); + + EmailViewerPrivate *priv = ug_data->email_data; + + if (!email_engine_move_mail(priv->account_id, dest_folder_id, priv->mail_id)) { + debug_log("Moving email is failed."); + + if (is_delete) + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_DELETE"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + else + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_MOVE"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + + } else { + debug_log("account_id: %d, moveto folder id: %d, mail_id: %d", priv->account_id, dest_folder_id, priv->mail_id); + char str[128] = { 0, }; + if (is_delete) + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_POP_DELETED")); + else + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_POP_MOVED")); + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + } +} + +void _delete_email(EmailViewerUGD *ug_data) +{ + debug_log(""); + + EmailViewerPrivate *priv = ug_data->email_data; + + int sync = EMAIL_DELETE_LOCAL_AND_SERVER; + if (ug_data->account_type == EMAIL_SERVER_TYPE_POP3) { + email_account_t *account_data = NULL; + if (email_engine_get_account_full_data(ug_data->account_id, &account_data)) { + debug_log("email_engine_get_account"); + if (account_data) { + account_user_data_t *user_data = (account_user_data_t*)account_data->user_data; + if (user_data != NULL) { + debug_log("pop3_deleting_option:%d", user_data->pop3_deleting_option); + if (user_data->pop3_deleting_option == 0) { + sync = EMAIL_DELETE_LOCALLY; + } else if (user_data->pop3_deleting_option == 1) { + sync = EMAIL_DELETE_LOCAL_AND_SERVER; + } + } + email_free_account(&account_data, 1); + account_data = NULL; + } + } + } + + if (!email_engine_delete_mail(priv->account_id, priv->mailbox_id, priv->mail_id, sync)) { + debug_log("Deleting email is failed."); + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_DELETE"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } else { + debug_log("account_id: %d, mailbox_id: %d, mail_id: %d", priv->account_id, priv->mailbox_id, priv->mail_id); + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_POP_DELETED")); + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + } +} + +void _notify_mailbox_size(EmailViewerUGD *ug_data, char *size) +{ + debug_log(""); + RETURN_IF_FAIL(ug_data != NULL); + RETURN_IF_FAIL(ug_data->ug != NULL); + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + /* Send mailbox resize notification to mailbox */ + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX_SIZE, size); + debug_log("service_add_extra_data: %d", ret); + + ug_send_result(ug_data->ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} +/* EOF */ diff --git a/viewer/src/email-viewer-webview.c b/viewer/src/email-viewer-webview.c new file mode 100755 index 0000000..cc9bd2d --- /dev/null +++ b/viewer/src/email-viewer-webview.c @@ -0,0 +1,384 @@ +/* + * 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-viewer-webview.h" +#include "email-viewer-js.h" + +#include "email-debug.h" +#include "email-engine.h" +#include "email-html-converter.h" + +static void _webview_script_executed_cb(Evas_Object *o, const char *result, void *data); +static void _webview_get_html_content_cb(Evas_Object *o, const char *result, void *data); +static void _webview_load_finished_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_load_error_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_load_committed_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_load_noemptylayout_finished_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_load_progress_cb(void *data, Evas_Object *obj, void *event_info); + +/* Double_Scroller */ +static void _webview_edge_top_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_edge_bottom_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_scroll_down_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_scroll_up_cb(void *data, Evas_Object *obj, void *event_info); +static int _send_read_report_mail(EmailViewerUGD *ug_data); + +extern EmailViewerUGD *_g_ug_data; +extern ui_gadget_h _g_mailbox_ug; + +Evas_Object *viewer_get_webview(EmailViewerUGD *ug_data, gboolean has_html) +{ + debug_log(""); + + Evas_Object *ewk_view = ewk_view_add(evas_object_evas_get(ug_data->win_main/*layout_main*/)); + ug_data->webview = ewk_view; + + Ewk_Setting *setting = ewk_view_setting_get(ewk_view); + + ewk_setting_auto_fitting_set(setting, EINA_FALSE); + ewk_setting_enable_text_zoom_set(setting, EINA_TRUE); + + if (ewk_setting_load_remote_images_set(setting, ug_data->b_show_remote_images) == EINA_FALSE) { + debug_log("SET remote images is FAILED!"); + } + + /* Double_Scroller */ + ewk_view_vertical_panning_hold_set(ug_data->webview, EINA_TRUE); + evas_object_smart_callback_add(ug_data->webview, "edge,top", _webview_edge_top_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "edge,bottom", _webview_edge_bottom_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "scroll,down", _webview_scroll_down_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "scroll,up", _webview_scroll_up_cb, ug_data); + + /*evas_object_smart_callback_add(ug_data->webkit, "load,progress", _webview_progressed_cb, ug_data);*/ + evas_object_smart_callback_add(ug_data->webview, "load,committed", _webview_load_committed_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "load,finished", _webview_load_finished_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "load,nonemptylayout,finished", _webview_load_noemptylayout_finished_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "load,progress", _webview_load_progress_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "load,error", _webview_load_error_cb, ug_data); + + evas_object_show(ug_data->webview); + + return ug_data->webview; +} + +void viewer_set_webview_content(EmailViewerUGD *ug_data, int reload) +{ + debug_log(""); + + if (!ug_data) { + debug_log("ug_data is NULL"); + return; + } + + if (ug_data->webview_data == NULL) { + debug_log("webview_data is NULL"); + return; + } + + EmailViewerWebview *wvd = ug_data->webview_data; + + if (reload && (wvd->body_type == wvd->body_type_prev)) { + debug_log("reload current uri"); + ewk_view_reload(ug_data->webview); + return; + } + + char tmp_file_path[MAX_STR_LEN] = { 0, }; + char *tmp_file_name = NULL; + + /* set content */ + if (wvd->body_type == BODY_TYPE_HTML) { + if (wvd->uri == NULL) { + debug_log("invalid uri"); + return; + } + + snprintf(tmp_file_path, sizeof(tmp_file_path), "file://%s", wvd->uri); + debug_log("file://%s", wvd->uri); + + /* Fix for issue - Sometimes html content of previous mail is shown + * Set the default html page if file size is 0 */ + struct stat statbuf = { 0 }; + int status = lstat(wvd->uri, &statbuf); + if (!status) { + debug_log("Total file size: %d", (int)statbuf.st_size); + if ((int)statbuf.st_size == 0) { + debug_log("Set URI with default html"); + ewk_view_uri_set(ug_data->webview, EMAIL_DEFAULT_HTML); + return; + } + } + } else if (wvd->body_type == BODY_TYPE_TEXT) { + /* generate temporary html file for viewing */ + tmp_file_name = viewer_set_html_content_file(wvd); + + sprintf(tmp_file_path, "file://%s", tmp_file_name); + debug_log("file://%s", tmp_file_name); + } + + debug_log("default encoding:%s", ug_data->property->charset); + Ewk_Setting *setting = ewk_view_setting_get(ug_data->webview); + ewk_setting_default_encoding_set(setting, ug_data->property->charset); +// ewk_view_encoding_custom_set(ug_data->webview, ug_data->property->charset); + ewk_view_uri_set(ug_data->webview, tmp_file_path); +} + +char *viewer_set_html_content_file(EmailViewerWebview *wvd) +{ + debug_log(""); + + FILE *fp; + char *html; + char *tmp_file_name; + char *email_content = "\0"; + + tmp_file_name = EMAIL_TMP_FILE_PATH ".html"; + unlink(tmp_file_name); /*remove previous file*/ + + email_content = wvd->text_content; + html = email_html_converter(email_content, wvd->charset); + debug_log("html:%s", html); + fp = fopen(tmp_file_name, "w"); + if (fp != NULL) { + fputs(html, fp); + fclose(fp); + } + + if (html) + g_free(html); + + return tmp_file_name; +} + +void viewer_coords_ewk_to_evas(Evas_Object *view, int ewkX, int ewkY, int *evasX, int *evasY) +{ + int scrollX, scrollY, viewX, viewY; + ewk_view_scroll_pos_get(view, &scrollX, &scrollY); + evas_object_geometry_get(view, &viewX, &viewY, NULL, NULL); + + *evasX = ewkX - scrollX + viewX; + *evasY = ewkY - scrollY + viewY; +} + +void viewer_coords_evas_to_ewk(Evas_Object *view, int evasX, int evasY, int *ewkX, int *ewkY) +{ + debug_log("evasX:%d, evasY:%d", evasX, evasY); + int scrollX, scrollY, viewX, viewY; + ewk_view_scroll_pos_get(view, &scrollX, &scrollY); + evas_object_geometry_get(view, &viewX, &viewY, NULL, NULL); + debug_log("scrollX:%d, scrollY:%d, viewX:%d, viewY:%d", scrollX, scrollY, viewX, viewY); + + *ewkX = evasX + scrollX - viewX; + *ewkY = evasY + scrollY - viewY; +} + +Eina_Bool viewer_send_message(void *data) +{ + debug_log(""); + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->timer) { + ecore_timer_del(ug_data->timer); + ug_data->timer = NULL; + } + + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return EINA_FALSE; + } + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MSG, EMAIL_BUNDLE_KEY_UNLOCK_LIST); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + + return EINA_FALSE; +} + +static void _webview_script_executed_cb(Evas_Object *o, const char *result, void *data) +{ + debug_log(""); +} + +static void _webview_get_html_content_cb(Evas_Object *o, const char *result, void *data) +{ + debug_log(""); + +// EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + +// ug_data->saved_html_content = g_strdup(result); +// debug_log("ug_data->saved_html_content => %s", ug_data->saved_html_content); +} + +static void _webview_load_finished_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (_g_ug_data == NULL) { + debug_log("_g_ug_data == NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug_data->b_load_finished = EINA_TRUE; + + /*_measure_webview_xy(ug_data);*/ + + if (ug_data->timer) { + ecore_timer_del(ug_data->timer); + ug_data->timer = NULL; + } + + ug_data->timer = ecore_timer_add(0.0, viewer_send_message, ug_data); + + if (ewk_view_script_execute(ug_data->webview, VIEWER_JS_INSERT_IM(VIEWER_JS_FILE_PATH), _webview_script_executed_cb, 0) == EINA_FALSE) + debug_log("VIEWER_JS_INSERT_IM(VIEWER_JS_FILE_PATH) failed."); +} + +static void _webview_load_error_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _webview_load_committed_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _webview_load_noemptylayout_finished_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _webview_load_progress_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +/* Double_Scroller */ +static void _webview_edge_top_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (_g_ug_data == NULL) { + debug_log("_g_ug_data == NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->is_webview_scrolling) { + debug_log("main scroller start"); + ewk_view_vertical_panning_hold_set(ug_data->webview, EINA_TRUE); //stop + + if (elm_widget_scroll_freeze_get(ug_data->scroller) > 0) + elm_object_scroll_freeze_pop(ug_data->scroller); //restart + + /* WORKAROUND. To fix scrolling problem when screen is on the bottom of webview. (Do panning to top fast) */ + int x, y, w, h; + elm_scroller_region_get(ug_data->scroller, &x, &y, &w, &h); + debug_log("main_scroller(x:%d, y:%d, w:%d, h:%d)", x, y, w, h); + elm_scroller_region_bring_in(ug_data->scroller, x, 0, w, h); + + ug_data->is_main_scroller_scrolling = EINA_TRUE; + ug_data->is_webview_scrolling = EINA_FALSE; + } +} + +static void _webview_edge_bottom_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _webview_scroll_down_cb(void *data, Evas_Object *obj, void *event_info) +{ +// debug_log(""); +} + +static void _webview_scroll_up_cb(void *data, Evas_Object *obj, void *event_info) +{ +// debug_log(""); +} + +static int _send_read_report_mail(EmailViewerUGD *ug_data) +{ + debug_log(""); + + int err = 0; + + email_account_t *account = NULL; + email_option_t option; + if (!email_engine_get_account_full_data(ug_data->account_id, &account)) { + debug_log("Failed email_engine_get_account_full_data"); + goto error; + } + + if (account) { + memcpy(&option, &(account->options), sizeof(email_option_t)); + } + + int output_receipt_mail_id = 0; + if ((err = email_add_read_receipt(ug_data->email_data->mail_id, &output_receipt_mail_id)) != EMAIL_ERROR_NONE) { + debug_log(" fail sending [%d]", err); + goto error; + } + debug_log("output_receipt_mail_id of saved email = %d", output_receipt_mail_id); + + unsigned handle = 0; + + if ((err = email_send_mail(output_receipt_mail_id, &option, &handle)) != EMAIL_ERROR_NONE) { + debug_log(" fail sending [%d]", err); + goto error; + } else { + debug_log(" finish sending"); + } + + error: + if (account) { + debug_log("[_send_read_report_mail] email_free_account is called"); + email_free_account(&account, 1); + account = NULL; + } + + return 1; +} + +#if 0 +static void _measure_webview_xy(EmailViewerUGD *ug_data) +{ + debug_log(""); + + int a, b, c, d; + evas_object_geometry_get(ug_data->navi_bar, &a, &b, &c, &d); + debug_log("navi_bar x[%d] y[%d] w[%d] h[%d]", a, b, c, d); + evas_object_geometry_get(ug_data->sub_ly, &a, &b, &c, &d); + debug_log("sub_ly x[%d] y[%d] w[%d] h[%d]", a, b, c, d); + evas_object_geometry_get(ug_data->ctr_bar, &a, &b, &c, &d); + debug_log("ctr_bar x[%d] y[%d] w[%d] h[%d]", a, b, c, d); + evas_object_geometry_get(ug_data->webview_bx, &a, &b, &c, &d); + debug_log("webview_bx x[%d] y[%d] w[%d] h[%d]", a, b, c, d); +} +#endif + +/* EOF */ diff --git a/viewer/src/email-viewer.c b/viewer/src/email-viewer.c new file mode 100755 index 0000000..36315b2 --- /dev/null +++ b/viewer/src/email-viewer.c @@ -0,0 +1,5801 @@ +/* + * 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 + +/* Header Include */ +#include <contacts-ug.h> +#include <calendar-svc-provider.h> +#include <media-util-register.h> +#include <media-util-err.h> +#include <app_service.h> +#include <status.h> + +#include "email-viewer.h" +#include "email-viewer-webview.h" +#include "email-viewer-utils.h" +#include "email-engine.h" +#include "email-utils.h" +#include "email-common-types.h" +#include "email-debug.h" + +#define EMAIL_VCONF_KEY_BLOCK_RULE_CHANGED "file/private/org.tizen.email/spam_rule_changed" + +/* Global Val */ +EmailViewerUGD *_g_ug_data = NULL; +E_DBus_Connection *_g_viewer_dbus_conn = NULL; +E_DBus_Signal_Handler *_g_viewer_signal_handler_network = NULL; +E_DBus_Signal_Handler *_g_viewer_signal_handler_storage = NULL; + +extern ui_gadget_h _g_mailbox_ug; +extern char *icu_locale; +extern enum appcore_time_format icu_timeformat; +extern void _set_mail_flags(EmailViewerProp *prop, EmailViewerPrivate *email_data); + +/* appcore */ +static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv); +static void on_start(ui_gadget_h ug, service_h data, void *priv); +static void on_pause(ui_gadget_h ug, service_h data, void *priv); +static void on_resume(ui_gadget_h ug, service_h data, void *priv); +static void on_destroy(ui_gadget_h ug, service_h data, void *pd); +static void on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv); +static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv); +static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h data, void *priv); + +/* ui-gadget */ +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 ui_gadget_h create_ug(char *ug_name, service_h bd, void *data); + +/* View related */ +static void _create_view(EmailViewerUGD *ug_data); +static void _reset_view(EmailViewerUGD *ug_data); + +static void _win_profile_changed_cb(void *data, Evas_Object *obj, void *event); + +static Evas_Object *_create_navigation_bar(EmailViewerUGD *ug_data); +static Evas_Object *_create_subject(EmailViewerUGD *ug_data); +static Evas_Object *_create_to_addrs(EmailViewerUGD *ug_data); +static Evas_Object *_create_cc_addrs(EmailViewerUGD *ug_data); +static Evas_Object *_create_bcc_addrs(EmailViewerUGD *ug_data); +static Evas_Object *_create_attach(EmailViewerUGD *ug_data); +static Evas_Object *_create_attach_ex(EmailViewerUGD *ug_data); +static Evas_Object *_create_body(EmailViewerUGD *ug_data); +static Evas_Object *_create_tab_bar(EmailViewerUGD *ug_data); +static Evas_Object *_update_tab_bar(EmailViewerUGD *ug_data); +static Evas_Object *_create_partial_body_dn_btn(EmailViewerUGD *ug_data); +static Evas_Object *_create_bg(Evas_Object *win); + +static void _create_down_progress(char *message, popup_cb resp_cb); +static void _create_down_progress_ex(int index, EMAIL_VIEWER_PROGRESSBAR_TYPE p_type); +static void _destroy_down_progress_ex(void *data, Evas_Object *obj, void *event_info); +static void _create_more_ctxpopup(EmailViewerUGD *ug_data); +static void _delete_evas_objects(EmailViewerUGD *ug_data); + +static void _launch_vcs_editor(EmailViewerUGD *ug_data); + +/* callback functions */ +static void _back_cb(void *data, Evas_Object *obj, void *event_info); +static void _prev_mail_cb(void *data, Evas_Object *obj, void *event_info); +static void _next_mail_cb(void *data, Evas_Object *obj, void *event_info); +static void _reply_cb(void *data, Evas_Object *obj, void *event_info); +static void _reply_all_cb(void *data, Evas_Object *obj, void *event_info); +static void _reply_option_cb(void *data, Evas_Object *obj, void *event_info); +static void _forward_cb(void *data, Evas_Object *obj, void *event_info); +static void _add_to_calendar_cb(void *data, Evas_Object *obj, void *event_info); +static void _resend_cb(void *data, Evas_Object *obj, void *event_info); +static void _delete_cb(void *data, Evas_Object *obj, void *event_info); +static void _move_cb(void *data, Evas_Object *obj, void *event_info); +static void _more_cb(void *data, Evas_Object *obj, void *event_info); +static void _body_down_cb(void *data, Evas_Object *obj, void *event_info); +static void _subject_favorite_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _subject_detail_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _attachment_item_collapse_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _attachment_save_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _attachment_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _attachment_save_all_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _attachment_bg_set_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info); +static void _attachment_bg_unset_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info); +static void _mark_as_unread_cb(void *data, Evas_Object *obj, void *event_info); +static void _mark_as_read_cb(void *data, Evas_Object *obj, void *event_info); + +static void _ctxpopup_detail_contact_cb(void *data, Evas_Object *obj, void *event_info); +static void _ctxpopup_send_email_cb(void *data, Evas_Object *obj, void *event_info); +static void _ctxpopup_add_contact_cb(void *data, Evas_Object *obj, void *event_info); +static void _ctxpopup_cutlink_update_contact_cb(void *data, Evas_Object *obj, void *event_info); +static void _ctxpopup_select_contact_mode_email_cb(void *data, Evas_Object *obj, void *event_info); +static void _ctxpopup_add_block_rule_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_delete_ok_cb(void *data, Evas_Object *obj, void *event_info); +static void _popup_response_to_destroy_cb(void *data, Evas_Object *obj, void *event_info); + +static void _webview_multi_up_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info); +static void _webview_multi_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info); +static void _webview_policy_navigation_decide_cb(void *data, Evas_Object *obj, void *event_info); + +static void _outter_scroller_bottom_hit_cb(void *data, Evas_Object *obj, void *event_info); +static void _outter_scroller_top_hit_cb(void *data, Evas_Object *obj, void *event_info); +static void _outter_scroller_scroll_cb(void *data, Evas_Object *obj, void *event_info); + +static void _mbe_added_cb(void *data, Evas_Object *obj, void *event_info); +static void _mbe_selected_cb(void *data, Evas_Object *obj, void *event_info); +static void _destroy_down_progress_cb(void *data, Evas_Object *obj, void *event_info); + +/* Logic Functions */ +static void _init_viewer_data(int account_id, int mail_id, char *srv_mail_id, EmailViewerUGD *ug_data); +static int _init_webview_data(EmailViewerUGD *ug_data); +static Eina_Bool _check_body_download(void *data); +static int _update_attachment_info(EmailViewerUGD *ug_data, int index); +static int _get_attachment_info_index(EmailViewerUGD *ug_data, int index); +static void _show_select_info(EmailViewerUGD *ug_data, char *str); +static void _save_attachment(EmailViewerUGD *ug_data, int index); +static void _show_attachment(EmailViewerUGD *ug_data, int index); +static void _save_attachment_all(EmailViewerUGD *ug_data); +static void _dbus_receiver_setup(EmailViewerUGD *ug_data); +static void _dbus_receiver_remove(EmailViewerUGD *ug_data); +static void _on_edbus_event_email_viewer_receive(void *local_data, DBusMessage *message); + +static void _delete_contacts_list(EMAIL_CONTACT_LIST_INFO_S *contacts_list_item); +static void *_contact_search_by_email(EmailViewerUGD *ug_data, const char *search_word); +static void _set_value_down_progress(double val); +static void _set_value_down_progress_by_index(double val, int index); +static void _cancel_download_attachment(EmailViewerUGD *ug_data); + +/* Util Functions */ +static char *_get_service_fail_type(int type); +static Evas_Object *_load_edj(Evas_Object *parent, const char *file, const char *group); + +/* genlist cb */ +static Eina_Bool _gl_state_get(void *data, Evas_Object *obj, const char *part); +static void _gl_del(void *data, Evas_Object *obj); +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 _gl_sel(void *data, Evas_Object *obj, void *event_info); +static char *_gl_sub_upper_text_get(void *data, Evas_Object *obj, const char *part); +static Evas_Object *_gl_sub_upper_icon_get(void *data, Evas_Object *obj, const char *part); +static void _gl_sub_upper_sel(void *data, Evas_Object *obj, void *event_info); +static void _move_here_cb(void *data, Evas_Object *obj, void *event_info); +static void _move_back_cb(void *data, Evas_Object *obj, void *event_info); +static void _move_back_cb2(void *data, Evas_Object *obj, void *event_info); + + +UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops) +{ + debug_log(""); + + EmailViewerUGD *ug_data; + + if (!ops) + return -1; + + ug_data = calloc(1, sizeof(EmailViewerUGD)); + if (!ug_data) + return -1; + + _g_ug_data = ug_data; +// g_type_init(); + + 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(""); + EmailViewerUGD *ug_data; + + if (!ops) + return; + + ug_data = ops->priv; + if (ug_data) + free(ug_data); + + debug_log("~"); +} + +static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv) +{ + debug_log(""); + EmailViewerUGD *ug_data; + char *account_id = NULL; + char *mail_id = NULL; + char *mailbox_id = NULL; + char *binternal = NULL; + char *landscape = NULL; + + if (!ug || !priv) + return NULL; + + ug_data = priv; + ug_data->ug = ug; + + if (!data) { + debug_log("account_id and mail_id are required by arguments"); + ug_data->b_direct_destroy = 1; + ug_destroy_me(ug_data->ug); + _g_ug_data = NULL; + return NULL; + } + + /* email engine initialize */ + if (email_engine_initialize() == FALSE) { + debug_log("Failed to initialize email engine"); + ug_data->b_direct_destroy = 1; + ug_destroy_me(ug_data->ug); + _g_ug_data = NULL; + return NULL; + } + +/* Elm_Theme *theme = elm_theme_new(); + elm_theme_ref_set(theme, NULL); + ug_data->theme = theme; + elm_theme_extension_add(ug_data->theme, EV_THEME_PATH);*/ + + int ret; + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_ACCOUNT_ID, (char **)&account_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("account_id:%s", account_id); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_MAIL_ID, (char **)&mail_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("mail_id:%s", mail_id); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_MAILBOX, (char **)&mailbox_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("mailbox:%s", mailbox_id); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_INTERNAL, (char **)&binternal); + debug_log("service_get_extra_data: %d", ret); + debug_log("binternal:%s", binternal); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_FIRST_LANDSCAPE, (char **)&landscape); + debug_log("service_get_extra_data: %d", ret); + debug_log("landscape:%s", landscape); + + if (landscape) { + ug_data->isRotate = atoi(landscape); + debug_log("@@@@ Landscape = %d @@@@", ug_data->isRotate); + g_free(landscape); + } + + if (account_id) { + ug_data->account_id = atoi(account_id); + ug_data->folder_list = email_engine_get_ca_mailbox_list_using_glist(ug_data->account_id); + g_free(account_id); + } + + if (mail_id) { + ug_data->mail_id = atoi(mail_id); + g_free(mail_id); + } + + if (mailbox_id) { + g_free(ug_data->mailbox_name); + ug_data->mailbox_name = NULL; + ug_data->mailbox_id = atoi(mailbox_id); + g_free(mailbox_id); + + int err = 0; + email_mail_data_t *mail_data = NULL; + if ((err = email_get_mail_data(ug_data->mail_id, &mail_data)) != EMAIL_ERROR_NONE) { + debug_log("fail to get mail - err (%d)", err); + } + + if (mail_data == NULL) { + debug_log("mail_data is NULL"); + } + + ug_data->mailbox_name = g_strdup(mail_data->server_mailbox_name); + ug_data->mailbox_type = mail_data->mailbox_type; + debug_log("server_mailbox_name:%s", mail_data->server_mailbox_name); + debug_log("mailbox_name:%s", ug_data->mailbox_name); + debug_log("mailbox_type:%d", ug_data->mailbox_type); + + if (mail_data) { + debug_log("email_free_mail is called"); + email_free_mail_data(&(mail_data), 1); + mail_data = NULL; + } + } + + if (binternal) { + ug_data->b_internal = atoi(binternal); + if (ug_data->b_internal == 1) + debug_log("############Launched from email-mailbox###############"); + g_free(binternal); + } + + debug_log("account_id [%d], mail_id [%d], mailbox_id [%d], mailbox name [%s]", ug_data->account_id, ug_data->mail_id, ug_data->mailbox_id, ug_data->mailbox_name); + + if (ug_data->account_id <= 0 || ug_data->mail_id <= 0 || ug_data->mailbox_id <= 0) { + debug_log("Required bundle parameters are missing!"); + ug_data->timeout_popup = elm_popup_add(ug_get_window()); + 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); + elm_object_text_set(ug_data->timeout_popup, _("IDS_EMAIL_POP_UNABLE_TO_OPEN_EMAIL_MESSAGE")); + 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_response_to_destroy_cb, ug_data); + evas_object_smart_callback_add(ug_data->timeout_popup, "timeout", _popup_response_to_destroy_cb, ug_data); + evas_object_show(ug_data->timeout_popup); + + return elm_layout_add(ug_get_window()); + } + + ug_data->win_main = ug_get_window(); + + char *proxy_address = vconf_get_str(VCONFKEY_NETWORK_PROXY); + debug_log("network proxy: %s", proxy_address); + if (proxy_address && (g_strcmp0(proxy_address, "") != 0)) { + ewk_context_proxy_uri_set(ewk_context_default_get(), proxy_address); + } + + if (proxy_address) + free(proxy_address); + + 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; + + ug_data->scale_factor = elm_scale_get(); + debug_log("ELM Scale[%f]", ug_data->scale_factor); + + if (w == 480) { + ug_data->webview_width = 710.0; + ug_data->webview_height = 949.0; + ug_data->webview_width_landscape = 710.0; + ug_data->webview_height_landscape = 568.0; + ug_data->webview_margin = 633; + ug_data->webview_margin_landscape = 379; + } else if (w == 720) { + ug_data->webview_width = 710.0; + ug_data->webview_height = 1009.0; + ug_data->webview_width_landscape = 710.0; + ug_data->webview_height_landscape = 558.0; + ug_data->webview_margin = 1029; + ug_data->webview_margin_landscape = 558; + } else { + ug_data->webview_width = 710.0; + ug_data->webview_height = 949.0; + ug_data->webview_width_landscape = 710.0; + ug_data->webview_height_landscape = 568.0; + ug_data->webview_margin = 633; + ug_data->webview_margin_landscape = 379; + } + + ug_data->evas = evas_object_evas_get(ug_data->win_main); + + /* Double_Scroller */ + ug_data->b_noc = 1; + + email_account_t *account = NULL; + if (email_engine_get_account_full_data(ug_data->account_id, &account)) { + debug_log("email_engine_get_account"); + if (account) { + ug_data->account_type = account->incoming_server_type; + snprintf(ug_data->account_email_address, sizeof(ug_data->account_email_address), "%s", account->user_email_address); + + account_user_data_t *ud = (account_user_data_t*)account->user_data; + if (ud != NULL) { + debug_log("show_images is %d", ud->show_images); + ug_data->b_show_remote_images = ud->show_images; + } + email_free_account(&account, 1); + account = NULL; + } + } + + /* DBUS */ + _dbus_receiver_setup(ug_data); + + _init_viewer_data(ug_data->account_id, ug_data->mail_id, NULL, ug_data); + _create_view(ug_data); + + _check_body_download(ug_data); + + ug_data->base = ug_data->layout_main; + + ug_data->display_download_result = TRUE; + + return ug_data->base; +} + +static void on_start(ui_gadget_h ug, service_h data, void *priv) +{ + debug_log(""); +} + +static void on_pause(ui_gadget_h ug, service_h data, void *priv) +{ + debug_log(""); +} + +static void on_resume(ui_gadget_h ug, service_h data, void *priv) +{ + debug_log(""); +} + +static void on_destroy(ui_gadget_h ug, service_h data, void *pd) +{ + debug_log(""); + EmailViewerUGD *ug_data; + + if (!ug || !pd) + return; + + ug_data = pd; + + _g_ug_data = NULL; + + if (ug_data->b_direct_destroy) + return; + + /* stop engine */ + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + int i = 0; + int att_len = g_list_length(prop->attachments); + + if (priv->email_handle != 0) + email_engine_stop_working(ug_data->account_id, priv->email_handle); + + for (i = 0; i < att_len; i++) { + if (priv->download_all_email_handle[i] != 0) + email_engine_stop_working(ug_data->account_id, priv->download_all_email_handle[i]); + } + +/* if (ug_data->theme) { + elm_theme_extension_del(ug_data->theme, EV_THEME_PATH); + elm_theme_free(ug_data->theme); + ug_data->theme = NULL; + }*/ + + _delete_evas_objects(ug_data); + + debug_log("free webview_data"); + if (ug_data->webview_data) { + free(ug_data->webview_data); + ug_data->webview_data = NULL; + } + + debug_log("free address info list"); + email_free_address_info_list(&(priv->addrs_info_list)); + ug_data->from_list = NULL; + ug_data->to_list = NULL; + ug_data->cc_list = NULL; + ug_data->bcc_list = NULL; + + debug_log("free mail_info"); + if (ug_data->email_data->mail_info) { + email_free_mail_data(&(ug_data->email_data->mail_info), 1); + ug_data->email_data->mail_info = NULL; + } + + if (ug_data->email_data->attachment_info && ug_data->email_data->attachment_count > 0) { + email_free_attachment_data(&(ug_data->email_data->attachment_info), ug_data->email_data->attachment_count); + ug_data->email_data->attachment_info = NULL; + ug_data->email_data->attachment_count = 0; + } + + debug_log("free email_data"); + if (ug_data->email_data) { + free(ug_data->email_data); + ug_data->email_data = NULL; + } + + debug_log("free attachment"); + if (ug_data->property->attachments) { + int i = 0; + LIST_ITER_START(i, ug_data->property->attachments) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, ug_data->property->attachments); + if (info->name) + free(info->name); + if (info->path) + free(info->path); + free(info); + } + g_list_free(ug_data->property->attachments); + ug_data->property->attachments = NULL; + } + + debug_log("free property"); + if (ug_data->property) { + free(ug_data->property); + ug_data->property = NULL; + } + + email_engine_finalize(); + + _dbus_receiver_remove(NULL); + + int ret = e_dbus_shutdown(); + debug_log("ret: %d", ret); + debug_log("~"); + + ug_data->base = NULL; +} + +static void on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv) +{ + debug_log(""); + + if (!ug || !priv) + return; + + debug_log("_g_ug_data - %p", _g_ug_data); + if (_g_ug_data != NULL) { + debug_log("Hide previous mail data"); + _hide_view(_g_ug_data); + } + + char *account_id = NULL; + char *mail_id = NULL; + char *mailbox_id = NULL; + char *binternal = NULL; + char *landscape = NULL; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)priv; + _g_ug_data = ug_data; + + /* reset viewer */ + int ret; + ret = service_get_extra_data(msg, EMAIL_BUNDLE_KEY_ACCOUNT_ID, (char **)&account_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("account_id:%s", account_id); + ret = service_get_extra_data(msg, EMAIL_BUNDLE_KEY_MAIL_ID, (char **)&mail_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("mail_id:%s", mail_id); + ret = service_get_extra_data(msg, EMAIL_BUNDLE_KEY_MAILBOX, (char **)&mailbox_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("mailbox:%s", mailbox_id); + ret = service_get_extra_data(msg, EMAIL_BUNDLE_KEY_INTERNAL, (char **)&binternal); + debug_log("service_get_extra_data: %d", ret); + debug_log("binternal:%s", binternal); + ret = service_get_extra_data(msg, EMAIL_BUNDLE_KEY_FIRST_LANDSCAPE, (char **)&landscape); + debug_log("service_get_extra_data: %d", ret); + debug_log("landscape:%s", landscape); + + if (landscape) { + ug_data->isRotate = atoi(landscape); + debug_log("@@@@ Landscape = %d @@@@", ug_data->isRotate); + g_free(landscape); + } + + if (account_id) { + ug_data->account_id = atoi(account_id); + ug_data->folder_list = email_engine_get_ca_mailbox_list_using_glist(ug_data->account_id); + g_free(account_id); + } + + if (mail_id) { + ug_data->mail_id = atoi(mail_id); + g_free(mail_id); + } + + if (mailbox_id) { + g_free(ug_data->mailbox_name); + ug_data->mailbox_name = NULL; + ug_data->mailbox_id = atoi(mailbox_id); + g_free(mailbox_id); + + int err = 0; + email_mail_data_t *mail_data = NULL; + if ((err = email_get_mail_data(ug_data->mail_id, &mail_data)) != EMAIL_ERROR_NONE) { + debug_log("fail to get mail - err (%d)", err); + } + + if (mail_data == NULL) { + debug_log("mail_data is NULL"); + } + + ug_data->mailbox_name = g_strdup(mail_data->server_mailbox_name); + ug_data->mailbox_type = mail_data->mailbox_type; + debug_log("server_mailbox_name:%s", mail_data->server_mailbox_name); + debug_log("mailbox_name:%s", ug_data->mailbox_name); + debug_log("mailbox_type:%d", ug_data->mailbox_type); + + if (mail_data) { + debug_log("email_free_mail is called"); + email_free_mail_data(&(mail_data), 1); + mail_data = NULL; + } + } + + if (binternal) { + ug_data->b_internal = atoi(binternal); + if (ug_data->b_internal == 1) + debug_log("############Launched from email-mailbox###############"); + g_free(binternal); + } + + debug_log("account_id [%d], mail_id [%d], mailbox_id[%d], mailbox name [%s]", ug_data->account_id, ug_data->mail_id, ug_data->mailbox_id, ug_data->mailbox_name); + + if (ug_data->account_id <= 0 || ug_data->mail_id <= 0 || ug_data->mailbox_id <= 0) { + debug_log("Required bundle parameters are missing!"); + _g_ug_data = NULL; + return; + } + + email_account_t *account = NULL; + if (email_engine_get_account_full_data(ug_data->account_id, &account)) { + debug_log("email_engine_get_account"); + if (account) { + ug_data->account_type = account->incoming_server_type; + snprintf(ug_data->account_email_address, sizeof(ug_data->account_email_address), "%s", account->user_email_address); + + account_user_data_t *ud = (account_user_data_t*)account->user_data; + if (ud != NULL) { + debug_log("show_images is %d", ud->show_images); + ug_data->b_show_remote_images = ud->show_images; + } + email_free_account(&account, 1); + account = NULL; + } + + Ewk_Setting *setting = ewk_view_setting_get(ug_data->webview); + + debug_log("b_show_remote_images is %d", ug_data->b_show_remote_images); + if (ewk_setting_load_remote_images_set(setting, ug_data->b_show_remote_images) == EINA_FALSE) { + debug_log("SET remote images is FAILED!"); + } + } + + _init_viewer_data(ug_data->account_id, ug_data->mail_id, NULL, ug_data); + + evas_object_show(ug_data->layout_main); + evas_object_raise(ug_data->layout_main); + + _reset_view(ug_data); + + ug_data->display_download_result = TRUE; +} + +static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv) +{ + debug_log(""); + + if (!ug || !priv) + return; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)priv; + EmailViewerProp *prop = ug_data->property; + char date_time[MAX_STR_LEN] = { 0, }; + char *formatted_date = NULL; + int ret = 0; + + debug_log("rotate event = %d", event); + + 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: + case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: + if (ug_data->b_internal && ug_data->isRotate == true) { + debug_log("In Full view - Showing navi bar"); + elm_naviframe_item_title_visible_set(ug_data->navi_main_it, EINA_TRUE); + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + if (ug_data->navi_move_it1) { + debug_log("move1"); + Evas_Object *move_back_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(move_back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(move_back_btn, "clicked", _move_back_cb, ug_data); + elm_object_item_part_content_set(ug_data->navi_move_it1, "prev_btn", move_back_btn); + elm_naviframe_item_title_visible_set(ug_data->navi_move_it1, EINA_TRUE); + if (ug_data->move_cbar) { + elm_object_item_part_content_unset(ug_data->navi_move_it1, "controlbar"); + evas_object_del(ug_data->move_cbar); + ug_data->move_cbar = NULL; + } + } + if (ug_data->navi_move_it2) { + debug_log("move2"); + Evas_Object *move_back_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(move_back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(move_back_btn, "clicked", _move_back_cb2, ug_data); + elm_object_item_part_content_set(ug_data->navi_move_it2, "prev_btn", move_back_btn); + elm_naviframe_item_title_visible_set(ug_data->navi_move_it2, EINA_TRUE); + } + + if (ug_data->b_btn) { + evas_object_smart_callback_del(ug_data->b_btn, "clicked", _back_cb); + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + } + + ug_data->b_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(ug_data->b_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(ug_data->b_btn, "clicked", _back_cb, ug_data); + elm_object_item_part_content_set(ug_data->navi_main_it, "prev_btn", ug_data->b_btn); + + int resized_w = ug_data->webview_width * ug_data->scale_factor; + int resized_h = ug_data->webview_height * ug_data->scale_factor; + evas_object_size_hint_min_set(ug_data->webview, resized_w, resized_h); + + ug_data->isRotate = false; + } + + break; + + case UG_EVENT_ROTATE_LANDSCAPE: + case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: + if (ug_data->b_internal && ug_data->isRotate == false) { + debug_log("In Split view - Hiding navi bar"); + elm_naviframe_item_title_visible_set(ug_data->navi_main_it, EINA_FALSE); + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + if (ug_data->navi_move_it1) { + debug_log("move1"); + ug_data->move_cbar = elm_toolbar_add(ug_data->navi_bar); + elm_toolbar_shrink_mode_set(ug_data->move_cbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(ug_data->move_cbar, "naviframe"); + evas_object_show(ug_data->move_cbar); + + elm_object_item_disabled_set(elm_toolbar_item_append(ug_data->move_cbar, NULL, "", NULL, NULL), EINA_TRUE); + elm_toolbar_item_append(ug_data->move_cbar, NULL, dgettext("sys_string", "IDS_COM_SK_CANCEL"), _move_back_cb, ug_data); + elm_object_item_part_content_set(ug_data->navi_move_it1, "controlbar", ug_data->move_cbar); + + Evas_Object *move_back_btn = elm_object_item_part_content_get(ug_data->navi_move_it1, "prev_btn"); + if (move_back_btn) { + evas_object_smart_callback_del(move_back_btn, "clicked", _move_back_cb); + evas_object_del(move_back_btn); + elm_object_item_part_content_set(ug_data->navi_move_it1, "prev_btn", NULL); + } + elm_naviframe_item_title_visible_set(ug_data->navi_move_it1, EINA_FALSE); + } + if (ug_data->navi_move_it2) { + debug_log("move2"); + Evas_Object *move_back_btn = elm_object_item_part_content_get(ug_data->navi_move_it2, "prev_btn"); + if (move_back_btn) { + evas_object_smart_callback_del(move_back_btn, "clicked", _move_back_cb2); + evas_object_del(move_back_btn); + elm_object_item_part_content_set(ug_data->navi_move_it2, "prev_btn", NULL); + } + elm_naviframe_item_title_visible_set(ug_data->navi_move_it2, EINA_FALSE); + } + + if (ug_data->b_btn) { + evas_object_smart_callback_del(ug_data->b_btn, "clicked", _back_cb); + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + elm_object_item_part_content_set(ug_data->navi_main_it, "prev_btn", NULL); + } + + int resized_w = ug_data->webview_width_landscape * ug_data->scale_factor; + int resized_h = ug_data->webview_height_landscape * ug_data->scale_factor; + evas_object_size_hint_min_set(ug_data->webview, resized_w, resized_h); + + ug_data->isRotate = true; + } + + break; + + case UG_EVENT_REGION_CHANGE: + appcore_get_timeformat(&icu_timeformat); + /* ICU API to set default locale */ + if (icu_timeformat == APPCORE_TIME_FORMAT_12) + formatted_date = email_get_date_text(icu_locale, "yMdhms", &(prop->mktime)); + else + formatted_date = email_get_date_text(icu_locale, "yMdHms", &(prop->mktime)); + ret = snprintf(date_time, MAX_STR_LEN, "%s", formatted_date); + + free(formatted_date); + formatted_date = NULL; + + edje_object_part_text_set(_EDJ(ug_data->ly_subject), "elm.text.sub", date_time); + evas_object_show(ug_data->ly_subject); + break; + + default: + break; + } +} + +static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h data, void *priv) +{ + debug_log(""); + + if (!ug) + return; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)priv; + EmailViewerPrivate *private = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + + switch (event) { + case UG_KEY_EVENT_END: + if (_g_ug_data) { + if (ug_data->notify != NULL || ug_data->pb_notify != NULL || ug_data->timeout_popup != NULL) { + if (ug_data->timeout_popup) { + evas_object_del(ug_data->timeout_popup); + ug_data->timeout_popup = NULL; + } + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } + + if (ug_data->pb_notify) { + int i = 0; + int att_len = g_list_length(prop->attachments); + + evas_object_del(ug_data->pb_notify); + ug_data->pb_notify = NULL; + + if (private->email_handle != 0) + email_engine_stop_working(ug_data->account_id, private->email_handle); + + for (i = 0; i < att_len; i++) { + if (private->download_all_email_handle[i] != 0) + email_engine_stop_working(ug_data->account_id, private->download_all_email_handle[i]); + } + } + + if (ug_data->pb_notify_lb) { + evas_object_del(ug_data->pb_notify_lb); + ug_data->pb_notify_lb = NULL; + } + } else { + if (ug_data->isRotate == false && ug_data->b_internal) { + /* Viewer to hide, so set left content (mailbox) size to full */ + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + if (ug_data->b_internal) + _hide_view(ug_data); + else + ug_destroy_me(ug_data->ug); + } + } else { + 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_MSG, EMAIL_BUNDLE_VAL_END_KEY); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } + 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 result, void *priv) +{ + debug_log(""); + + if (!ug || !priv) + return; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)priv; + EmailViewerProp *prop = ug_data->property; + EmailViewerPrivate *private = ug_data->email_data; + + if (ug == ug_data->ug_composer) { + char *cmd = NULL; + int ret = service_get_extra_data(result, EMAIL_BUNDLE_KEY_SAVE_ALL, (char **)&cmd); + debug_log("service_get_extra_data: %d", ret); + debug_log("return of bundle_get_val for save all(%s)", cmd); + if (cmd) { + debug_log("save all from composer(%s)", cmd); + + if (prop->real_att_len == 1) { + private->b_all_att_save = TRUE; + _save_attachment(ug_data, 0); + } else if (prop->real_att_len > 1) { + _save_attachment_all(ug_data); + } + g_free(cmd); + return; + } + + ret = service_get_extra_data(result, EMAIL_BUNDLE_KEY_CANCEL_ALL, (char **)&cmd); + debug_log("service_get_extra_data: %d", ret); + debug_log("return of bundle_get_val for cancel all(%s)", cmd); + if (cmd) { + debug_log("cancel all attachment from composer(%s)", cmd); + + _cancel_download_attachment(ug_data); + g_free(cmd); + return; + } + } +} + +static void destroy_cb(ui_gadget_h ug, void *priv) +{ + debug_log(""); + if (!ug || !priv) + return; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)priv; + EmailViewerProp *prop = ug_data->property; + ug_data->display_download_result = TRUE; + + if (ug == ug_data->ug_composer) { + ug_data->ug_composer = NULL; + } + + ug_destroy(ug); + + if (ug_data->b_contact_ug_launched) { + debug_log("change navibar title label"); + EMAIL_CONTACT_LIST_INFO_S *contact_list_item = NULL; + contact_list_item = (EMAIL_CONTACT_LIST_INFO_S *)_contact_search_by_email(ug_data, prop->sender); + + if (contact_list_item) { + elm_object_item_text_set(ug_data->navi_main_it, contact_list_item->display_name); + _delete_contacts_list(contact_list_item); + } else { + elm_object_item_text_set(ug_data->navi_main_it, prop->sender_display_name); + } + + ug_data->b_contact_ug_launched = FALSE; + } +} + +static 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; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug = ug_create(ug_data->ug, ug_name, UG_MODE_FULLVIEW, bd, &cbs); + + return ug; +} + +static void _create_view(EmailViewerUGD *ug_data) +{ + debug_log(""); + + Evas_Object *b_btn; + Evas_Object *prev_btn; + Evas_Object *next_btn; + EmailViewerProp *prop = ug_data->property; + + ug_data->bg = _create_bg(ug_data->win_main); + + /* create layout */ + ug_data->layout_main = elm_layout_add(ug_data->win_main); + + if (ug_data->b_internal) + 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); + evas_object_show(ug_data->layout_main); + + elm_object_part_content_set(ug_data->layout_main, "elm.swallow.bg", ug_data->bg); + + /* indicator */ + elm_win_indicator_mode_set(ug_data->win_main, ELM_WIN_INDICATOR_SHOW); + + evas_object_smart_callback_add(ug_data->win_main, "profile,changed", _win_profile_changed_cb, ug_data); + + /* navigation Bar */ + _create_navigation_bar(ug_data); + + /* push navigation bar */ + 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); + + /* back button */ + b_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(b_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(b_btn, "clicked", _back_cb, ug_data); + ug_data->b_btn = b_btn; + + ug_data->navi_main_it = elm_naviframe_item_push(ug_data->navi_bar, prop->sender_display_name, b_btn, NULL, ug_data->sub_ly, NULL); + + if (ug_data->b_internal) { + /* Left : previous button */ + prev_btn = elm_button_add(ug_data->navi_bar); + Evas_Object *prev_ic = elm_icon_add(prev_btn); + elm_icon_file_set(prev_ic, IMGDIR "/M02_icon_previous.png", NULL); + elm_object_style_set(prev_btn, "naviframe/title/default"); + evas_object_size_hint_aspect_set(prev_ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(prev_ic, 0.8, 0.8); + elm_object_part_content_set(prev_btn, "icon", prev_ic); + elm_object_item_part_content_set(ug_data->navi_main_it, "title_left_btn", prev_btn); + evas_object_smart_callback_add(prev_btn, "clicked", _prev_mail_cb, ug_data); + ug_data->prev_btn = prev_btn; + + /* Right : next button */ + next_btn = elm_button_add(ug_data->navi_bar); + Evas_Object *next_ic = elm_icon_add(next_btn); + elm_icon_file_set(next_ic, IMGDIR "/M02_icon_next.png", NULL); + elm_object_style_set(next_btn, "naviframe/title/default"); + evas_object_size_hint_aspect_set(next_ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(next_ic, 0.8, 0.8); + elm_object_part_content_set(next_btn, "icon", next_ic); + elm_object_item_part_content_set(ug_data->navi_main_it, "title_right_btn", next_btn); + evas_object_smart_callback_add(next_btn, "clicked", _next_mail_cb, ug_data); + ug_data->next_btn = next_btn; + } + + /* create scroller */ + ug_data->scroller = elm_scroller_add(ug_data->navi_bar); + evas_object_propagate_events_set(ug_data->scroller, EINA_FALSE); + elm_scroller_bounce_set(ug_data->scroller, EINA_FALSE, EINA_TRUE); + elm_scroller_policy_set(ug_data->scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); + evas_object_show(ug_data->scroller); + evas_object_smart_callback_add(ug_data->scroller, "edge,bottom", _outter_scroller_bottom_hit_cb, ug_data); + evas_object_smart_callback_add(ug_data->scroller, "edge,top", _outter_scroller_top_hit_cb, ug_data); + evas_object_smart_callback_add(ug_data->scroller, "scroll,drag,start", _outter_scroller_scroll_cb, ug_data); + + /* create conformant */ + elm_win_conformant_set(ug_data->win_main, EINA_TRUE); + ug_data->conformant = elm_conformant_add(ug_data->sub_ly); + elm_object_style_set(ug_data->conformant, "internal_layout"); + evas_object_size_hint_weight_set(ug_data->conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ug_data->conformant, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_content_set(ug_data->conformant, ug_data->scroller); + elm_object_part_content_set(ug_data->sub_ly, "elm.swallow.content", ug_data->conformant); + evas_object_show(ug_data->conformant); + + if (ug_data->from_list != NULL) { + email_address_info_t *addrs_info = NULL; + int n_from_list = g_list_length(ug_data->from_list); + debug_log("from list count [%d]", n_from_list); + + if (n_from_list > 0) { + addrs_info = (email_address_info_t *) g_list_nth_data(ug_data->from_list, 0); + debug_log("From Address:%s", addrs_info->address); + debug_log("Display Name:%s", addrs_info->display_name); + debug_log("Storage Type:%d", addrs_info->storage_type); + debug_log("Contact ID:%d", addrs_info->contact_id); + debug_log(""); + g_free(prop->sender_display_name); + prop->sender_display_name = g_strdup(addrs_info->display_name); + g_free(prop->sender); + prop->sender = g_strdup(addrs_info->address); + + if (addrs_info->display_name && strlen(addrs_info->display_name) > 0) + elm_object_item_text_set(ug_data->navi_main_it, addrs_info->display_name); + else + elm_object_item_text_set(ug_data->navi_main_it, addrs_info->address); + } + } + + /* create main box */ + ug_data->main_bx = elm_box_add(ug_data->navi_bar); + evas_object_size_hint_weight_set(ug_data->main_bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ug_data->main_bx, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(ug_data->main_bx); + elm_object_content_set(ug_data->scroller, ug_data->main_bx); + + if (ug_data->property->has_attachment) + ug_data->got_att = 1; + else + ug_data->got_att = 0; + + /* packing subject, addrs, attachment */ + _create_subject(ug_data); + + if (ug_data->got_att) { + _create_attach(ug_data); + } + + if (ug_data->isRotate == true) { + debug_log("In Split view - Hiding navi bar"); + elm_naviframe_item_title_visible_set(ug_data->navi_main_it, EINA_FALSE); + + if (ug_data->b_btn) { + + debug_log("hiding back button"); + + evas_object_smart_callback_del(ug_data->b_btn, "clicked", _back_cb); + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + + elm_object_item_part_content_set(ug_data->navi_main_it, "prev_btn", NULL); + } + } +} + +static void _reset_view(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + int ret; + char date_time[MAX_STR_LEN] = { 0, }; + + debug_log("@@@@@@@@@@ isRotate = %d", ug_data->isRotate); + if (ug_data->isRotate == true) { + debug_log("In Split view - Hiding navi bar"); + elm_naviframe_item_title_visible_set(ug_data->navi_main_it, EINA_FALSE); + + if (ug_data->b_btn) { + + debug_log("hiding back button"); + + evas_object_smart_callback_del(ug_data->b_btn, "clicked", _back_cb); + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + + elm_object_item_part_content_set(ug_data->navi_main_it, "prev_btn", NULL); + } + + /* Set scroller to start - height made 480 to consider viewer in split view */ + elm_scroller_region_show(ug_data->scroller, 0, 0, (int)((double)ug_data->main_h * 0.6), ug_data->main_w); + } else { + debug_log("In Full view - Showing navi bar"); + elm_naviframe_item_title_visible_set(ug_data->navi_main_it, EINA_TRUE); + + if (ug_data->b_btn) { + + evas_object_smart_callback_del(ug_data->b_btn, "clicked", _back_cb); + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + } + + debug_log("showing back button"); + + ug_data->b_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(ug_data->b_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(ug_data->b_btn, "clicked", _back_cb, ug_data); + + elm_object_item_part_content_set(ug_data->navi_main_it, "prev_btn", ug_data->b_btn); + + /* Set scroller to start */ + elm_scroller_region_show(ug_data->scroller, 0, 0, ug_data->main_w, ug_data->main_h); + } + + if (ug_data->from_list != NULL) { + email_address_info_t *addrs_info = NULL; + int n_from_list = g_list_length(ug_data->from_list); + debug_log("from list count [%d]", n_from_list); + + if (n_from_list > 0) { + addrs_info = (email_address_info_t *) g_list_nth_data(ug_data->from_list, 0); + if (addrs_info) { + debug_log("From Address:%s", addrs_info->address); + debug_log("Display Name:%s", addrs_info->display_name); + debug_log("Storage Type:%d", addrs_info->storage_type); + debug_log("Contact ID:%d", addrs_info->contact_id); + g_free(prop->sender_display_name); + prop->sender_display_name = g_strdup(addrs_info->display_name); + g_free(prop->sender); + prop->sender = g_strdup(addrs_info->address); + + if (addrs_info->display_name && strlen(addrs_info->display_name) > 0) + elm_object_item_text_set(ug_data->navi_main_it, addrs_info->display_name); + else + elm_object_item_text_set(ug_data->navi_main_it, addrs_info->address); + } + } + } else { + elm_object_item_text_set(ug_data->navi_main_it, prop->sender_display_name); + } + + /* reset subject */ + char *_subject = elm_entry_utf8_to_markup(prop->subject); + char *_subject_concated = g_strconcat("<font_size=44><color=#000000FF>", _subject, "</color></font_size>", NULL); + elm_object_text_set(ug_data->lb_subject, _subject_concated); + elm_label_wrap_width_set(ug_data->lb_subject, ug_data->main_w - (int)(110 * ug_data->scale_factor)); + elm_label_line_wrap_set(ug_data->lb_subject, ELM_WRAP_WORD); + g_free(_subject); + g_free(_subject_concated); + + /* reset date & time */ + char *formatted_date = NULL; + + if (icu_timeformat == APPCORE_TIME_FORMAT_12) + formatted_date = email_get_date_text(icu_locale, "yMdhms", &(prop->mktime)); + else + formatted_date = email_get_date_text(icu_locale, "yMdHms", &(prop->mktime)); + ret = snprintf(date_time, MAX_STR_LEN, "%s", formatted_date); + + free(formatted_date); + formatted_date = NULL; + + elm_object_part_text_set(ug_data->ly_subject, "elm.text.sub", date_time); + + Evas_Object *favorite_icon = elm_icon_add(ug_data->ly_subject); + switch(prop->favorite) + { + case EMAIL_FLAG_NONE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_off.png", NULL); + break; + case EMAIL_FLAG_FLAGED: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_on.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_CLEAR: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Clear.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_ACTIVE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Active.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_COMPLETE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Complete.png", NULL); + break; + } + evas_object_size_hint_aspect_set(favorite_icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(favorite_icon, 1, 1); + evas_object_del(elm_object_part_content_unset(ug_data->ly_subject, "elm.icon.favorite")); + elm_object_part_content_set(ug_data->ly_subject, "elm.icon.favorite", favorite_icon); + evas_object_show(favorite_icon); + + evas_object_show(ug_data->ly_subject); + elm_box_pack_end(ug_data->main_bx, ug_data->ly_subject); + + if (prop->has_attachment) + ug_data->got_att = 1; + else + ug_data->got_att = 0; + + /* pack attachment if it exist */ + if (ug_data->got_att) { + _create_attach(ug_data); + } + + /* check body downloaded */ + _check_body_download(ug_data); +} + +void _hide_view(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + EmailViewerPrivate *priv = ug_data->email_data; + + debug_log("Cancelling all attachment downloads"); + _cancel_download_attachment(ug_data); + + ug_data->display_download_result = FALSE; + _g_ug_data = NULL; + + if (elm_naviframe_top_item_get(ug_data->navi_bar) != ug_data->navi_main_it) { + ug_data->navi_move_it1 = NULL; + ug_data->navi_move_it2 = NULL; + elm_naviframe_item_pop_to(ug_data->navi_main_it); + } + + evas_object_hide(ug_data->layout_main); + elm_box_unpack_all(ug_data->main_bx); + elm_object_scroll_freeze_pop(ug_data->scroller); + + evas_object_hide(ug_data->ly_subject); + evas_object_hide(ug_data->lb_subject); + evas_object_hide(ug_data->webview_bx); + evas_object_hide(ug_data->webview); + + if (ug_data->partial_dn_btn) { + evas_object_del(ug_data->partial_dn_btn); + ug_data->partial_dn_btn = NULL; + } + + if (ug_data->partial_dn_btn_bx) { + evas_object_del(ug_data->partial_dn_btn_bx); + ug_data->partial_dn_btn_bx = NULL; + } + + if (ug_data->ctr_bar) { + elm_object_item_part_content_unset(ug_data->navi_main_it, "controlbar"); + evas_object_del(ug_data->ctr_bar); + ug_data->ctr_bar = NULL; + + ug_data->reply_ctr_it = NULL; + ug_data->replyall_ctr_it = NULL; + ug_data->forward_ctr_it = NULL; + ug_data->calendar_ctr_it = NULL; + ug_data->resend_ctr_it = NULL; + ug_data->move_ctr_it = NULL; + ug_data->del_ctr_it = NULL; + } + + if (ug_data->to_ly) { + evas_object_del(ug_data->to_ly); + ug_data->to_ly = NULL; + } + + if (ug_data->cc_ly) { + evas_object_del(ug_data->cc_ly); + ug_data->cc_ly = NULL; + } + + if (ug_data->bcc_ly) { + evas_object_del(ug_data->bcc_ly); + ug_data->bcc_ly = NULL; + } + + if (ug_data->got_att) { + int i; + + evas_object_del(ug_data->attach_hd_bk); + ug_data->attach_hd_ly = NULL; + ug_data->attach_hd_bk = NULL; + + if (prop->real_att_len > 1) { + for (i = 0; i < prop->real_att_len; i++) { + if (ug_data->attach_ex_ly != NULL) { + if (ug_data->attach_ex_ly[i] != NULL) { + debug_log("index %d", i); + evas_object_del(ug_data->attach_ex_bk[i]); + ug_data->attach_ex_ly[i] = NULL; + ug_data->attach_ex_bk[i] = NULL; + } + } + } + + if (ug_data->attach_ex_ly != NULL) { + free(ug_data->attach_ex_ly); + ug_data->attach_ex_ly = NULL; + ug_data->attach_ex_bk = NULL; + } + } + + for (i = 0; i <= prop->att_len; i++) { + if (ug_data->progress_bar_ly[i] != NULL) { + evas_object_del(ug_data->progress_bar_ly[i]); + ug_data->progress_bar_ly[i] = NULL; + ug_data->progress_bar[i] = NULL; + } + } + } + + if (ug_data->con_popup != NULL) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + if (ug_data->notify != NULL) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } + + edje_object_signal_emit(_EDJ(ug_data->ly_subject), "elm,state,contracted", "elm"); + + evas_object_hide(ug_data->noc_bx); + evas_object_hide(ug_data->dn_btn); + + ewk_view_uri_set(ug_data->webview, EMAIL_DEFAULT_HTML); + + debug_log("free address info list"); + email_free_address_info_list(&(priv->addrs_info_list)); + ug_data->from_list = NULL; + ug_data->to_list = NULL; + ug_data->cc_list = NULL; + ug_data->bcc_list = NULL; + + ug_data->got_att = 0; + ug_data->subject_onoff_flag = 0; + ug_data->attach_onoff_flag = 0; + ug_data->b_partial_body = 0; + ug_data->b_internal = 0; + ug_data->scroller_locked = 0; + ug_data->m_is_multi_touch = 0; + + ug_data->navi_move_it1 = NULL; + ug_data->navi_move_it2 = NULL; + + /* Double_Scroller */ + ug_data->b_noc = 1; + ug_data->b_load_finished = EINA_FALSE; + ug_data->b_show_remote_images = EINA_FALSE; + ug_data->is_webview_scrolling = EINA_FALSE; + ug_data->is_main_scroller_scrolling = EINA_FALSE; +} + +static void _win_profile_changed_cb(void *data, Evas_Object *obj, void *event) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)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 Evas_Object *_create_navigation_bar(EmailViewerUGD *ug_data) +{ + debug_log(""); + Evas_Object *navi_bar; + + navi_bar = elm_naviframe_add(ug_data->layout_main); + if (navi_bar == NULL) { + debug_log("navi_bar == NULL"); + return NULL; + } + + 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; + return navi_bar; +} + +static Evas_Object *_create_subject(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + int ret; + char date_time[MAX_STR_LEN] = { 0, }; + + /* append subject */ + Evas_Object *di = elm_layout_add(ug_data->navi_bar); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.detail_subject"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + + Evas_Object *subject_label; + subject_label = elm_label_add(di); + elm_object_part_content_set(di, "elm.text", subject_label); + char *subject = elm_entry_utf8_to_markup(prop->subject); + char *subject_tagged = g_strconcat("<font_size=44><color=#000000FF>", subject, "</color></font_size>", NULL); + elm_object_text_set(subject_label, subject_tagged); + elm_label_wrap_width_set(subject_label, ug_data->main_w - (int)(110 * ug_data->scale_factor)); + elm_label_line_wrap_set(subject_label, ELM_WRAP_WORD); + ug_data->lb_subject = subject_label; + g_free(subject); + g_free(subject_tagged); + + char *formatted_date = NULL; + + if (icu_timeformat == APPCORE_TIME_FORMAT_12) + formatted_date = email_get_date_text(icu_locale, "yMdhms", &(prop->mktime)); + else + formatted_date = email_get_date_text(icu_locale, "yMdHms", &(prop->mktime)); + ret = snprintf(date_time, MAX_STR_LEN, "%s", formatted_date); + free(formatted_date); + formatted_date = NULL; + + elm_object_part_text_set(di, "elm.text.sub", date_time); + + Evas_Object *favorite_icon = elm_icon_add(di); + switch(prop->favorite) + { + case EMAIL_FLAG_NONE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_off.png", NULL); + break; + case EMAIL_FLAG_FLAGED: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_on.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_CLEAR: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Clear.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_ACTIVE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Active.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_COMPLETE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Complete.png", NULL); + break; + } + evas_object_size_hint_aspect_set(favorite_icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(favorite_icon, 1, 1); + elm_object_part_content_set(di, "elm.icon.favorite", favorite_icon); + evas_object_show(favorite_icon); + + evas_object_show(di); + elm_box_pack_end(ug_data->main_bx, di); + ug_data->ly_subject = di; + + Evas_Object *edje = elm_layout_edje_get(di); + + if (ug_data->to_list || ug_data->cc_list || ug_data->bcc_list) { + edje_object_signal_callback_add(edje, "elm,action,expand,toggle", "elm", _subject_detail_clicked_cb, di); + edje_object_signal_callback_add(edje, "elm,action,toggle", "elm", _subject_favorite_clicked_cb, di); + } else { + edje_object_signal_emit(edje, "elm,state,arrow_hidden", "elm"); + } + + return di; +} + +static Evas_Object *_create_to_addrs(EmailViewerUGD *ug_data) +{ + debug_log(""); + email_address_info_t *addrs_info = NULL; + Elm_Object_Item *mbe_item; + + if (ug_data->to_list == NULL) { + debug_log("to_list is NULL"); + return NULL; + } + + int n_to_list = g_list_length(ug_data->to_list); + int i = 0; + + if (n_to_list <= 0) { + debug_log("to_list count is 0"); + return NULL; + } + + Evas_Object *di = elm_layout_add(ug_data->main_bx); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.to_cc"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + evas_object_show(di); + ug_data->to_ly = di; + elm_box_pack_after(ug_data->main_bx, di, ug_data->ly_subject); + + Evas_Object *to_mbe = elm_multibuttonentry_add(ug_data->main_bx); + char desc[MAX_STR_LEN] = { 0, }; + snprintf(desc, MAX_STR_LEN, "%s:", dgettext("sys_string", "IDS_COM_BODY_TO")); + char *to_str = g_strconcat("<font_size=36><color=#000000FF>", desc, "</color></font_size>", NULL); + elm_object_text_set(to_mbe, to_str); + g_free(to_str); + + evas_object_smart_callback_add(to_mbe, "item,clicked", _mbe_selected_cb, ug_data); + evas_object_smart_callback_add(to_mbe, "item,added", _mbe_added_cb, ug_data); + elm_object_part_content_set(di, "elm.icon", to_mbe); + ug_data->to_mbe = to_mbe; + + Evas_Object *entry = elm_multibuttonentry_entry_get(to_mbe); + if (entry) + elm_entry_editable_set(entry, EINA_FALSE); + + if (n_to_list > EMAIL_VIEW_MAX_TO_COUNT) + n_to_list = EMAIL_VIEW_MAX_TO_COUNT; + + for (i = 0; i < n_to_list; i++) { + addrs_info = (email_address_info_t *) g_list_nth_data(ug_data->to_list, i); + debug_log("Address:%s", addrs_info->address); + debug_log("Display Name:%s", addrs_info->display_name); + debug_log("Storage Type:%d", addrs_info->storage_type); + debug_log("Contact ID:%d", addrs_info->contact_id); + debug_log(""); + if (addrs_info->display_name && strlen(addrs_info->display_name) > 0) + mbe_item = elm_multibuttonentry_item_append(to_mbe, addrs_info->display_name, NULL, NULL); + else + mbe_item = elm_multibuttonentry_item_append(to_mbe, addrs_info->address, NULL, NULL); + elm_object_item_data_set(mbe_item, addrs_info); + } + + return di; +} + +static Evas_Object *_create_cc_addrs(EmailViewerUGD *ug_data) +{ + debug_log(""); + email_address_info_t *addrs_info = NULL; + Elm_Object_Item *mbe_item; + + if (ug_data->cc_list == NULL) { + debug_log("cc_list is NULL"); + return NULL; + } + + int n_cc_list = g_list_length(ug_data->cc_list); + int i = 0; + + if (n_cc_list <= 0) { + debug_log("cc_list count is 0"); + return NULL; + } + + Evas_Object *di = elm_layout_add(ug_data->main_bx); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.to_cc"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + evas_object_show(di); + ug_data->cc_ly = di; + + if (ug_data->to_ly) { + elm_box_pack_after(ug_data->main_bx, di, ug_data->to_ly); + } else { + elm_box_pack_after(ug_data->main_bx, di, ug_data->ly_subject); + } + + Evas_Object *cc_mbe = elm_multibuttonentry_add(ug_data->main_bx); + char desc[MAX_STR_LEN] = { 0, }; + snprintf(desc, MAX_STR_LEN, "%s:", _("IDS_EMAIL_BODY_CC")); + char *cc_str = g_strconcat("<font_size=36><color=#000000FF>", desc, "</color></font_size>", NULL); + elm_object_text_set(cc_mbe, cc_str); + g_free(cc_str); + evas_object_smart_callback_add(cc_mbe, "item,clicked", _mbe_selected_cb, ug_data); + evas_object_smart_callback_add(cc_mbe, "item,added", _mbe_added_cb, ug_data); + elm_object_part_content_set(di, "elm.icon", cc_mbe); + ug_data->cc_mbe = cc_mbe; + + Evas_Object *entry = elm_multibuttonentry_entry_get(cc_mbe); + if (entry) + elm_entry_editable_set(entry, EINA_FALSE); + + if (n_cc_list > EMAIL_VIEW_MAX_CC_COUNT) + n_cc_list = EMAIL_VIEW_MAX_CC_COUNT; + + for (i = 0; i < n_cc_list; i++) { + addrs_info = (email_address_info_t *) g_list_nth_data(ug_data->cc_list, i); + + if (addrs_info->display_name && strlen(addrs_info->display_name) > 0) + mbe_item = elm_multibuttonentry_item_append(cc_mbe, addrs_info->display_name, NULL, NULL); + else + mbe_item = elm_multibuttonentry_item_append(cc_mbe, addrs_info->address, NULL, NULL); + elm_object_item_data_set(mbe_item, addrs_info); + } + + return di; +} + +static Evas_Object *_create_bcc_addrs(EmailViewerUGD *ug_data) +{ + debug_log(""); + email_address_info_t *addrs_info = NULL; + Elm_Object_Item *mbe_item; + + if (ug_data->bcc_list == NULL) { + debug_log("bcc_list is NULL"); + return NULL; + } + + int n_bcc_list = g_list_length(ug_data->bcc_list); + int i = 0; + + if (n_bcc_list <= 0) { + debug_log("bcc_list count is 0"); + return NULL; + } + + Evas_Object *di = elm_layout_add(ug_data->main_bx); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.to_cc"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + evas_object_show(di); + ug_data->bcc_ly = di; + + if (ug_data->cc_ly) { + elm_box_pack_after(ug_data->main_bx, di, ug_data->cc_ly); + } + if (ug_data->to_ly && ug_data->cc_ly == NULL) { + elm_box_pack_after(ug_data->main_bx, di, ug_data->to_ly); + } + if (ug_data->to_ly == NULL && ug_data->cc_ly == NULL) { + elm_box_pack_after(ug_data->main_bx, di, ug_data->ly_subject); + } + + Evas_Object *bcc_mbe = elm_multibuttonentry_add(ug_data->main_bx); + char desc[MAX_STR_LEN] = { 0, }; + snprintf(desc, MAX_STR_LEN, "%s:", _("IDS_EMAIL_BODY_BCC")); + char *bcc_str = g_strconcat("<font_size=36><color=#000000FF>", desc, "</color></font_size>", NULL); + elm_object_text_set(bcc_mbe, bcc_str); + g_free(bcc_str); + evas_object_smart_callback_add(bcc_mbe, "item,clicked", _mbe_selected_cb, ug_data); + evas_object_smart_callback_add(bcc_mbe, "item,added", _mbe_added_cb, ug_data); + elm_object_part_content_set(di, "elm.icon", bcc_mbe); + ug_data->bcc_mbe = bcc_mbe; + + Evas_Object *entry = elm_multibuttonentry_entry_get(bcc_mbe); + if (entry) + elm_entry_editable_set(entry, EINA_FALSE); + + if (n_bcc_list > EMAIL_VIEW_MAX_BCC_COUNT) + n_bcc_list = EMAIL_VIEW_MAX_BCC_COUNT; + + for (i = 0; i < n_bcc_list; i++) { + addrs_info = (email_address_info_t *) g_list_nth_data(ug_data->bcc_list, i); + + if (addrs_info->display_name && strlen(addrs_info->display_name) > 0) + mbe_item = elm_multibuttonentry_item_append(bcc_mbe, addrs_info->display_name, NULL, NULL); + else + mbe_item = elm_multibuttonentry_item_append(bcc_mbe, addrs_info->address, NULL, NULL); + elm_object_item_data_set(mbe_item, addrs_info); + } + + return di; +} + +static Evas_Object *_create_attach(EmailViewerUGD *ug_data) +{ + debug_log(""); + + EmailViewerProp *prop = ug_data->property; + char buff[MAX_STR_LEN]; + int i = 0; + int att_len = prop->real_att_len; + int att_index = 0; + + RETURN_VAL_IF_FAIL(prop->attachments != NULL, NULL); + RETURN_VAL_IF_FAIL(att_len > 0, NULL); + + GList *attachment_list = prop->attachments; + + if (att_len == 1) { + LIST_ITER_START(i, attachment_list) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + + if (info && !info->inline_content) { + if (info->size < 1024) { + g_sprintf(buff, "%s (%d %s)", info->name, (gint) info->size, dgettext("sys_string", "IDS_COM_BODY_B")); + } else { + gdouble tmpsize = (gdouble) (info->size / 1024.); + if (tmpsize < 1024) { + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_KB")); + } else { + tmpsize /= 1024.; + if (tmpsize < 1024) { + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_MB")); + } else { + tmpsize /= 1024.; + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_GB")); + } + } + } + + Evas_Object *di = elm_layout_add(ug_data->navi_bar); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.attachment_item"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + evas_object_show(di); + elm_box_pack_after(ug_data->main_bx, di, ug_data->ly_subject); + + Evas_Object *thumbnail = NULL; + + if (info->download_yn) { + thumbnail = viewer_make_thumbnail(info->path, di); + } else + thumbnail = viewer_make_thumbnail(NULL, di); + evas_object_size_hint_aspect_set(thumbnail, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(thumbnail, 1, 1); + elm_object_part_content_set(di, "elm.icon", thumbnail); + evas_object_show(thumbnail); + + elm_object_part_text_set(di, "elm.text", buff); + + att_index = i; + + Evas_Object *edje = elm_layout_edje_get(di); + edje_object_signal_callback_add(edje, "elm,action,download", "elm", _attachment_save_cb, (void *)att_index); + edje_object_signal_callback_add(edje, "clicked", "*", _attachment_clicked_cb, (void *)att_index); + + Evas_Object *text_bg = NULL; + text_bg = (Evas_Object *)edje_object_part_object_get(_EDJ(di), "elm.event.rect"); + + if (text_bg) { + evas_object_event_callback_add(text_bg, EVAS_CALLBACK_MOUSE_DOWN, _attachment_bg_set_cb, (void *)att_index); + evas_object_event_callback_add(text_bg, EVAS_CALLBACK_MOUSE_UP, _attachment_bg_unset_cb, (void *)att_index); + } + + ug_data->attach_hd_ly = di; + ug_data->attach_hd_bk = di; + } + } + } else if (att_len > 1) { + gint64 total_size = prop->total_att_size; + + Evas_Object *di = elm_layout_add(ug_data->navi_bar); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.attachment_head"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + snprintf(buff, sizeof(buff), "%d %s", att_len, _("IDS_EMAIL_BODY_ATTACHMENTS")); + + Evas_Object *att_head_label; + att_head_label = elm_label_add(di); + elm_object_part_content_set(di, "elm.text", att_head_label); + + char *buff_tagged = g_strconcat("<font_size=35><color=#000000FF>", buff, "<color></font_size>", NULL); + elm_object_text_set(att_head_label, buff_tagged); + g_free(buff_tagged); + + if (total_size < 1024) { + g_sprintf(buff, "(%d %s)", (gint) total_size, dgettext("sys_string", "IDS_COM_BODY_B")); + } else { + gdouble tmpsize = (gdouble) (total_size / 1024.); + + if (tmpsize < 1024) { + g_sprintf(buff, "(%.2f %s)", tmpsize, dgettext("sys_string", "IDS_COM_BODY_KB")); + } else { + tmpsize /= 1024.; + + if (tmpsize < 1024) { + g_sprintf(buff, "(%.2f %s)", tmpsize, dgettext("sys_string", "IDS_COM_BODY_MB")); + } else { + tmpsize /= 1024.; + g_sprintf(buff, "(%.2f %s)", tmpsize, dgettext("sys_string", "IDS_COM_BODY_GB")); + } + } + } + + edje_object_part_text_set(_EDJ(di), "elm.text.sub", buff); + + Evas_Object *edje = elm_layout_edje_get(di); + edje_object_signal_callback_add(edje, "att,icon,save,all", "", _attachment_save_all_cb, di); + edje_object_signal_callback_add(edje, "elm,action,expand,toggle", "elm", _attachment_item_collapse_cb, di); + evas_object_show(di); + elm_box_pack_after(ug_data->main_bx, di, ug_data->ly_subject); + ug_data->attach_hd_ly = di; + ug_data->attach_hd_bk = di; + } else { + debug_log("Attachment doesn't exist"); + } + + return NULL; +} + +static Evas_Object *_create_attach_ex(EmailViewerUGD *ug_data) +{ + debug_log(""); + + EmailViewerProp *prop = ug_data->property; + char buff[MAX_STR_LEN]; + int i = 0; + int j = 0; + int att_len = prop->real_att_len; + int att_index = 0; + + RETURN_VAL_IF_FAIL(prop->attachments != NULL, NULL); + RETURN_VAL_IF_FAIL(att_len > 0, NULL); + + GList *attachment_list = prop->attachments; + + ug_data->attach_ex_ly = (Evas_Object **)calloc(att_len, sizeof(Evas_Object *)); + ug_data->attach_ex_bk = (Evas_Object **)calloc(att_len, sizeof(Evas_Object *)); + + LIST_ITER_START(i, attachment_list) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + + if (info && !info->inline_content) { + if (info->size < 1024) { + g_sprintf(buff, "%s (%d %s)", info->name, (gint) info->size, dgettext("sys_string", "IDS_COM_BODY_B")); + } else { + gdouble tmpsize = (gdouble) (info->size / 1024.); + if (tmpsize < 1024) { + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_KB")); + } else { + tmpsize /= 1024.; + if (tmpsize < 1024) { + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_MB")); + } else { + tmpsize /= 1024.; + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_GB")); + } + } + } + + Evas_Object *di = elm_layout_add(ug_data->navi_bar); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.attachment_item"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + elm_box_pack_after(ug_data->main_bx, di, ug_data->attach_hd_ly); + evas_object_show(di); + + Evas_Object *thumbnail = NULL; + + if (info->download_yn) { + thumbnail = viewer_make_thumbnail(info->path, di); + } else + thumbnail = viewer_make_thumbnail(NULL, di); + evas_object_size_hint_aspect_set(thumbnail, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(thumbnail, 1, 1); + elm_object_part_content_set(di, "elm.icon", thumbnail); + evas_object_show(thumbnail); + + elm_object_part_text_set(di, "elm.text", buff); + + att_index = i; + + Evas_Object *edje = elm_layout_edje_get(di); + edje_object_signal_callback_add(edje, "elm,action,download", "elm", _attachment_save_cb, (void *)att_index); + edje_object_signal_callback_add(edje, "clicked", "*", _attachment_clicked_cb, (void *)att_index); + + Evas_Object *text_bg = NULL; + text_bg = (Evas_Object *)edje_object_part_object_get(_EDJ(di), "elm.event.rect"); + + if (text_bg) { + evas_object_event_callback_add(text_bg, EVAS_CALLBACK_MOUSE_DOWN, _attachment_bg_set_cb, (void *)att_index); + evas_object_event_callback_add(text_bg, EVAS_CALLBACK_MOUSE_UP, _attachment_bg_unset_cb, (void *)att_index); + } + + debug_log("attach ly %d, att_index %d", j, i); + + ug_data->attach_ex_ly[j] = di; + ug_data->attach_ex_bk[j] = di; + + j++; + } + } + + return NULL; +} + +static Evas_Object *_create_body(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + EmailViewerPrivate *priv = ug_data->email_data; + + ug_data->b_noc = 0; + + if (ug_data->noc_bx) { + elm_box_unpack(ug_data->main_bx, ug_data->noc_bx); + evas_object_hide(ug_data->noc_bx); + } + + if (ug_data->dn_btn) { + evas_object_hide(ug_data->dn_btn); + } + + if (ug_data->webview_bx) { + _init_webview_data(ug_data); + + if (prop->has_html) { + /* html mail */ + ug_data->webview_data->body_type_prev = BODY_TYPE_HTML; + ug_data->webview_data->body_type = BODY_TYPE_HTML; + ug_data->webview_data->uri = prop->body_uri; + } else { + /* text mail */ + ug_data->webview_data->body_type_prev = BODY_TYPE_TEXT; + ug_data->webview_data->body_type = BODY_TYPE_TEXT; + ug_data->webview_data->text_content = prop->body; + } + + viewer_set_webview_content(ug_data, 0); + + evas_object_show(ug_data->webview_bx); + evas_object_show(ug_data->webview); + elm_box_pack_end(ug_data->main_bx, ug_data->webview_bx); + + _update_tab_bar(ug_data); + } else { + /* create webview layout */ + ug_data->webview_bx = _load_edj(ug_data->navi_bar, EV_THEME_PATH, "layout.email.web_view"); + if (ug_data->webview_bx == NULL) { + debug_log("Cannot load edj"); + return NULL; + } + + evas_object_size_hint_align_set(ug_data->webview_bx, EVAS_HINT_FILL, 0.0); + evas_object_show(ug_data->webview_bx); + elm_box_pack_end(ug_data->main_bx, ug_data->webview_bx); + + /* create webview */ + if (NULL == ug_data->webview) { + _init_webview_data(ug_data); + viewer_get_webview(ug_data, prop->has_html); + + if (prop->has_html) { + ug_data->webview_data->body_type_prev = BODY_TYPE_HTML; + ug_data->webview_data->body_type = BODY_TYPE_HTML; + ug_data->webview_data->uri = prop->body_uri; + } else { + ug_data->webview_data->body_type_prev = BODY_TYPE_TEXT; + ug_data->webview_data->body_type = BODY_TYPE_TEXT; + ug_data->webview_data->text_content = prop->body; + } + viewer_set_webview_content(ug_data, 0); + } + + evas_object_show(ug_data->webview); + elm_object_part_content_set(ug_data->webview_bx, "web_body", ug_data->webview); + + int resized_w = 0; + int resized_h = 0; + if (ug_data->isRotate) { + resized_w = ug_data->webview_width_landscape * ug_data->scale_factor; + resized_h = ug_data->webview_height_landscape * ug_data->scale_factor; + } else { + resized_w = ug_data->webview_width * ug_data->scale_factor; + resized_h = ug_data->webview_height * ug_data->scale_factor; + } + + evas_object_size_hint_min_set(ug_data->webview, resized_w, resized_h); + + /* set touch callbacks */ + evas_object_smart_callback_add(ug_data->webview, "policy,navigation,decide", _webview_policy_navigation_decide_cb, ug_data); + evas_object_event_callback_add(ug_data->webview, EVAS_CALLBACK_MULTI_DOWN, _webview_multi_down_cb, ug_data); + evas_object_event_callback_add(ug_data->webview, EVAS_CALLBACK_MULTI_UP, _webview_multi_up_cb, ug_data); + + /* update control Bar */ + _update_tab_bar(ug_data); + } + + viewer_set_mail_seen(prop, priv->mail_info); + + if (ug_data->timer) { + ecore_timer_del(ug_data->timer); + ug_data->timer = NULL; + } + + debug_log("send message - list unlock"); + ug_data->timer = ecore_timer_add(0.0, viewer_send_message, ug_data); + + return ug_data->webview_bx; +} + +static Evas_Object *_create_tab_bar(EmailViewerUGD *ug_data) +{ + debug_log(""); + + EmailViewerProp *prop = ug_data->property; + Evas_Object *obj; + obj = elm_toolbar_add(ug_data->navi_bar); + elm_toolbar_shrink_mode_set(obj, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(obj, "naviframe"); + + if (ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_INBOX || ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX || + ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_TRASH || ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_SPAMBOX) { + int n_to_list = g_list_length(ug_data->to_list); + int n_cc_list = g_list_length(ug_data->cc_list); + debug_log("to:%d, cc:%d", n_to_list, n_cc_list); + if (n_to_list + n_cc_list >= 2) + ug_data->reply_ctr_it = elm_toolbar_item_append(obj, ICON_REPLY, dgettext("sys_string", "IDS_COM_SK_REPLY"), _reply_option_cb, ug_data); + else + ug_data->reply_ctr_it = elm_toolbar_item_append(obj, ICON_REPLY, dgettext("sys_string", "IDS_COM_SK_REPLY"), _reply_cb, ug_data); + ug_data->forward_ctr_it = elm_toolbar_item_append(obj, ICON_FORWARD, dgettext("sys_string", "IDS_COM_BODY_FORWARD"), _forward_cb, ug_data); + ug_data->del_ctr_it = elm_toolbar_item_append(obj, ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_cb, ug_data); + ug_data->more_ctr_it = elm_toolbar_item_append(obj, ICON_CONTROLBAR_MORE, dgettext("sys_string", "IDS_COM_SK_MORE"), _more_cb, ug_data); + + elm_object_item_disabled_set(ug_data->reply_ctr_it, EINA_TRUE); + elm_object_item_disabled_set(ug_data->forward_ctr_it, EINA_TRUE); + } else if (ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX) { + debug_log("save_status: %d", prop->status2); + if (prop->status2 == EMAIL_MAIL_STATUS_SEND_FAILURE) { + ug_data->resend_ctr_it = elm_toolbar_item_append(obj, ICON_RESEND, _("IDS_EMAIL_SK_RESEND"), _resend_cb, ug_data); + ug_data->del_ctr_it = elm_toolbar_item_append(obj, ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_cb, ug_data); + } else { + ug_data->del_ctr_it = elm_toolbar_item_append(obj, ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_cb, ug_data); + } + } else { + ug_data->del_ctr_it = elm_toolbar_item_append(obj, ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_cb, ug_data); + ug_data->move_ctr_it = elm_toolbar_item_append(obj, ICON_MOVE, _("IDS_EMAIL_SK_MOVE"), _move_cb, ug_data); + } + + elm_object_item_part_content_set(ug_data->navi_main_it, "controlbar", obj); + ug_data->ctr_bar = obj; + + return NULL; +} + +static Evas_Object *_update_tab_bar(EmailViewerUGD *ug_data) +{ + debug_log(""); + + if (ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_INBOX || ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX || + ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_TRASH || ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_SPAMBOX) { + elm_object_item_disabled_set(ug_data->reply_ctr_it, EINA_FALSE); + elm_object_item_disabled_set(ug_data->forward_ctr_it, EINA_FALSE); + } + + return NULL; +} + +static Evas_Object *_create_partial_body_dn_btn(EmailViewerUGD *ug_data) +{ + debug_log(""); + + ug_data->partial_dn_btn_bx = _load_edj(ug_data->navi_bar, EV_THEME_PATH, "layout.email.partial_download_btn"); + if (ug_data->partial_dn_btn_bx == NULL) { + debug_log("Cannot load edj"); + return NULL; + } + + evas_object_size_hint_align_set(ug_data->partial_dn_btn_bx, EVAS_HINT_FILL, 0.0); + evas_object_show(ug_data->partial_dn_btn_bx); + elm_box_pack_before(ug_data->main_bx, ug_data->partial_dn_btn_bx, ug_data->webview_bx); + + Evas_Object *dn_btn = elm_button_add(ug_data->navi_bar); + elm_object_text_set(dn_btn, _("IDS_EMAIL_BODY_DOWNLOAD_FULL_MESSAGE")); + evas_object_smart_callback_add(dn_btn, "clicked", _body_down_cb, (void *)ug_data); + /*elm_object_theme_set(dn_btn, ug_data->theme);*/ + elm_object_style_set(dn_btn, "text_only/style2"); + evas_object_show(dn_btn); + ug_data->partial_dn_btn = dn_btn; + + elm_object_part_content_set(ug_data->partial_dn_btn_bx, "button", ug_data->partial_dn_btn); + + return ug_data->partial_dn_btn_bx; +} + +static Evas_Object *_create_bg(Evas_Object *win) +{ + debug_log(""); + + Evas_Object *bg = elm_bg_add(win); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, bg); + evas_object_show(bg); + + return bg; +} + +static void _create_down_progress(char *message, popup_cb resp_cb) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + Evas_Object *notify, *pb; + + notify = elm_popup_add(ug_data->win_main); + if (!notify) { + debug_log("elm_popup_add returns NULL"); + return; + } + evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + ug_data->pb_notify = notify; + + elm_object_part_text_set(notify, "title,text", message); + + pb = elm_progressbar_add(notify); + + elm_object_style_set(pb, "list_progress"); + + elm_progressbar_horizontal_set(pb, EINA_TRUE); + evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(pb); + elm_progressbar_value_set(pb, 0.0); + elm_object_content_set(notify, pb); + ug_data->pb_notify_lb = pb; + + 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_CANCEL")); + elm_object_part_content_set(notify, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", resp_cb, ug_data); + debug_log("Cancel btn1 for downloading body: %p", btn1); + + evas_object_show(notify); +} + +static void _create_down_progress_ex(int index, EMAIL_VIEWER_PROGRESSBAR_TYPE p_type) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + EmailViewerPrivate *priv = ug_data->email_data; + + if (!prop || !prop->attachments) { + debug_log(""); + return; + } + + if (!priv) { + debug_log(""); + return; + } + + if (ug_data->forward_ctr_it) + elm_object_item_disabled_set(ug_data->forward_ctr_it, EINA_TRUE); + + int scr_x = 0; + int scr_y = 0; + int scr_w = 0; + int scr_h = 0; + elm_scroller_region_get(ug_data->scroller, &scr_x, &scr_y, &scr_w, &scr_h); + debug_log("scroller region> x[%d] y[%d] w[%d] h[%d]", scr_x, scr_y, scr_w, scr_h); + + GList *attachment_list = prop->attachments; + int i = 0, j = 0; + debug_log("index %d of attachment_count %d", index, prop->att_len); + + EmailAttachmentType *info = NULL; + info = g_list_nth_data(attachment_list, index); + if (info == NULL) { + debug_log("info is NULL"); + } + + Evas_Object *pbar_ly = elm_layout_add(ug_data->navi_bar); + elm_layout_file_set(pbar_ly, EV_THEME_PATH, "layout.email.attachment_downloading"); + evas_object_size_hint_align_set(pbar_ly, EVAS_HINT_FILL, 0.0); + evas_object_show(pbar_ly); + ug_data->progress_bar_ly[index + 1] = pbar_ly; + + if (info) { + char buff[MAX_STR_LEN] = { 0, }; + + Evas_Object *downloading_label1; + downloading_label1 = elm_label_add(pbar_ly); + elm_object_part_content_set(pbar_ly, "elm.text.1", downloading_label1); + char *text_tagged = g_strconcat("<font_size=32><align=left><color=#000000FF>", info->name, "</color></align></font_size>", NULL); + elm_object_text_set(downloading_label1, text_tagged); + elm_label_ellipsis_set(downloading_label1, EINA_TRUE); + elm_label_wrap_width_set(downloading_label1, ug_data->main_w - 240); + g_free(text_tagged); + + if (info->size < 1024) { + g_sprintf(buff, "%d %s", (gint) info->size, dgettext("sys_string", "IDS_COM_BODY_B")); + } else { + gdouble tmpsize = (gdouble) (info->size / 1024.); + + if (tmpsize < 1024) { + g_sprintf(buff, "%.2f %s", tmpsize, dgettext("sys_string", "IDS_COM_BODY_KB")); + } else { + tmpsize /= 1024.; + + if (tmpsize < 1024) { + g_sprintf(buff, "%.2f %s", tmpsize, dgettext("sys_string", "IDS_COM_BODY_MB")); + } else { + tmpsize /= 1024.; + g_sprintf(buff, "%.2f %s", tmpsize, dgettext("sys_string", "IDS_COM_BODY_GB")); + } + } + } + + Evas_Object *downloading_label3; + downloading_label3 = elm_label_add(pbar_ly); + elm_object_part_content_set(pbar_ly, "elm.text.3", downloading_label3); + text_tagged = g_strconcat("<font_size=26><align=right><color=#646464FF>", buff, "</color></align></font_size>", NULL); + elm_object_text_set(downloading_label3, text_tagged); + g_free(text_tagged); + } + + Evas_Object *progressbar = elm_progressbar_add(pbar_ly); + elm_progressbar_horizontal_set(progressbar, EINA_TRUE); + elm_object_style_set(progressbar, "list_progress"); + elm_object_part_content_set(pbar_ly, "elm.icon.2", progressbar); + ug_data->progress_bar[index + 1] = progressbar; + evas_object_show(progressbar); + + Evas_Object *cancel_btn = elm_button_add(pbar_ly); + /*elm_object_theme_set(cancel_btn, ug_data->theme);*/ + elm_object_style_set(cancel_btn, "text_only/style2"); + elm_object_text_set(cancel_btn, dgettext("sys_string", "IDS_COM_SK_CANCEL")); + + elm_object_part_content_set(pbar_ly, "elm.icon.1", cancel_btn); + evas_object_show(cancel_btn); + evas_object_smart_callback_add(cancel_btn, "clicked", _destroy_down_progress_ex, (void *)index); + debug_log("Cancel button for attachment downloading progress popup: %p", cancel_btn); + + /* packing progress layout */ + if (p_type == EMAIL_VIEWER_PROGRESSBAR_ATT && prop->real_att_len > 1) { + for (i = 0; i < prop->att_len; i++) { + info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + if (info && !info->inline_content) { + if (index == i) { + if (ug_data->attach_ex_ly != NULL && ug_data->attach_ex_ly[j] != NULL) { + debug_log(""); + elm_box_pack_after(ug_data->main_bx, pbar_ly, ug_data->attach_ex_ly[j]); + elm_box_unpack(ug_data->main_bx, ug_data->attach_ex_ly[j]); + evas_object_hide(ug_data->attach_ex_ly[j]); + ug_data->attach_ex_ly[j] = pbar_ly; + } + } + j++; + } + } + } + if ((p_type == EMAIL_VIEWER_PROGRESSBAR_ATT && prop->real_att_len == 1) || (p_type == EMAIL_VIEWER_PROGRESSBAR_ATT_ALL)) { + debug_log(""); + elm_box_pack_after(ug_data->main_bx, pbar_ly, ug_data->attach_hd_ly); + elm_box_unpack(ug_data->main_bx, ug_data->attach_hd_ly); + evas_object_hide(ug_data->attach_hd_ly); + ug_data->attach_hd_ly = pbar_ly; + } + + elm_object_focus_set(pbar_ly, EINA_TRUE); + elm_scroller_region_show(ug_data->scroller, scr_x, scr_y, scr_w, scr_h); +} + +static void _destroy_down_progress_ex(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + + if (!prop || !prop->attachments) { + debug_log(""); + return; + } + + if (!priv) { + debug_log(""); + return; + } + + int scr_x = 0; + int scr_y = 0; + int scr_w = 0; + int scr_h = 0; + elm_scroller_region_get(ug_data->scroller, &scr_x, &scr_y, &scr_w, &scr_h); + debug_log("scroller region> x[%d] y[%d] w[%d] h[%d]", scr_x, scr_y, scr_w, scr_h); + + GList *attachment_list = prop->attachments; + int index = (int)data; + int i = 0, j = 0; + + /* Cancel the download in email-service */ + if (index >= 0) { + debug_log("index[%d] download_all_cnt[%d] email_handle[%d]", index, priv->download_all_cnt, priv->download_all_email_handle[index]); + if (priv->download_all_email_handle[index] > 0) { + email_engine_stop_working(ug_data->account_id, priv->download_all_email_handle[index]); + priv->download_all_email_handle[index] = 0; + } + + (priv->download_all_cnt)--; + + if (priv->download_all_cnt == 0) + priv->b_all_att_save = FALSE; + } else if (index == -1) { + for (i = 0; i < prop->att_len; i++) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + if (info && !info->inline_content) { + debug_log("index[%d] download_all_cnt[%d] email_handle[%d]", i, priv->download_all_cnt, priv->download_all_email_handle[i]); + if (priv->download_all_email_handle[i] > 0) { + email_engine_stop_working(ug_data->account_id, priv->download_all_email_handle[i]); + } + } + priv->download_all_email_handle[i] = 0; + } + priv->download_all_cnt = 0; + priv->b_all_att_save = FALSE; + } + + /* upack and delete, pack again */ + if (index >= 0) { + debug_log("real_att_len:%d", prop->real_att_len); + if (prop->real_att_len == 1) { + debug_log("index[%d]", index); + elm_box_pack_after(ug_data->main_bx, ug_data->attach_hd_bk, ug_data->attach_hd_ly); + elm_box_unpack(ug_data->main_bx, ug_data->attach_hd_ly); + evas_object_del(ug_data->attach_hd_ly); + ug_data->attach_hd_ly = ug_data->attach_hd_bk; + evas_object_show(ug_data->attach_hd_ly); + elm_object_focus_set(ug_data->attach_hd_ly, EINA_TRUE); + ug_data->progress_bar[index + 1] = NULL; + ug_data->progress_bar_ly[index + 1] = NULL; + } else if (prop->real_att_len > 1) { + for (i = 0; i < prop->att_len; i++) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + if (info && !info->inline_content) { + if (index == i) { + debug_log("index[%d]", i); + debug_log("attach_onoff_flag:%d", ug_data->attach_onoff_flag); + if (ug_data->attach_onoff_flag > 0) { + elm_box_pack_after(ug_data->main_bx, ug_data->attach_ex_bk[j], ug_data->attach_ex_ly[j]); + elm_box_unpack(ug_data->main_bx, ug_data->attach_ex_ly[j]); + evas_object_del(ug_data->attach_ex_ly[j]); + ug_data->attach_ex_ly[j] = ug_data->attach_ex_bk[j]; + evas_object_show(ug_data->attach_ex_ly[j]); + elm_object_focus_set(ug_data->attach_ex_ly[j], EINA_TRUE); + ug_data->progress_bar[index + 1] = NULL; + ug_data->progress_bar_ly[index + 1] = NULL; + } else { + evas_object_del(ug_data->attach_ex_ly[j]); + ug_data->attach_ex_ly[j] = ug_data->attach_ex_bk[j]; + ug_data->progress_bar[index + 1] = NULL; + ug_data->progress_bar_ly[index + 1] = NULL; + } + } + j++; + } + } + } + } else if (index == -1) { + debug_log("index[%d]", index); + elm_box_pack_after(ug_data->main_bx, ug_data->attach_hd_bk, ug_data->attach_hd_ly); + elm_box_unpack(ug_data->main_bx, ug_data->attach_hd_ly); + evas_object_del(ug_data->attach_hd_ly); + ug_data->attach_hd_ly = ug_data->attach_hd_bk; + evas_object_show(ug_data->attach_hd_ly); + elm_object_focus_set(ug_data->attach_hd_ly, EINA_TRUE); + ug_data->progress_bar[index + 1] = NULL; + ug_data->progress_bar_ly[index + 1] = NULL; + } + + elm_scroller_region_show(ug_data->scroller, scr_x, scr_y, scr_w, scr_h); + + if (priv && priv->download_all_cnt <= 0) { + if (ug_data->forward_ctr_it) + elm_object_item_disabled_set(ug_data->forward_ctr_it, EINA_FALSE); + } +} + +static void _create_more_ctxpopup(EmailViewerUGD *ug_data) +{ + debug_log(""); + if (!ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerProp *prop = ug_data->property; + EMAIL_CONTACT_LIST_INFO_S *contact_list_item = NULL; + contact_list_item = (EMAIL_CONTACT_LIST_INFO_S *)_contact_search_by_email(ug_data, prop->sender); + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->con_popup = elm_ctxpopup_add(ug_data->navi_bar); + if (ug_data->con_popup == NULL) { + debug_log("cannot create context popup"); + return; + } + + if (contact_list_item) { + debug_log("Contact Item Exist: index[%d]", contact_list_item->index); + char index[10] = { 0, }; + snprintf(index, sizeof(index), "%d", contact_list_item->index); + + if (email_engine_check_seen_mail(ug_data->account_id, ug_data->mail_id)) + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_MARK_AS_UNREAD"), NULL, _mark_as_unread_cb, ug_data); + else + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_MARK_AS_READ"), NULL, _mark_as_read_cb, ug_data); + + elm_ctxpopup_item_append(ug_data->con_popup, dgettext("sys_string", "IDS_COM_BODY_MOVE"), NULL, _move_cb, ug_data); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_VIEW_CONTACT"), NULL, _ctxpopup_detail_contact_cb, g_strdup(index)); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_ADD_TO_CALENDAR"), NULL, _add_to_calendar_cb, ug_data); + ug_data->more_ctx_block_item = elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_BLOCK"), NULL, _ctxpopup_add_block_rule_cb, prop->sender); + + _delete_contacts_list(contact_list_item); + } else { + if (email_engine_check_seen_mail(ug_data->account_id, ug_data->mail_id)) + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_MARK_AS_UNREAD"), NULL, _mark_as_unread_cb, ug_data); + else + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_MARK_AS_READ"), NULL, _mark_as_read_cb, ug_data); + + elm_ctxpopup_item_append(ug_data->con_popup, dgettext("sys_string", "IDS_COM_BODY_MOVE"), NULL, _move_cb, ug_data); + elm_ctxpopup_item_append(ug_data->con_popup, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, _ctxpopup_select_contact_mode_email_cb, prop->sender); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_ADD_TO_CALENDAR"), NULL, _add_to_calendar_cb, ug_data); + ug_data->more_ctx_block_item = elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_BLOCK"), NULL, _ctxpopup_add_block_rule_cb, prop->sender); + } + + int count, i; + email_rule_t *rule_list = NULL; + + /* get the rule list from service */ + if (email_get_rule_list(&rule_list, &count) < 0) { + debug_log("email_get_rule_list failed"); + } else { + if (count > 0) { + for (i = 0; i < count; i++) { + if (rule_list[i].type == EMAIL_FILTER_FROM) { + debug_log("block address %s", rule_list[i].value); + + if (g_strcmp0(rule_list[i].value, prop->sender) == 0) { + debug_log("[%s] already blocked", rule_list[i].value); + if (ug_data->more_ctx_block_item) + elm_object_item_disabled_set(ug_data->more_ctx_block_item, EINA_TRUE); + } + } + } + } + /* free email rule_list */ + email_free_rule(&rule_list, count); + } + + Evas_Coord x, y; + evas_pointer_canvas_xy_get(ug_data->evas, &x, &y); + evas_object_move(ug_data->con_popup, x, y - 20); + evas_object_show(ug_data->con_popup); +} + +static void _create_reply_ctxpopup(EmailViewerUGD *ug_data) +{ + debug_log(""); + if (!ug_data) { + debug_log("ug_data is NULL"); + return; + } + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->con_popup = elm_ctxpopup_add(ug_data->navi_bar); + if (ug_data->con_popup == NULL) { + debug_log("cannot create context popup"); + return; + } + + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_TO_SENDER_ABB"), NULL, _reply_cb, ug_data); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_TO_ALL_ABB"), NULL, _reply_all_cb, ug_data); + + Evas_Coord x, y; + evas_pointer_canvas_xy_get(ug_data->evas, &x, &y); + evas_object_move(ug_data->con_popup, x, y - 20); + evas_object_show(ug_data->con_popup); +} + +static void _delete_evas_objects(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + + if (ug_data->webview) { + evas_object_del(ug_data->webview); + ug_data->webview = NULL; + } + + if (ug_data->webview_bx) { + evas_object_del(ug_data->webview_bx); + ug_data->webview_bx = NULL; + } + + if (ug_data->scroller) { + evas_object_del(ug_data->scroller); + ug_data->scroller = NULL; + } + + if (ug_data->main_bx) { + evas_object_del(ug_data->main_bx); + ug_data->main_bx = NULL; + } + + if (ug_data->b_btn) { + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + } + + if (ug_data->sub_ly) { + evas_object_del(ug_data->sub_ly); + ug_data->sub_ly = NULL; + } + + if (ug_data->navi_bar) { + evas_object_del(ug_data->navi_bar); + ug_data->navi_bar = NULL; + } + + if (ug_data->ctr_bar) { + evas_object_del(ug_data->ctr_bar); + ug_data->ctr_bar = NULL; + } + + if (ug_data->layout_main) { + evas_object_del(ug_data->layout_main); + ug_data->layout_main = NULL; + } + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + if (ug_data->select_info) { + 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; + } + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } + + if (ug_data->pb_notify) { + evas_object_del(ug_data->pb_notify); + ug_data->pb_notify = NULL; + } + + if (ug_data->pb_notify_lb) { + evas_object_del(ug_data->pb_notify_lb); + ug_data->pb_notify_lb = NULL; + } + + if (ug_data->partial_dn_btn) { + evas_object_del(ug_data->partial_dn_btn); + ug_data->partial_dn_btn = NULL; + } + + if (ug_data->partial_dn_btn_bx) { + evas_object_del(ug_data->partial_dn_btn_bx); + ug_data->partial_dn_btn_bx = NULL; + } + + if (ug_data->cutlink_timer) { + ecore_timer_del(ug_data->cutlink_timer); + ug_data->cutlink_timer = NULL; + } + + if (ug_data->timer) { + ecore_timer_del(ug_data->timer); + ug_data->timer = NULL; + } + + if (ug_data->idler) { + ecore_idler_del(ug_data->idler); + ug_data->idler = NULL; + } + + if (ug_data->got_att) { + int i; + + evas_object_del(ug_data->attach_hd_bk); + ug_data->attach_hd_ly = NULL; + ug_data->attach_hd_bk = NULL; + + if (prop->real_att_len > 1) { + for (i = 0; i < prop->real_att_len; i++) { + if (ug_data->attach_ex_ly != NULL) { + if (ug_data->attach_ex_ly[i] != NULL) { + debug_log("index %d", i); + evas_object_del(ug_data->attach_ex_bk[i]); + ug_data->attach_ex_ly[i] = NULL; + ug_data->attach_ex_bk[i] = NULL; + } + } + } + + if (ug_data->attach_ex_ly != NULL) { + free(ug_data->attach_ex_ly); + ug_data->attach_ex_ly = NULL; + ug_data->attach_ex_bk = NULL; + } + } + + for (i = 0; i <= prop->att_len; i++) { + if (ug_data->progress_bar_ly[i] != NULL) { + evas_object_del(ug_data->progress_bar_ly[i]); + ug_data->progress_bar_ly[i] = NULL; + ug_data->progress_bar[i] = NULL; + } + } + } +} + +void _launch_composer(EmailViewerUGD *ug_data, int type) +{ + debug_log(""); + + if (!ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerPrivate *priv = ug_data->email_data; + char tmp[256]; + + 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 rtype[10] = { 0, }; + snprintf(rtype, sizeof(rtype), "%d", type); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, rtype); + debug_log("service_add_extra_data: %d", ret); + + memset(tmp, 0x0, sizeof(tmp)); + snprintf(tmp, sizeof(tmp), "%d", priv->account_id); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, tmp); + debug_log("service_add_extra_data: %d", ret); + + memset(tmp, 0x0, sizeof(tmp)); + snprintf(tmp, sizeof(tmp), "%d", priv->mailbox_id); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, tmp); + debug_log("service_add_extra_data: %d", ret); + + memset(tmp, 0x0, sizeof(tmp)); + snprintf(tmp, sizeof(tmp), "%d", priv->mail_id); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAIL_ID, tmp); + debug_log("service_add_extra_data: %d", ret); + + ug_data->ug_composer = create_ug(UG_NAME_EMAIL_COMPOSER, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _launch_vcs_editor(EmailViewerUGD *ug_data) +{ + debug_log(""); + + if (!ug_data) { + debug_log("ug_data is NULL"); + return; + } + + char account_id[MAX_STR_LEN] = { 0, }; + char mail_id[MAX_STR_LEN] = { 0, }; + + EmailViewerProp *prop = ug_data->property; + + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + snprintf(account_id, sizeof(account_id), "%d", prop->account_id); + snprintf(mail_id, sizeof(mail_id), "%d", prop->mail_id); + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CALENDAR_EDIT_ACCOUNT_ID, account_id); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CALENDAR_EDIT_MAIL_ID, mail_id); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CALENDAR_EDIT_SRC_BOX, prop->src_box); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CALENDAR_EDIT_INDEX, EMAIL_BUNDLE_VAL_CALENDAR_EDIT_INDEX); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CALENDAR_EDIT_NOTE, prop->subject); + debug_log("service_add_extra_data: %d", ret); + + ug_data->ug_calendar_edit = create_ug(UG_NAME_CALENDAR_EDIT, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _back_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (_g_ug_data == NULL) { + debug_log("_g_ug_data is NULL"); + return; + } + + if (!data) { + debug_log("data is NULL"); + return; + } + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->con_popup != NULL) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + debug_log("isRoate = %d", ug_data->isRotate); + if (ug_data->isRotate == false && ug_data->b_internal) { + /* Viewer to hide, so set left content (mailbox) size to full */ + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + if (ug_data->b_internal != 1) { + debug_log("ug_destory_me"); + ug_destroy_me(ug_data->ug); + } else { + _hide_view(ug_data); + } +} + +static void _prev_mail_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + /* send next or previous mail request to mailbox. */ + 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_MSG, EMAIL_BUNDLE_VAL_PREV_MSG); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_DO_DELETE, "0"); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _next_mail_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + /* send next or previous mail request to mailbox. */ + 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_MSG, EMAIL_BUNDLE_VAL_NEXT_MSG); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_DO_DELETE, "0"); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _reply_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->display_download_result = FALSE; + + _launch_composer(ug_data, RUN_COMPOSER_REPLY); + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } +} + +static void _reply_all_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->display_download_result = FALSE; + + _launch_composer(ug_data, RUN_COMPOSER_REPLY_ALL); + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } +} + +static void _reply_option_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + _create_reply_ctxpopup(ug_data); +} + +static void _forward_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug_data->display_download_result = FALSE; + + _launch_composer(ug_data, RUN_COMPOSER_FORWARD); +} + +static void _add_to_calendar_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (data == NULL) + return; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + _launch_vcs_editor(ug_data); +} + +static void _resend_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _delete_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + _create_notify(ug_data, NULL, dgettext("sys_string", "IDS_COM_POP_DELETE_Q"), + 2, dgettext("sys_string", "IDS_COM_SK_DELETE"), + _popup_response_delete_ok_cb, dgettext("sys_string", "IDS_COM_SK_CANCEL"), + _popup_response_cb, NULL); +} + +static void _move_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + EmailViewerPrivate *priv = ug_data->email_data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + Elm_Object_Item *git = NULL; + Evas_Object *gl = elm_genlist_add(ug_data->navi_bar); + evas_object_show(gl); + + ug_data->itc1.item_style = "1text.1icon.2"; + ug_data->itc1.func.text_get = _gl_text_get; + ug_data->itc1.func.content_get = _gl_content_get; + ug_data->itc1.func.state_get = _gl_state_get; + ug_data->itc1.func.del = _gl_del; + + ug_data->itc2.item_style = "1text.1icon.2"; + ug_data->itc2.func.text_get = _gl_sub_upper_text_get; + ug_data->itc2.func.content_get = _gl_sub_upper_icon_get; + ug_data->itc2.func.state_get = _gl_state_get; + ug_data->itc2.func.del = NULL; + + ug_data->itc3.item_style = "grouptitle.dialogue.seperator"; + ug_data->itc3.func.text_get = NULL; + ug_data->itc3.func.content_get = NULL; + ug_data->itc3.func.state_get = _gl_state_get; + ug_data->itc3.func.del = NULL; + + Elm_Object_Item *navi_it = NULL; + navi_it = elm_naviframe_item_push(ug_data->navi_bar, dgettext("sys_string", "IDS_COM_BODY_MOVE"), NULL, NULL, gl, NULL); + ug_data->navi_move_it1 = navi_it; + if (ug_data->isRotate) + elm_naviframe_item_title_visible_set(ug_data->navi_move_it1, EINA_FALSE); + + email_mailbox_t *mailbox_list = NULL; + int mailbox_count = 0; + int i = 0; + + email_get_mailbox_list(priv->account_id, -1, &mailbox_list, &mailbox_count); + debug_log("folder count %d", mailbox_count); + ug_data->move_mailbox_list = mailbox_list; + ug_data->move_mailbox_count = mailbox_count; + + git = elm_genlist_item_append(gl, &(ug_data->itc3), NULL, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); + elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + for (i = 0; i < mailbox_count; i++) { + if (g_strcmp0(ug_data->mailbox_name, mailbox_list[i].mailbox_name) != 0) { + 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) + if (g_strcmp0(mailbox_list[i].alias, "[Gmail]")) { + elm_genlist_item_append(gl, &ug_data->itc1, (void *)&(mailbox_list[i]), git, ELM_GENLIST_ITEM_NONE, _gl_sel, (void *)&(mailbox_list[i])); + } + } + } + + /*if (ug_data->b_internal) + 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 *move_back_btn = NULL; + if (ug_data->isRotate) { + ug_data->move_cbar = elm_toolbar_add(ug_data->navi_bar); + elm_toolbar_shrink_mode_set(ug_data->move_cbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(ug_data->move_cbar, "naviframe"); + evas_object_show(ug_data->move_cbar); + + elm_object_item_disabled_set(elm_toolbar_item_append(ug_data->move_cbar, NULL, "", NULL, NULL), EINA_TRUE); + elm_toolbar_item_append(ug_data->move_cbar, NULL, dgettext("sys_string", "IDS_COM_SK_CANCEL"), _move_back_cb, ug_data); + elm_object_item_part_content_set(navi_it, "controlbar", ug_data->move_cbar); + + move_back_btn = elm_object_item_part_content_get(navi_it, "prev_btn"); + if (move_back_btn) { + evas_object_del(move_back_btn); + elm_object_item_part_content_set(navi_it, "prev_btn", NULL); + } + } else { + move_back_btn = elm_object_item_part_content_get(navi_it, "prev_btn"); + if (move_back_btn) { + evas_object_del(move_back_btn); + move_back_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(move_back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(move_back_btn, "clicked", _move_back_cb, ug_data); + elm_object_item_part_content_set(navi_it, "prev_btn", move_back_btn); + } + } +} + +static void _more_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + _create_more_ctxpopup(ug_data); +} + +static void _body_down_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + unsigned int handle; + gboolean ret = 0; + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + EmailViewerPrivate *priv = ug_data->email_data; + + /* check already downloaded */ + int body_download_status = ug_data->property->body_download; + + if (body_download_status == 0) { //EMAIL_BODY_DOWNLOAD_STATUS_NONE + debug_log("need body download"); + } else if (body_download_status == 1) { //EMAIL_BODY_DOWNLOAD_STATUS_FULLY_DOWNLOADED + debug_log("already downloaded, create body directly"); + + /* set property */ + if (viewer_get_internal_mail_info(ug_data->property, ug_data->email_data)) { + debug_log(""); + viewer_make_internal_mail(ug_data->property, ug_data->email_data); + } + + if (ug_data->b_partial_body) { + int scr_x = 0; + int scr_y = 0; + int scr_w = 0; + int scr_h = 0; + elm_scroller_region_get(ug_data->scroller, &scr_x, &scr_y, &scr_w, &scr_h); + debug_log("scroller region> x[%d] y[%d] w[%d] h[%d]", scr_x, scr_y, scr_w, scr_h); + + elm_box_unpack(ug_data->main_bx, ug_data->partial_dn_btn_bx); + if (ug_data->partial_dn_btn) { + evas_object_del(ug_data->partial_dn_btn); + ug_data->partial_dn_btn = NULL; + } + if (ug_data->partial_dn_btn_bx) { + evas_object_del(ug_data->partial_dn_btn_bx); + ug_data->partial_dn_btn_bx = NULL; + } + + if (ug_data->property->has_html) { + ug_data->webview_data->body_type = BODY_TYPE_HTML; + ug_data->webview_data->uri = ug_data->property->body_uri; + } else { + ug_data->webview_data->body_type = BODY_TYPE_TEXT; + ug_data->webview_data->text_content = ug_data->property->body; + } + + viewer_set_webview_content(ug_data, 1); + ug_data->b_partial_body = 0; + + elm_object_focus_set(ug_data->ly_subject, EINA_TRUE); + elm_scroller_region_show(ug_data->scroller, scr_x, scr_y, scr_w, scr_h); + } else { + if (ug_data->property->has_attachment) + ug_data->got_att = 1; + else + ug_data->got_att = 0; + + /* pack attachment if it exist */ + if (ug_data->got_att) { + _create_attach(ug_data); + } + + _create_body(ug_data); + } + + return; + } else if (body_download_status == 2) { //EMAILL_BODY_DOWNLOAD_STATUS_PARTIALLY_DOWNLOADED + debug_log("need full body download"); + } + + ret = email_engine_body_download(priv->account_id, priv->mail_id, &handle); + + if (ret == TRUE) { + priv->email_handle = handle; + debug_log("succeed in email_engine_body_download"); + _create_down_progress(dgettext("sys_string", "IDS_COM_POP_DOWNLOADING"), _destroy_down_progress_cb); + + /* If attachment download is in progress, first cancel to attachment download of the mail and then carry out body download */ + _cancel_download_attachment(ug_data); + + } else { + debug_log("unable to download mail body"); + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + _("IDS_EMAIL_POP_UNABLE_TO_DOWNLOAD"), 1, + dgettext("sys_string", "IDS_COM_SK_OK"), + _popup_response_cb, NULL, NULL, NULL); + } +} + +static void _subject_favorite_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + int err = EMAIL_ERROR_NONE; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + debug_log("Before prop->favorite: %d", prop->favorite); + switch(prop->favorite) { + case EMAIL_FLAG_NONE: + prop->favorite = EMAIL_FLAG_FLAGED; + break; + case EMAIL_FLAG_FLAGED: + prop->favorite = EMAIL_FLAG_NONE; + break; + case EMAIL_FLAG_TASK_STATUS_CLEAR: + prop->favorite = EMAIL_FLAG_TASK_STATUS_ACTIVE; + break; + case EMAIL_FLAG_TASK_STATUS_ACTIVE: + prop->favorite = EMAIL_FLAG_TASK_STATUS_COMPLETE; + break; + case EMAIL_FLAG_TASK_STATUS_COMPLETE: + prop->favorite = EMAIL_FLAG_TASK_STATUS_CLEAR; + break; + default: + debug_log("Never here"); + } + debug_log("After prop->favorite: %d", prop->favorite); + + err = email_set_flags_field(ug_data->account_id, &ug_data->mail_id, 1, EMAIL_FLAGS_FLAGGED_FIELD, prop->favorite, 1); + if (err != EMAIL_ERROR_NONE) { + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + N_("Failed to set favourite"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + return; + } + + evas_object_del(elm_object_part_content_unset(ug_data->ly_subject, "elm.icon.favorite")); + Evas_Object *favorite_icon = elm_icon_add(ug_data->ly_subject); + switch(prop->favorite) + { + case EMAIL_FLAG_NONE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_off.png", NULL); + break; + case EMAIL_FLAG_FLAGED: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_on.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_CLEAR: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Clear.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_ACTIVE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Active.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_COMPLETE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Complete.png", NULL); + break; + default: + debug_log("Never here"); + } + evas_object_size_hint_aspect_set(favorite_icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(favorite_icon, 1, 1); + elm_object_part_content_set(ug_data->ly_subject, "elm.icon.favorite", favorite_icon); + evas_object_show(favorite_icon); + + /* send unread request to mailbox. */ + 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_MSG, EMAIL_BUNDLE_VAL_READ); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _subject_detail_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + Evas_Object *item = (Evas_Object *)data; + EmailViewerUGD *ug_data = _g_ug_data; + + if (!(ug_data->subject_onoff_flag)) { + edje_object_signal_emit(_EDJ(item), "elm,state,expanded", "elm"); + (ug_data->subject_onoff_flag)++; + + _create_to_addrs(_g_ug_data); + _create_cc_addrs(_g_ug_data); + _create_bcc_addrs(_g_ug_data); + } else { + edje_object_signal_emit(_EDJ(item), "elm,state,contracted", "elm"); + (ug_data->subject_onoff_flag)--; + + if (ug_data->to_ly) { + elm_box_unpack(ug_data->main_bx, ug_data->to_ly); + evas_object_del(ug_data->to_ly); + ug_data->to_ly = NULL; + } + if (ug_data->cc_ly) { + elm_box_unpack(ug_data->main_bx, ug_data->cc_ly); + evas_object_del(ug_data->cc_ly); + ug_data->cc_ly = NULL; + } + if (ug_data->bcc_ly) { + elm_box_unpack(ug_data->main_bx, ug_data->bcc_ly); + evas_object_del(ug_data->bcc_ly); + ug_data->bcc_ly = NULL; + } + + elm_object_focus_set(ug_data->ly_subject, EINA_TRUE); + } +} + +static void _attachment_item_collapse_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + Evas_Object *item = (Evas_Object *)data; + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + int i = 0; + + debug_log("attach_onoff_flag:%d", ug_data->attach_onoff_flag); + if (!(ug_data->attach_onoff_flag)) { + debug_log("attachments expanded"); + edje_object_signal_emit(_EDJ(item), "elm,state,expanded", "elm"); + (ug_data->attach_onoff_flag)++; + + if (ug_data->attach_ex_ly == NULL) + _create_attach_ex(ug_data); + else { + for (i = 0; i < prop->real_att_len; i++) { + debug_log("index %d", i); + elm_box_pack_after(ug_data->main_bx, ug_data->attach_ex_ly[i], ug_data->attach_hd_ly); + evas_object_show(ug_data->attach_ex_ly[i]); + } + } + } else { + debug_log("attachments contracted"); + edje_object_signal_emit(_EDJ(item), "elm,state,contracted", "elm"); + ug_data->attach_onoff_flag = 0; + + for (i = 0; i < prop->real_att_len; i++) { + if (ug_data->attach_ex_ly[i] != NULL) { + debug_log("index %d", i); + elm_box_unpack(ug_data->main_bx, ug_data->attach_ex_ly[i]); + evas_object_hide(ug_data->attach_ex_ly[i]); + } + } + } +} + +static void _attachment_save_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + int att_index = (int)data; + + ug_data->display_download_result = FALSE; + + debug_log("Selected item index = %d", att_index); + _show_attachment(ug_data, att_index); +} + +static void _attachment_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + int att_index = (int)data; + + debug_log("Selected item index = %d", att_index); + ug_data->display_download_result = TRUE; + _show_attachment(ug_data, att_index); +} + +static void _attachment_save_all_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + + _save_attachment_all(ug_data); +} + +static void _attachment_bg_set_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + + int att_index = (int)data; + debug_log("att_index = %d, attachments count = %d", att_index, prop->real_att_len); + + if (prop->real_att_len > 1) { + int i = 0; + int j = 0; + GList *attachment_list = prop->attachments; + LIST_ITER_START(i, attachment_list) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + if (info && !info->inline_content) { + if (att_index == i) + break; + j++; + } + } + edje_object_signal_emit(_EDJ(ug_data->attach_ex_ly[j]), "pressed", "elm.event.rect"); + } + else + edje_object_signal_emit(_EDJ(ug_data->attach_hd_ly), "pressed", "elm.event.rect"); +} + +static void _attachment_bg_unset_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + + int att_index = (int)data; + debug_log("att_index = %d, attachments count = %d", att_index, prop->real_att_len); + + if (prop->real_att_len > 1) { + int i = 0; + int j = 0; + GList *attachment_list = prop->attachments; + LIST_ITER_START(i, attachment_list) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + if (info && !info->inline_content) { + if (att_index == i) + break; + j++; + } + } + edje_object_signal_emit(_EDJ(ug_data->attach_ex_ly[j]), "unpressed", "elm.event.rect"); + } + else + edje_object_signal_emit(_EDJ(ug_data->attach_hd_ly), "unpressed", "elm.event.rect"); +} + +static void _mark_as_unread_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + EmailViewerPrivate *priv = ug_data->email_data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + int err = 0; + debug_log("ug_data->mail_id(%d), priv->mail_id(%d), mail_info->mail_id(%d))", ug_data->mail_id, priv->mail_id, priv->mail_info->mail_id); + + err = email_set_flags_field(ug_data->account_id, &ug_data->mail_id, 1, EMAIL_FLAGS_SEEN_FIELD, 0, 1); + debug_log("email_set_flags_field - err(%d)", err); + + if (err != EMAIL_ERROR_NONE) { + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_MARK_AS_UNREAD"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } else { + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", _("IDS_EMAIL_POP_MARKED_AS_UNREAD")); + _show_select_info(ug_data, str); + + /* send unread request to mailbox. */ + 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_MSG, EMAIL_BUNDLE_VAL_UNREAD); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } +} + +static void _mark_as_read_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + EmailViewerPrivate *priv = ug_data->email_data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + int err = 0; + debug_log("ug_data->mail_id(%d), priv->mail_id(%d), mail_info->mail_id(%d))", ug_data->mail_id, priv->mail_id, priv->mail_info->mail_id); + + err = email_set_flags_field(priv->mail_info->account_id, &ug_data->mail_id, 1, EMAIL_FLAGS_SEEN_FIELD, 1, 1); + debug_log("email_set_flags_field - err(%d)", err); + + if (err != EMAIL_ERROR_NONE) { + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_MARK_AS_READ"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } else { + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", _("IDS_EMAIL_POP_MARKED_AS_READ")); + _show_select_info(ug_data, str); + + /* send unread request to mailbox. */ + 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_MSG, EMAIL_BUNDLE_VAL_READ); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } +} + +static void _ctxpopup_detail_contact_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (data == NULL || _g_ug_data == NULL) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + char *index = (char *)data; + char type[10] = { 0, }; + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + snprintf(type, sizeof(type), "%d", CT_UG_REQUEST_DETAIL); + + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, type); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_ID, index); + debug_log("service_add_extra_data: %d", ret); + + create_ug(UG_CONTACTS_DETAILS, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + + debug_log("set flag for contact ug"); + ug_data->b_contact_ug_launched = TRUE; +} + +static void _ctxpopup_send_email_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + + if (ug_data->con_popup == NULL) { + debug_log("con_popup is NULL"); + return; + } + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + debug_log("email: %s", (char *)data); + + 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 rtype[10] = { 0, }; + 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, (char *)data); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CC, NULL); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BCC, NULL); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_SUBJECT, NULL); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BODY, NULL); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ATTACHMENT, NULL); + debug_log("service_add_extra_data: %d", ret); + + ug_data->ug_composer = create_ug(UG_NAME_EMAIL_COMPOSER, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _ctxpopup_add_contact_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + char tmp[MAX_STR_LEN] = { 0, }; + EmailViewerUGD *ug_data = _g_ug_data; + + if (ug_data->con_popup == NULL) { + debug_log("con_popup is NULL"); + return; + } + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_PHONE_NUMBER) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_NUM); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_NUM, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_EMAIL) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_EMAIL); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_EMAIL, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_URL) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_WEB); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_WEB, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + + create_ug(UG_CONTACTS_DETAILS, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _ctxpopup_cutlink_update_contact_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + char tmp[MAX_STR_LEN] = { 0, }; + EmailViewerUGD *ug_data = _g_ug_data; + + if (ug_data->con_popup == NULL) { + debug_log("con_popup is NULL"); + return; + } + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_PHONE_NUMBER) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_NUM); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_NUM, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_EMAIL) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_EMAIL); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_EMAIL, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_URL) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_WEB); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_WEB, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + + ug_data->ug_contacts_search = create_ug(UG_CONTACTS_LIST, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _ctxpopup_select_contact_mode_email_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + Evas_Coord x, y; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->con_popup = elm_ctxpopup_add(ug_data->navi_bar); + if (ug_data->con_popup == NULL) { + debug_log("cannot create context popup"); + return; + } + + ug_data->create_contact_arg = CONTACTUI_REQ_ADD_EMAIL; + ug_data->update_contact_type = CONTACTUI_REQ_ADD_EMAIL; + + elm_ctxpopup_item_append(ug_data->con_popup, dgettext("sys_string", "IDS_COM_OPT_CREATE_CONTACT"), NULL, _ctxpopup_add_contact_cb, data); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_UPDATE_EXISTING"), NULL, _ctxpopup_cutlink_update_contact_cb, data); + + evas_pointer_canvas_xy_get(ug_data->evas, &x, &y); + evas_object_move(ug_data->con_popup, x, y); + evas_object_show(ug_data->con_popup); +} + +static void _ctxpopup_add_block_rule_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerPrivate *priv = ug_data->email_data; + char *addr = (char *)data; + + debug_log("Block address: %s", addr); + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + int ret; + email_rule_t *rule = NULL; + + /* add filtering rule */ + rule = malloc(sizeof(email_rule_t)); + rule->account_id = priv->account_id; + rule->type = EMAIL_FILTER_FROM; + rule->value = g_strdup(addr); + rule->faction = EMAIL_FILTER_BLOCK; + + int err = 0; + email_mailbox_t *mail_box = NULL; + if ((err = email_get_mailbox_by_mailbox_type(ug_data->account_id, ug_data->mailbox_type, &mail_box)) != EMAIL_ERROR_NONE) { + debug_log("email_get_mailbox_by_mailbox_type failed! - err (%d)", err); + } + + if (mail_box == NULL) { + debug_log("mail_box is NULL"); + } + + rule->target_mailbox_id = mail_box->mailbox_id; + + if (mail_box) { + debug_log("email_free_mailbox is called"); + email_free_mailbox(&mail_box, 1); + mail_box = NULL; + } + + rule->flag1 = 1; + rule->flag2 = RULE_TYPE_INCLUDES; + + ret = email_add_rule(rule); + if (ret < 0) { + debug_log("email_add_rule failed %d", ret); + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_ADD_BLOCK_RULE"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } else { + int vconf_ret = -1; + vconf_ret = vconf_set_int(EMAIL_VCONF_KEY_BLOCK_RULE_CHANGED, 1); + if (vconf_ret == -1) { + debug_log("fail to set vconf int(spam_rule_changed)"); + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_ADD_BLOCK_RULE"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } else { + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", _("IDS_EMAIL_POP_BLOCKED")); + ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + } + } + + email_free_rule(&rule, 1); +} + +static void _popup_response_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("_g_ug_data is NULL"); + return; + } + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } +} + +static void _popup_response_delete_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("_g_ug_data is NULL"); + return; + } + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } + + if (ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_TRASH) + _delete_email(ug_data); + else + _move_email(ug_data, _find_folder_id_using_folder_type(ug_data, EMAIL_MAILBOX_TYPE_TRASH), TRUE); + + if (ug_data->isRotate == false && ug_data->b_internal) { + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + /* close viewer */ + if (ug_data->b_internal) { + _hide_view(ug_data); + + /* send next or previous mail request to mailbox. */ + 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_MSG, EMAIL_BUNDLE_VAL_NEXT_MSG); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_DO_DELETE, "1"); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } else + ug_destroy_me(ug_data->ug); +} + +static void _popup_response_to_destroy_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + evas_object_del(obj); + + ug_data->b_direct_destroy = 1; + ug_destroy_me(ug_data->ug); + _g_ug_data = NULL; +} + +static void _webview_multi_up_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (_g_ug_data == NULL) + return; + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug_data->m_is_multi_touch = FALSE; + + if (ug_data->scroller_locked) { + ug_data->scroller_locked = FALSE; + debug_log("<<unlock scroller>>"); + debug_log("<<lock webview>>"); + } +} + +static void _webview_multi_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (_g_ug_data == NULL) + return; + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug_data->m_is_multi_touch = TRUE; + + if (ug_data->scroller_locked == FALSE) { + ug_data->scroller_locked = TRUE; + debug_log("<<lock scroller>>"); + debug_log("<<unlock webview>>"); + } +} + +static void _webview_policy_navigation_decide_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->b_load_finished == EINA_TRUE) { + Ewk_Policy_Decision *policy_decision = (Ewk_Policy_Decision *)event_info; + ewk_policy_decision_ignore(policy_decision); + + debug_log("url:%s", ewk_policy_decision_url_get(policy_decision)); + debug_log("scheme:%s", ewk_policy_decision_scheme_get(policy_decision)); + debug_log("cookie:%s", ewk_policy_decision_cookie_get(policy_decision)); + debug_log("host:%s", ewk_policy_decision_host_get(policy_decision)); + debug_log("response_mime:%s", ewk_policy_decision_response_mime_get(policy_decision)); + + char *url = (char *)ewk_policy_decision_url_get(policy_decision); + + if ((strncmp(url, "http://", 7) == 0) || + (strncmp(url, "https://", 8) == 0) || + (strncmp(url, "ftp://", 6) == 0) || + (strncmp(url, "mms://", 6) == 0) || + (strncmp(url, "file://", 7) == 0) || + (strncmp(url, "rtsp://", 7) == 0) || + (strncmp(url, "wap://", 6) == 0)) { + 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_set_operation(service, SERVICE_OPERATION_VIEW); + debug_log("service_set_operation: %d", ret); + ret = service_set_uri(service, url); + debug_log("service_set_uri: %d", ret); + ret = service_send_launch_request(service, NULL, NULL); + debug_log("service_send_launch_request: %d", ret); + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } + + if (strncmp(url, "tel:", 4) == 0) { + char refined_num[MAX_STR_LEN] = { 0, }; + int i = 0, j = 0; + + while (url[i] != '\0') { + if (url[i] >= '0' && url[i] <= '9') + refined_num[j++] = url[i]; + i++; + } + + char *number = refined_num; + debug_log("number: %s", number); + + int ret; + service_h service = NULL; + char telnum[255] = { 0, }; + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + ret = service_set_operation(service, SERVICE_OPERATION_CALL); + debug_log("service_set_operation: %d", ret); + snprintf(telnum, sizeof(telnum), "tel:%s", number); /* Number to make a call */ + ret = service_set_uri(service, telnum); + debug_log("service_set_uri: %d", ret); + ret = service_add_extra_data(service, "ctindex", "-1"); /* If you don't know ctindex, you don't have to add it. */ + debug_log("service_add_extra_data: %d", ret); + ret = service_send_launch_request(service, NULL, NULL); + debug_log("service_send_launch_request: %d", ret); + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } + + if (strncmp(url, "mailto:", 7) == 0) { + 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 rtype[10] = { 0, }; + 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, &url[7]); + debug_log("service_add_extra_data: %d", ret); + + ug_data->ug_composer = create_ug(UG_NAME_EMAIL_COMPOSER, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } + } +} + +/* Double_Scroller */ +static void _outter_scroller_bottom_hit_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + int res = email_engine_check_body_download(ug_data->email_data->mail_id); + + if (ug_data->is_main_scroller_scrolling && res != 0) { + debug_log("Main scroller hold push"); + elm_object_scroll_freeze_push(ug_data->scroller); //stop + ewk_view_vertical_panning_hold_set(ug_data->webview, EINA_FALSE); //restart + ug_data->is_main_scroller_scrolling = EINA_FALSE; + ug_data->is_webview_scrolling = EINA_TRUE; + } +} + +static void _outter_scroller_top_hit_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _outter_scroller_scroll_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug_data->is_main_scroller_scrolling = EINA_TRUE; +} + +static void _mbe_added_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _mbe_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + email_address_info_t *addrs_info = NULL; + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + debug_log("selected item:%s", elm_object_item_text_get(item)); + + addrs_info = elm_object_item_data_get(item); + + Evas_Coord x, y; + EMAIL_CONTACT_LIST_INFO_S *contact_list_item = NULL; + contact_list_item = (EMAIL_CONTACT_LIST_INFO_S *)_contact_search_by_email(ug_data, addrs_info->address); + + if (ug_data->con_popup != NULL) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->con_popup = elm_ctxpopup_add(ug_data->navi_bar); + if (ug_data->con_popup == NULL) { + debug_log("cannot create context popup"); + return; + } + + if (contact_list_item) { + debug_log("Contact Item Exist: index[%d]", contact_list_item->index); + char index[10] = { 0, }; + snprintf(index, sizeof(index), "%d", contact_list_item->index); + + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_VIEW_CONTACT"), NULL, _ctxpopup_detail_contact_cb, g_strdup(index)); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_SEND_EMAIL"), NULL, _ctxpopup_send_email_cb, addrs_info->address); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_BLOCK"), NULL, _ctxpopup_add_block_rule_cb, addrs_info->address); + _delete_contacts_list(contact_list_item); + } else { + elm_ctxpopup_item_append(ug_data->con_popup, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, _ctxpopup_select_contact_mode_email_cb, addrs_info->address); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_SEND_EMAIL"), NULL, _ctxpopup_send_email_cb, addrs_info->address); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_BLOCK"), NULL, _ctxpopup_add_block_rule_cb, addrs_info->address); + } + + evas_pointer_canvas_xy_get(ug_data->evas, &x, &y); + evas_object_move(ug_data->con_popup, x, y); + evas_object_show(ug_data->con_popup); +} + +static void _destroy_down_progress_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerPrivate *priv = ug_data->email_data; + + email_engine_stop_working(ug_data->account_id, priv->email_handle); + + if (ug_data->pb_notify) { + evas_object_del(ug_data->pb_notify); + ug_data->pb_notify = NULL; + } + + if (ug_data->pb_notify_lb) { + evas_object_del(ug_data->pb_notify_lb); + ug_data->pb_notify_lb = NULL; + } + + if (data == NULL) { + if (priv->att_file_id) { + free(priv->att_file_id); + priv->att_file_id = NULL; + } + + priv->file_size = 0; + priv->attachment_id = -1; + priv->multi_body = FALSE; + } +} + +static void _init_viewer_data(int account_id, int mail_id, char *srv_mail_id, EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerPrivate *priv = NULL; + EmailViewerProp *prop = NULL; + email_address_info_list_t *addrs_info_list = NULL; + + /* Create Email Viewer Private Structure */ + if (ug_data->email_data) { + if (ug_data->email_data->mail_info) { + debug_log("mail_info freed"); + email_free_mail_data(&(ug_data->email_data->mail_info), 1); + ug_data->email_data->mail_info = NULL; + } + + if (ug_data->email_data->attachment_info && ug_data->email_data->attachment_count > 0) { + debug_log("attachment_info freed p[%p] n[%d]", ug_data->email_data->attachment_info, ug_data->email_data->attachment_count); + email_free_attachment_data(&(ug_data->email_data->attachment_info), ug_data->email_data->attachment_count); + ug_data->email_data->attachment_info = NULL; + ug_data->email_data->attachment_count = 0; + } + + memset(ug_data->email_data, 0x0, sizeof(EmailViewerPrivate)); + priv = ug_data->email_data; + } else { + priv = (EmailViewerPrivate *)malloc(sizeof(EmailViewerPrivate)); + memset(priv, 0x0, sizeof(EmailViewerPrivate)); + ug_data->email_data = priv; + } + + /* Create Email Viewer Property Structure */ + if (ug_data->property) { + if (ug_data->property->attachments) { + int i = 0; + LIST_ITER_START(i, ug_data->property->attachments) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, ug_data->property->attachments); + if (info->name) + free(info->name); + if (info->path) + free(info->path); + free(info); + } + g_list_free(ug_data->property->attachments); + } + memset(ug_data->property, 0x0, sizeof(EmailViewerProp)); + prop = ug_data->property; + } else { + prop = (EmailViewerProp *)malloc(sizeof(EmailViewerProp)); + memset(prop, 0x0, sizeof(EmailViewerProp)); + ug_data->property = prop; + } + + /* Set account ID */ + priv->account_id = account_id; + prop->account_id = account_id; + + /* Set mail ID */ + priv->mail_id = mail_id; + prop->mail_id = mail_id; + + priv->mailbox_id = ug_data->mailbox_id; + prop->src_box = ug_data->mailbox_name; + debug_log("mailbox_name [%s]", ug_data->mailbox_name); + + /* Get mail_info from service, and fill property */ + if (viewer_get_internal_mail_info(ug_data->property, ug_data->email_data)) { + viewer_make_internal_mail(ug_data->property, ug_data->email_data); + } + + email_get_address_info_list(priv->mail_id, &addrs_info_list); + + if (addrs_info_list) { + ug_data->from_list = addrs_info_list->from; + ug_data->to_list = addrs_info_list->to; + ug_data->cc_list = addrs_info_list->cc; + ug_data->bcc_list = addrs_info_list->bcc; + priv->addrs_info_list = addrs_info_list; + } + + ug_data->option_header_opened = 0; +} + +static int _init_webview_data(EmailViewerUGD *ug_data) +{ + debug_log(""); + + EmailViewerWebview *wvd; + + if (ug_data->webview_data == NULL) { + wvd = (EmailViewerWebview *)malloc(sizeof(EmailViewerWebview)); + memset(wvd, 0x0, sizeof(EmailViewerWebview)); + ug_data->webview_data = wvd; + } + + if (STR_VALID(ug_data->property->charset)) { + ug_data->webview_data->charset = g_strdup(ug_data->property->charset); + debug_log("charset:%s", ug_data->webview_data->charset); + } else { + ug_data->webview_data->charset = DEFAULT_CHARSET; + debug_log("charset:%s", ug_data->webview_data->charset); + } + + return 0; +} + +static Eina_Bool _check_body_download(void *data) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return ECORE_CALLBACK_CANCEL; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + _create_tab_bar(ug_data); + + /* check mail body downloaded */ + int body_download_status = ug_data->property->body_download; + + if (body_download_status == 0) { //EMAIL_BODY_DOWNLOAD_STATUS_NONE + debug_log("need body download"); + ug_data->b_noc = 1; /* Double_Scroller */ + + if (ug_data->noc_bx) { + debug_log("no content layout exist"); + evas_object_show(ug_data->noc_bx); + elm_object_text_set(ug_data->dn_btn, _("IDS_EMAIL_BODY_DOWNLOAD_MESSAGE")); + evas_object_show(ug_data->dn_btn); + elm_box_pack_end(ug_data->main_bx, ug_data->noc_bx); + } else { + /* add body download button */ + ug_data->noc_bx = _load_edj(ug_data->navi_bar, EV_THEME_PATH, "layout.email.no_content"); + if (ug_data->noc_bx == NULL) { + debug_log("Cannot load edj"); + return ECORE_CALLBACK_CANCEL; + } + + evas_object_size_hint_align_set(ug_data->noc_bx, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(ug_data->noc_bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(ug_data->noc_bx); + elm_box_pack_end(ug_data->main_bx, ug_data->noc_bx); + + Evas_Object *dn_btn = elm_button_add(ug_data->navi_bar); + /*elm_object_theme_set(dn_btn, ug_data->theme);*/ + elm_object_style_set(dn_btn, "text_only/style2"); + elm_object_text_set(dn_btn, _("IDS_EMAIL_BODY_DOWNLOAD_MESSAGE")); + evas_object_smart_callback_add(dn_btn, "clicked", _body_down_cb, (void *)ug_data); + evas_object_show(dn_btn); + ug_data->dn_btn = dn_btn; + + elm_object_part_content_set(ug_data->noc_bx, "btn", ug_data->dn_btn); + debug_log("no content layout created"); + } + + elm_object_focus_set(ug_data->noc_bx, EINA_TRUE); + if (ug_data->timer) { + ecore_timer_del(ug_data->timer); + ug_data->timer = NULL; + } + + ug_data->timer = ecore_timer_add(0.0, viewer_send_message, ug_data); + } else if (body_download_status == 1) { //EMAIL_BODY_DOWNLOAD_STATUS_FULLY_DOWNLOADED + debug_log("check mail downloaded - ok"); + /* create body */ + _create_body(ug_data); + } else if (body_download_status == 2) { //EMAIL_BODY_DOWNLOAD_STATUS_PARTIALLY_DOWNLOADED + /* partial body */ + debug_log("Partial Body"); + ug_data->b_partial_body = 1; + _create_body(ug_data); + _create_partial_body_dn_btn(ug_data); + } + + return ECORE_CALLBACK_CANCEL; +} + +static int _update_attachment_info(EmailViewerUGD *ug_data, int index) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + int i = 0; + int j = 0; + int attach_index = 0; + + /* update attachment information */ + LIST_ITER_START(i, prop->attachments) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, prop->attachments); + + if (info && !info->inline_content) { + debug_log("info->index[%d] index[%d]", info->index, index); + + if (info->index == index) { + info->download_yn = TRUE; + info->path = email_engine_get_attachment_path(info->attach_id); + + attach_index = i; + + if (prop->real_att_len > 1) { + Evas_Object *thumbnail = viewer_make_thumbnail(info->path, ug_data->attach_ex_bk[j]); + Evas_Object *content = elm_object_part_content_unset(ug_data->attach_ex_bk[j], "elm.icon"); + evas_object_del(content); + elm_object_part_content_set(ug_data->attach_ex_bk[j], "elm.icon", thumbnail); + evas_object_show(thumbnail); + } else { + Evas_Object *thumbnail = viewer_make_thumbnail(info->path, ug_data->attach_hd_bk); + Evas_Object *content = elm_object_part_content_unset(ug_data->attach_hd_bk, "elm.icon"); + evas_object_del(content); + elm_object_part_content_set(ug_data->attach_hd_bk, "elm.icon", thumbnail); + evas_object_show(thumbnail); + } + + break; + } + + j++; + } + } + + debug_log("return id[%d]", attach_index); + + return attach_index; +} + +static int _get_attachment_info_index(EmailViewerUGD *ug_data, int index) +{ + debug_log(""); + + EmailViewerProp *prop = ug_data->property; + int i = 0; + int attach_index = 0; + + /* update attachment information */ + LIST_ITER_START(i, prop->attachments) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, prop->attachments); + if (info) { + debug_log("info->index[%d] index[%d]", info->index, index); + if (info->index == index) { + attach_index = i; + break; + } + } + } + + debug_log("return id[%d]", attach_index); + + return attach_index; +} + +static void _show_select_info(EmailViewerUGD *ug_data, char *str) +{ + 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; + } + + ug_data->select_info = elm_notify_add(ug_data->win_main); + elm_notify_orient_set(ug_data->select_info, ELM_NOTIFY_ORIENT_BOTTOM); + + ug_data->selectioninfo_layout = elm_layout_add(ug_data->layout_main); + elm_object_content_set(ug_data->select_info, ug_data->selectioninfo_layout); + + elm_layout_theme_set(ug_data->selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_64"); + + edje_object_part_text_set(_EDJ(ug_data->selectioninfo_layout), "elm.text", str); + elm_notify_timeout_set(ug_data->select_info, 3); + evas_object_show(ug_data->select_info); +} + +static void _save_attachment(EmailViewerUGD *ug_data, int index) +{ + debug_log(""); + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + char newpath[MAX_STR_LEN] = { 0, }; + + RETURN_IF_FAIL(prop->attachments != NULL); + EmailAttachmentType *info = g_list_nth_data(prop->attachments, index); + + if (info == NULL) { + debug_log("EmailAttachmentType *info is NULL"); + return; + } + + if (!info->download_yn) { + unsigned handle = 0; + gboolean res = FALSE; + + if (ug_data->progress_bar[index + 1] != NULL) { + debug_log("Already getting downloaded...!"); + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + _("IDS_EMAIL_POP_ALREADY_DOWNLOADING_T_HEADER"), 1, + dgettext("sys_string", "IDS_COM_SK_OK"), + _popup_response_cb, NULL, NULL, NULL); + return; + } + + debug_log("Need attachment download"); + /* download attachment */ + priv->b_att_save = TRUE; + + res = email_engine_attachment_download(priv->account_id, priv->mail_id, info->index, &handle); + + if (res == TRUE) { + priv->download_all_cnt++; + debug_log("Assigning Handle[%d] Index[%d] download_all_cnt[%d]", handle, index, priv->download_all_cnt); + priv->download_all_email_handle[index] = handle; + _create_down_progress_ex(index, EMAIL_VIEWER_PROGRESSBAR_ATT); + ug_data->display_download_result = TRUE; + } else { + priv->b_att_save = FALSE; + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + _("IDS_EMAIL_POP_UNABLE_TO_OPEN_ATTACHMENT"), 1, + dgettext("sys_string", "IDS_COM_SK_OK"), _popup_response_cb, + NULL, NULL, NULL); + } + + return; + } + + if (info && STR_VALID(info->path)) { + int ret; + debug_log("path[%s]", info->path); + ret = email_attachments_save_file(info->path, newpath, NULL); + if (ret == EMAIL_EXT_SAVE_ERR_NONE) { + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_POP_SAVED")); + /*_show_select_info(ug_data, str);*/ + ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + } + } +} + +static void _show_attachment(EmailViewerUGD *ug_data, int index) +{ + debug_log(""); + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + EmailAttachmentType *info = g_list_nth_data(prop->attachments, index); + char newpath[MAX_STR_LEN] = { 0, }; + + if (info == NULL) { + debug_log("EmailAttachmentType *info is NULL"); + return; + } + + debug_log("attach_id:%d, index:%d, name(%s), path(%s), size:%d, download_yn:%d, drm:%d, inline_content:%d", + info->attach_id, info->index, info->name, info->path, (gint) info->size, info->download_yn, info->drm, info->inline_content); + + if (!info->download_yn) { + unsigned handle = 0; + gboolean res = FALSE; + debug_log("Need attachment download"); + + priv->b_att_open = TRUE; + + res = email_engine_attachment_download(priv->account_id, priv->mail_id, info->index, &handle); + + if (res == TRUE) { + priv->download_all_email_handle[index] = handle; + priv->download_all_cnt++; + _create_down_progress_ex(index, EMAIL_VIEWER_PROGRESSBAR_ATT); + } else { + priv->b_att_open = FALSE; + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + _("IDS_EMAIL_POP_UNABLE_TO_OPEN_ATTACHMENT"), 1, + dgettext("sys_string", "IDS_COM_SK_OK"), _popup_response_cb, + NULL, NULL, NULL); + } + return; + } + + gboolean res = FALSE; + res = email_attachments_save_file(info->path, newpath, NULL); + debug_log("Result:%d, Saved Path:%s", res, newpath); + + if (res == EMAIL_EXT_SAVE_ERR_NONE) { + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_POP_SAVED")); + /*_show_select_info(ug_data, str);*/ + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + + if (g_str_has_suffix(info->path, ".vcs")) { + int nResult = -1; + int calendar_id = 1; + calendar_svc_connect(); + nResult = calendar_svc_calendar_import(newpath, calendar_id); + + debug_log("check return value of calendar_svc_util_register_vcs_file for %s - %d", newpath, nResult); + if (nResult != CAL_SUCCESS) { + debug_log("Failed to import path(%s) to id(%d)", newpath, calendar_id); + return; + } + calendar_svc_close(); + } else + media_file_register(newpath); + } else if (res == EMAIL_EXT_SAVE_ERR_ALREADY_EXIST && !ug_data->display_download_result) { + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + dgettext("sys_string", "IDS_COM_POP_ALREDY_EXISTS"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } + + debug_log("display_download_result:%d", ug_data->display_download_result); + if (ug_data->display_download_result) { + if (res == EMAIL_EXT_SAVE_ERR_NONE || res == EMAIL_EXT_SAVE_ERR_ALREADY_EXIST) { + 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_set_operation(service, SERVICE_OPERATION_VIEW); + debug_log("service_set_operation: %d", ret); + ret = service_set_uri(service, newpath); + debug_log("service_set_uri: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIDEO_PLAYER_LAUNCH_APP, "email"); + debug_log("service_add_extra_data: %d", ret); + ret = service_send_launch_request(service, NULL, NULL); + debug_log("service_send_launch_request: %d", ret); + if (ret != SERVICE_ERROR_NONE) { + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + _("IDS_EMAIL_POP_THIS_ATTACHMENT_CANNOT_BE_DISPLAYED"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } else { + debug_log("EMAIL_EXT_SAVE_ERR_UNKNOWN"); + } + } +} + +static void _save_attachment_all(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + EmailAttachmentType *info = NULL; + + int i = 0; + int att_len = g_list_length(prop->attachments); + + if (priv->b_all_att_save) + return; + + if (att_len > 0) { + if (ug_data->forward_ctr_it) + elm_object_item_disabled_set(ug_data->forward_ctr_it, EINA_TRUE); + } + + for (i = 0; i < att_len; i++) { + info = g_list_nth_data(prop->attachments, i); + + if (info && !info->inline_content) { + if (!info->download_yn) { + if (ug_data->progress_bar_ly[i + 1] == NULL) { + unsigned handle = 0; + gboolean res = FALSE; + debug_log("Need attachment [%d] download", i); + + res = email_engine_attachment_download(priv->account_id, priv->mail_id, info->index, &handle); + + if (res == TRUE) { + priv->download_all_cnt++; + priv->download_all_email_handle[i] = handle; + priv->b_all_att_save = TRUE; + + debug_log("attach_onoff_flag:%d", ug_data->attach_onoff_flag); + if (priv->b_all_att_save) { + if (ug_data->attach_onoff_flag == 0) { + _attachment_item_collapse_cb(ug_data->attach_hd_bk, NULL, NULL, NULL); + } + } + + _create_down_progress_ex(i, EMAIL_VIEWER_PROGRESSBAR_ATT); + ug_data->display_download_result = TRUE; + } else { + priv->download_all_fail_cnt++; + } + } + } + } + } + + debug_log("download [%d], failed [%d]", priv->download_all_cnt, priv->download_all_fail_cnt); +} + +static void _dbus_receiver_setup(EmailViewerUGD *ug_data) +{ + debug_log(""); + + int ret = e_dbus_init(); + debug_log("ret: %d", ret); + + DBusError derror; + + if (_g_viewer_dbus_conn == NULL) { + debug_log(""); + dbus_error_init(&derror); + _g_viewer_dbus_conn = e_dbus_bus_get(DBUS_BUS_SYSTEM); + + if (_g_viewer_dbus_conn == NULL) { + debug_log("e_dbus_bus_get return NULL"); + } + + /* storage */ + if (e_dbus_request_name(_g_viewer_dbus_conn, "User.Email.StorageChange", 0, NULL, NULL) == NULL) { + debug_critical("Failed to e_dbus_request_name()"); + return; + } + + if (_g_viewer_signal_handler_storage != NULL) { + debug_log("_g_viewer_signal_handler_storage != NULL"); + } + + _g_viewer_signal_handler_storage = e_dbus_signal_handler_add(_g_viewer_dbus_conn, NULL, + "/User/Email/StorageChange", + "User.Email.StorageChange", + "email", _on_edbus_event_email_viewer_receive, ug_data); + + if (_g_viewer_signal_handler_storage == NULL) { + debug_log("Failed to e_dbus_signal_handler_add()"); + return; + } + + /* network */ + if (e_dbus_request_name(_g_viewer_dbus_conn, "User.Email.NetworkStatus", 0, NULL, NULL) == NULL) { + debug_log("Failed to e_dbus_request_name()"); + return; + } + + if (_g_viewer_signal_handler_network != NULL) { + debug_log("_g_viewer_signal_handler_network != NULL"); + } + + _g_viewer_signal_handler_network = e_dbus_signal_handler_add(_g_viewer_dbus_conn, NULL, + "/User/Email/NetworkStatus", + "User.Email.NetworkStatus", + "email", _on_edbus_event_email_viewer_receive, ug_data); + + if (_g_viewer_signal_handler_network == NULL) { + debug_log("Failed to e_dbus_signal_handler_add()"); + return; + } + } +} + +static void _dbus_receiver_remove(EmailViewerUGD *ug_data) +{ + debug_log(""); + + if (_g_viewer_signal_handler_storage != NULL) { + e_dbus_signal_handler_del(_g_viewer_dbus_conn, _g_viewer_signal_handler_storage); + _g_viewer_signal_handler_storage = NULL; + } + + if (_g_viewer_signal_handler_network != NULL) { + e_dbus_signal_handler_del(_g_viewer_dbus_conn, _g_viewer_signal_handler_network); + _g_viewer_signal_handler_network = NULL; + } + + if (e_dbus_release_name(_g_viewer_dbus_conn, "User.Email.StorageChange", NULL, NULL) == NULL) { + debug_critical("e_dbus_release_name to failed"); + } + + if (e_dbus_release_name(_g_viewer_dbus_conn, "User.Email.NetworkStatus", NULL, NULL) == NULL) { + debug_critical("e_dbus_release_name to failed"); + } + + if (_g_viewer_dbus_conn != NULL) { + /*e_dbus_connection_close(_g_viewer_dbus_conn);*/ + _g_viewer_dbus_conn = NULL; + } +} + +static void _on_edbus_event_email_viewer_receive(void *data, DBusMessage *message) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerPrivate *priv = ug_data->email_data; + char fail_msg[MAX_STR_LEN] = { 0, }; + DBusError error; + + 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; + + 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_INVALID)) { + debug_log("STORE_ENABLE: subtype: %d, data1: %d, data2: %d, data3: %s", subtype, data1, data2, data3); + + switch (subtype) { + case NOTI_ACCOUNT_ADD: + if (get_app_paused()) { + debug_log("account added during pause status"); + + if (ug_data->isRotate == false && ug_data->b_internal) { + /* Viewer to hide, so set left content (mailbox) size to full */ + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + if (ug_data->b_internal != 1) { + debug_log("ug_destory_me"); + ug_destroy_me(ug_data->ug); + } else { + _hide_view(ug_data); + } + } + break; + + case NOTI_ACCOUNT_DELETE: + if (get_app_paused()) { + debug_log("account deleted during pause status"); + int account_id = 0; + + if (ug_data->isRotate == false && ug_data->b_internal) { + /* Viewer to hide, so set left content (mailbox) size to full */ + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + if (email_engine_get_default_account(&account_id)) { + if (ug_data->b_internal != 1) { + debug_log("ug_destory_me"); + ug_destroy_me(ug_data->ug); + } else { + _hide_view(ug_data); + } + } + } + break; + + case NOTI_ACCOUNT_UPDATE: + if (get_app_paused()) { + debug_log("account updated during pause status"); + } + break; + + default: + debug_warning("unknown type"); + 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(""); + + 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_BODY_START: + /* DATA1[mail_id] DATA2[file_id] DATA3[body_size] DATA4[received size] */ + debug_log("receive noti, DOWNLOAD_BODY"); + if (priv->mail_id == data1) { + priv->file_id = g_strdup(data2); + priv->file_size = data3; + + if (data4 == 0) { + _set_value_down_progress(0.0); + } else { + double per = (double)data4 / (double)data3; + _set_value_down_progress(per); + } + } else { + debug_log("mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + } + break; + + case NOTI_DOWNLOAD_MULTIPART_BODY: + /* DATA1[mail_id] DATA2[file_id] DATA3[body_size] DATA4[received size] */ + debug_log("receive noti, DOWNLOAD_MULTIPART_BODY"); + if (priv->mail_id == data1) { + priv->file_id = g_strdup(data2); + priv->file_size = data3; + priv->multi_body = TRUE; + + if (data4 == 0) { + _set_value_down_progress(0.0); + } else { + double per = (double)data4 / (double)data3; + _set_value_down_progress(per); + } + } else { + debug_log("mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + } + break; + + case NOTI_DOWNLOAD_BODY_FINISH: + /* DATA1[mail_id] DATA2[NULL] DATA3[handle_id] */ + debug_log("receive noti, DOWNLOAD_BODY_FINISH"); + if (priv->email_handle == data3 && priv->mail_id == data1) { + priv->email_handle = 0; + + ug_data->b_load_finished = EINA_FALSE; + + /* delete progress */ + if (ug_data->pb_notify) { + _set_value_down_progress(1.0); + _destroy_down_progress_cb(NULL, NULL, NULL); + } + + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_BODY_DOWNLOADED")); + /*_show_select_info(ug_data, str);*/ + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + + /* set property */ + if (viewer_get_internal_mail_info(ug_data->property, ug_data->email_data)) { + viewer_make_internal_mail(ug_data->property, ug_data->email_data); + } + /* create att and body */ + if (ug_data->b_partial_body) { + int scr_x = 0; + int scr_y = 0; + int scr_w = 0; + int scr_h = 0; + elm_scroller_region_get(ug_data->scroller, &scr_x, &scr_y, &scr_w, &scr_h); + debug_log("scroller region> x[%d] y[%d] w[%d] h[%d]", scr_x, scr_y, scr_w, scr_h); + + elm_box_unpack(ug_data->main_bx, ug_data->partial_dn_btn_bx); + if (ug_data->partial_dn_btn) { + evas_object_del(ug_data->partial_dn_btn); + ug_data->partial_dn_btn = NULL; + } + if (ug_data->partial_dn_btn_bx) { + evas_object_del(ug_data->partial_dn_btn_bx); + ug_data->partial_dn_btn_bx = NULL; + } + + if (ug_data->property->has_html) { + ug_data->webview_data->body_type = BODY_TYPE_HTML; + ug_data->webview_data->uri = ug_data->property->body_uri; + } else { + ug_data->webview_data->body_type = BODY_TYPE_TEXT; + ug_data->webview_data->text_content = ug_data->property->body; + } + + viewer_set_webview_content(ug_data, 1); + + elm_object_focus_set(ug_data->ly_subject, EINA_TRUE); + elm_scroller_region_show(ug_data->scroller, scr_x, scr_y, scr_w, scr_h); + } else { + + if (ug_data->property->has_attachment) + ug_data->got_att = 1; + else + ug_data->got_att = 0; + + /* pack attachment if it exist */ + if (ug_data->got_att) { + _create_attach(ug_data); + } + + _create_body(ug_data); + } + } else { + debug_log("email_handle or mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + debug_log("expected email_handle [%d], received email_handle [%d]", priv->email_handle, data3); + } + break; + + case NOTI_DOWNLOAD_BODY_FAIL: + /* DATA1[mail_id] DATA2[NULL] DATA3[handle_id] */ + debug_log("receive noti, DOWNLOAD_BODY_FAIL"); + if (priv->email_handle == data3 && priv->mail_id == data1) { + priv->email_handle = 0; + + /* delete progress */ + if (ug_data->pb_notify) { + _destroy_down_progress_cb(NULL, NULL, NULL); + } + + char *err_msg = _get_service_fail_type(data4); + snprintf(fail_msg, sizeof(fail_msg), "%s<br>%s", _("IDS_EMAIL_POP_UNABLE_TO_DOWNLOAD"), err_msg); + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + fail_msg, 1, dgettext("sys_string", "IDS_COM_SK_OK"), + _popup_response_cb, NULL, NULL, NULL); + g_free(err_msg); + } else { + debug_log("email_handle or mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + debug_log("expected email_handle [%d], received email_handle [%d]", priv->email_handle, data3); + } + break; + + case NOTI_DOWNLOAD_ATTACH_START: + /* DATA1[mail_id] DATA2[file_id] DATA3[attachment_id] DATA4[percentage] */ + debug_log("receive noti, DOWNLOAD_ATTACHMENT"); + if (priv->mail_id == data1) { + priv->att_file_id = g_strdup(data2); + priv->attachment_id = data3; + + if (data4 == 0) { + /* Set the progressbar of particular attachment_id */ + _set_value_down_progress_by_index(0.0, priv->attachment_id); + } + if (data4 > 0) { + double per = (double)data4 / 100.0; + /* Set the progressbar of particular attachment_id */ + _set_value_down_progress_by_index(per, priv->attachment_id); + } + } else { + debug_log("mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + } + break; + + case NOTI_DOWNLOAD_ATTACH_FINISH: + /* DATA1[mail_id] DATA2[NULL] DATA3[attachment_id] */ + debug_log("receive noti, DOWNLOAD_ATTACH_FINISH"); + + if (priv->mail_id == data1) { + int attach_index = 0; + int attachment_id = (int)data3; + debug_log("download_all_cnt [%d]", priv->download_all_cnt); + + if (priv->download_all_cnt > 0) { + _set_value_down_progress_by_index(1.0, attachment_id); + attach_index = _update_attachment_info(ug_data, attachment_id); + if (priv->b_all_att_save) { + _destroy_down_progress_ex((void *)attach_index, NULL, NULL); + _save_attachment(ug_data, attach_index); + if (priv->download_all_cnt == 0) { + priv->b_all_att_save = FALSE; + } + } else { + _destroy_down_progress_ex((void *)attach_index, NULL, NULL); + _show_attachment(ug_data, attach_index); + } + } + } else { + debug_log("mail_id or attachment_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + } + break; + + case NOTI_DOWNLOAD_ATTACH_FAIL: + /* DATA1[mail_id] DATA2[NULL] DATA3[attachment_id] */ + debug_log("receive noti, DOWNLOAD_ATTACH_FAIL"); + if (priv->mail_id == data1) { + int attach_index = _get_attachment_info_index(ug_data, data3); + debug_log("download_all_cnt[%d]", priv->download_all_cnt); + + if (priv->download_all_cnt > 0) { + if (ug_data->progress_bar[data3] != NULL && data4 != EMAIL_ERROR_CANCELLED) + _destroy_down_progress_ex((void *)attach_index, NULL, NULL); + else + debug_log("Download already cancelled, No need to destroy again..!"); + + if (data4 != EMAIL_ERROR_CANCELLED && ug_data->ug_composer == NULL) { + char *err_msg = _get_service_fail_type(data4); + snprintf(fail_msg, sizeof(fail_msg), "%s<br>%s", _("IDS_EMAIL_POP_UNABLE_TO_DOWNLOAD"), err_msg); + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), fail_msg, 1, + dgettext("sys_string", "IDS_COM_SK_OK"), + _popup_response_cb, NULL, NULL, NULL); + g_free(err_msg); + } + + if (priv->b_all_att_save && priv->download_all_cnt == 0) { + priv->b_all_att_save = FALSE; + } + } + } else { + debug_log("mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + } + break; + + default: + debug_log("unknown type"); + break; + } + } else { + debug_log("receive data error: %s", error.message); + dbus_error_free(&error); + } + /*return DBUS_HANDLER_RESULT_HANDLED;*/ + return; + } + /*return DBUS_HANDLER_RESULT_HANDLED;*/ + return; +} + +static void _delete_contacts_list(EMAIL_CONTACT_LIST_INFO_S *contacts_list_item) +{ + debug_log(""); + + if (contacts_list_item) { +#ifndef _NEW_CT_SVC_API + g_free(contacts_list_item->first_name); + contacts_list_item->first_name = NULL; + g_free(contacts_list_item->last_name); + contacts_list_item->last_name = NULL; +#else + g_free(contacts_list_item->display); + contacts_list_item->display = NULL; +#endif + g_free(contacts_list_item->email_address); + contacts_list_item->email_address = NULL; + g_free(contacts_list_item); + contacts_list_item = NULL; + } +} + +static void *_contact_search_by_email(EmailViewerUGD *ug_data, const char *search_word) +{ + debug_log(""); + if (!ug_data || !_g_ug_data) { + debug_log("data is NULL"); + return NULL; + } + + int ret = CTS_SUCCESS; + CTSiter *iter = NULL; + + EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = NULL; + contacts_svc_connect(); + + debug_log("search_word = %s", search_word); + + if (contacts_svc_get_list_with_str(CTS_LIST_EMAILINFOS_WITH_EMAIL, search_word, &iter) != CTS_SUCCESS) { + return NULL; + } + + ret = contacts_svc_iter_next(iter); + + if (CTS_SUCCESS == ret) { + CTSvalue *row_info = NULL; + + row_info = contacts_svc_iter_get_info(iter); + if (row_info) { + contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *)calloc(1, sizeof(EMAIL_CONTACT_LIST_INFO_S)); + + int index = contacts_svc_value_get_int(row_info, CTS_LIST_EMAIL_CONTACT_ID_INT); + + contacts_list_item->index = index; +#ifndef _NEW_CT_SVC_API + contacts_list_item->first_name = g_strdup(contacts_svc_value_get_str(row_info, CTS_LIST_EMAIL_CONTACT_FIRST_STR)); + contacts_list_item->last_name = g_strdup(contacts_svc_value_get_str(row_info, CTS_LIST_EMAIL_CONTACT_LAST_STR)); +#else + contacts_list_item->display = g_strdup(contacts_svc_value_get_str(row_info, CTS_LIST_EMAIL_CONTACT_DISPLAY_STR)); +#endif + contacts_list_item->email_address = g_strdup(contacts_svc_value_get_str(row_info, CTS_LIST_EMAIL_ADDR_STR)); + +#ifndef _NEW_CT_SVC_API + char *first = contacts_list_item->first_name; + char *last = contacts_list_item->last_name; + char *display = g_strdup(contacts_svc_value_get_str(row_info, CTS_LIST_EMAIL_CONTACT_DISPLAY_STR)); + + if (!display) { + if (first != NULL && last != NULL) { + if (CTS_ORDER_NAME_FIRSTLAST == contacts_svc_get_order(CTS_ORDER_OF_DISPLAY)) { + display = g_strconcat(first, " ", last, NULL); + } else { + display = g_strconcat(last, " ", first, NULL); + } + } else if (first != NULL || last != NULL) { + display = (first != NULL) ? g_strdup(first) : g_strdup(last); + } else { + display = g_strdup(" "); + } + } + + snprintf(contacts_list_item->display_name, sizeof(contacts_list_item->display_name), "%s", display); + g_free(display); +#else + snprintf(contacts_list_item->display_name, sizeof(contacts_list_item->display_name), "%s", contacts_list_item->display); +#endif + + } + + contacts_svc_value_free(row_info); + row_info = NULL; + + contacts_svc_iter_remove(iter); + } + + contacts_svc_disconnect(); + + return contacts_list_item; +} + +static void _set_value_down_progress(double val) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + char buf[30] = { 0, }; + EmailViewerUGD *ug_data = _g_ug_data; + + sprintf(buf, "%s: %d", dgettext("sys_string", "IDS_COM_POP_DOWNLOADING"), (int)val); + + if (ug_data->pb_notify_lb) { + elm_progressbar_value_set(ug_data->pb_notify_lb, val); + elm_object_text_set(ug_data->pb_notify_lb, buf); + } +} + +static void _set_value_down_progress_by_index(double val, int index) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + + if (val < 0.0) { + debug_log("val(%f) is MINUS"); + return; + } + + if (index < 0 || index >= ATTACH_MAX) { + debug_log("index(%d) is overflowed"); + return; + } + + if (prop == NULL) { + debug_log("prop is NULL"); + return; + } + + if (prop->attachments == NULL) { + debug_log("attachments is NULL"); + return; + } + + int per = val * 100; + int attach_index = _get_attachment_info_index(ug_data, index); + EmailAttachmentType *info = g_list_nth_data(prop->attachments, attach_index); + + if (info == NULL) { + debug_log("info is NULL"); + } + + if (ug_data->progress_bar[index] == NULL) { + debug_log("obj is NULL"); + return; + } + + char *pszTemp = NULL; + pszTemp = (char *)elm_object_style_get(ug_data->progress_bar[index]); + + if (STR_INVALID(pszTemp)) + return; + + if (g_strcmp0(pszTemp, "pending_list") == 0) { + debug_log("pending_list so return"); + return; + } + + elm_progressbar_value_set(ug_data->progress_bar[index], val); + + if (ug_data->progress_bar_ly[index] != NULL) { + char buf[30] = { 0, }; + snprintf(buf, sizeof(buf), "%d%%", per); + + Evas_Object *downloading_label2; + downloading_label2 = elm_label_add(ug_data->progress_bar_ly[index]); + elm_object_part_content_set(ug_data->progress_bar_ly[index], "elm.text.2", downloading_label2); + char *buf_tagged = g_strconcat("<font_size=26><align=left><color=#646464FF>", buf, "</align></font_size>", NULL); + elm_object_text_set(downloading_label2, buf_tagged); + g_free(buf_tagged); + } +} + +static void _cancel_download_attachment(EmailViewerUGD *ug_data) +{ + debug_log(""); + int i = 0; + gboolean is_cancel = FALSE; + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + + if (priv && priv->download_all_cnt <= 0) { + debug_log("No attachment download to be cancelled!"); + return; + } + + for (i = 0; i <= prop->att_len; i++) { + if (ug_data->progress_bar_ly[i]) { + Evas_Object *btn = elm_object_part_content_get(ug_data->progress_bar_ly[i], "elm.icon.1"); + debug_log("Cancel btn for downloading attachment: %p", btn); + if (btn) { + evas_object_smart_callback_call(btn, "clicked", NULL); + is_cancel = TRUE; + } + } + } + + if (is_cancel == TRUE && ug_data->ug_composer == NULL) { + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), _("IDS_EMAIL_POP_CANCELLING_ATTACHMENT_DOWNLOAD_ING"), + 1, dgettext("sys_string", "IDS_COM_SK_OK"), _popup_response_cb, + NULL, NULL, NULL); + } +} + +static char *_get_service_fail_type(int type) +{ + debug_log(""); + + char *ret = NULL; + char str[MAX_STR_LEN] = { 0, }; + + if (type == -174) { + snprintf(str, sizeof(str), "%s: %s", _("IDS_EMAIL_POP_FAILED_TO_ACTIVATE_PDP"), N_("IP full")); + return g_strdup(str); + } else if (type == -176) { + ret = _("IDS_EMAIL_POP_NO_SERVICE"); + return g_strdup(ret); + } else if (type == -181) { + snprintf(str, sizeof(str), "%s: %s", _("IDS_EMAIL_POP_FAILED_TO_ACTIVATE_PDP"), N_("Transport Error")); + return g_strdup(str); + } else if (type == EMAIL_ERROR_NETWORK_TOO_BUSY) { + ret = _("IDS_EMAIL_POP_NETWORK_BUSY"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_LOGIN_ALLOWED_EVERY_15_MINS) { + snprintf(str, sizeof(str), _("IDS_EMAIL_POP_YOU_CAN_ONLY_LOG_IN_ONCE_EVERY_PD_MINUTES"), 15); + return g_strdup(str); + } else if (type == EMAIL_ERROR_CONNECTION_FAILURE) { + ret = dgettext("sys_string", "IDS_COM_POP_CONNECTION_FAILED"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_LOGIN_FAILURE) { + ret = _("IDS_EMAIL_POP_LOG_IN_FAILED"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_AUTHENTICATE) { + ret = _("IDS_EMAIL_POP_AUTHENTICATION_FAILED"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_CANCELLED) { + ret = _("IDS_EMAIL_POP_DOWNLOAD_CANCELLED"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_MAIL_NOT_FOUND_ON_SERVER) { + ret = _("IDS_EMAIL_POP_EMAIL_DELETED_FROM_SERVER"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_NO_SUCH_HOST) { + ret = _("IDS_EMAIL_POP_HOST_NOT_FOUND"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_INVALID_SERVER) { + ret = _("IDS_EMAIL_POP_SERVER_NOT_AVAILABLE"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_MAIL_MEMORY_FULL) { + ret = _("IDS_EMAIL_POP_DEVICE_STORAGE_FULL"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_FAILED_BY_SECURITY_POLICY) { + ret = _("IDS_EMAIL_POP_DOWNLOADING_ATTACHMENTS_ON_THE_MOBILE_DEVICE_IS_NOT_ALLOWED_BY_EXCHANGE_SERVER_POLICY"); + return g_strdup(ret); + } else { + snprintf(str, sizeof(str), "%s (%d)", dgettext("sys_string", "IDS_COM_POP_INTERNAL_ERROR"), type); + return g_strdup(str); + } +} + +static Evas_Object *_load_edj(Evas_Object *parent, const char *file, const char *group) +{ + debug_log(""); + Evas_Object *eo; + int r; + + eo = elm_layout_add(parent); + if (eo) { + r = elm_layout_file_set(eo, file, group); + if (!r) { + evas_object_del(eo); + return NULL; + } + + evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + } + + return eo; +} + +/* genlist cb */ +static Eina_Bool _gl_state_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + return EINA_FALSE; +} + +static void _gl_del(void *data, Evas_Object *obj) +{ + debug_log(""); + + if (_g_ug_data == NULL) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + + if (ug_data->move_mailbox_list) { + email_free_mailbox(&ug_data->move_mailbox_list, ug_data->move_mailbox_count); + ug_data->move_mailbox_list = NULL; + ug_data->move_mailbox_count = 0; + } + + return; +} + +static char *_gl_text_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + email_mailbox_t *mailbox_list = NULL; + mailbox_list = (email_mailbox_t *) data; + + if (g_strcmp0(part, "elm.text") == 0) { + char buf[MAX_STR_LEN] = { 0, }; + if (mailbox_list && mailbox_list->alias) { + snprintf(buf, sizeof(buf), "%s", mailbox_list->alias); + return g_strdup(buf); + } + } + + return NULL; +} + +static Evas_Object *_gl_content_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + + if (g_strcmp0(part, "elm.icon") == 0) { + Evas_Object *icon = elm_icon_add(obj); + elm_icon_file_set(icon, IMGDIR "/U01_icon_folder.png", NULL); + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + + return icon; + } + + return NULL; +} + +static void _gl_sel(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailViewerUGD *ug_data = _g_ug_data; + email_mailbox_t *mailbox_list = NULL; + mailbox_list = (email_mailbox_t *) data; + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); + + Elm_Object_Item *git = NULL; + Evas_Object *gl = elm_genlist_add(ug_data->navi_bar); + evas_object_show(gl); + + git = elm_genlist_item_append(gl, &(ug_data->itc3), NULL, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); + elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + elm_genlist_item_append(gl, &ug_data->itc2, NULL, git, ELM_GENLIST_ITEM_NONE, _gl_sub_upper_sel, NULL); + + Evas_Object *cbar = elm_toolbar_add(ug_data->navi_bar); + elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(cbar, "naviframe"); + evas_object_show(cbar); + + elm_toolbar_item_append(cbar, NULL, _("IDS_EMAIL_SK3_MOVE_HERE"), _move_here_cb, mailbox_list); + elm_object_item_disabled_set(elm_toolbar_item_append(cbar, NULL, "", NULL, NULL), EINA_TRUE); + + Elm_Object_Item *navi_it = NULL; + navi_it = elm_naviframe_item_push(ug_data->navi_bar, dgettext("sys_string", "IDS_COM_BODY_MOVE"), NULL, NULL, gl, NULL); + elm_object_item_part_content_set(navi_it, "controlbar", cbar); + ug_data->navi_move_it2 = navi_it; + + Evas_Object *move_back_btn = NULL; + if (ug_data->isRotate) { + elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE); + move_back_btn = elm_object_item_part_content_get(navi_it, "prev_btn"); + if (move_back_btn) { + evas_object_del(move_back_btn); + elm_object_item_part_content_set(navi_it, "prev_btn", NULL); + } + } else { + move_back_btn = elm_object_item_part_content_get(navi_it, "prev_btn"); + if (move_back_btn) { + evas_object_del(move_back_btn); + move_back_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(move_back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(move_back_btn, "clicked", _move_back_cb2, ug_data); + elm_object_item_part_content_set(navi_it, "prev_btn", move_back_btn); + } + } + return; +} + +static char *_gl_sub_upper_text_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + email_mailbox_t *mailbox_list = NULL; + mailbox_list = (email_mailbox_t *) data; + + if (g_strcmp0(part, "elm.text") == 0) { + char buf[MAX_STR_LEN] = { 0, }; + snprintf(buf, sizeof(buf), "%s", _("IDS_EMAIL_MBODY_MAILBOX_LIST")); + return g_strdup(buf); + } + + return NULL; +} + +static Evas_Object *_gl_sub_upper_icon_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + + if (g_strcmp0(part, "elm.icon") == 0) { + Evas_Object *icon = elm_icon_add(obj); + elm_icon_file_set(icon, IMGDIR "/U01_icon_upper_folder_focus.png", NULL); + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + + return icon; + } + + return NULL; +} + +static void _gl_sub_upper_sel(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailViewerUGD *ug_data = _g_ug_data; + + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); + + ug_data->navi_move_it2 = NULL; + elm_naviframe_item_pop(ug_data->navi_bar); + + return; +} + +static void _move_here_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (data == NULL || _g_ug_data == NULL) { + debug_log("data is NULL"); + return; + } + + email_mailbox_t *mailbox_list = NULL; + mailbox_list = (email_mailbox_t *) data; + + EmailViewerUGD *ug_data = _g_ug_data; + int folder_id = mailbox_list->mailbox_id; + + _move_email(ug_data, folder_id, FALSE); + + ug_data->navi_move_it1 = NULL; + ug_data->navi_move_it2 = NULL; + elm_naviframe_item_pop_to(ug_data->navi_main_it); + + if (ug_data->isRotate == false && ug_data->b_internal) { + /* Viewer to hide, so set left content (mailbox) size to full */ + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + if (ug_data->b_internal) { + _hide_view(ug_data); + + /* send next or previous mail request to mailbox. */ + 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_MSG, EMAIL_BUNDLE_VAL_NEXT_MSG); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_DO_DELETE, "1"); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } else { + ug_destroy_me(ug_data->ug); + } +} + +static void _move_back_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (data == NULL || _g_ug_data == NULL) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + elm_naviframe_item_pop(ug_data->navi_bar); + ug_data->navi_move_it1 = NULL; + ug_data->navi_move_it2 = NULL; + + /*if (ug_data->b_internal) + elm_layout_theme_set(ug_data->layout_main, "layout", "controlbar", "default"); + else + elm_layout_theme_set(ug_data->layout_main, "layout", "application", "controlbar");*/ +} + +static void _move_back_cb2(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (data == NULL || _g_ug_data == NULL) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + elm_naviframe_item_pop(ug_data->navi_bar); + ug_data->navi_move_it2 = NULL; +} + +/* EOF */ diff --git a/viewer/theme/_email_default.html b/viewer/theme/_email_default.html new file mode 100755 index 0000000..b67e4c6 --- /dev/null +++ b/viewer/theme/_email_default.html @@ -0,0 +1 @@ +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><STYLE type="text/css"> body {background-color: #f6f5ed; font-size: 16px; margin-left: 18px; margin-right: 18px; margin-top: 8px; margin-bottom: 8px;} p {font-size: 16px;} table {font-size: 16px;} </STYLE></head><body></body></html>
\ No newline at end of file diff --git a/viewer/theme/email-viewer-theme-macro.edc b/viewer/theme/email-viewer-theme-macro.edc new file mode 100755 index 0000000..2fe9a25 --- /dev/null +++ b/viewer/theme/email-viewer-theme-macro.edc @@ -0,0 +1,673 @@ +/* + * 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 ELM_SCALE 1.0 +#define SCALE(x) (x/ELM_SCALE) + +#define GENLIST_PART_BG_COLOR_INC 239 239 239 255 +#define GENLIST_PART_BG_SELECTED_COLOR_INC 199 185 164 0 +#define GENLIST_PART_SELECT_ALL_BG_COLOR_INC 239 237 230 255 +#define GENLIST_PART_TEXT_COLOR_INC 0 0 0 255 +#define GENLIST_PART_TEXT_SELECTED_COLOR_INC 255 255 255 255 +#define GENLIST_PART_SUB_TEXT_COLOR_INC 108 108 108 255 +#define GENLIST_PART_BOTTOM_LINE_INC 199 199 199 255 +#define GENLIST_GROUP_PART_TEXT_COLOR_INC 108 108 108 255 +#define GENLIST_GROUP_PART_BASE_EVENT_INC \ + part { name: "base_event"; \ + type: RECT; \ + repeat_events: 0; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + } \ + } +#define GENLIST_GROUP_PART_BASE_IMAGE_INC \ + part { name: "base_image"; \ + repeat_events: 1; \ + description { state: "default" 0.0; \ + rel1.to: "rect"; \ + rel2.to: "rect"; \ + image {\ + normal: "01_list_group_title_bg.png"; \ + } \ + } \ + } +#define GENLIST_GROUP_BG_COLOR_DEFAULT_INC 0 0 0 0 +#define GENLIST_GROUP_BG_COLOR_ALPHA_OFF_INC 0 0 0 0 +//color: 190 186 171 200; +//color: 190 186 171 255; +#define GENLIST_GROUP_LEFT_BG_COLOR_INC 210 206 191 255 +#define GENLIST_EDIT_PART_LINE_INC 187 187 187 150 +#define GENLIST_EDIT_BG_COLOR_INC 234 230 217 255 +#define GENLIST_EXPANDABLE_PART_BG_COLOR_INC GENLIST_PART_BG_COLOR_INC +#define GENLIST_EXPANDABLE2_PART_BG_COLOR_INC 242 238 233 255 +#define GENLIST_EXPANDABLE3_PART_BG_COLOR_INC 218 212 205 255 +#define GENLIST_EXPANDABLE2_NOSHADOW_BG_COLOR_INC 242 238 233 255 +#define GENLIST_EXPANDABLE_PART_BG_IMAGE_INC \ + part { name: "bg_image"; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + image { \ + normal: "00_list_expandable_bg.png"; \ + border: 0 0 12 6; \ + border_scale: 1; \ + } \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + image.normal: "00_list_bar_press_1x80.png"; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } +#define GENLIST_PART_BG_EXPANDABLE3_IMAGE_INC \ + part { name: "bg_image"; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + image { \ + normal: "00_list_expandable_2_bg.png"; \ + border: 0 0 12 6; \ + border_scale: 1; \ + } \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + image.normal: "00_list_bar_press_1x80.png"; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } +#define GENLIST_EXPANDABLE3_PART_BG_IMAGE_INC \ + part { name: "bg_image"; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + image { \ + normal: "00_list_expandable_2_bg.png"; \ + border: 0 0 12 6; \ + border_scale: 1; \ + } \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + image.normal: "00_list_bar_press_1x80.png"; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } +#define GENLIST_EXPANDABLE3_NOSHADOW_PART_BG_IMAGE_INC \ + part { name: "bg_image"; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + image { \ + normal: "00_list_expandable_2_noshadow_bg.png"; \ + border: 0 0 0 6; \ + border_scale: 1; \ + } \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + image.normal: "00_list_bar_press_1x80.png"; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } + +#define BEAT_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; \ + } \ + description { state: "pressed" 0.0; \ + inherit: "default" 0.0; \ + color: 42 137 194 255; \ + } \ + } + +#define BEAT_GENLIST_PART_BASE2( param_item_height, param_item_color ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: param_item_color; \ + } \ + } + +#define BEAT_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 BEAT_GENLIST_PART_BG_IMAGE \ + part { name: "bg_image"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + visible: 0; \ + color: GENLIST_PART_BG_SELECTED_COLOR_INC; \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } + +#define BEAT_GENLIST_PART_BOTTOM_LINE \ + part { name: "bottom_line"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + min: 0 1; \ + fixed: 0 1; \ + visible: 1; \ + color: GENLIST_PART_BOTTOM_LINE_INC; \ + rel1 { \ + relative: 0.0 1.0; \ + offset: 0 -1; \ + } \ + } \ + } + +#define BEAT_GENLIST_PART_BOTTOM_EFFECT_LINE \ + part { name: "bottom_line"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + min: 0 1; \ + fixed: 0 1; \ + visible: 1; \ + color: GENLIST_PART_BOTTOM_LINE_INC; \ + rel1 { \ + relative: 0.0 1.0; \ + offset: 0 -1; \ + } \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } + +#define BEAT_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 BEAT_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 BEAT_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 BEAT_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 BEAT_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 BEAT_GENLIST_PART_DIALOGUE_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: 242 238 233 255; \ + } \ + } + +#define BEAT_GENLIST_PART_DIALOGUE_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; \ + } \ + description { state: "editing" 0.0; \ + inherit: "default" 0.0; \ + min: 56 0; \ + visible: 1; \ + color: 242 238 233 255; \ + } \ + } + +#define BEAT_GENLIST_PART_DIALOGUE_ITEM \ + part { name: "elm.rect.dialogue"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 10 0; \ + fixed: 1 0; \ + color: 199 199 199 255; \ + rel2.relative: 0.0 1.0; \ + align: 0.0 0.0; \ + } \ + } + +#define BEAT_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 BEAT_GENLIST_PART_DISCLIP \ + part { name: "disclip"; \ + type: RECT; \ + description { state: "default" 0.0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + color: 255 255 255 64; \ + } \ + } + +#define BEAT_GENLIST_PART_LIST_PICKER_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: 71 61 53 255; \ + } \ + } + +#define BEAT_GENLIST_PART_LIST_PICKER_BOTTOM_LINE \ + part { name: "bottom_line"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + min: 0 1; \ + fixed: 0 1; \ + visible: 1; \ + color: 104 97 92 255; \ + rel1 { \ + relative: 0.0 1.0; \ + offset: 0 -1; \ + } \ + } \ + } + +#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 BEAT_GENLIST_PART_MAP_START( param_x, param_y, param_z ) \ + description { state: "map_transition" 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; \ + } \ + } \ + } \ + description { \ + state: "hide" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } + +#define BEAT_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 BEAT_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; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_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_BG_SELECTED_COLOR_INC; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } + +#define BEAT_GENLIST_PROGRAM_MAP_ROTATE_START() \ + name: "rotaion_transition"; \ + signal: "flip_item"; \ + action: STATE_SET "map_transition" 0.0; \ + after: "rotation"; + +#define BEAT_GENLIST_PROGRAM_MAP_ROTATE_FINISH( second ) \ + name: "rotation"; \ + action: STATE_SET "map_rotate" 0.0; \ + transition: LINEAR second; \ + after: "rotation_end"; + +#define BEAT_GENLIST_PROGRAM_MAP_END() \ + name: "rotation_end"; \ + action: STATE_SET "default" 0.0; + +#define BEAT_GENLIST_PROGRAM_MAP_ROTATE_START2() \ + name: "rotaion_transition2"; \ + signal: "elm,state,contract_flip"; \ + action: STATE_SET "map_rotate" 0.0; \ + after: "rotation2"; + +#define BEAT_GENLIST_PROGRAM_MAP_ROTATE_FINISH2( second ) \ + name: "rotation2"; \ + action: STATE_SET "map_transition" 0.0; \ + transition: LINEAR second; \ + after: "rotation3"; + +#define BEAT_GENLIST_PROGRAM_MAP_END2() \ + name: "rotation3"; \ + action: STATE_SET "hide" 0.0; + +#define BEAT_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_EXPANDABLE2_NOSHADOW_BG_COLOR_INC; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } + +#define BEAT_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"; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } \ + +#define BEAT_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 BEAT_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; \ + } \ + } \ + } + +/* only for demo */ +#define BEAT_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 BEAT_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 BEAT_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 BEAT_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; \ + } \ + } diff --git a/viewer/theme/email-viewer-theme.edc b/viewer/theme/email-viewer-theme.edc new file mode 100755 index 0000000..a3e50e2 --- /dev/null +++ b/viewer/theme/email-viewer-theme.edc @@ -0,0 +1,1760 @@ +/* + * 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-viewer-theme-macro.edc" + +collections { +//#include "email-viewer-button.edc" + + group { + name: "layout.email.web_view"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + + parts { + part { + name: "bg"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + //color: 246 245 237 255; + color: 255 255 255 255; + } + } + + part { + name: "web_body"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.5 0.0; + fixed: 0 0; + aspect: 0.0 0.0; + aspect_preference: VERTICAL; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + } + } + + group { + name: "layout.email.no_content"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + + parts { + part { + name: "bg"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 239 239 239 255; + } + } + + part { + name: "btn"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.5 0.0; + fixed: 0 0; + //rel1 { relative: 0.05 0.85; } + //rel2 { relative: 0.95 0.95; } + rel1 { relative: 0.05 0.05; } + rel2 { relative: 0.95 0.1; } + } + } +/* + part { + name: "noc"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.5 0.0; + fixed: 0 0; + //rel1 { relative: 0.0 0.0; } + //rel2 { relative: 1.0 0.8; } + rel1 { relative: 0.0 0.25; } + rel2 { relative: 1.0 1.0; } + } + } +*/ + } + } + + group { name: "layout.email.partial_download_btn"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 SCALE(80.0); + color: 239 239 239 255; + } + } + part { name: "button"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1.relative: 15/450 1/5; + rel2.relative: 435/450 4/5; + } + } + } + } + + group + { + name: "layout.email.meeting_req_btn"; + + parts + { + part + { + name: "rect"; + type: RECT; + mouse_events: 0; + + description + { + min: 0 SCALE(60.0); + state: "default" 0.0; + color: 0 0 0 0; + } + } + + part + { + name: "swl_accept_btn"; + type: SWALLOW; + mouse_events: 1; + + description + { + state: "default" 0.0; + + rel1 + { + to: "rect"; + relative: 0.01 0.0; + } + rel2 + { + to: "rect"; + relative: 0.33 1.0; + } + } + } + + part + { + name: "swl_tentative_btn"; + type: SWALLOW; + mouse_events: 1; + + description + { + state: "default" 0.0; + + rel1 + { + to: "rect"; + relative: 0.33 0.0; + } + rel2 + { + to: "rect"; + relative: 0.66 1.0; + } + } + } + + part + { + name: "swl_decline_btn"; + type: SWALLOW; + mouse_events: 1; + + description + { + state: "default" 0.0; + + rel1 + { + to: "rect"; + relative: 0.66 0.0; + } + rel2 + { + to: "rect"; + relative: 0.99 1.0; + } + } + } + } + } + + group { + name: "layout.email.detail_subject"; + + 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: "M02_inbox_top_line.png" COMP; + image: "M02_button_expand.png" COMP; + image: "M02_button_expand_press.png" COMP; + } + + parts + { + BEAT_GENLIST_PART_BASE( SCALE(160.0) ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( SCALE(26.0) ) + BEAT_GENLIST_PART_PADDING_BOTTOM( SCALE(10.0) ) + BEAT_GENLIST_PART_PADDING_LEFT( SCALE(16.0) ) + BEAT_GENLIST_PART_PADDING_RIGHT( SCALE(16.0) ) + + part + { + name: "elm.topline"; + clip_to: "disclip"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: 0 SCALE(10.0); + fixed: 1 1; + align: 0.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + offset: 0 SCALE(10.0); + to: "elm.padding.top"; + } + image.normal: "M02_inbox_top_line.png"; + } + } + + part + { + name: "elm.text"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 SCALE(40.0); + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: -1*SCALE(80.0) 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + color: 0 0 0 255; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + + part + { + name: "elm.subbox"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 SCALE(48.0); + fixed: 1 0; + visible: 0; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + } + } + + part + { + name: "elm.text.sub"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + + rel1 { + relative: 0.0 0.0; + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: -1*SCALE(160.0) 0; + to: "elm.subbox"; + } + + color: 100 100 100 255; + text { + font: "SLP:style=Regular"; + size: SCALE(36.0); + 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.icon.attach"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(32.0) SCALE(32.0); + max: SCALE(32.0) SCALE(32.0); + fixed: 1 1; + align: 0.0 0.5; + visible: 1; + + rel1 { + relative: 1.0 0.0; + offset: -1*SCALE(152.0) SCALE(8.0); + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: -1*SCALE(120.0) -1*SCALE(8.0); + to: "elm.subbox"; + } + } + } + + part + { + name: "elm.icon.sign"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(32.0) SCALE(32.0); + max: SCALE(32.0) SCALE(32.0); + fixed: 1 1; + align: 0.0 0.5; + visible: 1; + + rel1 { + relative: 1.0 0.0; + offset: -1*SCALE(152.0) SCALE(8.0); + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: -1*SCALE(120.0) -1*SCALE(8.0); + to: "elm.subbox"; + } + } + } + + part + { + name: "elm.icon.encrypt"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(32.0) SCALE(32.0); + max: SCALE(32.0) SCALE(32.0); + fixed: 1 1; + align: 0.0 0.5; + visible: 1; + + rel1 { + relative: 1.0 0.0; + offset: -1*SCALE(112.0) SCALE(8.0); + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: -1*SCALE(80.0) -1*SCALE(8.0); + to: "elm.subbox"; + } + } + } + + part + { + name: "touch_favorite"; + type: RECT; + clip_to: "disclip"; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 0.0 0.5; + visible: 1; + + rel1 { + relative: 1.0 0.0; + offset: -1*SCALE(72.0) SCALE(8.0); + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 -1*SCALE(8.0); + to: "elm.subbox"; + } + color: 0 0 0 0; + } + } + + part + { + name: "elm.icon.favorite"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 0.0 0.5; + visible: 1; + + rel1 { + relative: 1.0 0.0; + offset: -1*SCALE(72.0) SCALE(8.0); + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 -1*SCALE(8.0); + to: "elm.subbox"; + } + } + } + + part + { + name: "touch_arrow"; + type: RECT; + clip_to: "disclip"; + ignore_flags: ON_HOLD; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(74.0) SCALE(74.0); + fixed: 1 1; + align: 0.5 0.5; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.text"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.text"; + } + 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: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 0.5 0.5; + aspect: 1.0 1.0; + rel1 { + relative: 0.5 0.5; + to: "touch_arrow"; + } + rel2 { + relative: 0.5 0.5; + to: "touch_arrow"; + } + image.normal: "M02_button_expand_opened.png"; + } + description { + state: "default" 1.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_opened_press.png"; + } + description { + state: "active" 0.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand.png"; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "active" 1.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_press.png"; + } + } + + 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"; + } + 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"; + } + program { + name: "toggle_favorite"; + signal: "mouse,up,1"; + source: "touch_favorite"; + action: SIGNAL_EMIT "elm,action,toggle" "elm"; + } + 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"; + } + program + { + name: "hide_arrow"; + signal: "elm,state,arrow_hidden"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "arrow"; + } + } + } + + group { + name: "layout.email.to_cc"; + + images { + image: "00_list_bar_press_1x80.png" COMP; + } + parts + { + BEAT_GENLIST_PART_BASE( 0 ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_LEFT( 1 ) + BEAT_GENLIST_PART_PADDING_RIGHT( 1 ) + BEAT_GENLIST_PART_PADDING_TOP( 1 ) + BEAT_GENLIST_PART_PADDING_BOTTOM( 1 ) + + part { + name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + align: 0.5 0.5; + rel1 { + relative: 1 1; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + } + } + BEAT_GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + 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: "layout.email.attachment_downloading"; + images { + image: "00_list_bar_press_1x80.png" COMP; + } + + parts { + + BEAT_GENLIST_PART_BASE( SCALE(120.0) ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( SCALE(5.0) ) + BEAT_GENLIST_PART_PADDING_BOTTOM( SCALE(5.0) ) + BEAT_GENLIST_PART_PADDING_LEFT( SCALE(10.0) ) + BEAT_GENLIST_PART_PADDING_RIGHT( SCALE(10.0) ) + + part { + name: "elm.icon.1"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: SCALE(160.0) SCALE(80.0); + max: SCALE(160.0) SCALE(80.0); + fixed: 1 1; + align: 1.0 0.5; + visible: 1; + + rel1.to_x: "elm.padding.right"; + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + } + } + } + + part + { + name: "elm.padding.cancel.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: SCALE(30.0) 0; + fixed: 1 1; + visible: 0; + rel1.to: "elm.icon.1"; + rel2 { + relative: 0.0 1.0; + to: "elm.icon.1"; + } + } + } + + part { name: "elm.text.1"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 SCALE(20.0); + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.cancel.left"; + to_y: "elm.padding.top"; + } + color: GENLIST_PART_TEXT_COLOR_INC; + /*text { + font: "SLP:style=Regular"; + size: 18; + min: 0 1; + align: 0.0 0.5; + }*/ + } + } + + part { name: "elm.icon.2"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 SCALE(30.0); + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.cancel.left"; + to_y: "elm.padding.top"; + } + } + } + + part { name: "elm.text.2"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: SCALE(235.0) SCALE(20.0); + max: SCALE(235.0) SCALE(20.0); + fixed: 1 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.icon.2"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.cancel.left"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_TEXT_COLOR_INC; + /*text { + font: "SLP:style=Regular"; + size: 18; + min: 0 1; + align: 0.0 0.5; + }*/ + } + } + + part { name: "elm.text.3"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: SCALE(235.0) SCALE(20.0); + max: SCALE(235.0) SCALE(20.0); + fixed: 1 1; + align: 1 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.icon.2"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.cancel.left"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_TEXT_COLOR_INC; + /*text { + font: "SLP:style=Regular"; + size: 18; + min: 0 1; + align: 1.0 0.5; + }*/ + } + } + + BEAT_GENLIST_PART_DISCLIP + } + } + + group + { + name: "layout.email.attachment_item"; + + images { + image: "00_list_bar_press_1x80.png" COMP; + image: "M02_button_download.png" COMP; + image: "M02_button_download_press.png" COMP; + } + + parts + { + BEAT_GENLIST_PART_BASE( SCALE(120.0) ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( SCALE(20.0) ) + BEAT_GENLIST_PART_PADDING_BOTTOM( SCALE(20.0) ) + BEAT_GENLIST_PART_PADDING_LEFT( SCALE(20.0) ) + BEAT_GENLIST_PART_PADDING_RIGHT( SCALE(20.0) ) + + part + { + name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description + { + state: "default" 0.0; + min: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 0.0 0.5; + color: 136 136 136 255; + + rel1 + { + relative: 1.0 1.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.padding.icon.right"; + type: RECT; + scale: 1; + + description + { + state: "default" 0.0; + min: SCALE(10.0) 0; + fixed: 1 0; + visible: 0; + + rel1 + { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + align: 0.0 0.0; + } + } + + part + { + name: "elm.text.rect"; + clip_to: "disclip"; + type: RECT; + scale: 1; + ignore_flags: ON_HOLD; + + description + { + state: "default" 0.0; + align: 0 0.5; + color: 0 0 0 0; + + rel1 + { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 + { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.down.left"; + to_y: "elm.padding.bottom"; + } + } + } + + part + { + name: "elm.text"; + clip_to: "disclip"; + type: TEXT; + scale: 1; + ignore_flags: ON_HOLD; + + description + { + state: "default" 0.0; + align: 0 0.5; + color: 0 0 0 255; + + rel1 + { + relative: 0.0 0.0; + to: "elm.text.rect"; + } + rel2 + { + relative: 1.0 1.0; + to: "elm.text.rect"; + } + text + { + font: "SLP:style=Medium"; + size: 35; + min: 0 0; + max: 1 0; + align: 0.0 0.5; + } + } + + description + { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + + part + { + name: "elm.event.rect"; + clip_to: "disclip"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + + description + { + state: "default" 0.0; + color: 0 0 0 0; + + rel1 + { + relative: 0.0 0.0; + to: "base"; + } + rel2 + { + relative: 1.0 1.0; + to: "base"; + } + visible: 1; + } + } + + part + { + name: "down"; + clip_to: "disclip"; + type: RECT; + ignore_flags: ON_HOLD; + mouse_events: 1; + scale: 1; + + description + { + state: "default" 0.0; + min: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 1.0 0.5; + aspect: 1.0 1.0; // needed? + + rel1.to_x: "elm.padding.right"; + rel2 + { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + } + color: 0 0 0 0; + } + } + + part + { + name: "elm.padding.down.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: SCALE(10.0) 0; + fixed: 1 0; + visible: 0; + align: 1.0 0.5; + rel1.to: "down"; + rel2 { + relative: 0.0 1.0; + to: "down"; + } + } + } + + part { + name: "down_image"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "down"; } + rel2 { relative: 1.0 1.0; to: "down"; } + image.normal: "M02_button_download.png"; + } + description { + state: "default" 1.0; + rel1 { relative: 0.0 0.0; to: "down"; } + rel2 { relative: 1.0 1.0; to: "down"; } + image.normal: "M02_button_download_press.png"; + } + } + + BEAT_GENLIST_PART_DISCLIP + } + programs { + program { + name: "download_btn_down"; + signal: "mouse,down,1"; + source: "down"; + action: STATE_SET "default" 1.0; + target: "down_image"; + } + program { + name: "download_btn_up"; + signal: "mouse,up,1"; + source: "down"; + action: STATE_SET "default" 0.0; + target: "down_image"; + } + program { + name: "download_btn_clicked"; + signal: "mouse,clicked,1"; + source: "down"; + action: SIGNAL_EMIT "elm,action,download" "elm"; + } + program { + name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { + name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + 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: "elm.event.rect_clicked"; + signal: "mouse,clicked,1"; + source: "elm.event.rect"; + action: SIGNAL_EMIT "clicked" ""; + } + program { + name: "elm.event.rect_pressed"; + signal: "pressed"; + source: "elm.event.rect"; + action: STATE_SET "pressed" 0.0; + target: "base"; + target: "elm.text"; + } + + program { + name: "elm.event.rect_unpressed"; + signal: "unpressed"; + source: "elm.event.rect"; + action: STATE_SET "default" 0.0; + target: "base"; + target: "elm.text"; + } + } + } + + group { + name: "layout.email.attachment_head"; + + 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: "M02_email_icon_attach.png" COMP; + image: "M02_button_expand.png" COMP; + image: "M02_button_expand_press.png" COMP; + } + + parts + { + BEAT_GENLIST_PART_BASE( SCALE(120.0) ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( SCALE(20.0) ) + BEAT_GENLIST_PART_PADDING_BOTTOM( SCALE(10.0) ) + BEAT_GENLIST_PART_PADDING_LEFT( SCALE(20.0) ) + BEAT_GENLIST_PART_PADDING_RIGHT( SCALE(20.0) ) + + part { + name: "elm.icon"; + clip_to: "disclip"; + type: IMAGE; + scale: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + min: SCALE(40.0) SCALE(40.0); + max: SCALE(40.0) SCALE(40.0); + fixed: 1 1; + align: 0.0 0.5; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + } + rel2 { + offset: 0 0; + to_x: "elm.padding.left"; + } + image.normal: "M02_email_icon_attach.png"; + } + } + part { + name: "elm.padding.icon.right"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: SCALE(13.0) 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + align: 0.0 0.0; + } + } + + part + { + name: "touch_arrow"; + type: RECT; + clip_to: "disclip"; + ignore_flags: ON_HOLD; + scale: 1; + description { state: "default" 0.0; + min: SCALE(74.0) SCALE(74.0); + 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: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 1.0 0.5; + aspect: 1.0 1.0; // needed? + rel1.to_x: "elm.padding.right"; + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + } + image.normal: "M02_button_expand_opened.png"; + } + description { state: "default" 1.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_opened_press.png"; + } + description { state: "active" 0.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand.png"; + } + description { state: "active" 1.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_press.png"; + } + } + part + { + name: "elm.padding.arrow.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: SCALE(5.0) 0; + fixed: 1 0; + visible: 0; + align: 1.0 0.5; + rel1.to: "arrow"; + rel2 { + relative: 0.0 1.0; + to: "arrow"; + } + } + } + + part + { + name: "elm.text"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 0 SCALE(30.0); + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.arrow.left"; + to_y: "elm.padding.top"; + } + color: 0 0 0 255; + /*text { + font: "SLP:style=Roman"; + size: 26; + 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.sub"; + 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.icon.right"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.arrow.left"; + to_y: "elm.padding.bottom"; + } + color: 0 0 0 255; + text { + font: "SLP:style=Medium"; + size: SCALE(32.0); + min: 0 1; + align: 0.0 0.5; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 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"; + } + 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"; + } + 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"; + } + program { + name: "save_all"; + signal: "mouse,up,1"; + source: "elm.icon"; + action: SIGNAL_EMIT "att,icon,save,all" ""; + } + } + } + + /*group { + name: "layout.email.subject_nbeat"; + + 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; + } + + styles { + style { name: "genlist_textblock_sub_style"; + base: "font=SLP:style=Regular font_size=24 color=#6C6C6C wrap=char text_class=list_item"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + } + style { name: "genlist_textblock_sub_selected_style"; + base: "font=SLP:style=Regular font_size=24 color=#FFFFFF wrap=char text_class=list_item"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + } + } + parts { + part { name: "base"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: 249 249 249 255; + } + } + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( 10 ) + BEAT_GENLIST_PART_PADDING_BOTTOM( 10 ) + BEAT_GENLIST_PART_PADDING_LEFT( 20 ) + BEAT_GENLIST_PART_PADDING_RIGHT( 10 ) + BEAT_GENLIST_PART_DIALOGUE_ITEM + + 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: 1.0 0.5; + aspect: 1.0 1.0; // needed? + rel1.to_x: "elm.padding.right"; + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + } + image.normal: "M02_button_expand_closed.png"; + } + description { state: "default" 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: "elm.padding.arrow.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 5 0; + fixed: 1 0; + visible: 0; + align: 1.0 0.5; + rel1.to: "arrow"; + rel2 { + relative: 0.0 1.0; + to: "arrow"; + } + } + } + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.arrow.left"; + to_y: "elm.padding.top"; + } + text { + style: "genlist_textblock_sub_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + text.style: "genlist_textblock_sub_selected_style"; + } + } + + part { name: "elm.text.2"; + 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.left"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.arrow.left"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_TEXT_COLOR_INC; + text { + font: "SLP:style=Regular"; + 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: "bg_image"; + 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: "bg_image"; + 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: "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"; + } + } + }*/ + +} |