X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2FCallActiveCallForm.cpp;h=bc3a5a63698af7016722a62d73d563c47802cf44;hb=a7fa9b4151e7cb0896fa51cb8664b6713d2af09c;hp=1bdc61ff600a280097a816141b0d5f64067a5bf6;hpb=5ec4aa503ad9a195c9faa6aed1fc70408c885492;p=apps%2Fosp%2FCall.git diff --git a/src/CallActiveCallForm.cpp b/src/CallActiveCallForm.cpp index 1bdc61f..bc3a5a6 100644 --- a/src/CallActiveCallForm.cpp +++ b/src/CallActiveCallForm.cpp @@ -1,7 +1,7 @@ // // 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 // @@ -22,6 +22,7 @@ #include #include #include +#include #include "CallActiveCallForm.h" #include "CallButtonsPanel.h" #include "CallInfo.h" @@ -30,6 +31,7 @@ #include "CallPresentationModel.h" #include "CallSceneRegister.h" #include "CallTypes.h" +#include "CallApp.h" using namespace Tizen::App; using namespace Tizen::Base; @@ -42,6 +44,7 @@ using namespace Tizen::System; using namespace Tizen::Ui; using namespace Tizen::Ui::Controls; using namespace Tizen::Ui::Scenes; +using namespace Tizen::Shell; //constants const int IDI_MAX_SECONDS = 60; @@ -78,7 +81,7 @@ static const wchar_t* IDC_CONF_CALL_MORE_BUTTON = L"IDC_CONF_CALL_MORE_BUTTON"; static const wchar_t* IDC_HOLD_BUTTON = L"IDC_HOLD_BUTTON"; static const wchar_t* IDC_SWAP_BUTTON = L"IDC_SWAP_BUTTON"; static const wchar_t* IDC_HOLD_LABEL = L"IDC_HOLD_LABEL"; -static const wchar_t* IDC_TEXTBOX = L"IDC_TEXTBOX"; +static const wchar_t* IDC_TEXTBOX = L"IDC_NUM_EDITFIELD"; static const wchar_t* IDC_CALLER1_LABEL = L"IDC_CALLER1_LABEL"; static const wchar_t* IDC_BACKGROUND_LABEL = L"IDC_BACKGROUND_LABEL"; static const wchar_t* IDC_CALLER1_TIME_LABEL = L"IDC_CALLER1_TIME_LABEL"; @@ -106,6 +109,8 @@ ActiveCallForm::ActiveCallForm(FormType formType) __pSmallPhotoLabel = null; __pActiveCallInfo = null; __pHeldCallInfo = null; + __isSwapInProgress = false; + __pAddressbook == null; } ActiveCallForm::~ActiveCallForm(void) @@ -117,17 +122,14 @@ ActiveCallForm::~ActiveCallForm(void) } if (__pMoreOptionsList != null) { - RemoveControl(*__pMoreOptionsList); __pMoreOptionsList = null; } if (__pMoreOptionsListAnchor != null) { - RemoveControl(*__pMoreOptionsListAnchor); __pMoreOptionsListAnchor = null; } if (__pSmallPhotoLabel != null) { - RemoveControl(*__pSmallPhotoLabel); __pSmallPhotoLabel = null; } if (__pActiveCallInfo != null) @@ -140,7 +142,6 @@ ActiveCallForm::~ActiveCallForm(void) } if(__pDTMFKeypad != null) { - RemoveControl(*__pDTMFKeypad); __pDTMFKeypad = null; } } @@ -198,35 +199,40 @@ ActiveCallForm::OnInitializing(void) void ActiveCallForm::ShowDTMFKeypad(void) { - if(__pDTMFKeypad != null) - { - RemoveControl(*__pDTMFKeypad); - __pDTMFKeypad = null; - } - if(__pDTMFKeypad == null) { //update rect according to client screen area Rectangle rect(0, 0, 0, 0); - if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT) + if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT || GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE) { rect.width = GetClientAreaBounds().width; rect.height = GetClientAreaBounds().height - __pCallButtonsPanel->GetHeight(); } - else if (GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE) + else if (GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE) { rect.height = GetClientAreaBounds().height; rect.width = GetClientAreaBounds().width - __pCallButtonsPanel->GetWidth(); } - AppLog("rect(%d,%d,%d,%d)",rect.x,rect.y,rect.width,rect.height); + AppLog("DTMF Keypad rect(%d,%d,%d,%d)",rect.x,rect.y,rect.width,rect.height); __pDTMFKeypad = new (std::nothrow) DtmfKeyPadPanel(); __pDTMFKeypad->Initialize(this, rect); - AddControl(*__pDTMFKeypad); + AddControl(__pDTMFKeypad); + + //set layout relation w.r.t call buttons panel + RelativeLayout* pRelativeLayout = dynamic_cast(GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_RIGHT_TO_LEFT); + } } - TextBox* pTextBox = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX)); - pTextBox->SetText(L""); __pDTMFKeypad->SetShowState(true); + if(__DtmfString.IsEmpty() == false) + { + EditField* pTextBox = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX)); + pTextBox->SetText(__DtmfString); + } __pDTMFKeypad->Draw(true); __pDTMFKeypad->Show(); } @@ -261,23 +267,31 @@ ActiveCallForm::OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui //change orientation of DTMF Keypad, if it is visible. if (__pDTMFKeypad != null) { - if (orientationStatus == ORIENTATION_STATUS_LANDSCAPE) + if (orientationStatus == ORIENTATION_STATUS_LANDSCAPE || orientationStatus == ORIENTATION_STATUS_LANDSCAPE_REVERSE) { //in landscape mode, caller info is visible. SetShowStateOnKeypad(true); + SetHoldButtonShowState(false); } - else if (orientationStatus == ORIENTATION_STATUS_PORTRAIT) + else if (orientationStatus == ORIENTATION_STATUS_PORTRAIT || orientationStatus == ORIENTATION_STATUS_PORTRAIT_REVERSE) { //in Portrait mode it is hidden beneath DTMF Keypad. SetShowStateOnKeypad(false); } - String dtmfText = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX))->GetText(); - ShowDTMFKeypad(); - //get new text box. - TextBox* pTextBox = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX)); - pTextBox->SetText(dtmfText); + if(__pDTMFKeypad->GetShowState() == true) + { + String dtmfText = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX))->GetText(); + HideDTMFKeypad(); + ShowDTMFKeypad(); + } } } + //More option is displayed recreate it + if(__pMoreOptionsListAnchor != null) + { + CreateMoreOptionsMenuList(); + CreateMoreOptionsMenuList(); + } } void @@ -285,7 +299,9 @@ ActiveCallForm::HideDTMFKeypad(void) { if(__pDTMFKeypad != null) { - RemoveControl(*__pDTMFKeypad); + __DtmfString = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX))->GetText(); + + RemoveControl(__pDTMFKeypad); __pDTMFKeypad = null; } } @@ -307,7 +323,7 @@ ActiveCallForm::InitializeCallButtonsPanel(void) __pCallButtonsPanel = new (std::nothrow) CallButtonsPanel(); __pCallButtonsPanel->ConstructPanel(this, __formType); __pCallButtonsPanel->SetBounds(pKeysBgLbl->GetBounds()); - r = AddControl(*__pCallButtonsPanel); + r = AddControl(__pCallButtonsPanel); } RelativeLayout* pRelativeLayout = dynamic_cast(GetPortraitLayoutN()); @@ -320,6 +336,8 @@ ActiveCallForm::InitializeCallButtonsPanel(void) { pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_LEFT_TO_LEFT); pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_RIGHT_TO_RIGHT); + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM); + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_TOP_TO_TOP); } return r; @@ -467,7 +485,7 @@ ActiveCallForm::CreateMoreOptionsMenuList(void) pBgPopupArwBmp = null; // Adds a Label to the Form - AddControl(*__pMoreOptionsListAnchor); + AddControl(__pMoreOptionsListAnchor); } //create options menu list @@ -478,7 +496,7 @@ ActiveCallForm::CreateMoreOptionsMenuList(void) __pMoreOptionsList->SetItemProvider(*this); __pMoreOptionsList->AddListViewItemEventListener(*this); //Add option list to the form - AddControl(*__pMoreOptionsList); + AddControl(__pMoreOptionsList); } else { @@ -493,14 +511,14 @@ ActiveCallForm::DestroyMoreOptionsMenuList(void) if (__pMoreOptionsListAnchor != null) { //removes and delete the child control - RemoveControl(*__pMoreOptionsListAnchor); + RemoveControl(__pMoreOptionsListAnchor); __pMoreOptionsListAnchor = null; } if (__pMoreOptionsList != null) { //removes and delete the child control - RemoveControl(*__pMoreOptionsList); + RemoveControl(__pMoreOptionsList); __pMoreOptionsList = null; } } @@ -557,13 +575,14 @@ ActiveCallForm::OnActionPerformed(const Control& source, int actionId) case IDA_OPEN_NUMKEYPAD: { - if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT) + if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT || GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE) { //hide only in portrait mode. - SetShowStateOnKeypad(false); + SetShowStateOnKeypad(false); } + //Hide the hold button as it goes behind DTMF keypad + SetHoldButtonShowState(false); ShowDTMFKeypad(); - SetTextToDTMFTextField(L""); __pCallButtonsPanel->SetKeypadButtonState(IDA_CLOSE_NUMKEYPAD); } break; @@ -581,15 +600,7 @@ ActiveCallForm::OnActionPerformed(const Control& source, int actionId) //switch to Dialer Form to make an call if(__pCallPresentor->GetCurrentCallCount() == 1) { -/* ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter); - pArgs->Construct(); - String* formType = new (std::nothrow) String(); - formType->Append(__formType); - pArgs->Add(formType); - pSceneManager->GoForward( ForwardSceneTransition(IDSCN_DIALER, SCENE_TRANSITION_ANIMATION_TYPE_NONE, - SCENE_HISTORY_OPTION_NO_HISTORY), pArgs);*/ - __pCallPresentor->LaunchDialAppControl(); - + __pCallPresentor->LaunchDialAppControl(); } } break; @@ -720,8 +731,12 @@ ActiveCallForm::OnActionPerformed(const Control& source, int actionId) case IDA_SWAP_CALLS: { - AppAssert(__formType == FORMTYPE_MULTIPLECALLS); - __pCallPresentor->SwapCalls(); + if(IsSwapInProgress() == false) + { + AppAssert(__formType == FORMTYPE_MULTIPLECALLS); + __pCallPresentor->SwapCalls(); + SetSwapInProgress(true); + } } break; @@ -833,13 +848,36 @@ ActiveCallForm::OnActionPerformed(const Control& source, int actionId) } } +bool +ActiveCallForm::IsSwapInProgress(void) +{ + return __isSwapInProgress; +} + +void +ActiveCallForm::SetSwapInProgress(bool progress) +{ + __isSwapInProgress = progress; +} + void ActiveCallForm::SetTextToDTMFTextField(const String& dtmfStr) { if(__pDTMFKeypad != null) { - TextBox* pTextBox = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX)); - pTextBox->AppendText(dtmfStr); + EditField* pTextBox = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX)); + + int startpos=-1,endpos=-1; + pTextBox->GetBlockRange(startpos,endpos); + if(startpos != -1) + { + pTextBox->Remove(); + pTextBox->ReleaseBlock(); + } + + pTextBox->InsertTextAtCursorPosition(dtmfStr); + //pTextBox->AppendText(dtmfStr); + pTextBox->SetFocus(); pTextBox->Invalidate(true); } } @@ -852,9 +890,20 @@ ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& __pCallPresentor->SetTelEventListener(this); AddOrientationEventListener(*this); + CallApp* pPhoneApp = static_cast(CallApp::GetInstance()); + pPhoneApp->AddAppStateChangeListener(*this); + //Initialize keypad and buttons InitializeCallButtonsPanel(); + AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance(); + __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID); + if(__pAddressbook != null) + { + __pAddressbook->SetAddressbookChangeEventListener(this); + } + + if (__pActiveCallInfo != null) { delete __pActiveCallInfo; @@ -873,7 +922,7 @@ ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& { String contactNo; contactNo.Append(*(static_cast(pArgs->GetAt(0)))); - __pActiveCallInfo = new (std::nothrow) CallInfo(); + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); __pActiveCallInfo->SetContactNumber(contactNo); Contact* pContact = __pCallPresentor->GetContactN(contactNo); if (pContact != null) @@ -890,7 +939,7 @@ ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& case FORMTYPE_EMERGENCYOUTGOINGCALL: { String* pContactNo = static_cast(pArgs->GetAt(0)); - __pActiveCallInfo = new (std::nothrow) CallInfo(); + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); long long phNumber = 0; LongLong::Parse(*pContactNo, phNumber); __pActiveCallInfo->SetContactNumber(*pContactNo); @@ -902,9 +951,9 @@ ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& case FORMTYPE_ACTIVECALL: { //get contact number - CallInfo* pCall = static_cast(pArgs->GetAt(0)); + AppCallInfo* pCall = static_cast(pArgs->GetAt(0)); - __pActiveCallInfo = new (std::nothrow) CallInfo(); + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); *__pActiveCallInfo = *pCall; String activeContactNo; if(pCall->GetContactNumber().IsEmpty() == false) @@ -926,9 +975,9 @@ ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& case FORMTYPE_EMERGENCYACTIVECALL: { //get contact number - CallInfo* pCall = static_cast(pArgs->GetAt(0)); + AppCallInfo* pCall = static_cast(pArgs->GetAt(0)); - __pActiveCallInfo = new (std::nothrow) CallInfo(); + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); *__pActiveCallInfo = *pCall; //show call active time using Timer @@ -939,7 +988,7 @@ ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& case FORMTYPE_MULTIPLECALLS: { - IListT* pCallsList = __pCallPresentor->GetCallListN(); + IListT* pCallsList = __pCallPresentor->GetCallListN(); //update calls state UpdateMultipleCallScreen(*pCallsList); delete pCallsList; @@ -950,8 +999,8 @@ ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& case FORMTYPE_ACTIVECONFCALL: { //get Conf call - CallInfo* pConfInfo = static_cast(pArgs->GetAt(0)); - __pActiveCallInfo = new (std::nothrow) CallInfo(); + AppCallInfo* pConfInfo = static_cast(pArgs->GetAt(0)); + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); *__pActiveCallInfo = *pConfInfo; int participantsCount = __pActiveCallInfo->GetCallerListCount(); @@ -986,6 +1035,17 @@ ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& break; } + if(__formType == FORMTYPE_ACTIVECALL || __formType == FORMTYPE_EMERGENCYACTIVECALL || + __formType == FORMTYPE_MULTIPLECALLS || __formType == FORMTYPE_ACTIVECONFCALL) + { + //Unlock the phone if its locked + if(LockManager::GetInstance()->IsLocked()) + { + AppLogDebug("Phone Locked"); + LockManager::GetInstance()->Unlock(); + } + } + //Hide DTMFKeypad, if visible and show caller info HideDTMFKeypad(); SetShowStateOnKeypad(true); @@ -1017,6 +1077,9 @@ ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& delete pArgs; pArgs = null; } + + CallApp* pCallApp = static_cast(CallApp::GetInstance()); + pCallApp->SetTopMostWindow(false); } void @@ -1025,7 +1088,7 @@ ActiveCallForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& RemoveOrientationEventListener(*this); if (__pCallButtonsPanel != null) { - RemoveControl(*__pCallButtonsPanel); + // RemoveControl(__pCallButtonsPanel); __pCallButtonsPanel = null; } if (__pActiveCallTimer != null) @@ -1047,6 +1110,13 @@ ActiveCallForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& { __pMoreOptionsList->SetShowState(false); } + __DtmfString.Clear(); + CallApp* pCallApp = static_cast(CallApp::GetInstance()); + pCallApp->RemoveAppStateChangeListener(*this); + if(__pAddressbook != null) + { + __pAddressbook->SetAddressbookChangeEventListener(null); + } } void @@ -1055,7 +1125,7 @@ ActiveCallForm::HandleConfCallChanged(void) AppLog("ENTER"); AppAssert((__formType == FORMTYPE_ACTIVECONFCALL) || (__formType == FORMTYPE_MULTIPLECALLS)); //fetch changed conference call info - CallInfo* pConfCallInfo = __pCallPresentor->GetConferenceCallInfoN(); + AppCallInfo* pConfCallInfo = __pCallPresentor->GetConferenceCallInfoN(); if (pConfCallInfo == null) { AppLog("EXIT"); @@ -1080,7 +1150,7 @@ ActiveCallForm::HandleConfCallChanged(void) { //Active call is conference call delete __pActiveCallInfo; - __pActiveCallInfo = new (std::nothrow) CallInfo(); + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); *__pActiveCallInfo = *pConfCallInfo; if (__formType == FORMTYPE_MULTIPLECALLS) @@ -1097,7 +1167,7 @@ ActiveCallForm::HandleConfCallChanged(void) { //Held call is conference call - this is definitely multiple call screen. delete __pHeldCallInfo; - __pHeldCallInfo = new (std::nothrow) CallInfo(); + __pHeldCallInfo = new (std::nothrow) AppCallInfo(); *__pHeldCallInfo = *pConfCallInfo; pPeopleCountLbl = static_cast(GetControl(IDC_NUMBER2_LABEL)); } @@ -1115,12 +1185,141 @@ ActiveCallForm::HandleConfCallChanged(void) //change AddCall Button status __pCallButtonsPanel->EnableAddCallButton(isEnableAddCall); //change JoinCall Button status - __pCallButtonsPanel->EnableJoinCallButton(isEnableJoinCall); + __pCallButtonsPanel->EnableJoinCallButton(__pCallPresentor->IsEnableJoinCallButton()); AppLog("EXIT"); } void -ActiveCallForm::UpdateMultipleCallScreen(Tizen::Base::Collection::IListT& activeCallsList) +ActiveCallForm::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList) +{ + AppLog("Enter"); + switch (__formType) + { + + case FORMTYPE_EMERGENCYOUTGOINGCALL: + { + } + break; + + case FORMTYPE_OUTGOINGCALL: + case FORMTYPE_ACTIVECALL: + { + String pContactNumber; + pContactNumber.Append(__pActiveCallInfo->GetContactNumber()); + Contact* pContact = __pCallPresentor->GetContactN(__pActiveCallInfo->GetContactNumber()); + if(pContact == null) + { + __pActiveCallInfo->ResetContactNumber(null); + __pActiveCallInfo->ResetContactInfo(null); + + } + else + { + __pActiveCallInfo->SetContactNumber(pContactNumber); + __pActiveCallInfo->SetContactInfo(*pContact); + } + if(pContact != null) + { + delete pContact; + pContact = null; + } + ShowPersonDetails(pContactNumber, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo); + } + break; + + case FORMTYPE_EMERGENCYACTIVECALL: + { + } + break; + + case FORMTYPE_MULTIPLECALLS: + { + + IListT* pCallsList = __pCallPresentor->GetCallListN(); + int listCount = pCallsList->GetCount(); + for(int index = 0; index < listCount; index++) + { + AppCallInfo callInfo; + Contact* pContact; + pCallsList->GetAt(index, callInfo); + if(__pActiveCallInfo == null) + { + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); + } + *__pActiveCallInfo = callInfo; + String contactNumber; + contactNumber.Append(__pActiveCallInfo->GetContactNumber()); + pContact = __pCallPresentor->GetContactN(__pActiveCallInfo->GetContactNumber()); + if(pContact == null) + { + __pActiveCallInfo->ResetContactNumber(null); + __pActiveCallInfo->ResetContactInfo(null); + + } + else + { + __pActiveCallInfo->SetContactNumber(contactNumber); + __pActiveCallInfo->SetContactInfo(*pContact); + } + if(pContact != null) + { + delete pContact; + pContact = null; + } + if(callInfo.IsOnHold() == false) + { + ShowPersonDetails(contactNumber, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo); + } + else + { + ShowPersonDetails(contactNumber, IDC_NUMBER2_LABEL, IDC_CALLER2_LABEL, true,__pActiveCallInfo); + } + + } + if(pCallsList != null) + { + delete pCallsList; + pCallsList = null; + } + //pCallsList = __pCallPresentor->GetCallListN(); + //update calls state + //UpdateMultipleCallScreen(*pCallsList); + //delete pCallsList; + //pCallsList = null; + } + break; + + case FORMTYPE_ACTIVECONFCALL: + { + int participantsCount = __pActiveCallInfo->GetCallerListCount(); + IListT* pParticipantListCallHandles = __pActiveCallInfo->GetCallerList(); + for(int listCount = 0; listCount < participantsCount; listCount++) + { + + } + + } + break; + + default: + break; + } + + + + + AppLog("Exit"); +} + +void +ActiveCallForm::OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList) +{ + //No implementation +} + + +void +ActiveCallForm::UpdateMultipleCallScreen(Tizen::Base::Collection::IListT& activeCallsList) { AppLog("ENTER"); if(__pActiveCallInfo != null) @@ -1144,7 +1343,7 @@ ActiveCallForm::UpdateMultipleCallScreen(Tizen::Base::Collection::IListTIsConferenceCall() == false) @@ -1174,6 +1373,10 @@ ActiveCallForm::UpdateMultipleCallScreen(Tizen::Base::Collection::IListTSetShowState(false); } ShowPersonDetails(contactNo, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo); + if(__pMoreOptionsListAnchor != null && __pMoreOptionsListAnchor->GetShowState() == true) + { + CreateMoreOptionsMenuList(); + } } else { @@ -1220,7 +1423,7 @@ ActiveCallForm::UpdateMultipleCallScreen(Tizen::Base::Collection::IListTIsConferenceCall() == false) @@ -1263,30 +1466,24 @@ ActiveCallForm::UpdateMultipleCallScreen(Tizen::Base::Collection::IListTGetConferenceCallInfoN(); - if(pConfCallInfo != null && pConfCallInfo->GetCallerListCount() >= IDI_MAX_CONF_CALL_PARTICIPANTS) - { - isEnableJoinCall = false; - } - __pCallButtonsPanel->EnableJoinCallButton(isEnableJoinCall); - delete pConfCallInfo; - pConfCallInfo = null; + __pCallButtonsPanel->EnableJoinCallButton(__pCallPresentor->IsEnableJoinCallButton()); Invalidate(true); AppLog("EXIT"); } void -ActiveCallForm::ShowPersonDetails(const String& phoneNumber, const String& contactLblName, const String& nameLblName, bool isSecondCaller, CallInfo* pCallInfo) +ActiveCallForm::ShowPersonDetails(const String& phoneNumber, const String& contactLblName, const String& nameLblName, bool isSecondCaller, AppCallInfo* pCallInfo) { + result r = E_FAILURE; + //call individual methods to show contact number, caller name & photo ShowPhoneNumber(phoneNumber, contactLblName); //fetch contact details based on phone number - String* pDisplayName = pCallInfo->FetchCallerNameN(); + String* pDisplayName = pCallInfo->FetchLatestCallerNameN(phoneNumber); ShowCallerName(*pDisplayName, nameLblName); - Bitmap* pPhotoBitmap = pCallInfo->FetchCallerPhotoN(); + Bitmap* pPhotoBitmap = pCallInfo->FetchLatestCallerPhotoN(phoneNumber); ShowCallerPhoto(pPhotoBitmap, isSecondCaller); //free resources @@ -1406,7 +1603,7 @@ ActiveCallForm::ShowCallerPhoto(Bitmap* pPhotoId, bool isSecondCaller) //Remove small photo label if (__pSmallPhotoLabel != null) { - RemoveControl(*__pSmallPhotoLabel); + RemoveControl(__pSmallPhotoLabel); __pSmallPhotoLabel = null; } @@ -1464,6 +1661,7 @@ ActiveCallForm::ShowCallerPhoto(Bitmap* pPhotoId, bool isSecondCaller) if (pPhotoLbl) { pPhotoLbl->SetBackgroundBitmap(*pDefaultPhoto); + pPhotoLbl->Invalidate(true); } delete pDefaultPhoto; } @@ -1508,7 +1706,7 @@ ActiveCallForm::ShowCallersPhotoThumbnail(const Bitmap& pPhotoId) { if (__pSmallPhotoLabel != null) { - RemoveControl(*__pSmallPhotoLabel); + RemoveControl(__pSmallPhotoLabel); __pSmallPhotoLabel = null; } //Draw Small Photo and show on small photo label @@ -1517,7 +1715,7 @@ ActiveCallForm::ShowCallersPhotoThumbnail(const Bitmap& pPhotoId) __pSmallPhotoLabel->SetBackgroundColor(Color(0,0,0)); __pSmallPhotoLabel->SetBackgroundBitmap(pPhotoId); // Add a Label to the Form - AddControl(*__pSmallPhotoLabel); + AddControl(__pSmallPhotoLabel); __pSmallPhotoLabel->Invalidate(true); } @@ -1583,6 +1781,21 @@ ActiveCallForm::ShowTimerInfo(const String& timerLblName, bool isOnHold, long lo } void +ActiveCallForm::SetHoldButtonShowState(bool showState) +{ + Label* pLblControl = static_cast(GetControl(IDC_HOLD_LABEL)); + if(pLblControl != null) + { + pLblControl->SetShowState(showState); + } + Button* pButtonControl = static_cast(GetControl(IDC_HOLD_BUTTON)); + if(pButtonControl != null) + { + pButtonControl->SetShowState(showState); + } +} + +void ActiveCallForm::SetShowStateOnKeypad(bool showState) { Label* pLblControl = static_cast(GetControl(IDC_CALLER1_LABEL)); @@ -1604,10 +1817,7 @@ ActiveCallForm::SetShowStateOnKeypad(bool showState) pLblControl->SetShowState(showState); pLblControl = static_cast(GetControl(IDC_VOICE_CALL_ICON_LABEL)); pLblControl->SetShowState(showState); - pLblControl = static_cast(GetControl(IDC_HOLD_LABEL)); - pLblControl->SetShowState(showState); - Button* pButtonControl = static_cast(GetControl(IDC_HOLD_BUTTON)); - pButtonControl->SetShowState(showState); + SetHoldButtonShowState(showState); } break; @@ -1644,11 +1854,8 @@ ActiveCallForm::SetShowStateOnKeypad(bool showState) { pLblControl = static_cast(GetControl(IDC_PARTICIPANTS_LABEL)); pLblControl->SetShowState(showState); - pLblControl = static_cast(GetControl(IDC_HOLD_LABEL)); - pLblControl->SetShowState(showState); - Button* pButtonControl = static_cast(GetControl(IDC_HOLD_BUTTON)); - pButtonControl->SetShowState(showState); - pButtonControl = static_cast(GetControl(IDC_CONF_CALL_MORE_BUTTON)); + SetHoldButtonShowState(showState); + Button* pButtonControl = static_cast(GetControl(IDC_CONF_CALL_MORE_BUTTON)); pButtonControl->SetShowState(showState); } break; @@ -1749,7 +1956,8 @@ ActiveCallForm::OnListViewItemStateChanged(ListView& listView, int index, int el { //Goto conference call list form SceneManager* pSceneManager = SceneManager::GetInstance(); - pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALLLIST), null); + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALLLIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE, + SCENE_HISTORY_OPTION_NO_HISTORY, SCENE_DESTROY_OPTION_KEEP), null); } void @@ -1810,7 +2018,7 @@ ActiveCallForm::CreateItem(int index, int itemWidth) pTextElement->SetFont(font); //construct Enriched text EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText(); - Dimension textDimension; + FloatDimension textDimension; font.GetTextExtent(confCallName, confCallName.GetLength(), textDimension); textDimension.height = textDimension.height + font.GetDescender(); pEnrichedText->Construct(textDimension); @@ -1818,8 +2026,8 @@ ActiveCallForm::CreateItem(int index, int itemWidth) pEnrichedText->Add(*pTextElement); //Add Enriched text to pItem - Point textPos(((2 * IDI_OPTIONMENU_ITEM_SPACING) + W_MGR_CONFCALL_BITMAP), ((IDI_OPTIONMENU_DIMEN.height - textDimension.height) / 2)); - pItem->AddElement(Rectangle(textPos, textDimension), 2, *pEnrichedText); + FloatPoint textPos(((2 * IDI_OPTIONMENU_ITEM_SPACING) + W_MGR_CONFCALL_BITMAP), ((IDI_OPTIONMENU_DIMEN.height - textDimension.height) / 2)); + pItem->AddElement(FloatRectangle(textPos, textDimension), 2, *pEnrichedText); // Cleans up pEnrichedText->RemoveAll(true); delete pEnrichedText; @@ -1832,3 +2040,10 @@ ActiveCallForm::DeleteItem(int index, ListItemBase* pItem, int itemWidth) delete pItem; return true; } + +void +ActiveCallForm::OnForeground(void) +{ + AppLogDebug("Enter"); + __pCallPresentor->OnAppForeground(); +}