--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lafagnosticuifoundation/cone/inc/coecontrolarray.h Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,183 @@
+// Copyright (c) 2004-2009 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:
+//
+
+
+#ifndef __COECONTROLARRAY_H__
+#define __COECONTROLARRAY_H__
+
+#include <e32base.h> // class CBase
+
+class CCoeControl;
+
+/** Default id for controls that have no associated id. This is equal
+to KErrNotFound
+@publishedAll
+@released
+*/
+const TInt KCoeNoControlId = KErrNotFound;
+
+/** Class that encapsulates a control and the identifier for that control.
+
+Controls in a CCoeControlArray can be associated with an id. This class encapsulates the control and its id.
+
+@publishedAll
+@released */
+class TCoeControlWithId
+ {
+public:
+ TCoeControlWithId(TInt aControlId, CCoeControl* aControl = NULL);
+public:
+ /** The control */
+ CCoeControl* iControl;
+ /** The id of the control */
+ TInt iId;
+ };
+
+/** Class that represents an array of controls.
+
+The CCoeControlArray class is used to store the child controls of a container control.
+The method CCoeControl::InitComponentArrayL() must be used to create the array and the method
+CCoeControlArray& CCoeControl::Components() can be used to get this array.
+
+@publishedAll
+@released */
+class CCoeControlArray : public CBase
+ {
+public:
+ /** This class is an iterator for the CCoeControlArray class.
+ @publishedAll
+ @released
+ */
+ class TCursor // robust iterator
+ {
+ public:
+ template<typename T> T* Control();
+ template<typename T> const T* Control() const;
+ IMPORT_C TBool Prev();
+ IMPORT_C TBool Next();
+ IMPORT_C TBool IsValid() const;
+
+ IMPORT_C TBool operator==(const TCursor& aCursor) const;
+ IMPORT_C TBool operator!=(const TCursor& aCursor) const;
+ public:
+ TCursor(const CCoeControlArray& aArray, TInt aIndex);
+ TInt Index() const;
+ private:
+ IMPORT_C CCoeControl* Ctrl() const;
+ void UpdateMemento() const;
+ void UpdateIndex() const;
+ private:
+ const CCoeControlArray* iArray;
+ mutable TInt iIndex;
+ mutable TCoeControlWithId iMemento;
+ };
+public:
+ IMPORT_C static CCoeControlArray* NewL(CCoeControl& aOwner);
+ IMPORT_C ~CCoeControlArray();
+ IMPORT_C TInt Count() const;
+ IMPORT_C void Reset();
+ IMPORT_C void ResetAndDestroy();
+ IMPORT_C void SortById();
+
+ IMPORT_C TBool ControlsOwnedExternally() const;
+ IMPORT_C void SetControlsOwnedExternally(TBool aOwnedExternally);
+
+ IMPORT_C TBool IsArrayLocked() const;
+ IMPORT_C void SetArrayLocked();
+
+ template<typename T> T* ControlById(TInt aControlId);
+ template<typename T> const T* ControlById(TInt aControlId) const;
+
+ IMPORT_C TCursor Begin() const;
+ IMPORT_C TCursor End() const;
+ IMPORT_C TCursor Find(const CCoeControl* aControl) const;
+ IMPORT_C TCursor Find(TInt aControlId) const;
+
+ IMPORT_C TCursor AppendLC(CCoeControl* aControl, TInt aControlId = KCoeNoControlId);
+ IMPORT_C TCursor InsertAfterLC(TInt aInsertAfterId, CCoeControl* aControl, TInt aControlId = KCoeNoControlId);
+ IMPORT_C TCursor InsertLC(TCursor& aInsertAt, CCoeControl* aControl, TInt aControlId = KCoeNoControlId);
+
+ IMPORT_C TInt Remove(const CCoeControl* aControl);
+ IMPORT_C CCoeControl* Remove(TCursor aRemoveAt);
+ IMPORT_C CCoeControl* RemoveById(TInt aControlId);
+public:
+ IMPORT_C TInt Replace(CCoeControl* aOriginalControl, CCoeControl* aNewControl);
+
+public: // internal use only
+ IMPORT_C TCoeControlWithId At(TInt aIndex);
+ IMPORT_C const TCoeControlWithId At(TInt aIndex) const;
+ IMPORT_C TInt Id(const CCoeControl& aControl) const;
+ IMPORT_C void Sort(TLinearOrder< TCoeControlWithId > aOrder);
+public:
+ /** Defines the possible events related to a change to the contents
+ of the array. */
+ enum TEvent
+ {
+ /** A control has been added to the array */
+ EControlAdded,
+ /** A control has been removed from the array */
+ EControlRemoved
+ };
+
+private:
+ IMPORT_C CCoeControlArray(CCoeControl& aOwner);
+ TInt IndexById(TInt aControlId) const;
+ IMPORT_C CCoeControl* CtrlById(TInt aControlId) const;
+
+private:
+ CCoeControl& iOwner;
+ TInt iFlags;
+ RArray<TCoeControlWithId> iControls;
+ };
+
+/** Gets the control.
+@return The control at the current cursor position.
+*/
+template<typename T>
+T* CCoeControlArray::TCursor::Control()
+ {
+ return static_cast<T*>(Ctrl());
+ }
+
+/** Gets the control.
+@return The control at the current cursor position.
+*/
+template<typename T>
+const T* CCoeControlArray::TCursor::Control() const
+ {
+ return static_cast<T*>(Ctrl());
+ }
+
+/** Gets the control with the given id.
+@param aControlId The id of the desired control.
+@return The control with the given id.
+*/
+template<typename T>
+T* CCoeControlArray::ControlById(TInt aControlId)
+ {
+ return static_cast<T*>(CtrlById(aControlId));
+ }
+
+/** Gets the control with the given id.
+@param aControlId The id of the desired control.
+@return The control with the given id.
+*/
+template<typename T>
+const T* CCoeControlArray::ControlById(TInt aControlId) const
+ {
+ return static_cast<T*>(CtrlById(aControlId));
+ }
+
+#endif //__COECONTROLARRAY_H__