/* * This file Copyright (C) Mnemosyne LLC * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 * as published by the Free Software Foundation. * * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * $Id$ */ #include #include #include #include #include #include #include #include #include #include #include #include "hig.h" #include "relocate.h" #include "session.h" #include "torrent.h" #include "torrent-model.h" #include "utils.h" bool RelocateDialog :: myMoveFlag = true; void RelocateDialog :: onSetLocation( ) { mySession.torrentSetLocation( myIds, myPath, myMoveFlag ); deleteLater( ); } void RelocateDialog :: onFileSelected( const QString& path ) { myPath = path; myDirButton->setText( myPath ); } void RelocateDialog :: onDirButtonClicked( ) { const QString title = tr( "Select Location" ); const QString path = Utils::remoteFileChooser( this, title, myPath, true, mySession.isServer() ); if( !path.isEmpty() ) onFileSelected( path ); } void RelocateDialog :: onMoveToggled( bool b ) { myMoveFlag = b; } RelocateDialog :: RelocateDialog( Session& session, TorrentModel& model, const QSet& ids, QWidget * parent ): QDialog( parent ), mySession( session ), myModel( model ), myIds( ids ) { const int iconSize( style( )->pixelMetric( QStyle :: PM_SmallIconSize ) ); const QFileIconProvider iconProvider; const QIcon folderIcon = iconProvider.icon( QFileIconProvider::Folder ); const QPixmap folderPixmap = folderIcon.pixmap( iconSize ); QRadioButton * find_rb; setWindowTitle( tr( "Set Torrent Location" ) ); foreach( int id, myIds ) { const Torrent * tor = myModel.getTorrentFromId( id ); if( myPath.isEmpty() ) myPath = tor->getPath(); else if( myPath != tor->getPath() ) { if( mySession.isServer() ) myPath = QDir::homePath( ); else myPath = QString( "/" ); } } HIG * hig = new HIG( ); hig->addSectionTitle( tr( "Set Location" ) ); hig->addRow( tr( "New &location:" ), myDirButton = new QPushButton( folderPixmap, myPath ) ); hig->addWideControl( myMoveRadio = new QRadioButton( tr( "&Move from the current folder" ), this ) ); hig->addWideControl( find_rb = new QRadioButton( tr( "Local data is &already there" ), this ) ); hig->finish( ); if( myMoveFlag ) myMoveRadio->setChecked( true ); else find_rb->setChecked( true ); connect( myMoveRadio, SIGNAL(toggled(bool)), this, SLOT(onMoveToggled(bool))); connect( myDirButton, SIGNAL(clicked(bool)), this, SLOT(onDirButtonClicked())); QLayout * layout = new QVBoxLayout( this ); layout->addWidget( hig ); QDialogButtonBox * buttons = new QDialogButtonBox( QDialogButtonBox::Ok|QDialogButtonBox::Cancel ); connect( buttons, SIGNAL(rejected()), this, SLOT(deleteLater())); connect( buttons, SIGNAL(accepted()), this, SLOT(onSetLocation())); layout->addWidget( buttons ); QWidget::setAttribute( Qt::WA_DeleteOnClose, true ); }