uifw/AknGlobalUI/OldStyleNotif/Inc/AknGroupedNotifierNote.h
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AknGlobalUI/OldStyleNotif/Inc/AknGroupedNotifierNote.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,259 @@
+/*
+* Copyright (c) 2002-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:  Grouped notifier note for soft notifications.
+*
+*/
+
+#ifndef __AKNGROUPEDNOTIFIERNOTE_H__
+#define __AKNGROUPEDNOTIFIERNOTE_H__
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <aknstaticnotedialog.h>
+#include <eikcmobs.h>               // for MEikCommandObserver
+#include <AknQueryDialog.h>
+#include <aknlistquerydialog.h>
+#include "AknSystemPopup.h"         // for MAknKeyLockObserver
+
+// FORWARD DECLARATIONS
+class MAknKeyLockController;
+class MAknKeyLockObserver;
+
+// DATA TYPES
+enum TAknGroupedNotifierItem
+    {
+    EMissedCalls = 0,
+    ENewMessages,
+    ENewChatMsgs,
+    ENewMails,
+    EMaxItem
+    };
+    
+// CONSTANTS
+const TInt KAknMaxGroupedNoteItemTextLength = 50;    
+
+// CLASS DECLARATIONS
+
+/**
+ * Mixin class for the grouped soft notification dialog callback.
+ *
+ * @lib aknoldstylenotif.lib
+ */
+class MAknGroupedNotifierNoteObserver
+    {
+public:
+    /**
+     * This method is called when the note is completed (either by accepting or discarding 
+     * the note).
+     *
+     * @param aCommandId The id of the button the user pressed.
+     * @param aSelectedItem The selected item enum when the note has been accepted or EMaxItem 
+     *                      if it has been discarded
+     */
+    virtual void GroupedNoteCompletedL(
+        TInt aCommandId,
+        TAknGroupedNotifierItem aSelectedItem = EMaxItem) = 0;
+    
+    /**
+     * Support for adding new items to grouped form.
+     *
+     * @param aTexts Array into which add new texts.
+     * @param aOrder Key array for list to manage its entries.
+     */    
+    virtual void AddItemsL(
+        CDesCArray& aTexts, 
+        CArrayFix<TInt>& aOrder) = 0;
+
+    /**
+     * 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.
+     */
+    virtual void SoftkeysForCustomItem(
+        TAknGroupedNotifierItem aCustomItem, 
+        TInt& aSoftkeyResourceId, 
+        TInt& aAcceptKeyId,
+        TDes& aLeftSoftkey,
+        TDes& aRightSoftkey) = 0;
+    };
+
+/**
+ * Grouped soft notification dialog.
+ *
+ * @lib aknoldstylenotif.lib  
+ */
+NONSHARABLE_CLASS(CAknGroupedNotifierNote) : public CAknListQueryDialog, public MDesCArray
+    {
+public: // Constructors and destructor
+    /**
+     * C++ default constructor.
+     */
+    CAknGroupedNotifierNote();
+            
+    /**
+     * Destructor.
+     */
+    virtual ~CAknGroupedNotifierNote();
+
+public: // New functions
+    /**
+     * Construct method.
+     * 
+     * @param aNoteObserver The observer to call after the notifier is completed.
+     */
+    void ConstructL(MAknGroupedNotifierNoteObserver* aNoteObserver);
+
+    /**
+     * This method is for setting the number of a certain item - for example, to set the number
+     * of missed calls to 7. If an item count is set to 0, the note should check if the list 
+     * has less than two items left and if so call the NotifierItemCounteLessThanTwo()-method. 
+     
+     * @param aItem Missed calls, new messages, new mail or new chat messages.
+     * @param aAmount The amount of items specified by aItem.
+     * @param aHighlight ETrue to set the item highlighted.
+     */
+    void SetItemAmountL(TAknGroupedNotifierItem aItem, TInt aAmount, TBool aHighlight = EFalse);
+
+public: // Functions from base classes.
+    /**
+     * From CEikDialog.
+     * This function is called by the dialog framework before the dialog is sized and laid out.
+     */
+    void PreLayoutDynInitL();
+    
+    /**
+     * From CEikDialog.
+     * This function is called by the dialog framework after the dialog has been sized and laid 
+     * out, but before it has been activated.
+     */    
+    void PostLayoutDynInitL();
+            
+    /**
+     * From CCoeControl.
+     * Method to be called by framework when keypress occurs
+     *
+     * @param aKeyEvent The key pressed.
+     * @param aType Type of key pressed (EEventKeyUp or EEventKeyDown for instance).
+     * @return EKeyWasNotConsumed or EKeyWasConsumed depending whether key was processed or not.
+     */
+    TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
+    
+    /**
+     * From MDesCArray. 
+     * Gives number of items inside an array.
+     *
+     * @return Number of items.
+     */
+    TInt MdcaCount() const;
+    
+    /**
+     * From MDesCArray.
+     * Returns a string from index.
+     *
+     * @param aIndex The string to be returned.
+     * @return The string.
+     */
+    TPtrC MdcaPoint(TInt aIndex) const; 
+    
+    /**
+     * From CAknListQueryDialog.
+     * Handle pointer event.
+     */
+    void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+                
+protected: // Functions from base classes.
+    /**
+     * From CEikDialog. 
+     * Method to be called when the user presses a softkey.
+     *
+     * @param aButtonId The id of the softkey that the user just pressed.
+     * @return ETrue if exit is to be performed, EFalse if not.
+     */
+    TBool OkToExitL(TInt aButtonId);
+
+    /**
+     * From CCoeControl.
+     * Sets the control to be ready for drawing.
+     */
+    void ActivateL();
+    
+    /**
+     * From CCoeControl
+     * Event handling section e.g for Listbox events.
+     * @param aControl Pointer to a control.
+     * @param aEventType The event type.
+     */    
+    void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType);    
+
+private:
+    enum TNoteAction
+        {
+        EDoNothing = 0,
+        ELaunchItemHandler,
+        EExitNote
+        };
+
+private:
+    TBool AutoLockEnabled();
+        
+    // Methods to handle order of items.
+    void RemoveType(TAknGroupedNotifierItem aItem);
+    void InsertType(TAknGroupedNotifierItem aItem);
+    
+    // Sets the correct softkeys depending on the focused item.
+    void UpdateSoftkeysL();
+
+    /**
+     * From MEikCommandObserver - this method is called by framework when a command is issued.
+     */
+    virtual void ProcessCommandL(TInt aCommandId);
+ 
+    virtual void CEikDialog_Reserved_1();
+    virtual void CEikDialog_Reserved_2();   
+    virtual void CAknDialog_Reserved();
+    virtual void CAknQueryDialog_Reserved();
+
+private: // Data
+    MAknGroupedNotifierNoteObserver* iNoteObserver;
+    TInt iCount[EMaxItem]; // how many calls etc. 
+    CArrayFix<TInt> *iOrder; // which order are these. (ownership)
+    CDesCArray *iTexts; // (ownership)
+    CDesCArray *iTextsPlural; // (ownership)
+    __MUTABLE TBuf<KAknMaxGroupedNoteItemTextLength> iBuffer;
+    TInt iSelectedItem;
+    TInt iHighlightedItem;
+    
+    // Dynamic softkeys for currently focused custom grouped notifier item.
+    TInt iCustomNoteSoftkeys; 
+    
+    // Accept softkey for currently focused custom grouped notifier item.
+    TInt iCustomNoteAcceptKeyId;
+    
+    // Whether custom softkeys were used on previously focused notifier item
+    TBool iCustomNoteSoftkeysAssigned;
+    
+    TInt iAutoLockStatus;
+    };
+
+#endif // __AKNGROUPEDNOTIFIERNOTE_H__
+            
+// End of File