1 /* ============================================================ 2 * 3 * This file is a part of digiKam project 4 * https://www.digikam.org 5 * 6 * Date : 2018-02-24 7 * Description : Container for IOJob data. 8 * 9 * Copyright (C) 2018 by Maik Qualmann <metzpinguin at gmail dot com> 10 * 11 * This program is free software; you can redistribute it 12 * and/or modify it under the terms of the GNU General 13 * Public License as published by the Free Software Foundation; 14 * either version 2, or (at your option) 15 * any later version. 16 * 17 * This program is distributed in the hope that it will be useful, 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 * GNU General Public License for more details. 21 * 22 * ============================================================ */ 23 24 #ifndef DIGIKAM_IO_JOB_DATA_H 25 #define DIGIKAM_IO_JOB_DATA_H 26 27 // Qt includes 28 29 #include <QUrl> 30 #include <QList> 31 #include <QDateTime> 32 33 // Local includes 34 35 #include "digikam_export.h" 36 #include "dtrashiteminfo.h" 37 38 namespace Digikam 39 { 40 41 class PAlbum; 42 class ItemInfo; 43 44 class DIGIKAM_GUI_EXPORT IOJobData 45 { 46 47 public: 48 49 enum Operation 50 { 51 Unknown = 0, 52 CopyAlbum, 53 CopyImage, 54 CopyFiles, 55 CopyToExt, 56 MoveAlbum, 57 MoveImage, 58 MoveFiles, 59 Restore, 60 Rename, 61 Delete, 62 Trash, 63 Empty 64 }; 65 66 enum FileConflict 67 { 68 Continue = 0, 69 AutoRename, 70 Overwrite 71 }; 72 73 public: 74 75 explicit IOJobData(int operation, 76 const QList<ItemInfo>& infos, 77 PAlbum* const dest = nullptr); 78 79 explicit IOJobData(int operation, 80 const QList<ItemInfo>& infos, 81 const QUrl& dest); 82 83 explicit IOJobData(int operation, 84 const QList<QUrl>& urls, 85 PAlbum* const dest = nullptr); 86 87 explicit IOJobData(int operation, 88 PAlbum* const src, 89 PAlbum* const dest = nullptr); 90 91 explicit IOJobData(int operation, 92 const QList<QUrl>& urls, 93 const QUrl& dest); 94 95 explicit IOJobData(int operation, 96 const ItemInfo& info, 97 const QString& newName, 98 bool overwrite = false); 99 100 explicit IOJobData(int operation, 101 const DTrashItemInfoList& infos); 102 103 ~IOJobData(); 104 105 void setItemInfos(const QList<ItemInfo>& infos); 106 void setSourceUrls(const QList<QUrl>& urls); 107 108 void setDestUrl(const QUrl& srcUrl, 109 const QUrl& destUrl); 110 111 void setProgressId(const QString& id); 112 113 void setFileConflict(int fc); 114 115 int operation() const; 116 117 int fileConflict() const; 118 119 PAlbum* srcAlbum() const; 120 PAlbum* destAlbum() const; 121 122 QUrl destUrl(const QUrl& srcUrl = QUrl()) const; 123 QUrl getNextUrl() const; 124 125 QString getProgressId() const; 126 QDateTime jobTime() const; 127 128 ItemInfo findItemInfo(const QUrl& url) const; 129 130 QList<QUrl> sourceUrls() const; 131 QList<ItemInfo> itemInfos() const; 132 133 DTrashItemInfoList trashItems() const; 134 135 private: 136 137 // Disable 138 IOJobData(const IOJobData&) = delete; 139 IOJobData& operator=(const IOJobData&) = delete; 140 141 private: 142 143 class Private; 144 Private* const d; 145 }; 146 147 } // namespace Digikam 148 149 #endif // DIGIKAM_IO_JOB_DATA_H 150