diff -r 000000000000 -r f979ecb2b13e clock2/clockui/uilayer/clkdatetimeview/inc/clkdatetimeview.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clock2/clockui/uilayer/clkdatetimeview/inc/clkdatetimeview.h Tue Feb 02 10:12:19 2010 +0200 @@ -0,0 +1,958 @@ +/* +* 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 CClkDateTimeView class. +* +*/ + +#ifndef __CLK_DATETIMEVIEW_H__ +#define __CLK_DATETIMEVIEW_H__ + +// System includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// User includes +#include "clkmdlobserver.h" + +// Constants +const TInt KMaxItemLength( 128 ); +const TInt KMaxValueLength( 64 ); +const TInt KNotiferPriority( CActive::EPriorityIdle ); +const TUid KMainViewId = { 1 }; +const TUid KClkDateTimeViewId = { 10 }; + +// Forward declaration +class CClockAppUi; + +// Literals +_LIT( KRESOURCE, "z:\\resource\\apps\\clock.rsc" ); +_LIT( KHardCodedAlarmTone, "z:\\resource\\sounds\\simple\\clock.rng" ); // Unused variables but kept to preserve BC. + +/** +* @class TClkDateTimeInfo +* @brief Class containing date and time information. +*/ +class TClkDateTimeInfo + { + public: // Data + + /** + * @var iTime + * @brief The time. + */ + TTime iTime; + + /** + * @var iDateFormat + * @brief The current date format. + */ + TDateFormat iDateFormat; + + /** + * @var iDateSepar + * @brief The current date separator. + */ + TInt iDateSepar; + + /** + * @var iTimeFormat + * @brief The current time format. + */ + TTimeFormat iTimeFormat; + + /** + * @var iTimeSepar + * @brief The current time separator. + */ + TInt iTimeSepar; + + /** + * @var iClockFormat + * @brief The current clock format. + */ + TClockFormat iClockFormat; + + /** + * @var iGMTOffset + * @brief The current gmt offset. + */ + TTimeIntervalSeconds iGMTOffset; + + /** + * @var iNITZ + * @brief Holds the Nitz plugin state. + */ + TBool iNITZ; + }; + +/** +* @enum TClkDateTimeViewPanic +* @brief The CClkDateTimeView panic codes. +*/ +enum TClkDateTimeViewPanic + { + EClkDateTimeViewBadLocale, + EClkDateTimeViewBadCommandId, + EClkDateTimeViewBadItemIndex + }; + +#ifdef _DEBUG +// Function prototypes +GLREF_C void Panic( TClkDateTimeViewPanic aPanic ); +#endif // _DEBUG + +// Forward declarations +class CClkDateTimeViewContainer; +class CClkUiClkSrvModel; +class CClkUiMdlIntermediateObserver; +class CEnvironmentChangeNotifier; +class CDRMHelper; +class CClkDateTimeViewExtension; +class RConeResourceLoader; +class CTzId; + +// Class declaration +/** +* @class CClkDateTimeView +* @brief Common "Date & Time" settings view class. This is a dynamic link library which, +* provides APIs for using the common Date and Time Settings view. +* The Clock and General Settings applications make use of this. +* @dll clkdatetimeview.dll +*/ +class CClkDateTimeView : public CAknView, + public MEikListBoxObserver, + public MClkModelObserver + { + public: // Constructors and destructor + + /** + * @brief Two-phased constructor, returned value is also kept on the CleanupStack + * @param aViewId Id of a view which is changed to, + * when Back softkey is pressed. It is ignored when aClockUse is ETrue. + * @param aClockUse ETrue means Clock application uses this. + * EFalse means any application except Clock uses this. + * @return CClkDateTimeView* Constructed CClkDateTimeView object. + */ + IMPORT_C static CClkDateTimeView* NewLC( TUid aViewId, TBool aClockUse = EFalse ); + + /** + * Destructor. + */ + IMPORT_C ~CClkDateTimeView(); + + public: // Functions from base classes + + /** + * @brief From CAknView. Returns this view Id. + * @return TUid The view id. + */ + TUid Id() const; + + /** + * @brief From MEikCommandObserver. Handles commands. + * @param aCommandId It is the value of the command to be handled in the setting. + */ + void HandleCommandL( TInt aCommandId ); + + /** + * @brief From MClkModelObserver. Called when the model is changed. + * @param aNotification The cause of the notification. + */ + void HandleUpdateL( TInt aNotification ); + + /** + * @brief From CCoeAppUi. Called when the application switches from foreground to background and vice versa. + * @param aForeground ETrue if foreground, EFalse if sent to background. + */ + void HandleForegroundEventL( TBool aForeground ); + + /** + * @brief From MEikMenuObserver. Intialize the menu dynamically. + * @param aResourceId The resource id for the option popup menu + * @param aMenuPane The dynamic menupane to delete the help cmd from the menu + */ + void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); + + public: // New functions + + /** + * @brief Moves the current item to the top of the list items. + */ + IMPORT_C void InitCurrentItem(); + + /** + * @brief Handle options changed by system. + * @param aChange It indicates a cause of the change. + */ + void HandleSettingsChangeL( const TInt aChange ); + + /** + * @brief Increments the current list item to handle the task swapping event. + */ + void IncCurrentItem(); + + /** + * @brief Decrements the current list item to handle the task swapping event. + */ + void DecCurrentItem(); + + /** + * @brief Gets a flag meaning that Clock application is using. + * @return ETrue means the ClockApp uses this object. + * EFalse means the ClockApp doesn't use this object. + */ + TBool IsClockInUse() const; + + /** + * @brief Gets a previous view id. + * @return TVwsViewId + */ + TVwsViewId PrevViewId() const; + + /** + * @brief Handles a softkey event "Change". + * @param aItemId The current item id of the settings list box. + */ + void HandleChangeCmdL(const TInt aItemId); + + /** + * @brief When an alarm tone / snooze time is changed , through general settings, it gets updated in the clock settings. + * @param aId Id which has changed + * @param aNewValue Update cenrep value + */ + void UpdateDTViewL( TUint32 aId, const TDesC16& aNewValue ); + + /** + * @brief Returns the string "Off" when aStrVal is EFalse and string "On" when aStrVal is ETrue. + * Called from extension when the automatic time update page has to be modified dynamically. + * @param aStrVal + * @return The string containing the value "Off" + */ + HBufC& GetAutoTimeUpdateStr( TBool aStrVal ); + + /** + * @brief Returns the application's appui. + * @return CClockAppUi The pointer to the clock application ui. + */ + CClockAppUi* ClockApplicationUi(); + + protected: // Functions from base classes + + /** + * @brief From CAknView. Activates this view. + * @param aPrevViewId The view id for the view from where the date time view setting called. + * @param aCustomMessageId Not used for the implementation. + * @param aCustomMessage Not used for the implementation. + */ + void DoActivateL( const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage ); + + /** + * @brief From CAknView.Deactivates this view. + */ + void DoDeactivate(); + + /** + * @brief From MEikListBoxObserver. Handles an event happend in aListBox. + * @param aListBox The pointer to the ListBox in date time setting view. + * @param aEventType The type of the event on the ListBox. + */ + void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ); + + protected: // New functions + + /** + * @brief Performs the 2nd phase of two-phase construction. + * @param aViewId Id of a view which is changed to, when Back softkey is pressed. It is ignored when aClockUse is ETrue. + * @param aClockUse ETrue means Clock application uses. EFalse means any application except Clock uses. + */ + void ConstructL( TUid aViewId, TBool aClockUse ); + + private: // New functions + + /** + * @brief Returns the index of the country. + * @param aGroupId The groupid of the selected city. + * @param aCountryList Pointer to the list of the Countries. + * @return TInt The index of the country in the list box for a given group id. + */ + TInt IndexOfCountry( TInt aGroupId, CTzLocalizedCityGroupArray* aCountryList ); + + /** + * @brief Reads the resources for settings list. + */ + void GetResourcesL(); + + /** + * @brief Makes the list box items. + */ + void PopulateListBoxL(); + + /** + * @brief Updates the list box items. + * @param aItemId An item id of the listbox. + */ + void UpdateListBoxL(TInt aItemId); + + /** + * @brief Updates all items. + */ + void UpdateAllL(); + + /** + * @brief Updates the date and the time. + * @param aTime The new time. + * @return error code + */ + TInt SetDateTimeL(TTime& aTime); + + /** + * @brief Updates the Workdays values. + */ + void SetWorkDays(); + + /** + * @brief Updates the date format. + */ + void SetDateFormat(); + + /** + * @brief Updates the date separator. + */ + void SetDateSeparator(); + + /** + * @brief Updates the time format. + */ + void SetTimeFormat(); + + /** + * @brief Updates the time format. + */ + void SetTimeSeparator(); + + /** + * @brief Updates the clock type. + */ + void SetClockType(); + + /** + * @brief Gets the currently active protocol. + */ + void GetActiveProtocolL(); + + /** + * @brief Gets the device's setting values. + */ + void SettingsL(); + + /** + * @brief Makes the date item in the list box. + */ + void MakeDateItemL(); + + /** + * @brief Makes the time zone item in the list box. + */ + void MakeZoneItemL(); + + /** + * @brief Makes the date format item in the list box. + */ + void MakeDateFormatItem(); + + /** + * @brief Makes the date separator item in the list box. + */ + void MakeDateSeparItem(); + + /** + * @brief Makes the time item in the list box. + */ + void MakeTimeItemL(); + + /** + * @brief Makes the time format item in the list box. + */ + void MakeTimeFormatItem(); + + /** + * @brief Makes the time separator item in the list box. + */ + void MakeTimeSeparItem(); + + /** + * @brief Makes the automatic time update setting item in the list box. + */ + void MakeAutomaticTimeUpdateItem(); + + /** + * @brief Makes the Workdays item in the list box. + */ + void MakeWorkDaysItemL(); + + /** + * @brief Makes the clock control type item in the list box. + */ + void MakeClockTypeItem(); + + /** + * @brief Makes the clock alarm tone item in the list box. + */ + void MakeClockAlarmToneItem(); + + /** + * @brief Makes the clock snooze time item in the list box. + */ + void MakeClockSnoozeTimeItemL(); + + /** + * @brief Deletes the buffers used for the list box resources. + */ + void DeleteResourceBuf(); + + /** + * @brief Gets the date format of the device. + * @return TInt The enum const for respective dateformat + */ + TInt DateFmt(); + + /** + * @brief Handles a back softkey command. + */ + void HandleBackCmdL(); + + /** + * @brief Handles a Workdays command. + */ + void HandleWorkDaysCmdL(); + + /** + * @brief Handles a date command. + */ + void HandleDateCmdL(); + + /** + * @brief Handles a date format command. + */ + void HandleDateFrmtCmdL(); + + /** + * @brief Handles a date separator command. + */ + void HandleDateSeparCmdL(); + + /** + * @brief Handles a time command. + */ + void HandleTimeCmdL(); + + /** + * @brief Handles a zone command. + */ + void HandleZoneCmdL(); + + /** + * @brief Handles a time format command. + */ + void HandleTimeFrmtCmdL(); + + /** + * @brief Handles a time separator command. + */ + void HandleTimeSeparCmdL(); + + /** + * @brief Handles the automatic time update command. + * @param aDraw ETrue means this redraws the time update item. + * EFalse means this doesn't redraw the time update item. + */ + void HandleAutomaticTimeUpdateCmdL( TBool aDraw = ETrue ); + + /** + * @brief Handles a clock type command. + */ + void HandleClockTypeCmdL(); + + /** + * @brief opens file list resource reader. + * @param aResourceLoader Used to open the required resource file + */ + void OpenFileListResourceLC( RConeResourceLoader& aResourceLoader ); + + /** + * @brief Handles a clock alarm tone command. + */ + void HandleClockAlarmToneCmdL(); + + /** + * @brief Handles a clock alarm snooze command. + */ + void HandleClockSnoozeTimeCmdL(); + + /** + * @brief Shows a popup setting page. + * @param aItemArray containing setting items. + * @param aIndex an index of initial item. + * @param aLabel a text of label. + * @return an index of selected item. + */ + TInt QueryPopupSettingPageL( CDesCArray& aItemArray, TInt aIndex, const TDesC& aLabel ); + + /** + * @brief Callback when enviroment changed. + * @param aThis This class. + * @return TInt ETRUE or EFALSE + */ + static TInt DoNotiferCallbackL( TAny* aThis ); + + /** + * @brief Displays confirmation note saying Automatic time update will be switched off. + */ + void ShowAutomaticTimeUpdateOffNoteL(); + + /** + * @brief Callback every interval time. + * @param aThis This class. + * @return TInt ETRUE or EFALSE + */ + static TInt TimerCallback( TAny* aThis ); + + /** + * @brief Deletes ProfileApp's resource file. + * @param aThis This class. + */ + static void DeleteResFile(TAny* aThis); + + /** + * @brief Removes registration of protected (automated) content. This means that unless some other application uses same media, no expiration notes are shown. + * @param aFile Full filename of the media. + */ + void UnRegisterSound(const TFileName& aFile); + + /** + * @brief Append the item in the list box. + * @param aDes The descriptor in the ListBox of date & time view + */ + void AppendToItem(const TDesC& aDes); + + /** + * @brief Insert the item in List box. + * @param aDes Descriptor to be inserted + */ + void InsertToItem(const TDesC& aDes); + + /** + * @brief Unregister and reregister the phone to network when NITZ turned ON. + */ + void UnregisterAndReregisterL(); + + /** + * @brief Make the GMT String to be displayed in DateTimeView. + * @param aUtcOffset Offset from UTC + */ + void MakeGmtOffsetStringL(TInt aUtcOffset); + + /** + * @brief Displays the list of zones and selects. + * @param nitz is ETrue is nitz is activated and EFalse if it is not activated + */ + void SelectZoneL(TBool nitz); + + /** + * @brief Constructs the GMT string to be displayed in + * DateTimeView list. + */ + void ConstructGmtStringL(); + + /** + * @brief Tells whether DST is in effect for the time zone. + * @param aTimeZoneId Provides the Timezone id + * @return TBool ETrue if Dst is on and EFalse if Dst is off + */ + TBool IsDstOnL(TInt aTimeZoneId); + + /** + * @brief Shows information note if alarms exists + */ + void ShowAlarmExistNoteL(); + + /** + * @brief Gets the offset with DST for the given timezone id. + * @param aDstOffset This will contain the DST offset obtained from the rules. + * @param aTzId The timezone id of zone for which we need the DST offset. + */ + void GetOffSetWithDstL( TInt32& aDstOffset, const CTzId& aTzId ); + + /** + * @brief Checks if the DST changes will happen in the next 7 days. + * Will show an information note to the user in that case. + * @return TBool ETrue if remaining time note has to be displayed. + */ + TBool CheckForDSTChangesL(); + + /** + * @brief Resets the network and activates the plugin selected by the user. + * @param aPluginId The Id of the plugin to activate. + */ + void ActivateAllPluginL(); + + /** + * @brief Checks if the alarm tone selected by the user exists. If not, it + * displays an information note to the user. + */ + void CheckAlarmToneExistsL(); + + private: // Data + + /** + * @var iSrvMdl + * @brief The clockserver model. + */ + CClkUiClkSrvModel* iSrvModel; + + /** + * @var iModelObserver + * @brief The clockserver observer object. + */ + CClkUiMdlIntermediateObserver* iModelObserver; + + /** + * @var iContainer + * @brief The container object. + */ + CClkDateTimeViewContainer* iContainer; + + /** + * @var iExtension + * @brief The CClkDateTimeViewExtension object. + */ + CClkDateTimeViewExtension* iExtension; + + /** + * @var iTimer + * @brief The periodic timer to keep the ui time updated. + */ + CPeriodic* iTimer; + + /** + * @var iOffset + * @brief The resource file offset. + */ + TInt iOffset; + + /** + * @var iDate + * @brief String holder for the string "Date" + */ + HBufC* iDate; + + /** + * @var iDateFrmt + * @brief String holder for the string "Date Format" + */ + HBufC* iDateFrmt; + + /** + * @var iDateSepar + * @brief String holder for the string "Date Format" + */ + HBufC* iDateSepar; + + /** + * @var iTime + * @brief String holder for the string "Time" + */ + HBufC* iTime; + + /** + * @var iZoneString + * @brief String holder for the string "Date Format" + */ + HBufC* iZoneString; + + /** + * @var iZone + * @brief String holder for the string "" + */ + HBufC* iZone; + + /** + * @var iTimeFrmt + * @brief String holder for the string "Time Format" + */ + HBufC* iTimeFrmt; + + /** + * @var iTimeSepar + * @brief String holder for the string "Date Format" + */ + HBufC* iTimeSepar; + + /** + * @var iClockType + * @brief String holder for the string "Date Format" + */ + HBufC* iClockType; + + /** + * @var iAbbrev24H + * @brief String holder for the string "Date Format" + */ + HBufC* iAbbrev24H; + + /** + * @var iAbbrev12H + * @brief String holder for the string "Date Format" + */ + HBufC* iAbbrev12H; + + /** + * @var iLocalTime + * @brief String holder for the string "Date Format" + */ + HBufC* iLocalTime; + + /** + * @var iAnalog + * @brief String holder for the string "Date Format" + */ + HBufC* iAnalog; + + /** + * @var iDigital + * @brief String holder for the string "Date Format" + */ + HBufC* iDigital; + + /** + * @var iTone + * @brief String holder for the string "Clock Alarm Tone" + */ + HBufC* iTone; + + /** + * @var iDST + * @brief String holder for the string "" + */ + HBufC* iDST; + + /** + * @var iDSTOn + * @brief String holder for the string "" + */ + HBufC* iDSTOn; + + /** + * @var iDSTOff + * @brief String holder for the string "" + */ + HBufC* iDSTOff; + + /** + * @var iTimeZone + * @brief String holder for the string "Timezone" + */ + HBufC* iTimeZone; + + /** + * @var iGMTPrefixTxt + * @brief String holder for the string "GMT" + */ + HBufC* iGMTPrefixTxt; + + /** + * @var iAutomaticTimeUpdateOn + * @brief String holder for the string "Network time" + */ + HBufC* iAutomaticTimeUpdateOn; + + /** + * @var iAutomaticTimeUpdateOff + * @brief String holder for the string "Off" + */ + HBufC* iAutomaticTimeUpdateOff; + + /** + * @var iAutomaticTimeUpdateString + * @brief String holder for the string "Network Operator Time" + */ + HBufC* iAutomaticTimeUpdateString; + + /** + * @var iIsClockInUse + * @brief Indicates wheather clock is in use or not. + */ + TBool iIsClockInUse; + + /** + * @var iViewId + * @brief View id of the view, that has launched datetime view. + */ + TUid iViewId; + + /** + * @var iPrevViewId + * @brief View id. + */ + TVwsViewId iPrevViewId; + + /** + * @var iNotifier + * @brief The CEnvironmentChangeNotifier object. + */ + CEnvironmentChangeNotifier* iNotifier; + + /** + * @var iDateFrmtItemLists + * @brief Array of date format items. + */ + CDesCArrayFlat* iDateFrmtItemLists; + + /** + * @var iDateSeparItemLists + * @brief Array of date separator items. + */ + CDesCArrayFlat* iDateSeparItemLists; + + /** + * @var iTimeSeparItemLists + * @brief Array of time separator items. + */ + CDesCArrayFlat* iTimeSeparItemLists; + + /** + * @var iSoundOffTxt + * @brief String holder for string "Off". + */ + HBufC* iSoundOffTxt; + + /** + * @var iDefaultToneTxt + * @brief String holder for string "Default tone" + */ + HBufC* iDefaultToneTxt; + + /** + * @var iToneListHeader + * @brief String holder for string "Select tone:" + */ + HBufC* iToneListHeader; + + /** + * @var iGMTString + * @brief String holder for the gmt string + */ + HBufC* iGMTString; + + /** + * @var iListItemCount + * @brief Holds the number of items in the settings list. + */ + TInt iListItemCount; + + /** + * @var iDRMHelper + * @brief The CDRMHelper object. + */ + CDRMHelper* iDRMHelper; + + /** + * @var iItem + * @brief This will hold the list item. + */ + HBufC* iItem; + + /** + * @var iItemList + * @brief The list of settings items. + */ + MDesCArray* iItemList; + + /** + * @var iItemArray + * @brief + */ + CDesCArray* iItemArray; + + /** + * @var iMenuChange + * @brief Used to control Menu event. + */ + TBool iMenuChange; + + /** + * @var iCurrentItem + * @brief The current list item index. + */ + TInt iCurrentItem; + + /** + * @var iNumOfItemsInView + * @brief The total number of list items in the list. + */ + TInt iNumOfItemsInView; + + /** + * @var iTopItem + * @brief The index of top list item. + */ + TInt iTopItem; + + /** + * @var iDateTimeInfo + * @brief The date time information. + */ + TClkDateTimeInfo iDateTimeInfo; + + /** + * @var iAlarmToneName + * @brief The filename of the alarm tone selected currently. + */ + TFileName iAlarmToneName; + + /** + * @var iDefaultAlarmToneName + * @brief The filename of the default tone. + */ + TFileName iDefaultAlarmToneName; + + /** + * @var iValue + * @brief Buffer to hold the item value. + */ + TBuf< KMaxValueLength > iValue; + + /** + * @var iDummy + * @brief Not used any more but kept to preserve BC + */ + TAny* iDummy; + + /** + * @var iResourceOffset + * @brief The offset of the UI resource. + */ + TInt iResourceOffset; + }; + +#endif // CLKDATETIMEVIEW_H + +// End of File