summaryrefslogtreecommitdiff
path: root/lib-phone/ph-loglist/src/PhLogMainListCheckView.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib-phone/ph-loglist/src/PhLogMainListCheckView.cpp')
-rwxr-xr-xlib-phone/ph-loglist/src/PhLogMainListCheckView.cpp745
1 files changed, 745 insertions, 0 deletions
diff --git a/lib-phone/ph-loglist/src/PhLogMainListCheckView.cpp b/lib-phone/ph-loglist/src/PhLogMainListCheckView.cpp
new file mode 100755
index 0000000..8444a56
--- /dev/null
+++ b/lib-phone/ph-loglist/src/PhLogMainListCheckView.cpp
@@ -0,0 +1,745 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <system_settings.h>
+#include <unordered_set>
+
+#include "WPopup.h"
+
+#include "ContactsDebug.h"
+#include "ContactsThumbnail.h"
+
+#include "PhPath.h"
+#include "PhCommon.h"
+#include "PhStrings.h"
+
+#include "PhLogDefines.h"
+#include "PhLogIcu.h"
+#include "PhLogUtil.h"
+
+#include "PhLogMainListCheckView.h"
+#include "SystemSettingsMgr.h"
+
+PhLogMainListCheckView::PhLogMainListCheckView(ContactsData *contactsData):
+__logList(NULL),
+__checkAllButton(NULL),
+__deleteButton(NULL),
+__checkedList(NULL),
+__currentListType(PhLogDbMgr::LIST_TYPE_ALL_CALL_MESSAGE),
+__listInitialPosition(0)
+{
+ // TODO Auto-generated constructor stub
+ WHIT();
+ __contactsData = contactsData;
+ __launchMode = __decideLaunchMode(contactsData);
+
+ switch(__launchMode)
+ {
+ case LAUNCH_MODE_EMAIL_COMPOSER:
+ case LAUNCH_MODE_MESSAGE_COMPOSER:
+ __enableTitleButton = true;
+ __enableCheckAllButton = false;
+ break;
+ case LAUNCH_MODE_NORMAL:
+ default:
+ __enableTitleButton = true;
+ __enableCheckAllButton = true;
+ break;
+ }
+
+ __checkedCount = 0;
+ __totalCount = 0;
+}
+
+PhLogMainListCheckView::PhLogMainListCheckView(PhLogDbMgr::ListType currentListType, int listPosition):
+__itcGroupIndex(NULL),
+__itcDeleteList(NULL),
+__itcSelectAll(NULL),
+__logList(NULL),
+__checkAllButton(NULL),
+__deleteButton(NULL),
+__checkedList(NULL),
+__contactsData(NULL),
+__launchMode(LAUNCH_MODE_NORMAL),
+__listInitialPosition(listPosition)
+{
+ WHIT();
+ __currentListType = currentListType;
+
+ __enableTitleButton = true;
+ __enableCheckAllButton = true;
+
+ __checkedCount = 0;
+ __totalCount = 0;
+}
+
+
+PhLogMainListCheckView::~PhLogMainListCheckView()
+{
+ WHIT();
+
+ STD_LIST_FREE(__logList)
+
+ delete __checkedList;
+
+ elm_genlist_item_class_free(__itcGroupIndex);
+ elm_genlist_item_class_free(__itcDeleteList);
+ elm_genlist_item_class_free(__itcSelectAll);
+}
+
+void PhLogMainListCheckView::onPushed(Elm_Object_Item* naviItem)
+{
+ WHIT();
+ WPRET_M( NULL == naviItem, "Invalid param : naviItem");
+
+ __enableTitleBtn();
+ __updateTitleInfo();
+
+ Elm_Object_Item *topItem = elm_genlist_nth_item_get(getGlHelper()->getEvasObj(), __listInitialPosition);
+ //WDEBUG("postion %d", __listInitialPosition);
+ if(__listInitialPosition != 1 && topItem)
+ elm_genlist_item_show(topItem, ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+void PhLogMainListCheckView::onSetAsPageContent(Elm_Object_Item* parentNaviItem)
+{
+ WHIT();
+}
+
+void PhLogMainListCheckView::__initializeTitleInfo()
+{
+ WHIT();
+
+ if(!__newRecord)
+ {
+ __checkedCount = 0;
+ __totalCount = 0;
+ }
+
+
+ char buf[PH_TEXT_SHORT_LEN] = {0,};
+ snprintf(buf, sizeof(buf), PAT_(PH_LOGS_HEADER_PD_SELECTED_ABB3), __checkedCount);
+ elm_object_item_part_text_set(getNaviItem(), "elm.text.title", buf );
+
+ if (__enableTitleButton && __deleteButton)
+ elm_object_disabled_set(__deleteButton, EINA_FALSE);
+
+ if (NULL == __checkedList)
+ __checkedList = new std::list<PhLogDbMgr::RecordInfo*>;
+ else
+ {
+ __checkedList->clear();
+ }
+}
+
+
+void PhLogMainListCheckView::__updateTitleInfo()
+{
+ WHIT();
+ char buf[PH_TEXT_SHORT_LEN] = {0,};
+ snprintf(buf, sizeof(buf), PAT_(PH_LOGS_HEADER_PD_SELECTED_ABB3), __checkedCount);
+ elm_object_item_part_text_set(getNaviItem(), "elm.text.title", buf );
+
+ if (__deleteButton)
+ {
+ if(__checkedCount == 0)
+ elm_object_disabled_set(__deleteButton, EINA_TRUE);
+ else if (__checkedCount >0)
+ elm_object_disabled_set(__deleteButton, EINA_FALSE);
+ else
+ WERROR("invalid __checkedCount : %d", __checkedCount);
+ }
+
+ if (__checkAllButton)
+ {
+ Elm_Object_Item *item = elm_genlist_first_item_get(getGlHelper()->getEvasObj());
+ PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData*)elm_object_item_data_get(item);
+ WPRET_M(!itemData, "itemData is NULL");
+
+ if ( (unsigned int)__totalCount == __logList->size() && !__logList->empty()) {
+ itemData->isChecked = EINA_TRUE;
+ elm_check_state_set(__checkAllButton, EINA_TRUE);
+ }
+ else {
+ itemData->isChecked = EINA_FALSE;
+ elm_check_state_set(__checkAllButton, EINA_FALSE);
+ }
+ }
+}
+
+void PhLogMainListCheckView::__enableTitleBtn()
+{
+ WHIT();
+ WPRET_M( !__enableTitleButton , "__enableTitleButton is disabled");
+
+ Evas_Object * cancelButton = elm_object_item_part_content_unset(getNaviItem(), "title_cancel");
+ if(cancelButton)
+ evas_object_del(cancelButton);
+ cancelButton = PhCommon::createButton(getNaviframe()->getEvasObj(), "naviframe/title_left", PAT_(PH_TPLATFORM_ACBUTTON_CANCEL_ABB), [](void *data, Evas_Object *obj, void *event_info)->void {
+ WPRET_M( NULL == data, "Invalid Param : data");
+ PhLogMainListCheckView* p = (PhLogMainListCheckView *) data;
+
+ WDEBUG("Close Delete View");
+ p->popOut();
+ }, this);
+ WPRET_M( NULL == cancelButton, "PhCommon::createButton() is failed" );
+ elm_object_item_part_content_set(getNaviItem(), "title_left_btn", cancelButton);
+
+ __deleteButton = elm_object_item_part_content_unset(getNaviItem(), "title_right_btn");
+ if(__deleteButton)
+ evas_object_del(__deleteButton);
+
+ __deleteButton = PhCommon::createButton(getNaviframe()->getEvasObj(), "naviframe/title_right", PAT_(PH_TPLATFORM_ACBUTTON_DELETE_ABB), [](void *data, Evas_Object *obj, void *event_info)->void {
+ WPRET_M( NULL == data, "Invalid Param : data");
+ PhLogMainListCheckView* p = (PhLogMainListCheckView *) data;
+
+ elm_object_disabled_set(obj, EINA_TRUE);
+
+ switch(p->__launchMode)
+ {
+ case LAUNCH_MODE_EMAIL_COMPOSER:
+ case LAUNCH_MODE_MESSAGE_COMPOSER:
+ p->__replyToUgRequest();
+ break;
+ case LAUNCH_MODE_NORMAL:
+ default:
+ {
+ PhLogDbMgr::getInstance()->deleteLogList(p->__checkedList, p->__totalCount);
+ p->popOut();
+ break;
+ }
+ }
+
+ }, this);
+ WPRET_M( NULL == __deleteButton, "PhCommon::createButton() is failed" );
+ elm_object_item_part_content_set(getNaviItem(), "title_right_btn", __deleteButton);
+}
+
+void PhLogMainListCheckView::__replyToUgRequest()
+{
+ WHIT();
+ WPRET_M( !__checkedList || __checkedList->empty(), "__checkedList is Invalid");
+
+ int *resultArray = new int[__checkedList->size()];
+ WPRET_M( NULL ==resultArray, " new int[] is failed");
+ int index = 0;
+ for (auto it=__checkedList->begin(); it != __checkedList->end(); it++)
+ {
+ PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)(*it);
+
+ if(!recordInfo->number) continue;
+ resultArray[index] = recordInfo->logId;
+ index++;
+ WDEBUG("UG resuult address : %s ", recordInfo->number);
+ }
+
+ app_control_h service;
+ app_control_create(&service);
+
+ gchar *encoded_str = g_base64_encode((guchar *)resultArray, (index+1)*sizeof(int));
+ app_control_add_extra_data(service, PH_UG_BUNDLE_RESULT_PLOG_ID_LIST, encoded_str);
+ g_free(encoded_str);
+ delete [] resultArray;
+
+ app_control_reply_to_launch_request(service, __contactsData->appControl, APP_CONTROL_RESULT_SUCCEEDED);
+ app_control_destroy(service);
+
+ popOut();
+}
+
+void PhLogMainListCheckView::updateList(void)
+{
+ WHIT();
+ std::list<PhLogDbMgr::RecordInfo*> *__oldLogList = __logList;
+
+ switch(__launchMode)
+ {
+ case LAUNCH_MODE_MESSAGE_COMPOSER:
+ __logList = PhLogDbMgr::getInstance()->loadLogList(PhLogDbMgr::LIST_TYPE_ALL_CALL, false);
+ break;
+ case LAUNCH_MODE_EMAIL_COMPOSER:
+ __logList = PhLogDbMgr::getInstance()->loadLogList(PhLogDbMgr::LIST_TYPE_EMAIL, false);
+ break;
+ case LAUNCH_MODE_NORMAL:
+ default:
+ __logList = PhLogDbMgr::getInstance()->loadLogList(__currentListType, true);
+ break;
+ }
+
+ if(!__logList || __logList->empty())
+ setNoContentLayout();
+ else
+ {
+ __newRecord = NULL;
+ if(__oldLogList)
+ {
+ std::unordered_set<int> logIds;
+ for(auto oldRec: *__oldLogList)
+ {
+ logIds.insert(oldRec->logId);
+ }
+ for(auto newRec: *__logList)
+ {
+ if( !logIds.count(newRec->logId) )
+ {
+ __newRecord = newRec;
+ }
+ }
+ }
+
+ setGenlistLayout();
+ __setList();
+ }
+
+ STD_LIST_FREE(__oldLogList)
+// WDEBUG("exit :__logList : %p", __logList);
+
+}
+
+void PhLogMainListCheckView::__setList()
+{
+ WHIT();
+ WPRET_M( NULL == __logList, "__logList is NULL");
+
+ std::unordered_set<int> checkedHashSet;
+ if(__newRecord && __checkedList)
+ {
+ for(auto i: *__checkedList)
+ {
+ checkedHashSet.insert(i->logId);
+ if( PhLogUtil::isGrouped(__newRecord, i))
+ {
+ --__checkedCount;
+ __totalCount -= i->groupedList ? (i->groupedList->size() + 1) : 1;
+ }
+ }
+ }
+
+ __initializeTitleInfo();
+
+ if (__enableCheckAllButton) {
+ getGlHelper()->appendCheckItem(__itcSelectAll, this, NULL, ELM_GENLIST_ITEM_NONE, PhLogMainListCheckView::__checkAllClickedCb, this);
+ }
+
+
+ PhLogDbMgr::RecordInfo *prevRecordInfo = NULL;
+ for (auto it=__logList->begin(); it != __logList->end(); it++)
+ {
+ PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)(*it);
+
+ if( PhLogUtil::isGrouped(prevRecordInfo,recordInfo))
+ {
+ if( NULL == prevRecordInfo->groupedList )
+ prevRecordInfo->groupedList = new std::list<PhLogDbMgr::RecordInfo*>;
+
+ prevRecordInfo->groupedList->push_back(recordInfo);
+ }
+ else
+ {
+ if( !prevRecordInfo || !PhLogUtil::isGroupedbyDate(prevRecordInfo->logTime,recordInfo->logTime) ) {
+ Elm_Object_Item *item = getGlHelper()->appendCheckItem(__itcGroupIndex, recordInfo, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE);
+ }
+ Eina_Bool isChecked = EINA_FALSE;
+
+ if(checkedHashSet.count(recordInfo->logId))
+ {
+ __checkedList->push_back(recordInfo);
+ isChecked = EINA_TRUE;
+ }
+ getGlHelper()->appendCheckItem(__itcDeleteList, recordInfo, NULL, ELM_GENLIST_ITEM_NONE, PhLogMainListCheckView::__selectItemCb, this, isChecked);
+ prevRecordInfo = recordInfo;
+ }
+ }
+
+ getGlHelper()->appendFinish();
+
+ __updateTitleInfo();
+
+ return;
+}
+
+Evas_Object* PhLogMainListCheckView::onCreate( Evas_Object* parent, void* viewParam)
+{
+ WHIT();
+
+ Evas_Object* layout = PhCommon::createLayout(parent, LOG_LIST_EDJ, "log/list/check/main");
+ 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_show(layout);
+
+ __setGenlistItcs();
+ return layout;
+}
+
+void PhLogMainListCheckView::onCreated()
+{
+ WHIT();
+ PhLogListView::onCreated();
+ updateList();
+}
+
+void PhLogMainListCheckView::onDbChanged()
+{
+ updateList();
+}
+
+void PhLogMainListCheckView::__setGenlistItcs()
+{
+ WHIT();
+
+ __itcGroupIndex = elm_genlist_item_class_new();
+ WPRET_M(!__itcGroupIndex, "elm_genlist_item_class_new() failed");
+ __itcGroupIndex->item_style = "group_index";
+ __itcGroupIndex->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* {
+// WDEBUG("part :%s", part);
+ if (!strcmp(part, "elm.text")) {
+ PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData*)data;
+ PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data;
+
+ time_t itemTime = recordInfo->logTime;
+ time_t nowTime = time(NULL);
+
+ struct tm itemDate;
+ struct tm nowDate;
+
+ localtime_r(&itemTime, &itemDate);
+ localtime_r(&nowTime, &nowDate);
+
+ if( itemDate.tm_year == nowDate.tm_year &&
+ itemDate.tm_mon == nowDate.tm_mon &&
+ itemDate.tm_mday == nowDate.tm_mday )
+ return elm_entry_utf8_to_markup(PAT_(PH_LOGS_HEADER_TODAY));
+ else if( itemDate.tm_year == nowDate.tm_year &&
+ itemDate.tm_mon == nowDate.tm_mon &&
+ ((itemDate.tm_mday)+1) == nowDate.tm_mday )
+ return elm_entry_utf8_to_markup(PAT_(PH_LOGS_HEADER_YESTERDAY));
+ else
+ return PhLogIcu::getGroupIndexDateString(recordInfo->logTime);
+ }
+ else
+ return NULL;
+ };
+ __itcGroupIndex->func.content_get = NULL;
+ __itcGroupIndex->func.del = [](void* data, Evas_Object* obj){
+ PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data;
+ delete itemData;
+ };
+
+ __itcDeleteList = elm_genlist_item_class_new();
+ WPRET_M(!__itcDeleteList, "elm_genlist_item_class_new() failed");
+ __itcDeleteList->item_style = "type1";
+ __itcDeleteList->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* {
+ PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData*)data;
+ PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data;
+// WDEBUG("part :%s", part);
+ if (0 == strcmp(part, "elm.text"))
+ return elm_entry_utf8_to_markup(PhLogUtil::getDisplayText(recordInfo->personId, recordInfo->displayName, recordInfo->number,recordInfo->callDesc));
+ else if ((strcmp(part, "elm.text.sub") == 0))
+ {
+ if(recordInfo->personId)
+ return elm_entry_utf8_to_markup(recordInfo->number);
+ else
+ return elm_entry_utf8_to_markup(PAT_(PH_LOGS_SBODY_UNSAVED_M_STATUS));
+ }
+ else if ((strcmp(part, "elm.text.sub.end") == 0))
+ {
+ char buf[PH_TEXT_SHORT_LEN] = {0,};
+ char *logTime = PhLogIcu::getTimeString(recordInfo->logTime);
+ snprintf(buf, sizeof(buf), "<font_size=%d>%s</font_size>", LOGLIST_SUB_TEXT_SIZE, logTime);
+ free(logTime);
+ return strdup(buf);
+ }
+ else if ((strcmp(part, "elm.text.end") == 0))
+ {
+ char buf[PH_TEXT_SHORT_LEN] = {0,};
+ if(recordInfo->groupedList == NULL)
+ return NULL;
+ else
+ {
+ snprintf(buf, sizeof(buf), "(%d)", recordInfo->groupedList->size()+1);
+ return elm_entry_utf8_to_markup(buf);
+ }
+
+ }
+ else
+ return NULL;
+ };
+ __itcDeleteList->func.content_get = [](void* data, Evas_Object* obj, const char* part)->Evas_Object*{
+ PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData*)data;
+ PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data;
+// WDEBUG("part :%s", part);
+ if (0 == strcmp(part, "elm.swallow.icon"))
+ {
+ Evas_Object *thumbnail = createThumbnail(obj, THUMBNAIL_98, recordInfo->imgPath, true);
+ WPRET_VM( NULL == thumbnail, NULL, "elm_image_add() is failed");
+
+ Evas_Object *icon = PhLogUtil::getLogTypeIcon(obj, recordInfo->logType);
+ WPRET_VM( NULL == icon, NULL, "PhLogUtil::GetLogTypeIcon() is failed");
+ evas_object_size_hint_min_set(icon, ContactsCommon::getScaledWidth(LOG_LIST_CALL_TYPE_SIZE), ContactsCommon::getScaledHeight(LOG_LIST_CALL_TYPE_SIZE));
+
+ Evas_Object *layout = PhCommon::createLayout(obj, LOG_LIST_EDJ, "list/B/log/thumbnail");
+ WPRET_VM( NULL == layout, NULL, "PhLogUtil::createLayout() is failed");
+
+ elm_layout_content_set(layout, "elm.swallow.content", thumbnail);
+ elm_layout_content_set(layout, "elm.swallow.call.type", icon);
+
+ return layout;
+ }
+ else if (0 == strcmp(part, "elm.swallow.end"))
+ {
+ itemData->checkButton = elm_check_add(obj);
+ WPRET_VM(NULL == itemData->checkButton, NULL, "elm_check_add() return NULL");
+ elm_check_state_set(itemData->checkButton, itemData->isChecked);
+ evas_object_repeat_events_set(itemData->checkButton, EINA_TRUE);
+ evas_object_propagate_events_set(itemData->checkButton, EINA_FALSE);
+ evas_object_freeze_events_set (itemData->checkButton, EINA_TRUE);
+
+ return itemData->checkButton;
+ } else {
+ return NULL;
+ }
+ };
+ __itcDeleteList->func.del = [](void* data, Evas_Object* obj){
+ PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data;
+ delete itemData;
+ };
+
+ __itcSelectAll = elm_genlist_item_class_new();
+ WPRET_M(!__itcSelectAll, "elm_genlist_item_class_new() failed");
+ __itcSelectAll->item_style = "type1";
+ __itcSelectAll->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* {
+ if (!strcmp(part, "elm.text")) {
+ return strdup(PAT_(PH_LOGS_MBODY_SELECT_ALL));
+ }
+ else
+ return NULL;
+ };
+ __itcSelectAll->func.content_get = [](void* data, Evas_Object* obj, const char* part)->Evas_Object*{
+ PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data;
+ PhLogMainListCheckView *view = (PhLogMainListCheckView*)itemData->data;
+ if (0 == strcmp(part, "elm.swallow.end"))
+ {
+ Evas_Object* check = elm_check_add(obj);
+ elm_check_state_set(check, itemData->isChecked);
+ evas_object_repeat_events_set(check, EINA_TRUE);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ evas_object_freeze_events_set (check, EINA_TRUE);
+ view->__checkAllButton = check;
+ return check;
+ }
+ else
+ return NULL;
+ };
+ __itcSelectAll->func.del = [](void* data, Evas_Object* obj){
+ PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data;
+ delete itemData;
+ };
+}
+
+void PhLogMainListCheckView::__checkAllClickedCb(void *data, Evas_Object *obj, void *event_info)
+{
+ WHIT();
+ WPRET_M( NULL == event_info,"event_info is NULL");
+ WPRET_M( NULL == data,"data is NULL");
+
+ Elm_Object_Item* item = (Elm_Object_Item*)event_info;
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ PhLogMainListCheckView * p = (PhLogMainListCheckView *)data;
+ Eina_Bool checkAllBtnState = elm_check_state_get(p->__checkAllButton);
+
+ elm_check_state_set(p->__checkAllButton, !checkAllBtnState);
+
+ if ( !checkAllBtnState)
+ __checkAllItems(p->getGlHelper());
+ else
+ __uncheckAllItems(p->getGlHelper());
+}
+
+void PhLogMainListCheckView::__checkAllItems(PhLogGenlistHelper* glHelper)
+{
+ WHIT();
+ WPRET_M( NULL == glHelper , "glHelper is NULL");
+
+ Evas_Object *genlist = glHelper->getEvasObj();
+ WPRET_M( NULL == genlist , "genlist is NULL");
+
+ Elm_Object_Item *item = elm_genlist_first_item_get(genlist);
+ while(item)
+ {
+ PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData *)elm_object_item_data_get(item);
+
+ PhLogMainListCheckView* p = (PhLogMainListCheckView *)itemData->p;
+ if (p) {
+ if (p->__itcSelectAll == (Elm_Genlist_Item_Class*)elm_genlist_item_item_class_get(item)) {
+ item = elm_genlist_item_next_get(item);
+ continue;
+ }
+ }
+
+ if (!itemData->isChecked)
+ __checkItem(itemData);
+
+ item = elm_genlist_item_next_get(item);
+ }
+}
+
+void PhLogMainListCheckView::__uncheckAllItems(PhLogGenlistHelper* glHelper)
+{
+ WHIT();
+ WPRET_M( NULL == glHelper , "glHelper is NULL");
+
+ Evas_Object *genlist = glHelper->getEvasObj();
+ WPRET_M( NULL == genlist , "genlist is NULL");
+
+ Elm_Object_Item *item = elm_genlist_first_item_get(genlist);
+ while(item)
+ {
+ PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData *)elm_object_item_data_get(item);
+
+ PhLogMainListCheckView* p = (PhLogMainListCheckView *)itemData->p;
+ if (p) {
+ if (p->__itcSelectAll == (Elm_Genlist_Item_Class*)elm_genlist_item_item_class_get(item)) {
+ item = elm_genlist_item_next_get(item);
+ continue;
+ }
+ }
+
+ if (itemData->isChecked)
+ __uncheckItem(itemData);
+
+ item = elm_genlist_item_next_get(item);
+ }
+}
+
+void PhLogMainListCheckView::__checkItem(PhLogGenlistHelper::CheckedItemData * itemData)
+{
+ WHIT();
+ WPRET_M( NULL == itemData , "Invalid Param : itemData");
+
+ PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data;
+ WPRET_M( NULL == recordInfo , "recordInfo is NULL");
+
+ PhLogMainListCheckView *p = (PhLogMainListCheckView *)itemData->p;
+ WPRET_M( NULL == p , "p is NULL : is Group index");
+
+// WDEBUG("number : %s", recordInfo->number);
+ p->__checkedList->push_back(recordInfo);
+ p->__checkedCount++;
+ if(recordInfo->groupedList)
+ p->__totalCount += (recordInfo->groupedList->size()+1);
+ else
+ p->__totalCount++;
+
+ //check button state set
+ itemData->isChecked = EINA_TRUE;
+ if(itemData->checkButton)
+ elm_check_state_set(itemData->checkButton, itemData->isChecked);
+
+ p->__updateTitleInfo();
+}
+
+void PhLogMainListCheckView::__uncheckItem(PhLogGenlistHelper::CheckedItemData * itemData)
+{
+ WHIT();
+ WPRET_M( NULL == itemData , "Invalid Param : itemData");
+
+ PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data;
+ WPRET_M( NULL == recordInfo , "recordInfo is NULL");
+
+ PhLogMainListCheckView *p = (PhLogMainListCheckView *)itemData->p;
+ WPRET_M( NULL == p , "p is NULL");
+
+ p->__checkedList->remove(recordInfo);
+ p->__checkedCount--;
+
+ if(recordInfo->groupedList)
+ p->__totalCount -= (recordInfo->groupedList->size()+1);
+ else
+ p->__totalCount--;
+
+ //check button state set
+ itemData->isChecked = EINA_FALSE;
+ if(itemData->checkButton)
+ elm_check_state_set(itemData->checkButton, itemData->isChecked);
+
+ p->__updateTitleInfo();
+}
+
+
+void PhLogMainListCheckView::__selectItemCb(void *data, Evas_Object *obj, void *event_info)
+{
+ WHIT();
+ WPRET_M( NULL == event_info,"event_info is NULL");
+ WPRET_M( NULL == data,"data is NULL");
+
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData *)elm_object_item_data_get(item);
+
+ if(itemData->isChecked)
+ __uncheckItem(itemData);
+ else
+ __checkItem(itemData);
+}
+
+PhLogMainListCheckView::__LaunchMode PhLogMainListCheckView::__decideLaunchMode(ContactsData* contactsData)
+{
+ WHIT();
+ WPRET_VM(contactsData == NULL, LAUNCH_MODE_NORMAL, "no contactsData. set to normal mode.");
+
+ std::string type;
+ std::string appId;
+
+ appId = ContactsCommon::getAppControlData(contactsData->appControl, CONTACTS_APPCONTROL_KEY_APPID);
+ type = ContactsCommon::getAppControlData(contactsData->appControl, "type");
+ WDEBUG("appid: %s, launchMode: %s", appId.c_str(), type.c_str());
+
+ if(type.compare("34") == 0)
+ return LAUNCH_MODE_MESSAGE_COMPOSER;
+ else if(type.compare("33") == 0)
+ return LAUNCH_MODE_EMAIL_COMPOSER;
+ else
+ return LAUNCH_MODE_NORMAL;
+}
+
+void PhLogMainListCheckView::onTabSelect(Elm_Object_Item *naviItem)
+{
+ WHIT();
+ elm_object_focus_set(getEvasObj(), EINA_TRUE);
+
+ __enableTitleBtn();
+
+ __updateTitleInfo();
+
+}
+
+void PhLogMainListCheckView::onTabUnselect(Elm_Object_Item *naviItem)
+{
+ WHIT();
+ destroyPopup();
+ __uncheckAllItems(getGlHelper());
+}
+
+bool PhLogMainListCheckView::onTabPop()
+{
+ WHIT();
+ return TRUE;
+}
+