summaryrefslogtreecommitdiffabout
path: root/libkdepim/kdateedit.h
Side-by-side diff
Diffstat (limited to 'libkdepim/kdateedit.h') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/kdateedit.h140
1 files changed, 140 insertions, 0 deletions
diff --git a/libkdepim/kdateedit.h b/libkdepim/kdateedit.h
new file mode 100644
index 0000000..742d843
--- a/dev/null
+++ b/libkdepim/kdateedit.h
@@ -0,0 +1,140 @@
+/*
+ This file is part of libkdepim.
+
+ Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
+
+ This program 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 of the License, or
+ (at your option) any later version.
+
+ This program is distributed 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 this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+#ifndef KDATEEDIT_H
+#define KDATEEDIT_H
+
+#include <qhbox.h>
+#include <qvbox.h>
+#include <qdatetime.h>
+#include <qmap.h>
+
+class QLineEdit;
+class QPushButton;
+class QObject;
+class QEvent;
+class KDatePicker;
+class KDateValidator;
+
+/**
+* A date editing widget that consists of a line edit followed by
+* a small push button. The line edit contains the date in text form,
+* and the push button will display a 'popup' style date picker.
+*
+* This widget also supports advanced features like allowing the user
+* to type in the day name to get the date. The following keywords
+* are supported (in the native language): tomorrow, yesturday, today,
+* monday, tuesday, wednesday, thursday, friday, saturday, sunday.
+*
+* @author Cornelius Schumacher <schumacher@kde.org>
+* @author Mike Pilone <mpilone@slac.com>
+*/
+class KDateEdit : public QHBox
+{
+ Q_OBJECT
+ public:
+ KDateEdit(QWidget *parent=0, const char *name=0, bool withoutDP = false );
+ virtual ~KDateEdit();
+
+ /** @return True if the date in the text edit is valid,
+ * false otherwise. This will not modify the display of the date,
+ * but only check for validity.
+ */
+ bool inputIsValid();
+
+ /** @return The date entered. This will not
+ * modify the display of the date, but only return it.
+ */
+ QDate date() const;
+
+ /** @param handleInvalid If true the date edit accepts invalid dates
+ * and displays them as the empty ("") string. It also returns an invalid date.
+ * If false (default) invalid dates are not accepted and instead the date
+ * of today will be returned.
+ */
+ void setHandleInvalid(bool handleInvalid);
+
+ /** Checks for a focus out event. The display of the date is updated
+ * to display the proper date when the focus leaves.
+ */
+ virtual bool eventFilter(QObject *o, QEvent *e);
+
+ signals:
+ /** This signal is emitted whenever the user modifies the date. This
+ * may not get emitted until the user presses enter in the line edit or
+ * focus leaves the widget (ie: the user confirms their selection).
+ */
+ void dateChanged(QDate);
+ void returnPressed();
+ public slots:
+ /** Sets the date.
+ *
+ * @param date The new date to display. This date must be valid or
+ * it will not be displayed.
+ */
+ void setDate(QDate date);
+ // set Date with key_up key_down to relation of cursor Position
+ // and set selection from begin to end of single date
+ void setDate(QDate, int *cpos, const int, const bool);
+
+ /** Sets the date edit to be enabled or disabled (grayed out)
+ *
+ * @param on Enabled if true, disabled if false
+ */
+ void setEnabled(bool on);
+
+ protected slots:
+ void toggleDatePicker();
+ void lineEnterPressed();
+ void textChanged(const QString &);
+
+ private:
+ /** Reads the text from the line edit. If the text is a keyword, the
+ * word will be translated to a date. If the text is not a keyword, the
+ * text will be interpreted as a date.
+ */
+ QDate readDate() const;
+
+ /** Maps the text that the user can enter to the offset in days from
+ * today. For example, the text 'tomorrow' is mapped to +1.
+ */
+ QMap<QString, int> mKeywordMap;
+ bool mTextChanged;
+ bool mHandleInvalid;
+
+ QPushButton *mDateButton;
+ QLineEdit *mDateEdit;
+ KDatePicker *mDatePicker;
+ QVBox *mDateFrame;
+ int maxDay;
+ bool withoutDp;
+
+ protected:
+ virtual void keyPressEvent(QKeyEvent *qke);
+ void setSelect ( int, int );
+ bool dateFormShort;
+ char lengthMonthName;
+
+};
+
+#endif