]> git.pld-linux.org Git - packages/qbittorrent.git/commitdiff
- outdated
authorJakub Bogusz <qboosh@pld-linux.org>
Mon, 2 Feb 2009 20:22:15 +0000 (20:22 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    qbittorrent-libtorrent14.patch -> 1.2

qbittorrent-libtorrent14.patch [deleted file]

diff --git a/qbittorrent-libtorrent14.patch b/qbittorrent-libtorrent14.patch
deleted file mode 100644 (file)
index 5994231..0000000
+++ /dev/null
@@ -1,1274 +0,0 @@
-Index: src/qtorrenthandle.h
-===================================================================
---- src/qtorrenthandle.h       (revision 2069)
-+++ src/qtorrenthandle.h       (revision 2070)
-@@ -54,7 +54,7 @@
-     QString hash() const;
-     QString name() const;
-     float progress() const;
--    const std::vector<bool>* pieces() const;
-+    bitfield pieces() const;
-     void get_download_queue(std::vector<partial_piece_info>& queue) const;
-     QString current_tracker() const;
-     bool is_valid() const;
-@@ -76,7 +76,7 @@
-     int upload_limit() const;
-     int num_files() const;
-     bool has_metadata() const;
--    entry write_resume_data() const;
-+    void save_resume_data() const;
-     QString file_at(unsigned int index) const;
-     size_type filesize_at(unsigned int index) const;
-     std::vector<announce_entry> const& trackers() const;
-@@ -84,7 +84,7 @@
-     QString creator() const;
-     QString comment() const;
-     size_type total_failed_bytes() const;
--    void file_progress(std::vector<float>& fp);
-+    void file_progress(std::vector<size_type>& fp);
-     size_type total_payload_download();
-     size_type total_payload_upload();
-     QStringList files_path() const;
-@@ -107,7 +107,7 @@
-     void set_ratio(float ratio) const;
-     void replace_trackers(std::vector<announce_entry> const&) const;
-     void force_reannounce();
--    void set_sequenced_download_threshold(int val);
-+    void set_sequential_download(bool);
-     void set_tracker_login(QString username, QString password);
-     //
-Index: src/arborescence.h
-===================================================================
---- src/arborescence.h (revision 2069)
-+++ src/arborescence.h (revision 2070)
-@@ -172,27 +172,27 @@
-     torrent_file *root;
-   public:
--    arborescence(torrent_info t) {
--      torrent_info::file_iterator fi = t.begin_files();
--      if(t.num_files() > 1) {
--        root = new torrent_file(0, misc::toQString(t.name()), true);
-+    arborescence(boost::intrusive_ptr<torrent_info> t) {
-+      torrent_info::file_iterator fi = t->begin_files();
-+      if(t->num_files() > 1) {
-+        root = new torrent_file(0, misc::toQString(t->name()), true);
-       } else {
-         // XXX: Will crash if there is no file in torrent
--        root = new torrent_file(0, misc::toQString(t.name()), false, fi->size, 0);
-+        root = new torrent_file(0, misc::toQString(t->name()), false, fi->size, 0);
-         return;
-       }
-       int i = 0;
--      while(fi != t.end_files()) {
-+      while(fi != t->end_files()) {
-         QString path = QDir::cleanPath(misc::toQString(fi->path.string()));
-         addFile(path, fi->size, i);
-         fi++;
-         ++i;
-       }
--      qDebug("real size: %ld, tree size: %ld", (long)t.total_size(), (long)root->getSize());
--      Q_ASSERT(root->getSize() == t.total_size());
-+      qDebug("real size: %ld, tree size: %ld", (long)t->total_size(), (long)root->getSize());
-+      Q_ASSERT(root->getSize() == t->total_size());
-     }
--    arborescence(torrent_info t, std::vector<float> fp, int *prioritiesTab) {
-+    arborescence(torrent_info const& t, std::vector<size_type> fp, int *prioritiesTab) {
-       torrent_info::file_iterator fi = t.begin_files();
-       if(t.num_files() > 1) {
-         qDebug("More than one file in the torrent, setting a folder as root");
-@@ -200,13 +200,13 @@
-       } else {
-         // XXX: Will crash if there is no file in torrent
-         qDebug("one file in the torrent, setting it as root with index 0");
--        root = new torrent_file(0, misc::toQString(t.name()), false, fi->size, 0, fp[0], prioritiesTab[0]);
-+        root = new torrent_file(0, misc::toQString(t.name()), false, fi->size, 0, fp[0]/t.file_at(0).size, prioritiesTab[0]);
-         return;
-       }
-       int i = 0;
-       while(fi != t.end_files()) {
-         QString path = QDir::cleanPath(misc::toQString(fi->path.string()));
--        addFile(path, fi->size, i, fp[i], prioritiesTab[i]);
-+        addFile(path, fi->size, i, fp[i]/t.file_at(i).size, prioritiesTab[i]);
-         fi++;
-         ++i;
-       }
-Index: src/properties_imp.cpp
-===================================================================
---- src/properties_imp.cpp     (revision 2069)
-+++ src/properties_imp.cpp     (revision 2070)
-@@ -102,7 +102,7 @@
-     }
-   }
-   shareRatio->setText(QString(QByteArray::number(ratio, 'f', 1)));
--  std::vector<float> fp;
-+  std::vector<size_type> fp;
-   h.file_progress(fp);
-   int *prioritiesTab = loadPiecesPriorities();
-   // List files in torrent
-@@ -669,11 +669,11 @@
-       QFile incremental_file(misc::qBittorrentPath()+QString::fromUtf8("BT_backup")+QDir::separator()+hash+QString::fromUtf8(".incremental"));
-       incremental_file.open(QIODevice::WriteOnly | QIODevice::Text);
-       incremental_file.close();
--      h.set_sequenced_download_threshold(1);
-+      h.set_sequential_download(true);
-     }
-   }else{
-     QFile::remove(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".incremental");
--    h.set_sequenced_download_threshold(100); // Disabled
-+    h.set_sequential_download(false);
-   }
- }
-Index: src/eventmanager.cpp
-===================================================================
---- src/eventmanager.cpp       (revision 2069)
-+++ src/eventmanager.cpp       (revision 2070)
-@@ -66,12 +66,6 @@
-                       case torrent_status::queued_for_checking:
-                               event["state"] = QVariant("checking");
-                               break;
--                      case torrent_status::connecting_to_tracker:
--                              if(h.download_payload_rate() > 0)
--                                      event["state"] = QVariant("downloading");
--                              else
--                                      event["state"] = QVariant("connecting");
--                              break;
-                       case torrent_status::downloading:
-                       case torrent_status::downloading_metadata:
-                               if(h.download_payload_rate() > 0)
-@@ -113,12 +107,6 @@
-                       case torrent_status::queued_for_checking:
-                               event["state"] = QVariant("checking");
-                               break;
--                      case torrent_status::connecting_to_tracker:
--                              if(h.download_payload_rate() > 0)
--                                      event["state"] = QVariant("downloading");
--                              else
--                                      event["state"] = QVariant("connecting");
--                              break;
-                       case torrent_status::downloading:
-                       case torrent_status::downloading_metadata:
-                               if(h.download_payload_rate() > 0)
-Index: src/previewSelect.h
-===================================================================
---- src/previewSelect.h        (revision 2069)
-+++ src/previewSelect.h        (revision 2070)
-@@ -90,7 +90,7 @@
-       previewList->setItemDelegate(listDelegate);
-       previewList->header()->resizeSection(0, 200);
-       // Fill list in
--      std::vector<float> fp;
-+      std::vector<size_type> fp;
-       h.file_progress(fp);
-       unsigned int nbFiles = h.num_files();
-       for(unsigned int i=0; i<nbFiles; ++i){
-@@ -101,7 +101,7 @@
-           previewListModel->insertRow(row);
-           previewListModel->setData(previewListModel->index(row, NAME), QVariant(fileName));
-           previewListModel->setData(previewListModel->index(row, SIZE), QVariant((qlonglong)h.filesize_at(i)));
--          previewListModel->setData(previewListModel->index(row, PROGRESS), QVariant((double)fp[i]));
-+          previewListModel->setData(previewListModel->index(row, PROGRESS), QVariant((double)fp[i]/h.filesize_at(i)));
-           indexes << i;
-         }
-       }
-Index: src/Icons/skin/connecting.png
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-Index: src/webui/scripts/client.js
-===================================================================
---- src/webui/scripts/client.js        (revision 2069)
-+++ src/webui/scripts/client.js        (revision 2070)
-@@ -44,8 +44,6 @@
-           return '<img src="images/time.png"/>';
-       case 'downloading':
-           return '<img src="images/skin/downloading.png"/>';
--      case 'connecting':
--          return '<img src="images/skin/connecting.png"/>';
-       case 'stalled':
-           return '<img src="images/skin/stalled.png"/>';
-       case 'queued':
-Index: src/bittorrent.cpp
-===================================================================
---- src/bittorrent.cpp (revision 2069)
-+++ src/bittorrent.cpp (revision 2070)
-@@ -28,7 +28,6 @@
- #include "bittorrent.h"
- #include "misc.h"
- #include "downloadThread.h"
--#include "deleteThread.h"
- #include "filterParserThread.h"
- #include <libtorrent/extensions/metadata_transfer.hpp>
-@@ -55,7 +54,7 @@
-     s = new session(fingerprint("qB", VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, 0));
-   }
-   // Set severity level of libtorrent session
--  s->set_severity_level(alert::info);
-+  s->set_alert_mask(alert::error_notification|alert::peer_notification|alert::port_mapping_notification|alert::storage_notification|alert::tracker_notification|alert::status_notification|alert::ip_block_notification);
-   // Enabling metadata plugin
-   s->add_extension(&create_metadata_plugin);
-   timerAlerts = new QTimer();
-@@ -68,8 +67,6 @@
-   downloader = new downloadThread(this);
-   connect(downloader, SIGNAL(downloadFinished(QString, QString)), this, SLOT(processDownloadedFile(QString, QString)));
-   connect(downloader, SIGNAL(downloadFailure(QString, QString)), this, SLOT(handleDownloadFailure(QString, QString)));
--  // File deleter (thread)
--  deleter = new deleteThread(this);
-   BigRatioTimer = 0;
-   filterParser = 0;
-   downloadQueue = 0;
-@@ -94,7 +91,6 @@
-   // Disable directory scanning
-   disableDirectoryScanning();
-   // Delete our objects
--  delete deleter;
-   delete fastResumeSaver;
-   delete timerAlerts;
-   if(BigRatioTimer)
-@@ -123,16 +119,6 @@
-   if(change) {
-     qDebug("PreAllocateAll changed, reloading all torrents!");
-     preAllocateAll = b;
--    // Reload All unfinished torrents
--    QString hash;
--    foreach(hash, unfinishedTorrents) {
--      QTorrentHandle h = getTorrentHandle(hash);
--      if(!h.is_valid()) {
--        qDebug("/!\\ Error: Invalid handle");
--        continue;
--      }
--      reloadTorrent(h, b);
--    }
-   }
- }
-@@ -543,8 +529,7 @@
-   QTorrentHandle h = getTorrentHandle(hash);
-   if(!h.is_valid()) return -1;
-   switch(h.state()) {
--    case torrent_status::downloading:
--    case torrent_status::connecting_to_tracker: {
-+    case torrent_status::downloading: {
-       if(!TorrentsStartTime.contains(hash)) return -1;
-       int timeElapsed = TorrentsStartTime.value(hash).secsTo(QDateTime::currentDateTime());
-       double avg_speed;
-@@ -614,12 +599,11 @@
-   }
-   QString savePath = h.save_path();
-   QString fileName = h.name();
--  arborescence *files_arb = 0;
--  if(permanent){
--    files_arb = new arborescence(h.get_torrent_info());
--  }
-   // Remove it from session
--  s->remove_torrent(h.get_torrent_handle());
-+  if(permanent)
-+      s->remove_torrent(h.get_torrent_handle(), session::delete_files);
-+  else
-+    s->remove_torrent(h.get_torrent_handle());
-   // Remove it from torrent backup directory
-   QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
-   QStringList filters;
-@@ -666,12 +650,6 @@
-     QFile::remove(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".prio");
-   if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".queued"))
-     QFile::remove(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".queued");
--  if(permanent && files_arb != 0) {
--    // Remove from Hard drive
--    qDebug("Removing this on hard drive: %s", qPrintable(savePath+QDir::separator()+fileName));
--    // Deleting in a thread to avoid GUI freeze
--    deleter->deleteTorrent(savePath, files_arb);
--  }
-   if(permanent)
-     addConsoleMessage(tr("'%1' was removed permanently.", "'xxx.avi' was removed permanently.").arg(fileName));
-   else
-@@ -894,7 +872,6 @@
- // Add a torrent to the bittorrent session
- void bittorrent::addTorrent(QString path, bool fromScanDir, QString from_url, bool resumed) {
-   QTorrentHandle h;
--  entry resume_data;
-   bool fastResume=false;
-   QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
-   QString file, dest_file, scan_dir;
-@@ -914,203 +891,164 @@
-   }
-   Q_ASSERT(!file.startsWith("http://", Qt::CaseInsensitive) && !file.startsWith("https://", Qt::CaseInsensitive) && !file.startsWith("ftp://", Qt::CaseInsensitive));
-   qDebug("Adding %s to download list", file.toUtf8().data());
--  std::ifstream in(file.toUtf8().data(), std::ios_base::binary);
--  in.unsetf(std::ios_base::skipws);
--  try{
--    // Decode torrent file
--    entry e = bdecode(std::istream_iterator<char>(in), std::istream_iterator<char>());
--    // Getting torrent file informations
--    boost::intrusive_ptr<torrent_info> t(new torrent_info(e));
--    qDebug(" -> Hash: %s", misc::toString(t->info_hash()).c_str());
--    qDebug(" -> Name: %s", t->name().c_str());
--    QString hash = misc::toQString(t->info_hash());
--    if(file.startsWith(torrentBackup.path())) {
-+  boost::intrusive_ptr<torrent_info> t;
-+  try {
-+      // Getting torrent file informations
-+      t = new torrent_info(file.toUtf8().data());
-+  } catch(std::exception&) {
-+      if(!from_url.isNull()) {
-+          addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(from_url), QString::fromUtf8("red"));
-+          //emit invalidTorrent(from_url);
-+          QFile::remove(file);
-+      }else{
-+          addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(file), QString::fromUtf8("red"));
-+          //emit invalidTorrent(file);
-+      }
-+      addConsoleMessage(tr("This file is either corrupted or this isn't a torrent."),QString::fromUtf8("red"));
-+      if(fromScanDir) {
-+          // Remove .corrupt file in case it already exists
-+          QFile::remove(file+".corrupt");
-+          //Rename file extension so that it won't display error message more than once
-+          QFile::rename(file,file+".corrupt");
-+      }
-+  }
-+  qDebug(" -> Hash: %s", misc::toString(t->info_hash()).c_str());
-+  qDebug(" -> Name: %s", t->name().c_str());
-+  QString hash = misc::toQString(t->info_hash());
-+  if(file.startsWith(torrentBackup.path())) {
-       QFileInfo fi(file);
-       QString old_hash = fi.baseName();
-       if(old_hash != hash){
--        qDebug("* ERROR: Strange, hash changed from %s to %s", old_hash.toUtf8().data(), hash.toUtf8().data());
-+          qDebug("* ERROR: Strange, hash changed from %s to %s", old_hash.toUtf8().data(), hash.toUtf8().data());
-       }
--    }
--    if(s->find_torrent(t->info_hash()).is_valid()) {
-+  }
-+  // Check if torrent is already in download list
-+  if(s->find_torrent(t->info_hash()).is_valid()) {
-       qDebug("/!\\ Torrent is already in download list");
-       // Update info Bar
-       if(!fromScanDir) {
--        if(!from_url.isNull()) {
--          // If download from url, remove temp file
--          QFile::remove(file);
--           addConsoleMessage(tr("'%1' is already in download list.", "e.g: 'xxx.avi' is already in download list.").arg(from_url));
--          //emit duplicateTorrent(from_url);
--        }else{
--          addConsoleMessage(tr("'%1' is already in download list.", "e.g: 'xxx.avi' is already in download list.").arg(file));
--          //emit duplicateTorrent(file);
--        }
-+          if(!from_url.isNull()) {
-+              // If download from url, remove temp file
-+              QFile::remove(file);
-+              addConsoleMessage(tr("'%1' is already in download list.", "e.g: 'xxx.avi' is already in download list.").arg(from_url));
-+              //emit duplicateTorrent(from_url);
-+          }else{
-+              addConsoleMessage(tr("'%1' is already in download list.", "e.g: 'xxx.avi' is already in download list.").arg(file));
-+              //emit duplicateTorrent(file);
-+          }
-       }else{
--        // Delete torrent from scan dir
--        QFile::remove(file);
-+          // Delete torrent from scan dir
-+          QFile::remove(file);
-       }
-       return;
--    }
--    //Getting fast resume data if existing
--    if(torrentBackup.exists(hash+".fastresume")) {
--      try{
--        std::stringstream strStream;
--        strStream << hash.toStdString() << ".fastresume";
--        boost::filesystem::ifstream resume_file(fs::path(torrentBackup.path().toUtf8().data()) / strStream.str(), std::ios_base::binary);
--        resume_file.unsetf(std::ios_base::skipws);
--        resume_data = bdecode(std::istream_iterator<char>(resume_file), std::istream_iterator<char>());
--        fastResume=true;
--      }catch (invalid_encoding&) {}
--      catch (fs::filesystem_error&) {}
--    }
--    QString savePath = getSavePath(hash);
--    // Save save_path to hard drive
--    QFile savepath_file(misc::qBittorrentPath()+QString::fromUtf8("BT_backup")+QDir::separator()+hash+QString::fromUtf8(".savepath"));
--    if(!savepath_file.exists()) {
-+  }
-+  add_torrent_params p;
-+  //Getting fast resume data if existing
-+  std::vector<char> buf;
-+  if (load_file((torrentBackup.path()+hash+QString(".fastresume")).toUtf8().data(), buf) == 0) {
-+      fastResume = true;
-+      p.resume_data = &buf;
-+  }
-+  QString savePath = getSavePath(hash);
-+  // Save save_path to hard drive
-+  QFile savepath_file(misc::qBittorrentPath()+QString::fromUtf8("BT_backup")+QDir::separator()+hash+QString::fromUtf8(".savepath"));
-+  if(!savepath_file.exists()) {
-       savepath_file.open(QIODevice::WriteOnly | QIODevice::Text);
-       savepath_file.write(savePath.toUtf8());
-       savepath_file.close();
--    }
--    // Adding files to bittorrent session
--    if(preAllocateAll) {
--      h = s->add_torrent(t, fs::path(savePath.toUtf8().data()), resume_data, storage_mode_allocate, true);
--      qDebug(" -> Full allocation mode");
--    }else{
--      h = s->add_torrent(t, fs::path(savePath.toUtf8().data()), resume_data, storage_mode_sparse, true);
--      qDebug(" -> Sparse allocation mode");
--    }
--    if(!h.is_valid()) {
-+  }
-+  p.save_path = savePath.toUtf8().data();
-+  p.ti = t;
-+  // Preallocate all?
-+  if(preAllocateAll)
-+    p.storage_mode = storage_mode_allocate;
-+  else
-+    p.storage_mode = storage_mode_sparse;
-+  // Start in pause
-+  p.paused = true;
-+  p.duplicate_is_error = false; // Already checked
-+  p.auto_managed = true;
-+  // Adding torrent to bittorrent session
-+  h =  s->add_torrent(p);
-+  // Check if it worked
-+  if(!h.is_valid()) {
-       // No need to keep on, it failed.
-       qDebug("/!\\ Error: Invalid handle");
-       // If download from url, remove temp file
-       if(!from_url.isNull()) QFile::remove(file);
-       return;
--    }
--    // Connections limit per torrent
--    h.set_max_connections(maxConnecsPerTorrent);
--    // Uploads limit per torrent
--    h.set_max_uploads(maxUploadsPerTorrent);
--    // Load filtered files
--    loadFilesPriorities(h);
--    // Load custom url seeds
--    loadWebSeeds(hash);
--    // Load speed limit from hard drive
--    loadTorrentSpeedLimits(hash);
--    // Load ratio data
--    loadDownloadUploadForTorrent(hash);
--    // Load trackers
--    bool loaded_trackers = loadTrackerFile(hash);
--    // Doing this to order trackers well
--    if(!loaded_trackers) {
-+  }
-+  // Connections limit per torrent
-+  h.set_max_connections(maxConnecsPerTorrent);
-+  // Uploads limit per torrent
-+  h.set_max_uploads(maxUploadsPerTorrent);
-+  // Load filtered files
-+  loadFilesPriorities(h);
-+  // Load custom url seeds
-+  loadWebSeeds(hash);
-+  // Load speed limit from hard drive
-+  loadTorrentSpeedLimits(hash);
-+  // Load ratio data
-+  loadDownloadUploadForTorrent(hash);
-+  // Load trackers
-+  bool loaded_trackers = loadTrackerFile(hash);
-+  // Doing this to order trackers well
-+  if(!loaded_trackers) {
-       saveTrackerFile(hash);
-       loadTrackerFile(hash);
--    }
--    QString newFile = torrentBackup.path() + QDir::separator() + hash + ".torrent";
--    if(file != newFile) {
-+  }
-+  QString newFile = torrentBackup.path() + QDir::separator() + hash + ".torrent";
-+  if(file != newFile) {
-       // Delete file from torrentBackup directory in case it exists because
-       // QFile::copy() do not overwrite
-       QFile::remove(newFile);
-       // Copy it to torrentBackup directory
-       QFile::copy(file, newFile);
--    }
--    // Incremental download
--    if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".incremental")) {
-+  }
-+  // Incremental download
-+  if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".incremental")) {
-       qDebug("Incremental download enabled for %s", t->name().c_str());
--      h.set_sequenced_download_threshold(1);
--    }
--    if((resumed || !addInPause) && !QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".paused")) {
-+      h.set_sequential_download(true);
-+  }
-+  if((resumed || !addInPause) && !QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".paused")) {
-       // Start torrent because it was added in paused state
-       h.resume();
--    }
--    if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".finished")) {
-+  }
-+  if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".finished")) {
-       finishedTorrents << hash;
-       if(!resumed && queueingEnabled) {
--        uploadQueue->append(hash);
--        saveTorrentPriority(hash, uploadQueue->size()-1);
--        updateUploadQueue();
-+          uploadQueue->append(hash);
-+          saveTorrentPriority(hash, uploadQueue->size()-1);
-+          updateUploadQueue();
-       }
--    }else{
-+  }else{
-       unfinishedTorrents << hash;
-       if(!resumed && queueingEnabled) {
--        downloadQueue->append(hash);
--        saveTorrentPriority(hash, downloadQueue->size()-1);
--        updateDownloadQueue();
-+          downloadQueue->append(hash);
-+          saveTorrentPriority(hash, downloadQueue->size()-1);
-+          updateDownloadQueue();
-       }
--    }
--    // If download from url, remove temp file
--    if(!from_url.isNull()) QFile::remove(file);
--    // Delete from scan dir to avoid trying to download it again
--    if(fromScanDir) {
-+  }
-+  // If download from url, remove temp file
-+  if(!from_url.isNull()) QFile::remove(file);
-+  // Delete from scan dir to avoid trying to download it again
-+  if(fromScanDir) {
-       QFile::remove(file);
--    }
--    // Send torrent addition signal
--    if(!from_url.isNull()) {
-+  }
-+  // Send torrent addition signal
-+  if(!from_url.isNull()) {
-       emit addedTorrent(h);
-       if(fastResume)
--        addConsoleMessage(tr("'%1' resumed. (fast resume)", "'/home/y/xxx.torrent' was resumed. (fast resume)").arg(from_url));
-+          addConsoleMessage(tr("'%1' resumed. (fast resume)", "'/home/y/xxx.torrent' was resumed. (fast resume)").arg(from_url));
-       else
--        addConsoleMessage(tr("'%1' added to download list.", "'/home/y/xxx.torrent' was added to download list.").arg(from_url));
--    }else{
-+          addConsoleMessage(tr("'%1' added to download list.", "'/home/y/xxx.torrent' was added to download list.").arg(from_url));
-+  }else{
-       emit addedTorrent(h);
-       if(fastResume)
--        addConsoleMessage(tr("'%1' resumed. (fast resume)", "'/home/y/xxx.torrent' was resumed. (fast resume)").arg(file));
-+          addConsoleMessage(tr("'%1' resumed. (fast resume)", "'/home/y/xxx.torrent' was resumed. (fast resume)").arg(file));
-       else
--        addConsoleMessage(tr("'%1' added to download list.", "'/home/y/xxx.torrent' was added to download list.").arg(file));
--    }
--  }catch (invalid_encoding& e) { // Raised by bdecode()
--    std::cerr << "Could not decode file, reason: " << e.what() << '\n';
--    // Display warning to tell user we can't decode the torrent file
--    if(!from_url.isNull()) {
--      addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(from_url), QString::fromUtf8("red"));
--      //emit invalidTorrent(from_url);
--      QFile::remove(file);
--    }else{
--      addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(file), QString::fromUtf8("red"));
--      //emit invalidTorrent(file);
--    }
--    addConsoleMessage(tr("This file is either corrupted or this isn't a torrent."),QString::fromUtf8("red"));
--    if(fromScanDir) {
--      // Remove .corrupt file in case it already exists
--      QFile::remove(file+".corrupt");
--      //Rename file extension so that it won't display error message more than once
--      QFile::rename(file,file+".corrupt");
--    }
-+          addConsoleMessage(tr("'%1' added to download list.", "'/home/y/xxx.torrent' was added to download list.").arg(file));
-   }
--  catch (invalid_torrent_file&) { // Raised by torrent_info constructor
--    // Display warning to tell user we can't decode the torrent file
--    if(!from_url.isNull()) {
--      addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(from_url), QString::fromUtf8("red"));
--      //emit invalidTorrent(from_url);
--      qDebug("File path is: %s", file.toUtf8().data());
--      QFile::remove(file);
--    }else{
--      addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(file), QString::fromUtf8("red"));
--      //emit invalidTorrent(file);
--    }
--    if(fromScanDir) {
--      // Remove .corrupt file in case it already exists
--      QFile::remove(file+".corrupt");
--      //Rename file extension so that it won't display error message more than once
--      QFile::rename(file,file+".corrupt");
--    }
--  }
--  catch (std::exception& e) {
--    std::cerr << "Could not decode file, reason: " << e.what() << '\n';
--    // Display warning to tell user we can't decode the torrent file
--    if(!from_url.isNull()) {
--      addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(from_url), QString::fromUtf8("red"));
--      //emit invalidTorrent(from_url);
--      QFile::remove(file);
--    }else{
--      addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(file), QString::fromUtf8("red"));
--      //emit invalidTorrent(file);
--    }
--    if(fromScanDir) {
--      // Remove .corrupt file in case it already exists
--      QFile::remove(file+".corrupt");
--      //Rename file extension so that it won't display error message more than once
--      QFile::rename(file,file+".corrupt");
--    }
--  }
- }
- // Check in .priorities file if the user filtered files
-@@ -1502,11 +1440,7 @@
-       // Remove old .fastresume data in case it exists
-       QFile::remove(torrentBackup.path()+QDir::separator()+hash + ".fastresume");
-       // Write fast resume data
--      entry resumeData = h.write_resume_data();
--      file = hash + ".fastresume";
--      boost::filesystem::ofstream out(fs::path(torrentBackup.path().toUtf8().data()) / file.toUtf8().data(), std::ios_base::binary);
--      out.unsetf(std::ios_base::skipws);
--      bencode(std::ostream_iterator<char>(out), resumeData);
-+      h.save_resume_data();
-     }
-     // Save ratio data
-     saveDownloadUploadForTorrent(hash);
-@@ -1762,9 +1696,21 @@
-         emit finishedTorrent(h);
-       }
-     }
-+    else if (save_resume_data_alert* p = dynamic_cast<save_resume_data_alert*>(a.get())) {
-+        QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
-+        QTorrentHandle h(p->handle);
-+        QString file = torrentBackup.path()+QDir::separator()+h.hash()+".torrent";
-+        TORRENT_ASSERT(p->resume_data);
-+        if (p->resume_data)
-+        {
-+            boost::filesystem::ofstream out(fs::path(torrentBackup.path().toUtf8().data()) / file.toUtf8().data(), std::ios_base::binary);
-+            out.unsetf(std::ios_base::skipws);
-+            bencode(std::ostream_iterator<char>(out), *p->resume_data);
-+        }
-+    }
-     else if (file_error_alert* p = dynamic_cast<file_error_alert*>(a.get())) {
-       QTorrentHandle h(p->handle);
--      qDebug("File Error: %s", p->msg().c_str());
-+      qDebug("File Error: %s", p->message().c_str());
-       if(h.is_valid())
-         emit fullDiskError(h);
-     }
-@@ -1773,7 +1719,7 @@
-       addConsoleMessage(tr("Couldn't listen on any of the given ports."), QString::fromUtf8("red"));
-       //emit portListeningFailure();
-     }
--    else if (tracker_alert* p = dynamic_cast<tracker_alert*>(a.get())) {
-+    else if (tracker_error_alert* p = dynamic_cast<tracker_error_alert*>(a.get())) {
-       // Level: fatal
-       QTorrentHandle h(p->handle);
-       if(h.is_valid()){
-@@ -1783,7 +1729,7 @@
-           qDebug("Received a tracker error for %s", p->url.c_str());
-           QHash<QString, QString> errors = trackersErrors.value(hash, QHash<QString, QString>());
-           // p->url requires at least libtorrent v0.13.1
--          errors[misc::toQString(p->url)] = QString::fromUtf8(a->msg().c_str());
-+          errors[misc::toQString(p->url)] = QString::fromUtf8(a->message().c_str());
-           trackersErrors[hash] = errors;
-         } else {
-           emit trackerAuthenticationRequired(h);
-@@ -1802,12 +1748,12 @@
-       }
-     }
-     else if (portmap_error_alert* p = dynamic_cast<portmap_error_alert*>(a.get())) {
--      addConsoleMessage(tr("UPnP/NAT-PMP: Port mapping failure, message: %1").arg(QString(p->msg().c_str())), QColor("red"));
-+      addConsoleMessage(tr("UPnP/NAT-PMP: Port mapping failure, message: %1").arg(QString(p->message().c_str())), QColor("red"));
-       //emit UPnPError(QString(p->msg().c_str()));
-     }
-     else if (portmap_alert* p = dynamic_cast<portmap_alert*>(a.get())) {
--      qDebug("UPnP Success, msg: %s", p->msg().c_str());
--      addConsoleMessage(tr("UPnP/NAT-PMP: Port mapping successful, message: %1").arg(QString(p->msg().c_str())), QColor("blue"));
-+      qDebug("UPnP Success, msg: %s", p->message().c_str());
-+      addConsoleMessage(tr("UPnP/NAT-PMP: Port mapping successful, message: %1").arg(QString(p->message().c_str())), QColor("blue"));
-       //emit UPnPSuccess(QString(p->msg().c_str()));
-     }
-     else if (peer_blocked_alert* p = dynamic_cast<peer_blocked_alert*>(a.get())) {
-@@ -1821,13 +1767,13 @@
-     else if (fastresume_rejected_alert* p = dynamic_cast<fastresume_rejected_alert*>(a.get())) {
-       QTorrentHandle h(p->handle);
-       if(h.is_valid()){
--        qDebug("/!\\ Fast resume failed for %s, reason: %s", h.name().toUtf8().data(), p->msg().c_str());
-+        qDebug("/!\\ Fast resume failed for %s, reason: %s", h.name().toUtf8().data(), p->message().c_str());
-         addConsoleMessage(tr("Fast resume data was rejected for torrent %1, checking again...").arg(h.name()), QString::fromUtf8("red"));
-         //emit fastResumeDataRejected(h.name());
-       }
-     }
-     else if (url_seed_alert* p = dynamic_cast<url_seed_alert*>(a.get())) {
--      addConsoleMessage(tr("Url seed lookup failed for url: %1, message: %2").arg(QString::fromUtf8(p->url.c_str())).arg(QString::fromUtf8(p->msg().c_str())), QString::fromUtf8("red"));
-+      addConsoleMessage(tr("Url seed lookup failed for url: %1, message: %2").arg(QString::fromUtf8(p->url.c_str())).arg(QString::fromUtf8(p->message().c_str())), QString::fromUtf8("red"));
-       //emit urlSeedProblem(QString::fromUtf8(p->url.c_str()), QString::fromUtf8(p->msg().c_str()));
-     }
-     else if (torrent_checked_alert* p = dynamic_cast<torrent_checked_alert*>(a.get())) {
-@@ -1853,72 +1799,6 @@
-   return trackersErrors.value(hash, QHash<QString, QString>());
- }
--// Reload a torrent with full allocation mode
--void bittorrent::reloadTorrent(const QTorrentHandle &h, bool full_alloc) {
--  qDebug("** Reloading a torrent");
--  if(!h.is_valid()) {
--    qDebug("/!\\ Error: Invalid handle");
--    return;
--  }
--  QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
--  fs::path saveDir = h.save_path_boost();
--  QString fileName = h.name();
--  QString hash = h.hash();
--  boost::intrusive_ptr<torrent_info> t(new torrent_info(h.get_torrent_info()));
--  qDebug("Reloading torrent: %s", fileName.toUtf8().data());
--  entry resumeData;
--    // Checking if torrentBackup Dir exists
--  // create it if it is not
--  if(! torrentBackup.exists()) {
--    torrentBackup.mkpath(torrentBackup.path());
--  }
--  // Extracting resume data
--  if (h.has_metadata()) {
--    // get fast resume data
--    resumeData = h.write_resume_data();
--  }
--  // Remove torrent
--  s->remove_torrent(h.get_torrent_handle());
--  // Add torrent again to session
--  unsigned int timeout = 0;
--  while(h.is_valid() && timeout < 6) {
--    qDebug("Waiting for the torrent to be removed...");
--    SleeperThread::msleep(1000);
--    ++timeout;
--  }
--  QTorrentHandle new_h;
--  if(full_alloc) {
--    new_h = s->add_torrent(t, saveDir, resumeData, storage_mode_allocate);
--    qDebug("Using full allocation mode");
--  } else {
--    new_h = s->add_torrent(t, saveDir, resumeData, storage_mode_sparse);
--    qDebug("Using sparse mode");
--  }
--  // Connections limit per torrent
--  new_h.set_max_connections(maxConnecsPerTorrent);
--  // Uploads limit per torrent
--  new_h.set_max_uploads(maxUploadsPerTorrent);
--  // Load filtered Files
--  loadFilesPriorities(new_h);
--  // Load speed limit from hard drive
--  loadTorrentSpeedLimits(hash);
--  // Load custom url seeds
--  loadWebSeeds(hash);
--  // Load ratio data
--  loadDownloadUploadForTorrent(hash);
--  // Pause torrent if it was paused last time
--  if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".paused")) {
--    new_h.pause();
--  }
--  // Incremental download
--  if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".incremental")) {
--    qDebug("Incremental download enabled for %s", fileName.toUtf8().data());
--    new_h.set_sequenced_download_threshold(1);
--  }
--}
--
--
--
- int bittorrent::getListenPort() const{
-   return s->listen_port();
- }
-Index: src/torrentAddition.h
-===================================================================
---- src/torrentAddition.h      (revision 2069)
-+++ src/torrentAddition.h      (revision 2070)
-@@ -95,26 +95,32 @@
-     }
-     void showLoad(QString filePath, bool fromScanDir=false, QString from_url=QString::null){
--      this->filePath = filePath;
--      this->fromScanDir = fromScanDir;
--      this->from_url = from_url;
--      std::ifstream in(filePath.toUtf8().data(), std::ios_base::binary);
--      in.unsetf(std::ios_base::skipws);
--      try{
--        // Decode torrent file
--        entry e = bdecode(std::istream_iterator<char>(in), std::istream_iterator<char>());
-+        this->filePath = filePath;
-+        this->fromScanDir = fromScanDir;
-+        this->from_url = from_url;
-         // Getting torrent file informations
--        torrent_info t(e);
--        nbFiles = t.num_files();
-+        boost::intrusive_ptr<torrent_info> t;
-+        try {
-+            t = new torrent_info(filePath.toUtf8().data());
-+        } catch(std::exception&) {
-+            if(!from_url.isNull()){
-+                BTSession->addConsoleMessage(tr("Unable to decode torrent file:")+QString::fromUtf8(" '")+from_url+QString::fromUtf8("'"), QString::fromUtf8("red"));
-+                QFile::remove(filePath);
-+            }else{
-+                BTSession->addConsoleMessage(tr("Unable to decode torrent file:")+QString::fromUtf8(" '")+filePath+QString::fromUtf8("'"), QString::fromUtf8("red"));
-+            }
-+            close();
-+        }
-+        nbFiles = t->num_files();
-         // Setting file name
--        fileName = misc::toQString(t.name());
--        hash = misc::toQString(t.info_hash());
-+        fileName = misc::toQString(t->name());
-+        hash = misc::toQString(t->info_hash());
-         // Use left() to remove .old extension
-         QString newFileName;
-         if(fileName.endsWith(QString::fromUtf8(".old"))){
--          newFileName = fileName.left(fileName.size()-4);
-+            newFileName = fileName.left(fileName.size()-4);
-         }else{
--          newFileName = fileName;
-+            newFileName = fileName;
-         }
-         fileNameLbl->setText(QString::fromUtf8("<center><b>")+newFileName+QString::fromUtf8("</b></center>"));
-         // List files in torrent
-@@ -123,62 +129,7 @@
-         delete arb;
-         connect(PropListModel, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(updatePriorities(QStandardItem*)));
-         torrentContentList->expandAll();
--      }
--      catch (invalid_torrent_file&){ // Raised by torrent_info constructor
--        // Display warning to tell user we can't decode the torrent file
--        if(!from_url.isNull()){
--          BTSession->addConsoleMessage(tr("Unable to decode torrent file:")+QString::fromUtf8(" '")+from_url+QString::fromUtf8("'"), QString::fromUtf8("red"));
--          QFile::remove(filePath);
--        }else{
--          BTSession->addConsoleMessage(tr("Unable to decode torrent file:")+QString::fromUtf8(" '")+filePath+QString::fromUtf8("'"), QString::fromUtf8("red"));
--        }
--        BTSession->addConsoleMessage(tr("This file is either corrupted or this isn't a torrent."), QString::fromUtf8("red"));
--        if(fromScanDir){
--          // Remove .corrupt file in case it already exists
--          QFile::remove(filePath+QString::fromUtf8(".corrupt"));
--          //Rename file extension so that it won't display error message more than once
--          QFile::rename(filePath,filePath+QString::fromUtf8(".corrupt"));
--        }
--        close();
--      }
--      catch(invalid_encoding& e){
--        std::cerr << "Could not decode file, reason: " << e.what() << '\n';
--        // Display warning to tell user we can't decode the torrent file
--        if(!from_url.isNull()){
--          BTSession->addConsoleMessage(tr("Unable to decode torrent file:")+QString::fromUtf8(" '")+from_url+QString::fromUtf8("'"), QString::fromUtf8("red"));
--          QFile::remove(filePath);
--        }else{
--          BTSession->addConsoleMessage(tr("Unable to decode torrent file:")+QString::fromUtf8(" '")+filePath+QString::fromUtf8("'"), QString::fromUtf8("red"));
--        }
--        qDebug("path is %s", filePath.toUtf8().data());
--        BTSession->addConsoleMessage(tr("This file is either corrupted or this isn't a torrent."), QString::fromUtf8("red"));
--        if(fromScanDir){
--          // Remove .corrupt file in case it already exists
--          QFile::remove(filePath+QString::fromUtf8(".corrupt"));
--          //Rename file extension so that it won't display error message more than once
--          QFile::rename(filePath,filePath+QString::fromUtf8(".corrupt"));
--        }
--        close();
--      }
--      catch(std::exception& e){
--        std::cerr << "Could not decode file, reason: " << e.what() << '\n';
--        if(!from_url.isNull()){
--          BTSession->addConsoleMessage(tr("Unable to decode torrent file:")+QString::fromUtf8(" '")+from_url+QString::fromUtf8("'"), QString::fromUtf8("red"));
--          QFile::remove(filePath);
--        }else{
--          BTSession->addConsoleMessage(tr("Unable to decode torrent file:")+QString::fromUtf8(" '")+filePath+QString::fromUtf8("'"), QString::fromUtf8("red"));
--        }
--        qDebug("path is %s", filePath.toUtf8().data());
--        BTSession->addConsoleMessage(tr("This file is either corrupted or this isn't a torrent."), QString::fromUtf8("red"));
--        if(fromScanDir){
--          // Remove .corrupt file in case it already exists
--          QFile::remove(filePath+QString::fromUtf8(".corrupt"));
--          //Rename file extension so that it won't display error message more than once
--          QFile::rename(filePath,filePath+QString::fromUtf8(".corrupt"));
--        }
--        close();
--      }
--      show();
-+        show();
-     }
-     void addFilesToTree(torrent_file *root, QStandardItem *parent) {
-Index: src/realprogressbarthread.cpp
-===================================================================
---- src/realprogressbarthread.cpp      (revision 2069)
-+++ src/realprogressbarthread.cpp      (revision 2070)
-@@ -65,9 +65,9 @@
-               size_type total_size = thandle.total_size();
-               size_type piece_length = thandle.piece_length();
-               int num_pieces = thandle.num_pieces();
--              const std::vector<bool>* pieces = thandle.pieces();
-+                bitfield pieces = thandle.pieces();
-               //pieces not returned
--              if (pieces == 0)
-+                if (pieces.empty())
-               {
-                       qDebug("pieces vector not returned");
-                       return;
-@@ -97,7 +97,7 @@
-                       }
-                       qreal start = i * fraction;
-                       qreal end = start + fraction;
--                      if((*pieces)[i])
-+                        if(pieces[i])
-                               mark(start, end);
-               }
-               if (success)
-Index: src/createtorrent_imp.cpp
-===================================================================
---- src/createtorrent_imp.cpp  (revision 2069)
-+++ src/createtorrent_imp.cpp  (revision 2070)
-@@ -26,6 +26,7 @@
- #include <boost/filesystem/operations.hpp>
- #include <boost/filesystem/path.hpp>
- #include <boost/filesystem/fstream.hpp>
-+#include <boost/bind.hpp>
- #include <libtorrent/entry.hpp>
- #include <libtorrent/bencode.hpp>
-@@ -34,6 +35,7 @@
- #include <libtorrent/storage.hpp>
- #include <libtorrent/hasher.hpp>
- #include <libtorrent/file_pool.hpp>
-+#include <libtorrent/create_torrent.hpp>
- #include "createtorrent_imp.h"
- #include "misc.h"
-@@ -41,13 +43,23 @@
- using namespace libtorrent;
- using namespace boost::filesystem;
-+// do not include files and folders whose
-+// name starts with a .
-+bool file_filter(boost::filesystem::path const& filename)
-+{
-+        if (filename.leaf()[0] == '.') return false;
-+        std::cerr << filename << std::endl;
-+        return true;
-+}
-+
- createtorrent::createtorrent(QWidget *parent): QDialog(parent){
-   setupUi(this);
-   setAttribute(Qt::WA_DeleteOnClose);
--  creatorThread = new torrentCreatorThread();
--  connect(creatorThread, SIGNAL(creationSuccess(QString, const char*, QString)), this, SLOT(handleCreationSuccess(QString, const char*, QString)));
-+  creatorThread = new torrentCreatorThread(this);
-+  connect(creatorThread, SIGNAL(creationSuccess(QString, const char*)), this, SLOT(handleCreationSuccess(QString, const char*)));
-   connect(creatorThread, SIGNAL(creationFailure(QString)), this, SLOT(handleCreationFailure(QString)));
-   connect(creatorThread, SIGNAL(updateProgress(int)), this, SLOT(updateProgressBar(int)));
-+  path::default_name_check(no_check);
-   show();
- }
-@@ -126,31 +138,6 @@
-   }
- }
--// Subfunction to add files to a torrent_info structure
--// Written by Arvid Norberg (libtorrent Author)
--void add_files(torrent_info& t, path const& p, path const& l){
--  using boost::filesystem::path;
--  using boost::filesystem::directory_iterator;
--#if BOOST_VERSION < 103600
--  std::string const& leaf = l.leaf();
--#else
--  std::string const& leaf = l.filename();
--#endif
--  if (leaf == ".." || leaf == ".") return;
--  path f(p / l);
--  if (is_directory(f)) {
--    for (directory_iterator i(f), end; i != end; ++i)
--#if BOOST_VERSION < 103600
--      add_files(t, p, l / i->leaf());
--#else
--      add_files(t, p, l / i->filename());
--#endif
--  } else {
--    qDebug("Adding %s", l.string().c_str());
--    t.add_file(l, file_size(f));
--  }
--}
--
- QStringList createtorrent::allItems(QListWidget *list){
-   QStringList res;
-   unsigned int nbItems = list->count();
-@@ -191,17 +178,25 @@
-   hide();
- }
--void createtorrent::handleCreationSuccess(QString path, const char* branch_path, QString hash) {
--  if(checkStartSeeding->isChecked()) {
--    // Create save path file
--    QFile savepath_file(misc::qBittorrentPath()+QString::fromUtf8("BT_backup")+QDir::separator()+hash+QString::fromUtf8(".savepath"));
--    savepath_file.open(QIODevice::WriteOnly | QIODevice::Text);
--    savepath_file.write(branch_path);
--    savepath_file.close();
--    emit torrent_to_seed(path);
--  }
--  QMessageBox::information(0, tr("Torrent creation"), tr("Torrent was created successfully:")+" "+path);
--  hide();
-+void createtorrent::handleCreationSuccess(QString path, const char* branch_path) {
-+    if(checkStartSeeding->isChecked()) {
-+        // Create save path file
-+        boost::intrusive_ptr<torrent_info> t;
-+        try {
-+            t = new torrent_info(path.toUtf8().data());
-+        } catch(std::exception&) {
-+            QMessageBox::critical(0, tr("Torrent creation"), tr("Created torrent file is invalid. It won't be added to download list."));
-+            return;
-+        }
-+        QString hash = misc::toQString(t->info_hash());
-+        QFile savepath_file(misc::qBittorrentPath()+QString::fromUtf8("BT_backup")+QDir::separator()+hash+QString::fromUtf8(".savepath"));
-+        savepath_file.open(QIODevice::WriteOnly | QIODevice::Text);
-+        savepath_file.write(branch_path);
-+        savepath_file.close();
-+        emit torrent_to_seed(path);
-+    }
-+    QMessageBox::information(0, tr("Torrent creation"), tr("Torrent was created successfully:")+" "+path);
-+    hide();
- }
- void createtorrent::updateProgressBar(int progress) {
-@@ -224,58 +219,47 @@
-   start();
- }
-+void sendProgressUpdateSignal(int i, int num, QDialog *parent){
-+    ((createtorrent*)parent)->updateProgressBar((int)(i*100./(float)num));
-+}
-+
- void torrentCreatorThread::run() {
-   emit updateProgress(0);
-   char const* creator_str = "qBittorrent "VERSION;
-   try {
--    boost::intrusive_ptr<torrent_info> t(new torrent_info);
--    ofstream out(complete(path((const char*)save_path.toUtf8())), std::ios_base::binary);
--    // Adding files to the torrent
-+    file_storage fs;
-+    file_pool fp;
-     path full_path = complete(path(input_path.toUtf8().data()));
--#if BOOST_VERSION < 103600
--    add_files(*t, full_path.branch_path(), full_path.leaf());
--#else
--    add_files(*t, full_path.branch_path(), full_path.filename());
--#endif
-+    // Adding files to the torrent
-+    add_files(fs, full_path, file_filter);
-     if(abort) return;
--    // Set piece size
--    t->set_piece_size(piece_size);
-+    create_torrent t(fs, piece_size);
-+
-     // Add url seeds
-     QString seed;
-     foreach(seed, url_seeds){
--      t->add_url_seed(seed.toUtf8().data());
-+      t.add_url_seed(seed.toUtf8().data());
-     }
-     for(int i=0; i<trackers.size(); ++i){
--      t->add_tracker(trackers.at(i).toUtf8().data());
-+      t.add_tracker(trackers.at(i).toUtf8().data());
-     }
-     if(abort) return;
-     // calculate the hash for all pieces
--    file_pool fp;
--    boost::scoped_ptr<storage_interface> st(default_storage_constructor(t, full_path.branch_path(), fp));
--    int num = t->num_pieces();
--    std::vector<char> buf(piece_size);
--    for (int i = 0; i < num; ++i) {
--      st->read(&buf[0], i, 0, t->piece_size(i));
--      hasher h(&buf[0], t->piece_size(i));
--      t->set_hash(i, h.final());
--      emit updateProgress((int)(i*100./(float)num));
--      if(abort) return;
--    }
-+    set_piece_hashes(t, full_path.branch_path(), boost::bind(&sendProgressUpdateSignal, _1, t.num_pieces(), parent));
-     // Set qBittorrent as creator and add user comment to
-     // torrent_info structure
--    t->set_creator(creator_str);
--    t->set_comment((const char*)comment.toUtf8());
-+    t.set_creator(creator_str);
-+    t.set_comment((const char*)comment.toUtf8());
-     // Is private ?
-     if(is_private){
--      t->set_priv(true);
-+      t.set_priv(true);
-     }
-     if(abort) return;
-     // create the torrent and print it to out
--    entry e = t->create_torrent();
--    libtorrent::bencode(std::ostream_iterator<char>(out), e);
--    out.flush();
-+    ofstream out(complete(path((const char*)save_path.toUtf8())), std::ios_base::binary);
-+    bencode(std::ostream_iterator<char>(out), t.generate());
-     emit updateProgress(100);
--    emit creationSuccess(save_path, full_path.branch_path().string().c_str(), misc::toQString(t->info_hash()));
-+    emit creationSuccess(save_path, full_path.branch_path().string().c_str());
-   }
-   catch (std::exception& e){
-     emit creationFailure(QString::fromUtf8(e.what()));
-Index: src/bittorrent.h
-===================================================================
---- src/bittorrent.h   (revision 2069)
-+++ src/bittorrent.h   (revision 2070)
-@@ -180,7 +180,6 @@
-     void enableNATPMP(bool b);
-     void enableLSD(bool b);
-     bool enableDHT(bool b);
--    void reloadTorrent(const QTorrentHandle &h, bool full_alloc);
-     void setTimerScanInterval(int secs);
-     void setMaxActiveDownloads(int val);
-     void setMaxActiveTorrents(int val);
-Index: src/src.pro
-===================================================================
---- src/src.pro        (revision 2069)
-+++ src/src.pro        (revision 2070)
-@@ -146,7 +146,7 @@
-            PropListDelegate.h previewSelect.h \
-            PreviewListDelegate.h trackerLogin.h \
-            downloadThread.h downloadFromURLImp.h \
--           torrentAddition.h deleteThread.h \
-+           torrentAddition.h \
-            bittorrent.h searchEngine.h \
-            rss.h rss_imp.h FinishedTorrents.h \
-            allocationDlg.h FinishedListDelegate.h \
-Index: src/downloadingTorrents.cpp
-===================================================================
---- src/downloadingTorrents.cpp        (revision 2069)
-+++ src/downloadingTorrents.cpp        (revision 2070)
-@@ -529,31 +529,6 @@
-             DLListModel->setData(DLListModel->index(row, PROGRESS), QVariant((double)h.progress()));
-           }
-           break;
--        case torrent_status::connecting_to_tracker:
--          if(h.download_payload_rate() > 0) {
--            // Display "Downloading" status when connecting if download speed > 0
--            if(!downloadList->isColumnHidden(ETA)) {
--              DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)BTSession->getETA(hash)));
--            }
--            DLListModel->setData(DLListModel->index(row, NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/downloading.png"))), Qt::DecorationRole);
--            setRowColor(row, QString::fromUtf8("green"));
--          }else{
--            if(!downloadList->isColumnHidden(ETA)) {
--              DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)-1));
--            }
--            DLListModel->setData(DLListModel->index(row, NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/connecting.png"))), Qt::DecorationRole);
--            setRowColor(row, QString::fromUtf8("grey"));
--          }
--          if(!downloadList->isColumnHidden(PROGRESS)) {
--            DLListModel->setData(DLListModel->index(row, PROGRESS), QVariant((double)h.progress()));
--          }
--          if(!downloadList->isColumnHidden(DLSPEED)) {
--            DLListModel->setData(DLListModel->index(row, DLSPEED), QVariant((double)h.download_payload_rate()));
--          }
--          if(!downloadList->isColumnHidden(UPSPEED)) {
--            DLListModel->setData(DLListModel->index(row, UPSPEED), QVariant((double)h.upload_payload_rate()));
--          }
--          break;
-         case torrent_status::downloading:
-         case torrent_status::downloading_metadata:
-           if(h.download_payload_rate() > 0) {
-Index: src/qtorrenthandle.cpp
-===================================================================
---- src/qtorrenthandle.cpp     (revision 2069)
-+++ src/qtorrenthandle.cpp     (revision 2070)
-@@ -64,7 +64,7 @@
-   return progress;
- }
--const std::vector<bool>* QTorrentHandle::pieces() const {
-+bitfield QTorrentHandle::pieces() const {
-       Q_ASSERT(h.is_valid());
-       return h.status().pieces;
- }
-@@ -185,9 +185,9 @@
-   return h.has_metadata();
- }
--entry QTorrentHandle::write_resume_data() const {
-+void QTorrentHandle::save_resume_data() const {
-   Q_ASSERT(h.is_valid());
--  return h.write_resume_data();
-+  return h.save_resume_data();
- }
- QString QTorrentHandle::file_at(unsigned int index) const {
-@@ -227,7 +227,7 @@
-   return h.status().total_failed_bytes;
- }
--void QTorrentHandle::file_progress(std::vector<float>& fp) {
-+void QTorrentHandle::file_progress(std::vector<size_type>& fp) {
-   Q_ASSERT(h.is_valid());
-   return h.file_progress(fp);
- }
-@@ -330,9 +330,9 @@
-   h.force_reannounce();
- }
--void QTorrentHandle::set_sequenced_download_threshold(int val) {
-+void QTorrentHandle::set_sequential_download(bool b) {
-   Q_ASSERT(h.is_valid());
--  h.set_sequenced_download_threshold(val);
-+  h.set_sequential_download(b);
- }
- void QTorrentHandle::set_tracker_login(QString username, QString password) {
-Index: src/createtorrent_imp.h
-===================================================================
---- src/createtorrent_imp.h    (revision 2069)
-+++ src/createtorrent_imp.h    (revision 2070)
-@@ -37,9 +37,12 @@
-   bool is_private;
-   int piece_size;
-   bool abort;
-+  QDialog *parent;
-   
-   public:
--    torrentCreatorThread() {}
-+    torrentCreatorThread(QDialog *_parent) {
-+        parent = _parent;
-+    }
-     ~torrentCreatorThread() {
-       abort = true;
-       wait();
-@@ -51,7 +54,7 @@
-     
-   signals:
-     void creationFailure(QString msg);
--    void creationSuccess(QString path, const char* branch_path, QString hash);
-+    void creationSuccess(QString path, const char* branch_path);
-     void updateProgress(int progress);
- };
-@@ -70,6 +73,9 @@
-   signals:
-     void torrent_to_seed(QString path);
-+  public slots:
-+    void updateProgressBar(int progress);
-+
-   protected slots:
-     void on_createButton_clicked();
-     void on_addFile_button_clicked();
-@@ -79,8 +85,7 @@
-     void on_addURLSeed_button_clicked();
-     void on_removeURLSeed_button_clicked();
-     void handleCreationFailure(QString msg);
--    void handleCreationSuccess(QString path, const char* branch_path, QString hash);
--    void updateProgressBar(int progress);
-+    void handleCreationSuccess(QString path, const char* branch_path);
- };
- #endif
-Index: src/icons.qrc
-===================================================================
---- src/icons.qrc      (revision 2069)
-+++ src/icons.qrc      (revision 2070)
-@@ -76,7 +76,6 @@
-   <file>Icons/flags/united_kingdom.png</file>
-   <file>Icons/skin/add.png</file>
-   <file>Icons/skin/connected.png</file>
--  <file>Icons/skin/connecting.png</file>
-   <file>Icons/skin/decrease.png</file>
-   <file>Icons/skin/delete.png</file>
-   <file>Icons/skin/delete_all.png</file>
This page took 0.184636 seconds and 4 git commands to generate.