1 /****************************************************************************
4 ** Definition of date and time edit classes
8 ** Original QDateTimeEdit Copyright (C) 2000 Trolltech AS. All rights reserved.
10 ** >> modifications to introduce ExtDate (C) 2004 Jason Harris <jharris@30doradus.org>
11 ** >> ExtDate modifications are licensed under the GPL: http://www.gnu.org/licenses/gpl.html
13 ** This file may be distributed and/or modified under the terms of the
14 ** GNU General Public License version 2 as published by the Free Software
15 ** Foundation and appearing in the file LICENSE.GPL included in the
16 ** packaging of this file.
18 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
19 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
23 **********************************************************************/
25 #ifndef EXTDATETIMEEDIT_H
26 #define EXTDATETIMEEDIT_H
33 #include "extdatetime.h"
35 #ifndef QT_NO_DATETIMEEDIT
39 class ExtDateTimeEditBase
: public QWidget
43 ExtDateTimeEditBase( QWidget
* parent
=0, const char* name
=0 )
44 : QWidget( parent
, name
) {}
46 virtual bool setFocusSection( int sec
) = 0;
47 virtual QString
sectionFormattedText( int sec
) = 0;
48 virtual void addNumber( int sec
, int num
) = 0;
49 virtual void removeLastNumber( int sec
) = 0;
52 virtual void stepUp() = 0;
53 virtual void stepDown() = 0;
56 #if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator=
57 ExtDateTimeEditBase( const ExtDateTimeEditBase
& );
58 ExtDateTimeEditBase
&operator=( const ExtDateTimeEditBase
& );
62 class ExtDateEditPrivate
;
64 class KDE_EXPORT ExtDateEdit
: public ExtDateTimeEditBase
68 Q_PROPERTY( Order order READ order WRITE setOrder
)
69 // Q_PROPERTY( ExtDate date READ date WRITE setDate )
70 Q_PROPERTY( bool autoAdvance READ autoAdvance WRITE setAutoAdvance
)
71 // Q_PROPERTY( ExtDate maxValue READ maxValue WRITE setMaxValue )
72 // Q_PROPERTY( ExtDate minValue READ minValue WRITE setMinValue )
75 ExtDateEdit( QWidget
* parent
=0, const char* name
=0 );
76 ExtDateEdit( const ExtDate
& date
, QWidget
* parent
=0, const char* name
=0 );
79 enum Order
{ DMY
, MDY
, YMD
, YDM
};
81 QSize
sizeHint() const;
82 QSize
minimumSizeHint() const;
85 virtual void setDate( const ExtDate
& date
);
89 virtual void setOrder( Order order
);
91 virtual void setAutoAdvance( bool advance
);
92 bool autoAdvance() const;
94 virtual void setMinValue( const ExtDate
& d
) { setRange( d
, maxValue() ); }
95 ExtDate
minValue() const;
96 virtual void setMaxValue( const ExtDate
& d
) { setRange( minValue(), d
); }
97 ExtDate
maxValue() const;
98 virtual void setRange( const ExtDate
& min
, const ExtDate
& max
);
99 QString
separator() const;
100 virtual void setSeparator( const QString
& s
);
102 // Make removeFirstNumber() virtual in ExtDateTimeEditBase in 4.0
103 void removeFirstNumber( int sec
);
106 void valueChanged( const ExtDate
& date
);
109 bool event( QEvent
*e
);
110 void timerEvent( QTimerEvent
* );
111 void resizeEvent( QResizeEvent
* );
114 QString
sectionFormattedText( int sec
);
115 void addNumber( int sec
, int num
);
117 void removeLastNumber( int sec
);
118 bool setFocusSection( int s
);
120 virtual void setYear( int year
);
121 virtual void setMonth( int month
);
122 virtual void setDay( int day
);
124 virtual bool outOfRange( int y
, int m
, int d
) const;
127 void updateButtons();
131 int sectionOffsetEnd( int sec
) const;
132 int sectionLength( int sec
) const;
133 QString
sectionText( int sec
) const;
134 ExtDateEditPrivate
* d
;
136 #if defined(Q_DISABLE_COPY)
137 ExtDateEdit( const ExtDateEdit
& );
138 ExtDateEdit
&operator=( const ExtDateEdit
& );
142 // class QTimeEditPrivate;
144 // class Q_EXPORT QTimeEdit : public ExtDateTimeEditBase
148 // Q_PROPERTY( QTime time READ time WRITE setTime )
149 // Q_PROPERTY( bool autoAdvance READ autoAdvance WRITE setAutoAdvance )
150 // Q_PROPERTY( QTime maxValue READ maxValue WRITE setMaxValue )
151 // Q_PROPERTY( QTime minValue READ minValue WRITE setMinValue )
152 // Q_PROPERTY( Display display READ display WRITE setDisplay )
159 // /*Reserved = 0x08,*/
163 // QTimeEdit( QWidget* parent=0, const char* name=0 );
164 // QTimeEdit( const QTime& time, QWidget* parent=0, const char* name=0 );
167 // QSize sizeHint() const;
168 // QSize minimumSizeHint() const;
171 // virtual void setTime( const QTime& time );
174 // QTime time() const;
175 // virtual void setAutoAdvance( bool advance );
176 // bool autoAdvance() const;
178 // virtual void setMinValue( const QTime& d ) { setRange( d, maxValue() ); }
179 // QTime minValue() const;
180 // virtual void setMaxValue( const QTime& d ) { setRange( minValue(), d ); }
181 // QTime maxValue() const;
182 // virtual void setRange( const QTime& min, const QTime& max );
183 // QString separator() const;
184 // virtual void setSeparator( const QString& s );
186 // uint display() const;
187 // void setDisplay( uint disp );
189 // // Make removeFirstNumber() virtual in ExtDateTimeEditBase in 4.0
190 // void removeFirstNumber( int sec );
193 // void valueChanged( const QTime& time );
196 // bool event( QEvent *e );
197 // void timerEvent( QTimerEvent *e );
198 // void resizeEvent( QResizeEvent * );
201 // QString sectionFormattedText( int sec );
202 // void addNumber( int sec, int num );
203 // void removeLastNumber( int sec );
204 // bool setFocusSection( int s );
206 // virtual bool outOfRange( int h, int m, int s ) const;
207 // virtual void setHour( int h );
208 // virtual void setMinute( int m );
209 // virtual void setSecond( int s );
212 // void updateButtons();
216 // QString sectionText( int sec );
217 // QTimeEditPrivate* d;
219 // #if defined(Q_DISABLE_COPY)
220 // QTimeEdit( const QTimeEdit & );
221 // QTimeEdit &operator=( const QTimeEdit & );
226 class ExtDateTimeEditPrivate
;
228 class KDE_EXPORT ExtDateTimeEdit
: public QWidget
231 // Q_PROPERTY( ExtDateTime dateTime READ dateTime WRITE setDateTime )
234 ExtDateTimeEdit( QWidget
* parent
=0, const char* name
=0 );
235 ExtDateTimeEdit( const ExtDateTime
& datetime
, QWidget
* parent
=0,
236 const char* name
=0 );
239 QSize
sizeHint() const;
240 QSize
minimumSizeHint() const;
243 virtual void setDateTime( const ExtDateTime
& dt
);
246 ExtDateTime
dateTime() const;
248 ExtDateEdit
* dateEdit() { return de
; }
249 QTimeEdit
* timeEdit() { return te
; }
251 virtual void setAutoAdvance( bool advance
);
252 bool autoAdvance() const;
255 void valueChanged( const ExtDateTime
& datetime
);
258 // ### make init() private in Qt 4.0
260 void resizeEvent( QResizeEvent
* );
263 // ### make these two functions private in Qt 4.0,
264 // and merge them into one with no parameter
265 void newValue( const ExtDate
& d
);
266 void newValue( const QTime
& t
);
271 ExtDateTimeEditPrivate
* d
;
273 #if defined(Q_DISABLE_COPY)
274 ExtDateTimeEdit( const ExtDateTimeEdit
& );
275 ExtDateTimeEdit
&operator=( const ExtDateTimeEdit
& );
282 QNumberSection( int selStart
= 0, int selEnd
= 0, bool separat
= TRUE
, int actual
= -1 )
283 : selstart( selStart
), selend( selEnd
), act( actual
), sep( separat
)
285 int selectionStart() const { return selstart
; }
286 void setSelectionStart( int s
) { selstart
= s
; }
287 int selectionEnd() const { return selend
; }
288 void setSelectionEnd( int s
) { selend
= s
; }
289 int width() const { return selend
- selstart
; }
290 int index() const { return act
; }
291 bool separator() const { return sep
; }
292 Q_DUMMY_COMPARISON_OPERATOR( QNumberSection
)
300 class ExtDateTimeEditorPrivate
;
302 class ExtDateTimeEditor
: public QWidget
306 ExtDateTimeEditor( ExtDateTimeEditBase
* parent
=0,
307 const char * name
=0 );
308 ~ExtDateTimeEditor();
310 // void setControlWidget( ExtDateTimeEditBase * widget );
311 // ExtDateTimeEditBase * controlWidget() const;
313 void setSeparator( const QString
& s
);
314 QString
separator() const;
316 int focusSection() const;
317 bool setFocusSection( int s
);
318 void appendSection( const QNumberSection
& sec
);
319 void clearSections();
320 void setSectionSelection( int sec
, int selstart
, int selend
);
321 bool eventFilter( QObject
*o
, QEvent
*e
);
322 int sectionAt( const QPoint
&p
);
323 int mapSection( int sec
);
327 bool event( QEvent
*e
);
328 void resizeEvent( QResizeEvent
* );
329 void paintEvent( QPaintEvent
* );
330 void mousePressEvent( QMouseEvent
*e
);
333 ExtDateTimeEditBase
* cw
;
334 ExtDateTimeEditorPrivate
* d
;