//
// Copyright (c) 2012 Samsung Electronics Co., Ltd.
//
-// Licensed under the Flora License, Version 1.0 (the License);
+// Licensed under the Flora License, Version 1.1 (the License);
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
using namespace Tizen::Social;
using namespace Tizen::Ui::Scenes;
using namespace Tizen::Telephony;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Messaging;
CallPresentationModel* CallPresentationModel::__pInstance = null;
__isMessageAppControlRunning = false;
__isDialAppControlRunning = false;
__pAppControlMgr = null;
+ __pNetworkManager = null;
+ __psimStateManager = null;
+ __psimInfo = null;
+ __pSmsManager = null;
+ __isMessageSendInProgress = false;
}
CallPresentationModel::~CallPresentationModel(void)
__pTelephonyMgr = null;
__pSettingsPresentor = null;
__pAppControlMgr =null;
+ if(__pNetworkManager != null)
+ {
+ delete __pNetworkManager;
+ __pNetworkManager = null;
+ }
+ if(__psimStateManager != null)
+ {
+ delete __psimStateManager;
+ __psimStateManager = null;
+ }
+ if(__psimInfo != null)
+ {
+ delete __psimInfo;
+ __psimInfo = null;
+ }
+ if(__pSmsManager != null)
+ {
+ delete __pSmsManager;
+ __pSmsManager = null;
+ }
}
void
__pTelephonyMgr = TelephonyManager::GetInstance(this);
__pSettingsPresentor = SettingsPresentationModel::GetInstance();
__pAppControlMgr = CallAppControlRequestMgr::GetInstance();
+ __pNetworkManager = new (std::nothrow)NetworkManager();
+ __pNetworkManager->Construct(null);
+ GetSimInfo();
return E_SUCCESS;
}
__pTelEventListener = pTelEventListener;
}
+bool
+CallPresentationModel::IfNumberEndsWithHash(Tizen::Base::String& phoneNumber)
+{
+ String phoneNumberEndingWithHash(L"#$");
+ RegularExpression checkHash;
+ checkHash.Construct(phoneNumberEndingWithHash);
+ bool endsWithHash = checkHash.Match(phoneNumber,false);
+ if(endsWithHash == true)
+ {
+ return true;
+ }
+ return false;
+}
+
void
CallPresentationModel::DialCall(String& contactNumber, bool isEmergency)
{
int errorCode = ERROR_NONE;
bool isCallServiceAvailable = false;
+ bool numberEndsWithHash = false;
NetworkStatus networkStatus;
- NetworkManager* pNetworkManager = new NetworkManager();
result r;
//Check if Telephony Manager is initialized
TryCatch(__pTelephonyMgr != null, (errorCode = ERROR_TAPI_INIT_FAILED), "TAPI initialization failed");
return;
}
//Check if dialing a call is possible - Check if sim is available
- if (GetSimInfo() == E_FAILURE)
+ if (IsSimAvailable() == false)
{
__pTelEventListener->HandleTelephonyError(ERROR_CODE_SIM_INITIALIZATION_FAILED);
return ;
}
//fetch call service status
- r = pNetworkManager->Construct(null);
- if (r == E_SUCCESS)
+ if(__pNetworkManager != null)
{
- r = pNetworkManager->GetNetworkStatus(networkStatus);
+ r = __pNetworkManager->GetNetworkStatus(networkStatus);
if (r == E_SUCCESS)
{
isCallServiceAvailable = networkStatus.IsCallServiceAvailable();
}
}
- delete pNetworkManager;
+
if (isCallServiceAvailable == false)
{
__pTelEventListener->HandleTelephonyError(ERROR_DIAL_FAILED);
return ;
}
+ // check if GPRS number
+ numberEndsWithHash = IfNumberEndsWithHash(contactNumber);
+ if(numberEndsWithHash == true)
+ {
+ __pTelEventListener->HandleTelephonyError(ERROR_USSD_NUMBER);
+ return ;
+ }
+
//setup outgoing call
errorCode = __pTelephonyMgr->SetupMoCall(contactNumber, isEmergency);
TryCatch(errorCode == ERROR_NONE,,"Error occurred while setup MO call");
void CallPresentationModel::OnAppForeground(void)
{
+ AppLogDebug("Enter %d %d",__isDialAppControlRunning ,__isMessageAppControlRunning);
if (__isDialAppControlRunning == true)
{
//This comes here, when Dialer AppControl is finished working.
__pAppControlMgr->AppControlRequestCompleted();
//Check if this was the last call, then terminate application.
//And if any calls are active, then those cases are already handled from Other places.
- if( GetCurrentCallCount() == 0)
+ if( GetCurrentCallCount() == 0 && IsIncomingorDialingCallPresent() == false)
{
- CallApp* pPhoneApp = static_cast<CallApp*>(UiApp::GetInstance());
- pPhoneApp->Terminate();
+ CallApp* pCallApp = static_cast<CallApp*>(UiApp::GetInstance());
+ pCallApp->Terminate();
}
}
}
{
nextScene = IDSCN_SCENE_OUT_EMERGENCYCALL;
}
- pSceneManager->GoForward( ForwardSceneTransition( nextScene), pLaunchArgs);
+ pSceneManager->GoForward( ForwardSceneTransition( nextScene,
+ SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_KEEP), pLaunchArgs);
}
}
if(__isDialAppControlRunning == true)
{
+ AppLogDebug("__isDialAppControlRunning == true");
//Do not allow another app control if already running
return;
}
result
CallPresentationModel::GetSimInfo(void)
{
- int mnc;
- int mcc;
- bool isAvailable;
- String spn;
- String iccId;
- String operatorName;
-
- SimStateManager simStateManager;
- SimInfo simInfo;
-
- result r = simStateManager.Construct();
+ __psimStateManager = new (std::nothrow)SimStateManager();
+ result r = __psimStateManager->Construct();
if (IsFailed(r))
{
+ delete __psimStateManager;
+ __psimStateManager = null;
return E_FAILURE;
}
+ __psimStateManager->SetSimEventListener(this);
- r = simStateManager.GetSimInfo(simInfo);
+ __psimInfo = new (std::nothrow)SimInfo();
+ r = __psimStateManager->GetSimInfo(*__psimInfo);
if (IsFailed(r))
{
+ delete __psimStateManager;
+ __psimStateManager = null;
+ delete __psimInfo;
+ __psimInfo = null;
return E_FAILURE;
}
+ return E_SUCCESS;
+}
+
+void
+CallPresentationModel::OnTelephonyNetworkStatusChanged(const NetworkStatus& networkStatus)
+{
+
+}
+
+void
+CallPresentationModel::OnTelephonySimStateChanged(Tizen::Telephony::SimState state)
+{
+ if(__psimStateManager != null)
+ {
+ delete __psimStateManager;
+ __psimStateManager =null;
+ }
+ if(__psimInfo != null)
+ {
+ delete __psimInfo;
+ __psimInfo = null;
+ }
+
+ __psimStateManager = new SimStateManager();
+ result r = __psimStateManager->Construct();
+ if (IsFailed(r))
+ {
+ delete __psimStateManager;
+ __psimStateManager = null;
+ return ;
+ }
- mnc = simInfo.GetMnc();
- mcc = simInfo.GetMcc();
- spn = simInfo.GetSpn();
- iccId = simInfo.GetIccId();
- operatorName = simInfo.GetOperatorName();
- //Checks whether a SIM card is present in the device or not
- isAvailable = simInfo.IsAvailable();
- if(isAvailable == true)
+ __psimInfo = new SimInfo();
+ r = __psimStateManager->GetSimInfo(*__psimInfo);
+ if (IsFailed(r))
+ {
+ delete __psimStateManager;
+ __psimStateManager = null;
+ delete __psimInfo;
+ __psimInfo = null;
+ return ;
+ }
+
+}
+
+bool
+CallPresentationModel::IsSimAvailable(void)
+{
+ if(__psimInfo != null)
{
- return E_SUCCESS;
+ return __psimInfo->IsAvailable();
}
else
{
- return E_FAILURE;
+ return false;
+ }
+
+
+}
+
+void
+CallPresentationModel::SendMessage(String& strMsg,String& recpientNum)
+{
+ AppLogDebug("Enter");
+ result r;
+ if(__pSmsManager == null)
+ {
+ __pSmsManager = new (std::nothrow) SmsManager();
+ result r = __pSmsManager->Construct(*this);
+ if (IsFailed(r) == true)
+ {
+ delete __pSmsManager;
+ __pSmsManager = null;
+ return;
+ }
+
}
+ RecipientList recipient;
+ recipient.Add(RECIPIENT_TYPE_TO,recpientNum);
+ SmsMessage smsMessage;
+ r = smsMessage.SetText(strMsg);
+ if (IsFailed(r) == false)
+ {
+ r = __pSmsManager->Send(smsMessage,recipient,true);
+ if (IsFailed(r) == false)
+ {
+ __isMessageSendInProgress = true;
+ }
+
+ }
+
+}
+
+bool
+CallPresentationModel::IsMessageSendingInProgress(void)
+{
+ AppLogDebug("Enter %d",__isMessageSendInProgress);
+ return __isMessageSendInProgress;
+}
+
+void
+CallPresentationModel::OnSmsMessageSent(result r)
+{
+ AppLogDebug("Enter");
+ __isMessageSendInProgress = false;
+
}