- Branched trunk in order to work on a major GUI remodeling. I will attempt to:

* Merge download and upload lists
  * Display torrent properties in the same tab (horizontal split)
This commit is contained in:
Christophe Dumez 2009-11-06 14:30:14 +00:00
parent edfd93496e
commit 7792b4f849
78 changed files with 7847 additions and 5368 deletions

View file

@ -2,10 +2,10 @@ Author:
* Christophe Dumez <chris@qbittorrent.org>
Contributors:
* Arnaud Demaizière <arnaud@qbittorrent.org>
* Ishan Arora <ishan@qbittorrent.org>
* Grigis Gaëtan <cipher16@gmail.com>
* Stefanos Antaris <santaris@csd.auth.gr>
* Ishan Arora <ishan@qbittorrent.org>
* Arnaud Demaizière <arnaud@qbittorrent.org>
* Grigis Gaëtan <cipher16@gmail.com>
Code from other projects:
* files src/ico.cpp src/ico.h

View file

@ -11,6 +11,9 @@
- FEATURE: Tracker connections are now also subject to IP filtering
- FEATURE: Include DHT traffic in the rate limiter
- FEATURE: Support for bitcomet padding files
- FEATURE: Option to skip file checking and start seeding immediately in torrent addition dialog (Stephanos Antaris)
- FEATURE: Dropped dependency on libcurl
- FEATURE: Dropped Qt 4.3 support (Qt >= 4.4 is required)
* Thu Sep 3 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.0
- FEATURE: Added Magnet URI support

14
INSTALL
View file

@ -1,12 +1,6 @@
qBittorrent - A BitTorrent client in C++ / Qt4
------------------------------------------
*** Necessary if qt3 is default on your system ***
export QTDIR=/usr/include/qt4
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
*** End ***
./configure
make && make install
qbittorrent
@ -14,8 +8,7 @@ qbittorrent
will install and execute qBittorrent hopefully without any problems.
Dependencies:
- Qt >= 4.3.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
Qt >= 4.4.0 is advised
- Qt >= 4.4.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
- libtorrent-rasterbar by Arvid Norberg (>= v0.15.0 REQUIRED)
-> http://www.qbittorrent.org/download.php (advised)
@ -24,13 +17,8 @@ Dependencies:
- libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization
- libcurl
- python >= 2.3 (needed by search engine)
- libmagick++ (advised, not required)
* Needed for favicons support (RSS / Search plugins)
- libzzip (advised, not required)
* Needed for zip support (Search plugins)

90
configure vendored
View file

@ -19,8 +19,6 @@ Main options:
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
@ -145,16 +143,6 @@ while [ $# -gt 0 ]; do
shift
;;
--with-libcurl-inc=*)
QC_WITH_LIBCURL_INC=$optarg
shift
;;
--with-libcurl-lib=*)
QC_WITH_LIBCURL_LIB=$optarg
shift
;;
--disable-libzzip)
QC_DISABLE_libzzip="Y"
shift
@ -192,8 +180,6 @@ echo BINDIR=$BINDIR
echo DATADIR=$DATADIR
echo EX_QTDIR=$EX_QTDIR
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
echo QC_DISABLE_libzzip=$QC_DISABLE_libzzip
echo QC_WITH_LIBZZIP_INC=$QC_WITH_LIBZZIP_INC
echo QC_WITH_LIBZZIP_LIB=$QC_WITH_LIBZZIP_LIB
@ -308,14 +294,11 @@ class qc_qt4 : public ConfObj
{
public:
qc_qt4(Conf *c) : ConfObj(c) {}
QString name() const { return "Qt >= 4.3"; }
QString shortname() const { return "Qt 4.3"; }
QString name() const { return "Qt >= 4.4"; }
QString shortname() const { return "Qt 4.4"; }
bool exec()
{
if(QT_VERSION >= 0x040400) {
conf->addDefine("QT_4_4");
}
return(QT_VERSION >= 0x040300);
return(QT_VERSION >= 0x040400);
}
};
@ -403,68 +386,6 @@ public:
return true;
}
};
#line 1 "libcurl.qcm"
/*
-----BEGIN QCMOD-----
name: libcommoncpp2
arg: with-libcurl-inc=[path], Path to libcurl include files
arg: with-libcurl-lib=[path], Path to libcurl library files
-----END QCMOD-----
*/
class qc_libcurl : public ConfObj
{
public:
qc_libcurl(Conf *c) : ConfObj(c) {}
QString name() const { return "libcurl"; }
QString shortname() const { return "libcurl"; }
bool exec(){
QString s;
s = conf->getenv("QC_WITH_LIBCURL_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "curl/curl.h")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/include";
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "curl/curl.h")){
found = true;
break;
}
}
if(!found) {
return false;
}
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBCURL_LIB");
if(!s.isEmpty()) {
if(!QFile::exists(s+QString("/libcurl.so")))
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(QFile::exists(s+QString("libcurl.so"))){
found = true;
break;
}
}
if(!found) return false;
conf->addLib(QString("-L") + s);
}
return true;
}
};
#line 1 "libzzip.qcm"
/*
-----BEGIN QCMOD-----
@ -549,9 +470,6 @@ cat >$1/modules_new.cpp <<EOT
o = new qc_libboost(conf);
o->required = true;
o->disabled = false;
o = new qc_libcurl(conf);
o->required = true;
o->disabled = false;
o = new qc_libzzip(conf);
o->required = false;
o->disabled = false;
@ -1501,8 +1419,6 @@ export BINDIR
export DATADIR
export EX_QTDIR
export QC_WITH_LIBBOOST_INC
export QC_WITH_LIBCURL_INC
export QC_WITH_LIBCURL_LIB
export QC_DISABLE_libzzip
export QC_WITH_LIBZZIP_INC
export QC_WITH_LIBZZIP_LIB

View file

@ -8,7 +8,7 @@ qBittorrent \- a Bittorrent client written in C++ / Qt4
.SH "SYNOPSIS"
\fBqbittorrent\fR [--no-splash] [TORRENT_FILE | URL]...
\fBqbittorrent\fR [\-\-no-splash] [TORRENT_FILE | URL]...
\fBqbittorrent\fR \-\-help

View file

@ -12,8 +12,5 @@
<dep type='libboost'>
<required/>
</dep>
<dep type='libcurl'>
<required/>
</dep>
<dep type='libzzip'/>
</qconf>

View file

@ -1,61 +0,0 @@
/*
-----BEGIN QCMOD-----
name: libcommoncpp2
arg: with-libcurl-inc=[path], Path to libcurl include files
arg: with-libcurl-lib=[path], Path to libcurl library files
-----END QCMOD-----
*/
class qc_libcurl : public ConfObj
{
public:
qc_libcurl(Conf *c) : ConfObj(c) {}
QString name() const { return "libcurl"; }
QString shortname() const { return "libcurl"; }
bool exec(){
QString s;
s = conf->getenv("QC_WITH_LIBCURL_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "curl/curl.h")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/include";
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "curl/curl.h")){
found = true;
break;
}
}
if(!found) {
return false;
}
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBCURL_LIB");
if(!s.isEmpty()) {
if(!QFile::exists(s+QString("/libcurl.so")))
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(QFile::exists(s+QString("libcurl.so"))){
found = true;
break;
}
}
if(!found) return false;
conf->addLib(QString("-L") + s);
}
return true;
}
};

View file

@ -7,14 +7,11 @@ class qc_qt4 : public ConfObj
{
public:
qc_qt4(Conf *c) : ConfObj(c) {}
QString name() const { return "Qt >= 4.3"; }
QString shortname() const { return "Qt 4.3"; }
QString name() const { return "Qt >= 4.4"; }
QString shortname() const { return "Qt 4.4"; }
bool exec()
{
if(QT_VERSION >= 0x040400) {
conf->addDefine("QT_4_4");
}
return(QT_VERSION >= 0x040300);
return(QT_VERSION >= 0x040400);
}
};

File diff suppressed because it is too large Load diff

View file

