--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AknGlobalUI/OldStyleNotif/Inc/AknSystemPopup.h Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,351 @@
+/*
+* Copyright (c) 2002-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 __AKNSYSTEMPOPUP_H__
+#define __AKNSYSTEMPOPUP_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include <eiknotapi.h>
+#include <eikcmobs.h>
+#include <aknnotedialog.h>
+#include <aknstaticnotedialog.h>
+#include <AknNotifyStd.h>
+#include <AknEcs.h>
+#include "AknNotifierControllerPlugin.h"
+#include "AknPrivateImageLoader.h"
+#include <aknSDData.h>
+#include <akndialogcontroller.h>
+#include <e32property.h>
+
+class CAknMessageReaderLongPressDetector;
+class MAknMessageNotifierObserver;
+
+const TInt KGlobalNoteTextLength = 256;
+const TInt KMinimumSoftNotePriority = 1000;
+
+NONSHARABLE_CLASS( CGlobalNoteInfo ) : public CBase
+ {
+public: // Constructor and destructor.
+
+ /**
+ * Default constructor.
+ */
+ CGlobalNoteInfo();
+
+ /**
+ * Destructor.
+ */
+ ~CGlobalNoteInfo();
+
+public:
+ TInt iNoteId;
+ TInt iResourceId;
+ CAknNoteDialog::TTimeout iTimeOut;
+ CAknNoteDialog::TTone iTone;
+ TBuf<KGlobalNoteTextLength> iText;
+ TInt iPriority;
+ TInt iSoftkeys;
+ TInt iGraphic;
+ TInt iGraphicMask;
+ TInt iAnimation;
+ TInt iPlural;
+ RMessagePtr2 iMessage;
+ TBool iAsync;
+ TBool iTextProcessing;
+ TBool iIsFromAdapter; // Indicates that global note was shown by adapter.
+ // We need this information to return correct softkey
+ // enumeration in TRequestStatus.
+ CAknSDData* iSDData;
+ TInt iGlobalPopupPriority; // used to set AknGlobalPopupPriorityController priority
+
+ /// Raw image data for dialog.
+ TPtrC8 iImage;
+ /// Custom right softkey for dialog.
+ TPtrC iRightSK;
+ /// Custom left softkey for dialog.
+ TPtrC iLeftSK;
+
+ TInt iAlmFlag;
+ };
+
+
+struct SAknAlarmPSInfo;
+
+class MGlobalNoteObserver
+ {
+public:
+ virtual void GlobalNoteCompleted(TInt aCommandId) = 0;
+ virtual TBool NoteWaiting() = 0;
+ virtual SAknAlarmPSInfo* AlarmData() = 0;
+ virtual TBool IsAppsKeyLocked() = 0;
+ virtual void SetAppsKeyLocked( TBool aLocked ) = 0;
+ };
+
+
+NONSHARABLE_CLASS(CAknGlobalNoteDialog) :
+ public CAknStaticNoteDialog,
+ public MAknPrivateImageLoaderObserver
+ {
+public:
+ CAknGlobalNoteDialog(MGlobalNoteObserver* aObserver);
+ ~CAknGlobalNoteDialog();
+ void UpdateNoteAndDisplayL( CGlobalNoteInfo* aInfo );
+ void ConstructL();
+ void NextNoteOrExit(TBool aDirectExit = EFalse);
+ void SetAutoLock(TBool aAutoLock);
+ /**
+ * Returns reference to current grouped note window
+ *
+ * @return RWindow of the dialog
+ */
+ RWindow& GlobalNoteWindow();
+
+ void RemoveCurrentNote();
+
+private: // From MAknPrivateImageLoaderObserver
+ void ImageLoadSuccess( CEikImage* aImage );
+ void ImageLoadError( TInt aError );
+
+private:
+ TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
+ void PreLayoutDynInitL();
+ void PostLayoutDynInitL();
+ TBool OkToExitL(TInt aButtonId);
+ static TBool CallNextNoteOrExit(TAny* aThis);
+ void HandleResourceChange(TInt aType);
+ virtual void CEikDialog_Reserved_1();
+ virtual void CEikDialog_Reserved_2();
+ virtual void CAknNoteDialog_Reserved();
+ virtual void CAknStaticNoteDialog_Reserved();
+ void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+private:
+ MGlobalNoteObserver* iObserver;
+ TInt iSoftkeys;
+ TInt iCommand;
+ TInt iControlType;
+ TBool iIsSoftNotification;
+ TBool iAutoLock;
+ TBool iIsAlarm;
+ TBool iIsAlarmWakeup;
+ TInt iPreviousAnimation; // For optimizing animation usage.
+ /// Flag whether dialog should be visible at the moment. Used for
+ /// asynchronous image loading.
+ TBool iDialogActive;
+ /// Own. Creates usable images from raw image data.
+ CAknPrivateImageLoader* iImageLoader;
+ /// Previously active note. Used for optimizing image loading.
+ TInt iPreviousNoteId;
+ /// Custom text for left softkey.
+ TPtrC iSoftkeyLeft;
+ /// Custom text for right softkey.
+ TPtrC iSoftkeyRight;
+ };
+
+
+NONSHARABLE_CLASS(CAknGlobalNoteSubject) :
+ public CBase,
+ public MAknUINotifierBase,
+ public MGlobalNoteObserver,
+ public MAknKeyLockObserver,
+ public MAknGlobalNoteController
+ {
+public:
+ static CAknGlobalNoteSubject* NewL(MAknKeyLockController* aKeyLockController);
+ ~CAknGlobalNoteSubject();
+ void ConstructL();
+
+public: // From MAknGlobalNoteController
+ TInt AddSoftNotificationL(
+ const TDesC& aText,
+ TInt aResource,
+ TInt aCount,
+ TInt aPriority,
+ TInt aSoftkeys,
+ TInt aTone = 0);
+
+ TInt AddNoteToQueueL(
+ TInt aResourceId,
+ const TDesC& aText,
+ TInt aPriority,
+ CAknNoteDialog::TTimeout aTimeout,
+ CAknNoteDialog::TTone aDefaultTone,
+ TInt aUserTone,
+ TInt aGraphic,
+ TInt aGraphicMask,
+ TInt aAnimation,
+ TInt aSoftkeys = 0);
+
+ void CancelNote(TInt aNoteId, TBool aShowNext = ETrue);
+
+ void TryDisplayNextNoteL(TBool aShowAsynch = EFalse);
+
+ // The variable aTime is deprecated, the alarm note content should be
+ // described in the descriptor aDescription.
+ TInt DisplayAlarmL(TInt aType,const TDesC& aDescription, const TDesC& aTime);
+
+ // The variable aTime is deprecated, the alarm note content should be
+ // described in the descriptor aDescription.
+ void AddAlarmAdditionalInfo(
+ TInt aType,
+ const TDesC& aTime,
+ const TDesC& aDate,
+ const TDesC& aSubject,
+ const TDesC& aLocation);
+
+public: // New methods
+ /**
+ * Adds new soft notification to queue.
+ *
+ * @param aText Text of the soft notification.
+ * @param aCount Count of items in the soft notification.
+ * @param aPriority Visibility priority of the soft notification.
+ * @param aTone Tone played when soft notification is shown.
+ * @param aLeftSk Custom left softkey.
+ * @param aRightSk Custom right softkey.
+ * @param aImage Raw image data for soft notification dialog.
+ */
+ TInt AddSoftNotificationL(
+ const TDesC& aText,
+ TInt aCount,
+ TInt aPriority,
+ TInt aTone,
+ const TDesC& aLeftSK,
+ const TDesC& aRightSK,
+ const TDesC8& aImage );
+
+ void DisplayNextNoteL();
+
+ void SetSoftNoteObserver(MSoftNotificationObserver* aObserver);
+ void SetNotificationDialogObserver(MSoftNotificationObserver* aObserver);
+ TInt NotePlural(TInt aNoteId);
+ const TDesC& NoteText(TInt aNoteId);
+ void SetMaxDisplayPriorityL(TInt aPriority, TInt aDelay = 0);
+ TInt StackCount();
+ static TInt CallDisplayNextNote(TAny* aThis);
+
+ void SetMessageNotifierObserver( MAknMessageNotifierObserver* aMessageNotifierObserver );
+ TBool SetSDData(TInt aNoteId, CAknSDData* aData);
+
+private:
+ // RProperty listener for autolock status.
+ NONSHARABLE_CLASS(CSubscriber) : public CActive
+ {
+ public: // New functions.
+ CSubscriber(TCallBack aCallBack, RProperty& aProperty);
+ ~CSubscriber();
+ void Subscribe();
+ void StopSubscribe();
+ private: // From CActive.
+ void RunL();
+ void DoCancel();
+ private:
+ TCallBack iCallBack;
+ RProperty& iProperty;
+ };
+
+private:
+ CAknGlobalNoteSubject(MAknKeyLockController* aKeyLockController);
+
+ //From MEikSrvNotifierBase
+ virtual void Release();
+ virtual TNotifierInfo RegisterL();
+ virtual TNotifierInfo Info() const;
+ virtual TPtrC8 StartL(const TDesC8& aBuffer);
+ virtual void StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage);
+ virtual void Cancel();
+ virtual TPtrC8 UpdateL(const TDesC8& aBuffer);
+
+ virtual void KeyPressed(const TKeyEvent& aKeyEvent, TEventCode aType);
+
+ TInt AddNoteToQueueL(TInt aResourceId, TInt aPriority, TInt aTone, TInt aPreallocatedNoteId = 0);
+ void CancelOustandingRequests();
+
+ // From MGlobalNoteObserver
+ virtual void GlobalNoteCompleted(TInt aCommandId);
+ virtual TBool NoteWaiting();
+ virtual TBool IsAppsKeyLocked();
+ virtual void SetAppsKeyLocked( TBool aLocked );
+
+ void HighestPriorityNote(TInt& aIndex, TInt& aPriority);
+ CGlobalNoteInfo* Note( TInt aNoteId );
+ TInt NoteIndex(TInt aNoteId);
+ TInt PermanentNotesCount() const;
+
+ // From MAknKeyLockObserver
+ void KeyLockStatusChange(TKeyLockStatus aStatus);
+ void CancelNote( TInt aNoteId, TBool aShowNext, TBool aDeleteNoteInfo );
+ // Handles changes in autolock status.
+ static TInt AutolockStatusNotificationL(TAny* aObj);
+ void HandleAutolockStatusNotificationL();
+
+ TInt AddNoteToQueueL(
+ TInt aResourceId,
+ const TDesC& aText,
+ TInt aPriority,
+ CAknNoteDialog::TTimeout aTimeout,
+ CAknNoteDialog::TTone aDefaultTone,
+ TInt aUserTone,
+ TInt aGraphic,
+ TInt aGraphicMask,
+ TInt aAnimation,
+ TInt aSoftkeys,
+ TInt aPreallocatedNoteId);
+
+ TBool IsPreallocatedNoteIdValid(const TInt aPreallocatedNoteId);
+
+private:
+ TPckgBuf<SAknGlobalNoteReturnParams> iRetPckg;
+ TNotifierInfo iInfo;
+ MAknKeyLockController* iKeyLockController;
+ CArrayFixFlat<CGlobalNoteInfo*>* iGlobalNoteList;
+ TInt iDisplayingNoteId;
+ TInt iNoteId;
+ CAknGlobalNoteDialog* iGlobalNote;
+ MSoftNotificationObserver* iSoftNoteObserver;
+ MSoftNotificationObserver* iNotificationDialogObserver;
+ TInt iMaxDisplayPriority;
+ TInt iMaxDisplayPriorityLimit;
+ CAknEcsDetector* iEcsDetector;
+ TBool iNotesDisabled;
+ TInt iPreviousDisplayPriority;
+ CAsyncCallBack* iDisplayCallback;
+ CNotifierDialogController* iDialogController;
+
+ TInt iAutoLock;
+ TInt iCurrentPriority;
+
+ friend class CAknGlobalNoteDialog;
+
+ CIdle* iIdle;
+ static TInt EnableAutolockEmulation(TAny* aThis);
+
+ virtual SAknAlarmPSInfo* AlarmData() {return iAlarmData;}
+ SAknAlarmPSInfo* iAlarmData;
+
+ TBool iAppsKeyLocked;
+
+ CAknMessageReaderLongPressDetector* iMessageReaderLongPressDetector;
+
+ CSubscriber* iAutolockStatusSubscriber;
+ RProperty iAutolockStatusProperty;
+ };
+
+#endif // __AKNSYSTEMPOPUP_H__
+
+// End of File