--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpxplugins/viewplugins/views/inc/mpxbutton.h Thu Dec 17 08:45:05 2009 +0200
@@ -0,0 +1,271 @@
+/*
+* Copyright (c) 2006 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: Push-button in Common Playback View.
+*
+*/
+
+
+
+#ifndef CMPXBUTTON_H
+#define CMPXBUTTON_H
+
+
+// INCLUDES
+#include "mpxcommonplaybackviewdefs.h"
+
+// FORWARD DECLARATIONS
+class CGulIcon;
+class CWindowGc;
+class CAknKeySoundSystem;
+class MAknsControlContext;
+class MMPXPlaybackViewLayout;
+
+NONSHARABLE_STRUCT( TMPXButtonInfo )
+ {
+ TInt iState;
+ CGulIcon* iBitmap;
+ TInt iEnterCommand;
+ TInt iExitCommand;
+ TInt iLongEnterCommand;
+ TInt iLongExitCommand;
+ };
+
+// CLASS DECLARATION
+
+/**
+ * Observer interface to receive commands from button presses.
+ *
+ * @lib mpxplaybackview.dll
+ * @since S60 v3.0
+ */
+NONSHARABLE_CLASS( MMPXButtonCmdObserver )
+ {
+ public:
+ /**
+ * Handle a button command.
+ * @param aCommand Command id, as specified in the button constructor.
+ */
+ virtual void HandleButtonCommandL( TInt aCommand ) = 0;
+
+ };
+
+
+/**
+* Push-button in Playback View. This class encapsulates the graphics,
+* state (pushed, dimmed, highlighted), and layout information of the button.
+* The button calls the HandleButtonCommandL() function for the observer
+* object when it is pushed.
+*
+* @lib MusicPlayer.app
+* @since 3.0
+*/
+NONSHARABLE_CLASS( CMPXButton ) : public CBase
+ {
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ * @since 3.0
+ * @param aButtonId Id for the button (determines layout and graphics)
+ * @param aObserver Pointer to an object implementing the
+ * MMPlayerButtonCmdObserver interface.
+ * @param aLayout Layout for this view
+ * @return New CMPlayerButton instance.
+ */
+ static CMPXButton* NewL(
+ TMPXPbvButton aButtonId,
+ MMPXButtonCmdObserver* aObserver,
+ MMPXPlaybackViewLayout* aLayout );
+
+ /**
+ * Two-phased constructor.
+ * @since 3.0
+ * @param aButtonId Id for the button (determines layout and graphics)
+ * @param aObserver Pointer to an object implementing the
+ * MMPlayerButtonCmdObserver interface.
+ * @param aLayout Layout for this view
+ * @return New CMPlayerButton instance.
+ */
+ static CMPXButton* NewLC(
+ TMPXPbvButton aButtonId,
+ MMPXButtonCmdObserver* aObserver,
+ MMPXPlaybackViewLayout* aLayout );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMPXButton();
+
+ public: // New functions
+
+ /**
+ * Adds a new state to this button
+ * @since 3.0
+ * @param aState ID of the state
+ * @param aEnterCommand Command ID to execute when it enters this state
+ * @param aExitCommand Command ID to execute whne it exits this state
+ * @param aLongEnterCommand Command ID executes on a long press
+ * @param aLongExitCommand Command ID to execute after a long press
+ */
+ void AddStateL(
+ TInt aState,
+ TInt aEnterCommand,
+ TInt aExitCommand,
+ TInt aLongEnterCommand,
+ TInt aLongExitCommand );
+
+ /**
+ * Get the id of the button.
+ * @since 3.0
+ * @return Button id (as specified in NewL())
+ */
+ TMPXPbvButton Id() const;
+
+ /**
+ * Hide/show this button
+ * @since 3.0
+ * @param aVisible ETrue if this button is to be visible
+ */
+ void MakeVisible( TBool aVisible );
+
+ /**
+ * Get the visibility status of the button.
+ * @since 3.0
+ * @return ETrue if this button is visible
+ */
+ TBool IsVisible() const;
+
+ /**
+ * Set the state of this button
+ * @since 3.0
+ * @param aState New state to set to
+ * @param aNotifyExit Whether or not to notify observer of the
+ * exit command of previous state
+ * @param aNotifyEnter Whether or not to notify observer of the
+ * enter command of the new state
+ */
+ void SetButtonState( TInt aState,
+ TBool aNotifyExit=EFalse,
+ TBool aNotifyEnter=EFalse );
+
+ /**
+ * Get the current state of the button
+ * @since 3.0
+ * @return State of the button
+ */
+ TInt CurrentState() const;
+
+ /**
+ * Draw the button according to its current state.
+ * @since 3.0
+ * @param aGc Graphics context to draw to
+ * @param aRect Dirty rectangle. Drawing can be clipped inside this
+ * rectangle.
+ */
+ void RedrawRect(CBitmapContext& aGc, const TRect& aRect) const;
+
+ /**
+ * Reload graphics.
+ * @since 3.0
+ * @param aParentRect New parent rectangle
+ */
+ void ReloadIconsL(const TRect& aParentRect);
+
+ /**
+ * Set background bitmap
+ * @since 3.0
+ * @param aBackground Pointer to the skin background control
+ * context. Ownership not transferred.
+ */
+ void SetBackground(MAknsControlContext* aBackground);
+
+ /**
+ * Get the redraw flag.
+ * @since 3.0
+ * @return ETrue if this button needs to be redrawn
+ */
+ TBool NeedRedraw() const;
+
+ /**
+ * Clear the redraw flag.
+ * @since 3.0
+ */
+ void ClearRedrawFlag();
+
+ private: // New functions
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * C++ constructor
+ */
+ CMPXButton(
+ TMPXPbvButton aButtonId,
+ MMPXButtonCmdObserver* aObserver,
+ MMPXPlaybackViewLayout* aLayout );
+
+ /**
+ * Load the bitmap and mask for given state.
+ * @return CGulIcon containing bitmap and mask
+ */
+ CGulIcon* LoadIconL( TInt aState );
+
+ /**
+ * Free all icons
+ */
+ void FreeIcons();
+
+ /**
+ * Create a more translucent version of the mask to be used
+ * when the button is dimmed.
+ */
+ void CreateTmpDimmedMaskL();
+
+ /**
+ * Handle long press event.
+ */
+ void HandleLongPress();
+
+ /**
+ * Callback for long-press timer
+ */
+ static TInt TimerCallback(TAny* aPtr);
+
+ private: // Data
+ TMPXPbvButton iButtonId;
+ TInt iCurrentStateIndex;
+ RPointerArray<TMPXButtonInfo> iButtonArray; // owned
+ MMPXButtonCmdObserver* iObserver; // not owned
+
+ TRect iParentRect;
+ TRect iRect;
+
+ TBool iVisible;
+ TBool iIsLongPress;
+
+ CPeriodic* iTimer; // owned
+
+ MAknsControlContext* iBackground; // not owned
+
+ TBool iNeedRedraw;
+
+ CAknKeySoundSystem* iKeySoundSystem; // not owned
+ TBool iSelectionKeySilent;
+ MMPXPlaybackViewLayout* iLayout; // not owned
+ };
+
+#endif // CMPXBUTTON_H
+
+// End of File