--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AknGlobalUI/CommonInc/aknmessagereaderlongpressdetector.h Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,223 @@
+/*
+* Copyright (c) 2008 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: System soft notifications.
+*
+*/
+
+
+#ifndef __AKNMESSAGEREADERLONGPRESSDETECTOR_H__
+#define __AKNMESSAGEREADERLONGPRESSDETECTOR_H__
+
+#include <coecntrl.h>
+
+class MEikButtonGroup;
+class CPeriodic;
+class CAknPhoneLockObserver;
+class CEikButtonGroupContainer;
+
+/**
+* MAknMessageReaderLongPressDetector interface, used by CAknCapAppServerAppUi::HandleWsEventL.
+*
+* @lib AknOldStyleNotif.lib
+* @since 5.0
+*/
+class MAknMessageReaderLongPressDetector
+ {
+public:
+
+ /**
+ * Observe key and pointer events for long press detection
+ * @param ws events received by the process
+ * @param aDestionation control where wsevent is targeted at
+ * @return whether ws event should be consumed or nto
+ */
+ virtual TBool HandleWsEventL( const TWsEvent& aEvent,
+ CCoeControl* aDestination ) = 0;
+ };
+
+/**
+* MAknMessageNotifierObserver interface, used by CAknSoftNotificationSubject.
+*
+* @lib AknOldStyleNotif.lib
+* @since 5.0
+*/
+class MAknMessageNotifierObserver
+ {
+public:
+ virtual TBool MessageNotifierShown() = 0;
+ virtual CEikButtonGroupContainer* ButtonGroupContainer() = 0;
+ };
+
+/**
+* CAknMessageReaderLongPressDetector class.
+* Detects whether user has long pressed left soft key or not.
+*
+* @lib AknOldStyleNotif.lib
+* @since 5.0
+*/
+NONSHARABLE_CLASS(CAknMessageReaderLongPressDetector): public CCoeControl, public MAknMessageReaderLongPressDetector
+{
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aButtonGroup soft notification dialog button group (cba)
+ */
+ static CAknMessageReaderLongPressDetector* NewL( CEikButtonGroupContainer* aGlobalNoteBGContainer, RWindow& aGlobalNoteWindow );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CAknMessageReaderLongPressDetector();
+
+ /**
+ * Disable long press evaluation
+ * @return ETrue if message reader has been installed on the device
+ */
+ static TBool MessageReaderInstalled();
+
+
+ /**
+ * Soft notification is on the screen
+ */
+ void SoftNotifierVisible( TBool aVisible );
+
+ /**
+ * Phone keys are locked
+ * @param aLocked ETrue if locked
+ */
+ void KeysLocked( TBool aLocked );
+
+ /**
+ * Give a access to the grouped note information
+ */
+ void SetMessageNotifierObserver( MAknMessageNotifierObserver* aMessageNotifierObserver );
+
+ public: // from MAknMessageReaderLongPressDetector
+
+ /**
+ * Observe key and pointer events for long press detection
+ * @param ws events received by the process
+ * @param aDestionation control where wsevent is targeted at
+ * @return whether ws event should be consumed or nto
+ */
+ TBool HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination );
+
+ private:
+
+ /**
+ * C++ constructor
+ * @param aButtonGroup soft notification dialog button group (cba)
+ */
+ CAknMessageReaderLongPressDetector( CEikButtonGroupContainer* aGlobalNoteBGContainer, RWindow& aGlobalNoteWindow );
+
+ /**
+ * Symbian OS 2nd phase constructor.
+ */
+ void ConstructL();
+
+ private:
+
+ /**
+ * Enable long press evaluation
+ */
+ void Enable();
+
+ /**
+ * Disable long press evaluation
+ */
+ void Disable();
+
+ private:
+
+ /**
+ * Determine if left soft button has been long touched
+ *
+ * @param aPointerEvent received pointer event
+ * @return if pointer event should be consumed
+ * @param aDestionation the control where wsevent is targeted at
+ */
+ TBool HandleLongTouchL( const TPointerEvent& aPointerEvent,
+ CCoeControl* aDestination );
+
+ TBool IsPointerInLeftSoftKeyRect(TPoint aPoint, CCoeControl* aDestination);
+
+ /**
+ * If left soft key was long pressed, launch message reader
+ */
+ void LaunchMessageReaderL();
+
+ /**
+ * Start long press timer
+ */
+ void StartLongPressTimerL();
+
+ /**
+ * Static function to be called when long press is detected
+ * @param pointer to the class
+ */
+ static TInt ReportLongPressL( TAny* aThis );
+
+ /**
+ * Handle long press detection, called by ReportLongPressL
+ */
+ void DoReportLongPressL();
+
+ /**
+ * Stop long press timer
+ */
+ void StopLongPressTimer();
+
+ private:
+
+ // only detect long press if soft notifier is visible
+ TBool iSoftNotifierVisible;
+
+ // if detector has been enabled or not
+ TBool iDetectorEnabled;
+
+ // prevent pointer event leakage
+ TBool iIgnoreEventsUntilNextPointerUp;
+
+ // for pointer presses we store pointer destination
+ CCoeControl* iPointerDestination;
+
+ // detects long pointer presses
+ CPeriodic* iLongPressTimer;
+
+ // left soft key control
+ CCoeControl* iLeftSoftKeyControl;
+
+ // we create a separate phone lock observer as we do not want to
+ // couple our implementation with keylock notifier, keeps track of
+ // keyguard and devicelock status
+ CAknPhoneLockObserver* iPhoneLockObserver;
+
+ // Handle to the left soft key long capture
+ TInt32 iCaptureLongKeyHandle;
+
+ // access to global note and grouped notes
+ MAknMessageNotifierObserver* iMessageNotifierObserver;
+ CEikButtonGroupContainer* iGlobalNoteBGContainer;
+ RWindow& iGlobalNoteWindow;
+
+ //Detect whether LSK has been keydowned
+ TBool iLSKKeyDownDetect;
+};
+
+#endif // __AKNMESSAGEREADERLONGPRESSDETECTOR_H__
+
+// End of file
+
+