~ubuntu-branches/ubuntu/warty/kdebase/warty

« back to all changes in this revision

Viewing changes to kfind/kdatecombo.cpp

  • Committer: Bazaar Package Importer
  • Author(s): LaMont Jones
  • Date: 2004-09-16 04:51:45 UTC
  • Revision ID: james.westby@ubuntu.com-20040916045145-9vr63kith3k1cpza
Tags: upstream-3.2.2
ImportĀ upstreamĀ versionĀ 3.2.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***********************************************************************
 
2
 *
 
3
 *  kdatecombo.cpp
 
4
 *
 
5
 ***********************************************************************/
 
6
 
 
7
#include <kglobal.h>
 
8
#include <klocale.h>
 
9
#include <kdatepicker.h>
 
10
#include <kdatetbl.h>
 
11
#include <kdebug.h>
 
12
 
 
13
#include "kdatecombo.h"
 
14
 
 
15
#include "kdatecombo.moc"
 
16
 
 
17
KDateCombo::KDateCombo(QWidget *parent, const char *name ) : QComboBox(FALSE, parent,name)
 
18
{
 
19
  QDate date = QDate::currentDate();
 
20
  initObject(date, parent, name);
 
21
}
 
22
 
 
23
KDateCombo::KDateCombo(const QDate & date, QWidget *parent, const char *name) : QComboBox(FALSE, parent,name)
 
24
{
 
25
  initObject(date, parent, name);
 
26
}
 
27
 
 
28
void KDateCombo::initObject(const QDate & date, QWidget *parent, const char *name)
 
29
{
 
30
  clearValidator();
 
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);
 
36
  setDate(date);
 
37
 
 
38
  connect(datePicker, SIGNAL(dateSelected(QDate)), this, SLOT(dateEnteredEvent(QDate)));
 
39
}
 
40
 
 
41
KDateCombo::~KDateCombo()
 
42
{
 
43
  delete datePicker;
 
44
  delete popupFrame;
 
45
}
 
46
 
 
47
QString KDateCombo::date2String(const QDate & date)
 
48
{
 
49
  return(KGlobal::locale()->formatDate(date, true));
 
50
}
 
51
 
 
52
QDate & KDateCombo::string2Date(const QString & str, QDate *qd)
 
53
{
 
54
  return *qd = KGlobal::locale()->readDate(str);
 
55
}
 
56
 
 
57
QDate & KDateCombo::getDate(QDate *currentDate)
 
58
{
 
59
  return string2Date(currentText(), currentDate);
 
60
}
 
61
 
 
62
bool KDateCombo::setDate(const QDate & newDate)
 
63
{
 
64
  if (newDate.isValid())
 
65
  {
 
66
    if (count())
 
67
      clear();
 
68
    insertItem(date2String(newDate));
 
69
    return TRUE;
 
70
  }
 
71
  return FALSE;
 
72
}
 
73
 
 
74
void KDateCombo::dateEnteredEvent(QDate newDate)
 
75
{
 
76
  popupFrame->hide();
 
77
  setDate(newDate);
 
78
}
 
79
 
 
80
void KDateCombo::mousePressEvent (QMouseEvent * e)
 
81
{
 
82
  if (e->button() & QMouseEvent::LeftButton)
 
83
    if  (rect().contains( e->pos()))
 
84
    {
 
85
      QDate tempDate;
 
86
      getDate(& tempDate);
 
87
      datePicker->setDate(tempDate);
 
88
      popupFrame->popup(mapToGlobal(QPoint(0, height())));
 
89
      //datePicker->setFocus();
 
90
    }
 
91
}
 
92
 
 
93
bool KDateCombo::eventFilter (QObject* o, QEvent* e)
 
94
{
 
95
  if ( e->type() == QEvent::KeyRelease )
 
96
  {
 
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))
 
100
      {
 
101
        dateEnteredEvent(datePicker->date());
 
102
        return true;
 
103
      }
 
104
      else
 
105
        return false;
 
106
  }
 
107
  else
 
108
    return false;
 
109
}