diff -r 6369bfd1b60d -r 08b5eae9f9ff homesync/contentmanager/mediaservant/src/msstoreserverssetting.cpp --- a/homesync/contentmanager/mediaservant/src/msstoreserverssetting.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,350 +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: CMSStoreServersSetting class implementation -* -*/ - - -#include -#include - -#include "cmmediaserverfull.h" -#include "cmstorerule.h" -#include "cmfillrule.h" -#include "msstoreserverssetting.h" -#include "msmultiselectionsettingpage.h" -#include "msconstants.h" -#include "msappui.h" -#include "msengine.h" -#include "msdebug.h" - -#include "upnpstring.h" - -// CONSTANTS -const TInt KItemArrayGranularity = 3; - -// -------------------------------------------------------------------------- -// CMSStoreServersSetting::NewL -// -------------------------------------------------------------------------- -// -CMSStoreServersSetting* CMSStoreServersSetting::NewL( - TInt aIdentifier, - CCmStoreRule* aRule, - CMSAppUi& aAppUi, - TDes& aText ) - { - LOG(_L("[MediaServant]\t CMSStoreServersSetting::NewL")); - - CMSStoreServersSetting* self = CMSStoreServersSetting::NewLC( - aIdentifier, - aRule, - aAppUi, - aText ); - - CleanupStack::Pop(self); - - return self; - } - -// -------------------------------------------------------------------------- -// CMSStoreServersSetting::NewLC -// -------------------------------------------------------------------------- -// -CMSStoreServersSetting* CMSStoreServersSetting::NewLC( - TInt aIdentifier, - CCmStoreRule* aRule, - CMSAppUi& aAppUi, - TDes& aText ) - { - LOG(_L("[MediaServant]\t CMSStoreServersSetting::NewLC")); - - CMSStoreServersSetting* self = new (ELeave) CMSStoreServersSetting( - aIdentifier, - aRule, - aAppUi, - aText ); - - CleanupStack::PushL(self); - self->ConstructL(); - - return self; - } - -// -------------------------------------------------------------------------- -// CMSStoreServersSetting::ConstructL -// -------------------------------------------------------------------------- -// -void CMSStoreServersSetting::ConstructL() - { - LOG(_L("[MediaServant]\t CMSStoreServersSetting::ConstructL")); - - iSettingText = HBufC::NewL( KMaxFileName ); - - // Get media server list - iServers = iAppUi.MSEngine()->GetMediaServersL(); - - // create item array - CreateSelectionItemListL(); - - SetSettingItemTextL(); - } - -// -------------------------------------------------------------------------- -// CMSStoreServersSetting::CMSRuleServersSetting -// -------------------------------------------------------------------------- -// -CMSStoreServersSetting::CMSStoreServersSetting( - TInt aIdentifier, - CCmStoreRule* aRule, - CMSAppUi& aAppUi, - TDes& aText - ) : - CAknTextSettingItem( aIdentifier, aText ), - iRule( aRule ), - iAppUi( aAppUi ) - { - } -// -------------------------------------------------------------------------- -// CMSStoreServersSetting::~CMSStoreServersSetting() -// -------------------------------------------------------------------------- -// -CMSStoreServersSetting::~CMSStoreServersSetting() - { - delete iSettingText; - - if ( iItemArray ) - { - iItemArray->ResetAndDestroy(); - delete iItemArray; - } - - if ( iServers ) - { - iServers->ResetAndDestroy(); - iServers->Close(); - delete iServers; - } - } - -// -------------------------------------------------------------------------- -// CMSStoreServersSetting::EditItemL( TBool aCalledFromMenu ) -// -------------------------------------------------------------------------- -// -void CMSStoreServersSetting::EditItemL( TBool /*aCalledFromMenu*/ ) - { - LOG(_L("[MediaServant]\t CMSStoreServersSetting::EditItemL")); - - // Create setting page - CAknSettingPage* dlg = CMSMultiselectionSettingPage::NewL( - R_MS_STORE_SETTINGS_LOCATION_SETTING_PAGE, - *iItemArray, EFalse ); - // launch setting page - if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) ) - { - DeleteAllServersFromRuleL(); - - for ( TInt index = 0; index < iItemArray->Count(); index++ ) - { - CSelectableItem* item = iItemArray->At( index ); - TBool selected = item->SelectionStatus(); - - CCmMediaServerFull* server = (*iServers)[index]; - // get server UDN - TPtrC8 serverUDN = server->MediaServer(); - - // add server - if ( item->SelectionStatus() ) - { - // set server for rule - iRule->AddMediaServerL( serverUDN ); - } - } - - SetSettingItemTextL(); - LoadL(); - // show value on screen - UpdateListBoxTextL(); - } - } - -// -------------------------------------------------------------------------- -// CMSStoreServersSetting::CreateSelectionItemListL -// Creates selection item list -// -------------------------------------------------------------------------- -// -void CMSStoreServersSetting::CreateSelectionItemListL() - { - if ( iItemArray ) - { - iItemArray->ResetAndDestroy(); - delete iItemArray; - iItemArray = NULL; - } - - iItemArray = - new ( ELeave ) CSelectionItemList( KItemArrayGranularity ); - - TBuf8 itemText; - - TInt serverCount(0); - if ( iServers ) - { - serverCount = iServers->Count(); - } - - // Cycle trough all servers - for ( TInt idx = 0; idx < serverCount; idx++ ) - { - // get server - CCmMediaServerFull* server = (*iServers)[idx]; - // show only copy capable devices - if ( server->StoreUsage() ) - { - HBufC* devName = - UpnpString::ToUnicodeL( server->MediaServerName() ); - CleanupStack::PushL( devName ); - CSelectableItem* item = new ( ELeave ) CSelectableItem( - *devName, EFalse); - - CleanupStack::PushL( item ); - // item must be constructed - item->ConstructL(); - - // count of servers set to rule - TInt ruleServerCount = iRule->MediaServerCount(); - - // Cycle trough all servers - for (TInt index = 0; index < ruleServerCount; index++ ) - { - const TDesC8& ruleServerUDN = iRule->MediaServerL( index ); - - if (ruleServerUDN == server->MediaServer()) // compare UDNs - { - // found - break this loop - index = ruleServerCount; - // found - mark selected - item->SetSelectionStatus( ETrue ); - iSelectedItemCount++; - } - } - // append item to list - iItemArray->AppendL(item); - CleanupStack::Pop( item ); - CleanupStack::PopAndDestroy( devName ); - } - else // we don't need this kind of servers anymore so remove it - { - delete server; - iServers->Remove( idx ); - idx--; // remove transfers next item to current index - serverCount--; // servers on the list were reduced - } - } - } - -// -------------------------------------------------------------------------- -// CMSStoreServersSetting::DeleteAllServersFromRuleL -// Deletes all servers from rule -// -------------------------------------------------------------------------- -// -void CMSStoreServersSetting::DeleteAllServersFromRuleL() - { - LOG(_L("[MediaServant]\t CMSRuleServersSetting::\ - CMSStoreServersSetting")); - - // count of servers set to rule - TInt ruleServerCount = iRule->MediaServerCount(); - - for ( TInt index = ruleServerCount-1; index >= 0; index-- ) - { - const TDesC8& ruleServerUDN = iRule->MediaServerL( index ); - iRule->DeleteMediaServer( ruleServerUDN ); - } - } - -// -------------------------------------------------------------------------- -// CMSStoreServersSetting::CountSelectedItems -// Counts selected items -// -------------------------------------------------------------------------- -// -TInt CMSStoreServersSetting::CountSelectedItems() - { - LOG(_L("[MediaServant]\t CMSRuleServersSetting::\ - CMSStoreServersSetting")); - - TInt count(0); - - for ( TInt index = 0; index < iItemArray->Count(); index++ ) - { - if ( (*iItemArray)[index]->SelectionStatus() ) - { - count++; - } - } - - return count; - } - -// -------------------------------------------------------------------------- -// CMSStoreServersSetting::SetSettingItemTextL -// Sets setting item secondary text according to selected items -// -------------------------------------------------------------------------- -// -void CMSStoreServersSetting::SetSettingItemTextL() - { - TInt count = CountSelectedItems(); - - HBufC* itemText = NULL; - // no items selected - if ( count == 0 ) - { - itemText = StringLoader::LoadLC( R_MS_NO_SELECTED_ITEMS ); - iSettingText->Des().Copy( *itemText ); - } - // just one item selected - else if ( count == 1 ) - { - TInt itemCount = iItemArray->Count(); - for ( TInt index = 0; index < itemCount; index++ ) - { - CSelectableItem* item = (*iItemArray)[ index ]; - if ( item->SelectionStatus() ) - { - iSettingText->Des().Copy( item->ItemText() ); - index = itemCount; // break loop - } - } - } - // more than one item selected - else - { - itemText = StringLoader::LoadLC( R_MS_ITEM_DEVICES, count ); - - // do number conversion - TPtr ptr = itemText->Des(); - AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr ); - - iSettingText->Des().Copy( *itemText ); - } - - if ( itemText ) - { - CleanupStack::PopAndDestroy( itemText ); - } - - // Set new value - SetExternalText( *iSettingText ); - } -// End of File -