1
mirror of https://github.com/qbittorrent/qBittorrent synced 2025-10-19 05:12:18 +02:00

Compare commits

..

28 Commits

Author SHA1 Message Date
Christophe Dumez
f043cd3cc5 - Tagged v1.1.3 release 2008-08-26 07:21:15 +00:00
Christophe Dumez
28626f51ad - Fixed a comment
- Added chinese traditional translation to stable branch
- bump to v1.1.3 in stable branch (updated splash screen)
- Updated changelogs
2008-08-26 07:14:38 +00:00
Christophe Dumez
25233295ba - Fixed ratio saving for seeding torrents 2008-08-26 06:45:24 +00:00
Christophe Dumez
bd6684405b - Added czech translation 2008-08-18 23:58:30 +00:00
Christophe Dumez
a8235dc413 - Progress calculation fix 2008-08-17 03:53:49 +00:00
Christophe Dumez
c2838d9b0c - Forgot to update this 2008-08-01 16:21:14 +00:00
Christophe Dumez
d6d7797064 - v1.1.1 2008-08-01 16:20:27 +00:00
Christophe Dumez
685216505c - Fixed resource file 2008-08-01 16:17:31 +00:00
Christophe Dumez
c28c55280d - Added release date 2008-08-01 14:37:03 +00:00
Christophe Dumez
f1032c4619 - Updated INSTALL file 2008-08-01 14:30:18 +00:00
Christophe Dumez
d34bfd13b3 - Updated resources files 2008-08-01 14:28:28 +00:00
Christophe Dumez
cfd6a9d734 - Removed rc 2008-08-01 14:23:39 +00:00
Christophe Dumez
c2f22d292a - Updated bulgarian and greek translations 2008-07-31 12:45:35 +00:00
Christophe Dumez
9778112b3b - Allow to download torrents from local files in WEB UI 2008-07-31 12:11:01 +00:00
Christophe Dumez
1708361bd5 - Added peerkoel to dutch translators 2008-07-29 09:58:50 +00:00
Christophe Dumez
cc04f7eec2 - Updated dutch translation 2008-07-29 09:56:32 +00:00
Christophe Dumez
395805f9e8 - Added new Russian translator's name 2008-07-29 07:48:26 +00:00
Christophe Dumez
ba5daee92f - Patch from Alexey Morsov for desktop file to satisfy freedesktop
standard
2008-07-29 07:42:45 +00:00
Christophe Dumez
bfef2b5cc0 - updated russian translation 2008-07-29 07:40:03 +00:00
Christophe Dumez
af2431afbd - Added new spanish translator's name 2008-07-28 13:24:14 +00:00
Christophe Dumez
7a1b92e467 - Updated spanish translation 2008-07-28 13:17:55 +00:00
Christophe Dumez
dc399e9ed9 - optimized downloadthreads
- fixed resizing in torrent addition dialog
2008-07-27 18:11:45 +00:00
Christophe Dumez
dad79d2cc8 - Bump to rc2 2008-07-27 16:02:58 +00:00
Christophe Dumez
b5d30d5154 - Fixed vertical alignements of menus 2008-07-27 15:58:33 +00:00
Christophe Dumez
72df85749b - Updated TODO file 2008-07-27 15:42:57 +00:00
Christophe Dumez
6c84288b09 - Updated German translation 2008-07-23 07:00:16 +00:00
Christophe Dumez
78239d6956 - Fixed building on ARM (patch from Cristian Greco) 2008-07-22 19:49:22 +00:00
Christophe Dumez
41be514dcf - Commented ASSERT due to a little string encoding bug in libtorrent 2008-07-22 14:40:01 +00:00
84 changed files with 8816 additions and 2740 deletions

View File

@@ -1,4 +1,15 @@
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
* Tue Aug 26 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.3
- BUGFIX: Fixed ratio saving for seeding torrents
- I18N: Added czech and traditional chinese translations
* Sun Aug 17 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.2
- BUGFIX: Fixed progress calculation
- BUGFIX: Fixed finished torrent detection
* Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.1
- BUGFIX: Fixed bad resource file for icons
* Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
- FEATURE: Web interface to control qbittorrent (Ishan Arora)
- FEATURE: Can spoof Azureus peer id to avoid ban
- FEATURE: Allow to hide/show some columns in download and seeding lists

View File

@@ -18,7 +18,6 @@ Dependencies:
Qt >= 4.4.0 is advised
- libtorrent-rasterbar by Arvid Norberg (>= v0.13.1 REQUIRED)
-> http://www.qbittorrent.org/download.php (advised)
-> http://www.libtorrent.net
Be careful: another library (the one used by rTorrent) uses a similar name.

45
TODO
View File

