Index: src/helper.cpp =================================================================== --- src/helper.cpp +++ src/helper.cpp @@ -37,13 +37,22 @@ return (luminance > 128.0) ? QColor(0, 0, 0) : QColor(255, 255, 255); } +static QString keyForCollectionColor(const Akonadi::Collection &coll) +{ + if (coll.remoteId().isEmpty()) { + qCDebug(CALENDARVIEW_LOG) << "Missing remoteId on collection" << coll.id() << coll.name() << "falling back to id"; + return QString::number(coll.id()); + } + return coll.remoteId(); +} + void EventViews::setResourceColor(const Akonadi::Collection &coll, const QColor &color, const PrefsPtr &preferences) { if (!coll.isValid()) { return; } - const QString id = QString::number(coll.id()); + const QString id = keyForCollectionColor(coll); if (coll.hasAttribute()) { Akonadi::CollectionColorAttribute *colorAttr = coll.attribute(); @@ -61,12 +70,17 @@ if (!coll.isValid()) { return QColor(); } - const QString id = QString::number(coll.id()); + const QString id = keyForCollectionColor(coll); // Color stored in eventviewsrc (and in memory) QColor color = preferences->resourceColorKnown(id); if (color.isValid()) { return color; } + // Fallback for old config files which use ID instead of RemoteID + color = preferences->resourceColorKnown(QString::number(coll.id())); + if (color.isValid()) { + return color; + } // Color stored in akonadi if (coll.hasAttribute()) { Akonadi::CollectionColorAttribute *colorAttr