--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/EikStd/coctlsrc/aknitemactionmenuregisterarray.cpp Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,310 @@
+/*
+* 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 array.
+*
+*/
+#include <akncollection.h>
+#include <aknitemactionmenu.h>
+#include <eikmenub.h>
+
+#include "aknitemactionmenuregisterarray.h"
+
+// ---------------------------------------------------------------------------
+// CCAknItemActionMenuRegisterArray::NewL
+// ---------------------------------------------------------------------------
+//
+CAknItemActionMenuRegisterArray* CAknItemActionMenuRegisterArray::NewL()
+ {
+ CAknItemActionMenuRegisterArray* self =
+ CAknItemActionMenuRegisterArray::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CCAknItemActionMenuRegisterArray::NewLC
+// ---------------------------------------------------------------------------
+//
+CAknItemActionMenuRegisterArray* CAknItemActionMenuRegisterArray::NewLC()
+ {
+ CAknItemActionMenuRegisterArray* self =
+ new ( ELeave ) CAknItemActionMenuRegisterArray();
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::~CAknItemActionMenuRegisterArray
+// ---------------------------------------------------------------------------
+//
+CAknItemActionMenuRegisterArray::~CAknItemActionMenuRegisterArray()
+ {
+ iRegisterArray.ResetAndDestroy();
+ iRegisterArray.Close();
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::AddEntryL
+// ---------------------------------------------------------------------------
+//
+void CAknItemActionMenuRegisterArray::AddEntryL(
+ CEikMenuBar& aMenuBar, CAknItemActionMenu& aItemActionMenu )
+ {
+ CRegisterEntry* newEntry = CRegisterEntry::NewLC(
+ aMenuBar, aItemActionMenu );
+ iRegisterArray.AppendL( newEntry );
+ CleanupStack::Pop( newEntry );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::UnregisterMenuBar
+// ---------------------------------------------------------------------------
+//
+void CAknItemActionMenuRegisterArray::UnregisterMenuBar(
+ CEikMenuBar& aMenuBar )
+ {
+ CRegisterEntry* entry( NULL );
+ for ( TInt i = 0; i < iRegisterArray.Count(); i++ )
+ {
+ entry = iRegisterArray[ i ];
+ if ( entry->MenuBar() == &aMenuBar )
+ {
+ entry->RemoveMenuBar();
+ // Remove entry if there are no more collections
+ if ( entry->ItemActionMenu()->CollectionCount() )
+ {
+ entry->ItemActionMenu()->SetMenuBar( NULL, NULL );
+ }
+ else
+ {
+ RemoveEntry( i );
+ }
+ break;
+ }
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::UnregisterItemActionMenu
+// ---------------------------------------------------------------------------
+//
+void CAknItemActionMenuRegisterArray::UnregisterItemActionMenu(
+ CAknItemActionMenu& aItemActionMenu )
+ {
+ CRegisterEntry* entry( NULL );
+
+ for ( TInt i = 0; i < iRegisterArray.Count(); i++ )
+ {
+ entry = iRegisterArray[ i ];
+ if ( entry->ItemActionMenu() == &aItemActionMenu )
+ {
+ // Remove entry only if menu bar is already removed
+ if ( !entry->MenuBar() )
+ {
+ RemoveEntry( i );
+ }
+ break;
+ }
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::RegisterCollectionObserverL
+// ---------------------------------------------------------------------------
+//
+TBool CAknItemActionMenuRegisterArray::RegisterCollectionObserverL(
+ CEikMenuBar& aMenuBar, MAknCollectionObserver& aObserver )
+ {
+ TBool menuBarFound( EFalse );
+ CRegisterEntry* entry( NULL );
+ for ( TInt i = 0; i < iRegisterArray.Count(); i++ )
+ {
+ entry = iRegisterArray[ i ];
+ if ( entry->MenuBar() == &aMenuBar )
+ {
+ if ( entry->ItemActionMenu() )
+ {
+ entry->ItemActionMenu()->RegisterCollectionObserverL(
+ aObserver );
+ }
+ menuBarFound = ETrue;
+ break;
+ }
+ }
+ return menuBarFound;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::UnregisterCollectionObserver
+// ---------------------------------------------------------------------------
+//
+void CAknItemActionMenuRegisterArray::UnregisterCollectionObserver(
+ MAknCollectionObserver& aObserver )
+ {
+ CRegisterEntry* entry( NULL );
+
+ for ( TInt i = 0; i < iRegisterArray.Count(); i++ )
+ {
+ entry = iRegisterArray[ i ];
+ if ( entry->ItemActionMenu() )
+ {
+ entry->ItemActionMenu()->RemoveCollectionObserver( aObserver );
+ }
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::CAknItemActionMenuRegisterArray
+// ---------------------------------------------------------------------------
+//
+CAknItemActionMenuRegisterArray::CAknItemActionMenuRegisterArray()
+ {
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CAknItemActionMenuRegisterArray::ConstructL()
+ {
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::RemoveEntry
+// ---------------------------------------------------------------------------
+//
+void CAknItemActionMenuRegisterArray::RemoveEntry( TInt aIndex )
+ {
+ if ( aIndex >= 0 && aIndex < iRegisterArray.Count() )
+ {
+ CRegisterEntry* entry = iRegisterArray[ aIndex ];
+ delete entry;
+ entry = NULL;
+ iRegisterArray.Remove( aIndex );
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CCAknItemActionMenuRegisterArray::CRegisterEntry::NewL
+// ---------------------------------------------------------------------------
+//
+CAknItemActionMenuRegisterArray::CRegisterEntry*
+ CAknItemActionMenuRegisterArray::CRegisterEntry::NewL(
+ CEikMenuBar& aMenuBar, CAknItemActionMenu& aItemActionMenu )
+ {
+ CRegisterEntry* self = CRegisterEntry::NewLC( aMenuBar, aItemActionMenu );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CCAknItemActionMenuRegisterArray::CRegisterEntry::NewLC
+// ---------------------------------------------------------------------------
+//
+CAknItemActionMenuRegisterArray::CRegisterEntry*
+ CAknItemActionMenuRegisterArray::CRegisterEntry::NewLC(
+ CEikMenuBar& aMenuBar, CAknItemActionMenu& aItemActionMenu )
+ {
+ CRegisterEntry* self =
+ new ( ELeave ) CRegisterEntry( aMenuBar, aItemActionMenu );
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::CRegisterEntry::~CRegisterEntry
+// ---------------------------------------------------------------------------
+//
+CAknItemActionMenuRegisterArray::CRegisterEntry::~CRegisterEntry()
+ {
+ delete iActionMenu;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::CRegisterEntry::RemoveMenuBar
+// ---------------------------------------------------------------------------
+//
+void CAknItemActionMenuRegisterArray::CRegisterEntry::RemoveMenuBar()
+ {
+ iMenuBar = NULL;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::CRegisterEntry::MenuBar
+// ---------------------------------------------------------------------------
+//
+CEikMenuBar* CAknItemActionMenuRegisterArray::CRegisterEntry::MenuBar()
+ {
+ return iMenuBar;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::CRegisterEntry::RemoveItemActionMenu
+// ---------------------------------------------------------------------------
+//
+void CAknItemActionMenuRegisterArray::CRegisterEntry::RemoveItemActionMenu()
+ {
+ delete iActionMenu;
+ iActionMenu = NULL;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::CRegisterEntry::ItemActionMenu
+// ---------------------------------------------------------------------------
+//
+CAknItemActionMenu*
+ CAknItemActionMenuRegisterArray::CRegisterEntry::ItemActionMenu()
+ {
+ return iActionMenu;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::CRegisterEntry::CRegisterEntry
+// ---------------------------------------------------------------------------
+//
+CAknItemActionMenuRegisterArray::CRegisterEntry::CRegisterEntry(
+ CEikMenuBar& aMenuBar, CAknItemActionMenu& aItemActionMenu )
+ : iMenuBar( &aMenuBar ),
+ iActionMenu( &aItemActionMenu )
+ {
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAknItemActionMenuRegisterArray::CRegisterEntry::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CAknItemActionMenuRegisterArray::CRegisterEntry::ConstructL()
+ {
+ }
+
+// End of File