browserui/browser/FavouritesSrc/CommandVisibility.cpp
branchRCL_3
changeset 65 8e6fa1719340
parent 0 84ad3b177aa3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/FavouritesSrc/CommandVisibility.cpp	Wed Sep 01 12:31:04 2010 +0100
@@ -0,0 +1,147 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*      Implementation of TCommandVisibility.
+*      
+*
+*/
+
+
+// INCLUDE FILES
+#include <eikmenup.h>
+#include "Browser.hrh"
+#include "CommandVisibility.h"
+#include "BrowserFavouritesSelectionState.h"
+#include "BrowserUtil.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// TCommandVisibility::Apply
+// ---------------------------------------------------------
+//
+void TCommandVisibility::Apply
+        (
+        CEikMenuPane* aMenuPane,
+        TCommandVisibilityMap aCommandInfo,
+        TCommandVisibility::TIndex aIndex
+        )
+    {
+    // Dim commands using the command visibility array.
+    TInt command;
+    TInt i = 0;
+    while ( ( command = aCommandInfo[i][ECommand] ) !=
+                                                    /*end of list*/EWmlNoCmd )
+        {
+        if ( !(aCommandInfo[i][aIndex]) )
+            {
+            aMenuPane->SetItemDimmed( command, ETrue );
+            }
+        i++;
+        }
+    }
+
+// ---------------------------------------------------------
+// TCommandVisibility::Apply
+// ---------------------------------------------------------
+//
+TBool TCommandVisibility::Apply
+        (
+        const TCommandVisibilityInfo& aCommandInfo,
+        TIndex aIndex
+        )
+    {
+    return aCommandInfo[aIndex];
+    }
+
+// ---------------------------------------------------------
+// TCommandVisibility::Index
+// ---------------------------------------------------------
+//
+TCommandVisibility::TIndex TCommandVisibility::Index
+        (
+        const TBrowserFavouritesSelectionState& aSelectionState,
+        TBool aMarkedOnly
+        )
+    {
+    TIndex index = EInvalid;
+
+    if ( aMarkedOnly )
+        {
+        // Consider only marked items (OK-Options menu).
+        if ( aSelectionState.IsEmpty() )
+            {
+            // Empty ???
+            index = ENothing;
+            }
+        else if ( aSelectionState.MarkedCount() == 1 )
+            {
+            // One is marked. See if item or folder.
+            index = aSelectionState.iMarkedItemCount ? EOneItem : EOneFolder;
+            }
+        else
+            {
+            // More is marked. See if there are any folders.
+            index = aSelectionState.NoFoldersMarked() ?
+                                                    EMoreItems : EItemsFolders;
+            }
+        }
+    else
+        {
+        // All items (Normal Options menu).
+        if ( aSelectionState.AnyMarked() )
+            {
+            if ( aSelectionState.NoFoldersMarked() )
+                {
+				if ( aSelectionState.MarkedCount() == 1 )
+					{					
+					index = EOneItem;
+					}
+				else
+					{
+					index = EMoreItems;
+					}
+                }
+            else
+                {
+                // More marked, including folders.
+                index = EItemsFolders;
+                }
+            }
+        else if ( aSelectionState.CurrentIsItem() )
+            {
+            // A bookmark is highlighted.
+            index = EOneItem;
+            }
+        else if ( aSelectionState.CurrentIsFolder() )
+            {
+            // A folder is highlighted.
+            index = EOneFolder;
+            }
+        else
+            {
+            __ASSERT_DEBUG( aSelectionState.IsEmpty(), \
+                Util::Panic( Util::EFavouritesInternal ) );
+            // No items at all.
+            index = ENothing;
+            }
+        }
+
+    __ASSERT_DEBUG( index != EInvalid,
+		Util::Panic( Util::EUnExpected ) );
+
+    return index;
+    }
+
+// End of File