1
mirror of https://github.com/qbittorrent/qBittorrent synced 2025-10-09 18:32:15 +02:00

Compare commits

...

39 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
Christophe Dumez
855b539843 - Add missing line at the end 2008-07-19 20:04:01 +00:00
Christophe Dumez
2e72ab4973 - Fixed extented selection in search results list (Bug introduced by Tab support in search engine) 2008-07-19 19:28:57 +00:00
Christophe Dumez
ae2ad8e747 - Fixed a bug in torrent progress display 2008-07-16 21:53:34 +00:00
Christophe Dumez
42fa5ef8f3 - Updated hungarian translation 2008-07-13 21:12:16 +00:00
Christophe Dumez
9395f7316d - Updated hungarian translator's mail 2008-07-13 21:10:18 +00:00
Christophe Dumez
fa1c4050ed - Updated Korean translation 2008-07-12 21:23:27 +00:00
Christophe Dumez
565b98a94a - Updated turkish translation 2008-07-11 21:35:39 +00:00
Christophe Dumez
f58efdfefc - Bump to rc1
- Disable debug
2008-07-11 17:37:13 +00:00
Christophe Dumez
a806c27f70 - Updated Italian translation 2008-07-11 16:30:52 +00:00
Christophe Dumez
a8f82d9e12 - Updated Finnish translation 2008-07-10 18:50:34 +00:00
Christophe Dumez
fe6054307e - Moved v1.1.x to its own branch. Trunk will now be dedicated to v1.2.x 2008-07-10 18:11:26 +00:00
87 changed files with 12570 additions and 4981 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
@@ -27,6 +38,7 @@
- COSMETIC: Display "unpaused/total_torrent" in download/upload tabs
- COSMETIC: Allow to resize RSS column
- COSMETIC: Global UP/DL speeds and ratio are displayed above tabs
- COSMETIC: Use infinity symbol for ETA when time is infinite
* Fri Apr 11 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.0.0
- FEATURE: Based on new libtorrent v0.13

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.

51
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
@@ -43,3 +8,15 @@ Translations updated:
- Brazilian
- Slovak
- Swedish
- Romanian
- Finnish
- Italian
- 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

@@ -41,6 +41,7 @@ SearchTab::SearchTab(SearchEngine *parent) : QWidget()
box=new QVBoxLayout();
results_lbl=new QLabel();
resultsBrowser = new QTreeView();
resultsBrowser->setSelectionMode(QAbstractItemView::ExtendedSelection);
box->addWidget(results_lbl);
box->addWidget(resultsBrowser);
@@ -185,4 +186,5 @@ bool SearchTab::loadColWidthSearchList(){
}
qDebug("Search list columns width loaded");
return true;
}
}

View File

@@ -57,12 +57,14 @@ 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>\
- <u>Hungarian:</u> Majoros Péter (majoros.j.p@t-online.hu)<br>\
- <u>Hungarian:</u> Majoros Péter (majoros.peterj@gmail.com)<br>\
- <u>Italian:</u> Mirko Ferrari (mirkoferrari@gmail.com) and Ferraro Luciano (luciano.ferraro@gmail.com)<br>\
- <u>Japanese:</u> Nardog (nardog@e2umail.com)<br>\
- <u>Korean:</u> Jin Woo Sin (jin828sin@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

@@ -234,7 +234,7 @@ class arborescence {
void addFile(QString path, size_type file_size, int index, float progress=0., int priority=1) {
Q_ASSERT(root->isDir());
path = QDir::cleanPath(path);
Q_ASSERT(path.startsWith(root->path()));
//Q_ASSERT(path.startsWith(root->path()));
QString relative_path = path.remove(0, root->path().size());
if(relative_path.at(0) ==QDir::separator())
relative_path.remove(0, 1);

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"/>
@@ -3800,7 +3800,7 @@ However, those plugins were disabled.</source>
<message>
<location filename="../misc.h" line="322"/>
<source>Unknown</source>
<translation>Desconegut</translation>
<translation type="obsolete">Desconegut</translation>
</message>
<message>
<location filename="../misc.h" line="110"/>
@@ -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>
@@ -3195,7 +3195,7 @@ However, those plugins were disabled.</source>
<message>
<location filename="../misc.h" line="322"/>
<source>Unknown</source>
<translation>Ukendt</translation>
<translation type="obsolete">Ukendt</translation>
</message>
<message>
<location filename="../misc.h" line="110"/>
@@ -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

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