Compare commits
	
		
			1 Commits
		
	
	
		
			release-1.
			...
			release-1.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					7c490fcb39 | 
							
								
								
									
										22
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						@@ -1,15 +1,4 @@
 | 
			
		||||
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.5.0
 | 
			
		||||
    - FEATURE: Added Magnet URI support
 | 
			
		||||
    - FEATURE: Make use of torrent enclosure in RSS feeds for direct download
 | 
			
		||||
    - FEATURE: Implemented a RSS feed downloader with filter support
 | 
			
		||||
    - FEATURE: Save old RSS item to hard disk to remember them on start up
 | 
			
		||||
    - FEATURE: Display free disk space in torrent addition dialog
 | 
			
		||||
    - FEATURE: In torrent addition from URL, paste clipboard content if it contains an URL
 | 
			
		||||
    - FEATURE: RSS Feeds URLs can now be copied to clipboard
 | 
			
		||||
    - FEATURE: If a torrent contains a torrent file, process downloaded torrent file too
 | 
			
		||||
    - BUGFIX: torrent resume code rewrited
 | 
			
		||||
 | 
			
		||||
* Thu Aug 13 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.4.0
 | 
			
		||||
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.4.0
 | 
			
		||||
    - FEATURE: Display swarm information in lists
 | 
			
		||||
    - FEATURE: Allow to define temporary download folder
 | 
			
		||||
    - FEATURE: Display total amount of uploaded data in finished list
 | 
			
		||||
@@ -17,20 +6,11 @@
 | 
			
		||||
    - FEATURE: Search results tab columns are now remembered upon startup
 | 
			
		||||
    - FEATURE: Added right click menu in search engine to clear completion history
 | 
			
		||||
    - FEATURE: Allow to set a different port for DHT (UDP) than the one used for Bittorrent
 | 
			
		||||
    - FEATURE: Updated spoofing code to avoid trackers ban
 | 
			
		||||
    - BUGFIX: Provide more helpful explanation when an I/O error occured
 | 
			
		||||
    - BUGFIX: Stop enforcing UTF-8 and use system locale instead
 | 
			
		||||
    - COSMETIC: Redesigned program preferences
 | 
			
		||||
    - COSMETIC: Updated icons set
 | 
			
		||||
 | 
			
		||||
* Fri Jul 24 2009 - Christophe DUMEZ <chris@qbittorrent.org> - 1.3.5
 | 
			
		||||
    - BUGFIX: Made IP filter parser more robust
 | 
			
		||||
    - BUGFIX: Fixed torrent creation tool
 | 
			
		||||
    - BUGFIX: Fixed possible overflow in progress calculation in arborescence.h
 | 
			
		||||
    - BUGFIX: Save properties window size, position, columns width and restore them
 | 
			
		||||
    - BUGFIX: Set a minimum default width for NAME column in properties
 | 
			
		||||
    - BUGFIX: Remember visual indexes of columns in transfer lists
 | 
			
		||||
 | 
			
		||||
* Sun Jul 12 2009 - Christophe DUMEZ <chris@qbittorrent.org> - v1.3.4
 | 
			
		||||
    - BUGFIX: Fixed IP filter file parsing on 64bits
 | 
			
		||||
    - BUGFIX: Suppressed QLayout: Attempting to add QLayout "" to properties "properties" warning message when opening a properties dialog
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										109
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -18,12 +18,17 @@ Main options:
 | 
			
		||||
  --help              This help text.
 | 
			
		||||
 | 
			
		||||
Dependency options:
 | 
			
		||||
  --with-libboost-inc=[path]     Path to libboost include files
 | 
			
		||||
  --with-libcurl-inc=[path]      Path to libcurl include files
 | 
			
		||||
  --with-libcurl-lib=[path]      Path to libcurl library files
 | 
			
		||||
  --disable-libzzip             Disable use of libzzip
 | 
			
		||||
  --with-libzzip-inc=[path]      Path to libzzip++ include files
 | 
			
		||||
  --with-libzzip-lib=[path]      Path to libzzip++ library files
 | 
			
		||||
  --with-libtorrent-inc=[path]            Path to libtorrent-rasterbar include
 | 
			
		||||
                                         files
 | 
			
		||||
  --with-libtorrent-lib=[path]            Path to libtorrent-rasterbar library
 | 
			
		||||
                                         files
 | 
			
		||||
  --with-libtorrent-static-lib=[path]     Path to libtorrent-rasterbar .a file
 | 
			
		||||
  --with-libboost-inc=[path]              Path to libboost include files
 | 
			
		||||
  --with-libcurl-inc=[path]               Path to libcurl include files
 | 
			
		||||
  --with-libcurl-lib=[path]               Path to libcurl library files
 | 
			
		||||
  --disable-libzzip                      Disable use of libzzip
 | 
			
		||||
  --with-libzzip-inc=[path]               Path to libzzip++ include files
 | 
			
		||||
  --with-libzzip-lib=[path]               Path to libzzip++ library files
 | 
			
		||||
 | 
			
		||||
