[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-06 9:32:10
Message-ID: 20100606093210.6320DAC8CC () svn ! kde ! org
[Download RAW message or body]
SVN commit 1135055 by jlayt:
Re-enable showing all holiday types in calendar.
See http://reviewboard.kde.org/r/4236/
M +31 -11 libs/plasmaclock/calendartable.cpp
M +3 -2 libs/plasmaclock/calendartable.h
M +10 -2 plasma/generic/dataengines/calendar/calendarengine.cpp
M +3 -2 plasma/generic/dataengines/calendar/calendarengine.h
--- trunk/KDE/kdebase/workspace/libs/plasmaclock/calendartable.cpp #1135054:1135055
@@ -297,8 +297,8 @@
bool displayHolidays;
QString holidaysRegion;
Plasma::DataEngine *dataEngine;
- // Hash key: int = Julian Day number, QString = what's special
- QMultiHash<int, QString> holidays;
+ // Hash key: int = Julian Day number of holiday, Data = details of holiday
+ QMultiHash<int, Plasma::DataEngine::Data> holidays;
// Hash key: int = Julian Day number, QString = what's going on
QHash<int, QStringList> events;
QHash<int, QStringList> todos;
@@ -511,9 +511,9 @@
d->holidays.clear();
}
-void CalendarTable::addHoliday(const QDate &date, const QString &description)
+void CalendarTable::addHoliday(const QDate &date, Plasma::DataEngine::Data holidayData)
{
- d->holidays.insert(date.toJulianDay(), description);
+ d->holidays.insertMulti(date.toJulianDay(), holidayData);
}
bool CalendarTable::dateHasDetails(const QDate &date) const
@@ -527,10 +527,24 @@
QString details;
const int julian = date.toJulianDay();
- foreach (const QString &holiday, d->holidays.values(julian)) {
- details += i18n("<i>Holiday</i>: %1", holiday);
+ foreach (Plasma::DataEngine::Data holidayData, d->holidays.values(julian)) {
+ if (holidayData.value("observanceType").toString() == "PublicHoliday") {
+ if (!details.isEmpty()) {
+ details += "<br>";
}
+ details += i18n("<i>Holiday</i>: %1", holidayData.value("name").toString());
+ }
+ }
+ foreach (Plasma::DataEngine::Data holidayData, d->holidays.values(julian)) {
+ if (holidayData.value("observanceType").toString() == "Other") {
+ if (!details.isEmpty()) {
+ details += "<br>";
+ }
+ details += holidayData.value("name").toString();
+ }
+ }
+
if (d->events.contains(julian)) {
if (!details.isEmpty()) {
details += "<p>";
@@ -572,7 +586,7 @@
Plasma::DataEngine::DataIterator i(holidays);
while (i.hasNext()) {
i.next();
- addHoliday(QDate::fromString(i.key(), Qt::ISODate), i.value().toString());
+ addHoliday(QDate::fromString(i.key(), Qt::ISODate), i.value().toHash());
}
}
@@ -783,7 +797,9 @@
p->setPen(numberColor);
QFont font = Theme::defaultTheme()->font(Plasma::Theme::DefaultFont);
+ if (type & Event) {
font.setBold(true);
+ }
font.setPixelSize(cellArea.height() * 0.7);
p->setFont(font);
if (!(type & InvalidDate)) {
@@ -807,10 +823,10 @@
elementId = "today";
} else if (type & Selected) {
elementId = "selected";
- } else if (type & Event) {
+ } else if (type & PublicHoliday) {
+ elementId = "red";
+ } else if (type & Holiday) {
elementId = "green";
- } else if (type & Holiday) {
- elementId = "red";
} else {
return;
}
@@ -871,9 +887,13 @@
type |= CalendarTable::Selected;
}
- if (d->holidays.contains(julian)) {
+ foreach (Plasma::DataEngine::Data holidayData, d->holidays.values(julian)) {
+ if (holidayData.value("observanceType").toString() == "PublicHoliday") {
+ type |= CalendarTable::PublicHoliday;
+ } else {
type |= CalendarTable::Holiday;
}
+ }
if (d->events.contains(julian) || d->events.contains(julian)) {
type |= CalendarTable::Event;
--- trunk/KDE/kdebase/workspace/libs/plasmaclock/calendartable.h #1135054:1135055
@@ -49,7 +49,8 @@
Holiday = 8,
NotInCurrentMonth = 16,
InvalidDate = 32,
- Event = 64};
+ Event = 64,
+ PublicHoliday = 128};
Q_DECLARE_FLAGS(CellTypes, CellType)
explicit CalendarTable(QGraphicsWidget *parent = 0);
@@ -76,7 +77,7 @@
QString holidaysRegion() const;
void clearHolidays();
- void addHoliday(const QDate &date, const QString &reason);
+ void addHoliday(const QDate &date, Plasma::DataEngine::Data holidayData);
bool dateHasDetails(const QDate &date) const;
QString dateDetails(const QDate &date) const;
--- trunk/KDE/kdebase/workspace/plasma/generic/dataengines/calendar/calendarengine.cpp #1135054:1135055
@@ -260,10 +260,18 @@
Plasma::DataEngine::Data data;
foreach (const KHolidays::Holiday &holiday, holidays) {
- if (holiday.dayType() == KHolidays::Holiday::NonWorkday && !holiday.text().isEmpty()) {
- data.insertMulti(holiday.date().toString(Qt::ISODate), holiday.text());
+ if (!holiday.text().isEmpty()) {
+ Plasma::DataEngine::Data holidayData;
+ 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 ) {
+ holidayData.insert("observanceType", "PublicHoliday");
+ } else {
+ holidayData.insert("observanceType", "Other");
}
+ data.insertMulti(holiday.date().toString(Qt::ISODate), holidayData);
}
+ }
setData(request, data);
return true;
--- trunk/KDE/kdebase/workspace/plasma/generic/dataengines/calendar/calendarengine.h #1135054:1135055
@@ -50,8 +50,9 @@
* 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
- Each holiday is a pair of QString's, the first being the date in ISO format and the
- second being the holiday name.
+ 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"
holidays:[regionCode]:[YYYY-MM-DD]
* Returns a list of all holidays in a Holiday Region on a given day
holidaysInMonth:[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