const int H_POPUP_ANCHOR = 22;
const int IDI_OPTIONMENU_ITEM_SPACING = 16;
const Point IDI_OPTIONMENU_POS(238, 162);
-const Dimension IDI_OPTIONMENU_DIMEN(466, 99);
+const Dimension IDI_OPTIONMENU_DIMEN(486, 99);
const int X_PHOTO_LBL = 166;
const int Y_PHOTO_LBL = 232;
const int W_PHOTO_LBL = 388;
static const wchar_t* IDC_CALLER2_PHOTO_LABEL = L"IDC_CALLER2_PHOTO_LABEL";
static const wchar_t* IDC_CALLER1_PHOTO_LABEL = L"IDC_CALLER1_PHOTO_LABEL";
static const wchar_t* IDC_KEY_BG_LABEL = L"IDC_KEY_BG_LABEL";
+static const wchar_t* IDC_DTMF_KEY_BG_LABEL = L"IDC_DTMF_KEY_BG_LABEL";
ActiveCallForm::ActiveCallForm(FormType formType)
: BaseForm(formType)
InitializeSwapButton();
//Initialize manage conf. call list form
InitializeManageConfCallButton();
-
__pCallPresentor = CallPresentationModel::GetInstance();
return r;
}
void
ActiveCallForm::ShowDTMFKeypad(void)
{
- if(__pDTMFKeypad == null)
- {
- //update rect according to client screen area
- Rectangle rect(0, 0, 0, 0);
- 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 || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
- {
- rect.height = GetClientAreaBounds().height;
- rect.width = GetClientAreaBounds().width - __pCallButtonsPanel->GetWidth();
- }
-
- 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);
-
- //set layout relation w.r.t call buttons panel
- RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(GetLandscapeLayoutN());
- if (pRelativeLayout != null)
- {
- pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT);
- pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_RIGHT_TO_LEFT);
- }
- }
+ EditField* pTextBox = static_cast<EditField*>(__pDTMFKeypad->GetControl(IDC_TEXTBOX));
__pDTMFKeypad->SetShowState(true);
- if(__DtmfString.IsEmpty() == false)
- {
- EditField* pTextBox = static_cast<EditField*>(__pDTMFKeypad->GetControl(IDC_TEXTBOX));
- pTextBox->SetText(__DtmfString);
- }
__pDTMFKeypad->Draw(true);
__pDTMFKeypad->Show();
+ pTextBox->SetFocus();
}
void
}
//change orientation of DTMF Keypad, if it is visible.
- if (__pDTMFKeypad != null)
+ if(__pDTMFKeypad != null)
+ {
+ Rectangle rect(0, 0, 0, 0);
+ if (orientationStatus == ORIENTATION_STATUS_LANDSCAPE || orientationStatus == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
+ {
+ rect.height = GetClientAreaBounds().height;
+ rect.width = GetClientAreaBounds().width - __pCallButtonsPanel->GetWidth();
+ }
+ else if (orientationStatus == ORIENTATION_STATUS_PORTRAIT || orientationStatus == ORIENTATION_STATUS_PORTRAIT_REVERSE)
+ {
+ rect.width = GetClientAreaBounds().width;
+ rect.height = GetClientAreaBounds().height - __pCallButtonsPanel->GetHeight();
+ }
+ __pDTMFKeypad->SetBounds(rect);
+ RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(GetLandscapeLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT);
+ pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_RIGHT_TO_LEFT);
+ pRelativeLayout->Update();
+ delete pRelativeLayout;
+ }
+ pRelativeLayout = dynamic_cast<RelativeLayout*>(GetPortraitLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT);
+ pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_BOTTOM_TO_TOP);
+ pRelativeLayout->Update();
+ delete pRelativeLayout;
+ }
+ __pDTMFKeypad->setKeysPanelBounds();
+ __pDTMFKeypad->InvalidateBounds(rect);
+ __pDTMFKeypad->Invalidate(true);
+
+ //HideDTMFKeypad();
+ //ShowDTMFKeypad();
+ }
+
+ //change orientation of DTMF Keypad, if it is visible.
+ if (__pDTMFKeypad != null && __pDTMFKeypad->GetShowState() == true)
{
if (orientationStatus == ORIENTATION_STATUS_LANDSCAPE || orientationStatus == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
{
//in landscape mode, caller info is visible.
SetShowStateOnKeypad(true);
+ //Hide few labels and buttons in landscape mode when DTMF keypad is shown
+ SetShowStateOnKeypadLandscape(false);
SetHoldButtonShowState(false);
}
else if (orientationStatus == ORIENTATION_STATUS_PORTRAIT || orientationStatus == ORIENTATION_STATUS_PORTRAIT_REVERSE)
{
//in Portrait mode it is hidden beneath DTMF Keypad.
SetShowStateOnKeypad(false);
- }
- if(__pDTMFKeypad->GetShowState() == true)
- {
- String dtmfText = static_cast<EditField*>(__pDTMFKeypad->GetControl(IDC_TEXTBOX))->GetText();
- HideDTMFKeypad();
- ShowDTMFKeypad();
+ DestroyMoreOptionsMenuList();
}
}
}
if(__pDTMFKeypad != null)
{
__DtmfString = static_cast<EditField*>(__pDTMFKeypad->GetControl(IDC_TEXTBOX))->GetText();
-
- RemoveControl(__pDTMFKeypad);
- __pDTMFKeypad = null;
+ __pDTMFKeypad->SetShowState(false);
}
}
{
__pCallPresentor = null;
}
+ if(__pDTMFKeypad != null)
+ {
+ __pDTMFKeypad = null;
+ }
return r;
}
case IDA_OPEN_NUMKEYPAD:
{
+ if(__pDTMFKeypad != null)
+ {
+ Rectangle rect(0, 0, 0, 0);
+ if (GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
+ {
+ rect.height = GetClientAreaBounds().height;
+ rect.width = GetClientAreaBounds().width - __pCallButtonsPanel->GetWidth();
+ }
+ else if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT || GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE)
+ {
+ rect.width = GetClientAreaBounds().width;
+ rect.height = GetClientAreaBounds().height - __pCallButtonsPanel->GetHeight();
+ }
+ __pDTMFKeypad->SetBounds(rect);
+ RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(GetLandscapeLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT);
+ pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_RIGHT_TO_LEFT);
+ pRelativeLayout->Update();
+ delete pRelativeLayout;
+ }
+ pRelativeLayout = dynamic_cast<RelativeLayout*>(GetPortraitLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT);
+ pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_BOTTOM_TO_TOP);
+ pRelativeLayout->Update();
+ delete pRelativeLayout;
+ }
+ __pDTMFKeypad->setKeysPanelBounds();
+ __pDTMFKeypad->InvalidateBounds(rect);
+ __pDTMFKeypad->Invalidate(true);
+
+ }
+
+
+
if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT || GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE)
{
//hide only in portrait mode.
SetShowStateOnKeypad(false);
+ DestroyMoreOptionsMenuList();
}
+ if (GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
+ {
+ SetShowStateOnKeypadLandscape(false);
+ }
+
//Hide the hold button as it goes behind DTMF keypad
SetHoldButtonShowState(false);
ShowDTMFKeypad();
case IDA_CLOSE_NUMKEYPAD:
{
- SetShowStateOnKeypad(true);
+ if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT || GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE)
+ {
+ SetShowStateOnKeypad(true);
+ }
+ if (GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
+ {
+ SetShowStateOnKeypadLandscape(true);
+ }
HideDTMFKeypad();
__pCallButtonsPanel->SetKeypadButtonState(IDA_OPEN_NUMKEYPAD);
}
pTextBox->InsertTextAtCursorPosition(dtmfStr);
//pTextBox->AppendText(dtmfStr);
- pTextBox->SetFocus();
+ // pTextBox->SetFocus();
pTextBox->Invalidate(true);
}
}
//Initialize keypad and buttons
InitializeCallButtonsPanel();
+ if(__pDTMFKeypad == null)
+ {
+ Rectangle rect(0, 0, 0, 0);
+ 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 || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
+ {
+ rect.height = GetClientAreaBounds().height;
+ rect.width = GetClientAreaBounds().width - __pCallButtonsPanel->GetWidth();
+ }
+
+ 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);
+ //set layout relation w.r.t call buttons panel
+ RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(GetLandscapeLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT);
+ pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_RIGHT_TO_LEFT);
+ }
+ AddControl(__pDTMFKeypad);
+ }
+
AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
__pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
if(__pAddressbook != null)
activeContactNo.Append(AppUtility::GetResourceString(IDS_NUMBER_UNKNOWN));
}
ShowPersonDetails(activeContactNo, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo);
-
//show call active time using Timer
- __activeCallStartTime = pCall->GetCallConnectTime();
+ //__activeCallStartTime = pCall->GetCallConnectTime();
+ __activeCallStartTime = pCall->GetDurationTime();
ShowTimerInfo(IDC_CALLER1_TIME_LABEL, pCall->IsOnHold(), __activeCallStartTime);
}
break;
*__pActiveCallInfo = *pCall;
//show call active time using Timer
- __activeCallStartTime = pCall->GetCallConnectTime();
+ //__activeCallStartTime = pCall->GetCallConnectTime();
+ __activeCallStartTime = pCall->GetDurationTime();
ShowTimerInfo(IDC_CALLER1_TIME_LABEL, pCall->IsOnHold(), __activeCallStartTime);
}
break;
__pCallButtonsPanel->EnableAddCallButton(true);
}
+
+ //bring button on top
+ __pCallButtonsPanel->SetButtonPosition();
+
+
//show call active time using Timer
- __activeCallStartTime = __pActiveCallInfo->GetCallConnectTime();
+ //__activeCallStartTime = __pActiveCallInfo->GetCallConnectTime();
+ __activeCallStartTime = __pActiveCallInfo->GetDurationTime();
ShowTimerInfo(IDC_CALLER1_TIME_LABEL, __pActiveCallInfo->IsOnHold(),__activeCallStartTime);
}
break;
//Hide DTMFKeypad, if visible and show caller info
HideDTMFKeypad();
SetShowStateOnKeypad(true);
+ SetShowStateOnKeypadLandscape(true);
__pCallButtonsPanel->SetKeypadButtonState(IDA_OPEN_NUMKEYPAD);
//Set the correct speaker status
pArgs = null;
}
+ //update position of call buttons panel
+ Label* pKeysBgLbl = static_cast<Label*>(GetControl(IDC_KEY_BG_LABEL, true));
+ __pCallButtonsPanel->SetBounds(pKeysBgLbl->GetBounds());
+
CallApp* pCallApp = static_cast<CallApp*>(CallApp::GetInstance());
pCallApp->SetTopMostWindow(false);
}
__pMoreOptionsList->SetShowState(false);
}
__DtmfString.Clear();
+
+ if(__pDTMFKeypad != null)
+ {
+ __pDTMFKeypad->SetShowState(false);
+ }
+
CallApp* pCallApp = static_cast<CallApp*>(CallApp::GetInstance());
pCallApp->RemoveAppStateChangeListener(*this);
if(__pAddressbook != null)
delete pContact;
pContact = null;
}
+ if(callInfo.IsConferenceCall() == true)
+ {
+ continue;
+ }
if(callInfo.IsOnHold() == false)
{
ShowPersonDetails(contactNumber, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo);
}
}
//show call active time using Timer
- __activeCallStartTime = __pActiveCallInfo->GetCallConnectTime();
+ //__activeCallStartTime = __pActiveCallInfo->GetCallConnectTime();
+ __activeCallStartTime = __pActiveCallInfo->GetDurationTime();
ShowTimerInfo(IDC_CALLER1_TIME_LABEL,false,__activeCallStartTime);
}
else
SetHoldButtonStatus(true);
//current system time
long long currTime = 0;
- SystemTime::GetTicks(currTime);
+ //SystemTime::GetTicks(currTime);
+ CallApp* pPhoneApp = static_cast<CallApp*>(CallApp::GetInstance());
+ currTime = pPhoneApp->GetCallAppTicks();
//Set call duration
TimeSpan diffSpan(abs(startTime - currTime));
}
void
+ActiveCallForm::SetShowStateOnKeypadLandscape(bool showState)
+{
+ switch (__formType)
+ {
+ case FORMTYPE_ACTIVECONFCALL:
+ case FORMTYPE_ACTIVECALL:
+ {
+ SetHoldButtonShowState(showState);
+ }
+ break;
+
+ case FORMTYPE_MULTIPLECALLS:
+ {
+ Label* pLblControl = static_cast<Label*>(GetControl(IDC_CALLER2_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_NUMBER2_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_CALLER2_TIME_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_SWAP_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_BACKGROUND_LABEL2));
+ pLblControl->SetShowState(showState);
+ Button* pButtonControl = static_cast<Button*>(GetControl(IDC_SWAP_BUTTON));
+ pButtonControl->SetShowState(showState);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
ActiveCallForm::SetShowStateOnKeypad(bool showState)
{
Label* pLblControl = static_cast<Label*>(GetControl(IDC_CALLER1_LABEL));