[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace
From: John Layt <john () layt ! net>
Date: 2010-06-10 21:42:20
Message-ID: 20100610214220.45C79AC8CF () svn ! kde ! org
[Download RAW message or body]
SVN commit 1136834 by jlayt:
Fix data engine to return all holidays without using a multi hash which caused
a memory 'leak'.
See http://reviewboard.kde.org/r/4273/
M +8 -6 libs/plasmaclock/calendartable.cpp
M +4 -3 plasma/generic/dataengines/calendar/calendarengine.cpp
M +7 -6 plasma/generic/dataengines/calendar/calendarengine.h
--- trunk/KDE/kdebase/workspace/libs/plasmaclock/calendartable.cpp #1136833:1136834
@@ -22,6 +22,7 @@
//Qt
#include <QtCore/QDate>
+#include <QtCore/QListIterator>
#include <QtGui/QPainter>
#include <QtGui/QWidget>
#include <QtGui/QGraphicsSceneWheelEvent>
@@ -579,14 +580,15 @@
// Just fetch the days displayed in the grid
QDate startDate = d->dateFromRowColumn(0, 0);
QDate endDate = d->dateFromRowColumn(DISPLAYED_WEEKS - 1, d->daysInWeek - 1);
- Plasma::DataEngine::Data holidays = d->dataEngine->query("holidays:" + holidaysRegion() + ':'
- + startDate.toString(Qt::ISODate) + ':'
- + endDate.toString(Qt::ISODate));
+ QString queryString = "holidays:" + holidaysRegion() + ':' + startDate.toString(Qt::ISODate)
+ + ':' + endDate.toString(Qt::ISODate);
+ QList<QVariant> holidays = d->dataEngine->query(queryString).value(queryString).toList();
- Plasma::DataEngine::DataIterator i(holidays);
+ QMutableListIterator<QVariant> i(holidays);
while (i.hasNext()) {
- i.next();
- addHoliday(QDate::fromString(i.key(), Qt::ISODate), i.value().toHash());
+ Plasma::DataEngine::Data holidayData = i.next().toHash();
+ QDate holidayDate = QDate::fromString(holidayData.take("date").toString(), Qt::ISODate);
+ addHoliday(holidayDate, holidayData);
}
}
--- trunk/KDE/kdebase/workspace/plasma/generic/dataengines/calendar/calendarengine.cpp #1136833:1136834
@@ -259,10 +259,11 @@
holidays = region->holidays(startDate, endDate);
}
- Plasma::DataEngine::Data data;
+ QList<QVariant> holidayList;
foreach (const KHolidays::Holiday &holiday, holidays) {
if (!holiday.text().isEmpty()) {
Plasma::DataEngine::Data holidayData;
+ holidayData.insert("date", holiday.date().toString(Qt::ISODate));
holidayData.insert("name", holiday.text());
// It's a blunt tool for now, we only know if it's a full public holiday or not
if ( holiday.dayType() == KHolidays::Holiday::NonWorkday ) {
@@ -270,11 +271,11 @@
} else {
holidayData.insert("observanceType", "Other");
}
- data.insertMulti(holiday.date().toString(Qt::ISODate), holidayData);
+ holidayList.append(QVariant(holidayData));
}
}
- setData(request, data);
+ setData(request, QVariant(holidayList));
return true;
}
--- trunk/KDE/kdebase/workspace/plasma/generic/dataengines/calendar/calendarengine.h #1136833:1136834
@@ -49,14 +49,15 @@
holidaysDefaultRegion:[regionCode]
* Returns a QString of a sensible default Holiday Region
holidays:[regionCode]:[YYYY-MM-DD]:[YYYY-MM-DD]
- * Returns a list of all holidays in a Holiday Region between two given dates
- Note that multiple holidays can be returned for each date
- Each holiday is a pair of a QString containing the date in ISO format and a Data
- containing value pairs for "name" and "observanceType"
+ * Returns a QList of all holidays in a Holiday Region between two given dates.
+ Note that multiple holidays can be returned for each date.
+ Each holiday is a Data containing string value pairs for "date", "name" and
+ "observanceType". The date is Gregorian in ISO format. The "observanceType"
+ is either "PublicHoliday" or "Other".
holidays:[regionCode]:[YYYY-MM-DD]
- * Returns a list of all holidays in a Holiday Region on a given day
+ * Returns a QList of all holidays in a Holiday Region on a given day
holidaysInMonth:[regionCode]:[YYYY-MM-DD]
- * Returns a list of all holidays in a Holiday Region in a given month
+ * Returns a QList of all holidays in a Holiday Region in a given month
isHoliday:[regionCode]:[YYYY-MM-DD]
* Returns a bool if a given date is a Holiday in the given Holiday Region
description:[regionCode]:[YYYY-MM-DD]
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic