ipsservices/ipssossettings/inc/ipssetuictrlsoftkey.h
branchRCL_3
changeset 64 3533d4323edc
parent 0 8466d47a6819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/ipssossettings/inc/ipssetuictrlsoftkey.h	Wed Sep 01 12:28:57 2010 +0100
@@ -0,0 +1,261 @@
+/*
+* Copyright (c) 2007 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:  Decleares the softkey controller class.
+*
+*/
+
+
+#ifndef IPSSETUICTRLSOFTKEY_H
+#define IPSSETUICTRLSOFTKEY_H
+
+#include <e32base.h>
+#include <eikcmobs.h>           // MEikCommandObserver
+
+class CEikButtonGroupContainer;
+
+/**
+ * Class to control softkeys.
+ *
+ * @since FS v1.0
+ * @lib IpsSosSettings.lib
+ */
+NONSHARABLE_CLASS( CIpsSetUiCtrlSoftkey ) :
+    public CBase,
+    public MEikCommandObserver
+    {
+public:
+
+    /**
+     * Flags to track, which softkeys are used.
+     */
+    enum TIpsSetUiSoftkeyFlags
+        {
+        /** Observed key. */
+        EObservingLeftSoftkey           = 0x01,
+        /** Temp key. */
+        EObservingUnknownKey            = 0x02,
+        /** Observed key. */
+        EObservingRightSoftkey          = 0x04,
+        /** Observed key. */
+        EObservingMiddleSoftkey         = 0x08,
+        /** Allow MSK label change. */
+        EAllowMiddleSoftkeyLabelChange  = 0x10,
+        /** Absorb key presses. */
+        EAbsorbing                      = 0x20,
+        /** Keep this last. */
+        ELastFlag
+        };
+
+    /**
+     * Keys that are observed
+     */
+    enum TIpsSetUiObservedKeys
+        {
+        ELeftSoftkey = 0,
+        EUnknownKey,
+        ERightSoftkey,
+        EMiddleSoftkey
+        };
+
+public:  // Constructors and destructor
+
+    /**
+     * Creates object from CIpsSetUiCtrlSoftkey and leaves it to cleanup stack
+     *
+     * @return, Constructed object
+     */
+    static CIpsSetUiCtrlSoftkey* NewLC(
+        CEikButtonGroupContainer& aSoftkeys );
+
+    /**
+     * Create object from CIpsSetUiCtrlSoftkey
+     *
+     * @return, Constructed object
+     */
+    static CIpsSetUiCtrlSoftkey* NewL(
+        CEikButtonGroupContainer& aSoftkeys );
+
+    /**
+     * Destructor
+     */
+    virtual ~CIpsSetUiCtrlSoftkey();
+
+public: // New operators
+
+    /**
+     * Get a direct access to softkeys
+     *
+     * @return Reference to softkey container
+     */
+    CEikButtonGroupContainer& operator()();
+
+public: // New functions
+
+
+    /**
+     * Sets the observer to the specific key
+     *
+     * @param aSoftkey Key to be observed
+     * @param aCommandObserver The observer for the key events
+     * @return KErrNone, when setting the observer is succesful
+     */
+    TInt SetObserver(
+        const TIpsSetUiObservedKeys aSoftkey,
+        MEikCommandObserver& aCommandObserver );
+
+    /**
+     * Sets/Removes the observers for the softkeys
+     *
+     * @param aLeftSoftkey Set/Remove left softkey observer
+     * @param aRightSoftkey Set/Remove right softkey observer
+     * @param aMiddleSoftkey Set/Remove middle softkey observer
+     * @param aCommandObserver The observer for the key events
+     * @return KErrNone, when setting the observer is succesful
+     */
+    TInt SetObserver(
+        const TBool aLeftSoftkey,
+        const TBool aRightSoftkey,
+        const TBool aMiddleSoftkey,
+        MEikCommandObserver& aCommandObserver );
+
+    /**
+     * Removes the observer
+     *
+     * @param aSoftkey
+     */
+    void RemoveObserver(
+        const TIpsSetUiObservedKeys aSoftkey );
+
+    /**
+     * Defines a new softkey
+     *
+     * @param aLabelResource Resource of the text for the softkey label
+     * @param aSoftkeyPos Position of the softkey
+     * @param aSoftkeyCmd Command executed by pressing the softkey
+     * @param aCommandObserver Observer to receive the events
+     */
+    void DefineCustomSoftkeyL(
+        const TInt aLabelResource,
+        const TIpsSetUiObservedKeys aSoftkeyPos,
+        const TInt aSoftkeyCmd,
+        MEikCommandObserver* aCommandObserver );
+
+    /**
+     * Defines a new softkey
+     *
+     * @param aSoftkeyLabel Text for the softkey label
+     * @param aSoftkeyPos Position of the softkey
+     * @param aSoftkeyCmd Command executed by pressing the softkey
+     * @param aCommandObserver Observer to receive the events
+     */
+    void DefineCustomSoftkeyL(
+        const TDesC& aSoftkeyLabel,
+        const TIpsSetUiObservedKeys aSoftkeyPos,
+        const TInt aSoftkeyCmd,
+        MEikCommandObserver* aCommandObserver );
+
+    /**
+     * Checks the current status of MSK label updating availability
+     *
+     * @return ETrue, when MSK label change is allowed
+     * @return EFalse, when MSK label change is not allowed
+     */
+    TBool MSKLabelling();
+
+    /**
+     * Sets the status of MSK label updating
+     *
+     * @param aNewState Allow/Disallow MSK label change
+     */
+    void SetMSKLabelling( const TBool aNewState );
+
+    /**
+     * Changes the label of the middle softkey
+     *
+     * @param aLabelResource Resource of the text for the softkey label
+     * @param aCommandId Command executed by pressing the softkey
+     * @param aCommandObserver Observer to receive the events
+     */
+    void UpdateMiddleSoftkeyLabelL(
+        const TInt aLabelResource,
+        const TInt aCommandId,
+        MEikCommandObserver* aCommandObserver );
+
+    /**
+     * @param aParam Absorption on/off
+     */
+    void SetAbsorb( const TBool aAbsorb );
+
+protected:  // Constructors
+
+    /**
+     * Default constructor for classCIpsSetUiCtrlSoftkey
+     *
+     * @return, Constructed object
+     */
+    CIpsSetUiCtrlSoftkey(
+        CEikButtonGroupContainer& aSoftkeys );
+
+    /**
+     * Symbian 2-phase constructor
+     */
+    void ConstructL();
+
+private:  // New functions
+
+    /**
+     * Changes observer status.
+     *
+     * @param aOn Turn observing On/Off.
+     * @param aSoftkey Key to be controlled.
+     * @param aCommandObserver Observer for the key.
+     * @return Result of the assignment.
+     */
+    TInt ChangeObserver(
+        const TBool aOn,
+        const TIpsSetUiObservedKeys aSoftkey,
+        MEikCommandObserver& aCommandObserver );
+
+// From base class MEikCommandObserver
+
+    /**
+     * Handle commands. Dummy for absroption.
+     *
+     * @param aCommandId Executed command.
+     */
+    void ProcessCommandL( TInt aCommandId );
+
+private:    // Data
+
+    /**
+     * Softkey container
+     */
+    CEikButtonGroupContainer&   iSoftkeys;
+
+    /**
+     * Container for the flags
+     */
+    TUint64                     iFlags;
+
+    /**
+     * Container for the last used resource for MSK
+     */
+    TInt                        iPreviousMskLabelResource;
+
+    };
+
+#endif /* IPSSETUICTRLSOFTKEY_H */
+
+// End of File
+