File indexing completed on 2025-03-09 03:57:08
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2010-08-08 0007 * Description : a class that manages the files to be renamed 0008 * 0009 * SPDX-FileCopyrightText: 2009-2012 by Andi Clemens <andi dot clemens at gmail dot com> 0010 * 0011 * SPDX-License-Identifier: GPL-2.0-or-later 0012 * 0013 * ============================================================ */ 0014 0015 #ifndef DIGIKAM_ADVANCED_RENAME_MANAGER_H 0016 #define DIGIKAM_ADVANCED_RENAME_MANAGER_H 0017 0018 // Qt includes 0019 0020 #include <QUrl> 0021 #include <QString> 0022 #include <QStringList> 0023 #include <QObject> 0024 0025 // Local includes 0026 0027 #include "digikam_export.h" 0028 0029 namespace Digikam 0030 { 0031 0032 class AdvancedRenameWidget; 0033 class Parser; 0034 class ParseSettings; 0035 0036 class DIGIKAM_GUI_EXPORT AdvancedRenameManager : public QObject 0037 { 0038 Q_OBJECT 0039 0040 public: 0041 0042 enum ParserType 0043 { 0044 DefaultParser = 0, 0045 ImportParser 0046 }; 0047 0048 enum SortAction 0049 { 0050 SortName = 0, 0051 SortDate, 0052 SortSize, 0053 SortCustom 0054 }; 0055 0056 enum SortDirection 0057 { 0058 SortAscending = 0, 0059 SortDescending 0060 }; 0061 0062 public: 0063 0064 AdvancedRenameManager(); 0065 explicit AdvancedRenameManager(const QList<ParseSettings>& files); 0066 ~AdvancedRenameManager() override; 0067 0068 void addFiles(const QList<ParseSettings>& files); 0069 void reset(); 0070 0071 void parseFiles(); 0072 void parseFiles(const ParseSettings& settings); 0073 void parseFiles(const QString& parseString); 0074 void parseFiles(const QString& parseString, const ParseSettings& settings); 0075 0076 void setParserType(ParserType type); 0077 Parser* getParser() const; 0078 0079 void setSortAction(SortAction action); 0080 SortAction sortAction() const; 0081 0082 void setSortDirection(SortDirection direction); 0083 SortDirection sortDirection() const; 0084 0085 void setStartIndex(int index); 0086 void setCutFileName(int index); 0087 0088 void setWidget(AdvancedRenameWidget* widget); 0089 0090 int indexOfFile(const QString& filename); 0091 int indexOfFolder(const QString& filename); 0092 int indexOfFileGroup(const QString& filename); 0093 int indexOfFileCounter(const QString& filename); 0094 0095 QString randomStringOfIndex(int index); 0096 QString newName(const QString& filename) const; 0097 0098 QStringList fileList() const; 0099 QMap<QString, QString> newFileList(bool checkFileSystem = false) const; 0100 0101 Q_SIGNALS: 0102 0103 void signalSortingChanged(QList<QUrl>); 0104 0105 private: 0106 0107 void addFile(const QString& filename) const; 0108 void addFile(const QString& filename, const QDateTime& datetime) const; 0109 bool initialize(); 0110 void initializeFileList(); 0111 void resetState(); 0112 0113 QString fileGroupKey(const QString& filename) const; 0114 0115 void clearMappings(); 0116 void clearAll(); 0117 0118 private: 0119 0120 // Disable 0121 AdvancedRenameManager(QObject*) = delete; 0122 AdvancedRenameManager(const AdvancedRenameManager&) = delete; 0123 AdvancedRenameManager& operator=(const AdvancedRenameManager&) = delete; 0124 0125 private: 0126 0127 class Private; 0128 Private* const d; 0129 }; 0130 0131 } // namespace Digikam 0132 0133 #endif // DIGIKAM_ADVANCED_RENAME_MANAGER_H