clock2/clockui/uilayer/clkdatetimeview/inc/clkdatetimeviewextension.h
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clock2/clockui/uilayer/clkdatetimeview/inc/clkdatetimeviewextension.h	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,449 @@
+/*
+* 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:   This is the header file for the CClkDateTimeViewExtension class.
+*
+*/
+
+#ifndef __CLK_DATETIMEVIEW_EXTENSION_H__
+#define __CLK_DATETIMEVIEW_EXTENSION_H__
+
+// System includes
+#include <e32base.h>
+#include <cenrepnotifyhandler.h>
+#include <badesca.h>
+
+//  User includes
+#include "clockecomobserver.h"
+
+// Forward includes
+class CClkDateTimeView;
+class CCoeEnv;
+class CClockEComListener;
+class CAknQueryValueTextArray;
+class CAknQueryValueText;
+class CAknPopupSettingPage;
+
+// Constants
+const TUid KTimeSourceInterfaceUID = { 0x200159A7 };
+
+// Class declaration
+/**
+* @class CClkDateTimeViewExtension
+* @brief Common "Date and Time" extension class.
+* @dll clkdatetimeview.dll
+*/
+class CClkDateTimeViewExtension : public CBase,
+								  public MCenRepNotifyHandlerCallback,
+								  public MClockEComObserver
+    {
+    public:				// Constructor and destructor
+
+        /**
+		* @brief Two-phased constructor.
+		* @param aParent The owner of the object, in our case CClkDateTimeView.
+		* @param aEnv The control environment.
+		* @return CClkDateTimeViewExtension* Pointer to the constructed object.
+		*/
+        static CClkDateTimeViewExtension* NewL( CClkDateTimeView* aParent, CCoeEnv* aEnv );		
+
+        /**
+		* @brief Destructor.
+		*/
+        ~CClkDateTimeViewExtension();
+        
+    public:             // From base classes
+        
+        /**
+        * @brief From MClockEComObserver. Called whenever the a new timesource plugin gets installed or uninstalled.
+        * @param aImplInfo The information of the plugin which got installed or uninstalled.
+        * @param aInstalled ETrue if a plugin has been installed, EFalse otherwise.
+        */
+        void NotifyPluginInstallUninstallL( const CImplementationInformation& aImplInfo, TBool aInstalled );
+		
+	public:				// New functions
+
+		/**
+		* @brief Handles a notification change in the string.
+		* @param aId The id of the string that has changed.
+		* @param aNewValue The new value of the string.
+		*/
+		void HandleNotifyStringL( TUint32 aId, const TDesC16& aNewValue );
+		
+		/**
+		* @brief Get the "Alarm Snooze Time" string.
+		* @return HBufC* Heap buffer pointer to the string requested.
+		*/
+		HBufC* GetAlarmSnoozeTimeStr();
+		
+		/**
+		* @brief Delete the constructed resource buffers.
+		*/
+		void DeleteResourceBuf();
+		
+		/**
+		* @brief Re-constructs the snooze time item for the listbox.
+		*/
+		void MakeSnoozeTimeItemL();
+		
+		/**
+		* @brief Gets the "Snooze Time" string.
+		* @return HBufC* Heap buffer pointer to the string requested.
+		*/
+		HBufC* GetSnoozeTimeStr();
+		
+		/**
+		* @brief Gets the worksdays currently selected on the phone.
+		* @return TUint
+		*/
+		TUint GetWorkDays();
+		
+		/**
+		* @brief Sets the new workdays.
+		* @param aWorkDays The new set of workdays.
+		*/
+		void SetWorkDays(TUint aWorkDays);
+		
+		/**
+		* @brief Constructs the workdays string.
+		*/
+		void ConstructWorkDaysStrL();
+		
+		/**
+		* @brief Gets the workdays string.
+		* @return HBufC* Heap buffer pointer to the string requested.
+		*/
+		HBufC* GetWorkDaysStr();
+		
+		/**
+		* @brief Gets the workdays list in descriptor format.
+		* @return CDesCArrayFlat* Pointer to a flat array of workdays list.
+		*/
+		CDesCArrayFlat* GetWorkDaysList();
+		
+		/**
+		* @brief Start listening for cenrep changes.
+		*/
+		void StartListeningL();
+		
+		/**
+		* @brief Stop listening for cenrep changes.
+		*/
+		void StopListening();
+		
+		/**
+		* @brief Get the previously set snooze time value.
+		* @return TInt The snooze time value.
+		*/		
+		TInt GetSnoozeTimeValue();
+		
+		/**
+		* @brief Set a new snooze time value.
+		* @param aNewValue New snooze time value.
+		*/	
+		void SetSnoozeTimeValue(TInt aSnoozeTimeValue);
+		
+		/**
+		* @brief Gets "Silent" string for tones.
+		* @return HBufC* Heap buffer pointer to the string requested.
+		*/	
+		HBufC* GetSilentToneStr();
+
+		/**
+		* @brief Set whether the date time view is launched by general settings or not.
+		*/		
+		void SetUsedByGS();
+		
+		/**
+		* @brief Returns whether the current instance of date time view is launched by GS.
+		* @return TBool ETrue if GS is using datetime.
+		*/
+		TBool UsedByGS();
+		
+		/**
+		* @brief Returns whether the alarm tone list in use currently.
+		* @return TBool ETrue if alarm tone list in use.
+		*/
+		TBool AlarmToneListInUse();		
+		
+		/**
+		* @brief Sets flag to indicate the alarm tone list in use .
+		* @param aAlarmToneListInUse Tells whether list is in use or not.
+		*/
+		void SetAlarmToneListInUse( TBool aAlarmToneListInUse );		
+
+		/**
+        * @brief Tells whether the city is unlocalised or not.
+        * @return TBool ETrue UnLocalised city match is found.
+        */
+		TBool IsUnLocalisedCity();
+		
+		/**
+        * @brief Sets the flag for unlocalised city.
+        * @param aIsUnlocalisedCity Flag for unlocalised city.
+        */
+		void UnLocalisedCity( TBool aUnlocalisedCity );
+		
+		/**
+		* @brief Tells if the automatic time update page is open or not.
+		* @return TBool ETrue if the page is open, EFalse otherwise.
+		*/
+		TBool IsAutoTimeUpdatePageOpen();
+		
+		/**
+		* @brief Setter function for iAutoTimeUpdatePageOpen.
+		*        Called by the view when the automatic time update page is open.
+		*/
+        void SetAutoTimeUpdatePageOpen( TBool aOpen );
+        
+        /**
+        * @brief Getter function for the query text array.
+        * @return CAknQueryValueTextArray The pointer to the newly allocated query text array.
+        */
+        CAknQueryValueTextArray* GetQueryTextArray();
+        
+        /**
+        * @brief Setter function for iTextArray.
+        * @param aTextArray
+        */
+        void SetQueryTextArray( CAknQueryValueTextArray* aTextArray );
+        
+        /**
+        * @brief Getter function for iQueryValue
+        * @return CAknQueryValueText The pointer to the newly allocated value text.
+        */
+        CAknQueryValueText* GetQueryValueText();
+        
+        /**
+        * @brief Setter function for iQueryValue.
+        * @param aQueryValueText
+        */
+        void SetQueryValueText( CAknQueryValueText* aQueryValueText );
+        
+        /**
+        * @brief Setter function for iSettingPage.
+        * @param aPopupSettingPage
+        */
+        void SetPopupSettingPage( CAknPopupSettingPage* aPopupSettingPage );
+        
+        /**
+        * @brief Getter function for iPluginList.
+        * @return CDesCArrayFlat* The pointer to the newly allocated plugin list.
+        */
+        CDesCArrayFlat* GetPluginList();
+        
+        /**
+        * @brief Setter function for iPluginList.
+        * @param aPluginList
+        */
+        void SetPluginList( CDesCArrayFlat* aPluginList );
+        
+        /**
+        * @brief Getter function for iActiveProtocol. Returns the currently active protocol UID.
+        */
+        TInt GetActiveProtocol();
+        
+        /**
+        * @brief Setter function for iActiveProtocol. Value is 1 when all the protocols are activated.
+        * Value is 0 when all the protocols are deactivated.
+        */
+        void SetActiveProtocol( TInt aProtocol );
+        
+        /**
+        * @brief Shows a popup setting page.
+        * @return TInt The id of the selected protocol.
+        */
+        TInt QueryPopupSettingPageL();
+		
+	private:            // New functions
+        
+		/**
+		* @brief C++ default constructor.
+		* @param aParent The owner of the object, in our case CClkDateTimeView.
+		* @param aEnv The control environment.
+		*/
+        CClkDateTimeViewExtension( CClkDateTimeView* aParent, CCoeEnv* aEnv );
+        
+		/**
+		* @brief Performs the 2nd phase of two-phase construction.
+		*/
+        void ConstructL();
+        
+        /**
+        * @brief Called when the page for auto time update is opened and some plugin gets 
+        *        installed at that very moment. This will update the page with the newly added or removed plugin.
+        */
+        void RefreshAutoTimeUpdatePageL();
+		
+	private:            // Data
+        
+		/**
+		* @var iAlarmSnoozeTime
+		* @brief The string holder for String "Alarm Snooze Time".
+		*/
+        HBufC*                      iAlarmSnoozeTime;
+        
+		/**
+		* @var iSnoozeTime
+		* @brief The string holder for holding the value of snooze time.
+		*/
+        HBufC*                      iSnoozeTime;
+        
+		/**
+		* @var iSnoozeTimeValue
+		* @brief The value of snooze time currently on the phone.
+		*/
+        TInt                        iSnoozeTimeValue;
+        
+		/**
+		* @var iWorkDays
+		* @brief This holds the workdays currently selected on the phone.
+		*/
+        TUint                       iWorkDays;
+        
+		/**
+		* @var iWorkDaysStr
+		* @brief This will hold the currently chosen workdays on the phone in string format.
+		*/
+        HBufC*                      iWorkDaysStr;
+        
+		/**
+		* @var iWorkDaysList
+		* @brief Array to hold the workdays list.
+		*/
+        CDesCArrayFlat*             iWorkDaysList;
+        
+		/**
+		* @var iWorkDaysShortList
+		* @brief Array of workdays list in short format.
+		*/
+        CDesCArrayFlat*             iWorkDaysShortList;
+        
+		/**
+		* @var iAlarmToneNotifier
+		* @brief CenRep handler for alarm tone change.
+		*/
+        CCenRepNotifyHandler*       iAlarmToneNotifier;
+        
+		/**
+		* @var iSnoozeValueNotifier
+		* @brief CenRep handler for snooze time change.
+		*/
+        CCenRepNotifyHandler*       iSnoozeValueNotifier;
+        
+		/**
+		* @var iRepository
+		* @brief Object of CenRep.
+		*/
+        CRepository*                iRepository;
+        
+		/**
+		* @var iSilentTone
+		* @brief String holder to hold "Silent" string.
+		*/
+        HBufC*                      iSilentTone;
+        
+		/**
+		* @var iUsedByGS
+		* @brief ETrue if datetime is being used by GS.
+		*/
+        TBool                       iUsedByGS;
+        
+		/**
+		* @var iParent
+		* @brief Pointer to the owner of this.
+		*/
+        CClkDateTimeView*           iParent;
+        
+		/**
+		* @var iEnv
+		* @brief The control environment.
+		*/
+        CCoeEnv*				    iEnv;
+		
+		/**
+		* @var iAlarmToneListInUse
+		* @brief Flag for alarm tone list, ETrue if list in use.
+		*/
+		TBool					    iAlarmToneListInUse;
+        
+        /**
+        * @var iIsUnlocalisedCity
+        * @brief Returns ETrue or EFalse depending on the unlocalised city.
+        */
+        TBool                       iUnlocalisedCity;
+        
+        /**
+        * @var iClockEComListener
+        * @brief Listens for changes in the ECOM registry.
+        */
+        CClockEComListener*         iClockEComListener;
+        
+        /**
+        * @var iAutoTimeUpdatePageOpen
+        * @brief ETrue if the automatic time update page is being shown, EFalse otherwise
+        */        
+        TBool                       iAutoTimeUpdatePageOpen;
+        
+        /**
+        * @var iTextArray
+        * @brief The array for holding text shown in the settings page.
+        */
+        CAknQueryValueTextArray*    iTextArray;
+        
+        /**
+        * @var iQueryValue
+        * @brief The is updated with user selection.
+        */
+        CAknQueryValueText*         iQueryValue;
+        
+        /**
+        * @var iSettingPage
+        * @brief The settings page pointer.
+        */
+        CAknPopupSettingPage*       iSettingPage;
+        
+        /**
+        * @var iPluginList
+        * @brief The array for displaying the plugin list to the user
+        */
+        CDesCArrayFlat*             iPluginList;
+        
+        /**
+        * @var iActiveProtocol
+        * @brief Holds 1 if all the protocols are active and 0 otherwise.
+        */
+        TInt                         iActiveProtocol;
+        
+        /**
+        * @var iAutomaticTimeUpdateString
+        * @brief String holder for the string "Network Operator Time"
+        */
+        HBufC*                      iAutomaticTimeUpdateString;
+        
+        /**
+        * @var iPrevTextArray
+        * @brief The array for holding text shown in the settings page.
+        */
+        // CAknQueryValueTextArray*    iPrevTextArray;
+        
+        /**
+        * @var iPrevQueryValue
+        * @brief The is updated with user selection.
+        */
+        // CAknQueryValueText*         iPrevQueryValue;
+	};
+    
+#endif      // __CLK_DATETIMEVIEW_EXTENSION_H__
+
+// End of File