// This is the SIP interface definition for QDateEdit, QDateTimeEdit and
// QTimeEdit.
//
// 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>QDateEdit (Qt v3+)</Title>
<Para>
<Literal>QDateEdit</Literal> is fully implemented.
</Para>
</Sect2>

<Sect2><Title>QTimeEdit (Qt v3+)</Title>
<Para>
<Literal>QTimeEdit</Literal> is fully implemented.
</Para>
</Sect2>

<Sect2><Title>QDateTimeEdit (Qt v3+)</Title>
<Para>
<Literal>QDateTimeEdit</Literal> is fully implemented.
</Para>
</Sect2>
%End


%If (Qt_3_0_0 -)

// QDateEdit actually inherits QDateTimeEditBase but that's an internal class
// and isn't exported under Windows in all versions.

class QDateEdit : QWidget
{
%TypeHeaderCode
#include <qdatetimeedit.h>
%End

public:
	QDateEdit(QWidget * /TransferThis/ = 0,const char * = 0);
	QDateEdit(const QDate &,QWidget * /TransferThis/ = 0,const char * = 0);

	enum Order {
		DMY,
		MDY,
		YMD,
		YDM
	};

	QSize sizeHint() const;
	QSize minimumSizeHint() const;
%If (- Qt_3_1_0)
	virtual void setDate(const QDate &);
%End
	QDate date() const;
	virtual void setOrder(Order);
	Order order() const;
	virtual void setAutoAdvance(bool);
	bool autoAdvance() const;

	virtual void setMinValue(const QDate &);
	QDate minValue() const;
	virtual void setMaxValue(const QDate &);
	QDate maxValue() const;
	virtual void setRange(const QDate &,const QDate &);
	QString separator() const;
	virtual void setSeparator(const QString &);

%If (Qt_3_2_0 -)
	void removeFirstNumber(int);
%End

public slots:
%If (Qt_3_1_0 -)
	virtual void setDate(const QDate &);
%End

signals:
	void valueChanged(const QDate &);

protected:
	bool event(QEvent *);
	void timerEvent(QTimerEvent *);
	void resizeEvent(QResizeEvent *);
	void stepUp();
	void stepDown();
	QString sectionFormattedText(int);
	void addNumber(int,int);
	void removeLastNumber(int);
	bool setFocusSection(int);
    
	virtual void setYear(int);
	virtual void setMonth(int);
	virtual void setDay(int);
	virtual void fix();
	virtual bool outOfRange(int,int,int) const;

protected slots:
	void updateButtons();    

private:
%If (Qt_3_1_0 -)
	QDateEdit(const QDateEdit &);
%End
};


// QDateEdit actually inherits QDateTimeEditBase but that's an internal class
// and isn't exported under Windows in all versions.

class QTimeEdit : QWidget
{
%TypeHeaderCode
#include <qdatetimeedit.h>
%End

public:
%If (Qt_3_1_0 -)
	enum Display {
		Hours,
		Minutes,
		Seconds,
		AMPM
	};
%End

	QTimeEdit(QWidget * /TransferThis/ = 0,const char * = 0);
	QTimeEdit(const QTime &,QWidget * /TransferThis/ = 0,const char * = 0);

	QSize sizeHint() const;
	QSize minimumSizeHint() const;
%If (- Qt_3_1_0)
	virtual void setTime(const QTime &);
%End
	QTime time() const;
	virtual void setAutoAdvance(bool);
	bool autoAdvance() const;

	virtual void setMinValue(const QTime &);
	QTime minValue() const;
	virtual void setMaxValue(const QTime &);
	QTime maxValue() const;
	virtual void setRange(const QTime &,const QTime &);
	QString separator() const;
	virtual void setSeparator(const QString &);

%If (Qt_3_1_0 -)
	uint display() const;
	void setDisplay(uint);
%End

%If (Qt_3_2_0 -)
	void removeFirstNumber(int);
%End

public slots:
%If (Qt_3_1_0 -)
	virtual void setTime(const QTime &);
%End

signals:
	void valueChanged(const QTime &);

protected:
	bool event(QEvent *);
	void timerEvent(QTimerEvent *);
	void resizeEvent(QResizeEvent *);
	void stepUp();
	void stepDown();
	QString sectionFormattedText(int);
	void addNumber(int,int);
	void removeLastNumber(int);
	bool setFocusSection(int);
    
	virtual bool outOfRange(int,int,int) const;
	virtual void setHour(int);
	virtual void setMinute(int);
	virtual void setSecond(int);
    
protected slots:
	void updateButtons();

private:
%If (Qt_3_1_0 -)
	QTimeEdit(const QTimeEdit &);
%End
};


class QDateTimeEdit : QWidget
{
%TypeHeaderCode
#include <qdatetimeedit.h>
%End

public:
	QDateTimeEdit(QWidget * /TransferThis/ = 0,const char * = 0);
	QDateTimeEdit(const QDateTime &,QWidget * /TransferThis/ = 0,
		      const char * = 0);

	QSize sizeHint() const;
	QSize minimumSizeHint() const;
%If (- Qt_3_1_0)
	virtual void setDateTime(const QDateTime &);
%End
	QDateTime dateTime() const;

	QDateEdit* dateEdit();
	QTimeEdit* timeEdit();

	virtual void setAutoAdvance(bool);
	bool autoAdvance() const;

public slots:
%If (Qt_3_1_0 -)
	virtual void setDateTime(const QDateTime &);
%End

signals:
	void valueChanged(const QDateTime &);

protected:
	void init();
	void resizeEvent(QResizeEvent *);
%If (- Qt_3_1_2)
	void layoutEditors();
%End

protected slots:
	void newValue(const QDate &);
	void newValue(const QTime &);

private:
%If (Qt_3_1_0 -)
	QDateTimeEdit(const QDateTimeEdit &);
%End
};

%End
