亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vrexfiledetailsdialog.cpp

?? S60 實現了錄制和播放的功能
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*
* ============================================================================
*  Name     : CVideoFileDetailsDialog from VRexFileDetailsDialog.cpp
*  Part of  : Video Example
*  Created  : 30/08/2006 by Forum  Nokia
*  Implementation notes:
*  Version  : 2.0
*  Copyright: Nokia Corporation, 2006
* ============================================================================
*/

// INCLUDE FILES
#include <aknlists.h>
#include <bautils.h>
#include <stringloader.h>
#include <e32base.h>
#include <utf.h>

#include "VRexPlayerAdapter.h"
#include "VRexFileDetailsDialog.h"
#include "MPlayerUIControllerListener.h"
#include <vrex.rsg>

const TInt KFileSizeOneKilobyte = 1024;
const TInt KMaxDurLength = 16;
const TInt KMaxDateTimeLength = 32;
const TInt KWinSize = 50;

// For meta data
_LIT(KMPTitle,"Title");
_LIT(KMPCopyright,"Copyright");
_LIT(KEmpty, "");
/*
-----------------------------------------------------------------------------

	CVideoFileDetailsDialog::CVideoFileDetailsDialog()

	Description: C++ default constructor can NOT contain any code that might 
    leave.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/

CVideoFileDetailsDialog::CVideoFileDetailsDialog() : iResult(KErrNone)
    {
    }

/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::ConstructL()

	Description: Symbian 2nd phase constructor can leave.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
void CVideoFileDetailsDialog::ConstructL()
    {
    iListBox = new (ELeave) CAknDoublePopupMenuStyleListBox();
    }

/*
-----------------------------------------------------------------------------

	CVideoFileDetailsDialog* CVideoFileDetailsDialog::NewL()

	Description: Two-phased constructor.
	Comments   :

    Return values: CVideoFileDetailsDialog object pointer

-----------------------------------------------------------------------------
*/
CVideoFileDetailsDialog* CVideoFileDetailsDialog::NewL()
    {
    CVideoFileDetailsDialog* self = new( ELeave ) CVideoFileDetailsDialog();
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }

