profilesservices/MediaFileList/Src/mediafiledialog.cpp
author hgs
Thu, 04 Nov 2010 13:38:47 +0800
changeset 68 13e71d907dc3
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
68
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   Class of Mediafiledialog. UI control of mediafilelist
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
// INCLUDE FILES
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include "mediafiledialog.h"
hgs
parents:
diff changeset
    24
#include "mediafiledialogutils.h"
hgs
parents:
diff changeset
    25
#include "mediafilelist.h"
hgs
parents:
diff changeset
    26
#include "mediafilehandler.h"
hgs
parents:
diff changeset
    27
#include "mediafilelistdebug.h"
hgs
parents:
diff changeset
    28
#include "mediafileprotection.h"
hgs
parents:
diff changeset
    29
#include "mediafilevideopreviewdialog.h"
hgs
parents:
diff changeset
    30
#include "mediafiletest.h"  // test code
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
#include <eikclbd.h>        // for CColumnListBoxData
hgs
parents:
diff changeset
    33
#include <coecobs.h>        // MCoeControlObserver
hgs
parents:
diff changeset
    34
#include <AknUtils.h>       // AknTextUtils AknFind
hgs
parents:
diff changeset
    35
#include <AknIconArray.h>   // for GulArray
hgs
parents:
diff changeset
    36
#include <AknWaitDialog.h>
hgs
parents:
diff changeset
    37
#include <textresolver.h>
hgs
parents:
diff changeset
    38
#include <StringLoader.h>
hgs
parents:
diff changeset
    39
#include <akninputblock.h>      // CAknInputBlock
hgs
parents:
diff changeset
    40
#include <mmferrors.h> 
hgs
parents:
diff changeset
    41
// search field
hgs
parents:
diff changeset
    42
#include <aknselectionlist.h>  // AknSelectionList.cpp
hgs
parents:
diff changeset
    43
#include <aknsfld.h>           // CAknSearchField
hgs
parents:
diff changeset
    44
#include <eikcapc.h>         // CEikCaptionedControl
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
#include <aknconsts.h>         // KAvkonBitmapFile, KAvkonVariatedBitmapsFile
hgs
parents:
diff changeset
    47
#include <AknsConstants.h>     // icon constants
hgs
parents:
diff changeset
    48
#include <aknmemorycardui.mbg> // memory card icon
hgs
parents:
diff changeset
    49
#include <avkon.mbg>
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
#include <avkon.loc>
hgs
parents:
diff changeset
    52
#include <mediafilelist.rsg>
hgs
parents:
diff changeset
    53
#include <mediafilelist.mbg>
hgs
parents:
diff changeset
    54
#include <data_caging_path_literals.hrh> // KDC_APP_RESOURCE_DIR
hgs
parents:
diff changeset
    55
#include <touchfeedback.h>      // For MTouchFeedback
hgs
parents:
diff changeset
    56
#include <apgcli.h>     // RApaLsSession
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
const TUid KOviLauncher = {0x2002D07F};
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
_LIT( KDownloadSound, "ringtones" );
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
/******************************************************************************
hgs
parents:
diff changeset
    68
 * class CMediaFileDialog
hgs
parents:
diff changeset
    69
 ******************************************************************************/
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    74
// CMediaFileDialog::NewL
hgs
parents:
diff changeset
    75
//
hgs
parents:
diff changeset
    76
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    77
CMediaFileDialog* CMediaFileDialog::NewL()
hgs
parents:
diff changeset
    78
    {
hgs
parents:
diff changeset
    79
    FLOG( _L("CMediaFileDialog::NewL START") );
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
    CMediaFileDialog* self = new (ELeave) CMediaFileDialog();
hgs
parents:
diff changeset
    82
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    83
    self->ConstructL();
hgs
parents:
diff changeset
    84
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
    FLOG( _L("CMediaFileDialog::NewL END") );
hgs
parents:
diff changeset
    87
    return self;
hgs
parents:
diff changeset
    88
    }
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    92
// CMediaFileDialog::CMediaFileDialog
hgs
parents:
diff changeset
    93
// 
hgs
parents:
diff changeset
    94
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    95
//
hgs
parents:
diff changeset
    96
CMediaFileDialog::CMediaFileDialog()
hgs
parents:
diff changeset
    97
	{
hgs
parents:
diff changeset
    98
	FLOG( _L("CMediaFileDialog::CMediaFileDialog START") );
hgs
parents:
diff changeset
    99
    
hgs
parents:
diff changeset
   100
	iResourceFileId = KErrNotFound;
hgs
parents:
diff changeset
   101
    iForeGround = ETrue;
hgs
parents:
diff changeset
   102
    iDatabaseOpen = EFalse;
hgs
parents:
diff changeset
   103
    iPeninputActive = EFalse;
hgs
parents:
diff changeset
   104
    
hgs
parents:
diff changeset
   105
    iNullItemFileTypeOne = KErrNotFound;
hgs
parents:
diff changeset
   106
    iNullItemFileTypeTwo = KErrNotFound;
hgs
parents:
diff changeset
   107
    iDialogTitle = KNullDesC;
hgs
parents:
diff changeset
   108
    iIsDoubleClicked = EFalse;
hgs
parents:
diff changeset
   109
   
hgs
parents:
diff changeset
   110
    FLOG( _L("CMediaFileDialog::CMediaFileDialog END") );
hgs
parents:
diff changeset
   111
    }
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   115
// Destructor
hgs
parents:
diff changeset
   116
//
hgs
parents:
diff changeset
   117
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   118
//
hgs
parents:
diff changeset
   119
CMediaFileDialog::~CMediaFileDialog()
hgs
parents:
diff changeset
   120
    {
hgs
parents:
diff changeset
   121
    FLOG( _L("CMediaFileDialog::~CMediaFileDialog START") );
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
    if ( iResourceFileId != KErrNotFound )
hgs
parents:
diff changeset
   124
        {
hgs
parents:
diff changeset
   125
        CEikonEnv::Static()->DeleteResourceFile( iResourceFileId );
hgs
parents:
diff changeset
   126
        }
hgs
parents:
diff changeset
   127
 	
hgs
parents:
diff changeset
   128
    delete iStatusPaneHandler;
hgs
parents:
diff changeset
   129
 	delete iMFListHandler;
hgs
parents:
diff changeset
   130
 	delete iMediaFileHandler;
hgs
parents:
diff changeset
   131
 	delete iState;
hgs
parents:
diff changeset
   132
	
hgs
parents:
diff changeset
   133
    delete iFindCtrl;
hgs
parents:
diff changeset
   134
    delete iCaller;
hgs
parents:
diff changeset
   135
    delete iSearchCaller;
hgs
parents:
diff changeset
   136
    
hgs
parents:
diff changeset
   137
    delete iAudioPreviewHandler;
hgs
parents:
diff changeset
   138
    delete iVideoPreviewHandler;
hgs
parents:
diff changeset
   139
    
hgs
parents:
diff changeset
   140
    delete iNullItemFileNameOne;
hgs
parents:
diff changeset
   141
    delete iNullItemFileNameTwo;
hgs
parents:
diff changeset
   142
    
hgs
parents:
diff changeset
   143
    if ( iAvkonAppUi )
hgs
parents:
diff changeset
   144
    	{
hgs
parents:
diff changeset
   145
    	iAvkonAppUi->RemoveFromStack(this);
hgs
parents:
diff changeset
   146
    	}
hgs
parents:
diff changeset
   147
    	
hgs
parents:
diff changeset
   148
    CCoeEnv::Static()->RemoveForegroundObserver( *this );
hgs
parents:
diff changeset
   149
    
hgs
parents:
diff changeset
   150
    if ( iPopupNote )
hgs
parents:
diff changeset
   151
        {
hgs
parents:
diff changeset
   152
        iPopupNote->HideInfoPopupNote();
hgs
parents:
diff changeset
   153
        delete iPopupNote;
hgs
parents:
diff changeset
   154
        }
hgs
parents:
diff changeset
   155
    
hgs
parents:
diff changeset
   156
    delete iWaitNote;
hgs
parents:
diff changeset
   157
    if ( AknLayoutUtils::PenEnabled() )
hgs
parents:
diff changeset
   158
        {
hgs
parents:
diff changeset
   159
        iPeninputServer.RemovePenUiActivationHandler();
hgs
parents:
diff changeset
   160
        iPeninputServer.Close();
hgs
parents:
diff changeset
   161
        }
hgs
parents:
diff changeset
   162
    
hgs
parents:
diff changeset
   163
    delete iIdle;
hgs
parents:
diff changeset
   164
    
hgs
parents:
diff changeset
   165
    delete iProtectionHandler;
hgs
parents:
diff changeset
   166
    
hgs
parents:
diff changeset
   167
    delete iInputBlock;
hgs
parents:
diff changeset
   168
   
hgs
parents:
diff changeset
   169
#ifdef _DEBUG    
hgs
parents:
diff changeset
   170
    delete iTest;  // test code
hgs
parents:
diff changeset
   171
#endif
hgs
parents:
diff changeset
   172
	
hgs
parents:
diff changeset
   173
    FLOG( _L("CMediaFileDialog::~CMediaFileDialog END") );
hgs
parents:
diff changeset
   174
    }
hgs
parents:
diff changeset
   175
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   178
// CMediaFileDialog::ConstructL
hgs
parents:
diff changeset
   179
//
hgs
parents:
diff changeset
   180
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   181
//
hgs
parents:
diff changeset
   182
void CMediaFileDialog::ConstructL()
hgs
parents:
diff changeset
   183
    {
hgs
parents:
diff changeset
   184
    FLOG( _L("CMediaFileDialog::ConstructL START") );
hgs
parents:
diff changeset
   185
	
hgs
parents:
diff changeset
   186
    iResourceFileId = TMFDialogUtil::AddResFileL();
hgs
parents:
diff changeset
   187
    
hgs
parents:
diff changeset
   188
    CCoeEnv* coeEnv = CCoeEnv::Static();
hgs
parents:
diff changeset
   189
    coeEnv->AddForegroundObserverL( *this );
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
	CAknDialog::ConstructL( R_MEDIA_FILE_DIALOG_MENU );
hgs
parents:
diff changeset
   192
	
hgs
parents:
diff changeset
   193
    if ( iMenuBar )
hgs
parents:
diff changeset
   194
        {
hgs
parents:
diff changeset
   195
    	iMenuBar->SetContextMenuTitleResourceId(
hgs
parents:
diff changeset
   196
		R_MEDIA_FILE_DIALOG_CONTEXT_MENU );
hgs
parents:
diff changeset
   197
	    }
hgs
parents:
diff changeset
   198
	
hgs
parents:
diff changeset
   199
	// get previous title so it can be restored
hgs
parents:
diff changeset
   200
	iStatusPaneHandler = CStatusPaneHandler::NewL( iAvkonAppUi );
hgs
parents:
diff changeset
   201
	iStatusPaneHandler->StoreOriginalTitleL();
hgs
parents:
diff changeset
   202
	
hgs
parents:
diff changeset
   203
	iMediaFileHandler = CMediaFileHandler::NewL();
hgs
parents:
diff changeset
   204
	iMediaFileHandler->SetObserver( this );
hgs
parents:
diff changeset
   205
	
hgs
parents:
diff changeset
   206
    iState = CMediaFileDialogState::NewL();
hgs
parents:
diff changeset
   207
    
hgs
parents:
diff changeset
   208
#ifndef RD_VIDEO_AS_RINGING_TONE    
hgs
parents:
diff changeset
   209
    iState->HideRootFolder( EEFolderVideos, ETrue,
hgs
parents:
diff changeset
   210
                            KNullDesC, KErrNotFound );
hgs
parents:
diff changeset
   211
    
hgs
parents:
diff changeset
   212
    iMediaFileHandler->SetAttrL( CMediaFileList::EAttrExcludeFolder, CMediaFileList::EFolderVideos );
hgs
parents:
diff changeset
   213
#endif
hgs
parents:
diff changeset
   214
 
hgs
parents:
diff changeset
   215
    iMFListHandler = CMFListHandler::NewL();
hgs
parents:
diff changeset
   216
    iMFListHandler->SetObserver( this );
hgs
parents:
diff changeset
   217
    
hgs
parents:
diff changeset
   218
    iCaller = CMFActiveCaller::NewL( this );
hgs
parents:
diff changeset
   219
    iSearchCaller = CMFActiveCaller::NewL( this );
hgs
parents:
diff changeset
   220
    
hgs
parents:
diff changeset
   221
    iAudioPreviewHandler = CMFAudioPreviewHandler::NewL();
hgs
parents:
diff changeset
   222
    iVideoPreviewHandler = CMFVideoPreviewHandler::NewL();
hgs
parents:
diff changeset
   223
    
hgs
parents:
diff changeset
   224
    iAudioPreviewHandler->SetObserver( this );
hgs
parents:
diff changeset
   225
    
hgs
parents:
diff changeset
   226
    iPopupNote = CAknInfoPopupNoteController::NewL();
hgs
parents:
diff changeset
   227
    
hgs
parents:
diff changeset
   228
    iWaitNote = CMediaFileWaitNote::NewL( this );
hgs
parents:
diff changeset
   229
    
hgs
parents:
diff changeset
   230
    if ( AknLayoutUtils::PenEnabled() )
hgs
parents:
diff changeset
   231
        { 
hgs
parents:
diff changeset
   232
        User::LeaveIfError( iPeninputServer.Connect() ); 
hgs
parents:
diff changeset
   233
        iPeninputServer.AddPenUiActivationHandler( this, EPluginInputModeAll );
hgs
parents:
diff changeset
   234
        }
hgs
parents:
diff changeset
   235
    
hgs
parents:
diff changeset
   236
    iProtectionHandler = CMFProtectionHandler::NewL();
hgs
parents:
diff changeset
   237
    
hgs
parents:
diff changeset
   238
#ifdef _DEBUG    
hgs
parents:
diff changeset
   239
    iTest = CMFDialogTest::NewL( this );  // test code
hgs
parents:
diff changeset
   240
#endif
hgs
parents:
diff changeset
   241
   
hgs
parents:
diff changeset
   242
	FLOG( _L("CMediaFileDialog::ConstructL END") );
hgs
parents:
diff changeset
   243
    }
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
hgs
parents:
diff changeset
   246
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   247
// CMediaFileDialog::ShowDialogL
hgs
parents:
diff changeset
   248
// 
hgs
parents:
diff changeset
   249
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   250
TBool CMediaFileDialog::ShowDialogL( TDes* aFileName, TInt* aNullItem,
hgs
parents:
diff changeset
   251
                                     TInt* aInfo, TDes* aDesInfo )
hgs
parents:
diff changeset
   252
	{
hgs
parents:
diff changeset
   253
	__ASSERT_ALWAYS( aFileName, Panic( KErrGeneral ) );
hgs
parents:
diff changeset
   254
	__ASSERT_ALWAYS( aNullItem, Panic( KErrGeneral ) );
hgs
parents:
diff changeset
   255
	
hgs
parents:
diff changeset
   256
	iFileName = aFileName;
hgs
parents:
diff changeset
   257
	
hgs
parents:
diff changeset
   258
	iNullItem = aNullItem;
hgs
parents:
diff changeset
   259
	*iNullItem = KErrNotFound;
hgs
parents:
diff changeset
   260
	
hgs
parents:
diff changeset
   261
	iInfo = aInfo;
hgs
parents:
diff changeset
   262
	iDesInfo = aDesInfo;
hgs
parents:
diff changeset
   263
	
hgs
parents:
diff changeset
   264
	TBool ret = ExecuteLD( R_MEDIA_FILE_DIALOG );
hgs
parents:
diff changeset
   265
	
hgs
parents:
diff changeset
   266
	return ret;
hgs
parents:
diff changeset
   267
	}
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   271
// CMediaFileDialog::SetAttrL
hgs
parents:
diff changeset
   272
// 
hgs
parents:
diff changeset
   273
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   274
void CMediaFileDialog::SetAttrL( TInt aAttr, TInt aValue )
hgs
parents:
diff changeset
   275
	{
hgs
parents:
diff changeset
   276
	iAudioPreviewHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   277
	iVideoPreviewHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   278
	iMediaFileHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   279
	iProtectionHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   280
hgs
parents:
diff changeset
   281
    if ( aAttr == CMediaFileList::EAttrExcludeFolder )
hgs
parents:
diff changeset
   282
        {
hgs
parents:
diff changeset
   283
        if ( aValue  == CMediaFileList::EFolderDownload )
hgs
parents:
diff changeset
   284
            {
hgs
parents:
diff changeset
   285
            iState->HideRootFolder( EEFolderDownload, ETrue,
hgs
parents:
diff changeset
   286
                                    KNullDesC, KErrNotFound );
hgs
parents:
diff changeset
   287
            }
hgs
parents:
diff changeset
   288
        if ( aValue  == CMediaFileList::EFolderVideos )
hgs
parents:
diff changeset
   289
            {
hgs
parents:
diff changeset
   290
            iState->HideRootFolder( EEFolderVideos, ETrue,
hgs
parents:
diff changeset
   291
                                    KNullDesC, KErrNotFound );
hgs
parents:
diff changeset
   292
            }
hgs
parents:
diff changeset
   293
        }
hgs
parents:
diff changeset
   294
	}
hgs
parents:
diff changeset
   295
hgs
parents:
diff changeset
   296
hgs
parents:
diff changeset
   297
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   298
// CMediaFileDialog::SetAttrL
hgs
parents:
diff changeset
   299
// 
hgs
parents:
diff changeset
   300
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   301
void CMediaFileDialog::SetAttrL( TInt aAttr, const TDesC& aValue )
hgs
parents:
diff changeset
   302
	{
hgs
parents:
diff changeset
   303
	iAudioPreviewHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   304
	iVideoPreviewHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   305
	iMediaFileHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   306
    iProtectionHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   307
	
hgs
parents:
diff changeset
   308
	if ( aAttr == CMediaFileList::EAttrTitle )
hgs
parents:
diff changeset
   309
	    {
hgs
parents:
diff changeset
   310
	    TMFDialogUtil::StrCopy( iDialogTitle, aValue );
hgs
parents:
diff changeset
   311
	    }
hgs
parents:
diff changeset
   312
	}
hgs
parents:
diff changeset
   313
hgs
parents:
diff changeset
   314
hgs
parents:
diff changeset
   315
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   316
// CMediaFileDialog::SetAttrL
hgs
parents:
diff changeset
   317
// 
hgs
parents:
diff changeset
   318
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   319
void CMediaFileDialog::SetAttrL( TInt aAttr, TAny* aValue )
hgs
parents:
diff changeset
   320
    {
hgs
parents:
diff changeset
   321
    iAudioPreviewHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   322
    iVideoPreviewHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   323
    iMediaFileHandler->SetAttrL( aAttr, aValue );
hgs
parents:
diff changeset
   324
    }
hgs
parents:
diff changeset
   325
hgs
parents:
diff changeset
   326
hgs
parents:
diff changeset
   327
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   328
// CMediaFileDialog::SetNullItemL
hgs
parents:
diff changeset
   329
//
hgs
parents:
diff changeset
   330
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   331
//
hgs
parents:
diff changeset
   332
void CMediaFileDialog::SetNullItemL( const TDesC& aText, 
hgs
parents:
diff changeset
   333
                                     const TDesC& aMediaFile,
hgs
parents:
diff changeset
   334
                                     TInt aMediaFileType, TInt aIconId )
hgs
parents:
diff changeset
   335
    {
hgs
parents:
diff changeset
   336
    TInt iconId = EEIconEmpty;
hgs
parents:
diff changeset
   337
    if ( aIconId == CMediaFileList::ENullItemIconDefaultTone )
hgs
parents:
diff changeset
   338
        {
hgs
parents:
diff changeset
   339
        iconId = EEIconTone;
hgs
parents:
diff changeset
   340
        }
hgs
parents:
diff changeset
   341
    else if ( aIconId == CMediaFileList::ENullItemIconOff )
hgs
parents:
diff changeset
   342
        {
hgs
parents:
diff changeset
   343
        iconId = EEIconNullItemOff;
hgs
parents:
diff changeset
   344
        }
hgs
parents:
diff changeset
   345
        
hgs
parents:
diff changeset
   346
    TInt mediaType = CMediaFileList::EMediaFileTypeAudio;
hgs
parents:
diff changeset
   347
    if ( aMediaFileType == CMediaFileList::EMediaFileTypeVideo )
hgs
parents:
diff changeset
   348
        {
hgs
parents:
diff changeset
   349
        mediaType = CMediaFileList::EMediaFileTypeVideo;
hgs
parents:
diff changeset
   350
        }
hgs
parents:
diff changeset
   351
        
hgs
parents:
diff changeset
   352
        
hgs
parents:
diff changeset
   353
    if ( !iNullItemFileNameOne )
hgs
parents:
diff changeset
   354
        {
hgs
parents:
diff changeset
   355
        iNullItemFileNameOne = aMediaFile.AllocL();
hgs
parents:
diff changeset
   356
        iNullItemFileTypeOne = mediaType;
hgs
parents:
diff changeset
   357
        
hgs
parents:
diff changeset
   358
        iState->EnableNullItemL( EEFolderNullItemOne, aText, iconId );
hgs
parents:
diff changeset
   359
        }
hgs
parents:
diff changeset
   360
    else if ( !iNullItemFileNameTwo )
hgs
parents:
diff changeset
   361
        {
hgs
parents:
diff changeset
   362
        iNullItemFileNameTwo = aMediaFile.AllocL();
hgs
parents:
diff changeset
   363
        iNullItemFileTypeTwo = mediaType;
hgs
parents:
diff changeset
   364
        
hgs
parents:
diff changeset
   365
        iState->EnableNullItemL( EEFolderNullItemTwo, aText, iconId );
hgs
parents:
diff changeset
   366
        }
hgs
parents:
diff changeset
   367
    else
hgs
parents:
diff changeset
   368
        {
hgs
parents:
diff changeset
   369
        User::Leave( KErrNotSupported ); // two null items supported
hgs
parents:
diff changeset
   370
        }
hgs
parents:
diff changeset
   371
    }
hgs
parents:
diff changeset
   372
hgs
parents:
diff changeset
   373
hgs
parents:
diff changeset
   374
hgs
parents:
diff changeset
   375
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
   376
// CMediaFileDialog::ActivateL
hgs
parents:
diff changeset
   377
//
hgs
parents:
diff changeset
   378
// Called by system when dialog is activated.
hgs
parents:
diff changeset
   379
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
   380
//
hgs
parents:
diff changeset
   381
void CMediaFileDialog::ActivateL()
hgs
parents:
diff changeset
   382
	{
hgs
parents:
diff changeset
   383
    CAknDialog::ActivateL();
hgs
parents:
diff changeset
   384
hgs
parents:
diff changeset
   385
	// this cannot be in ConstructL which is executed before dialog is launched
hgs
parents:
diff changeset
   386
	iAvkonAppUi->AddToStackL( this );
hgs
parents:
diff changeset
   387
	AknFind::HandleFixedFindSizeChanged( this, iListBox, FindBox() );
hgs
parents:
diff changeset
   388
	DrawNow();
hgs
parents:
diff changeset
   389
    }
hgs
parents:
diff changeset
   390
hgs
parents:
diff changeset
   391
hgs
parents:
diff changeset
   392
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   393
// CMediaFileDialog::PreLayoutDynInitL
hgs
parents:
diff changeset
   394
// 
hgs
parents:
diff changeset
   395
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   396
//
hgs
parents:
diff changeset
   397
void CMediaFileDialog::PreLayoutDynInitL()
hgs
parents:
diff changeset
   398
    {
hgs
parents:
diff changeset
   399
    const TInt KFindBoxLength = 20;
hgs
parents:
diff changeset
   400
    
hgs
parents:
diff changeset
   401
    iListBox = (CAknSingleGraphicStyleListBox*) (ControlOrNull(1));
hgs
parents:
diff changeset
   402
    iListBox->DisableSingleClick(ETrue);
hgs
parents:
diff changeset
   403
   	__ASSERT_ALWAYS( iListBox, TMFDialogUtil::Panic( KErrGeneral ) );
hgs
parents:
diff changeset
   404
    
hgs
parents:
diff changeset
   405
    iListBox->Model()->SetItemTextArray( iMFListHandler );
hgs
parents:
diff changeset
   406
    iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
hgs
parents:
diff changeset
   407
    
hgs
parents:
diff changeset
   408
	iListBox->SetListBoxObserver( this );
hgs
parents:
diff changeset
   409
	iListBox->CreateScrollBarFrameL( ETrue );
hgs
parents:
diff changeset
   410
	iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
hgs
parents:
diff changeset
   411
	                 CEikScrollBarFrame::EOn, CEikScrollBarFrame::EAuto );
hgs
parents:
diff changeset
   412
	
hgs
parents:
diff changeset
   413
	iListBox->SetContainerWindowL( *this );
hgs
parents:
diff changeset
   414
	
hgs
parents:
diff changeset
   415
	SetIconsL();
hgs
parents:
diff changeset
   416
	
hgs
parents:
diff changeset
   417
	iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
    iState->Init();
hgs
parents:
diff changeset
   421
    
hgs
parents:
diff changeset
   422
    if ( iDialogTitle.Length() > 0 )
hgs
parents:
diff changeset
   423
        {
hgs
parents:
diff changeset
   424
        iStatusPaneHandler->SetTitleL( iDialogTitle );
hgs
parents:
diff changeset
   425
        }
hgs
parents:
diff changeset
   426
    else
hgs
parents:
diff changeset
   427
        {
hgs
parents:
diff changeset
   428
	    iStatusPaneHandler->SetTitleL( R_QTN_MEDIA_FILE_DIALOG_TITLE );
hgs
parents:
diff changeset
   429
        }
hgs
parents:
diff changeset
   430
	iStatusPaneHandler->SetNaviPaneTitleL( KNullDesC );
hgs
parents:
diff changeset
   431
	
hgs
parents:
diff changeset
   432
	
hgs
parents:
diff changeset
   433
    //
hgs
parents:
diff changeset
   434
    // create find box. NOTE: findbox functionality is quite complex and
hgs
parents:
diff changeset
   435
	// is implemented by copy pasting code from other apps.
hgs
parents:
diff changeset
   436
    //
hgs
parents:
diff changeset
   437
	
hgs
parents:
diff changeset
   438
    CFindControl* control = ( CFindControl* )ControlOrNull( EFindControl );
hgs
parents:
diff changeset
   439
    if ( control )
hgs
parents:
diff changeset
   440
        {
hgs
parents:
diff changeset
   441
        CAknSearchField::TSearchFieldStyle flags = CAknSearchField::EFixed;
hgs
parents:
diff changeset
   442
        control->iFind = CAknSearchField::NewL( 
hgs
parents:
diff changeset
   443
                                   *control, flags, 0, KFindBoxLength );
hgs
parents:
diff changeset
   444
        //control->iFind = searchField;
hgs
parents:
diff changeset
   445
        control->SetContainerWindowL( *this );
hgs
parents:
diff changeset
   446
        CEikEdwin& edwin = control->iFind->Editor(); 
hgs
parents:
diff changeset
   447
        control->iFind->AddAdaptiveSearchTextObserverL( this );
hgs
parents:
diff changeset
   448
        }	
hgs
parents:
diff changeset
   449
hgs
parents:
diff changeset
   450
     if ( FindBox() )
hgs
parents:
diff changeset
   451
        {
hgs
parents:
diff changeset
   452
        CAknFilteredTextListBoxModel* model = 
hgs
parents:
diff changeset
   453
        STATIC_CAST( CAknFilteredTextListBoxModel*, iListBox->Model() );
hgs
parents:
diff changeset
   454
       
hgs
parents:
diff changeset
   455
        FindBox()->MakeVisible( EFalse );
hgs
parents:
diff changeset
   456
        }
hgs
parents:
diff changeset
   457
        
hgs
parents:
diff changeset
   458
      
hgs
parents:
diff changeset
   459
    UpdateListBoxL();
hgs
parents:
diff changeset
   460
    
hgs
parents:
diff changeset
   461
    DrawDeferred();
hgs
parents:
diff changeset
   462
    }
hgs
parents:
diff changeset
   463
hgs
parents:
diff changeset
   464
hgs
parents:
diff changeset
   465
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
   466
// CMediaFileDialog::ProcessCommandL
hgs
parents:
diff changeset
   467
//
hgs
parents:
diff changeset
   468
// Handle commands from menu. NOTE: Current implemntation does not use menu.
hgs
parents:
diff changeset
   469
// Menu handling code is here for (possible) future use.
hgs
parents:
diff changeset
   470
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
   471
//
hgs
parents:
diff changeset
   472
void CMediaFileDialog::ProcessCommandL( TInt aCommandId )
hgs
parents:
diff changeset
   473
    {
hgs
parents:
diff changeset
   474
    HideMenu();
hgs
parents:
diff changeset
   475
    
hgs
parents:
diff changeset
   476
    switch (aCommandId)
hgs
parents:
diff changeset
   477
        {
hgs
parents:
diff changeset
   478
        case EAknCmdHelp:
hgs
parents:
diff changeset
   479
            {
hgs
parents:
diff changeset
   480
            break;
hgs
parents:
diff changeset
   481
            }
hgs
parents:
diff changeset
   482
hgs
parents:
diff changeset
   483
        case EAknSoftkeySelect:
hgs
parents:
diff changeset
   484
            {
hgs
parents:
diff changeset
   485
            TBool ret = HandleOKL( EAttrSelect );
hgs
parents:
diff changeset
   486
            if ( ret )
hgs
parents:
diff changeset
   487
                {
hgs
parents:
diff changeset
   488
                TryExitL( EEikCmdExit );
hgs
parents:
diff changeset
   489
                }
hgs
parents:
diff changeset
   490
            break;
hgs
parents:
diff changeset
   491
            }
hgs
parents:
diff changeset
   492
            
hgs
parents:
diff changeset
   493
        case EAknSoftkeyView:
hgs
parents:
diff changeset
   494
            {
hgs
parents:
diff changeset
   495
            PreviewL( CMediaFileList::EMediaFileTypeVideo );
hgs
parents:
diff changeset
   496
            break;
hgs
parents:
diff changeset
   497
            }
hgs
parents:
diff changeset
   498
        case EAknCmdOpen:
hgs
parents:
diff changeset
   499
            {
hgs
parents:
diff changeset
   500
            HandleOKL( EAttrOpen );
hgs
parents:
diff changeset
   501
            break;
hgs
parents:
diff changeset
   502
            }
hgs
parents:
diff changeset
   503
hgs
parents:
diff changeset
   504
        case EAknCmdExit:
hgs
parents:
diff changeset
   505
        case EEikCmdExit:
hgs
parents:
diff changeset
   506
            {
hgs
parents:
diff changeset
   507
            // close dialog and exit calling application
hgs
parents:
diff changeset
   508
            iAvkonAppUi->ProcessCommandL( EAknCmdExit );
hgs
parents:
diff changeset
   509
            break;
hgs
parents:
diff changeset
   510
            }
hgs
parents:
diff changeset
   511
hgs
parents:
diff changeset
   512
        default:            
hgs
parents:
diff changeset
   513
            break;
hgs
parents:
diff changeset
   514
        }
hgs
parents:
diff changeset
   515
    }
hgs
parents:
diff changeset
   516
hgs
parents:
diff changeset
   517
hgs
parents:
diff changeset
   518
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
   519
// CMediaFileDialog::OkToExitL
hgs
parents:
diff changeset
   520
//
hgs
parents:
diff changeset
   521
// Hanlde commands from cba.
hgs
parents:
diff changeset
   522
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
   523
//
hgs
parents:
diff changeset
   524
TBool CMediaFileDialog::OkToExitL(TInt aButtonId)
hgs
parents:
diff changeset
   525
    {
hgs
parents:
diff changeset
   526
    if ( aButtonId == EEikBidCancel )
hgs
parents:
diff changeset
   527
        {
hgs
parents:
diff changeset
   528
        return ETrue;  // close dialog
hgs
parents:
diff changeset
   529
        }
hgs
parents:
diff changeset
   530
hgs
parents:
diff changeset
   531
    if ( aButtonId == EEikBidOk )
hgs
parents:
diff changeset
   532
        {
hgs
parents:
diff changeset
   533
        TBool ret = HandleOKL( EAttrSelect );
hgs
parents:
diff changeset
   534
        return ret;
hgs
parents:
diff changeset
   535
        }
hgs
parents:
diff changeset
   536
hgs
parents:
diff changeset
   537
    if ( aButtonId == EAknSoftkeyBack )
hgs
parents:
diff changeset
   538
        {
hgs
parents:
diff changeset
   539
        if ( !HandleBackL() )
hgs
parents:
diff changeset
   540
            {
hgs
parents:
diff changeset
   541
#ifdef _DEBUG            
hgs
parents:
diff changeset
   542
            // start test code
hgs
parents:
diff changeset
   543
            TInt currentIndex = CurrentItemListIndex();
hgs
parents:
diff changeset
   544
            if ( iState->FolderId( currentIndex ) == EEFolderRecordings )
hgs
parents:
diff changeset
   545
                {
hgs
parents:
diff changeset
   546
                if ( !iTest->TestL( 0 ) )
hgs
parents:
diff changeset
   547
                    {
hgs
parents:
diff changeset
   548
                    return ETrue; // test canceled
hgs
parents:
diff changeset
   549
                    }
hgs
parents:
diff changeset
   550
                return EFalse;  // test accepted
hgs
parents:
diff changeset
   551
                }
hgs
parents:
diff changeset
   552
            // end test code
hgs
parents:
diff changeset
   553
#endif            
hgs
parents:
diff changeset
   554
            
hgs
parents:
diff changeset
   555
            return ETrue; // Back pressed in top level folder
hgs
parents:
diff changeset
   556
            }
hgs
parents:
diff changeset
   557
            
hgs
parents:
diff changeset
   558
        return EFalse; // leave dialog open
hgs
parents:
diff changeset
   559
        }
hgs
parents:
diff changeset
   560
hgs
parents:
diff changeset
   561
    if ( aButtonId == EAknSoftkeyContextOptions )
hgs
parents:
diff changeset
   562
        {
hgs
parents:
diff changeset
   563
        ShowContextMenuL( R_MEDIA_FILE_DIALOG_CONTEXT_MENU );
hgs
parents:
diff changeset
   564
        return EFalse;
hgs
parents:
diff changeset
   565
        }
hgs
parents:
diff changeset
   566
hgs
parents:
diff changeset
   567
    if ( aButtonId == EAknSoftkeyOpen )
hgs
parents:
diff changeset
   568
        {
hgs
parents:
diff changeset
   569
        TBool ret = HandleOKL( EAttrOpen );
hgs
parents:
diff changeset
   570
        return ret;
hgs
parents:
diff changeset
   571
        }
hgs
parents:
diff changeset
   572
    
hgs
parents:
diff changeset
   573
    if ( aButtonId == EAknSoftkeySelect )
hgs
parents:
diff changeset
   574
        {
hgs
parents:
diff changeset
   575
        TBool ret = HandleOKL( EAttrSelect );
hgs
parents:
diff changeset
   576
        return ret;
hgs
parents:
diff changeset
   577
        }
hgs
parents:
diff changeset
   578
    
hgs
parents:
diff changeset
   579
    if ( aButtonId == EAknSoftkeyView )
hgs
parents:
diff changeset
   580
        {
hgs
parents:
diff changeset
   581
        PreviewL( CMediaFileList::EMediaFileTypeVideo );
hgs
parents:
diff changeset
   582
        return EFalse;
hgs
parents:
diff changeset
   583
        }
hgs
parents:
diff changeset
   584
hgs
parents:
diff changeset
   585
    if ( aButtonId == EAknSoftkeyEmpty )
hgs
parents:
diff changeset
   586
        {
hgs
parents:
diff changeset
   587
        return EFalse;
hgs
parents:
diff changeset
   588
        }
hgs
parents:
diff changeset
   589
hgs
parents:
diff changeset
   590
    return CAknDialog::OkToExitL( aButtonId );
hgs
parents:
diff changeset
   591
    }
hgs
parents:
diff changeset
   592
hgs
parents:
diff changeset
   593
hgs
parents:
diff changeset
   594
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   595
// CMediaFileDialog::OfferKeyEventL
hgs
parents:
diff changeset
   596
// 
hgs
parents:
diff changeset
   597
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   598
//
hgs
parents:
diff changeset
   599
TKeyResponse CMediaFileDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent,
hgs
parents:
diff changeset
   600
                                                      TEventCode aType)
hgs
parents:
diff changeset
   601
    {
hgs
parents:
diff changeset
   602
    
hgs
parents:
diff changeset
   603
    iIsDoubleClicked = EFalse;
hgs
parents:
diff changeset
   604
    // must pass escape event to dialog - findbox and listbox "eat" escape events
hgs
parents:
diff changeset
   605
    TKeyResponse res = EKeyWasNotConsumed;
hgs
parents:
diff changeset
   606
    if ( aType == EEventKey && aKeyEvent.iCode == EKeyEscape )
hgs
parents:
diff changeset
   607
        {
hgs
parents:
diff changeset
   608
        res = CAknDialog::OfferKeyEventL( aKeyEvent, aType );
hgs
parents:
diff changeset
   609
        }
hgs
parents:
diff changeset
   610
    if ( res == EKeyWasConsumed ) 
hgs
parents:
diff changeset
   611
        {
hgs
parents:
diff changeset
   612
        return res;
hgs
parents:
diff changeset
   613
        }
hgs
parents:
diff changeset
   614
        
hgs
parents:
diff changeset
   615
hgs
parents:
diff changeset
   616
    TBool backSpace = EFalse;
hgs
parents:
diff changeset
   617
    
hgs
parents:
diff changeset
   618
    if (aType == EEventKey)
hgs
parents:
diff changeset
   619
        {
hgs
parents:
diff changeset
   620
        switch (aKeyEvent.iCode)
hgs
parents:
diff changeset
   621
            {
hgs
parents:
diff changeset
   622
            case EKeyEnter:
hgs
parents:
diff changeset
   623
                {
hgs
parents:
diff changeset
   624
                break;
hgs
parents:
diff changeset
   625
                }
hgs
parents:
diff changeset
   626
            case EKeyUpArrow:
hgs
parents:
diff changeset
   627
            case EKeyDownArrow:
hgs
parents:
diff changeset
   628
                {
hgs
parents:
diff changeset
   629
                TInt itemCount = iListBox->Model()->NumberOfItems();
hgs
parents:
diff changeset
   630
                if ( itemCount == 1 )
hgs
parents:
diff changeset
   631
                    {
hgs
parents:
diff changeset
   632
                    PreviewL( CMediaFileList::EMediaFileTypeAudio );    
hgs
parents:
diff changeset
   633
                    }
hgs
parents:
diff changeset
   634
                break;
hgs
parents:
diff changeset
   635
                }
hgs
parents:
diff changeset
   636
hgs
parents:
diff changeset
   637
            case EKeyLeftArrow:
hgs
parents:
diff changeset
   638
                {
hgs
parents:
diff changeset
   639
                if (FindBox() && FindBox()->IsVisible()
hgs
parents:
diff changeset
   640
                        && FindBox()->TextLength() != 0)
hgs
parents:
diff changeset
   641
                    {
hgs
parents:
diff changeset
   642
                    FindBoxCursorMoveL( 0 );
hgs
parents:
diff changeset
   643
                    res = EKeyWasConsumed;
hgs
parents:
diff changeset
   644
                    }
hgs
parents:
diff changeset
   645
                else
hgs
parents:
diff changeset
   646
                    {
hgs
parents:
diff changeset
   647
                    HandleBackL();
hgs
parents:
diff changeset
   648
                    return EKeyWasConsumed;
hgs
parents:
diff changeset
   649
                    }
hgs
parents:
diff changeset
   650
                break;
hgs
parents:
diff changeset
   651
                }
hgs
parents:
diff changeset
   652
hgs
parents:
diff changeset
   653
            case EKeyRightArrow:
hgs
parents:
diff changeset
   654
                {
hgs
parents:
diff changeset
   655
                if (FindBox() && FindBox()->IsVisible()
hgs
parents:
diff changeset
   656
                        && FindBox()->TextLength() != 0)
hgs
parents:
diff changeset
   657
                    {
hgs
parents:
diff changeset
   658
                    FindBoxCursorMoveL( 1 );
hgs
parents:
diff changeset
   659
                    res = EKeyWasConsumed;
hgs
parents:
diff changeset
   660
                    }
hgs
parents:
diff changeset
   661
                else
hgs
parents:
diff changeset
   662
                    {
hgs
parents:
diff changeset
   663
                    HandleOKL( EAttrOpen );
hgs
parents:
diff changeset
   664
                    return EKeyWasConsumed;
hgs
parents:
diff changeset
   665
                    }
hgs
parents:
diff changeset
   666
                break;
hgs
parents:
diff changeset
   667
                }
hgs
parents:
diff changeset
   668
hgs
parents:
diff changeset
   669
            case EKeyBackspace:
hgs
parents:
diff changeset
   670
                {  
hgs
parents:
diff changeset
   671
                backSpace = ETrue;
hgs
parents:
diff changeset
   672
                break;
hgs
parents:
diff changeset
   673
                }
hgs
parents:
diff changeset
   674
hgs
parents:
diff changeset
   675
            default:
hgs
parents:
diff changeset
   676
                {
hgs
parents:
diff changeset
   677
                break;
hgs
parents:
diff changeset
   678
                }
hgs
parents:
diff changeset
   679
            }
hgs
parents:
diff changeset
   680
        
hgs
parents:
diff changeset
   681
    if ( FindBox() && FindBox()->IsVisible() )
hgs
parents:
diff changeset
   682
        {
hgs
parents:
diff changeset
   683
        res = FindBox()->OfferKeyEventL( aKeyEvent, aType );
hgs
parents:
diff changeset
   684
        
hgs
parents:
diff changeset
   685
        if ( backSpace && FindBox()->TextLength() == 0 &&
hgs
parents:
diff changeset
   686
             ( iState->CurrentFolder() == EEFolderSearch ||
hgs
parents:
diff changeset
   687
             iState->CurrentFolder() == EEFolderSearchMusic ) && !iPeninputActive )
hgs
parents:
diff changeset
   688
            {
hgs
parents:
diff changeset
   689
            // user cleared search field - go back to main view
hgs
parents:
diff changeset
   690
            HandleBackL();
hgs
parents:
diff changeset
   691
            return EKeyWasConsumed;
hgs
parents:
diff changeset
   692
            }
hgs
parents:
diff changeset
   693
        }
hgs
parents:
diff changeset
   694
        }
hgs
parents:
diff changeset
   695
        
hgs
parents:
diff changeset
   696
  
hgs
parents:
diff changeset
   697
    if ( res == EKeyWasNotConsumed )
hgs
parents:
diff changeset
   698
         {
hgs
parents:
diff changeset
   699
         res = CAknDialog::OfferKeyEventL( aKeyEvent, aType);
hgs
parents:
diff changeset
   700
         }
hgs
parents:
diff changeset
   701
    return res;
hgs
parents:
diff changeset
   702
    }
hgs
parents:
diff changeset
   703
hgs
parents:
diff changeset
   704
hgs
parents:
diff changeset
   705
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   706
// CMediaFileDialog::FindBoxCursorMoveL( TInt aType )
hgs
parents:
diff changeset
   707
//
hgs
parents:
diff changeset
   708
// NOTE: This function is used to move the cursor of the find box.
hgs
parents:
diff changeset
   709
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   710
//
hgs
parents:
diff changeset
   711
void CMediaFileDialog::FindBoxCursorMoveL( TInt aType )
hgs
parents:
diff changeset
   712
    {
hgs
parents:
diff changeset
   713
    if ( FindBox() && FindBox()->IsVisible() )
hgs
parents:
diff changeset
   714
        {
hgs
parents:
diff changeset
   715
        TInt pos = FindBox()->Editor().CursorPos();
hgs
parents:
diff changeset
   716
        TInt textLength = FindBox()->Editor().TextLength();
hgs
parents:
diff changeset
   717
        if ( aType == 0 )//left
hgs
parents:
diff changeset
   718
            {
hgs
parents:
diff changeset
   719
            pos = pos - 1;
hgs
parents:
diff changeset
   720
            if ( pos < 0 )
hgs
parents:
diff changeset
   721
                {
hgs
parents:
diff changeset
   722
                pos = textLength;
hgs
parents:
diff changeset
   723
                }
hgs
parents:
diff changeset
   724
            }
hgs
parents:
diff changeset
   725
        else if ( aType == 1 )
hgs
parents:
diff changeset
   726
            {
hgs
parents:
diff changeset
   727
            pos = pos + 1;
hgs
parents:
diff changeset
   728
            if ( pos > textLength )
hgs
parents:
diff changeset
   729
                {
hgs
parents:
diff changeset
   730
                pos = 0;
hgs
parents:
diff changeset
   731
                }
hgs
parents:
diff changeset
   732
            }
hgs
parents:
diff changeset
   733
        else
hgs
parents:
diff changeset
   734
            {
hgs
parents:
diff changeset
   735
            pos = textLength;
hgs
parents:
diff changeset
   736
            }
hgs
parents:
diff changeset
   737
        FindBox()->Editor().SetCursorPosL( pos ,EFalse );
hgs
parents:
diff changeset
   738
        }
hgs
parents:
diff changeset
   739
    }
hgs
parents:
diff changeset
   740
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   741
// CMediaFileDialog::SetSizeAndPosition (from CAknDialog)
hgs
parents:
diff changeset
   742
//
hgs
parents:
diff changeset
   743
// NOTE: This code is copy paste from elsewhere.
hgs
parents:
diff changeset
   744
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   745
//
hgs
parents:
diff changeset
   746
void CMediaFileDialog::SetSizeAndPosition( const TSize& /*aSize*/ )
hgs
parents:
diff changeset
   747
    {
hgs
parents:
diff changeset
   748
    TRect mainPane;
hgs
parents:
diff changeset
   749
    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPane );
hgs
parents:
diff changeset
   750
    
hgs
parents:
diff changeset
   751
    SetRect( mainPane );
hgs
parents:
diff changeset
   752
hgs
parents:
diff changeset
   753
    if ( FindBox() && FindBox()->IsVisible() )
hgs
parents:
diff changeset
   754
        {
hgs
parents:
diff changeset
   755
        AknFind::HandleFixedFindSizeChanged( this, iListBox, FindBox() );
hgs
parents:
diff changeset
   756
        }
hgs
parents:
diff changeset
   757
hgs
parents:
diff changeset
   758
    Line( ESelectionListControl)->SetRect( iListBox->Rect() );
hgs
parents:
diff changeset
   759
    if ( FindBox() ) 
hgs
parents:
diff changeset
   760
        {
hgs
parents:
diff changeset
   761
        Line( EFindControl )->SetRect( iListBox->Rect() );
hgs
parents:
diff changeset
   762
        }    
hgs
parents:
diff changeset
   763
    }
hgs
parents:
diff changeset
   764
hgs
parents:
diff changeset
   765
hgs
parents:
diff changeset
   766
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   767
// CMediaFileDialog::HandleResourceChange
hgs
parents:
diff changeset
   768
// 
hgs
parents:
diff changeset
   769
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   770
//
hgs
parents:
diff changeset
   771
void CMediaFileDialog::HandleResourceChange(TInt aType)
hgs
parents:
diff changeset
   772
    {   
hgs
parents:
diff changeset
   773
    if ( aType == KEikDynamicLayoutVariantSwitch )
hgs
parents:
diff changeset
   774
        {
hgs
parents:
diff changeset
   775
        // handle change in layout orientation
hgs
parents:
diff changeset
   776
        CAknDialog::HandleResourceChange( aType );
hgs
parents:
diff changeset
   777
         if ( FindBox() && FindBox()->IsVisible() )
hgs
parents:
diff changeset
   778
	        {
hgs
parents:
diff changeset
   779
	        AknFind::HandleFixedFindSizeChanged( this, iListBox, FindBox() );
hgs
parents:
diff changeset
   780
	        }
hgs
parents:
diff changeset
   781
        return;
hgs
parents:
diff changeset
   782
        }
hgs
parents:
diff changeset
   783
        
hgs
parents:
diff changeset
   784
    if (aType == KAknsMessageSkinChange)
hgs
parents:
diff changeset
   785
        {
hgs
parents:
diff changeset
   786
        TRAP_IGNORE( SetIconsL() );
hgs
parents:
diff changeset
   787
        }
hgs
parents:
diff changeset
   788
        
hgs
parents:
diff changeset
   789
    CCoeControl::HandleResourceChange( aType );
hgs
parents:
diff changeset
   790
    }
hgs
parents:
diff changeset
   791
hgs
parents:
diff changeset
   792
hgs
parents:
diff changeset
   793
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
   794
// CMediaFileDialog::DynInitMenuPaneL
hgs
parents:
diff changeset
   795
//
hgs
parents:
diff changeset
   796
// Called by system before menu is shown. NOTE: Menu currently not used. 
hgs
parents:
diff changeset
   797
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
   798
//
hgs
parents:
diff changeset
   799
void CMediaFileDialog::DynInitMenuPaneL(TInt aResourceID, CEikMenuPane* aMenuPane )
hgs
parents:
diff changeset
   800
    {
hgs
parents:
diff changeset
   801
    TInt menu1 = R_MEDIA_FILE_DIALOG_MENU_PANE;
hgs
parents:
diff changeset
   802
    TInt menu2 = R_MEDIA_FILE_DIALOG_CONTEXT_MENU_PANE;
hgs
parents:
diff changeset
   803
    
hgs
parents:
diff changeset
   804
    if ( aResourceID != menu1 && aResourceID != menu2 )
hgs
parents:
diff changeset
   805
        {
hgs
parents:
diff changeset
   806
        return; // not one of our menus
hgs
parents:
diff changeset
   807
        }
hgs
parents:
diff changeset
   808
hgs
parents:
diff changeset
   809
    TInt itemCount = iListBox->Model()->NumberOfItems();
hgs
parents:
diff changeset
   810
    TInt currentIndex = iListBox->CurrentItemIndex();
hgs
parents:
diff changeset
   811
    TInt folderId = iState->FolderId( currentIndex );
hgs
parents:
diff changeset
   812
    TInt currentFolderId = iState->CurrentFolder();
hgs
parents:
diff changeset
   813
hgs
parents:
diff changeset
   814
hgs
parents:
diff changeset
   815
    // context menu only used in video folder
hgs
parents:
diff changeset
   816
    if ( aResourceID == R_MEDIA_FILE_DIALOG_CONTEXT_MENU_PANE )
hgs
parents:
diff changeset
   817
        {
hgs
parents:
diff changeset
   818
        if ( itemCount == 0 )
hgs
parents:
diff changeset
   819
            {
hgs
parents:
diff changeset
   820
            // folder is empty
hgs
parents:
diff changeset
   821
            DeleteMenuItem( aMenuPane, EAknSoftkeySelect );
hgs
parents:
diff changeset
   822
            DeleteMenuItem( aMenuPane, EAknSoftkeyView );
hgs
parents:
diff changeset
   823
            }
hgs
parents:
diff changeset
   824
        return;
hgs
parents:
diff changeset
   825
        }
hgs
parents:
diff changeset
   826
hgs
parents:
diff changeset
   827
    
hgs
parents:
diff changeset
   828
    if ( itemCount == 0 )
hgs
parents:
diff changeset
   829
        {
hgs
parents:
diff changeset
   830
        // list has no items
hgs
parents:
diff changeset
   831
        DeleteMenuItem( aMenuPane, EAknCmdOpen );
hgs
parents:
diff changeset
   832
        DeleteMenuItem( aMenuPane, EAknSoftkeySelect );
hgs
parents:
diff changeset
   833
        DeleteMenuItem( aMenuPane, EAknSoftkeyView );
hgs
parents:
diff changeset
   834
        return;
hgs
parents:
diff changeset
   835
        }
hgs
parents:
diff changeset
   836
    
hgs
parents:
diff changeset
   837
    if ( folderId == EEFolderDownload || folderId == EEFolderNullItemOne || 
hgs
parents:
diff changeset
   838
         folderId == EEFolderNullItemTwo )
hgs
parents:
diff changeset
   839
        {
hgs
parents:
diff changeset
   840
        // selected item is null item
hgs
parents:
diff changeset
   841
        DeleteMenuItem( aMenuPane, EAknCmdOpen );
hgs
parents:
diff changeset
   842
        DeleteMenuItem( aMenuPane, EAknSoftkeyView );
hgs
parents:
diff changeset
   843
        }
hgs
parents:
diff changeset
   844
    else if ( folderId != KErrNotFound )
hgs
parents:
diff changeset
   845
        {
hgs
parents:
diff changeset
   846
        // selected item is folder
hgs
parents:
diff changeset
   847
        DeleteMenuItem( aMenuPane, EAknSoftkeySelect );
hgs
parents:
diff changeset
   848
        DeleteMenuItem( aMenuPane, EAknSoftkeyView );
hgs
parents:
diff changeset
   849
        }
hgs
parents:
diff changeset
   850
    else
hgs
parents:
diff changeset
   851
        {
hgs
parents:
diff changeset
   852
        // selected item is file
hgs
parents:
diff changeset
   853
        if ( iState->CurrentFolder() == EEFolderVideos )
hgs
parents:
diff changeset
   854
            {
hgs
parents:
diff changeset
   855
            DeleteMenuItem( aMenuPane, EAknCmdOpen );
hgs
parents:
diff changeset
   856
            }
hgs
parents:
diff changeset
   857
        else if ( iState->CurrentFolder() == EEFolderSearch )
hgs
parents:
diff changeset
   858
            {
hgs
parents:
diff changeset
   859
            DeleteMenuItem( aMenuPane, EAknCmdOpen );
hgs
parents:
diff changeset
   860
        
hgs
parents:
diff changeset
   861
            if ( !IsVideoFile( currentIndex ) )
hgs
parents:
diff changeset
   862
                {
hgs
parents:
diff changeset
   863
                DeleteMenuItem( aMenuPane, EAknSoftkeyView );
hgs
parents:
diff changeset
   864
                }
hgs
parents:
diff changeset
   865
            }
hgs
parents:
diff changeset
   866
        else
hgs
parents:
diff changeset
   867
            {
hgs
parents:
diff changeset
   868
            DeleteMenuItem( aMenuPane, EAknCmdOpen );
hgs
parents:
diff changeset
   869
            DeleteMenuItem( aMenuPane, EAknSoftkeyView );    
hgs
parents:
diff changeset
   870
            }
hgs
parents:
diff changeset
   871
        }
hgs
parents:
diff changeset
   872
    }
hgs
parents:
diff changeset
   873
hgs
parents:
diff changeset
   874
hgs
parents:
diff changeset
   875
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   876
// CMediaFileDialog::CountComponentControls
hgs
parents:
diff changeset
   877
//
hgs
parents:
diff changeset
   878
// Gets the number of controls contained in a compound control.
hgs
parents:
diff changeset
   879
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   880
//
hgs
parents:
diff changeset
   881
TInt CMediaFileDialog::CountComponentControls() const
hgs
parents:
diff changeset
   882
    {
hgs
parents:
diff changeset
   883
    TInt newitems = 0;
hgs
parents:
diff changeset
   884
    if ( FindBox() )
hgs
parents:
diff changeset
   885
        {
hgs
parents:
diff changeset
   886
        newitems++;
hgs
parents:
diff changeset
   887
        }
hgs
parents:
diff changeset
   888
    return CAknDialog::CountComponentControls() + newitems;
hgs
parents:
diff changeset
   889
    }
hgs
parents:
diff changeset
   890
hgs
parents:
diff changeset
   891
hgs
parents:
diff changeset
   892
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   893
// CMediaFileDialog::CountComponentControls
hgs
parents:
diff changeset
   894
//
hgs
parents:
diff changeset
   895
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   896
//
hgs
parents:
diff changeset
   897
CCoeControl* CMediaFileDialog::ComponentControl( TInt aIndex ) const
hgs
parents:
diff changeset
   898
    {
hgs
parents:
diff changeset
   899
    if ( aIndex == CAknDialog::CountComponentControls() )
hgs
parents:
diff changeset
   900
        {
hgs
parents:
diff changeset
   901
        return FindBox();
hgs
parents:
diff changeset
   902
        }
hgs
parents:
diff changeset
   903
    return CAknDialog::ComponentControl( aIndex );
hgs
parents:
diff changeset
   904
    }
hgs
parents:
diff changeset
   905
hgs
parents:
diff changeset
   906
hgs
parents:
diff changeset
   907
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   908
// CMediaFileDialog::FindBox
hgs
parents:
diff changeset
   909
//
hgs
parents:
diff changeset
   910
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   911
//
hgs
parents:
diff changeset
   912
CAknSearchField* CMediaFileDialog::FindBox() const
hgs
parents:
diff changeset
   913
     {
hgs
parents:
diff changeset
   914
     CFindControl* control = ( CFindControl* )ControlOrNull( EFindControl );
hgs
parents:
diff changeset
   915
     if ( control )
hgs
parents:
diff changeset
   916
         {
hgs
parents:
diff changeset
   917
         return control->iFind;
hgs
parents:
diff changeset
   918
         }
hgs
parents:
diff changeset
   919
     else
hgs
parents:
diff changeset
   920
         {
hgs
parents:
diff changeset
   921
         return NULL;
hgs
parents:
diff changeset
   922
         }
hgs
parents:
diff changeset
   923
     }
hgs
parents:
diff changeset
   924
hgs
parents:
diff changeset
   925
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   926
// CMediaFileDialog::ResetFindBoxL
hgs
parents:
diff changeset
   927
//
hgs
parents:
diff changeset
   928
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   929
//
hgs
parents:
diff changeset
   930
void CMediaFileDialog::ResetFindBoxL()
hgs
parents:
diff changeset
   931
    {
hgs
parents:
diff changeset
   932
    if ( !FindBox() )
hgs
parents:
diff changeset
   933
        {
hgs
parents:
diff changeset
   934
        return;
hgs
parents:
diff changeset
   935
        }
hgs
parents:
diff changeset
   936
   
hgs
parents:
diff changeset
   937
    CAknFilteredTextListBoxModel* model = 
hgs
parents:
diff changeset
   938
    STATIC_CAST( CAknFilteredTextListBoxModel*, iListBox->Model() );
hgs
parents:
diff changeset
   939
    CAknListBoxFilterItems* filter = model->Filter();
hgs
parents:
diff changeset
   940
    TInt currentFolder = iState->CurrentFolder();
hgs
parents:
diff changeset
   941
    
hgs
parents:
diff changeset
   942
    // reset find box
hgs
parents:
diff changeset
   943
    if ( filter )
hgs
parents:
diff changeset
   944
        {
hgs
parents:
diff changeset
   945
        filter->ResetFilteringL();
hgs
parents:
diff changeset
   946
        filter->SetObserver( NULL );
hgs
parents:
diff changeset
   947
        model->RemoveFilter();
hgs
parents:
diff changeset
   948
        
hgs
parents:
diff changeset
   949
        // CreateFilterL sets CAknSearchField to observe filter
hgs
parents:
diff changeset
   950
        // (CAknListBoxFilterItems) but RemoveFilter does not remove observer
hgs
parents:
diff changeset
   951
        FindBox()->SetObserver( NULL );
hgs
parents:
diff changeset
   952
        }
hgs
parents:
diff changeset
   953
    
hgs
parents:
diff changeset
   954
    if (FindBox()->TextLength() > 0 && (currentFolder != EEFolderSearch
hgs
parents:
diff changeset
   955
            && currentFolder != EEFolderSearchMusic))
hgs
parents:
diff changeset
   956
        {
hgs
parents:
diff changeset
   957
        FindBox()->SetSearchTextL( KNullDesC );    
hgs
parents:
diff changeset
   958
        }
hgs
parents:
diff changeset
   959
    
hgs
parents:
diff changeset
   960
 
hgs
parents:
diff changeset
   961
    // show/hide find box
hgs
parents:
diff changeset
   962
    if ( iState->FindBoxNeeded() )
hgs
parents:
diff changeset
   963
        {
hgs
parents:
diff changeset
   964
        if ( currentFolder != EEFolderSearch && 
hgs
parents:
diff changeset
   965
             currentFolder != EEFolderSearchMusic &&
hgs
parents:
diff changeset
   966
             currentFolder != EEFolderRoot &&
hgs
parents:
diff changeset
   967
             currentFolder != EEFolderMusic )
hgs
parents:
diff changeset
   968
            {
hgs
parents:
diff changeset
   969
            // normal find only finds matches from listbox item texts
hgs
parents:
diff changeset
   970
            model->CreateFilterL( iListBox, FindBox() );
hgs
parents:
diff changeset
   971
            filter = model->Filter();
hgs
parents:
diff changeset
   972
            filter->ResetFilteringL();
hgs
parents:
diff changeset
   973
            filter->SetObserver( this );     // MCoeControlObserver
hgs
parents:
diff changeset
   974
            }
hgs
parents:
diff changeset
   975
        else
hgs
parents:
diff changeset
   976
            {
hgs
parents:
diff changeset
   977
            // search and root folders have custom find that makes
hgs
parents:
diff changeset
   978
            // database search
hgs
parents:
diff changeset
   979
            FindBox()->SetObserver( this );  // MCoeControlObserver
hgs
parents:
diff changeset
   980
            }
hgs
parents:
diff changeset
   981
//        if ( currentFolder == EEFolderSearch || 
hgs
parents:
diff changeset
   982
//             currentFolder == EEFolderSearchMusic )
hgs
parents:
diff changeset
   983
//            {
hgs
parents:
diff changeset
   984
//            FindBox()->SetSearchTextL( iSearchText );
hgs
parents:
diff changeset
   985
//            }
hgs
parents:
diff changeset
   986
 
hgs
parents:
diff changeset
   987
        FindBox()->MakeVisible( ETrue );
hgs
parents:
diff changeset
   988
        }
hgs
parents:
diff changeset
   989
    else
hgs
parents:
diff changeset
   990
        {
hgs
parents:
diff changeset
   991
        FindBox()->MakeVisible( EFalse );
hgs
parents:
diff changeset
   992
        }
hgs
parents:
diff changeset
   993
            
hgs
parents:
diff changeset
   994
    TSize size;
hgs
parents:
diff changeset
   995
    SetSizeAndPosition( size );
hgs
parents:
diff changeset
   996
    }
hgs
parents:
diff changeset
   997
hgs
parents:
diff changeset
   998
hgs
parents:
diff changeset
   999
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1000
// CMediaFileDialog::CreateCustomControlL (from CAknDialog)
hgs
parents:
diff changeset
  1001
//
hgs
parents:
diff changeset
  1002
// Create find control.
hgs
parents:
diff changeset
  1003
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1004
//
hgs
parents:
diff changeset
  1005
SEikControlInfo CMediaFileDialog::CreateCustomControlL( TInt aControlType )
hgs
parents:
diff changeset
  1006
    {
hgs
parents:
diff changeset
  1007
    if ( aControlType != EAknCtSelectionListPopupFind &&
hgs
parents:
diff changeset
  1008
         aControlType != EAknCtSelectionListFixedFind )
hgs
parents:
diff changeset
  1009
        {
hgs
parents:
diff changeset
  1010
        SEikControlInfo info;
hgs
parents:
diff changeset
  1011
        info.iControl = NULL;
hgs
parents:
diff changeset
  1012
        info.iFlags = 0;
hgs
parents:
diff changeset
  1013
        info.iTrailerTextId = 0;
hgs
parents:
diff changeset
  1014
        return info;
hgs
parents:
diff changeset
  1015
        }
hgs
parents:
diff changeset
  1016
hgs
parents:
diff changeset
  1017
    CCoeControl* findControl = NULL;
hgs
parents:
diff changeset
  1018
    findControl = new (ELeave) CFindControl;
hgs
parents:
diff changeset
  1019
hgs
parents:
diff changeset
  1020
    SEikControlInfo info;
hgs
parents:
diff changeset
  1021
    info.iControl = findControl;
hgs
parents:
diff changeset
  1022
    info.iFlags = 0;
hgs
parents:
diff changeset
  1023
    info.iTrailerTextId = 0;
hgs
parents:
diff changeset
  1024
    return info;
hgs
parents:
diff changeset
  1025
    }
hgs
parents:
diff changeset
  1026
hgs
parents:
diff changeset
  1027
    
hgs
parents:
diff changeset
  1028
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1029
// CMediaFileDialog::SetIconsL
hgs
parents:
diff changeset
  1030
//
hgs
parents:
diff changeset
  1031
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1032
//
hgs
parents:
diff changeset
  1033
void CMediaFileDialog::SetIconsL()
hgs
parents:
diff changeset
  1034
    {
hgs
parents:
diff changeset
  1035
    _LIT( KBitmapFile, "mediafilelist.mbm" );
hgs
parents:
diff changeset
  1036
    
hgs
parents:
diff changeset
  1037
        
hgs
parents:
diff changeset
  1038
    if ( !iListBox )
hgs
parents:
diff changeset
  1039
        {
hgs
parents:
diff changeset
  1040
        return;
hgs
parents:
diff changeset
  1041
        }
hgs
parents:
diff changeset
  1042
    
hgs
parents:
diff changeset
  1043
    TMFDialogUtil::SetIconFileNameL( KBitmapFile, iIconFileName );
hgs
parents:
diff changeset
  1044
    
hgs
parents:
diff changeset
  1045
    CArrayPtr<CGulIcon>* icons = new (ELeave) CAknIconArray(1);
hgs
parents:
diff changeset
  1046
    CleanupStack::PushL( icons );
hgs
parents:
diff changeset
  1047
hgs
parents:
diff changeset
  1048
    
hgs
parents:
diff changeset
  1049
    //
hgs
parents:
diff changeset
  1050
    // NOTE: append order must match TMediaFileListIcons
hgs
parents:
diff changeset
  1051
    //
hgs
parents:
diff changeset
  1052
    
hgs
parents:
diff changeset
  1053
    // music item icon
hgs
parents:
diff changeset
  1054
    icons->AppendL( IconL( KAknsIIDQgnIndiAiNtMusic, iIconFileName,
hgs
parents:
diff changeset
  1055
                           EMbmMediafilelistQgn_indi_ai_nt_music,
hgs
parents:
diff changeset
  1056
                           EMbmMediafilelistQgn_indi_ai_nt_music_mask ) );
hgs
parents:
diff changeset
  1057
hgs
parents:
diff changeset
  1058
    // tone item icon, default tone icon
hgs
parents:
diff changeset
  1059
    icons->AppendL( IconL( KAknsIIDQgnPropMupAudio, iIconFileName,
hgs
parents:
diff changeset
  1060
                           EMbmMediafilelistQgn_prop_mup_audio,
hgs
parents:
diff changeset
  1061
                           EMbmMediafilelistQgn_prop_mup_audio_mask ) );
hgs
parents:
diff changeset
  1062
hgs
parents:
diff changeset
  1063
    // video item icon
hgs
parents:
diff changeset
  1064
    icons->AppendL( IconL( KAknsIIDQgnPropFmgrFileVideo, iIconFileName,
hgs
parents:
diff changeset
  1065
                           EMbmMediafilelistQgn_prop_fmgr_file_video,
hgs
parents:
diff changeset
  1066
                           EMbmMediafilelistQgn_prop_fmgr_file_video_mask ) );
hgs
parents:
diff changeset
  1067
hgs
parents:
diff changeset
  1068
    // recording item icon
hgs
parents:
diff changeset
  1069
    icons->AppendL( IconL( KAknsIIDQgnPropFmgrFileVoicerec, iIconFileName,
hgs
parents:
diff changeset
  1070
                           EMbmMediafilelistQgn_prop_fmgr_file_voicerec,
hgs
parents:
diff changeset
  1071
                           EMbmMediafilelistQgn_prop_fmgr_file_voicerec_mask ) );
hgs
parents:
diff changeset
  1072
hgs
parents:
diff changeset
  1073
    // artist icon
hgs
parents:
diff changeset
  1074
    icons->AppendL( IconL( KAknsIIDQgnPropMupArtist, iIconFileName,
hgs
parents:
diff changeset
  1075
                           EMbmMediafilelistQgn_prop_mup_artist,
hgs
parents:
diff changeset
  1076
                           EMbmMediafilelistQgn_prop_mup_artist_mask ) );
hgs
parents:
diff changeset
  1077
hgs
parents:
diff changeset
  1078
    // album icon
hgs
parents:
diff changeset
  1079
    icons->AppendL( IconL( KAknsIIDQgnPropMupAlbum, iIconFileName,
hgs
parents:
diff changeset
  1080
                           EMbmMediafilelistQgn_prop_mup_album,
hgs
parents:
diff changeset
  1081
                           EMbmMediafilelistQgn_prop_mup_album_mask ) );
hgs
parents:
diff changeset
  1082
hgs
parents:
diff changeset
  1083
    // genre icon
hgs
parents:
diff changeset
  1084
    icons->AppendL( IconL( KAknsIIDQgnPropMupGenre, iIconFileName,
hgs
parents:
diff changeset
  1085
                           EMbmMediafilelistQgn_prop_mup_genre,
hgs
parents:
diff changeset
  1086
                           EMbmMediafilelistQgn_prop_mup_genre_mask ) );
hgs
parents:
diff changeset
  1087
hgs
parents:
diff changeset
  1088
    // composer icon
hgs
parents:
diff changeset
  1089
    icons->AppendL( IconL( KAknsIIDQgnPropMupComposer, iIconFileName,
hgs
parents:
diff changeset
  1090
                           EMbmMediafilelistQgn_prop_mup_composer,
hgs
parents:
diff changeset
  1091
                           EMbmMediafilelistQgn_prop_mup_composer_mask ) );
hgs
parents:
diff changeset
  1092
hgs
parents:
diff changeset
  1093
    // folder icon (tones, music, videos, recordings, all music, artist,
hgs
parents:
diff changeset
  1094
    // album, genre, composer, artist all)
hgs
parents:
diff changeset
  1095
    icons->AppendL( IconL( KAknsIIDQgnPropFolderSmall, iIconFileName,
hgs
parents:
diff changeset
  1096
                           EMbmMediafilelistQgn_prop_folder_small,
hgs
parents:
diff changeset
  1097
                           EMbmMediafilelistQgn_prop_folder_small_mask ) );
hgs
parents:
diff changeset
  1098
hgs
parents:
diff changeset
  1099
    // unknown folder icon
hgs
parents:
diff changeset
  1100
    icons->AppendL( IconL( KAknsIIDQgnPropMceUnknownRead, iIconFileName,
hgs
parents:
diff changeset
  1101
                           EMbmMediafilelistQgn_prop_mce_unknown_read,
hgs
parents:
diff changeset
  1102
                           EMbmMediafilelistQgn_prop_mce_unknown_read ) );
hgs
parents:
diff changeset
  1103
hgs
parents:
diff changeset
  1104
    // download item icon (null item)
hgs
parents:
diff changeset
  1105
    icons->AppendL( IconL( KAknsIIDQgnPropLinkEmbdSmall, iIconFileName,
hgs
parents:
diff changeset
  1106
                           EMbmMediafilelistQgn_prop_link_embd_small,
hgs
parents:
diff changeset
  1107
                           EMbmMediafilelistQgn_prop_link_embd_small_mask ) );
hgs
parents:
diff changeset
  1108
hgs
parents:
diff changeset
  1109
    // off item icon (null item)
hgs
parents:
diff changeset
  1110
    icons->AppendL( IconL( KAknsIIDQgnPropSmlSyncOff, iIconFileName,
hgs
parents:
diff changeset
  1111
                           EMbmMediafilelistQgn_prop_sml_sync_off,
hgs
parents:
diff changeset
  1112
                           EMbmMediafilelistQgn_prop_sml_sync_off_mask ) );
hgs
parents:
diff changeset
  1113
hgs
parents:
diff changeset
  1114
    // memory card icon
hgs
parents:
diff changeset
  1115
    icons->AppendL( IconL( KAknsIIDQgnIndiMmcAdd, iIconFileName,
hgs
parents:
diff changeset
  1116
                           EMbmMediafilelistQgn_indi_mmc_add,
hgs
parents:
diff changeset
  1117
                           EMbmMediafilelistQgn_indi_mmc_add_mask, EAknsCIQsnIconColorsCG13 ) );
hgs
parents:
diff changeset
  1118
hgs
parents:
diff changeset
  1119
     // mass storage icon
hgs
parents:
diff changeset
  1120
    icons->AppendL( IconL( KAknsIIDQgnPropLinkEmbdSmall, iIconFileName,
hgs
parents:
diff changeset
  1121
                           EMbmMediafilelistQgn_indi_fmgr_ms_add,
hgs
parents:
diff changeset
  1122
                           EMbmMediafilelistQgn_indi_fmgr_ms_add_mask,EAknsCIQsnIconColorsCG13 ) );
hgs
parents:
diff changeset
  1123
hgs
parents:
diff changeset
  1124
    // empty icon
hgs
parents:
diff changeset
  1125
    icons->AppendL( IconL( KAknsIIDQgnPropEmpty, KAvkonBitmapFile,
hgs
parents:
diff changeset
  1126
                           EMbmAvkonQgn_prop_empty,
hgs
parents:
diff changeset
  1127
                           EMbmAvkonQgn_prop_empty_mask ) );
hgs
parents:
diff changeset
  1128
    
hgs
parents:
diff changeset
  1129
    // delete old icons
hgs
parents:
diff changeset
  1130
    CArrayPtr<CGulIcon>* arr = iListBox->ItemDrawer()->ColumnData()->IconArray();
hgs
parents:
diff changeset
  1131
    if ( arr )
hgs
parents:
diff changeset
  1132
        {
hgs
parents:
diff changeset
  1133
        arr->ResetAndDestroy();
hgs
parents:
diff changeset
  1134
        delete arr;
hgs
parents:
diff changeset
  1135
        arr = NULL;
hgs
parents:
diff changeset
  1136
        }
hgs
parents:
diff changeset
  1137
hgs
parents:
diff changeset
  1138
    iListBox->ItemDrawer()->ColumnData()->SetIconArray( icons );
hgs
parents:
diff changeset
  1139
    CleanupStack::Pop( icons );
hgs
parents:
diff changeset
  1140
    }
hgs
parents:
diff changeset
  1141
hgs
parents:
diff changeset
  1142
hgs
parents:
diff changeset
  1143
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1144
// CMediaFileDialog::IconL
hgs
parents:
diff changeset
  1145
// 
hgs
parents:
diff changeset
  1146
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1147
//
hgs
parents:
diff changeset
  1148
CGulIcon* CMediaFileDialog::IconL(TAknsItemID aId, const TDesC& aFileName,
hgs
parents:
diff changeset
  1149
                                   TInt aFileIndex, TInt aFileMaskIndex)
hgs
parents:
diff changeset
  1150
	{
hgs
parents:
diff changeset
  1151
    CGulIcon* icon = AknsUtils::CreateGulIconL(AknsUtils::SkinInstance(), aId,
hgs
parents:
diff changeset
  1152
                                aFileName, aFileIndex, aFileMaskIndex);
hgs
parents:
diff changeset
  1153
	return icon;	
hgs
parents:
diff changeset
  1154
	}
hgs
parents:
diff changeset
  1155
hgs
parents:
diff changeset
  1156
hgs
parents:
diff changeset
  1157
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1158
// CMediaFileDialog::IconL
hgs
parents:
diff changeset
  1159
// For MMC icon and Mass Storage icon
hgs
parents:
diff changeset
  1160
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1161
//
hgs
parents:
diff changeset
  1162
CGulIcon* CMediaFileDialog::IconL(TAknsItemID aId, const TDesC& aFileName,
hgs
parents:
diff changeset
  1163
                                   TInt aFileIndex, TInt aFileMaskIndex, TAknsQsnIconColorsIndex colorIndex)
hgs
parents:
diff changeset
  1164
	{
hgs
parents:
diff changeset
  1165
	TRgb defaultColour(KRgbBlack);
hgs
parents:
diff changeset
  1166
	CFbsBitmap* bmap = NULL;
hgs
parents:
diff changeset
  1167
	CFbsBitmap* mask = NULL;
hgs
parents:
diff changeset
  1168
hgs
parents:
diff changeset
  1169
	AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), defaultColour, KAknsIIDQsnIconColors,
hgs
parents:
diff changeset
  1170
			colorIndex);
hgs
parents:
diff changeset
  1171
	AknsUtils::CreateColorIconLC(AknsUtils::SkinInstance(), KAknsIIDQgnIndiMmcAdd,
hgs
parents:
diff changeset
  1172
			KAknsIIDQsnIconColors, colorIndex, bmap, mask,
hgs
parents:
diff changeset
  1173
			aFileName, aFileIndex, aFileMaskIndex, defaultColour);
hgs
parents:
diff changeset
  1174
hgs
parents:
diff changeset
  1175
	CGulIcon* icon = CGulIcon::NewL(bmap, mask);
hgs
parents:
diff changeset
  1176
	icon->SetBitmapsOwnedExternally(EFalse);
hgs
parents:
diff changeset
  1177
	CleanupStack::Pop(2);
hgs
parents:
diff changeset
  1178
	return icon;
hgs
parents:
diff changeset
  1179
	}
hgs
parents:
diff changeset
  1180
hgs
parents:
diff changeset
  1181
hgs
parents:
diff changeset
  1182
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1183
// CMediaFileDialog::ShowContextMenuL
hgs
parents:
diff changeset
  1184
// 
hgs
parents:
diff changeset
  1185
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1186
//
hgs
parents:
diff changeset
  1187
void CMediaFileDialog::ShowContextMenuL( TInt /*aResource*/ )
hgs
parents:
diff changeset
  1188
	{
hgs
parents:
diff changeset
  1189
	// Switch to Context specific options menu,
hgs
parents:
diff changeset
  1190
	if ( iMenuBar )
hgs
parents:
diff changeset
  1191
	    {
hgs
parents:
diff changeset
  1192
	    TRAP_IGNORE( iMenuBar->TryDisplayContextMenuBarL() );    
hgs
parents:
diff changeset
  1193
	    }
hgs
parents:
diff changeset
  1194
	}
hgs
parents:
diff changeset
  1195
hgs
parents:
diff changeset
  1196
hgs
parents:
diff changeset
  1197
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1198
// CMediaFileDialog::HandleBackL
hgs
parents:
diff changeset
  1199
//
hgs
parents:
diff changeset
  1200
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1201
//
hgs
parents:
diff changeset
  1202
TBool CMediaFileDialog::HandleBackL()
hgs
parents:
diff changeset
  1203
	{
hgs
parents:
diff changeset
  1204
	TInt err = KErrNone;
hgs
parents:
diff changeset
  1205
	TBool ret = ETrue;
hgs
parents:
diff changeset
  1206
hgs
parents:
diff changeset
  1207
	TRAP( err, ret = DoHandleBackL() );
hgs
parents:
diff changeset
  1208
	
hgs
parents:
diff changeset
  1209
    if ( err != KErrNone )
hgs
parents:
diff changeset
  1210
        {
hgs
parents:
diff changeset
  1211
        FLOG( _L("### CMediaFileDialog::HandleBackL (%d) ###"), err );
hgs
parents:
diff changeset
  1212
        
hgs
parents:
diff changeset
  1213
        ResetDialogL( err );
hgs
parents:
diff changeset
  1214
        return ETrue;
hgs
parents:
diff changeset
  1215
        }
hgs
parents:
diff changeset
  1216
        
hgs
parents:
diff changeset
  1217
    return ret;
hgs
parents:
diff changeset
  1218
	}
hgs
parents:
diff changeset
  1219
hgs
parents:
diff changeset
  1220
hgs
parents:
diff changeset
  1221
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1222
// CMediaFileDialog::DoHandleBackL
hgs
parents:
diff changeset
  1223
//
hgs
parents:
diff changeset
  1224
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1225
//
hgs
parents:
diff changeset
  1226
TBool CMediaFileDialog::DoHandleBackL()
hgs
parents:
diff changeset
  1227
	{
hgs
parents:
diff changeset
  1228
    if ( iState->CurrentFolder() == EEFolderRoot )
hgs
parents:
diff changeset
  1229
        {
hgs
parents:
diff changeset
  1230
        // return EFalse only when called from root folder
hgs
parents:
diff changeset
  1231
        return EFalse;    
hgs
parents:
diff changeset
  1232
        }
hgs
parents:
diff changeset
  1233
hgs
parents:
diff changeset
  1234
	if ( !iMediaFileHandler->QueryReady() )
hgs
parents:
diff changeset
  1235
	    {
hgs
parents:
diff changeset
  1236
	    FLOG( _L("### CMediaFileDialog::DoHandleBackL: query in progress ###") );
hgs
parents:
diff changeset
  1237
	    return ETrue;  // query in progress
hgs
parents:
diff changeset
  1238
	    }
hgs
parents:
diff changeset
  1239
  
hgs
parents:
diff changeset
  1240
    TInt folderId = iState->NextFolderUp();
hgs
parents:
diff changeset
  1241
    TInt currentIndex = CurrentItemListIndex();
hgs
parents:
diff changeset
  1242
    
hgs
parents:
diff changeset
  1243
    iState->SetQueryInfo( folderId, KNullDesC, currentIndex, EEQueryUp );
hgs
parents:
diff changeset
  1244
    QueryL( folderId );
hgs
parents:
diff changeset
  1245
    
hgs
parents:
diff changeset
  1246
    return ETrue;
hgs
parents:
diff changeset
  1247
    }
hgs
parents:
diff changeset
  1248
hgs
parents:
diff changeset
  1249
hgs
parents:
diff changeset
  1250
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1251
// CMediaFileDialog::HandleOKL
hgs
parents:
diff changeset
  1252
//
hgs
parents:
diff changeset
  1253
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1254
//
hgs
parents:
diff changeset
  1255
TBool CMediaFileDialog::HandleOKL( TInt aAttr )
hgs
parents:
diff changeset
  1256
	{
hgs
parents:
diff changeset
  1257
    TInt err = KErrNone;
hgs
parents:
diff changeset
  1258
    TBool ret = EFalse;
hgs
parents:
diff changeset
  1259
    
hgs
parents:
diff changeset
  1260
    TRAP( err, ret = DoHandleOKL( aAttr ) );
hgs
parents:
diff changeset
  1261
    
hgs
parents:
diff changeset
  1262
    if ( err != KErrNone )
hgs
parents:
diff changeset
  1263
        {
hgs
parents:
diff changeset
  1264
        FLOG( _L("### CMediaFileDialog::HandleOKL (%d) ###"), err );
hgs
parents:
diff changeset
  1265
        
hgs
parents:
diff changeset
  1266
        ResetDialogL( err );
hgs
parents:
diff changeset
  1267
        return EFalse;
hgs
parents:
diff changeset
  1268
        }
hgs
parents:
diff changeset
  1269
        
hgs
parents:
diff changeset
  1270
    return ret;
hgs
parents:
diff changeset
  1271
    }
hgs
parents:
diff changeset
  1272
hgs
parents:
diff changeset
  1273
hgs
parents:
diff changeset
  1274
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1275
// CMediaFileDialog::DoHandleOKL
hgs
parents:
diff changeset
  1276
//
hgs
parents:
diff changeset
  1277
// Selects file or opens folder. If file is selected (ie dialog can
hgs
parents:
diff changeset
  1278
// be closed) return value is ETrue.
hgs
parents:
diff changeset
  1279
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1280
//
hgs
parents:
diff changeset
  1281
TBool CMediaFileDialog::DoHandleOKL( TInt aAttr )
hgs
parents:
diff changeset
  1282
	{
hgs
parents:
diff changeset
  1283
	if ( !iMediaFileHandler->QueryReady() )
hgs
parents:
diff changeset
  1284
	    {
hgs
parents:
diff changeset
  1285
	    FLOG( _L("### CMediaFileDialog::DoHandleOKL: query in progress ###") );
hgs
parents:
diff changeset
  1286
	    return EFalse;  // query in progress
hgs
parents:
diff changeset
  1287
	    }
hgs
parents:
diff changeset
  1288
	    
hgs
parents:
diff changeset
  1289
    TInt currentIndex = CurrentItemListIndex();
hgs
parents:
diff changeset
  1290
    if ( currentIndex == KErrNotFound )
hgs
parents:
diff changeset
  1291
        {
hgs
parents:
diff changeset
  1292
        return EFalse; // empty folder
hgs
parents:
diff changeset
  1293
        }
hgs
parents:
diff changeset
  1294
        
hgs
parents:
diff changeset
  1295
    TBool isPersistent = EFalse;
hgs
parents:
diff changeset
  1296
    TInt iconId = EEIconEmpty;
hgs
parents:
diff changeset
  1297
    TInt folderId = KErrNotFound;
hgs
parents:
diff changeset
  1298
    iState->GetFolderInfo( currentIndex, folderId, iBuf,
hgs
parents:
diff changeset
  1299
                                         isPersistent, iconId );
hgs
parents:
diff changeset
  1300
hgs
parents:
diff changeset
  1301
    if ( folderId == EEFolderDownload || folderId == EEFolderNullItemOne ||
hgs
parents:
diff changeset
  1302
         folderId == EEFolderNullItemTwo || folderId == KErrNotFound )
hgs
parents:
diff changeset
  1303
        {
hgs
parents:
diff changeset
  1304
        if ( aAttr == EAttrOpen )
hgs
parents:
diff changeset
  1305
            {
hgs
parents:
diff changeset
  1306
            return EFalse;  // these can only be selected, not opened    
hgs
parents:
diff changeset
  1307
            }
hgs
parents:
diff changeset
  1308
        }
hgs
parents:
diff changeset
  1309
        
hgs
parents:
diff changeset
  1310
hgs
parents:
diff changeset
  1311
    if ( folderId == EEFolderDownload )
hgs
parents:
diff changeset
  1312
        {
hgs
parents:
diff changeset
  1313
        RApaLsSession apaLsSession;
hgs
parents:
diff changeset
  1314
        
hgs
parents:
diff changeset
  1315
        // connect session
hgs
parents:
diff changeset
  1316
        User::LeaveIfError( apaLsSession.Connect() );
hgs
parents:
diff changeset
  1317
        CleanupClosePushL( apaLsSession );
hgs
parents:
diff changeset
  1318
        TApaAppInfo appInfo;
hgs
parents:
diff changeset
  1319
        
hgs
parents:
diff changeset
  1320
        // get ovi launcher's info
hgs
parents:
diff changeset
  1321
        TInt retVal = apaLsSession.GetAppInfo( appInfo, KOviLauncher );
hgs
parents:
diff changeset
  1322
        
hgs
parents:
diff changeset
  1323
        // The application (ovi launcher) found
hgs
parents:
diff changeset
  1324
        if( retVal == KErrNone )
hgs
parents:
diff changeset
  1325
            {
hgs
parents:
diff changeset
  1326
            RProcess process;
hgs
parents:
diff changeset
  1327
            User::LeaveIfError( process.Create( appInfo.iFullName, KDownloadSound ) );
hgs
parents:
diff changeset
  1328
            process.Resume();
hgs
parents:
diff changeset
  1329
            process.Close();
hgs
parents:
diff changeset
  1330
            }
hgs
parents:
diff changeset
  1331
        else
hgs
parents:
diff changeset
  1332
            {
hgs
parents:
diff changeset
  1333
            // The application (ovi launcher) not found!
hgs
parents:
diff changeset
  1334
            *iNullItem = 0;
hgs
parents:
diff changeset
  1335
            // user selected 'Download' item - launch browser
hgs
parents:
diff changeset
  1336
            CWebBrowserLauncher* launcher = CWebBrowserLauncher::NewLC();
hgs
parents:
diff changeset
  1337
            launcher->LaunchBrowserL();
hgs
parents:
diff changeset
  1338
            CleanupStack::PopAndDestroy( launcher );
hgs
parents:
diff changeset
  1339
            }
hgs
parents:
diff changeset
  1340
        CleanupStack::PopAndDestroy( &apaLsSession );
hgs
parents:
diff changeset
  1341
        return EFalse;
hgs
parents:
diff changeset
  1342
        }
hgs
parents:
diff changeset
  1343
hgs
parents:
diff changeset
  1344
    if ( folderId == EEFolderNullItemOne )
hgs
parents:
diff changeset
  1345
        {
hgs
parents:
diff changeset
  1346
        if ( iNullItemFileNameOne )
hgs
parents:
diff changeset
  1347
            {
hgs
parents:
diff changeset
  1348
            TMFDialogUtil::StrCopy( *iFileName, *iNullItemFileNameOne );
hgs
parents:
diff changeset
  1349
            }
hgs
parents:
diff changeset
  1350
        *iNullItem = 1;
hgs
parents:
diff changeset
  1351
        return ETrue;
hgs
parents:
diff changeset
  1352
        }
hgs
parents:
diff changeset
  1353
hgs
parents:
diff changeset
  1354
    if ( folderId == EEFolderNullItemTwo )
hgs
parents:
diff changeset
  1355
        {
hgs
parents:
diff changeset
  1356
        if ( iNullItemFileNameTwo )
hgs
parents:
diff changeset
  1357
            {
hgs
parents:
diff changeset
  1358
            TMFDialogUtil::StrCopy( *iFileName, *iNullItemFileNameTwo );
hgs
parents:
diff changeset
  1359
            }
hgs
parents:
diff changeset
  1360
        *iNullItem = 2;
hgs
parents:
diff changeset
  1361
        return ETrue;
hgs
parents:
diff changeset
  1362
        }
hgs
parents:
diff changeset
  1363
hgs
parents:
diff changeset
  1364
    if ( folderId == KErrNotFound )
hgs
parents:
diff changeset
  1365
        {
hgs
parents:
diff changeset
  1366
        // user has selected some media file
hgs
parents:
diff changeset
  1367
	    GetSelectedItemFileName( currentIndex, iBuf );
hgs
parents:
diff changeset
  1368
	    
hgs
parents:
diff changeset
  1369
	    // protection check not done when item is double checked
hgs
parents:
diff changeset
  1370
	   // if ( aAttr != EAttrDoubleClicked )
hgs
parents:
diff changeset
  1371
	   if (!ifilevalid)
hgs
parents:
diff changeset
  1372
	        {
hgs
parents:
diff changeset
  1373
	    	iFileisvalid = iProtectionHandler->IsFileValid( iBuf, 
hgs
parents:
diff changeset
  1374
	                                        CMFProtectionHandler::ESelect );
hgs
parents:
diff changeset
  1375
	    ifilevalid=ETrue;
hgs
parents:
diff changeset
  1376
	        }
hgs
parents:
diff changeset
  1377
	    
hgs
parents:
diff changeset
  1378
  	   if ( !iFileisvalid)
hgs
parents:
diff changeset
  1379
		   {
hgs
parents:
diff changeset
  1380
		   ifilevalid=EFalse; 
hgs
parents:
diff changeset
  1381
		   }
hgs
parents:
diff changeset
  1382
	    if ( iFileisvalid )
hgs
parents:
diff changeset
  1383
	        {
hgs
parents:
diff changeset
  1384
	        TMFDialogUtil::StrCopy( *iFileName, iBuf );
hgs
parents:
diff changeset
  1385
	        }
hgs
parents:
diff changeset
  1386
	    
hgs
parents:
diff changeset
  1387
	    return iFileisvalid;  // ret is ETrue is selected file's drm is OK
hgs
parents:
diff changeset
  1388
        }
hgs
parents:
diff changeset
  1389
hgs
parents:
diff changeset
  1390
    
hgs
parents:
diff changeset
  1391
    if ( folderId != KErrNotFound && aAttr != EAttrSelect )
hgs
parents:
diff changeset
  1392
        {
hgs
parents:
diff changeset
  1393
        // Request vibra feedback when open the folder.
hgs
parents:
diff changeset
  1394
        MTouchFeedback* feedback = MTouchFeedback::Instance();
hgs
parents:
diff changeset
  1395
        if ( feedback )
hgs
parents:
diff changeset
  1396
            {
hgs
parents:
diff changeset
  1397
            TTouchLogicalFeedback logicalType = ETouchFeedbackList;
hgs
parents:
diff changeset
  1398
            TTouchFeedbackType type = ETouchFeedbackVibra;
hgs
parents:
diff changeset
  1399
            feedback->InstantFeedback( this, logicalType, type, TPointerEvent() );
hgs
parents:
diff changeset
  1400
            }
hgs
parents:
diff changeset
  1401
        
hgs
parents:
diff changeset
  1402
        iBuf = KNullDesC;
hgs
parents:
diff changeset
  1403
        // selected list item is folder
hgs
parents:
diff changeset
  1404
         if ( !isPersistent )
hgs
parents:
diff changeset
  1405
            {
hgs
parents:
diff changeset
  1406
            // read non-persistent folder text from database
hgs
parents:
diff changeset
  1407
            GetListItemText( currentIndex, iBuf );
hgs
parents:
diff changeset
  1408
            }
hgs
parents:
diff changeset
  1409
      
hgs
parents:
diff changeset
  1410
        iState->SetQueryInfo( folderId, iBuf, currentIndex, EEQueryDown );
hgs
parents:
diff changeset
  1411
        QueryL( folderId );
hgs
parents:
diff changeset
  1412
        }
hgs
parents:
diff changeset
  1413
hgs
parents:
diff changeset
  1414
    return EFalse;
hgs
parents:
diff changeset
  1415
    }
hgs
parents:
diff changeset
  1416
hgs
parents:
diff changeset
  1417
hgs
parents:
diff changeset
  1418
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1419
// CMediaFileDialog::SearchL
hgs
parents:
diff changeset
  1420
//
hgs
parents:
diff changeset
  1421
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1422
//
hgs
parents:
diff changeset
  1423
void CMediaFileDialog::SearchL()
hgs
parents:
diff changeset
  1424
    {
hgs
parents:
diff changeset
  1425
    TInt err = KErrNone;
hgs
parents:
diff changeset
  1426
    
hgs
parents:
diff changeset
  1427
    TRAP( err, DoSearchL() );
hgs
parents:
diff changeset
  1428
    
hgs
parents:
diff changeset
  1429
    if ( err != KErrNone )
hgs
parents:
diff changeset
  1430
        {
hgs
parents:
diff changeset
  1431
        ResetDialogL( err );
hgs
parents:
diff changeset
  1432
        }
hgs
parents:
diff changeset
  1433
    }
hgs
parents:
diff changeset
  1434
hgs
parents:
diff changeset
  1435
hgs
parents:
diff changeset
  1436
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1437
// CMediaFileDialog::DoSearchL
hgs
parents:
diff changeset
  1438
//
hgs
parents:
diff changeset
  1439
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1440
//
hgs
parents:
diff changeset
  1441
void CMediaFileDialog::DoSearchL()
hgs
parents:
diff changeset
  1442
    {
hgs
parents:
diff changeset
  1443
    if ( !FindBox() )
hgs
parents:
diff changeset
  1444
        {
hgs
parents:
diff changeset
  1445
        return;
hgs
parents:
diff changeset
  1446
        }
hgs
parents:
diff changeset
  1447
    
hgs
parents:
diff changeset
  1448
    if ( iPeninputActive)
hgs
parents:
diff changeset
  1449
        {
hgs
parents:
diff changeset
  1450
      return;
hgs
parents:
diff changeset
  1451
        }
hgs
parents:
diff changeset
  1452
    if ( !iMediaFileHandler->QueryReady() )
hgs
parents:
diff changeset
  1453
        {
hgs
parents:
diff changeset
  1454
        FLOG( _L("### CMediaFileDialog::DoSearchL: query in progress ###") );
hgs
parents:
diff changeset
  1455
        return;  // query in progress
hgs
parents:
diff changeset
  1456
        }
hgs
parents:
diff changeset
  1457
    
hgs
parents:
diff changeset
  1458
    TInt currentFolder = iState->CurrentFolder();
hgs
parents:
diff changeset
  1459
    
hgs
parents:
diff changeset
  1460
    if ( FindBox()->TextLength() == 0 )
hgs
parents:
diff changeset
  1461
        {
hgs
parents:
diff changeset
  1462
        return;
hgs
parents:
diff changeset
  1463
        }
hgs
parents:
diff changeset
  1464
    FindBox()->GetSearchText( iSearchText );
hgs
parents:
diff changeset
  1465
    
hgs
parents:
diff changeset
  1466
    _LIT(KSpecialChar, "%");
hgs
parents:
diff changeset
  1467
    _LIT(KReplaceChar, "\\%" );
hgs
parents:
diff changeset
  1468
    TBuf<10> buf;
hgs
parents:
diff changeset
  1469
    buf.Copy( KSpecialChar );
hgs
parents:
diff changeset
  1470
    TInt position = iSearchText.FindF( buf );
hgs
parents:
diff changeset
  1471
    if ( position != KErrNotFound )
hgs
parents:
diff changeset
  1472
        {
hgs
parents:
diff changeset
  1473
        buf.Copy( KReplaceChar );
hgs
parents:
diff changeset
  1474
        iSearchText.Replace( position,1,buf );
hgs
parents:
diff changeset
  1475
        }
hgs
parents:
diff changeset
  1476
hgs
parents:
diff changeset
  1477
    
hgs
parents:
diff changeset
  1478
    if ( currentFolder == EEFolderRoot || currentFolder == EEFolderSearch )
hgs
parents:
diff changeset
  1479
        {
hgs
parents:
diff changeset
  1480
        TInt currentIndex = iListBox->CurrentItemIndex();
hgs
parents:
diff changeset
  1481
        iState->SetQueryInfo( EEFolderSearch, KNullDesC, currentIndex, EEQueryDown );
hgs
parents:
diff changeset
  1482
        
hgs
parents:
diff changeset
  1483
        QueryL( EEFolderSearch );
hgs
parents:
diff changeset
  1484
        }
hgs
parents:
diff changeset
  1485
    else if ( currentFolder == EEFolderMusic || currentFolder == EEFolderSearchMusic )
hgs
parents:
diff changeset
  1486
        {
hgs
parents:
diff changeset
  1487
        TInt currentIndex = iListBox->CurrentItemIndex();
hgs
parents:
diff changeset
  1488
        iState->SetQueryInfo( EEFolderSearchMusic, KNullDesC, currentIndex, EEQueryDown );
hgs
parents:
diff changeset
  1489
        
hgs
parents:
diff changeset
  1490
        QueryL( EEFolderSearchMusic );
hgs
parents:
diff changeset
  1491
        }
hgs
parents:
diff changeset
  1492
    }
hgs
parents:
diff changeset
  1493
hgs
parents:
diff changeset
  1494
hgs
parents:
diff changeset
  1495
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1496
// CMediaFileDialog::ResetDialogL
hgs
parents:
diff changeset
  1497
//
hgs
parents:
diff changeset
  1498
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1499
//
hgs
parents:
diff changeset
  1500
void CMediaFileDialog::ResetDialogL( TInt aError)
hgs
parents:
diff changeset
  1501
    {
hgs
parents:
diff changeset
  1502
    iMediaFileHandler->EnableObserverCall( EFalse );
hgs
parents:
diff changeset
  1503
    iMediaFileHandler->CancelQuery();
hgs
parents:
diff changeset
  1504
    iMediaFileHandler->EnableObserverCall( ETrue );
hgs
parents:
diff changeset
  1505
    
hgs
parents:
diff changeset
  1506
    iState->Init();  
hgs
parents:
diff changeset
  1507
    UpdateListBoxL();
hgs
parents:
diff changeset
  1508
hgs
parents:
diff changeset
  1509
    if ( aError != KErrNone )
hgs
parents:
diff changeset
  1510
        {
hgs
parents:
diff changeset
  1511
        ShowErrorNoteL( aError );
hgs
parents:
diff changeset
  1512
        }
hgs
parents:
diff changeset
  1513
    }
hgs
parents:
diff changeset
  1514
hgs
parents:
diff changeset
  1515
hgs
parents:
diff changeset
  1516
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1517
// CMediaFileDialog::QueryL
hgs
parents:
diff changeset
  1518
//
hgs
parents:
diff changeset
  1519
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  1520
//
hgs
parents:
diff changeset
  1521
void CMediaFileDialog::QueryL( TInt aFolderId, TBool aDatabaseChanged )
hgs
parents:
diff changeset
  1522
    {
hgs
parents:
diff changeset
  1523
    if ( !iMediaFileHandler->QueryReady() || !iDatabaseOpen )
hgs
parents:
diff changeset
  1524
        {
hgs
parents:
diff changeset
  1525
        FLOG( _L("### CMediaFileDialog::QueryL: query in progress ###") );
hgs
parents:
diff changeset
  1526
        return;
hgs
parents:
diff changeset
  1527
        }
hgs
parents:
diff changeset
  1528
hgs
parents:
diff changeset
  1529
    iMediaFileHandler->EnableObserverCall( ETrue );
hgs
parents:
diff changeset
  1530
    
hgs
parents:
diff changeset
  1531
    TInt folderId = aFolderId;
hgs
parents:
diff changeset
  1532
    
hgs
parents:
diff changeset
  1533
    iMediaFileHandler->SetQueryId( folderId );
hgs
parents:
diff changeset
  1534
    
hgs
parents:
diff changeset
  1535
    if ( folderId == EEFolderAllMusic )
hgs
parents:
diff changeset
  1536
        {
hgs
parents:
diff changeset
  1537
        iMediaFileHandler->QueryMusicL( 0 );
hgs
parents:
diff changeset
  1538
        }
hgs
parents:
diff changeset
  1539
        
hgs
parents:
diff changeset
  1540
    else if ( folderId == EEFolderVideos )
hgs
parents:
diff changeset
  1541
        {
hgs
parents:
diff changeset
  1542
        iMediaFileHandler->QueryVideosL( 0 );
hgs
parents:
diff changeset
  1543
        }
hgs
parents:
diff changeset
  1544
hgs
parents:
diff changeset
  1545
    else if ( folderId == EEFolderArtistRoot ||
hgs
parents:
diff changeset
  1546
              folderId == EEFolderAlbumRoot  ||
hgs
parents:
diff changeset
  1547
              folderId == EEFolderGenreRoot  || 
hgs
parents:
diff changeset
  1548
              folderId == EEFolderComposerRoot )
hgs
parents:
diff changeset
  1549
        {
hgs
parents:
diff changeset
  1550
        if ( iState->UnknownCount( folderId ) == KErrNotFound )
hgs
parents:
diff changeset
  1551
            {
hgs
parents:
diff changeset
  1552
            TInt attr = MapAttribute( folderId );
hgs
parents:
diff changeset
  1553
            iMediaFileHandler->QueryMusicUnknownCountL( attr );
hgs
parents:
diff changeset
  1554
            }
hgs
parents:
diff changeset
  1555
        else
hgs
parents:
diff changeset
  1556
            {
hgs
parents:
diff changeset
  1557
            TInt attr = MapAttribute( folderId );
hgs
parents:
diff changeset
  1558
            iMediaFileHandler->QueryAttributeValuesL( attr );
hgs
parents:
diff changeset
  1559
            }
hgs
parents:
diff changeset
  1560
        }
hgs
parents:
diff changeset
  1561
    
hgs
parents:
diff changeset
  1562
    else if ( folderId == EEFolderAlbum || folderId == EEFolderGenre ||
hgs
parents:
diff changeset
  1563
              folderId == EEFolderComposer )
hgs
parents:
diff changeset
  1564
        {
hgs
parents:
diff changeset
  1565
        TInt attr = MapAttribute( folderId );
hgs
parents:
diff changeset
  1566
        iState->GetText( folderId, iBuf );
hgs
parents:
diff changeset
  1567
        iMediaFileHandler->QueryMusicL( attr, iBuf );
hgs
parents:
diff changeset
  1568
        }
hgs
parents:
diff changeset
  1569
    
hgs
parents:
diff changeset
  1570
    else if ( folderId == EEFolderArtistUnknown || folderId == EEFolderAlbumUnknown ||
hgs
parents:
diff changeset
  1571
              folderId == EEFolderGenreUnknown ||folderId == EEFolderComposerUnknown )
hgs
parents:
diff changeset
  1572
        {
hgs
parents:
diff changeset
  1573
        TInt attr = MapAttribute( folderId );
hgs
parents:
diff changeset
  1574
        iMediaFileHandler->QueryMusicUnknownL( attr );
hgs
parents:
diff changeset
  1575
        }
hgs
parents:
diff changeset
  1576
    
hgs
parents:
diff changeset
  1577
    else if ( folderId == EEFolderArtist )
hgs
parents:
diff changeset
  1578
        {
hgs
parents:
diff changeset
  1579
        iState->GetText( EEFolderArtist, iBuf );
hgs
parents:
diff changeset
  1580
        iMediaFileHandler->QueryArtistL( CMediaFileHandler::EQueryArtist,
hgs
parents:
diff changeset
  1581
                           iBuf, KNullDesC, aDatabaseChanged );
hgs
parents:
diff changeset
  1582
        }
hgs
parents:
diff changeset
  1583
hgs
parents:
diff changeset
  1584
    else if ( folderId == EEFolderArtistAll )
hgs
parents:
diff changeset
  1585
        {
hgs
parents:
diff changeset
  1586
        iState->GetText( EEFolderArtist, iBuf );
hgs
parents:
diff changeset
  1587
        iMediaFileHandler->QueryArtistL( CMediaFileHandler::EQueryArtistAll,
hgs
parents:
diff changeset
  1588
                                         iBuf, KNullDesC, aDatabaseChanged );
hgs
parents:
diff changeset
  1589
        }
hgs
parents:
diff changeset
  1590
hgs
parents:
diff changeset
  1591
    else if ( folderId == EEFolderArtistAlbum )
hgs
parents:
diff changeset
  1592
        {
hgs
parents:
diff changeset
  1593
        TBuf<KBufSize128> buf;
hgs
parents:
diff changeset
  1594
        iState->GetText( EEFolderArtistAlbum, buf );
hgs
parents:
diff changeset
  1595
        iState->GetText( EEFolderArtist, iBuf );
hgs
parents:
diff changeset
  1596
        iMediaFileHandler->QueryArtistL( CMediaFileHandler::EQueryArtistAlbum,
hgs
parents:
diff changeset
  1597
                           iBuf, buf, aDatabaseChanged );
hgs
parents:
diff changeset
  1598
        }
hgs
parents:
diff changeset
  1599
hgs
parents:
diff changeset
  1600
    else if ( folderId == EEFolderArtistAlbumUnknown )
hgs
parents:
diff changeset
  1601
        {
hgs
parents:
diff changeset
  1602
        iState->GetText( EEFolderArtist, iBuf );
hgs
parents:
diff changeset
  1603
        iMediaFileHandler->QueryArtistL( CMediaFileHandler::EQueryArtistUnknown,
hgs
parents:
diff changeset
  1604
                           iBuf, KNullDesC, aDatabaseChanged );
hgs
parents:
diff changeset
  1605
        }
hgs
parents:
diff changeset
  1606
hgs
parents:
diff changeset
  1607
    else if ( folderId == EEFolderTones )
hgs
parents:
diff changeset
  1608
        {
hgs
parents:
diff changeset
  1609
        //iMediaFileHandler->QueryTonesL( 0 );
hgs
parents:
diff changeset
  1610
        iMediaFileHandler->QueryDefaultTonesL( 0 );
hgs
parents:
diff changeset
  1611
        ShowWaitNoteL( EFalse );
hgs
parents:
diff changeset
  1612
        }
hgs
parents:
diff changeset
  1613
    
hgs
parents:
diff changeset
  1614
    else if ( folderId == EEFolderRecordings )
hgs
parents:
diff changeset
  1615
        {
hgs
parents:
diff changeset
  1616
        iMediaFileHandler->QueryRecordingsL( 0 );
hgs
parents:
diff changeset
  1617
        }
hgs
parents:
diff changeset
  1618
hgs
parents:
diff changeset
  1619
    else if ( folderId == EEFolderSearch )
hgs
parents:
diff changeset
  1620
        {
hgs
parents:
diff changeset
  1621
        if ( iSearchText.Length() > 0 )
hgs
parents:
diff changeset
  1622
            {
hgs
parents:
diff changeset
  1623
            iMediaFileHandler->SearchL( iSearchText );    
hgs
parents:
diff changeset
  1624
            }
hgs
parents:
diff changeset
  1625
        else
hgs
parents:
diff changeset
  1626
            {
hgs
parents:
diff changeset
  1627
            iMediaFileHandler->QueryEmptyL();
hgs
parents:
diff changeset
  1628
            }
hgs
parents:
diff changeset
  1629
        }
hgs
parents:
diff changeset
  1630
    else if ( folderId == EEFolderSearchMusic )
hgs
parents:
diff changeset
  1631
        {
hgs
parents:
diff changeset
  1632
        if ( iSearchText.Length() > 0 )
hgs
parents:
diff changeset
  1633
            {
hgs
parents:
diff changeset
  1634
            iMediaFileHandler->SearchAudioL( iSearchText );    
hgs
parents:
diff changeset
  1635
            }
hgs
parents:
diff changeset
  1636
        else
hgs
parents:
diff changeset
  1637
            {
hgs
parents:
diff changeset
  1638
            iMediaFileHandler->QueryEmptyL();
hgs
parents:
diff changeset
  1639
            }
hgs
parents:
diff changeset
  1640
        }
hgs
parents:
diff changeset
  1641
    else
hgs
parents:
diff changeset
  1642
        {
hgs
parents:
diff changeset
  1643
        // make empty query
hgs
parents:
diff changeset
  1644
        iMediaFileHandler->QueryEmptyL();
hgs
parents:
diff changeset
  1645
        }
hgs
parents:
diff changeset
  1646
    
hgs
parents:
diff changeset
  1647
    if ( !iMediaFileHandler->QueryReady() 
hgs
parents:
diff changeset
  1648
	        && aFolderId != EEFolderRoot && aFolderId != EEFolderMusic )
hgs
parents:
diff changeset
  1649
        {
hgs
parents:
diff changeset
  1650
        // query is running - show wait note with delay. wait note is
hgs
parents:
diff changeset
  1651
        // removed in HandleMFEventL
hgs
parents:
diff changeset
  1652
        ShowWaitNoteL( aDatabaseChanged );
hgs
parents:
diff changeset
  1653
        }
hgs
parents:
diff changeset
  1654
    
hgs
parents:
diff changeset
  1655
#ifdef _DEBUG    
hgs
parents:
diff changeset
  1656
    iTest->SetTime();
hgs
parents:
diff changeset
  1657
#endif    
hgs
parents:
diff changeset
  1658
    }
hgs
parents:
diff changeset
  1659
hgs
parents:
diff changeset
  1660
hgs
parents:
diff changeset
  1661
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1662
// CMediaFileDialog::MapAttribute
hgs
parents:
diff changeset
  1663
// 
hgs
parents:
diff changeset
  1664
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1665
//
hgs
parents:
diff changeset
  1666
