DtkGui
DTK Gui module
载入中...
搜索中...
未找到
dthumbnailprovider.h
1// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DFILETHUMBNAILPROVIDER_H
6#define DFILETHUMBNAILPROVIDER_H
7
8#include <dtkgui_global.h>
9#include <DObject>
10
11#include <QThread>
12#include <QFileInfo>
13
14#include <functional>
15
16QT_BEGIN_NAMESPACE
17class QMimeType;
18QT_END_NAMESPACE
19
20DGUI_BEGIN_NAMESPACE
21
22class DThumbnailProviderPrivate;
23class DThumbnailProvider : public QThread, public DTK_CORE_NAMESPACE::DObject
24{
25 Q_OBJECT
26
27public:
28 enum Size {
29 Small = 64,
30 Normal = 128,
31 Large = 256,
32 };
33
34 static DThumbnailProvider *instance();
35
36 bool hasThumbnail(const QFileInfo &info) const;
37 bool hasThumbnail(const QMimeType &mimeType) const;
38
39 QString thumbnailFilePath(const QFileInfo &info, Size size) const;
40
41 QString createThumbnail(const QFileInfo &info, Size size);
42 typedef std::function<void(const QString &)> CallBack;
43 void appendToProduceQueue(const QFileInfo &info, Size size, CallBack callback = 0);
44 void removeInProduceQueue(const QFileInfo &info, Size size);
45
46 QString errorString() const;
47
48 qint64 defaultSizeLimit() const;
49 void setDefaultSizeLimit(qint64 size);
50
51 qint64 sizeLimit(const QMimeType &mimeType) const;
52 void setSizeLimit(const QMimeType &mimeType, qint64 size);
53
54Q_SIGNALS:
55 void thumbnailChanged(const QString &sourceFilePath, const QString &thumbnailPath) const;
56 void createThumbnailFinished(const QString &sourceFilePath, const QString &thumbnailPath) const;
57 void createThumbnailFailed(const QString &sourceFilePath) const;
58
59protected:
60 explicit DThumbnailProvider(QObject *parent = 0);
62
63 void run() Q_DECL_OVERRIDE;
64
65private:
66 D_DECLARE_PRIVATE(DThumbnailProvider)
67};
68
69DGUI_END_NAMESPACE
70
71#endif // DFILETHUMBNAILPROVIDER_H
缩略图生成类.  
Definition dthumbnailprovider.h:24