21#include "kexidbdateedit.h"
23#include <tqtoolbutton.h>
24#include <tdepopupmenu.h>
25#include <kdatepicker.h>
28#include <kexiutils/utils.h>
29#include <kexidb/queryschema.h>
31KexiDBDateEdit::KexiDBDateEdit(
const TQDate &date, TQWidget *parent,
const char *name)
34 m_invalidState =
false;
38 m_edit =
new TQDateEdit(date,
this);
39 m_edit->setAutoAdvance(
true);
40 m_edit->setSizePolicy(TQSizePolicy::Minimum, TQSizePolicy::MinimumExpanding);
41 connect( m_edit, TQ_SIGNAL(valueChanged(
const TQDate&)),
this, TQ_SLOT(slotValueChanged(
const TQDate&)) );
42 connect( m_edit, TQ_SIGNAL(valueChanged(
const TQDate&)),
this, TQ_SIGNAL(dateChanged(
const TQDate&)) );
44 TQToolButton* btn =
new TQToolButton(
this);
46 btn->setFixedWidth( TQFontMetrics(btn->font()).width(
" ... ") );
47 btn->setPopupDelay(1);
49#ifdef TQDateTimeEditor_HACK
55 m_datePickerPopupMenu =
new TDEPopupMenu(0,
"date_popup");
56 connect(m_datePickerPopupMenu, TQ_SIGNAL(aboutToShow()),
this, TQ_SLOT(slotShowDatePicker()));
57 m_datePicker =
new KDatePicker(m_datePickerPopupMenu, TQDate::currentDate(), 0);
61 connect(dt, TQ_SIGNAL(tableClicked()),
this, TQ_SLOT(acceptDate()));
62 m_datePicker->setCloseButton(
true);
63 m_datePicker->installEventFilter(
this);
64 m_datePickerPopupMenu->insertItem(m_datePicker);
65 btn->setPopup(m_datePickerPopupMenu);
67 TQHBoxLayout* layout =
new TQHBoxLayout(
this);
68 layout->addWidget(m_edit, 1);
69 layout->addWidget(btn, 0);
71 setFocusProxy(m_edit);
74KexiDBDateEdit::~KexiDBDateEdit()
82 m_invalidState =
true;
84 if (focusPolicy() & TabFocus)
85 setFocusPolicy(TQWidget::ClickFocus);
89KexiDBDateEdit::setEnabled(
bool enabled)
92 if(enabled && m_invalidState)
94 TQWidget::setEnabled(enabled);
99 int setNumberOnFocus = -1;
101 TQString addString(add.toString());
103 if (!addString.isEmpty() && addString[0].latin1()>=
'0' && addString[0].latin1() <=
'9') {
104 setNumberOnFocus = addString[0].latin1()-
'0';
105 d = TQDate(setNumberOnFocus*1000, 1, 1);
109 d = m_origValue.toDate();
117 return TQVariant(m_edit->date());
122 return !m_edit->date().isValid() || m_edit->date().isNull();
137void KexiDBDateEdit::setReadOnly(
bool set)
150#ifdef TQDateTimeEditor_HACK
151 return m_dte_date && m_edit->hasFocus() && m_dte_date->focusSection()==0;
159#ifdef TQDateTimeEditor_HACK
160 return m_dte_date && m_edit->hasFocus()
161 && m_dte_date->focusSection()==int(m_dte_date->sectionCount()-1);
169 m_edit->setDate(TQDate());
174KexiDBDateEdit::slotValueChanged(
const TQDate&)
180KexiDBDateEdit::slotShowDatePicker()
182 TQDate date = m_edit->date();
184 m_datePicker->setDate(date);
185 m_datePicker->setFocus();
186 m_datePicker->show();
187 m_datePicker->setFocus();
191KexiDBDateEdit::acceptDate()
193 m_edit->setDate(m_datePicker->date());
194 m_datePickerPopupMenu->hide();
198KexiDBDateEdit::eventFilter(TQObject *o, TQEvent *e)
200 if (o != m_datePicker)
205 m_datePickerPopupMenu->hide();
207 case TQEvent::KeyPress:
208 case TQEvent::KeyRelease: {
209 TQKeyEvent *ke = (TQKeyEvent *)e;
210 if (ke->key()==TQt::Key_Enter || ke->key()==TQt::Key_Return) {
215 else if (ke->key()==TQt::Key_Escape) {
217 m_datePickerPopupMenu->hide();
221 m_datePickerPopupMenu->setFocus();
230#include "kexidbdateedit.moc"
virtual bool valueIsNull()
virtual TQVariant value()
virtual bool valueIsEmpty()
virtual bool isReadOnly() const
virtual TQWidget * widget()
virtual void setValueInternal(const TQVariant &add, bool removeOld)
virtual void clear()
clears item's data, so the data will contain NULL data
virtual bool cursorAtStart()
virtual bool cursorAtEnd()
virtual void setInvalidState(const TQString &displayText)
type * findFirstChild(TQObject *o, const char *className, const char *objName=0)