From 021a5d690875e8e8d4c1483d58abaf59f9fb4a6d Mon Sep 17 00:00:00 2001 From: Igor Olshevskyi Date: Mon, 9 Oct 2017 10:25:59 +0300 Subject: [PATCH] TizenRefApp-9540 [Call UI] Update UCL source files Change-Id: Iaad3d9e1dfabed8f69b1e5e39b1e0a56996c8725 --- call-ui/model/IContactInfo.h | 4 +- call-ui/model/ISoundManager.h | 8 +- call-ui/model/impl/ActiveCall.cpp | 10 +-- call-ui/model/impl/ActiveCall.h | 3 +- call-ui/model/impl/BatteryStateSource.cpp | 10 ++- call-ui/model/impl/BatteryStateSource.h | 3 +- call-ui/model/impl/BluetoothManager.cpp | 20 ++--- call-ui/model/impl/BluetoothManager.h | 4 +- call-ui/model/impl/CallInfo.cpp | 22 ++--- call-ui/model/impl/CallInfo.h | 6 +- call-ui/model/impl/CallManager.cpp | 51 +++++++---- call-ui/model/impl/CallManager.h | 9 +- call-ui/model/impl/ConferenceCallInfo.cpp | 16 ++-- call-ui/model/impl/ConferenceCallInfo.h | 6 +- call-ui/model/impl/ConnectionStateSource.cpp | 14 +-- call-ui/model/impl/ConnectionStateSource.h | 2 +- call-ui/model/impl/ContactInfo.cpp | 25 +++--- call-ui/model/impl/ContactInfo.h | 20 ++--- call-ui/model/impl/EndCall.cpp | 10 +-- call-ui/model/impl/EndCall.h | 5 +- call-ui/model/impl/HdVoiceStateSource.cpp | 8 +- call-ui/model/impl/HdVoiceStateSource.h | 2 +- call-ui/model/impl/HeldCall.cpp | 14 +-- call-ui/model/impl/HeldCall.h | 3 +- call-ui/model/impl/IIndicatorStateSource.h | 4 +- call-ui/model/impl/IncomingCall.cpp | 20 +++-- call-ui/model/impl/IncomingCall.h | 3 +- call-ui/model/impl/IndicatorStateProvider.cpp | 5 +- call-ui/model/impl/IndicatorStateProvider.h | 2 +- call-ui/model/impl/RejectMsg.cpp | 32 +++++-- call-ui/model/impl/RejectMsg.h | 10 +-- call-ui/model/impl/RejectMsgProvider.h | 2 +- call-ui/model/impl/RssiStateSource.cpp | 8 +- call-ui/model/impl/RssiStateSource.h | 2 +- call-ui/model/impl/SimSlotStateSource.cpp | 10 ++- call-ui/model/impl/SimSlotStateSource.h | 3 +- call-ui/model/impl/SoundManager.cpp | 30 ++++--- call-ui/model/impl/SoundManager.h | 15 ++-- call-ui/presenters/Instance.cpp | 9 +- call-ui/presenters/base/Page.cpp | 10 +-- call-ui/presenters/dialogs/AcceptDialog.cpp | 26 +++--- call-ui/presenters/dialogs/AcceptDialog.h | 2 +- .../presenters/misc/AcceptRejectPresenter.cpp | 50 ++++------- .../presenters/misc/AcceptRejectPresenter.h | 15 ++-- .../presenters/misc/AccessoryPresenter.cpp | 89 +++++++------------ call-ui/presenters/misc/AccessoryPresenter.h | 17 ++-- .../presenters/misc/AtspiHighlightHelper.cpp | 13 +-- call-ui/presenters/misc/CallInfoPresenter.cpp | 30 +++---- call-ui/presenters/misc/CallInfoPresenter.h | 4 +- .../presenters/misc/CallStatusPresenter.cpp | 24 ++--- call-ui/presenters/misc/CallStatusPresenter.h | 8 +- .../presenters/misc/DeviceStatePresenter.cpp | 12 ++- .../presenters/misc/DeviceStatePresenter.h | 5 +- .../presenters/misc/IndicatorPresenter.cpp | 13 +-- call-ui/presenters/misc/IndicatorPresenter.h | 11 ++- .../presenters/misc/MoreOptionsPresenter.cpp | 58 +++++------- .../presenters/misc/MoreOptionsPresenter.h | 23 ++--- .../presenters/misc/MotionSensorPresenter.cpp | 15 ++-- .../presenters/misc/MotionSensorPresenter.h | 6 +- .../presenters/misc/RejectMsgPresenter.cpp | 77 ++++++---------- call-ui/presenters/misc/RejectMsgPresenter.h | 33 +++---- call-ui/presenters/pages/KeypadPage.cpp | 80 +++++++---------- call-ui/presenters/pages/KeypadPage.h | 15 ++-- call-ui/presenters/pages/MainPage.cpp | 60 ++++++------- call-ui/presenters/pages/MainPage.h | 17 ++-- call-ui/view/AcceptRejectWidget.cpp | 70 +++++++-------- call-ui/view/AcceptRejectWidget.h | 13 +-- call-ui/view/VolumeControl.cpp | 49 +++++----- call-ui/view/VolumeControl.h | 15 ++-- project_def.prop | 10 +-- ucl/include/ucl/appfw/SysEventProvider.h | 4 +- ucl/include/ucl/appfw/SysEventProvider.hpp | 6 +- ucl/include/ucl/gui/NaviItem.h | 2 +- ucl/include/ucl/gui/NaviItem.hpp | 2 +- ucl/include/ucl/gui/Widget.h | 6 +- ucl/include/ucl/gui/Window.h | 3 +- ucl/include/ucl/gui/Window.hpp | 2 +- ucl/include/ucl/misc/Event.hpp | 14 +-- ucl/include/ucl/misc/MonoObservable.hpp | 4 +- ucl/include/ucl/misc/Observable.h | 2 +- ucl/include/ucl/misc/Observable.hpp | 2 +- ucl/include/ucl/misc/Timeout.h | 7 +- ucl/include/ucl/mvp/GuiPresenter.h | 8 +- ucl/include/ucl/mvp/ListItemPresenter.h | 5 ++ .../ucl/util/delegation/BaseDelegate.h | 2 +- .../ucl/util/delegation/BaseDelegate.hpp | 4 +- .../ucl/util/delegation/BaseDelegate2.h | 2 +- .../ucl/util/delegation/BaseDelegate2.hpp | 4 +- ucl/include/ucl/util/delegation/Delegate.h | 9 +- ucl/include/ucl/util/delegation/Delegate.hpp | 19 ++-- ucl/include/ucl/util/delegation/Delegate2.h | 9 +- ucl/include/ucl/util/delegation/Delegate2.hpp | 19 ++-- ucl/include/ucl/util/delegation/helpers.h | 56 +++++++++--- ucl/include/ucl/util/delegation/macro.h | 35 ++++---- ucl/include/ucl/util/delegation/shortMacro.h | 12 +-- ucl/include/ucl/util/memory/WeakRef.hpp | 2 +- ucl/include/ucl/util/memory/helpers.h | 35 ++++---- .../ucl/util/smartDelegation/WeakDelegate.h | 22 ++++- .../ucl/util/smartDelegation/WeakDelegate.hpp | 45 +++++++--- ucl/include/ucl/util/smartDelegation/macro.h | 7 +- .../ucl/util/smartDelegation/shortMacro.h | 2 + ucl/source/appfw/UIApp.cpp | 6 +- ucl/source/gui/Naviframe.cpp | 4 +- ucl/source/gui/Widget.cpp | 30 ++++--- ucl/source/gui/Window.cpp | 13 +++ ucl/source/misc/Timeout.cpp | 15 ++-- ucl/source/mvp/GuiPresenter.cpp | 67 +++++++++----- ucl/source/mvp/ListItemPresenter.cpp | 26 +++++- ucl/source/mvp/ListPresenter.cpp | 24 ++--- 109 files changed, 984 insertions(+), 852 deletions(-) diff --git a/call-ui/model/IContactInfo.h b/call-ui/model/IContactInfo.h index 6264836..45157b3 100644 --- a/call-ui/model/IContactInfo.h +++ b/call-ui/model/IContactInfo.h @@ -33,13 +33,13 @@ namespace callui { * @brief Gets contact name * @return Contact name */ - virtual const std::string &getName() const = 0; + virtual std::string getName() const = 0; /** * @brief Gets path to contact image * @return Contact image path */ - virtual const std::string &getImagePath() const = 0; + virtual std::string getImagePath() const = 0; /** * @brief Gets name source type diff --git a/call-ui/model/ISoundManager.h b/call-ui/model/ISoundManager.h index 4012cf9..d11b385 100644 --- a/call-ui/model/ISoundManager.h +++ b/call-ui/model/ISoundManager.h @@ -86,7 +86,7 @@ namespace callui { * @brief Deletes audio state handler * @param[in] handler Handler to delete */ - virtual void delAudioStateHandler(const NotiHandler &handler) = 0; + virtual void delAudioStateHandler(NotiHandler::CDRef handler) = 0; /** * @brief Adds mute state handler @@ -98,7 +98,7 @@ namespace callui { * @brief Deletes mute state handler * @param[in] handler Handler to delete */ - virtual void delMuteStateHandler(const NotiHandler &handler) = 0; + virtual void delMuteStateHandler(NotiHandler::CDRef handler) = 0; /** * @brief Adds volume state handler @@ -110,7 +110,7 @@ namespace callui { * @brief Deletes volume state handler * @param[in] handler Handler to delete */ - virtual void delVolumeStateHandler(const NotiHandler &handler) = 0; + virtual void delVolumeStateHandler(NotiHandler::CDRef handler) = 0; /** * @brief Gets max volume level @@ -155,7 +155,7 @@ namespace callui { * @param[in] handler Handler to delete */ virtual void delBTHeadsetConnectionChangeHandler( - const NotiHandler &handler) = 0; + NotiHandler::CDRef handler) = 0; protected: ~ISoundManager() = default; diff --git a/call-ui/model/impl/ActiveCall.cpp b/call-ui/model/impl/ActiveCall.cpp index e3e74a5..686699f 100644 --- a/call-ui/model/impl/ActiveCall.cpp +++ b/call-ui/model/impl/ActiveCall.cpp @@ -25,22 +25,22 @@ namespace callui { using namespace ucl; ActiveCall::ActiveCall(CallManagerWRef cm, cm_call_data_h callData): - m_cm(cm), - m_isDialing(false) + m_cm(std::move(cm)), + m_isDialing(false) { } ActiveCallSRef ActiveCall::newInstance(CallManagerWRef cm, cm_call_data_h callData) { if (!cm) { - LOG_RETURN_VALUE(RES_FAIL, {}, "cm is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "cm is NULL"); } if (!callData) { - LOG_RETURN_VALUE(RES_FAIL, {}, "callData is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "callData is NULL"); } - auto result = makeShared(cm, callData); + auto result = makeShared(std::move(cm), callData); FAIL_RETURN_VALUE(result->prepare(callData), {}, "result->prepare() failed!"); return result; } diff --git a/call-ui/model/impl/ActiveCall.h b/call-ui/model/impl/ActiveCall.h index 9b644b7..e6b05ca 100644 --- a/call-ui/model/impl/ActiveCall.h +++ b/call-ui/model/impl/ActiveCall.h @@ -83,7 +83,8 @@ namespace callui { ucl::Result prepare(cm_call_data_h callData); private: - CallManagerWRef m_cm; + const CallManagerWRef m_cm; + CallInfoSRef m_callInfo; bool m_isDialing; diff --git a/call-ui/model/impl/BatteryStateSource.cpp b/call-ui/model/impl/BatteryStateSource.cpp index 6eb2769..4fb1498 100644 --- a/call-ui/model/impl/BatteryStateSource.cpp +++ b/call-ui/model/impl/BatteryStateSource.cpp @@ -127,8 +127,10 @@ namespace callui { void BatteryStateSource::onBatteryStateChangedCb(keynode_t *node) { - if (updateBatteryState() && m_handler) { - m_handler(); + if (updateBatteryState()) { + if (const auto handler = m_handler.lock()) { + handler(); + } } } @@ -178,9 +180,9 @@ namespace callui { return {m_bits.value}; } - void BatteryStateSource::setStateChangeHandler(const NotiHandler &handler) + void BatteryStateSource::setStateChangeHandler(NotiHandler handler) { - m_handler = handler; + m_handler = std::move(handler); } int getBatteryLevel(IndicatorState state) diff --git a/call-ui/model/impl/BatteryStateSource.h b/call-ui/model/impl/BatteryStateSource.h index 9a5f06b..98faee2 100644 --- a/call-ui/model/impl/BatteryStateSource.h +++ b/call-ui/model/impl/BatteryStateSource.h @@ -52,8 +52,7 @@ namespace callui { /** * @see IIndicatorStateSource::setStateChangeHandler() */ - virtual void setStateChangeHandler( - const NotiHandler &handler) override final; + virtual void setStateChangeHandler(NotiHandler handler) override final; private: BatteryStateSource(); diff --git a/call-ui/model/impl/BluetoothManager.cpp b/call-ui/model/impl/BluetoothManager.cpp index ff1a5a4..25fa8e0 100644 --- a/call-ui/model/impl/BluetoothManager.cpp +++ b/call-ui/model/impl/BluetoothManager.cpp @@ -105,8 +105,8 @@ namespace callui { if (res != BT_ERROR_NONE) { LOG_RETURN(RES_FAIL, "BT initialize failed! " "res[%d] msg[%s]", res, get_error_message(res)); - } + m_btInitialized = true; return RES_OK; } @@ -146,10 +146,9 @@ namespace callui { return RES_OK; } - void BluetoothManager::setVolumeStateHandler( - const NotiHandler &handler) + void BluetoothManager::setVolumeStateHandler(NotiHandler handler) { - m_btVolumeHandler = handler; + m_btVolumeHandler = std::move(handler); } Result BluetoothManager::registerAudioHandling() @@ -201,8 +200,8 @@ namespace callui { void BluetoothManager::onVolumeChanged(int volume) { if (impl::isScoOpened() && impl::isCallCurrentSoundType()) { - if (m_btVolumeHandler) { - m_btVolumeHandler(); + if (const auto handler = m_btVolumeHandler.lock()) { + handler(); } } } @@ -212,9 +211,10 @@ namespace callui { return m_isHeadsetConnected; } - void BluetoothManager::setHeadsetConnectionChangeHandler(const NotiHandler &handler) + void BluetoothManager::setHeadsetConnectionChangeHandler( + NotiHandler handler) { - m_btConnectionHandler = handler; + m_btConnectionHandler = std::move(handler); } bool BluetoothManager::getHeadsetConnectionState() const @@ -254,8 +254,8 @@ namespace callui { if (m_isHeadsetConnected != isConnected) { DLOG("BT Headset connection state update"); m_isHeadsetConnected = isConnected; - if (m_btConnectionHandler) { - m_btConnectionHandler(); + if (const auto handler = m_btConnectionHandler.lock()) { + handler(); } } } diff --git a/call-ui/model/impl/BluetoothManager.h b/call-ui/model/impl/BluetoothManager.h index 36800f9..22e703d 100644 --- a/call-ui/model/impl/BluetoothManager.h +++ b/call-ui/model/impl/BluetoothManager.h @@ -62,7 +62,7 @@ namespace callui { * @brief Sets volume state change handler * @param[in] handler Volume state change handler */ - void setVolumeStateHandler(const NotiHandler &handler); + void setVolumeStateHandler(NotiHandler handler); /** * @brief Checks whether headset device is connected @@ -74,7 +74,7 @@ namespace callui { * @brief Sets handler for monitoring headset connection change * @return true if headset device is connected, false */ - void setHeadsetConnectionChangeHandler(const NotiHandler &handler); + void setHeadsetConnectionChangeHandler(NotiHandler handler); private: BluetoothManager(); diff --git a/call-ui/model/impl/CallInfo.cpp b/call-ui/model/impl/CallInfo.cpp index 67d695d..36eed08 100644 --- a/call-ui/model/impl/CallInfo.cpp +++ b/call-ui/model/impl/CallInfo.cpp @@ -69,27 +69,23 @@ namespace callui { CallInfoSRef CallInfo::newInstance(CallClient &client, cm_call_data_h callData, - ContactInfoProviderSRef callInfoProvider) + const ContactInfoProviderSRef &contactInfoProvider) { - if (!client) { - LOG_RETURN_VALUE(RES_FAIL, {}, "client is NULL"); - } - if (!callData) { - LOG_RETURN_VALUE(RES_FAIL, {}, "callData is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "callData is NULL"); } auto result = makeShared(); FAIL_RETURN_VALUE(result->prepare(client, callData, - callInfoProvider), + contactInfoProvider), {}, "result->prepare() failed!"); return result; } Result CallInfo::prepare(CallClient &client, cm_call_data_h callData, - ContactInfoProviderSRef callInfoProvider) + const ContactInfoProviderSRef &contactInfoProvider) { Result res = convertCMResult( cm_call_data_get_call_id(callData, &m_callId)); @@ -130,8 +126,8 @@ namespace callui { cm_call_data_get_person_id(callData, &personId)); FAIL_RETURN(res, "cm_call_data_get_person_id() failed!"); - if (personId >= 0 && callInfoProvider) { - m_contactInfo = callInfoProvider->createContactInfo(personId); + if (personId >= 0 && contactInfoProvider) { + m_contactInfo = contactInfoProvider->createContactInfo(personId); if (!m_contactInfo) { LOG_RETURN(RES_FAIL, "createContactInfo() failed!"); } @@ -141,7 +137,7 @@ namespace callui { FAIL_RETURN(res, "cm_call_data_get_call_member_count() failed!"); if (m_confMemberCount > 1) { - res = initConferenceCallInfoList(client, callInfoProvider); + res = initConferenceCallInfoList(client, contactInfoProvider); FAIL_RETURN(res, "initConferenceCallInfoList() failed!"); } @@ -149,7 +145,7 @@ namespace callui { } Result CallInfo::initConferenceCallInfoList(CallClient &client, - ContactInfoProviderSRef callInfoProvider) + const ContactInfoProviderSRef &contactInfoProvider) { // XXX: must be initialized with nullptr. If not an there is no conference calls // cm_get_conference_callList return CM_ERROR_NONE and pointer will be not changed. @@ -163,7 +159,7 @@ namespace callui { for (; l != nullptr; l = g_slist_next(l)) { auto confCallInfo = ConferenceCallInfo::newInstance( static_cast(l->data), - callInfoProvider); + contactInfoProvider); if (!confCallInfo) { LOG_BREAK(res = RES_OUT_OF_MEMORY, "ConferenceCallInfo::newInstance() failed!"); } diff --git a/call-ui/model/impl/CallInfo.h b/call-ui/model/impl/CallInfo.h index cb40295..db8d541 100644 --- a/call-ui/model/impl/CallInfo.h +++ b/call-ui/model/impl/CallInfo.h @@ -45,7 +45,7 @@ namespace callui { */ static CallInfoSRef newInstance(CallClient &client, cm_call_data_h callData, - ContactInfoProviderSRef callInfoProvider); + const ContactInfoProviderSRef &contactInfoProvider); // ICallInfo // @@ -105,9 +105,9 @@ namespace callui { ucl::Result prepare(CallClient &client, cm_call_data_h callData, - ContactInfoProviderSRef callInfoProvider); + const ContactInfoProviderSRef &contactInfoProvider); ucl::Result initConferenceCallInfoList(CallClient &client, - ContactInfoProviderSRef callInfoProvider); + const ContactInfoProviderSRef &contactInfoProvider); private: unsigned int m_callId; diff --git a/call-ui/model/impl/CallManager.cpp b/call-ui/model/impl/CallManager.cpp index e72d42f..dd28d48 100644 --- a/call-ui/model/impl/CallManager.cpp +++ b/call-ui/model/impl/CallManager.cpp @@ -29,22 +29,27 @@ namespace callui { using namespace ucl; CallManager::CallManager(IRefCountObj &rc, - const CallClientSRef &callClient, - ICallManagerListenerWRef listener): - RefCountAware(&rc), - m_callClient(callClient), - m_listener(listener), - m_slot(SimSlot::UNDEFINED), - m_waitDialing(false), - m_confTypeCallReq(CALL_FLAG_NONE), - m_blockCMEvents(false) + CallClientSRef callClient, + ICallManagerListenerWRef listener): + RefCountAware(&rc), + m_callClient(std::move(callClient)), + m_listener(std::move(listener)), + m_slot(SimSlot::UNDEFINED), + m_waitDialing(false), + m_confTypeCallReq(CALL_FLAG_NONE), + m_blockCMEvents(false) { } - CallManagerSRef CallManager::newInstance(const CallClientSRef &callClient, + CallManagerSRef CallManager::newInstance(CallClientSRef callClient, ICallManagerListenerWRef listener) { - auto result = makeShared(callClient, listener); + if (!callClient) { + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "callClient is NULL"); + } + + auto result = makeShared(std::move(callClient), + std::move(listener)); FAIL_RETURN_VALUE(result->prepare(), {}, "result->prepare() failed!"); return result; } @@ -142,7 +147,8 @@ namespace callui { snprintf(buff, sizeof(buff), "%s", number.c_str()); return convertCMResult( - cm_dial_call(*m_callClient, buff, CM_CALL_TYPE_VOICE, convertCUISimSlot(m_slot))); + cm_dial_call(*m_callClient, buff, CM_CALL_TYPE_VOICE, + convertCUISimSlot(m_slot))); } Result CallManager::endCall(unsigned int callId, CallReleaseType type) @@ -166,10 +172,12 @@ namespace callui { } return convertCMResult( - cm_end_call(*m_callClient, callId, convertCUICallReleaseType(type))); + cm_end_call(*m_callClient, callId, + convertCUICallReleaseType(type))); } - Result CallManager::splitCalls(CallInfoSRef callInfo, const IConferenceCallInfoSCRef &confCallInfo) + Result CallManager::splitCalls(CallInfoSRef callInfo, + const IConferenceCallInfoSCRef &confCallInfo) { if (callInfo->getConferenceMemberCount() <= 1) { LOG_RETURN(RES_FAIL, "Not conference call"); @@ -195,7 +203,8 @@ namespace callui { if (!m_rejectMsgProvider) { m_rejectMsgProvider = RejectMsgProvider::newInstance(); if (!m_rejectMsgProvider) { - LOG_RETURN_VALUE(RES_FAIL, {}, "RejectMsgProvider::newInstance() failed!"); + LOG_RETURN_VALUE(RES_FAIL, {}, + "RejectMsgProvider::newInstance() failed!"); } } @@ -248,14 +257,18 @@ namespace callui { return RES_OK; } - FAIL_RETURN(updateCall(m_incomingCall, cmIncom), "updateCall() failed!"); - FAIL_RETURN(updateCall(m_activeCall, cmActive), "updateCall() failed!"); - FAIL_RETURN(updateCall(m_heldCall, cmHeld), "updateCall() failed!"); + FAIL_RETURN(updateCall(m_incomingCall, cmIncom), + "updateCall() failed!"); + FAIL_RETURN(updateCall(m_activeCall, cmActive), + "updateCall() failed!"); + FAIL_RETURN(updateCall(m_heldCall, cmHeld), + "updateCall() failed!"); return RES_OK; } - void CallManager::callEventCb(cm_call_event_e callEvent, cm_call_event_data_h callEventData) + void CallManager::callEventCb(cm_call_event_e callEvent, + cm_call_event_data_h callEventData) { m_waitDialing = false; diff --git a/call-ui/model/impl/CallManager.h b/call-ui/model/impl/CallManager.h index 954b1c6..6d26700 100644 --- a/call-ui/model/impl/CallManager.h +++ b/call-ui/model/impl/CallManager.h @@ -51,7 +51,7 @@ namespace callui { * @return Shared reference to CallManager instance on success * or NULL otherwise */ - static CallManagerSRef newInstance(const CallClientSRef &callClient, + static CallManagerSRef newInstance(CallClientSRef callClient, ICallManagerListenerWRef listener); /** @@ -138,7 +138,7 @@ namespace callui { virtual IEndCallSRef getEndCall() override final; private: - CallManager(ucl::IRefCountObj &rc, const CallClientSRef &callClient, + CallManager(ucl::IRefCountObj &rc, CallClientSRef callClient, ICallManagerListenerWRef listener); ~CallManager() = default; @@ -162,10 +162,11 @@ namespace callui { void dialStatusCb(cm_dial_status_e status); private: - CallClientSRef m_callClient; + const CallClientSRef m_callClient; + const ICallManagerListenerWRef m_listener; + RejectMsgProviderSRef m_rejectMsgProvider; ContactInfoProviderSRef m_contactInfoProvider; - ICallManagerListenerWRef m_listener; IncomingCallSRef m_incomingCall; ActiveCallSRef m_activeCall; HeldCallSRef m_heldCall; diff --git a/call-ui/model/impl/ConferenceCallInfo.cpp b/call-ui/model/impl/ConferenceCallInfo.cpp index 8d3076c..2d0bb1a 100644 --- a/call-ui/model/impl/ConferenceCallInfo.cpp +++ b/call-ui/model/impl/ConferenceCallInfo.cpp @@ -29,20 +29,21 @@ namespace callui { ConferenceCallInfoSRef ConferenceCallInfo::newInstance( cm_conf_call_data_t *confCallData, - ContactInfoProviderSRef callInfoProvider) + const ContactInfoProviderSRef &contactInfoProvider) { if (!confCallData) { - LOG_RETURN_VALUE(RES_FAIL, {}, "callData is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "callData is NULL"); } auto result = makeShared(); - FAIL_RETURN_VALUE(result->prepare(confCallData, callInfoProvider), {}, "result->prepare() failed!"); + FAIL_RETURN_VALUE(result->prepare(confCallData, contactInfoProvider), + {}, "result->prepare() failed!"); return result; } Result ConferenceCallInfo::prepare( cm_conf_call_data_t *confCallData, - ContactInfoProviderSRef callInfoProvider) + const ContactInfoProviderSRef &contactInfoProvider) { Result res = convertCMResult( cm_conf_call_data_get_call_id(confCallData, &m_callId)); @@ -61,10 +62,11 @@ namespace callui { cm_conf_call_data_get_person_id(confCallData, &personId)); FAIL_RETURN(res, "cm_conf_call_data_get_person_id() failed!"); - if (personId >= 0 && callInfoProvider) { - m_contactInfo = callInfoProvider->createContactInfo(personId); + if (personId >= 0 && contactInfoProvider) { + m_contactInfo = contactInfoProvider->createContactInfo(personId); if (!m_contactInfo) { - LOG_RETURN_VALUE(RES_FAIL, RES_FAIL, "createContactInfo() failed!"); + LOG_RETURN_VALUE(RES_FAIL, RES_FAIL, + "createContactInfo() failed!"); } } return RES_OK; diff --git a/call-ui/model/impl/ConferenceCallInfo.h b/call-ui/model/impl/ConferenceCallInfo.h index 84e8f12..d3b23ca 100644 --- a/call-ui/model/impl/ConferenceCallInfo.h +++ b/call-ui/model/impl/ConferenceCallInfo.h @@ -39,13 +39,13 @@ namespace callui { /** * @brief Creates new instance of ConferenceCallInfo * @param[in] confCallData Native Call Manager conference call handler - * @param[in] callInfoProvider Contact info provider + * @param[in] contactInfoProvider Contact info provider * @return Shared reference to ConferenceCallInfo instance on success * or NULL otherwise */ static ConferenceCallInfoSRef newInstance( cm_conf_call_data_t *confCallData, - ContactInfoProviderSRef callInfoProvider); + const ContactInfoProviderSRef &contactInfoProvider); // IConferenceCallInfo // @@ -69,7 +69,7 @@ namespace callui { ~ConferenceCallInfo() = default; ucl::Result prepare(cm_conf_call_data_t *confCallData, - ContactInfoProviderSRef callInfoProvider); + const ContactInfoProviderSRef &contactInfoProvider); private: unsigned int m_callId; std::string m_phoneNum; diff --git a/call-ui/model/impl/ConnectionStateSource.cpp b/call-ui/model/impl/ConnectionStateSource.cpp index 41d148d..e7c38ee 100644 --- a/call-ui/model/impl/ConnectionStateSource.cpp +++ b/call-ui/model/impl/ConnectionStateSource.cpp @@ -187,7 +187,9 @@ namespace callui { } if (needNotify && m_handler) { - m_handler(); + if (const auto handler = m_handler.lock()) { + handler(); + } } } @@ -244,8 +246,10 @@ namespace callui { void ConnectionStateSource::onPacketStateChangedCb(keynode_t *node) { ILOG(); - if (updatePacketDir() && m_handler) { - m_handler(); + if (updatePacketDir()) { + if (const auto handler = m_handler.lock()) { + handler(); + } } } @@ -370,9 +374,9 @@ namespace callui { return {m_bits.value}; } - void ConnectionStateSource::setStateChangeHandler(const NotiHandler &handler) + void ConnectionStateSource::setStateChangeHandler(NotiHandler handler) { - m_handler = handler; + m_handler = std::move(handler); } ConnectionType getConnectionState(IndicatorState state) diff --git a/call-ui/model/impl/ConnectionStateSource.h b/call-ui/model/impl/ConnectionStateSource.h index 053d03f..795a57e 100644 --- a/call-ui/model/impl/ConnectionStateSource.h +++ b/call-ui/model/impl/ConnectionStateSource.h @@ -51,7 +51,7 @@ namespace callui { /** * @see IIndicatorStateSource::setStateChangeHandler() */ - virtual void setStateChangeHandler(const NotiHandler &handler) override final; + virtual void setStateChangeHandler(NotiHandler handler) override final; private: ConnectionStateSource(); diff --git a/call-ui/model/impl/ContactInfo.cpp b/call-ui/model/impl/ContactInfo.cpp index 8a2aea7..d50fbde 100644 --- a/call-ui/model/impl/ContactInfo.cpp +++ b/call-ui/model/impl/ContactInfo.cpp @@ -25,30 +25,33 @@ namespace callui { using namespace ucl; ContactInfo::ContactInfo(int personId, - const std::string &name, - const std::string &imagePath, + std::string name, + std::string imagePath, ContactNameSourceType type): - m_personId(personId), - m_name(name), - m_imagePath(imagePath), - m_nameSource(type) + m_personId(personId), + m_name(std::move(name)), + m_imagePath(std::move(imagePath)), + m_nameSource(type) { } ContactInfoSRef ContactInfo::newInstance(int personId, - const std::string &name, - const std::string &imagePath, + std::string name, + std::string imagePath, ContactNameSourceType type) { - return makeShared(personId, name, imagePath, type); + return makeShared(personId, + std::move(name), + std::move(imagePath), + type); } - const std::string &ContactInfo::getName() const + std::string ContactInfo::getName() const { return m_name; } - const std::string &ContactInfo::getImagePath() const + std::string ContactInfo::getImagePath() const { return m_imagePath; } diff --git a/call-ui/model/impl/ContactInfo.h b/call-ui/model/impl/ContactInfo.h index 064bbf5..420cafd 100644 --- a/call-ui/model/impl/ContactInfo.h +++ b/call-ui/model/impl/ContactInfo.h @@ -44,8 +44,8 @@ namespace callui { * or NULL otherwise */ static ContactInfoSRef newInstance(int personId, - const std::string &name, - const std::string &imagePath, + std::string name, + std::string imagePath, ContactNameSourceType type); // IContactInfo // @@ -53,12 +53,12 @@ namespace callui { /** * @see IContactInfo::getName() */ - virtual const std::string &getName() const override final; + virtual std::string getName() const override final; /** * @see IContactInfo::getImagePath() */ - virtual const std::string &getImagePath() const override final; + virtual std::string getImagePath() const override final; /** * @see IContactInfo::getNameSourceType() @@ -67,16 +67,16 @@ namespace callui { private: ContactInfo(int personId, - const std::string &name, - const std::string &imagePath, + std::string name, + std::string imagePath, ContactNameSourceType type); ~ContactInfo() = default; private: - int m_personId; - std::string m_name; - std::string m_imagePath; - ContactNameSourceType m_nameSource; + const int m_personId; + const std::string m_name; + const std::string m_imagePath; + const ContactNameSourceType m_nameSource; friend class ucl::ReffedObj; }; diff --git a/call-ui/model/impl/EndCall.cpp b/call-ui/model/impl/EndCall.cpp index bc8ca96..261bf90 100644 --- a/call-ui/model/impl/EndCall.cpp +++ b/call-ui/model/impl/EndCall.cpp @@ -25,8 +25,8 @@ namespace callui { using namespace ucl; EndCall::EndCall(CallManagerWRef cm, ICallInfoSCRef callInfo): - m_cm(cm), - m_callInfo(callInfo), + m_cm(std::move(cm)), + m_callInfo(std::move(callInfo)), m_callbackInProgress(false) { } @@ -34,13 +34,13 @@ namespace callui { EndCallSRef EndCall::newInstance(CallManagerWRef cm, ICallInfoSCRef callInfo) { if (!cm) { - LOG_RETURN_VALUE(RES_FAIL, {}, "cm is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "cm is NULL"); } if (!callInfo) { - LOG_RETURN_VALUE(RES_FAIL, {}, "callInfo is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "callInfo is NULL"); } - return makeShared(cm, callInfo); + return makeShared(std::move(cm), std::move(callInfo)); } ICallInfoSCRef EndCall::getInfo() const diff --git a/call-ui/model/impl/EndCall.h b/call-ui/model/impl/EndCall.h index 925db90..748e0c4 100644 --- a/call-ui/model/impl/EndCall.h +++ b/call-ui/model/impl/EndCall.h @@ -64,8 +64,9 @@ namespace callui { ucl::Result prepare(); private: - CallManagerWRef m_cm; - ICallInfoSCRef m_callInfo; + const CallManagerWRef m_cm; + const ICallInfoSCRef m_callInfo; + bool m_callbackInProgress; friend class ucl::ReffedObj; diff --git a/call-ui/model/impl/HdVoiceStateSource.cpp b/call-ui/model/impl/HdVoiceStateSource.cpp index a8c2019..fb988a6 100644 --- a/call-ui/model/impl/HdVoiceStateSource.cpp +++ b/call-ui/model/impl/HdVoiceStateSource.cpp @@ -47,8 +47,8 @@ namespace callui { if (m_bits.isEnable != isEnable) { m_bits.isEnable = isEnable; - if (m_handler) { - m_handler(); + if (const auto handler = m_handler.lock()) { + handler(); } } } @@ -63,9 +63,9 @@ namespace callui { return {m_bits.value}; } - void HdVoiceStateSource::setStateChangeHandler(const NotiHandler &handler) + void HdVoiceStateSource::setStateChangeHandler(NotiHandler handler) { - m_handler = handler; + m_handler = std::move(handler); } bool getHDVoiceState(IndicatorState state) diff --git a/call-ui/model/impl/HdVoiceStateSource.h b/call-ui/model/impl/HdVoiceStateSource.h index 218b977..f56dbb1 100644 --- a/call-ui/model/impl/HdVoiceStateSource.h +++ b/call-ui/model/impl/HdVoiceStateSource.h @@ -54,7 +54,7 @@ namespace callui { /** * @see IIndicatorStateSource::setStateChangeHandler() */ - virtual void setStateChangeHandler(const NotiHandler &handler) override final; + virtual void setStateChangeHandler(NotiHandler handler) override final; private: HdVoiceStateSource(bool isEnable); diff --git a/call-ui/model/impl/HeldCall.cpp b/call-ui/model/impl/HeldCall.cpp index 033b10d..83362eb 100644 --- a/call-ui/model/impl/HeldCall.cpp +++ b/call-ui/model/impl/HeldCall.cpp @@ -25,22 +25,23 @@ namespace callui { using namespace ucl; HeldCall::HeldCall(CallManagerWRef cm, cm_call_data_h callData): - m_cm(cm) + m_cm(std::move(cm)) { } HeldCallSRef HeldCall::newInstance(CallManagerWRef cm, cm_call_data_h callData) { if (!cm) { - LOG_RETURN_VALUE(RES_FAIL, {}, "cm is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "cm is NULL"); } if (!callData) { - LOG_RETURN_VALUE(RES_FAIL, {}, "callData is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "callData is NULL"); } - auto result = makeShared(cm, callData); - FAIL_RETURN_VALUE(result->prepare(callData), {}, "result->prepare() failed!"); + auto result = makeShared(std::move(cm), callData); + FAIL_RETURN_VALUE(result->prepare(callData), {}, + "result->prepare() failed!"); return result; } @@ -54,7 +55,8 @@ namespace callui { callData, cm->getContactInfoProvider()); if (!m_callInfo) { - LOG_RETURN_VALUE(RES_FAIL, RES_FAIL, "CallInfo::newInstance() failed!"); + LOG_RETURN_VALUE(RES_FAIL, RES_FAIL, + "CallInfo::newInstance() failed!"); } return RES_OK; } diff --git a/call-ui/model/impl/HeldCall.h b/call-ui/model/impl/HeldCall.h index f03cb85..fa56e1d 100644 --- a/call-ui/model/impl/HeldCall.h +++ b/call-ui/model/impl/HeldCall.h @@ -87,7 +87,8 @@ namespace callui { ucl::Result prepare(cm_call_data_h callData); private: - CallManagerWRef m_cm; + const CallManagerWRef m_cm; + CallInfoSRef m_callInfo; friend class ucl::ReffedObj; diff --git a/call-ui/model/impl/IIndicatorStateSource.h b/call-ui/model/impl/IIndicatorStateSource.h index 3869db8..a73ab27 100644 --- a/call-ui/model/impl/IIndicatorStateSource.h +++ b/call-ui/model/impl/IIndicatorStateSource.h @@ -40,9 +40,9 @@ namespace callui { /** * @brief Sets state change handler - * @param[in] handler Handler to be set + * @param[in] handler Handler to set */ - virtual void setStateChangeHandler(const NotiHandler &handler) = 0; + virtual void setStateChangeHandler(NotiHandler handler) = 0; protected: ~IIndicatorStateSource() = default; diff --git a/call-ui/model/impl/IncomingCall.cpp b/call-ui/model/impl/IncomingCall.cpp index 4880988..332dab7 100644 --- a/call-ui/model/impl/IncomingCall.cpp +++ b/call-ui/model/impl/IncomingCall.cpp @@ -26,22 +26,24 @@ namespace callui { using namespace ucl; IncomingCall::IncomingCall(CallManagerWRef cm, cm_call_data_h callData): - m_cm(cm) + m_cm(std::move(cm)) { } - IncomingCallSRef IncomingCall::newInstance(CallManagerWRef cm, cm_call_data_h callData) + IncomingCallSRef IncomingCall::newInstance(CallManagerWRef cm, + cm_call_data_h callData) { if (!cm) { - LOG_RETURN_VALUE(RES_FAIL, {}, "cm is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "cm is NULL"); } if (!callData) { - LOG_RETURN_VALUE(RES_FAIL, {}, "callData is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "callData is NULL"); } - auto result = makeShared(cm, callData); - FAIL_RETURN_VALUE(result->prepare(callData), {}, "result->prepare() failed!"); + auto result = makeShared(std::move(cm), callData); + FAIL_RETURN_VALUE(result->prepare(callData), {}, + "result->prepare() failed!"); return result; } @@ -55,7 +57,8 @@ namespace callui { callData, cm->getContactInfoProvider()); if (!m_callInfo) { - LOG_RETURN_VALUE(RES_FAIL, RES_FAIL, "CallInfo::newInstance() failed!"); + LOG_RETURN_VALUE(RES_FAIL, RES_FAIL, + "CallInfo::newInstance() failed!"); } return RES_OK; @@ -81,7 +84,8 @@ namespace callui { if (!cm) { LOG_RETURN(RES_FAIL, "Call Manager is NULL"); } - return convertCMResult(cm_answer_call(cm->getCallClient(), convertCUICallAnswerType(type))); + return convertCMResult(cm_answer_call(cm->getCallClient(), + convertCUICallAnswerType(type))); } Result IncomingCall::reject() diff --git a/call-ui/model/impl/IncomingCall.h b/call-ui/model/impl/IncomingCall.h index 839d737..9f553df 100644 --- a/call-ui/model/impl/IncomingCall.h +++ b/call-ui/model/impl/IncomingCall.h @@ -85,7 +85,8 @@ namespace callui { ucl::Result prepare(cm_call_data_h callData); private: - CallManagerWRef m_cm; + const CallManagerWRef m_cm; + CallInfoSRef m_callInfo; friend class ucl::ReffedObj; diff --git a/call-ui/model/impl/IndicatorStateProvider.cpp b/call-ui/model/impl/IndicatorStateProvider.cpp index a23f8e7..1d7b275 100644 --- a/call-ui/model/impl/IndicatorStateProvider.cpp +++ b/call-ui/model/impl/IndicatorStateProvider.cpp @@ -22,7 +22,7 @@ namespace callui { using namespace ucl; - class IndicatorStateProvider::SourceHandler : + class IndicatorStateProvider::SourceHandler final : public RefCountAware { public: SourceHandler(IRefCountObj &rc, @@ -35,8 +35,7 @@ namespace callui { m_source(source) { m_source->setStateChangeHandler( - WEAK_DELEGATE(SourceHandler::onStateChanged, - asWeak(*this))); + WEAK_DELEGATE_THIS(onStateChanged)); } IndicatorState getState() const diff --git a/call-ui/model/impl/IndicatorStateProvider.h b/call-ui/model/impl/IndicatorStateProvider.h index b2b35b5..448cf44 100644 --- a/call-ui/model/impl/IndicatorStateProvider.h +++ b/call-ui/model/impl/IndicatorStateProvider.h @@ -31,7 +31,7 @@ namespace callui { * @brief Implementation of IIndicatorStateProvider interface * @see IIncomingCall */ - class IndicatorStateProvider final: public IIndicatorStateProvider { + class IndicatorStateProvider final : public IIndicatorStateProvider { public: /** diff --git a/call-ui/model/impl/RejectMsg.cpp b/call-ui/model/impl/RejectMsg.cpp index cee4d95..301eab1 100644 --- a/call-ui/model/impl/RejectMsg.cpp +++ b/call-ui/model/impl/RejectMsg.cpp @@ -25,15 +25,19 @@ namespace callui { using namespace ucl; - RejectMsg::RejectMsg(MsgClientWRef client, const TString &string): - m_msgClient(client), - m_msg(string) + RejectMsg::RejectMsg(MsgClientWRef client, TString string): + m_msgClient(std::move(client)), + m_msg(std::move(string)) { } - RejectMsgSRef RejectMsg::newInstance(MsgClientWRef client, const TString &string) + RejectMsgSRef RejectMsg::newInstance(MsgClientWRef client, TString string) { - return makeShared(client, string); + if (!client) { + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "client is NULL"); + } + + return makeShared(std::move(client), std::move(string)); } std::string RejectMsg::getText() const @@ -66,18 +70,28 @@ namespace callui { msg_set_bool_value(sendOpt, MSG_SEND_OPT_SETTING_BOOL, false); // Set message body - if (msg_set_str_value(msgInfo, MSG_MESSAGE_SMS_DATA_STR, msgText, strlen(msgText)) != MSG_SUCCESS) { + if (msg_set_str_value(msgInfo, + MSG_MESSAGE_SMS_DATA_STR, + msgText, + strlen(msgText)) != MSG_SUCCESS) { ELOG("msg_set_str_value() failed!"); } else { // Create address list msg_struct_list_s *addrList = nullptr; - msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addrList); + msg_get_list_handle(msgInfo, + MSG_MESSAGE_ADDR_LIST_STRUCT, + (void **)&addrList); msg_struct_t addrInfo = addrList->msg_struct_info[0]; const char *number = phoneNumber.c_str(); // Set message address - msg_set_int_value(addrInfo, MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, MSG_RECIPIENTS_TYPE_TO); - msg_set_str_value(addrInfo, MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, number, strlen(number)); + msg_set_int_value(addrInfo, + MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, + MSG_RECIPIENTS_TYPE_TO); + msg_set_str_value(addrInfo, + MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, + number, + strlen(number)); addrList->nCount = 1; // Set message struct to Request diff --git a/call-ui/model/impl/RejectMsg.h b/call-ui/model/impl/RejectMsg.h index 617f5b1..9fff9a7 100644 --- a/call-ui/model/impl/RejectMsg.h +++ b/call-ui/model/impl/RejectMsg.h @@ -33,7 +33,7 @@ namespace callui { * @brief Implementation of IRejectMsg interface * @see IRejectMsg */ - class RejectMsg : public IRejectMsg { + class RejectMsg final : public IRejectMsg { public: /** @@ -44,7 +44,7 @@ namespace callui { * or NULL otherwise */ static RejectMsgSRef newInstance(MsgClientWRef client, - const ucl::TString &string); + ucl::TString string); /** * @brief Sends reject message @@ -62,14 +62,14 @@ namespace callui { std::string getText() const override final; private: - RejectMsg(MsgClientWRef client, const ucl::TString &string); + RejectMsg(MsgClientWRef client, ucl::TString string); ~RejectMsg() = default; ucl::Result prepare(); private: - MsgClientWRef m_msgClient; - ucl::TString m_msg; + const MsgClientWRef m_msgClient; + const ucl::TString m_msg; friend class ucl::ReffedObj; }; diff --git a/call-ui/model/impl/RejectMsgProvider.h b/call-ui/model/impl/RejectMsgProvider.h index 0747a42..881bae8 100644 --- a/call-ui/model/impl/RejectMsgProvider.h +++ b/call-ui/model/impl/RejectMsgProvider.h @@ -31,7 +31,7 @@ namespace callui { * @brief Implementation of IRejectMsgProvider interface * @see IRejectMsgProvider */ - class RejectMsgProvider : public IRejectMsgProvider { + class RejectMsgProvider final : public IRejectMsgProvider { public: /** diff --git a/call-ui/model/impl/RssiStateSource.cpp b/call-ui/model/impl/RssiStateSource.cpp index 71ce4d1..fe80040 100644 --- a/call-ui/model/impl/RssiStateSource.cpp +++ b/call-ui/model/impl/RssiStateSource.cpp @@ -147,7 +147,9 @@ namespace callui { } if (needNotify && m_handler) { - m_handler(); + if (const auto handler = m_handler.lock()) { + handler(); + } } } @@ -205,9 +207,9 @@ namespace callui { return {m_bits.value}; } - void RssiStateSource::setStateChangeHandler(const NotiHandler &handler) + void RssiStateSource::setStateChangeHandler(NotiHandler handler) { - m_handler = handler; + m_handler = std::move(handler); } RssiState getRssiState(IndicatorState state) diff --git a/call-ui/model/impl/RssiStateSource.h b/call-ui/model/impl/RssiStateSource.h index 10761a8..74d0ba2 100644 --- a/call-ui/model/impl/RssiStateSource.h +++ b/call-ui/model/impl/RssiStateSource.h @@ -52,7 +52,7 @@ namespace callui { /** * @see IIndicatorStateSource::setStateChangeHandler() */ - virtual void setStateChangeHandler(const NotiHandler &handler) override final; + virtual void setStateChangeHandler(NotiHandler handler) override final; private: RssiStateSource(); diff --git a/call-ui/model/impl/SimSlotStateSource.cpp b/call-ui/model/impl/SimSlotStateSource.cpp index 7cf7a73..c92bb6f 100644 --- a/call-ui/model/impl/SimSlotStateSource.cpp +++ b/call-ui/model/impl/SimSlotStateSource.cpp @@ -63,8 +63,10 @@ namespace callui { needUpdate = true; } - if (needUpdate && m_handler) { - m_handler(); + if (needUpdate) { + if (const auto handler = m_handler.lock()) { + handler(); + } } } @@ -73,9 +75,9 @@ namespace callui { return {m_bits.value}; } - void SimSlotStateSource::setStateChangeHandler(const NotiHandler &handler) + void SimSlotStateSource::setStateChangeHandler(NotiHandler handler) { - m_handler = handler; + m_handler = std::move(handler); } SimSlot getSimSlotType(IndicatorState state) diff --git a/call-ui/model/impl/SimSlotStateSource.h b/call-ui/model/impl/SimSlotStateSource.h index bb3fa97..76f8426 100644 --- a/call-ui/model/impl/SimSlotStateSource.h +++ b/call-ui/model/impl/SimSlotStateSource.h @@ -58,8 +58,7 @@ namespace callui { /** * @see IIndicatorStateSource::setStateChangeHandler() */ - virtual void setStateChangeHandler( - const NotiHandler &handler) override final; + virtual void setStateChangeHandler(NotiHandler handler) override final; private: SimSlotStateSource(SimSlot slot, bool isForwarded); diff --git a/call-ui/model/impl/SoundManager.cpp b/call-ui/model/impl/SoundManager.cpp index 8b39ac9..17c23cc 100644 --- a/call-ui/model/impl/SoundManager.cpp +++ b/call-ui/model/impl/SoundManager.cpp @@ -22,10 +22,10 @@ namespace callui { using namespace ucl; - SoundManager::SoundManager(IRefCountObj &rc, const CallClientSRef &client): - RefCountAware(&rc), - m_client(client), - m_deviceVolumeCbId(-1) + SoundManager::SoundManager(IRefCountObj &rc, CallClientSRef client): + RefCountAware(&rc), + m_client(std::move(client)), + m_deviceVolumeCbId(-1) { } @@ -38,9 +38,13 @@ namespace callui { cm_unset_mute_status_cb(*m_client); } - SoundManagerSRef SoundManager::newInstance(const CallClientSRef &client) + SoundManagerSRef SoundManager::newInstance(CallClientSRef client) { - auto result = makeShared(client); + if (!client) { + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "client is NULL"); + } + + auto result = makeShared(std::move(client)); FAIL_RETURN_VALUE(result->prepare(), {}, "result->prepare() failed!"); return result; } @@ -96,12 +100,10 @@ namespace callui { if (isBTSupported()) { m_btManager->setVolumeStateHandler( - WEAK_DELEGATE(SoundManager::onBTHeadsetVolumeChanged, - asWeak(*this))); + WEAK_DELEGATE_THIS(onBTHeadsetVolumeChanged)); m_btManager->setHeadsetConnectionChangeHandler( - WEAK_DELEGATE(SoundManager::onHeadsetConnectionChanged, - asWeak(*this))); + WEAK_DELEGATE_THIS(onHeadsetConnectionChanged)); } return RES_OK; @@ -177,7 +179,7 @@ namespace callui { m_audioStateEvent += std::move(handler); } - void SoundManager::delAudioStateHandler(const NotiHandler &handler) + void SoundManager::delAudioStateHandler(NotiHandler::CDRef handler) { m_audioStateEvent -= handler; } @@ -187,7 +189,7 @@ namespace callui { m_muteStateEvent += std::move(handler); } - void SoundManager::delMuteStateHandler(const NotiHandler &handler) + void SoundManager::delMuteStateHandler(NotiHandler::CDRef handler) { m_muteStateEvent -= handler; } @@ -197,7 +199,7 @@ namespace callui { m_volumeLevelEvent += std::move(handler); } - void SoundManager::delVolumeStateHandler(const NotiHandler &handler) + void SoundManager::delVolumeStateHandler(NotiHandler::CDRef handler) { m_volumeLevelEvent -= handler; } @@ -277,7 +279,7 @@ namespace callui { } void SoundManager::delBTHeadsetConnectionChangeHandler( - const NotiHandler &handler) + NotiHandler::CDRef handler) { m_btVoiceDeviceConnEvent -= handler; } diff --git a/call-ui/model/impl/SoundManager.h b/call-ui/model/impl/SoundManager.h index 0f3223b..70e7167 100644 --- a/call-ui/model/impl/SoundManager.h +++ b/call-ui/model/impl/SoundManager.h @@ -46,7 +46,7 @@ namespace callui { * @return Shared reference to SoundManager on success * or NULL otherwise */ - static SoundManagerSRef newInstance(const CallClientSRef &client); + static SoundManagerSRef newInstance(CallClientSRef client); // ISoundManager // @@ -96,7 +96,7 @@ namespace callui { * @see ISoundManager::delAudioStateHandler() */ virtual void delAudioStateHandler( - const NotiHandler &handler) override final; + NotiHandler::CDRef handler) override final; /** * @see ISoundManager::addMuteStateHandler() @@ -108,7 +108,7 @@ namespace callui { * @see ISoundManager::delMuteStateHandler() */ virtual void delMuteStateHandler( - const NotiHandler &handler) override final; + NotiHandler::CDRef handler) override final; /** * @see ISoundManager::addVolumeStateHandler() @@ -120,7 +120,7 @@ namespace callui { * @see ISoundManager::delVolumeStateHandler() */ virtual void delVolumeStateHandler( - const NotiHandler &handler) override final; + NotiHandler::CDRef handler) override final; /** * @see ISoundManager::getMaxVolume() @@ -157,10 +157,10 @@ namespace callui { * @see ISoundManager::delBTHeadsetConnectionChangeHandler() */ virtual void delBTHeadsetConnectionChangeHandler( - const NotiHandler &handler) override final; + NotiHandler::CDRef handler) override final; private: - SoundManager(ucl::IRefCountObj &rc, const CallClientSRef &client); + SoundManager(ucl::IRefCountObj &rc, CallClientSRef client); ~SoundManager(); ucl::Result prepare(); @@ -174,7 +174,8 @@ namespace callui { void onGearVolumeChanged(sound_type_e type, unsigned int volume); private: - CallClientSRef m_client; + const CallClientSRef m_client; + BluetoothManagerSRef m_btManager; ucl::Event m_audioStateEvent; ucl::Event m_muteStateEvent; diff --git a/call-ui/presenters/Instance.cpp b/call-ui/presenters/Instance.cpp index d6d9ba2..f976f39 100644 --- a/call-ui/presenters/Instance.cpp +++ b/call-ui/presenters/Instance.cpp @@ -108,8 +108,7 @@ namespace callui { FAIL_RETURN(utils::createCircleSurface(*m_navi), "createCircleSurface() failed!"); - m_sysEventProvider.addEventHandler( - WEAK_DELEGATE(Instance::onSysEvent, asWeak(*this))); + m_sysEventProvider.addEventHandler(WEAK_DELEGATE_THIS(onSysEvent)); return RES_OK; } @@ -134,8 +133,7 @@ namespace callui { auto page = MainPage::Builder(). setNaviframe(m_navi). setCallUI(m_call). - build(WEAK_DELEGATE(Instance::onPageExitRequest, - asWeak(*this))); + build(WEAK_DELEGATE_THIS(onPageExitRequest)); if (!page) { ELOG("Create page failed! Exit application"); m_context->exitApp(); @@ -210,8 +208,7 @@ namespace callui { m_powerKeyHoldTimout = Timeout::create( impl::POWER_KEY_HOLD_TIMEOUT, - WEAK_DELEGATE(Instance::onPowerKeyHoldTimeout, - asWeak(*this))); + WEAK_DELEGATE_THIS(onPowerKeyHoldTimeout)); return ECORE_CALLBACK_DONE; } diff --git a/call-ui/presenters/base/Page.cpp b/call-ui/presenters/base/Page.cpp index 4286fda..1dd7415 100644 --- a/call-ui/presenters/base/Page.cpp +++ b/call-ui/presenters/base/Page.cpp @@ -55,13 +55,13 @@ namespace callui { } m_navi->addEventHandler(NAVI_TRANSITION_STARTED, - WEAK_DELEGATE(Page::onTransitionStarted, asWeak(*this))); + WEAK_DELEGATE_THIS(onTransitionStarted)); m_navi->addEventHandler(NAVI_TRANSITION_FINISHED, - WEAK_DELEGATE(Page::onTransitionFinished, asWeak(*this))); + WEAK_DELEGATE_THIS(onTransitionFinished)); m_navi->addEventHandler(impl::TOP_PAGE_CHANGED, - WEAK_DELEGATE(Page::onTopPageChanged, asWeak(*this))); + WEAK_DELEGATE_THIS(onTopPageChanged)); eext_object_event_callback_add(content, EEXT_CALLBACK_BACK, CALLBACK_A(Page::onHWBackKey), this); @@ -152,8 +152,8 @@ namespace callui { void Page::requestExit() { - if (m_onExitRequest) { - m_onExitRequest(*this); + if (const auto handler = m_onExitRequest.lock()) { + handler(*this); } else { WLOG("m_onExitRequest is NULL"); exit(); diff --git a/call-ui/presenters/dialogs/AcceptDialog.cpp b/call-ui/presenters/dialogs/AcceptDialog.cpp index 704a9b5..9c01674 100644 --- a/call-ui/presenters/dialogs/AcceptDialog.cpp +++ b/call-ui/presenters/dialogs/AcceptDialog.cpp @@ -73,9 +73,9 @@ namespace callui { AcceptDialog::AcceptDialog(IRefCountObj &rc, const EventHandler &handler): - GuiPresenter(rc), - m_handler(handler), - m_isDismissed(false) + GuiPresenter(rc), + m_handler(handler), + m_isDismissed(false) { } @@ -116,8 +116,8 @@ namespace callui { m_popup->setWeight(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); show(*m_popup); - m_popup->addEventHandler(impl::POPUP_DISMISSED, WEAK_DELEGATE( - AcceptDialog::onPopupDismissed, asWeak(*this))); + m_popup->addEventHandler(impl::POPUP_DISMISSED, + WEAK_DELEGATE_THIS(onPopupDismissed)); eext_object_event_callback_add(*m_popup, EEXT_CALLBACK_BACK, CALLBACK_A(AcceptDialog::onPopupHWBackKey), this); @@ -241,14 +241,14 @@ namespace callui { void AcceptDialog::setLanguageChangeCallback() { - getWindow().addEventHandler(WIN_LANGUAGE_CHANGED, WEAK_DELEGATE( - AcceptDialog::onLanguageChanged, asWeak(*this))); + getWindow().addEventHandler(WIN_LANGUAGE_CHANGED, + WEAK_DELEGATE_THIS(onLanguageChanged)); } void AcceptDialog::unsetLanguageChangeCallback() { - getWindow().delEventHandler(WIN_LANGUAGE_CHANGED, WEAK_DELEGATE( - AcceptDialog::onLanguageChanged, asWeak(*this))); + getWindow().delEventHandler(WIN_LANGUAGE_CHANGED, + DELEGATE_THIS(onLanguageChanged)); } void AcceptDialog::onLanguageChanged(Widget &widget, void *eventInfo) @@ -268,11 +268,11 @@ namespace callui { bool AcceptDialog::dispatchEvent(Event event) { - if (!m_handler) { - WLOG("Handler was destroyed!"); - return true; + if (const auto handler = m_handler.lock()) { + return handler(*this, event); } - return m_handler(*this, event); + WLOG("Handler was destroyed!"); + return true; } void AcceptDialog::onPopupDismissed(ucl::Widget &widget, void *eventInfo) diff --git a/call-ui/presenters/dialogs/AcceptDialog.h b/call-ui/presenters/dialogs/AcceptDialog.h index dacf471..fae6945 100644 --- a/call-ui/presenters/dialogs/AcceptDialog.h +++ b/call-ui/presenters/dialogs/AcceptDialog.h @@ -122,9 +122,9 @@ namespace callui { void onGenlistItemClickedCb(Evas_Object *obj, void *eventInfo); private: + const EventHandler m_handler; ucl::StyledWidgetSRef m_popup; ucl::StyledWidgetSRef m_genlist; - EventHandler m_handler; AcceptDialogSRef m_selfRef; bool m_isDismissed; diff --git a/call-ui/presenters/misc/AcceptRejectPresenter.cpp b/call-ui/presenters/misc/AcceptRejectPresenter.cpp index 0dde4a0..8781385 100644 --- a/call-ui/presenters/misc/AcceptRejectPresenter.cpp +++ b/call-ui/presenters/misc/AcceptRejectPresenter.cpp @@ -30,10 +30,9 @@ namespace callui { } AcceptRejectPresenter::Builder & - AcceptRejectPresenter::Builder::setIncomingCall( - const IIncomingCallSRef &call) + AcceptRejectPresenter::Builder::setIncomingCall(IIncomingCallSRef call) { - m_call = call; + m_call = std::move(call); return *this; } @@ -45,18 +44,16 @@ namespace callui { } AcceptRejectPresenter::Builder & - AcceptRejectPresenter::Builder::setSoundManager( - const ISoundManagerSRef &sm) + AcceptRejectPresenter::Builder::setSoundManager(ISoundManagerSRef sm) { - m_sm = sm; + m_sm = std::move(sm); return *this; } AcceptRejectPresenter::Builder & - AcceptRejectPresenter::Builder::setParentWidget( - const ElmWidgetSRef &parentWidget) + AcceptRejectPresenter::Builder::setParentWidget(ElmWidgetSRef parentWidget) { - m_parentWidget = parentWidget; + m_parentWidget = std::move(parentWidget); return *this; } @@ -78,13 +75,13 @@ namespace callui { // AcceptRejectPresenter // AcceptRejectPresenter::AcceptRejectPresenter(IRefCountObj &rc, - const IIncomingCallSRef &call, + IIncomingCallSRef call, CallMask calls, - const ISoundManagerSRef &sm): - GuiPresenter(rc), - m_call(call), - m_callMask(calls), - m_sm(sm) + ISoundManagerSRef sm): + GuiPresenter(rc), + m_call(std::move(call)), + m_sm(std::move(sm)), + m_callMask(calls) { } @@ -99,9 +96,7 @@ namespace callui { } m_sm->delBTHeadsetConnectionChangeHandler( - WEAK_DELEGATE(AcceptRejectPresenter:: - onBTHeadsetConnectionChanged, - asWeak(*this))); + DELEGATE_THIS(onBTHeadsetConnectionChanged)); } Result AcceptRejectPresenter::prepare(GuiPresenter &parent, @@ -111,9 +106,7 @@ namespace callui { "Presenter::prepare() failed!"); m_sm->addBTHeadsetConnectionChangeHandler( - WEAK_DELEGATE(AcceptRejectPresenter:: - onBTHeadsetConnectionChanged, - asWeak(*this))); + WEAK_DELEGATE_THIS(onBTHeadsetConnectionChanged)); FAIL_RETURN(createWidget(parentWidget), "createWidget() failed!"); @@ -145,12 +138,8 @@ namespace callui { Result AcceptRejectPresenter::createWidget(ElmWidget &parent) { m_widget = AcceptRejectWidget::Builder(). - setAcceptEventHandler(WEAK_DELEGATE( - AcceptRejectPresenter::onAcceptEvent, - asWeak(*this))). - setRejectEventHandler(WEAK_DELEGATE( - AcceptRejectPresenter::onRejectEvent, - asWeak(*this))). + setAcceptEventHandler(WEAK_DELEGATE_THIS(onAcceptEvent)). + setRejectEventHandler(WEAK_DELEGATE_THIS(onRejectEvent)). setAcceptBtnType(m_sm->isBTHeadsetConnected() ? AcceptButtonType::BT_HEADSET : AcceptButtonType::SIMPLE). @@ -167,8 +156,7 @@ namespace callui { Result AcceptRejectPresenter::createMotionSensorPresenter() { m_motionPrs = MotionSensorPresenter::Builder(). - build(WEAK_DELEGATE(AcceptRejectPresenter::onMotionEvent, - asWeak(*this))); + build(WEAK_DELEGATE_THIS(onMotionEvent)); if (!m_motionPrs) { LOG_RETURN(RES_FAIL, @@ -228,9 +216,7 @@ namespace callui { { if (!m_popup) { m_popup = AcceptDialog::Builder(). - setHandler(WEAK_DELEGATE( - AcceptRejectPresenter::onAcceptPopupEvent, - asWeak(*this))). + setHandler(WEAK_DELEGATE_THIS(onAcceptPopupEvent)). build(*m_widget); } else { WLOG("Popup already shown!"); diff --git a/call-ui/presenters/misc/AcceptRejectPresenter.h b/call-ui/presenters/misc/AcceptRejectPresenter.h index 1bb0b8c..d5316a5 100644 --- a/call-ui/presenters/misc/AcceptRejectPresenter.h +++ b/call-ui/presenters/misc/AcceptRejectPresenter.h @@ -54,14 +54,14 @@ namespace callui { * @param[in] call Incoming Call instance * @return Reference to builder */ - Builder &setIncomingCall(const IIncomingCallSRef &call); + Builder &setIncomingCall(IIncomingCallSRef call); /** * @brief Sets Sound Manager instance * @param[in] sm Sound Manager instance * @return Reference to builder */ - Builder &setSoundManager(const ISoundManagerSRef &sm); + Builder &setSoundManager(ISoundManagerSRef sm); /** * @brief Sets available calls flag @@ -75,7 +75,7 @@ namespace callui { * @param[in] parentWidget Parent widget * @return Reference to builder */ - Builder &setParentWidget(const ucl::ElmWidgetSRef &parentWidget); + Builder &setParentWidget(ucl::ElmWidgetSRef parentWidget); /** * @brief Creates new instance of AcceptRejectPresenter @@ -120,9 +120,9 @@ namespace callui { private: AcceptRejectPresenter(ucl::IRefCountObj &rc, - const IIncomingCallSRef &call, + IIncomingCallSRef call, CallMask calls, - const ISoundManagerSRef &sm); + ISoundManagerSRef sm); ~AcceptRejectPresenter(); ucl::Result prepare(ucl::GuiPresenter &parent, @@ -149,13 +149,12 @@ namespace callui { virtual void onDeactivate() final override; private: + const IIncomingCallSRef m_call; + const ISoundManagerSRef m_sm; AcceptRejectWidgetSRef m_widget; AcceptDialogWRef m_popup; MotionSensorPresenterSRef m_motionPrs; - - IIncomingCallSRef m_call; CallMask m_callMask; - ISoundManagerSRef m_sm; friend class ucl::ReffedObj; }; diff --git a/call-ui/presenters/misc/AccessoryPresenter.cpp b/call-ui/presenters/misc/AccessoryPresenter.cpp index 29c2bff..57e85cd 100644 --- a/call-ui/presenters/misc/AccessoryPresenter.cpp +++ b/call-ui/presenters/misc/AccessoryPresenter.cpp @@ -102,31 +102,30 @@ namespace callui { } AccessoryPresenter::Builder & - AccessoryPresenter::Builder::setSoundManager(const ISoundManagerSRef &sm) + AccessoryPresenter::Builder::setSoundManager(ISoundManagerSRef sm) { - m_sm = sm; + m_sm = std::move(sm); return *this; } AccessoryPresenter::Builder & - AccessoryPresenter::Builder::setCallManager(const ICallManagerSRef &cm) + AccessoryPresenter::Builder::setCallManager(ICallManagerSRef cm) { - m_cm = cm; + m_cm = std::move(cm); return *this; } AccessoryPresenter::Builder & - AccessoryPresenter::Builder::setRequestExitHandler(const NotiHandler &handler) + AccessoryPresenter::Builder::setRequestExitHandler(NotiHandler handler) { - m_exitHandler = handler; + m_exitHandler = std::move(handler); return *this; } AccessoryPresenter::Builder & - AccessoryPresenter::Builder::setParentWidget( - const ElmWidgetSRef &parentWidget) + AccessoryPresenter::Builder::setParentWidget(ElmWidgetSRef parentWidget) { - m_parentWidget = parentWidget; + m_parentWidget = std::move(parentWidget); return *this; } @@ -145,15 +144,15 @@ namespace callui { } AccessoryPresenter::AccessoryPresenter(IRefCountObj &rc, - const ISoundManagerSRef &sm, - const NotiHandler &handler): - GuiPresenter(rc), - m_sm(sm), - m_vcTimer(nullptr), - m_audioState(m_sm->getAudioState()), - m_mode(CallMode::UNDEFINED), - m_exitHandler(handler), - m_isVcShowOnRotaryEvent(false) + ISoundManagerSRef sm, + NotiHandler handler): + GuiPresenter(rc), + m_sm(std::move(sm)), + m_exitHandler(std::move(handler)), + m_vcTimer(nullptr), + m_audioState(m_sm->getAudioState()), + m_mode(CallMode::UNDEFINED), + m_isVcShowOnRotaryEvent(false) { } @@ -327,9 +326,7 @@ namespace callui { m_vc = VolumeControl::Builder(). setInfoText(STR_VOLUME). setMaxValue(m_sm->getMaxVolume()). - setEventHandler(WEAK_DELEGATE( - AccessoryPresenter::onVolumeControlEventCb, - asWeak(*this))). + setEventHandler(WEAK_DELEGATE_THIS(onVolumeControlEventCb)). build(*m_widget); if (!m_vc) { LOG_RETURN(RES_FAIL, "VolumeControl::build() failed"); @@ -361,8 +358,7 @@ namespace callui { m_volumeBtn = makeShared(eo); m_volumeBtn->setStyle(impl::STYLE_BTN_VOLUME); m_volumeBtn->addEventHandler(BTN_CLICKED, - WEAK_DELEGATE(AccessoryPresenter::onVolumeBtnClicked, - asWeak(*this))); + WEAK_DELEGATE_THIS(onVolumeBtnClicked)); show(*m_volumeBtn); // Screen Reader @@ -381,8 +377,7 @@ namespace callui { m_muteBtn = makeShared(eo); m_muteBtn->setStyle(impl::STYLE_BTN_MUTE); m_muteBtn->addEventHandler(BTN_CLICKED, - WEAK_DELEGATE(AccessoryPresenter::onMuteBtnClicked, - asWeak(*this))); + WEAK_DELEGATE_THIS(onMuteBtnClicked)); show(*m_muteBtn); @@ -402,8 +397,7 @@ namespace callui { m_bluetoothBtn = makeShared(eo); m_bluetoothBtn->setStyle(impl::STYLE_BTN_BT); m_bluetoothBtn->addEventHandler(BTN_CLICKED, - WEAK_DELEGATE(AccessoryPresenter::onBluetoothBtnClicked, - asWeak(*this))); + WEAK_DELEGATE_THIS(onBluetoothBtnClicked)); show(*m_bluetoothBtn); @@ -437,8 +431,7 @@ namespace callui { m_addContactBtn = makeShared(eo); m_addContactBtn->setStyle(impl::STYLE_BTN_ADD_CONTACT); m_addContactBtn->addEventHandler(BTN_CLICKED, - WEAK_DELEGATE(AccessoryPresenter::onAddContactBtnClicked, - asWeak(*this))); + WEAK_DELEGATE_THIS(onAddContactBtnClicked)); show(*m_addContactBtn); // Screen Reader @@ -499,24 +492,19 @@ namespace callui { RESLOG(res, "launchAddContact() failed"); } - if (m_exitHandler) { - m_exitHandler(); + if (const auto handler = m_exitHandler.lock()) { + handler(); } } void AccessoryPresenter::registerCallbacks() { - addRotaryEventHandler(CALLBACK_A( - AccessoryPresenter::onRotaryEvent), this); - - m_sm->addAudioStateHandler(WEAK_DELEGATE( - AccessoryPresenter::onAudioStateChanged, asWeak(*this))); - - m_sm->addVolumeStateHandler(WEAK_DELEGATE( - AccessoryPresenter::onVolumeLevelChanged, asWeak(*this))); + addRotaryEventHandler( + CALLBACK_A(AccessoryPresenter::onRotaryEvent), this); - m_sm->addMuteStateHandler(WEAK_DELEGATE( - AccessoryPresenter::onMuteStateChanged, asWeak(*this))); + m_sm->addAudioStateHandler(WEAK_DELEGATE_THIS(onAudioStateChanged)); + m_sm->addVolumeStateHandler(WEAK_DELEGATE_THIS(onVolumeLevelChanged)); + m_sm->addMuteStateHandler(WEAK_DELEGATE_THIS(onMuteStateChanged)); } void AccessoryPresenter::unregisterCallbacks() @@ -524,14 +512,9 @@ namespace callui { delRotaryEventHandler( CALLBACK_A(AccessoryPresenter::onRotaryEvent), this); - m_sm->delAudioStateHandler(WEAK_DELEGATE( - AccessoryPresenter::onAudioStateChanged, asWeak(*this))); - - m_sm->delVolumeStateHandler(WEAK_DELEGATE( - AccessoryPresenter::onVolumeLevelChanged, asWeak(*this))); - - m_sm->delMuteStateHandler(WEAK_DELEGATE( - AccessoryPresenter::onMuteStateChanged, asWeak(*this))); + m_sm->delAudioStateHandler(DELEGATE_THIS(onAudioStateChanged)); + m_sm->delVolumeStateHandler(DELEGATE_THIS(onVolumeLevelChanged)); + m_sm->delMuteStateHandler(DELEGATE_THIS(onMuteStateChanged)); } Eina_Bool AccessoryPresenter::onVCTimerCb() @@ -796,17 +779,13 @@ namespace callui { auto decrBtn = m_vc->getDecreaseBtn(); if (decrBtn) { decrBtn->addEventHandler(ATSPI_HIGHLIGHTED, - WEAK_DELEGATE(AccessoryPresenter:: - onVolumeControlScreenReaderReadStart, - asWeak(*this))); + WEAK_DELEGATE_THIS(onVolumeControlScreenReaderReadStart)); } auto incrBtn = m_vc->getIncreaseBtn(); if (incrBtn) { incrBtn->addEventHandler(ATSPI_HIGHLIGHTED, - WEAK_DELEGATE(AccessoryPresenter:: - onVolumeControlScreenReaderReadStart, - asWeak(*this))); + WEAK_DELEGATE_THIS(onVolumeControlScreenReaderReadStart)); } } diff --git a/call-ui/presenters/misc/AccessoryPresenter.h b/call-ui/presenters/misc/AccessoryPresenter.h index c7de5c9..a31ad70 100644 --- a/call-ui/presenters/misc/AccessoryPresenter.h +++ b/call-ui/presenters/misc/AccessoryPresenter.h @@ -58,28 +58,28 @@ namespace callui { * @param[in] sm Sound Manager instance * @return Reference to builder */ - Builder &setSoundManager(const ISoundManagerSRef &sm); + Builder &setSoundManager(ISoundManagerSRef sm); /** * @brief Sets Call Manager instance * @param[in] cm Call Manager instance * @return Reference to builder */ - Builder &setCallManager(const ICallManagerSRef &cm); + Builder &setCallManager(ICallManagerSRef cm); /** * @brief Sets request exit application handler * @param[in] handler Event Request exit handler * @return Reference to builder */ - Builder &setRequestExitHandler(const NotiHandler &handler); + Builder &setRequestExitHandler(NotiHandler handler); /** * @brief Sets parent widget for UI components creation * @param[in] parentWidget Parent widget * @return Reference to builder */ - Builder &setParentWidget(const ucl::ElmWidgetSRef &parentWidget); + Builder &setParentWidget(ucl::ElmWidgetSRef parentWidget); /** * @brief Creates new instance of AccessoryPresenter @@ -173,8 +173,9 @@ namespace callui { ucl::ElmWidget *getVolumeControlValueTxtAo(); private: - AccessoryPresenter(ucl::IRefCountObj &rc, const ISoundManagerSRef &sm, - const NotiHandler &handler); + AccessoryPresenter(ucl::IRefCountObj &rc, + ISoundManagerSRef sm, + NotiHandler handler); ~AccessoryPresenter(); ucl::Result prepare(ucl::GuiPresenter &parent, @@ -228,6 +229,8 @@ namespace callui { void onVolumeControlScreenReaderReadStart(ucl::Widget &widget, void *eventInfo); private: + const ISoundManagerSRef m_sm; + const NotiHandler m_exitHandler; ucl::LayoutSRef m_widget; ucl::StyledWidgetSRef m_volumeBtn; ucl::StyledWidgetSRef m_muteBtn; @@ -236,13 +239,11 @@ namespace callui { SliderSRef m_slider; VolumeControlSRef m_vc; - ISoundManagerSRef m_sm; Ecore_Timer *m_vcTimer; AudioStateType m_audioState; CallMode m_mode; std::string m_unsavedPhoneNumber; - NotiHandler m_exitHandler; bool m_isVcShowOnRotaryEvent; diff --git a/call-ui/presenters/misc/AtspiHighlightHelper.cpp b/call-ui/presenters/misc/AtspiHighlightHelper.cpp index 545d098..2d0f682 100644 --- a/call-ui/presenters/misc/AtspiHighlightHelper.cpp +++ b/call-ui/presenters/misc/AtspiHighlightHelper.cpp @@ -68,8 +68,8 @@ namespace callui { void AtspiHighlightHelper::registerWidget(ElmWidget &widget) { - widget.addEventHandler(ATSPI_ON_GESTURE, WEAK_DELEGATE( - AtspiHighlightHelper::onAtspiGesture, asWeak(*this))); + widget.addEventHandler(ATSPI_ON_GESTURE, + WEAK_DELEGATE_THIS(onAtspiGesture)); } void AtspiHighlightHelper::handleAtspiGesture( @@ -94,8 +94,8 @@ namespace callui { e.stopPropagation = true; - if (m_gestureEventHandler) { - if (m_gestureEventHandler(ao, e.gestureInfo.type)) { + if (const auto handler = m_gestureEventHandler.lock()) { + if (handler(ao, e.gestureInfo.type)) { DLOG("Prevent default handler"); e.preventDefault = true; return; @@ -115,7 +115,10 @@ namespace callui { return; } - const auto relationObj = m_relationEventHandler(ao, relation); + Elm_Interface_Atspi_Accessible *relationObj = nullptr; + if (const auto handler = m_relationEventHandler.lock()) { + relationObj = handler(ao, relation); + } if (!relationObj) { DLOG("Relation object is NULL!"); return; diff --git a/call-ui/presenters/misc/CallInfoPresenter.cpp b/call-ui/presenters/misc/CallInfoPresenter.cpp index 09598ca..bde542c 100644 --- a/call-ui/presenters/misc/CallInfoPresenter.cpp +++ b/call-ui/presenters/misc/CallInfoPresenter.cpp @@ -103,17 +103,16 @@ namespace callui { } CallInfoPresenter::Builder & - CallInfoPresenter::Builder::setCallManager(const ICallManagerSRef &cm) + CallInfoPresenter::Builder::setCallManager(ICallManagerSRef cm) { - m_cm = cm; + m_cm = std::move(cm); return *this; } CallInfoPresenter::Builder & - CallInfoPresenter::Builder::setParentWidget( - const ucl::ElmWidgetSRef &parentWidget) + CallInfoPresenter::Builder::setParentWidget(ucl::ElmWidgetSRef parentWidget) { - m_parentWidget = parentWidget; + m_parentWidget = std::move(parentWidget); return *this; } @@ -121,7 +120,8 @@ namespace callui { CallInfoPresenter::Builder::build(GuiPresenter &parent) const { if (!m_cm || !m_parentWidget) { - LOG_RETURN_VALUE(RES_FAIL, {}, "Main params are are set"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, + "Main params are are set"); } auto result = makeShared(m_cm); @@ -133,10 +133,10 @@ namespace callui { CallInfoPresenter::CallInfoPresenter(IRefCountObj &rc, const ICallManagerSRef &cm): - GuiPresenter(rc), - m_mode(getCallMode(cm)), - m_isSubTxtEnable(false), - m_needModifyCallStatus(false) + GuiPresenter(rc), + m_mode(getCallMode(cm)), + m_isSubTxtEnable(false), + m_needModifyCallStatus(false) { initCallInfos(cm); } @@ -169,14 +169,14 @@ namespace callui { void CallInfoPresenter::setLanguageChangeCallback() { - getWindow().addEventHandler(WIN_LANGUAGE_CHANGED, WEAK_DELEGATE( - CallInfoPresenter::onLanguageChanged, asWeak(*this))); + getWindow().addEventHandler(WIN_LANGUAGE_CHANGED, + WEAK_DELEGATE_THIS(onLanguageChanged)); } void CallInfoPresenter::unsetLanguageChangeCallback() { - getWindow().delEventHandler(WIN_LANGUAGE_CHANGED, WEAK_DELEGATE( - CallInfoPresenter::onLanguageChanged, asWeak(*this))); + getWindow().delEventHandler(WIN_LANGUAGE_CHANGED, + DELEGATE_THIS(onLanguageChanged)); } void CallInfoPresenter::onLanguageChanged(Widget &widget, void *eventInfo) @@ -476,7 +476,7 @@ namespace callui { const ICallInfoSCRef &callInfo) { if (!callInfo) { - LOG_RETURN_VALUE(RES_FAIL, "", "callInfo is NULL"); + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, "", "callInfo is NULL"); } if (callInfo->getConferenceMemberCount() > 1) { diff --git a/call-ui/presenters/misc/CallInfoPresenter.h b/call-ui/presenters/misc/CallInfoPresenter.h index 4790628..dc476a5 100644 --- a/call-ui/presenters/misc/CallInfoPresenter.h +++ b/call-ui/presenters/misc/CallInfoPresenter.h @@ -53,14 +53,14 @@ namespace callui { * @param[in] cm Call Manager instance * @return Reference to builder */ - Builder &setCallManager(const ICallManagerSRef &cm); + Builder &setCallManager(ICallManagerSRef cm); /** * @brief Sets parent widget for UI components creation * @param[in] parentWidget Parent widget * @return Reference to builder */ - Builder &setParentWidget(const ucl::ElmWidgetSRef &parentWidget); + Builder &setParentWidget(ucl::ElmWidgetSRef parentWidget); /** * @brief Creates new instance of CallInfoPresenter diff --git a/call-ui/presenters/misc/CallStatusPresenter.cpp b/call-ui/presenters/misc/CallStatusPresenter.cpp index 9689074..534b333 100644 --- a/call-ui/presenters/misc/CallStatusPresenter.cpp +++ b/call-ui/presenters/misc/CallStatusPresenter.cpp @@ -56,9 +56,9 @@ namespace callui { } CallStatusPresenter::Builder & - CallStatusPresenter::Builder::setCallInfo(const ICallInfoWCRef &info) + CallStatusPresenter::Builder::setCallInfo(ICallInfoWCRef info) { - m_info = info; + m_info = std::move(info); return *this; } @@ -70,9 +70,9 @@ namespace callui { } CallStatusPresenter::Builder & - CallStatusPresenter::Builder::setLayout(const LayoutSRef &layout) + CallStatusPresenter::Builder::setLayout(LayoutSRef layout) { - m_ly = layout; + m_ly = std::move(layout); return *this; } @@ -93,14 +93,14 @@ namespace callui { CallStatusPresenter::CallStatusPresenter(IRefCountObj &rc, - const LayoutSRef &layout, + LayoutSRef layout, CallMode mode, - const ICallInfoWCRef &info, + ICallInfoWCRef info, bool isHeld): GuiPresenter(rc), - m_ly(layout), + m_ly(std::move(layout)), m_mode(mode), - m_info(info), + m_info(std::move(info)), m_isOnHold(isHeld), m_timer(nullptr), m_duration{0}, @@ -145,14 +145,14 @@ namespace callui { void CallStatusPresenter::setLanguageChangeCallback() { - getWindow().addEventHandler(WIN_LANGUAGE_CHANGED, WEAK_DELEGATE( - CallStatusPresenter::onLanguageChanged, asWeak(*this))); + getWindow().addEventHandler(WIN_LANGUAGE_CHANGED, + WEAK_DELEGATE_THIS(onLanguageChanged)); } void CallStatusPresenter::unsetLanguageChangeCallback() { - getWindow().delEventHandler(WIN_LANGUAGE_CHANGED, WEAK_DELEGATE( - CallStatusPresenter::onLanguageChanged, asWeak(*this))); + getWindow().delEventHandler(WIN_LANGUAGE_CHANGED, + DELEGATE_THIS(onLanguageChanged)); } void CallStatusPresenter::onLanguageChanged(Widget &widget, void *eventInfo) diff --git a/call-ui/presenters/misc/CallStatusPresenter.h b/call-ui/presenters/misc/CallStatusPresenter.h index 62fa5fc..5871cb7 100644 --- a/call-ui/presenters/misc/CallStatusPresenter.h +++ b/call-ui/presenters/misc/CallStatusPresenter.h @@ -59,7 +59,7 @@ namespace callui { * @param[in] info Call Info instance * @return Reference to builder */ - Builder &setCallInfo(const ICallInfoWCRef &info); + Builder &setCallInfo(ICallInfoWCRef info); /** * @brief Sets call Hold state @@ -74,7 +74,7 @@ namespace callui { * @param[in] info Call Info layout * @return Reference to builder */ - Builder &setLayout(const ucl::LayoutSRef &layout); + Builder &setLayout(ucl::LayoutSRef layout); /** * @brief Creates new instance of CallStatusPresenter @@ -100,9 +100,9 @@ namespace callui { private: CallStatusPresenter(ucl::IRefCountObj &rc, - const ucl::LayoutSRef &layout, + ucl::LayoutSRef layout, CallMode mode, - const ICallInfoWCRef &info, + ICallInfoWCRef info, bool isOnHold); ~CallStatusPresenter(); diff --git a/call-ui/presenters/misc/DeviceStatePresenter.cpp b/call-ui/presenters/misc/DeviceStatePresenter.cpp index b1a37b6..9996951 100644 --- a/call-ui/presenters/misc/DeviceStatePresenter.cpp +++ b/call-ui/presenters/misc/DeviceStatePresenter.cpp @@ -57,9 +57,13 @@ namespace callui { } DeviceStatePresenterSRef - DeviceStatePresenter::Builder::build(const ucl::WindowSRef &window) const + DeviceStatePresenter::Builder::build(ucl::WindowSRef window) const { - auto result = makeShared(window); + if (!window) { + LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "window is NULL"); + } + + auto result = makeShared(std::move(window)); FAIL_RETURN_VALUE(result->prepare(m_state, m_mode, m_lockState), {}, "result->prepare() failed!"); @@ -68,8 +72,8 @@ namespace callui { // DeviceStatePresenter // - DeviceStatePresenter::DeviceStatePresenter(const ucl::WindowSRef &window): - m_window(window), + DeviceStatePresenter::DeviceStatePresenter(ucl::WindowSRef window): + m_window(std::move(window)), m_mode(DisplayMode::UNDEFINED), m_lockState(false) { diff --git a/call-ui/presenters/misc/DeviceStatePresenter.h b/call-ui/presenters/misc/DeviceStatePresenter.h index a7dcee7..da861e7 100644 --- a/call-ui/presenters/misc/DeviceStatePresenter.h +++ b/call-ui/presenters/misc/DeviceStatePresenter.h @@ -90,8 +90,7 @@ namespace callui { * @return Shared reference to DeviceStatePresenter instance * on success or NULL otherwise */ - DeviceStatePresenterSRef build( - const ucl::WindowSRef &window) const; + DeviceStatePresenterSRef build(ucl::WindowSRef window) const; private: DisplayState m_state; DisplayMode m_mode; @@ -125,7 +124,7 @@ namespace callui { ucl::Result setCpuLockState(bool lockState); private: - DeviceStatePresenter(const ucl::WindowSRef &window); + DeviceStatePresenter(ucl::WindowSRef window); ~DeviceStatePresenter() = default; ucl::Result prepare(DisplayState state, diff --git a/call-ui/presenters/misc/IndicatorPresenter.cpp b/call-ui/presenters/misc/IndicatorPresenter.cpp index f0601cc..bdd7659 100644 --- a/call-ui/presenters/misc/IndicatorPresenter.cpp +++ b/call-ui/presenters/misc/IndicatorPresenter.cpp @@ -164,16 +164,17 @@ namespace callui { IndicatorPresenter::Builder & IndicatorPresenter::Builder::setIndicatorStateProvider( - const IIndicatorStateProviderSRef &provider) + IIndicatorStateProviderSRef provider) { - m_provider = provider; + m_provider = std::move(provider); return *this; } IndicatorPresenter::Builder & - IndicatorPresenter::Builder::setParentWidget(const ucl::ElmWidgetSRef &parentWidget) + IndicatorPresenter::Builder::setParentWidget( + ucl::ElmWidgetSRef parentWidget) { - m_parentWidget = parentWidget; + m_parentWidget = std::move(parentWidget); return *this; } @@ -191,9 +192,9 @@ namespace callui { } IndicatorPresenter::IndicatorPresenter(IRefCountObj &rc, - const IIndicatorStateProviderSRef &provider): + IIndicatorStateProviderSRef provider): GuiPresenter(rc), - m_provider(provider) + m_provider(std::move(provider)) { } diff --git a/call-ui/presenters/misc/IndicatorPresenter.h b/call-ui/presenters/misc/IndicatorPresenter.h index b1d969e..0451e31 100644 --- a/call-ui/presenters/misc/IndicatorPresenter.h +++ b/call-ui/presenters/misc/IndicatorPresenter.h @@ -54,14 +54,14 @@ namespace callui { * @return Reference to builder */ Builder &setIndicatorStateProvider( - const IIndicatorStateProviderSRef &provider); + IIndicatorStateProviderSRef provider); /** * @brief Sets parent widget for UI components creation * @param[in] parentWidget Parent widget * @return Reference to builder */ - Builder &setParentWidget(const ucl::ElmWidgetSRef &parentWidget); + Builder &setParentWidget(ucl::ElmWidgetSRef parentWidget); /** * @brief Creates new instance of IndicatorPresenter @@ -85,7 +85,7 @@ namespace callui { private: IndicatorPresenter(ucl::IRefCountObj &rc, - const IIndicatorStateProviderSRef &provider); + IIndicatorStateProviderSRef provider); ~IndicatorPresenter() = default; ucl::Result prepare(ucl::GuiPresenter &parent, @@ -109,6 +109,8 @@ namespace callui { virtual void onStateChanged(IndicatorProperty property) override final; private: + const IIndicatorStateProviderSRef m_provider; + ucl::LayoutSRef m_widget; ucl::LayoutSRef m_connLayout; ucl::LayoutSRef m_rssiLayout; @@ -116,12 +118,9 @@ namespace callui { ucl::LayoutSRef m_simLayout; ucl::LayoutSRef m_hdCallLayout; - IIndicatorStateProviderSRef m_provider; - friend class ucl::ReffedObj; }; - ucl::EdjeSignal getConnectionSignal(ConnectionType type); } #endif // __CALL_UI_PRESENTERS_MISC_MISC_INDICATOR_PRESENTER_H__ diff --git a/call-ui/presenters/misc/MoreOptionsPresenter.cpp b/call-ui/presenters/misc/MoreOptionsPresenter.cpp index f9f6d49..63f3cff 100644 --- a/call-ui/presenters/misc/MoreOptionsPresenter.cpp +++ b/call-ui/presenters/misc/MoreOptionsPresenter.cpp @@ -69,31 +69,30 @@ namespace callui { } MoreOptionsPresenter::Builder & - MoreOptionsPresenter::Builder::setCallManager(const ICallManagerSRef &cm) + MoreOptionsPresenter::Builder::setCallManager(ICallManagerSRef cm) { - m_cm = cm; + m_cm = std::move(cm); return *this; } MoreOptionsPresenter::Builder & - MoreOptionsPresenter::Builder::setSoundManager(const ISoundManagerSRef &sm) + MoreOptionsPresenter::Builder::setSoundManager(ISoundManagerSRef sm) { - m_sm = sm; + m_sm = std::move(sm); return *this; } MoreOptionsPresenter::Builder & - MoreOptionsPresenter::Builder::setNaviframe(const NaviframeSRef &navi) + MoreOptionsPresenter::Builder::setNaviframe(NaviframeSRef navi) { - m_navi = navi; + m_navi = std::move(navi); return *this; } MoreOptionsPresenter::Builder & - MoreOptionsPresenter::Builder::setParentWidget( - const ElmWidgetSRef &parentWidget) + MoreOptionsPresenter::Builder::setParentWidget(ElmWidgetSRef parentWidget) { - m_parentWidget = parentWidget; + m_parentWidget = std::move(parentWidget); return *this; } @@ -114,13 +113,13 @@ namespace callui { // MoreOptionsPresenter // MoreOptionsPresenter::MoreOptionsPresenter(IRefCountObj &rc, - const ICallManagerSRef &cm, - const ISoundManagerSRef &sm, - const NaviframeSRef &navi): + ICallManagerSRef cm, + ISoundManagerSRef sm, + NaviframeSRef navi): GuiPresenter(rc), - m_cm(cm), - m_sm(sm), - m_navi(navi), + m_cm(std::move(cm)), + m_sm(std::move(sm)), + m_navi(std::move(navi)), m_timer(nullptr), m_duration() { @@ -241,17 +240,13 @@ namespace callui { void MoreOptionsPresenter::registerPageTransitionCallback() { m_navi->addEventHandler(NAVI_TRANSITION_FINISHED, - WEAK_DELEGATE( - MoreOptionsPresenter::onPageTransitionFinished, - asWeak(*this))); + WEAK_DELEGATE_THIS(onPageTransitionFinished)); } void MoreOptionsPresenter::unregisterPageTransitionCallback() { m_navi->delEventHandler(NAVI_TRANSITION_FINISHED, - WEAK_DELEGATE( - MoreOptionsPresenter::onPageTransitionFinished, - asWeak(*this))); + DELEGATE_THIS(onPageTransitionFinished)); } void MoreOptionsPresenter::onPageTransitionFinished(Widget &widget, @@ -298,8 +293,7 @@ namespace callui { Result MoreOptionsPresenter::createSwapButton() { m_btnSwap = createButton(impl::STYLE_BTN_SWAP, STR_MORE_SWAP, - WEAK_DELEGATE(MoreOptionsPresenter::onSwapBtnClick, - asWeak(*this))); + WEAK_DELEGATE_THIS(onSwapBtnClick)); if (!m_btnSwap) { LOG_RETURN(RES_FAIL, "Create Swap button failed!"); } @@ -310,8 +304,7 @@ namespace callui { Result MoreOptionsPresenter::createUnholdButton() { m_btnUnhold = createButton(impl::STYLE_BTN_UNHOLD, STR_MORE_UNHOLD, - WEAK_DELEGATE(MoreOptionsPresenter::onUnholdBtnClick, - asWeak(*this))); + WEAK_DELEGATE_THIS(onUnholdBtnClick)); if (!m_btnUnhold) { LOG_RETURN(RES_FAIL, "Create Unhold button failed!"); } @@ -322,8 +315,7 @@ namespace callui { Result MoreOptionsPresenter::createKeypadButton() { m_btnKeypad = createButton(impl::STYLE_BTN_KEYPAD, STR_MORE_KEYPAD, - WEAK_DELEGATE(MoreOptionsPresenter::onKeypadBtnClick, - asWeak(*this))); + WEAK_DELEGATE_THIS(onKeypadBtnClick)); if (!m_btnKeypad) { LOG_RETURN(RES_FAIL, "Create Keypad button failed!"); } @@ -358,9 +350,7 @@ namespace callui { LOG_RETURN_VOID(RES_FAIL, "Naviframe is NULL"); } m_keypad = builder.setSoundManager(m_sm) - .build(WEAK_DELEGATE( - MoreOptionsPresenter::onPageExitRequest, - asWeak(*this))); + .build(WEAK_DELEGATE_THIS(onPageExitRequest)); } void MoreOptionsPresenter::onPageExitRequest(Page &page) @@ -372,7 +362,7 @@ namespace callui { StyledWidgetSRef MoreOptionsPresenter::createButton( const ElmStyle &style, const TString &txt, - const WidgetEventHandler &handler) + WidgetEventHandler handler) { auto *eo = elm_button_add(*m_panelLy); if (!eo) { @@ -381,7 +371,7 @@ namespace callui { auto btn = makeShared(eo); btn->setStyle(style); btn->setText(txt); - btn->addEventHandler(BTN_CLICKED, handler); + btn->addEventHandler(BTN_CLICKED, std::move(handler)); hide(*btn); btn->bindToEo(); @@ -539,8 +529,8 @@ namespace callui { "AtspiHighlightHelper::newInstance() failed!"); } - m_atspiHelper->setRelationEventHandler(WEAK_DELEGATE( - MoreOptionsPresenter::onAtspiHighlight, asWeak(*this))); + m_atspiHelper->setRelationEventHandler( + WEAK_DELEGATE_THIS(onAtspiHighlight)); if (m_fakeAo) { m_atspiHelper->registerWidget(*m_fakeAo); diff --git a/call-ui/presenters/misc/MoreOptionsPresenter.h b/call-ui/presenters/misc/MoreOptionsPresenter.h index 9e4b2c9..396b336 100644 --- a/call-ui/presenters/misc/MoreOptionsPresenter.h +++ b/call-ui/presenters/misc/MoreOptionsPresenter.h @@ -53,28 +53,28 @@ namespace callui { * @param[in] cm Call Manager instance * @return Reference to builder */ - Builder &setCallManager(const ICallManagerSRef &cm); + Builder &setCallManager(ICallManagerSRef cm); /** * @brief Sets Sound Manager instance * @param[in] sm Sound Manager instance * @return Reference to builder */ - Builder &setSoundManager(const ISoundManagerSRef &sm); + Builder &setSoundManager(ISoundManagerSRef sm); /** * @brief Sets Naviframe instance * @param[in] sm Naviframe instance * @return Reference to builder */ - Builder &setNaviframe(const ucl::NaviframeSRef &navi); + Builder &setNaviframe(ucl::NaviframeSRef navi); /** * @brief Sets parent widget for UI components creation * @param[in] parentWidget Parent widget * @return Reference to builder */ - Builder &setParentWidget(const ucl::ElmWidgetSRef &parentWidget); + Builder &setParentWidget(ucl::ElmWidgetSRef parentWidget); /** * @brief Creates new instance of MoreOptionsPresenter @@ -112,9 +112,9 @@ namespace callui { private: MoreOptionsPresenter(ucl::IRefCountObj &rc, - const ICallManagerSRef &cm, - const ISoundManagerSRef &sm, - const ucl::NaviframeSRef &navi); + ICallManagerSRef cm, + ISoundManagerSRef sm, + ucl::NaviframeSRef navi); ~MoreOptionsPresenter(); ucl::Result prepare(ucl::GuiPresenter &parent, @@ -132,7 +132,7 @@ namespace callui { ucl::StyledWidgetSRef createButton(const ucl::ElmStyle &style, const ucl::TString &txt, - const ucl::WidgetEventHandler &handler); + ucl::WidgetEventHandler handler); void registerPageTransitionCallback(); void unregisterPageTransitionCallback(); @@ -179,6 +179,10 @@ namespace callui { Elm_Access_Action_Info *actionInfo); private: + const ICallManagerSRef m_cm; + const ISoundManagerSRef m_sm; + const ucl::NaviframeSRef m_navi; + ucl::LayoutSRef m_widget; ucl::StyledWidgetSRef m_panel; ucl::LayoutSRef m_panelLy; @@ -187,9 +191,6 @@ namespace callui { ucl::StyledWidgetSRef m_btnKeypad; PageWRef m_keypad; - ICallManagerSRef m_cm; - ISoundManagerSRef m_sm; - ucl::NaviframeSRef m_navi; ICallInfoWCRef m_info; Ecore_Timer *m_timer; diff --git a/call-ui/presenters/misc/MotionSensorPresenter.cpp b/call-ui/presenters/misc/MotionSensorPresenter.cpp index 81cf4e4..1e2c08f 100644 --- a/call-ui/presenters/misc/MotionSensorPresenter.cpp +++ b/call-ui/presenters/misc/MotionSensorPresenter.cpp @@ -27,18 +27,17 @@ namespace callui { } MotionSensorPresenterSRef - MotionSensorPresenter::Builder::build( - const NotiHandler handler) const + MotionSensorPresenter::Builder::build(NotiHandler handler) const { - auto result = makeShared(handler); + auto result = makeShared(std::move(handler)); FAIL_RETURN_VALUE(result->prepare(), {}, "result->prepare() failed!"); return result; } MotionSensorPresenter::MotionSensorPresenter( - const NotiHandler &handler): - m_handler(handler), + NotiHandler handler): + m_handler(std::move(handler)), m_gesture(nullptr) { } @@ -88,8 +87,10 @@ namespace callui { "err[%d] msg[%s]", res, get_error_message(res)); } - if (event == GESTURE_EVENT_DETECTED && m_handler) { - m_handler(); + if (event == GESTURE_EVENT_DETECTED) { + if (const auto handler = m_handler.lock()) { + handler(); + } } } } diff --git a/call-ui/presenters/misc/MotionSensorPresenter.h b/call-ui/presenters/misc/MotionSensorPresenter.h index 5ca4a05..0e48193 100644 --- a/call-ui/presenters/misc/MotionSensorPresenter.h +++ b/call-ui/presenters/misc/MotionSensorPresenter.h @@ -48,10 +48,10 @@ namespace callui { * @return Shared reference to MotionSensorPresenter instance * on success or NULL otherwise */ - MotionSensorPresenterSRef build(const NotiHandler handler) const; + MotionSensorPresenterSRef build(NotiHandler handler) const; }; private: - MotionSensorPresenter(const NotiHandler &handler); + MotionSensorPresenter(NotiHandler handler); ~MotionSensorPresenter(); ucl::Result prepare(); @@ -62,7 +62,7 @@ namespace callui { gesture_error_e error); private: - NotiHandler m_handler; + const NotiHandler m_handler; gesture_h m_gesture; friend class ucl::ReffedObj; diff --git a/call-ui/presenters/misc/RejectMsgPresenter.cpp b/call-ui/presenters/misc/RejectMsgPresenter.cpp index 53caa7f..f0cde69 100644 --- a/call-ui/presenters/misc/RejectMsgPresenter.cpp +++ b/call-ui/presenters/misc/RejectMsgPresenter.cpp @@ -52,9 +52,7 @@ namespace callui { { } - virtual ~RejectMsgItem() - { - } + virtual ~RejectMsgItem() = default; std::string getDisplayText() const { @@ -82,34 +80,30 @@ namespace callui { } RejectMsgPresenter::Builder & - RejectMsgPresenter::Builder::setProvider( - const IRejectMsgProviderSRef &provider) + RejectMsgPresenter::Builder::setProvider(IRejectMsgProviderSRef provider) { - m_provider = provider; + m_provider = std::move(provider); return *this; } RejectMsgPresenter::Builder & - RejectMsgPresenter::Builder::setStateHandler( - const StateHandler &handler) + RejectMsgPresenter::Builder::setStateHandler(StateHandler handler) { - m_stateHandler = handler; + m_stateHandler = std::move(handler); return *this; } RejectMsgPresenter::Builder & - RejectMsgPresenter::Builder::setSelectHandler( - const SelectHandler &handler) + RejectMsgPresenter::Builder::setSelectHandler(SelectHandler handler) { - m_selectHandler = handler; + m_selectHandler = std::move(handler); return *this; } RejectMsgPresenter::Builder & - RejectMsgPresenter::Builder::setParentWidget( - const ElmWidgetSRef &parentWidget) + RejectMsgPresenter::Builder::setParentWidget(ElmWidgetSRef parentWidget) { - m_parentWidget = parentWidget; + m_parentWidget = std::move(parentWidget); return *this; } @@ -130,15 +124,15 @@ namespace callui { } RejectMsgPresenter::RejectMsgPresenter(IRefCountObj &rc, - const IRejectMsgProviderSRef &provider, - const StateHandler &stateHandler, - const SelectHandler &selectHandler): - GuiPresenter(rc), - m_circleEo(nullptr), - m_provider(provider), - m_stateHandler(stateHandler), - m_selectHandler(selectHandler), - m_state(State::HIDDEN) + IRejectMsgProviderSRef provider, + StateHandler stateHandler, + SelectHandler selectHandler): + GuiPresenter(rc), + m_provider(std::move(provider)), + m_stateHandler(std::move(stateHandler)), + m_selectHandler(std::move(selectHandler)), + m_circleEo(nullptr), + m_state(State::HIDDEN) { } @@ -242,8 +236,8 @@ namespace callui { sendDeactivate(*m_widget); } - if (m_stateHandler) { - m_stateHandler(m_state); + if (const auto handler = m_stateHandler.lock()) { + handler(m_state); } } } @@ -261,8 +255,7 @@ namespace callui { show(*m_panel); m_panel->addEventHandler(impl::EVENT_SCROLL, - WEAK_DELEGATE(RejectMsgPresenter::panelScrollCb, - asWeak(*this))); + WEAK_DELEGATE_THIS(panelScrollCb)); m_widget->setContent(*m_panel, impl::PART_SWL_RIGHT); @@ -301,14 +294,14 @@ namespace callui { void RejectMsgPresenter::setLanguageChangeCallback() { - getWindow().addEventHandler(WIN_LANGUAGE_CHANGED, WEAK_DELEGATE( - RejectMsgPresenter::onLanguageChanged, asWeak(*this))); + getWindow().addEventHandler(WIN_LANGUAGE_CHANGED, + WEAK_DELEGATE_THIS(onLanguageChanged)); } void RejectMsgPresenter::unsetLanguageChangeCallback() { - getWindow().delEventHandler(WIN_LANGUAGE_CHANGED, WEAK_DELEGATE( - RejectMsgPresenter::onLanguageChanged, asWeak(*this))); + getWindow().delEventHandler(WIN_LANGUAGE_CHANGED, + DELEGATE_THIS(onLanguageChanged)); } void RejectMsgPresenter::onLanguageChanged(Widget &widget, void *eventInfo) @@ -452,8 +445,8 @@ namespace callui { void RejectMsgPresenter::handleSelectEvent(const RejectMsgItem &item) { - if (m_selectHandler) { - m_selectHandler(item.getRejectMsg()); + if (const auto handler = m_selectHandler.lock()) { + handler(item.getRejectMsg()); } } @@ -499,18 +492,6 @@ namespace callui { } } - void RejectMsgPresenter::setStateHandler( - const RejectMsgPresenter::StateHandler &handler) - { - m_stateHandler = handler; - } - - void RejectMsgPresenter::setSelectHandler( - const SelectHandler &handler) - { - m_selectHandler = handler; - } - void RejectMsgPresenter::onActivate() { DLOG(); @@ -558,8 +539,8 @@ namespace callui { LOG_RETURN(RES_FAIL, "AtspiHighlightHelper::newInstance() failed!"); } - m_atspiHelper->setRelationEventHandler(WEAK_DELEGATE( - RejectMsgPresenter::onAtspiHighlight, asWeak(*this))); + m_atspiHelper->setRelationEventHandler( + WEAK_DELEGATE_THIS(onAtspiHighlight)); return RES_OK; } diff --git a/call-ui/presenters/misc/RejectMsgPresenter.h b/call-ui/presenters/misc/RejectMsgPresenter.h index a16025f..512467b 100644 --- a/call-ui/presenters/misc/RejectMsgPresenter.h +++ b/call-ui/presenters/misc/RejectMsgPresenter.h @@ -75,28 +75,28 @@ namespace callui { * @param[in] provider Reject message provider instance * @return Reference to builder */ - Builder &setProvider(const IRejectMsgProviderSRef &provider); + Builder &setProvider(IRejectMsgProviderSRef provider); /** * @brief Sets state change event handler * @param[in] handler State change event handler * @return Reference to builder */ - Builder &setStateHandler(const StateHandler &handler); + Builder &setStateHandler(StateHandler handler); /** * @brief Sets select reject message event handler * @param[in] handler Select reject message event handler * @return Reference to builder */ - Builder &setSelectHandler(const SelectHandler &handler); + Builder &setSelectHandler(SelectHandler handler); /** * @brief Sets parent widget for UI components creation * @param[in] parentWidget Parent widget * @return Reference to builder */ - Builder &setParentWidget(const ucl::ElmWidgetSRef &parentWidget); + Builder &setParentWidget(ucl::ElmWidgetSRef parentWidget); /** * @brief Creates new instance of RejectMsgPresenter @@ -137,26 +137,14 @@ namespace callui { */ void hidePanel(); - /** - * @brief Sets state change event handler - * @param[in] handler State change event handler - */ - void setStateHandler(const StateHandler &handler); - - /** - * @brief Sets select reject message event handler - * @param[in] handler Select reject message event handler - */ - void setSelectHandler(const SelectHandler &handler); - private: class RejectMsgItem; private: RejectMsgPresenter(ucl::IRefCountObj &rc, - const IRejectMsgProviderSRef &provider, - const StateHandler &stateHandler, - const SelectHandler &selectHandler); + IRejectMsgProviderSRef provider, + StateHandler stateHandler, + SelectHandler selectHandler); ~RejectMsgPresenter(); ucl::Result prepare(ucl::GuiPresenter &parent, @@ -204,6 +192,10 @@ namespace callui { virtual void onDeactivate() final override; private: + const IRejectMsgProviderSRef m_provider; + const StateHandler m_stateHandler; + const SelectHandler m_selectHandler; + ucl::LayoutSRef m_widget; ucl::StyledWidgetSRef m_panel; ucl::ElmWidgetSRef m_panelBg; @@ -211,9 +203,6 @@ namespace callui { ucl::StyledWidgetSRef m_genlist; Evas_Object *m_circleEo; - IRejectMsgProviderSRef m_provider; - StateHandler m_stateHandler; - SelectHandler m_selectHandler; State m_state; AtspiHighlightHelperSRef m_atspiHelper; diff --git a/call-ui/presenters/pages/KeypadPage.cpp b/call-ui/presenters/pages/KeypadPage.cpp index 4ac2fd9..d1cea99 100644 --- a/call-ui/presenters/pages/KeypadPage.cpp +++ b/call-ui/presenters/pages/KeypadPage.cpp @@ -90,37 +90,36 @@ namespace callui { { } - KeypadPage::Builder &KeypadPage::Builder::setNaviframe( - const NaviframeSRef &navi) + KeypadPage::Builder &KeypadPage::Builder::setNaviframe(NaviframeSRef navi) { - m_navi = navi; + m_navi = std::move(navi); return *this; } KeypadPage::Builder - &KeypadPage::Builder::setSoundManager(const ISoundManagerSRef &sm) + &KeypadPage::Builder::setSoundManager(ISoundManagerSRef sm) { - m_sm = sm; + m_sm = std::move(sm); return *this; } KeypadPageSRef KeypadPage::Builder::build( - const ExitRequestHandler onExitRequest) const + ExitRequestHandler onExitRequest) const { if (!onExitRequest) { LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "onExitRequest is NULL"); } if (!m_navi) { - LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, - "m_navi is NULL"); + LOG_RETURN_VALUE(RES_FAIL, {}, "m_navi is NULL"); } if (!m_sm) { LOG_RETURN_VALUE(RES_FAIL, {}, "m_sm is NULL"); } - auto result = makeShared(m_sm, m_navi, onExitRequest); + auto result = makeShared(m_navi, + std::move(onExitRequest), m_sm); FAIL_RETURN_VALUE(result->prepare([&result](NaviItem &item) { @@ -134,11 +133,11 @@ namespace callui { // KeypadPage // KeypadPage::KeypadPage(IRefCountObj &rc, - const ISoundManagerSRef &sm, - const NaviframeSRef &navi, - const ExitRequestHandler onExitRequest): - Page(rc, navi, onExitRequest), - m_sm(sm), + NaviframeSRef navi, + ExitRequestHandler onExitRequest, + ISoundManagerSRef sm): + Page(rc, std::move(navi), std::move(onExitRequest)), + m_sm(std::move(sm)), m_smInUse(false), m_vcTimer(nullptr), m_audioState(m_sm->getAudioState()) @@ -196,8 +195,8 @@ namespace callui { LOG_RETURN(RES_FAIL, "win is NULL!"); } - win->addEventHandler(WIN_POWER_KEY_UP_EVENT, WEAK_DELEGATE( - KeypadPage::onPowerKeyUp, asWeak(*this))); + win->addEventHandler(WIN_POWER_KEY_UP_EVENT, + WEAK_DELEGATE_THIS(onPowerKeyUp)); return RES_OK; } @@ -209,8 +208,8 @@ namespace callui { LOG_RETURN_VOID(RES_FAIL, "win is NULL!"); } - win->delEventHandler(WIN_POWER_KEY_UP_EVENT, WEAK_DELEGATE( - KeypadPage::onPowerKeyUp, asWeak(*this))); + win->delEventHandler(WIN_POWER_KEY_UP_EVENT, + DELEGATE_THIS(onPowerKeyUp)); } void KeypadPage::onPowerKeyUp(Widget &widget, void *eventInfo) @@ -321,16 +320,13 @@ namespace callui { if (impl::buttonsInfo[i].type == impl::OperationType::DTMF) { buttonSRef->addEventHandler(impl::BTN_PRESSED, - WEAK_DELEGATE(KeypadPage::onBtnPressed, - asWeak(*this))); + WEAK_DELEGATE_THIS(onBtnPressed)); buttonSRef->addEventHandler(impl::BTN_UNPRESSED, - WEAK_DELEGATE(KeypadPage::onBtnUnpressed, - asWeak(*this))); + WEAK_DELEGATE_THIS(onBtnUnpressed)); } else { buttonSRef->addEventHandler(BTN_CLICKED, - WEAK_DELEGATE(KeypadPage::onBtnClicked, - asWeak(*this))); + WEAK_DELEGATE_THIS(onBtnClicked)); // RTL support elm_object_mirrored_automatic_set(*buttonSRef, EINA_FALSE); @@ -370,8 +366,8 @@ namespace callui { void KeypadPage::stopDtmf() { if (m_smInUse) { - m_sm->stopDtmf(); m_smInUse = false; + m_sm->stopDtmf(); } } @@ -380,9 +376,7 @@ namespace callui { m_vc = VolumeControl::Builder(). setInfoText(STR_VOLUME). setMaxValue(m_sm->getMaxVolume()). - setEventHandler(WEAK_DELEGATE( - KeypadPage::onVolumeControlEventCb, - asWeak(*this))). + setEventHandler(WEAK_DELEGATE_THIS(onVolumeControlEventCb)). build(*m_widget); if (!m_vc) { LOG_RETURN(RES_FAIL, "VolumeControl::build() failed"); @@ -570,14 +564,11 @@ namespace callui { void KeypadPage::registerCallbacks() { - addRotaryEventHandler(CALLBACK_A( - KeypadPage::onRotaryEvent), this); - - m_sm->addAudioStateHandler(WEAK_DELEGATE( - KeypadPage::onAudioStateChanged, asWeak(*this))); + addRotaryEventHandler( + CALLBACK_A(KeypadPage::onRotaryEvent), this); - m_sm->addVolumeStateHandler(WEAK_DELEGATE( - KeypadPage::onVolumeLevelChanged, asWeak(*this))); + m_sm->addAudioStateHandler(WEAK_DELEGATE_THIS(onAudioStateChanged)); + m_sm->addVolumeStateHandler(WEAK_DELEGATE_THIS(onVolumeLevelChanged)); } void KeypadPage::unregisterCallbacks() @@ -585,11 +576,8 @@ namespace callui { delRotaryEventHandler( CALLBACK_A(KeypadPage::onRotaryEvent), this); - m_sm->delAudioStateHandler(WEAK_DELEGATE( - KeypadPage::onAudioStateChanged, asWeak(*this))); - - m_sm->delVolumeStateHandler(WEAK_DELEGATE( - KeypadPage::onVolumeLevelChanged, asWeak(*this))); + m_sm->delAudioStateHandler(DELEGATE_THIS(onAudioStateChanged)); + m_sm->delVolumeStateHandler(DELEGATE_THIS(onVolumeLevelChanged)); } Result KeypadPage::createAtspiHighlightHelper() @@ -600,8 +588,8 @@ namespace callui { "AtspiHighlightHelper::newInstance() failed!"); } - m_atspiHelper->setRelationEventHandler(WEAK_DELEGATE( - KeypadPage::onAtspiHighlight, asWeak(*this))); + m_atspiHelper->setRelationEventHandler( + WEAK_DELEGATE_THIS(onAtspiHighlight)); m_atspiHelper->registerWidget(*getFirstButton()); m_atspiHelper->registerWidget(*getLastButton()); @@ -686,17 +674,13 @@ namespace callui { if (decrBtn) { decrBtn->addEventHandler(ATSPI_HIGHLIGHTED, - WEAK_DELEGATE(KeypadPage:: - onVolumeControlScreenReaderReadStart, - asWeak(*this))); + WEAK_DELEGATE_THIS(onVolumeControlScreenReaderReadStart)); } auto incrBtn = m_vc->getIncreaseBtn(); if (incrBtn) { incrBtn->addEventHandler(ATSPI_HIGHLIGHTED, - WEAK_DELEGATE(KeypadPage:: - onVolumeControlScreenReaderReadStart, - asWeak(*this))); + WEAK_DELEGATE_THIS(onVolumeControlScreenReaderReadStart)); } } diff --git a/call-ui/presenters/pages/KeypadPage.h b/call-ui/presenters/pages/KeypadPage.h index 6e9c022..c4ec088 100644 --- a/call-ui/presenters/pages/KeypadPage.h +++ b/call-ui/presenters/pages/KeypadPage.h @@ -53,14 +53,14 @@ namespace callui { * @param[in] navi Naviframe instance * @return Reference to builder */ - Builder &setNaviframe(const ucl::NaviframeSRef &navi); + Builder &setNaviframe(ucl::NaviframeSRef navi); /** * @brief Sets Sound Manager instance * @param[in] navi Sound Manager instance * @return Reference to builder */ - Builder &setSoundManager(const ISoundManagerSRef &sm); + Builder &setSoundManager(ISoundManagerSRef sm); /** * @brief Creates new instance of KeypadPage @@ -68,7 +68,7 @@ namespace callui { * @return Shared reference to KeypadPage instance * on success or NULL otherwise */ - KeypadPageSRef build(const ExitRequestHandler onExitRequest) const; + KeypadPageSRef build(ExitRequestHandler onExitRequest) const; private: ISoundManagerSRef m_sm; ucl::NaviframeSRef m_navi; @@ -76,9 +76,9 @@ namespace callui { private: KeypadPage(ucl::IRefCountObj &rc, - const ISoundManagerSRef &sm, - const ucl::NaviframeSRef &navi, - const ExitRequestHandler onExitRequest); + ucl::NaviframeSRef navi, + ExitRequestHandler onExitRequest, + ISoundManagerSRef sm); ~KeypadPage(); ucl::Result doPrepare(ucl::NaviItem &item); @@ -132,10 +132,11 @@ namespace callui { virtual void onBackKey() override final; private: + const ISoundManagerSRef m_sm; + ucl::LayoutSRef m_widget; ucl::ElmWidgetSRef m_entry; - ISoundManagerSRef m_sm; bool m_smInUse; VolumeControlSRef m_vc; diff --git a/call-ui/presenters/pages/MainPage.cpp b/call-ui/presenters/pages/MainPage.cpp index cfc222e..82601ca 100644 --- a/call-ui/presenters/pages/MainPage.cpp +++ b/call-ui/presenters/pages/MainPage.cpp @@ -63,21 +63,21 @@ namespace callui { } MainPage::Builder &MainPage::Builder::setNaviframe( - const NaviframeSRef &navi) + NaviframeSRef navi) { - m_navi = navi; + m_navi = std::move(navi); return *this; } MainPage::Builder &MainPage::Builder::setCallUI( - const ICallUISRef &call) + ICallUISRef call) { - m_call = call; + m_call = std::move(call); return *this; } MainPageSRef MainPage::Builder::build( - const ExitRequestHandler onExitRequest) const + ExitRequestHandler onExitRequest) const { if (!onExitRequest) { LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, @@ -93,7 +93,7 @@ namespace callui { } auto result = makeShared( - m_navi, onExitRequest, m_call); + m_navi, std::move(onExitRequest), m_call); FAIL_RETURN_VALUE(result->prepare([&result](NaviItem &item) { @@ -107,11 +107,12 @@ namespace callui { // MainPage // MainPage::MainPage(IRefCountObj &rc, - const NaviframeSRef &navi, - const ExitRequestHandler onExitRequest, - const ICallUISRef &call) : - Page(rc, navi, onExitRequest), - m_call(call), + NaviframeSRef navi, + ExitRequestHandler onExitRequest, + ICallUISRef call) : + Page(rc, std::move(navi), std::move(onExitRequest)), + m_call(std::move(call)), + m_cm(m_call->getCallManager()), m_mode(CallMode::UNDEFINED), m_ecTimer(nullptr), m_ecTimerBtnReq(false) @@ -120,7 +121,6 @@ namespace callui { Result MainPage::doPrepare(NaviItem &item) { - m_cm = m_call->getCallManager(); if (!m_cm) { LOG_RETURN(RES_FAIL, "Call manager is NULL!"); } @@ -151,8 +151,8 @@ namespace callui { LOG_RETURN(RES_FAIL, "win is NULL!"); } - win->addEventHandler(WIN_POWER_KEY_UP_EVENT, WEAK_DELEGATE( - MainPage::onPowerKeyUp, asWeak(*this))); + win->addEventHandler(WIN_POWER_KEY_UP_EVENT, + WEAK_DELEGATE_THIS(onPowerKeyUp)); return RES_OK; } @@ -164,8 +164,8 @@ namespace callui { LOG_RETURN_VOID(RES_FAIL, "win is NULL!"); } - win->delEventHandler(WIN_POWER_KEY_UP_EVENT, WEAK_DELEGATE( - MainPage::onPowerKeyUp, asWeak(*this))); + win->delEventHandler(WIN_POWER_KEY_UP_EVENT, + DELEGATE_THIS(onPowerKeyUp)); } void MainPage::processKeyPress(bool isPowerKey) @@ -347,8 +347,7 @@ namespace callui { m_bottomBtn->setStyle(style); m_bottomBtn->addEventHandler(BTN_CLICKED, - WEAK_DELEGATE(MainPage::onBottomBtnClicked, - asWeak(*this))); + WEAK_DELEGATE_THIS(MainPage::onBottomBtnClicked)); elm_atspi_accessible_translation_domain_set(*m_bottomBtn, TEXT_DOMAIN); if (style == impl::STYLE_BB_RECALL) { @@ -522,8 +521,7 @@ namespace callui { m_accessoryPrs = AccessoryPresenter::Builder(). setSoundManager(m_call->getSoundManager()). setCallManager(m_cm). - setRequestExitHandler(WEAK_DELEGATE(MainPage::onExitAppRequest, - asWeak(*this))). + setRequestExitHandler(WEAK_DELEGATE_THIS(onExitAppRequest)). setParentWidget(m_widget). build(*this); @@ -613,10 +611,8 @@ namespace callui { { m_rmPrs = RejectMsgPresenter::Builder(). setProvider(provider). - setStateHandler(WEAK_DELEGATE(MainPage::RejectMsgPresenterStateCb, - asWeak(*this))). - setSelectHandler(WEAK_DELEGATE(MainPage::RejectMsgSelectCb, - asWeak(*this))). + setStateHandler(WEAK_DELEGATE_THIS(RejectMsgPresenterStateCb)). + setSelectHandler(WEAK_DELEGATE_THIS(RejectMsgSelectCb)). setParentWidget(m_widget). build(*this); @@ -716,11 +712,11 @@ namespace callui { void MainPage::registerIncomingCallModeAo() { DLOG("ENTER"); - m_atspiHelper->setRelationEventHandler(WEAK_DELEGATE( - MainPage::onIncomingCallModeAtspiHighlight, asWeak(*this))); + m_atspiHelper->setRelationEventHandler( + WEAK_DELEGATE_THIS(onIncomingCallModeAtspiHighlight)); - m_atspiHelper->setGestureEventHandler(WEAK_DELEGATE( - MainPage::onIncomingModeAtspiGesture, asWeak(*this))); + m_atspiHelper->setGestureEventHandler( + WEAK_DELEGATE_THIS(onIncomingModeAtspiGesture)); auto acceptAO = m_acceptRejectPrs->getAcceptAo(); if (!acceptAO) { @@ -838,8 +834,8 @@ namespace callui { void MainPage::registerActiveCallModeAo() { DLOG("ENTER"); - m_atspiHelper->setRelationEventHandler(WEAK_DELEGATE( - MainPage::onActiveCallModeAtspiHighlight, asWeak(*this))); + m_atspiHelper->setRelationEventHandler( + WEAK_DELEGATE_THIS(onActiveCallModeAtspiHighlight)); auto statusTxtAo = m_callInfoPrs->getStatusTxtAo(); if (!statusTxtAo) { @@ -1018,8 +1014,8 @@ namespace callui { void MainPage::registerEndCallModeAo() { - m_atspiHelper->setRelationEventHandler(WEAK_DELEGATE( - MainPage::onEndCallModeAtspiHighlight, asWeak(*this))); + m_atspiHelper->setRelationEventHandler( + WEAK_DELEGATE_THIS(onEndCallModeAtspiHighlight)); auto statusTxtAo = m_callInfoPrs->getStatusTxtAo(); if (!statusTxtAo) { diff --git a/call-ui/presenters/pages/MainPage.h b/call-ui/presenters/pages/MainPage.h index 66a9e4c..d0dbc3e 100644 --- a/call-ui/presenters/pages/MainPage.h +++ b/call-ui/presenters/pages/MainPage.h @@ -59,14 +59,14 @@ namespace callui { * @param[in] navi Naviframe instance * @return Reference to builder */ - Builder &setNaviframe(const ucl::NaviframeSRef &navi); + Builder &setNaviframe(ucl::NaviframeSRef navi); /** * @brief Sets CallUI instance * @param[in] call CallUI instance * @return Reference to builder */ - Builder &setCallUI(const ICallUISRef &call); + Builder &setCallUI(ICallUISRef call); /** * @brief Creates new instance of MainPage @@ -74,7 +74,7 @@ namespace callui { * @return Shared reference to MainPage instance * on success or NULL otherwise */ - MainPageSRef build(const ExitRequestHandler onExitRequest) const; + MainPageSRef build(ExitRequestHandler onExitRequest) const; private: ucl::NaviframeSRef m_navi; ICallUISRef m_call; @@ -82,9 +82,9 @@ namespace callui { private: MainPage(ucl::IRefCountObj &rc, - const ucl::NaviframeSRef &navi, - const ExitRequestHandler onExitRequest, - const ICallUISRef &call); + ucl::NaviframeSRef navi, + ExitRequestHandler onExitRequest, + ICallUISRef call); ~MainPage() = default; ucl::Result doPrepare(ucl::NaviItem &item); @@ -157,12 +157,13 @@ namespace callui { virtual void onError(CallErr err) final override; private: + const ICallUISRef m_call; + const ICallManagerSRef m_cm; + ucl::LayoutSRef m_widget; ucl::LayoutSRef m_rmLy; ucl::StyledWidgetSRef m_bottomBtn; - ICallUISRef m_call; - ICallManagerSRef m_cm; IndicatorPresenterSRef m_indicator; CallInfoPresenterSRef m_callInfoPrs; AcceptRejectPresenterSRef m_acceptRejectPrs; diff --git a/call-ui/view/AcceptRejectWidget.cpp b/call-ui/view/AcceptRejectWidget.cpp index fe2a48d..29bb75c 100644 --- a/call-ui/view/AcceptRejectWidget.cpp +++ b/call-ui/view/AcceptRejectWidget.cpp @@ -170,18 +170,16 @@ namespace callui { } AcceptRejectWidget::Builder & - AcceptRejectWidget::Builder::setAcceptEventHandler( - const NotiHandler &handler) + AcceptRejectWidget::Builder::setAcceptEventHandler(NotiHandler handler) { - m_acceptHandler = handler; + m_acceptHandler = std::move(handler); return *this; } AcceptRejectWidget::Builder & - AcceptRejectWidget::Builder::setRejectEventHandler( - const NotiHandler &handler) + AcceptRejectWidget::Builder::setRejectEventHandler(NotiHandler handler) { - m_rejectHandler = handler; + m_rejectHandler = std::move(handler); return *this; } @@ -215,13 +213,13 @@ namespace callui { AcceptRejectWidget::AcceptRejectWidget(IRefCountObj &rc, const LayoutSRef &layout, - const NotiHandler &acceptHandler, - const NotiHandler &rejectHandler, + NotiHandler acceptHandler, + NotiHandler rejectHandler, AcceptButtonType acceptBtnType): ElmWidget(&rc, *layout, false), + m_accHandler(std::move(acceptHandler)), + m_rejHandler(std::move(rejectHandler)), m_layout(layout.get()), - m_accHandler(acceptHandler), - m_rejHandler(rejectHandler), m_accBezelCueImg(impl::BC_ITEM_COUNT), m_rejBezelCueImg(impl::BC_ITEM_COUNT), m_isFreezed(false), @@ -255,18 +253,18 @@ namespace callui { m_expandTimeout.reset(); m_accEventLy->delEventHandler(WidgetEvent::MOUSE_DOWN, - WEAK_DELEGATE(AcceptRejectWidget::onMouseDown, asWeak(*this))); + DELEGATE_THIS(onMouseDown)); m_accEventLy->delEventHandler(WidgetEvent::MOUSE_UP, - WEAK_DELEGATE(AcceptRejectWidget::onMouseUp, asWeak(*this))); + DELEGATE_THIS(onMouseUp)); m_accEventLy->delEventHandler(WidgetEvent::MOUSE_MOVE, - WEAK_DELEGATE(AcceptRejectWidget::onMouseMove, asWeak(*this))); + DELEGATE_THIS(onMouseMove)); m_rejEventLy->delEventHandler(WidgetEvent::MOUSE_DOWN, - WEAK_DELEGATE(AcceptRejectWidget::onMouseDown, asWeak(*this))); + DELEGATE_THIS(onMouseDown)); m_rejEventLy->delEventHandler(WidgetEvent::MOUSE_UP, - WEAK_DELEGATE(AcceptRejectWidget::onMouseUp, asWeak(*this))); + DELEGATE_THIS(onMouseUp)); m_rejEventLy->delEventHandler(WidgetEvent::MOUSE_MOVE, - WEAK_DELEGATE(AcceptRejectWidget::onMouseMove, asWeak(*this))); + DELEGATE_THIS(onMouseMove)); DEL_TRANSIT(m_lastAccBezelTr1); DEL_TRANSIT(m_lastAccBezelTr2); @@ -340,13 +338,13 @@ namespace callui { build(*m_layout); m_accEventLy->addEventHandler(WidgetEvent::MOUSE_DOWN, - WEAK_DELEGATE(AcceptRejectWidget::onMouseDown, asWeak(*this))); + WEAK_DELEGATE_THIS(onMouseDown)); m_accEventLy->addEventHandler(WidgetEvent::MOUSE_UP, - WEAK_DELEGATE(AcceptRejectWidget::onMouseUp, asWeak(*this))); + WEAK_DELEGATE_THIS(onMouseUp)); m_accEventLy->addEventHandler(WidgetEvent::MOUSE_MOVE, - WEAK_DELEGATE(AcceptRejectWidget::onMouseMove, asWeak(*this))); + WEAK_DELEGATE_THIS(onMouseMove)); m_layout->setContent(*m_accEventLy, impl::PART_SWL_ACCEPT_FINGER_EVENT); @@ -385,13 +383,13 @@ namespace callui { build(*m_layout); m_rejEventLy->addEventHandler(WidgetEvent::MOUSE_DOWN, - WEAK_DELEGATE(AcceptRejectWidget::onMouseDown, asWeak(*this))); + WEAK_DELEGATE_THIS(onMouseDown)); m_rejEventLy->addEventHandler(WidgetEvent::MOUSE_UP, - WEAK_DELEGATE(AcceptRejectWidget::onMouseUp, asWeak(*this))); + WEAK_DELEGATE_THIS(onMouseUp)); m_rejEventLy->addEventHandler(WidgetEvent::MOUSE_MOVE, - WEAK_DELEGATE(AcceptRejectWidget::onMouseMove, asWeak(*this))); + WEAK_DELEGATE_THIS(onMouseMove)); m_layout->setContent(*m_rejEventLy, impl::PART_SWL_REJECT_FINGER_EVENT); @@ -551,10 +549,14 @@ namespace callui { if (m_lastMoveDistance >= impl::FINGER_STROKE_HALF_DIM) { m_isFreezed = true; - if (m_accTracer == img && m_accHandler) { - m_accHandler(); - } else if (m_rejTracer == img && m_rejHandler) { - m_rejHandler(); + if (m_accTracer == img) { + if (const auto handler = m_accHandler.lock()) { + handler(); + } + } else if (m_rejTracer == img ) { + if (const auto handler = m_rejHandler.lock()) { + handler(); + } } } } @@ -984,8 +986,8 @@ namespace callui { m_isFreezed = true; impl::resizeImage(*m_accTracer, impl::FINGER_STROKE_DIM); - if (m_accHandler) { - m_accHandler(); + if (const auto handler = m_accHandler.lock()) { + handler(); } } @@ -1031,8 +1033,8 @@ namespace callui { m_isFreezed = true; impl::resizeImage(*m_rejTracer, impl::FINGER_STROKE_DIM); - if (m_rejHandler) { - m_rejHandler(); + if (const auto handler = m_rejHandler.lock()) { + handler(); } } @@ -1284,8 +1286,7 @@ namespace callui { if (m_rotaryClockwiseCount == 1) { setAcceptPressedState(); m_expandTimeout = Timeout::create(impl::EXPAND_WAITING_TIMEOUT, - WEAK_DELEGATE(AcceptRejectWidget::onAcceptExpandTimeout, - asWeak(*this))); + WEAK_DELEGATE_THIS(onAcceptExpandTimeout)); } else if (m_rotaryClockwiseCount == 2) { m_expandTimeout.reset(); impl::resizeImage(*m_accTracer, impl::FINGER_TRACER_DIM); @@ -1305,13 +1306,12 @@ namespace callui { return EINA_TRUE; } - m_rotaryCounterClockwiseCount ++; + m_rotaryCounterClockwiseCount++; if (m_rotaryCounterClockwiseCount == 1) { setRejectPressedState(); m_expandTimeout = Timeout::create(impl::EXPAND_WAITING_TIMEOUT, - WEAK_DELEGATE(AcceptRejectWidget::onRejectExpandTimeout, - asWeak(*this))); + WEAK_DELEGATE_THIS(onRejectExpandTimeout)); } else if (m_rotaryCounterClockwiseCount == 2) { m_expandTimeout.reset(); diff --git a/call-ui/view/AcceptRejectWidget.h b/call-ui/view/AcceptRejectWidget.h index ce92277..fd7887e 100644 --- a/call-ui/view/AcceptRejectWidget.h +++ b/call-ui/view/AcceptRejectWidget.h @@ -51,14 +51,14 @@ namespace callui { * @param[in] handler Accept event handler * @return Reference to builder */ - Builder &setAcceptEventHandler(const NotiHandler &handler); + Builder &setAcceptEventHandler(NotiHandler handler); /** * @brief Sets reject event handler * @param[in] handler Reject event handler * @return Reference to builder */ - Builder &setRejectEventHandler(const NotiHandler &handler); + Builder &setRejectEventHandler(NotiHandler handler); /** * @brief Sets Accept button type @@ -131,8 +131,8 @@ namespace callui { private: AcceptRejectWidget(ucl::IRefCountObj &rc, const ucl::LayoutSRef &layout, - const NotiHandler &acceptHandler, - const NotiHandler &rejectHandler, + NotiHandler acceptHandler, + NotiHandler rejectHandler, AcceptButtonType acceptBtnType); void prepare(); @@ -204,9 +204,10 @@ namespace callui { ucl::ElmWidget &widget); private: + const NotiHandler m_accHandler; + const NotiHandler m_rejHandler; + ucl::Layout *m_layout; - NotiHandler m_accHandler; - NotiHandler m_rejHandler; std::vector m_accBezelCueImg; std::vector m_rejBezelCueImg; diff --git a/call-ui/view/VolumeControl.cpp b/call-ui/view/VolumeControl.cpp index d6ae71c..5eeb11b 100644 --- a/call-ui/view/VolumeControl.cpp +++ b/call-ui/view/VolumeControl.cpp @@ -50,9 +50,10 @@ namespace callui { { } - VolumeControl::Builder &VolumeControl::Builder::setInfoText(const TString &info) + VolumeControl::Builder & + VolumeControl::Builder::setInfoText(TString info) { - m_info = info; + m_info = std::move(info); return *this; } @@ -69,9 +70,9 @@ namespace callui { } VolumeControl::Builder &VolumeControl::Builder::setEventHandler( - const EventHandler &handler) + EventHandler handler) { - m_handler = handler; + m_handler = std::move(handler); return *this; } @@ -100,31 +101,31 @@ namespace callui { const TString &info, int maxValue, int curValue, - const EventHandler &handler): - Slider(rc, layout, maxValue, curValue), - m_decreaseBtn(elm_button_add(*m_layout)), - m_increaseBtn(elm_button_add(*m_layout)), - m_handler(handler) + EventHandler handler): + Slider(rc, layout, maxValue, curValue), + m_handler(std::move(handler)), + m_decreaseBtn(elm_button_add(*m_layout)), + m_increaseBtn(elm_button_add(*m_layout)) { prepare(info, curValue); } void VolumeControl::prepare(const TString &info, int curValue) { - m_layout->addEventHandler(WidgetEvent::SHOW, WEAK_DELEGATE( - VolumeControl::onWidgetShowCb, asWeak(*this))); - m_layout->addEventHandler(WidgetEvent::HIDE, WEAK_DELEGATE( - VolumeControl::onWidgetHideCb, asWeak(*this))); + m_layout->addEventHandler(WidgetEvent::SHOW, + WEAK_DELEGATE_THIS(onWidgetShowCb)); + m_layout->addEventHandler(WidgetEvent::HIDE, + WEAK_DELEGATE_THIS(onWidgetHideCb)); m_decreaseBtn.setStyle(impl::STYLE_BTN_MINUS); - m_decreaseBtn.addEventHandler(BTN_CLICKED, WEAK_DELEGATE( - VolumeControl::onDecreaseBtnClickedCb, asWeak(*this))); + m_decreaseBtn.addEventHandler(BTN_CLICKED, + WEAK_DELEGATE_THIS(onDecreaseBtnClickedCb)); m_layout->setContent(m_decreaseBtn, impl::PART_SWL_MINUS); show(m_decreaseBtn); m_increaseBtn.setStyle(impl::STYLE_BTN_PLUS); - m_increaseBtn.addEventHandler(BTN_CLICKED, WEAK_DELEGATE( - VolumeControl::onIncreaseBtnClickedCb, asWeak(*this))); + m_increaseBtn.addEventHandler(BTN_CLICKED, + WEAK_DELEGATE_THIS(onIncreaseBtnClickedCb)); m_layout->setContent(m_increaseBtn, impl::PART_SWL_PLUS); show(m_increaseBtn); @@ -167,23 +168,17 @@ namespace callui { isEnable ? enable(m_decreaseBtn) : disable(m_decreaseBtn); } - void VolumeControl::setEventHandler( - const EventHandler &handler) - { - m_handler = handler; - } - void VolumeControl::onDecreaseBtnClickedCb(Widget &widget, void *eventInfo) { - if (m_handler) { - m_handler(Event::DECREASE); + if (const auto handler = m_handler.lock()) { + handler(Event::DECREASE); } } void VolumeControl::onIncreaseBtnClickedCb(Widget &widget, void *eventInfo) { - if (m_handler) { - m_handler(Event::INCREASE); + if (const auto handler = m_handler.lock()) { + handler(Event::INCREASE); } } diff --git a/call-ui/view/VolumeControl.h b/call-ui/view/VolumeControl.h index 0906110..168a4ea 100644 --- a/call-ui/view/VolumeControl.h +++ b/call-ui/view/VolumeControl.h @@ -64,7 +64,7 @@ namespace callui { * @param[in] info Text to set * @return Reference to builder */ - Builder &setInfoText(const ucl::TString &info); + Builder &setInfoText(ucl::TString info); /** * @brief Sets max volume value to display @@ -85,7 +85,7 @@ namespace callui { * @param[in] handler Event handler * @return Reference to builder */ - Builder &setEventHandler(const EventHandler &handler); + Builder &setEventHandler(EventHandler handler); /** * @brief Creates new instance of VolumeControl @@ -127,12 +127,6 @@ namespace callui { */ void setIncreaseBtnEnable(bool isEnable); - /** - * @brief Sets event handler - * @param[in] handler Event handler - */ - void setEventHandler(const EventHandler &handler); - /** * @brief Gets Access object of decrease volume button * @remark Use only for Screen Reader feature @@ -167,7 +161,7 @@ namespace callui { const ucl::TString &info, int maxValue, int curValue, - const EventHandler &handler); + EventHandler handler); void prepare(const ucl::TString &info, int curValue); @@ -180,9 +174,10 @@ namespace callui { void registerAccessObjectInformation(); private: + const EventHandler m_handler; + ucl::StyledWidget m_decreaseBtn; ucl::StyledWidget m_increaseBtn; - EventHandler m_handler; ucl::ElmWidgetSRef m_valueTxtAo; diff --git a/project_def.prop b/project_def.prop index 501dfc9..732c945 100644 --- a/project_def.prop +++ b/project_def.prop @@ -36,7 +36,7 @@ USER_OBJS = USER_C_INC_DIRS = USER_INC_FILES = ## C++ Compiler -USER_CPP_INC_DIRS = . ucl/include +USER_CPP_INC_DIRS = /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/libxml2 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/SDL2 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/appcore/ /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/appcore-agent /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/appcore-watch /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/appfw /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/asp/ /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/aul/ /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/badge /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/base /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/cairo /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/calendar-service2 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/call-manager /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/chromium-ewk /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ckm /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/contacts-svc /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/content /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/context-service /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/csr /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/dali /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/dali-toolkit /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/dbus-1.0 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/device /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/dlog /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ecore-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ecore-buffer-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ecore-con-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ecore-evas-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ecore-file-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ecore-imf-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ecore-imf-evas-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ecore-input-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ecore-input-evas-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ecore-ipc-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ector-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/e_dbus-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/edje-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/eet-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/efl-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/efl-extension /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/efreet-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/eina-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/eina-1/eina /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/eio-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/eldbus-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/elementary-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/embryo-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/emile-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/eo-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/eom /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ethumb-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ethumb-client-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/evas-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/feedback /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/fontconfig /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/freetype2 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/gio-unix-2.0 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/glib-2.0 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/harfbuzz /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/iotcon /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/json-glib-1.0 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/location /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/maps /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/media /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/media-content /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/messaging /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/metadata-editor /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/minizip /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/msg-service /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/network /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/notification /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/nsd/ /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/phonenumber-utils /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/pkgmgr /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/rua/ /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/sensor /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/storage /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/system /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/telephony /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/telephony-client /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/tzsh /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ug-1 /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/ui /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/vconf /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/vulkan /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/widget_service /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/widget_viewer_dali /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/widget_viewer_evas /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/include/yaca /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/lib/dbus-1.0/include /home/igor/TizenStudio/tizen-studio/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core.private/usr/lib/glib-2.0/include . ucl/include USER_CPP_INC_FILES = USER_INC_DIRS = $(USER_C_INC_DIRS) $(USER_CPP_INC_DIRS) @@ -46,16 +46,16 @@ USER_LIB_DIRS = # EDC Resource Path USER_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edc/images -USER_EDCS_SOUND_DIRS = -USER_EDCS_FONT_DIRS = +USER_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edc/sounds +USER_EDCS_FONT_DIRS = ${OUTPUT_DIR} edc/fonts # EDC Flags USER_EXT_EDC_KEYS = EDC0 USER_EXT_EDC0_EDCS = res/edje/theme.edc USER_EXT_EDC0_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edc/images -USER_EXT_EDC0_EDCS_SOUND_DIRS = -USER_EXT_EDC0_EDCS_FONT_DIRS = +USER_EXT_EDC0_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edc/sounds +USER_EXT_EDC0_EDCS_FONT_DIRS = ${OUTPUT_DIR} edc/fonts # Resource Filter USER_RES_INCLUDE = diff --git a/ucl/include/ucl/appfw/SysEventProvider.h b/ucl/include/ucl/appfw/SysEventProvider.h index c2050bf..2d926e9 100644 --- a/ucl/include/ucl/appfw/SysEventProvider.h +++ b/ucl/include/ucl/appfw/SysEventProvider.h @@ -37,8 +37,8 @@ namespace ucl { EventHandlerDelFunc delFunc); ~SysEventProvider(); - void addEventHandler(const SysEventHandler &handler); - void delEventHandler(const SysEventHandler &handler); + void addEventHandler(SysEventHandler handler); + void delEventHandler(SysEventHandler::CDRef handler); private: int addEventHandler(app_event_handler_h *handler, diff --git a/ucl/include/ucl/appfw/SysEventProvider.hpp b/ucl/include/ucl/appfw/SysEventProvider.hpp index 1d52394..d38039f 100644 --- a/ucl/include/ucl/appfw/SysEventProvider.hpp +++ b/ucl/include/ucl/appfw/SysEventProvider.hpp @@ -17,13 +17,13 @@ namespace ucl { inline void SysEventProvider::addEventHandler( - const SysEventHandler &handler) + SysEventHandler handler) { - m_event += handler; + m_event += std::move(handler); } inline void SysEventProvider::delEventHandler( - const SysEventHandler &handler) + SysEventHandler::CDRef handler) { m_event -= handler; } diff --git a/ucl/include/ucl/gui/NaviItem.h b/ucl/include/ucl/gui/NaviItem.h index 1161847..a11c7ca 100644 --- a/ucl/include/ucl/gui/NaviItem.h +++ b/ucl/include/ucl/gui/NaviItem.h @@ -28,7 +28,7 @@ namespace ucl { public: using WidgetItem::WidgetItem; - void setPopHandler(const PopHandler &handler) const; + void setPopHandler(PopHandler handler) const; void popTo() const; void promote() const; diff --git a/ucl/include/ucl/gui/NaviItem.hpp b/ucl/include/ucl/gui/NaviItem.hpp index 6b33fe4..b4cba2b 100644 --- a/ucl/include/ucl/gui/NaviItem.hpp +++ b/ucl/include/ucl/gui/NaviItem.hpp @@ -16,7 +16,7 @@ namespace ucl { - inline void NaviItem::setPopHandler(const PopHandler &handler) const + inline void NaviItem::setPopHandler(const PopHandler handler) const { elm_naviframe_item_pop_cb_set(getIt(), handler.getStubA(), handler.getData()); diff --git a/ucl/include/ucl/gui/Widget.h b/ucl/include/ucl/gui/Widget.h index 49942b4..9292cad 100644 --- a/ucl/include/ucl/gui/Widget.h +++ b/ucl/include/ucl/gui/Widget.h @@ -59,8 +59,10 @@ namespace ucl { void addEventHandler(WidgetEvent event, WidgetEventHandler handler); void addEventHandler(SmartEvent event, WidgetEventHandler handler); - void delEventHandler(WidgetEvent event, WidgetEventHandler handler); - void delEventHandler(SmartEvent event, WidgetEventHandler handler); + void delEventHandler(WidgetEvent event, + WidgetEventHandler::CDRef handler); + void delEventHandler(SmartEvent event, + WidgetEventHandler::CDRef handler); void callEvent(SmartEvent event, void *eventInfo = nullptr); diff --git a/ucl/include/ucl/gui/Window.h b/ucl/include/ucl/gui/Window.h index dba64f0..c21fb42 100644 --- a/ucl/include/ucl/gui/Window.h +++ b/ucl/include/ucl/gui/Window.h @@ -43,7 +43,7 @@ namespace ucl { Builder &setName(std::string value); Builder &setTitle(std::string value); - Builder &setSetIndicatorVisible(bool value); + Builder &setIndicatorVisible(bool value); Builder &setRotations(std::vector value); Builder &setIsOwner(bool value); @@ -77,6 +77,7 @@ namespace ucl { bool isRotationsSupported() const; void setRotations(const std::vector &value); + void resizeToScreen(); void lower(); private: diff --git a/ucl/include/ucl/gui/Window.hpp b/ucl/include/ucl/gui/Window.hpp index 9273b67..7a9ab93 100644 --- a/ucl/include/ucl/gui/Window.hpp +++ b/ucl/include/ucl/gui/Window.hpp @@ -55,7 +55,7 @@ namespace ucl { return *this; } - inline Window::Builder &Window::Builder::setSetIndicatorVisible( + inline Window::Builder &Window::Builder::setIndicatorVisible( const bool value) { m_isIndicatorVisible = value; diff --git a/ucl/include/ucl/misc/Event.hpp b/ucl/include/ucl/misc/Event.hpp index ed4e402..4e80515 100644 --- a/ucl/include/ucl/misc/Event.hpp +++ b/ucl/include/ucl/misc/Event.hpp @@ -56,13 +56,13 @@ namespace ucl { void Event::operator-=(const DELEGATE2 &delegate) { const auto it = std::find( - m_delegates.begin(), m_delegates.end(), delegate); - if (it != m_delegates.end()) { + m_delegates.rbegin(), m_delegates.rend(), delegate); + if (it != m_delegates.rend()) { if (isLocked()) { *it = {}; m_isFragmented = true; } else { - m_delegates.erase(it); + m_delegates.erase(it.base() - 1); } } } @@ -78,7 +78,7 @@ namespace ucl { void Event::dispatch(ARGS &&...args) { dispatchImpl( - [](const DELEGATE &delegate, ARGS &&...args) + [](const typename DELEGATE::LockDelegate &delegate, ARGS &&...args) { delegate(std::forward(args)...); return true; @@ -91,7 +91,8 @@ namespace ucl { void Event::dispatchPred(PREDICATE &&pred, ARGS &&...args) { dispatchImpl( - [&pred](const DELEGATE &delegate, ARGS &&...args) + [&pred](const typename DELEGATE::LockDelegate &delegate, + ARGS &&...args) { return impl::doInvokePred(std::forward(pred), delegate, std::forward(args)...); @@ -106,8 +107,7 @@ namespace ucl { lock(); const auto size = m_delegates.size(); for (size_t i = 0; i < size; ++i) { - const auto &delegate = m_delegates[i]; - if (delegate) { + if (const auto delegate = m_delegates[i].lock()) { if (!doInvoke(delegate, std::forward(args)...)) { break; } diff --git a/ucl/include/ucl/misc/MonoObservable.hpp b/ucl/include/ucl/misc/MonoObservable.hpp index a0fad4b..1be4a6b 100644 --- a/ucl/include/ucl/misc/MonoObservable.hpp +++ b/ucl/include/ucl/misc/MonoObservable.hpp @@ -74,8 +74,8 @@ namespace ucl { { if (!(value == m_value)) { m_value = value; - if (m_onValueChanged) { - m_onValueChanged(); + if (const auto handler = m_onValueChanged.lock()) { + handler(); } } return *this; diff --git a/ucl/include/ucl/misc/Observable.h b/ucl/include/ucl/misc/Observable.h index dcc8063..4e180f4 100644 --- a/ucl/include/ucl/misc/Observable.h +++ b/ucl/include/ucl/misc/Observable.h @@ -36,7 +36,7 @@ namespace ucl { Observable &operator=(Observable v) noexcept; void addObserver(NotiHandler handler); - void removeObserver(const NotiHandler &handler); + void removeObserver(NotiHandler::CDRef handler); const T &getValue() const noexcept; diff --git a/ucl/include/ucl/misc/Observable.hpp b/ucl/include/ucl/misc/Observable.hpp index 01b92f3..d79b5e4 100644 --- a/ucl/include/ucl/misc/Observable.hpp +++ b/ucl/include/ucl/misc/Observable.hpp @@ -49,7 +49,7 @@ namespace ucl { } template - inline void Observable::removeObserver(const NotiHandler &handler) + inline void Observable::removeObserver(NotiHandler::CDRef handler) { m_onValueChanged -= handler; } diff --git a/ucl/include/ucl/misc/Timeout.h b/ucl/include/ucl/misc/Timeout.h index 5ca3ae2..ebff032 100644 --- a/ucl/include/ucl/misc/Timeout.h +++ b/ucl/include/ucl/misc/Timeout.h @@ -31,13 +31,12 @@ namespace ucl { using TimeoutHandler = WeakDelegate; public: - static TimeoutSRef create(double timeoutSec, - const TimeoutHandler &handler); + static TimeoutSRef create(double timeoutSec, TimeoutHandler handler); bool isExpired() const; private: - Timeout(const TimeoutHandler &handler, Private); + Timeout(TimeoutHandler handler, Private); ~Timeout(); Result prepare(double timeoutSec); @@ -45,8 +44,8 @@ namespace ucl { Eina_Bool onTimer(); private: + const TimeoutHandler m_handler; Ecore_Timer *m_timer; - TimeoutHandler m_handler; friend class ReffedObj; }; diff --git a/ucl/include/ucl/mvp/GuiPresenter.h b/ucl/include/ucl/mvp/GuiPresenter.h index 6b737e9..d56e0bd 100644 --- a/ucl/include/ucl/mvp/GuiPresenter.h +++ b/ucl/include/ucl/mvp/GuiPresenter.h @@ -62,11 +62,15 @@ namespace ucl { Result prepare(GuiPresenter &parent, int flags = PF_DEFAULT); Window &getWindow(); - bool isWindowReady() const; + WindowSRef getWindowRef(); void addDeactivatorException(const void *deactivator); void setDeactivatorSink(const WidgetSRef &sink); + const void *getSelfDeactivator() const; + void activateSelf(); + void deactivateSelf(); + void sendActivate(Widget &sender); void sendDeactivate(Widget &sender); @@ -96,7 +100,7 @@ namespace ucl { private: std::unordered_set m_deactivatorExceptions; std::unordered_set m_deactivators; - WindowSRef m_window; + WindowWRef m_window; WidgetSRef m_sink; WidgetWRef m_parentSink; bool m_hasBuildInSources; diff --git a/ucl/include/ucl/mvp/ListItemPresenter.h b/ucl/include/ucl/mvp/ListItemPresenter.h index 4b7d13d..b31c29c 100644 --- a/ucl/include/ucl/mvp/ListItemPresenter.h +++ b/ucl/include/ucl/mvp/ListItemPresenter.h @@ -33,6 +33,11 @@ namespace ucl { protected IPicker { public: Result updateItem(); + Result bringInItem(Elm_Genlist_Item_Scrollto_Type type = + ELM_GENLIST_ITEM_SCROLLTO_IN); + Result showItem(Elm_Genlist_Item_Scrollto_Type type = + ELM_GENLIST_ITEM_SCROLLTO_IN); + // IDisposable // diff --git a/ucl/include/ucl/util/delegation/BaseDelegate.h b/ucl/include/ucl/util/delegation/BaseDelegate.h index aab2117..e02de8d 100644 --- a/ucl/include/ucl/util/delegation/BaseDelegate.h +++ b/ucl/include/ucl/util/delegation/BaseDelegate.h @@ -49,7 +49,7 @@ namespace ucl { explicit operator bool() const noexcept; protected: - BaseDelegate(const DATA &data, StubA stubA) noexcept; + BaseDelegate(DATA data, StubA stubA) noexcept; protected: DATA m_data; diff --git a/ucl/include/ucl/util/delegation/BaseDelegate.hpp b/ucl/include/ucl/util/delegation/BaseDelegate.hpp index f25c0a7..2f7544f 100644 --- a/ucl/include/ucl/util/delegation/BaseDelegate.hpp +++ b/ucl/include/ucl/util/delegation/BaseDelegate.hpp @@ -32,8 +32,8 @@ namespace ucl { template inline BaseDelegate:: - BaseDelegate(const DATA &data, StubA stubA) noexcept : - m_data(data), + BaseDelegate(DATA data, StubA stubA) noexcept : + m_data(std::move(data)), m_stubA(stubA) { } diff --git a/ucl/include/ucl/util/delegation/BaseDelegate2.h b/ucl/include/ucl/util/delegation/BaseDelegate2.h index ff3b635..dc84bc1 100644 --- a/ucl/include/ucl/util/delegation/BaseDelegate2.h +++ b/ucl/include/ucl/util/delegation/BaseDelegate2.h @@ -38,7 +38,7 @@ namespace ucl { StubB getStubB() const noexcept; protected: - BaseDelegate2(const DATA &data, StubA stubA, StubB stubB) noexcept; + BaseDelegate2(DATA data, StubA stubA, StubB stubB) noexcept; private: StubB m_stubB; diff --git a/ucl/include/ucl/util/delegation/BaseDelegate2.hpp b/ucl/include/ucl/util/delegation/BaseDelegate2.hpp index 6d8efa7..82c2333 100644 --- a/ucl/include/ucl/util/delegation/BaseDelegate2.hpp +++ b/ucl/include/ucl/util/delegation/BaseDelegate2.hpp @@ -18,8 +18,8 @@ namespace ucl { template inline BaseDelegate2:: - BaseDelegate2(const DATA &data, StubA stubA, StubB stubB) noexcept : - BaseDelegate(data, stubA), + BaseDelegate2(DATA data, StubA stubA, StubB stubB) noexcept : + BaseDelegate(std::move(data), stubA), m_stubB(stubB) { } diff --git a/ucl/include/ucl/util/delegation/Delegate.h b/ucl/include/ucl/util/delegation/Delegate.h index e1e7416..714b448 100644 --- a/ucl/include/ucl/util/delegation/Delegate.h +++ b/ucl/include/ucl/util/delegation/Delegate.h @@ -26,9 +26,14 @@ namespace ucl { template class Delegate : public BaseDelegate { + public: + using LockDelegate = Delegate; + public: using BaseDelegate::BaseDelegate; + LockDelegate lock() const; + R operator()(ARGS ...args) const; template @@ -37,9 +42,9 @@ namespace ucl { static Delegate make(const CLASS *data) noexcept; template - static Delegate makeA(CLASS &data) noexcept; + static Delegate makeA(CLASS *data) noexcept; template - static Delegate makeB(CLASS &data) noexcept; + static Delegate makeB(CLASS *data) noexcept; template static Delegate makeA(HANDLE data) noexcept; diff --git a/ucl/include/ucl/util/delegation/Delegate.hpp b/ucl/include/ucl/util/delegation/Delegate.hpp index 632ec24..ed24a92 100644 --- a/ucl/include/ucl/util/delegation/Delegate.hpp +++ b/ucl/include/ucl/util/delegation/Delegate.hpp @@ -16,6 +16,13 @@ namespace ucl { + template + inline typename Delegate::LockDelegate + Delegate::lock() const + { + return *this; + } + template inline R Delegate::operator()(ARGS ...args) const { @@ -43,18 +50,18 @@ namespace ucl { template template inline Delegate - Delegate::makeA(CLASS &data) noexcept + Delegate::makeA(CLASS *data) noexcept { - return {const_cast(static_cast(&data)), + return {const_cast(static_cast(data)), Delegate::Cb::template stubA2A}; } template template inline Delegate - Delegate::makeB(CLASS &data) noexcept + Delegate::makeB(CLASS *data) noexcept { - return {const_cast(static_cast(&data)), + return {const_cast(static_cast(data)), Delegate::Cb::template stubA2B}; } @@ -63,7 +70,7 @@ namespace ucl { inline Delegate Delegate::makeA(const HANDLE data) noexcept { - return {const_cast(static_cast(data)), + return {const_cast(static_cast(data)), Delegate::Cb::template stubA2A}; } @@ -72,7 +79,7 @@ namespace ucl { inline Delegate Delegate::makeB(const HANDLE data) noexcept { - return {const_cast(static_cast(data)), + return {const_cast(static_cast(data)), Delegate::Cb::template stubA2B}; } diff --git a/ucl/include/ucl/util/delegation/Delegate2.h b/ucl/include/ucl/util/delegation/Delegate2.h index 56ff3fb..7c643ef 100644 --- a/ucl/include/ucl/util/delegation/Delegate2.h +++ b/ucl/include/ucl/util/delegation/Delegate2.h @@ -26,9 +26,14 @@ namespace ucl { template class Delegate2 : public BaseDelegate2 { + public: + using LockDelegate = Delegate2; + public: using BaseDelegate2::BaseDelegate2; + LockDelegate lock() const; + R operator()(ARGS ...args) const; template @@ -37,9 +42,9 @@ namespace ucl { static Delegate2 make(const CLASS *data) noexcept; template - static Delegate2 makeA(CLASS &data) noexcept; + static Delegate2 makeA(CLASS *data) noexcept; template - static Delegate2 makeB(CLASS &data) noexcept; + static Delegate2 makeB(CLASS *data) noexcept; template static Delegate2 makeA(HANDLE data) noexcept; diff --git a/ucl/include/ucl/util/delegation/Delegate2.hpp b/ucl/include/ucl/util/delegation/Delegate2.hpp index 085ba46..a3ad411 100644 --- a/ucl/include/ucl/util/delegation/Delegate2.hpp +++ b/ucl/include/ucl/util/delegation/Delegate2.hpp @@ -16,6 +16,13 @@ namespace ucl { + template + inline typename Delegate2::LockDelegate + Delegate2::lock() const + { + return *this; + } + template inline R Delegate2::operator()(ARGS ...args) const { @@ -45,9 +52,9 @@ namespace ucl { template template inline Delegate2 - Delegate2::makeA(CLASS &data) noexcept + Delegate2::makeA(CLASS *data) noexcept { - return {const_cast(static_cast(&data)), + return {const_cast(static_cast(data)), Delegate2::Cb::template stubA2A, Delegate2::Cb::template stubB2A}; } @@ -55,9 +62,9 @@ namespace ucl { template template inline Delegate2 - Delegate2::makeB(CLASS &data) noexcept + Delegate2::makeB(CLASS *data) noexcept { - return {const_cast(static_cast(&data)), + return {const_cast(static_cast(data)), Delegate2::Cb::template stubA2B, Delegate2::Cb::template stubB2B}; } @@ -67,7 +74,7 @@ namespace ucl { inline Delegate2 Delegate2::makeA(const HANDLE data) noexcept { - return {const_cast(static_cast(data)), + return {const_cast(static_cast(data)), Delegate2::Cb::template stubA2A, Delegate2::Cb::template stubB2A}; } @@ -77,7 +84,7 @@ namespace ucl { inline Delegate2 Delegate2::makeB(const HANDLE data) noexcept { - return {const_cast(static_cast(data)), + return {const_cast(static_cast(data)), Delegate2::Cb::template stubA2B, Delegate2::Cb::template stubB2B}; } diff --git a/ucl/include/ucl/util/delegation/helpers.h b/ucl/include/ucl/util/delegation/helpers.h index 54ebb99..d4f574b 100644 --- a/ucl/include/ucl/util/delegation/helpers.h +++ b/ucl/include/ucl/util/delegation/helpers.h @@ -21,41 +21,77 @@ namespace ucl { // Automatic function signature detection for a specific type // - template