Implemented WebUI interface for the new Watched Folders feature

This commit is contained in:
Naikel Aparicio 2016-01-01 14:38:32 -04:30 committed by sledgehammer999
parent 06be9edfe1
commit fa34f0efcc
4 changed files with 164 additions and 73 deletions

View file

@ -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"))