📄 vrexlistview.cpp
字号:
/*
* ============================================================================
* Name : CVRexListView from VRexListView.cpp
* Part of : Video Example
* Created : 30/08/2006 by Forum Nokia
* Implementation notes:
* Version : 2.0
* Copyright: Nokia Corporation, 2006
* ============================================================================
*/
// INCLUDE FILES
#include <aknviewappui.h>
#include <avkon.hrh>
#include <eikmenup.h> // CEikMenuPane
#include "VRexListView.h"
#include "VRexVideoView.h"
#include "VRexListContainer.h"
#include "VRexDocument.h"
#include "VRexFileDetailsDialog.h"
#include <VRex.rsg>
#include <aknnotewrappers.h>
#ifdef __SERIES60_3X__
#include <FeatDiscovery.h>
#include <FeatureInfo.h>
#endif
// ================= MEMBER FUNCTIONS =======================
// ===========================================================
CVRexListView::CVRexListView()
: iEngine(static_cast<CVRexDocument*>(AppUi()->Document())->Engine())
{
}
// ---------------------------------------------------------
// CVRexListView::ConstructL(const TRect& aRect)
// EPOC two-phased constructor
// ---------------------------------------------------------
//
void CVRexListView::ConstructL()
{
BaseConstructL( R_VIEW1 );
}
// ---------------------------------------------------------
// CVRexListView::~CVRexView()
// destructor
// ---------------------------------------------------------
//
CVRexListView::~CVRexListView()
{
if ( iContainer )
{
AppUi()->RemoveFromViewStack( *this, iContainer );
}
delete iContainer;
}
// ---------------------------------------------------------
// TUid CVRexListView::Id()
//
// ---------------------------------------------------------
//
TUid CVRexListView::Id() const
{
return KViewId;
}
// ---------------------------------------------------------
// CVRexListView::HandleCommandL(TInt aCommand)
// takes care of view command handling
// ---------------------------------------------------------
//
void CVRexListView::HandleCommandL(TInt aCommand)
{
switch ( aCommand )
{
case EAknSoftkeyExit:
{
AppUi()->HandleCommandL(EEikCmdExit);
break;
}
case EVRexCmdAppStartPreview:
{
//In 3rd edition:
//Use Feature Discovery API to see if there's camera
//or video recorder:
TBool isSupported = ETrue;
#ifdef __SERIES60_3X__
if (!CFeatureDiscovery::IsFeatureSupportedL(KFeatureIdCamera)
&& !CFeatureDiscovery::IsFeatureSupportedL(KFeatureIdVideoRecorder) )
{
isSupported = EFalse;
}
#endif
if (isSupported)
{
iEngine->SetEngineState(CVRexEngine::EPreview);
AppUi()->ActivateLocalViewL(KView2Id);
}
else
{
//This only occurs in 3rd edition if there's
//no camera reported by Feature Discovery API.
//Note that Feature Discovery API is available
//already in 2nd edition FP3.
//User::Leave(KErrNotSupported);
CAknInformationNote* informationNote;
informationNote = new ( ELeave ) CAknInformationNote;
informationNote->ExecuteLD( KNoCameraErrorMessage );
}
break;
}
case EVRexCmdAppPlay:
{
DoPlayL();
break;
}
case EVRexCmdAppDocPlay:
{
DoDocPlayL();
break;
}
case EVRexCmdAppDocFileInfo:
{
DoGetFileInfoL();
break;
}
default:
{
AppUi()->HandleCommandL( aCommand );
break;
}
}
}
// ---------------------------------------------------------
// CVRexListView::HandleClientRectChange()
// ---------------------------------------------------------
//
void CVRexListView::HandleClientRectChange()
{
if ( iContainer )
{
iContainer->SetRect( ClientRect() );
}
}
// ---------------------------------------------------------
// CVRexListView::DoActivateL(...)
//
// ---------------------------------------------------------
//
void CVRexListView::DoActivateL(
const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
const TDesC8& /*aCustomMessage*/)
{
iEngine->SetEngineState(CVRexEngine::EInit);
if (!iContainer)
{
iContainer = new (ELeave) CVRexListContainer;
iContainer->SetMopParent(this);
iContainer->ConstructL( ClientRect(), this, iEngine);
AppUi()->AddToStackL( *this, iContainer );
}
}
// ---------------------------------------------------------
// CVRexListView::DoDeactivate()
//
// ---------------------------------------------------------
//
void CVRexListView::DoDeactivate()
{
if ( iContainer )
{
AppUi()->RemoveFromViewStack( *this, iContainer );
}
delete iContainer;
iContainer = NULL;
}
// ---------------------------------------------------------
// CVRexListView::DoGetFileInfoL()
//
// ---------------------------------------------------------
//
void CVRexListView::DoGetFileInfoL()
{
TFileName fileName;
iContainer->GetCurrentVideoFileNameL( fileName );
CVideoFileDetailsDialog* dlg = CVideoFileDetailsDialog::NewL();
dlg->ExecuteLD( fileName);
}
/*
-----------------------------------------------------------------------------
void CVRexListView::DynInitMenuPaneL()
Description: This function is called by the EIKON framework just before
it displays a menu pane.
Comments :
Return values: N/A
-----------------------------------------------------------------------------
*/
void CVRexListView::DynInitMenuPaneL(
TInt aResourceId,CEikMenuPane* aMenuPane)
{
if(aResourceId == R_VREX_VIEW1_MENU)
{
//Check if the file list have items
if( !iContainer->GetNumOfItemsInListBox() )
{
aMenuPane->SetItemDimmed(EVRexCmdAppStartPreview, EFalse);
aMenuPane->SetItemDimmed(EVRexCmdAppPlay, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppDocPlay, ETrue);
aMenuPane->SetItemDimmed(EVRexCmdAppDocFileInfo, ETrue);
}
else
{
aMenuPane->SetItemDimmed(EVRexCmdAppStartPreview, EFalse);
aMenuPane->SetItemDimmed(EVRexCmdAppPlay, EFalse);
aMenuPane->SetItemDimmed(EVRexCmdAppDocPlay, EFalse);
aMenuPane->SetItemDimmed(EVRexCmdAppDocFileInfo, EFalse);
}
}
}
/*
-----------------------------------------------------------------------------
void CVRexListView::DoPlayL()
Description: This method starts playing a video clip.
Comments :
Return values: N/A
-----------------------------------------------------------------------------
*/
void CVRexListView::DoPlayL()
{
// Set the file name first
TFileName fileName;
iContainer->GetCurrentVideoFileNameL(fileName);
iEngine->SetEngineState(CVRexEngine::EPlay);
AppUi()->ActivateLocalViewL(KView2Id);
}
/*
-----------------------------------------------------------------------------
void CVRexListView::DoDocPlayL()
Description: This method launches external viewer to play back video.
Comments :
Return values: N/A
-----------------------------------------------------------------------------
*/
void CVRexListView::DoDocPlayL()
{
TDataType data = TDataType(KNullUid);
// Set the file name first
TFileName fileName;
iContainer->GetCurrentVideoFileNameL( fileName );
iEngine->iVPlayer->DocumentHandlerL().OpenFileEmbeddedL(fileName, data);
}
/*
-----------------------------------------------------------------------------
void CVRexListView::HandleStatusPaneSizeChange()
Description: Called by framework when resource is changed.
Comments :
Return values: N/A
-----------------------------------------------------------------------------
*/
void CVRexListView::HandleStatusPaneSizeChange()
{
CAknView::HandleStatusPaneSizeChange(); //call to upper class
if (iContainer)
iContainer->SetRect(ClientRect());
}
// End of file
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -