soundappui.cpp

来自「该源码主要是示范了如何使用Symbian OS中的一些音频处理类」· C++ 代码 · 共 110 行

CPP
110
字号
// Copyright (c) 2003, Nokia Mobile Phones. All rights reserved.
#include <eikenv.h>
#include <avkon.hrh>
#include <eikbtgpc.h>
#include <Sound.rsg>

#include "sound.pan"
#include "Sound.hrh"
#include "SoundAppUi.h"
#include "SoundView.h"
#include "toneadapter.h"
#include "playeradapter.h"
#include "recorderadapter.h"

_LIT(KSoundSampleFile, "C:\\System\\Apps\\Sound\\play.wav");

CSoundAppUi::CSoundAppUi() 
    {
	// No implementation required
    }

void CSoundAppUi::ConstructL()
    {
    BaseConstructL(EAknEnableSkin);

    iToneAdapter     = CToneAdapter::NewL(*this);
    iPlayerAdapter   = CPlayerAdapter::NewL(KSoundSampleFile, *this);
    iRecorderAdapter = CRecorderAdapter::NewL(*this);
    iAudioAdapter = iToneAdapter;
    iAppView = CSoundView::NewL(ClientRect(), iAudioAdapter->Identify());

    AddToStackL(iAppView);
    }


CSoundAppUi::~CSoundAppUi()
    {
    iEikonEnv->RemoveFromStack(iAppView);
    delete iAppView;
    iAppView = NULL;

    delete iToneAdapter;
    iToneAdapter =  NULL;
     
    delete iPlayerAdapter;    
    iPlayerAdapter =  NULL;

    delete iRecorderAdapter;    
    iRecorderAdapter = NULL;

    iAudioAdapter = NULL;
    }


void CSoundAppUi::HandleCommandL(TInt aCommand)
    {
    switch (aCommand)
        {
    case ESoundCmdTone:
        SetAdapterL(iToneAdapter);
        break;
    case ESoundCmdPlayer:
        SetAdapterL(iPlayerAdapter);
        break;
    case EESoundCmdRecorder:
        SetAdapterL(iRecorderAdapter);
        break;
	case EEikCmdExit:
    case EAknSoftkeyExit:
        Exit();
        break;
    case ESoundCmdPlay:
        iAudioAdapter->PlayL();
        break;
    case ESoundCmdStop:
        iAudioAdapter->StopL();
        break;
    case ESoundCmdRecord:
        iAudioAdapter->RecordL();
        break;
    default:
        User::Panic(KSound, KSoundPanicUnexpectedCommand);
        break;
        }
    }


void CSoundAppUi::SetAdapterL(MAudioAdapter* aAudioAdapter)
    {
    iAudioAdapter = aAudioAdapter;

    UpdateViewL();
    }

void CSoundAppUi::UpdateViewL()
    {
    iAppView->NotifyStatusL(iAudioAdapter->Identify());
    
    iAppView->DrawNow();
    }


void CSoundAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
    {
    if (aResourceId == R_SOUND_MENU)
        {
        iAudioAdapter->UpdateMenuL(aMenuPane);
        }
    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?