diff -r 80975da52420 -r 43d09473c595 mmserv/audioeffectsui/equalizer/src/EqualizerPresetsDialog.cpp --- 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//LAF and Skin changes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include // Contains the resource definition -#include -#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 number; - - // The loop is iterated until a free folder name is found. - FOREVER - { - found = EFalse; - // Constructs a candidate for the name - TBuf 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( 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 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; iMdcaCount(); 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* CEqualizerPresetsDialog::GetListBoxIconsL() const - { - // Get the icon array and deleted if already exists. Memory leak error. - CArrayPtr* 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* 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 -