⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ansphoneappui.cpp

📁 series60 应用程序开发的源代码 series60 应用程序开发的源代码
💻 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 + -