TInt CMediaFileDialog::MapAttribute( TInt aFolderId )
hgs
parents:
diff changeset
  1667
    {
hgs
parents:
diff changeset
  1668
    TInt attr = KErrNotFound;
hgs
parents:
diff changeset
  1669
    
hgs
parents:
diff changeset
  1670
    switch ( aFolderId )
hgs
parents:
diff changeset
  1671
        {
hgs
parents:
diff changeset
  1672
        case EEFolderArtistRoot:
hgs
parents:
diff changeset
  1673
        case EEFolderArtist:
hgs
parents:
diff changeset
  1674
        case EEFolderArtistUnknown:
hgs
parents:
diff changeset
  1675
            {
hgs
parents:
diff changeset
  1676
            attr = CMediaFileHandler::EAttrArtist;
hgs
parents:
diff changeset
  1677
            break;
hgs
parents:
diff changeset
  1678
            }
hgs
parents:
diff changeset
  1679
        case EEFolderAlbumRoot:
hgs
parents:
diff changeset
  1680
        case EEFolderAlbum:
hgs
parents:
diff changeset
  1681
        case EEFolderAlbumUnknown:
hgs
parents:
diff changeset
  1682
            {
hgs
parents:
diff changeset
  1683
            attr = CMediaFileHandler::EAttrAlbum;
hgs
parents:
diff changeset
  1684
            break;
hgs
parents:
diff changeset
  1685
            }
hgs
parents:
diff changeset
  1686
        case EEFolderGenreRoot:
hgs
parents:
diff changeset
  1687
        case EEFolderGenre:
hgs
parents:
diff changeset
  1688
        case EEFolderGenreUnknown:
hgs
parents:
diff changeset
  1689
            {
hgs
parents:
diff changeset
  1690
            attr = CMediaFileHandler::EAttrGenre;
hgs
parents:
diff changeset
  1691
            break;
hgs
parents:
diff changeset
  1692
            }
hgs
parents:
diff changeset
  1693
        case EEFolderComposerRoot:
hgs
parents:
diff changeset
  1694
        case EEFolderComposer:
hgs
parents:
diff changeset
  1695
        case EEFolderComposerUnknown:
hgs
parents:
diff changeset
  1696
            {
hgs
parents:
diff changeset
  1697
            attr = CMediaFileHandler::EAttrComposer;
hgs
parents:
diff changeset
  1698
            break;
hgs
parents:
diff changeset
  1699
            }
hgs
parents:
diff changeset
  1700
        default:
hgs
parents:
diff changeset
  1701
            {
hgs
parents:
diff changeset
  1702
            break;
hgs
parents:
diff changeset
  1703
            }
hgs
parents:
diff changeset
  1704
        }
hgs
parents:
diff changeset
  1705
        
hgs
parents:
diff changeset
  1706
    return attr;
hgs
parents:
diff changeset
  1707
    }
hgs
parents:
diff changeset
  1708
hgs
parents:
diff changeset
  1709
hgs
parents:
diff changeset
  1710
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1711
// CMediaFileDialog::ShowDetailsPopupL
hgs
parents:
diff changeset
  1712
//
hgs
parents:
diff changeset
  1713
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1714
//
hgs
parents:
diff changeset
  1715
void CMediaFileDialog::ShowDetailsPopupL()
hgs
parents:
diff changeset
  1716
    {
hgs
parents:
diff changeset
  1717
    if ( !iMediaFileHandler->QueryReady() )
hgs
parents:
diff changeset
  1718
        {
hgs
parents:
diff changeset
  1719
        return;  // query in progress
hgs
parents:
diff changeset
  1720
        }
hgs
parents:
diff changeset
  1721
        
hgs
parents:
diff changeset
  1722
    TInt currentIndex = CurrentItemListIndex();
hgs
parents:
diff changeset
  1723
    TInt folderId = iState->CurrentFolder();
hgs
parents:
diff changeset
  1724
    
hgs
parents:
diff changeset
  1725
    if ( folderId != EEFolderSearch && folderId != EEFolderSearchMusic )
hgs
parents:
diff changeset
  1726
        {
hgs
parents:
diff changeset
  1727
        return;
hgs
parents:
diff changeset
  1728
        }
hgs
parents:
diff changeset
  1729
    if ( currentIndex < 0 )
hgs
parents:
diff changeset
  1730
        {
hgs
parents:
diff changeset
  1731
        return;
hgs
parents:
diff changeset
  1732
        }
hgs
parents:
diff changeset
  1733
    
hgs
parents:
diff changeset
  1734
    TInt id = iMediaFileHandler->Attribute( currentIndex, 
hgs
parents:
diff changeset
  1735
                                            CMediaFileHandler::EAttrMediaFileId,
hgs
parents:
diff changeset
  1736
                                            iState->CurrentFolder() );
hgs
parents:
diff changeset
  1737
    if ( id == KErrNotFound )
hgs
parents:
diff changeset
  1738
        {
hgs
parents:
diff changeset
  1739
        return;
hgs
parents:
diff changeset
  1740
        }
hgs
parents:
diff changeset
  1741
    
hgs
parents:
diff changeset
  1742
    TInt mediaType = iMediaFileHandler->Attribute( currentIndex, 
hgs
parents:
diff changeset
  1743
            CMediaFileHandler::EAttrMediaType,
hgs
parents:
diff changeset
  1744
            iState->CurrentFolder() );
hgs
parents:
diff changeset
  1745
    
hgs
parents:
diff changeset
  1746
    TInt storageType = iMediaFileHandler->Attribute( currentIndex, 
hgs
parents:
diff changeset
  1747
            CMediaFileHandler::EAttrStorageType,
hgs
parents:
diff changeset
  1748
            iState->CurrentFolder() );
hgs
parents:
diff changeset
  1749
    
hgs
parents:
diff changeset
  1750
    CMediaFileData* data = NULL;
hgs
parents:
diff changeset
  1751
hgs
parents:
diff changeset
  1752
    if ( storageType == CMediaFileHandler::ERomStorage )
hgs
parents:
diff changeset
  1753
        {
hgs
parents:
diff changeset
  1754
        if ( mediaType == CMediaFileHandler::EMediaTypeTone )
hgs
parents:
diff changeset
  1755
            {
hgs
parents:
diff changeset
  1756
            data = iMediaFileHandler->RomMediaFileDataL( id , CMediaFileHandler::EMediaTypeTone );
hgs
parents:
diff changeset
  1757
            }
hgs
parents:
diff changeset
  1758
        if ( mediaType == CMediaFileHandler::EMediaTypeVideo )
hgs
parents:
diff changeset
  1759
            {
hgs
parents:
diff changeset
  1760
            data = iMediaFileHandler->RomMediaFileDataL( id , CMediaFileHandler::EMediaTypeVideo );
hgs
parents:
diff changeset
  1761
            }
hgs
parents:
diff changeset
  1762
        }
hgs
parents:
diff changeset
  1763
    else
hgs
parents:
diff changeset
  1764
    	{
hgs
parents:
diff changeset
  1765
    	data = iMediaFileHandler->ReadMediaFileDataL( id );
hgs
parents:
diff changeset
  1766
    	}
hgs
parents:
diff changeset
  1767
hgs
parents:
diff changeset
  1768
    CleanupStack::PushL( data );
hgs
parents:
diff changeset
  1769
    if ( data )
hgs
parents:
diff changeset
  1770
    	{
hgs
parents:
diff changeset
  1771
    	GetPopupText( data, iPopupText );	
hgs
parents:
diff changeset
  1772
    	}  
hgs
parents:
diff changeset
  1773
    
hgs
parents:
diff changeset
  1774
    CleanupStack::PopAndDestroy( data );
hgs
parents:
diff changeset
  1775
    
hgs
parents:
diff changeset
  1776
    if ( iPopupText.Length() > 0 )
hgs
parents:
diff changeset
  1777
        {
hgs
parents:
diff changeset
  1778
        ShowPopupNoteL( iPopupText );
hgs
parents:
diff changeset
  1779
        }
hgs
parents:
diff changeset
  1780
    }
hgs
parents:
diff changeset
  1781
hgs
parents:
diff changeset
  1782
hgs
parents:
diff changeset
  1783
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1784
// CMediaFileDialog::GetPopupText
hgs
parents:
diff changeset
  1785
//
hgs
parents:
diff changeset
  1786
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1787
//
hgs
parents:
diff changeset
  1788
void CMediaFileDialog::GetPopupText( CMediaFileData* aData, TDes& aText )
hgs
parents:
diff changeset
  1789
    {
hgs
parents:
diff changeset
  1790
    TBuf<KBufSize64> searchText;
hgs
parents:
diff changeset
  1791
    TBuf<KBufSize64> attributeName;
hgs
parents:
diff changeset
  1792
    
hgs
parents:
diff changeset
  1793
    aText = KNullDesC;
hgs
parents:
diff changeset
  1794
    
hgs
parents:
diff changeset
  1795
    if ( FindBox()->TextLength() >= KBufSize64 )
hgs
parents:
diff changeset
  1796
        {
hgs
parents:
diff changeset
  1797
        return;
hgs
parents:
diff changeset
  1798
        }
hgs
parents:
diff changeset
  1799
    FindBox()->GetSearchText( searchText );
hgs
parents:
diff changeset
  1800
   
hgs
parents:
diff changeset
  1801
    aData->GetAttr( CMediaFileHandler::EAttrSongName, aText );
hgs
parents:
diff changeset
  1802
    if ( MatchFound( aText, searchText ) )
hgs
parents:
diff changeset
  1803
        {
hgs
parents:
diff changeset
  1804
        aText = KNullDesC;
hgs
parents:
diff changeset
  1805
        return;
hgs
parents:
diff changeset
  1806
        }
hgs
parents:
diff changeset
  1807
    
hgs
parents:
diff changeset
  1808
    aData->GetAttr( CMediaFileHandler::EAttrArtist, aText );
hgs
parents:
diff changeset
  1809
    if ( MatchFound( aText, searchText ) )
hgs
parents:
diff changeset
  1810
        {
hgs
parents:
diff changeset
  1811
        StringLoader::Load( attributeName, R_QTN_PREVIEW_POPUP_ARTIST );
hgs
parents:
diff changeset
  1812
        aText.Insert( 0, attributeName );
hgs
parents:
diff changeset
  1813
        return;
hgs
parents:
diff changeset
  1814
        }
hgs
parents:
diff changeset
  1815
hgs
parents:
diff changeset
  1816
    aData->GetAttr( CMediaFileHandler::EAttrAlbum, aText );
hgs
parents:
diff changeset
  1817
    if ( MatchFound( aText, searchText ) )
hgs
parents:
diff changeset
  1818
        {
hgs
parents:
diff changeset
  1819
        StringLoader::Load( attributeName, R_QTN_PREVIEW_POPUP_ALBUM );
hgs
parents:
diff changeset
  1820
        aText.Insert( 0, attributeName );
hgs
parents:
diff changeset
  1821
        return;
hgs
parents:
diff changeset
  1822
        }
hgs
parents:
diff changeset
  1823
hgs
parents:
diff changeset
  1824
    aData->GetAttr( CMediaFileHandler::EAttrGenre, aText );
hgs
parents:
diff changeset
  1825
    if ( MatchFound( aText, searchText ) )
hgs
parents:
diff changeset
  1826
        {
hgs
parents:
diff changeset
  1827
        StringLoader::Load( attributeName, R_QTN_PREVIEW_POPUP_GENRE );
hgs
parents:
diff changeset
  1828
        aText.Insert( 0, attributeName );
hgs
parents:
diff changeset
  1829
        return;
hgs
parents:
diff changeset
  1830
        }
hgs
parents:
diff changeset
  1831
hgs
parents:
diff changeset
  1832
    aData->GetAttr( CMediaFileHandler::EAttrComposer, aText );
hgs
parents:
diff changeset
  1833
    if ( MatchFound( aText, searchText ) )
hgs
parents:
diff changeset
  1834
        {
hgs
parents:
diff changeset
  1835
        StringLoader::Load( attributeName, R_QTN_PREVIEW_POPUP_COMPOSER );
hgs
parents:
diff changeset
  1836
        aText.Insert( 0, attributeName );
hgs
parents:
diff changeset
  1837
        return;
hgs
parents:
diff changeset
  1838
        }
hgs
parents:
diff changeset
  1839
    
hgs
parents:
diff changeset
  1840
    aText = KNullDesC;
hgs
parents:
diff changeset
  1841
    }
hgs
parents:
diff changeset
  1842
hgs
parents:
diff changeset
  1843
hgs
parents:
diff changeset
  1844
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1845
// CMediaFileDialog::MatchFound
hgs
parents:
diff changeset
  1846
//
hgs
parents:
diff changeset
  1847
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1848
//
hgs
parents:
diff changeset
  1849
TBool CMediaFileDialog::MatchFound( const TDesC& aAttribute, 
hgs
parents:
diff changeset
  1850
                                    const TDesC& aText )
hgs
parents:
diff changeset
  1851
    {
hgs
parents:
diff changeset
  1852
    _LIT( KSpace, " " );
hgs
parents:
diff changeset
  1853
    
hgs
parents:
diff changeset
  1854
    if ( aText.Length() >= KBufSize64 )
hgs
parents:
diff changeset
  1855
        {
hgs
parents:
diff changeset
  1856
        return EFalse; // too long search text
hgs
parents:
diff changeset
  1857
        }
hgs
parents:
diff changeset
  1858
hgs
parents:
diff changeset
  1859
    if ( aAttribute.FindC( aText ) == 0 )
hgs
parents:
diff changeset
  1860
        {
hgs
parents:
diff changeset
  1861
        // match found from the beginning of the first word
hgs
parents:
diff changeset
  1862
        return ETrue; 
hgs
parents:
diff changeset
  1863
        }
hgs
parents:
diff changeset
  1864
hgs
parents:
diff changeset
  1865
    TBuf<KBufSize64> buf;
hgs
parents:
diff changeset
  1866
    buf = aText;
hgs
parents:
diff changeset
  1867
    buf.Insert( 0, KSpace );
hgs
parents:
diff changeset
  1868
    
hgs
parents:
diff changeset
  1869
    if ( aAttribute.FindC( buf ) != KErrNotFound )
hgs
parents:
diff changeset
  1870
        {
hgs
parents:
diff changeset
  1871
        // match found from the beginning of the word
hgs
parents:
diff changeset
  1872
        return ETrue; 
hgs
parents:
diff changeset
  1873
        }
hgs
parents:
diff changeset
  1874
    
hgs
parents:
diff changeset
  1875
    return EFalse;
hgs
parents:
diff changeset
  1876
    }
hgs
parents:
diff changeset
  1877
hgs
parents:
diff changeset
  1878
hgs
parents:
diff changeset
  1879
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1880
// CMediaFileDialog::PreviewL
hgs
parents:
diff changeset
  1881
//
hgs
parents:
diff changeset
  1882
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1883
//
hgs
parents:
diff changeset
  1884
void CMediaFileDialog::PreviewL( TInt aMediaType )
hgs
parents:
diff changeset
  1885
    {
hgs
parents:
diff changeset
  1886
    //FLOG( _L("CMediaFileDialog::PreviewL START") );
hgs
parents:
diff changeset
  1887
    
hgs
parents:
diff changeset
  1888
    if ( !iMediaFileHandler->QueryReady() )
hgs
parents:
diff changeset
  1889
        {
hgs
parents:
diff changeset
  1890
        FLOG( _L("### CMediaFileDialog::PreviewL: query in progress ###") );
hgs
parents:
diff changeset
  1891
        return;  // query in progress
hgs
parents:
diff changeset
  1892
        }
hgs
parents:
diff changeset
  1893
hgs
parents:
diff changeset
  1894
    if ( !iForeGround )
hgs
parents:
diff changeset
  1895
        {
hgs
parents:
diff changeset
  1896
        return;  // dialog is not visible
hgs
parents:
diff changeset
  1897
        }
hgs
parents:
diff changeset
  1898
        
hgs
parents:
diff changeset
  1899
    TInt currentIndex = CurrentItemListIndex();
hgs
parents:
diff changeset
  1900
    if ( currentIndex == KErrNotFound )
hgs
parents:
diff changeset
  1901
        {
hgs
parents:
diff changeset
  1902
        return;  // list is empty 
hgs
parents:
diff changeset
  1903
        }
hgs
parents:
diff changeset
  1904
    
hgs
parents:
diff changeset
  1905
    TInt folderId = iState->FolderId( currentIndex );
hgs
parents:
diff changeset
  1906
    if ( folderId == EEFolderNullItemOne || folderId == EEFolderNullItemTwo )
hgs
parents:
diff changeset
  1907
        {
hgs
parents:
diff changeset
  1908
        PreviewNullItemL( folderId );
hgs
parents:
diff changeset
  1909
        return;
hgs
parents:
diff changeset
  1910
        }
hgs
parents:
diff changeset
  1911
    
hgs
parents:
diff changeset
  1912
    if ( folderId != KErrNotFound )
hgs
parents:
diff changeset
  1913
        {
hgs
parents:
diff changeset
  1914
        return; // focused list item is folder
hgs
parents:
diff changeset
  1915
        }
hgs
parents:
diff changeset
  1916
     
hgs
parents:
diff changeset
  1917
     
hgs
parents:
diff changeset
  1918
    if ( iState->CurrentFolder() == EEFolderVideos  &&
hgs
parents:
diff changeset
  1919
         aMediaType != CMediaFileList::EMediaFileTypeVideo )
hgs
parents:
diff changeset
  1920
        {
hgs
parents:
diff changeset
  1921
        return;
hgs
parents:
diff changeset
  1922
        }
hgs
parents:
diff changeset
  1923
    
hgs
parents:
diff changeset
  1924
    GetSelectedItemFileName( currentIndex, iBuf );
hgs
parents:
diff changeset
  1925
    if ( iBuf.Length() == 0 )
hgs
parents:
diff changeset
  1926
        {
hgs
parents:
diff changeset
  1927
        return;
hgs
parents:
diff changeset
  1928
        }
hgs
parents:
diff changeset
  1929
        
hgs
parents:
diff changeset
  1930
    
hgs
parents:
diff changeset
  1931
    if ( iState->CurrentFolder() == EEFolderSearch )
hgs
parents:
diff changeset
  1932
        {
hgs
parents:
diff changeset
  1933
        if ( IsVideoFile( currentIndex ) )
hgs
parents:
diff changeset
  1934
            {
hgs
parents:
diff changeset
  1935
            return; // search folder may contain videos - no automatic preview                
hgs
parents:
diff changeset
  1936
            }
hgs
parents:
diff changeset
  1937
        }
hgs
parents:
diff changeset
  1938
        
hgs
parents:
diff changeset
  1939
    if ( !iProtectionHandler->IsFileValid( iBuf, CMFProtectionHandler::EPlay  ) )
hgs
parents:
diff changeset
  1940
        {
hgs
parents:
diff changeset
  1941
        return;
hgs
parents:
diff changeset
  1942
        }
hgs
parents:
diff changeset
  1943
        
hgs
parents:
diff changeset
  1944
    if ( aMediaType == CMediaFileList::EMediaFileTypeVideo )
hgs
parents:
diff changeset
  1945
        {
hgs
parents:
diff changeset
  1946
        PreviewVideoL( iBuf );
hgs
parents:
diff changeset
  1947
        return;
hgs
parents:
diff changeset
  1948
        }
hgs
parents:
diff changeset
  1949
    
hgs
parents:
diff changeset
  1950
    iAudioPreviewHandler->SetAttrL( TMFDialogUtil::EAttrFileName, iBuf );
hgs
parents:
diff changeset
  1951
    iAudioPreviewHandler->PlayL();
hgs
parents:
diff changeset
  1952
    
hgs
parents:
diff changeset
  1953
    //FLOG( _L("CMediaFileDialog::PreviewL END") );
hgs
parents:
diff changeset
  1954
    }
hgs
parents:
diff changeset
  1955
hgs
parents:
diff changeset
  1956
hgs
parents:
diff changeset
  1957
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1958
// CMediaFileDialog::PreviewVideoL
hgs
parents:
diff changeset
  1959
//
hgs
parents:
diff changeset
  1960
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1961
//
hgs
parents:
diff changeset
  1962
void CMediaFileDialog::PreviewVideoL( const TDesC& aFileName )
hgs
parents:
diff changeset
  1963
    {
hgs
parents:
diff changeset
  1964
    if ( !iProtectionHandler->IsVideoValid( aFileName, CMFProtectionHandler::EPlay ) )
hgs
parents:
diff changeset
  1965
         {
hgs
parents:
diff changeset
  1966
         return;
hgs
parents:
diff changeset
  1967
         }
hgs
parents:
diff changeset
  1968
hgs
parents:
diff changeset
  1969
    // in case "Beep once" one audio beep is played before showing video
hgs
parents:
diff changeset
  1970
    TInt type = iAudioPreviewHandler->Attr( CMediaFileList::EAttrRingingType );
hgs
parents:
diff changeset
  1971
    if ( type == CMFPreviewHandlerBase::ERingingTypeBeepOnce )
hgs
parents:
diff changeset
  1972
        {
hgs
parents:
diff changeset
  1973
        iAudioPreviewHandler->SetAttrL( TMFDialogUtil::EAttrFileName, aFileName );
hgs
parents:
diff changeset
  1974
        iAudioPreviewHandler->PlayL();
hgs
parents:
diff changeset
  1975
        }
hgs
parents:
diff changeset
  1976
     
hgs
parents:
diff changeset
  1977
    iVideoPreviewHandler->SetAttrL( TMFDialogUtil::EAttrFileName, aFileName );
hgs
parents:
diff changeset
  1978
    TInt err = KErrNone;
hgs
parents:
diff changeset
  1979
    if ( iVideoPreviewDlg && iVideoPreviewHandler->IsPlaying() )
hgs
parents:
diff changeset
  1980
        {
hgs
parents:
diff changeset
  1981
        iVideoPreviewDlg->CloseDialogL();
hgs
parents:
diff changeset
  1982
        iVideoPreviewDlg = NULL;
hgs
parents:
diff changeset
  1983
        }
hgs
parents:
diff changeset
  1984
    iVideoPreviewDlg = CVideoPreviewDialog::NewL( iVideoPreviewHandler );
hgs
parents:
diff changeset
  1985
    TBool ret = iVideoPreviewDlg->ShowDialogLD( &err );
hgs
parents:
diff changeset
  1986
hgs
parents:
diff changeset
  1987
    if ( err != KErrNone )
hgs
parents:
diff changeset
  1988
        {
hgs
parents:
diff changeset
  1989
        FLOG( _L("### CVideoPreviewDialog::ShowDialogLD (%d) ###"), err );
hgs
parents:
diff changeset
  1990
        }
hgs
parents:
diff changeset
  1991
     
hgs
parents:
diff changeset
  1992
    ShowPreviewErrorNoteL( err, CMediaFileHandler::EMediaTypeVideo );
hgs
parents:
diff changeset
  1993
    
hgs
parents:
diff changeset
  1994
    if ( ret )
hgs
parents:
diff changeset
  1995
        {
hgs
parents:
diff changeset
  1996
        CloseDialogWithDelayL();
hgs
parents:
diff changeset
  1997
        }
hgs
parents:
diff changeset
  1998
    }
hgs
parents:
diff changeset
  1999
hgs
parents:
diff changeset
  2000
hgs
parents:
diff changeset
  2001
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2002
// CMediaFileDialog::PreviewLNullItemL
hgs
parents:
diff changeset
  2003
//
hgs
parents:
diff changeset
  2004
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2005
//
hgs
parents:
diff changeset
  2006
void CMediaFileDialog::PreviewNullItemL( TInt aFolderId )
hgs
parents:
diff changeset
  2007
    {
hgs
parents:
diff changeset
  2008
    HBufC* fileName = NULL;
hgs
parents:
diff changeset
  2009
    TInt fileType = KErrNotFound;
hgs
parents:
diff changeset
  2010
    
hgs
parents:
diff changeset
  2011
    if ( aFolderId == EEFolderNullItemOne )
hgs
parents:
diff changeset
  2012
        {
hgs
parents:
diff changeset
  2013
        fileType = iNullItemFileTypeOne;
hgs
parents:
diff changeset
  2014
        fileName = iNullItemFileNameOne; 
hgs
parents:
diff changeset
  2015
        }
hgs
parents:
diff changeset
  2016
    if ( aFolderId == EEFolderNullItemTwo )
hgs
parents:
diff changeset
  2017
        {
hgs
parents:
diff changeset
  2018
        fileType = iNullItemFileTypeTwo;
hgs
parents:
diff changeset
  2019
        fileName = iNullItemFileNameTwo; 
hgs
parents:
diff changeset
  2020
        }
hgs
parents:
diff changeset
  2021
hgs
parents:
diff changeset
  2022
    if ( fileType != CMediaFileList::EMediaFileTypeAudio && 
hgs
parents:
diff changeset
  2023
         fileType != CMediaFileList::EMediaFileTypeVideo )
hgs
parents:
diff changeset
  2024
        {
hgs
parents:
diff changeset
  2025
        return;
hgs
parents:
diff changeset
  2026
        }
hgs
parents:
diff changeset
  2027
    if ( !fileName )
hgs
parents:
diff changeset
  2028
        {
hgs
parents:
diff changeset
  2029
        return;
hgs
parents:
diff changeset
  2030
        }
hgs
parents:
diff changeset
  2031
        
hgs
parents:
diff changeset
  2032
    if ( fileType == CMediaFileList::EMediaFileTypeAudio )
hgs
parents:
diff changeset
  2033
        {
hgs
parents:
diff changeset
  2034
        iAudioPreviewHandler->SetAttrL( TMFDialogUtil::EAttrFileName, *fileName );
hgs
parents:
diff changeset
  2035
        iAudioPreviewHandler->PlayL();
hgs
parents:
diff changeset
  2036
        }
hgs
parents:
diff changeset
  2037
    if ( fileType == CMediaFileList::EMediaFileTypeVideo )
hgs
parents:
diff changeset
  2038
        {
hgs
parents:
diff changeset
  2039
        // null item file type cannot be video
hgs
parents:
diff changeset
  2040
        }
hgs
parents:
diff changeset
  2041
    }
hgs
parents:
diff changeset
  2042
hgs
parents:
diff changeset
  2043
hgs
parents:
diff changeset
  2044
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2045
// CMediaFileDialog::CancelPreview
hgs
parents:
diff changeset
  2046
//
hgs
parents:
diff changeset
  2047
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2048
//
hgs
parents:
diff changeset
  2049
void CMediaFileDialog::CancelPreview()
hgs
parents:
diff changeset
  2050
    {
hgs
parents:
diff changeset
  2051
    iAudioPreviewHandler->Stop();
hgs
parents:
diff changeset
  2052
    iCaller->Cancel();
hgs
parents:
diff changeset
  2053
    }
hgs
parents:
diff changeset
  2054
hgs
parents:
diff changeset
  2055
hgs
parents:
diff changeset
  2056
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2057
// CMediaFileDialog::StartPreviewWithDelay
hgs
parents:
diff changeset
  2058
// 
hgs
parents:
diff changeset
  2059
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2060
//
hgs
parents:
diff changeset
  2061
void CMediaFileDialog::StartPreviewWithDelay()
hgs
parents:
diff changeset
  2062
    {
hgs
parents:
diff changeset
  2063
	const TInt KOneSecond = 1000;
hgs
parents:
diff changeset
  2064
	
hgs
parents:
diff changeset
  2065
	iAudioPreviewHandler->Stop();
hgs
parents:
diff changeset
  2066
hgs
parents:
diff changeset
  2067
    // automatic preview starts after delay. see HandleActiveCallL.
hgs
parents:
diff changeset
  2068
    iCaller->Start( EAttrPreview, KOneSecond );
hgs
parents:
diff changeset
  2069
    }
hgs
parents:
diff changeset
  2070
hgs
parents:
diff changeset
  2071
hgs
parents:
diff changeset
  2072
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2073
// CMediaFileDialog::StartSearchWithDelay
hgs
parents:
diff changeset
  2074
// 
hgs
parents:
diff changeset
  2075
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2076
//
hgs
parents:
diff changeset
  2077
void CMediaFileDialog::StartSearchWithDelay()
hgs
parents:
diff changeset
  2078
    {
hgs
parents:
diff changeset
  2079
    if ( iPeninputActive )
hgs
parents:
diff changeset
  2080
        {
hgs
parents:
diff changeset
  2081
        // search does not start automatically in pen input mode
hgs
parents:
diff changeset
  2082
        return;
hgs
parents:
diff changeset
  2083
        }
hgs
parents:
diff changeset
  2084
    
hgs
parents:
diff changeset
  2085
    const TInt KOneSecond = 1000;
hgs
parents:
diff changeset
  2086
    
hgs
parents:
diff changeset
  2087
    // search starts after delay. see HandleActiveCallL.
hgs
parents:
diff changeset
  2088
    iSearchCaller->Start( EAttrSearch, KOneSecond );
hgs
parents:
diff changeset
  2089
    }
hgs
parents:
diff changeset
  2090
hgs
parents:
diff changeset
  2091
hgs
parents:
diff changeset
  2092
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2093
// CMediaFileDialog::StartRomScan()
hgs
parents:
diff changeset
  2094
// 
hgs
parents:
diff changeset
  2095
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2096
//
hgs
parents:
diff changeset
  2097
void CMediaFileDialog::StartRomScan()
hgs
parents:
diff changeset
  2098
    {
hgs
parents:
diff changeset
  2099
    delete iIdle;
hgs
parents:
diff changeset
  2100
    iIdle = NULL;
hgs
parents:
diff changeset
  2101
    iIdle = CIdle::NewL( CActive::EPriorityIdle );
hgs
parents:
diff changeset
  2102
    
hgs
parents:
diff changeset
  2103
    if ( iIdle )
hgs
parents:
diff changeset
  2104
        {                    
hgs
parents:
diff changeset
  2105
        iIdle->Start( TCallBack( StartRomScaning, iMediaFileHandler ) );
hgs
parents:
diff changeset
  2106
        }
hgs
parents:
diff changeset
  2107
    }
hgs
parents:
diff changeset
  2108
hgs
parents:
diff changeset
  2109
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2110
// CMediaFileDialog::StartRomScaning()
hgs
parents:
diff changeset
  2111
// 
hgs
parents:
diff changeset
  2112
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2113
//
hgs
parents:
diff changeset
  2114
hgs
parents:
diff changeset
  2115
TInt CMediaFileDialog::StartRomScaning( TAny* aInstance )
hgs
parents:
diff changeset
  2116
    {
hgs
parents:
diff changeset
  2117
    CMediaFileHandler* handler = static_cast<CMediaFileHandler*> ( aInstance );
hgs
parents:
diff changeset
  2118
    handler->StartRomScaning( CMediaFileHandler::EQueryTone );
hgs
parents:
diff changeset
  2119
    return 0;
hgs
parents:
diff changeset
  2120
    }
hgs
parents:
diff changeset
  2121
hgs
parents:
diff changeset
  2122
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2123
// CMediaFileDialog::IsVideoFile
hgs
parents:
diff changeset
  2124
// 
hgs
parents:
diff changeset
  2125
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2126
//
hgs
parents:
diff changeset
  2127
TBool CMediaFileDialog::IsVideoFile( TInt aCurrentIndex )
hgs
parents:
diff changeset
  2128
    {
hgs
parents:
diff changeset
  2129
    if ( aCurrentIndex < 0 )
hgs
parents:
diff changeset
  2130
        {
hgs
parents:
diff changeset
  2131
        return EFalse;
hgs
parents:
diff changeset
  2132
        }
hgs
parents:
diff changeset
  2133
    
hgs
parents:
diff changeset
  2134
    TInt current = iState->CurrentFolder();
hgs
parents:
diff changeset
  2135
    
hgs
parents:
diff changeset
  2136
    if ( current == EEFolderVideos )
hgs
parents:
diff changeset
  2137
        {
hgs
parents:
diff changeset
  2138
        return ETrue;
hgs
parents:
diff changeset
  2139
        }
hgs
parents:
diff changeset
  2140
    
hgs
parents:
diff changeset
  2141
    if ( current != EEFolderSearch )
hgs
parents:
diff changeset
  2142
        {
hgs
parents:
diff changeset
  2143
        return EFalse;
hgs
parents:
diff changeset
  2144
        }
hgs
parents:
diff changeset
  2145
    
hgs
parents:
diff changeset
  2146
    TInt mediaType = iMediaFileHandler->Attribute( aCurrentIndex,
hgs
parents:
diff changeset
  2147
                                        CMediaFileHandler::EAttrMediaType,
hgs
parents:
diff changeset
  2148
                                        current );
hgs
parents:
diff changeset
  2149
hgs
parents:
diff changeset
  2150
    if ( mediaType == CMediaFileHandler::EMediaTypeVideo )
hgs
parents:
diff changeset
  2151
        {
hgs
parents:
diff changeset
  2152
        return ETrue;
hgs
parents:
diff changeset
  2153
        }
hgs
parents:
diff changeset
  2154
    
hgs
parents:
diff changeset
  2155
    return EFalse;           
hgs
parents:
diff changeset
  2156
    }
hgs
parents:
diff changeset
  2157
    
hgs
parents:
diff changeset
  2158
hgs
parents:
diff changeset
  2159
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2160
// CMediaFileDialog::IsValidVideoFileL
hgs
parents:
diff changeset
  2161
// 
hgs
parents:
diff changeset
  2162
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2163
//
hgs
parents:
diff changeset
  2164
TBool CMediaFileDialog::IsValidVideoFileL( TInt aCurrentIndex, TInt aIntention )
hgs
parents:
diff changeset
  2165
    {
hgs
parents:
diff changeset
  2166
    TBuf<KBufSize128> buf;
hgs
parents:
diff changeset
  2167
    
hgs
parents:
diff changeset
  2168
    if ( !IsVideoFile( aCurrentIndex ) )
hgs
parents:
diff changeset
  2169
        {
hgs
parents:
diff changeset
  2170
        return EFalse;
hgs
parents:
diff changeset
  2171
        }
hgs
parents:
diff changeset
  2172
    
hgs
parents:
diff changeset
  2173
    CMFProtectionHandler::TIntention intention;
hgs
parents:
diff changeset
  2174
    if ( aIntention == CMFProtectionHandler::EPlay )
hgs
parents:
diff changeset
  2175
        {
hgs
parents:
diff changeset
  2176
        intention = CMFProtectionHandler::EPlay;
hgs
parents:
diff changeset
  2177
        }
hgs
parents:
diff changeset
  2178
    else
hgs
parents:
diff changeset
  2179
        {
hgs
parents:
diff changeset
  2180
        intention = CMFProtectionHandler::ESelect;
hgs
parents:
diff changeset
  2181
        }
hgs
parents:
diff changeset
  2182
    GetSelectedItemFileName( aCurrentIndex, buf );
hgs
parents:
diff changeset
  2183
    
hgs
parents:
diff changeset
  2184
    if ( iProtectionHandler->IsVideoValid( buf, intention ) )
hgs
parents:
diff changeset
  2185
        {
hgs
parents:
diff changeset
  2186
        return ETrue;    
hgs
parents:
diff changeset
  2187
        }
hgs
parents:
diff changeset
  2188
    return EFalse;
hgs
parents:
diff changeset
  2189
    }
hgs
parents:
diff changeset
  2190
hgs
parents:
diff changeset
  2191
hgs
parents:
diff changeset
  2192
hgs
parents:
diff changeset
  2193
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2194
// CMediaFileDialog::UpdateListBoxL
hgs
parents:
diff changeset
  2195
// 
hgs
parents:
diff changeset
  2196
// Update listbox contents (currently open folder items).
hgs
parents:
diff changeset
  2197
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2198
//
hgs
parents:
diff changeset
  2199
void CMediaFileDialog::UpdateListBoxL( TBool aRestFindBox )
hgs
parents:
diff changeset
  2200
    {
hgs
parents:
diff changeset
  2201
    // prevent flickering during listbox update. ResetFindBoxL seems
hgs
parents:
diff changeset
  2202
    // to draw listbox many times
hgs
parents:
diff changeset
  2203
    iListBox->MakeVisible( EFalse );
hgs
parents:
diff changeset
  2204
hgs
parents:
diff changeset
  2205
    TRAP_IGNORE( DoUpdateListBoxL( aRestFindBox ) );
hgs
parents:
diff changeset
  2206
    
hgs
parents:
diff changeset
  2207
    iListBox->MakeVisible( ETrue );
hgs
parents:
diff changeset
  2208
    }
hgs
parents:
diff changeset
  2209
hgs
parents:
diff changeset
  2210
hgs
parents:
diff changeset
  2211
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2212
// CMediaFileDialog::DoUpdateListBoxL
hgs
parents:
diff changeset
  2213
// 
hgs
parents:
diff changeset
  2214
// Update listbox contents (currently open folder items).
hgs
parents:
diff changeset
  2215
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2216
//
hgs
parents:
diff changeset
  2217
void CMediaFileDialog::DoUpdateListBoxL( TBool aRestFindBox )
hgs
parents:
diff changeset
  2218
    {
hgs
parents:
diff changeset
  2219
    iState->SetUnknownFolderPosition( iMediaFileHandler->ResultCount() );
hgs
parents:
diff changeset
  2220
    
hgs
parents:
diff changeset
  2221
    // check current item index in case media file database has changed
hgs
parents:
diff changeset
  2222
    CheckListboxIndex();
hgs
parents:
diff changeset
  2223
    if ( aRestFindBox )
hgs
parents:
diff changeset
  2224
    	{
hgs
parents:
diff changeset
  2225
    	ResetFindBoxL();
hgs
parents:
diff changeset
  2226
    	iListBox->HandleItemAdditionL();
hgs
parents:
diff changeset
  2227
    	}
hgs
parents:
diff changeset
  2228
    
hgs
parents:
diff changeset
  2229
    TInt index = iState->CurrentItemIndex();
hgs
parents:
diff changeset
  2230
    if ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
hgs
parents:
diff changeset
  2231
        {
hgs
parents:
diff changeset
  2232
        iListBox->SetCurrentItemIndex( index );
hgs
parents:
diff changeset
  2233
        }
hgs
parents:
diff changeset
  2234
    else
hgs
parents:
diff changeset
  2235
        {
hgs
parents:
diff changeset
  2236
        iListBox->SetCurrentItemIndex( 0 );    
hgs
parents:
diff changeset
  2237
        }
hgs
parents:
diff changeset
  2238
    
hgs
parents:
diff changeset
  2239
    TBuf<KBufSize128> buf;
hgs
parents:
diff changeset
  2240
    if ( iState->CurrentFolder() == EEFolderSearch || 
hgs
parents:
diff changeset
  2241
         iState->CurrentFolder() == EEFolderSearchMusic )
hgs
parents:
diff changeset
  2242
        {
hgs
parents:
diff changeset
  2243
        TInt count = iListBox->Model()->NumberOfItems();
hgs
parents:
diff changeset
  2244
        iState->GetSearchTitle( buf, count );
hgs
parents:
diff changeset
  2245
        }
hgs
parents:
diff changeset
  2246
    else
hgs
parents:
diff changeset
  2247
        {
hgs
parents:
diff changeset
  2248
        iState->GetTitle( iState->CurrentFolder(), buf );
hgs
parents:
diff changeset
  2249
//#ifdef _DEBUG
hgs
parents:
diff changeset
  2250
        TInt folder = iState->CurrentFolder();
hgs
parents:
diff changeset
  2251
        if ( iState->FindBoxNeeded() && folder != EEFolderMusic && 
hgs
parents:
diff changeset
  2252
             folder != EEFolderRoot )
hgs
parents:
diff changeset
  2253
            {
hgs
parents:
diff changeset
  2254
            TBuf<KBufSize128> buf2( buf );
hgs
parents:
diff changeset
  2255
            TInt count = iListBox->Model()->NumberOfItems();
hgs
parents:
diff changeset
  2256
            buf.Format( _L("%S  (%d)"), &buf2, count );
hgs
parents:
diff changeset
  2257
            }
hgs
parents:
diff changeset
  2258
//#endif
hgs
parents:
diff changeset
  2259
        }
hgs
parents:
diff changeset
  2260
    
hgs
parents:
diff changeset
  2261
    AknTextUtils::DisplayTextLanguageSpecificNumberConversion( buf );
hgs
parents:
diff changeset
  2262
    iStatusPaneHandler->SetNaviPaneTitle( buf );
hgs
parents:
diff changeset
  2263
   
hgs
parents:
diff changeset
  2264
    UpdateCbaL( 0 );
hgs
parents:
diff changeset
  2265
    
hgs
parents:
diff changeset
  2266
    DrawNow();
hgs
parents:
diff changeset
  2267
    
hgs
parents:
diff changeset
  2268
    if ( iState->QueryDirection() != EEQueryUpdate )
hgs
parents:
diff changeset
  2269
        {
hgs
parents:
diff changeset
  2270
        CancelPreview();
hgs
parents:
diff changeset
  2271
        }
hgs
parents:
diff changeset
  2272
    
hgs
parents:
diff changeset
  2273
    ShowDetailsPopupL();       // for search view info popup
hgs
parents:
diff changeset
  2274
    }
hgs
parents:
diff changeset
  2275
hgs
parents:
diff changeset
  2276
hgs
parents:
diff changeset
  2277
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2278
// CMediaFileDialog::UpdateCbaL
hgs
parents:
diff changeset
  2279
// 
hgs
parents:
diff changeset
  2280
// Update cba. NOTE: Commented code (menu cba) is for (possible) future use.
hgs
parents:
diff changeset
  2281
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2282
//
hgs
parents:
diff changeset
  2283
void CMediaFileDialog::UpdateCbaL( TInt /*aAttr*/ )
hgs
parents:
diff changeset
  2284
    {
hgs
parents:
diff changeset
  2285
    TInt itemCount = iListBox->Model()->NumberOfItems();
hgs
parents:
diff changeset
  2286
    TInt currentIndex = CurrentItemListIndex();
hgs
parents:
diff changeset
  2287
    TInt folderId = iState->FolderId( currentIndex );
hgs
parents:
diff changeset
  2288
    TInt currentFolderId = iState->CurrentFolder();
hgs
parents:
diff changeset
  2289
  	  	
hgs
parents:
diff changeset
  2290
	
hgs
parents:
diff changeset
  2291
	CEikButtonGroupContainer& cba = ButtonGroupContainer(); // from eikbtgpc.h
hgs
parents:
diff changeset
  2292
	
hgs
parents:
diff changeset
  2293
hgs
parents:
diff changeset
  2294
	// Videos folder
hgs
parents:
diff changeset
  2295
    if ( currentFolderId == EEFolderVideos )
hgs
parents:
diff changeset
  2296
        {
hgs
parents:
diff changeset
  2297
        if ( itemCount == 0 )
hgs
parents:
diff changeset
  2298
            {
hgs
parents:
diff changeset
  2299
            cba.SetCommandSetL( R_AVKON_SOFTKEYS_BACK );
hgs
parents:
diff changeset
  2300
            //cba.SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
hgs
parents:
diff changeset
  2301
            }
hgs
parents:
diff changeset
  2302
        else
hgs
parents:
diff changeset
  2303
            {
hgs
parents:
diff changeset
  2304
            if ( IsValidVideoFileL( currentIndex, CMFProtectionHandler::EPlay ) )
hgs
parents:
diff changeset
  2305
                {
hgs
parents:
diff changeset
  2306
                cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_PREVIEW_SELECT_BACK );    
hgs
parents:
diff changeset
  2307
                }
hgs
parents:
diff changeset
  2308
            else
hgs
parents:
diff changeset
  2309
                {
hgs
parents:
diff changeset
  2310
                cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_SELECT_SELECT_BACK );
hgs
parents:
diff changeset
  2311
                }
hgs
parents:
diff changeset
  2312
            
hgs
parents:
diff changeset
  2313
            //cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_OPTIONS_CONTEXT_BACK );
hgs
parents:
diff changeset
  2314
            }
hgs
parents:
diff changeset
  2315
        return;
hgs
parents:
diff changeset
  2316
        }
hgs
parents:
diff changeset
  2317
hgs
parents:
diff changeset
  2318
    
hgs
parents:
diff changeset
  2319
    // Search folder
hgs
parents:
diff changeset
  2320
    if ( currentFolderId == EEFolderSearch || 
hgs
parents:
diff changeset
  2321
         currentFolderId == EEFolderSearchMusic )
hgs
parents:
diff changeset
  2322
        {
hgs
parents:
diff changeset
  2323
        if ( itemCount == 0 )
hgs
parents:
diff changeset
  2324
            {
hgs
parents:
diff changeset
  2325
            cba.SetCommandSetL( R_AVKON_SOFTKEYS_BACK );
hgs
parents:
diff changeset
  2326
            // cba.SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
hgs
parents:
diff changeset
  2327
            }
hgs
parents:
diff changeset
  2328
        else
hgs
parents:
diff changeset
  2329
            {
hgs
parents:
diff changeset
  2330
            if ( IsValidVideoFileL( currentIndex, CMFProtectionHandler::EPlay ) )
hgs
parents:
diff changeset
  2331
                {
hgs
parents:
diff changeset
  2332
                cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_PREVIEW_SELECT_BACK );
hgs
parents:
diff changeset
  2333
                }
hgs
parents:
diff changeset
  2334
            else
hgs
parents:
diff changeset
  2335
                {
hgs
parents:
diff changeset
  2336
                cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_SELECT_SELECT_BACK );
hgs
parents:
diff changeset
  2337
                }
hgs
parents:
diff changeset
  2338
                //cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_OPTIONS_SELECT_BACK );
hgs
parents:
diff changeset
  2339
            }
hgs
parents:
diff changeset
  2340
        return;
hgs
parents:
diff changeset
  2341
        }
hgs
parents:
diff changeset
  2342
    
hgs
parents:
diff changeset
  2343
    
hgs
parents:
diff changeset
  2344
	// Root folder
hgs
parents:
diff changeset
  2345
	if ( currentFolderId == EEFolderRoot )
hgs
parents:
diff changeset
  2346
	    {
hgs
parents:
diff changeset
  2347
	    if ( folderId == EEFolderDownload || folderId == EEFolderNullItemOne ||
hgs
parents:
diff changeset
  2348
	         folderId == EEFolderNullItemTwo )
hgs
parents:
diff changeset
  2349
	        {
hgs
parents:
diff changeset
  2350
	        //cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_OPTIONS_SELECT_BACK );
hgs
parents:
diff changeset
  2351
	        cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_SELECT_SELECT_BACK );
hgs
parents:
diff changeset
  2352
	        }
hgs
parents:
diff changeset
  2353
	    else
hgs
parents:
diff changeset
  2354
	        {
hgs
parents:
diff changeset
  2355
	        //cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_OPTIONS_OPEN_BACK );
hgs
parents:
diff changeset
  2356
	        cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_OPEN_OPEN_BACK );
hgs
parents:
diff changeset
  2357
	        }
hgs
parents:
diff changeset
  2358
	    return;
hgs
parents:
diff changeset
  2359
	    }
hgs
parents:
diff changeset
  2360
	
hgs
parents:
diff changeset
  2361
	
hgs
parents:
diff changeset
  2362
	// other folders
hgs
parents:
diff changeset
  2363
    if ( itemCount == 0 )
hgs
parents:
diff changeset
  2364
	    {
hgs
parents:
diff changeset
  2365
	    // folder is empty
hgs
parents:
diff changeset
  2366
	    cba.SetCommandSetL( R_AVKON_SOFTKEYS_BACK );
hgs
parents:
diff changeset
  2367
        //cba.SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
hgs
parents:
diff changeset
  2368
        }
hgs
parents:
diff changeset
  2369
	else if ( folderId != KErrNotFound )
hgs
parents:
diff changeset
  2370
	    {
hgs
parents:
diff changeset
  2371
	    // list items are folders
hgs
parents:
diff changeset
  2372
        cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_OPEN_OPEN_BACK );
hgs
parents:
diff changeset
  2373
        //cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_OPTIONS_OPEN_BACK );
hgs
parents:
diff changeset
  2374
	    }
hgs
parents:
diff changeset
  2375
	else
hgs
parents:
diff changeset
  2376
	    {
hgs
parents:
diff changeset
  2377
	    // list items are files
hgs
parents:
diff changeset
  2378
        cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_SELECT_SELECT_BACK );
hgs
parents:
diff changeset
  2379
        //cba.SetCommandSetL( R_MEDIA_FILE_DIALOG_CBA_OPTIONS_SELECT_BACK );
hgs
parents:
diff changeset
  2380
	    }
hgs
parents:
diff changeset
  2381
    }
hgs
parents:
diff changeset
  2382
    
hgs
parents:
diff changeset
  2383
    
hgs
parents:
diff changeset
  2384
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2385
// CMediaFileDialog::Panic
hgs
parents:
diff changeset
  2386
//
hgs
parents:
diff changeset
  2387
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2388
//
hgs
parents:
diff changeset
  2389
void CMediaFileDialog::Panic( TInt aReason ) 
hgs
parents:
diff changeset
  2390
    {
hgs
parents:
diff changeset
  2391
	_LIT( KPanicCategory, "CMediaFileDialog" );
hgs
parents:
diff changeset
  2392
	
hgs
parents:
diff changeset
  2393
	User::Panic( KPanicCategory, aReason ); 
hgs
parents:
diff changeset
  2394
    }
hgs
parents:
diff changeset
  2395
    
hgs
parents:
diff changeset
  2396
hgs
parents:
diff changeset
  2397
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2398
// CMediaFileDialog::ShowErrorNoteL
hgs
parents:
diff changeset
  2399
//
hgs
parents:
diff changeset
  2400
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2401
//
hgs
parents:
diff changeset
  2402
void CMediaFileDialog::ShowErrorNoteL( TInt aError )
hgs
parents:
diff changeset
  2403
	{
hgs
parents:
diff changeset
  2404
    TInt err = aError;
hgs
parents:
diff changeset
  2405
    
hgs
parents:
diff changeset
  2406
    if ( err == KErrNone )
hgs
parents:
diff changeset
  2407
        {
hgs
parents:
diff changeset
  2408
        return;
hgs
parents:
diff changeset
  2409
        }
hgs
parents:
diff changeset
  2410
hgs
parents:
diff changeset
  2411
    iBuf = KNullDesC;
hgs
parents:
diff changeset
  2412
    CTextResolver* tr = CTextResolver::NewLC();
hgs
parents:
diff changeset
  2413
	iBuf = tr->ResolveErrorString( err, CTextResolver::ECtxNoCtxNoSeparator );
hgs
parents:
diff changeset
  2414
  	CleanupStack::PopAndDestroy( tr );
hgs
parents:
diff changeset
  2415
	
hgs
parents:
diff changeset
  2416
	if ( iBuf.Length() > 0 )
hgs
parents:
diff changeset
  2417
	    {
hgs
parents:
diff changeset
  2418
  	    TMFDialogUtil::ShowErrorNoteL( iBuf );
hgs
parents:
diff changeset
  2419
	    }
hgs
parents:
diff changeset
  2420
	}
hgs
parents:
diff changeset
  2421
hgs
parents:
diff changeset
  2422
hgs
parents:
diff changeset
  2423
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2424
// CMediaFileDialog::ShowPreviewErrorNoteL
hgs
parents:
diff changeset
  2425
//
hgs
parents:
diff changeset
  2426
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2427
//
hgs
parents:
diff changeset
  2428
void CMediaFileDialog::ShowPreviewErrorNoteL( TInt aError, TInt aMediaType )
hgs
parents:
diff changeset
  2429
    {
hgs
parents:
diff changeset
  2430
    TInt err = KErrNone;
hgs
parents:
diff changeset
  2431
    
hgs
parents:
diff changeset
  2432
    if ( aError == KErrNoMemory || aError == KErrDiskFull )
hgs
parents:
diff changeset
  2433
        {
hgs
parents:
diff changeset
  2434
        CTextResolver* tr = CTextResolver::NewLC();
hgs
parents:
diff changeset
  2435
        iBuf = tr->ResolveErrorString( aError, CTextResolver::ECtxNoCtxNoSeparator );
hgs
parents:
diff changeset
  2436
        CleanupStack::PopAndDestroy( tr );
hgs
parents:
diff changeset
  2437
        err = aError;
hgs
parents:
diff changeset
  2438
        }
hgs
parents:
diff changeset
  2439
    else if ( aError == KErrNotSupported || aError == KErrCorrupt ||aError == KErrMMPartialPlayback || aError == KErrArgument )
hgs
parents:
diff changeset
  2440
        {
hgs
parents:
diff changeset
  2441
        if ( aMediaType == CMediaFileHandler::EMediaTypeVideo )
hgs
parents:
diff changeset
  2442
            {
hgs
parents:
diff changeset
  2443
            StringLoader::Load( iBuf, R_QTN_INFO_CLIP_FORMAT_ERROR );
hgs
parents:
diff changeset
  2444
            }
hgs
parents:
diff changeset
  2445
        else
hgs
parents:
diff changeset
  2446
            {
hgs
parents:
diff changeset
  2447
            StringLoader::Load( iBuf, R_QTN_INFO_FILE_FORMAT_ERROR );
hgs
parents:
diff changeset
  2448
            }
hgs
parents:
diff changeset
  2449
        err = aError;
hgs
parents:
diff changeset
  2450
        }
hgs
parents:
diff changeset
  2451
    
hgs
parents:
diff changeset
  2452
    if ( err == KErrNone )
hgs
parents:
diff changeset
  2453
        {
hgs
parents:
diff changeset
  2454
        return;
hgs
parents:
diff changeset
  2455
        }
hgs
parents:
diff changeset
  2456
    
hgs
parents:
diff changeset
  2457
#ifdef _DEBUG
hgs
parents:
diff changeset
  2458
    TMFDialogUtil::ShowErrorNoteL( iBuf, aError );
hgs
parents:
diff changeset
  2459
#else
hgs
parents:
diff changeset
  2460
    TMFDialogUtil::ShowErrorNoteL( iBuf );
hgs
parents:
diff changeset
  2461
#endif
hgs
parents:
diff changeset
  2462
    
hgs
parents:
diff changeset
  2463
    }
hgs
parents:
diff changeset
  2464
hgs
parents:
diff changeset
  2465
hgs
parents:
diff changeset
  2466
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2467
// CMediaFileDialog::ShowWaitNoteL
hgs
parents:
diff changeset
  2468
//
hgs
parents:
diff changeset
  2469
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2470
//
hgs
parents:
diff changeset
  2471
void CMediaFileDialog::ShowWaitNoteL( TBool aDatabaseChanged )
hgs
parents:
diff changeset
  2472
    {
hgs
parents:
diff changeset
  2473
    TBuf<KBufSize128> buf;
hgs
parents:
diff changeset
  2474
    
hgs
parents:
diff changeset
  2475
    if ( aDatabaseChanged )
hgs
parents:
diff changeset
  2476
        {
hgs
parents:
diff changeset
  2477
        StringLoader::Load( buf, R_QTN_WAIT_NOTE_UPDATE );
hgs
parents:
diff changeset
  2478
        //buf = _L("Refreshing");
hgs
parents:
diff changeset
  2479
        }
hgs
parents:
diff changeset
  2480
    else if ( iState->QueryFolder() == EEFolderSearch ||
hgs
parents:
diff changeset
  2481
              iState->QueryFolder() == EEFolderSearchMusic )
hgs
parents:
diff changeset
  2482
        {
hgs
parents:
diff changeset
  2483
        StringLoader::Load( buf, R_QTN_WAIT_NOTE_SEARCH );
hgs
parents:
diff changeset
  2484
        }
hgs
parents:
diff changeset
  2485
    else
hgs
parents:
diff changeset
  2486
        {
hgs
parents:
diff changeset
  2487
        StringLoader::Load( buf, R_QTN_WAIT_NOTE_OPEN );
hgs
parents:
diff changeset
  2488
        }
hgs
parents:
diff changeset
  2489
    
hgs
parents:
diff changeset
  2490
    iWaitNote->LaunchL( buf );     
hgs
parents:
diff changeset
  2491
    }
hgs
parents:
diff changeset
  2492
hgs
parents:
diff changeset
  2493
hgs
parents:
diff changeset
  2494
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2495
// CMediaFileDialog::DeleteMenuItem
hgs
parents:
diff changeset
  2496
//
hgs
parents:
diff changeset
  2497
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2498
//
hgs
parents:
diff changeset
  2499
void CMediaFileDialog::DeleteMenuItem( CEikMenuPane* aMenuPane, TInt aCommandId )
hgs
parents:
diff changeset
  2500
	{
hgs
parents:
diff changeset
  2501
	TInt pos = KErrNotFound;
hgs
parents:
diff changeset
  2502
    if ( aMenuPane->MenuItemExists( aCommandId, pos ) )
hgs
parents:
diff changeset
  2503
		{
hgs
parents:
diff changeset
  2504
		aMenuPane->DeleteMenuItem( aCommandId );
hgs
parents:
diff changeset
  2505
		}
hgs
parents:
diff changeset
  2506
	}