EOT
 | 
			
		||||
}
 | 
			
		||||
@@ -140,6 +145,21 @@ while [ $# -gt 0 ]; do
 | 
			
		||||
			shift
 | 
			
		||||
			;;
 | 
			
		||||
 | 
			
		||||
		--with-libtorrent-inc=*)
 | 
			
		||||
			QC_WITH_LIBTORRENT_INC=$optarg
 | 
			
		||||
			shift
 | 
			
		||||
			;;
 | 
			
		||||
 | 
			
		||||
		--with-libtorrent-lib=*)
 | 
			
		||||
			QC_WITH_LIBTORRENT_LIB=$optarg
 | 
			
		||||
			shift
 | 
			
		||||
			;;
 | 
			
		||||
 | 
			
		||||
		--with-libtorrent-static-lib=*)
 | 
			
		||||
			QC_WITH_LIBTORRENT_STATIC_LIB=$optarg
 | 
			
		||||
			shift
 | 
			
		||||
			;;
 | 
			
		||||
 | 
			
		||||
		--with-libboost-inc=*)
 | 
			
		||||
			QC_WITH_LIBBOOST_INC=$optarg
 | 
			
		||||
			shift
 | 
			
		||||
@@ -191,6 +211,9 @@ echo PREFIX=$PREFIX
 | 
			
		||||
echo BINDIR=$BINDIR
 | 
			
		||||
echo DATADIR=$DATADIR
 | 
			
		||||
echo EX_QTDIR=$EX_QTDIR
 | 
			
		||||
echo QC_WITH_LIBTORRENT_INC=$QC_WITH_LIBTORRENT_INC
 | 
			
		||||
echo QC_WITH_LIBTORRENT_LIB=$QC_WITH_LIBTORRENT_LIB
 | 
			
		||||
echo QC_WITH_LIBTORRENT_STATIC_LIB=$QC_WITH_LIBTORRENT_STATIC_LIB
 | 
			
		||||
echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC
 | 
			
		||||
echo QC_WITH_LIBCURL_INC=$QC_WITH_LIBCURL_INC
 | 
			
		||||
echo QC_WITH_LIBCURL_LIB=$QC_WITH_LIBCURL_LIB
 | 
			
		||||
@@ -323,29 +346,70 @@ public:
 | 
			
		||||
/*
 | 
			
		||||
-----BEGIN QCMOD-----
 | 
			
		||||
name: libtorrent-rasterbar
 | 
			
		||||
arg: with-libtorrent-inc=[path], Path to libtorrent-rasterbar include files
 | 
			
		||||
arg: with-libtorrent-lib=[path], Path to libtorrent-rasterbar library files
 | 
			
		||||
arg: with-libtorrent-static-lib=[path], Path to libtorrent-rasterbar .a file
 | 
			
		||||
-----END QCMOD-----
 | 
			
		||||
*/
 | 
			
		||||
// see  Conf::findPkgConfig
 | 
			
		||||
class qc_libtorrent_rasterbar : public ConfObj
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
 | 
			
		||||
	QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.14.4 advised)"; }
 | 
			
		||||
	QString name() const { return "libtorrent-rasterbar >= 0.14"; }
 | 
			
		||||
	QString shortname() const { return "libtorrent-rasterbar"; }
 | 
			
		||||
	bool exec(){
 | 
			
		||||
		QStringList incs;
 | 
			
		||||
		QString req_ver = "0.14.0";
 | 
			
		||||
		QString adv_ver = "0.14.4";
 | 
			
		||||
		QString version, libs, other;
 | 
			
		||||
		VersionMode mode = VersionMin;
 | 
			
		||||
		if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
 | 
			
		||||
			return false;
 | 
			
		||||
		for(int n = 0; n < incs.count(); ++n)
 | 
			
		||||
			conf->addIncludePath(incs[n]);
 | 
			
		||||
		if(!libs.isEmpty())
 | 
			
		||||
			conf->addLib(libs);
 | 
			
		||||
		if(!conf->findPkgConfig("libtorrent-rasterbar", mode, adv_ver, &version, &incs, &libs, &other))
 | 
			
		||||
			printf("\nWarning: libtorrent-rasterbar v%s was detected. Although it will compile and run, you will probably experience some bugs. Please consider updating to v%s!\n", version.toUtf8().data(), adv_ver.toUtf8().data());
 | 
			
		||||
        	QString s;
 | 
			
		||||
		s = conf->getenv("QC_WITH_LIBTORRENT_INC");
 | 
			
		||||
		if(!s.isEmpty()) {
 | 
			
		||||
			if(!conf->checkHeader(s, "libtorrent/magnet_uri.hpp")) {
 | 
			
		||||
				return false;
 | 
			
		||||
      			}
 | 
			
		||||
		}else{
 | 
			
		||||
			QStringList sl;
 | 
			
		||||
			sl << "/usr/include";
 | 
			
		||||
			sl << "/usr/local/include";
 | 
			
		||||
			bool found = false;
 | 
			
		||||
			foreach(s, sl){
 | 
			
		||||
				if(conf->checkHeader(s, "libtorrent/magnet_uri.hpp")){
 | 
			
		||||
					found = true;
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if(!found) {
 | 
			
		||||
				return false;
 | 
			
		||||
          		}
 | 
			
		||||
		}
 | 
			
		||||
		conf->addIncludePath(s);
 | 
			
		||||
		conf->addIncludePath(s+QDir::separator()+"libtorrent");
 | 
			
		||||
 | 
			
		||||
		s = conf->getenv("QC_WITH_LIBTORRENT_STATIC_LIB");
 | 
			
		||||
		if(!s.isEmpty() && QFile::exists(s) && s.endsWith(".a")){
 | 
			
		||||
			conf->addLib(s);
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		s = conf->getenv("QC_WITH_LIBTORRENT_LIB");
 | 
			
		||||
		if(!s.isEmpty()) {
 | 
			
		||||
      			if(!conf->checkLibrary(s, "torrent-rasterbar")) {
 | 
			
		||||
			        return false;
 | 
			
		||||
			}
 | 
			
		||||
      			conf->addLib(QString("-L") + s);
 | 
			
		||||
		}else{
 | 
			
		||||
			QStringList sl;
 | 
			
		||||
			sl << "/usr/lib/";
 | 
			
		||||
			sl << "/usr/lib64/";
 | 
			
		||||
			sl << "/usr/local/lib/";
 | 
			
		||||
			sl << "/usr/local/lib64/";
 | 
			
		||||
			bool found = false;
 | 
			
		||||
			foreach(s, sl){
 | 
			
		||||
				if(conf->checkLibrary(s, "torrent-rasterbar")){
 | 
			
		||||
					found = true;
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if(!found) return false;
 | 
			
		||||
			conf->addLib(QString("-L") + s);
 | 
			
		||||
		}
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
@@ -1503,6 +1567,9 @@ export PREFIX
 | 
			
		||||
export BINDIR
 | 
			
		||||
export DATADIR
 | 
			
		||||
export EX_QTDIR
 | 
			
		||||
export QC_WITH_LIBTORRENT_INC
 | 
			
		||||
export QC_WITH_LIBTORRENT_LIB
 | 
			
		||||
export QC_WITH_LIBTORRENT_STATIC_LIB
 | 
			
		||||
export QC_WITH_LIBBOOST_INC
 | 
			
		||||
export QC_WITH_LIBCURL_INC
 | 
			
		||||
export QC_WITH_LIBCURL_LIB
 | 
			
		||||
 
 | 
			
		||||
@@ -64,11 +64,14 @@ public:
 | 
			
		||||
                         	return false;
 | 
			
		||||
		}
 | 
			
		||||
		conf->addLib(QString("-L") + s);
 | 
			
		||||
		QString out = "";
 | 
			
		||||
		QProcess magickConfig;
 | 
			
		||||
		QStringList params;
 | 
			
		||||
                params << "--libs";
 | 
			
		||||
		qconf->doCommand("Magick++-config", params, &out);
 | 
			
		||||
		out = out.replace("\n", "");
 | 
			
		||||
		params << "--libs";
 | 
			
		||||
		magickConfig.start("Magick++-config", params, QIODevice::ReadOnly);
 | 
			
		||||
		magickConfig.waitForStarted();
 | 
			
		||||
		magickConfig.waitForFinished();
 | 
			
		||||
		QByteArray result = magickConfig.readAll();
 | 
			
		||||
		result = result.replace("\n", "");
 | 
			
		||||
		conf->addLib(result.data());
 | 
			
		||||
		conf->addDefine("HAVE_MAGICK");
 | 
			
		||||
		return true;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,9 @@
 | 
			
		||||
/*
 | 
			
		||||
-----BEGIN QCMOD-----
 | 
			
		||||
name: libtorrent-rasterbar
 | 
			
		||||
arg: with-libtorrent-inc=[path], Path to libtorrent-rasterbar include files
 | 
			
		||||
arg: with-libtorrent-lib=[path], Path to libtorrent-rasterbar library files
 | 
			
		||||
arg: with-libtorrent-static-lib=[path], Path to libtorrent-rasterbar .a file
 | 
			
		||||
-----END QCMOD-----
 | 
			
		||||
*/
 | 
			
		||||
// see  Conf::findPkgConfig
 | 
			
		||||
@@ -8,22 +11,61 @@ class qc_libtorrent_rasterbar : public ConfObj
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
 | 
			
		||||
	QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.14.4 advised)"; }
 | 
			
		||||
	QString name() const { return "libtorrent-rasterbar >= 0.14"; }
 | 
			
		||||
	QString shortname() const { return "libtorrent-rasterbar"; }
 | 
			
		||||
	bool exec(){
 | 
			
		||||
		QStringList incs;
 | 
			
		||||
		QString req_ver = "0.14.0";
 | 
			
		||||
		QString adv_ver = "0.14.4";
 | 
			
		||||
		QString version, libs, other;
 | 
			
		||||
		VersionMode mode = VersionMin;
 | 
			
		||||
		if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
 | 
			
		||||
			return false;
 | 
			
		||||
		for(int n = 0; n < incs.count(); ++n)
 | 
			
		||||
			conf->addIncludePath(incs[n]);
 | 
			
		||||
		if(!libs.isEmpty())
 | 
			
		||||
			conf->addLib(libs);
 | 
			
		||||
		if(!conf->findPkgConfig("libtorrent-rasterbar", mode, adv_ver, &version, &incs, &libs, &other))
 | 
			
		||||
			printf("\nWarning: libtorrent-rasterbar v%s was detected. Although it will compile and run, you will probably experience some bugs. Please consider updating to v%s!\n", version.toLocal8Bit().data(), adv_ver.toUtf8().data());
 | 
			
		||||
        	QString s;
 | 
			
		||||
		s = conf->getenv("QC_WITH_LIBTORRENT_INC");
 | 
			
		||||
		if(!s.isEmpty()) {
 | 
			
		||||
			if(!conf->checkHeader(s, "libtorrent/magnet_uri.hpp")) {
 | 
			
		||||
				return false;
 | 
			
		||||
      			}
 | 
			
		||||
		}else{
 | 
			
		||||
			QStringList sl;
 | 
			
		||||
			sl << "/usr/include";
 | 
			
		||||
			sl << "/usr/local/include";
 | 
			
		||||
			bool found = false;
 | 
			
		||||
			foreach(s, sl){
 | 
			
		||||
				if(conf->checkHeader(s, "libtorrent/magnet_uri.hpp")){
 | 
			
		||||
					found = true;
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if(!found) {
 | 
			
		||||
				return false;
 | 
			
		||||
          		}
 | 
			
		||||
		}
 | 
			
		||||
		conf->addIncludePath(s);
 | 
			
		||||
		conf->addIncludePath(s+QDir::separator()+"libtorrent");
 | 
			
		||||
 | 
			
		||||
		s = conf->getenv("QC_WITH_LIBTORRENT_STATIC_LIB");
 | 
			
		||||
		if(!s.isEmpty() && QFile::exists(s) && s.endsWith(".a")){
 | 
			
		||||
			conf->addLib(s);
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		s = conf->getenv("QC_WITH_LIBTORRENT_LIB");
 | 
			
		||||
		if(!s.isEmpty()) {
 | 
			
		||||
      			if(!conf->checkLibrary(s, "torrent-rasterbar")) {
 | 
			
		||||
			        return false;
 | 
			
		||||
			}
 | 
			
		||||
      			conf->addLib(QString("-L") + s);
 | 
			
		||||
		}else{
 | 
			
		||||
			QStringList sl;
 | 
			
		||||
			sl << "/usr/lib/";
 | 
			
		||||
			sl << "/usr/lib64/";
 | 
			
		||||
			sl << "/usr/local/lib/";
 | 
			
		||||
			sl << "/usr/local/lib64/";
 | 
			
		||||
			bool found = false;
 | 
			
		||||
			foreach(s, sl){
 | 
			
		||||
				if(conf->checkLibrary(s, "torrent-rasterbar")){
 | 
			
		||||
					found = true;
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if(!found) return false;
 | 
			
		||||
			conf->addLib(QString("-L") + s);
 | 
			
		||||
		}
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -64,8 +64,6 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par
 | 
			
		||||
  if(!loadColWidthFinishedList()){
 | 
			
		||||
    finishedList->header()->resizeSection(0, 200);
 | 
			
		||||
  }
 | 
			
		||||
  // Connect BTSession signals
 | 
			
		||||
  connect(BTSession, SIGNAL(metadataReceived(QTorrentHandle&)), this, SLOT(updateMetadata(QTorrentHandle&)));
 | 
			
		||||
  // Make download list header clickable for sorting
 | 
			
		||||
  finishedList->header()->setClickable(true);
 | 
			
		||||
  finishedList->header()->setSortIndicatorShown(true);
 | 
			
		||||
@@ -81,8 +79,6 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par
 | 
			
		||||
  actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png")));
 | 
			
		||||
  actionTorrent_Properties->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/properties.png")));
 | 
			
		||||
  actionSet_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png")));
 | 
			
		||||
  actionCopy_magnet_link->setIcon(QIcon(QString::fromUtf8(":/Icons/magnet.png")));
 | 
			
		||||
 | 
			
		||||
  connect(actionPause, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPause_triggered()));
 | 
			
		||||
  connect(actionStart, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionStart_triggered()));
 | 
			
		||||
  connect(actionDelete, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_triggered()));
 | 
			
		||||
@@ -92,7 +88,6 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par
 | 
			
		||||
  connect(actionBuy_it, SIGNAL(triggered()), (GUI*)parent, SLOT(goBuyPage()));
 | 
			
		||||
  connect(actionTorrent_Properties, SIGNAL(triggered()), this, SLOT(propertiesSelection()));
 | 
			
		||||
  connect(actionForce_recheck, SIGNAL(triggered()), this, SLOT(forceRecheck()));
 | 
			
		||||
  connect(actionCopy_magnet_link, SIGNAL(triggered()), (GUI*)parent, SLOT(copyMagnetURI()));
 | 
			
		||||
 | 
			
		||||
  connect(actionHOSColName, SIGNAL(triggered()), this, SLOT(hideOrShowColumnName()));
 | 
			
		||||
  connect(actionHOSColSize, SIGNAL(triggered()), this, SLOT(hideOrShowColumnSize()));
 | 
			
		||||
@@ -271,18 +266,7 @@ void FinishedTorrents::on_actionSet_upload_limit_triggered(){
 | 
			
		||||
  new BandwidthAllocationDialog(this, true, BTSession, hashes);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void FinishedTorrents::updateMetadata(QTorrentHandle &h) {
 | 
			
		||||
  QString hash = h.hash();
 | 
			
		||||
  int row = getRowFromHash(hash);
 | 
			
		||||
  if(row != -1) {
 | 
			
		||||
    qDebug("Updating torrent metadata in download list");
 | 
			
		||||
    finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(h.name()));
 | 
			
		||||
    finishedListModel->setData(finishedListModel->index(row, F_SIZE), QVariant((qlonglong)h.actual_size()));
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void FinishedTorrents::updateTorrent(QTorrentHandle h) {
 | 
			
		||||
    if(!h.is_valid()) return;
 | 
			
		||||
    QString hash = h.hash();
 | 
			
		||||
    int row = getRowFromHash(hash);
 | 
			
		||||
    if(row == -1){
 | 
			
		||||
@@ -449,7 +433,6 @@ void FinishedTorrents::displayFinishedListMenu(const QPoint&){
 | 
			
		||||
  myFinishedListMenu.addAction(actionOpen_destination_folder);
 | 
			
		||||
  myFinishedListMenu.addAction(actionTorrent_Properties);
 | 
			
		||||
  myFinishedListMenu.addSeparator();
 | 
			
		||||
  myFinishedListMenu.addAction(actionCopy_magnet_link);
 | 
			
		||||
  myFinishedListMenu.addAction(actionBuy_it);
 | 
			
		||||
 | 
			
		||||
  // Call menu
 | 
			
		||||
 
 | 
			
		||||
@@ -93,7 +93,6 @@ class FinishedTorrents : public QWidget, public Ui::seeding {
 | 
			
		||||
    void deleteTorrent(QString hash);
 | 
			
		||||
    void showPropertiesFromHash(QString hash);
 | 
			
		||||
    void loadLastSortedColumn();
 | 
			
		||||
    void updateMetadata(QTorrentHandle &h);
 | 
			
		||||
 | 
			
		||||
  signals:
 | 
			
		||||
    void torrentMovedFromFinishedList(QString);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2424
									
								
								src/GUI.cpp
									
									
									
									
									
								
							
							
						
						@@ -143,7 +143,6 @@ class GUI : public QMainWindow, private Ui::MainWindow{
 | 
			
		||||
    void fullDiskError(QTorrentHandle& h, QString msg) const;
 | 
			
		||||
    void handleDownloadFromUrlFailure(QString, QString) const;
 | 
			
		||||
    void createSystrayDelayed();
 | 
			
		||||
    void setPaused(QTorrentHandle &h) const;
 | 
			
		||||
    // Keyboard shortcuts
 | 
			
		||||
    void createKeyboardShortcuts();
 | 
			
		||||
    void displayDownTab() const;
 | 
			
		||||
@@ -192,7 +191,6 @@ class GUI : public QMainWindow, private Ui::MainWindow{
 | 
			
		||||
    void setTabText(int index, QString text) const;
 | 
			
		||||
    void openDestinationFolder() const;
 | 
			
		||||
    void goBuyPage() const;
 | 
			
		||||
    void copyMagnetURI() const;
 | 
			
		||||
    void updateRatio();
 | 
			
		||||
 | 
			
		||||
  protected:
 | 
			
		||||
 
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 7.0 KiB  | 
| 
		 Before Width: | Height: | Size: 907 B  | 
| 
		 Before Width: | Height: | Size: 498 B  | 
| 
		 Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.5 KiB  | 
| 
		 Before Width: | Height: | Size: 752 B After Width: | Height: | Size: 739 B  | 
@@ -1,6 +1,6 @@
 | 
			
		||||
[Desktop Entry]
 | 
			
		||||
Categories=Qt;Network;P2P
 | 
			
		||||
Comment=V1.5.0
 | 
			
		||||
Comment=V1.4.0
 | 
			
		||||
Exec=qbittorrent %f
 | 
			
		||||
GenericName=Bittorrent client
 | 
			
		||||
GenericName[bg]=Торент клиент
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								src/Icons/skin/add.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 842 B  | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/skin/remove.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB  | 
| 
		 Before Width: | Height: | Size: 722 B After Width: | Height: | Size: 629 B  | 
							
								
								
									
										224
									
								
								src/about.ui
									
									
									
									
									
								
							
							
						
						@@ -91,19 +91,7 @@ class about : public QDialog, private Ui::AboutDlg{
 | 
			
		||||
      te_translation->scrollToAnchor(QString::fromUtf8("top"));
 | 
			
		||||
      // License
 | 
			
		||||
      te_license->append(QString::fromUtf8("<a name='top'></a>"));
 | 
			
		||||
      te_license->append(QString::fromUtf8("qBittorrent is licensed under the GNU General Public License version 2 with the\
 | 
			
		||||
addition of the following special exception:\
 | 
			
		||||
<br><br>\
 | 
			
		||||
<i>In addition, as a special exception, the copyright holders give permission to\
 | 
			
		||||
link this program with the OpenSSL project\'s \"OpenSSL\" library (or with\
 | 
			
		||||
modified versions of it that use the same license as the \"OpenSSL\" library),\
 | 
			
		||||
and distribute the linked executables. You must obey the GNU General Public\
 | 
			
		||||
License in all respects for all of the code used other than \"OpenSSL\".  If you\
 | 
			
		||||
modify file(s), you may extend this exception to your version of the file(s),\
 | 
			
		||||
but you are not obligated to do so. If you do not wish to do so, delete this\
 | 
			
		||||
exception statement from your version.</i>\
 | 
			
		||||
<br><br>\
 | 
			
		||||
          <center><b>GNU GENERAL PUBLIC LICENSE</b></center><br>\
 | 
			
		||||
      te_license->append(QString::fromUtf8("<center><b>GNU GENERAL PUBLIC LICENSE</b></center><br>\
 | 
			
		||||
          <center>Version 2, June 1991</center><br>\
 | 
			
		||||
          Copyright (C) 1989, 1991 Free Software Foundation, Inc.<br>\
 | 
			
		||||
          51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA<br>\
 | 
			
		||||
 
 | 
			
		||||
@@ -76,7 +76,6 @@ class bittorrent : public QObject {
 | 
			
		||||
    QString filterPath;
 | 
			
		||||
    bool queueingEnabled;
 | 
			
		||||
    QStringList url_skippingDlg;
 | 
			
		||||
    QHash<QString, QString> savepath_fromurl;
 | 
			
		||||
 | 
			
		||||
  protected:
 | 
			
		||||
    QString getSavePath(QString hash);
 | 
			
		||||
@@ -108,22 +107,19 @@ class bittorrent : public QObject {
 | 
			
		||||
    QStringList getConsoleMessages() const;
 | 
			
		||||
    QStringList getPeerBanMessages() const;
 | 
			
		||||
    qlonglong getETA(QString hash) const;
 | 
			
		||||
    bool useTemporaryFolder() const;
 | 
			
		||||
    QString getDefaultSavePath() const;
 | 
			
		||||
 | 
			
		||||
  public slots:
 | 
			
		||||
    QTorrentHandle addTorrent(QString path, bool fromScanDir = false, QString from_url = QString(), bool resumed = false);
 | 
			
		||||
    QTorrentHandle addMagnetUri(QString magnet_uri, bool resumed=false);
 | 
			
		||||
    void loadSessionState();
 | 
			
		||||
    void saveSessionState();
 | 
			
		||||
    void downloadFromUrl(QString url);
 | 
			
		||||
    void downloadFromURLList(const QStringList& url_list);
 | 
			
		||||
    void deleteTorrent(QString hash, bool permanent = false);
 | 
			
		||||
    void startUpTorrents();
 | 
			
		||||
    /* Needed by Web UI */
 | 
			
		||||
    void pauseAllTorrents();
 | 
			
		||||
    void resumeAllTorrents();
 | 
			
		||||
    void pauseTorrent(QString hash);
 | 
			
		||||
    void resumeTorrent(QString hash);
 | 
			
		||||
    void resumeAllTorrents();
 | 
			
		||||
    /* End Web UI */
 | 
			
		||||
    void saveDHTEntry();
 | 
			
		||||
    void preAllocateAllFiles(bool b);
 | 
			
		||||
@@ -133,13 +129,15 @@ class bittorrent : public QObject {
 | 
			
		||||
    void enableIPFilter(QString filter);
 | 
			
		||||
    void disableIPFilter();
 | 
			
		||||
    void setQueueingEnabled(bool enable);
 | 
			
		||||
    void resumeUnfinishedTorrents();
 | 
			
		||||
    void saveTorrentPriority(QString hash, int prio);
 | 
			
		||||
    void saveTorrentSpeedLimits(QString hash);
 | 
			
		||||
    void loadTorrentSpeedLimits(QString hash);
 | 
			
		||||
    void handleDownloadFailure(QString url, QString reason);
 | 
			
		||||
    void loadWebSeeds(QString fileHash);
 | 
			
		||||
    void increaseDlTorrentPriority(QString hash);
 | 
			
		||||
    void decreaseDlTorrentPriority(QString hash);
 | 
			
		||||
    void downloadUrlAndSkipDialog(QString url, QString save_path=QString::null);
 | 
			
		||||
    void downloadUrlAndSkipDialog(QString);
 | 
			
		||||
    // Session configuration - Setters
 | 
			
		||||
    void setListeningPortsRange(std::pair<unsigned short, unsigned short> ports);
 | 
			
		||||
    void setMaxConnections(int maxConnec);
 | 
			
		||||
@@ -166,12 +164,12 @@ class bittorrent : public QObject {
 | 
			
		||||
    void addConsoleMessage(QString msg, QColor color=QApplication::palette().color(QPalette::WindowText));
 | 
			
		||||
    void addPeerBanMessage(QString msg, bool from_ipfilter);
 | 
			
		||||
    void processDownloadedFile(QString, QString);
 | 
			
		||||
    void saveTrackerFile(QString hash);
 | 
			
		||||
 | 
			
		||||
  protected slots:
 | 
			
		||||
    void scanDirectory(QString);
 | 
			
		||||
    void readAlerts();
 | 
			
		||||
    void loadTrackerFile(QString hash);
 | 
			
		||||
    bool loadTrackerFile(QString hash);
 | 
			
		||||
    void saveTrackerFile(QString hash);
 | 
			
		||||
    void deleteBigRatios();
 | 
			
		||||
 | 
			
		||||
  signals:
 | 
			
		||||
@@ -187,8 +185,6 @@ class bittorrent : public QObject {
 | 
			
		||||
    void updateFileSize(QString hash);
 | 
			
		||||
    void downloadFromUrlFailure(QString url, QString reason);
 | 
			
		||||
    void torrentFinishedChecking(QTorrentHandle& h);
 | 
			
		||||
    void metadataReceived(QTorrentHandle &h);
 | 
			
		||||
    void torrentPaused(QTorrentHandle &h);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										150
									
								
								src/download.ui
									
									
									
									
									
								
							
							
						
						@@ -36,7 +36,6 @@
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QRegExp>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
#include <QClipboard>
 | 
			
		||||
#include "ui_downloadFromURL.h"
 | 
			
		||||
 | 
			
		||||
class downloadFromURL : public QDialog, private Ui::downloadFromURL{
 | 
			
		||||
@@ -48,11 +47,6 @@ class downloadFromURL : public QDialog, private Ui::downloadFromURL{
 | 
			
		||||
      setAttribute(Qt::WA_DeleteOnClose);
 | 
			
		||||
      icon_lbl->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/url.png")));
 | 
			
		||||
      show();
 | 
			
		||||
      // Paste clipboard if there is an URL in it
 | 
			
		||||
      QString clip_txt = qApp->clipboard()->text();
 | 
			
		||||
      if(clip_txt.startsWith("http://", Qt::CaseInsensitive) || clip_txt.startsWith("https://", Qt::CaseInsensitive) || clip_txt.startsWith("ftp://", Qt::CaseInsensitive) || clip_txt.startsWith("magnet:", Qt::CaseInsensitive)) {
 | 
			
		||||
        textUrls->setText(clip_txt);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ~downloadFromURL(){}
 | 
			
		||||
 
 | 
			
		||||
@@ -103,7 +103,6 @@ class DownloadingTorrents : public QWidget, public Ui::downloading{
 | 
			
		||||
    void sortProgressColumn(QTorrentHandle& h);
 | 
			
		||||
    void loadLastSortedColumn();
 | 
			
		||||
    void addTorrent(QString hash);
 | 
			
		||||
    void updateMetadata(QTorrentHandle &h);
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,7 @@ engineSelectDlg::engineSelectDlg(QWidget *parent) : QDialog(parent) {
 | 
			
		||||
  pluginsTree->hideColumn(ENGINE_ID);
 | 
			
		||||
  actionEnable->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/button_ok.png")));
 | 
			
		||||
  actionDisable->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/button_cancel.png")));
 | 
			
		||||
  actionUninstall->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/list-remove.png")));
 | 
			
		||||
  actionUninstall->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/remove.png")));
 | 
			
		||||
  connect(actionEnable, SIGNAL(triggered()), this, SLOT(enableSelection()));
 | 
			
		||||
  connect(actionDisable, SIGNAL(triggered()), this, SLOT(disableSelection()));
 | 
			
		||||
  connect(pluginsTree, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayContextMenu(const QPoint&)));
 | 
			
		||||
 
 | 
			
		||||