From 1e7b293916343eb4c4707fe4e4d3bd6ce59d7a2e Mon Sep 17 00:00:00 2001 From: Denis Dolzhenko Date: Tue, 25 Jul 2017 16:28:29 +0300 Subject: [PATCH] TizenRefApp-8543 Implemet recipients list for composer Change-Id: I75f90e371c8a9a064aece751e0ddaab2d2f85e96 Signed-off-by: Denis Dolzhenko --- project_def.prop | 2 +- src/Common/Recipient/inc/Recipient.h | 2 +- .../Controller/src/MsgInputSelector.cpp | 2 +- src/Conversation/Controller/inc/ConvFrame.h | 3 +- .../Controller/inc/RecipListFrame.h | 63 +++++++++++++ .../Controller/inc/RecipListItem.h | 72 ++++++++++++++ src/Conversation/Controller/src/ConvFrame.cpp | 10 +- .../Controller/src/RecipListFrame.cpp | 94 +++++++++++++++++++ src/Conversation/View/inc/RecipListViewItem.h | 4 +- 9 files changed, 244 insertions(+), 8 deletions(-) create mode 100644 src/Conversation/Controller/inc/RecipListFrame.h create mode 100644 src/Conversation/Controller/inc/RecipListItem.h create mode 100644 src/Conversation/Controller/src/RecipListFrame.cpp diff --git a/project_def.prop b/project_def.prop index c9ee022..37d8ab2 100644 --- a/project_def.prop +++ b/project_def.prop @@ -9,7 +9,7 @@ type = app profile = wearable-4.0 # C/CPP Sources -USER_SRCS = src/Common/MsgEngine/src/MsgThreadItem.cpp src/Common/Utils/src/VCalendarParser.cpp src/Common/MsgEngine/src/dummy/MsgStorageDummy.cpp src/Composer/View/src/ContactListViewItem.cpp src/Conversation/Controller/src/ConvFrame.cpp src/Common/MsgEngine/src/dummy/MessageDummy.cpp src/Common/MsgEngine/src/private/MsgAddressPrivate.cpp src/MainApp/MainApp.cpp src/Conversation/View/src/BubbleIconTextLayoutItem.cpp src/Common/MsgEngine/src/private/MsgReportPrivate.cpp src/Conversation/View/src/BubbleTextViewItem.cpp src/Composer/Controller/src/ContactFrame.cpp src/Common/Utils/src/MediaPlayer.cpp src/Conversation/Controller/src/BubbleVideoEntity.cpp src/Common/View/src/ListItem.cpp src/Common/MsgEngine/src/dummy/MsgConvMediaDummy.cpp src/Composer/Controller/src/MsgInputSelector.cpp src/Common/MsgEngine/src/private/MsgTransportPrivate.cpp src/Common/Utils/src/MediaPlayerProvider.cpp src/Conversation/View/src/BubbleViewItem.cpp src/Conversation/Controller/src/BubbleContactEntity.cpp src/Common/View/src/MoreOption.cpp src/Common/AppControl/src/SettingsLauncher.cpp src/Common/MsgEngine/src/Message.cpp src/Conversation/View/src/BubbleItemContainer.cpp src/Common/AppControl/src/AppControlDefault.cpp src/Common/View/src/ListView.cpp src/Common/MsgEngine/src/MessageMms.cpp src/Common/MsgEngine/src/private/MsgConvMediaPrivate.cpp src/Common/MsgEngine/src/MsgTransport.cpp src/Composer/Controller/src/SendingOptionsFrame.cpp src/Common/ContactManager/src/ContactRecord.cpp src/Common/MsgEngine/src/private/MsgSentStatusPrivate.cpp src/Common/Utils/src/WorkingDir.cpp src/Common/View/src/BasePopup.cpp src/Settings/Controller/src/BlockedMsgListItem.cpp src/Common/Utils/src/FileUtils.cpp src/Settings/Controller/src/SettingsFrame.cpp src/Conversation/View/src/BubbleImageViewItem.cpp src/Settings/View/src/BlockedMsgListViewItem.cpp src/Conversation/View/src/BubbleSubjectViewItem.cpp src/Common/MsgEngine/src/MessageSMS.cpp src/Settings/Controller/src/SettingsBlockListFrame.cpp src/Common/MsgEngine/src/private/MessagePrivate.cpp src/Conversation/Controller/src/ConvList.cpp src/Common/View/src/InputLayout.cpp src/Common/View/src/MbeRecipientsView.cpp src/MsgThread/Controller/src/ThreadListItem.cpp src/Common/View/src/Entry.cpp src/Common/View/src/Popup.cpp src/Common/ContactManager/src/ContactVCardParser.cpp src/Conversation/Controller/src/ConvListItem.cpp src/Common/AppControl/src/AppControlCompose.cpp src/Common/MsgEngine/src/MsgUtils.cpp src/Common/Recipient/src/Recipient.cpp src/Common/Utils/src/PhoneNumberUtils.cpp src/Common/MsgEngine/src/private/MessageSMSPrivate.cpp src/Conversation/View/src/ConvReplyListItem.cpp src/Common/View/src/ToastPopup.cpp src/Common/View/src/View.cpp src/Common/MsgEngine/src/private/MsgConversationItemPrivate.cpp src/Common/Controller/src/FrameController.cpp src/Common/AppControl/src/AppControlCommand.cpp src/Composer/View/src/MsgBodyView.cpp src/Common/MsgEngine/src/dummy/MsgAddressDummy.cpp src/Conversation/Controller/src/BubbleSubjectEntity.cpp src/Common/MsgEngine/src/dummy/MsgComposerDummy.cpp src/Common/MsgEngine/src/private/MsgThreadItemPrivate.cpp src/Common/View/src/StandardPopup.cpp src/Common/MsgEngine/src/MsgEngine.cpp src/Common/AppControl/src/AppControlParser.cpp src/Common/AppControl/src/ContactPicker.cpp src/Common/View/src/NaviFrameView.cpp src/Common/AppControl/src/FileViewer.cpp src/Conversation/View/src/ConvDateLineListItem.cpp src/Common/MsgEngine/src/dummy/MsgPageDummy.cpp src/Common/Utils/src/PathUtils.cpp src/Common/View/src/CtxPopup.cpp src/Common/AppControl/src/VoiceCall.cpp src/Common/MsgEngine/src/MsgSettings.cpp src/Common/MsgEngine/src/dummy/MsgConversationItemDummy.cpp src/Common/ContactManager/src/ContactVCardGenerator.cpp src/Common/AppControl/src/AppControlLauncher.cpp src/Common/Utils/src/LoggerImpl.cpp src/Common/ContactManager/src/ContactManager.cpp src/Common/View/src/SelectButton.cpp src/Conversation/Controller/src/BubbleEntityFactory.cpp src/Settings/View/src/BlockedNumberListViewItem.cpp src/Common/MsgEngine/src/private/MsgAttachmentPrivate.cpp src/Settings/View/src/SettingsMenuListItem.cpp src/Common/View/src/ViewItem.cpp src/Common/MsgEngine/src/private/MsgMediaPrivate.cpp src/Conversation/Controller/src/BubbleAudioEntity.cpp src/Composer/Controller/src/Composer.cpp src/Common/Controller/src/InputFrame.cpp src/Conversation/View/src/BubbleAudioViewItem.cpp src/Composer/View/src/RecipFieldView.cpp src/Common/AppControl/src/Share.cpp src/MsgThread/Controller/src/MsgThreadFrame.cpp src/Common/View/src/StandardWindow.cpp src/Common/MsgEngine/src/MsgConversationItem.cpp src/Common/MsgEngine/src/dummy/MsgUtilsDummy.cpp src/Common/View/src/LineListViewItem.cpp src/Composer/View/src/AlwaysSendAsTextListViewItem.cpp src/Common/MsgEngine/src/private/MessageMmsPrivate.cpp src/Settings/Controller/src/SettingsBlockedMsgDetailFrame.cpp src/Common/MsgEngine/src/dummy/MsgMediaDummy.cpp src/Common/View/src/DefaultLayout.cpp src/Composer/Controller/src/RecipFrame.cpp src/Settings/Controller/src/SettingsMenuBlockListFrame.cpp src/Common/MsgEngine/src/dummy/MsgSettingsDummy.cpp src/Common/View/src/PopupListItem.cpp src/Common/MsgEngine/src/dummy/MsgAttachmentDummy.cpp src/Common/MsgEngine/src/dummy/MessageSMSDummy.cpp src/Common/View/src/BottomButton.cpp src/Common/Controller/src/NaviFrameController.cpp src/Common/MsgEngine/src/dummy/MsgTransportDummy.cpp src/MsgThread/Controller/src/ThreadList.cpp src/Common/Utils/src/TextDecorator.cpp src/Common/MsgEngine/src/dummy/MessageMmsDummy.cpp src/Common/MsgEngine/src/MsgStorage.cpp src/Common/View/src/SelectAllListItem.cpp src/Common/AppControl/src/AppControlHandle.cpp src/Common/AppControl/src/ContactViewer.cpp src/Conversation/View/src/ConvListViewItem.cpp src/Common/Utils/src/ThumbnailMaker.cpp src/Common/View/src/NaviFrameItem.cpp src/Composer/Controller/src/MsgBodyFrame.cpp src/Common/View/src/PopupList.cpp src/Settings/View/src/SettingsBlockedMsgDetailView.cpp src/Common/Controller/src/App.cpp src/Common/View/src/PopupAttachmentListItem.cpp src/Common/MsgEngine/src/private/MsgComposerPrivate.cpp src/Common/Utils/src/MediaUtils.cpp src/Common/MsgEngine/src/dummy/MsgThreadItemDummy.cpp src/Composer/View/src/SendingOptionListViewItem.cpp src/Common/View/src/TitleListItem.cpp src/Common/Utils/src/TimeUtils.cpp src/Conversation/Controller/src/BubbleCalEventEntity.cpp src/Common/Controller/src/ConnectivityChecker.cpp src/Common/MsgEngine/src/private/MsgSettingsPrivate.cpp src/Composer/Controller/src/RecipInputFrame.cpp src/Common/View/src/IconTextPopup.cpp src/MainApp/main.cpp src/Settings/Controller/src/BlockedNumberListItem.cpp src/Common/View/src/NoContentLayout.cpp src/Common/SystemSettingsManager/src/SystemSettingsManager.cpp src/Common/MsgEngine/src/dummy/MsgReportDummy.cpp src/Composer/Controller/src/ContactListItem.cpp src/Common/MsgEngine/src/MsgPage.cpp src/Common/AppControl/src/ContactEditor.cpp src/Common/AppControl/src/InputSelector.cpp src/Common/MsgEngine/src/private/MsgUtilsPrivate.cpp src/Common/View/src/PopupManager.cpp src/MsgThread/View/src/ThreadComposeListViewItem.cpp src/Common/MsgEngine/src/private/MsgStoragePrivate.cpp src/Common/View/src/SearchBar.cpp src/MsgThread/View/src/ThreadListViewItem.cpp src/Common/MsgEngine/src/private/MsgPagePrivate.cpp src/Common/AppControl/src/AppControlUtils.cpp +USER_SRCS = src/Common/MsgEngine/src/MsgThreadItem.cpp src/Common/Utils/src/VCalendarParser.cpp src/Common/MsgEngine/src/dummy/MsgStorageDummy.cpp src/Composer/View/src/ContactListViewItem.cpp src/Conversation/Controller/src/ConvFrame.cpp src/Common/MsgEngine/src/dummy/MessageDummy.cpp src/Common/MsgEngine/src/private/MsgAddressPrivate.cpp src/MainApp/MainApp.cpp src/Conversation/View/src/BubbleIconTextLayoutItem.cpp src/Common/MsgEngine/src/private/MsgReportPrivate.cpp src/Conversation/View/src/BubbleTextViewItem.cpp src/Composer/Controller/src/ContactFrame.cpp src/Common/Utils/src/MediaPlayer.cpp src/Conversation/Controller/src/BubbleVideoEntity.cpp src/Common/View/src/ListItem.cpp src/Common/MsgEngine/src/dummy/MsgConvMediaDummy.cpp src/Composer/Controller/src/MsgInputSelector.cpp src/Common/MsgEngine/src/private/MsgTransportPrivate.cpp src/Common/Utils/src/MediaPlayerProvider.cpp src/Conversation/View/src/BubbleViewItem.cpp src/Conversation/Controller/src/BubbleContactEntity.cpp src/Common/View/src/MoreOption.cpp src/Common/AppControl/src/SettingsLauncher.cpp src/Common/MsgEngine/src/Message.cpp src/Conversation/View/src/BubbleItemContainer.cpp src/Common/AppControl/src/AppControlDefault.cpp src/Common/View/src/ListView.cpp src/Common/MsgEngine/src/MessageMms.cpp src/Common/MsgEngine/src/private/MsgConvMediaPrivate.cpp src/Common/MsgEngine/src/MsgTransport.cpp src/Composer/Controller/src/SendingOptionsFrame.cpp src/Common/ContactManager/src/ContactRecord.cpp src/Common/MsgEngine/src/private/MsgSentStatusPrivate.cpp src/Common/Utils/src/WorkingDir.cpp src/Common/View/src/BasePopup.cpp src/Settings/Controller/src/BlockedMsgListItem.cpp src/Common/Utils/src/FileUtils.cpp src/Settings/Controller/src/SettingsFrame.cpp src/Conversation/View/src/BubbleImageViewItem.cpp src/Settings/View/src/BlockedMsgListViewItem.cpp src/Conversation/View/src/BubbleSubjectViewItem.cpp src/Common/MsgEngine/src/MessageSMS.cpp src/Settings/Controller/src/SettingsBlockListFrame.cpp src/Common/MsgEngine/src/private/MessagePrivate.cpp src/Conversation/Controller/src/ConvList.cpp src/Common/View/src/InputLayout.cpp src/Common/View/src/MbeRecipientsView.cpp src/MsgThread/Controller/src/ThreadListItem.cpp src/Common/View/src/Entry.cpp src/Common/View/src/Popup.cpp src/Common/ContactManager/src/ContactVCardParser.cpp src/Conversation/Controller/src/ConvListItem.cpp src/Common/AppControl/src/AppControlCompose.cpp src/Common/MsgEngine/src/MsgUtils.cpp src/Common/Recipient/src/Recipient.cpp src/Common/Utils/src/PhoneNumberUtils.cpp src/Common/MsgEngine/src/private/MessageSMSPrivate.cpp src/Conversation/View/src/ConvReplyListItem.cpp src/Common/View/src/ToastPopup.cpp src/Common/View/src/View.cpp src/Common/MsgEngine/src/private/MsgConversationItemPrivate.cpp src/Common/Controller/src/FrameController.cpp src/Common/AppControl/src/AppControlCommand.cpp src/Composer/View/src/MsgBodyView.cpp src/Common/MsgEngine/src/dummy/MsgAddressDummy.cpp src/Conversation/Controller/src/BubbleSubjectEntity.cpp src/Common/MsgEngine/src/dummy/MsgComposerDummy.cpp src/Common/MsgEngine/src/private/MsgThreadItemPrivate.cpp src/Common/View/src/StandardPopup.cpp src/Common/MsgEngine/src/MsgEngine.cpp src/Common/AppControl/src/AppControlParser.cpp src/Common/AppControl/src/ContactPicker.cpp src/Common/View/src/NaviFrameView.cpp src/Common/AppControl/src/FileViewer.cpp src/Conversation/View/src/ConvDateLineListItem.cpp src/Common/MsgEngine/src/dummy/MsgPageDummy.cpp src/Conversation/Controller/src/RecipListFrame.cpp src/Common/Utils/src/PathUtils.cpp src/Common/View/src/CtxPopup.cpp src/Common/AppControl/src/VoiceCall.cpp src/Common/MsgEngine/src/MsgSettings.cpp src/Common/MsgEngine/src/dummy/MsgConversationItemDummy.cpp src/Common/ContactManager/src/ContactVCardGenerator.cpp src/Common/AppControl/src/AppControlLauncher.cpp src/Common/Utils/src/LoggerImpl.cpp src/Common/ContactManager/src/ContactManager.cpp src/Common/View/src/SelectButton.cpp src/Conversation/Controller/src/BubbleEntityFactory.cpp src/Settings/View/src/BlockedNumberListViewItem.cpp src/Common/MsgEngine/src/private/MsgAttachmentPrivate.cpp src/Settings/View/src/SettingsMenuListItem.cpp src/Common/View/src/ViewItem.cpp src/Common/MsgEngine/src/private/MsgMediaPrivate.cpp src/Conversation/Controller/src/BubbleAudioEntity.cpp src/Composer/Controller/src/Composer.cpp src/Common/Controller/src/InputFrame.cpp src/Conversation/View/src/BubbleAudioViewItem.cpp src/Composer/View/src/RecipFieldView.cpp src/Common/AppControl/src/Share.cpp src/MsgThread/Controller/src/MsgThreadFrame.cpp src/Common/View/src/StandardWindow.cpp src/Common/MsgEngine/src/MsgConversationItem.cpp src/Common/MsgEngine/src/dummy/MsgUtilsDummy.cpp src/Common/View/src/LineListViewItem.cpp src/Composer/View/src/AlwaysSendAsTextListViewItem.cpp src/Common/MsgEngine/src/private/MessageMmsPrivate.cpp src/Settings/Controller/src/SettingsBlockedMsgDetailFrame.cpp src/Common/MsgEngine/src/dummy/MsgMediaDummy.cpp src/Common/View/src/DefaultLayout.cpp src/Composer/Controller/src/RecipFrame.cpp src/Settings/Controller/src/SettingsMenuBlockListFrame.cpp src/Common/MsgEngine/src/dummy/MsgSettingsDummy.cpp src/Common/View/src/PopupListItem.cpp src/Common/MsgEngine/src/dummy/MsgAttachmentDummy.cpp src/Common/MsgEngine/src/dummy/MessageSMSDummy.cpp src/Common/View/src/BottomButton.cpp src/Common/Controller/src/NaviFrameController.cpp src/Common/MsgEngine/src/dummy/MsgTransportDummy.cpp src/MsgThread/Controller/src/ThreadList.cpp src/Common/Utils/src/TextDecorator.cpp src/Common/MsgEngine/src/dummy/MessageMmsDummy.cpp src/Common/MsgEngine/src/MsgStorage.cpp src/Common/View/src/SelectAllListItem.cpp src/Common/AppControl/src/AppControlHandle.cpp src/Common/AppControl/src/ContactViewer.cpp src/Conversation/View/src/ConvListViewItem.cpp src/Common/Utils/src/ThumbnailMaker.cpp src/Common/View/src/NaviFrameItem.cpp src/Composer/Controller/src/MsgBodyFrame.cpp src/Common/View/src/PopupList.cpp src/Settings/View/src/SettingsBlockedMsgDetailView.cpp src/Common/Controller/src/App.cpp src/Common/View/src/PopupAttachmentListItem.cpp src/Common/MsgEngine/src/private/MsgComposerPrivate.cpp src/Common/Utils/src/MediaUtils.cpp src/Common/MsgEngine/src/dummy/MsgThreadItemDummy.cpp src/Composer/View/src/SendingOptionListViewItem.cpp src/Common/View/src/TitleListItem.cpp src/Common/Utils/src/TimeUtils.cpp src/Conversation/Controller/src/BubbleCalEventEntity.cpp src/Common/Controller/src/ConnectivityChecker.cpp src/Common/MsgEngine/src/private/MsgSettingsPrivate.cpp src/Composer/Controller/src/RecipInputFrame.cpp src/Common/View/src/IconTextPopup.cpp src/MainApp/main.cpp src/Settings/Controller/src/BlockedNumberListItem.cpp src/Common/View/src/NoContentLayout.cpp src/Common/SystemSettingsManager/src/SystemSettingsManager.cpp src/Common/MsgEngine/src/dummy/MsgReportDummy.cpp src/Composer/Controller/src/ContactListItem.cpp src/Common/MsgEngine/src/MsgPage.cpp src/Common/AppControl/src/ContactEditor.cpp src/Common/AppControl/src/InputSelector.cpp src/Common/MsgEngine/src/private/MsgUtilsPrivate.cpp src/Common/View/src/PopupManager.cpp src/MsgThread/View/src/ThreadComposeListViewItem.cpp src/Common/MsgEngine/src/private/MsgStoragePrivate.cpp src/Common/View/src/SearchBar.cpp src/MsgThread/View/src/ThreadListViewItem.cpp src/Common/MsgEngine/src/private/MsgPagePrivate.cpp src/Common/AppControl/src/AppControlUtils.cpp # EDC Sources USER_EDCS = diff --git a/src/Common/Recipient/inc/Recipient.h b/src/Common/Recipient/inc/Recipient.h index 3ac4247..5c002c6 100644 --- a/src/Common/Recipient/inc/Recipient.h +++ b/src/Common/Recipient/inc/Recipient.h @@ -26,7 +26,7 @@ namespace Msg { class Recipient { public: - Recipient(std::string address, std::string dispName = {}); + explicit Recipient(std::string address, std::string dispName = {}); Recipient(); ~Recipient(); diff --git a/src/Composer/Controller/src/MsgInputSelector.cpp b/src/Composer/Controller/src/MsgInputSelector.cpp index d24c251..f91a7ba 100644 --- a/src/Composer/Controller/src/MsgInputSelector.cpp +++ b/src/Composer/Controller/src/MsgInputSelector.cpp @@ -75,7 +75,7 @@ bool MsgInputSelector::execCmd(const AppControlComposeRef &cmd) if (recips.empty()) m_Composer.setRecip({}); else - m_Composer.setRecip(recips.front()); + m_Composer.setRecip(Recipient(recips.front())); std::string text = cmd->getMessageText(); bool isEmpty = text.empty(); diff --git a/src/Conversation/Controller/inc/ConvFrame.h b/src/Conversation/Controller/inc/ConvFrame.h index dc34f98..c2ed939 100644 --- a/src/Conversation/Controller/inc/ConvFrame.h +++ b/src/Conversation/Controller/inc/ConvFrame.h @@ -23,7 +23,6 @@ #include "ConvList.h" #include "WorkingDir.h" #include "MoreOption.h" -#include "ContactViewer.h" namespace Msg { @@ -111,6 +110,7 @@ namespace Msg void updateMoreOption(); void prepedItem(MorOptionItemType itemType); void removeItem(MorOptionItemType itemType); + void navigateToReicpList(); void setMode(Mode mode); void setDeleteMode(bool value); @@ -126,7 +126,6 @@ namespace Msg SelectButton *m_pSelectButton; WorkingDirRef m_WorkingDir; MoreOptionItemInfo m_MoreOptionItemsInfo[MorOptionMax]; - ContactViewer m_ContactViewer; }; } diff --git a/src/Conversation/Controller/inc/RecipListFrame.h b/src/Conversation/Controller/inc/RecipListFrame.h new file mode 100644 index 0000000..b54d04e --- /dev/null +++ b/src/Conversation/Controller/inc/RecipListFrame.h @@ -0,0 +1,63 @@ +/* + * Copyright 2016 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.1 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.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 RecipListFrame_h_ +#define RecipListFrame_h_ + +#include "FrameController.h" +#include "ListView.h" +#include "Recipient.h" +#include "ContactManager.h" +#include "ContactViewer.h" + +#include + +namespace Msg +{ + class PaddingListViewItem; + class RecipListFrame + : public FrameController + , private IListViewListener + , private IContactManagerListener { + + public: + RecipListFrame(NaviFrameController &parent); + virtual ~RecipListFrame(); + + void setRecips(std::list recips); + + private: + // NaviFrameItem: + void onAttached(ViewItem &item) override; + + // IListViewListener: + void onListItemSelected(ListItem &listItem) override; + + // IContactManagerListener: + void onContactChanged() override; + + void prepeareList(); + void fillList(); + + private: + std::list m_Recips; + ListView *m_pList; + PaddingListViewItem *m_pBottomPadItem; + ContactViewer m_ContactViewer; + }; +} + +#endif /* RecipListFrame_h_ */ diff --git a/src/Conversation/Controller/inc/RecipListItem.h b/src/Conversation/Controller/inc/RecipListItem.h new file mode 100644 index 0000000..f1d629b --- /dev/null +++ b/src/Conversation/Controller/inc/RecipListItem.h @@ -0,0 +1,72 @@ +/* + * Copyright 2016 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.1 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.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 RecipListItem_H_ +#define RecipListItem_H_ + +#include "RecipListViewItem.h" +#include "Recipient.h" + +namespace Msg { + class RecipListItem + : public RecipListViewItem { + + public: + RecipListItem(); + virtual ~RecipListItem(); + + void setRecipient(Recipient recip); + const Recipient &getRecipient() const; + void updateContactInfo(); + + private: + std::string getRecipText() override; + + private: + Recipient m_Recip; + }; + + inline RecipListItem::RecipListItem() + : RecipListViewItem() + { + } + + inline RecipListItem::~RecipListItem() + { + } + + inline void RecipListItem::setRecipient(Recipient recip) + { + m_Recip = std::move(recip); + } + + const Recipient &RecipListItem::getRecipient() const + { + return m_Recip; + } + + inline void RecipListItem::updateContactInfo() + { + m_Recip.updateContactInfo(); + } + + inline std::string RecipListItem::getRecipText() + { + return m_Recip.getDispName(); + } +} + +#endif /* RecipListItem_H_ */ diff --git a/src/Conversation/Controller/src/ConvFrame.cpp b/src/Conversation/Controller/src/ConvFrame.cpp index 5d1cc44..0edb97f 100644 --- a/src/Conversation/Controller/src/ConvFrame.cpp +++ b/src/Conversation/Controller/src/ConvFrame.cpp @@ -25,6 +25,7 @@ #include "Recipient.h" #include "VoiceCall.h" #include "NaviFrameController.h" +#include "RecipListFrame.h" using namespace Msg; @@ -188,6 +189,13 @@ void ConvFrame::removeItem(MorOptionItemType itemType) } } +void ConvFrame::navigateToReicpList() +{ + auto *frame = new RecipListFrame(getParent()); + frame->setRecips({m_pList->getRecip()}); + getParent().push(*frame); +} + void ConvFrame::setThreadId(ThreadId id) { m_ThreadId = id; @@ -351,7 +359,7 @@ void ConvFrame::onSendMyLocationClicked(MoreOption &obj) void ConvFrame::onRecipientsClicked(MoreOption &obj) { MSG_LOG(""); - m_ContactViewer.launch(m_pList->getRecip().getAddress()); + navigateToReicpList(); } void ConvFrame::onBlockNumberClicked(MoreOption &obj) diff --git a/src/Conversation/Controller/src/RecipListFrame.cpp b/src/Conversation/Controller/src/RecipListFrame.cpp new file mode 100644 index 0000000..1aea6d4 --- /dev/null +++ b/src/Conversation/Controller/src/RecipListFrame.cpp @@ -0,0 +1,94 @@ +/* + * Copyright 2016 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.1 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.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 "RecipListFrame.h" +#include "NaviFrameController.h" +#include "App.h" +#include "Logger.h" +#include "Window.h" +#include "PaddingListViewItem.h" +#include "TitleListItem.h" +#include "RecipListItem.h" + +using namespace Msg; + +RecipListFrame::RecipListFrame(NaviFrameController &parent) + : FrameController(parent, ConvGroup) + , m_pList(nullptr) + , m_pBottomPadItem(nullptr) +{ + prepeareList(); +} + +RecipListFrame::~RecipListFrame() +{ +} + +void RecipListFrame::setRecips(std::list recips) +{ + for (auto &&recip: recips) { + auto *item = new RecipListItem; + item->setRecipient(std::move(recip)); + m_pList->insertBeforeItem(*item, *m_pBottomPadItem); + } +} + +void RecipListFrame::fillList() +{ + // Title: + auto title = new TitleListItem; + title->setTitle(msgt("WDS_MSG_OPT_RECIPIENTS_ABB")); + m_pList->appendItem(*title); + + // Bottom padding: + m_pBottomPadItem = new PaddingListViewItem; + m_pList->appendItem(*m_pBottomPadItem); +} + +void RecipListFrame::onAttached(ViewItem &item) +{ + FrameController::onAttached(item); + setContent(*m_pList); +} + +void RecipListFrame::prepeareList() +{ + if (!m_pList) { + m_pList = new ListView(getParent(), App::getInst().getWindow().getCircleSurface()); + m_pList->setHomogeneous(false); + m_pList->setListener(this); + fillList(); + } +} + +void RecipListFrame::onListItemSelected(ListItem &listItem) +{ + MSG_LOG(""); + auto *recipItem = dynamic_cast(&listItem); + if (recipItem && recipItem->getRecipient().isValid()) { + m_ContactViewer.launch(recipItem->getRecipient().getAddress()); + } +} + +void RecipListFrame::onContactChanged() +{ + MSG_LOG(""); + auto items = m_pList->getItems(); + for (RecipListItem *item : items) { + item->updateContactInfo(); + } + m_pList->updateRealizedItems(); +} diff --git a/src/Conversation/View/inc/RecipListViewItem.h b/src/Conversation/View/inc/RecipListViewItem.h index 27674f6..814b6b3 100644 --- a/src/Conversation/View/inc/RecipListViewItem.h +++ b/src/Conversation/View/inc/RecipListViewItem.h @@ -27,7 +27,7 @@ namespace Msg { virtual ~RecipListViewItem(); protected: - virtual std::string getRecip() = 0; + virtual std::string getRecipText() = 0; private: std::string getText(ListItem &item, const char *part) override; @@ -43,7 +43,7 @@ namespace Msg { inline std::string RecipListViewItem::getText(ListItem &item, const char *part) { if (!strcmp(part, "elm.text")) - return getRecip(); + return getRecipText(); return ""; } } -- 2.34.1