homesync/contentmanager/mediaservant/src/msfillcontainer.cpp
branchIOP_Improvements
changeset 40 08b5eae9f9ff
parent 39 6369bfd1b60d
child 41 b4d83ea1d6e2
--- a/homesync/contentmanager/mediaservant/src/msfillcontainer.cpp	Mon Nov 01 13:44:24 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1125 +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:  CMSFillContainer class implementation
-*
-*/
-
-
-#include <AknIconArray.h>
-#include <aknlists.h>
-#include <AknsUtils.h>
-#include <eikclbd.h>
-#include <mediaservant.rsg>
-#include <mediaservant.mbg>
-#include <StringLoader.h>
-#include <avkon.mbg>
-#include <aknlistquerydialog.h>
-#include "upnpstring.h"
-#include <e32math.h>
-
-#include "cmdriveinfo.h"
-#include "mserv.hlp.hrh"
-#include "cmfillrule.h"
-#include "msfillview.h"
-#include "msappui.h"
-#include "mediaservantuid.h"
-#include "msengine.h"
-#include "msfillcontainer.h"
-#include "msconstants.h"
-#include "msdebug.h"
-
-// CONSTANTS
-
-// Listbox granularity
-const TInt KListGranularity = 5;
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::CMSFillContainer()
-// --------------------------------------------------------------------------
-//
-CMSFillContainer::CMSFillContainer( CMSAppUi& aAppUi, CMSFillView& aView ) :
-    iMSAppUi( aAppUi ),
-    iView( aView )
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::CMSFillContainer"));
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::~CMSFillContainer()
-// --------------------------------------------------------------------------
-//
-CMSFillContainer::~CMSFillContainer()
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::~CMSFillContainer"));
-
-    iSelectedLists.Close();
-
-    iView.ClearCurrentNaviPaneText();
-
-    delete iListBox; // Deletes listbox object.
-
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::ConstructL()
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::ConstructL( TRect aRect )
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::ConstructL"));
-
-    // fill quota size
-    CalculateFillQuotaL();
-
-    CreateWindowL();
-
-    iListBox = new (ELeave) CAknSingleGraphicStyleListBox;
-
-    // This is multiselection listbox but resource defines it as SELECTION
-    // LIST because we don't want to let framework handle icon changes.
-    // Framework toggles between two icons whereas we have to show multiple
-    // icons.
-    // Special icons are changed every time item selection or priority
-    // changes. Calculations for icons are made in SetIcon()
-    SetListBoxFromResourceL(iListBox, R_FILL_VIEW_LISTBOX);
-
-    // Create icons
-    CAknIconArray* icons = new (ELeave) CAknIconArray( EIconCount );
-    CleanupStack::PushL( icons );
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
-    // selected and fits icon
-    AppendIconToArrayL( icons, skin,
-                        KMSMifFileName,
-                        KAknsIIDDefault,
-                        EMbmMediaservantQgn_mserv_white_check,
-                        EMbmMediaservantQgn_mserv_white_check_mask );
-
-    // unselected and fits icon
-    AppendIconToArrayL( icons, skin,
-                        KMSMifFileName,
-                        KAknsIIDDefault,
-                        EMbmMediaservantQgn_mserv_white_uncheck,
-                        EMbmMediaservantQgn_mserv_white_uncheck_mask );
-
-    // selected and partially fits icon
-    AppendIconToArrayL( icons, skin,
-                        KMSMifFileName,
-                        KAknsIIDDefault,
-                        EMbmMediaservantQgn_mserv_yellow_check,
-                        EMbmMediaservantQgn_mserv_yellow_check_mask );
-
-    // unselected and partially fits icon
-    AppendIconToArrayL( icons, skin,
-                        KMSMifFileName,
-                        KAknsIIDDefault,
-                        EMbmMediaservantQgn_mserv_yellow_uncheck,
-                        EMbmMediaservantQgn_mserv_yellow_uncheck_mask );
-
-    // selected and doesn't fit icon
-    AppendIconToArrayL( icons, skin,
-                        KMSMifFileName,
-                        KAknsIIDDefault,
-                        EMbmMediaservantQgn_mserv_red_check,
-                        EMbmMediaservantQgn_mserv_red_check_mask );
-
-    // unselected and doesn't fit icon
-    AppendIconToArrayL( icons, skin,
-                        KMSMifFileName,
-                        KAknsIIDDefault,
-                        EMbmMediaservantQgn_mserv_red_uncheck,
-                        EMbmMediaservantQgn_mserv_red_uncheck_mask );
-    // video type -icon
-    AppendIconToArrayL( icons, skin,
-                        KMSMifFileName,
-                        KAknsIIDDefault,
-                        EMbmMediaservantQgn_mserv_video_list_small,
-                        EMbmMediaservantQgn_mserv_video_list_small_mask );
-
-    // image type -icon
-    AppendIconToArrayL( icons, skin,
-                        KMSMifFileName,
-                        KAknsIIDDefault,
-                        EMbmMediaservantQgn_mserv_image_list_small,
-                        EMbmMediaservantQgn_mserv_image_list_small_mask );
-
-    // music type -icon
-    AppendIconToArrayL( icons, skin,
-                        KMSMifFileName,
-                        KAknsIIDDefault,
-                        EMbmMediaservantQgn_mserv_music_list_small,
-                        EMbmMediaservantQgn_mserv_music_list_small_mask );
-
-    // mark icon for reordering mode -icon
-    AppendIconToArrayL( icons, skin,
-                        KAvkonMifFileName,
-                        KAknsIIDDefault,
-                        EMbmAvkonQgn_indi_marked_add,
-                        EMbmAvkonQgn_indi_marked_add_mask );
-
-    iListBox->ItemDrawer()->ColumnData()->SetIconArray( icons );
-    CleanupStack::Pop(icons);
-
-
-    // Create icon for context pane
-    AknsUtils::CreateIconL( skin,
-                            KAknsIIDDefault,
-                            iIcon,
-                            iIconMask,
-                            KMSMifFileName,
-                            EMbmMediaservantQgn_mserv_from_home,
-                            EMbmMediaservantQgn_mserv_from_home_mask);
-    // change context icon
-    SetContextPaneIconL( iIcon, iIconMask );
-
-    SetRect(aRect);
-
-    // Get rule controller
-    iFillRuleController = iMSAppUi.FillRuleController();
-    // Update array
-    iFillRuleController->UpdateArrayL();
-    // get fill lists
-    iFillListArray = iFillRuleController->FillListArray();
-    // keep selections safe
-    iSelectedIndexes = iListBox->SelectionIndexes();
-
-    TInt64 capasity;
-    TInt64 free;
-    iMSAppUi.ReadMMCInfoL( capasity, free );
-    iFreeMemory = Min( free, iQuota );
-
-    if ( iFillListArray->Count() > 0 )
-        {
-        // Add data to listbox
-        UpdateListBoxDataL();
-
-        // Enable text scrolling
-        iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
-
-        // get item array
-        CDesCArray* itemArray = static_cast<CDesCArray*>
-                                (iListBox->Model()->ItemTextArray());
-
-        iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray);
-        }
-
-    // keep selections safe
-    const CListBoxView::CSelectionIndexArray* selected =
-                                            iListBox->SelectionIndexes();
-
-    for ( TInt index = 0; index < selected->Count(); index++ )
-        {
-        iSelectedLists.AppendL( (*selected)[index] );
-        }
-
-    // Set highlighted item
-    TInt currentItem = iMSAppUi.ParameterAgent()->FillViewFocusIndex();
-    if ( currentItem >= 0 )
-        {
-        //Set current item
-        iListBox->SetCurrentItemIndex( currentItem );
-        }
-    else
-        {
-        // first item
-        // This is set when new list is created without existing lists
-        iListBox->SetCurrentItemIndex( 0 );
-        }
-
-    UpdateNaviTextL();
-
-	iPreviousItemIndex = 0;
-	iDragItemIndex = 0;
-
-    // Change middle softkey according to selection
-    TBool listSelected = IsCurrentListItemActive();
-    iView.SetCbaL( listSelected );
-
-    ActivateL(); // Activates window. ( Ready to draw )
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::CountComponentControls()
-// Returns number of components.
-// --------------------------------------------------------------------------
-//
-TInt CMSFillContainer::CountComponentControls() const
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::CountComponentControls"));
-
-    return 1; // return number of controls inside this container
-    }
-
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::ComponentControl()
-// Returns pointer to particular component.
-// --------------------------------------------------------------------------
-//
-CCoeControl* CMSFillContainer::ComponentControl(TInt /*aIndex*/) const
-
-    {
-    return iListBox; // return a pointer to the listbox
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::OfferKeyEventL()
-// Handles the key events.
-// --------------------------------------------------------------------------
-//
-TKeyResponse CMSFillContainer::OfferKeyEventL(
-    const TKeyEvent& aKeyEvent,
-    TEventCode aType )
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::OfferKeyEventL"));
-
-    TKeyResponse response = EKeyWasNotConsumed;
-
-    if ( aType != EEventKey )
-        {
-        response =  EKeyWasNotConsumed;
-        }
-
-    else if ( iListBox && iListBox->CurrentItemIndex() >= 0 )
-        {
-        // check if reordering mode is activated
-        if ( iReorderState == EMSFillReorderActive ||
-             aKeyEvent.iCode == EKeyLeftArrow ||
-             aKeyEvent.iCode == EKeyRightArrow )
-            {
-            response = HandleReorderKeyEventL( aKeyEvent, aType );
-            }
-
-        // delete list
-        else if ( aKeyEvent.iCode == EKeyBackspace )
-            {
-            DeleteRuleL();
-            response = EKeyWasConsumed;
-            }
-
-        // activate/deactivate list
-        else if ( aKeyEvent.iCode == EKeyOK )
-            {
-            CCmFillRule* rule =
-                (*iFillListArray)[iListBox->CurrentItemIndex()]->List();
-            if ( rule->Selected() == ECmSelected )
-                {
-                rule->SetSelected( ECmUnSelected );
-                }
-            else
-                {
-                rule->SetSelected( ECmSelected );
-                }
-            iView.SetListUnselected();
-            UpdateListBoxDataL();
-            response = EKeyWasConsumed;
-            }
-
-        // default
-        else
-            {
-            response = iListBox->OfferKeyEventL( aKeyEvent, aType );
-            }
-
-
-        TCmServerState state;
-        iMSAppUi.MSEngine()->ServerState( state );
-        if ( ( aKeyEvent.iCode == EKeyUpArrow ||
-             ( aKeyEvent.iCode == EKeyDownArrow )))
-            {
-            // change navi pane text to match highlighted list size
-            UpdateNaviTextL();
-            }
-        }
-
-#ifndef __SERIES60_31__
-    if ( iReorderState == EMSFillNormal )
-        {
-        // Change middle softkey according to selection
-        TBool listSelected = IsCurrentListItemActive();
-        iView.SetCbaL( listSelected );
-        }
-#endif
-
-    return response;
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::HandleDragAndDropEventsL()
-// Handles drag and drop events on touch screen
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::HandleDragAndDropEventsL( const TPointerEvent& aPointerEvent )
-	{
-	if ( aPointerEvent.iType == TPointerEvent::EButton1Down &&
-	     iReorderState != EMSFillNormal )
-		{
-		iReorderState = EMSFillReorderActive;
-	   	iDragItemIndex = iListBox->CurrentItemIndex();
-		}
-	else if ( aPointerEvent.iType == TPointerEvent::EButton1Up &&
-	     iReorderState == EMSFillReorderActive )
-		{
-		iView.HandleCommandL( EMSCmdDrop );
-		TInt listBoxItem = iListBox->CurrentItemIndex();
-		iListBox->SetCurrentItemIndex( iDragItemIndex );
-
-		TKeyEvent keyEvent;
-		// Move dragged item downwards
-		if ( listBoxItem >= iDragItemIndex )
-			{
-			keyEvent.iCode = EKeyDownArrow;
-        	for( TInt c = 0; listBoxItem > iDragItemIndex + c; c++ )
-	        	{
-	        	HandleReorderKeyEventL( keyEvent, EEventKey );
-	        	}
-			}
-		// Move dragged item upwards
-		else
-			{
-			keyEvent.iCode = EKeyUpArrow;
-        	for( TInt c = 0; listBoxItem < iDragItemIndex - c; c++ )
-	        	{
-	        	HandleReorderKeyEventL( keyEvent, EEventKey );
-	        	}
-			}
-        	
-		iListBox->SetCurrentItemIndex( listBoxItem );
-		}
-	}
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::UpdateListBoxDataL()
-// Creates listbox items
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::UpdateListBoxDataL()
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::UpdateListBoxDataL"));
-    TInt64 freeSpace = iFreeMemory;
-
-    TCmServerState state;
-    iMSAppUi.MSEngine()->ServerState( state );
-
-    // Keep item index safe for reordering mode because we reset the list
-    TInt currentItemIndex = iListBox->CurrentItemIndex();
-
-    // reset list size
-    iSizeOfSelectedLists = 0;
-
-    TBuf<KMaxFileName> item;
-    HBufC* primary_text = HBufC::NewL( KMaxFileName );
-    CleanupStack::PushL( primary_text );
-
-    // Listbox items
-    CDesCArray* itemArray = static_cast<CDesCArray*>
-                                   (iListBox->Model()->ItemTextArray());
-    itemArray->Reset();
-
-    // Marked listbox item indexes
-    CArrayFix<TInt>* selectionArray = new (ELeave )
-                                   CArrayFixFlat<TInt>(KListGranularity);
-
-    CleanupStack::PushL( selectionArray );
-
-    TInt ruleCount = iFillListArray->Count();
-
-    for ( TInt index = 0; index < ruleCount; index++ )
-        {
-        // Get fill rule name and put it to the listbox
-        CCmFillRule* rule = (*iFillListArray)[index]->List();
-        HBufC* listName = UpnpString::ToUnicodeL( rule->Name() );
-        CleanupStack::PushL( listName );
-        primary_text->Des().Copy( *listName );
-        CleanupStack::PopAndDestroy( listName );
-
-
-        // Check if rule is active and mark it in the list
-        TCmFillRuleStatus status = rule->Selected();
-
-        TInt64 listSize = (*iFillListArray)[index]->ListSize();
-
-        if ( status == ECmSelected )
-            {
-            selectionArray->AppendL( index );
-
-            TInt id = rule->ListId();
-            TInt64 size = 0;
-            iMSAppUi.GetFilledFilesSize( size, id );
-            
-            // list selected - add used memory size
-            iSizeOfSelectedLists += ( listSize - size );
-            }
-        // calculate icon index
-        TInt iconIndex = ListItemIconIndex( index,
-                                            listSize,
-                                            freeSpace );
-
-
-        switch ( rule->MediaType() )
-            {
-            case ECmVideo:
-                {
-                item.Format( KSingleGraphicStyleFormatString,
-                             iconIndex, primary_text, EVideoType );
-                break;
-                }
-            case ECmImage:
-                {
-                item.Format( KSingleGraphicStyleFormatString,
-                             iconIndex, primary_text, EImageType );
-                break;
-                }
-            case ECmAudio:
-                {
-                item.Format( KSingleGraphicStyleFormatString,
-                             iconIndex, primary_text, EAudioType );
-                break;
-                }
-            default:
-                {
-                item.Format( KSingleGraphicStyleFormatStringNoTrailIcons,
-                             iconIndex, primary_text);
-                break;
-                }
-            }
-
-        // Check if reorder mode is active and mark current item
-        if ( iReorderState == EMSFillReorderActive &&
-             index == currentItemIndex )
-            {
-            TBuf<2> markIconStr; // Magic: 2 characters reserverd for icon
-            markIconStr.AppendNum( EMark );
-            item.Append(markIconStr);
-            }
-        itemArray->AppendL( item );
-        }
-
-    iListBox->SetSelectionIndexesL( selectionArray );
-
-    CleanupStack::PopAndDestroy( selectionArray );
-    CleanupStack::PopAndDestroy( primary_text );
-
-    UpdateNaviTextL();
-    if( currentItemIndex > KErrNotFound && currentItemIndex < ruleCount )
-        {
-        iListBox->SetCurrentItemIndex( currentItemIndex );
-        }
-    iListBox->HandleItemAdditionL();
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::SetFillRules()
-// Sends fill rules to server
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::SetFillRules()
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::SetFillRules"));
-
-    // Get marked items indexes
-    const CListBoxView::CSelectionIndexArray* selected =
-            iListBox->SelectionIndexes();
-
-    // Listbox item count
-    TInt itemCount = iFillListArray->Count();
-
-    // Selected item index
-    TInt itemIdx = 0;
-
-    // Sort criteria, offset = 0
-    TKeyArrayFix sortKey( 0, ECmpTUint );
-
-    // count selected items
-    TInt count = selected->Count();
-
-    for ( TInt index = 0; index < itemCount; index++ )
-        {
-        // check if listbox item is found from selected item list
-        TInt found = selected->Find( index, sortKey, itemIdx );
-
-        CCmFillRule* rule = (*iFillListArray)[index]->List();
-
-        // FOUND
-        if ( found == 0 )
-            {
-            // set rule selected
-            rule->SetSelected( ECmSelected );
-            }
-        // NOT FOUND
-        else
-            {
-            // set rule unselected
-            rule->SetSelected( ECmUnSelected );
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::SelectedItemIndex()
-// Highlighted item index
-// --------------------------------------------------------------------------
-//
-TInt CMSFillContainer::SelectedItemIndex()
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::SelectedItemIndex"));
-
-    return iListBox->CurrentItemIndex();
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::ListItemCount()
-// coun of list items
-// --------------------------------------------------------------------------
-//
-TInt CMSFillContainer::ListItemCount()
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::ListItemCount"));
-
-    return iListBox->Model()->NumberOfItems();
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::SetReorderStateL()
-// Sets reorder state
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::SetReorderStateL( TMSReorderState aState )
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::SetReorderStateL"));
-
-    switch ( aState )
-        {
-        case EMSFillNormal:
-            {
-            iReorderState = EMSFillNormal;
-            break;
-            }
-        case EMSFillReorderActive:
-            {
-            iReorderState = EMSFillReorderActive;
-            UpdateListBoxDataL();
-            break;
-            }
-        case EMSFillGrabActive:
-            {
-            iReorderState = EMSFillGrabActive;
-            UpdateListBoxDataL();
-            break;
-            }
-        default:
-            {
-            iReorderState = EMSFillNormal;
-            break;
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::MoveItem()
-// moves item up/down on the list
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::MoveItem( TInt aDirection )
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::MoveItem"));
-
-    TInt currentIdx = iListBox->CurrentItemIndex();
-    TInt totalItem = iListBox->Model()->NumberOfItems();
-
-    // store selection status of all rules
-    StoreSelectionStatus();
-
-    // up
-    if (aDirection == -1 && currentIdx)
-        {
-        iFillRuleController->ChangePriority( totalItem,
-                                             currentIdx,
-                                             aDirection );
-        }
-    // down
-    else if ( aDirection == 1 && currentIdx < totalItem - 1 )
-        {
-        iFillRuleController->ChangePriority( totalItem,
-                                             currentIdx,
-                                             aDirection );
-        }
-    else
-        {
-        // Do nothing
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::HandleReorderKeyEventL
-// Handle key events in reordering mode.
-// (other items were commented in a header).
-// --------------------------------------------------------------------------
-//
-TKeyResponse CMSFillContainer::HandleReorderKeyEventL(
-    const TKeyEvent& aKeyEvent,
-    TEventCode aType )
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::HandleReorderKeyEventL"));
-
-    TKeyResponse keyResponse = EKeyWasConsumed;
-
-    TInt currentIdx = iListBox->CurrentItemIndex();
-    TInt totalItems = iListBox->Model()->NumberOfItems();
-
-    TBool reqToRedraw = EFalse;
-    if ( aType == EEventKey )
-        {
-        switch ( aKeyEvent.iCode )
-            {
-            case EKeyUpArrow:
-            // fall through
-            case EKeyLeftArrow:
-                {
-                if ( currentIdx > 0 )
-                    {
-                    MoveItem(-1);
-                    iListBox->SetCurrentItemIndex( currentIdx - 1 );
-                    reqToRedraw = ETrue;
-                    }
-                break;
-                }
-            case EKeyDownArrow:
-            // fall through
-            case EKeyRightArrow:
-                {
-                if ( currentIdx < totalItems-1 ) // because index is 0 based
-                    {
-                    MoveItem(1);
-                    iListBox->SetCurrentItemIndex( currentIdx + 1 );
-                    reqToRedraw = ETrue;
-                    }
-                break;
-                }
-            default:
-                {
-                LOG(_L("[MediaServant]\t CMSFillContainer::\
-                HandleReorderKeyEventL invalid keycode"));
-                break;
-                }
-            }
-        }
-
-    if( reqToRedraw )
-        {
-        // update selected item indexes
-        const CListBoxView::CSelectionIndexArray* selected =
-                                                iListBox->SelectionIndexes();
-        UpdateListBoxDataL();
-        iSelectedLists.Reset();
-        for ( TInt index = 0; index < selected->Count(); index++ )
-            {
-            TInt a = (*selected)[index];
-            iSelectedLists.AppendL( (*selected)[index] );
-            }
-        }
-
-    return keyResponse;
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::StoreSelectionStatus()
-// stores fill rule selection status to rule container
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::StoreSelectionStatus()
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::StoreSelectionStatusL"));
-
-    // index of selected item
-    TInt itemIdx = 0;
-    // Sort criteria, offset = 0
-    TKeyArrayFix sortKey( 0, ECmpTUint );
-
-    // Listbox array
-    CDesCArray* itemArray = static_cast<CDesCArray*>
-                                    (iListBox->Model()->ItemTextArray());
-
-    // Listbox item count
-    TInt itemCount = itemArray->Count();
-
-    const CListBoxView::CSelectionIndexArray* selected =
-            iListBox->SelectionIndexes();
-
-    // count selected items
-    TInt count = selected->Count();
-
-    for ( TInt index = 0; index < itemCount; index++ )
-        {
-        // check if listbox item is found from selected item list
-        TInt found = selected->Find( index, sortKey, itemIdx );
-
-        if ( found == 0 )
-            {
-            // found - get correcponding index for rule table with At()
-            CCmFillRule* rule =
-                (*iFillListArray)[selected->At( itemIdx )]->List();
-            // set rule selected
-            rule->SetSelected( ECmSelected );
-            }
-        else
-            {
-            // not found
-            CCmFillRule* rule = (*iFillListArray)[index]->List();
-            // set rule unselected
-            rule->SetSelected( ECmUnSelected );
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::DeleteRuleL()
-// Deletes highlighted rule
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::DeleteRuleL()
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::DeleteRuleL"));
-
-    // Show delete files query
-    CAknQueryDialog* query= CAknQueryDialog::NewL(
-                                   CAknQueryDialog::ENoTone );
-
-    if ( query->ExecuteLD( R_MSERV_DELETE_LIST_QUERY ) )
-        {
-        TInt currentItemIndex = iListBox->CurrentItemIndex();
-        // delete rule
-        iFillRuleController->DeleteRuleL( currentItemIndex );
-
-        // Listbox items
-        CDesCArray* itemArray = static_cast<CDesCArray*>
-                                       (iListBox->Model()->ItemTextArray());
-
-        // delete list item
-        itemArray->Delete( currentItemIndex );
-        iListBox->HandleItemRemovalL();
-        iListDeleted = ETrue;
-
-        if ( currentItemIndex > 0 )
-            {
-            // highligth previous
-            iListBox->SetCurrentItemIndexAndDraw( currentItemIndex - 1 );
-            }
-        iMSAppUi.MSEngine()->DeleteFilledFilesL();
-        iView.ShowNaviTextL();
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::IsListDeleted()
-// Returns list delete status
-// --------------------------------------------------------------------------
-//
-TBool CMSFillContainer::IsListDeleted()
-    {
-    return iListDeleted;
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::HandlePointerEventL()
-// Handles touchscreen event
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::HandlePointerEventL ( const TPointerEvent& aPointerEvent )
-    {
-	CCoeControl::HandlePointerEventL( aPointerEvent );
-    
-    if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
-    	{
-    	// Do not change listbox item state, when highlighting an item or,
-	    // when reordering state is active
-    	if ( iListBox->CurrentItemIndex() == iPreviousItemIndex &&
-             iReorderState == EMSFillNormal )
-	    	{	
-			TKeyEvent keyEvent;
-			keyEvent.iCode = EKeyOK;
-			OfferKeyEventL( keyEvent, EEventKey );
-    		}
-    	else
-    		{
-    		UpdateListBoxDataL();
-    		}
-	   	iPreviousItemIndex = iListBox->CurrentItemIndex();
-		}
-		
-	// Handle Drag and drop events, when reorder state is active
-    if ( iReorderState != EMSFillNormal )
-    	{
-    	HandleDragAndDropEventsL( aPointerEvent );
-    	}
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::CheckIfDublicateName()
-// Checks how many dublicate items is on the fill list
-// --------------------------------------------------------------------------
-//
-TInt CMSFillContainer::CheckIfDublicateNames( const TDesC& aName )
-    {
-    CDesCArray* itemArray = static_cast<CDesCArray*>
-                                   (iListBox->Model()->ItemTextArray());
-    TInt count(0);
-
-    for ( TInt index = 0; index < itemArray->MdcaCount(); index++ )
-        {
-        if ( KErrNotFound != itemArray->MdcaPoint( index ).Match( aName ) )
-            {
-            count++;
-            }
-        }
-    return count;
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::UpdateNaviTextL()
-// updates list size on navi pane
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::UpdateNaviTextL()
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::UpdateNaviTextL"));
-
-    TInt currentItemIndex = iListBox->CurrentItemIndex();
-
-    if ( currentItemIndex != KErrNotFound )
-        {
-        CArrayFix<TInt>* infoArray = new ( ELeave ) CArrayFixFlat<TInt>(2);
-        CleanupStack::PushL( infoArray );
-
-        CMSFillList* fillList = (*iFillListArray)[currentItemIndex];
-        CCmFillRule* rule = fillList->List();
-
-        HBufC* naviText = NULL;
-
-        TInt64 freeMemory = iFreeMemory - iSizeOfSelectedLists;
-
-        // round values
-        TReal size(0);
-        Math::Round( size, TReal(fillList->ListSize()) / KMega, 0 );
-
-        TReal freeSize(0);
-        Math::Round( freeSize, TReal(freeMemory) / KMega, 0 );
-
-        infoArray->AppendL( size );
-        infoArray->AppendL( freeSize );
-
-        naviText = StringLoader::LoadLC( R_MS_NAVI_LIST_SIZE,
-                                         *infoArray );
-        // do number conversion
-        TPtr ptr = naviText->Des();
-        AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr );
-
-        iView.SetNavigationPaneTextL( *naviText );
-        CleanupStack::PopAndDestroy( naviText );
-        CleanupStack::PopAndDestroy( infoArray );
-        }
-    else
-        {
-        iView.ClearCurrentNaviPaneText();
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::ChangeListActivityL()
-// Toggles list item
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::ChangeListActivityL()
-    {
-    CCmFillRule* rule =
-        (*iFillListArray)[iListBox->CurrentItemIndex()]->List();
-    if ( rule->Selected() == ECmSelected )
-        {
-        rule->SetSelected( ECmUnSelected );
-        }
-    else
-        {
-        rule->SetSelected( ECmSelected );
-        }
-    UpdateListBoxDataL();
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::IsCurrentListItemActive()
-// Checks if item is selected
-// --------------------------------------------------------------------------
-//
-TBool CMSFillContainer::IsCurrentListItemActive()
-    {
-    return iListBox->View()->ItemIsSelected( iListBox->CurrentItemIndex() );
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::HasListSelectionsChanged
-// Checks if item is selected
-// --------------------------------------------------------------------------
-//
-TBool CMSFillContainer::HasListSelectionsChanged()
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::HasListSelectionsChanged"));
-
-    TBool status = EFalse;
-
-    TInt originalCount = iSelectedLists.Count();
-
-    const CListBoxView::CSelectionIndexArray* selected =
-                                                iListBox->SelectionIndexes();
-
-    TKeyArrayFix sortKey( 0, ECmpTUint );
-    // dummy index - not interested of this
-    TInt dummy = 0;
-
-    for ( TInt index = 0; index < originalCount; index++ )
-        {
-        // check if listbox item is found from selected item list
-        TInt found = selected->Find(
-                             iSelectedLists[index], sortKey, dummy );
-        if ( found != 0 )
-            {
-            // something has changed on the list
-            status = ETrue;
-            index = originalCount; // break loop
-            }
-        }
-
-    return status;
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::ListItemIconIndex
-// Returns icon index based on list size and free space
-// --------------------------------------------------------------------------
-//
-TInt CMSFillContainer::ListItemIconIndex( TInt aIndex,
-                                          TInt64 aListSize,
-                                          TInt64& aFreeSpace )
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::ListItemIconIndex"));
-
-    TInt iconIndex( 0 );
-    // check if item is selected
-    CCmFillRule* rule = (*iFillListArray)[aIndex]->List();
-    if(  ECmSelected == rule->Selected() )
-        {
-        // doesn't fit
-        if ( aFreeSpace <= 0 )
-            {
-            iconIndex = EMSSelectedDoesntFit;
-            aFreeSpace = 0;
-            }
-        // fits
-        else if ( aFreeSpace - aListSize > 0 )
-            {
-            iconIndex = EMSSelectedFits;
-            aFreeSpace -= aListSize;
-            }
-        // fits partially
-        else
-            {
-            iconIndex = EMSSelectedPartiallyFits;
-            aFreeSpace = 0;
-            }
-        }
-    else
-        {
-        // doesn't fit
-        if ( aFreeSpace <= 0)
-            {
-            iconIndex = EMSUnSelectedDoesntFit;
-            aFreeSpace = 0;
-            }
-        // fits
-        else if ( aFreeSpace - aListSize > 0 )
-            {
-            iconIndex = EMSUnselectedFits;
-            aFreeSpace -= aListSize;
-            }
-        // fits partially
-        else
-            {
-            iconIndex = EMSUnselectedPartiallyFits;
-            aFreeSpace = 0;
-            }
-        }
-    return iconIndex;
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::CalculateFillQuotaL()
-// Gets selected drives and calculates quota size
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::CalculateFillQuotaL()
-    {
-    RPointerArray<CCmDriveInfo> drives;
-
-    iMSAppUi.MSEngine()->GetDrivesL( drives );
-    for ( TInt i = 0; i < drives.Count(); i++ )
-        {
-        iQuota += drives[i]->DriveQuota();
-        iQuota -= drives[i]->UsedDriveQuota();
-        }
-    drives.ResetAndDestroy();
-    drives.Close();
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::SizeChanged()
-// Called by framework when the view size is changed.
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::SizeChanged()
-    {
-    // container control resize code.
-    if ( iListBox )
-        {
-        iListBox->SetRect( Rect() ); // Set rectangle of listbox.
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CMSFillContainer::HandleResourceChange
-// Handles layout change
-// --------------------------------------------------------------------------
-//
-void CMSFillContainer::HandleResourceChange( TInt aType )
-    {
-    if ( aType == KEikDynamicLayoutVariantSwitch )
-        {
-        SetRect( iView.ClientRect() );
-        }
-
-    CCoeControl::HandleResourceChange( aType );
-    }
-
-// ---------------------------------------------------------------------------
-// CMSFillContainer::GetHelpContext
-// ---------------------------------------------------------------------------
-//
-void CMSFillContainer::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    LOG(_L("[MediaServant]\t CMSFillContainer::GetHelpContext"));
-
-    aContext.iMajor = TUid::Uid(KMediaServantUID3);
-    aContext.iContext = KMSERV_HLP_FILL_LIST;
-    }
-
-// End of File
-