idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickercontrol.h
branchRCL_3
changeset 34 5456b4e8b3a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickercontrol.h	Wed Sep 01 12:32:46 2010 +0100
@@ -0,0 +1,190 @@
+/*
+* Copyright (c) 2002-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:  Text scrolling functionality.
+*
+*/
+
+
+#ifndef XNNEWSTICKERCONTROL_H
+#define XNNEWSTICKERCONTROL_H
+
+//  INCLUDES
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CXnNewstickerAdapter;
+
+// CLASS DECLARATION
+
+/**
+* @ingroup group_xnnewstickerfactory
+* 
+*  Newsticker control for XUIKON text scrolling functionality.
+*
+*  @lib xn3newstickerfactory.dll
+*  @since Series 60 3.2
+*/
+class CXnNewstickerControl : public CBase
+    {
+    public:
+	
+        /**
+         * Two-phased constructor.
+         * @param aAdapter Parent control
+         * @param aLoops Max number of loops to be executed
+         * @param aScrollAmount The amount of pixels scrolled per iteration
+         * @param aScrollDelay The interval between iterations
+         * @param aStartDelay The delay before the animation starts
+         * @return Pointer to this.
+         */
+        static CXnNewstickerControl* NewL( CXnNewstickerAdapter* aAdapter );
+
+        // Routed from MXnNewstickerInterface.
+
+        /**
+         * Append new title to the end of the title list.
+         * @param aTitle The new title to add.
+         */
+        void AppendTitleL( const TDesC& aTitle );
+
+        /**
+         * Insert new title to the end of the title list.
+         * @param aTitle The new title to add.
+         * @param aIndex The place to add the title.
+         */
+        void InsertTitleL( const TDesC& aTitle, TInt aIndex );
+
+        /**
+         * Update title in the title list.
+         * @param aTitle The new title to add.
+         * @param aIndex The place to add the title.
+         */
+        void UpdateTitleL( const TDesC& aTitle, TInt aIndex );
+
+        /**
+         * Delete the title.
+         * @param aIndex The title index to delete.
+         */
+        void DeleteTitleL( TInt aIndex );
+
+    	/**
+    	 * Returns index of the currently selected title.
+    	 * @return The index of the current title.
+    	 */
+        TInt CurrentTitleIndex() const;
+
+    	/**
+    	 * Return the title of the given index.
+    	 * @param aIndex The index to return the title.
+    	 * @return The title of the given index.
+    	 */
+        const TDesC& Title(TInt aIndex) const;
+		
+		/**
+		 * Returns last index from iTitleTexts
+		 * Which is not empty string
+		 */
+        TInt LastIndexWithContent() const;
+        
+        /**
+         * Delete all titles.
+         */
+        void ClearTitles();
+
+        /**
+         * Return the number of titles in the list.
+         * @return The number of titles in the list.
+         */
+        TInt TitleCount() const;
+        
+        /** 
+        * Destructor
+        */
+        virtual ~CXnNewstickerControl();
+
+	    /**
+        * Selects title to be shown
+        */
+        const TDesC& CurrentTitle() const;
+
+        /**
+        * Selects current title to display
+        */
+        TInt SelectTitle();
+        
+        /**
+        * Selects next title to display
+        */
+        TBool SelectNextTitle();
+
+        /**
+        * Checks is there any visible titles in array
+        */
+        TBool IsVisibleTitles() const;
+        
+        /**
+         * Sets scroll looping
+         */
+        void SetScrollLooping( TBool aLooping );
+
+        /**
+         * Peeks next title, return loop status in aEndOfLoop.         
+         */
+        TPtrC PeekNextTitle( TBool& aEndOfLoop ) const;
+        
+    private: 
+
+        CXnNewstickerControl(CXnNewstickerAdapter* aAdapter);
+
+        void ConstructL();
+        
+        /**
+         * Get the index of the next title that has content
+         * 
+         * @param aStartSearch The index where to start search
+         * @param aBackwards Search backwards
+         * 
+         * @return The next index that has content or -1 if nothing was found 
+         */
+        TInt GetNextTitleWithContent( TInt aStartSearch, TBool aBackwards = EFalse ) const;
+        
+    private:    // Data
+        
+        /**
+        * The array for title texts
+        * owned
+        */
+        RPointerArray<HBufC>        iTitleTexts;
+        
+        /**
+        * The index of the title which is selected if user activates the
+        * control.
+        */
+        TInt                        iCurrentTitleIndex;
+        
+        /**
+         * Parent control adapter
+         * Not own.
+         */	            
+        CXnNewstickerAdapter*       iAdapter;
+        
+        /**
+        * is scroll looping activated
+        */ 
+        TBool                    iScrollLooping;
+    };
+
+#endif // XNNEWSTICKERCONTROL_H
+
+// End of File