diff -r 000000000000 -r a2952bb97e68 mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp Thu Dec 17 08:55:47 2009 +0200 @@ -0,0 +1,915 @@ +/* +* Copyright (c) 2009 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: creates fetcher plugin dialog +* +*/ + + +// INCLUDES +#include // for CColumnListBoxData +#include // MCoeControlObserver +#include // AknTextUtils AknFind +#include // for GulArray +#include +#include +#include +#include // CAknInputBlock +#include + +#include +#include +#include +#include +#include // AknSelectionList.cpp +#include // CAknSearchField +#include // CEikCaptionedControl + +#include // KAvkonBitmapFile, KAvkonVariatedBitmapsFile +#include // icon constants +#include // memory card icon +#include +#include + +#include // For VerifySelectionL() + +#include +#include +#include "audiofetcherdialog.h" +#include "audiofetcherfilehandler.h" + +#include "audiofetcher.hrh" +#include "audiofetcherlog.h" + +#include // KDC_APP_RESOURCE_DIR + + +//----------------------------------------------------------------------------- +// C++ default constructor. +//----------------------------------------------------------------------------- +// +inline CAudioFetcherDialog::CAudioFetcherDialog( + CDesCArray& aSelectedFiles, + MMGFetchVerifier* aVerifier, + const TDesC& aTitle, + TBool aMultiSelectionEnabled, + TMediaFileType aMediaType) + : iSelectedFiles( aSelectedFiles ), + iVerifier( aVerifier ), + iTitle( aTitle ), + iMultiSelectionEnabled(aMultiSelectionEnabled), + iMediaType(aMediaType) + { + WLOG("CAudioFetcherDialog::CAudioFetcherDialog"); + // No implementation required + } + +//----------------------------------------------------------------------------- +// Two-phased constructor. +//----------------------------------------------------------------------------- +// +CAudioFetcherDialog* CAudioFetcherDialog::NewL(CDesCArray& aSelectedFiles, + MMGFetchVerifier* aVerifier, const TDesC& aTitle, TBool aMultiSelectionEnabled, + TMediaFileType aMediaType) + { + WLOG("CAudioFetcherDialog::NewL"); + CAudioFetcherDialog* self= + new( ELeave ) CAudioFetcherDialog( + aSelectedFiles, aVerifier, aTitle, aMultiSelectionEnabled, aMediaType ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +//----------------------------------------------------------------------------- +// Destructor +//----------------------------------------------------------------------------- +// +CAudioFetcherDialog::~CAudioFetcherDialog() + { + WLOG("CAudioFetcherDialog::~CAudioFetcherDialog >"); + + delete iStatusPaneHandler; + delete iListHandler; + delete iFileHandler; + delete iListBox; + delete iEmptyListText; + delete iIdle; + delete iInputBlock; + + // Restore the Toolbar as it was in the Calling application + if( iAvkonAppUi->CurrentFixedToolbar() ) // there is Hardware Specific Output for Fixed ToolBar + { + iAvkonAppUi->CurrentFixedToolbar()->SetToolbarVisibility( ETrue ); + } + + if ( iAvkonAppUi ) + { + iAvkonAppUi->RemoveFromStack( this ); + } + + WLOG("CAudioFetcherDialog::~CAudioFetcherDialog <"); + } + +//----------------------------------------------------------------------------- +// Symbian 2nd phase constructor can leave. +// Create the alfscreenbuffer with a generic buffer screen id +//----------------------------------------------------------------------------- +// +void CAudioFetcherDialog::ConstructL() + { + WLOG("CAudioFetcherDialog::ConstructL >"); + // always first call the base class + CAknDialog::ConstructL( R_AUDIOFETCHER_MENUBAR ); //R_MULTISELECT_AUDIOFETCHER_MENUBAR ); + + // Get the Instance of the toolbar and disable it as it is not required in the fetcher dialog + if( iAvkonAppUi->CurrentFixedToolbar() ) // there is hardware specific output for fixed toolBar + { + iAvkonAppUi->CurrentFixedToolbar()->SetToolbarVisibility( EFalse ); + } + + // get previous title so it can be restored + iStatusPaneHandler = CStatusPaneHandler::NewL( iAvkonAppUi ); + iStatusPaneHandler->StoreOriginalTitleL(); + + // MdS query handler + iFileHandler = CAudioFetcherFileHandler::NewL(); + iFileHandler->SetObserver( this ); + + // List model + iListHandler = CAudioFetcherListHandler::NewL(); + iListHandler->SetObserver( this ); + + WLOG("CAudioFetcherDialog::ConstructL <"); + } + +//----------------------------------------------------------------------------- +// CAudioFetcherDialog::ProcessCommandL +// This processes the events to the OkToExitL +//----------------------------------------------------------------------------- +// +void CAudioFetcherDialog::ProcessCommandL(TInt aCommandId) + { + WLOG("CAudioFetcherDialog::ProcessCommandL"); + switch( aCommandId ) + { + case EAknSoftkeyCancel : + { + TryExitL( aCommandId ); + break; + } + case EAknSoftkeySelect : + case ECmdSelectMarked : + case EAknSoftkeyOk : + { + TryExitL( aCommandId ); + break; + } + default : + { + break; + } + } + } +//----------------------------------------------------------------------------- +// CAudioFetcherDialog::OkToExitL +//----------------------------------------------------------------------------- +// +TBool CAudioFetcherDialog::OkToExitL(TInt aKeycode) + { + WLOG("CAudioFetcherDialog::OkToExitL"); + TBool retVal = EFalse; + + switch( aKeycode ) + { + case EAknSoftkeySelect : + { + TInt index = CurrentItemListIndex(); + TBuf<128> fileName; + + iFileHandler->GetAttribute( index, CAudioFetcherFileHandler::EAttrFullName, fileName, 0 ); + iSelectedFiles.AppendL( fileName ); + + // Retreives the uri's of the selected files and verifies if it is a + // supported format + if ( iVerifier && !iVerifier->VerifySelectionL( &iSelectedFiles ) ) + { + iSelectedFiles.Reset(); + retVal = EFalse; + } + else + { + retVal = ETrue; + } + break; + } + case EAknSoftkeyOk: + { + retVal = ETrue; + } + case EAknSoftkeyCancel : // exit dialog + case EAknCmdExit : + { + retVal = ETrue; + break; + } + default : + break; + } + return retVal; + } + +//----------------------------------------------------------------------------- +// CAudioFetcherDialog::SizeChanged +//----------------------------------------------------------------------------- +// +void CAudioFetcherDialog::SizeChanged() + { + WLOG("CAudioFetcherDialog::SizeChanged"); + // Can be implemented based on the use. + CAknDialog::SizeChanged(); + + TRect parentRect( Rect() ); + if ( iListBox ) + { + iListBox->SetRect( parentRect ); + } + } + +//----------------------------------------------------------------------------- +// CAudioFetcherDialog::PreLayoutDynInitL +//----------------------------------------------------------------------------- +// +void CAudioFetcherDialog::PreLayoutDynInitL() + { + WLOG("CAudioFetcherDialog::PreLayoutDynInitL >"); + + iListBox = new ( ELeave ) CAknSingleGraphicStyleListBox; + iListBox->ConstructL( this, EAknListBoxSelectionList ); + + iListBox->Model()->SetItemTextArray( iListHandler ); + iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); + + iListBox->SetListBoxObserver( this ); + iListBox->CreateScrollBarFrameL( ETrue ); + iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( + CEikScrollBarFrame::EOn, CEikScrollBarFrame::EAuto ); + + iListBox->SetListBoxObserver( this ); + + SetIconsL(); + + iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue ); + + if ( iMediaType == EAnyMediaFile ) + { + iEmptyListText = StringLoader::LoadL( R_AUDIOFETCHER_EMPTY_LIST_TEXT_NO_MEDIA ); + } + else + { + iEmptyListText = StringLoader::LoadL( R_AUDIOFETCHER_EMPTY_LIST_TEXT_NO_AUDIO ); + } + + + + iListBox->View()->SetListEmptyTextL( *iEmptyListText ); + + iStatusPaneHandler->SetTitleL( iTitle ); + iStatusPaneHandler->SetNaviPaneTitleL( KNullDesC ); + + CEikButtonGroupContainer& dialogCba = ButtonGroupContainer(); + dialogCba.MakeCommandVisible(EAknSoftkeySelect, EFalse); + + WLOG("CAudioFetcherDialog::PreLayoutDynInitL <"); + } + +//----------------------------------------------------------------------------- +// CAudioFetcherDialog::PostLayoutDynInitL +//----------------------------------------------------------------------------- +// +void CAudioFetcherDialog::PostLayoutDynInitL() + { + WLOG("CAudioFetcherDialog::PostLayoutDynInitL"); + } + +// ---------------------------------------------------------------------------- +// CAudioFetcherDialog::SetIconsL +// ---------------------------------------------------------------------------- +// +void CAudioFetcherDialog::SetIconsL() + { + WLOG("CAudioFetcherDialog::SetIconsL >"); + + _LIT( KBitmapFile, "AudioFetcher.mbm" ); + + + if ( !iListBox ) + { + return; + } + + SetIconFileNameL( KBitmapFile, iIconFileName ); + + CArrayPtr* icons = new (ELeave) CAknIconArray(1); + CleanupStack::PushL( icons ); + + // NOTE: append order must match TListIcons + // + + // music item icon + icons->AppendL( IconL( KAknsIIDQgnIndiAiNtMusic, iIconFileName, + EMbmAudiofetcherQgn_indi_ai_nt_music, + EMbmAudiofetcherQgn_indi_ai_nt_music_mask ) ); + + // tone item icon, default tone icon + icons->AppendL( IconL( KAknsIIDQgnPropMupAudio, iIconFileName, + EMbmAudiofetcherQgn_prop_mup_audio, + EMbmAudiofetcherQgn_prop_mup_audio_mask ) ); + + // video item icon + icons->AppendL( IconL( KAknsIIDQgnPropFmgrFileVideo, iIconFileName, + EMbmAudiofetcherQgn_prop_fmgr_file_video, + EMbmAudiofetcherQgn_prop_fmgr_file_video_mask ) ); + + // recording item icon + icons->AppendL( IconL( KAknsIIDQgnPropFmgrFileVoicerec, iIconFileName, + EMbmAudiofetcherQgn_prop_fmgr_file_voicerec, + EMbmAudiofetcherQgn_prop_fmgr_file_voicerec_mask ) ); + + // artist icon + icons->AppendL( IconL( KAknsIIDQgnPropMupArtist, iIconFileName, + EMbmAudiofetcherQgn_prop_mup_artist, + EMbmAudiofetcherQgn_prop_mup_artist_mask ) ); + + // album icon + icons->AppendL( IconL( KAknsIIDQgnPropMupAlbum, iIconFileName, + EMbmAudiofetcherQgn_prop_mup_album, + EMbmAudiofetcherQgn_prop_mup_album_mask ) ); + + // genre icon + icons->AppendL( IconL( KAknsIIDQgnPropMupGenre, iIconFileName, + EMbmAudiofetcherQgn_prop_mup_genre, + EMbmAudiofetcherQgn_prop_mup_genre_mask ) ); + + // composer icon + icons->AppendL( IconL( KAknsIIDQgnPropMupComposer, iIconFileName, + EMbmAudiofetcherQgn_prop_mup_composer, + EMbmAudiofetcherQgn_prop_mup_composer_mask ) ); + + // folder icon (tones, music, videos, recordings, all music, artist, + // album, genre, composer, artist all) + icons->AppendL( IconL( KAknsIIDQgnPropFolderSmall, iIconFileName, + EMbmAudiofetcherQgn_prop_folder_small, + EMbmAudiofetcherQgn_prop_folder_small_mask ) ); + + // unknown folder icon + icons->AppendL( IconL( KAknsIIDQgnPropMceUnknownRead, iIconFileName, + EMbmAudiofetcherQgn_prop_mce_unknown_read, + EMbmAudiofetcherQgn_prop_mce_unknown_read ) ); + + // download item icon (null item) + icons->AppendL( IconL( KAknsIIDQgnPropLinkEmbdSmall, iIconFileName, + EMbmAudiofetcherQgn_prop_link_embd_small, + EMbmAudiofetcherQgn_prop_link_embd_small_mask ) ); + + // off item icon (null item) + icons->AppendL( IconL( KAknsIIDQgnPropSmlSyncOff, iIconFileName, + EMbmAudiofetcherQgn_prop_sml_sync_off, + EMbmAudiofetcherQgn_prop_sml_sync_off_mask ) ); + + // memory card icon + icons->AppendL( IconL( KAknsIIDQgnIndiMmcAdd, iIconFileName, + EMbmAudiofetcherQgn_indi_mmc_add, + EMbmAudiofetcherQgn_indi_mmc_add_mask ) ); + + // mass storage icon + icons->AppendL( IconL( KAknsIIDQgnPropLinkEmbdSmall, iIconFileName, + EMbmAudiofetcherQgn_indi_fmgr_ms_add, + EMbmAudiofetcherQgn_indi_fmgr_ms_add_mask ) ); + + // empty icon + icons->AppendL( IconL( KAknsIIDQgnPropEmpty, KAvkonBitmapFile, + EMbmAvkonQgn_prop_empty, + EMbmAvkonQgn_prop_empty_mask ) ); + + // image item icon + icons->AppendL( IconL( KAknsIIDQgnPropFmgrFileImage, iIconFileName, + EMbmAudiofetcherQgn_prop_fmgr_file_image, + EMbmAudiofetcherQgn_prop_fmgr_file_image_mask ) ); + + // delete old icons + CArrayPtr* arr = iListBox->ItemDrawer()->ColumnData()->IconArray(); + if ( arr ) + { + arr->ResetAndDestroy(); + delete arr; + arr = NULL; + } + + iListBox->ItemDrawer()->ColumnData()->SetIconArray( icons ); + CleanupStack::Pop( icons ); + + WLOG("CAudioFetcherDialog::SetIconsL <"); + } + +// ---------------------------------------------------------------------------- +// CAudioFetcherDialog::SetIconFileNameL +// +// ---------------------------------------------------------------------------- +// +void CAudioFetcherDialog::SetIconFileNameL( const TDesC& aName, TDes& aFullName ) + { + WLOG("CAudioFetcherDialog::SetIconFileNameL >"); + _LIT( KDriveZ, "z:" ); + + aFullName = KNullDesC; + + aFullName.Append( KDriveZ ); + aFullName.Append( KDC_APP_RESOURCE_DIR ); + aFullName.Append( aName ); + + WLOG("CAudioFetcherDialog::SetIconFileNameL <"); + } + +// ----------------------------------------------------------------------------- +// CMediaFileDialog::IconL +// +// ----------------------------------------------------------------------------- +// +CGulIcon* CAudioFetcherDialog::IconL(TAknsItemID aId, const TDesC& aFileName, + TInt aFileIndex, TInt aFileMaskIndex) + { + WLOG("CAudioFetcherDialog::IconL"); + CGulIcon* icon = AknsUtils::CreateGulIconL(AknsUtils::SkinInstance(), aId, + aFileName, aFileIndex, aFileMaskIndex); + return icon; + } + + +// ----------------------------------------------------------------------------- +// CMediaFileDialog::UpdateListBoxL +// ----------------------------------------------------------------------------- +// +void CAudioFetcherDialog::UpdateListBoxL() + { + WLOG("CAudioFetcherDialog::UpdateListBoxL >"); + + if ( !iListBox ) + { + return; + } + + TInt resultCount = iFileHandler->ResultCount(); + + if(resultCount > 0){ + CEikButtonGroupContainer& dialogCba = ButtonGroupContainer(); + dialogCba.MakeCommandVisible(EAknSoftkeySelect, ETrue); + } + iListBox->HandleItemAdditionL(); + iListBox->SetCurrentItemIndex( 0 ); + DrawNow(); + + WLOG("CAudioFetcherDialog::UpdateListBoxL <"); + } + +//------------------------------------------------------------------------------ +// CAudioFetcherDialog::ActivateL +// +// Called by system when dialog is activated. +//------------------------------------------------------------------------------ +// +void CAudioFetcherDialog::ActivateL() + { + WLOG("CAudioFetcherDialog::ActivateL >"); + CAknDialog::ActivateL(); + + // this cannot be in ConstructL which is executed before dialog is launched + iAvkonAppUi->AddToStackL( this ); + WLOG("CAudioFetcherDialog::ActivateL <"); + } + +//----------------------------------------------------------------------------- +// CAudioFetcherDialog::DynInitMenuPaneL +//----------------------------------------------------------------------------- +void CAudioFetcherDialog::DynInitMenuPaneL( + TInt /*aResourceId*/, CEikMenuPane* /*aMenuPane*/ ) + { + WLOG("CAudioFetcherDialog::DynInitMenuPaneL"); + // No Implementation + } + + +// --------------------------------------------------------------------------- +// CAudioFetcherDialog::CountComponentControls +// +// Gets the number of controls contained in a compound control. +// --------------------------------------------------------------------------- +// +TInt CAudioFetcherDialog::CountComponentControls() const + { + return iListBox ? 1 : 0; + } + + +// --------------------------------------------------------------------------- +// CAudioFetcherDialog::CountComponentControls +// +// --------------------------------------------------------------------------- +// +CCoeControl* CAudioFetcherDialog::ComponentControl( TInt /*aIndex*/ ) const + { + return iListBox; + } + +//----------------------------------------------------------------------------- +// CAudioFetcherDialog::OfferKeyEventL +//----------------------------------------------------------------------------- +TKeyResponse CAudioFetcherDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType) + { + WLOG("CAudioFetcherDialog::OfferKeyEventL"); + TKeyResponse keyResponse( EKeyWasNotConsumed ); + + // Escape key was pressed and dialog needs to close + if ( aKeyEvent.iCode == EKeyEscape && aType == EEventKey ) + { + TryExitL( EAknSoftkeyCancel ); + keyResponse = EKeyWasConsumed; + } + else + { + keyResponse = iListBox->OfferKeyEventL( aKeyEvent, aType ); + } + return keyResponse; + } + +// ----------------------------------------------------------------------------- +// CAudioFetcherDialog::HandleListBoxEventL (from MEikListBoxObserver) +// ----------------------------------------------------------------------------- +// +void CAudioFetcherDialog::HandleListBoxEventL( CEikListBox* /*aListBox*/, + TListBoxEvent aEventType ) + { + WLOG("CAudioFetcherDialog::HandleListBoxEventL"); + + switch ( aEventType ) + { + case EEventItemDoubleClicked: // fallthrough + case EEventEnterKeyPressed: + { + TBool closeDialog = HandleListSelectionL(); + if ( closeDialog ) + { + // close after short delay (dialog cannot be closed from this function) + CloseDialogWithDelayL(); + } + break; + } + default: + break; + } + } + +// ----------------------------------------------------------------------------- +// CAudioFetcherDialog::CloseDialogWithDelayL +// ----------------------------------------------------------------------------- +// +void CAudioFetcherDialog::CloseDialogWithDelayL() + { + delete iIdle; + iIdle = NULL; + iIdle = CIdle::NewL( CActive::EPriorityIdle ); + + if ( iIdle ) + { + iIdle->Start( TCallBack( CloseDialog, this ) ); + } + delete iInputBlock; + iInputBlock = NULL; + iInputBlock = CAknInputBlock::NewLC(); + CleanupStack::Pop( iInputBlock ); + } + +// ----------------------------------------------------------------------------- +// CAudioFetcherDialog::CloseDialog +// ----------------------------------------------------------------------------- +// +TInt CAudioFetcherDialog::CloseDialog( TAny *aObj ) + { + CAudioFetcherDialog *dlg = (CAudioFetcherDialog*) aObj; + delete dlg->iInputBlock; + dlg->iInputBlock = NULL; + + TRAP_IGNORE( dlg->TryExitL( EAknSoftkeyOk ) ); + + return 0; + } + +// ----------------------------------------------------------------------------- +// CAudioFetcherDialog::ConstructListboxItem +// ----------------------------------------------------------------------------- +// +TPtrC CAudioFetcherDialog::ConstructListboxItem( TInt aListboxIndex ) + { + WLOG("CAudioFetcherDialog::ConstructListboxItem"); + _LIT( KFormat2, "%d\t%S\t%d" ); + + TInt mediaTypeIcon = EEIconEmpty; + TInt storageTypeIcon = EEIconEmpty; + + GetListItemText( aListboxIndex, iListboxItemText1 ); + mediaTypeIcon = MediaTypeIcon( aListboxIndex ); + storageTypeIcon = StorageTypeIcon( aListboxIndex ); + + iListboxItemText2.Format( KFormat2, mediaTypeIcon, &iListboxItemText1, storageTypeIcon ); + return iListboxItemText2; + } + + +// ----------------------------------------------------------------------------- +// CAudioFetcherDialog::StorageTypeIcon +// ----------------------------------------------------------------------------- +// +TInt CAudioFetcherDialog::StorageTypeIcon( TInt aListboxIndex ) + { + WLOG("CAudioFetcherDialog::StorageTypeIcon"); + if ( aListboxIndex < 0 ) + { + return EEIconEmpty; + } + + TInt storageType = iFileHandler->Attribute( aListboxIndex, + CAudioFetcherFileHandler::EAttrStorageType, 0 ); + TInt iconId = EEIconEmpty; + + if ( storageType == CAudioFetcherFileHandler::EMemoryCard ) + { + iconId = EEIconMemoryCard; + } + else if ( storageType == CAudioFetcherFileHandler::EMassStorage ) + { + iconId = EEIconMassStorage; + } + + return iconId; + } + + +// ----------------------------------------------------------------------------- +// CAudioFetcherDialog::MediaTypeIcon +// ----------------------------------------------------------------------------- +// +TInt CAudioFetcherDialog::MediaTypeIcon( TInt aListboxIndex ) + { + WLOG("CAudioFetcherDialog::MediaTypeIcon"); + if ( aListboxIndex < 0 ) + { + return EEIconEmpty; + } + + TInt mediaType = iFileHandler->Attribute( aListboxIndex, + CAudioFetcherFileHandler::EAttrMediaType, 0 ); + + TInt iconId = EEIconEmpty; + + switch ( mediaType ) + { + case CAudioFetcherFileHandler::EMediaTypeImage: + { + iconId = EEIconImage; + break; + } + case CAudioFetcherFileHandler::EMediaTypeVideo: + { + iconId = EEIconVideo; + break; + } + case CAudioFetcherFileHandler::EMediaTypeTone: + { + iconId = EEIconTone; + break; + } + case CAudioFetcherFileHandler::EMediaTypeRecording: + { + iconId = EEIconRecording; + break; + } + case CAudioFetcherFileHandler::EMediaTypeMusic: + { + iconId = EEIconMusic; + break; + } + default: + break; + } + + return iconId; + } + +// ----------------------------------------------------------------------------- +// CAudioFetcherDialog::ListboxItemCount (from MAudioFetcherListHandlerObserver) +// ----------------------------------------------------------------------------- +// +TInt CAudioFetcherDialog::ListboxItemCount() + { + WLOG("CAudioFetcherDialog::ListboxItemCount"); + return iFileHandler->ResultCount(); + } + + + +// ----------------------------------------------------------------------------- +// CAudioFetcherDialog::HandleFileEventL (from MAudioFetcherFileHandlerObserver) +// ----------------------------------------------------------------------------- +// +void CAudioFetcherDialog::HandleFileEventL( TInt aEvent, TInt aError ) + { + WLOG("CAudioFetcherDialog::HandleFileEventL >"); + // handle cancel button + if ( aEvent == MAudioFetcherFileHandlerObserver::EQueryCanceled ) + { + WLOG("CAudioFetcherDialog::HandleFileEventL == EQueryCanceled"); + UpdateListBoxL(); + return; + } + + // handle error + if ( aError != KErrNone ) + { + WLOG1("### CAudioFetcherDialog::HandleFileEventL (%d) ###", aError ); + return; + } + + if ( aEvent != MAudioFetcherFileHandlerObserver::EUnknownQueryComplete ) + { + WLOG("CAudioFetcherDialog::HandleFileEventL != EUnknownQueryComplete"); + } + + if ( aEvent == MAudioFetcherFileHandlerObserver::EUnknownQueryComplete ) + { + WLOG("CAudioFetcherDialog::HandleFileEventL == EUnknownQueryComplete"); + } + + if ( aEvent == MAudioFetcherFileHandlerObserver::EQueryComplete ) + { + WLOG("CAudioFetcherDialog::HandleFileEventL == EQueryComplete"); + + + if ( iMediaType == EAnyMediaFile ) + { + // in case of all media files, fetch video files next + if ( iFileHandler->QueryType() == CAudioFetcherFileHandler::EMediaTypeMusic ) + { + iFileHandler->QueryVideoL(); + } + else if ( iFileHandler->QueryType() == CAudioFetcherFileHandler::EMediaTypeVideo ) + { + iFileHandler->QueryImageL(); + } + else + { + UpdateListBoxL(); + } + + } + else + { + UpdateListBoxL(); + } + } + + if ( aEvent == MAudioFetcherFileHandlerObserver::EMediaFileChanged ) + { + WLOG("CAudioFetcherDialog::HandleFileEventL == EMediaFileChanged"); + } + + if ( aEvent == MAudioFetcherFileHandlerObserver::EInitComplete ) + { + WLOG("CAudioFetcherDialog::HandleFileEventL == EInitComplete"); + iDatabaseOpen = ETrue; + QueryL(); + } + + WLOG("CAudioFetcherDialog::HandleFileEventL <"); + } + + +// ----------------------------------------------------------------------------- +// CAudioFetcherDialog::GetListItemText +// +// ----------------------------------------------------------------------------- +// +void CAudioFetcherDialog::GetListItemText( TInt aListboxIndex, TDes& aText ) + { + WLOG("CAudioFetcherDialog::GetListItemText"); + iFileHandler->GetAttribute( aListboxIndex, + CAudioFetcherFileHandler::EAttrSongName, aText, 0 ); + } + + + +// ----------------------------------------------------------------------------- +// CAudioFetcherDialog::CurrentItemListIndex +// +// ----------------------------------------------------------------------------- +// +TInt CAudioFetcherDialog::CurrentItemListIndex() + { + WLOG("CAudioFetcherDialog::CurrentItemListIndex"); + TInt itemCount = iListBox->Model()->NumberOfItems(); + TInt currentIndex = iListBox->CurrentItemIndex(); + + if ( itemCount == 0 || currentIndex < 0 ) + { + return KErrNotFound; // list or find box is empty + } + return currentIndex; + } + + +//------------------------------------------------------------------------------ +// CMediaFileDialog::QueryL +// +//------------------------------------------------------------------------------ +// +void CAudioFetcherDialog::QueryL() + { + WLOG("CAudioFetcherDialog::QueryL >"); + if ( !iFileHandler->QueryReady() || !iDatabaseOpen ) + { + WLOG("CAudioFetcherDialog::QueryL: query in progress"); + return; + } + + iFileHandler->EnableObserverCall( ETrue ); + iFileHandler->SetQueryId( 0 ); + iFileHandler->QueryAudioL(); + + WLOG("CAudioFetcherDialog::QueryL <"); + } + +// ---------------------------------------------------------------------------- +// CAudioFetcherDialog::HandleResourceChange +// ---------------------------------------------------------------------------- +// +void CAudioFetcherDialog::HandleResourceChange(TInt aType) + { + WLOG("CAudioFetcherDialog::HandleResourceChange"); + if (aType == KAknsMessageSkinChange) + { + TRAP_IGNORE( SetIconsL() ); + } + else if ( aType == KEikDynamicLayoutVariantSwitch ) + { + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EMainPane, mainPaneRect ); + SetRect( mainPaneRect ); + TRAP_IGNORE( iStatusPaneHandler->SetTitleL( iTitle ) ); + TRAP_IGNORE( iStatusPaneHandler->SetNaviPaneTitleL( KNullDesC ) ); + DrawDeferred(); + } + + CCoeControl::HandleResourceChange( aType ); + } + + +// ---------------------------------------------------------------------------- +// CAudioFetcherDialog::HandleListSelection +// ---------------------------------------------------------------------------- +// +TBool CAudioFetcherDialog::HandleListSelectionL() + { + TBool closeDialog = EFalse; + + TInt index = CurrentItemListIndex(); + TBuf<128> fileName; + + iFileHandler->GetAttribute( index, CAudioFetcherFileHandler::EAttrFullName, fileName, 0 ); + iSelectedFiles.AppendL( fileName ); + + // Retreives the uri's of the selected files and verifies if it is a + // supported format + if ( iVerifier && !iVerifier->VerifySelectionL( &iSelectedFiles ) ) + { + iSelectedFiles.Reset(); + closeDialog = EFalse; + } + else + { + closeDialog = ETrue; + } + return closeDialog; + } + +// End of File