Commit 7ccf9e49 authored by Chris Adams's avatar Chris Adams

[nemo-qml-plugin-calendar] Use mKCal::Notebook color as canonical color. 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.
parent 20c3c979
......@@ -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());
}
}
......@@ -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()) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment