diff -r 8bda91a87a00 -r 8ee96d21d9bf profilesservices/MediaFileList/Src/mediafiletest.cpp --- a/profilesservices/MediaFileList/Src/mediafiletest.cpp Thu Aug 19 10:12:30 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2489 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Class create for testing. -* -*/ - - - - -// INCLUDE FILES - -#include "mediafiletest.h" -#include "mediafiledialog.h" -#include "mediafilepreview.h" -#include "mediafilelistdebug.h" - -#include - -#include // for macro iAvkonAppUi -#include // for CEikCaptionedControl -#include // Math::FRand - -#include // bafl.lib -#include // RFileReadStream - - - -#ifdef _DEBUG -/****************************************************************************** - * class CMFDialogTest - ******************************************************************************/ - - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::NewL -// -// ----------------------------------------------------------------------------- -CMFDialogTest* CMFDialogTest::NewL( CMediaFileDialog* aDialog ) - { - CMFDialogTest* self = new (ELeave) CMFDialogTest( aDialog ); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - - return self; - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::CMFDialogTest -// -// ----------------------------------------------------------------------------- -// -CMFDialogTest::CMFDialogTest( CMediaFileDialog* aDialog ) - { - iDlg = aDialog; - - iTestCounter = 0; - iBottomVisited = EFalse; - iDestroyedPtr = NULL; - } - - -// ---------------------------------------------------------------------------- -// Destructor -// -// ---------------------------------------------------------------------------- -// -CMFDialogTest::~CMFDialogTest() - { - SetScreenSaverPeriod( iScreenSaverPeriod ); - - delete iTestCaller; - delete iRandomNum; - - if ( iPopupNote ) - { - iPopupNote->HideInfoPopupNote(); - delete iPopupNote; - } - - if ( iDestroyedPtr ) - { - *iDestroyedPtr = ETrue; - iDestroyedPtr = NULL; - } - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::ConstructL -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::ConstructL() - { - const TInt KLongPeriod = 60*60*24; // 24 h in seconds - - iTestCaller = CMFActiveCaller::NewL( this ); - iRandomNum = CRandomNum::NewL(); - - iScreenSaverPeriod = ScreenSaverPeriodL(); - SetScreenSaverPeriod( KLongPeriod ); - - iPopupNote = CAknInfoPopupNoteController::NewL(); - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::TestL -// -// ----------------------------------------------------------------------------- -// -TBool CMFDialogTest::TestL( TInt /*aAttr*/ ) - { - TInt index = 0; - CDesCArray *arr = new(ELeave) CDesCArrayFlat( 1 ); - CleanupStack::PushL( arr ); - - arr->AppendL(_L("random play")); - arr->AppendL(_L("test 1")); - arr->AppendL(_L("test 2")); - - if ( !TMFDialogUtil::ShowListQueryL( _L("huu"), arr, &index ) ) - { - CleanupStack::PopAndDestroy( arr ); - return EFalse; - } - if ( index == 0 ) - { - NextListItemL(); - } - else if ( index == 1 ) - { - Test1L( 0 ); - } - else if ( index == 2 ) - { - Test2L( 0 ); - } - else - { - } - - CleanupStack::PopAndDestroy( arr ); - return ETrue; - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::Test1L -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::Test1L( TInt /*aAttr*/ ) - { - } - - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::Test2L -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::Test2L( TInt /*aAttr*/ ) - { - TInt num10 = 0; TInt num11 = 0; TInt num12 = 0; - TInt num13 = 0; TInt num14 = 0; TInt num15 = 0; - TInt num16 = 0; TInt num17 = 0; TInt num18 = 0; - TInt num19 = 0; TInt num20 = 0; TInt numOther = 0; - - for (TInt i=0; i<100000; i++) - { - TInt num = iRandomNum->Random( 10, 20 ); - - if ( num == 10 ) - { - num10++; - } - else if ( num == 11 ) - { - num11++; - } - else if ( num == 12 ) - { - num12++; - } - else if ( num == 13 ) - { - num13++; - } - else if ( num == 14 ) - { - num14++; - } - else if ( num == 15 ) - { - num15++; - } - else if ( num == 16 ) - { - num16++; - } - else if ( num == 17 ) - { - num17++; - } - else if ( num == 18 ) - { - num18++; - } - else if ( num == 19 ) - { - num19++; - } - else if ( num == 20 ) - { - num20++; - } - else - { - numOther++; - } - - } - - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::NextFolderL -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::NextFolderL() - { - const TInt KDelay = 2000; - - TBool destroyed = EFalse; - iDestroyedPtr = &destroyed; // updated in this class destructor - - TInt currentFolder = iDlg->iState->CurrentFolder(); - TInt currentIndex = iDlg->CurrentItemListIndex(); - TInt folderId = iDlg->iState->FolderId( currentIndex ); - - if ( currentFolder == EEFolderRoot ) - { - // root folder - iBottomVisited = EFalse; - if ( iRandomNum->Match( 30 ) ) - { - SimulateSearchEventL(); // search - } - else if ( folderId == EEFolderMusic || folderId == EEFolderTones || - folderId == EEFolderRecordings || folderId == EEFolderVideos ) - { - SimulateOpenEventL(); // go down - } - else - { - iTestCaller->Start( ENextListItem, KDelay ); - } - } - else if ( currentIndex == KErrNotFound ) - { - // empty folder - SimulateBackEventL(); // go up - } - else if ( folderId == KErrNotFound ) - { - // this folder has files, not subfolders - iBottomVisited = ETrue; - if ( iRandomNum->Match( 50 ) ) - { - // stay in this folder and select a file - iTestCaller->Start( ENextListItem, KDelay ); - return; - } - else - { - SimulateBackEventL(); // go up - } - } - else // this folder has subfolders - { - TInt num = 15; - if ( !iBottomVisited ) - { - num = 85; - } - - if ( iRandomNum->Match( num ) ) - { - SimulateOpenEventL(); // go down - } - else - { - SimulateBackEventL(); // go up - } - } - - // select listbox item after delay - if ( !destroyed ) - { - iDestroyedPtr = NULL; - iTestCaller->Start( ENextListItem, KDelay ); - } - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::NextListItemL -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::NextListItemL() - { - const TInt KDelay = 250; - const TInt KLongDelay = 2000; - - TInt delay = KDelay; - - TInt currentIndex = iDlg->CurrentItemListIndex(); - TInt folderId = iDlg->iState->FolderId( currentIndex ); - - if ( folderId == KErrNotFound && currentIndex == 0 ) - { - // this folder contain files - make delay longer to - // allow first file preview - delay = KLongDelay; - } - - TInt itemCount = iDlg->iListBox->Model()->NumberOfItems(); - iNewIndex = iRandomNum->Random( itemCount - 1); - - if ( iDlg->iState->CurrentFolder() == EEFolderRoot ) - { - if ( iRandomNum->Match( 50 ) ) - { - iNewIndex = 2; // more chances to Music folder - } - } - - if ( iNewIndex == currentIndex ) - { - iTestCaller->Start( ENextFolder, delay ); - } - else - { - iTestCaller->Start( EMovePosition, delay ); - } - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::MovePositionL -// -// Scrolls listbox until selected item (iNewIndex) is found. -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::MovePositionL() - { - const TInt KMoveDelay = 150; - const TInt KThousand = 1000; - - TInt currentIndex = iDlg->CurrentItemListIndex(); - TInt folderId = iDlg->iState->FolderId( currentIndex ); - TInt itemCount = iDlg->iListBox->Model()->NumberOfItems(); - - TBool itemFound = EFalse; - if ( currentIndex == iNewIndex ) - { - itemFound = ETrue; // listbox has scrolled to new item - } - if ( currentIndex == KErrNotFound ) - { - itemFound = ETrue; // folder is empty - } - if ( iNewIndex >= itemCount ) - { - itemFound = ETrue; // wrong folder - } - - if ( itemFound ) - { - // next listbox selection found - - TInt delay = KMoveDelay; - if ( folderId == KErrNotFound ) - { - // selection is file - allow time for preview - delay = iRandomNum->Random( 3, 10 ); - delay = delay * KThousand; - } - iTestCaller->Start( ENextFolder, delay ); - return; - } - - // Simulate listbox item selection. - SimulateKeyEventL( EKeyUpArrow ); - - //FLOG( _L("CMediaFileDialog::MovePositionL '%d/%d'"), currentIndex, iNewIndex ); - - iTestCaller->Start( EMovePosition, KMoveDelay ); - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::SimulateKeyEventL -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::SimulateKeyEventL( TInt aEvent ) - { - TKeyEvent key; - key.iModifiers = 0; - key.iRepeats = 0; - key.iCode = aEvent; - key.iScanCode = aEvent; - - //iListBox->SetCurrentItemIndexAndDraw( newIndex ); - CCoeEnv::Static()->SimulateKeyEventL( key, EEventKey ); - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::SimulateOpenEventL -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::SimulateOpenEventL() - { - TKeyEvent keyEvent; - keyEvent.iCode = EKeyDevice3; - keyEvent.iScanCode = EStdKeyDevice3; - keyEvent.iRepeats = 0; - CCoeEnv::Static()->SimulateKeyEventL( keyEvent, EEventKey ); - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::SimulateBackEventL -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::SimulateBackEventL() - { - TKeyEvent keyEvent; - keyEvent.iCode = EKeyDevice1; - keyEvent.iScanCode = EStdKeyDevice1; - keyEvent.iRepeats = 0; - CCoeEnv::Static()->SimulateKeyEventL( keyEvent, EEventKey ); - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::SimulateSearchEventL -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::SimulateSearchEventL() - { - // letter a 97/65 - // letter b 98/66 - - TKeyEvent keyEvent; - keyEvent.iCode = 97; - keyEvent.iScanCode = 65; - keyEvent.iRepeats = 0; - CCoeEnv::Static()->SimulateKeyEventL( keyEvent, EEventKey ); - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::SetScreenSaverPeriod -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::SetScreenSaverPeriod( TInt aPeriod ) - { - TRAP_IGNORE( SetScreenSaverPeriodL( aPeriod ) ); - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::SetScreenSaverPeriodL -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::SetScreenSaverPeriodL( TInt aPeriod ) - { - // from SettingsInternalCRKeys.h - const TUid KCRUidPersonalizationSettings = {0x101F877C}; - const TUint32 KSettingsScreenSaverPeriod = 0x00000008; - - CRepository* repository = - CRepository::NewL( KCRUidPersonalizationSettings ); - - // ignore error - repository->Set( KSettingsScreenSaverPeriod, aPeriod ); - - delete repository; - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::ScreenSaverPeriodL -// -// ----------------------------------------------------------------------------- -// -TInt CMFDialogTest::ScreenSaverPeriodL() - { - // from SettingsInternalCRKeys.h - const TUid KCRUidPersonalizationSettings = {0x101F877C}; - const TUint32 KSettingsScreenSaverPeriod = 0x00000008; - - CRepository* repository = - CRepository::NewL( KCRUidPersonalizationSettings ); - - TInt period = 60; // 60 seconds - // ignore error - repository->Get( KSettingsScreenSaverPeriod, period ); - - delete repository; - - return period; - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::HandleActiveCallL (from MMFActiveCallerObserver) -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::HandleActiveCallL( TInt aCallId ) - { - if ( aCallId == ENextFolder ) - { - //FLOG( _L("CMFDialogTest::HandleActiveCallL: ENextFolder") ); - - TRAP_IGNORE( NextFolderL() ); - iDestroyedPtr = NULL; - } - if ( aCallId == ENextListItem ) - { - //FLOG( _L("CMFDialogTest::HandleActiveCallL: ENextListItem") ); - NextListItemL(); - } - - if ( aCallId == EMovePosition ) - { - //FLOG( _L("CMFDialogTest::HandleActiveCallL: EMovePosition") ); - - MovePositionL(); - } - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::SetTime -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::SetTime() - { - iTime = TimeBefore(); - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::PrintTimeL -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::PrintTimeL( const TDesC& aText ) - { - TBuf<128> buf; - TInt milliSeconds = TimeAfter( iTime ); - buf.Format( _L("%S %d ms"), &aText, milliSeconds ); - - ShowPopupNoteL( buf ); - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::TimeBefore -// -// Function returns TTime of the current time (needed with function TimeAfter). -// ----------------------------------------------------------------------------- -// -TTime CMFDialogTest::TimeBefore() - { - TTime now; - now.UniversalTime(); - return now; - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::TimeAfter -// -// Function returns milliseconds passed since aBefore. -// ----------------------------------------------------------------------------- -// -TInt64 CMFDialogTest::TimeAfter( TTime aBefore ) - { - TTime after; - after.UniversalTime(); - TTimeIntervalMicroSeconds microSeconds=after.MicroSecondsFrom( aBefore ); - TInt64 milliSeconds=microSeconds.Int64()/1000; - return milliSeconds; - } - - -// ----------------------------------------------------------------------------- -// CMFDialogTest::ShowPopupNote -// -// ----------------------------------------------------------------------------- -// -void CMFDialogTest::ShowPopupNoteL( const TDesC& aText ) - { - const TInt KPopupDisplayTime = 3*1000; - const TInt KPopupDelayTime = 500; - - iPopupNote->SetTextL( aText ); - iPopupNote->SetTimeDelayBeforeShow( KPopupDelayTime ); - iPopupNote->SetTimePopupInView( KPopupDisplayTime ); - iPopupNote->ShowInfoPopupNote(); - } - - - - -/****************************************************************************** - * class CRandomNum - ******************************************************************************/ - - - -// ----------------------------------------------------------------------------- -// CRandomNum::NewLC -// -// ----------------------------------------------------------------------------- -// -CRandomNum* CRandomNum::NewLC() - { - CRandomNum* randomdata = new (ELeave) CRandomNum; - CleanupStack::PushL( randomdata ); - return randomdata; - } - - -// ----------------------------------------------------------------------------- -// CRandomNum::NewL -// -// ----------------------------------------------------------------------------- -// -CRandomNum* CRandomNum::NewL() - { - CRandomNum* randomdata = new (ELeave) CRandomNum; - return randomdata; - } - -// ----------------------------------------------------------------------------- -// CRandomNum::CRandomNum -// -// ----------------------------------------------------------------------------- -// -CRandomNum::CRandomNum() - { - TTime now; - now.UniversalTime(); - iSeed = now.Int64(); - } - -// ----------------------------------------------------------------------------- -// CRandomNum::~CRandomNum -// -// ----------------------------------------------------------------------------- -// -CRandomNum::~CRandomNum() - { - } - - -// ----------------------------------------------------------------------------- -// CRandomNum::Random -// -// Return random integer from 0 to aMax (including 0 and aMax). -// ----------------------------------------------------------------------------- -// -TInt CRandomNum::Random( TInt aMax ) - { - TReal real = Math::FRand( iSeed ); // FRand updates iSeed - TReal real2 = real * ( aMax+1 ); - TInt num = (TInt) real2; - return num; - } - - -// ----------------------------------------------------------------------------- -// CRandomNum::Random -// -// Return random integer from aMin to aMax (including aMin and aMax). -// ----------------------------------------------------------------------------- -// -TInt CRandomNum::Random( TInt aMin, TInt aMax ) - { - if ( aMin >= aMax ) - { - return aMin; - } - - TInt range = aMax - aMin; - - TInt num = Random( range ); - - return aMin + num; - } - - -// ----------------------------------------------------------------------------- -// CRandomNum::Match -// -// Return ETrue according to percentage parameter (eg. in case -// aPercentage is 10 Match returns ETrue in 10% of the calls). -// ----------------------------------------------------------------------------- -// -TBool CRandomNum::Match( TInt aPercentage ) - { - if ( aPercentage < 1 ) - { - return EFalse; - } - - TInt num = Random( 99 ); // 0..99 - num++; // 1..100 - - if ( num <= aPercentage ) - { - return ETrue; - } - - return EFalse; - } - - - - - - -/****************************************************************************** - * class CMediaFileDialog3 - ******************************************************************************/ - -/* - -// ----------------------------------------------------------------------------- -// media file dialog resource (test code). -// ----------------------------------------------------------------------------- -// -RESOURCE DIALOG r_media_file_dialog_3 - { - //flags = EEikDialogFlagNoBackup | EEikDialogFlagFillAppClientRect; - flags=EEikDialogFlagWait | EEikDialogFlagFillAppClientRect | EEikDialogFlagNotifyEsc; - //buttons = R_AVKON_SOFTKEYS_OK_BACK__OK; - buttons = r_media_file_dialog_3_cba; - - items= - { - DLG_LINE - { - type=EAknCtSingleGraphicListBox; - itemflags=EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys; - id=1; - control=LISTBOX - { - flags = EAknListBoxSelectionList; - }; - } - }; - - } - - -//------------------------------------------------------------------------------ -// Softkey resource -//------------------------------------------------------------------------------ -// -RESOURCE CBA r_media_file_dialog_3_cba - { - buttons = - { - CBA_BUTTON - { - id = EAknSoftkeyOptions; - txt = text_softkey_option; - }, - CBA_BUTTON - { - id = EAknSoftkeyBack; - txt = text_softkey_back; - }, - CBA_BUTTON - { - id = EAknSoftkeySelect; - txt = qtn_msk_select; - } - }; - } - -RESOURCE MENU_BAR r_media_file_dialog_3_menu - { - titles= - { - MENU_TITLE - { - menu_pane=r_media_file_dialog_3_menu_pane; - } - }; - } - -RESOURCE MENU_PANE r_media_file_dialog_3_menu_pane - { - items= - { - MENU_ITEM { command=EAknCmdOpen; txt=qtn_options_open; }, - MENU_ITEM { command=EAknCmdHelp; txt=qtn_options_help; }, - MENU_ITEM { command=EAknCmdExit; txt=qtn_options_exit; } - }; - } -*/ -/* - -// ----------------------------------------------------------------------------- -// CMediaFileDialog3::ShowDialogL -// -// ----------------------------------------------------------------------------- -TBool CMediaFileDialog3::ShowDialogL() - { - CMediaFileDialog3* dlg = CMediaFileDialog3::NewL(); - TBool ret = dlg->ExecuteLD( R_MEDIA_FILE_DIALOG_3 ); - - return ret; - } - -// ---------------------------------------------------------------------------- -// Destructor -// -// ---------------------------------------------------------------------------- -// -CMediaFileDialog3::~CMediaFileDialog3() - { - delete iVideoPreviewHandler; - - if ( iAvkonAppUi ) - { - iAvkonAppUi->RemoveFromStack( this ); - } - } - - -// ----------------------------------------------------------------------------- -// CMediaFileDialog3::CMediaFileDialog3 -// -// ----------------------------------------------------------------------------- -// -CMediaFileDialog3::CMediaFileDialog3() - { - } - - -// ----------------------------------------------------------------------------- -// CMediaFileDialog3::NewL -// -// ----------------------------------------------------------------------------- -CMediaFileDialog3* CMediaFileDialog3::NewL() - { - CMediaFileDialog3* self = new (ELeave) CMediaFileDialog3(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - - return self; - } - -// ----------------------------------------------------------------------------- -// CMediaFileDialog3::ConstructL -// -// ----------------------------------------------------------------------------- -// -void CMediaFileDialog3::ConstructL() - { - FLOG( _L("CMediaFileDialog3::ConstructL START") ); - - CAknDialog::ConstructL( R_MEDIA_FILE_DIALOG_3_MENU ); - - iVideoPreviewHandler = CMFVideoPreviewHandler::NewL(); - - FLOG( _L("CMediaFileDialog3::ConstructL END") ); - } - -// ----------------------------------------------------------------------------- -// CMediaFileDialog3::PreLayoutDynInitL -// -// ----------------------------------------------------------------------------- -// -void CMediaFileDialog3::PreLayoutDynInitL() - { - } - -//------------------------------------------------------------------------------ -// CMediaFileDialog3::OkToExitL -// -//------------------------------------------------------------------------------ -// -TBool CMediaFileDialog3::OkToExitL(TInt aButtonId) - { - if ( aButtonId == EAknSoftkeyBack ) - { - } - - return CAknDialog::OkToExitL( aButtonId ); - } - - - -//------------------------------------------------------------------------------ -// CMediaFileDialog3::ProcessCommandL -// -// Handle commands from menu. -//------------------------------------------------------------------------------ -// -void CMediaFileDialog3::ProcessCommandL(TInt aCommandId) - { - HideMenu(); - - - switch (aCommandId) - { - case EAknCmdHelp: - { - break; - } - - case EAknCmdOpen: - { - CEikCaptionedControl *ctrl = Line( 1 ); // dialog has one line (listbox) with id 1 - iVideoPreviewHandler->SetAttrL( TMFDialogUtil::EAttrDrawingWindow, (ctrl->iControl->DrawableWindow()) ); - - iVideoPreviewHandler->SetAttrL( TMFDialogUtil::EAttrFileName, _L("C:\\Data\\Videos\\video2.mp4") ); - iVideoPreviewHandler->PlayL(); - - break; - } - - case EAknCmdExit: - case EEikCmdExit: - { - // close dialog and exit calling application - iAvkonAppUi->ProcessCommandL( EAknCmdExit ); - break; - } - - default: - break; - } - } -*/ - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::QueryAllL (obsolete) -// -// Finds all tones, music, videos or recordings. -// ----------------------------------------------------------------------------- -// -/* -void CMediaFileHandler::QueryAllL( TInt aAttr ) - { - if ( !iSessionOpen ) - { - User::Leave( KErrDisconnected ); - } - - if ( aAttr != EAttrMusic && aAttr != EAttrVideo ) - { - User::Leave( KErrNotSupported ); - } - - CMdENamespaceDef& defNS = iSession->GetDefaultNamespaceDefL(); - CMdEObjectDef& musicObjectDef = defNS.GetObjectDefL( MdeConstants::Audio::KAudioObject ); - CMdEObjectDef& videoObjectDef = defNS.GetObjectDefL( MdeConstants::Video::KVideoObject ); - - delete iQuery; - iQuery = NULL; - - if ( aAttr == EAttrVideo ) - { - iQuery = iSession->NewObjectQueryL( defNS, videoObjectDef, this ); - iQueryType = EQueryVideo; - } - else - { - iQuery = iSession->NewObjectQueryL( defNS, musicObjectDef, this ); - iQueryType = EQueryAudio; - } - - - // set attributes that are included in query result - CMdEPropertyDef& namePropertyDef = PropertyDefL( EAttrSongName ); - iQuery->AddPropertyFilterL( &namePropertyDef ); - - // define sort order - iQuery->AppendOrderRuleL( TMdEOrderRule( namePropertyDef, ESortAscending ) ); - - iQuery->SetResultMode( EQueryResultModeItem ); - - iQuery->FindL(); - - iQueryType = EQueryAudio; - } -*/ - - - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::QueryArtistUnknownL (obsolete) -// -// Finds all songs for aArtist that miss album property. -// ----------------------------------------------------------------------------- -// -/* -void CMediaFileHandler::QueryArtistUnknownL( const TDesC& aArtist ) - { - if ( !iSessionOpen ) - { - return; - } - - CMdENamespaceDef& defNS = iSession->GetDefaultNamespaceDefL(); - CMdEObjectDef& objectDef = defNS.GetObjectDefL( MdeConstants::Audio::KAudioObject ); - - iQueryType = EQueryAudio; - - delete iQuery; - iQuery = NULL; - iQuery = iSession->NewObjectQueryL( defNS, objectDef, this ); - - iQuery->SetResultMode( EQueryResultModeItem ); - - CMdEPropertyDef& artistPropertyDef = PropertyDefL( EAttrArtist ); - CMdEPropertyDef& namePropertyDef = PropertyDefL( EAttrSongName ); - CMdEPropertyDef& albumPropertyDef = PropertyDefL( EAttrAlbum ); - - - CMdELogicCondition& conditions = iQuery->Conditions(); - - // add root condition: get all songs by aArtist - conditions.AddPropertyConditionL( artistPropertyDef, - ETextPropertyConditionCompareEquals, - aArtist ); - - // set attributes that are included in query result - iQuery->AppendOrderRuleL( TMdEOrderRule( namePropertyDef, ESortAscending ) ); - iQuery->AddPropertyFilterL( &namePropertyDef ); - iQuery->AddPropertyFilterL( &artistPropertyDef ); - - - // add other condition: get songs that do not have album attribute - CMdELogicCondition& albumCondition = - conditions.AddLogicConditionL( ELogicConditionOperatorAnd ); - albumCondition.AddPropertyConditionL( albumPropertyDef ); - albumCondition.SetNegate( ETrue ); - - iQuery->FindL(); - } -*/ - -// ----------------------------------------------------------------------------- -// CMediaFileHandler2::QueryAlbumsL (obsolete) -// -// Finds all albums for aArtist. -// ----------------------------------------------------------------------------- -// -/* -void CMediaFileHandler::QueryAlbumsL( const TDesC& aArtist ) - { - if ( !iSessionOpen ) - { - return; - } - - CMdENamespaceDef& defNS = iSession->GetDefaultNamespaceDefL(); - CMdEObjectDef& objectDef = defNS.GetObjectDefL( MdeConstants::Audio::KAudioObject ); - - iQueryType = EQueryAudio; - - delete iQuery; - iQuery = NULL; - iQuery = iSession->NewObjectQueryL( defNS, objectDef, this ); - - iQuery->SetResultMode( EQueryResultModeDistinctValues ); - - CMdEPropertyDef& propertyDef = PropertyDefL( EAttrAlbum ); - - // distinct query requires exactly one property filter - CMdELogicCondition& conditions = iQuery->Conditions(); - conditions.AddPropertyConditionL( propertyDef ); - iQuery->AppendOrderRuleL( TMdEOrderRule( propertyDef, ESortAscending ) ); - iQuery->AddPropertyFilterL( &propertyDef ); - - CMdEPropertyDef& propertyDef2 = PropertyDefL( EAttrArtist ); - conditions.AddPropertyConditionL( propertyDef2, - ETextPropertyConditionCompareEquals, aArtist ); - - iQuery->FindL(); - } -*/ - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::QueryArtistAlbumL (obsolete) -// -// Finds songs for aArtist/aAlbum. -// ----------------------------------------------------------------------------- -// - -/* -void CMediaFileHandler::QueryArtistAlbumL( const TDesC& aArtist, const TDesC& aAlbum ) - { - if ( !iSessionOpen ) - { - return; - } - - CMdENamespaceDef& defNS = iSession->GetDefaultNamespaceDefL(); - CMdEObjectDef& objectDef = defNS.GetObjectDefL( MdeConstants::Audio::KAudioObject ); - - iQueryType = EQueryAudio; - - delete iQuery; - iQuery = NULL; - iQuery = iSession->NewObjectQueryL( defNS, objectDef, this ); - - iQuery->SetResultMode( EQueryResultModeItem ); - - CMdEPropertyDef& artistDef = PropertyDefL( EAttrArtist ); - CMdEPropertyDef& albumDef = PropertyDefL( EAttrAlbum ); - CMdEPropertyDef& nameDef = PropertyDefL( EAttrSongName ); - - CMdELogicCondition& conditions = iQuery->Conditions(); - - conditions.AddPropertyConditionL( artistDef, - ETextPropertyConditionCompareEquals, aArtist ); - - conditions.AddPropertyConditionL( albumDef, - ETextPropertyConditionCompareEquals, aAlbum ); - - iQuery->AppendOrderRuleL( TMdEOrderRule( nameDef, ESortAscending ) ); - iQuery->AddPropertyFilterL( &nameDef ); - - - User::Leave(KErrNoMemory); - iQuery->FindL(); - - - } -*/ - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::QueryL (test code) -// -// ----------------------------------------------------------------------------- -// -/* -void CMediaFileHandler::QueryL( TInt aAttr ) - { - if ( aAttr != EAttrArtist && aAttr != EAttrAlbum && - aAttr != EAttrGenre && aAttr != EAttrComposer ) - { - User::Leave( KErrNotSupported ); - } - - - CMdENamespaceDef& defNS = iSession->GetDefaultNamespaceDefL(); - CMdEObjectDef& objectDef = defNS.GetObjectDefL( MdeConstants::Audio::KAudioObject ); - iQuery = iSession->NewObjectQueryL( defNS, objectDef, this ); - - - RArray itemIds; - itemIds.Append( 22 ); - itemIds.Append( 5 ); - itemIds.Append( 18 ); - //itemLogicCondition->AddObjectConditionL(itemIds); - - CMdELogicCondition& conditions = iQuery->Conditions(); - conditions.AddObjectConditionL( itemIds ); - iQuery->SetResultMode( EQueryResultModeItem ); - - itemIds.Close(); - - iQuery->FindL(); - } -*/ - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::QueryL (test code) -// -// ----------------------------------------------------------------------------- -// - -/* -void CMediaFileHandler::QueryL() - { - if ( !iSession ) - { - User::Leave( KErrSessionClosed ); - } - - delete iQuery; - iQuery = NULL; - - CMdENamespaceDef& defNS = iSession->GetDefaultNamespaceDefL(); - - CMdEObjectDef& objectDef = defNS.GetObjectDefL( MdeConstants::Audio::KAudioObject ); - iQuery = iSession->NewObjectQueryL( defNS, objectDef, this ); - iQuery->SetResultMode( EQueryResultModeId ); - iQuery->FindL(); - - - CMdELogicCondition& conditions = iQuery->Conditions(); - - //conditions.AddPropertyConditionL(composerPropertyDef, - //CMdETextPropertyCondition::ECompareEquals, text); - - } -*/ - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::HandleQueryCompletedOneL -// -// ----------------------------------------------------------------------------- -// - -/* -void CMediaFileHandler::HandleQueryCompletedOneL( CMdEQuery& aQuery, - TInt aError ) - { - CMdENamespaceDef& defNS = iSession->GetDefaultNamespaceDefL(); - - CMdEObjectDef& objectDef = defNS.GetObjectDefL( - MdeConstants::Object::KBaseObject ); - CMdEObjectDef& mediaObjectDef = defNS.GetObjectDefL( - MdeConstants::MediaObject::KMediaObject ); - CMdEObjectDef& audioObjectDef = defNS.GetObjectDefL( - MdeConstants::Audio::KAudioObject ); - - - CMdEPropertyDef& songPropertyDef = objectDef.GetPropertyDefL( - MdeConstants::Object::KTitleProperty ); - CMdEPropertyDef& artistPropertyDef = mediaObjectDef.GetPropertyDefL( - MdeConstants::MediaObject::KArtistProperty ); - CMdEPropertyDef& albumPropertyDef = audioObjectDef.GetPropertyDefL( - MdeConstants::Audio::KAlbumProperty ); - CMdEPropertyDef& genrePropertyDef = mediaObjectDef.GetPropertyDefL( - MdeConstants::MediaObject::KGenreProperty ); - - CMdEProperty* property = NULL; - - const RArray& arr = iQuery->ResultIds(); - - TBuf<256> buf; - TInt count = arr.Count(); - for ( TInt i=0; iGetFullObjectL( id ); - CleanupStack::PushL( object ); - - buf = object->Uri(); - TInt propertyCount = object->PropertyCount(); - for ( TInt j=0; jPropertyL( j ); - const CMdEPropertyDef& prDef = pr.Def(); - buf.Append(_L(" ")); - buf.Append(prDef.Name()); - } - TMFDialogUtil::ShowInformationQueryL( buf ); - - CMdEPropertyDef& tmpDef = object->Def().GetPropertyDefL( MdeConstants::MediaObject::KArtistProperty ); - TInt ret = object->Property( tmpDef, property, 0 ); - if ( ret != KErrNotFound ) - { - buf = property->TextValueL(); - } - - - ret = object->Property( songPropertyDef, property, 0 ); - if ( ret != KErrNotFound ) - { - buf = property->TextValueL(); - } - - ret = object->Property( artistPropertyDef, property, 0 ); - if ( ret != KErrNotFound ) - { - buf = property->TextValueL(); - } - - ret = object->Property( albumPropertyDef, property, 0 ); - if ( ret != KErrNotFound ) - { - buf = property->TextValueL(); - } - - ret = object->Property( genrePropertyDef, property, 0 ); - if ( ret != KErrNotFound ) - { - buf = property->TextValueL(); - } - - - CleanupStack::PopAndDestroy( object ); - } - } -*/ - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::HandleQueryCompletedTwoL -// -// ----------------------------------------------------------------------------- -// - -/* -void CMediaFileHandler::HandleQueryCompletedTwoL( CMdEQuery& aQuery, - TInt aError ) - { - TBuf<256> buf; - - TInt count = iQuery->Count(); - for ( TInt i=0; iResultDistinctValue( i ); - - CMdEObject& object = iQuery->Result( i ); - - buf = object.Uri(); - TInt propertyCount = object.PropertyCount(); - for ( TInt j=0; jTextValueL(); - } - } - } -*/ - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::ResultCount -// -// ----------------------------------------------------------------------------- -// - -/* -TInt CMediaFileHandler::ResultCount() - { - if ( iQueryType == EQueryRomFile ) - { - return iRomFileList.Count(); - } - - if ( iQueryType == ESearchVideo ) - { - return iSearchList->Count(); - } - - if ( !iQuery || !iQueryReady || !iSessionOpen ) - { - return 0; - } - - TInt count = 0; - TQueryResultMode resultMode = iQuery->ResultMode(); - - if ( resultMode == EQueryResultModeDistinctValues || - resultMode == EQueryResultModeItem || - resultMode == EQueryResultModeCount ) - { - count = iQuery->Count(); - } - else if ( resultMode == EQueryResultModeId ) - { - count = iQuery->Count(); - const RArray& arr = iQuery->ResultIds(); - count = arr.Count(); - } - - return count; - } -*/ - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::GetRecentFileAttribute -// -// ----------------------------------------------------------------------------- -// -/* -void CMediaFileHandler::GetRecentFileAttribute( TInt aIndex, TInt aAttr, TDes& aValue ) - { - TInt count = iRecentList->Count(); - - __ASSERT_ALWAYS( aIndex >= 0 && aIndex < count, Panic( KErrGeneral ) ); - - if ( aAttr == EAttrFullName ) - { - StrCopy( aValue, iRecentList->FileName( aIndex ) ); - } - else if ( aAttr == EAttrSongName || aAttr == EAttrFileName ) - { - TParsePtrC parse( iRecentList->FileName( aIndex ) ); - StrCopy( aValue, parse.Name() ); - } - } -*/ - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::RecentFileAttribute -// -// ----------------------------------------------------------------------------- -// -/* -TInt CMediaFileHandler::RecentFileAttribute( TInt aIndex, TInt aAttr ) - { - TInt count = iRecentList->Count(); - __ASSERT_ALWAYS( aIndex >= 0 && aIndex < count, Panic( KErrGeneral ) ); - - TInt ret = KErrNotFound; - - if ( aAttr == EAttrMediaType ) - { - ret = EAttrMusic; - } - if ( aAttr == EAttrStorageType ) - { - ret = EPhoneMemory; - } - - return ret; - } -*/ - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::Attribute -// -// ----------------------------------------------------------------------------- -// -/* -TInt CMediaFileHandler::Attribute( TInt aIndex, TInt aAttr ) - { - if ( iQueryType == EQueryRomFile ) - { - return RomFileAttribute( aIndex, aAttr ); - } - if ( iQueryType == ESearchVideo ) - { - return iSearchList->Attribute( aIndex, aAttr ); - } - - if ( aAttr == EAttrMediaType ) - { - if ( iQueryType == EQueryVideo ) - { - return EAttrVideo; - } - else - { - return EAttrMusic; - } - } - else if ( aAttr == EAttrStorageType ) - { - TInt ret = CMediaFileHandler::EPhoneMemory; - - if ( !iQuery || !iQueryReady || !iSessionOpen ) - { - return ret; - } - TQueryResultMode resultMode = iQuery->ResultMode(); - if ( resultMode != EQueryResultModeItem ) - { - return ret; - } - - CMdEObject& object = iQuery->Result( aIndex ); - if ( iDriveUtil->IsMemoryCard( object.Uri() ) ) - { - ret = CMediaFileHandler::EMemoryCard; - } - else if ( iDriveUtil->IsMassStorage( object.Uri() ) ) - { - ret = CMediaFileHandler::EMassStorage; - } - return ret; - } - - else if ( aAttr == EAttrMediaFileId ) - { - if ( !iQuery || !iQueryReady || !iSessionOpen ) - { - return KErrNotFound; - } - CMdEObject& object = iQuery->Result( aIndex ); - return object.Id(); - } - - return KErrNotFound; - } -*/ - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::GetAttributeL -// -// ----------------------------------------------------------------------------- -// -/* -void CMediaFileHandler::GetAttributeL( TInt aIndex, TInt aAttr, TDes& aValue ) - { - aValue = KNullDesC; - - if ( iQueryType == EQueryRomFile ) - { - GetRomFileAttribute( aIndex, aAttr, aValue ); - return; - } - if ( iQueryType == ESearchVideo ) - { - if ( iSessionOpen ) - { - iSearchList->SetSession( iSession ); - } - else - { - iSearchList->SetSession( NULL ); - } - iSearchList->GetAttributeL( aIndex, aAttr, aValue ); - return; - } - - - if ( !iQuery || !iQueryReady || !iSessionOpen ) - { - return; - } - - TInt count = ResultCount(); - __ASSERT_ALWAYS( aIndex >= 0 && aIndex < count, Panic( KErrGeneral ) ); - - TQueryResultMode resultMode = iQuery->ResultMode(); - - if ( resultMode == EQueryResultModeDistinctValues ) - { - TPtrC ptr = iQuery->ResultDistinctValue( aIndex ); - StrCopy( aValue, ptr ); - } - - if ( resultMode == EQueryResultModeItem ) - { - CMdEObject& object = iQuery->Result( aIndex ); - - if ( aAttr == EAttrFullName ) - { - StrCopy( aValue, object.Uri() ); - return; - } - - CMdEPropertyDef& propDef = PropertyDefL( aAttr ); - CMdEProperty* property = NULL; - TInt ret = object.Property( propDef, property, 0 ); - if ( ret != KErrNotFound ) - { - StrCopy( aValue, property->TextValueL() ); - } - else if ( aAttr == EAttrSongName || aAttr == EAttrFileName) - { - TParsePtrC parse( object.Uri() ); - StrCopy( aValue, parse.Name() ); - } - } - } -*/ - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::UpdateRecentListL -// -// ----------------------------------------------------------------------------- -// -/* -void CMediaFileHandler::UpdateRecentListL() - { - if ( !iSessionOpen ) - { - return; - } - - TInt count = iRecentList->Count(); - - for ( TInt i=0; iId( i ); - CMdEObject* object = NULL; - - TInt err = KErrNone; - TRAP( err, object = iSession->GetFullObjectL( id ) ); - if ( err != KErrNone || !object ) - { - iRecentList->SetPresent( EFalse, i ); - } - else - { - CleanupStack::PushL( object ); - iRecentList->SetFileNameL( object->Uri(), i ); - CleanupStack::PopAndDestroy( object ); - } - } - - iRecentList->Clean(); - } -*/ - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::StoreRecentFileL -// -// ----------------------------------------------------------------------------- -// -/* -void CMediaFileHandler::StoreRecentFileL( TInt aIndex ) - { - if ( iQueryType == EQueryRomFile ) - { - return; // tones not part of recent files - } - - if ( iQueryType == EQueryRecentFile ) - { - TInt64 id = iRecentList->Id( aIndex ); - iRecentList->AddItemL( id ); - return; - } - - if ( !iQuery || !iQueryReady || !iSessionOpen ) - { - return; - } - - TQueryResultMode resultMode = iQuery->ResultMode(); - if ( resultMode == EQueryResultModeItem ) - { - CMdEObject& object = iQuery->Result( aIndex ); - TItemId id = object.Id(); - iRecentList->AddItemL( id ); - } - } -*/ - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::HandleQueryCompletedL -// -// ----------------------------------------------------------------------------- -// - -/* -void CMediaFileHandler::HandleQueryCompletedL( CMdEQuery& aQuery, TInt aError ) - { - iQueryReady = ETrue; - - if ( !iQuery ) - { - iObserver->HandleMFEventL( MMediaFileHandlerObserver::EError, KErrCancel ); - return; // query has been canceled - } - - if ( aError != KErrNone ) - { - iObserver->HandleMFEventL( MMediaFileHandlerObserver::EError, aError ); - return; - } - - TQueryResultMode resultMode = iQuery->ResultMode(); - - if ( resultMode == EQueryResultModeDistinctValues ) - { - iObserver->HandleMFEventL( MMediaFileHandlerObserver::EQueryComplete, aError ); - } - else if ( resultMode == EQueryResultModeId ) - { - // const RArray& arr = iQuery->ResultIds(); - // CopyArrayL( iResultArray, arr ); - // - // copy this arr into member iResultIds and perform full search - // for the whole set or a partial search if result set is very large - // partial search indexes could be in another member iPartialResultdIds - // observer gets notified after the first partial search - - iObserver->HandleMFEventL( MMediaFileHandlerObserver::EError, KErrNotSupported ); - } - else if ( resultMode == EQueryResultModeCount ) - { - iObserver->HandleMFEventL( MMediaFileHandlerObserver::EUnknownQueryComplete, aError ); - } - else if ( resultMode == EQueryResultModeItem ) - { - if ( iQueryType == ESearchAudio ) - { - iSearchList->Reset(); - iSearchList->TakeResultL( iQuery, EAttrMusic ); - SearchVideoL( iSearchText ); - } - else if ( iQueryType == ESearchVideo ) - { - iSearchList->TakeResultL( iQuery, EAttrVideo ); - iSearchList->Sort(); - iObserver->HandleMFEventL( MMediaFileHandlerObserver::EQueryComplete, aError ); - } - else - { - iObserver->HandleMFEventL( MMediaFileHandlerObserver::EQueryComplete, aError ); - } - } - else - { - iObserver->HandleMFEventL( MMediaFileHandlerObserver::EError, KErrNotSupported ); - } - } -*/ - - -/* - //private: - //void ReadDirectoryL( const TDesC& aDirectory ); - //void ReadRomFilesL(); - //void SortRomFiles(); - //static TInt CompareFileName( const TFileName& aFirst, const TFileName& aSecond ); - //static TInt CompareStr( const TFileName& aFirst, const TFileName& aSecond ); - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::ReadRomFilesL (to be removed) -// -// ----------------------------------------------------------------------------- -// -void CMediaFileHandler::ReadRomFilesL() - { - _LIT( KFormat, "%S%S" ); - - iRomFileList.Reset(); - - TFileName fileName; - fileName.Format( KFormat, &PathInfo::RomRootPath(), &PathInfo::SoundsPath() ); - TRAP_IGNORE( ReadDirectoryL( fileName ) ); - - fileName.Format( KFormat, &PathInfo::RomRootPath(), &PathInfo::DigitalSoundsPath() ); - TRAP_IGNORE( ReadDirectoryL( fileName ) ); - - fileName.Format( KFormat, &PathInfo::RomRootPath(), &PathInfo::SimpleSoundsPath() ); - TRAP_IGNORE( ReadDirectoryL( fileName ) ); - - TInt count = iRomFileList.Count(); - for ( TInt i=0; i buf( aDirectory ); - - CDir* dir = NULL; - RFs fsSession; - User::LeaveIfError( fsSession.Connect() ); - CleanupClosePushL( fsSession ); - - if ( !BaflUtils::FolderExists( fsSession, aDirectory ) ) - { - User::Leave( KErrNotFound ); - } - - TInt err = fsSession.GetDir( aDirectory, KEntryAttNormal, ESortByName, dir ); - User::LeaveIfError( err ); - CleanupStack::PushL( dir ); - - TInt count = dir->Count(); - - for ( TInt i=0; i(CMediaFileHandler::CompareFileName)); - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::QueryRomFilesL (to be removed) -// -// Finds all tones from rom directories. -// ----------------------------------------------------------------------------- -// -void CMediaFileHandler::QueryRomFilesL( TInt aAttr ) - { - QueryEmptyL(); - - iQueryType = EQueryRomFile; - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::GetRomFileAttribute (to be removed) -// -// ----------------------------------------------------------------------------- -// -void CMediaFileHandler::GetRomFileAttribute( TInt aIndex, TInt aAttr, TDes& aValue ) - { - TInt count = iRomFileList.Count(); - - __ASSERT_ALWAYS( aIndex >= 0 && aIndex < count, Panic( KErrGeneral ) ); - - if ( aAttr == EAttrFullName ) - { - StrCopy( aValue, iRomFileList[aIndex] ); - } - else if ( aAttr == EAttrSongName || aAttr == EAttrFileName ) - { - TParsePtrC parse( iRomFileList[aIndex] ); - StrCopy( aValue, parse.Name() ); - } - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::RomFileAttribute (to be removed) -// -// ----------------------------------------------------------------------------- -// -TInt CMediaFileHandler::RomFileAttribute( TInt aIndex, TInt aAttr ) - { - TInt count = iRomFileList.Count(); - - __ASSERT_ALWAYS( aIndex >= 0 && aIndex < count, Panic( KErrGeneral ) ); - - TInt ret = KErrNotFound; - if ( aAttr == EAttrMediaType ) - { - ret = EMediaTypeTone; - } - else if ( aAttr == EAttrStorageType ) - { - ret = EPhoneMemory; - } - - return ret; - } -*/ - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::CompareFileName -// -// ----------------------------------------------------------------------------- -// -/* -TInt CMediaFileHandler::CompareFileName(const TFileName& aFirst, const TFileName& aSecond) - { - TParsePtrC parseFirst( aFirst ); - TParsePtrC parseSecond( aSecond ); - - return parseFirst.Name().Compare( parseSecond.Name() ); - } -*/ - -// ----------------------------------------------------------------------------- -// CMediaFileHandler::CompareStr -// -// ----------------------------------------------------------------------------- -// -/* -TInt CMediaFileHandler::CompareStr(const TFileName& aFirst, const TFileName& aSecond) - { - return aFirst.Compare( aSecond ); - } -*/ - - - -/******************************************************************************* - * class TMediaFileHistoryItem - *******************************************************************************/ - -/* -// ----------------------------------------------------------------------------- -// TMediaFileHistoryItem::Id -// -// ----------------------------------------------------------------------------- -// -TInt64 TMediaFileHistoryItem::Id() - { - return iId; - } - - -// ----------------------------------------------------------------------------- -// TMediaFileHistoryItem::SetId -// -// ----------------------------------------------------------------------------- -// -void TMediaFileHistoryItem::SetId( TInt64 aId ) - { - iId = aId; - } - - -// ----------------------------------------------------------------------------- -// TMediaFileHistoryItem::Time -// -// ----------------------------------------------------------------------------- -// -TTime TMediaFileHistoryItem::Time() - { - return iTime; - } - - -// ----------------------------------------------------------------------------- -// TMediaFileHistoryItem::SetTime -// -// ----------------------------------------------------------------------------- -// -void TMediaFileHistoryItem::SetTime( TTime aTime ) - { - iTime = aTime; - } - - -// ----------------------------------------------------------------------------- -// TMediaFileHistoryItem::InternalizeL -// -// ----------------------------------------------------------------------------- -// -void TMediaFileHistoryItem::InternalizeL( RReadStream& aStream ) - { - aStream >> iId; - - if ( iId < 0 ) - { - User::Leave( KErrCorrupt ); - } - - TInt64 temp = 0; - aStream >> temp; - - if ( temp <= 0 ) - { - User::Leave( KErrCorrupt ); - } - TTime time( temp ); - iTime = time; - - iPresent = ETrue; - iFullName = KNullDesC; - } - - -// ----------------------------------------------------------------------------- -// TMediaFileHistoryItem::ExternalizeL -// -// ----------------------------------------------------------------------------- -// -void TMediaFileHistoryItem::ExternalizeL( RWriteStream& aStream ) - { - aStream << iId; - aStream << iTime.Int64(); - } -*/ - - - -/******************************************************************************* - * class CMediaFileHistory - *******************************************************************************/ - -/* -// ----------------------------------------------------------------------------- -// CMediaFileHistory::NewL -// -// ----------------------------------------------------------------------------- -// -CMediaFileHistory* CMediaFileHistory::NewL() - { - CMediaFileHistory* self = new (ELeave) CMediaFileHistory(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(self ); - - return self; - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::CMediaFileHistory -// -// ----------------------------------------------------------------------------- -// -CMediaFileHistory::CMediaFileHistory() - { - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::ConstructL -// -// Note: Sessionpath in emulator is '\epoc32\winscw\c\private\2000F85A' -// ----------------------------------------------------------------------------- -// -void CMediaFileHistory::ConstructL() - { - _LIT( KHistoryFile, "MediaFileHistory" ); - const TInt KHistoryDrive = EDriveC; - - User::LeaveIfError( iFsSession.Connect() ); - User::LeaveIfError( iFsSession.SetSessionToPrivate( KHistoryDrive ) ); - - User::LeaveIfError( iFsSession.SessionPath( iPath ) ); - BaflUtils::EnsurePathExistsL( iFsSession, iPath ); - iPath.Append( KHistoryFile ); - - TInt err = KErrNone; - TRAP( err, ReadHistoryL() ); - - if ( err != KErrNone && err != KErrNoMemory ) - { - // history file was just created or it is corrupted - iList.Reset(); - } - } - - -// ---------------------------------------------------------------------------- -// Destructor -// -// ---------------------------------------------------------------------------- -// -CMediaFileHistory::~CMediaFileHistory() - { - Clean(); - - TRAP_IGNORE( WriteHistoryL() ); - - iList.Close(); - iFsSession.Close(); - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::AddItemL -// -// ----------------------------------------------------------------------------- -// -void CMediaFileHistory::AddItemL( TInt64 aId ) - { - TMediaFileHistoryItem item; - - TTime t; - t.UniversalTime(); - - item.SetTime( t ); - item.SetId( aId ); - - AddItemL( item ); - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::Count -// -// ----------------------------------------------------------------------------- -// -TInt CMediaFileHistory::Count() - { - return iList.Count(); - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::Reset -// -// ----------------------------------------------------------------------------- -// -void CMediaFileHistory::Reset() - { - iList.Reset(); - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::SetFileNameL -// -// ----------------------------------------------------------------------------- -// -void CMediaFileHistory::SetFileNameL( const TDesC& aFullName, TInt aIndex ) - { - if ( aIndex < 0 || aIndex >= iList.Count() ) - { - TMFDialogUtil::Panic( KErrArgument ); - } - - TMediaFileHistoryItem& item = iList[aIndex]; - TMFDialogUtil::StrCopy( item.iFullName, aFullName ); - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::FileName -// -// ----------------------------------------------------------------------------- -// -const TDesC& CMediaFileHistory::FileName( TInt aIndex ) - { - if ( aIndex < 0 || aIndex >= iList.Count() ) - { - TMFDialogUtil::Panic( KErrArgument ); - } - - TMediaFileHistoryItem& item = iList[aIndex]; - return item.iFullName; - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::SetPresent -// -// ----------------------------------------------------------------------------- -// -void CMediaFileHistory::SetPresent( TBool aPresent, TInt aIndex ) - { - if ( aIndex < 0 || aIndex >= iList.Count() ) - { - TMFDialogUtil::Panic( KErrArgument ); - } - - TMediaFileHistoryItem& item = iList[aIndex]; - item.iPresent = aPresent; - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::Id -// -// ----------------------------------------------------------------------------- -// -TInt64 CMediaFileHistory::Id( TInt aIndex ) - { - if ( aIndex < 0 || aIndex >= iList.Count() ) - { - TMFDialogUtil::Panic( KErrArgument ); - } - - TMediaFileHistoryItem& item = iList[aIndex]; - return item.iId; - - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::InternalizeL -// -// ----------------------------------------------------------------------------- -// -void CMediaFileHistory::InternalizeL( RReadStream& aStream ) - { - TInt count = aStream.ReadInt32L(); - if ( count < 0 || count > KMaxHistoryItemCount ) - { - User::Leave( KErrCorrupt ); - } - - for ( TInt i=0; i KMaxHistoryItemCount ) - { - iList.Remove( count - 1 ); - return ETrue; - } - - return EFalse; - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::AddItemL -// -// ----------------------------------------------------------------------------- -// -void CMediaFileHistory::AddItemL( TMediaFileHistoryItem aItem ) - { - TInt index = ItemIndex( aItem.iId ); - if ( index != KErrNotFound ) - { - iList.Remove(index); - } - - User::LeaveIfError( iList.Append( aItem ) ); - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::ItemIndex -// -// ----------------------------------------------------------------------------- -// -TInt CMediaFileHistory::ItemIndex( TInt aId ) - { - TInt count = iList.Count(); - - for (TInt i=0; i= iList.Count() ) - { - TMFDialogUtil::Panic( KErrArgument ); - } - - return iList[aIndex]; - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::Sort -// -// ----------------------------------------------------------------------------- -// -void CMediaFileHistory::Sort() - { - iList.Sort( TLinearOrder(CMediaFileHistory::CompareItems) ); - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::CompareItems -// -// ----------------------------------------------------------------------------- -// -TInt CMediaFileHistory::CompareItems( const TMediaFileHistoryItem& aFirst, - const TMediaFileHistoryItem& aSecond ) - { - if ( aFirst.iTime > aSecond.iTime ) - { - return -1; - } - else if ( aFirst.iTime < aSecond.iTime ) - { - return 1; - } - return 0; - } - - -// ----------------------------------------------------------------------------- -// CMediaFileHistory::GetTimeText -// -// ----------------------------------------------------------------------------- -// -void CMediaFileHistory::GetTimeText( TDes& aText, TTime aTime ) - { - _LIT( KFormat, "%02d.%02d.%04d %02d:%02d:%02d" ); - - TDateTime dt = aTime.DateTime(); - aText.Format( KFormat, dt.Day()+1, dt.Month()+1, dt.Year(), dt.Hour(), dt.Minute(), dt.Second() ); - } - -*/ - -#endif // #ifdef _DEBUG - -// End of File -