diff --git a/src/GUI.cpp b/src/GUI.cpp index d62284ebf..76dd65d4c 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -152,6 +152,8 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent){ connect(actionPause, SIGNAL(triggered()), this, SLOT(pauseSelection())); connect(actionTorrent_Properties, SIGNAL(triggered()), this, SLOT(propertiesSelection())); connect(actionStart, SIGNAL(triggered()), this, SLOT(startSelection())); + connect(actionPause_All, SIGNAL(triggered()), this, SLOT(pauseAll())); + connect(actionStart_All, SIGNAL(triggered()), this, SLOT(resumeAll())); connect(actionAbout, SIGNAL(triggered()), this, SLOT(showAbout())); connect(actionCreate_torrent, SIGNAL(triggered()), this, SLOT(showCreateWindow())); connect(actionClearLog, SIGNAL(triggered()), this, SLOT(clearLog())); @@ -1204,6 +1206,29 @@ void GUI::configureSession(){ qDebug("Session configured"); } +// Pause All Downloads in DL list +void GUI::pauseAll(){ + QString fileHash; + // Pause all torrents + BTSession.pauseAllTorrents(); + // update download list + for(int i=0; irowCount(); ++i){ + fileHash = DLListModel->data(DLListModel->index(i, HASH)).toString(); + // Create .paused file + QFile paused_file(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+fileHash+".paused"); + paused_file.open(QIODevice::WriteOnly | QIODevice::Text); + paused_file.close(); + // Update DL list items + DLListModel->setData(DLListModel->index(i, DLSPEED), QVariant((double)0.)); + DLListModel->setData(DLListModel->index(i, UPSPEED), QVariant((double)0.)); + DLListModel->setData(DLListModel->index(i, STATUS), QVariant(tr("Paused"))); + DLListModel->setData(DLListModel->index(i, ETA), QVariant((qlonglong)-1)); + DLListModel->setData(DLListModel->index(i, NAME), QVariant(QIcon(":/Icons/skin/paused.png")), Qt::DecorationRole); + setRowColor(i, "red"); + setInfoBar(tr("All downloads paused.")); + } +} + // pause selected items in the list void GUI::pauseSelection(){ QModelIndexList selectedIndexes = downloadList->selectionModel()->selectedIndexes(); @@ -1229,6 +1254,24 @@ void GUI::pauseSelection(){ } } +// Resume All Downloads in DL list +void GUI::resumeAll(){ + QString fileHash; + // Pause all torrents + BTSession.resumeAllTorrents(); + // update download list + for(int i=0; irowCount(); ++i){ + fileHash = DLListModel->data(DLListModel->index(i, HASH)).toString(); + // Remove .paused file + QFile::remove(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+fileHash+".paused"); + // Update DL list items + DLListModel->setData(DLListModel->index(i, STATUS), QVariant(tr("Connecting..."))); + DLListModel->setData(DLListModel->index(i, NAME), QVariant(QIcon(":/Icons/skin/connecting.png")), Qt::DecorationRole); + setRowColor(i, "grey"); + setInfoBar(tr("All downloads resumed.")); + } +} + // start selected items in the list void GUI::startSelection(){ QModelIndexList selectedIndexes = downloadList->selectionModel()->selectedIndexes(); diff --git a/src/GUI.h b/src/GUI.h index c719948d7..066de5520 100644 --- a/src/GUI.h +++ b/src/GUI.h @@ -139,7 +139,9 @@ class GUI : public QMainWindow, private Ui::MainWindow{ void showProperties(const QModelIndex &index); void propertiesSelection(); void pauseSelection(); + void pauseAll(); void startSelection(); + void resumeAll(); void askForTorrents(); void deletePermanently(); void deleteSelection(); diff --git a/src/about_imp.h b/src/about_imp.h index 501df19ac..c8e043cc8 100644 --- a/src/about_imp.h +++ b/src/about_imp.h @@ -23,10 +23,7 @@ #define ABOUT_H #include "ui_about.h" -#define VERSION "v0.9.0beta3" -#define VERSION_MAJOR 0 -#define VERSION_MINOR 9 -#define VERSION_BUGFIX 0 +#define VERSION "v0.9.0beta4" class about : public QDialog, private Ui::AboutDlg{ Q_OBJECT diff --git a/src/bittorrent.cpp b/src/bittorrent.cpp index 43f976da9..31f7f5428 100644 --- a/src/bittorrent.cpp +++ b/src/bittorrent.cpp @@ -497,6 +497,28 @@ void bittorrent::setGlobalRatio(float ratio){ } } +// Pause all torrents in session +void bittorrent::pauseAllTorrents(){ + std::vector handles = s->get_torrents(); + for(unsigned int i=0; i handles = s->get_torrents(); + for(unsigned int i=0; iadd_extension(&create_ut_pex_plugin); diff --git a/src/bittorrent.h b/src/bittorrent.h index de72057f0..48d0e12d9 100644 --- a/src/bittorrent.h +++ b/src/bittorrent.h @@ -43,7 +43,7 @@ #include "deleteThread.h" -#define VERSION "v0.9.0beta3" +#define VERSION "v0.9.0beta4" #define VERSION_MAJOR 0 #define VERSION_MINOR 9 #define VERSION_BUGFIX 0 @@ -91,6 +91,8 @@ class bittorrent : public QObject{ void downloadFromURLList(const QStringList& url_list); void deleteTorrent(const QString& hash, bool permanent = false); void pauseTorrent(const QString& hash); + void pauseAllTorrents(); + void resumeAllTorrents(); void resumeTorrent(const QString& hash); void enableDHT(); void disableDHT();