mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-07-16 02:03:07 -07:00
Implemented WebUI interface for the new Watched Folders feature
This commit is contained in:
parent
06be9edfe1
commit
fa34f0efcc
4 changed files with 164 additions and 73 deletions
|
@ -58,21 +58,15 @@ QByteArray prefjson::getPreferences()
|
|||
data["temp_path"] = Utils::Fs::toNativePath(pref->getTempPath());
|
||||
data["preallocate_all"] = pref->preAllocateAllFiles();
|
||||
data["incomplete_files_ext"] = pref->useIncompleteFilesExtension();
|
||||
/*QVariantList scanDirs;
|
||||
foreach (const QString& s, pref->getScanDirs()) {
|
||||
scanDirs << Utils::Fs::toNativePath(s);
|
||||
QVariantHash dirs = pref->getScanDirs();
|
||||
QVariantMap nativeDirs;
|
||||
for (QVariantHash::const_iterator i = dirs.begin(), e = dirs.end(); i != e; ++i) {
|
||||
if (i.value().type() == QVariant::Int)
|
||||
nativeDirs.insert(Utils::Fs::toNativePath(i.key()), i.value().toInt());
|
||||
else
|
||||
nativeDirs.insert(Utils::Fs::toNativePath(i.key()), Utils::Fs::toNativePath(i.value().toString()));
|
||||
}
|
||||
data["scan_dirs"] = scanDirs;
|
||||
QVariantList ScanDirsDownloadPaths;
|
||||
foreach (const QString& s, pref->getScanDirsDownloadPaths()) {
|
||||
ScanDirsDownloadPaths << Utils::Fs::toNativePath(s);
|
||||
}
|
||||
data["scan_dirs_download_paths"] = ScanDirsDownloadPaths;
|
||||
QVariantList var_list;
|
||||
foreach (bool b, pref->getDownloadInScanDirs()) {
|
||||
var_list << b;
|
||||
}
|
||||
data["download_in_scan_dirs"] = var_list;*/
|
||||
data["scan_dirs"] = nativeDirs;
|
||||
data["export_dir"] = Utils::Fs::toNativePath(pref->getTorrentExportDir());
|
||||
data["export_dir_fin"] = Utils::Fs::toNativePath(pref->getFinishedTorrentExportDir());
|
||||
// Email notification upon download completion
|
||||
|
@ -188,36 +182,49 @@ void prefjson::setPreferences(const QString& json)
|
|||
pref->preAllocateAllFiles(m["preallocate_all"].toBool());
|
||||
if (m.contains("incomplete_files_ext"))
|
||||
pref->useIncompleteFilesExtension(m["incomplete_files_ext"].toBool());
|
||||
/*if (m.contains("scan_dirs") && m.contains("download_in_scan_dirs") && m.contains("scan_dirs_download_paths")) {
|
||||
QVariantList download_at_path_tmp = m["download_in_scan_dirs"].toList();
|
||||
QList<bool> download_at_path;
|
||||
foreach (QVariant var, download_at_path_tmp) {
|
||||
download_at_path << var.toBool();
|
||||
}
|
||||
QStringList old_folders = pref->getScanDirs();
|
||||
QStringList new_folders = m["scan_dirs"].toStringList();
|
||||
QStringList download_paths = m["scan_dirs_download_paths"].toStringList();
|
||||
if (download_at_path.size() == new_folders.size()) {
|
||||
pref->setScanDirs(new_folders);
|
||||
pref->setDownloadInScanDirs(download_at_path);
|
||||
pref->setScanDirsDownloadPaths(download_paths);
|
||||
foreach (const QString &old_folder, old_folders) {
|
||||
// Update deleted folders
|
||||
if (!new_folders.contains(old_folder)) {
|
||||
ScanFoldersModel::instance()->removePath(old_folder);
|
||||
}
|
||||
if (m.contains("scan_dirs")) {
|
||||
QVariantMap nativeDirs = m["scan_dirs"].toMap();
|
||||
QVariantHash oldScanDirs = pref->getScanDirs();
|
||||
QVariantHash scanDirs;
|
||||
ScanFoldersModel *model = ScanFoldersModel::instance();
|
||||
for (QVariantMap::const_iterator i = nativeDirs.begin(), e = nativeDirs.end(); i != e; ++i) {
|
||||
QString folder = Utils::Fs::fromNativePath(i.key());
|
||||
int downloadType;
|
||||
QString downloadPath;
|
||||
ScanFoldersModel::PathStatus ec;
|
||||
if (i.value().type() == QVariant::String) {
|
||||
downloadType = ScanFoldersModel::CUSTOM_LOCATION;
|
||||
downloadPath = Utils::Fs::fromNativePath(i.value().toString());
|
||||
}
|
||||
int i = 0;
|
||||
foreach (const QString &new_folder, new_folders) {
|
||||
qDebug("New watched folder: %s", qPrintable(new_folder));
|
||||
// Update new folders
|
||||
if (!old_folders.contains(Utils::Fs::fromNativePath(new_folder))) {
|
||||
ScanFoldersModel::instance()->addPath(new_folder, download_at_path.at(i), download_paths.at(i));
|
||||
}
|
||||
++i;
|
||||
else {
|
||||
downloadType = i.value().toInt();
|
||||
downloadPath = (downloadType == ScanFoldersModel::DEFAULT_LOCATION) ? "Default folder" : "Watch folder";
|
||||
}
|
||||
|
||||
if (!oldScanDirs.contains(folder))
|
||||
ec = model->addPath(folder, static_cast<ScanFoldersModel::PathType>(downloadType), downloadPath);
|
||||
else
|
||||
ec = model->updatePath(folder, static_cast<ScanFoldersModel::PathType>(downloadType), downloadPath);
|
||||
|
||||
if (ec == ScanFoldersModel::Ok) {
|
||||
scanDirs.insert(folder, (downloadType == ScanFoldersModel::CUSTOM_LOCATION) ? QVariant(downloadPath) : QVariant(downloadType));
|
||||
qDebug("New watched folder: %s to %s", qPrintable(folder), qPrintable(downloadPath));
|
||||
}
|
||||
else {
|
||||
qDebug("Watched folder %s failed with error %d", qPrintable(folder), ec);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
// Update deleted folders
|
||||
foreach (QVariant folderVariant, oldScanDirs.keys()) {
|
||||
QString folder = folderVariant.toString();
|
||||
if (!scanDirs.contains(folder)) {
|
||||
model->removePath(folder);
|
||||
qDebug("Removed watched folder %s", qPrintable(folder));
|
||||
}
|
||||
}
|
||||
pref->setScanDirs(scanDirs);
|
||||
}
|
||||
if (m.contains("export_dir"))
|
||||
pref->setTorrentExportDir(m["export_dir"].toString());
|
||||
if (m.contains("export_dir_fin"))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue