TizenRefApp-9540 [Call UI] Update UCL source files 74/154174/2
authorIgor Olshevskyi <i.olshevskyi@samsung.com>
Mon, 9 Oct 2017 07:25:59 +0000 (10:25 +0300)
committerIgor Olshevskyi <i.olshevskyi@samsung.com>
Mon, 9 Oct 2017 09:40:24 +0000 (12:40 +0300)
Change-Id: Iaad3d9e1dfabed8f69b1e5e39b1e0a56996c8725

109 files changed:
call-ui/model/IContactInfo.h
call-ui/model/ISoundManager.h
call-ui/model/impl/ActiveCall.cpp
call-ui/model/impl/ActiveCall.h
call-ui/model/impl/BatteryStateSource.cpp
call-ui/model/impl/BatteryStateSource.h
call-ui/model/impl/BluetoothManager.cpp
call-ui/model/impl/BluetoothManager.h
call-ui/model/impl/CallInfo.cpp
call-ui/model/impl/CallInfo.h
call-ui/model/impl/CallManager.cpp
call-ui/model/impl/CallManager.h
call-ui/model/impl/ConferenceCallInfo.cpp
call-ui/model/impl/ConferenceCallInfo.h
call-ui/model/impl/ConnectionStateSource.cpp
call-ui/model/impl/ConnectionStateSource.h
call-ui/model/impl/ContactInfo.cpp
call-ui/model/impl/ContactInfo.h
call-ui/model/impl/EndCall.cpp
call-ui/model/impl/EndCall.h
call-ui/model/impl/HdVoiceStateSource.cpp
call-ui/model/impl/HdVoiceStateSource.h
call-ui/model/impl/HeldCall.cpp
call-ui/model/impl/HeldCall.h
call-ui/model/impl/IIndicatorStateSource.h
call-ui/model/impl/IncomingCall.cpp
call-ui/model/impl/IncomingCall.h
call-ui/model/impl/IndicatorStateProvider.cpp
call-ui/model/impl/IndicatorStateProvider.h
call-ui/model/impl/RejectMsg.cpp
call-ui/model/impl/RejectMsg.h
call-ui/model/impl/RejectMsgProvider.h
call-ui/model/impl/RssiStateSource.cpp
call-ui/model/impl/RssiStateSource.h
call-ui/model/impl/SimSlotStateSource.cpp
call-ui/model/impl/SimSlotStateSource.h
call-ui/model/impl/SoundManager.cpp
call-ui/model/impl/SoundManager.h
call-ui/presenters/Instance.cpp
call-ui/presenters/base/Page.cpp
call-ui/presenters/dialogs/AcceptDialog.cpp
call-ui/presenters/dialogs/AcceptDialog.h
call-ui/presenters/misc/AcceptRejectPresenter.cpp
call-ui/presenters/misc/AcceptRejectPresenter.h
call-ui/presenters/misc/AccessoryPresenter.cpp
call-ui/presenters/misc/AccessoryPresenter.h
call-ui/presenters/misc/AtspiHighlightHelper.cpp
call-ui/presenters/misc/CallInfoPresenter.cpp
call-ui/presenters/misc/CallInfoPresenter.h
call-ui/presenters/misc/CallStatusPresenter.cpp
call-ui/presenters/misc/CallStatusPresenter.h
call-ui/presenters/misc/DeviceStatePresenter.cpp
call-ui/presenters/misc/DeviceStatePresenter.h
call-ui/presenters/misc/IndicatorPresenter.cpp
call-ui/presenters/misc/IndicatorPresenter.h
call-ui/presenters/misc/MoreOptionsPresenter.cpp
call-ui/presenters/misc/MoreOptionsPresenter.h
call-ui/presenters/misc/MotionSensorPresenter.cpp
call-ui/presenters/misc/MotionSensorPresenter.h
call-ui/presenters/misc/RejectMsgPresenter.cpp
call-ui/presenters/misc/RejectMsgPresenter.h
call-ui/presenters/pages/KeypadPage.cpp
call-ui/presenters/pages/KeypadPage.h
call-ui/presenters/pages/MainPage.cpp
call-ui/presenters/pages/MainPage.h
call-ui/view/AcceptRejectWidget.cpp
call-ui/view/AcceptRejectWidget.h
call-ui/view/VolumeControl.cpp
call-ui/view/VolumeControl.h
project_def.prop
ucl/include/ucl/appfw/SysEventProvider.h
ucl/include/ucl/appfw/SysEventProvider.hpp
ucl/include/ucl/gui/NaviItem.h
ucl/include/ucl/gui/NaviItem.hpp
ucl/include/ucl/gui/Widget.h
ucl/include/ucl/gui/Window.h
ucl/include/ucl/gui/Window.hpp
ucl/include/ucl/misc/Event.hpp
ucl/include/ucl/misc/MonoObservable.hpp
ucl/include/ucl/misc/Observable.h
ucl/include/ucl/misc/Observable.hpp
ucl/include/ucl/misc/Timeout.h
ucl/include/ucl/mvp/GuiPresenter.h
ucl/include/ucl/mvp/ListItemPresenter.h
ucl/include/ucl/util/delegation/BaseDelegate.h
ucl/include/ucl/util/delegation/BaseDelegate.hpp
ucl/include/ucl/util/delegation/BaseDelegate2.h
ucl/include/ucl/util/delegation/BaseDelegate2.hpp
ucl/include/ucl/util/delegation/Delegate.h
ucl/include/ucl/util/delegation/Delegate.hpp
ucl/include/ucl/util/delegation/Delegate2.h
ucl/include/ucl/util/delegation/Delegate2.hpp
ucl/include/ucl/util/delegation/helpers.h
ucl/include/ucl/util/delegation/macro.h
ucl/include/ucl/util/delegation/shortMacro.h
ucl/include/ucl/util/memory/WeakRef.hpp
ucl/include/ucl/util/memory/helpers.h
ucl/include/ucl/util/smartDelegation/WeakDelegate.h
ucl/include/ucl/util/smartDelegation/WeakDelegate.hpp
ucl/include/ucl/util/smartDelegation/macro.h
ucl/include/ucl/util/smartDelegation/shortMacro.h
ucl/source/appfw/UIApp.cpp
ucl/source/gui/Naviframe.cpp
ucl/source/gui/Widget.cpp
ucl/source/gui/Window.cpp
ucl/source/misc/Timeout.cpp
ucl/source/mvp/GuiPresenter.cpp
ucl/source/mvp/ListItemPresenter.cpp
ucl/source/mvp/ListPresenter.cpp

index 62648364075e73cb31da9003fc8f62d186c2df42..45157b3d97f328ad86912464cd2163d82f9f5c18 100644 (file)
@@ -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
index 4012cf9306e9d41448cd79eebd3fc9d48fbc55c2..d11b385655f34df871abcb5059bddef042327f63 100644 (file)
@@ -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;
index e3e74a58ab0bdf9907b50897434fd5746393e5cc..686699f430940b6b88dc48f9236b40b14958acc4 100644 (file)
@@ -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<ActiveCall>(cm, callData);
+               auto result = makeShared<ActiveCall>(std::move(cm), callData);
                FAIL_RETURN_VALUE(result->prepare(callData), {}, "result->prepare() failed!");
                return result;
        }
index 9b644b78f4b60aee4747c0d050943b1ddbe7de1a..e6b05ca944d11fc9e9882c72296075163add9981 100644 (file)
@@ -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;
 
index 6eb2769632d7638898a4f39f59b302b15c57558a..4fb149847f6bb156538f840b05929d50c5fb563c 100644 (file)
@@ -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)
index 9a5f06b8f69e9932113d9aa373692bfbbe72a4ce..98faee2bd0fd73808138a8b9d3a9dbfcfc8f4db8 100644 (file)
@@ -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();
index ff1a5a4afdd9a2463e1d23ad5493b49b45756d7c..25fa8e002f3ff82ca1af81c20a665d51fd4cbaef 100644 (file)
@@ -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();
                        }
                }
        }
index 36800f996ce6dc6c20daaec29016b217d4f44545..22e703d5c9cd9cd6b0efe5a78c76e30f08a0b101 100644 (file)
@@ -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();
index 67d695d8ce5d890371562bbc2ae08476a79fe231..36eed0804c160fe80812ebfa0672b2d747f4b595 100644 (file)
@@ -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<CallInfo>();
                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<cm_conf_call_data_t *>(l->data),
-                                               callInfoProvider);
+                                               contactInfoProvider);
                                if (!confCallInfo) {
                                        LOG_BREAK(res = RES_OUT_OF_MEMORY, "ConferenceCallInfo::newInstance() failed!");
                                }