/*
-----------------------------------------------------------------------------

	CVideoFileDetailsDialog::~CVideoFileDetailsDialog()

	Description: Destructor
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
CVideoFileDetailsDialog::~CVideoFileDetailsDialog()
    {
    if (iListBox)
        {
        delete iListBox;
        iListBox = NULL;
        }
    }

/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::ExecuteLD(const TDesC& aFileName)

	Description: This method launches the file details dialog.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
void CVideoFileDetailsDialog::ExecuteLD(const TDesC& aFileName)
    {
    CVideoFileDetails* fileDetails = new (ELeave) CVideoFileDetails();
    CleanupStack::PushL(fileDetails);

    CleanupStack::PushL(this);

     // File name
    TParse parse;
	parse.Set(aFileName,NULL,NULL);
    fileDetails->iFileName = parse.Name().AllocL();

    CPDummyController* dummy = CPDummyController::NewLC();
    TRect tmp;
    CVideoPlayerUtility* videoPlayer = 
        CVideoPlayerUtility::NewL(*this,EMdaPriorityNormal,
    	EMdaPriorityPreferenceNone,dummy->GetClientWsSession(),
        dummy->GetScreenDevice(),
    	dummy->GetClientWindow(),tmp,tmp);
    CleanupStack::PushL(videoPlayer);

	// Open
    videoPlayer->OpenFileL(aFileName);
    // Wait open to complete
    if( iWait.IsStarted() )
    	{
    	User::LeaveIfError(iResult);
    	}
    iWait.Start();
    // Prepare
    videoPlayer->Prepare();
    // Wait prepare to complete
    if( iWait.IsStarted() )
    	{
    	User::LeaveIfError(iResult);
    	}
    iWait.Start();
    // Get video file details
    // Duration
    fileDetails->iDurationInSeconds = 
        videoPlayer->DurationL().Int64() / KMPOneSecond;
    // Resolution
    TSize size;
    videoPlayer->VideoFrameSizeL(size);
    fileDetails->iResolutionHeight = size.iHeight;
    fileDetails->iResolutionWidth = size.iWidth;
    // Bitrate
    fileDetails->iBitrate = videoPlayer->VideoBitRateL();
    // Format
    TBuf<KMaxDataTypeLength> format;
    CnvUtfConverter::ConvertToUnicodeFromUtf8(format,
        videoPlayer->VideoFormatMimeType());
    if (format.CompareF(KEmpty))
		{
        fileDetails->iFormat = format.AllocL();
        }

	// Copyright & title
    TInt metaCount = videoPlayer->NumberOfMetaDataEntriesL();
    CMMFMetaDataEntry* metaData;
    for (TInt i = 0; i < metaCount; i++)
		{
        metaData = videoPlayer->MetaDataEntryL(i);
        if (!metaData->Name().CompareF(KMPCopyright))
			{
            fileDetails->iCopyright = metaData->Value().AllocL();
             }
        if (!metaData->Name().CompareF(KMPTitle))
             {
             fileDetails->iTitle = metaData->Value().AllocL();
             }
             delete metaData;
         }
    CleanupStack::PopAndDestroy(videoPlayer);
    CleanupStack::PopAndDestroy(dummy);

    CleanupStack::Pop(this); //this
    // Show file details in differend ExecuteLD
    ExecuteLD(fileDetails);
    CleanupStack::PopAndDestroy(fileDetails); // fileDetails
    }

/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::ExecuteLD(CVideoFileDetails* aFileDetails)

	Description: This method launches the dialog.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
void CVideoFileDetailsDialog::ExecuteLD(CVideoFileDetails* aFileDetails)
    {
    CleanupStack::PushL(this);

    CAknPopupList* popupList = 
        CAknPopupList::NewL(iListBox,R_AVKON_SOFTKEYS_OK_EMPTY,
            AknPopupLayouts::EMenuDoubleWindow);
    CleanupStack::PushL(popupList);

    iListBox->ConstructL(popupList, EAknListBoxViewerFlags);
    iListBox->CreateScrollBarFrameL(ETrue);
    iListBox->ScrollBarFrame()->
        SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,
            CEikScrollBarFrame::EAuto);

    SetTitleL(popupList);
    FillListBoxL(aFileDetails);

    CleanupStack::Pop(popupList); //popupList
    popupList->ExecuteLD();
    CleanupStack::PopAndDestroy(this); //this
    }

/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::SetTitleL(CAknPopupList* aPopupList)

	Description: This method sets the title for the popup list.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
void CVideoFileDetailsDialog::SetTitleL(CAknPopupList* aPopupList)
    {
    HBufC* title = StringLoader::LoadLC(R_VREX_FILE_DETAILS);
    aPopupList->SetTitleL(*title);
    CleanupStack::PopAndDestroy(title); //title
    }

/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::FillListBoxL(CVideoFileDetails* aFileDetails)

	Description: This method fills the listbox.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
void CVideoFileDetailsDialog::FillListBoxL(CVideoFileDetails* aFileDetails)
    {
    CDesCArray* itemArray = 
        static_cast<CDesCArray*>(iListBox->Model()->ItemTextArray());

    MakeTitleItemL(itemArray,aFileDetails);
    MakeUrlItemL(itemArray,aFileDetails);
    MakeFormatItemL(itemArray,aFileDetails);
    MakeResolutionItemL(itemArray,aFileDetails);
    MakeDurationItemL(itemArray,aFileDetails);
    MakeBitrateItemL(itemArray,aFileDetails);
    MakeSizeItemL(itemArray,aFileDetails);
    MakeDateItemL(itemArray,aFileDetails);
    MakeTimeItemL(itemArray,aFileDetails);
    MakeCopyrightItemL(itemArray,aFileDetails);

    iListBox->HandleItemAdditionL();
    iListBox->SetCurrentItemIndex(0);
    }

/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::AddItemToListBoxL(const TDesC& aHeading,
			    const TDesC& aValue, CDesCArray* aItemArray)

	Description: This method adds item to the list box.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
void CVideoFileDetailsDialog::AddItemToListBoxL(const TDesC& aHeading,
								const TDesC& aValue, CDesCArray* aItemArray)
    {
    CDesCArrayFlat* items = new (ELeave) CDesCArrayFlat(2);
    CleanupStack::PushL(items);
    items->AppendL(aHeading); // First string (heading)
    items->AppendL(aValue);   // Second string (value)
    HBufC* headingAndValue = 
        StringLoader::LoadLC( R_VREX_FILE_DETAILS_ROW_FORMAT, *items);
    aItemArray->AppendL(*headingAndValue);
    CleanupStack::PopAndDestroy(headingAndValue); // items & headingAndValue
    CleanupStack::PopAndDestroy(items);
    }

/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::MakeTitleItemL(CDesCArray* aItemArray,
                                           CVideoFileDetails* aFileDetails)

	Description: This method makes the title item.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
void CVideoFileDetailsDialog::MakeTitleItemL(CDesCArray* aItemArray,
                                           CVideoFileDetails* aFileDetails)
    {
    if (aFileDetails->iTitle)
        {
        HBufC* heading = StringLoader::LoadLC(R_VREX_FILE_TITLE_HEADING);
        AddItemToListBoxL(*heading,*aFileDetails->iTitle,aItemArray);
        CleanupStack::PopAndDestroy(heading); // heading
        return;
        }

    if (aFileDetails->iFileName)
        {
        HBufC* heading = StringLoader::LoadLC(R_VREX_FILE_NAME_HEADING);
        AddItemToListBoxL(*heading,*aFileDetails->iFileName,aItemArray);
        CleanupStack::PopAndDestroy(heading); // heading
        }
    }

/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::MakeUrlItemL(CDesCArray* aItemArray,
                                           CVideoFileDetails* aFileDetails)

	Description: This method makes url item.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
void CVideoFileDetailsDialog::MakeUrlItemL(CDesCArray* aItemArray,
                                           CVideoFileDetails* aFileDetails)
    {
    if (aFileDetails->iUrl)
        {
        HBufC* heading = StringLoader::LoadLC(R_VREX_FILE_URL_HEADING);
        AddItemToListBoxL(*heading,*aFileDetails->iUrl,aItemArray);
        CleanupStack::PopAndDestroy(heading); // heading
        }
    }
/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::MakeFormatItemL(CDesCArray* aItemArray,
                                           CVideoFileDetails* aFileDetails)

	Description: This method makes video file heading.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
void CVideoFileDetailsDialog::MakeFormatItemL(CDesCArray* aItemArray,
                                           CVideoFileDetails* aFileDetails)
    {
    if (aFileDetails->iFormat)
        {
        HBufC* heading = StringLoader::LoadLC(R_VREX_FILE_FORMAT_HEADING);
        AddItemToListBoxL(*heading,*aFileDetails->iFormat,aItemArray);
        CleanupStack::PopAndDestroy(heading); // heading
        }
    }

/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::MakeResolutionItemL(CDesCArray* aItemArray,
                                               CVideoFileDetails* aFileDetails)

	Description: This method makes resolution item.
	Comments   :

    Return values: N/A

-----------------------------------------------------------------------------
*/
void CVideoFileDetailsDialog::MakeResolutionItemL(CDesCArray* aItemArray,
                                               CVideoFileDetails* aFileDetails)
    {
    if (aFileDetails->iResolutionWidth && aFileDetails->iResolutionHeight)
        {
        HBufC* heading = StringLoader::LoadLC(R_VREX_FILE_RESOLUTION_HEADING);
        CArrayFix<TInt>* items = new (ELeave) CArrayFixFlat<TInt>(2);
        CleanupStack::PushL(items);
        items->AppendL(aFileDetails->iResolutionWidth);
        items->AppendL(aFileDetails->iResolutionHeight);
        HBufC* value = StringLoader::LoadLC(R_VREX_FILE_RESOLUTION,*items);
        AddItemToListBoxL(*heading,*value,aItemArray);
        CleanupStack::PopAndDestroy(value); // heading, items, value
        CleanupStack::PopAndDestroy(items);
        CleanupStack::PopAndDestroy(heading);
        }
    }

