browserui/browser/FeedsSrc/FeedsFolderView.cpp
branchRCL_3
changeset 65 8e6fa1719340
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/FeedsSrc/FeedsFolderView.cpp	Wed Sep 01 12:31:04 2010 +0100
@@ -0,0 +1,748 @@
+/*
+* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  A view to browse a user's list of feeds.
+*
+*/
+
+
+
+#include <avkon.rsg>
+
+#include <aknviewappui.h>
+#include <aknutils.h>
+#include <AknToolbar.h>
+#include <eikmenup.h>
+#include <hlplch.h>
+#include <s32mem.h>
+
+#include "Browser.hrh"
+#include <BrowserNG.rsg>
+
+#include "BrowserAppUi.h"
+#include "CommonConstants.h"
+#include <feedattributes.h>
+#include <folderattributes.h>
+#include "FeedsFolderContainer.h"
+#include "FeedsFolderView.h"
+#include "Display.h"
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::NewL
+//
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CFeedsFolderView* CFeedsFolderView::NewL( MApiProvider& aApiProvider, TRect& aRect )
+	{
+    CFeedsFolderView* self = new (ELeave) CFeedsFolderView(aApiProvider);
+    
+    CleanupStack::PushL(self);
+    self->ConstructL(aRect);
+    CleanupStack::Pop();
+
+    return self;
+	}
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::CFeedsFolderView
+//
+// C++ default constructor.
+// -----------------------------------------------------------------------------
+//
+CFeedsFolderView::CFeedsFolderView(MApiProvider& aApiProvider):
+CBrowserViewBase( aApiProvider ),iPenEnabled(EFalse)
+	{
+    iPenEnabled = AknLayoutUtils::PenEnabled(); 
+	}
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::ConstructL
+//
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CFeedsFolderView::ConstructL(TRect& aRect)
+    {
+    BaseConstructL(R_FEEDS_FOLDER_VIEW);
+    
+#ifndef BRDO_SINGLE_CLICK_ENABLED_FF	
+    iContainer = CFeedsFolderContainer::NewL( this, ApiProvider(), aRect );
+    iContainer->MakeVisible(EFalse);
+#endif	
+    
+    if(iPenEnabled)
+        {
+        Toolbar()->SetToolbarObserver(this);        
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::~CFeedsFolderView
+//
+// Deconstructor.
+// -----------------------------------------------------------------------------
+//
+CFeedsFolderView::~CFeedsFolderView()
+    {
+    DoDeactivate();
+
+    delete iContainer;
+    }
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::Id
+//
+// Returns the id of the view.
+// -----------------------------------------------------------------------------
+//
+TUid CFeedsFolderView::Id() const
+    {
+    return KUidBrowserFeedsFolderViewId;
+    }
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::HandleCommandL
+//
+// Processes commands.
+// -----------------------------------------------------------------------------
+//
+void CFeedsFolderView::HandleCommandL(TInt aCommand)
+    {   
+    TBool  handled = EFalse;
+    
+    // Handle softkeys and some standard commands first.
+    switch (aCommand)
+        {
+		case EAknSoftkeyBack:
+            if (!iContainer->HandleShowParentFolderL())
+            	{
+            	// If we are in embedded mode (perhaps someone imported a feed from the messaging app)
+            	// then we want to close the browser vs. returning to the bookmark view
+            	if (iApiProvider.IsEmbeddedModeOn())
+            		{
+					AppUi()->HandleCommandL( EWmlCmdCloseBrowser );
+            		}
+              	// Go back to content view only if we came from there. Note that ContentView can be 
+               	// on the history if another application launched a URL.                 
+                else if(((ApiProvider().GetPreviousViewFromViewHistory() == KUidBrowserContentViewId) 
+                	&& (ApiProvider().FeedsClientUtilities().CalledFromView() == KUidBrowserContentViewId))
+                	||(ApiProvider().GetPreviousViewFromViewHistory() == KUidBrowserFeedsTopicViewId)
+                	&& (ApiProvider().FeedsClientUtilities().CalledFromView() != KUidBrowserBookmarksViewId))
+                	{
+                	 	iApiProvider.SetViewToBeActivatedIfNeededL( KUidBrowserContentViewId );	
+                	}
+            	else
+            		{
+                  	iApiProvider.SetViewToBeActivatedIfNeededL( KUidBrowserBookmarksViewId );
+            		}
+                }
+            handled = ETrue;
+            break;
+        case EAknSoftkeyOk:
+            iContainer->HandleOkL();
+            handled = ETrue;
+            break;
+
+        case EAknSoftkeyCancel:
+            iContainer->HandleCancelL();
+            handled = ETrue;
+            break;
+
+		case EAknCmdMark:    	        
+		case EAknCmdUnmark:    	        
+		case EAknMarkAll:    	        
+		case EAknUnmarkAll:
+            iContainer->HandleMarkL(aCommand);
+            handled = ETrue;
+          	iContainer->UpdateCbaL();
+            iContainer->UpdateToolbarButtonsState();
+            break;
+            
+#ifdef __SERIES60_HELP
+        case EAknCmdHelp:
+            {
+            iApiProvider.SetLastActiveViewId(Id());
+            HlpLauncher::LaunchHelpApplicationL(iEikonEnv->WsSession(), 
+                    AppUi()->AppHelpContextL());
+            handled = ETrue;
+            break;
+            }
+#endif //__SERIES60_HELP 
+
+
+        case EEikCmdExit:
+        case EAknSoftkeyExit:
+            AppUi()->HandleCommandL(aCommand);
+            handled = ETrue;
+            break;
+        }
+        
+    if (handled)
+        {
+        return;
+        }
+        
+    // Handle menu commands.
+    switch (aCommand)
+        {
+        case EFeedsOpen:
+        case EFeedsActivate:
+            iContainer->HandleSelectionL();
+            break;
+
+		case EFeedsUpdate:    
+		    iContainer->HandleUpdateFeedL();
+            break;
+
+		case EFeedsUpdateAll:
+		    iContainer->HandleUpdateFeedL(ETrue);
+            break;
+
+		case EFeedsNewFeed: 	        
+            iContainer->HandleNewFeedL();
+            iContainer->UpdateToolbarButtonsState();
+            break;
+		
+		case EFeedsNewFolder:    	        
+            iContainer->HandleNewFolderL();
+            iContainer->UpdateToolbarButtonsState();
+            break;
+
+		case EFeedsEdit:
+		case EFeedsRename:
+            iContainer->HandleEditL();
+            iContainer->UpdateToolbarButtonsState();
+            break;
+
+		case EFeedsDelete:
+            iContainer->HandleDeleteL();
+            break;
+
+		case EFeedsMove:    	        
+            iContainer->HandleMoveL();
+            break;
+
+		case EFeedsMoveToFolder:    	        
+            iContainer->HandleMoveToFolderL();
+            break;
+
+		case EFeedsExport:
+			iContainer->HandleExportL();
+			break;
+			
+        case EWmlCmdDownloads:            
+            ApiProvider().BrCtlInterface().HandleCommandL(
+                							(TInt)TBrCtlDefs::ECommandShowDownloads +
+                							(TInt)TBrCtlDefs::ECommandIdBase );
+            break;
+
+        default:
+            iApiProvider.FeedsClientUtilities().HandleCommandL(Id(),aCommand);
+            break;
+        }        
+    }
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::DoActivateL
+//
+// Called when the view is activated.
+// -----------------------------------------------------------------------------
+//
+void CFeedsFolderView::DoActivateL(const TVwsViewId& /*aPrevViewId*/, 
+        TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/)
+    {
+   	StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL );
+  	StatusPane()->MakeVisible( ETrue );
+	ApiProvider().Display().ClearMessageInfo();
+
+    if (!iContainer)
+        {
+		iContainer = CFeedsFolderContainer::NewL( this, ApiProvider(), ClientRect() );
+
+        // Set the root folder.
+        if (iRootFolder != NULL)
+            {
+            iContainer->RootFolderChangedL(*iRootFolder);
+            }
+        }
+
+    if (!iContainerOnStack)
+        {
+        AppUi()->AddToViewStackL(*this, iContainer);
+        iContainer->SetRect(ClientRect());
+        iContainer->MakeVisible(ETrue);
+        iContainerOnStack = ETrue;
+        // resize screen after calling SetRect.  This way looks better
+        iContainer->HandleResourceChange(KEikDynamicLayoutVariantSwitch);
+        }
+
+	iApiProvider.SetLastActiveViewId(Id());
+    iContainer->UpdateTitleL();
+    iContainer->UpdateNavigationPaneL();
+    iContainer->UpdateListBoxL(iInitialItem);
+
+	iContainer->UpdateCbaL();	
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::DoDeactivate
+//
+// Called when the view is deactivated.
+// -----------------------------------------------------------------------------
+//
+void CFeedsFolderView::DoDeactivate()
+    {
+    if (iContainerOnStack)
+        {
+        AppUi()->RemoveFromViewStack(*this, iContainer);
+        iContainer->MakeVisible(EFalse);
+        iContainer->ClearNavigationPane();
+        iContainerOnStack = EFalse;
+        
+        iInitialItem = iContainer->CurrentItemIndex();
+        }
+	}
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::DynInitMenuPaneL
+//
+// Disables unrelated menu options.
+// -----------------------------------------------------------------------------
+//
+void CFeedsFolderView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+    {
+    const CFeedsEntity*      item = NULL;
+    
+    // Get the current item.
+    item = iContainer->CurrentItem();
+
+    // Handle the main menu.
+    if (aResourceId == R_FEEDS_FOLDER_VIEW_MENU)
+        {
+        // Dynamically build the menu.
+        		
+        // Downloads (only if download menu not empty (ie, ongoing downloads)
+        if (ApiProvider().BrCtlInterface().BrowserSettingL( TBrCtlDefs::ESettingsNumOfDownloads ))
+            {
+            iApiProvider.FeedsClientUtilities().AddItemL( *aMenuPane, EWmlCmdDownloads, R_FEEDS_OPTIONS_GO_DOWNLOADS);
+            }
+
+        iApiProvider.FeedsClientUtilities().AddCascadeL(*aMenuPane,EFeedsOptionsGoto,
+            R_FEEDS_OPTIONS_GOTO, R_FEEDS_OPTIONS_GOTO_SUBMENU);
+
+#ifndef BRDO_SINGLE_CLICK_ENABLED_FF
+        iApiProvider.FeedsClientUtilities().AddCascadeL(*aMenuPane,EFeedsOptionsFeedsActions,
+            R_FEEDS_OPTIONS_FEEDSACTIONS, R_FEEDS_OPTIONS_FEEDSACTIONS_SUBMENU);
+
+        iApiProvider.FeedsClientUtilities().AddCascadeL(*aMenuPane,EFeedsOptionsEdit,
+            R_FEEDS_OPTIONS_EDIT, R_FEEDS_OPTIONS_EDIT_SUBMENU);
+      
+        // these items only visible for non-empty folder
+        if (item != NULL)
+            {            
+            // Mark/Unmark submenu - only for non-empty folder
+            iApiProvider.FeedsClientUtilities().AddCascadeL(*aMenuPane,EFeedsOptionsMarkUnmark,
+                R_FEEDS_OPTIONS_MARKUNMARK, R_FEEDS_OPTIONS_MARKUNMARK_SUBMENU);
+            }
+#else
+        // ie, privacy submenu
+        //iApiProvider.FeedsClientUtilities().AddCascadeL(*aMenuPane,EFeedsOptionsClear,
+        //    R_FEEDS_OPTIONS_CLEAR, R_FEEDS_OPTIONS_CLEAR_SUBMENU);
+        
+        iApiProvider.FeedsClientUtilities().AddItemL( *aMenuPane, EFeedsUpdateAll, R_FEEDS_UPDATE_ALL);
+        iApiProvider.FeedsClientUtilities().AddItemL( *aMenuPane, EFeedsNewFeed, R_FEEDS_NEW_FEED);
+        if(iContainer->iCurrentFolder && ( iContainer->iCurrentFolder == iRootFolder) )
+        iApiProvider.FeedsClientUtilities().AddItemL( *aMenuPane, EFeedsNewFolder, R_OPTIONS_ORG_NEW_FOLDER);
+        iApiProvider.FeedsClientUtilities().AddItemL( *aMenuPane, EFeedsImport, R_OPTIONS_IMPORT_FEEDS);
+        if( item && iContainer->iCurrentFolder && !iContainer->isMoveActive() )
+            {
+            if ( (item->GetType() == EFolder) )
+                {
+                iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsRename, R_FLDR_RENAME);
+                aMenuPane->SetItemSpecific(EFeedsRename,ETrue);
+                iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsMove, R_OPTIONS_ORG_MOVE);
+                aMenuPane->SetItemSpecific(EFeedsMove,ETrue);
+                iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsDelete, R_FEEDS_DELETE);
+                aMenuPane->SetItemSpecific(EFeedsDelete,ETrue);
+                }
+        else
+            {
+            // Update (only if feed has focus)
+            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsUpdate, R_FEEDS_UPDATE);
+            aMenuPane->SetItemSpecific(EFeedsUpdate,ETrue);
+            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsExport, R_OPTIONS_EXPORT_FEEDS);
+            aMenuPane->SetItemSpecific(EFeedsExport,ETrue);
+            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsEdit, R_FEEDS_EDIT);
+            aMenuPane->SetItemSpecific(EFeedsEdit,ETrue);
+            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsDelete, R_FEEDS_DELETE);
+            aMenuPane->SetItemSpecific(EFeedsDelete,ETrue);
+            
+            if ( iContainer &&
+                             iContainer->iCurrentFolder &&
+                         iContainer->iCurrentFolder->GetChildren().Count() >= 2 )
+                            {
+                            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsMove, R_OPTIONS_ORG_MOVE);
+                            aMenuPane->SetItemSpecific(EFeedsMove,ETrue);
+                            }
+            if (!(item->GetType() == EFolder))
+               {            
+               TInt folderCount = 0;
+               iContainer->CountFolderFolders(iContainer->iRootFolder, folderCount);
+               if(iContainer && (folderCount> 0) && !iContainer->IsMarkedItemFolder())
+                   {   
+                   iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsMoveToFolder, R_OPTIONS_ORG_MOVE_TO_FOLDER);
+                   aMenuPane->SetItemSpecific(EFeedsMoveToFolder,ETrue); 
+                   }            
+               }
+            }
+       }
+#endif	   
+                        
+        iApiProvider.FeedsClientUtilities().AddCascadeL(*aMenuPane,EFeedsOptionsClear,
+            R_FEEDS_OPTIONS_CLEAR, R_CLEAR_SUBMENU);
+        }
+     else if(aResourceId == R_FEEDS_OPTIONS_GOTO_SUBMENU)
+        {     
+        // Back to Page (if page loaded)
+        if ( iApiProvider.IsPageLoaded() )
+            {
+            iApiProvider.FeedsClientUtilities().AddItemL( *aMenuPane, EWmlCmdBackToPage, R_BROWSER_MENU_ITEM_BACK_TO_PAGE );
+            }
+        
+        // Bookmarks view (if browser wasn't launched directly into feeds)
+        if ( !iApiProvider.BrowserWasLaunchedIntoFeeds() )
+		    {
+    	    iApiProvider.FeedsClientUtilities().AddItemL( *aMenuPane, EWmlCmdFavourites, R_BROWSER_MENU_ITEM_FAVOURITES );
+		    } 
+        }
+     else if(aResourceId == R_FEEDS_OPTIONS_FEEDSACTIONS_SUBMENU)
+        {
+        if(iContainer &&
+           iContainer->iCurrentFolder &&
+           iContainer->iCurrentFolder->GetChildren().Count() > 0)
+            {        
+            if (!(item->GetType() == EFolder) && !iContainer->IsMarkedItemFolder())
+                {
+                // Update (only if feed has focus)
+                iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsUpdate, R_FEEDS_UPDATE);
+                }
+        
+            // Update All (only for non-empty views/folders)
+            if(iContainer->SearchForFeedL(iRootFolder))
+                {
+                iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsUpdateAll, R_FEEDS_UPDATE_ALL);    
+                }
+  
+        
+            // Send (only for non-empty views/folders)
+	    	iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsExport, R_OPTIONS_EXPORT_FEEDS);
+            }
+        
+        // Import Feeds
+		iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsImport, R_OPTIONS_IMPORT_FEEDS);
+
+        // Create Feed
+        iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsNewFeed, R_FEEDS_NEW_FEED);        
+        }
+    else if(aResourceId == R_FEEDS_OPTIONS_EDIT_SUBMENU)
+        {        
+        if (item != NULL)
+        	{
+        	TInt markedcount = (iContainer && iContainer->MarkedItems()) ? iContainer->MarkedItems()->Count() : 0;
+
+	        // "Edit Feed" or "Rename Folder" depending upon which has focus
+	        if (markedcount < 1)// don't allow edit/rename if feed(s)/folder(s) are marked
+                {
+                if (item->GetType() == EFolder)
+    	            {
+    	            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsRename, R_FLDR_RENAME);
+    	            }
+    	        else
+    	            {
+    	            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsEdit, R_FEEDS_EDIT);
+    	            }
+                }
+	            
+	        // Delete (only if editable item has focus)
+	        iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsDelete, R_FEEDS_DELETE);
+	            
+	        // move
+	        if ( iContainer &&
+	             iContainer->iCurrentFolder &&
+             iContainer->iCurrentFolder->GetChildren().Count() >= 2 )
+	            {
+	            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsMove, R_OPTIONS_ORG_MOVE);
+	            }
+	        
+	        // move to folder only if a feed has focus and there are folders available
+        if (!(item->GetType() == EFolder))
+	            {            
+                TInt folderCount = 0;
+                iContainer->CountFolderFolders(iContainer->iRootFolder, folderCount);
+                
+                if(iContainer && (folderCount> 0) && !iContainer->IsMarkedItemFolder())
+	                {   
+	                iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsMoveToFolder, R_OPTIONS_ORG_MOVE_TO_FOLDER);
+	                }            
+	            }
+        	}
+                
+        // Create Folder
+        iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EFeedsNewFolder, R_OPTIONS_ORG_NEW_FOLDER);
+        }
+    else if( (aResourceId == R_FEEDS_OPTIONS_MARKUNMARK_SUBMENU) || (aResourceId == R_FEEDS_FOLDER_VIEW_MARK_UNMARK_MENU ) )
+        {
+        // Mark (or unmark)
+        if(IsCurrentItemMarked())
+            {
+            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EAknCmdUnmark, R_OPTIONS_LIST_UNMARK_ONE);            
+            }
+        else
+            {
+            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EAknCmdMark, R_OPTIONS_LIST_MARK_ONE);  
+            }
+        
+        // Mark All
+        if (  iContainer && iContainer->iCurrentFolder &&
+                        iContainer->iCurrentFolder->GetChildren().Count() != iContainer->MarkedItems()->Count() )
+            {
+            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EAknMarkAll, R_OPTIONS_LIST_MARK_ALL);
+            }
+        
+        // Unmark ALL
+        if (AnyMarkedItems())
+            {
+            iApiProvider.FeedsClientUtilities().AddItemL(*aMenuPane, EAknUnmarkAll, R_OPTIONS_LIST_UNMARK_ALL);            
+            }
+        }
+    else if(aResourceId == R_FEEDS_OPTIONS_CLEAR_SUBMENU)
+        {
+        
+        
+        }
+    else if(aResourceId == R_FEEDS_FOLDER_MENU_PANE_CONTEXT_MENU) 
+            {
+            // move
+            if ( iContainer &&
+                    iContainer->iCurrentFolder &&
+                       iContainer->iCurrentFolder->GetChildren().Count() < 2 )
+                 {
+                    aMenuPane->SetItemDimmed(EFeedsMove,ETrue);
+                 }
+            aMenuPane->SetItemDimmed(EFeedsMoveToFolder,ETrue);
+
+            if (!(item->GetType() == EFolder))
+                {            
+                TInt folderCount = 0;
+                iContainer->CountFolderFolders(iContainer->iRootFolder, folderCount);
+                
+                if(iContainer && (folderCount> 0) && !iContainer->IsMarkedItemFolder())
+                    {   
+                    aMenuPane->SetItemDimmed(EFeedsMoveToFolder,EFalse);
+                    }            
+                }
+            else
+            	{
+            	aMenuPane->SetItemDimmed(EFeedsUpdate, ETrue);
+            	}
+            }
+    iApiProvider.FeedsClientUtilities().DynInitMenuPaneL(aResourceId, aMenuPane );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::UpdateCbaL
+//
+// Updates the options softkey to reflect the command set.
+// -----------------------------------------------------------------------------
+//
+void CFeedsFolderView::UpdateCbaL(TInt aCommandSet)
+    {
+    if (Cba())
+        {
+        Cba()->SetCommandSetL(aCommandSet);
+        Cba()->DrawDeferred();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::RootFolderChangedL
+//
+// Called to notify the view the that root folder has changed.
+// -----------------------------------------------------------------------------
+//
+void CFeedsFolderView::RootFolderChangedL(const CFeedsEntity& aRootFolder)
+    {
+    iRootFolder = &aRootFolder;
+    
+    if (iContainer != NULL)
+        {        
+        iContainer->RootFolderChangedL(aRootFolder);
+        iContainer->UpdateToolbarButtonsState();        
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::SetCurrentFolder
+//
+// Changes the current folder.
+// -----------------------------------------------------------------------------
+//
+void CFeedsFolderView::SetCurrentFolder(const CFeedsEntity& aFolder, TBool aResetSelection)
+    {
+    if (iContainer != NULL)
+        {        
+        iContainer->SetCurrentFolder(&aFolder, aResetSelection);
+        }
+        
+    if (aResetSelection)
+        {
+        iInitialItem = 0;
+        }
+    }
+    
+// ---------------------------------------------------------------------------
+// CFeedsFolderView::CommandSetResourceIdL
+// ---------------------------------------------------------------------------
+TInt CFeedsFolderView::CommandSetResourceIdL()
+    {
+    // It is never called, but this function have to be implemented
+    return KWmlEmptyResourceId;
+    }
+    
+// ---------------------------------------------------------
+// CFeedsFolderView::HandleClientRectChange
+// ---------------------------------------------------------
+//
+void CFeedsFolderView::HandleClientRectChange()
+	{
+	if( iContainer )
+	    {
+        iContainer->SetRect( ClientRect() );
+        }
+	}
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::UnreadCountChangedL
+//
+// Calculate the unread count based on delta, return the calculated value.
+// -----------------------------------------------------------------------------
+//
+TInt CFeedsFolderView::UnreadCountChangedL( TInt aUnreadCountDelta )
+{
+    TInt unreadCount = 0;
+
+    if (iContainer != NULL)
+        {        
+        unreadCount = iContainer->UnreadCountChangedL( aUnreadCountDelta );
+        }
+        
+    return unreadCount;
+}
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::SetUnreadCount
+//
+// Set the unread count.
+// -----------------------------------------------------------------------------
+//
+void CFeedsFolderView::SetUnreadCountL( TInt aUnreadCount )
+{
+    if (iContainer != NULL)
+        {        
+        iContainer->SetUnreadCountL( aUnreadCount );
+        }
+}
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::AnyFoldersMarked
+//
+// returns ETrue if any Feeds folders are marked otherwise returns EFalse
+// -----------------------------------------------------------------------------
+//
+TBool CFeedsFolderView::AnyFoldersMarked()
+{
+    const CArrayFix<TInt>*  markedIndexes = iContainer->MarkedItems();
+    const CFeedsEntity*      markedItem = NULL;
+    TInt i;
+
+    for ( i = 0; i < markedIndexes->Count(); i++ )
+        {
+        // Get the item.
+        markedItem = iContainer->iCurrentFolder->GetChildren()[(*markedIndexes)[i]];
+        if ( markedItem != NULL && markedItem->GetType() == EFolder )
+            {  
+            return ETrue;
+            }
+        }
+        
+    return EFalse;        
+}
+
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::AnyMarkedItems
+//
+// returns ETrue anything is marked otherwise returns EFalse
+// -----------------------------------------------------------------------------
+//
+TBool CFeedsFolderView::AnyMarkedItems()
+{
+    const CArrayFix<TInt>*  markedIndexes = iContainer->MarkedItems();
+
+    if (markedIndexes->Count() > 0 )
+        {
+        return ETrue;
+        }
+    else
+        {
+        return EFalse; 
+        }
+}
+
+// -----------------------------------------------------------------------------
+// CFeedsFolderView::IsItemMarked
+//
+// returns ETrue if item is marked, otherwise returns EFalse
+// -----------------------------------------------------------------------------
+//
+
+TBool CFeedsFolderView::IsCurrentItemMarked()
+{
+    // Get the current item's index
+    TInt currIndex = iContainer->CurrentItemIndex();
+    const CArrayFix<TInt>*  markedIndexes = iContainer->MarkedItems();
+
+    if (markedIndexes->Count() > 0)
+        {
+        TKeyArrayFix key(0, ECmpTInt);
+        TInt pos = 0;
+        TInt retVal = markedIndexes->Find(currIndex,key,pos);
+        if( retVal == KErrNone)
+            {
+            return ETrue;
+            }
+        }
+    return EFalse;
+}