@@ -1,41 +1,6 @@
// Easy
- Translations into as many languages as possible
- Use Launchpad/Rosetta for translations once it supports TS files
See https://blueprints.launchpad.net/qbittorrent/
// Intermediate
- Port on MacOS, Windows (and create an installer for Windows) - Slow progress
- Add some transparency (menus,...), improve look / usabilty
- Skins support? (contact Mateusz)
// Harder
- Torrent scheduler ala µtorrent/Bitcomet
// Waiting for libtorrent
- Allow to prioritize torrents (may code this in qBittorrent?)
// Unsure
- Display the peers we are connected to for each torrent with infos (like flag, dl/up speeds, ...)
- Azureus spoofing to prevent ban from trackers?
- Option to shutdown computer when downloads are finished
- NAT checker/Tester
- Display hard drive space left?
- Make use of dbus on Linux for the single instance instead of socket communication?
(http://techbase.kde.org/Development/Tutorials/D-Bus/Accessing_Interfaces)
- When favicon can't be downloaded, try to parse the webpage for:
<link rel="icon" href="http://example.com/favicon.ico" type="image/vnd.microsoft.icon">
* Be careful, the link can be relative
- Improve search plugin install (choose in a list taken from plugins.qbittorrent.org)
- support zipped torrents? (useful?)
- Allow to limit the number of downloading torrents simultaneously (other are paused until a download finishes)
// in v1.2.0
- Allow user to organize the downloads into categories/folders?
// in v1.1.0
- Stop calculating ETAs when ETA column is hidden
-> See https://blueprints.launchpad.net/qbittorrent
Translations updated:
Translations updated in v1.1.0:
- French
- Chinese
- Polish
@@ -49,3 +14,9 @@ Translations updated:
- Turkish
- Korean
- Hungarian
- German
- Spanish
- Russian
- Dutch
- Bulgarian
- Greek

View File

@@ -247,7 +247,7 @@ void FinishedTorrents::updateFinishedList(){
if (reponse == QMessageBox::Yes) {
qDebug("Info: a torrent was moved from finished to download tab");
deleteTorrent(hash);
BTSession->setFinishedTorrent(hash);
BTSession->setUnfinishedTorrent(hash);
emit torrentMovedFromFinishedList(hash);
}
else if (reponse == QMessageBox::No) {
@@ -394,7 +394,7 @@ void FinishedTorrents::displayFinishedListMenu(const QPoint& pos){
// Call menu
// XXX: why mapToGlobal() is not enough?
myFinishedListMenu.exec(mapToGlobal(pos)+QPoint(10,55));
myFinishedListMenu.exec(mapToGlobal(pos)+QPoint(10,59));
}
@@ -410,7 +410,7 @@ void FinishedTorrents::displayFinishedHoSMenu(const QPoint& pos){
hideshowColumn.addAction(getActionHoSCol(i));
}
// Call menu
hideshowColumn.exec(mapToGlobal(pos)+QPoint(10,55));
hideshowColumn.exec(mapToGlobal(pos)+QPoint(10,32));
}
// toggle hide/show a column

BIN
src/Icons/flags/czech.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

BIN
src/Icons/flags/taiwan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

View File

@@ -1,7 +1,7 @@
[Desktop Entry]
Categories=Qt;Application;Network;P2P
Comment=V1.1.0
Exec=qbittorrent
Categories=Qt;Network;P2P
Comment=V1.1.1
Exec=qbittorrent %f
GenericName=Bittorrent client
GenericName[bg]=Торент клиент
GenericName[de]=Bittorren Client
@@ -19,7 +19,7 @@ GenericName[tr]=Bittorrent istemcisi
GenericName[uk]=Bittorrent-клієнт
GenericName[zh]=Bittorrent之用户
Icon=qbittorrent
MimeType=application/x-bittorrent
MimeType=application/x-bittorrent;
Name=qBittorrent
Name[ko]=큐비토런트
Terminal=false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

@@ -57,8 +57,10 @@ class about : public QDialog, private Ui::AboutDlg{
- <u>Bulgarian:</u> Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net)<br>\
- <u>Catalan:</u> Gekko Dam Beer (gekko04@users.sourceforge.net)<br>\
- <u>Chinese (Simplified):</u> Guo Yue (guoyue0418@hotmail.com)<br>\
- <u>Chinese (Traditional):</u> Yi-Shun Wang (dnextstep@gmail.com)<br>\
- <u>Czech:</u> Jirka Vilim (web@tets.cz)<br>\
- <u>Danish:</u> Mathias Nielsen (comoneo@gmail.com)<br>\
- <u>Dutch:</u> Joost Schipper (heavyjoost@users.sourceforge.net)<br>\
- <u>Dutch:</u> Joost Schipper (heavyjoost@users.sourceforge.net) and Peter Koeleman (peter@peerweb.nl)<br>\
- <u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net)<br>\
- <u>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)<br>\
- <u>Greek:</u> Tsvetan Bankov (emerge_life@users.sourceforge.net)<br>\
@@ -70,9 +72,9 @@ class about : public QDialog, private Ui::AboutDlg{
- <u>Polish:</u> Jarek Smieja (ajep9691@wp.pl)<br>\
- <u>Portuguese:</u> Nick Marinho (nickmarinho@gmail.com)<br>\
- <u>Romanian:</u> Obada Denis (obadadenis@users.sourceforge.net)<br>\
- <u>Russian:</u> Nick Khazov (m2k3d0n at users.sourceforge.net)<br>\
- <u>Russian:</u> Nick Khazov (m2k3d0n@users.sourceforge.net) and Alexey Morsov (samurai@ricom.ru)<br>\
- <u>Slovak:</u> helix84<br>\
- <u>Spanish:</u> Vicente Raul Plata Fonseca (silverxnt@users.sourceforge.net)<br>\
- <u>Spanish:</u> Vicente Raul Plata Fonseca (silverxnt@users.sourceforge.net) and Gabriel de Oliveira (deadloop@hotmail.com)<br>\
- <u>Swedish:</u> Daniel Nylander (po@danielnylander.se)<br>\
- <u>Turkish:</u> Erdem Bingöl (erdem84@gmail.com)<br>\
- <u>Ukrainian:</u> Andrey Shpachenko (masterfix@users.sourceforge.net)<br><br>"));

View File

@@ -933,6 +933,19 @@ void bittorrent::saveFastResumeAndRatioData() {
}
saveFastResumeAndRatioData(hash);
}
hashes = getFinishedTorrents();
foreach(hash, hashes) {
QTorrentHandle h = getTorrentHandle(hash);
if(!h.is_valid()) {
qDebug("/!\\ Error: Invalid handle");
continue;
}
if(h.is_paused()) {
// Do not need to save ratio data for paused torrents
continue;
}
saveDownloadUploadForTorrent(hash);
}
}
void bittorrent::saveFastResumeAndRatioData(QString hash) {

View File

@@ -24,6 +24,8 @@
#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){
@@ -150,9 +152,7 @@ downloadThread::~downloadThread(){
void downloadThread::downloadUrl(QString url){
QMutexLocker locker(&mutex);
if(downloading_list.contains(url)) return;
url_list << url;
downloading_list << url;
urls_queue.enqueue(url);
if(!isRunning()){
start();
}else{
@@ -165,8 +165,8 @@ void downloadThread::run(){
if(abort)
return;
mutex.lock();
if(url_list.size() != 0){
QString url = url_list.takeFirst();
if(!urls_queue.empty() && subThreads.size() < MAX_THREADS){
QString url = urls_queue.dequeue();
mutex.unlock();
subDownloadThread *st = new subDownloadThread(0, url);
subThreads << st;
@@ -187,9 +187,9 @@ void downloadThread::propagateDownloadedFile(subDownloadThread* st, QString url,
delete st;
emit downloadFinished(url, path);
mutex.lock();
index = downloading_list.indexOf(url);
Q_ASSERT(index != -1);
downloading_list.removeAt(index);
if(!urls_queue.empty()) {
condition.wakeOne();
}
mutex.unlock();
}
@@ -200,8 +200,8 @@ void downloadThread::propagateDownloadFailure(subDownloadThread* st, QString url
delete st;
emit downloadFailure(url, reason);
mutex.lock();
index = downloading_list.indexOf(url);
Q_ASSERT(index != -1);
downloading_list.removeAt(index);
if(!urls_queue.empty()) {
condition.wakeOne();
}
mutex.unlock();
}

View File

@@ -30,6 +30,7 @@
#include <QWaitCondition>
#include <QStringList>
#include <curl/curl.h>
#include <QQueue>
class subDownloadThread : public QThread {
Q_OBJECT
@@ -55,8 +56,7 @@ class downloadThread : public QThread {
Q_OBJECT
private:
QStringList url_list;
QStringList downloading_list;
QQueue<QString> urls_queue;
QMutex mutex;
QWaitCondition condition;
bool abort;

View File

@@ -311,7 +311,7 @@ void DownloadingTorrents::displayDLListMenu(const QPoint& pos) {
myDLLlistMenu.addAction(actionBuy_it);
// Call menu
// XXX: why mapToGlobal() is not enough?
myDLLlistMenu.exec(mapToGlobal(pos)+QPoint(10,60));
myDLLlistMenu.exec(mapToGlobal(pos)+QPoint(10,35));
}
@@ -327,7 +327,7 @@ void DownloadingTorrents::displayDLHoSMenu(const QPoint& pos){
hideshowColumn.addAction(getActionHoSCol(i));
}
// Call menu
hideshowColumn.exec(mapToGlobal(pos)+QPoint(10,55));
hideshowColumn.exec(mapToGlobal(pos)+QPoint(10,10));
}
// toggle hide/show a column

View File

@@ -30,6 +30,7 @@
#include <QHttpResponseHeader>
#include <QFile>
#include <QDebug>
#include <QTemporaryFile>
HttpConnection::HttpConnection(QTcpSocket *socket, HttpServer *parent)
: QObject(parent), socket(socket), parent(parent)
@@ -45,11 +46,17 @@ HttpConnection::~HttpConnection()
void HttpConnection::read()
{
QString input = socket->readAll();
QByteArray input = socket->readAll();
qDebug(" -------");
qDebug("|REQUEST|");
qDebug(" -------");
qDebug("%s", input.toAscii().constData());
//qDebug("%s", input.toAscii().constData());
if(input.size() > 100000) {
qDebug("Request too big");
generator.setStatusLine(400, "Bad Request");
write();
return;
}
parser.write(input);
if(parser.isError())
{
@@ -74,6 +81,7 @@ void HttpConnection::write()
void HttpConnection::respond()
{
qDebug("Respond called");
QStringList auth = parser.value("Authorization").split(" ", QString::SkipEmptyParts);
if (auth.size() != 2 || QString::compare(auth[0], "Basic", Qt::CaseInsensitive) != 0 || !parent->isAuthorized(auth[1].toUtf8()))
{
@@ -176,6 +184,25 @@ void HttpConnection::respondCommand(QString command)
emit urlsReadyToBeDownloaded(url_list_cleaned);
return;
}
if(command == "upload")
{
QByteArray torrentfile = parser.torrent();
// XXX: Trick to get a unique filename
QString filePath;
QTemporaryFile *tmpfile = new QTemporaryFile();
if (tmpfile->open()) {
filePath = tmpfile->fileName();
}
delete tmpfile;
// write it to HD
QFile torrent(filePath);
if(torrent.open(QIODevice::WriteOnly)) {
torrent.write(torrentfile);
torrent.close();
}
emit torrentReadyToBeDownloaded(filePath, false, QString(), false);
return;
}
if(command == "resumeall")
{
emit resumeAllTorrents();

View File

@@ -57,6 +57,7 @@ class HttpConnection : public QObject
signals:
void urlsReadyToBeDownloaded(const QStringList&);
void torrentReadyToBeDownloaded(QString, bool, QString, bool);
void deleteTorrent(QString hash);
void resumeTorrent(QString hash);
void pauseTorrent(QString hash);

View File

@@ -49,11 +49,11 @@ QString HttpRequestParser::url() const
return path;
}
QString HttpRequestParser::message() const
QByteArray HttpRequestParser::message() const
{
if(isParsable())
return data;
return QString();
return QByteArray();
}
QString HttpRequestParser::get(const QString key) const
@@ -66,7 +66,12 @@ QString HttpRequestParser::post(const QString key) const
return postMap[key];
}
void HttpRequestParser::write(QString str)
QByteArray HttpRequestParser::torrent() const
{
return torrent_content;
}
void HttpRequestParser::write(QByteArray str)
{
while (!headerDone && str.size()>0)
{
@@ -111,7 +116,7 @@ void HttpRequestParser::write(QString str)
if(contentType() == "application/x-www-form-urlencoded")
{
QUrl url;
url.setEncodedQuery(data.toAscii());
url.setEncodedQuery(data);
QListIterator<QPair<QString, QString> > i(url.queryItems());
while (i.hasNext())
{
@@ -120,9 +125,15 @@ void HttpRequestParser::write(QString str)
qDebug() << pair.first << "=" << post(pair.first);
}
}
if(contentType() == "multipart/form-data")
{
//qDebug() << data.right(data.size()-data.indexOf("\r\n\r\n")-QByteArray("\r\n\r\n").size());
torrent_content = data.right(data.size()-data.indexOf("\r\n\r\n")-QByteArray("\r\n\r\n").size());
}
}
}
else
error = true;
}
qDebug() << "isError: " << isError();
}

View File

@@ -30,10 +30,11 @@ class HttpRequestParser : public QHttpRequestHeader
bool headerDone;
bool messageDone;
bool error;
QString data;
QByteArray data;
QString path;
QMap<QString, QString> postMap;
QMap<QString, QString> getMap;
QByteArray torrent_content;
public:
HttpRequestParser();
@@ -41,10 +42,11 @@ class HttpRequestParser : public QHttpRequestHeader
bool isParsable() const;
bool isError() const;
QString url() const;
QString message() const;
QByteArray message() const;
QString get(const QString key) const;
QString post(const QString key) const;
void write(QString str);
QByteArray torrent() const;
void write(QByteArray str);
};
#endif

View File

@@ -62,6 +62,7 @@ void HttpServer::newHttpConnection()
HttpConnection *connection = new HttpConnection(socket, this);
//connect connection to BTSession
connect(connection, SIGNAL(urlsReadyToBeDownloaded(const QStringList&)), BTSession, SLOT(downloadFromURLList(const QStringList&)));
connect(connection, SIGNAL(torrentReadyToBeDownloaded(QString, bool, QString, bool)), BTSession, SLOT(addTorrent(QString, bool, QString, bool)));
connect(connection, SIGNAL(deleteTorrent(QString)), BTSession, SLOT(deleteTorrent(QString)));
connect(connection, SIGNAL(pauseTorrent(QString)), BTSession, SLOT(pauseTorrent(QString)));
connect(connection, SIGNAL(resumeTorrent(QString)), BTSession, SLOT(resumeTorrent(QString)));

View File

@@ -1,106 +1,108 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>Icons/folder.png</file>
<file>Icons/qbittorrent32.png</file>
<file>Icons/file.png</file>
<file>Icons/smile.png</file>
<file>Icons/qbittorrent22.png</file>
<file>Icons/mascot.png</file>
<file>Icons/downarrow.png</file>
<file>Icons/unavailable.png</file>
<file>Icons/proxy.png</file>
<file>Icons/description.png</file>
<file>Icons/log.png</file>
<file>Icons/uparrow.png</file>
<file>Icons/home.png</file>
<file>Icons/unsubscribe.png</file>
<file>Icons/url.png</file>
<file>Icons/unsubscribe16.png</file>
<file>Icons/stare.png</file>
<file>Icons/qbittorrent16.png</file>
<file>Icons/locale.png</file>
<file>Icons/splash.png</file>
<file>Icons/subscribe16.png</file>
<file>Icons/loading.png</file>
<file>Icons/star.png</file>
<file>Icons/gnome-shutdown.png</file>
<file>Icons/style.png</file>
<file>Icons/rss16.png</file>
<file>Icons/add_file.png</file>
<file>Icons/add_folder.png</file>
<file>Icons/bt_settings.png</file>
<file>Icons/button_cancel.png</file>
<file>Icons/button_ok.png</file>
<file>Icons/configure.png</file>
<file>Icons/connection.png</file>
<file>Icons/systemtray.png</file>
<file>Icons/sphere.png</file>
<file>Icons/add_folder.png</file>
<file>Icons/button_cancel.png</file>
<file>Icons/encrypted.png</file>
<file>Icons/wizard.png</file>
<file>Icons/edit_clear.png</file>
<file>Icons/rss32.png</file>
<file>Icons/subscribe.png</file>
<file>Icons/bt_settings.png</file>
<file>Icons/password.png</file>
<file>Icons/newmsg.png</file>
<file>Icons/sphere2.png</file>
<file>Icons/button_ok.png</file>
<file>Icons/unhappy.png</file>
<file>Icons/add_file.png</file>
<file>Icons/filter.png</file>
<file>Icons/money.png</file>
<file>Icons/description.png</file>
<file>Icons/downarrow.png</file>
<file>Icons/download.png</file>
<file>Icons/time.png</file>
<file>Icons/refresh.png</file>
<file>Icons/edit_clear.png</file>
<file>Icons/encrypted.png</file>
<file>Icons/file.png</file>
<file>Icons/filter.png</file>
<file>Icons/folder.png</file>
<file>Icons/gear.png</file>
<file>Icons/skin/new.png</file>
<file>Icons/skin/qb_question.png</file>
<file>Icons/skin/play.png</file>
<file>Icons/skin/connecting.png</file>
<file>Icons/skin/settings.png</file>
<file>Icons/skin/add.png</file>
<file>Icons/skin/open.png</file>
<file>Icons/skin/play_all.png</file>
<file>Icons/skin/info.png</file>
<file>Icons/skin/connected.png</file>
<file>Icons/skin/search.png</file>
<file>Icons/skin/url.png</file>
<file>Icons/skin/firewalled.png</file>
<file>Icons/skin/properties.png</file>
<file>Icons/skin/preview.png</file>
<file>Icons/skin/remove.png</file>
<file>Icons/skin/delete_perm.png</file>
<file>Icons/skin/pause_all.png</file>
<file>Icons/skin/delete_all.png</file>
<file>Icons/skin/stalled.png</file>
<file>Icons/skin/downloading.png</file>
<file>Icons/skin/delete.png</file>
<file>Icons/skin/exit.png</file>
<file>Icons/skin/seeding.png</file>
<file>Icons/skin/paused.png</file>
<file>Icons/skin/disconnected.png</file>
<file>Icons/skin/pause.png</file>
<file>Icons/flags/turkey.png</file>
<file>Icons/flags/portugal.png</file>
<file>Icons/flags/finland.png</file>
<file>Icons/flags/ukraine.png</file>
<file>Icons/flags/bulgaria.png</file>
<file>Icons/flags/spain_catalunya.png</file>
<file>Icons/gnome-shutdown.png</file>
<file>Icons/home.png</file>
<file>Icons/loading.png</file>
<file>Icons/locale.png</file>
<file>Icons/log.png</file>
<file>Icons/mascot.png</file>
<file>Icons/money.png</file>
<file>Icons/newmsg.png</file>
<file>Icons/password.png</file>
<file>Icons/proxy.png</file>
<file>Icons/qbittorrent16.png</file>
<file>Icons/qbittorrent22.png</file>
<file>Icons/qbittorrent32.png</file>
<file>Icons/refresh.png</file>
<file>Icons/rss16.png</file>
<file>Icons/rss32.png</file>
<file>Icons/smile.png</file>
<file>Icons/sphere.png</file>
<file>Icons/sphere2.png</file>
<file>Icons/splash.png</file>
<file>Icons/star.png</file>
<file>Icons/stare.png</file>
<file>Icons/style.png</file>
<file>Icons/subscribe.png</file>
<file>Icons/subscribe16.png</file>
<file>Icons/systemtray.png</file>
<file>Icons/time.png</file>
<file>Icons/unavailable.png</file>
<file>Icons/unhappy.png</file>
<file>Icons/unsubscribe.png</file>
<file>Icons/unsubscribe16.png</file>
<file>Icons/uparrow.png</file>
<file>Icons/url.png</file>
<file>Icons/wizard.png</file>
<file>Icons/flags/brazil.png</file>
<file>Icons/flags/norway.png</file>
<file>Icons/flags/slovakia.png</file>
<file>Icons/flags/romania.png</file>
<file>Icons/flags/united_kingdom.png</file>
<file>Icons/flags/netherlands.png</file>
<file>Icons/flags/bulgaria.png</file>
<file>Icons/flags/china.png</file>
<file>Icons/flags/czech.png</file>
<file>Icons/flags/denmark.png</file>
<file>Icons/flags/hungary.png</file>
<file>Icons/flags/greece.png</file>
<file>Icons/flags/spain.png</file>
<file>Icons/flags/italy.png</file>
<file>Icons/flags/germany.png</file>
<file>Icons/flags/russia.png</file>
<file>Icons/flags/japan.png</file>
<file>Icons/flags/south_korea.png</file>
<file>Icons/flags/finland.png</file>
<file>Icons/flags/france.png</file>
<file>Icons/flags/sweden.png</file>
<file>Icons/flags/germany.png</file>
<file>Icons/flags/greece.png</file>
<file>Icons/flags/hungary.png</file>
<file>Icons/flags/italy.png</file>
<file>Icons/flags/japan.png</file>
<file>Icons/flags/netherlands.png</file>
<file>Icons/flags/norway.png</file>
<file>Icons/flags/poland.png</file>
<file>Icons/flags/portugal.png</file>
<file>Icons/flags/romania.png</file>
<file>Icons/flags/russia.png</file>
<file>Icons/flags/slovakia.png</file>
<file>Icons/flags/south_korea.png</file>
<file>Icons/flags/spain.png</file>
<file>Icons/flags/spain_catalunya.png</file>
<file>Icons/flags/sweden.png</file>
<file>Icons/flags/taiwan.png</file>
<file>Icons/flags/turkey.png</file>
<file>Icons/flags/ukraine.png</file>
<file>Icons/flags/united_kingdom.png</file>
<file>Icons/skin/add.png</file>
<file>Icons/skin/connected.png</file>
<file>Icons/skin/connecting.png</file>
<file>Icons/skin/delete.png</file>
<file>Icons/skin/delete_all.png</file>
<file>Icons/skin/delete_perm.png</file>
<file>Icons/skin/disconnected.png</file>
<file>Icons/skin/downloading.png</file>
<file>Icons/skin/exit.png</file>
<file>Icons/skin/firewalled.png</file>
<file>Icons/skin/info.png</file>
<file>Icons/skin/new.png</file>
<file>Icons/skin/open.png</file>
<file>Icons/skin/pause.png</file>
<file>Icons/skin/pause_all.png</file>
<file>Icons/skin/paused.png</file>
<file>Icons/skin/play.png</file>
<file>Icons/skin/play_all.png</file>
<file>Icons/skin/preview.png</file>
<file>Icons/skin/properties.png</file>
<file>Icons/skin/qb_question.png</file>
<file>Icons/skin/remove.png</file>
<file>Icons/skin/search.png</file>
<file>Icons/skin/seeding.png</file>
<file>Icons/skin/settings.png</file>
<file>Icons/skin/stalled.png</file>
<file>Icons/skin/url.png</file>
</qresource>
</RCC>

View File

@@ -1,29 +1,31 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>lang/qbittorrent_uk.qm</file>
<file>lang/qbittorrent_tr.qm</file>
<file>lang/qbittorrent_nl.qm</file>
<file>lang/qbittorrent_de.qm</file>
<file>lang/qbittorrent_ru.qm</file>
<file>lang/qbittorrent_fr.qm</file>
<file>lang/qbittorrent_bg.qm</file>
<file>lang/qbittorrent_ca.qm</file>
<file>lang/qbittorrent_cs.qm</file>
<file>lang/qbittorrent_da.qm</file>
<file>lang/qbittorrent_de.qm</file>
<file>lang/qbittorrent_el.qm</file>
<file>lang/qbittorrent_en.qm</file>
<file>lang/qbittorrent_es.qm</file>
<file>lang/qbittorrent_fi.qm</file>
<file>lang/qbittorrent_pl.qm</file>
<file>lang/qbittorrent_fr.qm</file>
<file>lang/qbittorrent_hu.qm</file>
<file>lang/qbittorrent_it.qm</file>
<file>lang/qbittorrent_ja.qm</file>
<file>lang/qbittorrent_ko.qm</file>
<file>lang/qbittorrent_nb.qm</file>
<file>lang/qbittorrent_sv.qm</file>
<file>lang/qbittorrent_zh.qm</file>
<file>lang/qbittorrent_el.qm</file>
<file>lang/qbittorrent_sk.qm</file>
<file>lang/qbittorrent_ca.qm</file>
<file>lang/qbittorrent_hu.qm</file>
<file>lang/qbittorrent_bg.qm</file>
<file>lang/qbittorrent_it.qm</file>
<file>lang/qbittorrent_nl.qm</file>
<file>lang/qbittorrent_pl.qm</file>
<file>lang/qbittorrent_pt.qm</file>
<file>lang/qbittorrent_en.qm</file>
<file>lang/qbittorrent_pt_BR.qm</file>
<file>lang/qbittorrent_ja.qm</file>
<file>lang/qbittorrent_ro.qm</file>
<file>lang/qbittorrent_es.qm</file>
<file>lang/qbittorrent_ru.qm</file>
<file>lang/qbittorrent_sk.qm</file>
<file>lang/qbittorrent_sv.qm</file>
<file>lang/qbittorrent_tr.qm</file>
<file>lang/qbittorrent_uk.qm</file>
<file>lang/qbittorrent_zh.qm</file>
<file>lang/qbittorrent_zh_TW.qm</file>
</qresource>
</RCC>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -2666,7 +2666,7 @@ Are you sure you want to quit qBittorrent?</source>
<message>
<location filename="../rss_imp.cpp" line="171"/>
<source>qBittorrent</source>
<translation type="unfinished"></translation>
<translation type="unfinished">qBittorrent</translation>
</message>
<message>
<location filename="../rss_imp.cpp" line="172"/>
@@ -2838,31 +2838,31 @@ Log:
<context>
<name>SearchTab</name>
<message>
<location filename="../SearchTab.cpp" line="50"/>
<location filename="../SearchTab.cpp" line="51"/>
<source>Name</source>
<comment>i.e: file name</comment>
<translation type="unfinished">Nom</translation>
</message>
<message>
<location filename="../SearchTab.cpp" line="51"/>
<location filename="../SearchTab.cpp" line="52"/>
<source>Size</source>
<comment>i.e: file size</comment>
<translation type="unfinished">Mida</translation>
</message>
<message>
<location filename="../SearchTab.cpp" line="52"/>
<location filename="../SearchTab.cpp" line="53"/>
<source>Seeders</source>
<comment>i.e: Number of full sources</comment>
<translation type="unfinished">Seeders</translation>
</message>
<message>
<location filename="../SearchTab.cpp" line="53"/>
<location filename="../SearchTab.cpp" line="54"/>
<source>Leechers</source>
<comment>i.e: Number of partial sources</comment>
<translation type="unfinished">Leechers</translation>
</message>
<message>
<location filename="../SearchTab.cpp" line="54"/>
<location filename="../SearchTab.cpp" line="55"/>
<source>Search engine</source>
<translation type="unfinished">Motor per cercar</translation>
</message>
@@ -2958,7 +2958,7 @@ Log:
<message>
<location filename="../about_imp.h" line="43"/>
<source>qBittorrent</source>
<translation type="unfinished"></translation>
<translation type="unfinished">qBittorrent</translation>
</message>
<message>
<location filename="../about_imp.h" line="54"/>
@@ -2966,7 +2966,7 @@ Log:
<translation type="unfinished">Vui agrair a les següents persones la seva voluntat per traduir qBittorrent:</translation>
</message>
<message>
<location filename="../about_imp.h" line="79"/>
<location filename="../about_imp.h" line="81"/>
<source>Please contact me if you would like to translate qBittorrent into your own language.</source>
<translation type="unfinished"></translation>
</message>
@@ -3673,7 +3673,7 @@ However, those plugins were disabled.</source>
<message>
<location filename="../engineSelectDlg.cpp" line="700"/>
<source>qBittorrent</source>
<translation type="unfinished"></translation>
<translation type="unfinished">qBittorrent</translation>
</message>
<message>
<location filename="../engineSelectDlg.cpp" line="478"/>
@@ -3947,17 +3947,17 @@ However, those plugins were disabled.</source>
<translation type="obsolete">Aquesta IP es invalida.</translation>
</message>
<message>
<location filename="../options_imp.cpp" line="774"/>
<location filename="../options_imp.cpp" line="778"/>
<source>Options were saved successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../options_imp.cpp" line="1052"/>
<location filename="../options_imp.cpp" line="1056"/>
<source>Choose scan directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../options_imp.cpp" line="1067"/>
<location filename="../options_imp.cpp" line="1071"/>
<source>Choose a save directory</source>
<translation type="unfinished"></translation>
</message>
@@ -3968,12 +3968,12 @@ However, those plugins were disabled.</source>
<translation type="obsolete">I/O Error</translation>
</message>
<message>
<location filename="../options_imp.cpp" line="1059"/>
<location filename="../options_imp.cpp" line="1063"/>
<source>Choose an ip filter file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../options_imp.cpp" line="1059"/>
<location filename="../options_imp.cpp" line="1063"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -4372,7 +4372,7 @@ However, those plugins were disabled.</source>
<message>
<location filename="../properties_imp.cpp" line="534"/>
<source>qBittorrent</source>
<translation type="unfinished"></translation>
<translation type="unfinished">qBittorrent</translation>
</message>
<message>
<location filename="../properties_imp.cpp" line="535"/>
@@ -4601,47 +4601,47 @@ However, those plugins were disabled.</source>
<context>
<name>subDownloadThread</name>
<message>
<location filename="../downloadThread.cpp" line="32"/>
<location filename="../downloadThread.cpp" line="34"/>
<source>Host is unreachable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="35"/>
<location filename="../downloadThread.cpp" line="37"/>
<source>File was not found (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="39"/>
<location filename="../downloadThread.cpp" line="41"/>
<source>Connection was denied</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="41"/>
<location filename="../downloadThread.cpp" line="43"/>
<source>Url is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="51"/>
<location filename="../downloadThread.cpp" line="53"/>
<source>Connection failure</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="53"/>
<location filename="../downloadThread.cpp" line="55"/>
<source>Connection was timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="55"/>
<location filename="../downloadThread.cpp" line="57"/>
<source>Incorrect network interface</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="57"/>
<location filename="../downloadThread.cpp" line="59"/>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="43"/>
<location filename="../downloadThread.cpp" line="45"/>
<source>Could not resolve proxy</source>
<translation type="unfinished"></translation>
</message>

BIN
src/lang/qbittorrent_cs.qm Normal file

Binary file not shown.

2968
src/lang/qbittorrent_cs.ts Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -2296,31 +2296,31 @@ Changelog:
<context>
<name>SearchTab</name>
<message>
<location filename="../SearchTab.cpp" line="50"/>
<location filename="../SearchTab.cpp" line="51"/>
<source>Name</source>
<comment>i.e: file name</comment>
<translation type="unfinished">Navn</translation>
</message>
<message>
<location filename="../SearchTab.cpp" line="51"/>
<location filename="../SearchTab.cpp" line="52"/>
<source>Size</source>
<comment>i.e: file size</comment>
<translation type="unfinished">Størrelse</translation>
</message>
<message>
<location filename="../SearchTab.cpp" line="52"/>
<location filename="../SearchTab.cpp" line="53"/>
<source>Seeders</source>
<comment>i.e: Number of full sources</comment>
<translation type="unfinished">Seedere</translation>
</message>
<message>
<location filename="../SearchTab.cpp" line="53"/>
<location filename="../SearchTab.cpp" line="54"/>
<source>Leechers</source>
<comment>i.e: Number of partial sources</comment>
<translation type="unfinished">Leechere</translation>
</message>
<message>
<location filename="../SearchTab.cpp" line="54"/>
<location filename="../SearchTab.cpp" line="55"/>
<source>Search engine</source>
<translation type="unfinished">Søgemaskine</translation>
</message>
@@ -2404,7 +2404,7 @@ Changelog:
<translation type="unfinished">Jeg vil gerne takke disse personer, som meldte sig frivilligt til at oversætte qBittorrent:</translation>
</message>
<message>
<location filename="../about_imp.h" line="79"/>
<location filename="../about_imp.h" line="81"/>
<source>Please contact me if you would like to translate qBittorrent into your own language.</source>
<translation type="unfinished">Kontakt mig venligst hvis du kunne tænke dig og oversætte qBittorrent til dit eget sprog.</translation>
</message>
@@ -3282,12 +3282,12 @@ However, those plugins were disabled.</source>
<translation type="obsolete">Denne IP er ugyldig.</translation>
</message>
<message>
<location filename="../options_imp.cpp" line="774"/>
<location filename="../options_imp.cpp" line="778"/>
<source>Options were saved successfully.</source>
<translation>Indstillingerne blev gemt.</translation>
</message>
<message>
<location filename="../options_imp.cpp" line="1052"/>
<location filename="../options_imp.cpp" line="1056"/>
<source>Choose scan directory</source>
<translation>Vælg mappe til scan</translation>
</message>
@@ -3297,7 +3297,7 @@ However, those plugins were disabled.</source>
<translation type="obsolete">Vælg en ipfilter.dat fil</translation>
</message>
<message>
<location filename="../options_imp.cpp" line="1067"/>
<location filename="../options_imp.cpp" line="1071"/>
<source>Choose a save directory</source>
<translation>Vælg en standart mappe</translation>
</message>
@@ -3313,12 +3313,12 @@ However, those plugins were disabled.</source>
<translation type="obsolete">Kunne ikke åbne %1 til læsning.</translation>
</message>
<message>
<location filename="../options_imp.cpp" line="1059"/>
<location filename="../options_imp.cpp" line="1063"/>
<source>Choose an ip filter file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../options_imp.cpp" line="1059"/>
<location filename="../options_imp.cpp" line="1063"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -3826,47 +3826,47 @@ However, those plugins were disabled.</source>
<context>
<name>subDownloadThread</name>
<message>
<location filename="../downloadThread.cpp" line="32"/>
<location filename="../downloadThread.cpp" line="34"/>
<source>Host is unreachable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="35"/>
<location filename="../downloadThread.cpp" line="37"/>
<source>File was not found (404)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="39"/>
<location filename="../downloadThread.cpp" line="41"/>
<source>Connection was denied</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="41"/>
<location filename="../downloadThread.cpp" line="43"/>
<source>Url is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="51"/>
<location filename="../downloadThread.cpp" line="53"/>
<source>Connection failure</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="53"/>
<location filename="../downloadThread.cpp" line="55"/>
<source>Connection was timed out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="55"/>
<location filename="../downloadThread.cpp" line="57"/>
<source>Incorrect network interface</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="57"/>
<location filename="../downloadThread.cpp" line="59"/>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadThread.cpp" line="43"/>
<location filename="../downloadThread.cpp" line="45"/>
<source>Could not resolve proxy</source>
<translation type="unfinished"></translation>
</message>

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

Some files were not shown because too many files have changed in this diff Show More