digiKam
Loading...
Searching...
No Matches
cameracontroller.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2004-09-17
7 * Description : digital camera controller
8 *
9 * SPDX-FileCopyrightText: 2004-2005 by Renchi Raju <renchi dot raju at gmail dot com>
10 * SPDX-FileCopyrightText: 2006-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 * SPDX-FileCopyrightText: 2006-2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Qt includes
20
21#include <QThread>
22#include <QString>
23#include <QFileInfo>
24
25// Local includes
26
27#include "downloadsettings.h"
28#include "camiteminfo.h"
29#include "dmetadata.h"
30#include "dkcamera.h"
31#include "dhistoryview.h"
32#include "digikam_export.h"
33
34namespace Digikam
35{
36
37class CameraCommand;
38
39class DIGIKAM_GUI_EXPORT CameraController : public QThread
40{
41 Q_OBJECT
42
43public:
44
45 explicit CameraController(QWidget* const parent,
46 const QString& title,
47 const QString& model,
48 const QString& port,
49 const QString& path);
50 ~CameraController() override;
51
52 bool cameraThumbnailSupport() const;
53 bool cameraDeleteSupport() const;
54 bool cameraUploadSupport() const;
55 bool cameraMkDirSupport() const;
56 bool cameraDelDirSupport() const;
57 bool cameraCaptureImageSupport() const;
58 bool cameraCaptureImagePreviewSupport() const;
59
60 QString cameraPath() const;
61 QString cameraTitle() const;
62
63 DKCamera::CameraDriverType cameraDriverType() const;
64
65 QByteArray cameraMD5ID() const;
66
67 void capture();
68 void listRootFolder(bool useMetadata);
69 void listFolders(const QString& folder = QString());
70 void listFiles(const QString& folder, bool useMetadata);
71 void getFreeSpace();
72 void getMetadata(const QString& folder, const QString& file);
73 void getCameraInformation();
74 void getPreview();
75
79 CameraCommand* getThumbsInfo(const CamItemInfoList& infoList, int thumbSize);
80 void moveThumbsInfo(CameraCommand* const cmd);
81
82 void download(const DownloadSettings& downloadSettings);
83 void download(const DownloadSettingsList& list);
84 void upload(const QFileInfo& srcFileInfo,
85 const QString& destFile,
86 const QString& destFolder);
87 void deleteFile(const QString& folder, const QString& file);
88 void lockFile(const QString& folder, const QString& file, bool lock);
89 void openFile(const QString& folder, const QString& file);
90
91 QIcon mimeTypeThumbnail(const QString& itemName) const;
92
93Q_SIGNALS:
94
95 void signalBusy(bool val);
96 void signalLogMsg(const QString& msg,
98 const QString& folder,
99 const QString& file);
100 void signalCameraInformation(const QString& summary,
101 const QString& manual,
102 const QString& about);
103 void signalFreeSpace(qint64 bytesSize,
104 qint64 bytesAvail);
105 void signalPreview(const QImage& preview);
106
107 void signalConnected(bool val);
108 void signalFolderList(const QStringList& folderList);
109 void signalFileList(const CamItemInfoList& infoList);
110 void signalUploaded(const CamItemInfo& itemInfo);
111 void signalDownloaded(const QString& folder,
112 const QString& file,
113 const QString& temp,
114 int status);
115 void signalDeleted(const QString& folder,
116 const QString& file,
117 bool status);
118 void signalLocked(const QString& folder,
119 const QString& file,
120 bool status);
121 void signalThumbInfo(const QString& folder,
122 const QString& file,
123 const CamItemInfo& itemInfo,
124 const QImage& thumb);
125 void signalThumbInfoFailed(const QString& folder,
126 const QString& file,
127 const CamItemInfo& itemInfo);
128 void signalMetadata(const QString& folder,
129 const QString& file,
130 const MetaEngineData& exifData);
131
132 void signalInternalDownloadFailed(const QString& folder,
133 const QString& file);
134 void signalInternalUploadFailed(const QString& folder,
135 const QString& file,
136 const QString& src);
137 void signalInternalDeleteFailed(const QString& folder,
138 const QString& file);
139 void signalInternalLockFailed(const QString& folder,
140 const QString& file);
141
142public Q_SLOTS:
143
144 void slotCancel();
145 void slotConnect();
146
147protected:
148
149 void run() override;
150 void executeCommand(CameraCommand* const cmd);
151
152private Q_SLOTS:
153
154 void slotDownloadFailed(const QString& folder,
155 const QString& file);
156 void slotUploadFailed(const QString& folder,
157 const QString& file,
158 const QString& src);
159 void slotDeleteFailed(const QString& folder,
160 const QString& file);
161 void slotLockFailed(const QString& folder,
162 const QString& file);
163
164private:
165
166 void sendLogMsg(const QString& msg,
167 DHistoryView::EntryType type = DHistoryView::StartingEntry,
168 const QString& folder = QString(),
169 const QString& file = QString());
170
171 void addCommand(CameraCommand* const cmd);
172 bool queueIsEmpty() const;
173
174private:
175
176 class Private;
177 Private* const d = nullptr;
178};
179
180} // namespace Digikam
Definition camiteminfo.h:39
Definition cameracontroller.h:40
void signalUploaded(const CamItemInfo &itemInfo)
void signalFileList(const CamItemInfoList &infoList)
void signalCameraInformation(const QString &summary, const QString &manual, const QString &about)
void signalInternalUploadFailed(const QString &folder, const QString &file, const QString &src)
void signalFolderList(const QStringList &folderList)
void signalThumbInfo(const QString &folder, const QString &file, const CamItemInfo &itemInfo, const QImage &thumb)
void signalThumbInfoFailed(const QString &folder, const QString &file, const CamItemInfo &itemInfo)
void signalInternalDeleteFailed(const QString &folder, const QString &file)
void signalFreeSpace(qint64 bytesSize, qint64 bytesAvail)
void signalDownloaded(const QString &folder, const QString &file, const QString &temp, int status)
void signalBusy(bool val)
void signalMetadata(const QString &folder, const QString &file, const MetaEngineData &exifData)
void signalLogMsg(const QString &msg, DHistoryView::EntryType type, const QString &folder, const QString &file)
void signalInternalDownloadFailed(const QString &folder, const QString &file)
void signalPreview(const QImage &preview)
void signalLocked(const QString &folder, const QString &file, bool status)
void signalDeleted(const QString &folder, const QString &file, bool status)
void signalConnected(bool val)
void signalInternalLockFailed(const QString &folder, const QString &file)
EntryType
Definition dhistoryview.h:38
CameraDriverType
Definition dkcamera.h:41
Definition downloadsettings.h:35
Definition metaengine_data.h:31
Definition datefolderview.cpp:34
QList< CamItemInfo > CamItemInfoList
Definition camiteminfo.h:116
QList< DownloadSettings > DownloadSettingsList
Definition downloadsettings.h:92