Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[nemo-qml-plugin-calendar] Use mKCal::Notebook color as canonical col…
…or. Contributes to JB#51280

Previously, the canonical color used for display purposes in the
jolla-calendar application for a particular notebook was stored
in a QSettings .ini file.

That allowed the user to define a color for a calendar locally, without
perturbing the color specified on the server.  However, it also meant
that the semantics of color selection were not easily discoverable,
and further, that synchronisation of the color selection would never
be performed.

This commit ensures that the synced color will be used as the color
displayed in the application, and that the color selection will be
stored into the notebook in the database.

Finally, it ensures that if no color is set, a default color is chosen
and stored into the notebook, to avoid the possibility that the color
of the primary notebook can change between reboots.
  • Loading branch information
chriadam committed Jan 15, 2021
1 parent 20c3c97 commit 7ccf9e4
Showing 1 changed file with 19 additions and 8 deletions.
27 changes: 19 additions & 8 deletions src/calendarworker.cpp
Expand Up @@ -689,13 +689,15 @@ void CalendarWorker::setNotebookColor(const QString &notebookUid, const QString
return;

if (mNotebooks.value(notebookUid).color != color) {
if (mKCal::Notebook::Ptr mkNotebook = mStorage->notebook(notebookUid)) {
mkNotebook->setColor(color);
mStorage->updateNotebook(mkNotebook);
}

CalendarData::Notebook notebook = mNotebooks.value(notebookUid);
notebook.color = color;
mNotebooks.insert(notebook.uid, notebook);

QSettings settings("nemo", "nemo-qml-plugin-calendar");
settings.setValue("colors/" + notebook.uid, notebook.color);

emit notebooksChanged(mNotebooks.values());
}
}
Expand Down Expand Up @@ -950,11 +952,20 @@ void CalendarWorker::loadNotebooks()
notebook.excluded = true;
}

notebook.color = settings.value("colors/" + notebook.uid, QString()).toString();
if (notebook.color.isEmpty())
notebook.color = mkNotebook->color();
if (notebook.color.isEmpty())
notebook.color = defaultNotebookColors.at((nextDefaultNotebookColor++) % defaultNotebookColors.count());
const QString &confColor = settings.value("colors/" + notebook.uid, QString()).toString();
const QString &notebookColor = confColor.isEmpty() ? mkNotebook->color() : confColor;
const bool confHasColor = !confColor.isEmpty();
notebook.color = notebookColor.isEmpty()
? defaultNotebookColors.at((nextDefaultNotebookColor++) % defaultNotebookColors.count())
: notebookColor;
bool canRemoveConf = true;
if (notebook.color != mkNotebook->color()) {
mkNotebook->setColor(notebook.color);
canRemoveConf = mStorage->updateNotebook(mkNotebook);
}
if (confHasColor && canRemoveConf) {
settings.remove("colors/" + notebook.uid);
}

QString accountStr = mkNotebook->account();
if (!accountStr.isEmpty()) {
Expand Down

0 comments on commit 7ccf9e4

Please sign in to comment.