browserui/browser/FavouritesInc/BrowserFavouritesSelectionState.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:31:04 +0100
branchRCL_3
changeset 65 8e6fa1719340
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201032 Kit: 201035

/*
* Copyright (c) 2002 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: 
*      Declaration of class CWmlBrowserFavouritesSelectionState.
*      
*
*/


#ifndef BROWSER_FAVOURITES_SELECTION_STATE_H
#define BROWSER_FAVOURITES_SELECTION_STATE_H

//  INCLUDES

#include <e32def.h>

// CLASS DECLARATION

/**
* Selection state in the Favourites Views.
*/
struct TBrowserFavouritesSelectionState
    {
    public:     // types

        /**
        * Flags for storing listbox highlighted and marked item state. They
        * have has slightly different meaning for the two flags. For marking,
        * most of the flags mean that the marking *includes* that; for the
        * current, most of the flags mean that the current *is* that.
        * For example, EHomepage in the marking flags means "Marking includes
        * Homepage", while in current flag means "Current is the Homepage".
        */
        enum
            {
            ENone = 0x0,            ///< No items.
            EAny = 0x1,             ///< At least one (marking only).
            EAll = 0x2,             ///< All (marking only).
            ECurrent = 0x4,         ///< Current (marking only).
            EHomepage = 0x8,        ///< Homepage.
            EStartPage = 0x10,      ///< Start Page.
            ELastVisited = 0x20,    ///< Last Visited Page.
            EItem = 0x40,           ///< Any kind of item (incl. specials).
            EPlainItem = 0x80,      ///< Plain (non-special) item.
            EFolder = 0x100         ///< Folder.
            };

    public:     // constructor

        /**
        * Constructor. Initialize with 0.
        */
        inline TBrowserFavouritesSelectionState();

    public:     // new methods

        /**
        * Return ETrue if listbox is empty.
        * @return ETrue if listbox is empty.
        */
        inline TBool IsEmpty() const;

        /**
        * Return ETrue if any item is marked.
        * @return ETrue if any item is marked.
        */
        inline TBool AnyMarked() const;

        /**
        * Return ETrue if the current item is marked.
        * @return ETrue if the current item is marked.
        */
        inline TBool CurrentIsMarked() const;

        /**
        * Return ETrue if the all items are marked.
        * @return ETrue if the all items are marked.
        */
        inline TBool AllIsMarked() const;

        /**
        * Return ETrue if the no items are marked.
        * @return ETrue if the no items are marked.
        */
        inline TBool NoneIsMarked() const;

        /**
        * Return ETrue if the no items are marked.
        * @return ETrue if the no items are marked.
        */
        inline TBool NoItemsMarked() const;

        /**
        * Return ETrue if the no folders are marked.
        * @return ETrue if the no folders are marked.
        */
        inline TBool NoFoldersMarked() const;

        /**
        * Count marked items (items + folders).
        * @return Count of marked items (items + folders).
        */
        inline TInt MarkedCount() const;

        /**
        * Return ETrue if the current item is item.
        * @return ETrue if the current item is item.
        */
        inline TBool CurrentIsItem() const;

        /**
        * Return ETrue if the current item is folder.
        * @return ETrue if the current item is folder.
        */
        inline TBool CurrentIsFolder() const;

        /**
        * Return ETrue if selection allows deleting:
        *   - Marked items contain something deletable, or
        *   - No marking, highlighted item is deletable.
        * @return ETrue if selection allows deleting.
        */
        inline TBool AnyDeletable() const;

        /**
        * Return ETrue if selection contains at least one non-special item:
        *   - Marked items contain one non-special item, or
        *   - No marking, highlighted item is non-special item.
        * @return ETrue if selection allows deleting.
        */
        inline TBool AnyPlainItem() const;

        /**
        * Return ETrue if current item is Homepage, Start Page or Last Visited.
        * @return ETrue if current is Homepage, Start Page or Last Visited.
        */
        inline TBool CurrentIsSpecial() const;

        /**
        * Return ETrue if Homepage, Start Page and/or Last Visited is marked.
        * @return ETrue if Homepage, Start Page and/or Last Visited is marked.
        */
        inline TBool AnyMarkedSpecial() const;

		/**
        * Return ETrue if the current item is start page.
        * @return ETrue if the current item is start page.
        */
        inline TBool CurrentIsStartPage() const;

    public:     // data

        TInt iCurrentFlags;         ///< Flags showing the highlighted one.
        TInt iMarkFlags;            ///< Flags showing marking state.
        TInt iMarkedItemCount;      ///< Count of marked items.
        TInt iMarkedFolderCount;    ///< Count of marked folders.
        TInt iVisibleItemCount;     ///< Count of visible items (not folders).
        TInt iVisibleFolderCount;     ///< Count of visible folders (not items).
    };

#include "BrowserFavouritesSelectionState.inl"

#endif

// End of File