mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp
changeset 0 a2952bb97e68
child 1 7f2202662322
--- /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