1
/* ============================================================
3
* This file is a part of digiKam project
4
* http://www.digikam.org
7
* Description : digital camera controller
9
* Copyright (C) 2004-2005 by Renchi Raju <renchi dot raju at gmail dot com>
10
* Copyright (C) 2006-2012 by Gilles Caulier <caulier dot gilles at gmail dot com>
11
* Copyright (C) 2006-2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
13
* This program is free software; you can redistribute it
14
* and/or modify it under the terms of the GNU General
15
* Public License as published by the Free Software Foundation;
16
* either version 2, or (at your option)
19
* This program is distributed in the hope that it will be useful,
20
* but WITHOUT ANY WARRANTY; without even the implied warranty of
21
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
* GNU General Public License for more details.
24
* ============================================================ */
26
#ifndef CAMERACONTROLLER_H
27
#define CAMERACONTROLLER_H
34
#include <QCustomEvent>
39
#include "downloadsettings.h"
40
#include "camiteminfo.h"
41
#include "dmetadata.h"
43
#include "dhistoryview.h"
44
#include "thumbnailsize.h"
52
class CameraController : public QThread
58
CameraController(QWidget* const parent, const QString& title, const QString& model,
59
const QString& port, const QString& path);
62
bool cameraThumbnailSupport() const;
63
bool cameraDeleteSupport() const;
64
bool cameraUploadSupport() const;
65
bool cameraMkDirSupport() const;
66
bool cameraDelDirSupport() const;
67
bool cameraCaptureImageSupport() const;
69
QString cameraPath() const;
70
QString cameraTitle() const;
72
DKCamera::CameraDriverType cameraDriverType() const;
74
QByteArray cameraMD5ID() const;
78
void listFiles(const QString& folder, bool useMetadata);
80
void getMetadata(const QString& folder, const QString& file);
81
void getCameraInformation();
84
/** Get thumbnails for a list of camera items plus advanced information from metadata.
86
void getThumbsInfo(const CamItemInfoList& infoList, ThumbnailSize thumbSize);
89
void download(const DownloadSettings& downloadSettings);
90
void download(const DownloadSettingsList& list);
91
void upload(const QFileInfo& srcFileInfo, const QString& destFile, const QString& destFolder);
92
void deleteFile(const QString& folder, const QString& file);
93
void lockFile(const QString& folder, const QString& file, bool lock);
94
void openFile(const QString& folder, const QString& file);
96
QPixmap mimeTypeThumbnail(const QString& itemName, int thumbSize) const;
100
void signalBusy(bool val);
101
void signalLogMsg(const QString& msg, DHistoryView::EntryType type, const QString& folder, const QString& file);
102
void signalCameraInformation(const QString& summary, const QString& manual,
103
const QString& about);
104
void signalFreeSpace(unsigned long kBSize, unsigned long kBAvail);
105
void signalPreview(const QImage& preview);
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, const QString& file, int status);
112
void signalDownloadComplete(const QString& sourceFolder, const QString& sourceFile,
113
const QString& destFolder, const QString& destFile);
114
void signalFinished();
115
void signalSkipped(const QString& folder, const QString& file);
116
void signalDeleted(const QString& folder, const QString& file, bool status);
117
void signalLocked(const QString& folder, const QString& file, bool status);
118
void signalThumbInfo(const QString& folder, const QString& file, const CamItemInfo& itemInfo, const QImage& thumb);
119
void signalThumbInfoFailed(const QString& folder, const QString& file, const CamItemInfo& itemInfo);
120
void signalMetadata(const QString& folder, const QString& file, const DMetadata& exifData);
122
void signalInternalCheckRename(const QString& folder, const QString& file,
123
const QString& destination, const QString& temp,
124
const QString& script);
125
void signalInternalDownloadFailed(const QString& folder, const QString& file);
126
void signalInternalUploadFailed(const QString& folder, const QString& file, const QString& src);
127
void signalInternalDeleteFailed(const QString& folder, const QString& file);
128
void signalInternalLockFailed(const QString& folder, const QString& file);
138
void executeCommand(CameraCommand* const cmd);
142
void slotCheckRename(const QString& folder, const QString& file,
143
const QString& destination, const QString& temp, const QString& script);
144
void slotDownloadFailed(const QString& folder, const QString& file);
145
void slotUploadFailed(const QString& folder, const QString& file, const QString& src);
146
void slotDeleteFailed(const QString& folder, const QString& file);
147
void slotLockFailed(const QString& folder, const QString& file);
151
void sendLogMsg(const QString& msg, DHistoryView::EntryType type=DHistoryView::StartingEntry,
152
const QString& folder=QString(), const QString& file=QString());
154
void addCommand(CameraCommand* const cmd);
155
bool queueIsEmpty() const;
163
} // namespace Digikam
165
#endif /* CAMERACONTROLLER_H */