--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbwidgets/editors/hbdatetimeedit.cpp Mon Apr 19 14:02:13 2010 +0300
@@ -0,0 +1,245 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbWidgets module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+#include <QDateTime>
+
+#include "hblineedit.h"
+#include "hbdatetimevalidator_p.h"
+#include "hbdatetimeedit.h"
+#include "hbdatetimeedit_p.h"
+
+/*!
+ @alpha
+ @hbwidgets
+ \brief The HbDateTimeEdit class provides a widget for editing dates and times.
+
+
+
+ \sa QDateTime
+
+ */
+
+/*!
+ Constructs datetime edit widget.
+ */
+HbDateTimeEdit::HbDateTimeEdit (QGraphicsItem *parent) :
+ HbLineEdit(*new HbDateTimeEditPrivate, parent)
+{
+ Q_D(HbDateTimeEdit);
+ d->q_ptr = this;
+
+ d->init();
+}
+
+/*!
+ Constructs date time editor to display \a date using default locale.
+
+ */
+HbDateTimeEdit::HbDateTimeEdit (const QDate &date, QGraphicsItem *parent) :
+ HbLineEdit(*new HbDateTimeEditPrivate, parent)
+{
+ Q_D(HbDateTimeEdit);
+ d->q_ptr = this;
+
+ d->init(date);
+}
+
+/*!
+ Constructs date time editor to display \a time using default locale.
+ */
+HbDateTimeEdit::HbDateTimeEdit (const QTime &time, QGraphicsItem *parent) :
+ HbLineEdit(*new HbDateTimeEditPrivate, parent)
+{
+ Q_D(HbDateTimeEdit);
+ d->q_ptr = this;
+
+ d->init(time);
+}
+
+/*!
+ Constructs date time editor to display \a dateTime using default locale.
+ */
+HbDateTimeEdit::HbDateTimeEdit (const QDateTime &dateTime, QGraphicsItem *parent) :
+ HbLineEdit(*new HbDateTimeEditPrivate, parent)
+{
+ Q_D(HbDateTimeEdit);
+ d->q_ptr = this;
+
+ d->init(dateTime);
+}
+
+/*
+ for internal use only
+ */
+HbDateTimeEdit::HbDateTimeEdit (HbDateTimeEditPrivate &dd, QGraphicsItem *parent) :
+ HbLineEdit(dd, parent)
+{
+ Q_D(HbDateTimeEdit);
+ d->q_ptr = this;
+
+ d->init();
+}
+
+/*!
+ Destructor.
+ */
+HbDateTimeEdit::~HbDateTimeEdit ()
+{
+}
+
+/*!
+ \reimp
+ */
+int HbDateTimeEdit::type () const
+{
+ return Type;
+}
+
+/*!
+ Sets the current value.
+
+ \sa dateTime()
+ */
+void HbDateTimeEdit::setDateTime (const QDateTime& dateTime)
+{
+ Q_D(HbDateTimeEdit);
+ d->dateTime = dateTime;
+ d->isSetDateTimeActive = true;
+ setPlainText(dateTime.toString(d->validator->displayFormat()));
+ d->isSetDateTimeActive = false;
+}
+
+/*!
+ Returns the current value as a QDateTime.
+
+ /sa setDateTime()
+ */
+QDateTime HbDateTimeEdit::dateTime () const
+{
+ Q_D(const HbDateTimeEdit);
+ return d->dateTime;
+}
+
+/*!
+ Returns the current display format.
+
+ /sa setDisplayFormat() and QDateTime::toString
+ */
+QString HbDateTimeEdit::displayFormat () const
+{
+ Q_D(const HbDateTimeEdit);
+ return d->validator->displayFormat();
+}
+
+/*!
+ Sets editor to display date and/or time in custom \a format.
+
+ \sa displayFormat()
+ \sa QDateTime::toString
+ */
+void HbDateTimeEdit::setDisplayFormat (const QString& format)
+{
+ Q_D(HbDateTimeEdit);
+
+ QString suportedFormat = format;
+
+ static const char KNotSupportedDayLongNameFormat[] = "dddd";
+ static const char KNotSupportedDayShortNameFormat[] = "ddd";
+ static const char KNotSupportedMonthLongNameFormat[] = "MMMM";
+ static const char KNotSupportedMonthShortNameFormat[] = "MMM";
+ static const char KSupportedMonthFormat[] = "MM";
+
+ suportedFormat.remove(KNotSupportedDayLongNameFormat);
+ suportedFormat.remove(KNotSupportedDayShortNameFormat);
+
+ suportedFormat.replace(KNotSupportedMonthLongNameFormat, KSupportedMonthFormat);
+ suportedFormat.replace(KNotSupportedMonthShortNameFormat, KSupportedMonthFormat);
+
+ if(suportedFormat!=format) {
+ qWarning() << "Names of days and months are not suported. Replacing format string: "
+ << format << " by a format string: "
+ << suportedFormat;
+ } else {
+ // to save memory
+ suportedFormat = format;
+ }
+ d->validator->setDisplayFormat(suportedFormat);
+ setPlainText(d->dateTime.toString(d->validator->displayFormat()));
+}
+
+/*!
+ Sets editor to display date in format described by \a locale
+
+ \sa QLocale::dateFormat
+ */
+void HbDateTimeEdit::setDateFormat(const QLocale& locale)
+{
+ setDisplayFormat(locale.dateFormat(QLocale::ShortFormat));
+}
+
+/*!
+ Sets editor to display time in format described by \a locale
+
+ \sa QLocale::timeFormat
+ */
+void HbDateTimeEdit::setTimeFormat(const QLocale& locale)
+{
+ setDisplayFormat(locale.timeFormat(QLocale::ShortFormat));
+}
+
+/*!
+ Sets editor to display date and time in format described by \a locale
+
+ \sa QLocale::dateTimeFormat
+ */
+void HbDateTimeEdit::setDateTimeFormat(const QLocale& locale)
+{
+ setDisplayFormat(locale.dateTimeFormat(QLocale::ShortFormat));
+}
+
+
+void HbDateTimeEdit::setMaxLength (int length)
+{
+ HbLineEdit::setMaxLength(length);
+}
+
+void HbDateTimeEdit::setText (const QString &text)
+{
+ HbLineEdit::setText(text);
+}
+
+/*!
+ \reimp
+*/
+void HbDateTimeEdit::focusOutEvent(QFocusEvent *event)
+{
+ HbAbstractEdit::focusOutEvent(event);
+
+ Q_D(HbDateTimeEdit);
+ if(d->validator->fixDate(&d->cursor, true)) {
+ // fixing so restore focus to editor
+ setFocus(event->reason());
+ }
+}