diff -r 000000000000 -r 2f259fa3e83a uifw/AknGlobalUI/OldStyleNotif/Inc/AknSystemPopup.h --- /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 +#include +#include +#include +#include +#include +#include +#include +#include "AknNotifierControllerPlugin.h" +#include "AknPrivateImageLoader.h" +#include +#include +#include + +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 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 iRetPckg; + TNotifierInfo iInfo; + MAknKeyLockController* iKeyLockController; + CArrayFixFlat* 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