@ -44,13 +44,8 @@ class DownloadingTorrents;
class FinishedTorrents;
class downloadFromURL;
class SearchEngine;
#ifdef QT_4_4
class QLocalServer;
class QLocalSocket;
#else
class QTcpServer;
class QTcpSocket;
#endif
class QLocalServer;
class QLocalSocket;
class QCloseEvent;
class RSSImp;
class QShortcut;
@ -109,13 +104,8 @@ class GUI : public QMainWindow, private Ui::MainWindow{
// Web UI
QPointer<HttpServer> httpServer;
// Misc
#ifdef QT_4_4
QLocalServer *localServer;
QLocalSocket *clientConnection;
#else
QTcpServer *localServer;
QTcpSocket *clientConnection;
#endif
protected slots:
// GUI related slots

View file

@ -52,10 +52,10 @@ class about : public QDialog, private Ui::AboutDlg{
lb_name->setText(QString::fromUtf8("<b><h1>")+tr("qBittorrent")+QString::fromUtf8(" "VERSION"</h1></b>"));
// Thanks
te_thanks->append(QString::fromUtf8("<a name='top'></a>"));
te_thanks->append(QString::fromUtf8("<ul><li>I would like to thank sourceforge.net for hosting qBittorrent project.</li>"));
te_thanks->append(QString::fromUtf8("<li>I am happy that Ishan Arora and Arnaud Demaizière are contributing to the project as developers. Their help is greatly appreciated</li>"));
te_thanks->append(QString::fromUtf8("<li>I also want to thank Jeffery Fernandez (jeffery@qbittorrent.org), project consultant, RPM packager, for his help and support.</li>"));
te_thanks->append(QString::fromUtf8("<li>I am grateful to Peter Koeleman (peter@qbittorrent.org) who is helping port qBittorrent to Windows.</li>"));
te_thanks->append(QString::fromUtf8("<ul><li>I would first like to thank sourceforge.net for hosting qBittorrent project and for their support.</li>"));
te_thanks->append(QString::fromUtf8("<li>I am pleased that people from all over the world are contributing to qBittorrent: Ishan Arora (India), Arnaud Demaizière (France) and Stephanos Antaris (Greece). Their help is greatly appreciated</li>"));
te_thanks->append(QString::fromUtf8("<li>I also want to thank Jeffery Fernandez (jeffery@qbittorrent.org), project consultant, for his help and support since the beginning of this project.</li>"));
te_thanks->append(QString::fromUtf8("<li>I am grateful to Peter Koeleman (peter@qbittorrent.org) for working on qBittorrent port to Windows.</li>"));
te_thanks->append(QString::fromUtf8("<li>Thanks a lot to our graphist Mateusz Toboła (tobejodok@qbittorrent.org) for his great work.</li></ul><br><br>"));
te_thanks->scrollToAnchor(QString::fromUtf8("top"));
// Translation

View file

@ -207,6 +207,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="addInSeed">
<property name="text">
<string>Skip file checking and start seeding immediately</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="addInPause">
<property name="text">

View file

@ -64,8 +64,8 @@ bittorrent::bittorrent() : DHTEnabled(false), preAllocateAll(false), addInPause(
// Check if we should spoof utorrent
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
if(settings.value(QString::fromUtf8("Preferences/Bittorrent/AzureusSpoof"), false).toBool()) {
s = new session(fingerprint("UT", 1, 8, 4, 0), 0);
qDebug("Peer ID: %s", fingerprint("UT", 1, 8, 4, 0).to_string().c_str());
s = new session(fingerprint("UT", 1, 8, 5, 0), 0);
qDebug("Peer ID: %s", fingerprint("UT", 1, 8, 5, 0).to_string().c_str());
} else {
s = new session(fingerprint("qB", VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, 0), 0);
qDebug("Peer ID: %s", fingerprint("qB", VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, 0).to_string().c_str());
@ -581,6 +581,14 @@ QTorrentHandle bittorrent::addTorrent(QString path, bool fromScanDir, QString fr
} else {
p.save_path = defaultTempPath.toLocal8Bit().data();
}
// Skip checking and directly start seeding (new in libtorrent v0.15)
if(TorrentTempData::isSeedingMode(hash)){
p.seed_mode=true;
} else {
p.seed_mode=false;
}
// TODO: Remove in v1.6.0: For backward compatibility only
if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".finished")) {
p.save_path = savePath.toLocal8Bit().data();
@ -858,7 +866,8 @@ void bittorrent::loadFilesPriorities(QTorrentHandle &h) {
qDebug("Setting file piority to %d", priority);
v.push_back(priority);
}
h.prioritize_files(v);
if(v.size() == (unsigned int)h.num_files())
h.prioritize_files(v);
}
float bittorrent::getRealRatio(QString hash) const{
@ -983,6 +992,12 @@ void bittorrent::scanDirectory(QString scan_dir) {
FSMutex->lock();
qDebug("Scanning directory: %s", scan_dir.toLocal8Bit().data());
QDir dir(scan_dir);
QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
// Check that scan dir is not BT_backup (silly but who knows...)
if(dir == torrentBackup) {
std::cerr << "Scan directory cannot be qBittorrent backup folder!" << std::endl;
return;
}
QStringList filters;
filters << "*.torrent";
QStringList files = dir.entryList(filters, QDir::Files, QDir::Unsorted);
@ -1522,14 +1537,31 @@ void bittorrent::applyEncryptionSettings(pe_settings se) {
// backup directory
void bittorrent::startUpTorrents() {
qDebug("Resuming unfinished torrents");
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
QStringList fileNames;
QStringList known_torrents = TorrentPersistentData::knownTorrents();
if(known_torrents.empty()) {
if(known_torrents.empty() && !settings.value("v1_4_x_torrent_imported", false).toBool()) {
qDebug("No known torrent, importing old torrents");
importOldTorrents();
return;
}
// Safety measure because some people reported torrent loss since
// we switch the v1.5 way of resuming torrents on startup
QStringList filters;
filters << "*.torrent";
QStringList torrents_on_hd = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted);
foreach(QString hash, torrents_on_hd) {
hash.chop(8); // remove trailing .torrent
if(!known_torrents.contains(hash)) {
std::cerr << "ERROR Detected!!! Adding back torrent " << hash.toLocal8Bit().data() << " which got lost for some reason." << std::endl;
addTorrent(torrentBackup.path()+QDir::separator()+hash+".torrent", false, QString(), true);
}
}
// End of safety measure
qDebug("Starting up torrents");
if(isQueueingEnabled()) {
QList<QPair<int, QString> > hashes;
@ -1690,79 +1722,78 @@ void bittorrent::applyFormerAttributeFiles(QTorrentHandle h) {
// TODO: Remove in qBittorrent v1.6.0
void bittorrent::importOldTorrents() {
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
if(!settings.value("v1_4_x_torrent_imported", false).toBool()) {
// Import old torrent
QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
QStringList fileNames;
QStringList filters;
filters << "*.torrent";
fileNames = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted);
if(isQueueingEnabled()) {
QList<QPair<int, QString> > filePaths;
foreach(const QString &fileName, fileNames) {
QString filePath = torrentBackup.path()+QDir::separator()+fileName;
int prio = 99999;
// Get priority
QString prioPath = filePath;
prioPath.replace(".torrent", ".prio");
if(QFile::exists(prioPath)) {
QFile prio_file(prioPath);
if(prio_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
bool ok = false;
prio = prio_file.readAll().toInt(&ok);
if(!ok)
prio = 99999;
prio_file.close();
}
}
misc::insertSort2<QString>(filePaths, qMakePair(prio, filePath));
}
// Resume downloads
QPair<int, QString> fileName;
foreach(fileName, filePaths) {
importOldTempData(fileName.second);
QTorrentHandle h = addTorrent(fileName.second, false, QString(), true);
// Sequential download
if(TorrentTempData::hasTempData(h.hash())) {
qDebug("addTorrent: Setting download as sequential (from tmp data)");
h.set_sequential_download(TorrentTempData::isSequential(h.hash()));
}
applyFormerAttributeFiles(h);
QString savePath = TorrentTempData::getSavePath(h.hash());
// Save persistent data for new torrent
TorrentPersistentData::saveTorrentPersistentData(h);
// Save save_path
if(!defaultTempPath.isEmpty() && !savePath.isNull()) {
qDebug("addTorrent: Saving save_path in persistent data: %s", savePath.toLocal8Bit().data());
TorrentPersistentData::saveSavePath(h.hash(), savePath);
Q_ASSERT(!settings.value("v1_4_x_torrent_imported", false).toBool());
// Import old torrent
QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
QStringList fileNames;
QStringList filters;
filters << "*.torrent";
fileNames = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted);
if(isQueueingEnabled()) {
QList<QPair<int, QString> > filePaths;
foreach(const QString &fileName, fileNames) {
QString filePath = torrentBackup.path()+QDir::separator()+fileName;
int prio = 99999;
// Get priority
QString prioPath = filePath;
prioPath.replace(".torrent", ".prio");
if(QFile::exists(prioPath)) {
QFile prio_file(prioPath);
if(prio_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
bool ok = false;
prio = prio_file.readAll().toInt(&ok);
if(!ok)
prio = 99999;
prio_file.close();
}
}
} else {
QStringList filePaths;
foreach(const QString &fileName, fileNames) {
filePaths.append(torrentBackup.path()+QDir::separator()+fileName);
misc::insertSort2<QString>(filePaths, qMakePair(prio, filePath));
}
// Resume downloads
QPair<int, QString> fileName;
foreach(fileName, filePaths) {
importOldTempData(fileName.second);
QTorrentHandle h = addTorrent(fileName.second, false, QString(), true);
// Sequential download
if(TorrentTempData::hasTempData(h.hash())) {
qDebug("addTorrent: Setting download as sequential (from tmp data)");
h.set_sequential_download(TorrentTempData::isSequential(h.hash()));
}
// Resume downloads
foreach(const QString &fileName, filePaths) {
importOldTempData(fileName);
QTorrentHandle h = addTorrent(fileName, false, QString(), true);
// Sequential download
if(TorrentTempData::hasTempData(h.hash())) {
qDebug("addTorrent: Setting download as sequential (from tmp data)");
h.set_sequential_download(TorrentTempData::isSequential(h.hash()));
}
applyFormerAttributeFiles(h);
QString savePath = TorrentTempData::getSavePath(h.hash());
// Save persistent data for new torrent
TorrentPersistentData::saveTorrentPersistentData(h);
// Save save_path
if(!defaultTempPath.isEmpty() && !savePath.isNull()) {
qDebug("addTorrent: Saving save_path in persistent data: %s", savePath.toLocal8Bit().data());
TorrentPersistentData::saveSavePath(h.hash(), savePath);
}
applyFormerAttributeFiles(h);
QString savePath = TorrentTempData::getSavePath(h.hash());
// Save persistent data for new torrent
TorrentPersistentData::saveTorrentPersistentData(h);
// Save save_path
if(!defaultTempPath.isEmpty() && !savePath.isNull()) {
qDebug("addTorrent: Saving save_path in persistent data: %s", savePath.toLocal8Bit().data());
TorrentPersistentData::saveSavePath(h.hash(), savePath);
}
}
} else {
QStringList filePaths;
foreach(const QString &fileName, fileNames) {
filePaths.append(torrentBackup.path()+QDir::separator()+fileName);
}
// Resume downloads
foreach(const QString &fileName, filePaths) {
importOldTempData(fileName);
QTorrentHandle h = addTorrent(fileName, false, QString(), true);
// Sequential download
if(TorrentTempData::hasTempData(h.hash())) {
qDebug("addTorrent: Setting download as sequential (from tmp data)");
h.set_sequential_download(TorrentTempData::isSequential(h.hash()));
}
applyFormerAttributeFiles(h);
QString savePath = TorrentTempData::getSavePath(h.hash());
// Save persistent data for new torrent
TorrentPersistentData::saveTorrentPersistentData(h);
// Save save_path
if(!defaultTempPath.isEmpty() && !savePath.isNull()) {
qDebug("addTorrent: Saving save_path in persistent data: %s", savePath.toLocal8Bit().data());
TorrentPersistentData::saveSavePath(h.hash(), savePath);
}
}
settings.setValue("v1_4_x_torrent_imported", true);
std::cout << "Successfully imported torrents from v1.4.x (or previous) instance" << std::endl;
}
settings.setValue("v1_4_x_torrent_imported", true);
std::cout << "Successfully imported torrents from v1.4.x (or previous) instance" << std::endl;
}

View file

@ -29,215 +29,140 @@
*/
#include "downloadThread.h"
#include <iostream>
#include <QTemporaryFile>
#include <QSettings>
#include <stdio.h>
#define MAX_THREADS 3
// http://curl.rtin.bz/libcurl/c/libcurl-errors.html
QString subDownloadThread::errorCodeToString(CURLcode status) {
switch(status){
case CURLE_FTP_CANT_GET_HOST:
case CURLE_COULDNT_RESOLVE_HOST:
return tr("Host is unreachable");
case CURLE_READ_ERROR:
case CURLE_FILE_COULDNT_READ_FILE:
return tr("File was not found (404)");
case CURLE_FTP_ACCESS_DENIED:
case CURLE_LOGIN_DENIED:
case CURLE_FTP_USER_PASSWORD_INCORRECT:
return tr("Connection was denied");
case CURLE_URL_MALFORMAT:
return tr("Url is invalid");
case CURLE_COULDNT_RESOLVE_PROXY:
return tr("Could not resolve proxy");
//case 5:
// return tr("Connection forbidden (403)");
//case 6:
// return tr("Connection was not authorized (401)");
//case 7:
// return tr("Content has moved (301)");
case CURLE_COULDNT_CONNECT:
return tr("Connection failure");
case CURLE_OPERATION_TIMEOUTED:
return tr("Connection was timed out");
case CURLE_INTERFACE_FAILED:
return tr("Incorrect network interface");
default:
return tr("Unknown error");
}
}
subDownloadThread::subDownloadThread(QObject *parent, QString url) : QThread(parent), url(url), abort(false){}
subDownloadThread::~subDownloadThread(){
abort = true;
wait();
}
void subDownloadThread::run(){
// Get a unique filename
QString filePath;
QTemporaryFile tmpfile;
tmpfile.setAutoRemove(false);
if (tmpfile.open()) {
filePath = tmpfile.fileName();
qDebug("Temporary filename is: %s", filePath.toLocal8Bit().data());
} else {
emit downloadFailureST(this, url, tr("I/O Error"));
return;
}
tmpfile.close();
// Now temporary file is created but closed so that
// curl can use it
FILE *f = fopen(filePath.toLocal8Bit().data(), "wb");
if(!f) {
std::cerr << "couldn't open destination file" << "\n";
return;
}
CURL *curl;
CURLcode res = (CURLcode)-1;
curl = curl_easy_init();
if(curl) {
std::string c_url = url.toLocal8Bit().data();
curl_easy_setopt(curl, CURLOPT_URL, c_url.c_str());
// SSL support
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
// PROXY SUPPORT
QSettings settings("qBittorrent", "qBittorrent");
int intValue = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxyType"), 0).toInt();
if(intValue > 0) {
// Proxy enabled
QString IP = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/IP"), "0.0.0.0").toString();
QString port = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Port"), 8080).toString();
qDebug("Using proxy: %s", (IP+QString(":")+port).toLocal8Bit().data());
curl_easy_setopt(curl, CURLOPT_PROXYPORT, (IP+QString(":")+port).toLocal8Bit().data());
// Default proxy type is HTTP, we must change if it is SOCKS5
if(intValue%2==0) {
qDebug("Proxy is SOCKS5, not HTTP");
curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
}
// Authentication?
if(intValue > 2) {
qDebug("Proxy requires authentication, authenticating");
QString username = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Username"), QString()).toString();
QString password = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Password"), QString()).toString();
curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, (username+QString(":")+password).toLocal8Bit().data());
}
}
// We have to define CURLOPT_WRITEFUNCTION or it will crash on windows
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, f);
// Verbose
//curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
// No progress info (we don't use it)
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1);
// Redirections
curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_MAXREDIRS, -1);
qDebug("Downloading %s", url.toLocal8Bit().data());
if(!abort)
res = curl_easy_perform(curl);
qDebug("done downloading %s", url.toLocal8Bit().data());
/* always cleanup */
curl_easy_cleanup(curl);
fclose(f);
if(abort)
return;
if(res) {
emit downloadFailureST(this, url, errorCodeToString(res));
} else {
emit downloadFinishedST(this, url, filePath);
}
qDebug("%s Raised the signal", url.toLocal8Bit().data());
} else {
std::cerr << "Could not initialize CURL" << "\n";
}
}
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkProxy>
/** Download Thread **/
downloadThread::downloadThread(QObject* parent) : QThread(parent), abort(false){}
downloadThread::downloadThread(QObject* parent) : QObject(parent) {
networkManager = new QNetworkAccessManager(this);
connect(networkManager, SIGNAL(finished (QNetworkReply*)), this, SLOT(processDlFinished(QNetworkReply*)));
}
downloadThread::~downloadThread(){
mutex.lock();
abort = true;
condition.wakeOne();
mutex.unlock();
//qDebug("downloadThread deleting subthreads...");
qDeleteAll(subThreads);
//qDebug("downloadThread deleted subthreads");
wait();
delete networkManager;
}
void downloadThread::processDlFinished(QNetworkReply* reply) {
QString url = reply->url().toString();
if(reply->error() != QNetworkReply::NoError) {
// Failure
emit downloadFailure(url, errorCodeToString(reply->error()));
} else {
// Success
QString filePath;
QTemporaryFile tmpfile;
tmpfile.setAutoRemove(false);
if (tmpfile.open()) {
filePath = tmpfile.fileName();
qDebug("Temporary filename is: %s", filePath.toLocal8Bit().data());
if(reply->open(QIODevice::ReadOnly)) {
tmpfile.write(reply->readAll());
reply->close();
tmpfile.close();
// Send finished signal
emit downloadFinished(url, filePath);
} else {
// Error when reading the request
tmpfile.close();
emit downloadFailure(url, tr("I/O Error"));
}
} else {
emit downloadFailure(url, tr("I/O Error"));
}
}
// Clean up
reply->deleteLater();
}
void downloadThread::downloadUrl(QString url){
QMutexLocker locker(&mutex);
urls_queue.enqueue(url);
if(!isRunning()){
start();
}else{
condition.wakeOne();
}
// Update proxy settings
applyProxySettings();
// Process download request
networkManager->get(QNetworkRequest(QUrl(url)));
}
void downloadThread::run(){
forever{
if(abort) {
qDebug("DownloadThread aborting...");
return;
void downloadThread::applyProxySettings() {
QNetworkProxy proxy;
QSettings settings("qBittorrent", "qBittorrent");
int intValue = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxyType"), 0).toInt();
if(intValue > 0) {
// Proxy enabled
QString IP = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/IP"), "0.0.0.0").toString();
proxy.setHostName(IP);
QString port = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Port"), 8080).toString();
qDebug("Using proxy: %s", (IP+QString(":")+port).toLocal8Bit().data());
proxy.setPort(port.toUShort());
// Default proxy type is HTTP, we must change if it is SOCKS5
if(intValue%2==0) {
qDebug("Proxy is SOCKS5, not HTTP");
proxy.setType(QNetworkProxy::Socks5Proxy);
} else {
proxy.setType(QNetworkProxy::HttpProxy);
}
mutex.lock();
if(!urls_queue.empty() && subThreads.size() < MAX_THREADS){
QString url = urls_queue.dequeue();
mutex.unlock();
//qDebug("DownloadThread downloading %s...", url.toLocal8Bit().data());
subDownloadThread *st = new subDownloadThread(0, url);
subThreads << st;
connect(st, SIGNAL(downloadFinishedST(subDownloadThread*, QString, QString)), this, SLOT(propagateDownloadedFile(subDownloadThread*, QString, QString)));
connect(st, SIGNAL(downloadFailureST(subDownloadThread*, QString, QString)), this, SLOT(propagateDownloadFailure(subDownloadThread*, QString, QString)));
st->start();
}else{
//qDebug("DownloadThread sleeping...");
condition.wait(&mutex);
//qDebug("DownloadThread woke up");
mutex.unlock();
// Authentication?
if(intValue > 2) {
qDebug("Proxy requires authentication, authenticating");
QString username = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Username"), QString()).toString();
proxy.setUser(username);
QString password = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Password"), QString()).toString();
proxy.setPassword(password);
}
} else {
proxy.setType(QNetworkProxy::NoProxy);
}
networkManager->setProxy(proxy);
}
void downloadThread::propagateDownloadedFile(subDownloadThread* st, QString url, QString path){
qDebug("Downloading %s was successful", url.toLocal8Bit().data());
mutex.lock();
int index = subThreads.indexOf(st);
Q_ASSERT(index != -1);
subThreads.removeAt(index);
mutex.unlock();
qDebug("Deleting subthread");
delete st;
emit downloadFinished(url, path);
mutex.lock();
if(!urls_queue.empty()) {
condition.wakeOne();
QString downloadThread::errorCodeToString(QNetworkReply::NetworkError status) {
switch(status){
case QNetworkReply::HostNotFoundError:
return tr("The remote host name was not found (invalid hostname)");
case QNetworkReply::OperationCanceledError:
return tr("The operation was canceled");
case QNetworkReply::RemoteHostClosedError:
return tr("The remote server closed the connection prematurely, before the entire reply was received and processed");
case QNetworkReply::TimeoutError:
return tr("The connection to the remote server timed out");
case QNetworkReply::SslHandshakeFailedError:
return tr("SSL/TLS handshake failed");
case QNetworkReply::ConnectionRefusedError:
return tr("The remote server refused the connection");
case QNetworkReply::ProxyConnectionRefusedError:
return tr("The connection to the proxy server was refused");
case QNetworkReply::ProxyConnectionClosedError:
return tr("The proxy server closed the connection prematurely");
case QNetworkReply::ProxyNotFoundError:
return tr("The proxy host name was not found");
case QNetworkReply::ProxyTimeoutError:
return tr("The connection to the proxy timed out or the proxy did not reply in time to the request sent");
case QNetworkReply::ProxyAuthenticationRequiredError:
return tr("The proxy requires authentication in order to honour the request but did not accept any credentials offered");
case QNetworkReply::ContentAccessDenied:
return tr("The access to the remote content was denied (401)");
case QNetworkReply::ContentOperationNotPermittedError:
return tr("The operation requested on the remote content is not permitted");
case QNetworkReply::ContentNotFoundError:
return tr("The remote content was not found at the server (404)");
case QNetworkReply::AuthenticationRequiredError:
return tr("The remote server requires authentication to serve the content but the credentials provided were not accepted");
case QNetworkReply::ProtocolUnknownError:
return tr("The Network Access API cannot honor the request because the protocol is not known");
case QNetworkReply::ProtocolInvalidOperationError:
return tr("The requested operation is invalid for this protocol");
case QNetworkReply::UnknownNetworkError:
return tr("An unknown network-related error was detected");
case QNetworkReply::UnknownProxyError:
return tr("An unknown proxy-related error was detected");
case QNetworkReply::UnknownContentError:
return tr("An unknown error related to the remote content was detected");
case QNetworkReply::ProtocolFailure:
return tr("A breakdown in protocol was detected");
default:
return tr("Unknown error");
}
mutex.unlock();
qDebug("Out of propagateDownloadedFile");
}
void downloadThread::propagateDownloadFailure(subDownloadThread* st, QString url, QString reason){
qDebug("Downloading %s failed", url.toLocal8Bit().data());
mutex.lock();
int index = subThreads.indexOf(st);
Q_ASSERT(index != -1);
subThreads.removeAt(index);
mutex.unlock();
delete st;
emit downloadFailure(url, reason);
mutex.lock();
if(!urls_queue.empty()) {
condition.wakeOne();
}
mutex.unlock();
}

View file

@ -31,64 +31,34 @@
#ifndef DOWNLOADTHREAD_H
#define DOWNLOADTHREAD_H
#include <QThread>
#include <QFile>
#include <QTemporaryFile>
#include <QMutex>
#include <QMutexLocker>
#include <QWaitCondition>
#include <QStringList>
#include <curl/curl.h>
#include <QQueue>
#include <QNetworkReply>
#include <QObject>
class subDownloadThread : public QThread {
Q_OBJECT
private:
QString url;
bool abort;
class QNetworkAccessManager;
public:
subDownloadThread(QObject *parent, QString url);
~subDownloadThread();
QString errorCodeToString(CURLcode status);
signals:
// For subthreads
void downloadFinishedST(subDownloadThread* st, QString url, QString file_path);
void downloadFailureST(subDownloadThread* st, QString url, QString reason);
protected:
void run();
};
class downloadThread : public QThread {
class downloadThread : public QObject {
Q_OBJECT
private:
QQueue<QString> urls_queue;
QMutex mutex;
QWaitCondition condition;
bool abort;
QList<subDownloadThread*> subThreads;
private:
QNetworkAccessManager *networkManager;
signals:
void downloadFinished(QString url, QString file_path);
void downloadFailure(QString url, QString reason);
signals:
void downloadFinished(QString url, QString file_path);
void downloadFailure(QString url, QString reason);
public:
downloadThread(QObject* parent);
public:
downloadThread(QObject* parent);
~downloadThread();
void downloadUrl(QString url);
//void setProxy(QString IP, int port, QString username, QString password);
~downloadThread();
protected:
QString errorCodeToString(QNetworkReply::NetworkError status);
void applyProxySettings();
void downloadUrl(QString url);
void setProxy(QString IP, int port, QString username, QString password);
protected slots:
void processDlFinished(QNetworkReply* reply);
protected:
void run();
protected slots:
void propagateDownloadedFile(subDownloadThread* st, QString url, QString path);
void propagateDownloadFailure(subDownloadThread* st, QString url, QString reason);
};
#endif

View file

@ -41,6 +41,7 @@
#include <QFileDialog>
#include <QDropEvent>
#include <QInputDialog>
#include <QTemporaryFile>
#ifdef HAVE_ZZIP
#include <zzip/zzip.h>

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -3191,6 +3191,10 @@ Changelog:
<source>Expand all</source>
<translation>Alles uitklappen</translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -3603,6 +3607,101 @@ Changelog:
<translation>Typ op zijn minst één URL.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished">I/O Fout</translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished">Onbekende fout</translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -4703,23 +4802,23 @@ selecteer alstublieft een er van:</translation>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation>Host is onbereikbaar</translation>
<translation type="obsolete">Host is onbereikbaar</translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>Bestand niet gevonden (404)</translation>
<translation type="obsolete">Bestand niet gevonden (404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation>Verbinding niet toegestaan</translation>
<translation type="obsolete">Verbinding niet toegestaan</translation>
</message>
<message>
<source>Url is invalid</source>
<translation>Url is ongeldig</translation>
<translation type="obsolete">Url is ongeldig</translation>
</message>
<message>
<source>I/O Error</source>
<translation>I/O Fout</translation>
<translation type="obsolete">I/O Fout</translation>
</message>
<message>
<source>Connection forbidden (403)</source>
@ -4735,23 +4834,23 @@ selecteer alstublieft een er van:</translation>
</message>
<message>
<source>Connection failure</source>
<translation>Verbindingsfout</translation>
<translation type="obsolete">Verbindingsfout</translation>
</message>
<message>
<source>Connection was timed out</source>
<translation>Verbinding verlopen</translation>
<translation type="obsolete">Verbinding verlopen</translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation>Verkeerde netwerkinterface</translation>
<translation type="obsolete">Verkeerde netwerkinterface</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Onbekende fout</translation>
<translation type="obsolete">Onbekende fout</translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation>Kon proxy niet herleiden</translation>
<translation type="obsolete">Kon proxy niet herleiden</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -3286,6 +3286,10 @@ Zmiany:
<source>Expand all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -3710,6 +3714,101 @@ Zmiany:
<translation>Proszę podać przynajmniej jeden adres URL.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished">Błąd We/Wy</translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished">Nieznany błąd</translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -4816,23 +4915,23 @@ Jednak tamte wtyczki były wyłączone.</translation>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation>Host jest niedostępny</translation>
<translation type="obsolete">Host jest niedostępny</translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>Nie znaleziono pliku (404)</translation>
<translation type="obsolete">Nie znaleziono pliku (404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation>Połączenie odrzucone</translation>
<translation type="obsolete">Połączenie odrzucone</translation>
</message>
<message>
<source>Url is invalid</source>
<translation>Błędny URL</translation>
<translation type="obsolete">Błędny URL</translation>
</message>
<message>
<source>I/O Error</source>
<translation type="unfinished">Błąd We/Wy</translation>
<translation type="obsolete">Błąd We/Wy</translation>
</message>
<message>
<source>Connection forbidden (403)</source>
@ -4848,23 +4947,23 @@ Jednak tamte wtyczki były wyłączone.</translation>
</message>
<message>
<source>Connection failure</source>
<translation>Brak połączenia</translation>
<translation type="obsolete">Brak połączenia</translation>
</message>
<message>
<source>Connection was timed out</source>
<translation>Upłynął czas połączenia</translation>
<translation type="obsolete">Upłynął czas połączenia</translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation>Niepoprawny interfejs sieci</translation>
<translation type="obsolete">Niepoprawny interfejs sieci</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Nieznany błąd</translation>
<translation type="obsolete">Nieznany błąd</translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation>Nie można określić proxy</translation>
<translation type="obsolete">Nie można określić proxy</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -3198,6 +3198,10 @@ Log de mudanças:</translation>
<source>Download in sequential order (slower but good for previewing)</source>
<translation>Baixar em ordem de sequência (mais lento porém melhor para visualizar)</translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -3622,6 +3626,101 @@ Log de mudanças:</translation>
<translation>Por favor digite uma URL.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished">Erro desconhecido</translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -4683,19 +4782,19 @@ Portanto os plugins foram desabilitados.</translation>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation>O host é inalcançável</translation>
<translation type="obsolete">O host é inalcançável</translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>Arquivo não encontrado (404)</translation>
<translation type="obsolete">Arquivo não encontrado (404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation>Conexão foi negada</translation>
<translation type="obsolete">Conexão foi negada</translation>
</message>
<message>
<source>Url is invalid</source>
<translation>Url é inválida</translation>
<translation type="obsolete">Url é inválida</translation>
</message>
<message>
<source>Connection forbidden (403)</source>
@ -4711,27 +4810,27 @@ Portanto os plugins foram desabilitados.</translation>
</message>
<message>
<source>Connection failure</source>
<translation>Conexão falhou</translation>
<translation type="obsolete">Conexão falhou</translation>
</message>
<message>
<source>Connection was timed out</source>
<translation>Conexão esgotou o tempo</translation>
<translation type="obsolete">Conexão esgotou o tempo</translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation>Relação da rede incorreta</translation>
<translation type="obsolete">Relação da rede incorreta</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Erro desconhecido</translation>
<translation type="obsolete">Erro desconhecido</translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation>Não pude resolver proxy</translation>
<translation type="obsolete">Não pude resolver proxy</translation>
</message>
<message>
<source>I/O Error</source>
<translation>Erro de entrada e saída</translation>
<translation type="obsolete">Erro de entrada e saída</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -3198,6 +3198,10 @@ Log de mudanças:</translation>
<source>Download in sequential order (slower but good for previewing)</source>
<translation>Baixar em ordem de sequência (mais lento porém melhor para visualizar)</translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -3622,6 +3626,101 @@ Log de mudanças:</translation>
<translation>Por favor digite uma URL.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished">Erro desconhecido</translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -4683,19 +4782,19 @@ Portanto os plugins foram desabilitados.</translation>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation>O host é inalcançável</translation>
<translation type="obsolete">O host é inalcançável</translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>Arquivo não encontrado (404)</translation>
<translation type="obsolete">Arquivo não encontrado (404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation>Conexão foi negada</translation>
<translation type="obsolete">Conexão foi negada</translation>
</message>
<message>
<source>Url is invalid</source>
<translation>Url é inválida</translation>
<translation type="obsolete">Url é inválida</translation>
</message>
<message>
<source>Connection forbidden (403)</source>
@ -4711,27 +4810,27 @@ Portanto os plugins foram desabilitados.</translation>
</message>
<message>
<source>Connection failure</source>
<translation>Conexão falhou</translation>
<translation type="obsolete">Conexão falhou</translation>
</message>
<message>
<source>Connection was timed out</source>
<translation>Conexão esgotou o tempo</translation>
<translation type="obsolete">Conexão esgotou o tempo</translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation>Relação da rede incorreta</translation>
<translation type="obsolete">Relação da rede incorreta</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Erro desconhecido</translation>
<translation type="obsolete">Erro desconhecido</translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation>Não pude resolver proxy</translation>
<translation type="obsolete">Não pude resolver proxy</translation>
</message>
<message>
<source>I/O Error</source>
<translation>Erro de entrada e saída</translation>
<translation type="obsolete">Erro de entrada e saída</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -3027,6 +3027,10 @@ Changelog:
<source>Download in sequential order (slower but good for previewing)</source>
<translation>Descarcă în ordine secvențială (încet dar bine pentru preview)</translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -3451,6 +3455,101 @@ Changelog:
<translation> rugăm introduceţi cel puţin un URL.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished">Eroare de intrare/eşire</translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished">Eroare necunoscută</translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -4520,19 +4619,19 @@ Numai acele adăugate de dvs. pot fi dezinstalate.
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation>Calculatorul nu poate fi accesat</translation>
<translation type="obsolete">Calculatorul nu poate fi accesat</translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>Fişierul nu a fost găsit(404)</translation>
<translation type="obsolete">Fişierul nu a fost găsit(404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation>Conectarea a fost interzisă</translation>
<translation type="obsolete">Conectarea a fost interzisă</translation>
</message>
<message>
<source>Url is invalid</source>
<translation>Adresa URL nu este validă</translation>
<translation type="obsolete">Adresa URL nu este validă</translation>
</message>
<message>
<source>Connection forbidden (403)</source>
@ -4548,27 +4647,27 @@ Numai acele adăugate de dvs. pot fi dezinstalate.
</message>
<message>
<source>Connection failure</source>
<translation>Conectarea eşuată</translation>
<translation type="obsolete">Conectarea eşuată</translation>
</message>
<message>
<source>Connection was timed out</source>
<translation>Timpul de conectare expirat</translation>
<translation type="obsolete">Timpul de conectare expirat</translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation>Interfaţa de reţea incorectă</translation>
<translation type="obsolete">Interfaţa de reţea incorectă</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Eroare necunoscută</translation>
<translation type="obsolete">Eroare necunoscută</translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation>Proxy nu a putut fi rezolvata</translation>
<translation type="obsolete">Proxy nu a putut fi rezolvata</translation>
</message>
<message>
<source>I/O Error</source>
<translation>Eroare de intrare/eşire</translation>
<translation type="obsolete">Eroare de intrare/eşire</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -3216,6 +3216,10 @@ Changelog:
<source>Download in sequential order (slower but good for previewing)</source>
<translation>Загружать последовательно (медленнее но удобнее для предпросмотра)</translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -3632,6 +3636,101 @@ Changelog:
<translation>Пожалуста введите минимум один URL.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished">Ошибка ввода/вывода</translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished">Неизвестная ошибка</translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -4730,19 +4829,19 @@ However, those plugins were disabled.</source>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation>Хост недоступен</translation>
<translation type="obsolete">Хост недоступен</translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>Файл не был найден (404)</translation>
<translation type="obsolete">Файл не был найден (404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation>Подключение было отклонено</translation>
<translation type="obsolete">Подключение было отклонено</translation>
</message>
<message>
<source>Url is invalid</source>
<translation>URL некорректен</translation>
<translation type="obsolete">URL некорректен</translation>
</message>
<message>
<source>Connection forbidden (403)</source>
@ -4758,27 +4857,27 @@ However, those plugins were disabled.</source>
</message>
<message>
<source>Connection failure</source>
<translation>Соединение не установлено</translation>
<translation type="obsolete">Соединение не установлено</translation>
</message>
<message>
<source>Connection was timed out</source>
<translation>Тайм-аут соединения</translation>
<translation type="obsolete">Тайм-аут соединения</translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation>Неправильный интерфейс сети</translation>
<translation type="obsolete">Неправильный интерфейс сети</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Неизвестная ошибка</translation>
<translation type="obsolete">Неизвестная ошибка</translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation>Не удалось соединиться с Прокси</translation>
<translation type="obsolete">Не удалось соединиться с Прокси</translation>
</message>
<message>
<source>I/O Error</source>
<translation>Ошибка ввода/вывода</translation>
<translation type="obsolete">Ошибка ввода/вывода</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -3134,6 +3134,10 @@ Záznam zmien:</translation>
<source>Download in sequential order (slower but good for previewing)</source>
<translation>Sťahovať v postupnom poradí (pomalšie, ale lepšie pre náhľady)</translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -3562,6 +3566,101 @@ Záznam zmien:</translation>
<translation>Prosím, napíšte aspoň jedno URL.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished">V/V Chyba</translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished">Neznáma chyba</translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -4699,19 +4798,19 @@ Tieto moduly však boli vypnuté.</translation>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation>Hostiteľ je nedostupný</translation>
<translation type="obsolete">Hostiteľ je nedostupný</translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>Súbor nebol nájdený (404)</translation>
<translation type="obsolete">Súbor nebol nájdený (404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation>Spojenie bolo odmietnuté</translation>
<translation type="obsolete">Spojenie bolo odmietnuté</translation>
</message>
<message>
<source>Url is invalid</source>
<translation>URL je neplatné</translation>
<translation type="obsolete">URL je neplatné</translation>
</message>
<message>
<source>Connection forbidden (403)</source>
@ -4727,27 +4826,27 @@ Tieto moduly však boli vypnuté.</translation>
</message>
<message>
<source>Connection failure</source>
<translation>Chyba spojenia</translation>
<translation type="obsolete">Chyba spojenia</translation>
</message>
<message>
<source>Connection was timed out</source>
<translation>Časový limit spojenia vypršal</translation>
<translation type="obsolete">Časový limit spojenia vypršal</translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation>Nesprávne sieťové rozhranie</translation>
<translation type="obsolete">Nesprávne sieťové rozhranie</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Neznáma chyba</translation>
<translation type="obsolete">Neznáma chyba</translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation>Nebolo možné preložiť adresu proxy</translation>
<translation type="obsolete">Nebolo možné preložiť adresu proxy</translation>
</message>
<message>
<source>I/O Error</source>
<translation>V/V Chyba</translation>
<translation type="obsolete">V/V Chyba</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -1870,6 +1870,10 @@ p, li { white-space: pre-wrap; }
<source>Download in sequential order (slower but good for previewing)</source>
<translation>Hämta i sekventiell ordning (långsammare men bra för förhandsvisning)</translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -2210,6 +2214,101 @@ p, li { white-space: pre-wrap; }
<translation>Ange åtminstone en url.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished">In/Ut-fel</translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished">Okänt fel</translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -2952,43 +3051,43 @@ Dock har dessa insticksmoduler blivit inaktiverade.</translation>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation>Värden är inte nåbar</translation>
<translation type="obsolete">Värden är inte nåbar</translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>Filen kunde inte hittas (404)</translation>
<translation type="obsolete">Filen kunde inte hittas (404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation>Anslutningen nekades</translation>
<translation type="obsolete">Anslutningen nekades</translation>
</message>
<message>
<source>Url is invalid</source>
<translation>Url:en är ogiltig</translation>
<translation type="obsolete">Url:en är ogiltig</translation>
</message>
<message>
<source>Connection failure</source>
<translation>Anslutningsfel</translation>
<translation type="obsolete">Anslutningsfel</translation>
</message>
<message>
<source>Connection was timed out</source>
<translation>Tidsgränsen för anslutningen överstegs</translation>
<translation type="obsolete">Tidsgränsen för anslutningen överstegs</translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation>Felaktigt nätverksgränssnitt</translation>
<translation type="obsolete">Felaktigt nätverksgränssnitt</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Okänt fel</translation>
<translation type="obsolete">Okänt fel</translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation>Kunde inte slå upp proxy</translation>
<translation type="obsolete">Kunde inte slå upp proxy</translation>
</message>
<message>
<source>I/O Error</source>
<translation>In/Ut-fel</translation>
<translation type="obsolete">In/Ut-fel</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -3197,6 +3197,10 @@ Changelog:
<source>Download in sequential order (slower but good for previewing)</source>
<translation>Doğru düzende indir (yavaş ama önizleme için iyi)</translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -3609,6 +3613,101 @@ Changelog:
<translation>Lütfen en az bir adres girin.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished">Bilinmeyen hata</translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -4683,19 +4782,19 @@ Bununla birlikte, o eklentiler devre dışı.</translation>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation>Sunucuya erişilemiyor</translation>
<translation type="obsolete">Sunucuya erişilemiyor</translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>Dosya bulunamadı (404)</translation>
<translation type="obsolete">Dosya bulunamadı (404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation>Bağlantı reddedildi</translation>
<translation type="obsolete">Bağlantı reddedildi</translation>
</message>
<message>
<source>Url is invalid</source>
<translation>Adres geçersiz</translation>
<translation type="obsolete">Adres geçersiz</translation>
</message>
<message>
<source>Connection forbidden (403)</source>
@ -4711,27 +4810,27 @@ Bununla birlikte, o eklentiler devre dışı.</translation>
</message>
<message>
<source>Connection failure</source>
<translation>Bağlantı hatası</translation>
<translation type="obsolete">Bağlantı hatası</translation>
</message>
<message>
<source>Connection was timed out</source>
<translation>Bağlantı zaman ımına uğradı</translation>
<translation type="obsolete">Bağlantı zaman ımına uğradı</translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation>Geçersiz arayüzü</translation>
<translation type="obsolete">Geçersiz arayüzü</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Bilinmeyen hata</translation>
<translation type="obsolete">Bilinmeyen hata</translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation>Vekil çözümlenemedi</translation>
<translation type="obsolete">Vekil çözümlenemedi</translation>
</message>
<message>
<source>I/O Error</source>
<translation>Girdi/Çıktı Hatası</translation>
<translation type="obsolete">Girdi/Çıktı Hatası</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -3147,6 +3147,10 @@ Changelog:
<source>Download in sequential order (slower but good for previewing)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -3571,6 +3575,101 @@ Changelog:
<translation>Буд-ласка, введіть хоча б один URL.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished">Невідома помилка</translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -4647,19 +4746,19 @@ However, those plugins were disabled.</source>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation>Хост недоступний</translation>
<translation type="obsolete">Хост недоступний</translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>Файл не знайдено (404)</translation>
<translation type="obsolete">Файл не знайдено (404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation>Відмовлено у з&apos;єднанні</translation>
<translation type="obsolete">Відмовлено у з&apos;єднанні</translation>
</message>
<message>
<source>Url is invalid</source>
<translation>Неправильний URL</translation>
<translation type="obsolete">Неправильний URL</translation>
</message>
<message>
<source>Connection forbidden (403)</source>
@ -4675,27 +4774,19 @@ However, those plugins were disabled.</source>
</message>
<message>
<source>Connection failure</source>
<translation>Відмовлено у з&apos;єднанні</translation>
<translation type="obsolete">Відмовлено у з&apos;єднанні</translation>
</message>
<message>
<source>Connection was timed out</source>
<translation>Вичерпано час на з&apos;єднання</translation>
<translation type="obsolete">Вичерпано час на з&apos;єднання</translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation>Неправильний мережевий інтерфейс</translation>
<translation type="obsolete">Неправильний мережевий інтерфейс</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Невідома помилка</translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>I/O Error</source>
<translation type="unfinished"></translation>
<translation type="obsolete">Невідома помилка</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -3379,6 +3379,10 @@ previewing)</source>
<source>Download in sequential order (slower but good for previewing)</source>
<translation>()</translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -3804,6 +3808,101 @@ enabled)</source>
<translation>URL.</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished">/</translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -4973,19 +5072,19 @@ network.</source>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>File was not found (404)</source>
<translation>404</translation>
<translation type="obsolete">404</translation>
</message>
<message>
<source>Connection was denied</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Url is invalid</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Connection forbidden (403)</source>
@ -5001,27 +5100,27 @@ network.</source>
</message>
<message>
<source>Connection failure</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Connection was timed out</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Unknown error</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>I/O Error</source>
<translation>/</translation>
<translation type="obsolete">/</translation>
</message>
</context>
<context>

Binary file not shown.

View file

@ -1965,6 +1965,10 @@ p, li { white-space: pre-wrap; }
<source>Download in sequential order (slower but good for previewing)</source>
<translation> ()</translation>
</message>
<message>
<source>Skip file checking and start seeding immediately</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>authentication</name>
@ -2305,6 +2309,101 @@ p, li { white-space: pre-wrap; }
<translation> URL</translation>
</message>
</context>
<context>
<name>downloadThread</name>
<message>
<source>I/O Error</source>
<translation type="unfinished">I/O </translation>
</message>
<message>
<source>The remote host name was not found (invalid hostname)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation was canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server closed the connection prematurely, before the entire reply was received and processed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the remote server timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SSL/TLS handshake failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server refused the connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy server was refused</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy server closed the connection prematurely</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy host name was not found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The proxy requires authentication in order to honour the request but did not accept any credentials offered</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The access to the remote content was denied (401)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The operation requested on the remote content is not permitted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote content was not found at the server (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The remote server requires authentication to serve the content but the credentials provided were not accepted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Network Access API cannot honor the request because the protocol is not known</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The requested operation is invalid for this protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown network-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown proxy-related error was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An unknown error related to the remote content was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A breakdown in protocol was detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>downloading</name>
<message>
@ -3067,43 +3166,43 @@ However, those plugins were disabled.</source>
<name>subDownloadThread</name>
<message>
<source>Host is unreachable</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>File was not found (404)</source>
<translation> (404)</translation>
<translation type="obsolete"> (404)</translation>
</message>
<message>
<source>Connection was denied</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Url is invalid</source>
<translation>URL </translation>
<translation type="obsolete">URL </translation>
</message>
<message>
<source>Connection failure</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Connection was timed out</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Incorrect network interface</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Unknown error</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>Could not resolve proxy</source>
<translation></translation>
<translation type="obsolete"></translation>
</message>
<message>
<source>I/O Error</source>
<translation>I/O </translation>
<translation type="obsolete">I/O </translation>
</message>
</context>
<context>

View file

@ -34,14 +34,9 @@
#include <QFile>
#include <QSplashScreen>
#include <QSettings>
#ifdef QT_4_4
#include <QLocalSocket>
#include <unistd.h>
#include <sys/types.h>
#else
#include <QTcpSocket>
#include <QHostAddress>
#endif
#include <QPlastiqueStyle>
#include "qgnomelook.h"
#include <QMotifStyle>
@ -143,19 +138,9 @@ int main(int argc, char *argv[]){
std::cerr << "Couldn't set environment variable...\n";
}
//Check if there is another instance running
#ifdef QT_4_4
QLocalSocket localSocket;
QString uid = QString::number(getuid());
#else
QTcpSocket localSocket;
#endif
#ifdef QT_4_4
localSocket.connectToServer("qBittorrent-"+uid, QIODevice::WriteOnly);
#else
int serverPort = settings.value(QString::fromUtf8("uniqueInstancePort"), -1).toInt();
if(serverPort != -1) {
localSocket.connectToHost(QHostAddress::LocalHost, serverPort, QIODevice::WriteOnly);
#endif
if (localSocket.waitForConnected(1000)){
std::cout << "Another qBittorrent instance is already running...\n";
// Send parameters
@ -174,19 +159,12 @@ int main(int argc, char *argv[]){
}else{
std::cerr << "Writing to the socket timed out\n";
}
#ifdef QT_4_4
localSocket.disconnectFromServer();
#else
localSocket.disconnectFromHost();
#endif
std::cout << "disconnected\n";
}
localSocket.close();
return 0;
}
#ifndef QT_4_4
}
#endif
app = new QApplication(argc, argv);
useStyle(app, settings.value("Preferences/General/Style", 0).toInt());
app->setStyleSheet("QStatusBar::item { border-width: 0; }");

View file

@ -163,11 +163,6 @@ QString QTorrentHandle::save_path() const {
return misc::toQString(h.save_path().string());
}
fs::path QTorrentHandle::save_path_boost() const {
Q_ASSERT(h.is_valid());
return h.save_path();
}
bool QTorrentHandle::super_seeding() const {
Q_ASSERT(h.is_valid());
return h.super_seeding();
@ -239,9 +234,9 @@ size_type QTorrentHandle::filesize_at(unsigned int index) const {
return h.get_torrent_info().file_at(index).size;
}
std::vector<announce_entry> const& QTorrentHandle::trackers() const {
std::vector<announce_entry> QTorrentHandle::trackers() const {
Q_ASSERT(h.is_valid());
return h.get_torrent_info().trackers();
return h.trackers();
}
torrent_status::state_t QTorrentHandle::state() const {

View file

@ -81,7 +81,6 @@ class QTorrentHandle {
int num_incomplete() const;
void scrape_tracker() const;
QString save_path() const;
fs::path save_path_boost() const;
QStringList url_seeds() const;
size_type actual_size() const;
int download_limit() const;
@ -93,7 +92,7 @@ class QTorrentHandle {
bool is_queued() const;
QString file_at(unsigned int index) const;
size_type filesize_at(unsigned int index) const;
std::vector<announce_entry> const& trackers() const;
std::vector<announce_entry> trackers() const;
torrent_status::state_t state() const;
QString creator() const;
QString comment() const;

View file

@ -561,31 +561,37 @@ short RssStream::readDoc(const QDomDocument& doc) {
image = property.text();
else if(property.tagName() == "item") {
RssItem * item = new RssItem(this, property);
if(item->isValid() && !itemAlreadyExists(item->getTitle())) {
(*this)[item->getTitle()] = item;
if(item->isValid()) {
bool already_exists = itemAlreadyExists(item->getTitle());
if(!already_exists) {
(*this)[item->getTitle()] = item;
}
if(item->has_attachment()) {
has_attachments = true;
// Check if the item should be automatically downloaded
FeedFilter * matching_filter = FeedFilters::getFeedFilters(url).matches(item->getTitle());
if(matching_filter != 0) {
// Download the torrent
BTSession->addConsoleMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(item->getTitle()).arg(getName()));
if(matching_filter->isValid()) {
QString save_path = matching_filter->getSavePath();
if(save_path.isEmpty())
if(!already_exists || !(*this)[item->getTitle()]->isRead()) {
FeedFilter * matching_filter = FeedFilters::getFeedFilters(url).matches(item->getTitle());
if(matching_filter != 0) {
// Download the torrent
BTSession->addConsoleMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(item->getTitle()).arg(getName()));
if(matching_filter->isValid()) {
QString save_path = matching_filter->getSavePath();
if(save_path.isEmpty())
BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl());
else
BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl(), save_path);
} else {
// All torrents are downloaded from this feed
BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl());
else
BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl(), save_path);
} else {
// All torrents are downloaded from this feed
BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl());
}
// Item was downloaded, consider it as Read
(*this)[item->getTitle()]->setRead();
// Clean up
delete matching_filter;
}
// Item was downloaded, consider it as Read
item->setRead();
// Clean up
delete matching_filter;
}
}
} else {
delete item;
}
@ -604,7 +610,7 @@ void RssStream::resizeList() {
unsigned int max_articles = settings.value(QString::fromUtf8("Preferences/RSS/RSSMaxArticlesPerFeed"), 100).toInt();
unsigned int nb_articles = this->size();
if(nb_articles > max_articles) {
QList<RssItem*> listItem = sortNewsList(this->values());
QList<RssItem*> listItem = RssManager::sortNewsList(this->values());
int excess = nb_articles - max_articles;
for(int i=0; i<excess; ++i){
RssItem *lastItem = listItem.takeLast();

View file

@ -492,23 +492,25 @@ public slots:
public:
RssManager(bittorrent *BTSession);
~RssManager();
static void insertSortElem(QList<RssItem*> &list, RssItem *item) {
int i = 0;
while(i < list.size() && item->getDate() < list.at(i)->getDate()) {
++i;
}
list.insert(i, item);
}
static QList<RssItem*> sortNewsList(QList<RssItem*> news_list) {
QList<RssItem*> new_list;
foreach(RssItem *item, news_list) {
insertSortElem(new_list, item);
}
return new_list;
}
};
static void insertSortElem(QList<RssItem*> &list, RssItem *item) {
int i = 0;
while(i < list.size() && item->getDate() < list.at(i)->getDate()) {
++i;
}
list.insert(i, item);
}
static QList<RssItem*> sortNewsList(QList<RssItem*> news_list) {
QList<RssItem*> new_list;
foreach(RssItem *item, news_list) {
insertSortElem(new_list, item);
}
return new_list;
}
#endif

View file

@ -431,9 +431,9 @@ void RSSImp::refreshNewsList(QTreeWidgetItem* item) {
qDebug("Getting the list of news");
QList<RssItem*> news;
if(rss_item == rssmanager)
news = sortNewsList(rss_item->getUnreadNewsList());
news = RssManager::sortNewsList(rss_item->getUnreadNewsList());
else
news = sortNewsList(rss_item->getNewsList());
news = RssManager::sortNewsList(rss_item->getNewsList());
// Clear the list first
textBrowser->clear();
previous_news = 0;

View file

@ -14,7 +14,7 @@ CONFIG += qt \
network
# Update this VERSION for each release
DEFINES += VERSION=\\\"v1.6.0alpha2\\\"
DEFINES += VERSION=\\\"v1.6.0beta1\\\"
DEFINES += VERSION_MAJOR=1
DEFINES += VERSION_MINOR=6
DEFINES += VERSION_BUGFIX=0
@ -90,15 +90,14 @@ contains(DEBUG_MODE, 0) {
# QMAKE_CXXFLAGS_DEBUG += -fwrapv
unix:QMAKE_LFLAGS_SHAPP += -rdynamic
CONFIG += link_pkgconfig
PKGCONFIG += "libtorrent-rasterbar libcurl"
PKGCONFIG += "libtorrent-rasterbar"
QT += network \
xml
DEFINES += QT_NO_CAST_TO_ASCII
# QT_NO_CAST_FROM_ASCII
# Windows
# usually built as static
# win32:LIBS += -ltorrent -lcurl -lboost_system
# win32:LIBS += -ltorrent -lboost_system
# win32:LIBS += -lz ?
win32:LIBS += -lssl32 \
-lws2_32 \

View file

@ -444,6 +444,8 @@ public slots:
settings.setValue(QString::fromUtf8("LastDirTorrentAdd"), savePathTxt->text());
// Create .incremental file if necessary
TorrentTempData::setSequential(hash, checkIncrementalDL->isChecked());
// Skip file checking and directly start seeding
TorrentTempData::setSeedingMode(hash, addInSeed->isChecked());
// Check if there is at least one selected file
if(allFiltered()){
QMessageBox::warning(0, tr("Invalid file selection"), tr("You must select at least one file in the torrent"));

View file

@ -99,6 +99,25 @@ public:
}
static void setSeedingMode(QString hash,bool seed){
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume"));
QHash<QString, QVariant> all_data = settings.value("torrents-tmp", QHash<QString, QVariant>()).toHash();
QHash<QString, QVariant> data = all_data[hash].toHash();
data["seeding"] = seed;
all_data[hash] = data;
settings.setValue("torrents-tmp", all_data);
}
static bool isSeedingMode(QString hash){
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume"));
QHash<QString, QVariant> all_data = settings.value("torrents-tmp", QHash<QString, QVariant>()).toHash();
QHash<QString, QVariant> data = all_data[hash].toHash();
if(data.contains("seeding"))
return data["seeding"].toBool();
return false;
}
static QString getSavePath(QString hash) {
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume"));
QHash<QString, QVariant> all_data = settings.value("torrents-tmp", QHash<QString, QVariant>()).toHash();