mirror of
https://github.com/transmission/transmission
synced 2024-12-27 01:57:52 +00:00
Feature: Support Batch Adding Tracker Urls in Qt UI (#1161)
Adding tracker urls one at a time is very tedious. This lEts you add multiple tracker urls at oNce, 1 trAcker url per line. As a bonus, this also takes care of trailing spaces when pasting urls. Fixes #1148 And this seems to be a requested feature: https://forum.transmissionbt.com/viewtopic.php?t=18958 Co-authored-by: Charles Kerr <charles@charleskerr.com>
This commit is contained in:
parent
1fb5a79813
commit
ac41837ae9
1 changed files with 24 additions and 18 deletions
|
@ -24,6 +24,7 @@
|
|||
#include <QMap>
|
||||
#include <QMessageBox>
|
||||
#include <QResizeEvent>
|
||||
#include <QRegExp>
|
||||
#include <QStringList>
|
||||
#include <QStyle>
|
||||
#include <QTreeWidgetItem>
|
||||
|
@ -1289,37 +1290,42 @@ void DetailsDialog::onTrackerSelectionChanged()
|
|||
void DetailsDialog::onAddTrackerClicked()
|
||||
{
|
||||
bool ok = false;
|
||||
QString const
|
||||
url = QInputDialog::getText(this, tr("Add URL "), tr("Add tracker announce URL:"), QLineEdit::Normal, QString(), &ok);
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
// user pressed "cancel" -- noop
|
||||
}
|
||||
else if (!QUrl(url).isValid())
|
||||
{
|
||||
QMessageBox::warning(this, tr("Error"), tr("Invalid URL \"%1\"").arg(url));
|
||||
}
|
||||
else
|
||||
QString const text = QInputDialog::getMultiLineText(
|
||||
this,
|
||||
tr("Add URL(s) "),
|
||||
tr("Add tracker announce URLs, one per line:"),
|
||||
{},
|
||||
&ok);
|
||||
|
||||
if (ok)
|
||||
{
|
||||
QSet<QString> urls;
|
||||
torrent_ids_t ids;
|
||||
|
||||
for (int const id : ids_)
|
||||
for (auto const& line : text.split(QRegExp(QStringLiteral("[\r\n]+"))))
|
||||
{
|
||||
if (tracker_model_->find(id, url) == -1)
|
||||
QString const url = line.trimmed();
|
||||
if (!line.isEmpty() && QUrl(url).isValid())
|
||||
{
|
||||
ids.insert(id);
|
||||
for (auto const& id : ids_)
|
||||
{
|
||||
if (tracker_model_->find(id, url) == -1 && !urls.contains(url))
|
||||
{
|
||||
ids.insert(id);
|
||||
urls.insert(url);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ids.empty()) // all the torrents already have this tracker
|
||||
if (urls.isEmpty())
|
||||
{
|
||||
QMessageBox::warning(this, tr("Error"), tr("Tracker already exists."));
|
||||
QMessageBox::warning(this, tr("Error"), tr("No new URLs found."));
|
||||
}
|
||||
else
|
||||
{
|
||||
auto const urls = QStringList{ url };
|
||||
torrentSet(ids, TR_KEY_trackerAdd, urls);
|
||||
torrentSet(ids, TR_KEY_trackerAdd, urls.values());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue