digiKam
Loading...
Searching...
No Matches
dio.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 : 2005-05-17
7 * Description : low level files management interface.
8 *
9 * SPDX-FileCopyrightText: 2005 by Renchi Raju <renchi dot raju at gmail dot com>
10 * SPDX-FileCopyrightText: 2012-2013 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
11 * SPDX-FileCopyrightText: 2018 by Maik Qualmann <metzpinguin at gmail dot com>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Qt includes
20
21#include <QObject>
22#include <QMutex>
23#include <QMap>
24
25// Local includes
26
27#include "digikam_export.h"
28#include "dtrashiteminfo.h"
29
30class QUrl;
31
32namespace Digikam
33{
34
35class Album;
36class PAlbum;
37class ItemInfo;
38class IOJobData;
39class ProgressItem;
40
41class DIGIKAM_GUI_EXPORT DIO : public QObject
42{
43 Q_OBJECT
44
45public:
46
47 static DIO* instance();
48
49 static void cleanUp();
50
51 static bool itemsUnderProcessing();
52
58 static void copy(PAlbum* const src, PAlbum* const dest);
59
61 static void copy(const QList<ItemInfo>& infos, PAlbum* const dest);
62
64 static void copy(const QUrl& src, PAlbum* const dest);
65
67 static void copy(const QList<QUrl>& srcList, PAlbum* const dest);
68
70 static void copy(const QList<ItemInfo>& infos, const QUrl& dest);
71
73 static void move(PAlbum* const src, PAlbum* const dest);
74
76 static void move(const QList<ItemInfo>& infos, PAlbum* const dest);
77
79 static void move(const QUrl& src, PAlbum* const dest);
80
82 static void move(const QList<QUrl>& srcList, PAlbum* const dest);
83
84 static void del(const QList<ItemInfo>& infos, bool useTrash);
85 static void del(const ItemInfo& info, bool useTrash);
86 static void del(PAlbum* const album, bool useTrash);
87
89 static void rename(const QUrl& src, const QString& newName, bool overwrite = false);
90
92 static int getTrashCounter(const QString& albumRootPath);
93 static void restoreTrash(const DTrashItemInfoList& infos);
94 static void emptyTrash(const DTrashItemInfoList& infos);
95 static void buildCollectionTrashCounters();
96
97Q_SIGNALS:
98
102 void signalRenameFailed(const QUrl& url);
103
104private:
105
106 void processJob(IOJobData* const data);
107 void createJob(IOJobData* const data);
108
109 void updateAlbumDate(int albumID);
110 QString getItemString(IOJobData* const data) const;
111 ProgressItem* getProgressItem(IOJobData* const data) const;
112 void addAlbumChildrenToList(QList<int>& list, Album* const album);
113
114private Q_SLOTS:
115
116 void slotResult();
117 void slotCancel(ProgressItem* item);
118 void slotOneProccessed(const QUrl& url);
119 void slotTrashCounterMap(const QMap<QString, int>& counterMap);
120
121private:
122
123 // Disable
124 DIO();
125 explicit DIO(QObject*) = delete;
126 ~DIO() override = default;
127
128private:
129
130 int m_processingCount = 0;
131 QMap<QString, int> m_trashCounterMap;
132 QMutex m_trashCounterMutex;
133
134 friend class DIOCreator;
135};
136
137} // namespace Digikam
Abstract base class for all album types.
Definition album.h:57
Definition dio.h:42
void signalTrashCounters()
void signalRenameFinished()
void signalTrashFinished()
void signalRenameFailed(const QUrl &url)
Definition iojobdata.h:35
Definition iteminfo.h:68
Definition album.h:357
Definition progressmanager.h:35
@ Album
Definition coredbfields.h:48
Definition datefolderview.cpp:34
QList< DTrashItemInfo > DTrashItemInfoList
Definition dtrashiteminfo.h:45