1
/***********************************************************************
5
***********************************************************************/
9
#include <kdatepicker.h>
13
#include "kdatecombo.h"
15
#include "kdatecombo.moc"
17
KDateCombo::KDateCombo(QWidget *parent, const char *name ) : QComboBox(FALSE, parent,name)
19
QDate date = QDate::currentDate();
20
initObject(date, parent, name);
23
KDateCombo::KDateCombo(const QDate & date, QWidget *parent, const char *name) : QComboBox(FALSE, parent,name)
25
initObject(date, parent, name);
28
void KDateCombo::initObject(const QDate & date, QWidget *parent, const char *name)
31
popupFrame = new KPopupFrame(this, "popupFrame");
32
datePicker = new KDatePicker(popupFrame, date, "datePicker");
33
datePicker->setMinimumSize(datePicker->sizeHint());
34
datePicker->installEventFilter(this);
35
popupFrame->setMainWidget(datePicker);
38
connect(datePicker, SIGNAL(dateSelected(QDate)), this, SLOT(dateEnteredEvent(QDate)));
41
KDateCombo::~KDateCombo()
47
QString KDateCombo::date2String(const QDate & date)
49
return(KGlobal::locale()->formatDate(date, true));
52
QDate & KDateCombo::string2Date(const QString & str, QDate *qd)
54
return *qd = KGlobal::locale()->readDate(str);
57
QDate & KDateCombo::getDate(QDate *currentDate)
59
return string2Date(currentText(), currentDate);
62
bool KDateCombo::setDate(const QDate & newDate)
64
if (newDate.isValid())
68
insertItem(date2String(newDate));
74
void KDateCombo::dateEnteredEvent(QDate newDate)
80
void KDateCombo::mousePressEvent (QMouseEvent * e)
82
if (e->button() & QMouseEvent::LeftButton)
83
if (rect().contains( e->pos()))
87
datePicker->setDate(tempDate);
88
popupFrame->popup(mapToGlobal(QPoint(0, height())));
89
//datePicker->setFocus();
93
bool KDateCombo::eventFilter (QObject* o, QEvent* e)
95
if ( e->type() == QEvent::KeyRelease )
97
QKeyEvent *k = (QKeyEvent *)e;
98
//Press return == pick selected date and close the combo
99
if((k->key()==Qt::Key_Return)||(k->key()==Qt::Key_Enter))
101
dateEnteredEvent(datePicker->date());