diff --git a/src/dfm-base/mimetype/mimetypedisplaymanager.h b/src/dfm-base/mimetype/mimetypedisplaymanager.h index a0d1c0e04a..3b8323158b 100644 --- a/src/dfm-base/mimetype/mimetypedisplaymanager.h +++ b/src/dfm-base/mimetype/mimetypedisplaymanager.h @@ -23,7 +23,6 @@ class MimeTypeDisplayManager : public QObject FileInfo::FileType displayNameToEnum(const QString &mimeType); QString defaultIcon(const QString &mimeType); QMap displayNames(); - void loadSupportMimeTypes(); QStringList supportArchiveMimetypes(); QStringList supportVideoMimeTypes(); QStringList supportAudioMimeTypes(); @@ -31,6 +30,7 @@ class MimeTypeDisplayManager : public QObject private: explicit MimeTypeDisplayManager(QObject *parent = nullptr); void initData(); + void loadSupportMimeTypes(); QStringList readlines(const QString &path); private: diff --git a/src/dfm-base/utils/thumbnail/thumbnailhelper.cpp b/src/dfm-base/utils/thumbnail/thumbnailhelper.cpp index 1585313332..50dba28867 100644 --- a/src/dfm-base/utils/thumbnail/thumbnailhelper.cpp +++ b/src/dfm-base/utils/thumbnail/thumbnailhelper.cpp @@ -30,6 +30,7 @@ DFMGLOBAL_USE_NAMESPACE ThumbnailHelper::ThumbnailHelper() { + QObject::connect(this, &ThumbnailHelper::saveImage, this, &ThumbnailHelper::onSaveImage, Qt::QueuedConnection); } void ThumbnailHelper::initSizeLimit() @@ -141,12 +142,16 @@ QString ThumbnailHelper::saveThumbnail(const QUrl &url, const QImage &img, Thumb tmpImg.setText(QT_STRINGIFY(Thumb::MTime), QString::number(fileModify)); makePath(thumbnailPath); + emit saveImage(tmpImg, thumbnailFilePath, fileUrl); + + return thumbnailFilePath; +} + +void ThumbnailHelper::onSaveImage(const QImage &tmpImg, const QString &thumbnailFilePath, const QString &fileUrl) +{ if (!tmpImg.save(thumbnailFilePath, Q_NULLPTR, 50)) { qCWarning(logDFMBase) << "thumbnail: save failed." << fileUrl; - return ""; } - - return thumbnailFilePath; } QImage ThumbnailHelper::thumbnailImage(const QUrl &fileUrl, ThumbnailSize size) @@ -232,10 +237,10 @@ bool ThumbnailHelper::checkThumbEnable(const QUrl &url) return false; } - bool enable{ true }; - if (FileUtils::isMtpFile(fileUrl)) { // 是否是mtpfile + bool enable { true }; + if (FileUtils::isMtpFile(fileUrl)) { // 是否是mtpfile enable = DConfigManager::instance()->value("org.deepin.dde.file-manager.preview", "mtpThumbnailEnable", true).toBool(); - } else if (DevProxyMng->isFileOfProtocolMounts(fileUrl.path())) { // 是否是协议设备 + } else if (DevProxyMng->isFileOfProtocolMounts(fileUrl.path())) { // 是否是协议设备 enable = Application::instance()->genericAttribute(Application::kShowThunmbnailInRemote).toBool(); } diff --git a/src/dfm-base/utils/thumbnail/thumbnailhelper.h b/src/dfm-base/utils/thumbnail/thumbnailhelper.h index 1196f02698..adce85d7dc 100644 --- a/src/dfm-base/utils/thumbnail/thumbnailhelper.h +++ b/src/dfm-base/utils/thumbnail/thumbnailhelper.h @@ -15,8 +15,9 @@ namespace dfmbase { -class ThumbnailHelper +class ThumbnailHelper : public QObject { + Q_OBJECT public: explicit ThumbnailHelper(); void initSizeLimit(); @@ -34,9 +35,13 @@ class ThumbnailHelper static QString sizeToFilePath(DFMGLOBAL_NAMESPACE::ThumbnailSize size); static QByteArray dataToMd5Hex(const QByteArray &data); +Q_SIGNALS: + void saveImage(const QImage &tmpImg, const QString &thumbnailFilePath, const QString &fileUrl); + private: bool checkMimeTypeSupport(const QMimeType &mime); void makePath(const QString &path); + void onSaveImage(const QImage &tmpImg, const QString &thumbnailFilePath, const QString &fileUrl); private: DMimeDatabase mimeDatabase;