// This is the SIP interface definition for TQDate, TQDateTime and TQTime.
//
// Copyright (c) 2007
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyTQt.
// 
// This copy of PyTQt is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2, or (at your option) any later
// version.
// 
// PyTQt is supplied in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
// details.
// 
// You should have received a copy of the GNU General Public License along with
// PyTQt; see the file LICENSE.  If not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


%ExportedDoc
<Sect2><Title>TQDate</Title>
<Para>
The Python
<Literal>==</Literal>, <Literal>!=</Literal>,
<Literal>&lt;</Literal>, <Literal>&lt;=</Literal>,
<Literal>&gt;</Literal>, <Literal>&gt;=</Literal>
and <Literal>__nonzero__</Literal>
operators are supported.
</Para>

<FuncSynopsis>
	<FuncDef>int <Function>weekNumber</Function></FuncDef>
	<ParamDef>int *<Parameter>yearNum</Parameter> = 0</ParamDef>
</FuncSynopsis>
<Para>
This takes no parameters and returns the week number and the year number as a
tuple. (TQt v3.1+)
</Para>
</Sect2>

<Sect2><Title>TQDateTime</Title>
<Para>
<Literal>TQDateTime</Literal> is fully implemented, including the Python
<Literal>==</Literal>, <Literal>!=</Literal>,
<Literal>&lt;</Literal>, <Literal>&lt;=</Literal>,
<Literal>&gt;</Literal>, <Literal>&gt;=</Literal>
and <Literal>__nonzero__</Literal>
operators.
</Para>
</Sect2>

<Sect2><Title>TQTime</Title>
<Para>
<Literal>TQTime</Literal> is fully implemented, including the Python
<Literal>==</Literal>, <Literal>!=</Literal>,
<Literal>&lt;</Literal>, <Literal>&lt;=</Literal>,
<Literal>&gt;</Literal>, <Literal>&gt;=</Literal>
and <Literal>__nonzero__</Literal>
operators.
</Para>
</Sect2>
%End


class TQDate
{
%TypeHeaderCode
#include <tqdatetime.h>
%End

public:
	TQDate();
	TQDate(int,int,int);

	bool isNull() const;
	bool isValid() const;

	int year() const;
	int month() const;
	int day() const;
	int dayOfWeek() const;
	int dayOfYear() const;
	int daysInMonth() const;
	int daysInYear() const;

	int weekNumber(int * = 0) const;

	static TQString shortMonthName(int);
	static TQString shortDayName(int);
	static TQString longMonthName(int);
	static TQString longDayName(int);

	TQString toString(TQt::DateFormat = TQt::TextDate) const;
	TQString toString(const TQString &) const;
	bool setYMD(int,int,int);
	TQDate addDays(int) const;
	TQDate addMonths(int) const;
	TQDate addYears(int) const;
	int daysTo(const TQDate &) const;

	int __nonzero__() const;
%MethodCode
		sipRes = !sipCpp -> isNull();
%End

	bool operator==(const TQDate &) const;
	bool operator!=(const TQDate &) const;
	bool operator<(const TQDate &) const;
	bool operator<=(const TQDate &) const;
	bool operator>(const TQDate &) const;
	bool operator>=(const TQDate &) const;

	static TQDate currentDate();
	static TQDate currentDate(TQt::TimeSpec);
	static TQDate fromString(const TQString &,TQt::DateFormat = TQt::TextDate);
	static bool isValid(int,int,int);
	static bool leapYear(int);

	// These are defined in TQt3 but not documented.
	//static uint gregorianToJulian(int,int,int);
	//static void julianToGregorian(uint,int &,int &,int &);
};


class TQTime
{
%TypeHeaderCode
#include <tqdatetime.h>
%End

public:
	TQTime();
	TQTime(int,int,int = 0,int = 0);

	bool isNull() const;
	bool isValid() const;
	int hour() const;
	int minute() const;
	int second() const;
	int msec() const;

	TQString toString(TQt::DateFormat = TQt::TextDate) const;
	TQString toString(const TQString &) const;

	bool setHMS(int,int,int,int = 0);

	TQTime addSecs(int) const;
	int secsTo(const TQTime &) const;
	TQTime addMSecs(int) const;
	int msecsTo(const TQTime &) const;

	int __nonzero__() const;
%MethodCode
		sipRes = !sipCpp -> isNull();
%End

	bool operator==(const TQTime &) const;
	bool operator!=(const TQTime &) const;
	bool operator<(const TQTime &) const;
	bool operator<=(const TQTime &) const;
	bool operator>(const TQTime &) const;
	bool operator>=(const TQTime &) const;

	static TQTime currentTime();
	static TQTime currentTime(TQt::TimeSpec);
	static TQTime fromString(const TQString &,TQt::DateFormat = TQt::TextDate);
	static bool isValid(int,int,int,int = 0);

	void start();
	int restart();
	int elapsed() const;
};


class TQDateTime
{
%TypeHeaderCode
#include <tqdatetime.h>
%End

public:
	TQDateTime();
	TQDateTime(const TQDate &);
	TQDateTime(const TQDate &,const TQTime &);

	bool isNull() const;
	bool isValid() const;

	TQDate date() const;
	TQTime time() const;
	uint toTime_t() const;
	void setDate(const TQDate &);
	void setTime(const TQTime &);
	void setTime_t(uint);
	void setTime_t(uint,TQt::TimeSpec);

	TQString toString(TQt::DateFormat = TQt::TextDate) const;
	TQString toString(const TQString &) const;

	TQDateTime addDays(int) const;
	TQDateTime addMonths(int) const;
	TQDateTime addYears(int) const;
	TQDateTime addSecs(int) const;
	int daysTo(const TQDateTime &) const;
	int secsTo(const TQDateTime &) const;

	int __nonzero__() const;
%MethodCode
		sipRes = !sipCpp -> isNull();
%End

	bool operator==(const TQDateTime &) const;
	bool operator!=(const TQDateTime &) const;
	bool operator<(const TQDateTime &) const;
	bool operator<=(const TQDateTime &) const;
	bool operator>(const TQDateTime &) const;
	bool operator>=(const TQDateTime &) const;

	static TQDateTime currentDateTime();
	static TQDateTime currentDateTime(TQt::TimeSpec);
	static TQDateTime fromString(const TQString &,
				    TQt::DateFormat = TQt::TextDate);
};
