diff -r 6369bfd1b60d -r 08b5eae9f9ff homesync/contentmanager/mediaservant/src/msrulemultiselectionsetting.cpp --- a/homesync/contentmanager/mediaservant/src/msrulemultiselectionsetting.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,349 +0,0 @@ -/* -* Copyright (c) 2008 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: CMSRuleMultiselectionSetting class implementation -* -*/ - - -#include -#include -#include -#include - -#include "cmsqlpropertycontainer.h" -#include "cmsqlpropertyitem.h" -#include "msrulemultiselectionsetting.h" -#include "msconstants.h" -#include "msmultiselectiondialog.h" -#include "msdebug.h" - -// CONSTANTS -const TInt KItemArrayGranularity = 3; - -// -------------------------------------------------------------------------- -// CMSRuleMultiselectionSetting::NewL -// -------------------------------------------------------------------------- -// -CMSRuleMultiselectionSetting* CMSRuleMultiselectionSetting::NewL( - TInt aIdentifier, - TInt aTitleResource, - TInt aFirstPopupItemResource, - TInt aAnyItemTextResource, - CCmSqlPropertyContainer* aMetadataArray, - RArray* aArray, - TInt aItemTextResource, - TDes& aText) - { - LOG(_L("[MediaServant]\t CMSRuleMultiselectionSetting::NewL")); - - CMSRuleMultiselectionSetting* self = - CMSRuleMultiselectionSetting::NewLC( - aIdentifier, - aTitleResource, - aFirstPopupItemResource, - aAnyItemTextResource, - aMetadataArray, - aArray, - aItemTextResource, - aText ); - - CleanupStack::Pop(self); - - return self; - } - -// -------------------------------------------------------------------------- -// CMSRuleMultiselectionSetting::NewLC -// -------------------------------------------------------------------------- -// -CMSRuleMultiselectionSetting* CMSRuleMultiselectionSetting::NewLC( - TInt aIdentifier, - TInt aTitleResource, - TInt aFirstPopupItemResource, - TInt aAnyItemTextResource, - CCmSqlPropertyContainer* aMetadataArray, - RArray* aArray, - TInt aItemTextResource, - TDes& aText) - { - LOG(_L("[MediaServant]\t CMSRuleMultiselectionSetting::NewLC")); - - CMSRuleMultiselectionSetting* self = - new (ELeave) CMSRuleMultiselectionSetting( - aIdentifier, - aTitleResource, - aFirstPopupItemResource, - aAnyItemTextResource, - aMetadataArray, - aArray, - aItemTextResource, - aText ); - - CleanupStack::PushL(self); - self->ConstructL(); - - return self; - } - -// -------------------------------------------------------------------------- -// CMSRuleMultiselectionSetting::ConstructL -// -------------------------------------------------------------------------- -// -void CMSRuleMultiselectionSetting::ConstructL() - { - LOG(_L("[MediaServant]\t CMSRuleMultiselectionSetting::ConstructL")); - - iItemArray = - new ( ELeave ) CSelectionItemList( KItemArrayGranularity ); - - } - -// -------------------------------------------------------------------------- -// CMSRuleMultiselectionSetting::SetSettingItemTextL -// -------------------------------------------------------------------------- -// -void CMSRuleMultiselectionSetting::SetSettingItemTextL() - { - LOG(_L("[MediaServant]\t CMSRuleMultiselectionSetting::\ - SetSettingItemTextL")); - - HBufC* itemText = NULL; - - if ( iSelectedItemCount == 1 ) - { - // only one item selected so we can use item index to find text - CSelectableItem* apu = (*iItemArray)[ iSelectedItemIndex ]; - itemText = apu->ItemText().AllocLC(); - } - else if ( iSelectedItemCount > 1 ) - { - itemText = StringLoader::LoadLC( iItemTextResource, - iSelectedItemCount ); - // do number conversion - TPtr ptr = itemText->Des(); - AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr ); - - } - else - { - itemText = StringLoader::LoadLC( iAnyItemTextResource ); - } - - // Set new text - SetExternalText( *itemText ); - // Load text - LoadL(); - - CleanupStack::PopAndDestroy( itemText ); - } - -// -------------------------------------------------------------------------- -// CMSRuleMultiselectionSetting::CMSRuleMultiselectionSetting -// -------------------------------------------------------------------------- -// -CMSRuleMultiselectionSetting::CMSRuleMultiselectionSetting( - TInt aIdentifier, - TInt aTitleResource, - TInt aFirstPopupItemResource, - TInt aAnyItemTextResource, - CCmSqlPropertyContainer* aMetadataArray, - RArray* aArray, - TInt aItemTextResource, - TDes& aText - ) : - CMSTextSettingItem( aIdentifier, aText ), - iItemTextResource ( aItemTextResource ), - iText( aText ), - iList (aArray), - iMetadataArray( aMetadataArray ), - iTitleResource( aTitleResource ), - iFirstPopupItemResource( aFirstPopupItemResource ), - iAnyItemTextResource( aAnyItemTextResource ) - { - } - -// -------------------------------------------------------------------------- -// CMSRuleMultiselectionSetting::~CMSRuleMultiselectionSetting() -// -------------------------------------------------------------------------- -// -CMSRuleMultiselectionSetting::~CMSRuleMultiselectionSetting() - { - LOG(_L("[MediaServant]\t CMSRuleMultiselectionSetting::\ - ~CMSRuleMultiselectionSetting")); - - if ( iItemArray ) - { - iItemArray->ResetAndDestroy(); - delete iItemArray; - } - } - -// -------------------------------------------------------------------------- -// CMSRuleMultiselectionSetting::EditItemL( TBool aCalledFromMenu ) -// -------------------------------------------------------------------------- -// -void CMSRuleMultiselectionSetting::EditItemL( TBool /*aCalledFromMenu*/ ) - { - LOG(_L("[MediaServant]\t CMSRuleMultiselectionSetting::EditItemL")); - - HBufC* title = StringLoader::LoadLC( iTitleResource ); - CMSMultiselectionDialog* dlg = - CMSMultiselectionDialog::NewL(iItemArray, *title); - - // reset dialog acceptance indicator - SetAcceptState( EFalse ); - - // launch dialog - if ( dlg->ExecuteLD( R_MS_MULTISELECTION_DIALOG ) ) - { - // dialog accepted - SetAcceptState( ETrue ); - - // reset selected item count - iSelectedItemCount = 0; - - // remove previous items - iList->Reset(); - - // Check if first item ("Any") is selected - if ( (*iItemArray)[ 0 ]->SelectionStatus() == EFalse ) - { - AppendSelectedItemsToListL(); - } - - // set item text - SetSettingItemTextL(); - // load and update text - LoadL(); - UpdateListBoxTextL(); - } - CleanupStack::PopAndDestroy( title ); - } - -// -------------------------------------------------------------------------- -// CMSRuleMultiselectionSetting::CreateSelectionItemListL -// Creates selection item list -// -------------------------------------------------------------------------- -// -void CMSRuleMultiselectionSetting::CreateSelectionItemListL() - { - LOG(_L("[MediaServant]\t CMSRuleMultiselectionSetting::\ - CreateSelectionItemListL")); - - // delete old items - iItemArray->ResetAndDestroy(); - iSelectedItemCount = 0; - - // Cycle trough all metadata items - iMetadataArray->SortPropertyItem(); - for ( TInt idx = 0; idx < iMetadataArray->PropertyItemCount(); idx++ ) - { - CCmSqlPropertyItem* propertyItem = - iMetadataArray->PropertyItem( idx ); - - HBufC* itemStr = CnvUtfConverter::ConvertToUnicodeFromUtf8L( - propertyItem->Name() ); - CleanupStack::PushL( itemStr ); - - // Check if item was selected last time - TInt found = iList->Find( propertyItem->Id() ); - - CSelectableItem* item; - - if ( found != KErrNotFound ) - { - // create item - selected - item = new ( ELeave ) CSelectableItem( *itemStr, ETrue ); - iSelectedItemCount++; - iSelectedItemIndex = idx + 1; //first item is "any" - } - else - { - // create item - not selected - item = new ( ELeave ) CSelectableItem( *itemStr, EFalse ); - } - - CleanupStack::PushL( item ); - - // item must be constructed - item->ConstructL(); - - // append item to list - iItemArray->AppendL(item); - - CleanupStack::Pop( item ); - CleanupStack::PopAndDestroy( itemStr ); - } - - // Create and append default item (Any/None) - HBufC* itemName = StringLoader::LoadLC( iFirstPopupItemResource ); - CSelectableItem* item = NULL; - if ( iSelectedItemCount ) - { - item = new ( ELeave ) CSelectableItem( *itemName, EFalse ); - } - else - { - item = new ( ELeave ) CSelectableItem( *itemName, ETrue ); - } - - CleanupStack::PushL( item ); - item->ConstructL(); - iItemArray->InsertL(0, item); - CleanupStack::Pop( item ); - CleanupStack::PopAndDestroy( itemName ); - - } - -// -------------------------------------------------------------------------- -// CMSRuleMultiselectionSetting::AppendSelectedItemsToListL -// Appends selected items to the list -// -------------------------------------------------------------------------- -// -void CMSRuleMultiselectionSetting::AppendSelectedItemsToListL() - { - LOG(_L("[MediaServant]\t CMSRuleMultiselectionSetting::\ - AppendSelectedItemsToListL")); - - // first index '0' is "Any" - for ( TInt index = 1; index < iItemArray->Count(); index++ ) - { - if ( (*iItemArray)[index]->SelectionStatus() ) - { - CCmSqlPropertyItem* propertyItem = - iMetadataArray->PropertyItem( index - 1 ); - iList->AppendL( propertyItem->Id() ); - iSelectedItemCount++; - iSelectedItemIndex = index; - } - } - } - -// -------------------------------------------------------------------------- -// CMSRuleMultiselectionSetting::CreateItemListL -// Creates item list and updates listbox -// -------------------------------------------------------------------------- -// -void CMSRuleMultiselectionSetting::CreateItemListL() - { - // Create item list - CreateSelectionItemListL(); - // set item text - SetSettingItemTextL(); - // update listbox - UpdateListBoxTextL(); - } - -// End of File -