2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.1 (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 "PhnAppUtility.h"
28 #include "PhnSettingsManager.h"
31 using namespace Tizen::App;
32 using namespace Tizen::Base;
33 using namespace Tizen::Base::Collection;
34 using namespace Tizen::Io;
35 using namespace Tizen::Social;
36 using namespace Tizen::System;
38 SettingsManager* SettingsManager::__pInstance = null;
40 SettingsManager::SettingsManager(void)
42 , __pSettingsEventListener(null)
43 , __pCallSettingDataService(null)
45 ,__pNumberFilterIndex(null)
50 SettingsManager::~SettingsManager(void)
52 //De-initialize the TAPI Library
53 if(__pTapiHandle != null)
55 tel_deinit(__pTapiHandle);
57 if (__pCallSettingDataService)
59 __pCallSettingDataService->CloseDatabase();
60 delete __pCallSettingDataService;
62 if (__pSettingsEventListener != null)
64 delete __pSettingsEventListener;
66 if(__pNumberFilterIndex != null)
68 delete __pNumberFilterIndex;
69 __pNumberFilterIndex = null;
71 RemoveSystemEventListener();
72 CloseMsgHandleSession();
75 void SettingsManager::CreateInstance(void)
77 __pInstance = new (std::nothrow) SettingsManager();
78 result r = __pInstance->Construct();
85 std::atexit(&(SettingsManager::DestroyInstance));
88 void SettingsManager::DestroyInstance(void)
94 SettingsManager::Construct(void)
96 __pCallSettingDataService = CallSettingDataService::CreateInstance();
97 result r = __pCallSettingDataService->OpenDatabase();
102 //initialize telephony
103 __pTapiHandle = tel_init(null);
104 AddSystemEventListener();
106 if(__pNumberFilterIndex == null)
108 __pNumberFilterIndex = new (std::nothrow) ArrayListT< int>();
109 __pNumberFilterIndex->Construct();
116 SettingsManager::GetInstance(void)
118 if (__pInstance == null)
126 SettingsManager::AddSettingEventListener(ISettingsEventListener* pSettingsEventListener)
128 if (__pSettingsEventListener == null)
130 __pSettingsEventListener = new (std::nothrow) ArrayListT<ISettingsEventListener*>();
133 //Add to listeners, if not already in list.
134 if ( (pSettingsEventListener != null)
135 && !(__pSettingsEventListener->Contains(pSettingsEventListener)) )
137 __pSettingsEventListener->Add(pSettingsEventListener);
142 SettingsManager::RemoveSettingEventListener(ISettingsEventListener* pSettingsEventListener)
144 if ((__pSettingsEventListener != null) && (pSettingsEventListener != null)
145 && __pSettingsEventListener->Contains(pSettingsEventListener))
147 __pSettingsEventListener->Remove(pSettingsEventListener);
152 SettingsManager::NotifyForwardingEventListeners(ForwardResponseType responseType, bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime)
154 IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
155 result r = E_FAILURE;
156 if (__pSettingsEventListener != null)
158 pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
159 //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
161 while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
163 ISettingsEventListener* pListener;
164 r = pListenerEnum->GetCurrent(pListener);
165 //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r));
166 if (responseType == SET_CALLFORWARD_RESPONSE)
168 pListener->HandleSetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, isCallForwardActivated, noReplyWaitTime);
172 pListener->HandleGetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, isCallForwardActivated, noReplyWaitTime);
179 SettingsManager::NotifyBarringEventListeners(BarringResponseType responseType, bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated)
181 IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
182 result r = E_FAILURE;
183 if (__pSettingsEventListener != null)
185 pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
186 //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
188 while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
190 ISettingsEventListener* pListener;
191 r = pListenerEnum->GetCurrent(pListener);
192 //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r));
193 if (responseType == SET_CALLBARRING_RESPONSE)
195 pListener->HandleSetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated);
199 pListener->HandleGetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated);
206 SettingsManager::NotifyWaitingEventListeners(WaitingResponseType responseType, bool isCallSuccessful, bool isCallWaitingActivated)
208 IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
209 result r = E_FAILURE;
210 if (__pSettingsEventListener != null)
212 pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
213 //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
215 while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
217 ISettingsEventListener* pListener;
218 r = pListenerEnum->GetCurrent(pListener);
219 //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r));
220 if (responseType == SET_CALLWAITING_RESPONSE)
222 pListener->HandleSetCallWaitingResponse(isCallSuccessful, isCallWaitingActivated);
226 pListener->HandleGetCallWaitingResponse(isCallSuccessful, isCallWaitingActivated);
229 delete pListenerEnum;
234 SettingsManager::SetCallForwardStatus(const String& phoneNumber, CallForwardCondition callFwdCondition, bool activateFwding, int noReplyTime)
236 int errorCode = ERROR_NONE;
237 TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED, "Telephony initialization failed");
239 TelSsForwardInfo_t forwardInfo;
240 memset(&forwardInfo, 0, sizeof(TelSsForwardInfo_t));
241 forwardInfo.Class = TAPI_SS_CLASS_VOICE;
242 if (activateFwding == true)
244 forwardInfo.Mode = TAPI_SS_CF_MODE_REGISTRATION_EV;
248 forwardInfo.Mode = TAPI_SS_CF_MODE_ERASURE_EV;
250 const wchar_t* pContact = phoneNumber.GetPointer();
251 int len = phoneNumber.GetLength()+1;
252 char* pNumber = new (std::nothrow) char[len];
253 wcstombs(pNumber, pContact, len);
254 strncpy(forwardInfo.szPhoneNumber, pNumber, len);
257 switch (callFwdCondition)
259 case CALL_FORWARD_ALL:
261 forwardInfo.Condition = TAPI_SS_CF_WHEN_CFU;
265 case CALL_FORWARD_BUSY:
267 forwardInfo.Condition = TAPI_SS_CF_WHEN_CFB;
271 case CALL_FORWARD_NO_REPLY:
273 forwardInfo.Condition = TAPI_SS_CF_WHEN_CFNRy;
274 forwardInfo.NoReplyConditionTimer = TelSsNoReplyTime_t(noReplyTime);
278 case CALL_FORWARD_NOT_REACHABLE:
280 forwardInfo.Condition = TAPI_SS_CF_WHEN_CFNRc;
286 return ERROR_INVALID_INPUT;
291 int retStatus = tel_set_ss_forward(__pTapiHandle, &forwardInfo, &HandleSetForwardResponse, this);
292 if (retStatus != TAPI_API_SUCCESS)
294 errorCode = ERROR_TAPI_ERROR;
300 SettingsManager::HandleSetForwardResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
302 TelSsForwardResp_t* pResponse = (TelSsForwardResp_t*) pData;
303 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
304 if (pResponse != null)
306 int count = pResponse->record_num;
307 for (int index = 0; index < count; index++)
309 CallForwardCondition callFwdCondition = CALL_FORWARD_ALL;
310 bool isActivated = false;
311 int noReplyWaitTime = 0;
312 //Check if status is "Active or Quiescent" and forwarding number is available
313 if ((pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE
314 || pResponse->record[index].Status == TAPI_SS_STATUS_QUIESCENT
315 || pResponse->record[index].Status == TAPI_SS_STATUS_REGISTERED)
316 && (pResponse->record[index].bCallForwardingNumberPresent != 0))
320 switch (pResponse->record[index].ForwardCondition)
322 case TAPI_SS_CF_WHEN_CFU:
324 callFwdCondition = CALL_FORWARD_ALL;
328 case TAPI_SS_CF_WHEN_CFB:
330 callFwdCondition = CALL_FORWARD_BUSY;
334 case TAPI_SS_CF_WHEN_CFNRy:
336 callFwdCondition = CALL_FORWARD_NO_REPLY;
338 noReplyWaitTime = (pResponse->record[index].NoReplyWaitTime);
342 case TAPI_SS_CF_WHEN_CFNRc:
344 callFwdCondition = CALL_FORWARD_NOT_REACHABLE;
351 //fetch forwarding number
352 char* pTmpNumberPtr = new (std::nothrow) char[TAPI_CALL_DIALDIGIT_LEN_MAX];
353 strncpy(pTmpNumberPtr, (char*) (pResponse->record[index].szCallForwardingNumber), TAPI_CALL_DIALDIGIT_LEN_MAX);
354 String callFwdNumber(pTmpNumberPtr);
355 delete []pTmpNumberPtr;
356 pTmpNumberPtr = null;
358 //notify event listeners
359 pSettingsManager->NotifyForwardingEventListeners(SET_CALLFORWARD_RESPONSE,(result == TAPI_SS_SUCCESS),callFwdCondition, callFwdNumber, isActivated, noReplyWaitTime);
365 SettingsManager::GetCallForwardStatus(CallForwardCondition callFwdCondition)
367 int errorCode = ERROR_NONE;
368 TryReturn(__pTapiHandle != null,ERROR_TAPI_INIT_FAILED,"Telephony initialization failed");
370 TelSsForwardWhen_t condition;
371 switch (callFwdCondition)
373 case CALL_FORWARD_ALL:
375 condition = TAPI_SS_CF_WHEN_CFU;
379 case CALL_FORWARD_BUSY:
381 condition = TAPI_SS_CF_WHEN_CFB;
385 case CALL_FORWARD_NO_REPLY:
387 condition = TAPI_SS_CF_WHEN_CFNRy;
391 case CALL_FORWARD_NOT_REACHABLE:
393 condition = TAPI_SS_CF_WHEN_CFNRc;
399 return ERROR_INVALID_INPUT;
403 int retStatus = tel_get_ss_forward_status(__pTapiHandle, TAPI_SS_CLASS_VOICE, condition, &HandleGetForwardResponse, this);
404 if (retStatus != TAPI_API_SUCCESS)
406 errorCode = ERROR_TAPI_ERROR;
413 SettingsManager::HandleGetForwardResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
415 TelSsForwardResp_t* pResponse = (TelSsForwardResp_t*) pData;
416 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
417 if (pResponse != null)
419 int count = pResponse->record_num;
420 for (int index = 0; index < count; index++)
422 CallForwardCondition callFwdCondition = CALL_FORWARD_ALL;
423 bool isActivated = false;
424 int noReplyWaitTime = 0;
425 //Check if status is "ACTIVE or QUIESCENT or REGISTERED" and forwarding number is available
426 if ((pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE
427 || pResponse->record[index].Status == TAPI_SS_STATUS_QUIESCENT
428 || pResponse->record[index].Status == TAPI_SS_STATUS_REGISTERED)
429 && (pResponse->record[index].bCallForwardingNumberPresent != 0))
433 switch (pResponse->record[index].ForwardCondition)
435 case TAPI_SS_CF_WHEN_CFU:
437 callFwdCondition = CALL_FORWARD_ALL;
441 case TAPI_SS_CF_WHEN_CFB:
443 callFwdCondition = CALL_FORWARD_BUSY;
447 case TAPI_SS_CF_WHEN_CFNRy:
449 callFwdCondition = CALL_FORWARD_NO_REPLY;
450 noReplyWaitTime = (pResponse->record[index].NoReplyWaitTime);
454 case TAPI_SS_CF_WHEN_CFNRc:
456 callFwdCondition = CALL_FORWARD_NOT_REACHABLE;
463 char* pTmpNumberPtr = new (std::nothrow) char[TAPI_CALL_DIALDIGIT_LEN_MAX];
464 strncpy(pTmpNumberPtr, (char*) (pResponse->record[index].szCallForwardingNumber), TAPI_CALL_DIALDIGIT_LEN_MAX);
465 String callFwdNumber(pTmpNumberPtr);
466 //notify event listeners
467 pSettingsManager->NotifyForwardingEventListeners(GET_CALLFORWARD_RESPONSE, (result == TAPI_SS_SUCCESS), callFwdCondition, callFwdNumber, isActivated, noReplyWaitTime);
468 delete []pTmpNumberPtr;
469 pTmpNumberPtr = null;
475 SettingsManager::SetCallBarringStatus(const String& password, CallBarringType callBarringType, bool activateBarring)
477 AppLog("%d %d",callBarringType,activateBarring);
478 int errorCode = ERROR_NONE;
479 TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED, "Telephony initialization failed");
481 TelSsBarringInfo_t barringInfo;
482 memset(&barringInfo, 0, sizeof(TelSsBarringInfo_t));
483 barringInfo.Class = TAPI_SS_CLASS_VOICE;
484 if (activateBarring == true)
486 barringInfo.Mode = TAPI_SS_CB_MODE_ACTIVATE;
490 barringInfo.Mode = TAPI_SS_CB_MODE_DEACTIVATE;
492 const wchar_t* pContact = password.GetPointer();
493 int len = password.GetLength();
496 return ERROR_BARRING_PWD_TOO_LONG;
498 char* pNumber = new (std::nothrow) char[len];
499 wcstombs(pNumber, pContact, len);
500 strncpy(barringInfo.szPassword, pNumber, len);
503 switch (callBarringType)
505 case CALL_BARRING_ALL_OUTGOING:
507 barringInfo.Type = TAPI_SS_CB_TYPE_BAOC;
511 case CALL_BARRING_INTERNATIONAL_OUTGOING:
513 barringInfo.Type = TAPI_SS_CB_TYPE_BOIC;
517 case CALL_BARRING_INTERNATIONAL_EXCEPT_HOME:
519 barringInfo.Type = TAPI_SS_CB_TYPE_BOIC_NOT_HC;
523 case CALL_BARRING_ALL_INCOMING:
525 barringInfo.Type = TAPI_SS_CB_TYPE_BAIC;
529 case CALL_BARRING_INCOMING_ROAMING:
531 barringInfo.Type = TAPI_SS_CB_TYPE_BIC_ROAM;
537 return ERROR_INVALID_INPUT;
541 int retStatus = tel_set_ss_barring(__pTapiHandle, &barringInfo, &HandleSetBarringResponse, this);
542 if (retStatus != TAPI_API_SUCCESS)
544 errorCode = ERROR_TAPI_ERROR;
551 SettingsManager::HandleSetBarringResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
553 TelSsBarringResp_t* pResponse = (TelSsBarringResp_t*) pData;
554 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
555 if (pResponse != null)
557 CallBarringType callBarringType = CALL_BARRING_ALL_OUTGOING;
558 bool isActivated = false;
559 int count = pResponse->record_num;
560 for (int index = 0; index < count; index++)
562 if (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE)
566 switch (pResponse->record[index].Flavour)
568 case TAPI_SS_CB_TYPE_BAOC:
570 callBarringType = CALL_BARRING_ALL_OUTGOING;
574 case TAPI_SS_CB_TYPE_BOIC:
576 callBarringType = CALL_BARRING_INTERNATIONAL_OUTGOING;
580 case TAPI_SS_CB_TYPE_BOIC_NOT_HC:
582 callBarringType = CALL_BARRING_INTERNATIONAL_EXCEPT_HOME;
586 case TAPI_SS_CB_TYPE_BAIC:
588 callBarringType = CALL_BARRING_ALL_INCOMING;
592 case TAPI_SS_CB_TYPE_BIC_ROAM:
594 callBarringType = CALL_BARRING_INCOMING_ROAMING;
601 //notify event listeners
602 pSettingsManager->NotifyBarringEventListeners(SET_CALLBARRING_RESPONSE,(result == TAPI_SS_SUCCESS), callBarringType, isActivated);
608 SettingsManager::GetCallBarringStatus(CallBarringType callBarringType)
610 int errorCode = ERROR_NONE;
611 TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED, "Telephony initialization failed");
613 TelSsBarringType_t barringType;
614 switch (callBarringType)
616 case CALL_BARRING_ALL_OUTGOING:
618 barringType = TAPI_SS_CB_TYPE_BAOC;
622 case CALL_BARRING_INTERNATIONAL_OUTGOING:
624 barringType = TAPI_SS_CB_TYPE_BOIC;
628 case CALL_BARRING_INTERNATIONAL_EXCEPT_HOME:
630 barringType = TAPI_SS_CB_TYPE_BOIC_NOT_HC;
634 case CALL_BARRING_ALL_INCOMING:
636 barringType = TAPI_SS_CB_TYPE_BAIC;
640 case CALL_BARRING_INCOMING_ROAMING:
642 barringType = TAPI_SS_CB_TYPE_BIC_ROAM;
648 return ERROR_INVALID_INPUT;
652 int retStatus = tel_get_ss_barring_status(__pTapiHandle, TAPI_SS_CLASS_VOICE, barringType, &HandleGetBarringResponse, this);
653 if (retStatus != TAPI_API_SUCCESS)
655 errorCode = ERROR_TAPI_ERROR;
662 SettingsManager::HandleGetBarringResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
664 TelSsBarringResp_t* pResponse = (TelSsBarringResp_t*) pData;
665 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
666 if (pResponse != null)
668 CallBarringType callBarringType = CALL_BARRING_ALL_OUTGOING;
669 bool isActivated = false;
670 int count = pResponse->record_num;
671 for (int index = 0; index < count; index++)
673 if (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE)
677 switch (pResponse->record[index].Flavour)
679 case TAPI_SS_CB_TYPE_BAOC:
681 callBarringType = CALL_BARRING_ALL_OUTGOING;
685 case TAPI_SS_CB_TYPE_BOIC:
687 callBarringType = CALL_BARRING_INTERNATIONAL_OUTGOING;
691 case TAPI_SS_CB_TYPE_BOIC_NOT_HC:
693 callBarringType = CALL_BARRING_INTERNATIONAL_EXCEPT_HOME;
697 case TAPI_SS_CB_TYPE_BAIC:
699 callBarringType = CALL_BARRING_ALL_INCOMING;
703 case TAPI_SS_CB_TYPE_BIC_ROAM:
705 callBarringType = CALL_BARRING_INCOMING_ROAMING;
712 //notify event listeners
713 pSettingsManager->NotifyBarringEventListeners(GET_CALLBARRING_RESPONSE,(result == TAPI_SS_SUCCESS), callBarringType, isActivated);
719 SettingsManager::SetCallWaitingStatus(bool activateWaiting)
721 int errorCode = ERROR_NONE;
722 TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED,"Telephony initialization failed");
724 TelSsWaitingInfo_t waitingInfo;
725 memset(&waitingInfo, 0, sizeof(TelSsWaitingInfo_t));
726 waitingInfo.Class = TAPI_SS_CLASS_VOICE;
727 if (activateWaiting == true)
729 waitingInfo.Mode = TAPI_SS_CW_MODE_ACTIVATE;
733 waitingInfo.Mode = TAPI_SS_CW_MODE_DEACTIVATE;
735 int retStatus = tel_set_ss_waiting(__pTapiHandle, &waitingInfo, &HandleSetWaitingResponse, this);
736 if (retStatus != TAPI_API_SUCCESS)
738 errorCode = ERROR_TAPI_ERROR;
745 SettingsManager::HandleSetWaitingResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
747 TelSsWaitingResp_t* pResponse = (TelSsWaitingResp_t*) pData;
748 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
749 bool isCallSuccessful = false;
750 if (result == TAPI_SS_SUCCESS)
752 isCallSuccessful = true;
754 if (pResponse != null)
757 int count = pResponse->record_num;
758 if (pSettingsManager->__pSettingsEventListener != null)
760 for (int index = 0; index < count; index++)
762 //notify event listeners
763 bool isCallWaitingEnabled = (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE);
764 pSettingsManager->NotifyWaitingEventListeners(SET_CALLWAITING_RESPONSE, isCallSuccessful, isCallWaitingEnabled);
771 SettingsManager::GetCallWaitingStatus(void)
773 int errorCode = ERROR_NONE;
774 TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED,"Telephony initialization failed");
776 int retStatus = tel_get_ss_waiting_status(__pTapiHandle, TAPI_SS_CLASS_VOICE, &HandleGetWaitingResponse, this);
777 if (retStatus != TAPI_API_SUCCESS)
779 errorCode = ERROR_TAPI_ERROR;
786 SettingsManager::HandleGetWaitingResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
788 TelSsWaitingResp_t* pResponse = (TelSsWaitingResp_t*) pData;
789 SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
790 if (pResponse != null)
792 bool isCallSuccessful = false;
793 if (result == TAPI_SS_SUCCESS)
795 isCallSuccessful = true;
797 int count = pResponse->record_num;
798 if (pSettingsManager->__pSettingsEventListener != null)
800 for (int index = 0; index < count; index++)
802 //notify event listeners
803 bool isCallWaitingEnabled = (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE);
804 pSettingsManager->NotifyWaitingEventListeners(GET_CALLWAITING_RESPONSE, isCallSuccessful, isCallWaitingEnabled);
811 SettingsManager::GetRejectMessageListN(void)
814 char* pMessage = null;
815 HashMapT<int, String> *pMessageMap = null;
817 int retval = vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &messagesCount);
818 if (retval == 0 && messagesCount > 0)
820 pMessageMap = new (std::nothrow) HashMapT<int, String>();
821 pMessageMap->Construct(messagesCount);
822 for (int index = 0; index < messagesCount; index++)
824 int keyForMsg = index;
830 pMessage = vconf_get_str( VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR);
836 pMessage = vconf_get_str( VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR);
842 pMessage = vconf_get_str( VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR);
848 pMessage = vconf_get_str( VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR);
854 pMessage = vconf_get_str( VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR);
860 pMessage = vconf_get_str( VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR);
868 //Chk if this is allowed outside the call settings library
869 if ((pMessage != null) && (String(pMessage).IsEmpty() == false))
871 bindtextdomain("ug-setting-call-efl", "/usr/ug/res/locale");
872 String *pMessageStr = new (std::nothrow) String();
873 pMessageStr->Append(dgettext("ug-setting-call-efl", pMessage));
874 pMessageMap->Add(keyForMsg, *pMessageStr);
882 SettingsManager::SetRejectMessage(int messageIndex, const String& rejectMessage)
884 result r = E_FAILURE;
885 int messagesCount = 0;
886 vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &messagesCount);
888 const wchar_t* pRejectMessage = rejectMessage.GetPointer();
889 int len = (rejectMessage.GetLength()*sizeof(wchar_t));
890 char* pMessageToBeSet = new (std::nothrow) char[len + 1];
891 memset(pMessageToBeSet, 0, (len + 1) * sizeof(char));
892 wcstombs(pMessageToBeSet, pRejectMessage, len);
896 switch (messageIndex)
900 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR, pMessageToBeSet);
906 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR, pMessageToBeSet);
912 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR, pMessageToBeSet);
918 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR, pMessageToBeSet);
924 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR, pMessageToBeSet);
930 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR, pMessageToBeSet);
937 delete []pMessageToBeSet;
938 pMessageToBeSet = null;
942 //increment the count only in case of new addition
943 if (messagesCount < 6 && messageIndex >= messagesCount)
947 vconf_set_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, messagesCount);
954 SettingsManager::RemoveRejectMessage(const IListT<int>& deleteKeyList)
956 result r = E_FAILURE;
959 //Fetch old message count
961 vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &oldMsgCount);
963 IMapT<int,String> *pRejectMsgMap = GetRejectMessageListN();
964 if(pRejectMsgMap != null)
966 //First,remove all messages from vconf
967 for (int index = 0; index < oldMsgCount; index++)
972 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR,"");
976 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR,"");
980 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR,"");
984 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR,"");
988 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR,"");
992 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR,"");
997 //Check if all messages are deleted
998 if(oldMsgCount == deleteKeyList.GetCount())
1000 vconf_set_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, 0);
1001 delete pRejectMsgMap;
1005 //Second, delete messages to be deleted from fetched old Message map
1006 for (int index = 0; index < deleteKeyList.GetCount(); index++)
1009 if (deleteKeyList.GetAt(index, keyForMsg) == E_SUCCESS)
1011 pRejectMsgMap->Remove(keyForMsg);
1015 //Third, reset remaining message in vconf with ordered keys
1016 IListT<String> *pRejectMsgList = pRejectMsgMap->GetValuesN();
1017 newMsgCount = pRejectMsgList->GetCount();
1018 for (int index = 0; index < newMsgCount; index++)
1021 pRejectMsgList->GetAt(index,msg);
1023 const wchar_t* pMsgPtr = msg.GetPointer();
1024 int len = msg.GetLength()*sizeof(wchar_t);
1025 char* pMessageToBeSet = new (std::nothrow) char[len + 1];
1026 memset(pMessageToBeSet, 0, (len + 1) * sizeof(char));
1027 wcstombs(pMessageToBeSet, pMsgPtr, len);
1032 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR, pMessageToBeSet);
1038 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR, pMessageToBeSet);
1044 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR, pMessageToBeSet);
1050 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR, pMessageToBeSet);
1056 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR, pMessageToBeSet);
1062 retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR, pMessageToBeSet);
1069 delete []pMessageToBeSet;
1070 pMessageToBeSet = null;
1072 delete pRejectMsgMap;
1073 pRejectMsgMap = null;
1076 //todo: retVal from vconf_unset is always -1. to be checked
1079 //Update message count in vconf
1080 vconf_set_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, newMsgCount);
1088 SettingsManager::GetPrefixDialListN(void)
1090 int phoneNumberCount;
1091 char* pPhoneNumber = null;
1092 ArrayList* pPhoneNumberList = null;
1094 int retval = vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
1097 pPhoneNumberList = new (std::nothrow) ArrayList();
1098 for (int index = 0; index < phoneNumberCount; index++)
1100 String* phoneNumberStr = new (std::nothrow) String();
1105 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR);
1111 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR);
1117 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR);
1123 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR);
1129 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR);
1135 delete pPhoneNumberList;
1136 pPhoneNumberList = null;
1141 phoneNumberStr->Append(pPhoneNumber);
1142 pPhoneNumberList->Add(*phoneNumberStr);
1149 return pPhoneNumberList;
1153 SettingsManager::SetPrefixDialNumber(int phoneNumberIndex, const String& phoneNumber)
1155 result r = E_FAILURE;
1156 int phoneNumberCount = 0;
1159 const wchar_t* pRejectMessage = phoneNumber.GetPointer();
1160 int len = phoneNumber.GetLength();
1161 char* pTmpPhonePtr = new (std::nothrow) char[len + 1];
1162 memset(pTmpPhonePtr, 0, (len + 1) * sizeof(char));
1163 wcstombs(pTmpPhonePtr, pRejectMessage, len);
1164 char* pNumberToBeSet = new (std::nothrow) char[len + 1];
1165 memset(pNumberToBeSet, 0, (len + 1) * sizeof(char));
1166 strncpy(pNumberToBeSet, pTmpPhonePtr, len);
1167 delete []pTmpPhonePtr;
1168 pTmpPhonePtr = null;
1169 vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
1170 switch (phoneNumberIndex)
1174 retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR, pNumberToBeSet);
1180 retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR, pNumberToBeSet);
1186 retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR, pNumberToBeSet);
1192 retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR, pNumberToBeSet);
1198 retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR, pNumberToBeSet);
1204 delete []pNumberToBeSet;
1205 pNumberToBeSet = null;
1211 delete []pNumberToBeSet;
1212 pNumberToBeSet = null;
1216 if (phoneNumberCount < 5)
1220 vconf_set_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, phoneNumberCount);
1228 SettingsManager::GetPrefixDialNumberAtIndex(int phoneNumberIndex, String& phoneNumber)
1230 result r = E_FAILURE;
1232 int phoneNumberCount = 0;
1233 vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
1236 if(phoneNumberCount > 0 && phoneNumberIndex < phoneNumberCount)
1238 char* pPhoneNumber = null;
1239 switch (phoneNumberIndex)
1243 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR);
1249 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR);
1255 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR);
1261 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR);
1267 pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR);
1275 if(pPhoneNumber != null)
1277 r = phoneNumber.Append(pPhoneNumber);
1284 SettingsManager::SetPrefixDialingStatus(bool enablePrefixDialing)
1286 result r = E_FAILURE;
1287 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_PREFIX_DIAL_BOOL, enablePrefixDialing);
1296 SettingsManager::SetActivePrefixDialingValue(int prefixDialIndex)
1298 result r = E_FAILURE;
1299 int retVal = vconf_set_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_VALUE_INT, prefixDialIndex);
1308 SettingsManager::GetActivePrefixDialingValue(int& prefixDialIndex)
1310 result r = E_FAILURE;
1312 int retVal = vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_VALUE_INT, &indexPos);
1315 prefixDialIndex = indexPos;
1322 SettingsManager::GetPrefixDialingStatus(void)
1324 int isPrefixDialingEnabled = -1;
1326 vconf_get_bool(VCONFKEY_CISSAPPL_PREFIX_DIAL_BOOL, &isPrefixDialingEnabled);
1328 bool retVal = isPrefixDialingEnabled;
1333 SettingsManager::SetVideoCallImagePath(const String& imagePath)
1335 result r = E_FAILURE;
1336 const wchar_t* pRejectMessage = imagePath.GetPointer();
1337 int len = imagePath.GetLength();
1338 char* pTmpPath = new (std::nothrow) char[len + 1];
1339 memset(pTmpPath, 0, (len + 1) * sizeof(char));
1340 wcstombs(pTmpPath, pRejectMessage, len);
1341 char* pPathToBeSet = new (std::nothrow) char[len + 1];
1342 memset(pPathToBeSet, 0, (len + 1) * sizeof(char));
1343 strncpy(pPathToBeSet, pTmpPath, len);
1344 int retVal = vconf_set_str(VCONFKEY_CISSAPPL_VIDEO_IMAGE_PATH_STR, pPathToBeSet);
1351 delete []pPathToBeSet;
1352 pPathToBeSet = null;
1357 SettingsManager::GetVideoCallImagePath(String& imagePath)
1359 result r = E_FAILURE;
1360 char* pVideoImagePath = null;
1361 pVideoImagePath = vconf_get_str(VCONFKEY_CISSAPPL_VIDEO_IMAGE_PATH_STR);
1362 if (pVideoImagePath != null)
1365 imagePath.Append(pVideoImagePath);
1372 SettingsManager::SetCallLineIdentity(CallLineIdentity identity)
1374 result r = E_FAILURE;
1375 int retVal = vconf_set_int(VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT, identity);
1384 SettingsManager::GetCallLineIdentity(CallLineIdentity& identity)
1386 result r = E_FAILURE;
1387 int lineIdentity = -1;
1388 int retVal = vconf_get_int(VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT, &lineIdentity);
1391 identity = (CallLineIdentity) lineIdentity;
1398 SettingsManager::AddToCallRejectList(const String& phoneNumber, CallRejectMatchCondition rejectCondition, bool isActivated)
1400 //construct CallRejectInfo.
1401 CallRejectInfo rejInfo;
1402 rejInfo.phoneNumber = phoneNumber;
1403 rejInfo.rejectCondition = rejectCondition;
1404 rejInfo.isActivated = isActivated;
1406 //Fetch call reject list
1407 IListT<CallRejectInfo>* pRejNumbersList = GetCallRejectList();
1408 //Check if this is not already present in database.
1409 bool isDuplicate = false;
1410 if (pRejNumbersList != null)
1412 IEnumeratorT<CallRejectInfo>* pRejectEnum = pRejNumbersList->GetEnumeratorN();
1413 if (pRejectEnum != null)
1415 while (pRejectEnum->MoveNext() == E_SUCCESS)
1417 CallRejectInfo fetchedInfo;
1418 if (( pRejectEnum->GetCurrent(fetchedInfo) == E_SUCCESS) && (fetchedInfo == rejInfo))
1425 delete pRejNumbersList;
1428 result r = E_OBJ_ALREADY_EXIST;
1429 if (isDuplicate == false)
1431 r = __pCallSettingDataService->AddCallRejectInfoToDatabase(&rejInfo);
1436 IListT<CallRejectInfo>*
1437 SettingsManager::GetCallRejectList(void)
1439 int rejectCount = 0;
1440 __pCallSettingDataService->GetCallRejectCount(rejectCount);
1442 if (rejectCount > 0)
1444 ArrayListT<CallRejectInfo>* pCallRejectList = new (std::nothrow) ArrayListT<CallRejectInfo>();
1445 pCallRejectList->Construct(rejectCount);
1446 __pCallSettingDataService->GetAllCallRejectInfoFromDatabaseN(*pCallRejectList);
1447 return pCallRejectList;
1453 SettingsManager::UpdateCallRejectRow(int rowId, const String& phoneNumber, bool activate, CallRejectMatchCondition rejectCondition)
1455 result r = E_FAILURE;
1456 CallRejectInfo* rejInfo = new (std::nothrow) CallRejectInfo();
1457 rejInfo->rowId = rowId;
1458 rejInfo->phoneNumber.Append(phoneNumber);
1459 rejInfo->rejectCondition = rejectCondition;
1460 rejInfo->isActivated = activate;
1461 r = __pCallSettingDataService->UpdateCallRejectInfoDatabase(rowId,rejInfo);
1467 SettingsManager::RemoveCallRejectRow(int rowId)
1469 return __pCallSettingDataService->DeleteCallRejectInfoFromDatabase(rowId);
1473 SettingsManager::SetUnknownRejectStatus(bool activate)
1475 result r = E_FAILURE;
1476 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_AUTO_REJECT_UNKNOWN_BOOL, activate);
1485 SettingsManager::IsCallToBeRejected(String& phoneNumber)
1487 return __pCallSettingDataService->IsCallToBeRejected(phoneNumber);
1491 SettingsManager::GetUnknownRejectStatus(void)
1493 int unknownRejectStatus = -1;
1495 vconf_get_bool(VCONFKEY_CISSAPPL_AUTO_REJECT_UNKNOWN_BOOL, &unknownRejectStatus);
1497 bool retVal = unknownRejectStatus;
1502 SettingsManager::SetCallAlertStatus(CallAlertStatus callAlertStatus)
1504 result r = E_FAILURE;
1505 int retVal = vconf_set_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT, callAlertStatus);
1514 SettingsManager::GetCallAlertStatus(CallAlertStatus& callAlertStatus)
1516 result r = E_FAILURE;
1517 int alertStatus = -1;
1518 int retVal = vconf_get_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT, &alertStatus);
1521 callAlertStatus = (CallAlertStatus) alertStatus;
1528 SettingsManager::SetCallConnectToneStatus(bool activate)
1530 result r = E_FAILURE;
1531 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_CALL_CONNECT_TONE_BOOL, activate);
1540 SettingsManager::GetCallConnectToneStatus(void)
1542 int unknownRejectStatus = -1;
1544 vconf_get_bool(VCONFKEY_CISSAPPL_CALL_CONNECT_TONE_BOOL, &unknownRejectStatus);
1546 bool retVal = unknownRejectStatus;
1551 SettingsManager::SetMinuteMinderToneStatus(bool activate)
1553 result r = E_FAILURE;
1554 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_MINUTE_MINDER_BOOL, activate);
1563 SettingsManager::GetMinuteMinderToneStatus(void)
1565 int unknownRejectStatus = -1;
1567 vconf_get_bool(VCONFKEY_CISSAPPL_MINUTE_MINDER_BOOL, &unknownRejectStatus);
1569 bool retVal = unknownRejectStatus;
1574 SettingsManager::SetCallEndToneStatus(bool activate)
1576 result r = E_FAILURE;
1577 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_CALL_END_TONE_BOOL, activate);
1586 SettingsManager::GetCallEndToneStatus(void)
1588 int unknownRejectStatus = -1;
1590 vconf_get_bool(VCONFKEY_CISSAPPL_CALL_END_TONE_BOOL, &unknownRejectStatus);
1592 bool retVal = unknownRejectStatus;
1597 SettingsManager::SetSpeedDialMapping(const String& contactId, int numberToMap)
1599 result r = E_FAILURE;
1600 SpeedDialInfo mappingInfo;;
1601 mappingInfo.keyMapping = numberToMap;
1602 mappingInfo.contactId = contactId;
1603 r = __pCallSettingDataService->AddSpeedDialInfoToDatabase(&mappingInfo);
1607 IMapT<int,SpeedDialInfo>*
1608 SettingsManager::GetSpeedDialMappingN(void)
1610 return (__pCallSettingDataService->GetAllSpeedDialInfoMapFromDatabaseN());
1614 SettingsManager::RemoveSpeedDialMapping(int rowId)
1616 return __pCallSettingDataService->DeleteSpeedDialInfoFromDatabase(rowId);
1620 SettingsManager::UpdateSpeedDialMapping(int rowId, const String& contactId, int numberToMap)
1622 result r = E_FAILURE;
1623 SpeedDialInfo* mappingInfo = new (std::nothrow) SpeedDialInfo();
1624 mappingInfo->rowId = rowId;
1625 mappingInfo->contactId.Append(contactId);
1626 mappingInfo->keyMapping = numberToMap;
1627 r = __pCallSettingDataService->UpdateSpeedDialInfoDatabase(rowId,mappingInfo);
1633 SettingsManager::GetMappedSpeedDialNumberN(int aIndex)
1635 String* contactNumber = null;
1637 //Fetch contactId for mapped speed dial
1638 String* contactId = __pCallSettingDataService->GetSpeedDialContactN(aIndex);
1639 if(contactId != null && contactId->IsEmpty() == false)
1641 RecordId recordId = INVALID_RECORD_ID;
1642 Integer::Parse(*contactId, recordId);
1643 //check if recordId is correct
1644 if (recordId != Tizen::Social::INVALID_RECORD_ID)
1646 AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
1647 Addressbook* pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
1648 if (pAddressbook != null)
1650 Contact* pMappedContact = pAddressbook->GetContactN(recordId);
1651 if (pMappedContact != null)
1653 IList* pPhoneNumberList = pMappedContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
1654 if (pPhoneNumberList != null)
1656 PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pPhoneNumberList->GetAt(0));
1657 if(pPhoneNumber != null)
1659 contactNumber = new (std::nothrow) String(pPhoneNumber->GetPhoneNumber());
1661 pPhoneNumberList->RemoveAll(true);
1662 delete pPhoneNumberList;
1664 delete pMappedContact;
1666 delete pAddressbook;
1672 return contactNumber;
1676 SettingsManager::FetchContactDetailsN(const String& contactId)
1678 Contact* pFetchedContact = null;
1680 RecordId recordId = INVALID_RECORD_ID;
1681 Integer::Parse(contactId, recordId);
1682 //check if recordId is correct
1683 if (recordId != Tizen::Social::INVALID_RECORD_ID)
1685 AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
1686 Addressbook* pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
1687 if (pAddressbook != null)
1689 pFetchedContact = pAddressbook->GetContactN(recordId);
1690 delete pAddressbook;
1693 return pFetchedContact;
1697 SettingsManager::SetCallState(CallState callState)
1699 AppLogDebug("Enter %d",callState);
1700 result r = E_FAILURE;
1701 int retVal = vconf_set_int(VCONFKEY_CALL_STATE, callState);
1710 SettingsManager::GetCallState(CallState& callState)
1712 AppLogDebug("Enter %d",callState);
1714 result r = E_FAILURE;
1715 int retVal = vconf_get_int(VCONFKEY_CALL_STATE, &Status);
1718 callState = (CallState) Status;
1725 SettingsManager::EnableCallAnsweringKey(bool activate)
1727 result r = E_FAILURE;
1728 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_ANSWERING_KEY_BOOL, activate);
1737 SettingsManager::IsCallAnsweringKeyEnabled(void)
1739 int isAcceptCallByHomeKeyEnabled = -1;
1740 //read vconf settings
1741 vconf_get_bool(VCONFKEY_CISSAPPL_ANSWERING_KEY_BOOL, &isAcceptCallByHomeKeyEnabled);
1742 return (bool)isAcceptCallByHomeKeyEnabled;
1746 SettingsManager::EnableCallEndingKey(bool activate)
1748 result r = E_FAILURE;
1749 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, activate);
1758 SettingsManager::IsCallEndingKeyEnabled(void)
1760 int isEndCallByPowerKeyEnabled = -1;
1761 //read vconf settings
1762 vconf_get_bool(VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, &isEndCallByPowerKeyEnabled);
1763 return (bool)isEndCallByPowerKeyEnabled;
1767 SettingsManager::EnableOutgoingCallWhenLocked(bool activate)
1769 result r = E_FAILURE;
1771 int enableOutgoingCall = 1;
1772 if (activate == true)
1774 //0 : Even when device locked
1775 //1 : Only when device unlocked
1776 enableOutgoingCall = 0;
1778 int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_OUTGOING_CALL_CONDITIONS_INT, enableOutgoingCall);
1787 SettingsManager::IsOutgoingCallEnabledWhenLocked(void)
1789 //read vconf settings
1790 int isOutgoingCallPossibleWhenLocked = -1;
1791 vconf_get_bool(VCONFKEY_CISSAPPL_OUTGOING_CALL_CONDITIONS_INT, &isOutgoingCallPossibleWhenLocked);
1792 if (isOutgoingCallPossibleWhenLocked == 0)
1794 //0 : Even when device locked
1797 //1 : Only when device unlocked
1802 SettingsManager::AddSystemEventListener(void)
1804 Tizen::System::SettingInfo::AddSettingEventListener(*this);
1808 SettingsManager::RemoveSystemEventListener(void)
1810 Tizen::System::SettingInfo::RemoveSettingEventListener(*this);
1814 SettingsManager::OnSettingChanged(Tizen::Base::String& key)
1816 AppLogDebug("Enter");
1817 //Flight mode changed
1818 if(key.Equals(String(SETTINGS_FLIGHT_MODE_STR)))
1820 bool flightMode = false;
1821 SettingInfo::GetValue(key, flightMode);
1822 if(flightMode == true)
1824 // Notify if some active call is going on
1825 IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
1826 result r = E_FAILURE;
1827 if (__pSettingsEventListener != null)
1829 pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
1830 //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
1832 while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
1834 ISettingsEventListener* pListener;
1835 r = pListenerEnum->GetCurrent(pListener);
1836 pListener->HandleFlightMode(true);
1846 SettingsManager::GetFlightModeStatus(void)
1848 result r = E_SUCCESS;
1850 String key(SETTINGS_FLIGHT_MODE_STR);
1851 bool flightMode = false;
1853 r = SettingInfo::GetValue(key, flightMode);
1854 TryCatch(r == E_SUCCESS, , "GetFlightModeStatus: To get a value is failed");
1863 SettingsManager::AddToMessageRejectList(const String& phoneNumber, int matchType) //result SettingPresentationModel::AddToFilter(const String& strFilter, int matchType)
1866 AppLogDebug("ENTER");
1868 msg_error_t err = MSG_SUCCESS;
1869 result r = E_SUCCESS;
1870 msg_struct_t pFilter = msg_create_struct(MSG_STRUCT_FILTER);
1874 case MSG_FILTER_BY_WORD:
1875 case MSG_FILTER_BY_ADDRESS_SAME:
1876 case MSG_FILTER_BY_ADDRESS_START:
1877 case MSG_FILTER_BY_ADDRESS_INCLUDE:
1879 err = msg_set_int_value(pFilter, MSG_FILTER_TYPE_INT, matchType);
1883 if (err != MSG_SUCCESS)
1886 msg_release_struct(&pFilter);
1887 AppLogDebug("EXIT: r = %S", GetErrorMessage(r));
1890 // Set filter string.
1891 char* pfilterString = AppUtility::ConvertStringToPointerCharArrayN(phoneNumber);
1892 err = msg_set_str_value(pFilter, MSG_FILTER_VALUE_STR, pfilterString, (int) strlen(pfilterString));
1893 if (err != MSG_SUCCESS)
1895 result r = E_FAILURE;
1896 AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
1897 delete[] pfilterString;
1898 msg_release_struct(&pFilter);
1902 r = OpenMsgHandleSession();
1905 AppLogDebug("Open messageing session failed!");
1909 err = msg_add_filter(__pMsgHandle, (const msg_struct_t) pFilter);
1910 if (err != MSG_SUCCESS)
1912 delete[] pfilterString;
1914 msg_release_struct(&pFilter);
1915 AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
1918 delete[] pfilterString;
1920 msg_release_struct(&pFilter);
1921 CloseMsgHandleSession();
1922 AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
1927 SettingsManager::GetMsgFilterListIndex(const String& phoneNumber)
1929 AppLogDebug("ENTER");
1930 bool ret_value = false;
1932 msg_error_t r = msg_open_msg_handle(&__pMsgHandle);
1933 if (r != MSG_SUCCESS)
1935 AppLogDebug("msg_open_msg_handle err = %d", (int) r);
1938 __pFilterList = new (std::nothrow) msg_struct_list_s();
1939 __pFilterList->msg_struct_info = null;
1940 __pFilterList->nCount = 0;
1941 msg_get_filter_list(__pMsgHandle, __pFilterList);
1943 if(__pFilterList->nCount == 0)
1948 if(__pNumberFilterIndex == null)
1950 __pNumberFilterIndex = new (std::nothrow) ArrayListT< int>();
1951 __pNumberFilterIndex->Construct();
1953 __pNumberFilterIndex->RemoveAll();
1955 // Filter out index based on filter typed.
1956 for (int index = 0, counter = 0; index < __pFilterList->nCount; index++)
1959 msg_get_int_value(__pFilterList->msg_struct_info[index], MSG_FILTER_TYPE_INT, &filterType);
1960 if (filterType == MSG_FILTER_BY_ADDRESS_SAME)
1962 __pNumberFilterIndex->Add(counter++);
1965 int count = __pNumberFilterIndex->GetCount();
1966 for (int filterIndex = 0; filterIndex < count; filterIndex++)
1968 if (phoneNumber.CompareTo(GetFilterText(filterIndex, MSG_FILTER_BY_ADDRESS_SAME)) == 0)
1975 msg_release_list_struct(__pFilterList);
1976 delete __pFilterList;
1977 __pNumberFilterIndex->RemoveAll();
1978 CloseMsgHandleSession();
1980 AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));
1986 SettingsManager::GetFilterText(int index, int type)
1988 AppLogDebug("ENTER");
1990 result res = E_SUCCESS;
1991 msg_error_t err = MSG_SUCCESS;
1992 char filterText[MAX_FILTER_VALUE_LEN] = {0};
1994 int filterIndex(-1);
1995 if (type == MSG_FILTER_BY_ADDRESS_SAME)
1997 __pNumberFilterIndex->GetAt(index, filterIndex);
1999 err = msg_get_str_value(__pFilterList->msg_struct_info[filterIndex], MSG_FILTER_VALUE_STR, filterText, sizeof(filterText));
2000 if (err != MSG_SUCCESS)
2002 AppLogDebug("Filter text fetching err = %d", (int) err);
2006 AppLogDebug("EXIT: r = %s", GetErrorMessage(res));
2012 SettingsManager::OpenMsgHandleSession()
2014 AppLogDebug("ENTER");
2016 result r = E_SUCCESS;
2017 msg_error_t err = MSG_SUCCESS;
2018 // Open session with message service.
2019 err = msg_open_msg_handle(&__pMsgHandle);
2020 if (err != MSG_SUCCESS)
2022 AppLogDebug("msg_open_msg_handle err = %d", (int) err);
2023 result r = E_FAILURE;
2026 // On filter operation if it is disabled
2027 bool filterFlag(false);
2028 err = msg_get_filter_operation(__pMsgHandle, &filterFlag);
2029 AppLogDebug("msg_get_filter_operation err = %d", (int) err);
2032 err = msg_set_filter_operation(__pMsgHandle, true);
2033 AppLogDebug("msg_set_filter_operation err = %d", (int) err);
2040 SettingsManager::CloseMsgHandleSession()
2042 if (__pMsgHandle != null)
2044 // Close open handle with message service
2045 msg_close_msg_handle(&__pMsgHandle);