5 #include <QDirIterator>
18 for(
const QString &path : dir.entryList(filter, QDir::Files | QDir::Hidden))
20 fileList.append(dpath + spr + path);
25 const QFileInfoList &folderList = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
26 for(
const QFileInfo &fin :
qAsConst(folderList))
42 QFileInfoList fileList = dir.entryInfoList(filter, QDir::Files | QDir::Hidden);
45 const QFileInfoList &folderList = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
46 for(
const QFileInfo &fin :
qAsConst(folderList))
61 if(QFileInfo(srcPath).isFile())
63 if(QFileInfo(dstPath).isFile())
65 if(overwrite && QFile::exists(dstPath))
67 QFile::remove(dstPath);
69 return QFile::copy(srcPath, dstPath);
75 if(!dstDir.exists() && !dstDir.mkpath(dstDir.absolutePath()))
80 for(
const QFileInfo &fileInfo : QDir(srcPath).entryInfoList())
82 const QString &fileName = fileInfo.fileName();
83 if(fileName ==
"." || fileName ==
"..")
97 if(overwrite && dstDir.exists(fileName))
99 dstDir.remove(fileName);
102 if(!QFile::copy(fileInfo.filePath(), dstDir.filePath(fileName)))
120 const QString &dirPath = dr.path();
122 QDirIterator di(dirPath, QDir::AllEntries | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot);
126 const QFileInfo &fin = di.fileInfo();
127 const QString &filePath = di.filePath();
130 if(fin.isDir() && !fin.isSymLink())
136 ok = QFile::remove(filePath);
140 const QFile::Permissions permissions = QFile::permissions(filePath);
141 if(!(permissions & QFile::WriteUser))
143 ok = QFile::setPermissions(filePath, permissions | QFile::WriteUser) && QFile::remove(filePath);
156 success = dr.rmdir(dr.absolutePath());
190 const QString &v = files.front();
201 const QString &title = QObject::tr(
"Choose a filename to save under");
203 #if defined Q_OS_WIN || defined Q_OS_MAC
206 QFileDialog dialog(parent, title, QFileInfo(path).absolutePath(), filter);
207 dialog.setAcceptMode(QFileDialog::AcceptSave);
210 dialog.setWindowModality(Qt::WindowModal);
213 if(dialog.exec() != QDialog::Accepted)
218 const QString &selectFilter = dialog.selectedNameFilter();
219 const QStringList &filters = filter.split(
";;");
221 if(!filters.isEmpty())
223 const QRegExp regx(
"(?:^\\*\\.(?!.*\\()|\\(\\*\\.)(\\w+)");
224 if(regx.indexIn(selectFilter) != -1)
226 dialog.setDefaultSuffix(regx.cap(1));
230 const QStringList &files = dialog.selectedFiles();
236 path = files.front();
237 const QString &
suffix = dialog.defaultSuffix();
238 if(!suffix.isEmpty() && suffix != QFileInfo(path).suffix())
TTK_MODULE_EXPORT QString getExistingDirectory(QWidget *parent)
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()
TTK_MODULE_EXPORT QFileInfoList fileInfoListByPath(const QString &dpath, const QStringList &filter={}, bool recursively=true)
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)
TTK_MODULE_EXPORT bool removeRecursively(const QString &dir, bool self=true)