Git commit 14fd90df45b319792d348dbff8aeea3e4d9c612d by David Jarvie. Committed on 30/11/2011 at 23:49. Pushed by djarvie into branch 'master'. Show calendars in colour appropriate to the calendar list's alarm type M +19 -13 kalarm/akonadimodel.cpp M +2 -0 kalarm/akonadimodel.h M +7 -0 kalarm/collectionmodel.cpp http://commits.kde.org/kdepim/14fd90df45b319792d348dbff8aeea3e4d9c612d diff --git a/kalarm/akonadimodel.cpp b/kalarm/akonadimodel.cpp index 0d4a8ff..71fccf1 100644 --- a/kalarm/akonadimodel.cpp +++ b/kalarm/akonadimodel.cpp @@ -221,19 +221,7 @@ QVariant AkonadiModel::data(const QModelIndex& index, = int role) const break; } case Qt::ForegroundRole: - { - QStringList mimeTypes =3D collection.contentMimeTypes(); - QColor colour; - if (mimeTypes.contains(KAlarmCal::MIME_ACTIVE)) - colour =3D KColorScheme(QPalette::Active).foreground(K= ColorScheme::NormalText).color(); - else if (mimeTypes.contains(KAlarmCal::MIME_ARCHIVED)) - colour =3D Preferences::archivedColour(); - else if (mimeTypes.contains(KAlarmCal::MIME_TEMPLATE)) - colour =3D KColorScheme(QPalette::Active).foreground(K= ColorScheme::LinkText).color(); - if (colour.isValid()) - return (collection.rights() & writableRights) =3D=3D w= ritableRights ? colour : KColorUtils::lighten(colour, 0.25); - break; - } + return foregroundColor(collection, collection.contentMimeT= ypes()); case Qt::ToolTipRole: return tooltip(collection, CalEvent::ACTIVE | CalEvent::AR= CHIVED | CalEvent::TEMPLATE); case AlarmTypeRole: @@ -886,6 +874,24 @@ void AkonadiModel::updateCommandError(const KAEvent& e= vent) } = /*************************************************************************= ***** +* Return the foreground color for displaying a collection, based on the +* supplied mime types which it contains, and on whether it is fully writab= le. +*/ +QColor AkonadiModel::foregroundColor(const Akonadi::Collection& collection= , const QStringList& mimeTypes) +{ + QColor colour; + if (mimeTypes.contains(KAlarmCal::MIME_ACTIVE)) + colour =3D KColorScheme(QPalette::Active).foreground(KColorScheme:= :NormalText).color(); + else if (mimeTypes.contains(KAlarmCal::MIME_ARCHIVED)) + colour =3D Preferences::archivedColour(); + else if (mimeTypes.contains(KAlarmCal::MIME_TEMPLATE)) + colour =3D KColorScheme(QPalette::Active).foreground(KColorScheme:= :LinkText).color(); + if (colour.isValid() && (collection.rights() & writableRights) !=3D = writableRights) + return KColorUtils::lighten(colour, 0.25); + return colour; +} + +/*************************************************************************= ***** * Set the background color for displaying the collection and its alarms. */ void AkonadiModel::setBackgroundColor(Collection& collection, const QColor= & colour) diff --git a/kalarm/akonadimodel.h b/kalarm/akonadimodel.h index 4077de7..ca51ea2 100644 --- a/kalarm/akonadimodel.h +++ b/kalarm/akonadimodel.h @@ -85,6 +85,8 @@ class AkonadiModel : public Akonadi::EntityTreeModel QString displayName(Akonadi::Collection&) const; /** Return the storage type (file/directory/URL etc.) for a collec= tion. */ QString storageType(const Akonadi::Collection&) const; + /** Get the foreground color for a collection, based on specified = mime types. */ + static QColor foregroundColor(const Akonadi::Collection&, const QS= tringList& mimeTypes); /** Set the background color for a collection and its alarms. */ void setBackgroundColor(Akonadi::Collection&, const QColor&); /** Get the background color for a collection and its alarms. */ diff --git a/kalarm/collectionmodel.cpp b/kalarm/collectionmodel.cpp index 954c097..5d11bfd 100644 --- a/kalarm/collectionmodel.cpp +++ b/kalarm/collectionmodel.cpp @@ -299,6 +299,13 @@ QVariant CollectionCheckListModel::data(const QModelIn= dex& index, int role) cons // This is a Collection row switch (role) { + case Qt::ForegroundRole: + { + QString mimeType =3D CalEvent::mimeType(mAlarmType); + if (collection.contentMimeTypes().contains(mimeType)) + return AkonadiModel::foregroundColor(collection, QStri= ngList(mimeType)); + break; + } case Qt::FontRole: { if (!collection.hasAttribute()