Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/tray/unifiedsearchresultslistmodel.cpp')
-rw-r--r--src/gui/tray/unifiedsearchresultslistmodel.cpp82
1 files changed, 46 insertions, 36 deletions
diff --git a/src/gui/tray/unifiedsearchresultslistmodel.cpp b/src/gui/tray/unifiedsearchresultslistmodel.cpp
index 708acb7de..7d5cd95db 100644
--- a/src/gui/tray/unifiedsearchresultslistmodel.cpp
+++ b/src/gui/tray/unifiedsearchresultslistmodel.cpp
@@ -19,7 +19,6 @@
#include "guiutility.h"
#include "folderman.h"
#include "networkjobs.h"
-#include "systray.h"
#include <algorithm>
@@ -27,47 +26,49 @@
#include <QDesktopServices>
namespace {
-QString imagePlaceholderUrlForProviderId(const QString &providerId)
+QString imagePlaceholderUrlForProviderId(const QString &providerId, const bool darkMode)
{
+ const auto colorIconPath = darkMode ? QStringLiteral(":/client/theme/white/") : QStringLiteral(":/client/theme/black/");
if (providerId.contains(QStringLiteral("message"), Qt::CaseInsensitive)
|| providerId.contains(QStringLiteral("talk"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral("qrc:///client/theme/white/wizard-talk.svg") : QStringLiteral("qrc:///client/theme/black/wizard-talk.svg");
+ return colorIconPath % QStringLiteral("wizard-talk.svg");
} else if (providerId.contains(QStringLiteral("file"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral("qrc:///client/theme/white/edit.svg") : QStringLiteral("qrc:///client/theme/black/edit.svg");
+ return colorIconPath % QStringLiteral("edit.svg");
} else if (providerId.contains(QStringLiteral("deck"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral("qrc:///client/theme/white/deck.svg") : QStringLiteral("qrc:///client/theme/black/deck.svg");
+ return colorIconPath % QStringLiteral("deck.svg");
} else if (providerId.contains(QStringLiteral("calendar"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral("qrc:///client/theme/white/calendar.svg") : QStringLiteral("qrc:///client/theme/black/calendar.svg");
+ return colorIconPath % QStringLiteral("calendar.svg");
} else if (providerId.contains(QStringLiteral("mail"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral("qrc:///client/theme/white/email.svg") : QStringLiteral("qrc:///client/theme/black/email.svg");
+ return colorIconPath % QStringLiteral("email.svg");
} else if (providerId.contains(QStringLiteral("comment"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral("qrc:///client/theme/white/comment.svg") : QStringLiteral("qrc:///client/theme/black/comment.svg");
+ return colorIconPath % QStringLiteral("comment.svg");
}
- return QStringLiteral("qrc:///client/theme/change.svg");
+ return colorIconPath % QStringLiteral("change.svg");
}
-QString localIconPathFromIconPrefix(const QString &iconNameWithPrefix)
+QString localIconPathFromIconPrefix(const QString &iconNameWithPrefix, const bool darkMode)
{
+ const auto colorIconPath = darkMode ? QStringLiteral(":/client/theme/white/") : QStringLiteral(":/client/theme/black/");
if (iconNameWithPrefix.contains(QStringLiteral("message"), Qt::CaseInsensitive)
|| iconNameWithPrefix.contains(QStringLiteral("talk"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral(":/client/theme/white/wizard-talk.svg") : QStringLiteral(":/client/theme/black/wizard-talk.svg");
+ return colorIconPath % QStringLiteral("wizard-talk.svg");
} else if (iconNameWithPrefix.contains(QStringLiteral("folder"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral(":/client/theme/white/folder.svg") : QStringLiteral(":/client/theme/black/folder.svg");
+ return colorIconPath % QStringLiteral("folder.svg");
} else if (iconNameWithPrefix.contains(QStringLiteral("deck"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral(":/client/theme/white/deck.svg") : QStringLiteral(":/client/theme/black/deck.svg");
+ return colorIconPath % QStringLiteral("deck.svg");
} else if (iconNameWithPrefix.contains(QStringLiteral("contacts"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral(":/client/theme/white/wizard-groupware.svg") : QStringLiteral(":/client/theme/black/wizard-groupware.svg");
+ return colorIconPath % QStringLiteral("wizard-groupware.svg");
} else if (iconNameWithPrefix.contains(QStringLiteral("calendar"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral(":/client/theme/white/calendar.svg") : QStringLiteral(":/client/theme/black/calendar.svg");
+ return colorIconPath % QStringLiteral("calendar.svg");
} else if (iconNameWithPrefix.contains(QStringLiteral("mail"), Qt::CaseInsensitive)) {
- return OCC::Systray::instance()->darkMode() ? QStringLiteral(":/client/theme/white/email.svg") : QStringLiteral(":/client/theme/black/email.svg");
+ return colorIconPath % QStringLiteral("email.svg");
}
- return OCC::Systray::instance()->darkMode() ? QStringLiteral(":/client/theme/white/change.svg") : QStringLiteral(":/client/theme/change.svg");
+ return colorIconPath % QStringLiteral("change.svg");
}
-QString iconUrlForDefaultIconName(const QString &defaultIconName)
+QString iconUrlForDefaultIconName(const QString &defaultIconName, const bool darkMode)
{
const QUrl urlForIcon{defaultIconName};
@@ -75,15 +76,16 @@ QString iconUrlForDefaultIconName(const QString &defaultIconName)
return defaultIconName;
}
+ const auto colorIconPath = darkMode ? QStringLiteral(":/client/theme/white/") : QStringLiteral(":/client/theme/black/");
+
if (defaultIconName.startsWith(QStringLiteral("icon-"))) {
const auto parts = defaultIconName.split(QLatin1Char('-'));
if (parts.size() > 1) {
- const QString blackOrWhite = OCC::Systray::instance()->darkMode() ? QStringLiteral(":/client/theme/white/") : QStringLiteral(":/client/theme/black/");
- const QString blackIconFilePath = blackOrWhite + parts[1] + QStringLiteral(".svg");
+ const QString blackOrWhiteIconFilePath = colorIconPath + parts[1] + QStringLiteral(".svg");
- if (QFile::exists(blackIconFilePath)) {
- return blackIconFilePath;
+ if (QFile::exists(blackOrWhiteIconFilePath)) {
+ return blackOrWhiteIconFilePath;
}
const QString iconFilePath = QStringLiteral(":/client/theme/") + parts[1] + QStringLiteral(".svg");
@@ -93,14 +95,14 @@ QString iconUrlForDefaultIconName(const QString &defaultIconName)
}
}
- const auto iconNameFromIconPrefix = localIconPathFromIconPrefix(defaultIconName);
+ const auto iconNameFromIconPrefix = localIconPathFromIconPrefix(defaultIconName, darkMode);
if (!iconNameFromIconPrefix.isEmpty()) {
return iconNameFromIconPrefix;
}
}
- return OCC::Systray::instance()->darkMode() ? QStringLiteral(":/client/theme/white/change.svg") : QStringLiteral(":/client/theme/change.svg");
+ return colorIconPath % QStringLiteral("change.svg");
}
QString generateUrlForThumbnail(const QString &thumbnailUrl, const QUrl &serverUrl)
@@ -125,7 +127,7 @@ QString generateUrlForThumbnail(const QString &thumbnailUrl, const QUrl &serverU
return thumbnailUrlCopy;
}
-QString generateUrlForIcon(const QString &fallbackIcon, const QUrl &serverUrl)
+QString generateUrlForIcon(const QString &fallbackIcon, const QUrl &serverUrl, const bool darkMode)
{
auto serverUrlCopy = serverUrl;
@@ -144,7 +146,7 @@ QString generateUrlForIcon(const QString &fallbackIcon, const QUrl &serverUrl)
}
} else if (!fallbackIconCopy.isEmpty()) {
// could be one of names for standard icons (e.g. icon-mail)
- const auto defaultIconUrl = iconUrlForDefaultIconName(fallbackIconCopy);
+ const auto defaultIconUrl = iconUrlForDefaultIconName(fallbackIconCopy, darkMode);
if (!defaultIconUrl.isEmpty()) {
fallbackIconCopy = defaultIconUrl;
}
@@ -153,7 +155,7 @@ QString generateUrlForIcon(const QString &fallbackIcon, const QUrl &serverUrl)
return fallbackIconCopy;
}
-QString iconsFromThumbnailAndFallbackIcon(const QString &thumbnailUrl, const QString &fallbackIcon, const QUrl &serverUrl)
+QString iconsFromThumbnailAndFallbackIcon(const QString &thumbnailUrl, const QString &fallbackIcon, const QUrl &serverUrl, const bool darkMode)
{
if (thumbnailUrl.isEmpty() && fallbackIcon.isEmpty()) {
return {};
@@ -165,7 +167,7 @@ QString iconsFromThumbnailAndFallbackIcon(const QString &thumbnailUrl, const QSt
}
const auto urlForThumbnail = generateUrlForThumbnail(thumbnailUrl, serverUrl);
- const auto urlForFallbackIcon = generateUrlForIcon(fallbackIcon, serverUrl);
+ const auto urlForFallbackIcon = generateUrlForIcon(fallbackIcon, serverUrl, darkMode);
qDebug() << "SEARCH" << urlForThumbnail << urlForFallbackIcon;
@@ -204,10 +206,14 @@ QVariant UnifiedSearchResultsListModel::data(const QModelIndex &index, int role)
return _results.at(index.row())._providerName;
case ProviderIdRole:
return _results.at(index.row())._providerId;
- case ImagePlaceholderRole:
- return imagePlaceholderUrlForProviderId(_results.at(index.row())._providerId);
- case IconsRole:
- return _results.at(index.row())._icons;
+ case DarkImagePlaceholderRole:
+ return imagePlaceholderUrlForProviderId(_results.at(index.row())._providerId, true);
+ case LightImagePlaceholderRole:
+ return imagePlaceholderUrlForProviderId(_results.at(index.row())._providerId, false);
+ case DarkIconsRole:
+ return _results.at(index.row())._darkIcons;
+ case LightIconsRole:
+ return _results.at(index.row())._lightIcons;
case TitleRole:
return _results.at(index.row())._title;
case SublineRole:
@@ -239,8 +245,10 @@ QHash<int, QByteArray> UnifiedSearchResultsListModel::roleNames() const
auto roles = QAbstractListModel::roleNames();
roles[ProviderNameRole] = "providerName";
roles[ProviderIdRole] = "providerId";
- roles[IconsRole] = "icons";
- roles[ImagePlaceholderRole] = "imagePlaceholder";
+ roles[DarkIconsRole] = "darkIcons";
+ roles[LightIconsRole] = "lightIcons";
+ roles[DarkImagePlaceholderRole] = "darkImagePlaceholder";
+ roles[LightImagePlaceholderRole] = "lightImagePlaceholder";
roles[TitleRole] = "resultTitle";
roles[SublineRole] = "subline";
roles[ResourceUrlRole] = "resourceUrlRole";
@@ -577,8 +585,10 @@ void UnifiedSearchResultsListModel::parseResultsForProvider(const QJsonObject &d
const auto accountUrl = (_accountState && _accountState->account()) ? _accountState->account()->url() : QUrl();
result._resourceUrl = makeResourceUrl(resourceUrl, accountUrl);
- result._icons = iconsFromThumbnailAndFallbackIcon(entryMap.value(QStringLiteral("thumbnailUrl")).toString(),
- entryMap.value(QStringLiteral("icon")).toString(), accountUrl);
+ result._darkIcons = iconsFromThumbnailAndFallbackIcon(entryMap.value(QStringLiteral("thumbnailUrl")).toString(),
+ entryMap.value(QStringLiteral("icon")).toString(), accountUrl, true);
+ result._lightIcons = iconsFromThumbnailAndFallbackIcon(entryMap.value(QStringLiteral("thumbnailUrl")).toString(),
+ entryMap.value(QStringLiteral("icon")).toString(), accountUrl, false);
newEntries.push_back(result);
}