mmserv/audioeffectsui/equalizer/src/EqualizerPresetsDialog.cpp
changeset 16 43d09473c595
parent 14 80975da52420
child 22 128eb6a32b84
--- a/mmserv/audioeffectsui/equalizer/src/EqualizerPresetsDialog.cpp	Mon May 03 12:59:52 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1228 +0,0 @@
-/*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:    Implementation of CEqualizerPresetsDialog class
-*
-*/
-
-
-
-
-// INCLUDE FILES   
-#include <StringLoader.h>
-#include <akntitle.h>  
-#include <eikenv.h>
-#include <bldvariant.hrh>
-#include <aknnotewrappers.h>
-#include <bautils.h>
-#include <aknenv.h> 
-#include <aknlists.h>
-#include <data_caging_path_literals.hrh>
-#include <eikclbd.h>
-#include <AknIconArray.h> 
-#include <avkon.hrh>
-//LAF and Skin changes
-#include <AknsUtils.h>
-#include <e32base.h>
-#include <AknsConstants.h>
-#include <aknlayout.cdl.h>
-#include <featmgr.h>
-#include <hlplch.h>
-#include <AudioEqualizerUtility.h>
-#include <sysutil.h>
-#include <AknGlobalNote.h>
-#include <aknclearer.h>
-#include <layoutmetadata.cdl.h>
-
-#include <csxhelp/eq.hlp.hrh>
-#include <Equalizer.rsg>  // Contains the resource definition
-#include <equalizer.mbg>
-#include "EqualizerPrivateConstants.h"
-#include "EqualizerPresetsDialog.h" 
-#include "EqualizerPresetListArray.h" 
-#include "EqualizerEditingDialog.h" 
-#include "Equalizer.hrh"
-
-// CONSTANTS
-//Used during building a new preset name   
-_LIT( KEqrFormat, "%d)" );
-_LIT( KEqrZero, "0" );
-_LIT( KEqrParenthesis, "(" );  
-
-// Used for checking if the new preset name contains illegal characters
-_LIT(KEqrLessThan, "<");
-_LIT(KEqrGreaterThan, ">");
-_LIT(KEqrQuote, "\"");
-_LIT(KEqrBackSlash, "\\");
-_LIT(KEqrForwardSlash, "/");
-_LIT(KEqrOrSymbol, "|");
-_LIT(KEqrColon, ":");
-_LIT(KEqrAsterisk, "*");
-_LIT(KEqrQuestionMark, "?");
-  
-// ================= MEMBER FUNCTIONS =======================
- 
-// -------------------------------------------------------------------
-// CEqualizerPresetsDialog* CEqualizerPresetsDialog::NewL()
-// Create instance of concrete ECOM interface implementation
-// -------------------------------------------------------------------
-// 
-EXPORT_C CEqualizerPresetsDialog* CEqualizerPresetsDialog::NewL(
-       CAudioEqualizerUtility* aAudEqUtility,
-       TInt aCurrentActivePreset, 
-       MEqualizerPresetActivationObserver& aEqrPresetActObserver)
-    {
-    CEqualizerPresetsDialog* self = new (ELeave) CEqualizerPresetsDialog(
-        aAudEqUtility, aEqrPresetActObserver);
-    CleanupStack::PushL(self); 
-    self->ConstructL(aCurrentActivePreset);
-    CleanupStack::Pop(self); 
-    return self;
-    }
-
-// -------------------------------------------------------------------
-// CEqualizerPresetsDialog::CEqualizerPresetsDialog(
-//       CAudioEqualizerUtility*& aAudEqUtility,
-//       MEqualizerPresetActivationObserver& aEqrPresetActObserver)
-// First Phase Construction
-// -------------------------------------------------------------------
-// 
-CEqualizerPresetsDialog::CEqualizerPresetsDialog(
-       CAudioEqualizerUtility* aAudEqUtility,
-       MEqualizerPresetActivationObserver& aEqrPresetActObserver):
-       
-       iAudEqUtility(aAudEqUtility),
-       iEqrPresetActObserver(aEqrPresetActObserver)
-    {
-    }
-
-// -------------------------------------------------------------------
-// CEqualizerPresetsDialog::ConstructL()
-// Second Phase Constructor
-// -------------------------------------------------------------------
-// 
-void CEqualizerPresetsDialog::ConstructL(const TInt aCurrentActivePreset)
-    {
-    //Initially set these variable to EFalse
-    iContextSensitiveMenu = EFalse;
-    iIgnoreKeyEvents = EFalse;
-    
-    iRepository = CRepository::NewL(KCRUidMusicPlayerSettings);
-
-    //Add the resource file
-
-    // Find which drive this DLL is installed.
-    TFileName fileName;
-    // Get the full resource file
-    TParse fp;
-    // Add the resource dir
-    fp.Set( KEqualizerResourceFileName, &KDC_APP_RESOURCE_DIR, NULL);
-    // Get the filename with full path
-    fileName = fp.FullName(); 
-    //for localisation of resource file
-    BaflUtils::NearestLanguageFile( iEikonEnv->FsSession(), fileName ); 
-    iResourceFileOffset = iEikonEnv->AddResourceFileL( fileName );
-
-    //Read text for preset "None" from rss file
-    iPresetNoneText = StringLoader::LoadL(R_QTN_EQUALIZER_PRESET_NONE);
-    iTitleText = StringLoader::LoadL(R_QTN_EQUALIZER_TITLE_TEXT);
-
-    iItemArray = CEqualizerPresetListArray::NewL(iAudEqUtility, 
-                                     aCurrentActivePreset);
-
-    iItemArray->GetCurrentActivePreset(iActivePreset);
-
-    CAknDialog::ConstructL(R_EQUALIZER_CONTAINER_MENUBAR);
-    }
-
-// -------------------------------------------------------------------
-// CEqualizerPresetsDialog::~CEqualizerPresetsDialog()
-// Destructor
-// --------------------------------------------------------------------
-//  
-CEqualizerPresetsDialog::~CEqualizerPresetsDialog()
-    {
-    if (iResourceFileOffset)
-        {
-        iEikonEnv->DeleteResourceFile(iResourceFileOffset); 
-        }
-    delete iRepository;
-    if (iAppTitleText)
-        {
-        // restore musicplayer's title
-        CEikStatusPane* sp=iEikonEnv->AppUiFactory()->StatusPane();
-        CAknTitlePane* tp=(CAknTitlePane*)sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle));   
-        tp->SetTextL(*iAppTitleText);        
-	    delete iAppTitleText;
-        }
-    delete iPresetNoneText;
-    delete iTitleText;
-    delete iItemArray;
-    }
-
-// --------------------------------------------------------------------------
-// void CEqualizerPresetsDialog::BuildPresetNameL( TDes& aName) const
-// Returns free folder name
-// --------------------------------------------------------------------------
-//
-void CEqualizerPresetsDialog::BuildPresetNameL( TDes& aName) const
-    {
-    //set name in the query box to "Preset"
-    HBufC* defaultText = StringLoader::LoadLC(
-        R_QTN_EQ_PRESET_DEFAULT_NAME);    
-
-    TInt n(0);
-
-    // Numbers start from 1
-    TBool found( EFalse );
-    TBuf<KMaxPresetNameLength> number;
-
-    // The loop is iterated until a free folder name is found.
-    FOREVER
-        {
-        found = EFalse;
-        // Constructs a candidate for the name
-        TBuf<KMaxPresetNameLength> newName;
-        newName.Copy( *defaultText );
-
-        if( n > 0 )
-            // First new is without number ( New folder, New folder(01), New folder(02), ...)
-            {
-            // Creates the current number.
-            number.Format( KEqrFormat, n );
-            AknTextUtils::LanguageSpecificNumberConversion ( number );
-
-            TInt leadingZeroLength( 0 );
-            if( n < 10 )
-                {
-                leadingZeroLength = KEqrZero().Length();
-                }
-
-            // checks the total length of the costructed string
-            if( ( number.Length() + newName.Length() + KEqrParenthesis().Length()
-                  + leadingZeroLength ) > KMaxPresetNameLength )
-                {
-                User::Leave( KErrOverflow );
-                }
-
-            // Appends the first parenthesis
-            newName.Append( KEqrParenthesis );
-            if( n < 10 )
-                {
-                // Appends the leading zero ( always two digits 08, 09, 10, 11,...)
-                 TBuf< 16 > zero(KEqrZero);
-        		AknTextUtils::DisplayTextLanguageSpecificNumberConversion( zero );
-                newName.Append( KEqrZero );
-                }
-            newName.Append( number );
-            }
-        found = SearchPresetL(newName);
-        
-        if( found == KErrNotFound )
-            {
-            aName = newName;
-            CleanupStack::PopAndDestroy( defaultText); 
-            return;
-            }
-        n++;
-        }   
-    }
-
-// -----------------------------------------------------------------------
-// CEqualizerPresetsDialog::GetNewName(TInt aResourceId, TDes& presetName)
-//
-// This function is called to display the dialog box to get a new name
-// during "Raname" or "Create new"
-// -----------------------------------------------------------------------
-// 
-TBool CEqualizerPresetsDialog::GetNewNameL(const TInt aResourceId, TDes& 
-aPresetName) const
-    {
-    CAknTextQueryDialog* dlg;
-    TBool ret = EFalse;
-    
-    while (1)
-        {
-        dlg = CAknTextQueryDialog::NewL(aPresetName); 
-        if (dlg->ExecuteLD(aResourceId))
-            {
-            // Illegal characters in a preset name are < > \" \\ / | : * ?"
-
-            if ( (aPresetName.FindC( KEqrLessThan ) != KErrNotFound ) ||
-                 (aPresetName.FindC( KEqrGreaterThan ) != KErrNotFound ) ||
-                 (aPresetName.FindC( KEqrQuote ) != KErrNotFound ) ||
-                 (aPresetName.FindC( KEqrBackSlash ) != KErrNotFound ) ||                 
-                 (aPresetName.FindC( KEqrForwardSlash ) != KErrNotFound ) ||
-                 (aPresetName.FindC( KEqrOrSymbol ) != KErrNotFound ) ||
-                 (aPresetName.FindC( KEqrColon ) != KErrNotFound ) ||                 
-                 (aPresetName.FindC( KEqrAsterisk ) != KErrNotFound ) ||
-                 (aPresetName.FindC( KEqrQuestionMark ) != KErrNotFound )             
-               )
-                {
-                HBufC* text = StringLoader::LoadLC(
-                    R_QTN_FLDR_ILLEGAL_CHARACTERS);
-                CAknInformationNote* note = new( ELeave ) CAknInformationNote(ETrue);
-                note->ExecuteLD( *text );
-                CleanupStack::PopAndDestroy(text);
-                continue;
-                }
-            
-            TInt error = SearchPresetL(aPresetName);    
-            if (error != KErrNotFound)
-                {
-                // display error
-                HBufC* label = StringLoader::LoadLC(
-                    R_QTN_FLDR_NAME_ALREADY_USED, aPresetName );
-                CAknInformationNote* note = new( ELeave )
-                                         CAknInformationNote( ETrue );
-                note->ExecuteLD( *label );
-                CleanupStack::PopAndDestroy(label);
-                continue;
-                }
-            // New name entered
-            ret = ETrue;
-            }
-        // Break, in case user Cancels the data query or 
-        // enters a valid name 
-        break;
-        }    
-    return ret;
-    }
- 
-// ---------------------------------------------------------------------------
-// TPresetName CEqualizerPresetsDialog::GetHighlightedPresetInListBox() const
-// This function returns the highlighted Preset in ListBox
-// ---------------------------------------------------------------------------
-//  
-TPresetName CEqualizerPresetsDialog::GetHighlightedPresetInListBox() const
-    {
-    TInt selectedIndex = iListBox->CurrentItemIndex();
-    CTextListBoxModel* model = iListBox->Model();
-    TPresetName selectedItem(model->ItemText(selectedIndex));
-    TPresetName highlightedPreset = 
-             selectedItem.Right(selectedItem.Length()- iItemArray->GetPrefixLength());
-    return highlightedPreset;  
-    }
-
-// ---------------------------------------------------------------------------
-//void CEqualizerPresetsDialog::ActivateEqrPresetL(const TInt  aIndex, 
-//const TDesC& aPreset)  const
-//
-//This function is used for the activation of a preset
-// ---------------------------------------------------------------------------
-//
-void CEqualizerPresetsDialog::ActivateEqrPresetL(const TInt aIndex, 
-const TDesC& aPreset) 
-    {
-    TInt err;
-    // Store activated preset in central repository    
-    SetCurrentPreset(aPreset);
-    
-    // Set the active preset in the equalizer item array
-    iItemArray->SetCurrentActivePreset(aPreset);
-    
-    // Display Confirmation note                   
-    HBufC* activateNoteText = StringLoader::LoadLC(
-    R_QTN_EQ_NOTE_INFO_PRESET_ACTIVATED, aPreset);
-    CAknConfirmationNote* dialog = new(ELeave)CAknConfirmationNote();
-    dialog->ExecuteLD(*activateNoteText);
-    CleanupStack::PopAndDestroy(activateNoteText); 
-    
-    // Inform the engine
-    if (aPreset.Compare(*iPresetNoneText) == 0)            
-        {
-        TRAP(err, iAudEqUtility->DisableEqualizerL());                
-        }
-    else
-        {
-        TRAP(err, iAudEqUtility->ApplyPresetL(GetEngineIndexL(aPreset)));
-        }  
-   
-   if(!err)
-	   {
-	   iListBox->HandleItemAdditionL();
-	   iListBox->SetCurrentItemIndexAndDraw(aIndex);
-	   // To prevent two tickmarks from appearing sometimes
-	   iListBox->DrawNow(); 
-	   }
-   }
-
-// ---------------------------------------------------------------------------
-//void CEqualizerPresetsDialog::RenameEqrPresetL(const TInt  aIndex, 
-//const TDesC& aPreset)  const
-//
-//This function is used for the renaming of a preset
-// ---------------------------------------------------------------------------
-//
-void CEqualizerPresetsDialog::RenameEqrPresetL(const TInt /*aIndex*/, 
-const TDesC& aPreset) 
-    {
-    //Check if this is an active preset
-    TPresetName activePresetName = CurrentPreset();
-    if (aPreset.Compare(activePresetName) == 0)            
-       {
-        //Display Confirmation note                 
-        HBufC* renameText = StringLoader::LoadLC(
-        R_QTN_EQ_NOTE_ERR_PRESET_IN_USE_NO_RENAME);               
-        CAknErrorNote* dialog = new(ELeave)CAknErrorNote();         
-        dialog->ExecuteLD(*renameText);
-        CleanupStack::PopAndDestroy(renameText);
-        } 
-    else
-        {
-        TPresetName presetName;
-        presetName =  aPreset;
-        TBool nameEnteredIsFine = 
-        GetNewNameL(R_DIALOG_TEXT_RENAME_ITEM_NAME, presetName); 
-          
-        if (nameEnteredIsFine)
-            {
-            TInt engineIndex = GetEngineIndexL(aPreset);
-            //Update Engine
-            iAudEqUtility->GetPresetL(engineIndex);
-            CAudioEqualizer& audioEqualizer = iAudEqUtility->Equalizer();
-                                           
-            iAudEqUtility->ModifyPresetL(engineIndex,presetName,
-             audioEqualizer);
-              
-            //Update listbox
-            // Sort the array of user-defined presets
-            iItemArray->UpdateSortedArrayL(); 
-            iListBox->SetCurrentItemIndex(SearchPresetL(presetName));
-            iListBox->DrawNow();
-            }
-        }
-   }
-
-// ---------------------------------------------------------------------------
-// void CEqualizerPresetsDialog::EditEqrPresetL(const TInt  aIndex, 
-// const TDesC& aPreset)  const
-//
-// This function is used for the editing of a preset
-// ---------------------------------------------------------------------------
-//
-void CEqualizerPresetsDialog::EditEqrPresetL(const TInt  /*aIndex*/, 
-const TDesC& aPreset) 
-    {
-    //Set application name in the title pane to preset name.
-    CEikStatusPane* sp=iEikonEnv->AppUiFactory()->StatusPane();
-    CAknTitlePane* tp=(CAknTitlePane*)sp->ControlL(TUid::Uid(
-    EEikStatusPaneUidTitle));
-    tp->SetTextL(aPreset);
-    TInt engineIndex = GetEngineIndexL(aPreset);
-    //Update Engine
-    TBool isActivePreset = (aPreset==CurrentPreset());
-    
-    DisplaySettingsL(iAudEqUtility, engineIndex, isActivePreset);
-    }
-
-// ---------------------------------------------------------------------------
-// void CEqualizerPresetsDialog::CreateNewEqrPresetL(TInt&  aIndex, 
-// TPresetName& aPreset) const
-//
-// This function is used for the creation of a new preset.
-// @param aIndex The index of the preset in the ListBox. This is set
-// to a the index in the ListBox if preset creation is successful. 
-// If the creation is unscuccessful, then the parameter is not changed.
-// @param aPreset The name of the preset created
-// ---------------------------------------------------------------------------
-//
-void CEqualizerPresetsDialog::CreateNewEqrPresetL(TInt&  aIndex, 
-TPresetName& aPreset) const
-    {
-    RFs fs; 
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL<RFs>( fs );
-       
-    if (SysUtil::FFSSpaceBelowCriticalLevelL(&fs,0))
-        {
-        ShowDiskFullNoteL(); // Phone memory full, show note
-        }
-    else
-        {
-        TPresetName presetName;
-        BuildPresetNameL(presetName);
- 
-        TBool nameEnteredIsFine = GetNewNameL(R_DIALOG_TEXT_NEW_ITEM_NAME,
-         presetName);
-
-        if (nameEnteredIsFine)
-            {
-            //Update Engine
-            CAudioEqualizer& audioEqualizer = iAudEqUtility->Equalizer();
-            iAudEqUtility->CreatePresetL(presetName, audioEqualizer);
-        
-            //Set the level of all bands to 0.
-            TInt numFreqBand = audioEqualizer.NumberOfBands();
-            for (TInt i = 0; i < numFreqBand; i++)
-                {
-                audioEqualizer.SetBandLevelL(i+1, 0);
-                }
-
-            iItemArray->UpdateSortedArrayL();            
-            //Update AudioEqualizerUtility object, setting the level of all
-            // bands to 0 
-            iAudEqUtility->ModifyPresetL(GetEngineIndexL(presetName),
-                                 presetName, audioEqualizer);
-        
-            //Set the focus to the new preset 
-            iListBox->HandleItemAdditionL();
-            iListBox->SetCurrentItemIndex(SearchPresetL(presetName));                 
-            iListBox->DrawNow();
-    
-            aPreset = presetName;
-            aIndex = iItemArray->MdcaCount()-1;  
-	          }
-        }
-        CleanupStack::PopAndDestroy();
-    }
-    
-// ---------------------------------------------------------------------------
-//void CEqualizerPresetsDialog::DeleteEqrPresetL(const TInt  aIndex, 
-//const TDesC& aPreset)  const
-//
-//This function is used for the deletion of a preset
-// ---------------------------------------------------------------------------
-//
-void CEqualizerPresetsDialog::DeleteEqrPresetL(const TInt aIndex,
-const TDesC& aPreset)
-    {
-    //Check if this is an active preset
-    TPresetName activePresetName = CurrentPreset();
-    if (aPreset.Compare(activePresetName) == 0)     
-        {
-        //Display error note                   
-        HBufC* renameText =
-         StringLoader::LoadLC(R_QTN_EQ_NOTE_ERR_PRESET_IN_USE);
-        CAknErrorNote* dialog = new(ELeave)CAknErrorNote();
-        dialog->ExecuteLD(*renameText);
-        CleanupStack::PopAndDestroy(renameText);
-        } 
-    else
-        {
-        //Delete?\n%U" §qtn.query.common.conf.delete?
-        HBufC* text = 
-        StringLoader::LoadLC( R_QTN_QUERY_COMMON_CONF_DELETE, 
-        aPreset);
-
-        // Show confirmation note
-        CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-        TInt result( 
-        dlg->ExecuteLD( R_EQUALIZER_CONFIRMATION_QUERY, *text ) );
-        CleanupStack::PopAndDestroy(text); // text
-
-        if ( result )
-            {
-            //Update Engine
-            iAudEqUtility->DeletePresetL(GetEngineIndexL(aPreset));
-            //Remove from listbox
-            iItemArray->UpdateSortedArrayL();
-            iListBox->HandleItemRemovalL();
-            // This is to avoid the gap observed when the last entry present
-            // in the Preset List is deleted
-            iListBox->SetCurrentItemIndexAndDraw(0);
-            //If we are at the last preset set focus to the next preset
-            // else the previous preset
-            if (aIndex == iItemArray->MdcaCount())
-                {
-                iListBox->SetCurrentItemIndexAndDraw(aIndex - 1);
-                }
-            else
-                {
-                iListBox->SetCurrentItemIndexAndDraw(aIndex);
-                }
-            iListBox->DrawNow();
-            }
-        }
-    }
-
-// -------------------------------------------------------------------
-// TInt CEqualizerPresetsDialog::GetEngineIndexL
-// (const TPresetName& aPresetName)
-//
-// This function is called to find the index of a preset in the list of
-// presets returned by CAudioEqualizerUtility::Presets()
-// --------------------------------------------------------------------
-// 
-TInt CEqualizerPresetsDialog::GetEngineIndexL(const TPresetName& aPresetName) const  
-    {
-    TInt engineIndex = KErrNotFound;
-    TInt count;
-        
-    TArray<TEfAudioEqualizerUtilityPreset> presets = iAudEqUtility->Presets();
-    TInt numPredefinedPresets = iAudEqUtility->NumberOfPreDefinedPresets();
-    TInt numPresets = presets.Count();
-    for (count = 0; count < numPresets; count++)
-        {
-        TPresetName selectedItem = iItemArray->MdcaPoint(count+1);
-        TPresetName presetName = selectedItem.Right(
-                            selectedItem.Length() - iItemArray->GetPrefixLength());
-
-        
-        if (((count < numPredefinedPresets) && (presetName == aPresetName))
-            || (presets[count].iPresetName == aPresetName))
-            {
-            engineIndex = count;
-            }
-        }
-   if (engineIndex == KErrNotFound)
-        {
-        // Leave if this function is called for preset "None" or a preset
-        // which is there in the ListBox but not in the Engine.
-        User::Leave(KErrArgument);
-        }
-        
-    return engineIndex;
-    }
-    
-// -----------------------------------------------------------------------
-// CEqualizerPresetsDialog::DisplaySettingsL
-// (CAudioEqualizerUtility *aAudEqUtility, TInt aIndex,
-// const TBool aIsActivePreset)) const
-//
-// This function is used to display the current equalizer settings
-// by creating a new dialog. The dialog can also be used for editing, etc.
-// of the settings.
-// ------------------------------------------------------------------------
-//  
-void CEqualizerPresetsDialog::DisplaySettingsL(CAudioEqualizerUtility*
- aAudEqUtility, const TInt aIndex, const TBool aIsActivePreset)
-    {
-    TRect rect = Rect();
-    
-    TInt item;
-    TPresetName preset = GetHighlightedPresetInListBox(); 
-    iItemArray->GetPresetKeyFromLocalisedName(item, preset);
-    iEditingDialog = CEqualizerEditingDialog::NewL(aAudEqUtility, 
-      aIndex, rect, aIsActivePreset,iEqrPresetActObserver, item);
-    iEditingDialog->ExecuteLD(); 
-    iEditingDialog = NULL;    
-    }  
-
-// --------------------------------------------------------------
-// CEqualizerPresetsDialog::CurrentPreset()
-// This function is used to read the currently active preset from
-// the central repository
-// --------------------------------------------------------------
-//    
-TPresetName CEqualizerPresetsDialog::CurrentPreset() const
-    {
-    TInt res = 0;
-    TPresetName preset;
-    User::LeaveIfError(iRepository->Get(KMPlayerEqPresetId, res));
-    iItemArray->GetLocalisedPresetNameFromKey(res,preset );
-    return preset;   
-    }
-
-// ----------------------------------------------------------------
-// CEqualizerPresetsDialog::SetCurrentPreset(const TPtrC& aPreset)
-// This function is used to store the currently active preset into
-// the central repository
-// ----------------------------------------------------------------
-//     
-void CEqualizerPresetsDialog::SetCurrentPreset(const TPresetName& aPreset)
-    {
-    TInt activePresetKey;
-    iActivePreset = aPreset;
-    iItemArray->GetPresetKeyFromLocalisedName(activePresetKey, aPreset);
-    iEqrPresetActObserver.HandlePresetActivation(activePresetKey);
-    }
-
-// ----------------------------------------------------------------------------
-// CEqualizerPresetsDialog::SearchPresetL(const TPresetName& aPreset) const
-// This function is used to search for a preset name in the ListBox.
-// It return the index of the preset, if found and KErrNotFound if not found.
-// ----------------------------------------------------------------------------
-//       
-TInt CEqualizerPresetsDialog::SearchPresetL(const TPresetName& aPreset) const
-    {
-    TInt ret = KErrNotFound;
-    iItemArray->UpdateSortedArrayL();
-
-    for (TInt i=0; i<iItemArray->MdcaCount(); i++)
-        {
-        TPresetName selectedItem = iItemArray->MdcaPoint(i);
-        TPresetName presetName = selectedItem.Right(selectedItem.Length() - iItemArray->GetPrefixLength());
-
-        if (aPreset == presetName)      
-            {
-            ret = i;
-            break;
-            }
-        }
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// CEqualizerPresetsDialog::SetAudioEqualizerL(CAudioEqualizerUtility* 
-// aAudEqUtility)
-// This function is used to set a new CAudioEqualizerUtility* 
-// ----------------------------------------------------------------------------
-//    
-EXPORT_C void CEqualizerPresetsDialog::SetAudioEqualizerL(
-CAudioEqualizerUtility* aAudEqUtility)
-    {
-    iAudEqUtility=aAudEqUtility;
-    if (iItemArray)
-        {
-        iItemArray->SetAudioEqualizer(iAudEqUtility);
-        }	
-
-    if (iEditingDialog)
-        {
-        iEditingDialog->SetAudioEqualizerL(iAudEqUtility);
-        }
-
-        
-    if (iAudEqUtility)
-        {
-        iIgnoreKeyEvents = EFalse;
-        }
-    else
-        {
-        iIgnoreKeyEvents = ETrue; 
-        }
-    }
-    
-// ----------------------------------------------------------------------
-// CEqualizerPresets::GetListBoxIconsL()
-// This function is used to load the lisitbox icons into an array
-// ----------------------------------------------------------------------
-//
-CArrayPtr<CGulIcon>* CEqualizerPresetsDialog::GetListBoxIconsL() const
-    {
-    // Get the icon array and deleted if already exists. Memory leak error.
-    CArrayPtr<CGulIcon>* previcons = iListBox->ItemDrawer()->ColumnData()->IconArray();
-    if( previcons )
-    	{
-    	previcons->ResetAndDestroy();
-    	delete previcons;
-    	previcons = NULL;
-    	}
-    
-    // CGulIcon class packages two bitmaps: icon image and its mask
-    // CAknIconArray inherits from CArrayPtrFlat
-    CArrayPtr<CGulIcon>* iconList = new (ELeave) 
-                                 CAknIconArray(KEqualizerArrayGranularity);
-    CleanupStack::PushL(iconList);
-    
-    // Find which drive this DLL is installed.
-    TFileName fileName;
-    // Get the full resource file
-    TParse fp;
-    // Add the resource dir
-    fp.Set( KIconsFilename, &KDC_APP_BITMAP_DIR, NULL);
-
-    // Get the filename with full path
-    fileName = fp.FullName(); 
-     
-    MAknsSkinInstance* skinInstance;
-    CFbsBitmap* newIconBmp = NULL;
-    CFbsBitmap* newIconBmpMask = NULL;
-    CGulIcon* newIcon = NULL;
-    
-    skinInstance = AknsUtils::SkinInstance();
-    
-    //creating blank icon
-    AknsUtils::CreateIconLC(skinInstance,KAknsIIDQgnPropEmpty,
-                           newIconBmp,newIconBmpMask,fileName,
-                           EMbmEqualizerEmpty13x13,
-                           EMbmEqualizerEmpty13x13_mask);
-    
-    newIcon = CGulIcon::NewL(newIconBmp,newIconBmpMask);
-    
-    CleanupStack::Pop(2);
-    CleanupStack::PushL(newIcon);
-    iconList->AppendL(newIcon);
-    
-    CleanupStack::Pop();
-    
-    //creating TICK mark icon
-    AknsUtils::CreateIconLC(skinInstance,KAknsIIDQgnPropPslnActive,
-                           newIconBmp,newIconBmpMask,fileName,
-                           EMbmEqualizerQgn_prop_psln_active,
-                           EMbmEqualizerQgn_prop_psln_active_mask);
-
-
-    newIcon = CGulIcon::NewL(newIconBmp,newIconBmpMask);
-    
-    CleanupStack::Pop(2);
-    CleanupStack::PushL(newIcon);
-    iconList->AppendL(newIcon);
-
-    CleanupStack::Pop();
-    
-    CleanupStack::Pop(iconList);
-
-    newIconBmp = NULL;
-    newIconBmpMask = NULL;
-    newIcon = NULL;
-
-    return iconList;
-    }    
-    
-// -------------------------------------------------------------------
-// CEqualizerPresetsDialog::ExecuteLD() 
-//
-// This function is called to create a dialog
-// to display the preset list view of the equalizer
-// --------------------------------------------------------------------
-//  
-EXPORT_C TInt CEqualizerPresetsDialog::ExecuteLD()
-    {
-    TInt ret = CAknDialog::ExecuteLD(R_EQUALIZER_DIALOG);
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// void CEqualizerPresetsDialog::PreLayoutDynInitL(void)
-// This function is called just before the dialog is displayed
-// ---------------------------------------------------------------------------
-// 
-void CEqualizerPresetsDialog::PreLayoutDynInitL(void)
-    {
-     
-    CEikStatusPane* sp=iEikonEnv->AppUiFactory()->StatusPane();
-    CAknTitlePane* tp=(CAknTitlePane*)sp->ControlL(TUid::Uid(
-    EEikStatusPaneUidTitle));
-    // Store the Application's title text
-    iAppTitleText =  tp->Text()->AllocL(); 
-       
-    // Set preset name in the title pane
-    tp->SetTextL(*iTitleText);
-
-    iPreviousStatusPaneLayout = sp->CurrentLayoutResId();
-    
-    if ( sp )
-        {
-        if ( R_AVKON_STATUS_PANE_LAYOUT_USUAL != iPreviousStatusPaneLayout )
-            {
-            sp->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL );
-            }
-        }
-    iListBox= (CAknSingleGraphicStyleListBox*)Control(ESelectionListControl);
-    iListBox->ItemDrawer()->ColumnData()->SetIconArray(GetListBoxIconsL());
-    
-    // Set item array to listbox model
-    iListBox->Model()->SetItemTextArray(iItemArray);
-    // Item array is not owned by ListBox so it has to be freed. 
-    iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray);        
-    
-    //
-    // Create a scrollbar that will be displayed automatically
-    // if all the items cannot be displayed on screen
-    //
-    iListBox->CreateScrollBarFrameL(ETrue);
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
-    CEikScrollBarFrame::EOff,CEikScrollBarFrame::EAuto);
-    // Set focus to the currently active preset
-    
-#ifdef RD_SCALABLE_UI_V2
-    iListBox->SetListBoxObserver(this);
-#endif //RD_SCALABLE_UI_V2
-    TPresetName currentPreset = CurrentPreset();
-    
-    TInt cur = SearchPresetL(currentPreset);
-    if (cur == KErrNotFound) //Some preset should always be active
-        {
-        User::Leave(KErrNotSupported);
-        }  
-    iListBox->SetCurrentItemIndexAndDraw(cur);     
-    
-    }
-
-// -------------------------------------------------------------------
-// CEqualizerPresetsDialog::OkToExitL(TInt aButtonId)
-//
-// This function is called when the user presses the selection key
-// for displaying context sesitive menu
-// --------------------------------------------------------------------
-// 
-TBool CEqualizerPresetsDialog::OkToExitL(TInt aButtonId)
-    {
-    TBool ret = EFalse;
-    if (aButtonId == EEikBidOk)
-        {
-        iContextSensitiveMenu = ETrue;
-        DisplayMenuL();
-        }
-    else if (aButtonId == EAknSoftkeyBack) 
-        {
-        CEikStatusPane* sp=iEikonEnv->AppUiFactory()->StatusPane();
-        CAknTitlePane* tp=(CAknTitlePane*)sp->ControlL(TUid::Uid(
-          EEikStatusPaneUidTitle));
-    
-        if (iAppTitleText)
-            {
-             //set application name in the title pane
-            tp->SetTextL(*iAppTitleText);        
-            }
-        ret = CAknDialog::OkToExitL( aButtonId ); 
-        }
-     else if (aButtonId == EAknSoftkeySelect) 
-        {
-        const TInt index = iListBox->CurrentItemIndex();
-        TPresetName preset = GetHighlightedPresetInListBox();
-        ActivateEqrPresetL(index, preset);
-        }
-    else  
-        {
-        ret = CAknDialog::OkToExitL( aButtonId );        
-        } 
-
-    if ( ret )
-        {
-        // Restore landscape layout
-        CEikStatusPane* sp=iEikonEnv->AppUiFactory()->StatusPane();
-        if( Layout_Meta_Data::IsLandscapeOrientation() )
-            {
-            if ( sp && KErrNone != iPreviousStatusPaneLayout )
-                {
-                if ( sp->CurrentLayoutResId() != R_AVKON_STATUS_PANE_LAYOUT_USUAL )
-                    {
-                    sp->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL );
-                    }
-                }
-            }
-        else
-            {
-            CAknLocalScreenClearer* clearer = CAknLocalScreenClearer::NewLC( ETrue );
-            sp->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
-            CleanupStack::PopAndDestroy( clearer );
-            }
-        }
-    return ret;
-    } 
-
-// -------------------------------------------------------------------
-// void CEqualizerPresetsDialog::SizeChanged()
-//
-// This function is called by the framework whenever there is a change
-// in the size of the control
-// -------------------------------------------------------------------
-//
-void CEqualizerPresetsDialog::SizeChanged()
-    {
-    TRect rect = Rect();
-    //Getting the layout for the list box
-    AknLayoutUtils::LayoutControl(iListBox, rect, AknLayout::list_gen_pane(1));
-    CAknDialog::SizeChanged();
-    }
-
-// -------------------------------------------------------------------
-// void CEqualizerPresetsDialog::HandleForegroundEventL( TBool aForeground)
-//
-// Handles changes to the application 
-// when it switches to or from the foreground.
-// -------------------------------------------------------------------
-//     
-void CEqualizerPresetsDialog::HandleForegroundEventL( TBool aForeground)
-    {
-    if (aForeground)
-        {
-        CEikStatusPane* sp=iEikonEnv->AppUiFactory()->StatusPane();
-        CAknTitlePane* tp=(CAknTitlePane*)sp->ControlL(TUid::Uid(
-        EEikStatusPaneUidTitle));
-        tp->SetTextL(*iTitleText);
-        } 
-    }
-    
-// -------------------------------------------------------------------
-// void CEqualizerPresetsDialog::FocusChanged(TDrawNow aDrawNow)
-//
-// Responds to a change in focus.
-// This is called whenever the control gains or loses focus
-// -------------------------------------------------------------------
-//   
-void CEqualizerPresetsDialog::FocusChanged(TDrawNow /*aDrawNow*/)
-	{
-	iItemArray->UpdateSortedArrayL(); 
-	TPresetName currentPreset = CurrentPreset();
-    iItemArray->SetCurrentActivePreset(currentPreset);
-
-    if(iListBox)
-    {
-        iListBox->HandleItemAdditionL();
-	}
-	}
-	
-// -------------------------------------------------------------------
-// void CEqualizerFreqBand::HandleResourceChangeL(TInt aType)
-//
-// This function is called by the framework whenever there is a 
-// change in skin or layout
-// -------------------------------------------------------------------
-//
-void CEqualizerPresetsDialog::HandleResourceChangeL(TInt aType)
-    {
-    if (aType == KAknsMessageSkinChange)
-        {
-        //Creating the icons for the new Skin
-        iListBox->ItemDrawer()->ColumnData()->SetIconArray(GetListBoxIconsL());
-        iListBox->HandleResourceChange(aType);    
-        }
-
-     else if (aType == KEikDynamicLayoutVariantSwitch)
-        {                
-	    TRect rect;
-	    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect);  	    
-	    SetRect(rect);
-        }            
-       
-    }
-
-void CEqualizerPresetsDialog::HandleResourceChange(TInt aType)
-	{
-	CAknDialog::HandleResourceChange( aType );
-	HandleResourceChangeL(aType);
-	}
-
-// ---------------------------------------------------------
-// CEqualizerPresetsDialog::OfferKeyEventL(
-//     const TKeyEvent& aKeyEvent,TEventCode aType)
-// This function is used to handle key events
-// ---------------------------------------------------------
-//
-TKeyResponse CEqualizerPresetsDialog::OfferKeyEventL(
-    const TKeyEvent& aKeyEvent,
-    TEventCode aType )
-    { 
-    if (iIgnoreKeyEvents)
-        {
-        return EKeyWasNotConsumed;
-        }
-    if (aType == EEventKey)
-        {
-        if (aKeyEvent.iCode == EKeyBackspace)
-            {
-            // Find the preset highlighted
-            const TInt listBoxIndex = iListBox->CurrentItemIndex();
-              
-            // pre-defined presets cannot be deleted.
-            // preset "None" is not stored in engine.
-            if (listBoxIndex > (TInt) 
-               (iAudEqUtility->NumberOfPreDefinedPresets()))
-                {
-                TPresetName preset = GetHighlightedPresetInListBox(); 
-                DeleteEqrPresetL(listBoxIndex, preset);
-                }
-            return EKeyWasConsumed;
-            }
-        }
-    return CAknDialog::OfferKeyEventL( aKeyEvent, aType ); 
-    }
-    
-// ---------------------------------------------------------------------------
-// CEqualizerPresetsDialog::DynInitMenuPaneL(
-//                              TInt aResourceId,CEikMenuPane* aMenuPane)
-//  This function is called by the EIKON framework just before it displays
-//  a menu pane. Its default implementation is empty, and by overriding it,
-//  the application can set the state of menu items dynamically according
-//  to the state of application data.
-// ---------------------------------------------------------------------------
-//
-void CEqualizerPresetsDialog::DynInitMenuPaneL(
-                        TInt aResourceId, CEikMenuPane* aMenuPane)
-    {
-    TPresetName selectedItem = GetHighlightedPresetInListBox(); 
-     
-    TInt selectedIndex = iListBox->CurrentItemIndex();     
-    TInt numberOfPreDefinedPresets = 
-    iAudEqUtility->NumberOfPreDefinedPresets();      
-    
-    if ( aResourceId == R_EQUALIZER_CONTAINER_MENU)
-        {
-        //Is the menubar invoked from Options menu or selection key?
-        if (iContextSensitiveMenu == EFalse)
-            {
-            // The menubar is invoked from Options menu
-	        iMenuBar->SetMenuType(CEikMenuBar::EMenuOptions);
-            // The selected preset is "None"
-            if (selectedItem.Compare(*iPresetNoneText) == 0)
-                {
-                aMenuPane->SetItemDimmed(EEqualizerCmdRename, ETrue);
-                aMenuPane->SetItemDimmed(EEqualizerCmdDelete, ETrue);
-                aMenuPane->SetItemDimmed(EEqualizerCmdEdit, ETrue);
-                }
-            // The selected preset is a pre defined preset other than "None"
-            if (selectedIndex <= numberOfPreDefinedPresets)
-                {
-                aMenuPane->SetItemDimmed(EEqualizerCmdRename, ETrue);
-                aMenuPane->SetItemDimmed(EEqualizerCmdDelete, ETrue);
-                }
-            // Help should be displayed only if the feature is supported
-            // according to Feature Manager
-            if (!FeatureManager::FeatureSupported(KFeatureIdHelp))
-                {
-                aMenuPane->SetItemDimmed(EEqualizerCmdHelp, ETrue);
-                }
-            }
-        else
-            {
-            // The menubar is invoked from selection key
-	        iMenuBar->SetMenuType(CEikMenuBar::EMenuContext);
-            // These Options are always hidden
-            aMenuPane->SetItemDimmed(EEqualizerCmdDelete, ETrue);
-            aMenuPane->SetItemDimmed(EEqualizerCmdRename, ETrue);
-            aMenuPane->SetItemDimmed(EEqualizerCmdCreateNew, ETrue);
-            aMenuPane->SetItemDimmed(EEqualizerCmdHelp, ETrue);
-            aMenuPane->SetItemDimmed(EAknCmdExit, ETrue);
-            
-            // The selected preset is "None"
-            if (selectedItem.Compare(*iPresetNoneText) == 0)            
-                {
-                aMenuPane->SetItemDimmed(EEqualizerCmdEdit, ETrue);
-                }
-            iContextSensitiveMenu = EFalse; 
-            }
-        }
-   }
-
-// -------------------------------------------------------------------
-// CEqualizerPresetsDialog::ProcessCommandL(TInt  aCommandId ) 
-//
-// This function is called to process the menubar command in a dialog
-// --------------------------------------------------------------------
-// 
-void CEqualizerPresetsDialog::ProcessCommandL(TInt  aCommandId )
-    {
-    // Need to do this in all cases or menu does not disappear after
-    // a selection is made
-    CAknDialog::ProcessCommandL(aCommandId);
-    
-    // Find the preset highlighted
-    const TInt index = iListBox->CurrentItemIndex();
-    TPresetName preset = GetHighlightedPresetInListBox(); 
-       
-    switch(aCommandId)
-        {
-        case EAknCmdExit :
-        case EEikCmdExit :
-            {
-            iAvkonAppUi->HandleCommandL( aCommandId );
-            break;
-            }    
-        case EEqualizerCmdEdit:
-            {
-            EditEqrPresetL(index, preset);
-            break;
-            }
-        case EEqualizerCmdActivate:
-            {
-            ActivateEqrPresetL(index, preset);
-            break;
-            }
-        case EEqualizerCmdCreateNew:
-            {
-            TInt presetIndex = -1;
-            TPresetName presetName; 
-
-            CreateNewEqrPresetL(presetIndex, presetName);
-         
-            if (presetIndex != -1)
-                {
-                // A valid preset name has been entered
-                EditEqrPresetL(presetIndex, presetName);
-                }   
-            break;   
-            }
- 
-        case EEqualizerCmdDelete:
-            { 
-            DeleteEqrPresetL(index, preset); 
-            break;
-            }
-
-        case EEqualizerCmdRename:
-            { 
-            RenameEqrPresetL(index, preset);
-            break;
-            }
-
-        case EEqualizerCmdHelp:
-            {
-            HlpLauncher::LaunchHelpApplicationL
-                ( iEikonEnv->WsSession(),
-                 CEikonEnv::Static()->AppUi()->AppHelpContextL() );
-            break;
-            }
-
-        default:
-            {
-            break;
-            }
-        }
-    }
-     
-// -------------------------------------------------------------------
-// void CEqualizerPresetsDialog::GetHelpContext( 
-//            TCoeHelpContext& aContext ) const
-// Get help context for the control
-// --------------------------------------------------------------------
-//         
-void CEqualizerPresetsDialog::GetHelpContext( 
-            TCoeHelpContext& aContext ) const
-    {
-    aContext.iMajor = KUidEqualizer;
-    aContext.iContext = KEQ_HLP_LIST_VIEW;
-    }
-
-// -------------------------------------------------------------------
-// void CEqualizerPresetsDialog::ShowDiskFullNoteL() 
-// This function is used to display a note to the user if           
-// memory is below critical level when creating a new preset.
-// --------------------------------------------------------------------
-//  
-void CEqualizerPresetsDialog::ShowDiskFullNoteL() const
-    {
-    HBufC* message = NULL;
-    message = StringLoader::LoadLC(R_QTN_MEMLO_NOT_ENOUGH_MEMORY);
-       
-    CAknGlobalNote* note = CAknGlobalNote::NewLC();
-    note->SetSoftkeys(R_AVKON_SOFTKEYS_OK_EMPTY);
-    note->ShowNoteL(/*status,*/ EAknGlobalErrorNote, *message);
-    
-    CleanupStack::PopAndDestroy(note); // note, message
-    CleanupStack::PopAndDestroy(message); // note, message
-    }
-
-#ifdef RD_SCALABLE_UI_V2
-// -------------------------------------------------------------------
-// void CEqualizerPresetsDialog::HandleListBoxEventL 
-// This function callback from MEikListBoxObserver when a listbox item           
-// is double clicked using a pen input .
-// --------------------------------------------------------------------
-//  
-void CEqualizerPresetsDialog::HandleListBoxEventL(
-    CEikListBox* /*aListBox*/,
-    TListBoxEvent aEventType )
-    {
-    switch ( aEventType )
-        {
-#ifdef SINGLE_CLICK_INCLUDED
-        case EEventItemSingleClicked:
-#endif
-        case EEventItemDoubleClicked:
-            {
-            const TInt index = iListBox->CurrentItemIndex();
-            TPresetName preset = GetHighlightedPresetInListBox();
-            ActivateEqrPresetL(index, preset);
-            break;
-            }
-        default:
-            break;
-        }
-    }
-#endif //RD_SCALABLE_UI_V2
-// End of File 
-