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

📄 vrexappui.cpp

📁 nokia S60_video_operation
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*
* ============================================================================
*  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 + -