--- 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 <mediaservant.rsg>
-#include <akncheckboxsettingpage.h>
-#include <StringLoader.h>
-#include <utf.h>
-
-#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<TInt>* 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<TInt>* 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<TInt>* 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
-