// EIKTIME.H
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#if !defined __EIKTIMED_H__
#define __EIKTIMED_H__

#if !defined(__EIKDIALG_H__)
#include <eikdialg.h>
#endif

#if !defined(__T32WLD_H__)
#include <t32wld.h>
#endif

#if !defined(__T32ALM_H__)
#include <t32alm.h>
#endif

enum TEikTimeViewChoice
	{
	EEikTimeViewMap,
	EEikTimeViewClock,
	EEikTimeViewLast
	};

class TEikTimeOptions
	{
public:
	IMPORT_C void InternalizeL(RReadStream& aStream);
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
public:
	TDateFormat iDate;
	TTimeFormat iTime;
	TChar iDateSeparator;
	TChar iTimeSeparator;
	TClockFormat iClock;
	TInt iDefaultAlarmHour;
	TInt iDefaultAlarmMinute;
	TBool iUseDefaultAlarmTime;
	TWldDistanceUnits iDistance;
	TAlarmSoundName iDefaultSound;
	TEikTimeViewChoice iCurrentView;
	TBool iToolbarVisible;
	};

const TInt KEikTimeDefaultBufferLength=0xa0;
typedef TBuf<KEikTimeDefaultBufferLength> TEikTimeBuffer;

class CEikTimeDialog : public CEikDialog
	{
public:
	IMPORT_C CEikTimeDialog();
protected:
	IMPORT_C void DoSetLabelText(TInt aTagId,TInt aMessageId);
	};

class CEikTimeDialogSetCity : public CEikTimeDialog
	{
public:
	IMPORT_C static CEikTimeDialogSetCity* NewL();
	IMPORT_C virtual TBool SetCityLD(TCityName& aCity,TCountryName& aCountry,TInt aTitleResource, TInt aDescriptResource);
private: // from CEikDialog
	CEikTimeDialogSetCity();
	void PreLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
private:
	TBool* iChanged;
	TInt iTitleResourceId;
	TInt iDescriptResourceId;
	TCityName* iCity;
	TCountryName* iCountry;
	};

class CEikTimeDialogSetTime : public CEikTimeDialog
	{
public:
	IMPORT_C static CEikTimeDialogSetTime* NewL();
	IMPORT_C virtual TBool SetTimeLD(TTime& aTime);
private: // from CEikDialog
	CEikTimeDialogSetTime();
	void PreLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
private:
	TTime* iTime;
	};

class CEikTimeDialogSetDst : public CEikTimeDialog
	{
public:
	IMPORT_C static CEikTimeDialogSetDst* NewL();
	IMPORT_C virtual TBool SetDstLD(TUint& aDstZones,TDaylightSavingZone aHomeZone);
private: // from CEikDialog
	CEikTimeDialogSetDst();
	void PreLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
	void HandleControlStateChangeL(TInt aControlId);
private:
	TUint* iDstZones;
	TDaylightSavingZone iHomeDstZone;
	};

class CEikTimeDialogOptionFormat : public CEikTimeDialog
	{
public:
	IMPORT_C static CEikTimeDialogOptionFormat* NewL();
	IMPORT_C virtual TBool EditOptionsLD(TEikTimeOptions& aOptions);
private: // from CEikDialog
    void PreLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
private:
	CEikTimeDialogOptionFormat();
	void Data(TEikTimeOptions& aOptions) const;
	void SetData(const TEikTimeOptions& aOptions);
private:
	TBool* iChanged;
	TEikTimeOptions* iOptions;
	};

class CEikTimeDialogOptionWorkday : public CEikTimeDialog
	{
public:
	IMPORT_C static CEikTimeDialogOptionWorkday* NewL();
	IMPORT_C virtual TBool EditWorkdaysLD(TUint& aWorkdaysFlags);
private: // from CEikDialog
	CEikTimeDialogOptionWorkday();
    void PreLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
private:
	TBool* iChanged;
	TUint* iWorkdayFlags;
	};

#endif
