From 72b990edf0191c2e86204308ce2cac07120284bf Mon Sep 17 00:00:00 2001 From: ulf69 Date: Wed, 29 Sep 2004 06:14:36 +0000 Subject: support for ISODate parsing --- (limited to 'microkde/kdecore') diff --git a/microkde/kdecore/klocale.cpp b/microkde/kdecore/klocale.cpp index 7bd8a70..17031c7 100644 --- a/microkde/kdecore/klocale.cpp +++ b/microkde/kdecore/klocale.cpp @@ -579,18 +579,41 @@ QTime KLocale::readTime(const QString &intstr, bool seconds, bool *ok) const } QDateTime KLocale::readDateTime(const QString &intstr, - bool shortFormat, - bool includeSeconds, IntDateFormat intIntDateFormat, bool* ok) const { bool ok1, ok2; - QDate m_date = readDate(date, &ok1); - QTime m_time = KGlobal::locale()->readTime(time, &ok2); - if ((ok1 == false) || (ok2 == false)) - qDebug("Serializer::extractMeta invalid date or time !!!!!!!!!!!!!"); + // AT the moment we can not read any other format then ISODate + if ( intIntDateFormat != ISODate ) + { + qDebug("KLocale::readDateTime, only ISODate is supported."); + return QDateTime(); + } + + int pos = intstr.find("T"); + QString date = intstr.left(pos); + QString time = intstr.mid(pos+1); + QString dformat = dateFormat(intIntDateFormat); + QString tformat = timeFormat(intIntDateFormat); + + QDate m_date = readDate(date, dformat, &ok1); + QTime m_time = readTime(time, tformat, &ok2); + + if (ok) + { + if ((ok1 == false) || (ok2 == false)) + *ok = false; + else + *ok = true; + } + QDateTime m_dt; + m_dt.setDate(m_date); + m_dt.setTime(m_time); + + qDebug("KLocale::readDateTime() transformed %s into %s (%s), %s (%s) : err1=%i, err2=%i", intstr.latin1(), date.latin1(), dformat.latin1(), time.latin1(), tformat.latin1(), ok1, ok2); + return m_dt; } @@ -686,21 +709,20 @@ QString KLocale::dateFormat(IntDateFormat intIntDateFormat) const { const IntDateFormat dformat = (intIntDateFormat == Undefined)?mIntDateFormat:intIntDateFormat; + if ( dformat == ISODate ) + return "%Y-%m-%d"; + if ( QApplication::desktop()->width() < 480 ) { if ( dformat == Default ) return "%a %d %b %Y"; else if ( dformat == Format1 ) return "%a %b %d %Y"; - else if ( dformat == ISODate ) - return "%a %Y %b %d"; } else { - if ( dformat == Default ) return "%A %d %B %Y"; else if ( dformat == Format1 ) return "%A %B %d %Y"; - else if ( dformat == ISODate ) - return "%A %Y %B %d"; + } return mDateFormat ; } diff --git a/microkde/kdecore/klocale.h b/microkde/kdecore/klocale.h index 153b12a..949301a 100644 --- a/microkde/kdecore/klocale.h +++ b/microkde/kdecore/klocale.h @@ -53,6 +53,7 @@ class KLocale QDate readDate(const QString &str, bool* ok = 0) const; QDate readDate( const QString &intstr, const QString &fmt, bool* ok = 0) const; QTime readTime(const QString &str, bool* ok = 0) const; + QDateTime readDateTime(const QString &intstr, IntDateFormat intIntDateFormat, bool* ok) const; bool use12Clock() const; bool weekStartsMonday() const; -- cgit v0.9.0.2