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

📄 vrexlistview.cpp

📁 symbian s60 有关音频的代码实例,供参考
💻 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 + -