--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/EikStd/coctlinc/aknitemactionmenuregister.h Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,367 @@
+/*
+* Copyright (c) 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: Item action menu register.
+*
+*/
+
+#ifndef C_AKNITEMACTIONMENUREGISTER_H
+#define C_AKNITEMACTIONMENUREGISTER_H
+
+#include <coemain.h>
+
+class MAknCollection;
+class MAknCollectionObserver;
+class CAknItemActionMenuRegisterArray;
+class CAknItemActionMenu;
+class MObjectProvider;
+
+/**
+ * Item action menu register.
+ *
+ * @lib eikcoctl
+ * @since S60 v5.2
+ */
+NONSHARABLE_CLASS( AknItemActionMenuRegister ) : public CCoeStatic
+ {
+
+public:
+
+ /**
+ * Sets constructing menu bar owner. This method should be called
+ * from constructing components that have menu bar (e.g. CAknView,
+ * CAknDialog). This way the item action menu can be linked
+ * to correct menu bar.
+ *
+ * @internal
+ * @param aMenuBarOwner Pointer to constructing menu bar owner.
+ */
+ IMPORT_C static void SetConstructingMenuBarOwnerL(
+ MObjectProvider* aMenuBarOwner );
+
+ /**
+ * Sets a menu bar owner that overrides all other possible menubar
+ * providers. This menu bar owner is meant to be temporary and should be
+ * set by components that:
+ * -May contain a listbox.
+ * -Have their own menubar.
+ *
+ * When such a component is destroyed it must call this method again with
+ * NULL paramater to unregister the overriding menu bar owner.
+ *
+ * @internal
+ * @param aMenuBarOwner Pointer to overriding menu bar owner.
+ * @param aFlags Flags, not currently used.
+ */
+ IMPORT_C static void SetOverridingMenuBarOwnerL(
+ MObjectProvider* aMenuBarOwner, TUint aFlags = 0 );
+
+ /**
+ * Registers a collection.
+ *
+ * @internal
+ * @param aCollection Collection to be registered.
+ * @return Item action menu the collection was registered to.
+ */
+ static CAknItemActionMenu* RegisterCollectionL(
+ MAknCollection& aCollection );
+
+ /**
+ * Registers item action menu to aMenuBar.
+ *
+ * @internal
+ * @param aMenuBar Calling menu bar.
+ */
+ static void RegisterMenuBarL( CEikMenuBar& aMenuBar );
+
+ /**
+ * Unregisters menu bar.
+ *
+ * @internal
+ * @param aMenuBar Calling menu bar.
+ */
+ static void UnregisterMenuBar( CEikMenuBar& aMenuBar );
+
+ /**
+ * Registers aItemActionMenu to menu bar.
+ *
+ * @internal
+ * @param aItemActionMenu Calling item action menu.
+ */
+ static void RegisterItemActionMenuL( CAknItemActionMenu& aItemActionMenu );
+
+ /**
+ * Unregisters item action menu.
+ *
+ * @internal
+ * @param aItemActionMenu Calling item action menu.
+ */
+ static void UnregisterItemActionMenu(
+ CAknItemActionMenu& aItemActionMenu );
+
+ /**
+ * Registers collection observer.
+ *
+ * @internal
+ * @param aObserver Collection observer.
+ */
+ static void RegisterCollectionObserverL(
+ MAknCollectionObserver& aObserver );
+
+ /**
+ * Unregisters collection observer.
+ *
+ * @internal
+ * @param aObserver Collection observer.
+ */
+ static void UnregisterCollectionObserver(
+ MAknCollectionObserver& aObserver );
+
+ /**
+ * Destructor.
+ */
+ virtual ~AknItemActionMenuRegister();
+
+private:
+
+ /**
+ * C++ constructor.
+ */
+ AknItemActionMenuRegister();
+
+ /**
+ * Symbian second-phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Returns ETrue if application is single click compatible.
+ *
+ * @return ETrue if application is single click compatible.
+ */
+ static TBool AppUiSingleClickCompatible();
+
+ /**
+ * Provides register instance.
+ *
+ * @return Item action menu register instance.
+ */
+ static AknItemActionMenuRegister* Instance();
+
+ /**
+ * Registers collection.
+ *
+ * @param aCollection State to be registered.
+ * @return Item action menu the collection was registered to.
+ */
+ CAknItemActionMenu* DoRegisterCollectionL(
+ MAknCollection& aCollection );
+
+ /**
+ * Registers item action menu to aMenuBar.
+ *
+ * @param aMenuBar Calling menu bar.
+ */
+ void DoRegisterMenuBarL( CEikMenuBar& aMenuBar );
+
+ /**
+ * Unregisters menu bar.
+ *
+ * @param aMenuBar Calling menu bar.
+ */
+ void DoUnregisterMenuBar( CEikMenuBar& aMenuBar );
+
+ /**
+ * Registers aItemActionMenu to menu bar.
+ *
+ * @param aItemActionMenu Calling item action menu.
+ */
+ void DoRegisterItemActionMenuL( CAknItemActionMenu& aItemActionMenu );
+
+ /**
+ * Unregisters item action menu.
+ *
+ * @param aItemActionMenu Calling item action menu.
+ */
+ void DoUnregisterItemActionMenu( CAknItemActionMenu& aItemActionMenu );
+
+ /**
+ * Registers collection observer.
+ *
+ * @param aObserver Collection observer.
+ */
+ void DoRegisterCollectionObserverL(
+ MAknCollectionObserver& aObserver );
+
+ /**
+ * Unregisters collection observer.
+ *
+ * @param aObserver Collection observer.
+ */
+ void DoUnregisterCollectionObserver( MAknCollectionObserver& aObserver );
+
+ /**
+ * Returns the pointer to visible dialog menu bar.
+ *
+ * @param aAppUi AppUi.
+ * @return Visible dialog menu bar.
+ */
+ CEikMenuBar* DialogMenuBar( CAknAppUi* aAppUi );
+
+ /**
+ * Returns the pointer to active view menu bar.
+ *
+ * @param aAppUi AppUi.
+ * @return Active view menu bar.
+ */
+ CEikMenuBar* ViewMenuBar( CAknAppUi* aAppUi );
+
+ /**
+ * Returns the pointer to constructing object menu bar.
+ *
+ * @return Constructing object menu bar.
+ */
+ CEikMenuBar* ConstructingObjectMenuBar();
+
+ /**
+ * Returns the pointer to overriding object menu bar.
+ *
+ * @return Overriding object menu bar.
+ */
+ CEikMenuBar* OverridingObjectMenuBar();
+
+ /**
+ * Registers collection to item action menu.
+ * Creates and sets item action menu to menu bar
+ * if one is not found. If menu bar is not found, item action menu
+ * is stored to iUnregisteredMenus for later usage.
+ *
+ * @param aMenuBar Menu bar
+ * @param aCollection Collection to be registered.
+ * @return Pointer to item action menu collection was registered to.
+ */
+ CAknItemActionMenu* RegisterStateToItemActionMenuL(
+ CEikMenuBar* aMenuBar,
+ MAknCollection& aCollection );
+
+ /**
+ * Provides pointer to the current menu bar.
+ *
+ * @internal
+ * @return Pointer to menu bar.
+ */
+ CEikMenuBar* FindCurrentMenuBarL();
+
+ /**
+ * Adds register entry.
+ *
+ * @param aMenuBar Menu bar.
+ * @param aItemActionMenu Item action menu.
+ */
+ void AddRegisterEntryL(
+ CEikMenuBar& aMenuBar, CAknItemActionMenu& aItemActionMenu );
+
+ /**
+ * Adds observers with aMenuBar to item action menu.
+ *
+ * @param aMenuBar Menu bar.
+ * @param aItemActionMenu Item action menu.
+ */
+ void AddObserversToItemActionMenuL(
+ CEikMenuBar* aMenuBar, CAknItemActionMenu& aItemActionMenu );
+
+ /**
+ * Creates register instance.
+ *
+ * @return Item action menu register instance.
+ */
+ static AknItemActionMenuRegister* CreateInstanceL();
+private: // data
+
+ /**
+ * Data class for unregistered menus.
+ *
+ * @lib eikcoctl
+ * @since S60 v5.2
+ */
+ class TAknUnregisteredMenuData
+ {
+ public:
+ /**
+ * Pointer to unregistered menu owner.
+ */
+ MObjectProvider* iOwner;
+
+ /**
+ * Pointer to unregistered menu.
+ */
+ CAknItemActionMenu* iMenu;
+ };
+
+ /**
+ * Data class for unregistered observers.
+ */
+ class TAknUnregisteredObserverData
+ {
+
+ public:
+ /**
+ * C++ constructor.
+ */
+ TAknUnregisteredObserverData(
+ CEikMenuBar* aMenuBar,
+ MAknCollectionObserver& aObserver );
+
+ public:
+ /**
+ * Reference to menu bar.
+ */
+ CEikMenuBar* iMenuBar;
+
+ /**
+ * Observer.
+ */
+ MAknCollectionObserver& iObserver;
+ };
+
+ /**
+ * Menu bar owner that is currently being constructed.
+ * Not own.
+ */
+ MObjectProvider* iMenuBarOwner;
+
+ /**
+ * Unregistered menu data.
+ */
+ RArray<TAknUnregisteredMenuData> iUnregisteredMenus;
+
+ /**
+ * Unregistered menu observers.
+ */
+ RArray<TAknUnregisteredObserverData> iUnregisteredObservers;
+
+ /**
+ * Register array.
+ * Own.
+ */
+ CAknItemActionMenuRegisterArray* iRegisterArray;
+
+ /**
+ * Menu bar owner used to override all other menubar providers.
+ * Not own.
+ */
+ MObjectProvider* iOverridingMenuBarOwner;
+ };
+
+#endif // C_AKNITEMACTIONMENUREGISTER_H
+