📄 vrexappui.cpp
字号:
/*
* ============================================================================
* Name : CVRexAppUi from VRexAppUi.cpp
* Part of : Video Recording Example (VRex)
* Created : 16.03.2004 by Nokia Forum
* Implementation notes:
* Initial content was generated by Series 60 AppWizard.
* Version :
* Copyright: Nokia Corporation
* ============================================================================
*/
// INCLUDE FILES
#include "VRexAppUi.h"
#include "VRexView.h"
#include <VRex.rsg>
#include "VRex.hrh"
#include "VRexEngine.h"
#include "VideoNaviDecoratorTime.h"
#include "VideoFileDetailsDialog.h"
#include "VideoViewFinder.h"
#include "Filelist.hrh" // directory enumerations
#include <avkon.hrh>
#include <documenthandler.h>
#include <apmstd.h>
#include <aknnavi.h>
#include <aknnavide.h>
#include <stringloader.h>
#include <eikmenup.h>
_LIT( KVRexLoading, "Loading ..." );
/*
-----------------------------------------------------------------------------
void CVRexAppUi::ConstructL()
Description: Two-phased constructor.
Comments :
Return values: N/A
-----------------------------------------------------------------------------
*/
void CVRexAppUi::ConstructL()
{
BaseConstructL();
iView = new (ELeave) CVRexView;
iView->SetMopParent(this);
iView->ConstructL(ClientRect());
AddToStackL(iView);
// Construct the application engine
iEngine = CVRexEngine::NewL(iView);
// Show tabs for main views from resources
CEikStatusPane* sp = StatusPane();
iNaviPane = (CAknNavigationControlContainer *)sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi));
iTimeNavi = CreateTimeNaviL();
iNaviPane->PushL(*iTimeNavi);
// Read time format strings from AVKON resource;
iMinSecFormatString =
iEikonEnv->AllocReadResourceL(R_QTN_TIME_DURAT_MIN_SEC);
iHourMinSecFormatString =
iEikonEnv->AllocReadResourceL(R_QTN_TIME_DURAT_LONG);
}
/*
-----------------------------------------------------------------------------
CVRexAppUi::~CVRexAppUi()
Description: Destructor.
Comments :
Return values: N/A
-----------------------------------------------------------------------------
*/
CVRexAppUi::~CVRexAppUi()
{
if (iView)
{
RemoveFromStack(iView);
delete iView;
iView = NULL;
}
delete iEngine;
iEngine = NULL;
delete iTimeNavi;
iTimeNavi = NULL;
delete iMinSecFormatString;
iMinSecFormatString = NULL;
delete iHourMinSecFormatString;
iHourMinSecFormatString = NULL;
}
/*
-----------------------------------------------------------------------------
void CVRexAppUi::DynInitMenuPaneL()
Description: This function is called by the EIKON framework just before
it displays a menu pane.
Comments :
Return values: N/A
-----------------------------------------------------------------------------
*/
void CVRexAppUi::DynInitMenuPaneL(
TInt aResourceId,CEikMenuPane* aMenuPane)
{
if(aResourceId == R_VREX_MENU)
{
// Check if preview mode is active
if (iView->Finder()->State() == CVideoViewFinder::EFinderActive)
{
aMenuPane->SetItemDimmed(EVRexCmdAppStartPreview, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppPlay, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppDocFileInfo, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppDocPlay, ETrue);
}
else
{
aMenuPane->SetItemDimmed(EVRexCmdAppStopPreview, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppRecord, ETrue);
}
if((iEngine->iVPlayer->State() != CVideoPlayerAdapter::EPlaying) &&
(iEngine->iVPlayer->State() != CVideoPlayerAdapter::EPaused) &&
(iEngine->iVRecorder->State() != CVideoRecorderAdapter::ERecording))
{
aMenuPane->SetItemDimmed(EVRexCmdAppStop, ETrue);
}
// Check if the video is being recorded
if(iEngine->iVRecorder->State() == CVideoRecorderAdapter::ERecording)
{
aMenuPane->SetItemDimmed(EVRexCmdAppStopPreview, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppRecord, ETrue);
}
// Check if the video is being played
if(iEngine->iVPlayer->State() != CVideoPlayerAdapter::EPlaying)
{
aMenuPane->SetItemDimmed(EVRexCmdAppPause, ETrue);
}
else
{
aMenuPane->SetItemDimmed(EVRexCmdAppStartPreview, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppStopPreview, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppRecord, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppDocFileInfo, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppDocPlay, ETrue);
}
// Check if not paused, dim the resume
if(iEngine->iVPlayer->State() != CVideoPlayerAdapter::EPaused)
{
aMenuPane->SetItemDimmed(EVRexCmdAppContinue, ETrue);
}
else
{
aMenuPane->SetItemDimmed(EVRexCmdAppStartPreview, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppDocFileInfo, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppDocPlay, ETrue);
}
// If there is no item in the list box, hide the play, docplay
// and file info menu items
if(!iView->GetNumOfItemsInListBox())
{
aMenuPane->SetItemDimmed(EVRexCmdAppDocFileInfo, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppDocPlay, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppPlay, ETrue);
}
}
}
/*
-----------------------------------------------------------------------------
TKeyResponse CVRexAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
Description: This method handles key events.
Comments :
Return values: EKeyWasNotConsumed
-----------------------------------------------------------------------------
*/
TKeyResponse CVRexAppUi::HandleKeyEventL(
const TKeyEvent& /*aKeyEvent*/,TEventCode /*aType*/)
{
return EKeyWasNotConsumed;
}
/*
-----------------------------------------------------------------------------
TKeyResponse CVRexAppUi::HandleCommandL(TInt aCommand)
Description: This method handles menu command events.
Comments :
Return values: N/A
-----------------------------------------------------------------------------
*/
void CVRexAppUi::HandleCommandL(TInt aCommand)
{
switch(aCommand)
{
case EAknSoftkeyExit:
case EAknSoftkeyBack:
case EEikCmdExit:
{
Exit();
break;
}
// Start Preview command is selected
case EVRexCmdAppStartPreview:
{
iView->StartFinderL();
break;
}
// Stop Preview command is selected
case EVRexCmdAppStopPreview:
{
iView->StopFinder();
break;
}
// Record command is selected
case EVRexCmdAppRecord:
{
DoRecordL();
break;
}
// Play command is selected
case EVRexCmdAppPlay:
{
DoPlayL();
break;
}
// Stop command is selected
case EVRexCmdAppStop:
{
DoStopL();
break;
}
// Pause command is selected
case EVRexCmdAppPause:
{
DoPauseL();
break;
}
// DocPlay command is selected
case EVRexCmdAppDocPlay:
{
DoDocPlayL();
break;
}
// File info command is selected
case EVRexCmdAppDocFileInfo:
{
DoGetFileInfoL();
break;
}
// Continue command is selected
case EVRexCmdAppContinue:
{
DoResumeL();
break;
}
// Return command is selected
case EVRexCmdAppReturn:
{
DoStopL();
break;
}
default:
break;
}
}
/*
-----------------------------------------------------------------------------
void CVRexAppUi::DoPlayL()
Description: This method starts playing a video clip.
Comments :
Return values: N/A
-----------------------------------------------------------------------------
*/
void CVRexAppUi::DoPlayL()
{
// Set the file name first
TFileName fileName;
iView->GetCurrentVideoFileNameL(fileName);
PlayVideoFileL(fileName);
}
/*
-----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -