TizenRefApp-8323 [Call UI] Implement CallDialer 85/123285/3
authorIgor Olshevskyi <i.olshevskyi@samsung.com>
Tue, 4 Apr 2017 06:38:46 +0000 (09:38 +0300)
committerIgor Olshevskyi <i.olshevskyi@samsung.com>
Thu, 6 Apr 2017 11:46:36 +0000 (14:46 +0300)
Change-Id: I3950c7f468c4aac260b8bfca3a671a5457d972bb

inc/model/ICallDialer.h
inc/model/types.h
src/common.h
src/model/CallDialer.cpp
src/model/CallDialer.h
src/model/CallManager.h
src/model/helpers.h
src/model/helpers.hpp
src/model/implTypes.h

index 1ca00b9f9a824c934c52ded1a2142cbe449d2734..c9193d0a646fc495505f5b2afb38beca96467aa8 100644 (file)
 namespace callui {
 
        class ICallDialer: public ucl::Polymorphic {
-       public:
-               using DialStatusHandler = ucl::Delegate<void(DialStatus)>;
-
        public:
                virtual ucl::Result dialVoiceCall(const std::string &number, SimSlot simSlot) = 0;
-               virtual ucl::Result addDialStatusHandler(DialStatusHandler handler) = 0;
-               virtual ucl::Result removeDialStatusHandler(DialStatusHandler handler) = 0;
+               virtual void addDialStatusHandler(DialStatusHandler handler) = 0;
+               virtual void removeDialStatusHandler(DialStatusHandler handler) = 0;
        };
 }
 
index 437c9593488b2255efe612c6fc7f6832d9de19a1..b59db375522627e9fe8082c97148e35414135b68 100644 (file)
@@ -49,7 +49,7 @@ namespace callui {
                CANCEL,
                FAIL,
                FAIL_SS,
-               FDN,
+               FAIL_FDN,
                FLIGHT_MODE
        };
 
@@ -110,6 +110,8 @@ namespace callui {
 
        using CallStateHandler = ucl::Delegate<void(CallEventType)>;
 
+       using DialStatusHandler = ucl::Delegate<void(DialStatus)>;
+
        using AudioStateHandler = ucl::Delegate<void(AudioStateType)>;
        using MuteStateHandler = ucl::Delegate<void(bool)>;
 
index 1e0964ba5e7e482b850815caa2d45ba55c8ceafd..3b25582fdc11c919b137839d88b35fcbd7815b01 100644 (file)
@@ -31,4 +31,6 @@
 #undef UCL_LOG_TAG
 #define UCL_LOG_TAG "CALLUI"
 
+#define TEL_NUMBER_MAX_SIZE 82
+
 #endif // __CALLUI_COMMON_H__
index 0699b49c815625a5dd36a33369cd0ffce2aa80d6..b93765c0113950bc5ec539207e54bd89a05fadf7 100644 (file)
 #include "CallDialer.h"
 
 #include "CallManager.h"
+#include "CallClient.h"
 
 #include "common.h"
+#include "helpers.h"
 
 namespace callui {
 
@@ -31,6 +33,7 @@ namespace callui {
 
        CallDialer::~CallDialer()
        {
+               cm_unset_dial_status_cb(*(m_cm.getCallClient()));
        }
 
        CallDialerSRef CallDialer::newInstance(CallManager &cm)
@@ -40,23 +43,35 @@ namespace callui {
                return result;
        }
 
+       void CallDialer::DialStatusChangedCb(cm_dial_status_e status)
+       {
+               m_event.invoke(convertCallManagerDialStatus(status));
+       }
+
        Result CallDialer::prepare()
        {
-               return RES_OK;
+               return convertCallManagerResult(
+                               cm_set_dial_status_cb(*(m_cm.getCallClient()),
+                                               CALLBACK_B(CallDialer::DialStatusChangedCb), this));
        }
 
        Result CallDialer::dialVoiceCall(const std::string &number, SimSlot simSlot)
        {
-               UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+               char buff[TEL_NUMBER_MAX_SIZE] = { 0 };
+               snprintf(buff, sizeof(buff), "%s", number.c_str());
+
+               return convertCallManagerResult(
+                               cm_dial_call(*(m_cm.getCallClient()),
+                                               buff, CM_CALL_TYPE_VOICE, convertCallAppSimSlot(simSlot)));
        }
 
-       Result CallDialer::addDialStatusHandler(DialStatusHandler handler)
+       void CallDialer::addDialStatusHandler(DialStatusHandler handler)
        {
-               UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+               m_event += handler;
        }
 
-       Result CallDialer::removeDialStatusHandler(DialStatusHandler handler)
+       void CallDialer::removeDialStatusHandler(DialStatusHandler handler)
        {
-               UCL_ASSERT(0, "!!! NOT IMPLEMENTED !!!");
+               m_event -= handler;
        }
 }
index 4dcf865a48fd1408414a2fecc73d2fd00b49d92f..f1a7d5eef4576052ce8beb6ade3b4dcc82aadc7a 100644 (file)
@@ -17,7 +17,7 @@
 #ifndef __CALLUI_MODEL_CALL_DIALER_H__
 #define __CALLUI_MODEL_CALL_DIALER_H__
 
-#include "types.h"
+#include <call-manager-ext.h>
 
 #include "model/ICallDialer.h"
 
@@ -33,17 +33,19 @@ namespace callui {
                // ICallDialer
 
                virtual ucl::Result dialVoiceCall(const std::string &number, SimSlot simSlot) override final;
-               virtual ucl::Result addDialStatusHandler(DialStatusHandler handler) override final;
-               virtual ucl::Result removeDialStatusHandler(DialStatusHandler handler) override final;
+               virtual void addDialStatusHandler(DialStatusHandler handler) override final;
+               virtual void removeDialStatusHandler(DialStatusHandler handler) override final;
 
-       private:
-               ucl::Result prepare();
        private:
                friend class ucl::RefCountObj<CallDialer>;
                CallDialer(CallManager &cm);
 
+               ucl::Result prepare();
+               void DialStatusChangedCb(cm_dial_status_e dial_status);
+
        private:
                CallManager &m_cm;
+               DialStatusEvent m_event;
        };
 
 }
index 0fe3192d0d6583a954110ac0a5cc8dacf1ec696a..6b7b9724fb7e6011e9f764de1264d3b57aa0113a 100644 (file)
 #ifndef __CALLUI_MODEL_CALL_MANAGER_H__
 #define __CALLUI_MODEL_CALL_MANAGER_H__
 
-#include "model/ICallManager.h"
-
 #include "ucl/misc/Event.h"
 
+#include "model/ICallManager.h"
+
 #include "implTypes.h"
 
 namespace callui {
index 522dc476dfe160f7149bc84207abb00be7377672..c1d5ac26cad9e612d97955f65345c7c16effaed1 100644 (file)
@@ -26,6 +26,10 @@ namespace callui {
        ucl::Result convertCallManagerResult(int cmRes);
 
        AudioStateType convertCallManagerAudioState(cm_audio_state_type_e state);
+
+       DialStatus convertCallManagerDialStatus(cm_dial_status_e status);
+
+       cm_multi_sim_slot_type_e convertCallAppSimSlot(SimSlot slot);
 }
 
 #include "helpers.hpp"
index 43a9784160538afc3cb7c989117780b38bd7c97f..d5d411e3d743ec7a7838277052174aac2d392c56 100644 (file)
@@ -37,13 +37,37 @@ namespace callui {
        inline AudioStateType convertCallManagerAudioState(cm_audio_state_type_e state)
        {
                switch (state) {
-               case CM_AUDIO_STATE_NONE_E:      return AudioStateType::NONE;
-               case CM_AUDIO_STATE_SPEAKER_E:   return AudioStateType::SPEAKER;
-               case CM_AUDIO_STATE_RECEIVER_E:  return AudioStateType::RECEIVER;
-               case CM_AUDIO_STATE_EARJACK_E:   return AudioStateType::EARJACK;
-               case CM_AUDIO_STATE_BT_E:        return AudioStateType::BT;
+               case CM_AUDIO_STATE_NONE_E:     return AudioStateType::NONE;
+               case CM_AUDIO_STATE_SPEAKER_E:  return AudioStateType::SPEAKER;
+               case CM_AUDIO_STATE_RECEIVER_E: return AudioStateType::RECEIVER;
+               case CM_AUDIO_STATE_EARJACK_E:  return AudioStateType::EARJACK;
+               case CM_AUDIO_STATE_BT_E:       return AudioStateType::BT;
                default:
                        return AudioStateType::NONE;
                }
        }
+
+       inline DialStatus convertCallManagerDialStatus(cm_dial_status_e status)
+       {
+               switch (status) {
+               case CM_DIAL_SUCCESS:           return DialStatus::SUCCESS;
+               case CM_DIAL_CANCEL:            return DialStatus::CANCEL;
+               case CM_DIAL_FAIL:              return DialStatus::FAIL;
+               case CM_DIAL_FAIL_SS:           return DialStatus::FAIL_SS;
+               case CM_DIAL_FAIL_FDN:          return DialStatus::FAIL_FDN;
+               case CM_DIAL_FAIL_FLIGHT_MODE:  return DialStatus::FLIGHT_MODE;
+               default:
+                       return DialStatus::FAIL;
+               }
+       }
+
+       inline cm_multi_sim_slot_type_e convertCallAppSimSlot(SimSlot slot)
+       {
+               switch (slot) {
+               case SimSlot::FIRST:      return CM_MULTI_SIM_SLOT_1;
+               case SimSlot::SECOND:     return CM_MULTI_SIM_SLOT_2;
+               default:
+                       return CM_MULTI_SIM_SLOT_DEFAULT;
+               }
+       }
 }
index ee8bae0548dfeac58af2dc8fc0ef979591d9882b..c943d140f29baabddc04843d60466fe47a3a3297 100644 (file)
@@ -40,6 +40,7 @@ namespace callui {
        using CallStateEvent = ucl::Event<CallStateHandler>;
        using AudioStateEvent = ucl::Event<AudioStateHandler>;
        using MuteStateEvent = ucl::Event<MuteStateHandler>;
+       using DialStatusEvent = ucl::Event<DialStatusHandler>;
 }
 
 #endif // __CALLUI_MODEL_IMPL_TYPES_H__