home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / qt3_emx.zip / include / qdatetimeedit.h < prev    next >
C/C++ Source or Header  |  2001-09-24  |  7KB  |  239 lines

  1. /****************************************************************************
  2. **
  3. ** Definition of date and time edit classes
  4. **
  5. ** Created : 2000-11-03
  6. **
  7. ** Copyright (C) 2000 Trolltech AS.  All rights reserved.
  8. **
  9. ** This file is part of the widgets module of the Qt GUI Toolkit.
  10. **
  11. ** This file may be distributed under the terms of the Q Public License
  12. ** as defined by Trolltech AS of Norway and appearing in the file
  13. ** LICENSE.QPL included in the packaging of this file.
  14. **
  15. ** This file may be distributed and/or modified under the terms of the
  16. ** GNU General Public License version 2 as published by the Free Software
  17. ** Foundation and appearing in the file LICENSE.GPL included in the
  18. ** packaging of this file.
  19. **
  20. ** Licensees holding valid Qt Enterprise Edition licenses may use this
  21. ** file in accordance with the Qt Commercial License Agreement provided
  22. ** with the Software.
  23. **
  24. ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  25. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  26. **
  27. ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
  28. **   information about Qt Commercial License Agreements.
  29. ** See http://www.trolltech.com/qpl/ for QPL licensing information.
  30. ** See http://www.trolltech.com/gpl/ for GPL licensing information.
  31. **
  32. ** Contact info@trolltech.com if any conditions of this licensing are
  33. ** not clear to you.
  34. **
  35. **********************************************************************/
  36.  
  37. #ifndef QDATETIMEEDIT_H
  38. #define QDATETIMEEDIT_H
  39.  
  40. #ifndef QT_H
  41. #include "qwidget.h"
  42. #include "qstring.h"
  43. #include "qdatetime.h"
  44. #endif // QT_H
  45.  
  46. #ifndef QT_NO_DATETIMEEDIT
  47.  
  48. class QDateTimeEditBase : public QWidget
  49. {
  50.     Q_OBJECT
  51. public:
  52.     QDateTimeEditBase( QWidget* parent=0, const char* name=0 )
  53.     : QWidget( parent, name ) {}
  54.     
  55.     virtual bool setFocusSection( int sec ) = 0;
  56.     virtual QString sectionFormattedText( int sec ) = 0;
  57.     virtual void addNumber( int sec, int num ) = 0;
  58.     virtual void removeLastNumber( int sec ) = 0;
  59.  
  60. public slots:
  61.     virtual void stepUp() = 0;
  62.     virtual void stepDown() = 0;
  63. };
  64.  
  65. class QDateEditPrivate;
  66.  
  67. class Q_EXPORT QDateEdit : public QDateTimeEditBase
  68. {
  69.     Q_OBJECT
  70.     Q_ENUMS( Order )
  71.     Q_PROPERTY( Order order READ order WRITE setOrder )
  72.     Q_PROPERTY( QDate date READ date WRITE setDate )
  73.     Q_PROPERTY( bool autoAdvance READ autoAdvance WRITE setAutoAdvance )
  74.     Q_PROPERTY( QDate maxValue READ maxValue WRITE setMaxValue )
  75.     Q_PROPERTY( QDate minValue READ minValue WRITE setMinValue )
  76.  
  77. public:
  78.     QDateEdit( QWidget* parent=0,  const char* name=0 );
  79.     QDateEdit( const QDate& date, QWidget* parent=0,  const char* name=0 );
  80.     ~QDateEdit();
  81.  
  82.     enum Order {
  83.     DMY,
  84.     MDY,
  85.     YMD,
  86.     YDM
  87.     };
  88.  
  89.     QSize sizeHint() const;
  90.     QSize minimumSizeHint() const;
  91.     virtual void setDate( const QDate& date );
  92.     QDate date() const;
  93.     virtual void setOrder( Order order );
  94.     Order order() const;
  95.     virtual void setAutoAdvance( bool advance );
  96.     bool autoAdvance() const;
  97.  
  98.     virtual void setMinValue( const QDate& d ) { setRange( d, maxValue() ); }
  99.     QDate minValue() const;
  100.     virtual void setMaxValue( const QDate& d ) { setRange( minValue(), d ); }
  101.     QDate maxValue() const;
  102.     virtual void setRange( const QDate& min, const QDate& max );
  103.     QString separator() const;
  104.     virtual void setSeparator( const QString& s );
  105.  
  106. signals:
  107.     void valueChanged( const QDate& date );
  108.  
  109. protected:
  110.     bool event( QEvent *e );
  111.     void timerEvent ( QTimerEvent * );
  112.     void resizeEvent ( QResizeEvent * );
  113.     void stepUp();
  114.     void stepDown();
  115.     QString sectionFormattedText( int sec );
  116.     void addNumber( int sec, int num );
  117.     void removeLastNumber( int sec );
  118.     bool setFocusSection( int s );
  119.     
  120.     virtual void setYear( int year );
  121.     virtual void setMonth( int month );
  122.     virtual void setDay( int day );
  123.     virtual void fix();
  124.     virtual bool outOfRange( int y, int m, int d ) const;
  125.  
  126. protected slots:
  127.     void updateButtons();    
  128.  
  129. private:
  130.     void init();
  131.     int sectionOffsetEnd( int sec ) const;
  132.     int sectionLength( int sec ) const;
  133.     QString sectionText( int sec ) const;
  134.     QDateEditPrivate* d;
  135. };
  136.  
  137. class QTimeEditPrivate;
  138.  
  139. class Q_EXPORT QTimeEdit : public QDateTimeEditBase
  140. {
  141.     Q_OBJECT
  142.     Q_PROPERTY( QTime time READ time WRITE setTime )
  143.     Q_PROPERTY( bool autoAdvance READ autoAdvance WRITE setAutoAdvance )
  144.     Q_PROPERTY( QTime maxValue READ maxValue WRITE setMaxValue )
  145.     Q_PROPERTY( QTime minValue READ minValue WRITE setMinValue )
  146.  
  147. public:
  148.     QTimeEdit( QWidget* parent=0,  const char* name=0 );
  149.     QTimeEdit( const QTime& time, QWidget* parent=0,  const char* name=0 );
  150.     ~QTimeEdit();
  151.  
  152.     QSize sizeHint() const;
  153.     QSize minimumSizeHint() const;
  154.     virtual void setTime( const QTime& time );
  155.     QTime time() const;
  156.     virtual void setAutoAdvance( bool advance );
  157.     bool autoAdvance() const;
  158.  
  159.     virtual void setMinValue( const QTime& d ) { setRange( d, maxValue() ); }
  160.     QTime minValue() const;
  161.     virtual void setMaxValue( const QTime& d ) { setRange( minValue(), d ); }
  162.     QTime maxValue() const;
  163.     virtual void setRange( const QTime& min, const QTime& max );
  164.     QString separator() const;
  165.     virtual void setSeparator( const QString& s );
  166.  
  167. signals:
  168.     void valueChanged( const QTime& time );
  169.  
  170. protected:
  171.     bool event( QEvent *e );
  172.     void timerEvent ( QTimerEvent *e );
  173.     void resizeEvent ( QResizeEvent * );
  174.     void stepUp();
  175.     void stepDown();
  176.     QString sectionFormattedText( int sec );
  177.     void addNumber( int sec, int num );
  178.     void removeLastNumber( int sec );
  179.     bool setFocusSection( int s );
  180.     
  181.     virtual bool outOfRange( int h, int m, int s ) const;
  182.     virtual void setHour( int h );
  183.     virtual void setMinute( int m );
  184.     virtual void setSecond( int s );
  185.     
  186. protected slots:
  187.     void updateButtons();
  188.  
  189. private:
  190.     void init();
  191.     QString sectionText( int sec );
  192.     QTimeEditPrivate* d;
  193. };
  194.  
  195. class QDateTimeEditPrivate;
  196.  
  197. class Q_EXPORT QDateTimeEdit : public QWidget
  198. {
  199.     Q_OBJECT
  200.     Q_PROPERTY( QDateTime dateTime READ dateTime WRITE setDateTime )
  201.  
  202. public:
  203.     QDateTimeEdit( QWidget* parent=0, const char* name=0 );
  204.     QDateTimeEdit( const QDateTime& datetime, QWidget* parent=0,
  205.            const char* name=0 );
  206.     ~QDateTimeEdit();
  207.  
  208.     QSize sizeHint() const;
  209.     QSize minimumSizeHint() const;
  210.     virtual void  setDateTime( const QDateTime & dt );
  211.     QDateTime dateTime() const;
  212.  
  213.     QDateEdit* dateEdit() { return de; }
  214.     QTimeEdit* timeEdit() { return te; }
  215.  
  216.     virtual void setAutoAdvance( bool advance );
  217.     bool autoAdvance() const;
  218.  
  219. signals:
  220.     void valueChanged( const QDateTime& datetime );
  221.  
  222. protected:
  223.     void init();
  224.     void resizeEvent( QResizeEvent * );
  225.     void layoutEditors();
  226.  
  227. protected slots:
  228.     void newValue( const QDate& d );
  229.     void newValue( const QTime& t );
  230.  
  231. private:
  232.     QDateEdit* de;
  233.     QTimeEdit* te;
  234.     QDateTimeEditPrivate* d;
  235. };
  236.  
  237. #endif
  238. #endif
  239.