--- /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 <eikclbd.h> // for CColumnListBoxData
+#include <coecobs.h> // MCoeControlObserver
+#include <AknUtils.h> // AknTextUtils AknFind
+#include <AknIconArray.h> // for GulArray
+#include <AknWaitDialog.h>
+#include <textresolver.h>
+#include <StringLoader.h>
+#include <akninputblock.h> // CAknInputBlock
+#include <eikon.hrh>
+
+#include <aknappui.h>
+#include <akntoolbar.h>
+#include <eikdialg.h>
+#include <eikdialogext.h>
+#include <aknselectionlist.h> // AknSelectionList.cpp
+#include <aknsfld.h> // CAknSearchField
+#include <eikcapc.h> // CEikCaptionedControl
+
+#include <aknconsts.h> // KAvkonBitmapFile, KAvkonVariatedBitmapsFile
+#include <AknsConstants.h> // icon constants
+#include <aknmemorycardui.mbg> // memory card icon
+#include <avkon.mbg>
+#include <StringLoader.h>
+
+#include <MMGFetchVerifier.h> // For VerifySelectionL()
+
+#include <audiofetcher.mbg>
+#include <audiofetcherdialog.rsg>
+#include "audiofetcherdialog.h"
+#include "audiofetcherfilehandler.h"
+
+#include "audiofetcher.hrh"
+#include "audiofetcherlog.h"
+
+#include <data_caging_path_literals.hrh> // 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<CGulIcon>* 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<CGulIcon>* 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