/*
-----------------------------------------------------------------------------

	void CVideoFileDetailsDialog::MakeDurationItemL(CDesCArray* aItemArray,
                                             CVideoFileDetails* aFileDetails)

	Description: This method makes duration item.
	Comments   :

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
图片区小说区区亚洲影院| 亚洲成人激情综合网| 国产99久久久国产精品潘金| 久久久三级国产网站| 国产精一区二区三区| 国产视频一区二区三区在线观看| 成人精品鲁一区一区二区| 亚洲免费毛片网站| 欧美大片日本大片免费观看| 夜夜精品视频一区二区| 26uuu亚洲综合色欧美 | 欧美一卡在线观看| 成人午夜激情视频| 日韩电影在线免费看| 久久综合久久久久88| 99国产精品久久久久久久久久久 | 91精品国产aⅴ一区二区| 不卡的av在线| 国产乱人伦偷精品视频不卡| 亚洲精品乱码久久久久久| 国产精品久线在线观看| 精品国产亚洲在线| 欧美成人官网二区| 在线观看网站黄不卡| 高清不卡一二三区| 国产a精品视频| 高清不卡在线观看av| 国产成人精品亚洲午夜麻豆| 久久国产精品99久久久久久老狼 | 精品日韩欧美一区二区| 7777精品伊人久久久大香线蕉超级流畅 | 国产成人免费av在线| 国产精品资源在线| 福利电影一区二区| www.亚洲在线| 欧美综合欧美视频| 欧美一区二区人人喊爽| 精品久久人人做人人爰| 国产日产亚洲精品系列| 国产视频在线观看一区二区三区| 久久综合精品国产一区二区三区| 欧美videos中文字幕| 亚洲国产成人自拍| 一区二区三区在线视频播放| 午夜视频一区二区三区| 裸体一区二区三区| 成人av资源在线| 538在线一区二区精品国产| 精品少妇一区二区三区日产乱码| 精品嫩草影院久久| 亚洲福利一区二区| 成人av影视在线观看| 91精品国产综合久久精品性色| 久久精品综合网| 日韩精品欧美精品| 99re66热这里只有精品3直播 | 婷婷综合另类小说色区| 国产成人精品aa毛片| 欧美精品日日鲁夜夜添| 欧美国产成人精品| 日本不卡一区二区| 欧美视频一区二区三区四区| 亚洲女厕所小便bbb| av高清不卡在线| 国产精品午夜免费| 极品少妇一区二区三区精品视频 | 亚洲黄色免费电影| av在线播放成人| 中文字幕av在线一区二区三区| 久久99精品国产麻豆婷婷| 91精品国产乱码久久蜜臀| 亚洲国产日韩a在线播放性色| 91性感美女视频| 成人免费小视频| 色综合天天在线| 亚洲三级免费观看| 欧美图区在线视频| 免费观看在线综合| 久久精品视频网| 成人午夜碰碰视频| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产成人一区在线| 亚洲精品一二三四区| 欧美日韩一区二区三区不卡| 激情图片小说一区| 一区二区三区四区国产精品| 色综合久久天天综合网| 日韩影院精彩在线| 国产欧美一区二区在线| 在线视频欧美精品| 东方欧美亚洲色图在线| 一区二区国产视频| 久久久久久亚洲综合| 欧美在线free| 欧美日韩一级二级三级| 国产剧情av麻豆香蕉精品| 亚洲自拍偷拍综合| 亚洲国产精品成人综合| 日韩美女视频一区二区在线观看| 成人一级视频在线观看| 久久机这里只有精品| 日日骚欧美日韩| 亚洲一二三四在线| 亚洲欧洲精品一区二区三区不卡| 日韩久久免费av| 精品国产一区二区三区不卡 | 色欧美片视频在线观看| 成人av在线看| 国产91精品欧美| 国产91综合网| 91麻豆国产福利在线观看| 国产成人在线网站| 国产精品一区二区三区网站| 激情综合色综合久久| 精品午夜一区二区三区在线观看| 精品一区二区日韩| 国产一区二区三区在线看麻豆| 秋霞影院一区二区| 国产在线精品不卡| 国产精品白丝jk黑袜喷水| 国产精品一区一区| 99久久精品国产观看| 成人午夜电影久久影院| 欧洲国内综合视频| 日韩一区二区在线看| 久久久精品人体av艺术| 国产精品免费观看视频| 中文字幕亚洲精品在线观看 | 久久蜜臀中文字幕| 一区二区三区高清在线| 午夜在线成人av| 大美女一区二区三区| 欧美日韩黄色影视| 日本一区二区三区电影| 亚洲一区二区欧美| 国产成人av一区二区| 制服丝袜亚洲精品中文字幕| 精品成a人在线观看| 亚洲精品乱码久久久久久黑人 | 国产一区二区导航在线播放| 91免费国产在线观看| 精品av久久707| 亚洲永久精品大片| 成人av网站在线观看免费| 日韩一区二区三区视频| 天天色图综合网| 91片在线免费观看| 中文字幕一区二区三区不卡| 成人午夜短视频| 亚洲精品一区二区三区蜜桃下载| 自拍av一区二区三区| av电影一区二区| 日韩高清一区二区| 日韩一二三四区| 亚洲成a人片综合在线| 欧美体内she精高潮| 亚洲一二三区在线观看| 欧美日韩国产一二三| 丝瓜av网站精品一区二区 | 欧美高清视频www夜色资源网| 亚洲国产精品一区二区尤物区| 在线免费精品视频| 一区二区视频免费在线观看| 色综合一区二区| 视频一区二区国产| 精品国产乱码久久久久久图片| 国产又粗又猛又爽又黄91精品| 久久综合九色综合97婷婷| 国产精品69久久久久水密桃| 国产精品久久久久久久久晋中 | 香蕉成人啪国产精品视频综合网| 日韩欧美国产综合一区| 高清在线不卡av| 午夜精品视频在线观看| 久久久久国产精品免费免费搜索| 91色在线porny| 国产资源精品在线观看| 亚洲精品国产品国语在线app| 在线综合视频播放| 99视频在线观看一区三区| 日日摸夜夜添夜夜添国产精品| 精品国产髙清在线看国产毛片| 99精品视频一区| 国产二区国产一区在线观看| 免费观看一级特黄欧美大片| 亚洲日本欧美天堂| 国产精品美女久久久久久久| 日韩欧美一级二级| 欧美一区二区国产| 欧美精品久久一区| 欧美日韩免费一区二区三区视频 | 成人性生交大片免费看视频在线| 日本aⅴ免费视频一区二区三区| 亚洲色图19p| 亚洲国产一区二区三区| 一区二区三区在线免费观看| 亚洲日本电影在线| 艳妇臀荡乳欲伦亚洲一区| 亚洲人成人一区二区在线观看| 久久久久久亚洲综合|