[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kdecore
From: David Jarvie <software () astrojar ! org ! uk>
Date: 2006-07-31 20:05:11
Message-ID: 1154376311.950218.10938.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 568323 by djarvie:
Move more methods into the base KTimeZoneData class
M +37 -10 ktimezones.cpp
M +8 -56 ktzfiletimezone.cpp
M +0 -14 ktzfiletimezone.h
--- trunk/KDE/kdelibs/kdecore/ktimezones.cpp #568322:568323
@@ -803,6 +803,8 @@
public:
QList<KTimeZonePhase> phases;
QList<KTimeZoneLeapSeconds> leapChanges;
+ QList<int> utcOffsets;
+ QList<QByteArray> abbreviations;
};
@@ -814,8 +816,10 @@
KTimeZoneData::KTimeZoneData(const KTimeZoneData &c)
: d(new KTimeZoneDataPrivate)
{
- d->phases = c.d->phases;
- d->leapChanges = c.d->leapChanges;
+ d->phases = c.d->phases;
+ d->leapChanges = c.d->leapChanges;
+ d->utcOffsets = c.d->utcOffsets;
+ d->abbreviations = c.d->abbreviations;
}
KTimeZoneData::~KTimeZoneData()
@@ -825,8 +829,10 @@
KTimeZoneData &KTimeZoneData::operator=(const KTimeZoneData &c)
{
- d->phases = c.d->phases;
- d->leapChanges = c.d->leapChanges;
+ d->phases = c.d->phases;
+ d->leapChanges = c.d->leapChanges;
+ d->utcOffsets = c.d->utcOffsets;
+ d->abbreviations = c.d->abbreviations;
return *this;
}
@@ -837,9 +843,19 @@
QList<QByteArray> KTimeZoneData::abbreviations() const
{
- QList<QByteArray> abbrs;
- abbrs.append("UTC");
- return abbrs;
+ if (d->abbreviations.isEmpty())
+ {
+ for (int i = 0, end = d->phases.count(); i < end; ++i)
+ {
+ QList<QByteArray> abbrevs = d->phases[i].abbreviations();
+ for (int j = 0, jend = abbrevs.count(); j < jend; ++j)
+ if (d->abbreviations.indexOf(abbrevs[j]) < 0)
+ d->abbreviations.append(abbrevs[j]);
+ }
+ if (d->abbreviations.isEmpty())
+ d->abbreviations += "UTC";
+ }
+ return d->abbreviations;
}
QByteArray KTimeZoneData::abbreviation(const QDateTime &utcDateTime) const
@@ -857,9 +873,20 @@
QList<int> KTimeZoneData::utcOffsets() const
{
- QList<int> offsets;
- offsets.append(0);
- return offsets;
+ if (d->utcOffsets.isEmpty())
+ {
+ for (int i = 0, end = d->phases.count(); i < end; ++i)
+ {
+ int offset = d->phases[i].utcOffset();
+ if (d->utcOffsets.indexOf(offset) < 0)
+ d->utcOffsets.append(offset);
+ }
+ if (d->utcOffsets.isEmpty())
+ d->utcOffsets += 0;
+ else
+ qSort(d->utcOffsets);
+ }
+ return d->utcOffsets;
}
QList<KTimeZonePhase> KTimeZoneData::phases() const
--- trunk/KDE/kdelibs/kdecore/ktzfiletimezone.cpp #568322:568323
@@ -58,33 +58,27 @@
class KTzfileTimeZoneDataPrivate
{
public:
- QList<QByteArray> abbreviations;
- QList<int> utcOffsets;
};
KTzfileTimeZoneData::KTzfileTimeZoneData()
- : d(new KTzfileTimeZoneDataPrivate)
+// : d(new KTzfileTimeZoneDataPrivate)
{ }
KTzfileTimeZoneData::KTzfileTimeZoneData(const KTzfileTimeZoneData &rhs)
- : KTimeZoneData(rhs),
- d(new KTzfileTimeZoneDataPrivate)
+ : KTimeZoneData(rhs)
+// d(new KTzfileTimeZoneDataPrivate)
{
- operator=(rhs);
- d->utcOffsets = rhs.d->utcOffsets;
}
KTzfileTimeZoneData::~KTzfileTimeZoneData()
{
- delete d;
+// delete d;
}
KTzfileTimeZoneData &KTzfileTimeZoneData::operator=(const KTzfileTimeZoneData &rhs)
{
KTimeZoneData::operator=(rhs);
- d->abbreviations = rhs.d->abbreviations;
- d->utcOffsets = rhs.d->utcOffsets;
return *this;
}
@@ -93,17 +87,7 @@
return new KTzfileTimeZoneData(*this);
}
-QList<QByteArray> KTzfileTimeZoneData::abbreviations() const
-{
- return d->abbreviations;
-}
-QList<int> KTzfileTimeZoneData::utcOffsets() const
-{
- return d->utcOffsets;
-}
-
-
/******************************************************************************/
class KTzfileTimeZoneSourcePrivate
@@ -209,14 +193,10 @@
str >> is;
ltt->isdst = (is != 0);
str >> ltt->abbrIndex;
- // Add the UTC offset to the complete list of UTC offsets
- if (data->d->utcOffsets.indexOf(ltt->gmtoff) < 0)
- data->d->utcOffsets.append(ltt->gmtoff);
// kDebug() << "local type: " << ltt->gmtoff << ", " << is << ", " << ltt->abbrIndex << endl;
ltt->isstd = false; // default if no data
ltt->isutc = false; // default if no data
}
- qSort(data->d->utcOffsets);
// Read the timezone abbreviations. They are stored as null terminated strings in
// a character array.
@@ -240,9 +220,10 @@
return 0;
}
quint8 n = 0;
+ QList<QByteArray> abbreviations;
for (i = 0; i < abbrCharCount; ++n, i += strlen(abbrs + i) + 1)
{
- data->d->abbreviations += QByteArray(abbrs + i);
+ abbreviations += QByteArray(abbrs + i);
// Convert the LocalTimeTypes pointer to a sequential index
ltt = localTimeTypes;
for (unsigned j = 0; j < nLocalTimeTypes; ++ltt, ++j)
@@ -341,13 +322,13 @@
ltt = localTimeTypes;
for (i = 0; i < nLocalTimeTypes; ++ltt, ++i)
{
- if (ltt->abbrIndex >= data->d->abbreviations.count())
+ if (ltt->abbrIndex >= abbreviations.count())
{
kError() << "KTzfileTimeZoneSource::parse(): abbreviation index out of range" << endl;
abbrev = "???";
}
else
- abbrev = data->d->abbreviations[ltt->abbrIndex];
+ abbrev = abbreviations[ltt->abbrIndex];
phases += KTimeZonePhase(timeLists[i], ltt->gmtoff, abbrev, ltt->isdst);
}
delete[] localTimeTypes;
@@ -355,32 +336,3 @@
return data;
}
-
-#if 0
-00518 *leap_correct = 0L;
-00519 *leap_hit = 0;
-00520
-00521 /* Find the last leap second correction transition time before TIMER. */
-00522 i = num_leaps;
-00523 do
-00524 if (i-- == 0)
-00525 return;
-00526 while (timer < leaps[i].transition);
-00527
-00528 /* Apply its correction. */
-00529 *leap_correct = leaps[i].change;
-00530
-00531 if (timer == leaps[i].transition && /* Exactly at the transition time. */
-00532 ((i == 0 && leaps[i].change > 0) ||
-00533 leaps[i].change > leaps[i - 1].change))
-00534 {
-00535 *leap_hit = 1;
-00536 while (i > 0
-00537 && leaps[i].transition == leaps[i - 1].transition + 1
-00538 && leaps[i].change == leaps[i - 1].change + 1)
-00539 {
-00540 ++*leap_hit;
-00541 --i;
-00542 }
-00543 }
-#endif
--- trunk/KDE/kdelibs/kdecore/ktzfiletimezone.h #568322:568323
@@ -145,20 +145,6 @@
*/
virtual KTimeZoneData *clone();
- /**
- * Returns the complete list of time zone abbreviations.
- *
- * @return the list of abbreviations
- */
- virtual QList<QByteArray> abbreviations() const;
-
- /**
- * Returns the complete list of UTC offsets for the time zone.
- *
- * @return the sorted list of UTC offsets
- */
- virtual QList<int> utcOffsets() const;
-
private:
KTzfileTimeZoneDataPrivate *d;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic