summaryrefslogtreecommitdiffabout
path: root/libkdepim/kdateedit.h
authorzautrix <zautrix>2004-06-26 19:01:18 (UTC)
committer zautrix <zautrix>2004-06-26 19:01:18 (UTC)
commitb9aad1f15dc600e4dbe4c62d3fcced6363188ba3 (patch) (unidiff)
tree2c3d4004fb21c72cba65793859f9bcd8ffd3a49c /libkdepim/kdateedit.h
downloadkdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.zip
kdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.tar.gz
kdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.tar.bz2
Initial revision
Diffstat (limited to 'libkdepim/kdateedit.h') (more/less context) (show 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 @@
1/*
2 This file is part of libkdepim.
3
4 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19
20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution.
23*/
24#ifndef KDATEEDIT_H
25#define KDATEEDIT_H
26
27#include <qhbox.h>
28#include <qvbox.h>
29#include <qdatetime.h>
30#include <qmap.h>
31
32class QLineEdit;
33class QPushButton;
34class QObject;
35class QEvent;
36class KDatePicker;
37class KDateValidator;
38
39/**
40* A date editing widget that consists of a line edit followed by
41* a small push button. The line edit contains the date in text form,
42* and the push button will display a 'popup' style date picker.
43*
44* This widget also supports advanced features like allowing the user
45* to type in the day name to get the date. The following keywords
46* are supported (in the native language): tomorrow, yesturday, today,
47* monday, tuesday, wednesday, thursday, friday, saturday, sunday.
48*
49* @author Cornelius Schumacher <schumacher@kde.org>
50* @author Mike Pilone <mpilone@slac.com>
51*/
52class KDateEdit : public QHBox
53{
54 Q_OBJECT
55 public:
56 KDateEdit(QWidget *parent=0, const char *name=0, bool withoutDP = false );
57 virtual ~KDateEdit();
58
59 /** @return True if the date in the text edit is valid,
60 * false otherwise. This will not modify the display of the date,
61 * but only check for validity.
62 */
63 bool inputIsValid();
64
65 /** @return The date entered. This will not
66 * modify the display of the date, but only return it.
67 */
68 QDate date() const;
69
70 /** @param handleInvalid If true the date edit accepts invalid dates
71 * and displays them as the empty ("") string. It also returns an invalid date.
72 * If false (default) invalid dates are not accepted and instead the date
73 * of today will be returned.
74 */
75 void setHandleInvalid(bool handleInvalid);
76
77 /** Checks for a focus out event. The display of the date is updated
78 * to display the proper date when the focus leaves.
79 */
80 virtual bool eventFilter(QObject *o, QEvent *e);
81
82 signals:
83 /** This signal is emitted whenever the user modifies the date. This
84 * may not get emitted until the user presses enter in the line edit or
85 * focus leaves the widget (ie: the user confirms their selection).
86 */
87 void dateChanged(QDate);
88 void returnPressed();
89 public slots:
90 /** Sets the date.
91 *
92 * @param date The new date to display. This date must be valid or
93 * it will not be displayed.
94 */
95 void setDate(QDate date);
96 // set Date with key_up key_down to relation of cursor Position
97 // and set selection from begin to end of single date
98 void setDate(QDate, int *cpos, const int, const bool);
99
100 /** Sets the date edit to be enabled or disabled (grayed out)
101 *
102 * @param on Enabled if true, disabled if false
103 */
104 void setEnabled(bool on);
105
106 protected slots:
107 void toggleDatePicker();
108 void lineEnterPressed();
109 void textChanged(const QString &);
110
111 private:
112 /** Reads the text from the line edit. If the text is a keyword, the
113 * word will be translated to a date. If the text is not a keyword, the
114 * text will be interpreted as a date.
115 */
116 QDate readDate() const;
117
118 /** Maps the text that the user can enter to the offset in days from
119 * today. For example, the text 'tomorrow' is mapped to +1.
120 */
121 QMap<QString, int> mKeywordMap;
122 bool mTextChanged;
123 bool mHandleInvalid;
124
125 QPushButton *mDateButton;
126 QLineEdit *mDateEdit;
127 KDatePicker *mDatePicker;
128 QVBox *mDateFrame;
129 int maxDay;
130 bool withoutDp;
131
132 protected:
133 virtual void keyPressEvent(QKeyEvent *qke);
134 void setSelect ( int, int );
135 bool dateFormShort;
136 char lengthMonthName;
137
138};
139
140#endif