hgs
parents:
diff changeset
  2507
hgs
parents:
diff changeset
  2508
hgs
parents:
diff changeset
  2509
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2510
// CMediaFileDialog::ShowPopupNote
hgs
parents:
diff changeset
  2511
//
hgs
parents:
diff changeset
  2512
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2513
//
hgs
parents:
diff changeset
  2514
void CMediaFileDialog::ShowPopupNoteL( const TDesC& aText ) 
hgs
parents:
diff changeset
  2515
    {
hgs
parents:
diff changeset
  2516
    const TInt KPopupDisplayTime = 3*1000;
hgs
parents:
diff changeset
  2517
    const TInt KPopupDelayTime = 500;
hgs
parents:
diff changeset
  2518
    
hgs
parents:
diff changeset
  2519
    iPopupNote->SetTextL( aText );
hgs
parents:
diff changeset
  2520
    iPopupNote->SetTimeDelayBeforeShow( KPopupDelayTime );
hgs
parents:
diff changeset
  2521
    iPopupNote->SetTimePopupInView( KPopupDisplayTime );    
hgs
parents:
diff changeset
  2522
    iPopupNote->ShowInfoPopupNote();    
hgs
parents:
diff changeset
  2523
    }
hgs
parents:
diff changeset
  2524
hgs
parents:
diff changeset
  2525
hgs
parents:
diff changeset
  2526
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2527
// CMediaFileDialog::CurrentItemListIndex
hgs
parents:
diff changeset
  2528
// 
hgs
parents:
diff changeset
  2529
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2530
//
hgs
parents:
diff changeset
  2531
TInt CMediaFileDialog::CurrentItemListIndex()
hgs
parents:
diff changeset
  2532
    {
hgs
parents:
diff changeset
  2533
    TInt itemCount = iListBox->Model()->NumberOfItems();
hgs
parents:
diff changeset
  2534
    TInt currentIndex = iListBox->CurrentItemIndex();
hgs
parents:
diff changeset
  2535
     
hgs
parents:
diff changeset
  2536
    if ( itemCount == 0 || currentIndex < 0 )
hgs
parents:
diff changeset
  2537
        {
hgs
parents:
diff changeset
  2538
        return KErrNotFound; // list or find box is empty
hgs
parents:
diff changeset
  2539
        }
hgs
parents:
diff changeset
  2540
     
hgs
parents:
diff changeset
  2541
    // convert from findbox index into original list index
hgs
parents:
diff changeset
  2542
    if ( FindBox() && FindBox()->IsVisible() )
hgs
parents:
diff changeset
  2543
        {
hgs
parents:
diff changeset
  2544
        TInt tempIndex = currentIndex;
hgs
parents:
diff changeset
  2545
        CAknFilteredTextListBoxModel* model =
hgs
parents:
diff changeset
  2546
        STATIC_CAST(CAknFilteredTextListBoxModel*, iListBox->Model());
hgs
parents:
diff changeset
  2547
        
hgs
parents:
diff changeset
  2548
        if ( model->Filter() )
hgs
parents:
diff changeset
  2549
            {
hgs
parents:
diff changeset
  2550
            currentIndex = model->Filter()->FilteredItemIndex( tempIndex );
hgs
parents:
diff changeset
  2551
            }
hgs
parents:
diff changeset
  2552
        }
hgs
parents:
diff changeset
  2553
     
hgs
parents:
diff changeset
  2554
    return currentIndex;
hgs
parents:
diff changeset
  2555
    }
hgs
parents:
diff changeset
  2556
hgs
parents:
diff changeset
  2557
hgs
parents:
diff changeset
  2558
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2559
// CMediaFileDialog::GetSelectedItemFileName
hgs
parents:
diff changeset
  2560
//
hgs
parents:
diff changeset
  2561
//------------------------------------------------------------------------------
hgs
parents:
diff changeset
  2562
//
hgs
parents:
diff changeset
  2563
void CMediaFileDialog::GetSelectedItemFileName( TInt aListboxIndex, TDes& aFileName )
hgs
parents:
diff changeset
  2564
    {
hgs
parents:
diff changeset
  2565
    aFileName = KNullDesC;
hgs
parents:
diff changeset
  2566
    
hgs
parents:
diff changeset
  2567
    __ASSERT_DEBUG( iState->QueryNeeded(), Panic( KErrGeneral ) );
hgs
parents:
diff changeset
  2568
            
hgs
parents:
diff changeset
  2569
    TInt id = iState->CurrentFolder();
hgs
parents:
diff changeset
  2570
        
hgs
parents:
diff changeset
  2571
    // read selected list item text from metadata    
hgs
parents:
diff changeset
  2572
    TInt extraIndexes = iState->LeadingPersistentFolderCount();
hgs
parents:
diff changeset
  2573
    TInt queryIndex = aListboxIndex - extraIndexes;
hgs
parents:
diff changeset
  2574
hgs
parents:
diff changeset
  2575
    iMediaFileHandler->GetAttribute( queryIndex, CMediaFileHandler::EAttrFullName, 
hgs
parents:
diff changeset
  2576
                                     aFileName, id );
hgs
parents:
diff changeset
  2577
    }
hgs
parents:
diff changeset
  2578
hgs
parents:
diff changeset
  2579
hgs
parents:
diff changeset
  2580
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2581
// CMediaFileDialog::ConstructListboxItem
hgs
parents:
diff changeset
  2582
// 
hgs
parents:
diff changeset
  2583
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2584
//
hgs
parents:
diff changeset
  2585
TPtrC CMediaFileDialog::ConstructListboxItem( TInt aListboxIndex )
hgs
parents:
diff changeset
  2586
    {
hgs
parents:
diff changeset
  2587
    _LIT( KFormat2, "%d\t%S\t%d" );
hgs
parents:
diff changeset
  2588
  
hgs
parents:
diff changeset
  2589
    TBool isPersistent = EFalse;
hgs
parents:
diff changeset
  2590
    TInt mediaTypeIcon = EEIconEmpty;
hgs
parents:
diff changeset
  2591
    TInt storageTypeIcon = EEIconEmpty;
hgs
parents:
diff changeset
  2592
    TInt folderId = KErrNotFound;
hgs
parents:
diff changeset
  2593
    iState->GetFolderInfo( aListboxIndex, folderId, iListboxItemText1,
hgs
parents:
diff changeset
  2594
                                          isPersistent, mediaTypeIcon );
hgs
parents:
diff changeset
  2595
    if ( folderId != KErrNotFound )
hgs
parents:
diff changeset
  2596
        {
hgs
parents:
diff changeset
  2597
        if ( !isPersistent )
hgs
parents:
diff changeset
  2598
            {
hgs
parents:
diff changeset
  2599
            GetListItemText( aListboxIndex, iListboxItemText1 );
hgs
parents:
diff changeset
  2600
            }
hgs
parents:
diff changeset
  2601
        }
hgs
parents:
diff changeset
  2602
    else
hgs
parents:
diff changeset
  2603
        {
hgs
parents:
diff changeset
  2604
        GetListItemText( aListboxIndex, iListboxItemText1 );
hgs
parents:
diff changeset
  2605
        mediaTypeIcon = MediaTypeIcon( aListboxIndex );
hgs
parents:
diff changeset
  2606
        storageTypeIcon = StorageTypeIcon( aListboxIndex );
hgs
parents:
diff changeset
  2607
        }
hgs
parents:
diff changeset
  2608
hgs
parents:
diff changeset
  2609
    iListboxItemText2.Format( KFormat2, mediaTypeIcon, &iListboxItemText1, storageTypeIcon );
hgs
parents:
diff changeset
  2610
    return iListboxItemText2;
hgs
parents:
diff changeset
  2611
    }
hgs
parents:
diff changeset
  2612
hgs
parents:
diff changeset
  2613
hgs
parents:
diff changeset
  2614
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2615
// CMediaFileDialog::MediaTypeIcon
hgs
parents:
diff changeset
  2616
// 
hgs
parents:
diff changeset
  2617
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2618
//
hgs
parents:
diff changeset
  2619
TInt CMediaFileDialog::MediaTypeIcon( TInt aListboxIndex )
hgs
parents:
diff changeset
  2620
    {
hgs
parents:
diff changeset
  2621
    if ( aListboxIndex < 0 )
hgs
parents:
diff changeset
  2622
        {
hgs
parents:
diff changeset
  2623
        return EEIconEmpty;
hgs
parents:
diff changeset
  2624
        }
hgs
parents:
diff changeset
  2625
hgs
parents:
diff changeset
  2626
    TInt mediaType = iMediaFileHandler->Attribute( aListboxIndex,
hgs
parents:
diff changeset
  2627
                                        CMediaFileHandler::EAttrMediaType,
hgs
parents:
diff changeset
  2628
                                        iState->CurrentFolder() );
hgs
parents:
diff changeset
  2629
    
hgs
parents:
diff changeset
  2630
    TInt iconId = EEIconMusic;
hgs
parents:
diff changeset
  2631
    if ( mediaType == CMediaFileHandler::EMediaTypeTone )
hgs
parents:
diff changeset
  2632
        {
hgs
parents:
diff changeset
  2633
        iconId = EEIconTone;
hgs
parents:
diff changeset
  2634
        }
hgs
parents:
diff changeset
  2635
    else if ( mediaType == CMediaFileHandler::EMediaTypeVideo )
hgs
parents:
diff changeset
  2636
        {
hgs
parents:
diff changeset
  2637
        iconId = EEIconVideo;
hgs
parents:
diff changeset
  2638
        }
hgs
parents:
diff changeset
  2639
    else if ( mediaType == CMediaFileHandler::EMediaTypeRecording )
hgs
parents:
diff changeset
  2640
        {
hgs
parents:
diff changeset
  2641
        iconId = EEIconRecording;
hgs
parents:
diff changeset
  2642
        }
hgs
parents:
diff changeset
  2643
    
hgs
parents:
diff changeset
  2644
    return iconId;
hgs
parents:
diff changeset
  2645
    }
hgs
parents:
diff changeset
  2646
hgs
parents:
diff changeset
  2647
hgs
parents:
diff changeset
  2648
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2649
// CMediaFileDialog::StorageTypeIcon
hgs
parents:
diff changeset
  2650
// 
hgs
parents:
diff changeset
  2651
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2652
//
hgs
parents:
diff changeset
  2653
TInt CMediaFileDialog::StorageTypeIcon( TInt aListboxIndex )
hgs
parents:
diff changeset
  2654
    {
hgs
parents:
diff changeset
  2655
    if ( aListboxIndex < 0 )
hgs
parents:
diff changeset
  2656
        {
hgs
parents:
diff changeset
  2657
        return EEIconEmpty;
hgs
parents:
diff changeset
  2658
        }
hgs
parents:
diff changeset
  2659
hgs
parents:
diff changeset
  2660
    TInt storageType = iMediaFileHandler->Attribute( aListboxIndex,
hgs
parents:
diff changeset
  2661
                                        CMediaFileHandler::EAttrStorageType,
hgs
parents:
diff changeset
  2662
                                        iState->CurrentFolder() );
hgs
parents:
diff changeset
  2663
    TInt iconId = EEIconEmpty;
hgs
parents:
diff changeset
  2664
    if ( storageType == CMediaFileHandler::EMassStorage )
hgs
parents:
diff changeset
  2665
        {
hgs
parents:
diff changeset
  2666
        iconId = EEIconMassStorage;
hgs
parents:
diff changeset
  2667
        }
hgs
parents:
diff changeset
  2668
    
hgs
parents:
diff changeset
  2669
    if ( storageType == CMediaFileHandler::EMemoryCard )
hgs
parents:
diff changeset
  2670
        {
hgs
parents:
diff changeset
  2671
        iconId = EEIconMemoryCard;
hgs
parents:
diff changeset
  2672
        }
hgs
parents:
diff changeset
  2673
hgs
parents:
diff changeset
  2674
    return iconId;
hgs
parents:
diff changeset
  2675
    }
hgs
parents:
diff changeset
  2676
hgs
parents:
diff changeset
  2677
hgs
parents:
diff changeset
  2678
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2679
// CMediaFileDialog::GetListItemText
hgs
parents:
diff changeset
  2680
// 
hgs
parents:
diff changeset
  2681
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2682
//
hgs
parents:
diff changeset
  2683
void CMediaFileDialog::GetListItemText( TInt aListboxIndex, TDes& aText )
hgs
parents:
diff changeset
  2684
    {
hgs
parents:
diff changeset
  2685
    __ASSERT_DEBUG( iState->QueryNeeded(), Panic( KErrGeneral ) );
hgs
parents:
diff changeset
  2686
hgs
parents:
diff changeset
  2687
    TInt id = iState->CurrentFolder();
hgs
parents:
diff changeset
  2688
    
hgs
parents:
diff changeset
  2689
    // read selected list item text from metadata    
hgs
parents:
diff changeset
  2690
    TInt extraIndexes = iState->LeadingPersistentFolderCount();
hgs
parents:
diff changeset
  2691
    TInt queryIndex = aListboxIndex - extraIndexes;
hgs
parents:
diff changeset
  2692
    
hgs
parents:
diff changeset
  2693
    iMediaFileHandler->GetAttribute( queryIndex, 
hgs
parents:
diff changeset
  2694
                       CMediaFileHandler::EAttrSongName, aText, id );
hgs
parents:
diff changeset
  2695
    }
hgs
parents:
diff changeset
  2696
hgs
parents:
diff changeset
  2697
hgs
parents:
diff changeset
  2698
hgs
parents:
diff changeset
  2699
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2700
// CMediaFileDialog::ListboxItemCount (from CMFListHandlerObserver)
hgs
parents:
diff changeset
  2701
// 
hgs
parents:
diff changeset
  2702
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2703
//
hgs
parents:
diff changeset
  2704
TInt CMediaFileDialog::ListboxItemCount()
hgs
parents:
diff changeset
  2705
    {
hgs
parents:
diff changeset
  2706
    TInt count1 = iState->PersistentFolderCount();
hgs
parents:
diff changeset
  2707
    TInt count2 = 0;
hgs
parents:
diff changeset
  2708
    
hgs
parents:
diff changeset
  2709
    if ( iState->QueryNeeded() )
hgs
parents:
diff changeset
  2710
        {
hgs
parents:
diff changeset
  2711
        count2 = iMediaFileHandler->ResultCount();
hgs
parents:
diff changeset
  2712
        }
hgs
parents:
diff changeset
  2713
    return count1 + count2;
hgs
parents:
diff changeset
  2714
    }
hgs
parents:
diff changeset
  2715
hgs
parents:
diff changeset
  2716
hgs
parents:
diff changeset
  2717
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2718
// CMediaFileDialog::HandleMFEventL (from MMediaFileHandlerObserver)
hgs
parents:
diff changeset
  2719
// 
hgs
parents:
diff changeset
  2720
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2721
//
hgs
parents:
diff changeset
  2722
void CMediaFileDialog::HandleMFEventL( TInt aEvent, TInt aError )
hgs
parents:
diff changeset
  2723
    {
hgs
parents:
diff changeset
  2724
    //
hgs
parents:
diff changeset
  2725
    // handle cancel button
hgs
parents:
diff changeset
  2726
    //
hgs
parents:
diff changeset
  2727
    if ( aEvent == MMediaFileHandlerObserver::EQueryCanceled )
hgs
parents:
diff changeset
  2728
        {
hgs
parents:
diff changeset
  2729
        iWaitNote->CancelProgressDialogL();
hgs
parents:
diff changeset
  2730
        iSearchText = KNullDesC;
hgs
parents:
diff changeset
  2731
        UpdateListBoxL();
hgs
parents:
diff changeset
  2732
        return;
hgs
parents:
diff changeset
  2733
        }
hgs
parents:
diff changeset
  2734
    
hgs
parents:
diff changeset
  2735
    //
hgs
parents:
diff changeset
  2736
    // handle error
hgs
parents:
diff changeset
  2737
    //
hgs
parents:
diff changeset
  2738
    if ( aError != KErrNone )
hgs
parents:
diff changeset
  2739
        {
hgs
parents:
diff changeset
  2740
        iWaitNote->CancelProgressDialogL();
hgs
parents:
diff changeset
  2741
        ResetDialogL( aError );
hgs
parents:
diff changeset
  2742
hgs
parents:
diff changeset
  2743
        FLOG( _L("### CMediaFileDialog::HandleMFEventL (%d) ###"), aError );
hgs
parents:
diff changeset
  2744
        return;
hgs
parents:
diff changeset
  2745
        }
hgs
parents:
diff changeset
  2746
hgs
parents:
diff changeset
  2747
    
hgs
parents:
diff changeset
  2748
    if ( aEvent != MMediaFileHandlerObserver::EUnknownQueryComplete )
hgs
parents:
diff changeset
  2749
        {
hgs
parents:
diff changeset
  2750
        // unknown query is always followed by another query
hgs
parents:
diff changeset
  2751
        iWaitNote->CancelProgressDialogL();    
hgs
parents:
diff changeset
  2752
        }
hgs
parents:
diff changeset
  2753
    
hgs
parents:
diff changeset
  2754
    
hgs
parents:
diff changeset
  2755
    if ( aEvent == MMediaFileHandlerObserver::EUnknownQueryComplete )
hgs
parents:
diff changeset
  2756
        {
hgs
parents:
diff changeset
  2757
        TInt count = iMediaFileHandler->ResultCount();
hgs
parents:
diff changeset
  2758
        TInt folderId = iState->QueryFolder();
hgs
parents:
diff changeset
  2759
        iState->SetUnknownCount( folderId, count );
hgs
parents:
diff changeset
  2760
        
hgs
parents:
diff changeset
  2761
        TInt err = KErrNone;
hgs
parents:
diff changeset
  2762
        TRAP( err, QueryL( folderId ) );
hgs
parents:
diff changeset
  2763
        if ( err != KErrNone )
hgs
parents:
diff changeset
  2764
            {
hgs
parents:
diff changeset
  2765
            iWaitNote->CancelProgressDialogL();
hgs
parents:
diff changeset
  2766
            User::Leave( err );
hgs
parents:
diff changeset
  2767
            }
hgs
parents:
diff changeset
  2768
        }
hgs
parents:
diff changeset
  2769
hgs
parents:
diff changeset
  2770
    if ( aEvent == MMediaFileHandlerObserver::EQueryComplete )
hgs
parents:
diff changeset
  2771
        {
hgs
parents:
diff changeset
  2772
        // query was successful - update dialog state
hgs
parents:
diff changeset
  2773
        iState->SetStateAfterQuery();
hgs
parents:
diff changeset
  2774
       
hgs
parents:
diff changeset
  2775
        TInt count = iMediaFileHandler->ResultCount();
hgs
parents:
diff changeset
  2776
        
hgs
parents:
diff changeset
  2777
        if ( iState->CurrentFolder() == EEFolderArtist )
hgs
parents:
diff changeset
  2778
            {
hgs
parents:
diff changeset
  2779
            TInt count = iMediaFileHandler->UnknownArtistCount();
hgs
parents:
diff changeset
  2780
            iState->SetUnknownCount( EEFolderArtist, count );
hgs
parents:
diff changeset
  2781
            }
hgs
parents:
diff changeset
  2782
        iState->HideUnknownFolders();
hgs
parents:
diff changeset
  2783
        UpdateListBoxL();
hgs
parents:
diff changeset
  2784
        
hgs
parents:
diff changeset
  2785
#ifdef _DEBUG
hgs
parents:
diff changeset
  2786
        iTest->PrintTimeL( _L("query took") );  // test code
hgs
parents:
diff changeset
  2787
#endif        
hgs
parents:
diff changeset
  2788
        }
hgs
parents:
diff changeset
  2789
hgs
parents:
diff changeset
  2790
    if ( aEvent == MMediaFileHandlerObserver::EMediaFileChanged )
hgs
parents:
diff changeset
  2791
        {
hgs
parents:
diff changeset
  2792
        HandleMediaFileChanged();
hgs
parents:
diff changeset
  2793
        }
hgs
parents:
diff changeset
  2794
    
hgs
parents:
diff changeset
  2795
    if (  aEvent == MMediaFileHandlerObserver::EScanRomComplete )
hgs
parents:
diff changeset
  2796
        {
hgs
parents:
diff changeset
  2797
        iWaitNote->CancelProgressDialogL(); 
hgs
parents:
diff changeset
  2798
        }
hgs
parents:
diff changeset
  2799
    
hgs
parents:
diff changeset
  2800
    if ( aEvent == MMediaFileHandlerObserver::EInitComplete )
hgs
parents:
diff changeset
  2801
        {
hgs
parents:
diff changeset
  2802
        iDatabaseOpen = ETrue;
hgs
parents:
diff changeset
  2803
    	
hgs
parents:
diff changeset
  2804
    	StartRomScan();
hgs
parents:
diff changeset
  2805
        }
hgs
parents:
diff changeset
  2806
    }
hgs
parents:
diff changeset
  2807
hgs
parents:
diff changeset
  2808
hgs
parents:
diff changeset
  2809
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2810
// CMediaFileDialog::HandleMediaFileChanged
hgs
parents:
diff changeset
  2811
// 
hgs
parents:
diff changeset
  2812
// Handle situation where file system changes and media files are added /
hgs
parents:
diff changeset
  2813
// removed. This function makes a query to update current folder and
hgs
parents:
diff changeset
  2814
// stores name or id of the currently selected item. Current item info
hgs
parents:
diff changeset
  2815
// is needed to restore current item after query. 
hgs
parents:
diff changeset
  2816
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2817
//
hgs
parents:
diff changeset
  2818
void CMediaFileDialog::HandleMediaFileChanged()
hgs
parents:
diff changeset
  2819
    {
hgs
parents:
diff changeset
  2820
    // query is ongoing - ignore this file change event
hgs
parents:
diff changeset
  2821
    if ( !iMediaFileHandler->QueryReady() )
hgs
parents:
diff changeset
  2822
         {
hgs
parents:
diff changeset
  2823
         FLOG( _L("### CMediaFileDialog::HandleMediaFileChanged: query in progress ###") );
hgs
parents:
diff changeset
  2824
         return;
hgs
parents:
diff changeset
  2825
         }
hgs
parents:
diff changeset
  2826
    
hgs
parents:
diff changeset
  2827
    iState->ResetUnknownCount();
hgs
parents:
diff changeset
  2828
    TMFCurrentItemInfo& info = iState->CurrentItemInfo();
hgs
parents:
diff changeset
  2829
    info.Reset();
hgs
parents:
diff changeset
  2830
    info.iIndexCheckNeeded = ETrue; //  set to false when dialog is opened
hgs
parents:
diff changeset
  2831
        
hgs
parents:
diff changeset
  2832
    TInt currentFolder = iState->CurrentFolder();
hgs
parents:
diff changeset
  2833
    TInt currentIndex = CurrentItemListIndex();
hgs
parents:
diff changeset
  2834
         
hgs
parents:
diff changeset
  2835
    TBool isPersistent = EFalse;
hgs
parents:
diff changeset
  2836
    TInt iconId = EEIconEmpty;
hgs
parents:
diff changeset
  2837
    TInt id = KErrNotFound;
hgs
parents:
diff changeset
  2838
    TBuf<KBufSize64> buf;
hgs
parents:
diff changeset
  2839
    iState->GetFolderInfo( currentIndex, id, buf,
hgs
parents:
diff changeset
  2840
                                         isPersistent, iconId );
hgs
parents:
diff changeset
  2841
    if ( id == KErrNotFound )
hgs
parents:
diff changeset
  2842
        {
hgs
parents:
diff changeset
  2843
        // get media file id
hgs
parents:
diff changeset
  2844
        info.iMediaFileId = iMediaFileHandler->Attribute( currentIndex, 
hgs
parents:
diff changeset
  2845
                 CMediaFileHandler::EAttrMediaFileId, currentFolder );
hgs
parents:
diff changeset
  2846
        }
hgs
parents:
diff changeset
  2847
    else if ( !isPersistent )
hgs
parents:
diff changeset
  2848
        {
hgs
parents:
diff changeset
  2849
        // get non-persistent folder name (eg some album name)
hgs
parents:
diff changeset
  2850
        GetListItemText( currentIndex, info.iFolderText );
hgs
parents:
diff changeset
  2851
        }
hgs
parents:
diff changeset
  2852
    else
hgs
parents:
diff changeset
  2853
        {
hgs
parents:
diff changeset
  2854
        // get persistent folder id (eg "Unknown" folder)
hgs
parents:
diff changeset
  2855
        info.iFolderId = id;
hgs
parents:
diff changeset
  2856
        }
hgs
parents:
diff changeset
  2857
hgs
parents:
diff changeset
  2858
    info.iItemIndex = currentIndex;
hgs
parents:
diff changeset
  2859
       
hgs
parents:
diff changeset
  2860
    iState->SetQueryInfo( 0, KNullDesC, 0, EEQueryUpdate );
hgs
parents:
diff changeset
  2861
        
hgs
parents:
diff changeset
  2862
    TBool databaseChanged = ETrue;
hgs
parents:
diff changeset
  2863
    QueryL( currentFolder, databaseChanged );
hgs
parents:
diff changeset
  2864
    }
hgs
parents:
diff changeset
  2865
hgs
parents:
diff changeset
  2866
hgs
parents:
diff changeset
  2867
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2868
// CMediaFileDialog::CheckListboxIndex
hgs
parents:
diff changeset
  2869
// 
hgs
parents:
diff changeset
  2870
// Check that current item selection is correct. Function is used in case
hgs
parents:
diff changeset
  2871
// file system has changed (media files added / removed.
hgs
parents:
diff changeset
  2872
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2873
//
hgs
parents:
diff changeset
  2874
void CMediaFileDialog::CheckListboxIndex()
hgs
parents:
diff changeset
  2875
    {
hgs
parents:
diff changeset
  2876
    TMFCurrentItemInfo& info = iState->CurrentItemInfo();
hgs
parents:
diff changeset
  2877
    if ( !info.iIndexCheckNeeded )
hgs
parents:
diff changeset
  2878
        {
hgs
parents:
diff changeset
  2879
        return;
hgs
parents:
diff changeset
  2880
        }
hgs
parents:
diff changeset
  2881
    
hgs
parents:
diff changeset
  2882
    TInt direction = iState->QueryDirection();
hgs
parents:
diff changeset
  2883
    TInt newListIndex = KErrNotFound;
hgs
parents:
diff changeset
  2884
    
hgs
parents:
diff changeset
  2885
    if ( direction == EEQueryUp )
hgs
parents:
diff changeset
  2886
        {
hgs
parents:
diff changeset
  2887
        FLOG( _L("query up") );
hgs
parents:
diff changeset
  2888
        TInt prevId = iState->PreviousFolderId();
hgs
parents:
diff changeset
  2889
        TInt listIndex = iState->ListIndex( prevId );
hgs
parents:
diff changeset
  2890
        if ( !iState->IsPersistent( prevId ) )
hgs
parents:
diff changeset
  2891
            {
hgs
parents:
diff changeset
  2892
            iState->GetText( prevId, info.iFolderText );
hgs
parents:
diff changeset
  2893
            TInt num = iState->LeadingPersistentFolderCount();
hgs
parents:
diff changeset
  2894
            newListIndex = iMediaFileHandler->ItemIndex(
hgs
parents:
diff changeset
  2895
                           info.iFolderText, listIndex );
hgs
parents:
diff changeset
  2896
            iState->SetCurrentItemIndex( newListIndex + num );
hgs
parents:
diff changeset
  2897
            }
hgs
parents:
diff changeset
  2898
        else
hgs
parents:
diff changeset
  2899
            {
hgs
parents:
diff changeset
  2900
            iState->SetCurrentItemIndex( listIndex );
hgs
parents:
diff changeset
  2901
            }
hgs
parents:
diff changeset
  2902
        }
hgs
parents:
diff changeset
  2903
hgs
parents:
diff changeset
  2904
    if ( direction == EEQueryUpdate )
hgs
parents:
diff changeset
  2905
        {
hgs
parents:
diff changeset
  2906
        if ( info.iMediaFileId != KErrNotFound )
hgs
parents:
diff changeset
  2907
            {
hgs
parents:
diff changeset
  2908
            newListIndex = iMediaFileHandler->ItemIndex(
hgs
parents:
diff changeset
  2909
                           info.iMediaFileId, info.iItemIndex );
hgs
parents:
diff changeset
  2910
            }
hgs
parents:
diff changeset
  2911
        else if ( info.iFolderText.Length() > 0 )
hgs
parents:
diff changeset
  2912
            {
hgs
parents:
diff changeset
  2913
            newListIndex = iMediaFileHandler->ItemIndex(
hgs
parents:
diff changeset
  2914
                    info.iFolderText, info.iItemIndex );
hgs
parents:
diff changeset
  2915
            TInt num = iState->LeadingPersistentFolderCount();
hgs
parents:
diff changeset
  2916
            newListIndex = newListIndex + num;
hgs
parents:
diff changeset
  2917
            }
hgs
parents:
diff changeset
  2918
        else if ( info.iFolderId != KErrNotFound )
hgs
parents:
diff changeset
  2919
            {
hgs
parents:
diff changeset
  2920
            newListIndex = iState->ListIndex( info.iFolderId );
hgs
parents:
diff changeset
  2921
            }
hgs
parents:
diff changeset
  2922
        
hgs
parents:
diff changeset
  2923
        iState->SetCurrentItemIndex( newListIndex );
hgs
parents:
diff changeset
  2924
        }
hgs
parents:
diff changeset
  2925
    }
