#include "pathcheck.h" QString Utils::downloadsPathCheck() { QSettings settings; QVariant dpv = settings.value("downloadsPath"); QString path; if (!dpv.isValid()) { path = defaultDownloadsPath(); qDebug() << "no downloadsPath variable in config, using default" << path; path = getCanonicalWritablePath(path); return path; } else { path = dpv.toString(); path = getCanonicalWritablePath(path); if (path.size() == 0) { path = defaultDownloadsPath(); qDebug() << "falling back to the default downloads path" << path; path = getCanonicalWritablePath(path); } return path; } } QString Utils::defaultDownloadsPath() { return QStandardPaths::writableLocation(QStandardPaths::DownloadLocation) + "/" + QApplication::applicationName(); } QString Utils::getCanonicalWritablePath(const QString& path) { QDir location(path); if (!location.exists()) { bool res = location.mkpath(location.canonicalPath()); if (!res) { qDebug() << "couldn't create directory" << path; return ""; } } QFileInfo info(location.canonicalPath()); if (info.isWritable()) { return location.canonicalPath(); } else { qDebug() << "directory" << path << "is not writable"; return ""; } }