6 #include <QDirIterator>
10 const QDir dir(dpath);
19 for(
const QString &path : dir.entryList(filter, QDir::Files | QDir::Hidden))
21 fileList.append(dpath + spr + path);
26 const QFileInfoList &folderList = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
27 for(
const QFileInfo &fin :
qAsConst(folderList))
37 const QDir dir(dpath);
43 QFileInfoList fileList = dir.entryInfoList(filter, QDir::Files | QDir::Hidden);
46 const QFileInfoList &folderList = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
47 for(
const QFileInfo &fin :
qAsConst(folderList))
62 if(QFileInfo(srcPath).isFile())
64 if(QFileInfo(dstPath).isFile())
66 if(overwrite && QFile::exists(dstPath))
68 QFile::remove(dstPath);
70 return QFile::copy(srcPath, dstPath);
76 if(!dstDir.exists() && !dstDir.mkpath(dstDir.absolutePath()))
81 const QDir dir(srcPath);
82 for(
const QFileInfo &fin : dir.entryInfoList())
84 const QString &fileName = fin.fileName();
85 if(fileName ==
"." || fileName ==
"..")
99 if(overwrite && dstDir.exists(fileName))
101 dstDir.remove(fileName);
104 if(!QFile::copy(fin.filePath(), dstDir.filePath(fileName)))
122 const QString &dirPath = dr.path();
124 QDirIterator di(dirPath, QDir::AllEntries | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot);
128 const QFileInfo &fin = di.fileInfo();
129 const QString &filePath = di.filePath();
132 if(fin.isDir() && !fin.isSymLink())
138 ok = QFile::remove(filePath);
142 const QFile::Permissions permissions = QFile::permissions(filePath);
143 if(!(permissions & QFile::WriteUser))
145 ok = QFile::setPermissions(filePath, permissions | QFile::WriteUser) && QFile::remove(filePath);
158 success = dr.rmdir(dr.absolutePath());
192 const QString &v = files.first();
203 const QString &title = QObject::tr(
"Choose a filename to save under");
205 #if defined Q_OS_WIN || defined Q_OS_MAC
208 QFileDialog dialog(parent, title, QFileInfo(path).absolutePath(), filter);
209 dialog.setAcceptMode(QFileDialog::AcceptSave);
212 dialog.setWindowModality(Qt::WindowModal);
215 if(dialog.exec() != QDialog::Accepted)
220 const QString &selectFilter = dialog.selectedNameFilter();
221 const QStringList &filters = filter.split(
";;");
223 if(!filters.isEmpty())
226 if(regx.
match(selectFilter) != -1)
228 dialog.setDefaultSuffix(regx.
captured(1));
232 const QStringList &files = dialog.selectedFiles();
238 path = files.first();
239 const QString &
suffix = dialog.defaultSuffix();
240 if(!suffix.isEmpty() && suffix != QFileInfo(path).suffix())
TTK_MODULE_EXPORT QString getExistingDirectory(QWidget *parent)
QString captured(int index) const
TTK_MODULE_EXPORT QString getOpenFileName(QWidget *parent, const QString &filter="Image Files (*.png *.bmp *.jpg)")
TTK_MODULE_EXPORT bool copyPath(const QString &srcPath, const QString &dstPath, bool overwrite)
TTK_MODULE_EXPORT QString getSaveFileName(QWidget *parent, const QString &filter="Image Files (*.png *.bmp *.jpg)")
TTK_MODULE_EXPORT QString suffix(const QString &name)
TTK_MODULE_EXPORT bool isBreakPointEnabled() noexcept
TTK_MODULE_EXPORT QFileInfoList fileInfoListByPath(const QString &dpath, const QStringList &filter={}, bool recursively=true)
The class of the regular expression.
TTK_MODULE_EXPORT QStringList getOpenFileNames(QWidget *parent, const QString &filter="Image Files (*.png *.bmp *.jpg)")
TTK_MODULE_EXPORT QStringList fileListByPath(const QString &dpath, const QStringList &filter={}, bool recursively=true)
int match(const QString &str, int pos=0)
TTK_MODULE_EXPORT bool removeRecursively(const QString &dir, bool self=true)