--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_pub/buttons_api/inc/Eikbgfty.h Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,174 @@
+/*
+* Copyright (c) 2002-2007 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: Button group factory interface definitions.
+*
+*/
+
+
+#ifndef __EIKBGFTY_H__
+#define __EIKBGFTY_H__
+
+#include <eikbtgpc.h>
+#include <coemain.h>
+
+/**
+ * The EikButtonGroupFactory class provides an interface to the button group factory.
+ *
+ * @lib eikcoctl.lib
+ * @since S60 0.9
+ */
+class EikButtonGroupFactory
+ {
+public:
+ /**
+ * Defines information required to create a button group.
+ *
+ * @lib eikcoctl.lib
+ */
+ class TCreationData
+ {
+ public:
+ /**
+ * Constructor taking arguments required to create a button group.
+ *
+ * @param aUse The type of button group container.
+ * @param aCommandObserver A command observer to be notified of commands on the container.
+ * @param aResourceId A resource containing descriptions of buttons in the group.
+ * This can be NULL if buttons are to be added dynamically.
+ * @param aParentWg Parent window group.
+ * @param aFlags The button group's flags.
+ * @param aOrientation The button group's containers orientation. You need specify this
+ * only for devices that can layout their buttons either horizontally
+ * or vertically.
+ */
+ IMPORT_C TCreationData(
+ CEikButtonGroupContainer::TUse aUse,
+ MEikCommandObserver* aCommandObserver,
+ TInt aResourceId,
+ RWindowGroup* aParentWg,
+ TUint aFlags,
+ CEikButtonGroupContainer::TOrientation aOrientation);
+ public:
+ /**
+ * Container use type.
+ *
+ * This member is used to specify to the system the general type of the button group that
+ * is required. The system then creates the appropriate button group for the specified type.
+ */
+ CEikButtonGroupContainer::TUse iUse;
+
+ /**
+ * The command observer to be notified of commands on the container.
+ * Not owned.
+ */
+ MEikCommandObserver* iCommandObserver;
+
+ /**
+ * A resource containing descriptions of buttons in the group.
+ */
+ TInt iResourceId;
+
+ /**
+ * Parent window group.
+ * Not owned.
+ */
+ RWindowGroup* iParentWg;
+
+ /**
+ * Flags for the button group.
+ */
+ TUint iFlags;
+
+ /**
+ * Orientation of the new button group.
+ */
+ CEikButtonGroupContainer::TOrientation iOrientation;
+ };
+
+public:
+ /**
+ * Creates a button group of given type if it exists in any registered button group
+ * factory function.
+ *
+ * @param aButtonGroupType The type of button group to be created.
+ * @param aCreationData Required extra information.
+ * @param aAddToButtonGroupStack Whether to add the button group to the button group stack.
+ * @return A handle to the button group interface the constructed object implements. NULL
+ * if aButtonGroupType doesn't exist in any registered button group factory function.
+ */
+ static MEikButtonGroup* CreateButtonGroupByTypeL(
+ TInt aButtonGroupType,
+ TCreationData& aCreationData,
+ TBool& aAddToButtonGroupStack);
+ };
+
+/**
+ * Pointer to a button group factory function is defined as a pointer to a MEikButtonGroup object.
+ */
+typedef MEikButtonGroup* (*TCreateButtonGroupByTypeFunction)(
+ TInt,
+ EikButtonGroupFactory::TCreationData&,
+ TBool&);
+
+/**
+ * Array storing the button group factory functions.
+ *
+ * The CEikButtonGroupFactoryArray class actually stores the button group factory functions
+ * which are registered. It also provides facility to add and remove these functions from
+ * the storage array. Notably this class is CCoeStatic derived, allowing application wide
+ * access.
+ *
+ * @lib eikcoctl.lib
+ * @since S60 0.9
+ */
+NONSHARABLE_CLASS(CEikButtonGroupFactoryArray) : public CCoeStatic
+ {
+public:
+ /**
+ * Adds a button group factory function to the array.
+ *
+ * @param aCreateButtonGroupByTypeFunction The factory function to be added.
+ */
+ IMPORT_C static void AppendFactoryFunctionL(
+ TCreateButtonGroupByTypeFunction aCreateButtonGroupByTypeFunction);
+
+ /**
+ * Removes a button group factory function from the array.
+ *
+ * @param aCreateButtonGroupByTypeFunction The factory function to be removed.
+ */
+ IMPORT_C static void RemoveFactoryFunction(
+ TCreateButtonGroupByTypeFunction aCreateButtonGroupByTypeFunction);
+
+ /**
+ * Returns the array of pointers to the registered button group factory creation methods.
+ *
+ * @return The array of button group factory functions.
+ */
+ static CArrayFixFlat<TCreateButtonGroupByTypeFunction>* ButtonGroupFactoryFuncArray();
+
+ /**
+ * Destructor.
+ */
+ ~CEikButtonGroupFactoryArray();
+
+private:
+ inline CEikButtonGroupFactoryArray();
+ inline static CEikButtonGroupFactoryArray* Self();
+
+private: // data
+ CArrayFixFlat<TCreateButtonGroupByTypeFunction>* iButtonGroupFactoryFuncArray;
+ };
+
+#endif // __EIKBGFTY_H__