Browse Source

Create non-existing path in setLocationAction()

When using qbittorrent-nox it is not always possible to manually create
the target path for torrent moving. This commit allows automatic path
creation. It also allows to display error messages in the
'Set location' window.
adaptive-webui-19844
Goshik 7 years ago
parent
commit
1daadfc4ec
  1. 13
      src/webui/api/torrentscontroller.cpp
  2. 2
      src/webui/www/private/scripts/mocha-init.js
  3. 10
      src/webui/www/private/setlocation.html

13
src/webui/api/torrentscontroller.cpp

@ -737,9 +737,16 @@ void TorrentsController::setLocationAction() @@ -737,9 +737,16 @@ void TorrentsController::setLocationAction()
const QStringList hashes {params()["hashes"].split("|")};
const QString newLocation {params()["location"].trimmed()};
// check if the location exists
if (newLocation.isEmpty() || !QDir(newLocation).exists())
return;
if (newLocation.isEmpty())
throw APIError(APIErrorType::BadParams, tr("Save path is empty"));
// try to create the location if it does not exist
if (!QDir(newLocation).mkpath("."))
throw APIError(APIErrorType::Conflict, tr("Cannot make save path"));
// check permissions
if (!QFileInfo(newLocation).isWritable())
throw APIError(APIErrorType::AccessDenied, tr("Cannot write to directory"));
applyToTorrents(hashes, [newLocation](BitTorrent::TorrentHandle *torrent)
{

2
src/webui/www/private/scripts/mocha-init.js

@ -417,7 +417,7 @@ initializeWindows = function() { @@ -417,7 +417,7 @@ initializeWindows = function() {
paddingVertical: 0,
paddingHorizontal: 0,
width: 400,
height: 100
height: 130
});
}
};

10
src/webui/www/private/setlocation.html

@ -31,8 +31,10 @@ @@ -31,8 +31,10 @@
new Event(e).stop();
// check field
var location = $('setLocation').value.trim();
if (location === null || location === "")
if (location === null || location === "") {
$('error_div').set('text', 'QBT_TR(Save path is empty)QBT_TR[CONTEXT=TorrentsController]');
return false;
}
var hashesList = new URI().getData('hashes');
new Request({
@ -42,8 +44,11 @@ @@ -42,8 +44,11 @@
hashes: hashesList,
location: location
},
onComplete: function() {
onSuccess: function() {
window.parent.closeWindows();
},
onFailure: function(xhr) {
$('error_div').set('text', xhr.response);
}
}).send();
});
@ -55,6 +60,7 @@ @@ -55,6 +60,7 @@
<div style="padding: 10px 10px 0px 10px;">
<p style="font-weight: bold;">QBT_TR(Location)QBT_TR[CONTEXT=TransferListWidget]:</p>
<input type="text" id="setLocation" value="" maxlength="100" style="width: 370px;" />
<div style="float: none; width: 370px;" id="error_div">&nbsp;</div>
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]" id="setLocationButton" />
</div>

Loading…
Cancel
Save