2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file PhnSettingsManager.cpp
19 * @brief Setting Manager class
24 #include <FBaseColIList.h>
26 #include "vconf-internal-ciss-keys.h"
27 #include "PhnSettingsManager.h"
30 using namespace Tizen::App;
31 using namespace Tizen::Base;
32 using namespace Tizen::Base::Collection;
33 using namespace Tizen::Io;
34 using namespace Tizen::Social;
35 using namespace Tizen::System;
37 SettingsManager* SettingsManager::__pInstance = null;
39 SettingsManager::SettingsManager(void)
41 , __pSettingsEventListener(null)
42 , __pCallSettingDataService(null)
47 SettingsManager::~SettingsManager(void)
49 //De-initialize the TAPI Library
50 if(__pTapiHandle != null)
52 tel_deinit(__pTapiHandle);
54 if (__pCallSettingDataService)
56 __pCallSettingDataService->CloseDatabase();
57 delete __pCallSettingDataService;
59 if (__pSettingsEventListener != null)
61 delete __pSettingsEventListener;
63 RemoveSystemEventListener();
66 void SettingsManager::CreateInstance(void)
68 __pInstance = new (std::nothrow) SettingsManager();
69 result r = __pInstance->Construct();
76 std::atexit(&(SettingsManager::DestroyInstance));
79 void SettingsManager::DestroyInstance(void)
85 SettingsManager::Construct(void)
87 __pCallSettingDataService = CallSettingDataService::CreateInstance();
88 result r = __pCallSettingDataService->OpenDatabase();
93 //initialize telephony
94 __pTapiHandle = tel_init(null);
95 SetCallState(CALL_STATE__CALL_OFF);
96 AddSystemEventListener();
101 SettingsManager::GetInstance(void)
103 if (__pInstance == null)
111 SettingsManager::AddSettingEventListener(ISettingsEventListener* pSettingsEventListener)
113 if (__pSettingsEventListener == null)
115 __pSettingsEventListener = new (std::nothrow) ArrayListT<ISettingsEventListener*>();
118 //Add to listeners, if not already in list.
119 if ( (pSettingsEventListener != null)
120 && !(__pSettingsEventListener->Contains(pSettingsEventListener)) )
122 __pSettingsEventListener->Add(pSettingsEventListener);
127 SettingsManager::RemoveSettingEventListener(ISettingsEventListener* pSettingsEventListener)
129 if ((__pSettingsEventListener != null) && (pSettingsEventListener != null)
130 && __pSettingsEventListener->Contains(pSettingsEventListener))
132 __pSettingsEventListener->Remove(pSettingsEventListener);
137 SettingsManager::NotifyForwardingEventListeners(ForwardResponseType responseType, bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime)
139 IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
140 result r = E_FAILURE;
141 if (__pSettingsEventListener != null)
143 pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
144 //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
146 while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
148 ISettingsEventListener* pListener;
149 r = pListenerEnum->GetCurrent(pListener);
150 //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r));
151 if (responseType == SET_CALLFORWARD_RESPONSE)
153 pListener->HandleSetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, isCallForwardActivated, noReplyWaitTime);
157 pListener->HandleGetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, isCallForwardActivated, noReplyWaitTime);
164 SettingsManager::NotifyBarringEventListeners(BarringResponseType responseType, bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated)
166 IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
167 result r = E_FAILURE;
168 if (__pSettingsEventListener != null)
170 pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
171 //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
173 while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
175 ISettingsEventListener* pListener;
176 r = pListenerEnum->GetCurrent(pListener);
177 //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r));
178 if (responseType == SET_CALLBARRING_RESPONSE)
180 pListener->HandleSetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated);
184 pListener->HandleGetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated);
191 SettingsManager::NotifyWaitingEventListeners(WaitingResponseType responseType, bool isCallSuccessful, bool isCallWaitingActivated)
193 IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
194 result r = E_FAILURE;
195 if (__pSettingsEventListener != null)
197 pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
198 //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
200 while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
202 ISettingsEventListener* pListener;
203 r = pListenerEnum->GetCurrent(pListener);
204 //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r));
205 if (responseType == SET_CALLWAITING_RESPONSE)
207 pListener->HandleSetCallWaitingResponse(isCallSuccessful, isCallWaitingActivated);
211 pListener->HandleGetCallWaitingResponse(isCallSuccessful, isCallWaitingActivated);
214 delete pListenerEnum;
219 SettingsManager::SetCallForwardStatus(const String& phoneNumber, CallForwardCondition callFwdCondition, bool activateFwding, int noReplyTime)
221 int errorCode = ERROR_NONE;
222 TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED, "Telephony initialization failed");
224 TelSsForwardInfo_t forwardInfo;
225 memset(&forwardInfo, 0, sizeof(TelSsForwardInfo_t));
226 forwardInfo.Class = TAPI_SS_CLASS_VOICE;
227 if (activateFwding == true)
229 forwardInfo.Mode = TAPI_SS_CF_MODE_REGISTRATION_EV;
233 forwardInfo.Mode = TAPI_SS_CF_MODE_ERASURE_EV;
235 const wchar_t* pContact = phoneNumber.GetPointer();
236 int len = phoneNumber.GetLength()+1;
237 char* pNumber = new (std::nothrow) char[len];
238 wcstombs(pNumber, pContact, len);
239 strncpy(forwardInfo.szPhoneNumber, pNumber, len);
242 switch (callFwdCondition)
244 case CALL_FORWARD_ALL:
246 forwardInfo.Condition = TAPI_SS_CF_WHEN_CFU;
250 case CALL_FORWARD_BUSY:
252 forwardInfo.Condition = TAPI_SS_CF_WHEN_CFB;
256 case CALL_FORWARD_NO_REPLY:
258 forwardInfo.Condition = TAPI_SS_CF_WHEN_CFNRy;
259 forwardInfo.NoReplyConditionTimer = TelSsNoReplyTime_t(noReplyTime);
263 case CALL_FORWARD_NOT_REACHABLE:
265 forwardInfo.Condition = TAPI_SS_CF_WHEN_CFNRc;
271 return ERROR_INVALID_INPUT;
276 int retStatus = tel_set_ss_forward(__pTapiHandle, &forwardInfo, &HandleSetForwardResponse, this);
277 if (retStatus != TAPI_API_SUCCESS)
279 errorCode = ERROR_TAPI_ERROR;
285 SettingsManager::HandleSetForwardResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
287 TelSsForwardResp_t* pResponse = (TelSsForwardResp_t*) pData;
288 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
289 if (pResponse != null)
291 int count = pResponse->record_num;
292 for (int index = 0; index < count; index++)
294 CallForwardCondition callFwdCondition = CALL_FORWARD_ALL;
295 bool isActivated = false;
296 int noReplyWaitTime = 0;
297 //Check if status is "Active or Quiescent" and forwarding number is available
298 if ((pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE
299 || pResponse->record[index].Status == TAPI_SS_STATUS_QUIESCENT
300 || pResponse->record[index].Status == TAPI_SS_STATUS_REGISTERED)
301 && (pResponse->record[index].bCallForwardingNumberPresent != 0))
305 switch (pResponse->record[index].ForwardCondition)
307 case TAPI_SS_CF_WHEN_CFU:
309 callFwdCondition = CALL_FORWARD_ALL;
313 case TAPI_SS_CF_WHEN_CFB:
315 callFwdCondition = CALL_FORWARD_BUSY;
319 case TAPI_SS_CF_WHEN_CFNRy:
321 callFwdCondition = CALL_FORWARD_NO_REPLY;
323 noReplyWaitTime = (pResponse->record[index].NoReplyWaitTime);
327 case TAPI_SS_CF_WHEN_CFNRc:
329 callFwdCondition = CALL_FORWARD_NOT_REACHABLE;
336 //fetch forwarding number
337 char* pTmpNumberPtr = new (std::nothrow) char[TAPI_CALL_DIALDIGIT_LEN_MAX];
338 strncpy(pTmpNumberPtr, (char*) (pResponse->record[index].szCallForwardingNumber), TAPI_CALL_DIALDIGIT_LEN_MAX);
339 String callFwdNumber(pTmpNumberPtr);
340 delete []pTmpNumberPtr;
341 pTmpNumberPtr = null;
343 //notify event listeners
344 pSettingsManager->NotifyForwardingEventListeners(SET_CALLFORWARD_RESPONSE,(result == TAPI_SS_SUCCESS),callFwdCondition, callFwdNumber, isActivated, noReplyWaitTime);
350 SettingsManager::GetCallForwardStatus(CallForwardCondition callFwdCondition)
352 int errorCode = ERROR_NONE;
353 TryReturn(__pTapiHandle != null,ERROR_TAPI_INIT_FAILED,"Telephony initialization failed");
355 TelSsForwardWhen_t condition;
356 switch (callFwdCondition)
358 case CALL_FORWARD_ALL:
360 condition = TAPI_SS_CF_WHEN_CFU;
364 case CALL_FORWARD_BUSY:
366 condition = TAPI_SS_CF_WHEN_CFB;
370 case CALL_FORWARD_NO_REPLY:
372 condition = TAPI_SS_CF_WHEN_CFNRy;
376 case CALL_FORWARD_NOT_REACHABLE:
378 condition = TAPI_SS_CF_WHEN_CFNRc;
384 return ERROR_INVALID_INPUT;
388 int retStatus = tel_get_ss_forward_status(__pTapiHandle, TAPI_SS_CLASS_VOICE, condition, &HandleGetForwardResponse, this);
389 if (retStatus != TAPI_API_SUCCESS)
391 errorCode = ERROR_TAPI_ERROR;
398 SettingsManager::HandleGetForwardResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
400 TelSsForwardResp_t* pResponse = (TelSsForwardResp_t*) pData;
401 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
402 if (pResponse != null)
404 int count = pResponse->record_num;
405 for (int index = 0; index < count; index++)
407 CallForwardCondition callFwdCondition = CALL_FORWARD_ALL;
408 bool isActivated = false;
409 int noReplyWaitTime = 0;
410 //Check if status is "ACTIVE or QUIESCENT or REGISTERED" and forwarding number is available
411 if ((pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE
412 || pResponse->record[index].Status == TAPI_SS_STATUS_QUIESCENT
413 || pResponse->record[index].Status == TAPI_SS_STATUS_REGISTERED)
414 && (pResponse->record[index].bCallForwardingNumberPresent != 0))
418 switch (pResponse->record[index].ForwardCondition)
420 case TAPI_SS_CF_WHEN_CFU:
422 callFwdCondition = CALL_FORWARD_ALL;
426 case TAPI_SS_CF_WHEN_CFB:
428 callFwdCondition = CALL_FORWARD_BUSY;
432 case TAPI_SS_CF_WHEN_CFNRy:
434 callFwdCondition = CALL_FORWARD_NO_REPLY;
435 noReplyWaitTime = (pResponse->record[index].NoReplyWaitTime);
439 case TAPI_SS_CF_WHEN_CFNRc:
441 callFwdCondition = CALL_FORWARD_NOT_REACHABLE;
448 char* pTmpNumberPtr = new (std::nothrow) char[TAPI_CALL_DIALDIGIT_LEN_MAX];
449 strncpy(pTmpNumberPtr, (char*) (pResponse->record[index].szCallForwardingNumber), TAPI_CALL_DIALDIGIT_LEN_MAX);
450 String callFwdNumber(pTmpNumberPtr);
451 //notify event listeners
452 pSettingsManager->NotifyForwardingEventListeners(GET_CALLFORWARD_RESPONSE, (result == TAPI_SS_SUCCESS), callFwdCondition, callFwdNumber, isActivated, noReplyWaitTime);
453 delete []pTmpNumberPtr;
454 pTmpNumberPtr = null;
460 SettingsManager::SetCallBarringStatus(const String& password, CallBarringType callBarringType, bool activateBarring)
462 int errorCode = ERROR_NONE;
463 TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED, "Telephony initialization failed");
465 TelSsBarringInfo_t barringInfo;
466 memset(&barringInfo, 0, sizeof(TelSsBarringInfo_t));
467 barringInfo.Class = TAPI_SS_CLASS_VOICE;
468 if (activateBarring == true)
470 barringInfo.Mode = TAPI_SS_CB_MODE_ACTIVATE;
474 barringInfo.Mode = TAPI_SS_CB_MODE_DEACTIVATE;
476 const wchar_t* pContact = password.GetPointer();
477 int len = password.GetLength();
480 return ERROR_BARRING_PWD_TOO_LONG;
482 char* pNumber = new (std::nothrow) char[len];
483 wcstombs(pNumber, pContact, len);
484 strncpy(barringInfo.szPassword, pNumber, len);
487 switch (callBarringType)
489 case CALL_BARRING_ALL_OUTGOING:
491 barringInfo.Type = TAPI_SS_CB_TYPE_BAOC;
495 case CALL_BARRING_INTERNATIONAL_OUTGOING:
497 barringInfo.Type = TAPI_SS_CB_TYPE_BOIC;
501 case CALL_BARRING_INTERNATIONAL_EXCEPT_HOME:
503 barringInfo.Type = TAPI_SS_CB_TYPE_BOIC_NOT_HC;
507 case CALL_BARRING_ALL_INCOMING:
509 barringInfo.Type = TAPI_SS_CB_TYPE_BAIC;
513 case CALL_BARRING_INCOMING_ROAMING:
515 barringInfo.Type = TAPI_SS_CB_TYPE_BIC_ROAM;
521 return ERROR_INVALID_INPUT;
525 int retStatus = tel_set_ss_barring(__pTapiHandle, &barringInfo, &HandleSetBarringResponse, this);
526 if (retStatus != TAPI_API_SUCCESS)
528 errorCode = ERROR_TAPI_ERROR;
535 SettingsManager::HandleSetBarringResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
537 TelSsBarringResp_t* pResponse = (TelSsBarringResp_t*) pData;
538 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
539 if (pResponse != null)
541 CallBarringType callBarringType = CALL_BARRING_ALL_OUTGOING;
542 bool isActivated = false;
543 int count = pResponse->record_num;
544 for (int index = 0; index < count; index++)
546 if (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE)
550 switch (pResponse->record[index].Flavour)
552 case TAPI_SS_CB_TYPE_BAOC:
554 callBarringType = CALL_BARRING_ALL_OUTGOING;
558 case TAPI_SS_CB_TYPE_BOIC:
560 callBarringType = CALL_BARRING_INTERNATIONAL_OUTGOING;
564 case TAPI_SS_CB_TYPE_BOIC_NOT_HC:
566 callBarringType = CALL_BARRING_INTERNATIONAL_EXCEPT_HOME;
570 case TAPI_SS_CB_TYPE_BAIC:
572 callBarringType = CALL_BARRING_ALL_INCOMING;
576 case TAPI_SS_CB_TYPE_BIC_ROAM:
578 callBarringType = CALL_BARRING_INCOMING_ROAMING;
585 //notify event listeners
586 pSettingsManager->NotifyBarringEventListeners(SET_CALLBARRING_RESPONSE,(result == TAPI_SS_SUCCESS), callBarringType, isActivated);
592 SettingsManager::GetCallBarringStatus(CallBarringType callBarringType)
594 int errorCode = ERROR_NONE;
595 TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED, "Telephony initialization failed");
597 TelSsBarringType_t barringType;
598 switch (callBarringType)
600 case CALL_BARRING_ALL_OUTGOING:
602 barringType = TAPI_SS_CB_TYPE_BAOC;
606 case CALL_BARRING_INTERNATIONAL_OUTGOING:
608 barringType = TAPI_SS_CB_TYPE_BOIC;
612 case CALL_BARRING_INTERNATIONAL_EXCEPT_HOME:
614 barringType = TAPI_SS_CB_TYPE_BOIC_NOT_HC;
618 case CALL_BARRING_ALL_INCOMING:
620 barringType = TAPI_SS_CB_TYPE_BAIC;
624 case CALL_BARRING_INCOMING_ROAMING:
626 barringType = TAPI_SS_CB_TYPE_BIC_ROAM;
632 return ERROR_INVALID_INPUT;
636 int retStatus = tel_get_ss_barring_status(__pTapiHandle, TAPI_SS_CLASS_VOICE, barringType, &HandleGetBarringResponse, this);
637 if (retStatus != TAPI_API_SUCCESS)
639 errorCode = ERROR_TAPI_ERROR;
646 SettingsManager::HandleGetBarringResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
648 TelSsBarringResp_t* pResponse = (TelSsBarringResp_t*) pData;
649 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
650 if (pResponse != null)
652 CallBarringType callBarringType = CALL_BARRING_ALL_OUTGOING;
653 bool isActivated = false;
654 int count = pResponse->record_num;
655 for (int index = 0; index < count; index++)
657 if (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE)
661 switch (pResponse->record[index].Flavour)
663 case TAPI_SS_CB_TYPE_BAOC:
665 callBarringType = CALL_BARRING_ALL_OUTGOING;
669 case TAPI_SS_CB_TYPE_BOIC:
671 callBarringType = CALL_BARRING_INTERNATIONAL_OUTGOING;
675 case TAPI_SS_CB_TYPE_BOIC_NOT_HC:
677 callBarringType = CALL_BARRING_INTERNATIONAL_EXCEPT_HOME;
681 case TAPI_SS_CB_TYPE_BAIC:
683 callBarringType = CALL_BARRING_ALL_INCOMING;
687 case TAPI_SS_CB_TYPE_BIC_ROAM:
689 callBarringType = CALL_BARRING_INCOMING_ROAMING;
696 //notify event listeners
697 pSettingsManager->NotifyBarringEventListeners(GET_CALLBARRING_RESPONSE,(result == TAPI_SS_SUCCESS), callBarringType, isActivated);
703 SettingsManager::SetCallWaitingStatus(bool activateWaiting)
705 int errorCode = ERROR_NONE;
706 TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED,"Telephony initialization failed");
708 TelSsWaitingInfo_t waitingInfo;
709 memset(&waitingInfo, 0, sizeof(TelSsWaitingInfo_t));
710 waitingInfo.Class = TAPI_SS_CLASS_VOICE;
711 if (activateWaiting == true)
713 waitingInfo.Mode = TAPI_SS_CW_MODE_ACTIVATE;
717 waitingInfo.Mode = TAPI_SS_CW_MODE_DEACTIVATE;
719 int retStatus = tel_set_ss_waiting(__pTapiHandle, &waitingInfo, &HandleSetWaitingResponse, this);
720 if (retStatus != TAPI_API_SUCCESS)
722 errorCode = ERROR_TAPI_ERROR;
729 SettingsManager::HandleSetWaitingResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
731 TelSsWaitingResp_t* pResponse = (TelSsWaitingResp_t*) pData;
732 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
733 bool isCallSuccessful = false;
734 if (result == TAPI_SS_SUCCESS)
736 isCallSuccessful = true;
738 if (pResponse != null)
741 int count = pResponse->record_num;
742 if (pSettingsManager->__pSettingsEventListener != null)
744 for (int index = 0; index < count; index++)
746 //notify event listeners
747 bool isCallWaitingEnabled = (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE);
748 pSettingsManager->NotifyWaitingEventListeners(SET_CALLWAITING_RESPONSE, isCallSuccessful, isCallWaitingEnabled);
755 SettingsManager::GetCallWaitingStatus(void)
757 int errorCode = ERROR_NONE;
758 TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED,"Telephony initialization failed");
760 int retStatus = tel_get_ss_waiting_status(__pTapiHandle, TAPI_SS_CLASS_VOICE, &HandleGetWaitingResponse, this);
761 if (retStatus != TAPI_API_SUCCESS)
763 errorCode = ERROR_TAPI_ERROR;
770 SettingsManager::HandleGetWaitingResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
772 TelSsWaitingResp_t* pResponse = (TelSsWaitingResp_t*) pData;
773 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
774 if (pResponse != null)
776 bool isCallSuccessful = false;
777 if (result == TAPI_SS_SUCCESS)
779 isCallSuccessful = true;
781 int count = pResponse->record_num;
782 if (pSettingsManager->__pSettingsEventListener != null)
784 for (int index = 0; index < count; index++)
786 //notify event listeners
787 bool isCallWaitingEnabled = (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE);
788 pSettingsManager->NotifyWaitingEventListeners(GET_CALLWAITING_RESPONSE, isCallSuccessful, isCallWaitingEnabled);
795 SettingsManager::GetRejectMessageListN(void)
798 char* pMessage = null;
799 HashMapT<int,String> *pMessageMap = null;
801 int retval = vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &messagesCount);
802 if (retval == 0 && messagesCount > 0)
804 pMessageMap = new (std::nothrow) HashMapT<int,String>();
805 pMessageMap->Construct(messagesCount);
806 for (int index = 0; index < messagesCount; index++)
808 int keyForMsg = index;
809 String *pMessageStr = new (std::nothrow) String();
814 pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR);
820 pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR);
826 pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR);
832 pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR);
838 pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR);
844 pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR);
856 //todo:Chk if this is allowed outside the call settings library
857 bindtextdomain("ug-setting-call-efl", "/usr/ug/res/locale");
858 pMessageStr->Append(dgettext("ug-setting-call-efl", pMessage));
859 pMessageMap->Add(keyForMsg, *pMessageStr);
866 SettingsManager::SetRejectMessage(int messageIndex, const String& rejectMessage)
868 result r = E_FAILURE;
869 int messagesCount = 0;
870 vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &messagesCount);
872 const wchar_t* pRejectMessage = rejectMessage.GetPointer();
873 int len = (rejectMessage.GetLength()*sizeof(wchar_t));
874 char* pMessageToBeSet = new (std::nothrow) char[len + 1];
875 memset(pMessageToBeSet, 0, (len + 1) * sizeof(char));
876 wcstombs(pMessageToBeSet, pRejectMessage, len);
880 switch (messageIndex)
884 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR, pMessageToBeSet);
890 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR, pMessageToBeSet);
896 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR, pMessageToBeSet);
902 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR, pMessageToBeSet);
908 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR, pMessageToBeSet);
914 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR, pMessageToBeSet);
920 delete []pMessageToBeSet;
921 pMessageToBeSet = null;
927 delete []pMessageToBeSet;
928 pMessageToBeSet = null;
931 //increment the count only in case of new addition
932 if (messagesCount < 6 && messageIndex >= messagesCount)
936 vconf_set_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, messagesCount);
944 SettingsManager::RemoveRejectMessage(const IListT<int>& deleteKeyList)
946 result r = E_FAILURE;
949 //Fetch old message count
951 vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &oldMsgCount);
953 IMapT<int,String> *pRejectMsgMap = GetRejectMessageListN();
954 if(pRejectMsgMap != null)
956 //First,remove all messages from vconf
957 for (int index = 0; index < oldMsgCount; index++)
962 retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR);
966 retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR);
970 retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR);
974 retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR);
978 retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR);
982 retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR);
987 //Check if all messages are deleted
988 if(oldMsgCount == deleteKeyList.GetCount())
990 vconf_set_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, 0);
991 delete pRejectMsgMap;
995 //Second, delete messages to be deleted from fetched old Message map
996 for (int index = 0; index < deleteKeyList.GetCount(); index++)
999 if (deleteKeyList.GetAt(index, keyForMsg) == E_SUCCESS)
1001 pRejectMsgMap->Remove(keyForMsg);
1005 //Third, reset remaining message in vconf with ordered keys
1006 IListT<String> *pRejectMsgList = pRejectMsgMap->GetValuesN();
1007 newMsgCount = pRejectMsgList->GetCount();
1008 for (int index = 0; index < newMsgCount; index++)
1011 pRejectMsgList->GetAt(index,msg);
1013 const wchar_t* pMsgPtr = msg.GetPointer();
1014 int len = msg.GetLength()*sizeof(wchar_t);
1015 char* pMessageToBeSet = new (std::nothrow) char[len + 1];
1016 memset(pMessageToBeSet, 0, (len + 1) * sizeof(char));
1017 wcstombs(pMessageToBeSet, pMsgPtr, len);
1022 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR, pMessageToBeSet);
1028 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR, pMessageToBeSet);
1034 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR, pMessageToBeSet);
1040 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR, pMessageToBeSet);
1046 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR, pMessageToBeSet);
1052 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR, pMessageToBeSet);
1059 delete []pMessageToBeSet;
1060 pMessageToBeSet = null;
1062 delete pRejectMsgMap;
1063 pRejectMsgMap = null;
1066 //todo: retVal from vconf_unset is always -1. to be checked
1069 //Update message count in vconf
1070 vconf_set_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, newMsgCount);
1078 SettingsManager::GetPrefixDialListN(void)
1080 int phoneNumberCount;
1081 char* pPhoneNumber = null;
1082 ArrayList* pPhoneNumberList = null;
1084 int retval = vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
1087 pPhoneNumberList = new (std::nothrow) ArrayList();
1088 for (int index = 0; index < phoneNumberCount; index++)
1090 String* phoneNumberStr = new (std::nothrow) String();
1095 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR);
1101 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR);
1107 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR);
1113 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR);
1119 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR);
1125 delete pPhoneNumberList;
1126 pPhoneNumberList = null;
1131 phoneNumberStr->Append(pPhoneNumber);
1132 pPhoneNumberList->Add(*phoneNumberStr);
1139 return pPhoneNumberList;
1143 SettingsManager::SetPrefixDialNumber(int phoneNumberIndex, const String& phoneNumber)
1145 result r = E_FAILURE;
1146 int phoneNumberCount = 0;
1149 const wchar_t* pRejectMessage = phoneNumber.GetPointer();
1150 int len = phoneNumber.GetLength();
1151 char* pTmpPhonePtr = new (std::nothrow) char[len + 1];
1152 memset(pTmpPhonePtr, 0, (len + 1) * sizeof(char));
1153 wcstombs(pTmpPhonePtr, pRejectMessage, len);
1154 char* pNumberToBeSet = new (std::nothrow) char[len + 1];
1155 memset(pNumberToBeSet, 0, (len + 1) * sizeof(char));
1156 strncpy(pNumberToBeSet, pTmpPhonePtr, len);
1157 delete []pTmpPhonePtr;
1158 pTmpPhonePtr = null;
1159 vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
1160 switch (phoneNumberIndex)
1164 retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR, pNumberToBeSet);
1170 retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR, pNumberToBeSet);
1176 retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR, pNumberToBeSet);
1182 retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR, pNumberToBeSet);
1188 retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR, pNumberToBeSet);
1194 delete []pNumberToBeSet;
1195 pNumberToBeSet = null;
1201 delete []pNumberToBeSet;
1202 pNumberToBeSet = null;
1206 if (phoneNumberCount < 5)
1210 vconf_set_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, phoneNumberCount);
1211 //todo: change to adding single area code if its prefix number list is supported
1220 SettingsManager::GetPrefixDialNumberAtIndex(int phoneNumberIndex, String& phoneNumber)
1222 result r = E_FAILURE;
1224 int phoneNumberCount = 0;
1225 vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
1228 if(phoneNumberCount > 0 && phoneNumberIndex < phoneNumberCount)
1230 char* pPhoneNumber = null;
1231 switch (phoneNumberIndex)
1235 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR);
1241 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR);
1247 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR);
1253 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR);
1259 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR);
1267 if(pPhoneNumber != null)
1269 r = phoneNumber.Append(pPhoneNumber);
1276 SettingsManager::RemovePrefixDialNumber(int phoneNumberIndex)
1278 result r = E_FAILURE;
1279 int phoneNumberCount = 0;
1282 vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
1283 switch (phoneNumberIndex)
1287 retval = vconf_unset(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR);
1293 retval = vconf_unset(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR);
1299 retval = vconf_unset(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR);
1305 retval = vconf_unset(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR);
1311 retval = vconf_unset(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR);
1322 //todo: retVal from vconf_unset is always -1. to be checked
1325 if (phoneNumberCount > 0)
1329 vconf_set_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, phoneNumberCount);
1337 SettingsManager::SetPrefixDialingStatus(bool enablePrefixDialing)
1339 result r = E_FAILURE;
1340 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_PREFIX_DIAL_BOOL, enablePrefixDialing);
1349 SettingsManager::SetActivePrefixDialingValue(int prefixDialIndex)
1351 result r = E_FAILURE;
1352 int retVal = vconf_set_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_VALUE_INT, prefixDialIndex);
1361 SettingsManager::GetActivePrefixDialingValue(int& prefixDialIndex)
1363 result r = E_FAILURE;
1365 int retVal = vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_VALUE_INT, &indexPos);
1368 prefixDialIndex = indexPos;
1375 SettingsManager::GetPrefixDialingStatus(void)
1377 int isPrefixDialingEnabled = -1;
1379 vconf_get_bool(VCONFKEY_CISSAPPL_PREFIX_DIAL_BOOL, &isPrefixDialingEnabled);
1381 bool retVal = isPrefixDialingEnabled;
1386 SettingsManager::SetVideoCallImagePath(const String& imagePath)
1388 result r = E_FAILURE;
1389 const wchar_t* pRejectMessage = imagePath.GetPointer();
1390 int len = imagePath.GetLength();
1391 char* pTmpPath = new (std::nothrow) char[len + 1];
1392 memset(pTmpPath, 0, (len + 1) * sizeof(char));
1393 wcstombs(pTmpPath, pRejectMessage, len);
1394 char* pPathToBeSet = new (std::nothrow) char[len + 1];
1395 memset(pPathToBeSet, 0, (len + 1) * sizeof(char));
1396 strncpy(pPathToBeSet, pTmpPath, len);
1397 int retVal = vconf_set_str(VCONFKEY_CISSAPPL_VIDEO_IMAGE_PATH_STR, pPathToBeSet);
1404 delete []pPathToBeSet;
1405 pPathToBeSet = null;
1410 SettingsManager::GetVideoCallImagePath(String& imagePath)
1412 result r = E_FAILURE;
1413 char* pVideoImagePath = null;
1414 pVideoImagePath = vconf_get_str(VCONFKEY_CISSAPPL_VIDEO_IMAGE_PATH_STR);
1415 if (pVideoImagePath != null)
1418 imagePath.Append(pVideoImagePath);
1425 SettingsManager::SetCallLineIdentity(CallLineIdentity identity)
1427 result r = E_FAILURE;
1428 int retVal = vconf_set_int(VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT, identity);
1437 SettingsManager::GetCallLineIdentity(CallLineIdentity& identity)
1439 result r = E_FAILURE;
1440 int lineIdentity = -1;
1441 int retVal = vconf_get_int(VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT, &lineIdentity);
1444 identity = (CallLineIdentity) lineIdentity;
1451 SettingsManager::AddToCallRejectList(const String& phoneNumber, CallRejectMatchCondition rejectCondition)
1453 //construct CallRejectInfo.
1454 CallRejectInfo rejInfo;
1455 rejInfo.phoneNumber = phoneNumber;
1456 rejInfo.rejectCondition = rejectCondition;
1457 rejInfo.isActivated = false;
1459 //Fetch call reject list
1460 IListT<CallRejectInfo>* pRejNumbersList = GetCallRejectList();
1461 //Check if this is not already present in database.
1462 bool isDuplicate = false;
1463 if (pRejNumbersList != null)
1465 IEnumeratorT<CallRejectInfo>* pRejectEnum = pRejNumbersList->GetEnumeratorN();
1466 if (pRejectEnum != null)
1468 while (pRejectEnum->MoveNext() == E_SUCCESS)
1470 CallRejectInfo fetchedInfo;
1471 if (( pRejectEnum->GetCurrent(fetchedInfo) == E_SUCCESS) && (fetchedInfo == rejInfo))
1478 delete pRejNumbersList;
1481 result r = E_OBJ_ALREADY_EXIST;
1482 if (isDuplicate == false)
1484 r = __pCallSettingDataService->AddCallRejectInfoToDatabase(&rejInfo);
1489 IListT<CallRejectInfo>*
1490 SettingsManager::GetCallRejectList(void)
1492 int rejectCount = 0;
1493 __pCallSettingDataService->GetCallRejectCount(rejectCount);
1495 if (rejectCount > 0)
1497 ArrayListT<CallRejectInfo>* pCallRejectList = new (std::nothrow) ArrayListT<CallRejectInfo>();
1498 pCallRejectList->Construct(rejectCount);
1499 __pCallSettingDataService->GetAllCallRejectInfoFromDatabaseN(*pCallRejectList);
1500 return pCallRejectList;
1506 SettingsManager::UpdateCallRejectRow(int rowId, const String& phoneNumber, bool activate, CallRejectMatchCondition rejectCondition)
1508 result r = E_FAILURE;
1509 CallRejectInfo* rejInfo = new (std::nothrow) CallRejectInfo();
1510 rejInfo->rowId = rowId;
1511 rejInfo->phoneNumber.Append(phoneNumber);
1512 rejInfo->rejectCondition = rejectCondition;
1513 rejInfo->isActivated = activate;
1514 r = __pCallSettingDataService->UpdateCallRejectInfoDatabase(rowId,rejInfo);
1520 SettingsManager::RemoveCallRejectRow(int rowId)
1522 return __pCallSettingDataService->DeleteCallRejectInfoFromDatabase(rowId);
1526 SettingsManager::SetUnknownRejectStatus(bool activate)
1528 result r = E_FAILURE;
1529 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_AUTO_REJECT_UNKNOWN_BOOL, activate);
1538 SettingsManager::IsCallToBeRejected(String& phoneNumber)
1540 return __pCallSettingDataService->IsCallToBeRejected(phoneNumber);
1544 SettingsManager::GetUnknownRejectStatus(void)
1546 int unknownRejectStatus = -1;
1548 vconf_get_bool(VCONFKEY_CISSAPPL_AUTO_REJECT_UNKNOWN_BOOL, &unknownRejectStatus);
1550 bool retVal = unknownRejectStatus;
1555 SettingsManager::SetCallAlertStatus(CallAlertStatus callAlertStatus)
1557 result r = E_FAILURE;
1558 int retVal = vconf_set_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT, callAlertStatus);
1567 SettingsManager::GetCallAlertStatus(CallAlertStatus& callAlertStatus)
1569 result r = E_FAILURE;
1570 int alertStatus = -1;
1571 int retVal = vconf_get_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT, &alertStatus);
1574 callAlertStatus = (CallAlertStatus) alertStatus;
1581 SettingsManager::SetCallConnectToneStatus(bool activate)
1583 result r = E_FAILURE;
1584 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_CALL_CONNECT_TONE_BOOL, activate);
1593 SettingsManager::GetCallConnectToneStatus(void)
1595 int unknownRejectStatus = -1;
1597 vconf_get_bool(VCONFKEY_CISSAPPL_CALL_CONNECT_TONE_BOOL, &unknownRejectStatus);
1599 bool retVal = unknownRejectStatus;
1604 SettingsManager::SetMinuteMinderToneStatus(bool activate)
1606 result r = E_FAILURE;
1607 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_MINUTE_MINDER_BOOL, activate);
1616 SettingsManager::GetMinuteMinderToneStatus(void)
1618 int unknownRejectStatus = -1;
1620 vconf_get_bool(VCONFKEY_CISSAPPL_MINUTE_MINDER_BOOL, &unknownRejectStatus);
1622 bool retVal = unknownRejectStatus;
1627 SettingsManager::SetCallEndToneStatus(bool activate)
1629 result r = E_FAILURE;
1630 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_CALL_END_TONE_BOOL, activate);
1639 SettingsManager::GetCallEndToneStatus(void)
1641 int unknownRejectStatus = -1;
1643 vconf_get_bool(VCONFKEY_CISSAPPL_CALL_END_TONE_BOOL, &unknownRejectStatus);
1645 bool retVal = unknownRejectStatus;
1650 SettingsManager::SetSpeedDialMapping(const String& contactId, int numberToMap)
1652 result r = E_FAILURE;
1653 SpeedDialInfo mappingInfo;;
1654 mappingInfo.keyMapping = numberToMap;
1655 mappingInfo.contactId = contactId;
1656 r = __pCallSettingDataService->AddSpeedDialInfoToDatabase(&mappingInfo);
1660 IMapT<int,SpeedDialInfo>*
1661 SettingsManager::GetSpeedDialMappingN(void)
1663 return (__pCallSettingDataService->GetAllSpeedDialInfoMapFromDatabaseN());
1667 SettingsManager::RemoveSpeedDialMapping(int rowId)
1669 return __pCallSettingDataService->DeleteSpeedDialInfoFromDatabase(rowId);
1673 SettingsManager::UpdateSpeedDialMapping(int rowId, const String& contactId, int numberToMap)
1675 result r = E_FAILURE;
1676 SpeedDialInfo* mappingInfo = new (std::nothrow) SpeedDialInfo();
1677 mappingInfo->rowId = rowId;
1678 mappingInfo->contactId.Append(contactId);
1679 mappingInfo->keyMapping = numberToMap;
1680 r = __pCallSettingDataService->UpdateSpeedDialInfoDatabase(rowId,mappingInfo);
1686 SettingsManager::GetMappedSpeedDialNumberN(int aIndex)
1688 String* contactNumber = null;
1690 //Fetch contactId for mapped speed dial
1691 String* contactId = __pCallSettingDataService->GetSpeedDialContactN(aIndex);
1692 if(contactId != null && contactId->IsEmpty() == false)
1694 RecordId recordId = INVALID_RECORD_ID;
1695 Integer::Parse(*contactId, recordId);
1696 //check if recordId is correct
1697 if (recordId != Tizen::Social::INVALID_RECORD_ID)
1699 AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
1700 Addressbook* pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
1701 if (pAddressbook != null)
1703 Contact* pMappedContact = pAddressbook->GetContactN(recordId);
1704 if (pMappedContact != null)
1706 IList* pPhoneNumberList = pMappedContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
1707 if (pPhoneNumberList != null)
1709 PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pPhoneNumberList->GetAt(0));
1710 if(pPhoneNumber != null)
1712 contactNumber = new (std::nothrow) String(pPhoneNumber->GetPhoneNumber());
1714 pPhoneNumberList->RemoveAll(true);
1715 delete pPhoneNumberList;
1717 delete pMappedContact;
1719 delete pAddressbook;
1725 return contactNumber;
1729 SettingsManager::FetchContactDetailsN(const String& contactId)
1731 Contact* pFetchedContact = null;
1733 RecordId recordId = INVALID_RECORD_ID;
1734 Integer::Parse(contactId, recordId);
1735 //check if recordId is correct
1736 if (recordId != Tizen::Social::INVALID_RECORD_ID)
1738 AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
1739 Addressbook* pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
1740 if (pAddressbook != null)
1742 pFetchedContact = pAddressbook->GetContactN(recordId);
1743 delete pAddressbook;
1746 return pFetchedContact;
1750 SettingsManager::SetCallState(CallState callState)
1752 AppLogDebug("Enter %d",callState);
1753 result r = E_FAILURE;
1754 int retVal = vconf_set_int(VCONFKEY_CALL_STATE, callState);
1762 SettingsManager::AddSystemEventListener(void)
1764 Tizen::System::SettingInfo::AddSettingEventListener(*this);
1768 SettingsManager::RemoveSystemEventListener(void)
1770 Tizen::System::SettingInfo::RemoveSettingEventListener(*this);
1774 SettingsManager::OnSettingChanged(Tizen::Base::String& key)
1776 AppLogDebug("Enter");
1777 //Flight mode changed
1778 if(key.Equals(String(SETTINGS_FLIGHT_MODE_STR)))
1780 bool flightMode = false;
1781 SettingInfo::GetValue(key, flightMode);
1782 if(flightMode == true)
1784 // Notify if some active call is going on
1785 IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
1786 result r = E_FAILURE;
1787 if (__pSettingsEventListener != null)
1789 pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
1790 //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
1792 while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
1794 ISettingsEventListener* pListener;
1795 r = pListenerEnum->GetCurrent(pListener);
1796 pListener->HandleFlightMode(true);
1806 SettingsManager::GetFlightModeStatus(void)
1808 result r = E_SUCCESS;
1810 String key(SETTINGS_FLIGHT_MODE_STR);
1811 bool flightMode = false;
1813 r = SettingInfo::GetValue(key, flightMode);
1814 TryCatch(r == E_SUCCESS, , "GetFlightModeStatus: To get a value is failed");