1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2024-12-27 18:18:10 +00:00
transmission/qt/RelocateDialog.cc
Charles Kerr c62cb35fd4
qt client speedups
* faster updating of trackers combobox.
* generate trackerDisplayNames just once per torrent
* refactor: cache torrent delegate's warning emblem
* refactor: change mainwin refresh debounce to 200ms
* refactor: do not store trackers, hosts in QVariant
* refactor: don't use `virtual` when it's not needed
* refactor: faster counting torrents-matching-filter
* refactor: faster tracker handling in filterbar
* refactor: improve json parser's prealloc heuristic
* refactor: make Torrent::hasError() faster
* refactor: remove redundant speed stats collection
* refactor: remove unnecessary tor->isQueued() calls
* refactor: use unordered containers where possible
* scale favicons only once, when adding to the cache
2019-11-11 19:37:05 -06:00

96 lines
2.4 KiB
C++

/*
* This file Copyright (C) 2009-2015 Mnemosyne LLC
*
* It may be used under the GNU GPL versions 2 or 3
* or any future license endorsed by Mnemosyne LLC.
*
*/
#include <QDir>
#include "RelocateDialog.h"
#include "Session.h"
#include "Torrent.h"
#include "TorrentModel.h"
bool RelocateDialog::myMoveFlag = true;
void RelocateDialog::onSetLocation()
{
mySession.torrentSetLocation(myIds, newLocation(), myMoveFlag);
close();
}
void RelocateDialog::onMoveToggled(bool b)
{
myMoveFlag = b;
}
RelocateDialog::RelocateDialog(Session& session, TorrentModel const& model, torrent_ids_t const& ids, QWidget* parent) :
BaseDialog(parent),
mySession(session),
myIds(ids)
{
ui.setupUi(this);
QString path;
for (int const id : myIds)
{
Torrent const* tor = model.getTorrentFromId(id);
if (path.isEmpty())
{
path = tor->getPath();
}
else if (path != tor->getPath())
{
if (mySession.isServer())
{
path = QDir::homePath();
}
else
{
path = QDir::rootPath();
}
break;
}
}
if (mySession.isServer())
{
ui.newLocationStack->setCurrentWidget(ui.newLocationButton);
ui.newLocationButton->setMode(PathButton::DirectoryMode);
ui.newLocationButton->setTitle(tr("Select Location"));
ui.newLocationButton->setPath(path);
}
else
{
ui.newLocationStack->setCurrentWidget(ui.newLocationEdit);
ui.newLocationEdit->setText(path);
ui.newLocationEdit->selectAll();
}
ui.newLocationStack->setFixedHeight(ui.newLocationStack->currentWidget()->sizeHint().height());
ui.newLocationLabel->setBuddy(ui.newLocationStack->currentWidget());
if (myMoveFlag)
{
ui.moveDataRadio->setChecked(true);
}
else
{
ui.findDataRadio->setChecked(true);
}
connect(ui.moveDataRadio, SIGNAL(toggled(bool)), this, SLOT(onMoveToggled(bool)));
connect(ui.dialogButtons, SIGNAL(rejected()), this, SLOT(close()));
connect(ui.dialogButtons, SIGNAL(accepted()), this, SLOT(onSetLocation()));
}
QString RelocateDialog::newLocation() const
{
return ui.newLocationStack->currentWidget() == ui.newLocationButton ? ui.newLocationButton->path() :
ui.newLocationEdit->text();
}