vtuis/videotelui/inc/compman/tvtuiblocklists.h
branchRCL_3
changeset 25 779871d1e4f4
parent 0 ed9695c8bcbe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/compman/tvtuiblocklists.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,217 @@
+/*
+* Copyright (c) 2006 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:  VT UI component state definition.
+*
+*/
+
+
+#ifndef T_VTUIBLOCKLISTS_H
+#define T_VTUIBLOCKLISTS_H
+
+#include <e32base.h>
+
+#include "mvtuicomponent.h"
+
+/**
+ *  CVtUiBlockListIterator
+ *
+ *  Class for iterating through component's block list.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiBlockListIterator ) : public CBase
+    {
+
+public: // public abstract methods
+
+    /**
+     * Returns ETrue if there is more component Ids left in the iterator.
+     *
+     * @return ETrue if there is more Ids left, EFalse otherwise.
+     */
+    virtual TBool HasNext() const = 0;
+
+    /**
+     * Returns next component id.
+     *
+     * @return Next component Id.
+     */
+    virtual MVtUiComponent::TComponentId Next() = 0;
+
+    };
+
+/**
+ *  TVtUiBlockList
+ *
+ *  Base class for component block lists.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiBlockList )
+    {
+
+public: // public methods
+
+    /**
+     * Destructor.
+     */
+    virtual ~TVtUiBlockList();
+
+public: // public abstract methods
+
+    /**
+     * Returns ETrue if block list is empty.
+     *
+     * @return ETrue if this block list is empty, EFalse otherwise.
+     */
+    virtual TBool IsEmpty() const = 0;
+
+    /**
+     * Returns ETrue if block list contains given component id.
+     *
+     * @param aId Component Id to check.
+     * @return ETrue if this block list contains given component Id, EFalse
+     * otherwise.
+     */
+    virtual TBool Contains( MVtUiComponent::TComponentId aId ) const = 0;
+
+    /**
+     * Merges this block list with given block list.
+     *
+     * @param aBlockList List to merge into this block list.
+     */
+    virtual void Union( const TVtUiBlockList& aBlockList ) = 0;
+
+    /**
+     * Returns new instance of block list iterator. Instance is owned by the
+     * caller, but it is also pushed to cleanupstack.
+     *
+     * @return Instance to block list iterator. Iterator is for this block
+     * list instance.
+     */
+    virtual CVtUiBlockListIterator* IteratorLC() const = 0;
+
+protected: // protected methods
+
+    /**
+     * Constructor.
+     */
+    TVtUiBlockList();
+
+    };
+
+/**
+ *  TVtUiBlockListBitField
+ *
+ *  Component block list in which component IDs are defined as bits (i.e.
+ *  only single bit is set per ID).
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiBlockListBitField ) : public TVtUiBlockList
+    {
+
+public: // public methods
+
+    /**
+     * Default construct, initialized block list as empty.
+     */
+    TVtUiBlockListBitField();
+
+    /**
+     * Constructor that initializes block list.
+     *
+     * @param aBlockMask Component Ids that will be added to block list.
+     */
+    TVtUiBlockListBitField( TUint aBlockMask );
+
+public: // from
+
+    /**
+     * @see TVtUiBlockList::IsEmpty
+     */
+    TBool IsEmpty() const;
+
+    /**
+     * @see TVtUiBlockList::Contains
+     */
+    TBool Contains( MVtUiComponent::TComponentId aId ) const;
+
+    /**
+     * @see TVtUiBlockList::Union
+     */
+    void Union( const TVtUiBlockList& aBlockList );
+
+    /**
+     * @see TVtUiBlockList::IteratorLC
+     */
+    CVtUiBlockListIterator* IteratorLC() const;
+
+private: // inner classes
+
+    /**
+     * CVtUiBListIteratorBF
+     *
+     * @since S60 v3.2
+     */
+    class CVtUiBListIteratorBF : public CVtUiBlockListIterator
+        {
+
+    public: // public methods
+
+        /**
+         * Static constructor
+         *
+         * @param aBlockMask Components Ids.
+         */
+        static CVtUiBListIteratorBF* NewLC( const TUint& aBlockMask );
+
+    private: // private methods
+
+        /**
+         * Constructor
+         */
+        CVtUiBListIteratorBF( const TUint& aBlockMask );
+
+    private: // from CVtUiBlockListIterator
+
+        /**
+         * @see CVtUiBlockListIterator::HasNext
+         */
+        TBool HasNext() const;
+
+        /**
+         * @see CVtUiBlockListIterator::Next
+         */
+        MVtUiComponent::TComponentId Next();
+
+    private:  // data
+
+        // Blockmask from TVtUiBlockListBitField
+        const TUint iBlockMask;
+
+        // Current id
+        TUint iCurrent;
+
+        };
+
+private: // data
+
+    // Block list as bit field, this requires that component ids are defined
+    // as bitfields.
+    TUint iBlockMask;
+
+    };
+
+#endif // T_VTUIBLOCKLISTS_H