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:
authorClaudio Cambra <claudio.cambra@gmail.com>2022-04-19 12:03:01 +0300
committerGitHub <noreply@github.com>2022-04-19 12:03:01 +0300
commitad161f9f5fd5ad0f483453c9fb70cee99200f307 (patch)
tree27303a33a1f7c5c16d21e1d6262ee0eda265661c
parent617666304f1b8fdfda33b165cf7a409dd87d3381 (diff)
parent7b65c1ceedd70efa4e8e6af24ee9727d3b4d4a5e (diff)
Merge pull request #4428 from nextcloud/bugfix/new-thumbnails
Fix thumbnails for new files made while client open
-rw-r--r--src/gui/tray/activitydata.cpp62
-rw-r--r--src/gui/tray/activitydata.h4
-rw-r--r--src/gui/tray/usermodel.cpp11
3 files changed, 60 insertions, 17 deletions
diff --git a/src/gui/tray/activitydata.cpp b/src/gui/tray/activitydata.cpp
index 180a57f4e..bd8c566eb 100644
--- a/src/gui/tray/activitydata.cpp
+++ b/src/gui/tray/activitydata.cpp
@@ -46,7 +46,7 @@ ActivityLink ActivityLink::createFomJsonObject(const QJsonObject &obj)
return activityLink;
}
-OCC::Activity Activity::fromActivityJson(const QJsonObject json, const AccountPtr account)
+OCC::Activity Activity::fromActivityJson(const QJsonObject &json, const AccountPtr account)
{
const auto activityUser = json.value(QStringLiteral("user")).toString();
@@ -118,8 +118,9 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject json, const AccountPt
}
const auto previewsData = json.value(QStringLiteral("previews")).toArray();
+ const QMimeDatabase mimeDb;
- for(const auto preview : previewsData) {
+ for(const auto &preview : previewsData) {
const auto jsonPreviewData = preview.toObject();
PreviewData data;
@@ -129,11 +130,10 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject json, const AccountPt
data._view = jsonPreviewData.value(QStringLiteral("view")).toString();
data._filename = jsonPreviewData.value(QStringLiteral("filename")).toString();
- if(data._mimeType.contains(QStringLiteral("text/"))) {
- data._source = account->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/text.svg");
- data._isMimeTypeIcon = true;
- } else if (data._mimeType.contains(QStringLiteral("/pdf"))) {
- data._source = account->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/application-pdf.svg");
+ const auto mimeType = mimeDb.mimeTypeForName(data._mimeType);
+
+ if(data._mimeType.contains(QStringLiteral("text/")) || data._mimeType.contains(QStringLiteral("/pdf"))) {
+ data._source = account->url().toString() + relativeServerFileTypeIconPath(mimeType);
data._isMimeTypeIcon = true;
} else {
data._source = jsonPreviewData.value(QStringLiteral("source")).toString();
@@ -164,4 +164,52 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject json, const AccountPt
return activity;
}
+QString Activity::relativeServerFileTypeIconPath(const QMimeType &mimeType)
+{
+ if(mimeType.isValid() && mimeType.inherits("text/plain")) {
+ return QStringLiteral("/index.php/apps/theming/img/core/filetypes/text.svg");
+ } else if (mimeType.isValid() && mimeType.name().startsWith("image")) {
+ return QStringLiteral("/index.php/apps/theming/img/core/filetypes/image.svg");
+ } else if (mimeType.isValid() && mimeType.name().startsWith("audio")) {
+ return QStringLiteral("/index.php/apps/theming/img/core/filetypes/audio.svg");
+ } else if (mimeType.isValid() && mimeType.name().startsWith("video")) {
+ return QStringLiteral("/index.php/apps/theming/img/core/filetypes/video.svg");
+ } else if (mimeType.isValid() && (mimeType.inherits("application/vnd.oasis.opendocument.text") ||
+ mimeType.inherits("application/msword") ||
+ mimeType.inherits("application/vnd.openxmlformats-officedocument.wordprocessingml.document") ||
+ mimeType.inherits("application/vnd.openxmlformats-officedocument.wordprocessingml.template")||
+ mimeType.inherits("application/vnd.ms-word.document.macroEnabled.12") ||
+ mimeType.inherits("application/vnd.ms-word.template.macroEnabled.12") ||
+ mimeType.inherits("application/vnd.apple.pages"))) {
+ return QStringLiteral("/index.php/apps/theming/img/core/filetypes/x-office-document.svg");
+ } else if (mimeType.isValid() && mimeType.inherits("application/vnd.oasis.opendocument.graphics")) {
+ return QStringLiteral("/index.php/apps/theming/img/core/filetypes/x-office-drawing.svg");
+ } else if (mimeType.isValid() && (mimeType.inherits("application/vnd.oasis.opendocument.presentation") ||
+ mimeType.inherits("application/vnd.ms-powerpoint") ||
+ mimeType.inherits("application/vnd.openxmlformats-officedocument.presentationml.presentation") ||
+ mimeType.inherits("application/vnd.openxmlformats-officedocument.presentationml.template") ||
+ mimeType.inherits("application/vnd.openxmlformats-officedocument.presentationml.slideshow") ||
+ mimeType.inherits("application/vnd.ms-powerpoint.addin.macroEnabled.12") ||
+ mimeType.inherits("application/vnd.ms-powerpoint.presentation.macroEnabled.12") ||
+ mimeType.inherits("application/vnd.ms-powerpoint.template.macroEnabled.12") ||
+ mimeType.inherits("application/vnd.ms-powerpoint.slideshow.macroEnabled.12") ||
+ mimeType.inherits("application/vnd.apple.keynote"))) {
+ return QStringLiteral("/index.php/apps/theming/img/core/filetypes/x-office-presentation.svg");
+ } else if (mimeType.isValid() && (mimeType.inherits("application/vnd.oasis.opendocument.spreadsheet") ||
+ mimeType.inherits("application/vnd.ms-excel") ||
+ mimeType.inherits("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") ||
+ mimeType.inherits("application/vnd.openxmlformats-officedocument.spreadsheetml.template") ||
+ mimeType.inherits("application/vnd.ms-excel.sheet.macroEnabled.12") ||
+ mimeType.inherits("application/vnd.ms-excel.template.macroEnabled.12") ||
+ mimeType.inherits("application/vnd.ms-excel.addin.macroEnabled.12") ||
+ mimeType.inherits("application/vnd.ms-excel.sheet.binary.macroEnabled.12") ||
+ mimeType.inherits("application/vnd.apple.numbers"))) {
+ return QStringLiteral("/index.php/apps/theming/img/core/filetypes/x-office-document.svg");
+ } else if (mimeType.isValid() && mimeType.inherits("application/pdf")) {
+ return QStringLiteral("/index.php/apps/theming/img/core/filetypes/application-pdf.svg");
+ } else {
+ return QStringLiteral("/index.php/apps/theming/img/core/filetypes/file.svg");
+ }
+}
+
}
diff --git a/src/gui/tray/activitydata.h b/src/gui/tray/activitydata.h
index 9c035e2a3..2ec77dadf 100644
--- a/src/gui/tray/activitydata.h
+++ b/src/gui/tray/activitydata.h
@@ -99,7 +99,9 @@ public:
SyncFileItemType
};
- static Activity fromActivityJson(const QJsonObject json, const AccountPtr account);
+ static Activity fromActivityJson(const QJsonObject &json, const AccountPtr account);
+
+ static QString relativeServerFileTypeIconPath(const QMimeType &mimeType);
struct RichSubjectParameter {
QString type; // Required
diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp
index 21247c0e8..fe80eeae5 100644
--- a/src/gui/tray/usermodel.cpp
+++ b/src/gui/tray/usermodel.cpp
@@ -567,19 +567,12 @@ void User::processCompletedSyncItem(const Folder *folder, const SyncFileItemPtr
PreviewData preview;
preview._mimeType = mimeType.name();
preview._filename = fileName;
+ preview._isMimeTypeIcon = true;
if(item->isDirectory()) {
preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/folder.svg");
- preview._isMimeTypeIcon = true;
- } else if(mimeType.isValid() && mimeType.inherits("text/plain")) {
- preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/text.svg");
- preview._isMimeTypeIcon = true;
- } else if (mimeType.isValid() && mimeType.inherits("application/pdf")) {
- preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/application-pdf.svg");
- preview._isMimeTypeIcon = true;
} else {
- preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/files/api/v1/thumbnail/150/150/") + remotePath;
- preview._isMimeTypeIcon = false;
+ preview._source = account()->url().toString() + Activity::relativeServerFileTypeIconPath(mimeType);
}
activity._previews.append(preview);
}