index cb4029510aad3b0fb1c66e81d407ff166f3e6bd7..db8d541394810fa8058e3c086f4a48007aad03d7 100644 (file)
@@ -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;
index e72d42f5c60a0de2a4e01a5bd3b43ff0701026fd..dd28d48d2e6163d3997179e8f9b53678f66a467c 100644 (file)
@@ -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<CallManager>(callClient, listener);
+               if (!callClient) {
+                       LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "callClient is NULL");
+               }
+
+               auto result = makeShared<CallManager>(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;
 
index 954b1c65dae4a9b8ac013d81c8822a1634128c6b..6d26700dbc098feb8784b1171d33dcfd6defa7c7 100644 (file)
@@ -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;
index 8d3076ca301b1ba72be2f1c33ad20256e2f28b02..2d0bb1aacdae7db31ef97b7b6f4fc35191eb500f 100644 (file)
@@ -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<ConferenceCallInfo>();
-               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;
index 84e8f12cdd8e54569d9e5a92c364860bf3556072..d3b23caa5e6c22f833731c5dd121f00efcb7deb0 100644 (file)
@@ -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;
index 41d148d3ca7eb6407055861e5f21a8eb0c2fbc04..e7c38ee0f1fa60811e2a8d2c23f40c940d372091 100644 (file)
@@ -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)
index 053d03fc1e6345b3274ad69fb1986ad766dfbeb8..795a57ec1a0dbcc00dad7991cc8e50b0f5e41b10 100644 (file)
@@ -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();
index 8a2aea71d4d5d30aea2dfc99b7e96bd2088b4c5b..d50fbdeb536a9d32d432220f776733477570599b 100644 (file)
@@ -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<ContactInfo>(personId, name, imagePath, type);
+               return makeShared<ContactInfo>(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;
        }
index 064bbf5c076f32721a5e8b99728e24ee96c57722..420cafdf4eaa963a67185e4d2218ea0c339a9ddd 100644 (file)
@@ -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<ContactInfo>;
        };
index bc8ca965059f2946a6143d0525bddbb0e659904d..261bf90ab0014b64980cd0dc07ee23ea5d155d99 100644 (file)
@@ -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<EndCall>(cm, callInfo);
+               return makeShared<EndCall>(std::move(cm), std::move(callInfo));
        }
 
        ICallInfoSCRef EndCall::getInfo() const
index 925db9023be888cef1d1374b20ad70ff1132bb4f..748e0c4fbb890aaacab9eb288c80689288a4b961 100644 (file)
@@ -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<EndCall>;
index a8c2019a6c395f07a6eb08a51e15152507e34a26..fb988a6a240c02bd42459165a45d945818484a08 100644 (file)
@@ -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)
index 218b977e23353f9a1de3f168a9128b6a3f9b1dae..f56dbb199e1e894725e1f8d0668cec1fc444d5cd 100644 (file)
@@ -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);
index 033b10d0e889fe4d7f8bbf3327f7ca1edd4fbc27..83362ebc2541044fd8a9bce018f077ca5d43502f 100644 (file)
@@ -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<HeldCall>(cm, callData);
-               FAIL_RETURN_VALUE(result->prepare(callData), {}, "result->prepare() failed!");
+               auto result = makeShared<HeldCall>(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;
        }
index f03cb85ae656a0b054e003ef26215026b8d8d66a..fa56e1df8b7e43e9beefd572be7c5958ccb81e30 100644 (file)
@@ -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<HeldCall>;
index 3869db8026f8f0ff87d2b9adf3ccc0d7f2dcb501..a73ab27ed21e0ec0924ec21b87b3a7f9776d454c 100644 (file)
@@ -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;
index 48809885849768122788ba4a12448b6b3b8c02c4..332dab7324b73a38dbeb28790402f1d088b501eb 100644 (file)
@@ -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<IncomingCall>(cm, callData);
-               FAIL_RETURN_VALUE(result->prepare(callData), {}, "result->prepare() failed!");
+               auto result = makeShared<IncomingCall>(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()
index 839d737a0f8988c268595407cf9a7ff51f02d2fe..9f553df5500489ddc53820e8ae4b0a4bb65a7270 100644 (file)
@@ -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<IncomingCall>;
index a23f8e744ab69c0be1f470307334a12f1244f5ed..1d7b27598277ceeab7b570cf5c948dc56d87169f 100644 (file)
@@ -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
index b2b35b5a4e77ae9e5417ad84df9ec861770b3f2d..448cf445f53faa7c8be66a23e930ede2c21ee531 100644 (file)
@@ -31,7 +31,7 @@ namespace callui {
         * @brief Implementation of IIndicatorStateProvider interface
         * @see IIncomingCall
         */
-       class IndicatorStateProvider final: public IIndicatorStateProvider {
+       class IndicatorStateProvider final : public IIndicatorStateProvider {
        public:
 
                /**
index cee4d95089a0d1aafade38f4ab6ad086c2f3b1f5..301eab1ce6186288c8124abd64e774a3ca3b7a8e 100644 (file)
@@ -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<RejectMsg>(client, string);
+               if (!client) {
+                       LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "client is NULL");
+               }
+
+               return makeShared<RejectMsg>(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
index 617f5b1fce0cba05b081bdd31c28f9d759b39c69..9fff9a7e8cf651529549bf97739381dcd7367bbf 100644 (file)
@@ -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<RejectMsg>;
        };
index 0747a421e3acc4d26332c92e2b7079f5ec4df4c4..881bae81b21f20283e61a066f4d09218c4a06bf3 100644 (file)
@@ -31,7 +31,7 @@ namespace callui {
         * @brief Implementation of IRejectMsgProvider interface
         * @see IRejectMsgProvider
         */
-       class RejectMsgProvider : public IRejectMsgProvider {
+       class RejectMsgProvider final : public IRejectMsgProvider {
        public:
 
                /**
index 71ce4d1d702d5616be0337ae089ebb8cbb800b4b..fe80040ce454d14de2464fc7eb863872d51829ae 100644 (file)
@@ -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)
index 10761a8cd43b75cd9ad923f2c7e885425e975926..74d0ba2ea56fed90d25c50ac11065a2de7fdec97 100644 (file)
@@ -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();
index 7cf7a73c49dcd4b536840bc2e482b0e5cf4d396b..c92bb6fde08d62d5beeed07fc1a7c20e6061cd42 100644 (file)
@@ -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)
index bb3fa97d731900f6c9dc2f37a0026073885fbccc..76f84260279f95123f2b1020486b6d1b6fac7f09 100644 (file)
@@ -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);
index 8b39ac9338453d2275d3a16b0acf557f8b2715c0..17c23ccf1f3c9fee438eb5532c8cd49d99083aa2 100644 (file)
@@ -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<SoundManager>(client);
+               if (!client) {
+                       LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "client is NULL");
+               }
+
+               auto result = makeShared<SoundManager>(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;
        }
index 0f3223b83642310ec7c6cdf5f864ba88c616eafa..70e71671c4db7e62e8bf2606d3c4ed43835e9d7e 100644 (file)
@@ -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<NotiHandler> m_audioStateEvent;
                ucl::Event<NotiHandler> m_muteStateEvent;
index d6d9ba203ebe79ae9d5cd80db54dc5cd19446eb8..f976f3964a7b47f029bb7ced221db97b6e5fffc8 100644 (file)
@@ -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;
        }
index 4286fdaf91fc9a24e895a603b45af5b532f6435b..1dd74157f4ea5e75a2a92ece74b3c4986b4ebf12 100644 (file)
@@ -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();
index 704a9b5e8b4109764f91ddf436db9bf148a3b43e..9c01674e1b6fc908c2fad2cb90275bf6c889c466 100644 (file)
@@ -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)
index dacf47146b45724e468773de35c2ac19da84fbd9..fae6945d81f27fbf272f205cd2a1e278ccfb315e 100644 (file)
@@ -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;
 
index 0dde4a068c9f8cf8b901ef860199e2042d94952e..87813855d7b745a08f4507646ebcfb9412d0af27 100644 (file)
@@ -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!");
index 1bb0b8c3f177f80daf82a6f21047163fa082f97f..d5316a5c5364b98a8f75518a3aa8bce5ad1f490e 100644 (file)
@@ -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<AcceptRejectPresenter>;
        };
index 29c2bff70d4724d61d94546a3cee99b0f7b7aff2..57e85cddf276012b7268f8f1d4f5d688f9e24698 100644 (file)
@@ -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<StyledWidget>(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<StyledWidget>(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<StyledWidget>(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<StyledWidget>(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));
                }
        }
 
index c7de5c982bea9411432bbdf00ffbb451ed6aee8e..a31ad70a8f185e4ad7b5ce5d9ec2f69cf6a4eea6 100644 (file)
@@ -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;
 
index 545d098ca5a0faf28fa0f194aa796f4d06a4b602..2d0f6826af3da2886e57b41f91e1625c942e708a 100644 (file)
@@ -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;
index 09598ca59ebeeac5964e8f3aa09c35565bc70979..bde542cfeda15b6fb02151aadcef2f50fbdfc3b8 100644 (file)
@@ -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<CallInfoPresenter>(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) {
index 47906280ca0c12426ae9480d984589683afb5549..dc476a52de34f6f95367b496c6376c5f77db5a1e 100644 (file)
@@ -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
index 9689074a18633029f27f1279de3081be4615dedf..534b3335aa851591b2a0fc3da2895324c4dfef14 100644 (file)
@@ -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)
index 62fa5fcb505a974b271c9c068deca64869c33cb5..5871cb7ce23eac14ca5e7f76cba0bed4bb949aa9 100644 (file)
@@ -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();
 
index b1a37b6dccc153bec0668bef9324443958ba0b0d..9996951299258dd631c6ad89ee39beb29fc68c82 100644 (file)
@@ -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<DeviceStatePresenter>(window);
+               if (!window) {
+                       LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, {}, "window is NULL");
+               }
+
+               auto result = makeShared<DeviceStatePresenter>(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)
        {
index a7dcee7a6a229a39ee9f6023af698cb739bdd944..da861e7986c9718ae3a67969d88e71f9f987e0ae 100644 (file)
@@ -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,
index f0601cc361f6c2f6d1ff22492e219028d6a12738..bdd7659efcd80ee99d3376e5d2d5dbbcad688ffd 100644 (file)
@@ -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))
        {
        }
 
index b1d969e5efe33358ecba1b15269143d61a633dc9..0451e31149182807e42817f55c2d1ac46789b7d4 100644 (file)
@@ -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<IndicatorPresenter>;
        };
 
-       ucl::EdjeSignal getConnectionSignal(ConnectionType type);
 }
 
 #endif // __CALL_UI_PRESENTERS_MISC_MISC_INDICATOR_PRESENTER_H__
index f9f6d497887a32389743b86b36463a1723f2c89c..63f3cff592e4d6911129ea0c8b89dd102c1a621d 100644 (file)
@@ -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<StyledWidget>(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);
index 9e4b2c91f406f7bce282354b5d0076a9e06a99d4..396b336014ecf69789818405f2659b348c167abe 100644 (file)
@@ -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;
index 81cf4e41bd539c025db54ec5b96f68c1289ba203..1e2c08f29fe8e2e5f17dc763d66e3ebbbedfd76d 100644 (file)
@@ -27,18 +27,17 @@ namespace callui {
        }
 
        MotionSensorPresenterSRef
-       MotionSensorPresenter::Builder::build(
-                       const NotiHandler handler) const
+       MotionSensorPresenter::Builder::build(NotiHandler handler) const
        {
-               auto result = makeShared<MotionSensorPresenter>(handler);
+               auto result = makeShared<MotionSensorPresenter>(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();
+                               }
                        }
                }
        }
index 5ca4a050b546c982e43505b3d1ecbe86587b0653..0e481934f7af252ffd94ef8d67df6ad2f3bfcd43 100644 (file)
@@ -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<MotionSensorPresenter>;
index 53caa7fc8db2ede9920e504f87d76d721a2e8a86..f0cde69ec31b0c85f52ecff33b0b85f3e094f2a4 100644 (file)
@@ -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;
        }
index a16025fc628ce1e59f57e53feeeda894a34c4503..512467b492e1b7d80f94308aa60bc90457378a53 100644 (file)
@@ -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;
index 4ac2fd91fd0191cbe775a95905a872fbc3e5f559..d1cea99b6850f22f95b9f89c36d9f0a2bea0bd9b 100644 (file)
@@ -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<KeypadPage>(m_sm, m_navi, onExitRequest);
+               auto result = makeShared<KeypadPage>(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));
                }
        }
 
index 6e9c02214b04c721e670a6978a8c41d219a250d5..c4ec0884075c5ebdd3a947fa345deee682dee8ca 100644 (file)
@@ -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;
index cfc222ea3786562ebb14fda02ba422c9ce58ae0d..82601cad2ef5ae6aab859e2f2c6b828507c0c2fa 100644 (file)
@@ -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<MainPage>(
-                               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) {
index 66a9e4c9d2abacc6b79b0be8b703b2a35d06596b..d0dbc3ed06a9fcceec7af21b929686cbbad7d099 100644 (file)
@@ -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;
index fe2a48dd51903d139a8ee13799c98f8ac32ed8c0..29bb75cbd938187bd77c8c4d5be651b57f16b896 100644 (file)
@@ -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();
index ce92277b614160fc90df2584389e1f42ec5c1293..fd7887ea0a4f8ce0cc2aaa0827b696db7c092f03 100644 (file)
@@ -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<ucl::ElmWidgetSRef> m_accBezelCueImg;
                std::vector<ucl::ElmWidgetSRef> m_rejBezelCueImg;
index d6ae71ce46907948efed66d0e6db9ef5b1a655ff..5eeb11bd063e22ed798c09512ab05aef278bc25c 100644 (file)
@@ -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);
                }
        }
 
index 090611095df03e9b828bdec5d43c0047e15f2a37..168a4ea832db58c1c13364f499839930e351ef6a 100644 (file)
@@ -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;
 
index 501dfc92ec935a122a8bef185a47e1174e6e98fb..732c9458cbb36f3c46d4663c84fe3083cd1ae736 100644 (file)
@@ -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 = 
index c2050bfc1c7ad74513afb7db36509faeb9ed971a..2d926e9dec4491f7ed542e6c88d399656d621481 100644 (file)
@@ -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,
index 1d523949eb437a50aa9c4572ba683dbd913c5565..d38039fa0c3ed88c878d63f40aa43b44a6e1b5ec 100644 (file)
 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;
        }
index 1161847002ea8f94e8752deea29fd01b0cc1f0e0..a11c7cae7f4e9cbac1b9f16b4f811404e65a3fa6 100644 (file)
@@ -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;
index 6b33fe45f695532b8ae68dbf686fb4dcd1821edf..b4cba2bb79787a6cbd81975469c2d26915350f57 100644 (file)
@@ -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());
index 49942b4a0b7e5906a7f7722ace8fea0a09b7c91d..9292cad2d85f38710e51d66dbb0f078cb84598bc 100644 (file)
@@ -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);
 
index dba64f07bf3c8dfa1e8e0b41311131704b4ac63b..c21fb4252bb6bc9413c75fb91d5087db43be6d73 100644 (file)
@@ -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<int> value);
 
                        Builder &setIsOwner(bool value);
@@ -77,6 +77,7 @@ namespace ucl {
                bool isRotationsSupported() const;
                void setRotations(const std::vector<int> &value);
 
+               void resizeToScreen();
                void lower();
 
        private:
index 9273b67d239e415dfb37a0ee82f79e2e2cc050fe..7a9ab93bffd54093f95ea1452cc5ce9831457d32 100644 (file)
@@ -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;
index ed4e4025412815452fefe74c1c7d1797ed6ea25c..4e80515f92da519595ffe16f3bb9b405bd13929c 100644 (file)
@@ -56,13 +56,13 @@ namespace ucl {
        void Event<DELEGATE>::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<DELEGATE>::dispatch(ARGS &&...args)
        {
                dispatchImpl(
-                       [](const DELEGATE &delegate, ARGS &&...args)
+                       [](const typename DELEGATE::LockDelegate &delegate, ARGS &&...args)
                        {
                                delegate(std::forward<ARGS>(args)...);
                                return true;
@@ -91,7 +91,8 @@ namespace ucl {
        void Event<DELEGATE>::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<PREDICATE>(pred),
                                                delegate, std::forward<ARGS>(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>(args)...)) {
                                        break;
                                }
index a0fad4b71d1215f18d86fb901f21c514db820304..1be4a6b2db72f0dbe31244829ed9f1185725d5ba 100644 (file)
@@ -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;
index dcc80632c1c541744ec129a438cfe7e38d3278db..4e180f40ac97d60729eee71513ffc6f881cd875a 100644 (file)
@@ -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;
 
index 01b92f3a7913ad565128031aac3015a0f77b9ff0..d79b5e479ebd16e4e392904a7d4f4041758f64dc 100644 (file)
@@ -49,7 +49,7 @@ namespace ucl {
        }
 
        template <class T>
-       inline void Observable<T>::removeObserver(const NotiHandler &handler)
+       inline void Observable<T>::removeObserver(NotiHandler::CDRef handler)
        {
                m_onValueChanged -= handler;
        }
index 5ca3ae251763b9066942df13743286742c4bf594..ebff0320ddf32e8d3d088b88b2f3cde3ed6150c9 100644 (file)
@@ -31,13 +31,12 @@ namespace ucl {
                using TimeoutHandler = WeakDelegate<void(Timeout *sender)>;
 
        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<Timeout>;
        };
index 6b737e9a07c8c9db13ae558cdaeaf0f815d1bc69..d56e0bd056003e9f8a5f2945ccb209239c1bedab 100644 (file)
@@ -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<const void *> m_deactivatorExceptions;
                std::unordered_set<const void *> m_deactivators;
-               WindowSRef m_window;
+               WindowWRef m_window;
                WidgetSRef m_sink;
                WidgetWRef m_parentSink;
                bool m_hasBuildInSources;
index 4b7d13d872be9b2ba46c62a1cc27be7bd0b27fdd..b31c29caf7f0430d48f5e2a55293911fcb045fb3 100644 (file)
@@ -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 //
 
index aab211737fb71974d0a736847db8add0c73a0cf0..e02de8d5f885b9d79f4eb5e4240bb60fb22b115a 100644 (file)
@@ -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;
index f25c0a7beac08375b1547c73a4e7b102050ed7a1..2f7544f7ad0a278af63920813dadd350f0c361c2 100644 (file)
@@ -32,8 +32,8 @@ namespace ucl {
 
        template <class R, class ...ARGS, class DATA>
        inline BaseDelegate<R(ARGS...), DATA>::
-                       BaseDelegate(const DATA &data, StubA stubA) noexcept :
-               m_data(data),
+                       BaseDelegate(DATA data, StubA stubA) noexcept :
+               m_data(std::move(data)),
                m_stubA(stubA)
        {
        }
index ff3b63509f7dc84be3061336285a03325baf637b..dc84bc1e14eee0ded6583893bc57be5c69936e96 100644 (file)
@@ -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;
index 6d8efa74042d9accdb145b2af5d890b444e8f218..82c23335e32fcc9a42b2a5d94995543fb378e24e 100644 (file)
@@ -18,8 +18,8 @@ namespace ucl {
 
        template <class R, class ...ARGS, class DATA>
        inline BaseDelegate2<R(ARGS...), DATA>::
-                       BaseDelegate2(const DATA &data, StubA stubA, StubB stubB) noexcept :
-               BaseDelegate<R(ARGS...), DATA>(data, stubA),
+                       BaseDelegate2(DATA data, StubA stubA, StubB stubB) noexcept :
+               BaseDelegate<R(ARGS...), DATA>(std::move(data), stubA),
                m_stubB(stubB)
        {
        }
index e1e74162e9c1c40f8787eabb74f968cf411ee3d6..714b448a930c7ce5ee17654b49e0b2608250147c 100644 (file)
@@ -26,9 +26,14 @@ namespace ucl {
 
        template <class R, class ...ARGS>
        class Delegate<R(ARGS...)> : public BaseDelegate<R(ARGS...), void *> {
+       public:
+               using LockDelegate = Delegate;
+
        public:
                using BaseDelegate<R(ARGS...), void *>::BaseDelegate;
 
+               LockDelegate lock() const;
+
                R operator()(ARGS ...args) const;
 
                template <class CLASS, R(CLASS::*METHOD)(ARGS...)>
@@ -37,9 +42,9 @@ namespace ucl {
                static Delegate make(const CLASS *data) noexcept;
 
                template <class CLASS, R(*FUNC)(CLASS &, ARGS...)>
-               static Delegate makeA(CLASS &data) noexcept;
+               static Delegate makeA(CLASS *data) noexcept;
                template <class CLASS, R(*FUNC)(ARGS..., CLASS &)>
-               static Delegate makeB(CLASS &data) noexcept;
+               static Delegate makeB(CLASS *data) noexcept;
 
                template <class HANDLE, R(*FUNC)(HANDLE, ARGS...)>
                static Delegate makeA(HANDLE data) noexcept;
index 632ec248d799b66014d2337ec081a64ddeed3f72..ed24a92a147e76e145cb371b86e4bf11bc344d1b 100644 (file)
 
 namespace ucl {
 
+       template <class R, class ...ARGS>
+       inline typename Delegate<R(ARGS...)>::LockDelegate
+                       Delegate<R(ARGS...)>::lock() const
+       {
+               return *this;
+       }
+
        template <class R, class ...ARGS>
        inline R Delegate<R(ARGS...)>::operator()(ARGS ...args) const
        {
@@ -43,18 +50,18 @@ namespace ucl {
        template <class R, class ...ARGS>
        template <class CLASS, R(*FUNC)(CLASS &, ARGS...)>
        inline Delegate<R(ARGS...)>
-                       Delegate<R(ARGS...)>::makeA(CLASS &data) noexcept
+                       Delegate<R(ARGS...)>::makeA(CLASS *data) noexcept
        {
-               return {const_cast<void *>(static_cast<const void *>(&data)),
+               return {const_cast<void *>(static_cast<const volatile void *>(data)),
                                Delegate::Cb::template stubA2A<CLASS, FUNC>};
        }
 
        template <class R, class ...ARGS>
        template <class CLASS, R(*FUNC)(ARGS..., CLASS &)>
        inline Delegate<R(ARGS...)>
-                       Delegate<R(ARGS...)>::makeB(CLASS &data) noexcept
+                       Delegate<R(ARGS...)>::makeB(CLASS *data) noexcept
        {
-               return {const_cast<void *>(static_cast<const void *>(&data)),
+               return {const_cast<void *>(static_cast<const volatile void *>(data)),
                                Delegate::Cb::template stubA2B<CLASS, FUNC>};
        }
 
@@ -63,7 +70,7 @@ namespace ucl {
        inline Delegate<R(ARGS...)>
                        Delegate<R(ARGS...)>::makeA(const HANDLE data) noexcept
        {
-               return {const_cast<void *>(static_cast<const void *>(data)),
+               return {const_cast<void *>(static_cast<const volatile void *>(data)),
                                Delegate::Cb::template stubA2A<HANDLE, FUNC>};
        }
 
@@ -72,7 +79,7 @@ namespace ucl {
        inline Delegate<R(ARGS...)>
                        Delegate<R(ARGS...)>::makeB(const HANDLE data) noexcept
        {
-               return {const_cast<void *>(static_cast<const void *>(data)),
+               return {const_cast<void *>(static_cast<const volatile void *>(data)),
                                Delegate::Cb::template stubA2B<HANDLE, FUNC>};
        }
 
index 56ff3fbeec0623a7e15ebc608d2a770ea26d6129..7c643efe50bdb090ed3c12264ef0fb82748bb50c 100644 (file)
@@ -26,9 +26,14 @@ namespace ucl {
 
        template <class R, class ...ARGS>
        class Delegate2<R(ARGS...)> : public BaseDelegate2<R(ARGS...), void *> {
+       public:
+               using LockDelegate = Delegate2;
+
        public:
                using BaseDelegate2<R(ARGS...), void *>::BaseDelegate2;
 
+               LockDelegate lock() const;
+
                R operator()(ARGS ...args) const;
 
                template <class CLASS, R(CLASS::*METHOD)(ARGS...)>
@@ -37,9 +42,9 @@ namespace ucl {
                static Delegate2 make(const CLASS *data) noexcept;
 
                template <class CLASS, R(*FUNC)(CLASS &, ARGS...)>
-               static Delegate2 makeA(CLASS &data) noexcept;
+               static Delegate2 makeA(CLASS *data) noexcept;
                template <class CLASS, R(*FUNC)(ARGS..., CLASS &)>
-               static Delegate2 makeB(CLASS &data) noexcept;
+               static Delegate2 makeB(CLASS *data) noexcept;
 
                template <class HANDLE, R(*FUNC)(HANDLE, ARGS...)>
                static Delegate2 makeA(HANDLE data) noexcept;
index 085ba4649583a39420e9bba5b3eff3d2bb9d1a54..a3ad4117dbfa65f182af4aa68c025a9853994de2 100644 (file)
 
 namespace ucl {
 
+       template <class R, class ...ARGS>
+       inline typename Delegate2<R(ARGS...)>::LockDelegate
+                       Delegate2<R(ARGS...)>::lock() const
+       {
+               return *this;
+       }
+
        template <class R, class ...ARGS>
        inline R Delegate2<R(ARGS...)>::operator()(ARGS ...args) const
        {
@@ -45,9 +52,9 @@ namespace ucl {
        template <class R, class ...ARGS>
        template <class CLASS, R(*FUNC)(CLASS &, ARGS...)>
        inline Delegate2<R(ARGS...)>
-                       Delegate2<R(ARGS...)>::makeA(CLASS &data) noexcept
+                       Delegate2<R(ARGS...)>::makeA(CLASS *data) noexcept
        {
-               return {const_cast<void *>(static_cast<const void *>(&data)),
+               return {const_cast<void *>(static_cast<const volatile void *>(data)),
                                Delegate2::Cb::template stubA2A<CLASS, FUNC>,
                                Delegate2::Cb::template stubB2A<CLASS, FUNC>};
        }
@@ -55,9 +62,9 @@ namespace ucl {
        template <class R, class ...ARGS>
        template <class CLASS, R(*FUNC)(ARGS..., CLASS &)>
        inline Delegate2<R(ARGS...)>
-                       Delegate2<R(ARGS...)>::makeB(CLASS &data) noexcept
+                       Delegate2<R(ARGS...)>::makeB(CLASS *data) noexcept
        {
-               return {const_cast<void *>(static_cast<const void *>(&data)),
+               return {const_cast<void *>(static_cast<const volatile void *>(data)),
                                Delegate2::Cb::template stubA2B<CLASS, FUNC>,
                                Delegate2::Cb::template stubB2B<CLASS, FUNC>};
        }
@@ -67,7 +74,7 @@ namespace ucl {
        inline Delegate2<R(ARGS...)>
                        Delegate2<R(ARGS...)>::makeA(const HANDLE data) noexcept
        {
-               return {const_cast<void *>(static_cast<const void *>(data)),
+               return {const_cast<void *>(static_cast<const volatile void *>(data)),
                                Delegate2::Cb::template stubA2A<HANDLE, FUNC>,
                                Delegate2::Cb::template stubB2A<HANDLE, FUNC>};
        }
@@ -77,7 +84,7 @@ namespace ucl {
        inline Delegate2<R(ARGS...)>
                        Delegate2<R(ARGS...)>::makeB(const HANDLE data) noexcept
        {
-               return {const_cast<void *>(static_cast<const void *>(data)),
+               return {const_cast<void *>(static_cast<const volatile void *>(data)),
                                Delegate2::Cb::template stubA2B<HANDLE, FUNC>,
                                Delegate2::Cb::template stubB2B<HANDLE, FUNC>};
        }
index 54ebb993d2f902e8a9bfe539a1d01715c402def8..d4f574b396850c6a06c4fccb018b583d512e8bd9 100644 (file)
@@ -21,41 +21,77 @@ namespace ucl {
 
        // Automatic function signature detection for a specific type //
 
-       template <template <typename ...> class T, class TAG, class FUNC>
+       template <template <typename ...> class T, class FUNC>
        struct AutoFuncSig;
 
        template <template <typename ...> class T,
-                        class R, class CLASS, class ...ARGS>
-       struct AutoFuncSig<T, void *, R(CLASS::*)(ARGS...)> {
+                       class R, class CLASS, class ...ARGS>
+       struct AutoFuncSig<T, R(CLASS::*)(ARGS...)> {
                using Data = CLASS;
                using Type = T<R(ARGS...)>;
+
+               template <R(CLASS::*METHOD)(ARGS...), class DATA>
+               static Type makeDelegate(DATA &&data) noexcept
+               {
+                       return Type::template make<CLASS, METHOD>(std::forward<DATA>(data));
+               }
        };
 
        template <template <typename ...> class T,
                        class CLASS, class R, class ...ARGS>
-       struct AutoFuncSig<T, void *, R(CLASS::*)(ARGS...) const> {
+       struct AutoFuncSig<T, R(CLASS::*)(ARGS...) const> {
                using Data = CLASS;
                using Type = T<R(ARGS...)>;
+
+               template <R(CLASS::*METHOD)(ARGS...) const, class DATA>
+               static Type makeDelegate(DATA &&data) noexcept
+               {
+                       return Type::template make<CLASS, METHOD>(std::forward<DATA>(data));
+               }
        };
 
        template <template <typename ...> class T,
                        class CLASS, class R, class ...ARGS>
-       struct AutoFuncSig<T, void *, R(*)(CLASS &, ARGS...)> {
+       struct AutoFuncSig<T, R(*)(CLASS &, ARGS...)> {
                using Data = CLASS;
                using Type = T<R(ARGS...)>;
+
+               template <R(*FUNC)(CLASS &, ARGS...), class DATA>
+               static Type makeDelegate(DATA &&data) noexcept
+               {
+                       return Type::template makeA<CLASS, FUNC>(std::forward<DATA>(data));
+               }
        };
 
        template <template <typename ...> class T,
                        class HANDLE, class R, class ...ARGS>
-       struct AutoFuncSig<T, void *, R(*)(HANDLE, ARGS...)> {
+       struct AutoFuncSig<T, R(*)(HANDLE, ARGS...)> {
                using Data = HANDLE;
                using Type = T<R(ARGS...)>;
+               using TypeV = T<R(HANDLE, ARGS...)>;
+
+               template <R(*FUNC)(HANDLE, ARGS...), class DATA>
+               static Type makeDelegate(DATA &&data) noexcept
+               {
+                       return Type::template makeA<HANDLE, FUNC>(std::forward<DATA>(data));
+               }
+
+               template <R(*FUNC)(HANDLE, ARGS...)>
+               static TypeV makeDelegate() noexcept
+               {
+                       return TypeV::template make<FUNC>();
+               }
        };
 
-       template <template <typename ...> class T,
-                       class R, class ...ARGS>
-       struct AutoFuncSig<T, void, R(*)(ARGS...)> {
-               using Type = T<R(ARGS...)>;
+       template <template <typename ...> class T, class R>
+       struct AutoFuncSig<T, R(*)()> {
+               using TypeV = T<R()>;
+
+               template <R(*FUNC)()>
+               static TypeV makeDelegate() noexcept
+               {
+                       return TypeV::template make<FUNC>();
+               }
        };
 
        // Relation operators //
index 89f2d2dc28129e47963e92cc8b4d37ad5733b6c8..3ee55e0a1d2e7f720dbdb25b0eea289871bfaba9 100644 (file)
 // Helper macro to simplify use of AutoFuncSig template
 
 #define _UCL_AFS(DELEGATE, FUNC) \
-               ::ucl::AutoFuncSig<DELEGATE, void *, decltype(&FUNC)>
-#define _UCL_AFS_V(DELEGATE, FUNC) \
-               ::ucl::AutoFuncSig<DELEGATE, void, decltype(&FUNC)>
+               ::ucl::AutoFuncSig<DELEGATE, decltype(&FUNC)>
 
 // Helper macro to automatically generate different delegate objects //
 
-#define _UCL_DELEGATE(DELEGATE, FUNC, DATA) _UCL_AFS(DELEGATE, FUNC)::Type:: \
-               template make<typename _UCL_AFS(DELEGATE, FUNC)::Data, &FUNC>(DATA)
-
-#define _UCL_DELEGATE_A(DELEGATE, FUNC, DATA) _UCL_AFS(DELEGATE, FUNC)::Type:: \
-               template makeA<typename _UCL_AFS(DELEGATE, FUNC)::Data, &FUNC>(DATA)
-
-#define _UCL_DELEGATE_V(DELEGATE, FUNC) _UCL_AFS_V(DELEGATE, FUNC)::Type:: \
-               template make<&FUNC>()
+#define _UCL_DELEGATE(DELEGATE, FUNC, DATA...) \
+               _UCL_AFS(DELEGATE, FUNC)::template makeDelegate<&FUNC>(DATA)
 
 // Helper macro to automatically generate Delegate objects //
 
-#define UCL_DELEGATE(FUNC, DATA) _UCL_DELEGATE(::ucl::Delegate, FUNC, DATA)
-#define UCL_DELEGATE_A(FUNC, DATA) _UCL_DELEGATE_A(::ucl::Delegate, FUNC, DATA)
-#define UCL_DELEGATE_V(FUNC) _UCL_DELEGATE_V(::ucl::Delegate, FUNC)
+#define UCL_DELEGATE(FUNC, DATA...) _UCL_DELEGATE( \
+               ::ucl::Delegate, FUNC, ##DATA)
+
+#define UCL_DELEGATE_THIS(FUNC_NAME) UCL_DELEGATE( \
+               std::remove_pointer<decltype(this)>::type::FUNC_NAME, this)
 
 // Helper macro to automatically generate Delegate2 objects //
 
-#define UCL_DELEGATE2(FUNC, DATA) _UCL_DELEGATE(::ucl::Delegate2, FUNC, DATA)
-#define UCL_DELEGATE2_A(FUNC, DATA) \
-               _UCL_DELEGATE_A(::ucl::Delegate2, FUNC, DATA)
-#define UCL_DELEGATE2_V(FUNC) _UCL_DELEGATE_V(::ucl::Delegate2, FUNC)
+#define UCL_DELEGATE2(FUNC, DATA...) _UCL_DELEGATE( \
+               ::ucl::Delegate2, FUNC, ##DATA)
+
+#define UCL_DELEGATE2_THIS(FUNC_NAME) UCL_DELEGATE2( \
+               std::remove_pointer<decltype(this)>::type::FUNC_NAME, this)
 
 // Helper macro to automatically generate Callback stubs //
 
@@ -60,9 +55,9 @@
 #define UCL_CALLBACK_B2A(FUNC) &_UCL_AFS(::ucl::Callback, FUNC)::Type:: \
                template stubB2A<typename _UCL_AFS(::ucl::Callback, FUNC)::Data, &FUNC>
 
-#define UCL_CALLBACK_A2V(FUNC) &_UCL_AFS_V(::ucl::Callback, FUNC)::Type:: \
+#define UCL_CALLBACK_A2V(FUNC) &_UCL_AFS(::ucl::Callback, FUNC)::TypeV:: \
                template stubA2V<&FUNC>
-#define UCL_CALLBACK_B2V(FUNC) &_UCL_AFS_V(::ucl::Callback, FUNC)::Type:: \
+#define UCL_CALLBACK_B2V(FUNC) &_UCL_AFS(::ucl::Callback, FUNC)::TypeV:: \
                template stubB2V<&FUNC>
 
 #endif // __UCL_UTIL_DELEGATION_MACRO_H__
index 3837977d42a8219d70b0bcc16cb8b509aabfda22..99e1e0d9de2490b0f3770561d518baa1cacf371a 100644 (file)
 
 // Helper macro to automatically generate Delegate objects //
 
-#define DELEGATE(FUNC, DATA)    UCL_DELEGATE(FUNC, DATA)
-#define DELEGATE_A(FUNC, DATA)  UCL_DELEGATE_A(FUNC, DATA)
-#define DELEGATE_V(FUNC)        UCL_DELEGATE_V(FUNC)
+#define DELEGATE(FUNC, DATA...)  UCL_DELEGATE(FUNC, ##DATA)
+
+#define DELEGATE_THIS(FUNC_NAME)  UCL_DELEGATE_THIS(FUNC_NAME)
 
 // Helper macro to automatically generate Delegate2 objects //
 
-#define DELEGATE2(FUNC, DATA)    UCL_DELEGATE2(FUNC, DATA)
-#define DELEGATE2_A(FUNC, DATA)  UCL_DELEGATE2_A(FUNC, DATA)
-#define DELEGATE2_V(FUNC)        UCL_DELEGATE2_V(FUNC)
+#define DELEGATE2(FUNC, DATA...)  UCL_DELEGATE2(FUNC, ##DATA)
+
+#define DELEGATE2_THIS(FUNC_NAME)  UCL_DELEGATE2_THIS(FUNC_NAME)
 
 // Helper macro to automatically generate Callback stubs //
 
index 6634f3c0ccde622d957d32e9a846f6080bcf0f03..21b1a58458e68f2d56d5dd0344c049615fca0fb8 100644 (file)
@@ -99,7 +99,7 @@ namespace ucl {
        template <class T>
        inline T *WeakRef<T>::getUnsafePtr() const noexcept
        {
-               return (operator bool() ? this->m_ptr : nullptr);
+               return this->m_ptr;
        }
 
        template <class T>
index 5ce25a304c9b686bb1d6af0e8699a5b2f3e204d5..40a16e83b6f6e736665da16636c6be4d39a658a0 100644 (file)
@@ -64,8 +64,15 @@ namespace ucl {
 
        namespace himpl {
 
+               template <class T>
+               struct IsShared : std::false_type {};
+               template <class T>
+               struct IsShared<SharedRef<T>> : std::true_type {};
+               template <class T>
+               struct IsShared<WeakRef<T>> : std::true_type {};
+
                template <class T, class = typename std::enable_if<
-                       !std::is_base_of<BaseRef<typename T::Type>, T>::value>::type>
+                               !IsShared<T>::value>::type>
                inline const T &getCmpPtr(const T &ptr) noexcept
                {
                        return ptr;
@@ -85,76 +92,70 @@ namespace ucl {
        }
 
        template <class T, class U, class = typename std::enable_if<
-               std::is_base_of<BaseRef<typename T::Type>, T>::value ||
-               std::is_base_of<BaseRef<typename U::Type>, U>::value>::type>
+                       himpl::IsShared<T>::value || himpl::IsShared<U>::value>::type>
        inline bool operator==(const T &lhs, const U &rhs) noexcept
        {
                return (himpl::getCmpPtr(lhs) == himpl::getCmpPtr(rhs));
        }
 
        template <class T, class U, class = typename std::enable_if<
-               std::is_base_of<BaseRef<typename T::Type>, T>::value ||
-               std::is_base_of<BaseRef<typename U::Type>, U>::value>::type>
+                       himpl::IsShared<T>::value || himpl::IsShared<U>::value>::type>
        inline bool operator!=(const T &lhs, const U &rhs) noexcept
        {
                return (himpl::getCmpPtr(lhs) != himpl::getCmpPtr(rhs));
        }
 
        template <class T, class U, class = typename std::enable_if<
-               std::is_base_of<BaseRef<typename T::Type>, T>::value ||
-               std::is_base_of<BaseRef<typename U::Type>, U>::value>::type>
+                       himpl::IsShared<T>::value || himpl::IsShared<U>::value>::type>
        inline bool operator<(const T &lhs, const U &rhs) noexcept
        {
                return (himpl::getCmpPtr(lhs) < himpl::getCmpPtr(rhs));
        }
 
        template <class T, class U, class = typename std::enable_if<
-               std::is_base_of<BaseRef<typename T::Type>, T>::value ||
-               std::is_base_of<BaseRef<typename U::Type>, U>::value>::type>
+                       himpl::IsShared<T>::value || himpl::IsShared<U>::value>::type>
        inline bool operator<=(const T &lhs, const U &rhs) noexcept
        {
                return (himpl::getCmpPtr(lhs) <= himpl::getCmpPtr(rhs));
        }
 
        template <class T, class U, class = typename std::enable_if<
-               std::is_base_of<BaseRef<typename T::Type>, T>::value ||
-               std::is_base_of<BaseRef<typename U::Type>, U>::value>::type>
+                       himpl::IsShared<T>::value || himpl::IsShared<U>::value>::type>
        inline bool operator>(const T &lhs, const U &rhs) noexcept
        {
                return (himpl::getCmpPtr(lhs) > himpl::getCmpPtr(rhs));
        }
 
        template <class T, class U, class = typename std::enable_if<
-               std::is_base_of<BaseRef<typename T::Type>, T>::value ||
-               std::is_base_of<BaseRef<typename U::Type>, U>::value>::type>
+                       himpl::IsShared<T>::value || himpl::IsShared<U>::value>::type>
        inline bool operator>=(const T &lhs, const U &rhs) noexcept
        {
                return (himpl::getCmpPtr(lhs) >= himpl::getCmpPtr(rhs));
        }
 
        template <class T, class = typename std::enable_if<
-               std::is_base_of<BaseRef<typename T::Type>, T>::value>::type>
+                       himpl::IsShared<T>::value>::type>
        inline bool operator==(const T &lhs, std::nullptr_t rhs) noexcept
        {
                return !lhs;
        }
 
        template <class T, class = typename std::enable_if<
-               std::is_base_of<BaseRef<typename T::Type>, T>::value>::type>
+                       himpl::IsShared<T>::value>::type>
        bool operator==(std::nullptr_t lhs, const T &rhs) noexcept
        {
                return !rhs;
        }
 
        template <class T, class = typename std::enable_if<
-               std::is_base_of<BaseRef<typename T::Type>, T>::value>::type>
+                       himpl::IsShared<T>::value>::type>
        bool operator!=(const T &lhs, std::nullptr_t rhs) noexcept
        {
                return lhs;
        }
 
        template <class T, class = typename std::enable_if<
-               std::is_base_of<BaseRef<typename T::Type>, T>::value>::type>
+                       himpl::IsShared<T>::value>::type>
        bool operator!=(std::nullptr_t lhs, const T &rhs) noexcept
        {
                return rhs;
index 97e1ae828259cee440db5a65f6ceec6f96966aea..27c7a93a1a46f743d7a9c29d3f1b846a0aa0c393 100644 (file)
@@ -28,16 +28,32 @@ namespace ucl {
        template <class R, class ...ARGS>
        class WeakDelegate<R(ARGS...)> :
                        public BaseDelegate<R(ARGS...), WeakRef<void>> {
+       public:
+               using CDRef = const Delegate<R(ARGS...)> &;
+
+               class LockDelegate {
+               public:
+                       explicit operator bool() const noexcept;
+                       R operator()(ARGS ...args) const;
+               private:
+                       LockDelegate(SharedRef<void> data,
+                                       typename WeakDelegate::StubA stubA) noexcept;
+               private:
+                       SharedRef<void> m_data;
+                       typename WeakDelegate::StubA m_stubA;
+                       friend class WeakDelegate;
+               };
+
        public:
                using BaseDelegate<R(ARGS...), WeakRef<void>>::BaseDelegate;
 
-               R operator()(ARGS ...args) const;
+               LockDelegate lock() const;
 
                template <class CLASS, R(CLASS::*METHOD)(ARGS...)>
-               static WeakDelegate make(const WeakRef<CLASS> &data) noexcept;
+               static WeakDelegate make(WeakRef<CLASS> data) noexcept;
 
                template <class CLASS, R(CLASS::*METHOD)(ARGS...) const>
-               static WeakDelegate make(const WeakRef<const CLASS> &data) noexcept;
+               static WeakDelegate make(WeakRef<const CLASS> data) noexcept;
        };
 }
 
index fa7b3f8ff3a02739dc8a1480ec13c8777ef51935..b528aadeeba1447d989f4d7b01caa2081aaa0495 100644 (file)
 
 namespace ucl {
 
+       // WeakDelegate<R(ARGS...)>::Lock //
+
+       template <class R, class ...ARGS>
+       inline WeakDelegate<R(ARGS...)>::LockDelegate::LockDelegate(
+                       SharedRef<void> data,
+                       const typename WeakDelegate::StubA stubA) noexcept :
+               m_data(std::move(data)),
+               m_stubA(stubA)
+       {
+       }
+
        template <class R, class ...ARGS>
-       inline R WeakDelegate<R(ARGS...)>::operator()(ARGS ...args) const
+       inline WeakDelegate<R(ARGS...)>::LockDelegate::
+                       operator bool() const noexcept
        {
-               const auto tmp = this->m_data.lock();
-               if (tmp) {
-                       return this->m_stubA(tmp.get(), std::forward<ARGS>(args)...);
-               }
-               return R();
+               return !!m_data;
+       }
+
+       template <class R, class ...ARGS>
+       inline R WeakDelegate<R(ARGS...)>::LockDelegate::
+                       operator()(ARGS ...args) const
+       {
+               return m_stubA(m_data.get(), std::forward<ARGS>(args)...);
+       }
+
+       // WeakDelegate<R(ARGS...)> //
+
+       template <class R, class ...ARGS>
+       typename WeakDelegate<R(ARGS...)>::LockDelegate
+                       WeakDelegate<R(ARGS...)>::lock() const
+       {
+               return {this->m_data.lock(), this->m_stubA};
        }
 
        template <class R, class ...ARGS>
        template <class CLASS, R(CLASS::*METHOD)(ARGS...)>
        inline WeakDelegate<R(ARGS...)> WeakDelegate<R(ARGS...)>::make(
-                       const WeakRef<CLASS> &data) noexcept
+                       WeakRef<CLASS> data) noexcept
        {
-               return {data, WeakDelegate::Cb::template stubA<CLASS, METHOD>};
+               return {std::move(data),
+                               WeakDelegate::Cb::template stubA<CLASS, METHOD>};
        }
 
        template <class R, class ...ARGS>
        template <class CLASS, R(CLASS::*METHOD)(ARGS...) const>
        inline WeakDelegate<R(ARGS...)> WeakDelegate<R(ARGS...)>::make(
-                       const WeakRef<const CLASS> &data) noexcept
+                       WeakRef<const CLASS> data) noexcept
        {
-               return {constRefCast<CLASS>(data),
+               return {constRefCast<CLASS>(std::move(data)),
                                WeakDelegate::Cb::template stubA<CLASS, METHOD>};
        }
 }
index b11782067604be0900e8c48b0917d14198be6669..1fc2ebe156145c64b9d79c302f6cb8e115f35625 100644 (file)
 #ifndef __UCL_UTIL_SMART_DELEGATION_MACRO_H__
 #define __UCL_UTIL_SMART_DELEGATION_MACRO_H__
 
-#define UCL_WEAK_DELEGATE(FUNC, DATA) \
-               _UCL_DELEGATE(::ucl::WeakDelegate, FUNC, DATA)
+#define UCL_WEAK_DELEGATE(FUNC, DATA) _UCL_DELEGATE( \
+               ::ucl::WeakDelegate, FUNC, DATA)
+
+#define UCL_WEAK_DELEGATE_THIS(FUNC_NAME) UCL_WEAK_DELEGATE( \
+               std::remove_pointer<decltype(this)>::type::FUNC_NAME, asWeak(*this))
 
 #endif // __UCL_UTIL_SMART_DELEGATION_MACRO_H__
index ddf5e353f4c14ef3923cf738cd8ba81d3f1fabb8..6a8219d1efad09462ae78486e12ba6348eb7729f 100644 (file)
@@ -19,4 +19,6 @@
 
 #define WEAK_DELEGATE(FUNC, DATA) UCL_WEAK_DELEGATE(FUNC, DATA)
 
+#define WEAK_DELEGATE_THIS(FUNC_NAME)  UCL_WEAK_DELEGATE_THIS(FUNC_NAME)
+
 #endif // __UCL_UTIL_SMART_DELEGATION_SHORT_MACRO_H__
index 6f49c2b386f79114b68a32f8e42e076960d9d083..1983fa67f10bfea735af1982e36d424c6319b472 100644 (file)
@@ -81,7 +81,11 @@ namespace ucl {
        {
                m_instance.reset();
                m_instanceMgr.setSysEventProvider(nullptr);
-               m_window.reset();
+               if (m_window) {
+                       m_window->setIsOwner(false);
+                       m_window->markForDeletion();
+                       m_window.reset();
+               }
        }
 
        void UIApp::onPause()
index 7beac118a6b8ca70f38febcd49cd7e13661ae2f2..4cee1f8e7bd6ed31c42b0b586f5aef56551fc722 100644 (file)
@@ -51,8 +51,8 @@ namespace ucl {
                StyledWidget(&rc, eo),
                m_isInTransition(false)
        {
-               addEventHandler(NAVI_TRANSITION_FINISHED, WEAK_DELEGATE(
-                               Naviframe::onTransitionFinished, asWeak(*this)));
+               addEventHandler(NAVI_TRANSITION_FINISHED,
+                               WEAK_DELEGATE_THIS(onTransitionFinished));
        }
 
        void Naviframe::setInTransition(const bool inTransition)
index 724e54accde174dffb745cb8e6bd76157d2cdf22..bc7d6e823742e240312ac4ed2d860ded145f0780 100644 (file)
@@ -30,9 +30,9 @@ namespace ucl {
        class Widget::EventProxy : protected NonCopyable {
        public:
                EventProxy(Widget &widget, const WidgetEvent event,
-                               const WidgetEventHandler handler) :
+                               WidgetEventHandler handler) :
                        m_widget(widget),
-                       m_handler(handler),
+                       m_handler(std::move(handler)),
                        m_type(static_cast<Evas_Callback_Type>(event))
                {
                        evas_object_event_callback_add(m_widget.getEo(),
@@ -40,10 +40,10 @@ namespace ucl {
                }
 
                EventProxy(Widget &widget, const SmartEvent event,
-                               const WidgetEventHandler handler) :
+                               WidgetEventHandler handler) :
                        m_widget(widget),
                        m_smartEvent(event),
-                       m_handler(handler),
+                       m_handler(std::move(handler)),
                        m_type(impl::WIDGET_EVENT_SMART)
                {
                        evas_object_smart_callback_add(m_widget.getEo(),
@@ -66,13 +66,15 @@ namespace ucl {
                        m_selfIt = it;
                }
 
-               bool operator==(const std::pair<WidgetEvent, WidgetEventHandler> &rhs)
+               bool operator==(
+                               const std::pair<WidgetEvent, WidgetEventHandler::CDRef> &rhs)
                {
                        return ((m_type == static_cast<Evas_Callback_Type>(rhs.first)) &&
                                        (m_handler == rhs.second));
                }
 
-               bool operator==(const std::pair<SmartEvent, WidgetEventHandler> &rhs)
+               bool operator==(
+                               const std::pair<SmartEvent, WidgetEventHandler::CDRef> &rhs)
                {
                        return ((m_type == impl::WIDGET_EVENT_SMART) &&
                                        (m_handler == rhs.second) &&
@@ -93,8 +95,8 @@ namespace ucl {
 
                void dispatchEvent(void *const event_info)
                {
-                       if (m_handler) {
-                               m_handler(m_widget, event_info);
+                       if (const auto handler = m_handler.lock()) {
+                               handler(m_widget, event_info);
                        } else {
                                m_widget.delEventProxy(m_selfIt);
                        }
@@ -250,14 +252,14 @@ namespace ucl {
        }
 
        void Widget::addEventHandler(const WidgetEvent event,
-                       const WidgetEventHandler handler)
+                       WidgetEventHandler handler)
        {
-               m_eventProxies.emplace_front(*this, event, handler);
+               m_eventProxies.emplace_front(*this, event, std::move(handler));
                m_eventProxies.front().setSelfIt(m_eventProxies.begin());
        }
 
        void Widget::addEventHandler(const SmartEvent event,
-                       const WidgetEventHandler handler)
+                       WidgetEventHandler handler)
        {
                if (strncmp(event.name, UCL_SMART_FWD, strlen(UCL_SMART_FWD)) == 0) {
                        if (!ensureFwdEvent(event)) {
@@ -265,19 +267,19 @@ namespace ucl {
                                                "Event is not supported: %s;", event.name);
                        }
                }
-               m_eventProxies.emplace_front(*this, event, handler);
+               m_eventProxies.emplace_front(*this, event, std::move(handler));
                m_eventProxies.front().setSelfIt(m_eventProxies.begin());
        }
 
        void Widget::delEventHandler(const WidgetEvent event,
-                       const WidgetEventHandler handler)
+                       WidgetEventHandler::CDRef handler)
        {
                delEventProxy(std::find(m_eventProxies.begin(), m_eventProxies.end(),
                                std::make_pair(event, handler)));
        }
 
        void Widget::delEventHandler(const SmartEvent event,
-                       const WidgetEventHandler handler)
+                       WidgetEventHandler::CDRef handler)
        {
                delEventProxy(std::find(m_eventProxies.begin(), m_eventProxies.end(),
                                std::make_pair(event, handler)));
index 166fb1fdf81b8471319fb7c942332daca1f112ea..923551308d6fcb3c14542b1238e69ea750af0c12 100644 (file)
@@ -75,4 +75,17 @@ namespace ucl {
 
                return result;
        }
+
+       // Window //
+
+       void Window::resizeToScreen()
+       {
+               int w = 0;
+               int h = 0;
+               getScreenSize(&w, &h);
+               if ((w > 0) && (h > 0)) {
+                       setGeometry(0, 0, w, h);
+                       m_conform.setGeometry(0, 0, w, h);
+               }
+       }
 }
index 78638859736c56a33e2d9e81609a0bd71346f3a3..9fb98acd0f400407dc57bbabf813b4d6af00fb30 100644 (file)
 
 namespace ucl {
 
-       TimeoutSRef Timeout::create(double timeoutSec,
-                       const TimeoutHandler &handler)
+       TimeoutSRef Timeout::create(double timeoutSec, TimeoutHandler handler)
        {
-               auto result = makeShared<Timeout>(handler, PRIVATE);
+               auto result = makeShared<Timeout>(std::move(handler), PRIVATE);
 
                FAIL_RETURN_VALUE(result->prepare(timeoutSec), {},
                                "result->prepare() failed!");
@@ -31,9 +30,9 @@ namespace ucl {
                return result;
        }
 
-       Timeout::Timeout(const TimeoutHandler &handler, Private) :
-               m_timer(nullptr),
-               m_handler(handler)
+       Timeout::Timeout(TimeoutHandler handler, Private) :
+               m_handler(std::move(handler)),
+               m_timer(nullptr)
        {
        }
 
@@ -51,8 +50,8 @@ namespace ucl {
                        {
                                const auto self = static_cast<Timeout *>(data);
                                self->m_timer = nullptr;
-                               if (self->m_handler) {
-                                       self->m_handler(self);
+                               if (const auto handler = self->m_handler.lock()) {
+                                       handler(self);
                                }
                                return ECORE_CALLBACK_CANCEL;
                        },
index e23bc0208257a084dc6c66cff5ba201a07c3753e..10ec68d07cd03c2af299e48a53b688a234647a3b 100644 (file)
@@ -41,21 +41,21 @@ namespace ucl {
                                if (const auto parentSink = m_parentSink.lock()) {
                                        delDeactivatorSource(*parentSink);
                                }
-                       } else if (m_window) {
-                               delDeactivatorSource(*m_window);
+                       } else if (const auto window = getWindowRef()) {
+                               delDeactivatorSource(*window);
                        }
                }
        }
 
        Result GuiPresenter::prepare(ElmWidget &widget, const int flags)
        {
-               m_window = asShared(widget.getWindow());
-               if (!m_window) {
-                       LOG_RETURN(RES_FAIL, "m_window is NULL!");
+               const auto window = asShared(widget.getWindow());
+               if (!window) {
+                       LOG_RETURN(RES_FAIL, "window is NULL!");
                }
 
                if (flags & PF_ADD_DEACTIVATOR_SOURCES) {
-                       addDeactivatorSource(*m_window);
+                       addDeactivatorSource(*window);
                        m_hasBuildInSources = true;
                }
 
@@ -63,6 +63,7 @@ namespace ucl {
                        addDeactivatorException(getObjPtr());
                }
 
+               m_window = window;
                m_isPrepared = true;
 
                return RES_OK;
@@ -70,6 +71,11 @@ namespace ucl {
 
        Result GuiPresenter::prepare(GuiPresenter &parent, const int flags)
        {
+               const auto window = parent.getWindowRef();
+               if (!window) {
+                       LOG_RETURN(RES_FAIL, "window is NULL!");
+               }
+
                if (flags & PF_ADD_DEACTIVATOR_SOURCES) {
 
                        if (!parent.m_sink) {
@@ -92,7 +98,7 @@ namespace ucl {
                        addDeactivatorException(getObjPtr());
                }
 
-               m_window = parent.m_window;
+               m_window = window;
                m_isChild = true;
                m_isPrepared = true;
 
@@ -101,13 +107,16 @@ namespace ucl {
 
        Window &GuiPresenter::getWindow()
        {
-               UCL_ASSERT(isWindowReady(), "m_window is NULL!");
-               return *m_window;
+               const auto window = getWindowRef();
+               UCL_ASSERT(window, "window is NULL!");
+               // Since GUI is single threaded Window instance will not be deleted
+               // on "window" shared reference destroy
+               return *window;
        }
 
-       bool GuiPresenter::isWindowReady() const
+       WindowSRef GuiPresenter::getWindowRef()
        {
-               return !!m_window;
+               return m_window.lock();
        }
 
        void GuiPresenter::addDeactivatorException(const void *const deactivator)
@@ -123,6 +132,22 @@ namespace ucl {
                m_sink = sink;
        }
 
+       const void *GuiPresenter::getSelfDeactivator() const
+       {
+               // Just return some unknown pointer that will never be aliaced
+               return &m_isPrepared;
+       }
+
+       void GuiPresenter::activateSelf()
+       {
+               activateByImpl({getSelfDeactivator(), false});
+       }
+
+       void GuiPresenter::deactivateSelf()
+       {
+               deactivateByImpl({getSelfDeactivator(), false});
+       }
+
        void GuiPresenter::sendActivate(Widget &sender)
        {
                sendDeactivator(sender, impl::ACTIVATE_BY, getObjPtr());
@@ -152,7 +177,9 @@ namespace ucl {
        void GuiPresenter::broadcastDeactivator(const SmartEvent event,
                        const void *const deactivator)
        {
-               sendDeactivatorInfo(*m_window, event, {deactivator, true});
+               if (const auto window = getWindowRef()) {
+                       sendDeactivatorInfo(*window, event, {deactivator, true});
+               }
        }
 
        void GuiPresenter::sendDeactivatorInfo(Widget &sender,
@@ -183,18 +210,18 @@ namespace ucl {
 
        void GuiPresenter::addDeactivatorSource(Widget &source)
        {
-               source.addEventHandler(impl::ACTIVATE_BY, WEAK_DELEGATE(
-                               GuiPresenter::onActivateBySmart, asWeak(*this)));
-               source.addEventHandler(impl::DEACTIVATE_BY, WEAK_DELEGATE(
-                               GuiPresenter::onDeactivateBySmart, asWeak(*this)));
+               source.addEventHandler(
+                               impl::ACTIVATE_BY, WEAK_DELEGATE_THIS(onActivateBySmart));
+               source.addEventHandler(
+                               impl::DEACTIVATE_BY, WEAK_DELEGATE_THIS(onDeactivateBySmart));
        }
 
        void GuiPresenter::delDeactivatorSource(Widget &source)
        {
-               source.delEventHandler(impl::ACTIVATE_BY, WEAK_DELEGATE(
-                               GuiPresenter::onActivateBySmart, asWeak(*this)));
-               source.delEventHandler(impl::DEACTIVATE_BY, WEAK_DELEGATE(
-                               GuiPresenter::onDeactivateBySmart, asWeak(*this)));
+               source.delEventHandler(
+                               impl::ACTIVATE_BY, DELEGATE_THIS(onActivateBySmart));
+               source.delEventHandler(
+                               impl::DEACTIVATE_BY, DELEGATE_THIS(onDeactivateBySmart));
        }
 
        void GuiPresenter::activateByImpl(const DeactivatorInfo &info)
index b3f8ac309d35b1c181afc40c51bf44d617f7b885..01d95e6b9e8fe171e92ebeee8e5795b6c5a4479d 100644 (file)
@@ -290,8 +290,8 @@ namespace ucl {
                evas_object_repeat_events_set(*check, EINA_FALSE);
                evas_object_propagate_events_set(*check, EINA_FALSE);
 
-               check->addEventHandler(impl::CHECK_CHANGED, WEAK_DELEGATE(
-                               ListItemPresenter::onPickCheckChanged, asWeak(*this)));
+               check->addEventHandler(
+                               impl::CHECK_CHANGED, WEAK_DELEGATE_THIS(onPickCheckChanged));
 
                return check;
        }
@@ -333,6 +333,28 @@ namespace ucl {
                return RES_OK;
        }
 
+       Result ListItemPresenter::bringInItem(Elm_Genlist_Item_Scrollto_Type type)
+       {
+               if (!m_item) {
+                       LOG_RETURN(RES_INVALID_OPERATION, "m_item is NULL!");
+               }
+
+               elm_genlist_item_bring_in(m_item, type);
+
+               return RES_OK;
+       }
+
+       Result ListItemPresenter::showItem(Elm_Genlist_Item_Scrollto_Type type)
+       {
+               if (!m_item) {
+                       LOG_RETURN(RES_INVALID_OPERATION, "m_item is NULL!");
+               }
+
+               elm_genlist_item_show(m_item, type);
+
+               return RES_OK;
+       }
+
        Result ListItemPresenter::updateItemStyle(const ElmStyle newItemStyle)
        {
                if (!m_item) {
index 2e05ecafd32c447f3ad34f3b848f88c25b624803..407cb5c728762bf8481eea26449940cdeefa82c1 100644 (file)
@@ -139,28 +139,28 @@ namespace ucl {
 
        void ListPresenter::registerItemEvents(int flags)
        {
-               m_genlist->addEventHandler(impl::ITEM_SELECTED, WEAK_DELEGATE(
-                               ListPresenter::onItemSelected, asWeak(*this)));
+               m_genlist->addEventHandler(impl::ITEM_SELECTED,
+                               WEAK_DELEGATE_THIS(onItemSelected));
 
                if (flags & FLAG_NOTIFY_REALIZED) {
-                       m_genlist->addEventHandler(impl::ITEM_REALIZED, WEAK_DELEGATE(
-                                       ListPresenter::onItemRealized, asWeak(*this)));
+                       m_genlist->addEventHandler(impl::ITEM_REALIZED,
+                                       WEAK_DELEGATE_THIS(onItemRealized));
                }
                if (flags & FLAG_NOTIFY_UNREALIZED) {
-                       m_genlist->addEventHandler(impl::ITEM_UNREALIZED, WEAK_DELEGATE(
-                                       ListPresenter::onItemUnrealized, asWeak(*this)));
+                       m_genlist->addEventHandler(impl::ITEM_UNREALIZED,
+                                       WEAK_DELEGATE_THIS(onItemUnrealized));
                }
                if (flags & FLAG_NOTIFY_HIGHLIGHTED) {
-                       m_genlist->addEventHandler(impl::ITEM_HIGHLIGHTED, WEAK_DELEGATE(
-                                       ListPresenter::onItemHighlighted, asWeak(*this)));
+                       m_genlist->addEventHandler(impl::ITEM_HIGHLIGHTED,
+                                       WEAK_DELEGATE_THIS(onItemHighlighted));
                }
                if (flags & FLAG_NOTIFY_UNHIGHLIGHTED) {
-                       m_genlist->addEventHandler(impl::ITEM_UNHIGHLIGHTED, WEAK_DELEGATE(
-                                       ListPresenter::onItemUnhighlighted, asWeak(*this)));
+                       m_genlist->addEventHandler(impl::ITEM_UNHIGHLIGHTED,
+                                       WEAK_DELEGATE_THIS(onItemUnhighlighted));
                }
                if (flags & FLAG_NOTIFY_LONGPRESSED) {
-                       m_genlist->addEventHandler(impl::ITEM_LONGPRESSED, WEAK_DELEGATE(
-                                       ListPresenter::onItemLongpressed, asWeak(*this)));
+                       m_genlist->addEventHandler(impl::ITEM_LONGPRESSED,
+                                       WEAK_DELEGATE_THIS(onItemLongpressed));
                }
        }