hgs
parents:
diff changeset
  2926
hgs
parents:
diff changeset
  2927
hgs
parents:
diff changeset
  2928
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2929
// CMediaFileDialog::HandlePreviewEventL (from MPreviewHandlerObserver)
hgs
parents:
diff changeset
  2930
// 
hgs
parents:
diff changeset
  2931
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2932
//
hgs
parents:
diff changeset
  2933
void CMediaFileDialog::HandlePreviewEventL( TInt aEvent, TInt aError )
hgs
parents:
diff changeset
  2934
    {
hgs
parents:
diff changeset
  2935
    if ( aEvent == MPreviewHandlerObserver::EAudioPreviewComplete )
hgs
parents:
diff changeset
  2936
        {
hgs
parents:
diff changeset
  2937
        ShowPreviewErrorNoteL( aError, CMediaFileHandler::EMediaTypeMusic );
hgs
parents:
diff changeset
  2938
        }
hgs
parents:
diff changeset
  2939
hgs
parents:
diff changeset
  2940
    if ( aEvent == MPreviewHandlerObserver::EVideoPreviewComplete )
hgs
parents:
diff changeset
  2941
        {
hgs
parents:
diff changeset
  2942
        ShowPreviewErrorNoteL( aError, CMediaFileHandler::EMediaTypeVideo );        
hgs
parents:
diff changeset
  2943
        }
hgs
parents:
diff changeset
  2944
hgs
parents:
diff changeset
  2945
    if ( aEvent == MPreviewHandlerObserver::EPreviewError )
hgs
parents:
diff changeset
  2946
        {
hgs
parents:
diff changeset
  2947
        FLOG( _L("### CMediaFileDialog::HandlePreviewEventL (%d) ###"), aError );
hgs
parents:
diff changeset
  2948
        
hgs
parents:
diff changeset
  2949
        ShowPreviewErrorNoteL( aError, CMediaFileHandler::EMediaTypeMusic );        
hgs
parents:
diff changeset
  2950
        }
hgs
parents:
diff changeset
  2951
    }
hgs
parents:
diff changeset
  2952
hgs
parents:
diff changeset
  2953
hgs
parents:
diff changeset
  2954
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2955
// CMediaFileDialog::HandleLosingForeground (from MCoeForegroundObserver)
hgs
parents:
diff changeset
  2956
//
hgs
parents:
diff changeset
  2957
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2958
//
hgs
parents:
diff changeset
  2959
void CMediaFileDialog::HandleLosingForeground()
hgs
parents:
diff changeset
  2960
    {
hgs
parents:
diff changeset
  2961
    iForeGround = EFalse;
hgs
parents:
diff changeset
  2962
    //Record the current item info
hgs
parents:
diff changeset
  2963
    if ( iState && iListBox)
hgs
parents:
diff changeset
  2964
    	{
hgs
parents:
diff changeset
  2965
    	iState->SetCurrentItemIndex( CurrentItemListIndex() );
hgs
parents:
diff changeset
  2966
    	}
hgs
parents:
diff changeset
  2967
    
hgs
parents:
diff changeset
  2968
    CancelPreview();
hgs
parents:
diff changeset
  2969
    }
hgs
parents:
diff changeset
  2970
hgs
parents:
diff changeset
  2971
hgs
parents:
diff changeset
  2972
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2973
// CMediaFileDialog::HandleGainingForeground (from MCoeForegroundObserver)
hgs
parents:
diff changeset
  2974
//
hgs
parents:
diff changeset
  2975
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2976
//
hgs
parents:
diff changeset
  2977
void CMediaFileDialog::HandleGainingForeground()
hgs
parents:
diff changeset
  2978
    {
hgs
parents:
diff changeset
  2979
    iForeGround = ETrue;
hgs
parents:
diff changeset
  2980
    if ( iListBox )
hgs
parents:
diff changeset
  2981
    	{
hgs
parents:
diff changeset
  2982
    	UpdateListBoxL( EFalse );
hgs
parents:
diff changeset
  2983
   	 	}
hgs
parents:
diff changeset
  2984
    }
hgs
parents:
diff changeset
  2985
hgs
parents:
diff changeset
  2986
hgs
parents:
diff changeset
  2987
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2988
// CMediaFileDialog::HandleControlEventL (from MCoeControlObserver)
hgs
parents:
diff changeset
  2989
// 
hgs
parents:
diff changeset
  2990
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2991
//
hgs
parents:
diff changeset
  2992
void CMediaFileDialog::HandleControlEventL( CCoeControl* aControl,
hgs
parents:
diff changeset
  2993
                                                      TCoeEvent aEventType )
hgs
parents:
diff changeset
  2994
     {
hgs
parents:
diff changeset
  2995
     TInt currentFolderId = iState->CurrentFolder();
hgs
parents:
diff changeset
  2996
     
hgs
parents:
diff changeset
  2997
     if ( aEventType == EEventStateChanged )
hgs
parents:
diff changeset
  2998
         {
hgs
parents:
diff changeset
  2999
         CancelPreview();
hgs
parents:
diff changeset
  3000
         if ( aControl == iListBox )
hgs
parents:
diff changeset
  3001
             {
hgs
parents:
diff changeset
  3002
             if ( currentFolderId == EEFolderRoot   ||
hgs
parents:
diff changeset
  3003
                  currentFolderId == EEFolderSearch || 
hgs
parents:
diff changeset
  3004
                  currentFolderId == EEFolderVideos )
hgs
parents:
diff changeset
  3005
                {
hgs
parents:
diff changeset
  3006
                UpdateCbaL( 0 );  // only these folders need dynamic cba update
hgs
parents:
diff changeset
  3007
                }
hgs
parents:
diff changeset
  3008
             StartPreviewWithDelay();
hgs
parents:
diff changeset
  3009
             ShowDetailsPopupL();   // show search details in Search view
hgs
parents:
diff changeset
  3010
   
hgs
parents:
diff changeset
  3011
             // forward listbox state change events to this control's
hgs
parents:
diff changeset
  3012
             // observers
hgs
parents:
diff changeset
  3013
             ReportEventL( MCoeControlObserver::EEventStateChanged );
hgs
parents:
diff changeset
  3014
             }
hgs
parents:
diff changeset
  3015
           
hgs
parents:
diff changeset
  3016
         if ( FindBox() && aControl == FindBox() )
hgs
parents:
diff changeset
  3017
             {
hgs
parents:
diff changeset
  3018
             User::InfoPrint(_L("find box  event arrived"));
hgs
parents:
diff changeset
  3019
              
hgs
parents:
diff changeset
  3020
             // this event is received when user enters or deletes
hgs
parents:
diff changeset
  3021
             // chars in find box. Backspace key in empty find box does not
hgs
parents:
diff changeset
  3022
             // generate this event.
hgs
parents:
diff changeset
  3023
hgs
parents:
diff changeset
  3024
             if ( currentFolderId == EEFolderSearch ||
hgs
parents:
diff changeset
  3025
                  currentFolderId == EEFolderRoot ||
hgs
parents:
diff changeset
  3026
                  currentFolderId == EEFolderMusic ||
hgs
parents:
diff changeset
  3027
                  currentFolderId == EEFolderSearchMusic )
hgs
parents:
diff changeset
  3028
                 {
hgs
parents:
diff changeset
  3029
                 StartSearchWithDelay();
hgs
parents:
diff changeset
  3030
                 return;
hgs
parents:
diff changeset
  3031
                 }
hgs
parents:
diff changeset
  3032
            
hgs
parents:
diff changeset
  3033
             // StartPreviewWithDelay();
hgs
parents:
diff changeset
  3034
             
hgs
parents:
diff changeset
  3035
             UpdateCbaL( 0 );
hgs
parents:
diff changeset
  3036
             
hgs
parents:
diff changeset
  3037
//#ifdef _DEBUG
hgs
parents:
diff changeset
  3038
             TBuf<KBufSize128> buf;
hgs
parents:
diff changeset
  3039
             iState->GetTitle( iState->CurrentFolder(), buf );
hgs
parents:
diff changeset
  3040
             TBuf<KBufSize128> buf2( buf );
hgs
parents:
diff changeset
  3041
             TInt count = iListBox->Model()->NumberOfItems();
hgs
parents:
diff changeset
  3042
             buf.Format( _L("%S  (%d)"), &buf2, count );
hgs
parents:
diff changeset
  3043
             iStatusPaneHandler->SetNaviPaneTitle( buf );
hgs
parents:
diff changeset
  3044
//#endif
hgs
parents:
diff changeset
  3045
            
hgs
parents:
diff changeset
  3046
             // Forward listbox state change events to this control's
hgs
parents:
diff changeset
  3047
             // observers
hgs
parents:
diff changeset
  3048
             ReportEventL( MCoeControlObserver::EEventStateChanged );
hgs
parents:
diff changeset
  3049
             }
hgs
parents:
diff changeset
  3050
         }
hgs
parents:
diff changeset
  3051
     }
hgs
parents:
diff changeset
  3052
hgs
parents:
diff changeset
  3053
hgs
parents:
diff changeset
  3054
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3055
// CMediaFileDialog::HandleWaitNoteL (from MMediaFileWaitNoteObserver)
hgs
parents:
diff changeset
  3056
// 
hgs
parents:
diff changeset
  3057
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3058
//
hgs
parents:
diff changeset
  3059
void CMediaFileDialog::HandleWaitNoteL( TInt /*aButtonId*/ )
hgs
parents:
diff changeset
  3060
    {
hgs
parents:
diff changeset
  3061
    iMediaFileHandler->CancelQuery();
hgs
parents:
diff changeset
  3062
    }
hgs
parents:
diff changeset
  3063
hgs
parents:
diff changeset
  3064
hgs
parents:
diff changeset
  3065
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3066
// CMediaFileDialog::AdaptiveSearchTextChanged (from MAdaptiveSearchTextObserver)
hgs
parents:
diff changeset
  3067
// 
hgs
parents:
diff changeset
  3068
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3069
//
hgs
parents:
diff changeset
  3070
void CMediaFileDialog::AdaptiveSearchTextChanged( CAknSearchField* /*aSearchField*/ )
hgs
parents:
diff changeset
  3071
    {
hgs
parents:
diff changeset
  3072
    // not used
hgs
parents:
diff changeset
  3073
    }
hgs
parents:
diff changeset
  3074
hgs
parents:
diff changeset
  3075
hgs
parents:
diff changeset
  3076
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3077
// CMediaFileDialog::OnPeninputUiDeactivated
hgs
parents:
diff changeset
  3078
// 
hgs
parents:
diff changeset
  3079
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3080
//
hgs
parents:
diff changeset
  3081
void CMediaFileDialog::OnPeninputUiDeactivated()
hgs
parents:
diff changeset
  3082
    {
hgs
parents:
diff changeset
  3083
    iPeninputActive = EFalse;
hgs
parents:
diff changeset
  3084
    
hgs
parents:
diff changeset
  3085
    if ( FindBox()->TextLength() == 0 && 
hgs
parents:
diff changeset
  3086
          ( iState->CurrentFolder() == EEFolderSearch ||
hgs
parents:
diff changeset
  3087
            iState->CurrentFolder() == EEFolderSearchMusic ) )
hgs
parents:
diff changeset
  3088
        {
hgs
parents:
diff changeset
  3089
        HandleBackL();
hgs
parents:
diff changeset
  3090
        }
hgs
parents:
diff changeset
  3091
    else
hgs
parents:
diff changeset
  3092
        {
hgs
parents:
diff changeset
  3093
        // search starts immediately after user closes pen input
hgs
parents:
diff changeset
  3094
        TRAP_IGNORE( StartSearchWithDelay() );
hgs
parents:
diff changeset
  3095
        }
hgs
parents:
diff changeset
  3096
    }
hgs
parents:
diff changeset
  3097
hgs
parents:
diff changeset
  3098
hgs
parents:
diff changeset
  3099
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3100
// CMediaFileDialog::OnPeninputUiActivated
hgs
parents:
diff changeset
  3101
// 
hgs
parents:
diff changeset
  3102
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3103
//
hgs
parents:
diff changeset
  3104
void CMediaFileDialog::OnPeninputUiActivated()
hgs
parents:
diff changeset
  3105
    {
hgs
parents:
diff changeset
  3106
    iPeninputActive = ETrue;
hgs
parents:
diff changeset
  3107
    CancelPreview();
hgs
parents:
diff changeset
  3108
    }
hgs
parents:
diff changeset
  3109
hgs
parents:
diff changeset
  3110
hgs
parents:
diff changeset
  3111
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3112
// CMediaFileDialog::HandleListBoxEventL (from MEikListBoxObserver)
hgs
parents:
diff changeset
  3113
// 
hgs
parents:
diff changeset
  3114
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3115
//
hgs
parents:
diff changeset
  3116
void CMediaFileDialog::HandleListBoxEventL( CEikListBox* /*aListBox*/,
hgs
parents:
diff changeset
  3117
                                             TListBoxEvent aEventType )
hgs
parents:
diff changeset
  3118
    {
hgs
parents:
diff changeset
  3119
    TInt current = iState->CurrentFolder();
hgs
parents:
diff changeset
  3120
    
hgs
parents:
diff changeset
  3121
    switch ( aEventType )
hgs
parents:
diff changeset
  3122
        {
hgs
parents:
diff changeset
  3123
        case EEventPenDownOnItem:
hgs
parents:
diff changeset
  3124
            {
hgs
parents:
diff changeset
  3125
            iListBox->View()->ItemDrawer()->SetFlags( CListItemDrawer::EPressedDownState );
hgs
parents:
diff changeset
  3126
            break;
hgs
parents:
diff changeset
  3127
            }
hgs
parents:
diff changeset
  3128
            
hgs
parents:
diff changeset
  3129
        case EEventItemClicked:
hgs
parents:
diff changeset
  3130
            {
hgs
parents:
diff changeset
  3131
            iIsDoubleClicked = EFalse;
hgs
parents:
diff changeset
  3132
hgs
parents:
diff changeset
  3133
            if ( current != KErrNotFound )
hgs
parents:
diff changeset
  3134
              {
hgs
parents:
diff changeset
  3135
              HandleOKL( EAttrOpen );  // open folder item
hgs
parents:
diff changeset
  3136
              }
hgs
parents:
diff changeset
  3137
            break;
hgs
parents:
diff changeset
  3138
            }
hgs
parents:
diff changeset
  3139
            
hgs
parents:
diff changeset
  3140
        case EEventItemDoubleClicked:
hgs
parents:
diff changeset
  3141
        case EEventEnterKeyPressed:
hgs
parents:
diff changeset
  3142
            {
hgs
parents:
diff changeset
  3143
            iIsDoubleClicked = ETrue;
hgs
parents:
diff changeset
  3144
            TBool closeDialog = HandleOKL( EAttrDoubleClicked );
hgs
parents:
diff changeset
  3145
        
hgs
parents:
diff changeset
  3146
            if ( closeDialog )
hgs
parents:
diff changeset
  3147
                {
hgs
parents:
diff changeset
  3148
                // close after short delay (dialog cannot be closed from this function)
hgs
parents:
diff changeset
  3149
                CloseDialogWithDelayL();
hgs
parents:
diff changeset
  3150
                }        
hgs
parents:
diff changeset
  3151
            break;
hgs
parents:
diff changeset
  3152
            }
hgs
parents:
diff changeset
  3153
            
hgs
parents:
diff changeset
  3154
        case EEventItemDraggingActioned:
hgs
parents:
diff changeset
  3155
            {
hgs
parents:
diff changeset
  3156
            UpdateCbaL( KErrNone );
hgs
parents:
diff changeset
  3157
            DrawNow();
hgs
parents:
diff changeset
  3158
            break;
hgs
parents:
diff changeset
  3159
            }
hgs
parents:
diff changeset
  3160
            
hgs
parents:
diff changeset
  3161
        case EEventFlickStarted:
hgs
parents:
diff changeset
  3162
        case EEventPanningStarted:
hgs
parents:
diff changeset
  3163
            {
hgs
parents:
diff changeset
  3164
            //cancel preview if Kinetic scrolling is started
hgs
parents:
diff changeset
  3165
            if ( iCaller )
hgs
parents:
diff changeset
  3166
                {
hgs
parents:
diff changeset
  3167
                iCaller->Cancel();
hgs
parents:
diff changeset
  3168
                }
hgs
parents:
diff changeset
  3169
            break;
hgs
parents:
diff changeset
  3170
            }
hgs
parents:
diff changeset
  3171
            
hgs
parents:
diff changeset
  3172
        default:
hgs
parents:
diff changeset
  3173
            break;
hgs
parents:
diff changeset
  3174
        }
hgs
parents:
diff changeset
  3175
    }
hgs
parents:
diff changeset
  3176
hgs
parents:
diff changeset
  3177
hgs
parents:
diff changeset
  3178
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3179
// CMediaFileDialog::CloseDialogWithDelayL
hgs
parents:
diff changeset
  3180
//
hgs
parents:
diff changeset
  3181
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3182
//
hgs
parents:
diff changeset
  3183
void CMediaFileDialog::CloseDialogWithDelayL()
hgs
parents:
diff changeset
  3184
    {    
hgs
parents:
diff changeset
  3185
    delete iIdle;
hgs
parents:
diff changeset
  3186
    iIdle = NULL;
hgs
parents:
diff changeset
  3187
    iIdle = CIdle::NewL( CActive::EPriorityIdle );
hgs
parents:
diff changeset
  3188
    
hgs
parents:
diff changeset
  3189
    if ( iIdle )
hgs
parents:
diff changeset
  3190
        {                    
hgs
parents:
diff changeset
  3191
        iIdle->Start( TCallBack( CloseDialog, this ) );
hgs
parents:
diff changeset
  3192
        }
hgs
parents:
diff changeset
  3193
    delete iInputBlock;
hgs
parents:
diff changeset
  3194
    iInputBlock = NULL;
hgs
parents:
diff changeset
  3195
    iInputBlock = CAknInputBlock::NewLC();
hgs
parents:
diff changeset
  3196
    CleanupStack::Pop( iInputBlock );
hgs
parents:
diff changeset
  3197
    }
hgs
parents:
diff changeset
  3198
hgs
parents:
diff changeset
  3199
hgs
parents:
diff changeset
  3200
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3201
// CMediaFileDialog::CloseDialog
hgs
parents:
diff changeset
  3202
//
hgs
parents:
diff changeset
  3203
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3204
//
hgs
parents:
diff changeset
  3205
TInt CMediaFileDialog::CloseDialog( TAny *aObj )
hgs
parents:
diff changeset
  3206
    {    
hgs
parents:
diff changeset
  3207
    CMediaFileDialog *dlg = (CMediaFileDialog*) aObj;
hgs
parents:
diff changeset
  3208
    delete dlg->iInputBlock;
hgs
parents:
diff changeset
  3209
    dlg->iInputBlock = NULL;
hgs
parents:
diff changeset
  3210
    
hgs
parents:
diff changeset
  3211
    TRAP_IGNORE( dlg->TryExitL( EAknSoftkeyOk ) );
hgs
parents:
diff changeset
  3212
    
hgs
parents:
diff changeset
  3213
    return 0;
hgs
parents:
diff changeset
  3214
    }
hgs
parents:
diff changeset
  3215
hgs
parents:
diff changeset
  3216
hgs
parents:
diff changeset
  3217
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3218
// CMediaFileDialog::HandleActiveCallL (from MMFActiveCallerObserver)
hgs
parents:
diff changeset
  3219
//
hgs
parents:
diff changeset
  3220
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3221
//
hgs
parents:
diff changeset
  3222
void CMediaFileDialog::HandleActiveCallL( TInt aCallId )
hgs
parents:
diff changeset
  3223
    {
hgs
parents:
diff changeset
  3224
    if ( aCallId == EAttrPreview )
hgs
parents:
diff changeset
  3225
        {
hgs
parents:
diff changeset
  3226
        //double click the item of the listbox to select the tones, do not preview it.
hgs
parents:
diff changeset
  3227
        if ( iIsDoubleClicked )
hgs
parents:
diff changeset
  3228
        	{
hgs
parents:
diff changeset
  3229
        	iIsDoubleClicked = EFalse;
hgs
parents:
diff changeset
  3230
        	}
hgs
parents:
diff changeset
  3231
        else
hgs
parents:
diff changeset
  3232
        	{
hgs
parents:
diff changeset
  3233
            // start preview after delay
hgs
parents:
diff changeset
  3234
            PreviewL( CMediaFileList::EMediaFileTypeAudio ); 
hgs
parents:
diff changeset
  3235
        	}
hgs
parents:
diff changeset
  3236
        }
hgs
parents:
diff changeset
  3237
hgs
parents:
diff changeset
  3238
    if ( aCallId == EAttrSearch )
hgs
parents:
diff changeset
  3239
        {
hgs
parents:
diff changeset
  3240
        // start search after delay
hgs
parents:
diff changeset
  3241
        SearchL();    
hgs
parents:
diff changeset
  3242
        }
hgs
parents:
diff changeset
  3243
    }
hgs
parents:
diff changeset
  3244
hgs
parents:
diff changeset
  3245
hgs
parents:
diff changeset
  3246
hgs
parents:
diff changeset
  3247
hgs
parents:
diff changeset
  3248
/******************************************************************************
hgs
parents:
diff changeset
  3249
 *  class CMFListHandler
hgs
parents:
diff changeset
  3250
 ******************************************************************************/
hgs
parents:
diff changeset
  3251
hgs
parents:
diff changeset
  3252
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3253
// CMFListHandler::NewL
hgs
parents:
diff changeset
  3254
// 
hgs
parents:
diff changeset
  3255
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3256
//
hgs
parents:
diff changeset
  3257
CMFListHandler* CMFListHandler::NewL()
hgs
parents:
diff changeset
  3258
    {
hgs
parents:
diff changeset
  3259
	CMFListHandler* self = new (ELeave) CMFListHandler();
hgs
parents:
diff changeset
  3260
    CleanupStack::PushL(self);
hgs
parents:
diff changeset
  3261
	self->ConstructL();
hgs
parents:
diff changeset
  3262
    CleanupStack::Pop(self);
hgs
parents:
diff changeset
  3263
	return self;
hgs
parents:
diff changeset
  3264
    }
hgs
parents:
diff changeset
  3265
hgs
parents:
diff changeset
  3266
hgs
parents:
diff changeset
  3267
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3268
// CMFListHandler::~CMFListHandler
hgs
parents:
diff changeset
  3269
// 
hgs
parents:
diff changeset
  3270
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3271
//
hgs
parents:
diff changeset
  3272
CMFListHandler::~CMFListHandler()
hgs
parents:
diff changeset
  3273
    {
hgs
parents:
diff changeset
  3274
    }
hgs
parents:
diff changeset
  3275
hgs
parents:
diff changeset
  3276
hgs
parents:
diff changeset
  3277
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3278
// CMFListHandler::ConstructL
hgs
parents:
diff changeset
  3279
// 
hgs
parents:
diff changeset
  3280
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3281
//
hgs
parents:
diff changeset
  3282
void CMFListHandler::ConstructL( void )
hgs
parents:
diff changeset
  3283
    {
hgs
parents:
diff changeset
  3284
    }
hgs
parents:
diff changeset
  3285
hgs
parents:
diff changeset
  3286
hgs
parents:
diff changeset
  3287
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3288
// CMFListHandler::CMFListHandler
hgs
parents:
diff changeset
  3289
// 
hgs
parents:
diff changeset
  3290
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3291
//
hgs
parents:
diff changeset
  3292
CMFListHandler::CMFListHandler()
hgs
parents:
diff changeset
  3293
    {
hgs
parents:
diff changeset
  3294
    }
hgs
parents:
diff changeset
  3295
hgs
parents:
diff changeset
  3296
hgs
parents:
diff changeset
  3297
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3298
// CMFListHandler::SetObserver
hgs
parents:
diff changeset
  3299
// 
hgs
parents:
diff changeset
  3300
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3301
//
hgs
parents:
diff changeset
  3302
void CMFListHandler::SetObserver( CMFListHandlerObserver* aObserver )
hgs
parents:
diff changeset
  3303
    {
hgs
parents:
diff changeset
  3304
    iObserver = aObserver;
hgs
parents:
diff changeset
  3305
    }
hgs
parents:
diff changeset
  3306
    
hgs
parents:
diff changeset
  3307
    
hgs
parents:
diff changeset
  3308
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3309
// CMFListHandler::MdcaCount (from MDesCArray)
hgs
parents:
diff changeset
  3310
// 
hgs
parents:
diff changeset
  3311
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3312
//
hgs
parents:
diff changeset
  3313
TInt CMFListHandler::MdcaCount() const
hgs
parents:
diff changeset
  3314
    {
hgs
parents:
diff changeset
  3315
    return iObserver->ListboxItemCount();
hgs
parents:
diff changeset
  3316
    }
hgs
parents:
diff changeset
  3317
hgs
parents:
diff changeset
  3318
hgs
parents:
diff changeset
  3319
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3320
// CMFListHandler::MdcaPoint (from MDesCArray)
hgs
parents:
diff changeset
  3321
//
hgs
parents:
diff changeset
  3322
// CEikListBox calls this function just before it draws list box item.
hgs
parents:
diff changeset
  3323
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3324
//
hgs
parents:
diff changeset
  3325
TPtrC16 CMFListHandler::MdcaPoint( TInt aIndex ) const
hgs
parents:
diff changeset
  3326
    {
hgs
parents:
diff changeset
  3327
    return iObserver->ConstructListboxItem( aIndex );
hgs
parents:
diff changeset
  3328
    }
hgs
parents:
diff changeset
  3329
hgs
parents:
diff changeset
  3330
hgs
parents:
diff changeset
  3331
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3332
// CMFListHandler::Panic
hgs
parents:
diff changeset
  3333
//
hgs
parents:
diff changeset
  3334
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  3335
//
hgs
parents:
diff changeset
  3336
void CMFListHandler::Panic( TInt aReason ) 
hgs
parents:
diff changeset
  3337
    {
hgs
parents:
diff changeset
  3338
	_LIT( KPanicCategory, "CMFListHandler" );
hgs
parents:
diff changeset
  3339
	
hgs
parents:
diff changeset
  3340
	User::Panic( KPanicCategory, aReason ); 
hgs
parents:
diff changeset
  3341
    }
hgs
parents:
diff changeset
  3342
hgs
parents:
diff changeset
  3343
hgs
parents:
diff changeset
  3344
hgs
parents:
diff changeset
  3345
hgs
parents:
diff changeset
  3346
hgs
parents:
diff changeset
  3347
hgs
parents:
diff changeset
  3348
hgs
parents:
diff changeset
  3349
hgs
parents:
diff changeset
  3350
//  End of File