diff options
Diffstat (limited to 'libkdeedu/extdate/extdatetimeedit.h')
-rw-r--r-- | libkdeedu/extdate/extdatetimeedit.h | 341 |
1 files changed, 341 insertions, 0 deletions
diff --git a/libkdeedu/extdate/extdatetimeedit.h b/libkdeedu/extdate/extdatetimeedit.h new file mode 100644 index 00000000..048f7aa3 --- /dev/null +++ b/libkdeedu/extdate/extdatetimeedit.h @@ -0,0 +1,341 @@ +/**************************************************************************** +** +** +** Definition of date and time edit classes +** +** Created : 001103 +** +** Original QDateTimeEdit Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** >> modifications to introduce ExtDate (C) 2004 Jason Harris <jharris@30doradus.org> +** >> ExtDate modifications are licensed under the GPL: http://www.gnu.org/licenses/gpl.html +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +**********************************************************************/ + +#ifndef EXTDATETIMEEDIT_H +#define EXTDATETIMEEDIT_H + +#ifndef QT_H +#include <qwidget.h> +#include <qstring.h> +#endif // QT_H + +#include "extdatetime.h" + +#ifndef QT_NO_DATETIMEEDIT + +class QTimeEdit; + +class ExtDateTimeEditBase : public QWidget +{ + Q_OBJECT +public: + ExtDateTimeEditBase( QWidget* parent=0, const char* name=0 ) + : QWidget( parent, name ) {} + + virtual bool setFocusSection( int sec ) = 0; + virtual QString sectionFormattedText( int sec ) = 0; + virtual void addNumber( int sec, int num ) = 0; + virtual void removeLastNumber( int sec ) = 0; + +public slots: + virtual void stepUp() = 0; + virtual void stepDown() = 0; + +private: +#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator= + ExtDateTimeEditBase( const ExtDateTimeEditBase & ); + ExtDateTimeEditBase &operator=( const ExtDateTimeEditBase & ); +#endif +}; + +class ExtDateEditPrivate; + +class KDE_EXPORT ExtDateEdit : public ExtDateTimeEditBase +{ + Q_OBJECT + Q_ENUMS( Order ) + Q_PROPERTY( Order order READ order WRITE setOrder ) +// Q_PROPERTY( ExtDate date READ date WRITE setDate ) + Q_PROPERTY( bool autoAdvance READ autoAdvance WRITE setAutoAdvance ) +// Q_PROPERTY( ExtDate maxValue READ maxValue WRITE setMaxValue ) +// Q_PROPERTY( ExtDate minValue READ minValue WRITE setMinValue ) + +public: + ExtDateEdit( QWidget* parent=0, const char* name=0 ); + ExtDateEdit( const ExtDate& date, QWidget* parent=0, const char* name=0 ); + ~ExtDateEdit(); + + enum Order { DMY /**< Day-Month-Year */, + MDY /**< Month-Day-Year */, + YMD /**< Year-Month-Day, also the default */, + YDM /**< Year-Day-Month @deprecated Included for completeness. */ }; + + QSize sizeHint() const; + QSize minimumSizeHint() const; + +public slots: + virtual void setDate( const ExtDate& date ); + +public: + ExtDate date() const; + virtual void setOrder( Order order ); + Order order() const; + virtual void setAutoAdvance( bool advance ); + bool autoAdvance() const; + + virtual void setMinValue( const ExtDate& d ) { setRange( d, maxValue() ); } + ExtDate minValue() const; + virtual void setMaxValue( const ExtDate& d ) { setRange( minValue(), d ); } + ExtDate maxValue() const; + virtual void setRange( const ExtDate& min, const ExtDate& max ); + QString separator() const; + virtual void setSeparator( const QString& s ); + + // Make removeFirstNumber() virtual in ExtDateTimeEditBase in 4.0 + void removeFirstNumber( int sec ); + +signals: + void valueChanged( const ExtDate& date ); + +protected: + bool event( QEvent *e ); + void timerEvent( QTimerEvent * ); + void resizeEvent( QResizeEvent * ); + void stepUp(); + void stepDown(); + QString sectionFormattedText( int sec ); + void addNumber( int sec, int num ); + + void removeLastNumber( int sec ); + bool setFocusSection( int s ); + + virtual void setYear( int year ); + virtual void setMonth( int month ); + virtual void setDay( int day ); + virtual void fix(); + virtual bool outOfRange( int y, int m, int d ) const; + +protected slots: + void updateButtons(); + +private: + void init(); + int sectionOffsetEnd( int sec ) const; + int sectionLength( int sec ) const; + QString sectionText( int sec ) const; + ExtDateEditPrivate* d; + +#if defined(Q_DISABLE_COPY) + ExtDateEdit( const ExtDateEdit & ); + ExtDateEdit &operator=( const ExtDateEdit & ); +#endif +}; + +// class QTimeEditPrivate; +// +// class Q_EXPORT QTimeEdit : public ExtDateTimeEditBase +// { +// Q_OBJECT +// Q_SETS( Display ) +// Q_PROPERTY( QTime time READ time WRITE setTime ) +// Q_PROPERTY( bool autoAdvance READ autoAdvance WRITE setAutoAdvance ) +// Q_PROPERTY( QTime maxValue READ maxValue WRITE setMaxValue ) +// Q_PROPERTY( QTime minValue READ minValue WRITE setMinValue ) +// Q_PROPERTY( Display display READ display WRITE setDisplay ) +// +// public: +// enum Display { +// Hours = 0x01, +// Minutes = 0x02, +// Seconds = 0x04, +// /*Reserved = 0x08,*/ +// AMPM = 0x10 +// }; +// +// QTimeEdit( QWidget* parent=0, const char* name=0 ); +// QTimeEdit( const QTime& time, QWidget* parent=0, const char* name=0 ); +// ~QTimeEdit(); +// +// QSize sizeHint() const; +// QSize minimumSizeHint() const; +// +// public slots: +// virtual void setTime( const QTime& time ); +// +// public: +// QTime time() const; +// virtual void setAutoAdvance( bool advance ); +// bool autoAdvance() const; +// +// virtual void setMinValue( const QTime& d ) { setRange( d, maxValue() ); } +// QTime minValue() const; +// virtual void setMaxValue( const QTime& d ) { setRange( minValue(), d ); } +// QTime maxValue() const; +// virtual void setRange( const QTime& min, const QTime& max ); +// QString separator() const; +// virtual void setSeparator( const QString& s ); +// +// uint display() const; +// void setDisplay( uint disp ); +// +// // Make removeFirstNumber() virtual in ExtDateTimeEditBase in 4.0 +// void removeFirstNumber( int sec ); +// +// signals: +// void valueChanged( const QTime& time ); +// +// protected: +// bool event( QEvent *e ); +// void timerEvent( QTimerEvent *e ); +// void resizeEvent( QResizeEvent * ); +// void stepUp(); +// void stepDown(); +// QString sectionFormattedText( int sec ); +// void addNumber( int sec, int num ); +// void removeLastNumber( int sec ); +// bool setFocusSection( int s ); +// +// virtual bool outOfRange( int h, int m, int s ) const; +// virtual void setHour( int h ); +// virtual void setMinute( int m ); +// virtual void setSecond( int s ); +// +// protected slots: +// void updateButtons(); +// +// private: +// void init(); +// QString sectionText( int sec ); +// QTimeEditPrivate* d; +// +// #if defined(Q_DISABLE_COPY) +// QTimeEdit( const QTimeEdit & ); +// QTimeEdit &operator=( const QTimeEdit & ); +// #endif +// }; +// + +class ExtDateTimeEditPrivate; + +class KDE_EXPORT ExtDateTimeEdit : public QWidget +{ + Q_OBJECT +// Q_PROPERTY( ExtDateTime dateTime READ dateTime WRITE setDateTime ) + +public: + ExtDateTimeEdit( QWidget* parent=0, const char* name=0 ); + ExtDateTimeEdit( const ExtDateTime& datetime, QWidget* parent=0, + const char* name=0 ); + ~ExtDateTimeEdit(); + + QSize sizeHint() const; + QSize minimumSizeHint() const; + +public slots: + virtual void setDateTime( const ExtDateTime & dt ); + +public: + ExtDateTime dateTime() const; + + ExtDateEdit* dateEdit() { return de; } + QTimeEdit* timeEdit() { return te; } + + virtual void setAutoAdvance( bool advance ); + bool autoAdvance() const; + +signals: + void valueChanged( const ExtDateTime& datetime ); + +protected: + // ### make init() private in Qt 4.0 + void init(); + void resizeEvent( QResizeEvent * ); + +protected slots: + // ### make these two functions private in Qt 4.0, + // and merge them into one with no parameter + void newValue( const ExtDate& d ); + void newValue( const QTime& t ); + +private: + ExtDateEdit* de; + QTimeEdit* te; + ExtDateTimeEditPrivate* d; + +#if defined(Q_DISABLE_COPY) + ExtDateTimeEdit( const ExtDateTimeEdit & ); + ExtDateTimeEdit &operator=( const ExtDateTimeEdit & ); +#endif +}; + +class QNumberSection +{ +public: + QNumberSection( int selStart = 0, int selEnd = 0, bool separat = TRUE, int actual = -1 ) + : selstart( selStart ), selend( selEnd ), act( actual ), sep( separat ) + {} + int selectionStart() const { return selstart; } + void setSelectionStart( int s ) { selstart = s; } + int selectionEnd() const { return selend; } + void setSelectionEnd( int s ) { selend = s; } + int width() const { return selend - selstart; } + int index() const { return act; } + bool separator() const { return sep; } + Q_DUMMY_COMPARISON_OPERATOR( QNumberSection ) +private: + int selstart :12; + int selend :12; + int act :7; + bool sep :1; +}; + +class ExtDateTimeEditorPrivate; + +class ExtDateTimeEditor : public QWidget +{ + Q_OBJECT +public: + ExtDateTimeEditor( ExtDateTimeEditBase * parent=0, + const char * name=0 ); + ~ExtDateTimeEditor(); + +// void setControlWidget( ExtDateTimeEditBase * widget ); +// ExtDateTimeEditBase * controlWidget() const; + + void setSeparator( const QString& s ); + QString separator() const; + + int focusSection() const; + bool setFocusSection( int s ); + void appendSection( const QNumberSection& sec ); + void clearSections(); + void setSectionSelection( int sec, int selstart, int selend ); + bool eventFilter( QObject *o, QEvent *e ); + int sectionAt( const QPoint &p ); + int mapSection( int sec ); + +protected: + void init(); + bool event( QEvent *e ); + void resizeEvent( QResizeEvent * ); + void paintEvent( QPaintEvent * ); + void mousePressEvent( QMouseEvent *e ); + +private: + ExtDateTimeEditBase* cw; + ExtDateTimeEditorPrivate* d; +}; + +#endif +#endif |