photosgallery/viewframework/views/cloudview/inc/glxtagscontextmenucontrol.h
branchRCL_3
changeset 26 5b3385a43d68
child 27 34937ec34dac
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/viewframework/views/cloudview/inc/glxtagscontextmenucontrol.h	Wed Sep 01 12:33:26 2010 +0100
@@ -0,0 +1,180 @@
+/*
+* Copyright (c) 2008-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:    Cloud View Context menu control
+ *
+*/
+
+#ifndef GLXTAGSCONTEXTMENUCONTROL_H_
+#define GLXTAGSCONTEXTMENUCONTROL_H_
+
+#include <e32base.h>
+#include <e32std.h>
+#include <alf/alfcontrol.h>
+#include "glxbubbletimer.h"                         //for timer functionality
+
+//Forward Declaration
+class CAlfGridLayout;
+class CAlfEnv;
+
+/**
+ *MGlxItemMenuObserver is a class to handle the menu items in grid layout
+ */
+class MGlxItemMenuObserver
+    {
+public:
+    /**
+     * To Handle menu items in Grid layout
+     * @param aCommand command to be handled
+     */
+    virtual void HandleGridMenuListL(TInt aCommand) = 0;
+    };
+
+class CGlxTagsContextMenuControl : public CAlfControl,
+        public MGlxTimerNotifier
+
+    {
+public:
+    /**     
+     *  Perform the two phase construction
+     *  @param aItemMenuObserver - handles the menu items in grid layout
+     *  @return Pointer to newly created object
+     */
+    static CGlxTagsContextMenuControl* NewL(
+            MGlxItemMenuObserver& aItemMenuObserver);
+    /**     
+     *  Perform the two phase construction
+     *  @param aItemMenuObserver - handles the menu items in grid layout
+     *  @return Pointer to newly created object
+     */
+    static CGlxTagsContextMenuControl* NewLC(
+            MGlxItemMenuObserver& aItemMenuObserver);
+    /**
+     * Destroy the object and release all memory objects
+     */
+    ~CGlxTagsContextMenuControl();
+
+public:
+    //MGlxTimernotifier
+    /**
+     * Virtual Function from MGlxTimernotifier
+     */
+    void TimerCompleteL();
+
+public:
+    /**
+     * Sets the grid layout on the screen with the Point specified
+     * @param aPoint - Point from which grid has to be displayed
+     */
+    void SetDisplay(const TPoint& aPoint);
+    /**
+     * Hides/shows the grid layout
+     * @param aOpacity - Opacity value
+     */
+    void ShowItemMenuL(TBool aOpacity);
+    /**
+     * Hides/shows the grid layout
+     * @return value of menu's visibility
+     */
+    TBool ItemMenuVisibility();
+
+    /**
+     * Sets the drawable screen rect 
+     * It also handles coordinates changed from Orientation
+     * @param aRect - rect area where the Tags are drawn
+     */
+    void SetViewableRect(TRect aRect);
+
+    /**
+    * Handles the Up event when moved away from stylus menu
+    */
+    void HandleUpEventL();
+    
+private:
+    /**     
+     *  constructor 
+     *  @param aItemMenuObserver - handles the menu items in grid layout
+     */
+    CGlxTagsContextMenuControl(MGlxItemMenuObserver& aItemMenuObserver);
+
+    /** 
+     *  Perform the second phase of two phase construction
+     */
+    void ConstructL();
+
+    /** 
+     *  Creates the font 
+     *  @return the fontId
+     */
+    TInt CreateFontL();
+    /** 
+     *  Creates the menulist and sets the Text style 
+     *  @param aFontId - Sets the text style
+     */
+    void CreateMenuListL(TInt aFontId);
+
+    /** 
+     *  Calculates the maximum text width of menu items 
+     */
+    void CalculateMaxWidth();
+    /** 
+     *  Draws the line separators in Stylus menu
+     */
+    void DrawLineSeparatorsL();
+    /**     
+     *  Perform the two phase construction
+     *  @param  aEvent - key Event to handle
+     *  @return EKeyWasConsumed if key event is processed,
+     *         otherwise EKeyWasNotConsumed
+     */
+    TBool OfferEventL(const TAlfEvent& aEvent);
+
+private:
+
+    //Observer to handle the menu items in grid layout
+    MGlxItemMenuObserver& iItemMenuObserver;
+
+    //Grid layout, not owning
+    CAlfGridLayout* iGrid;
+    /** The Alf environment*/
+    CAlfEnv* iAlfEnv;
+
+    //Slideshow text, not owning
+    CAlfTextVisual* iSlideshowTextVisual;
+
+    //Delete text, not owning
+    CAlfTextVisual* iDeleteTextVisual;
+
+    //Rename text, not owning
+    CAlfTextVisual* iRenameTextVisual;
+
+    // Anchor Layout
+    CAlfAnchorLayout* iMainVisual;
+
+    //variable used for providing delay
+    CGlxBubbleTimer* iTimer;
+
+    //Viewable rect
+    TRect iViewableRect;
+
+    //flag for stylus menu visibility
+    TBool iItemMenuVisibility;
+    
+    //Menu item selected
+    TInt iCommandId;
+    
+    //Maximum text width of a menu item
+    TInt iMaxTextWidth;
+    };
+
+#endif /* GLXTAGSCONTEXTMENUCONTROL_H_ */