transmission/qt/RelocateDialog.cc

94 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.
*
* $Id$
*/
#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,
const TorrentModel & model,
const QSet<int> & ids,
QWidget * parent):
QDialog (parent),
mySession (session),
myIds (ids)
{
ui.setupUi (this);
QString path;
for (const int id: myIds)
{
const Torrent * 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 ();
}