📄 ansphoneappui.cpp
字号:
/**
*
* @brief Definition of CAnsPhoneAppUi
*
* Copyright (c) EMCC Software Ltd 2003
* @version 1.0
*/
#include "AnsPhoneAppUi.h"
#include <uikon.hrh> // EEikCmdExit
#include <eikmenup.h>
#include <eikbtgpc.h>
#include <AnsPhone.rsg>
#include "AnsPhone.hrh" // menu commands
#include "AnsPhoneView.h" // CAnsPhoneAppView
#include "AnsPhoneApplication.h" // app uid
CAnsPhoneAppUi::~CAnsPhoneAppUi()
{
if (iView)
{
RemoveFromStack(iView);
delete iView;
}
}
void CAnsPhoneAppUi::ConstructL()
{
BaseConstructL();
iView = CAnsPhoneView::NewL(ClientRect());
iView->SetMopParent(this);
AddToStackL(iView);
Cba()->MakeVisible(ETrue);
}
/////////////////////////////////////
// command functions
//
/////////////////////////////////////
void CAnsPhoneAppUi::HandleCommandL(TInt aCommand)
{
switch(aCommand)
{
case EAknSoftkeyExit:
case EAknSoftkeyBack:
Exit();
break;
case EAnsPhoneMenuAnsweringStart:
iView->AnsweringStartL();
break;
case EAnsPhoneMenuAnsweringStop:
iView->AnsweringStopL();
break;
case EAnsPhoneMenuMessagesView:
iView->ShowMessagesL();
break;
case EAnsPhoneMenuPlayMessage:
iView->PlayMessageL();
break;
case EAnsPhoneMenuRecordMessage:
iView->RecordMessageL();
break;
case EAnsPhoneMenuStop:
iView->Stop();
break;
case EAnsPhoneMenuMessagesPlay:
iView->PlayMessageL();
break;
case EAnsPhoneMenuMessagesDial:
iView->DialL();
break;
case EAnsPhoneMenuMessagesDelete:
iView->DeleteMessageL();
break;
case EAnsPhoneMenuMessagesBack:
iView->BackL();
break;
default:
break;
}
}
void CAnsPhoneAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
// updates the menu according to the state of the engine and if the view is showing the messages
{
if(aResourceId != R_ANSPHONE_MENU)
return;
switch(iView->State())
{
case CAnsPhoneView::EStopped:
aMenuPane->SetItemDimmed(EAnsPhoneMenuAnsweringStart, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuAnsweringStop, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesView, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuPlayMessage, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuRecordMessage, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuStop, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesPlay, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesDial, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesDelete, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesBack, ETrue);
break;
case CAnsPhoneView::ERunning:
aMenuPane->SetItemDimmed(EAnsPhoneMenuAnsweringStart, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuAnsweringStop, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesView, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuPlayMessage, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuRecordMessage, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuStop, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesPlay, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesDial, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesDelete, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesBack, ETrue);
break;
case CAnsPhoneView::EAnswering:
aMenuPane->SetItemDimmed(EAnsPhoneMenuAnsweringStart, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuAnsweringStop, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesView, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuPlayMessage, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuRecordMessage, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuStop, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesPlay, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesDial, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesDelete, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesBack, ETrue);
break;
case CAnsPhoneView::EMessages:
{
aMenuPane->SetItemDimmed(EAnsPhoneMenuAnsweringStart, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuAnsweringStop, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesView, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuPlayMessage, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuRecordMessage, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuStop, ETrue);
// Determines if there is any messages and displays the correct
// menu options
TBool messageOptions = iView->MessageItemsCount() > 0 ? EFalse : ETrue;
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesPlay, messageOptions);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesDial, messageOptions);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesDelete, messageOptions);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesBack, EFalse);
break;
}
case CAnsPhoneView::ECanStop:
aMenuPane->SetItemDimmed(EAnsPhoneMenuAnsweringStart, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuAnsweringStop, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesView, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuPlayMessage, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuRecordMessage, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuStop, EFalse);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesPlay, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesDial, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesDelete, ETrue);
aMenuPane->SetItemDimmed(EAnsPhoneMenuMessagesBack, ETrue);
break;
}
}
void CAnsPhoneAppUi::BringAppToFront()
// this is needed because when a call comes in, the Phone's telephone application, as the priority client,
// takes hold of the call and switches out of this application.
// therefore, this function switches back to this application
{
TApaTaskList taskList(iCoeEnv->WsSession());
TApaTask currentTask = taskList.FindByPos(0);
TApaTask ourAppTask = taskList.FindApp(KUidAnsPhone);
if(currentTask.ThreadId() != ourAppTask.ThreadId())
ourAppTask.BringToForeground();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -