22#include "dateeditwidget.h"
24#include "kdatepickerpopup_p.h"
26#include <kdatepicker.h>
29#include <klocalizedstring.h>
31#include <QContextMenuEvent>
36DateView::DateView(QWidget *parent)
39 setTextInteractionFlags(Qt::TextSelectableByMouse);
40 setFrameShape(QFrame::StyledPanel);
41 setFrameShadow(QFrame::Sunken);
44void DateView::contextMenuEvent(QContextMenuEvent *event)
46 if (text().isEmpty()) {
51 menu.addAction(i18n(
"Remove"),
this, SLOT(emitSignal()));
53 menu.exec(event->globalPos());
56void DateView::emitSignal()
61DateEditWidget::DateEditWidget(Type type, QWidget *parent)
65 QHBoxLayout *layout =
new QHBoxLayout(
this);
69 layout->addWidget(mView);
71 mClearButton =
new QToolButton;
72 if (layoutDirection() == Qt::LeftToRight) {
73 mClearButton->setIcon(KIcon(QLatin1String(
"edit-clear-locationbar-rtl")));
75 mClearButton->setIcon(KIcon(QLatin1String(
"edit-clear-locationbar-ltr")));
77 layout->addWidget(mClearButton);
79 mSelectButton =
new QToolButton;
80 mSelectButton->setPopupMode(QToolButton::InstantPopup);
83 mSelectButton->setIcon(KIcon(QLatin1String(
"view-calendar-day")));
86 mSelectButton->setIcon(KIcon(QLatin1String(
"view-calendar-birthday")));
89 mSelectButton->setIcon(KIcon(QLatin1String(
"view-calendar-wedding-anniversary")));
93 layout->addWidget(mSelectButton);
94 setFocusProxy(mSelectButton);
95 setFocusPolicy(Qt::StrongFocus);
98 mSelectButton->setMenu(mMenu);
100 connect(mClearButton, SIGNAL(clicked()), SLOT(resetDate()));
101 connect(mMenu, SIGNAL(dateChanged(QDate)), SLOT(dateSelected(QDate)));
102 connect(mView, SIGNAL(resetDate()), SLOT(resetDate()));
107DateEditWidget::~DateEditWidget()
111void DateEditWidget::setDate(
const QDate &date)
114 mMenu->setDate(mDate);
118QDate DateEditWidget::date()
const
123void DateEditWidget::setReadOnly(
bool readOnly)
125 mReadOnly = readOnly;
127 mSelectButton->setEnabled(!readOnly);
128 mClearButton->setEnabled(!readOnly);
131void DateEditWidget::dateSelected(
const QDate &date)
137void DateEditWidget::resetDate()
143void DateEditWidget::updateView()
145 if (mDate.isValid()) {
146 mView->setText(KGlobal::locale()->formatDate(mDate));
147 mClearButton->show();
149 mView->setText(QString());
150 mClearButton->hide();