diff -r 000000000000 -r 2f259fa3e83a uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,374 @@ +/* +* 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: Class header for CAknSoftNotificationSubject. +* +*/ + +#ifndef __AKNSOFTNOTIFICATIONPLUGIN_H__ +#define __AKNSOFTNOTIFICATIONPLUGIN_H__ + +// INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include // Not the best for the purpose but will do just fine. +#include +#include +#include "AknSystemPopup.h" +#include "AknGroupedNotifierNote.h" +#include "AknNotifierControllerPlugin.h" +#include "aknprivatesoftnotificationparameters.h" +#include "aknmessagereaderlongpressdetector.h" // MAknGroupedNoteObserver + +class CAknSmsViewerLauncher; +class RDesReadStream; +class CAknSoftNotificationSubject; +class CAknDynamicSoftNoteEventManager; + +class TSoftNoteEntry + { +public: + TSoftNoteEntry() : iType(ENoSoftNotification), iId(0), iCount(0), iCustomId(0) {}; + TAknSoftNotificationType iType; + TInt iId; + TInt iCount; + TInt iCustomId; + }; + +// Stack entry for Custom Soft Notifications. +class CCustomNotifParams; + +NONSHARABLE_CLASS(AknSoftNoteSDObserver) : public MAknDialogMediatorObserver + { +public: + TAknDialogMediatorObserverCommand MediatorCommandL( TUid, TUid, TInt, const TDesC8& aData ); + void NotifyMediatorExit(){} + void SetSoftNotificationSubject( CAknSoftNotificationSubject* aSubject ); +private: + CAknSoftNotificationSubject* iSubject; + }; + +/** + * Soft notification plugin to EikSrv. + */ +NONSHARABLE_CLASS(CAknSoftNotificationSubject) : + public CBase, + public MEikSrvNotifierBase2, + public MAknGroupedNotifierNoteObserver, + public MAknKeyLockObserver, + public MSoftNotificationObserver, + public MAknMessageNotifierObserver + { +public: // Constructors and destructor + static CAknSoftNotificationSubject* NewL( + MAknKeyLockController* aKeyLockObserver, + CAknGlobalNoteSubject* aGlobalNoteController); + +public: // Functions from base classes + /** + * From MAknKeyLockController + * Called when the status of keylock changes. + * + * @param aStatus the new status of the keylock. + */ + virtual void KeyLockStatusChange(TKeyLockStatus aStatus); + + /** + * From MEikSrvNotifierBase. + * Method to release the EikSrv plugin + */ + void Release(); + + /** + * From MEikSrvNotifierBase. + * Method for registering the EikSrv plugin. + * + * @return TNotifierInfo Struct containing the plugin priorities etc. + */ + TNotifierInfo RegisterL(); + + /** + * From MEikSrvNotifierBase. + * Method for getting the notifier info. + * + * @return TNotifierInfo Struct containing the plugin priorities etc. + */ + TNotifierInfo Info() const; + + /** + * From MEikSrvNotifierBase. + * Method for starting the plugin. Synchronous version. + * + * @param aBuffer Buffer containing the parameters for the plugin, packaged in + * TPckg. + * @return This method will return KNullDesC. + */ + TPtrC8 StartL(const TDesC8& aBuffer); + + /** + * From MEikSrvNotifierBase. + * Method for starting the plugin. Asynchronous version. + * + * @param aBuffer Buffer containing parameters for the plugin, packaged in + * TPckg. + * @param aReplySlot Return value of any type. Not used in this case. + * @param aMessage RMessage to notify that the execution has ended. + */ + void StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage); + + /** + * From MEikSrvNotifierBase. + * Method for cancelling the plugin execution. + */ + void Cancel(); + + /** + * From MEikSrvNotifierBase. + * Method for updating the plugin while execution is in progress. + * + * @param aBuffer Buffer containing parameters for the plugin, packaged in + * TPckg. + * @return This method will return KNullDesC. + */ + TPtrC8 UpdateL(const TDesC8& aBuffer); + + /** + * From MEikSrvNotifierBase. + * This method is not used but is required because of pure virtuality in base class. + * + * @param aBuffer Buffer containing parameters for this plugin. + */ + void HandleMessageL(const TDesC8& aBuffer); + + /** + * From MAknGroupedNotifierNoteObserver. + * Called when user has pressed a key in the grouped soft notification dialog. + * + * @param aCommandId The id of the button the user pressed. + * @param aSelectedItem The item that was selected when the user pressed a key. + */ + void GroupedNoteCompletedL(TInt aCommandId, TAknGroupedNotifierItem aSelectedItem = EMaxItem); + + /** + * From MAknGroupedNotifierNoteObserver. + * Support for adding new items to grouped form. + * + * @since S60 3.0 + * @param aText Array into which add new texts (item amount cannot be changed after this). + * @param aOrder KeyArray for list to manage its entries, which must be uniqued (at a time) + * and these must not collide with fixed values defined in + * TAknGroupedNotifierItem. + */ + void AddItemsL(CDesCArray& aTexts, CArrayFix& aOrder); + + /** + * From MAknGroupedNotifierNoteObserver. + * Custom soft notifications may have custom softkeys. This method returns the softkeys + * and the accept softkey id for the given custom notification. + * + * @since S60 3.1 + * @param aCustomItem A custom notification for which to search softkeys. + * @param aSoftkeyResourceId On return, the softkeys resource identifier. + * @param aAcceptKeyId On return, the key that is used to accept the grouped notifier item, + * i.e. to launch the handler application. + * @param aLeftSoftkey Custom text for left softkey. + * @param aRightSoftkey Custom text for right softkey. + */ + void SoftkeysForCustomItem(TAknGroupedNotifierItem aCustomItem, TInt& aSoftkeyResourceId, + TInt& aAcceptKeyId, TDes& aLeftSoftkey, TDes& aRightSoftkey); + + // From MSoftNotificationObserver + void SoftNoteCompleted(TInt aId, TInt aCommand); + TBool ShowSoftNoteL(TInt aPriority, const TDesC& aText); + TBool CancelSoftNote(TInt aPriority); + +public: // from MAknMessageNotifierObserver + + /** + * From MAknMessageNotifierObserver. + * + * @return true if shown notifier is a message or a email + */ + TBool MessageNotifierShown(); + + /** + * From MAknMessageNotifierObserver. + * + * @return CEikButtonGroupContainer of the grouped note + */ + CEikButtonGroupContainer* ButtonGroupContainer(); + +private: + void ConstructL(); + + ~CAknSoftNotificationSubject(); + + /** + * The constructor is private. + */ + CAknSoftNotificationSubject( + MAknKeyLockController* aKeyLockObserver, + CAknGlobalNoteSubject* aGlobalNoteController); + + void HandleNotifierMessageL(const TDesC8& aBuffer, TInt& aNoteId ); + + /** + * The following method is called after the notifier has been started to reflect the changes + * to the UI mechanism. The parameter aType is the most recently requested soft notification + * type. + */ + void UpdateNoteL(TAknSoftNotificationType aType, const TDesC& aText, TInt aCount, TInt aCountChanged); + + void DisplayUngroupedNotifierL( + TAknSoftNotificationType aType, + const TDesC& aText, + TInt aCount = 0); + + void RemoveByType(TAknSoftNotificationType aType, TInt aId = 0); + + TAknSoftNotificationType TypeFromId(TInt aId); + void CompleteId(TInt aId); + void ScheduleGroupedNotifierL(); + void DoSoftNoteCompletedL(TInt aId, TInt aCommand); + + /** + * A helper method to show the grouped soft notification dialog. + */ + void ShowGroupedNotificationL(); + + /** + * Helper method to find out if a grouped soft notification should be formed. + */ + TBool IsGroupedFormed(); + + void LaunchSelectNetworkAppL(); + void LaunchUSSDAppL(); + void LaunchMissedCallsAppL(); + void LaunchNewMessagesAppL(); + void LaunchNewMailAppL(); + void LaunchNewCbsAppL(); + void LaunchNewVoiceMailAppL(TInt aType); + + void LaunchViewL( + const TVwsViewId& aViewId, + TUid aCustomMessageId, + const TDesC8& aCustomMessage); + + void SaveSoftNotificationsL(); + void SaveNoteL(RWriteStream& aFile, TSoftNoteEntry& aEntry); + + void LoadAndQueueSoftNotesL(); + void LoadAndQueueNoteL(RReadStream& aStream); + + void ClearAllNotes(); + + /** + * Method for resetting user inactivity timers (e.g. screen saver timer). + */ + void ReportUserActivity(); + + TBool CheckIfAlreadyExists(TAknSoftNotificationType aType); + + TBool AutoLockEnabled(); + + void SetNcnFlag(TBool aValue); + static TInt HandleNcnFlagStateChange(TAny *aPtr); + + void HandleCustomNoteCompletedL(CCustomNotifParams* aParams, TInt aCommand); + + /** + * Called when custom note has been canceled by the user. + * + * @param aParams Custom notification data. + * @param aCommand Command that canceled the notification. + */ + void HandleCustomNoteCanceledL( CCustomNotifParams* aParams, TInt aCommand ); + +private: // Data + TNotifierInfo iInfo; + MAknKeyLockController* iKeyLockController; + CAknGlobalNoteSubject* iGlobalNoteController; + + // The array keeps track of unselected soft notifications in priority order. + TInt iSoftNotificationAmounts[EMaxSoftNotification]; + + CArrayFixFlat* iSoftNoteEntryList; + TAknSoftNotificationType iLatestType; + + CAknGroupedNotifierNote* iGroupedNote; + CAknSmsViewerLauncher* iSmsViewer; + + /// Some of the data of CCustomNotifParams is referred from + /// CAknGlobalNoteSubject. Make sure the source is not deleted before + /// referrer is removed. + CCustomNotifParams* iCustomNoteParamsStack; + + friend class AknSoftNoteSDObserver; + +private: // New member functions. + CCustomNotifParams* SeekCustomNoteForId(TInt aID, TBool aSeekByGNoteId = EFalse); + void AddNewCustomNoteL(RDesReadStream& readStream, TInt aCount, TBool aNewNote = EFalse ); + void AddNewCustomNoteL(RReadStream& readStream, TInt aCount, TBool aNewNote = EFalse ); + void RemoveCustomNoteForId(TInt aID, TBool aSeekByGNoteId = EFalse); + void LaunchNewIMAppL(); + + /** + * Load unique identifier from persistent store. + */ + void LoadUniqueIdL(); + /** + * Save unique identifier to persistent store. + */ + void StoreUniqueIdL(); + /** + * Increases unique identifier counter and finds next free identifier. + * @return Next free unique identifier. + */ + TInt GenerateUniqueId(); + /** + * Write response from given parameters. + * @param aResponse Response buffer to write into. + * @param aNoteId Notification id to write. + */ + void WriteResponse( TDes8& aResponse, TInt aNoteId ) const; + +private: // New member data. + TBool iNotificationsSaved; + CIdle* iIdle; + static TInt SetIdleStateFalse(TAny* aThis); + TBool iKeysLocked; + +public: // To allow static method above access this. + TBool iIdleStateActive; + +private: + CAknMediatorFacade* iCoverClient; + AknSoftNoteSDObserver iObsStub; + /// Unique dynamic soft notification counter. + TInt iUniqueIdCounter; + /// Dynamic soft notification response buffer. Space for TInt (32bit). + TBuf8<4> iResponseMsg; + /// Not own. Dynamic soft notification event manager. + CAknDynamicSoftNoteEventManager* iDynamicSoftNoteManager; + /// Own. Central Repository to read messaging settings. + CRepository* iMessagingRepository; + }; + +#endif // __AKNSOFTNOTIFICATIONPLUGIN_H__ + +// End of File