// This is the SIP interface definition for QDate, QDateTime and QTime.
//
// Copyright (c) 2007
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyQt.
// 
// This copy of PyQt 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.
// 
// PyQt 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
// PyQt; 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>QDate</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. (Qt v3.1+)
</Para>
</Sect2>

<Sect2><Title>QDateTime</Title>
<Para>
<Literal>QDateTime</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>QTime</Title>
<Para>
<Literal>QTime</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 QDate
{
%TypeHeaderCode
#include <qdatetime.h>
%End

public:
	QDate();
	QDate(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;

%If (Qt_3_1_0 -)
	int weekNumber(int * = 0) const;
%End

%If (- Qt_2_00)
	virtual const char *monthName(int) const;
	virtual const char *dayName(int) const;
%End
%If (Qt_2_00 - Qt_3_0_0)
	virtual QString monthName(int) const;
	virtual QString dayName(int) const;
%End
%If (Qt_3_0_0 -)
	static QString shortMonthName(int);
	static QString shortDayName(int);
	static QString longMonthName(int);
	static QString longDayName(int);
%End

%If (- Qt_3_0_0)
	QString toString() const;
%End
%If (Qt_3_0_0 -)
	QString toString(Qt::DateFormat = Qt::TextDate) const;
	QString toString(const QString &) const;
%End
	bool setYMD(int,int,int);
	QDate addDays(int) const;
%If (Qt_3_0_0 -)
	QDate addMonths(int) const;
	QDate addYears(int) const;
%End
	int daysTo(const QDate &) const;

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

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

	static QDate currentDate();
%If (Qt_3_1_0 -)
	static QDate currentDate(Qt::TimeSpec);
%End
%If (Qt_3_0_0 -)
	static QDate fromString(const QString &,Qt::DateFormat = Qt::TextDate);
%End
	static bool isValid(int,int,int);
	static bool leapYear(int);

%If (Qt_3_0_0 -)
	// These are defined in Qt3 but not documented.
	//static uint gregorianToJulian(int,int,int);
	//static void julianToGregorian(uint,int &,int &,int &);
%End
};


class QTime
{
%TypeHeaderCode
#include <qdatetime.h>
%End

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

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

%If (- Qt_3_0_0)
	QString toString() const;
%End
%If (Qt_3_0_0 -)
	QString toString(Qt::DateFormat = Qt::TextDate) const;
	QString toString(const QString &) const;
%End

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

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

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

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

	static QTime currentTime();
%If (Qt_3_1_0 -)
	static QTime currentTime(Qt::TimeSpec);
%End
%If (Qt_3_0_0 -)
	static QTime fromString(const QString &,Qt::DateFormat = Qt::TextDate);
%End
	static bool isValid(int,int,int,int = 0);

	void start();
	int restart();
%If (- Qt_3_0_0)
	int elapsed();
%End
%If (Qt_3_0_0 -)
	int elapsed() const;
%End
};


class QDateTime
{
%TypeHeaderCode
#include <qdatetime.h>
%End

public:
	QDateTime();
	QDateTime(const QDate &);
	QDateTime(const QDate &,const QTime &);

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

	QDate date() const;
	QTime time() const;
%If (Qt_3_1_0 -)
	uint toTime_t() const;
%End
	void setDate(const QDate &);
	void setTime(const QTime &);
	void setTime_t(uint);
%If (Qt_3_1_0 -)
	void setTime_t(uint,Qt::TimeSpec);
%End

%If (- Qt_3_0_0)
	QString toString() const;
%End
%If (Qt_3_0_0 -)
	QString toString(Qt::DateFormat = Qt::TextDate) const;
	QString toString(const QString &) const;
%End

	QDateTime addDays(int) const;
%If (Qt_3_0_0 -)
	QDateTime addMonths(int) const;
	QDateTime addYears(int) const;
%End
	QDateTime addSecs(int) const;
	int daysTo(const QDateTime &) const;
	int secsTo(const QDateTime &) const;

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

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

	static QDateTime currentDateTime();
%If (Qt_3_1_0 -)
	static QDateTime currentDateTime(Qt::TimeSpec);
%End
%If (Qt_3_0_0 -)
	static QDateTime fromString(const QString &,
				    Qt::DateFormat = Qt::TextDate);
%End
};
