1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 | /* ============================================================
*
* This file is a part of digiKam project
* https://www.digikam.org
*
* Date : 2004-12-21
* Description : abstract camera interface class
*
* SPDX-FileCopyrightText: 2004-2005 by Renchi Raju <renchi dot raju at gmail dot com>
* SPDX-FileCopyrightText: 2006-2025 by Gilles Caulier <caulier dot gilles at gmail dot com>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*
* ============================================================ */
#pragma once
// Qt includes
#include <QImage>
#include <QString>
#include <QStringList>
#include <QByteArray>
// Local includes
#include "camiteminfo.h"
namespace Digikam
{
class DMetadata;
class DKCamera : public QObject
{
Q_OBJECT
public:
enum CameraDriverType
{
GPhotoDriver = 0,
UMSDriver
};
public:
explicit DKCamera(const QString& title, const QString& model, const QString& port, const QString& path);
~DKCamera() override = default;
public:
virtual bool doConnect() = 0;
virtual void cancel() = 0;
virtual bool getFolders(const QString& folder) = 0;
/// If getImageDimensions is false, the camera shall set width and height to -1
/// if the values are not immediately available
virtual bool getItemsInfoList(const QString& folder, bool useMetadata, CamItemInfoList& infoList) = 0;
virtual void getItemInfo(const QString& folder, const QString& itemName, CamItemInfo& info, bool useMetadata) = 0;
virtual bool getThumbnail(const QString& folder, const QString& itemName, QImage& thumbnail) = 0;
virtual bool getMetadata(const QString& folder, const QString& itemName, DMetadata& meta) = 0;
virtual bool getFreeSpace(qint64& bytesSize, qint64& bytesAvail) = 0;
virtual bool getPreview(QImage& preview) = 0;
virtual bool capture(CamItemInfo& itemInfo) = 0;
virtual bool downloadItem(const QString& folder, const QString& itemName, const QString& saveFile) = 0;
virtual bool deleteItem(const QString& folder, const QString& itemName) = 0;
virtual bool uploadItem(const QString& folder, const QString& itemName,
const QString& localFile, CamItemInfo& itemInfo) = 0;
virtual bool cameraSummary(QString& summary) = 0;
virtual bool cameraManual(QString& manual) = 0;
virtual bool cameraAbout(QString& about) = 0;
virtual bool setLockItem(const QString& folder, const QString& itemName, bool lock) = 0;
virtual DKCamera::CameraDriverType cameraDriverType() = 0;
virtual QByteArray cameraMD5ID() = 0;
public:
QString title() const;<--- Function 'title()' should return member 'm_title' by const reference.
QString model() const;<--- Function 'model()' should return member 'm_model' by const reference.
QString port() const;
QString path() const;<--- Function 'path()' should return member 'm_path' by const reference.
QString uuid() const;<--- Function 'uuid()' should return member 'm_uuid' by const reference.
bool thumbnailSupport() const;
bool deleteSupport() const;
bool uploadSupport() const;
bool mkDirSupport() const;
bool delDirSupport() const;
bool captureImageSupport() const;
bool captureImagePreviewSupport() const;
QString mimeType(const QString& fileext) const;
void printSupportedFeatures();
protected:
void fillItemInfoFromMetadata(CamItemInfo& item, const DMetadata& meta) const;
protected:
bool m_thumbnailSupport = false;
bool m_deleteSupport = false;
bool m_uploadSupport = false;
bool m_mkDirSupport = false;
bool m_delDirSupport = false;
bool m_captureImageSupport = false;
bool m_captureImagePreviewSupport = false;
QString m_imageFilter;
QString m_movieFilter;
QString m_audioFilter;
QString m_rawFilter;
QString m_model;
QString m_port;
QString m_path;
QString m_title;
QString m_uuid;
Q_SIGNALS:
void signalFolderList(const QStringList&);
private:
// Disable
DKCamera(QObject*) = delete;
};
} // namespace Digikam
|