You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-09 18:32:15 +02:00
Compare commits
17 Commits
release-4.
...
release-2.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8664140275 | ||
![]() |
0b9640d471 | ||
![]() |
d66c88d59e | ||
![]() |
b92c152d30 | ||
![]() |
148ec32825 | ||
![]() |
8298b62f56 | ||
![]() |
53f46875d8 | ||
![]() |
a67caf1730 | ||
![]() |
6a38f69fad | ||
![]() |
d5bf2b2e1f | ||
![]() |
f6df1c7fed | ||
![]() |
fa88bce77d | ||
![]() |
571465ff7e | ||
![]() |
09a3f78a28 | ||
![]() |
f98520e6c2 | ||
![]() |
0211f3aee3 | ||
![]() |
0dcd33fb6d |
14
Changelog
14
Changelog
@@ -1,3 +1,17 @@
|
|||||||
|
* Sun Dec 19 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.5.2
|
||||||
|
- BUGFIX: Fix alternative speed icon staying pressed when disabled
|
||||||
|
- BUGFIX: Fix slot warning on startup
|
||||||
|
- BUGFIX: Fix alignment issues in program preferences
|
||||||
|
- BUGFIX: Make sure we don't move completed torrent to the temp directory
|
||||||
|
for checking (closes #602938)
|
||||||
|
- BUGFIX: Fix some 'File Not found' warning in the Web UI
|
||||||
|
- BUGFIX: Fix dangerous usage of vector iterator
|
||||||
|
- BUGFIX: No longer expand the first folder in the torrent content list
|
||||||
|
- BUGFIX: Fixes possible crash in the RSS Downloader dialog (closes #691426)
|
||||||
|
|
||||||
|
* Sun Dec 5 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.5.1
|
||||||
|
- BUGFIX: Fix possible crash when right-clicking on a torrent
|
||||||
|
|
||||||
* Sun Dec 5 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.5.0
|
* Sun Dec 5 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.5.0
|
||||||
- FEATURE: qBittorrent can now act as a tracker
|
- FEATURE: qBittorrent can now act as a tracker
|
||||||
- FEATURE: New and improved RSS feed automated downloader
|
- FEATURE: New and improved RSS feed automated downloader
|
||||||
|
5
configure
vendored
5
configure
vendored
@@ -32,7 +32,8 @@ Dependency options:
|
|||||||
executable (please follow
|
executable (please follow
|
||||||
instructions in
|
instructions in
|
||||||
src/geoip/README)
|
src/geoip/README)
|
||||||
--disable-qtsingleapplication Disable use of libboost
|
--disable-qtsingleapplication Disable use of
|
||||||
|
qtsingleapplication
|
||||||
--with-qtsingleapplication=[system|shipped] Use the shipped
|
--with-qtsingleapplication=[system|shipped] Use the shipped
|
||||||
qtsingleapplication library
|
qtsingleapplication library
|
||||||
or the system one
|
or the system one
|
||||||
@@ -609,7 +610,7 @@ public:
|
|||||||
#line 1 "qtsingleapplication.qcm"
|
#line 1 "qtsingleapplication.qcm"
|
||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: libboost
|
name: qtsingleapplication
|
||||||
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
|
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: libboost
|
name: qtsingleapplication
|
||||||
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
|
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Categories=Qt;Network;P2P;
|
Categories=Qt;Network;P2P;
|
||||||
Comment=V2.5.0
|
Comment=V2.5.2
|
||||||
Exec=qbittorrent %f
|
Exec=qbittorrent %f
|
||||||
GenericName=Bittorrent client
|
GenericName=Bittorrent client
|
||||||
GenericName[ar]=العميل Bittorrent
|
GenericName[ar]=العميل Bittorrent
|
||||||
|
@@ -47,7 +47,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>2.5.0</string>
|
<string>2.5.2</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
|
@@ -3986,12 +3986,12 @@ Please install it manually.</source>
|
|||||||
<translation>اضغط هنا لتشغيل حد السرعة البديل</translation>
|
<translation>اضغط هنا لتشغيل حد السرعة البديل</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>حد سرعة التحميل العامة</translation>
|
<translation>حد سرعة التحميل العامة</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>حد سرعة الرفع العامة</translation>
|
<translation>حد سرعة الرفع العامة</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3927,12 +3927,12 @@ Please install it manually.</source>
|
|||||||
<translation>Щракни за включване на други ограничения за скорост</translation>
|
<translation>Щракни за включване на други ограничения за скорост</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Общ лимит Скорост на сваляне</translation>
|
<translation>Общ лимит Скорост на сваляне</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Общ лимит Скорост на качване</translation>
|
<translation>Общ лимит Скорост на качване</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3758,12 +3758,12 @@ Si us plau, instal-li'l de forma manual.</translation>
|
|||||||
<translation>Click per activar els límits de velocitat alternativa</translation>
|
<translation>Click per activar els límits de velocitat alternativa</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Velocitat límit global de descàrrega</translation>
|
<translation>Velocitat límit global de descàrrega</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Velocitat límit global de pujada</translation>
|
<translation>Velocitat límit global de pujada</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3990,12 +3990,12 @@ Nainstalujte jej prosím ručně.</translation>
|
|||||||
<translation>Kliknutí zapne alternativní limity rychlosti</translation>
|
<translation>Kliknutí zapne alternativní limity rychlosti</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Celkový limit rychlosti stahování</translation>
|
<translation>Celkový limit rychlosti stahování</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Celkový limit rychlosti nahrávání</translation>
|
<translation>Celkový limit rychlosti nahrávání</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3500,12 +3500,12 @@ Please install it manually.</source>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Global begrænsning af downloadhastighed</translation>
|
<translation>Global begrænsning af downloadhastighed</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Global begrænsning af upload hastighed</translation>
|
<translation>Global begrænsning af upload hastighed</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3883,12 +3883,12 @@ Please install it manually.</source>
|
|||||||
<translation>Klicken um alternative Geschwindigkeitsbegrenzungen zu aktivieren</translation>
|
<translation>Klicken um alternative Geschwindigkeitsbegrenzungen zu aktivieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Begrenzung der globalen DL-Rate</translation>
|
<translation>Begrenzung der globalen DL-Rate</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Begrenzung der globalen UL-Rate</translation>
|
<translation>Begrenzung der globalen UL-Rate</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3938,12 +3938,12 @@ Please install it manually.</source>
|
|||||||
<translation>Κλικ για ενεργοποίηση εναλλακτικών ορίων ταχύτητας</translation>
|
<translation>Κλικ για ενεργοποίηση εναλλακτικών ορίων ταχύτητας</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Συνολικό Όριο Ταχύτητας Λήψης</translation>
|
<translation>Συνολικό Όριο Ταχύτητας Λήψης</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Συνολικό Όριο Ταχύτητας Αποστολής</translation>
|
<translation>Συνολικό Όριο Ταχύτητας Αποστολής</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3024,12 +3024,12 @@ Please install it manually.</source>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3762,12 +3762,12 @@ Por favor, instálelo de forma manual.</translation>
|
|||||||
<translation>Click para activar los límites de velocidad alternativa</translation>
|
<translation>Click para activar los límites de velocidad alternativa</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Velocidad límite global de descarga</translation>
|
<translation>Velocidad límite global de descarga</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Velocidad límite global de subida</translation>
|
<translation>Velocidad límite global de subida</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3896,12 +3896,12 @@ Asenna se itse.</translation>
|
|||||||
<translation>Napsauta ottaaksesi vaihtoehtoinen nopeusrajoitus käyttöön</translation>
|
<translation>Napsauta ottaaksesi vaihtoehtoinen nopeusrajoitus käyttöön</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Yleinen latausnopeusrajoitus</translation>
|
<translation>Yleinen latausnopeusrajoitus</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Yleinen lähetysnopeusrajoitus</translation>
|
<translation>Yleinen lähetysnopeusrajoitus</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3977,12 +3977,12 @@ Veuillez l'installer manuellement.</translation>
|
|||||||
<translation>Cliquer pour activer les limites de vitesse alternatives</translation>
|
<translation>Cliquer pour activer les limites de vitesse alternatives</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Limite globale de la vitesse de réception</translation>
|
<translation>Limite globale de la vitesse de réception</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Limite globale de la vitesse d'envoi</translation>
|
<translation>Limite globale de la vitesse d'envoi</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3933,12 +3933,12 @@ Kérlek telepítsd manuálisan.</translation>
|
|||||||
<translation>Alternatív sebesség korlátok engedélyezéséhez kattints ide</translation>
|
<translation>Alternatív sebesség korlátok engedélyezéséhez kattints ide</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Teljes letöltési sebesség korlát</translation>
|
<translation>Teljes letöltési sebesség korlát</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Teljes feltöltési sebesség korlát</translation>
|
<translation>Teljes feltöltési sebesség korlát</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -4019,12 +4019,12 @@ Per favore installalo manualmente.</translation>
|
|||||||
<translation>Clicca per abilitare i limiti alternativi di velocità</translation>
|
<translation>Clicca per abilitare i limiti alternativi di velocità</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>Limite globale download</translation>
|
<translation>Limite globale download</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>Limite globale upload</translation>
|
<translation>Limite globale upload</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3259,12 +3259,12 @@ Please install it manually.</source>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3564,12 +3564,12 @@ Please install it manually.</source>
|
|||||||
<translation>설정한 속도 제한을 사용하기</translation>
|
<translation>설정한 속도 제한을 사용하기</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation>전체 다운 속도 제한</translation>
|
<translation>전체 다운 속도 제한</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation>전체 업로드 속도 제한</translation>
|
<translation>전체 업로드 속도 제한</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@@ -3141,12 +3141,12 @@ Please install it manually.</source>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="226"/>
|
<location filename="../statusbar.h" line="227"/>
|
||||||
<source>Global Download Speed Limit</source>
|
<source>Global Download Speed Limit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../statusbar.h" line="246"/>
|
<location filename="../statusbar.h" line="247"/>
|
||||||
<source>Global Upload Speed Limit</source>
|
<source>Global Upload Speed Limit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -98,7 +98,7 @@ MainWindow::MainWindow(QWidget *parent, QStringList torrentCmdLine) : QMainWindo
|
|||||||
setWindowTitle(tr("qBittorrent %1", "e.g: qBittorrent v0.x").arg(QString::fromUtf8(VERSION)));
|
setWindowTitle(tr("qBittorrent %1", "e.g: qBittorrent v0.x").arg(QString::fromUtf8(VERSION)));
|
||||||
displaySpeedInTitle = pref.speedInTitleBar();
|
displaySpeedInTitle = pref.speedInTitleBar();
|
||||||
// Clean exit on log out
|
// Clean exit on log out
|
||||||
connect(static_cast<SessionApplication*>(qApp), SIGNAL(sessionIsShuttingDown()), this, SLOT(deleteQBtSession::instance()()));
|
connect(static_cast<SessionApplication*>(qApp), SIGNAL(sessionIsShuttingDown()), this, SLOT(deleteBTSession()));
|
||||||
// Setting icons
|
// Setting icons
|
||||||
this->setWindowIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent32.png")));
|
this->setWindowIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent32.png")));
|
||||||
actionOpen->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/open.png")));
|
actionOpen->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/open.png")));
|
||||||
@@ -515,7 +515,14 @@ void MainWindow::displayRSSTab() const {
|
|||||||
void MainWindow::askRecursiveTorrentDownloadConfirmation(const QTorrentHandle &h) {
|
void MainWindow::askRecursiveTorrentDownloadConfirmation(const QTorrentHandle &h) {
|
||||||
Preferences pref;
|
Preferences pref;
|
||||||
if(pref.recursiveDownloadDisabled()) return;
|
if(pref.recursiveDownloadDisabled()) return;
|
||||||
QMessageBox confirmBox(QMessageBox::Question, tr("Recursive download confirmation"), tr("The torrent %1 contains torrent files, do you want to proceed with their download?").arg(h.name()));
|
// Get Torrent name
|
||||||
|
QString torrent_name;
|
||||||
|
try {
|
||||||
|
torrent_name = h.name();
|
||||||
|
} catch(invalid_handle&){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QMessageBox confirmBox(QMessageBox::Question, tr("Recursive download confirmation"), tr("The torrent %1 contains torrent files, do you want to proceed with their download?").arg(torrent_name));
|
||||||
QPushButton *yes = confirmBox.addButton(tr("Yes"), QMessageBox::YesRole);
|
QPushButton *yes = confirmBox.addButton(tr("Yes"), QMessageBox::YesRole);
|
||||||
/*QPushButton *no = */confirmBox.addButton(tr("No"), QMessageBox::NoRole);
|
/*QPushButton *no = */confirmBox.addButton(tr("No"), QMessageBox::NoRole);
|
||||||
QPushButton *never = confirmBox.addButton(tr("Never"), QMessageBox::NoRole);
|
QPushButton *never = confirmBox.addButton(tr("Never"), QMessageBox::NoRole);
|
||||||
|
@@ -566,7 +566,7 @@
|
|||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">QGroupBox::title {
|
<string notr="true">QGroupBox::title {
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
margin-left: 10px;
|
margin-left: 0px;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
QGroupBox {
|
QGroupBox {
|
||||||
@@ -642,7 +642,7 @@ QGroupBox {
|
|||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">QGroupBox::title {
|
<string notr="true">QGroupBox::title {
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
margin-left: 10px;
|
margin-left: 0px;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
QGroupBox {
|
QGroupBox {
|
||||||
@@ -706,7 +706,7 @@ QGroupBox {
|
|||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">QGroupBox::title {
|
<string notr="true">QGroupBox::title {
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
margin-left: 10px;
|
margin-left: 0px;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
QGroupBox {
|
QGroupBox {
|
||||||
@@ -806,7 +806,7 @@ QGroupBox {
|
|||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">QGroupBox::title {
|
<string notr="true">QGroupBox::title {
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
margin-left: 10px;
|
margin-left: 0px;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
QGroupBox {
|
QGroupBox {
|
||||||
@@ -939,7 +939,7 @@ QGroupBox {
|
|||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>-51</y>
|
||||||
<width>507</width>
|
<width>507</width>
|
||||||
<height>485</height>
|
<height>485</height>
|
||||||
</rect>
|
</rect>
|
||||||
@@ -1797,7 +1797,7 @@ QGroupBox {
|
|||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>-25</y>
|
||||||
<width>570</width>
|
<width>570</width>
|
||||||
<height>422</height>
|
<height>422</height>
|
||||||
</rect>
|
</rect>
|
||||||
@@ -1814,7 +1814,7 @@ QGroupBox {
|
|||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">QGroupBox::title {
|
<string notr="true">QGroupBox::title {
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
margin-left: 10px;
|
margin-left: 0px;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
QGroupBox {
|
QGroupBox {
|
||||||
@@ -1836,7 +1836,7 @@ QGroupBox {
|
|||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">QGroupBox::title {
|
<string notr="true">QGroupBox::title {
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
margin-left: 10px;
|
margin-left: 0px;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
QGroupBox {
|
QGroupBox {
|
||||||
|
@@ -247,8 +247,6 @@ void PropertiesWidget::loadTorrentInfos(const QTorrentHandle &_h) {
|
|||||||
loadUrlSeeds();
|
loadUrlSeeds();
|
||||||
// List files in torrent
|
// List files in torrent
|
||||||
PropListModel->setupModelData(h.get_torrent_info());
|
PropListModel->setupModelData(h.get_torrent_info());
|
||||||
// Expand first item if possible
|
|
||||||
filesList->expand(PropListModel->index(0, 0));
|
|
||||||
}
|
}
|
||||||
} catch(invalid_handle& e) {
|
} catch(invalid_handle& e) {
|
||||||
|
|
||||||
|
@@ -321,18 +321,15 @@ void TrackerList::deleteSelectedTrackers(){
|
|||||||
delete item;
|
delete item;
|
||||||
}
|
}
|
||||||
// Iterate of trackers and remove selected ones
|
// Iterate of trackers and remove selected ones
|
||||||
|
std::vector<announce_entry> remaining_trackers;
|
||||||
std::vector<announce_entry> trackers = h.trackers();
|
std::vector<announce_entry> trackers = h.trackers();
|
||||||
std::vector<announce_entry>::iterator it = trackers.begin();
|
std::vector<announce_entry>::iterator it;
|
||||||
while(it != trackers.end()) {
|
for(it = trackers.begin(); it != trackers.end(); it++) {
|
||||||
int index = urls_to_remove.indexOf(misc::toQString((*it).url));
|
if(!urls_to_remove.contains(misc::toQString((*it).url))) {
|
||||||
if(index >= 0) {
|
remaining_trackers.push_back(*it);
|
||||||
trackers.erase(it);
|
|
||||||
urls_to_remove.removeAt(index);
|
|
||||||
} else {
|
|
||||||
it++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
h.replace_trackers(trackers);
|
h.replace_trackers(remaining_trackers);
|
||||||
h.force_reannounce();
|
h.force_reannounce();
|
||||||
// Reload Trackers
|
// Reload Trackers
|
||||||
loadTrackers();
|
loadTrackers();
|
||||||
|
@@ -1045,7 +1045,9 @@ QTorrentHandle QBtSession::addTorrent(QString path, bool fromScanDir, QString fr
|
|||||||
TorrentPersistentData::setRootFolder(hash, root_folder);
|
TorrentPersistentData::setRootFolder(hash, root_folder);
|
||||||
|
|
||||||
// If temp path is enabled, move torrent
|
// If temp path is enabled, move torrent
|
||||||
if(!defaultTempPath.isEmpty() && !resumed) {
|
// XXX: The torrent is moved after the torrent_checked_alert
|
||||||
|
// is received to make sure we don't move a completed torrent (#602938)
|
||||||
|
/*if(!defaultTempPath.isEmpty() && !resumed) {
|
||||||
qDebug("Temp folder is enabled, moving new torrent to temp folder");
|
qDebug("Temp folder is enabled, moving new torrent to temp folder");
|
||||||
QString torrent_tmp_path = defaultTempPath.replace("\\", "/");
|
QString torrent_tmp_path = defaultTempPath.replace("\\", "/");
|
||||||
if(!root_folder.isEmpty()) {
|
if(!root_folder.isEmpty()) {
|
||||||
@@ -1053,7 +1055,7 @@ QTorrentHandle QBtSession::addTorrent(QString path, bool fromScanDir, QString fr
|
|||||||
torrent_tmp_path += root_folder;
|
torrent_tmp_path += root_folder;
|
||||||
}
|
}
|
||||||
h.move_storage(torrent_tmp_path);
|
h.move_storage(torrent_tmp_path);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
loadTorrentSettings(h);
|
loadTorrentSettings(h);
|
||||||
|
|
||||||
@@ -1362,7 +1364,7 @@ void QBtSession::loadSessionState() {
|
|||||||
}
|
}
|
||||||
#if LIBTORRENT_VERSION_MINOR > 14
|
#if LIBTORRENT_VERSION_MINOR > 14
|
||||||
std::vector<char> in;
|
std::vector<char> in;
|
||||||
if (load_file(state_path.toLocal8Bit().constData(), in) == 0)
|
if (load_file(state_path.toUtf8().constData(), in) == 0)
|
||||||
{
|
{
|
||||||
lazy_entry e;
|
lazy_entry e;
|
||||||
#if LIBTORRENT_VERSION_MINOR > 15
|
#if LIBTORRENT_VERSION_MINOR > 15
|
||||||
@@ -1376,7 +1378,7 @@ void QBtSession::loadSessionState() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
boost::filesystem::ifstream ses_state_file(state_path.toLocal8Bit().constData()
|
boost::filesystem::ifstream ses_state_file(state_path.toUtf8().constData()
|
||||||
, std::ios_base::binary);
|
, std::ios_base::binary);
|
||||||
ses_state_file.unsetf(std::ios_base::skipws);
|
ses_state_file.unsetf(std::ios_base::skipws);
|
||||||
s->load_state(bdecode(
|
s->load_state(bdecode(
|
||||||
@@ -1395,13 +1397,13 @@ void QBtSession::saveSessionState() {
|
|||||||
bencode(std::back_inserter(out), session_state);
|
bencode(std::back_inserter(out), session_state);
|
||||||
file f;
|
file f;
|
||||||
error_code ec;
|
error_code ec;
|
||||||
if (!f.open(state_path.toLocal8Bit().constData(), file::write_only, ec)) return;
|
if (!f.open(state_path.toUtf8().constData(), file::write_only, ec)) return;
|
||||||
if (ec) return;
|
if (ec) return;
|
||||||
file::iovec_t b = {&out[0], out.size()};
|
file::iovec_t b = {&out[0], out.size()};
|
||||||
f.writev(0, &b, 1, ec);
|
f.writev(0, &b, 1, ec);
|
||||||
#else
|
#else
|
||||||
entry session_state = s->state();
|
entry session_state = s->state();
|
||||||
boost::filesystem::ofstream out(state_path.toLocal8Bit().constData()
|
boost::filesystem::ofstream out(state_path.toUtf8().constData()
|
||||||
, std::ios_base::binary);
|
, std::ios_base::binary);
|
||||||
out.unsetf(std::ios_base::skipws);
|
out.unsetf(std::ios_base::skipws);
|
||||||
bencode(std::ostream_iterator<char>(out), session_state);
|
bencode(std::ostream_iterator<char>(out), session_state);
|
||||||
@@ -1416,7 +1418,7 @@ bool QBtSession::enableDHT(bool b) {
|
|||||||
entry dht_state;
|
entry dht_state;
|
||||||
const QString dht_state_path = misc::cacheLocation()+QDir::separator()+QString::fromUtf8("dht_state");
|
const QString dht_state_path = misc::cacheLocation()+QDir::separator()+QString::fromUtf8("dht_state");
|
||||||
if(QFile::exists(dht_state_path)) {
|
if(QFile::exists(dht_state_path)) {
|
||||||
boost::filesystem::ifstream dht_state_file(dht_state_path.toLocal8Bit().constData(), std::ios_base::binary);
|
boost::filesystem::ifstream dht_state_file(dht_state_path.toUtf8().constData(), std::ios_base::binary);
|
||||||
dht_state_file.unsetf(std::ios_base::skipws);
|
dht_state_file.unsetf(std::ios_base::skipws);
|
||||||
try{
|
try{
|
||||||
dht_state = bdecode(std::istream_iterator<char>(dht_state_file), std::istream_iterator<char>());
|
dht_state = bdecode(std::istream_iterator<char>(dht_state_file), std::istream_iterator<char>());
|
||||||
@@ -1900,23 +1902,23 @@ void QBtSession::setProxySettings(const proxy_settings &proxySettings) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QBtSession::recursiveTorrentDownload(const QTorrentHandle &h) {
|
void QBtSession::recursiveTorrentDownload(const QTorrentHandle &h) {
|
||||||
torrent_info::file_iterator it;
|
try {
|
||||||
for(it = h.get_torrent_info().begin_files(); it != h.get_torrent_info().end_files(); it++) {
|
torrent_info::file_iterator it;
|
||||||
const QString torrent_relpath = h.filepath(*it);
|
for(it = h.get_torrent_info().begin_files(); it != h.get_torrent_info().end_files(); it++) {
|
||||||
if(torrent_relpath.endsWith(".torrent")) {
|
const QString torrent_relpath = h.filepath(*it);
|
||||||
addConsoleMessage(tr("Recursive download of file %1 embedded in torrent %2", "Recursive download of test.torrent embedded in torrent test2").arg(torrent_relpath).arg(h.name()));
|
if(torrent_relpath.endsWith(".torrent")) {
|
||||||
const QString torrent_fullpath = h.save_path()+QDir::separator()+torrent_relpath;
|
addConsoleMessage(tr("Recursive download of file %1 embedded in torrent %2", "Recursive download of test.torrent embedded in torrent test2").arg(torrent_relpath).arg(h.name()));
|
||||||
try {
|
const QString torrent_fullpath = h.save_path()+QDir::separator()+torrent_relpath;
|
||||||
|
|
||||||
boost::intrusive_ptr<torrent_info> t = new torrent_info(torrent_fullpath.toUtf8().constData());
|
boost::intrusive_ptr<torrent_info> t = new torrent_info(torrent_fullpath.toUtf8().constData());
|
||||||
const QString sub_hash = misc::toQString(t->info_hash());
|
const QString sub_hash = misc::toQString(t->info_hash());
|
||||||
// Passing the save path along to the sub torrent file
|
// Passing the save path along to the sub torrent file
|
||||||
TorrentTempData::setSavePath(sub_hash, h.save_path());
|
TorrentTempData::setSavePath(sub_hash, h.save_path());
|
||||||
addTorrent(torrent_fullpath);
|
addTorrent(torrent_fullpath);
|
||||||
} catch(std::exception&) {
|
|
||||||
qDebug("Caught error loading torrent");
|
|
||||||
addConsoleMessage(tr("Unable to decode %1 torrent file.").arg(torrent_fullpath), QString::fromUtf8("red"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch(std::exception&) {
|
||||||
|
qDebug("Caught error loading torrent");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2332,6 +2334,7 @@ void QBtSession::readAlerts() {
|
|||||||
const QDir current_dir(h.save_path());
|
const QDir current_dir(h.save_path());
|
||||||
const QDir save_dir(getSavePath(h.hash()));
|
const QDir save_dir(getSavePath(h.hash()));
|
||||||
if(current_dir == save_dir) {
|
if(current_dir == save_dir) {
|
||||||
|
qDebug("Moving the torrent to the temp directory...");
|
||||||
QString root_folder = TorrentPersistentData::getRootFolder(hash);
|
QString root_folder = TorrentPersistentData::getRootFolder(hash);
|
||||||
QString torrent_tmp_path = defaultTempPath.replace("\\", "/");
|
QString torrent_tmp_path = defaultTempPath.replace("\\", "/");
|
||||||
if(!root_folder.isEmpty()) {
|
if(!root_folder.isEmpty()) {
|
||||||
|
@@ -126,10 +126,16 @@ void AutomatedRssDownloader::loadFeedList()
|
|||||||
const RssSettings settings;
|
const RssSettings settings;
|
||||||
const QStringList feed_aliases = settings.getRssFeedsAliases();
|
const QStringList feed_aliases = settings.getRssFeedsAliases();
|
||||||
const QStringList feed_urls = settings.getRssFeedsUrls();
|
const QStringList feed_urls = settings.getRssFeedsUrls();
|
||||||
|
QStringList existing_urls;
|
||||||
for(int i=0; i<feed_aliases.size(); ++i) {
|
for(int i=0; i<feed_aliases.size(); ++i) {
|
||||||
|
QString feed_url = feed_urls.at(i);
|
||||||
|
feed_url = feed_url.split("\\").last();
|
||||||
|
qDebug() << Q_FUNC_INFO << feed_url;
|
||||||
|
if(existing_urls.contains(feed_url)) continue;
|
||||||
QListWidgetItem *item = new QListWidgetItem(feed_aliases.at(i), ui->listFeeds);
|
QListWidgetItem *item = new QListWidgetItem(feed_aliases.at(i), ui->listFeeds);
|
||||||
item->setData(Qt::UserRole, feed_urls.at(i));
|
item->setData(Qt::UserRole, feed_url);
|
||||||
item->setFlags(item->flags()|Qt::ItemIsUserCheckable);
|
item->setFlags(item->flags()|Qt::ItemIsUserCheckable);
|
||||||
|
existing_urls << feed_url;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -438,8 +444,12 @@ void AutomatedRssDownloader::updateMatchingArticles()
|
|||||||
RssDownloadRule rule = m_ruleList->getRule(rule_item->text());
|
RssDownloadRule rule = m_ruleList->getRule(rule_item->text());
|
||||||
if(!rule.isValid()) continue;
|
if(!rule.isValid()) continue;
|
||||||
foreach(const QString &feed_url, rule.rssFeeds()) {
|
foreach(const QString &feed_url, rule.rssFeeds()) {
|
||||||
|
qDebug() << Q_FUNC_INFO << feed_url;
|
||||||
Q_ASSERT(all_feeds.contains(feed_url));
|
Q_ASSERT(all_feeds.contains(feed_url));
|
||||||
|
if(!all_feeds.contains(feed_url)) continue;
|
||||||
const RssFeed *feed = all_feeds.value(feed_url);
|
const RssFeed *feed = all_feeds.value(feed_url);
|
||||||
|
Q_ASSERT(feed);
|
||||||
|
if(!feed) continue;
|
||||||
const QStringList matching_articles = rule.findMatchingArticles(feed);
|
const QStringList matching_articles = rule.findMatchingArticles(feed);
|
||||||
if(!matching_articles.isEmpty())
|
if(!matching_articles.isEmpty())
|
||||||
addFeedArticlesToTree(feed, matching_articles);
|
addFeedArticlesToTree(feed, matching_articles);
|
||||||
|
@@ -28,6 +28,8 @@
|
|||||||
* Contact: chris@qbittorrent.org, arnaud@qbittorrent.org
|
* Contact: chris@qbittorrent.org, arnaud@qbittorrent.org
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
#include "rssfolder.h"
|
#include "rssfolder.h"
|
||||||
#include "rssarticle.h"
|
#include "rssarticle.h"
|
||||||
#include "qbtsession.h"
|
#include "qbtsession.h"
|
||||||
@@ -268,7 +270,9 @@ QHash<QString, RssFeed*> RssFolder::getAllFeedsAsHash() const {
|
|||||||
QHash<QString, RssFeed*> ret;
|
QHash<QString, RssFeed*> ret;
|
||||||
foreach(RssFile *item, this->values()) {
|
foreach(RssFile *item, this->values()) {
|
||||||
if(item->getType() == RssFile::FEED) {
|
if(item->getType() == RssFile::FEED) {
|
||||||
RssFeed* feed = static_cast<RssFeed*>(item);
|
RssFeed* feed = dynamic_cast<RssFeed*>(item);
|
||||||
|
Q_ASSERT(feed);
|
||||||
|
qDebug() << Q_FUNC_INFO << feed->getUrl();
|
||||||
ret[feed->getUrl()] = feed;
|
ret[feed->getUrl()] = feed;
|
||||||
} else {
|
} else {
|
||||||
ret.unite(static_cast<RssFolder*>(item)->getAllFeedsAsHash());
|
ret.unite(static_cast<RssFolder*>(item)->getAllFeedsAsHash());
|
||||||
|
@@ -214,6 +214,7 @@ public slots:
|
|||||||
} else {
|
} else {
|
||||||
altSpeedsBtn->setIcon(QIcon(":/Icons/slow_off.png"));
|
altSpeedsBtn->setIcon(QIcon(":/Icons/slow_off.png"));
|
||||||
altSpeedsBtn->setToolTip(tr("Click to enable alternative speed limits"));
|
altSpeedsBtn->setToolTip(tr("Click to enable alternative speed limits"));
|
||||||
|
altSpeedsBtn->setDown(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -217,9 +217,11 @@ void HttpConnection::respond() {
|
|||||||
} else {
|
} else {
|
||||||
if(list[1] == "preferences") {
|
if(list[1] == "preferences") {
|
||||||
respondPreferencesJson();
|
respondPreferencesJson();
|
||||||
|
return;
|
||||||
} else {
|
} else {
|
||||||
if(list[1] == "transferInfo") {
|
if(list[1] == "transferInfo") {
|
||||||
respondGlobalTransferInfoJson();
|
respondGlobalTransferInfoJson();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user