You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-28 14:50:53 +01:00
Compare commits
24 Commits
release-3.
...
release-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
697d2ccb71 | ||
|
|
71d163d743 | ||
|
|
83685942de | ||
|
|
6f34c81014 | ||
|
|
5e826dffc8 | ||
|
|
b4dc66020c | ||
|
|
cb4741ed89 | ||
|
|
4c3976e5df | ||
|
|
fd7fb115ff | ||
|
|
197d5b3a05 | ||
|
|
624d6aa6a1 | ||
|
|
28d7dc137b | ||
|
|
351d84e2f7 | ||
|
|
774b8f4fd6 | ||
|
|
2fc6470696 | ||
|
|
1038b00553 | ||
|
|
c3b37b4f1f | ||
|
|
41faf341cc | ||
|
|
44e92a7f3d | ||
|
|
599f956269 | ||
|
|
79a9606e86 | ||
|
|
5b576baf67 | ||
|
|
aa3ce90478 | ||
|
|
2c433e35b0 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,6 +1,6 @@
|
|||||||
src/geoip/GeoIP.dat
|
src/geoip/GeoIP.dat
|
||||||
src/qbittorrent
|
src/qbittorrent
|
||||||
qbittorrent.pro.user*
|
qbittorrent.pro.user
|
||||||
conf.pri
|
conf.pri
|
||||||
Makefile
|
Makefile
|
||||||
*.pyc
|
*.pyc
|
||||||
@@ -12,4 +12,3 @@ moc_*.cpp
|
|||||||
qrc_*.cpp
|
qrc_*.cpp
|
||||||
ui_*.h
|
ui_*.h
|
||||||
*.moc
|
*.moc
|
||||||
src/lang/qbittorrent_*.qm
|
|
||||||
|
|||||||
53
.travis.yml
53
.travis.yml
@@ -1,53 +0,0 @@
|
|||||||
language:
|
|
||||||
- cpp
|
|
||||||
|
|
||||||
env:
|
|
||||||
# use libtorrent 0.15.10
|
|
||||||
- lt_source=from_dist gui=true
|
|
||||||
- lt_source=from_dist gui=false
|
|
||||||
# use libtorrent 0.16.X from RC_0_16 svn branch
|
|
||||||
- lt_source=from_svn gui=true
|
|
||||||
- lt_source=from_svn gui=false
|
|
||||||
|
|
||||||
branches:
|
|
||||||
except:
|
|
||||||
- search_encoding_windows
|
|
||||||
- v2_9_x
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
email:
|
|
||||||
on_success: change
|
|
||||||
on_failure: change
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- shopt -s expand_aliases
|
|
||||||
- alias sudo="sudo "
|
|
||||||
# Using nprocs/2 sometimes may fail (gcc is killed by system), just use two threads
|
|
||||||
- alias make="colormake -j2 "
|
|
||||||
|
|
||||||
# Also setup a virtual display for after_success target when gui == true
|
|
||||||
- if ! $gui; then qbtconf="$qbtconf --disable-gui"; else export "DISPLAY=:99.0" && /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 ; fi
|
|
||||||
- ltconf=" --with-libgeoip=system"
|
|
||||||
|
|
||||||
- echo settings
|
|
||||||
- echo $lt_source
|
|
||||||
- echo $ltconf
|
|
||||||
- echo $gui
|
|
||||||
- echo $qbtconf
|
|
||||||
|
|
||||||
- sudo apt-get -qq update
|
|
||||||
# Travis can stall during heavy load if these packages are installed in one step - split the command
|
|
||||||
- sudo apt-get -qq install debhelper qconf colormake libssl-dev libgeoip-dev
|
|
||||||
- sudo apt-get -qq install libboost-dev libboost-filesystem-dev libboost-system-dev
|
|
||||||
- sudo apt-get -qq install libqt4-dev
|
|
||||||
|
|
||||||
install:
|
|
||||||
- if [[ "$lt_source" == "from_dist" ]]; then sudo apt-get -qq install libtorrent-rasterbar-dev; fi
|
|
||||||
- if [[ "$lt_source" == "from_svn" ]]; then cd .. && svn co svn://svn.code.sf.net/p/libtorrent/code/branches/RC_0_16 ./libtorrent && (cd libtorrent && ./autotool.sh && ./configure $ltconf && sudo make install) && sudo ldconfig /usr/local/lib && cd $TRAVIS_BUILD_DIR ; fi
|
|
||||||
|
|
||||||
script:
|
|
||||||
- qt-qconf
|
|
||||||
- ./configure $qbtconf && sudo make install
|
|
||||||
|
|
||||||
after_success:
|
|
||||||
- if $gui ; then qbittorrent --version ; else qbittorrent-nox --version ; fi
|
|
||||||
18
.tx/config
18
.tx/config
@@ -1,18 +0,0 @@
|
|||||||
[main]
|
|
||||||
host = https://www.transifex.com
|
|
||||||
|
|
||||||
[qbittorrent.qbittorrent_v3_1_x]
|
|
||||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
|
||||||
source_file = src/lang/qbittorrent_en.ts
|
|
||||||
source_lang = en
|
|
||||||
type = QT
|
|
||||||
minimum_perc = 23
|
|
||||||
mode = developer
|
|
||||||
|
|
||||||
|
|
||||||
[qbittorrent.qbittorrentdesktop_master]
|
|
||||||
source_file = src/Icons/qBittorrent.desktop
|
|
||||||
source_lang = en
|
|
||||||
type = DESKTOP
|
|
||||||
minimum_perc = 23
|
|
||||||
mode = developer
|
|
||||||
45
AUTHORS
45
AUTHORS
@@ -1,7 +1,4 @@
|
|||||||
Current maintainer:
|
Author:
|
||||||
* Sledgehammer999 <sledgehammer999@qbittorrent.org>
|
|
||||||
|
|
||||||
Original author:
|
|
||||||
* Christophe Dumez <chris@qbittorrent.org>
|
* Christophe Dumez <chris@qbittorrent.org>
|
||||||
|
|
||||||
Contributors:
|
Contributors:
|
||||||
@@ -14,7 +11,6 @@ Contributors:
|
|||||||
* Grigis Gaëtan <cipher16@gmail.com>
|
* Grigis Gaëtan <cipher16@gmail.com>
|
||||||
* Christian Kandeler <zambesi@users.sourceforge.net>
|
* Christian Kandeler <zambesi@users.sourceforge.net>
|
||||||
* Silvan Scherrer <silvan.scherrer@aroa.ch>
|
* Silvan Scherrer <silvan.scherrer@aroa.ch>
|
||||||
* Nick Tiskov <daymansmail@gmail.com>
|
|
||||||
|
|
||||||
Code from other projects:
|
Code from other projects:
|
||||||
* files src/qtsingleapp/* src/lineedit/*
|
* files src/qtsingleapp/* src/lineedit/*
|
||||||
@@ -29,10 +25,6 @@ Code from other projects:
|
|||||||
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
||||||
license: BSD
|
license: BSD
|
||||||
|
|
||||||
* file src/stacktrace_win.h
|
|
||||||
copyright: Quassel Project
|
|
||||||
license: GPLv2/3
|
|
||||||
|
|
||||||
Images Authors:
|
Images Authors:
|
||||||
* files: src/Icons/*.png
|
* files: src/Icons/*.png
|
||||||
copyright: Gnome Icon Theme
|
copyright: Gnome Icon Theme
|
||||||
@@ -79,46 +71,39 @@ Images Authors:
|
|||||||
|
|
||||||
Translations authors:
|
Translations authors:
|
||||||
* files: src/lang/*.ts
|
* files: src/lang/*.ts
|
||||||
* file: src/Icons/qBittorrent.desktop
|
|
||||||
copyright:
|
copyright:
|
||||||
- Arabic: SDERAWI (abz8868@msn.com), sn51234 (nesseyan@gmail.com) and Ibrahim Saed ibraheem_alex(Transifex)
|
- Arabic: SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)
|
||||||
- Armenian: Hrant Ohanyan (hrantohanyan@mail.am)
|
- Armenian: Hrant Ohanyan (hrantohanyan@mail.am)
|
||||||
- Basque: Xabier Aramendi (azpidatziak@gmail.com)
|
- Brazilian: Nick Marinho (nickmarinho@gmail.com)
|
||||||
- Belarusian: Mihas Varantsou (meequz@gmail.com)
|
|
||||||
- Bulgarian: Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)
|
- Bulgarian: Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)
|
||||||
- Catalan: Francisco Luque Contreras (frannoe@ya.com)
|
- Catalan: Francisco Luque Contreras (frannoe@ya.com)
|
||||||
- Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com)
|
- Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com)
|
||||||
- Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com) and 冥王歐西里斯 s8321414(Transifex)
|
- Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com)
|
||||||
- Croatian: Oliver Mucafir (oliver.untwist@gmail.com)
|
- Croatian: Oliver Mucafir (oliver.untwist@gmail.com)
|
||||||
- Czech: Jirka Vilim (web@tets.cz) and Petr Cernobila abr(Transifex)
|
- Czech: Jirka Vilim (web@tets.cz)
|
||||||
- Danish: Mathias Nielsen (comoneo@gmail.com)
|
- Danish: Mathias Nielsen (comoneo@gmail.com)
|
||||||
- Dutch: Pieter Heyvaert (pieter_heyvaert@hotmail.com)
|
- Dutch: Pieter Heyvaert (pieter_heyvaert@hotmail.com)
|
||||||
- English: Christophe Dumez (chris@qbittorrent.org)
|
- English: Christophe Dumez (chris@qbittorrent.org)
|
||||||
- English(Australia): Robert Readman readmanr(Transifex)
|
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
|
||||||
- English(United Kingdom): Robert Readman readmanr(Transifex)
|
|
||||||
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net), Pekka Niemi (pekka.niemi@iki.fi) and Jiri Grönroos artnay(Transifex)
|
|
||||||
- French: Christophe Dumez (chris@qbittorrent.org)
|
- French: Christophe Dumez (chris@qbittorrent.org)
|
||||||
- Galician: Marcos Lans (marcoslansgarza@gmail.com) and antiparvos(Transifex)
|
- Galician: Marcos Lans (marcoslansgarza@gmail.com)
|
||||||
- Georgian: Beqa Arabuli (arabulibeqa@yahoo.com)
|
- Georgian: Beqa Arabuli (arabulibeqa@yahoo.com)
|
||||||
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
|
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
|
||||||
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net), Stephanos Antaris (santaris@csd.auth.gr), sledgehammer999(hammered999@gmail.com) and Γιάννης Ανθυμίδης Evropi(Transifex)
|
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net) and Stephanos Antaris (santaris@csd.auth.gr)
|
||||||
- Hebrew: David Deutsch (d.deffo@gmail.com)
|
|
||||||
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
|
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
|
||||||
- Italian: bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)
|
- Italian: Matteo Sechi (bu17714@gmail.com)
|
||||||
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
|
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
|
||||||
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
||||||
- Lithuanian: Naglis Jonaitis (njonaitis@gmail.com)
|
- Lithuanian: Naglis Jonaitis (njonaitis@gmail.com)
|
||||||
- Norwegian: Tomaso
|
- Norwegian: Tomaso
|
||||||
- Polish: Mariusz Fik (fisiu@opensuse.org)
|
- Polish: Mariusz Fik (fisiu@opensuse.org)
|
||||||
- Portuguese: Sérgio Marques smarquespt(Transifex)
|
- Portuguese: Nick Marinho (nickmarinho@gmail.com)
|
||||||
- Portuguese(Brazil): Nick Marinho (nickmarinho@gmail.com)
|
- Romanian: Obada Denis (obadadenis@users.sourceforge.net)
|
||||||
- Romanian: Obada Denis (obadadenis@users.sourceforge.net), Adrian Gabor Adriannho(Transifex) and Mihai Coman z0id(Transifex)
|
- Russian: Nick Khazov (m2k3d0n at users.sourceforge.net)
|
||||||
- Russian: Nick Khazov (m2k3d0n at users.sourceforge.net), Alexey Morsov (samurai@ricom.ru), Nick Tiskov Dayman(daymansmail (at) gmail (dot) com), Dmitry DmitryKX(Transifex) and kraleksandr kraleksandr(Transifex)
|
|
||||||
- Serbian: Anaximandar Milet (anaximandar at operamail.com)
|
- Serbian: Anaximandar Milet (anaximandar at operamail.com)
|
||||||
- Slovak: helix84
|
- Slovak: helix84
|
||||||
- Spanish: Francisco Luque Contreras (frannoe@ya.com), Alfredo Monclus alfrix(Transifex) and José Antonio Moray moray33(Transifex)
|
- Spanish: Francisco Luque Contreras (frannoe@ya.com)
|
||||||
- Swedish: Daniel Nylander (po@danielnylander.se) and Emil Hammarberg Ooglogput(Transifex)
|
- Swedish: Daniel Nylander (po@danielnylander.se)
|
||||||
- Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
|
- Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
|
||||||
- Ukrainian: Oleh Prypin (blaxpirit@gmail.com) and zubr139(Transifex)
|
- Ukrainian: Andrey Shpachenko (masterfix@users.sourceforge.net) and Oleh Prypin (blaxpirit@gmail.com)
|
||||||
- Vietnamese: Anh Phan ppanhh(Transifex)
|
|
||||||
license: GPLv2
|
license: GPLv2
|
||||||
|
|||||||
10
COPYING
10
COPYING
@@ -69,7 +69,7 @@ patent must be licensed for everyone's free use or not licensed at all.
|
|||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
The precise terms and conditions for copying, distribution and
|
||||||
modification follow.
|
modification follow.
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ above, provided that you also meet all of these conditions:
|
|||||||
License. (Exception: if the Program itself is interactive but
|
License. (Exception: if the Program itself is interactive but
|
||||||
does not normally print such an announcement, your work based on
|
does not normally print such an announcement, your work based on
|
||||||
the Program is not required to print an announcement.)
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
These requirements apply to the modified work as a whole. If
|
||||||
identifiable sections of that work are not derived from the Program,
|
identifiable sections of that work are not derived from the Program,
|
||||||
and can be reasonably considered independent and separate works in
|
and can be reasonably considered independent and separate works in
|
||||||
@@ -182,7 +182,7 @@ access to copy from a designated place, then offering equivalent
|
|||||||
access to copy the source code from the same place counts as
|
access to copy the source code from the same place counts as
|
||||||
distribution of the source code, even though third parties are not
|
distribution of the source code, even though third parties are not
|
||||||
compelled to copy the source along with the object code.
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
except as expressly provided under this License. Any attempt
|
except as expressly provided under this License. Any attempt
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
@@ -239,7 +239,7 @@ impose that choice.
|
|||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
This section is intended to make thoroughly clear what is believed to
|
||||||
be a consequence of the rest of this License.
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
original copyright holder who places the Program under this License
|
original copyright holder who places the Program under this License
|
||||||
@@ -292,7 +292,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|||||||
POSSIBILITY OF SUCH DAMAGES.
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
|||||||
87
Changelog
87
Changelog
@@ -1,74 +1,23 @@
|
|||||||
* Tue Nov 05 2013 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.2
|
* Thu Dec 29 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.3
|
||||||
- BUGFIX: Fix WebUI gzip compression. Closes #1037. (sledgehammer999)
|
- BUGFIX: Fix btdigg plugin (Python3 support + torrent name in magnet links)
|
||||||
- BUGFIX: Fix compilation with qt < 4.8.0. Closes #1043. (sledgehammer999)
|
- BUGFIX: Fix banning of IPv6 peers (Closes #885021)
|
||||||
- OTHER: Updated translations.
|
- BUGFIX: Fix torrent addition dialog layout problem (Closes #84650522)
|
||||||
|
- BUGFIX: Do not report any progress for disabled files (Closes #56731485)
|
||||||
|
- BUGFIX: Make torrent sorting case insensitive (Closes #857154)
|
||||||
|
- BUGFIX: Improve Web UI usability of small devices
|
||||||
|
- BUGFIX: Program updater: More reliable version detection / comparison
|
||||||
|
- I18N: Add Georgian translation
|
||||||
|
|
||||||
* Mon Oct 28 2013 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.1
|
* Sat Oct 29 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.2
|
||||||
- FEATURE: Show external IP in the log. Closes #968. (sledgehammer999)
|
- BUGFIX: Fix mimimum dimensions for torrent addition dialog
|
||||||
- FEATURE: Enable gzip compression in the webui. It should be faster now. (sledgehammer999)
|
- BUGFIX: Remove dependency on boost-datetime
|
||||||
- FEATURE: Torrents show more states(queued for checking, downloading metadata, allocating, checking resume). (sledgehammer999)
|
- BUGFIX: Remove dependency on boost-filesystem (libtorrent v0.16.x)
|
||||||
- FEATURE: Reenable "force reannounce" to all trackers. (sledgehammer999)
|
|
||||||
- FEATURE: Allow to clear the UI lock password. Closes #973. (sledgehammer999)
|
|
||||||
- FEATURE: New translations: English(Australia) and English(United Kingdom)
|
|
||||||
- BUGFIX: Expose all available translation in the WebUI. Closes #976. (sledgehammer999)
|
|
||||||
- BUGFIX: Copy IP copied wrong data. Closes #970 (sledgehammer999)
|
|
||||||
- BUGFIX: "Preview file..." didn't work on single file torrents. (sledgehammer999)
|
|
||||||
- BUGFIX: Fix and improve the scheduler (Gelmir and sledgehammer999)
|
|
||||||
- BUGFIX: RSS fixes. Closes #960, #998 (Gelmir)
|
|
||||||
- BUGFIX: Fix 'append label to save path' with magnet links. (sledgehammer999)
|
|
||||||
- BUGFIX: Can download up to 10MB .torrent file when a link is provided. Closes #879 (sledgehammer999)
|
|
||||||
- OTHER: Updated translations.
|
|
||||||
- LINUX: Fix missing conf.pri error (leigh123linux)
|
|
||||||
- WINDOWS: Don't remove file associations if they aren't our own. (sledgehammer999)
|
|
||||||
|
|
||||||
* Sat Oct 12 2013 - Christophe Dumez <chris@qbittorrent.org> and sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.0
|
* Sun Oct 23 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.1
|
||||||
- FEATURE: Add command line option to daemonize qbittorrent-nox (ngaro)
|
- BUGFIX: Add support for speed limits scheduling (Web UI)
|
||||||
- FEATURE: Add "Shutdown qBittorrent" button to Web UI (ngaro)
|
- BUGFIX: Fix ratio calculation for purely seeded torrents
|
||||||
- FEATURE: Add setting to copy .torrent files for finished downloads (Driim)
|
- I18N: Update Russian translation
|
||||||
- FEATURE: Add option to start qBittorrent on Windows startup (sledgehammer999)
|
- COSMETIC: Torrent addition dialog layout fixes
|
||||||
- FEATURE: Add context menu to Web seed list (Gelmir)
|
|
||||||
- FEATURE: Add support for tracker tiers / groups to creator (Gelmir)
|
|
||||||
- FEATURE: Allow clearing execution and ban logs (Gelmir)
|
|
||||||
- FEATURE: Add option to use random port on each startup (ireallylikeher)
|
|
||||||
- FEATURE: Expose the cache expiry to the user (Gelmir)
|
|
||||||
- FEATURE: Support Atom feeds (Gelmir)
|
|
||||||
- FEATURE: Add "save path" column (John Peterson)
|
|
||||||
- FEATURE: Add μTorrent-compatible "Flags" column in the peer tab(sledgehammer999)
|
|
||||||
- FEATURE: Load magnet metadata in the background while the "Add New Torrent" Dialog is showing (Gelmir)
|
|
||||||
- FEATURE: Allow to enter only an info-hash for download(sledgehammer999)
|
|
||||||
- FEATURE: Bring the "Add New Torrent" Dialog to the front(glassez)
|
|
||||||
- BUGFIX: Add confirmation dialog for "Force recheck" action (closes #131)
|
|
||||||
- BUGFIX: Greatly improve RSS manager performance (closes #34)
|
|
||||||
- BUGFIX: Ensure that all columns in the tranferlist have a size > 0.
|
|
||||||
- BUGFIX: Don't mark RSS item as read when it failed to download (Gelmir)
|
|
||||||
- BUGFIX: Fix ETA calculation when some files are downloaded and marked afterwards as 'do not download'(sledgehammer999)
|
|
||||||
- BUGFIX: Make the UI show that PEX/DHT/LSD are actually disabled on private torrents(sledgehammer999)
|
|
||||||
- BUGFIX: Scheduler should be much more robust and correct now(sledgehammer999)
|
|
||||||
- BUGFIX: Now qBt won't forget torrent settings after an unclean shutdown(sledgehammer999)
|
|
||||||
- BUGFIX: Text boxes in edit dialogs will fit to text width(Gelmir)
|
|
||||||
- BUGFIX: Enable edit/rename via F2 or double click in various places(Gelmir)
|
|
||||||
- BUGFIX: Allow to edit trackers and copy their urls(Gelmir and Driim)
|
|
||||||
- BUGFIX: Add Uploaded column to main view(Gelmir)
|
|
||||||
- BUGFIX: Calculate ETA for seeding torrents(Gelmir)
|
|
||||||
- BUGFIX: Add option to ignore global share ratio limits for created torrents(Gelmir)
|
|
||||||
- OTHER: Many RSS bugfixes and improvements all over the place(Gelmir)
|
|
||||||
- OTHER: Generate translations at configure time to reduce tarball size
|
|
||||||
- OTHER: Make peer tab sortable by ip too (Gelmir)
|
|
||||||
- OTHER: Translations moved to Transifex(https://www.transifex.com/projects/p/qbittorrent/)
|
|
||||||
- OTHER: New Translation - Vietnamese (Anh Phan)
|
|
||||||
- PERFORMANCE: Impove drawing speed of tranferlist when there are many torrents(>100)
|
|
||||||
- PERFORMANCE: Impove drawing speed of peers list when there are many peers
|
|
||||||
|
|
||||||
* Thu Aug 09 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.0
|
|
||||||
- FEATURE: Brand new torrent addition dialog
|
|
||||||
- FEATURE: Add the ability to choose the save path when using magnet links (mutoso)
|
|
||||||
- FEATURE: Add support for adding multiple local torrents at once (Web UI)
|
|
||||||
- COSMETIC: Improve style of left panel
|
|
||||||
- BUGFIX: Lower panels no longer gets disabled
|
|
||||||
- BUGFIX: Major code refactoring and various optimizations.
|
|
||||||
- BUGFIX: No longer strip root folder from torrent files
|
|
||||||
- OTHER: Drop support for libtorrent v0.14.x
|
|
||||||
- OTHER: Drop support for Qt 4.5
|
|
||||||
|
|
||||||
* Sat Oct 08 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.0
|
* Sat Oct 08 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.0
|
||||||
- FEATURE: Add file association settings to program preferences (Windows)
|
- FEATURE: Add file association settings to program preferences (Windows)
|
||||||
|
|||||||
6
INSTALL
6
INSTALL
@@ -10,11 +10,11 @@ qBittorrent - A BitTorrent client in C++ / Qt4
|
|||||||
will install and execute qBittorrent hopefully without any problems.
|
will install and execute qBittorrent hopefully without any problems.
|
||||||
|
|
||||||
Dependencies:
|
Dependencies:
|
||||||
- Qt >= 4.6.0 (libqtgui, libqtcore, libqtnetwork, libqtxml, libqtdbus/optional)
|
- Qt >= 4.5.0 (libqtgui, libqtcore, libqtnetwork, libqtxml, libqtdbus/optional)
|
||||||
|
|
||||||
- pkg-config executable
|
- pkg-config executable
|
||||||
|
|
||||||
- libtorrent-rasterbar by Arvid Norberg (>= 0.15.0)
|
- libtorrent-rasterbar by Arvid Norberg (>= 0.14.4 REQUIRED, compatible with v0.15.x/v0.16.x)
|
||||||
-> http://www.libtorrent.net
|
-> http://www.libtorrent.net
|
||||||
Be careful: another library (the one used by rTorrent) uses a similar name.
|
Be careful: another library (the one used by rTorrent) uses a similar name.
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ qBittorrent - A BitTorrent client in C++ / Qt4
|
|||||||
|
|
||||||
- pkg-config executable
|
- pkg-config executable
|
||||||
|
|
||||||
- libtorrent-rasterbar by Arvid Norberg (>= v0.15.0)
|
- libtorrent-rasterbar by Arvid Norberg (>= 0.14.4 REQUIRED, >= v0.15.0 ADVISED)
|
||||||
-> http://www.libtorrent.net
|
-> http://www.libtorrent.net
|
||||||
Be careful: another library (the one used by rTorrent) uses a similar name.
|
Be careful: another library (the one used by rTorrent) uses a similar name.
|
||||||
|
|
||||||
|
|||||||
16
README.os2
16
README.os2
@@ -27,6 +27,7 @@ First you need to create the conf.pri file in the same dir as this readme.os2 is
|
|||||||
the conf.pri file has the following content:
|
the conf.pri file has the following content:
|
||||||
|
|
||||||
##### conf.pri content beginn #####
|
##### conf.pri content beginn #####
|
||||||
|
PREFIX = .
|
||||||
BINDIR = ./bin
|
BINDIR = ./bin
|
||||||
INCDIR = ./include
|
INCDIR = ./include
|
||||||
LIBDIR = ./lib
|
LIBDIR = ./lib
|
||||||
@@ -42,10 +43,7 @@ LIBS += -Lx:/trees/libtorrent/trunk/src/.libs \
|
|||||||
|
|
||||||
Of course all the above path references have to be adjusted to your build env.
|
Of course all the above path references have to be adjusted to your build env.
|
||||||
|
|
||||||
Now you can either do a normal build or a shadow build. A shadow build has the
|
It should now be easy to build qBittorrent:
|
||||||
advantage that no created files are in the same dir as the sources are.
|
|
||||||
|
|
||||||
For a normal build do the following:
|
|
||||||
|
|
||||||
Simply type:
|
Simply type:
|
||||||
$ qmake
|
$ qmake
|
||||||
@@ -53,16 +51,6 @@ $ qmake
|
|||||||
Followed by:
|
Followed by:
|
||||||
$ make
|
$ make
|
||||||
|
|
||||||
For a shadow build do the following:
|
|
||||||
given your sources are in x:\trees\qbittorrent\trunk create a
|
|
||||||
x:\trees\qbittorrent\build directory
|
|
||||||
|
|
||||||
Now switch to the created directory and type:
|
|
||||||
$ qmake ..\trunk
|
|
||||||
|
|
||||||
Followed by:
|
|
||||||
$ make
|
|
||||||
|
|
||||||
If all works fine you should get a working qbittorrent executable.
|
If all works fine you should get a working qbittorrent executable.
|
||||||
|
|
||||||
If you have any question regarding the eCS (OS/2) port of qBittorrent you can meet me (_diver) on IRC:
|
If you have any question regarding the eCS (OS/2) port of qBittorrent you can meet me (_diver) on IRC:
|
||||||
|
|||||||
13
configure
vendored
13
configure
vendored
@@ -325,7 +325,7 @@ cat >$1/modules.cpp <<EOT
|
|||||||
#line 1 "qt4.qcm"
|
#line 1 "qt4.qcm"
|
||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: Qt >= 4.6
|
name: Qt >= 4.5
|
||||||
arg: enable-debug, Enable debug mode
|
arg: enable-debug, Enable debug mode
|
||||||
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
@@ -334,8 +334,8 @@ class qc_qt4 : public ConfObj
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_qt4(Conf *c) : ConfObj(c) {}
|
qc_qt4(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "Qt >= 4.6"; }
|
QString name() const { return "Qt >= 4.5"; }
|
||||||
QString shortname() const { return "Qt 4.6"; }
|
QString shortname() const { return "Qt 4.5"; }
|
||||||
bool exec()
|
bool exec()
|
||||||
{
|
{
|
||||||
// NOX mode
|
// NOX mode
|
||||||
@@ -356,7 +356,7 @@ public:
|
|||||||
#else
|
#else
|
||||||
conf->addExtra("MANPREFIX = \$\$PREFIX/share");
|
conf->addExtra("MANPREFIX = \$\$PREFIX/share");
|
||||||
#endif
|
#endif
|
||||||
return(QT_VERSION >= 0x040600);
|
return(QT_VERSION >= 0x040500);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
#line 1 "qt-dbus.qcm"
|
#line 1 "qt-dbus.qcm"
|
||||||
@@ -419,11 +419,11 @@ class qc_libtorrent_rasterbar : public ConfObj
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
|
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "libtorrent-rasterbar >= 0.15.0"; }
|
QString name() const { return "libtorrent-rasterbar >= 0.14.4"; }
|
||||||
QString shortname() const { return "libtorrent-rasterbar"; }
|
QString shortname() const { return "libtorrent-rasterbar"; }
|
||||||
bool exec(){
|
bool exec(){
|
||||||
QStringList incs;
|
QStringList incs;
|
||||||
QString req_ver = "0.15.0";
|
QString req_ver = "0.14.4";
|
||||||
QString version, libs, other;
|
QString version, libs, other;
|
||||||
VersionMode mode = VersionMin;
|
VersionMode mode = VersionMin;
|
||||||
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
|
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
|
||||||
@@ -507,7 +507,6 @@ public:
|
|||||||
#if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16
|
#if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16
|
||||||
required_libs << "filesystem" ;
|
required_libs << "filesystem" ;
|
||||||
#endif
|
#endif
|
||||||
//required_libs << "thread";
|
|
||||||
QStringList libDirs;
|
QStringList libDirs;
|
||||||
if (!s.isEmpty())
|
if (!s.isEmpty())
|
||||||
libDirs << s;
|
libDirs << s;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ qBittorrent\-nox \- a command line Bittorrent client written in C++ / Qt4
|
|||||||
|
|
||||||
.SH "SYNOPSIS"
|
.SH "SYNOPSIS"
|
||||||
|
|
||||||
\fBqbittorrent\-nox\fR [\-\-d|\-\-daemon] [\-\-webui-port=x] [TORRENT_FILE | URL]...
|
\fBqbittorrent\-nox\fR [\-\-webui-port=x] [TORRENT_FILE | URL]...
|
||||||
|
|
||||||
\fBqbittorrent\-nox\fR \-\-help
|
\fBqbittorrent\-nox\fR \-\-help
|
||||||
|
|
||||||
|
|||||||
131
install.os2
131
install.os2
@@ -11,7 +11,7 @@ QBittorrent installation
|
|||||||
|
|
||||||
3. INSTALLATION
|
3. INSTALLATION
|
||||||
|
|
||||||
4. BUGREPORTS
|
4. CONTACT
|
||||||
|
|
||||||
5. CREDITS
|
5. CREDITS
|
||||||
|
|
||||||
@@ -29,70 +29,17 @@ Welcome to QBittorrent port for OS/2 and eComStation.
|
|||||||
2. REQUIREMENTS
|
2. REQUIREMENTS
|
||||||
===============
|
===============
|
||||||
|
|
||||||
The following requirements can be installed either by rpm or by zip files.
|
* klibc 0.6.3 or later
|
||||||
|
|
||||||
RPM Installation:
|
ftp://ftp.netlabs.org/pub/gcc/libc-0_6_3-csd3.wpi
|
||||||
|
|
||||||
klibc
|
* openssl 1.0
|
||||||
-----
|
|
||||||
|
ftp://ftp.netlabs.org/pub/unixos2/ssl10.zip
|
||||||
|
|
||||||
1. yum install libc
|
* Qt4 dll
|
||||||
|
|
||||||
openssl 1.0
|
see http://svn.netlabs.org/qt4 for more information whats needed and where to get the latest
|
||||||
-----------
|
|
||||||
|
|
||||||
1. yum install openssl
|
|
||||||
|
|
||||||
pthread
|
|
||||||
-------
|
|
||||||
|
|
||||||
1. yum install pthread
|
|
||||||
|
|
||||||
GCC4Core
|
|
||||||
--------
|
|
||||||
|
|
||||||
1. yum install libgcc
|
|
||||||
2. yum install gcc-stack-protector
|
|
||||||
3. yum install gcc-stdc++-shared-library
|
|
||||||
4. yum install gcc-supc++-shared-library
|
|
||||||
|
|
||||||
Qt4 dll
|
|
||||||
-------
|
|
||||||
|
|
||||||
1. yum install libqt4
|
|
||||||
|
|
||||||
|
|
||||||
ZIP Installation:
|
|
||||||
|
|
||||||
klibc
|
|
||||||
-----
|
|
||||||
|
|
||||||
1. Download klibc 0.6.5 or better (see http://svn.netlabs.org/libc for more information)
|
|
||||||
2. Install the files to your libpath eg x:\ecs\dll
|
|
||||||
|
|
||||||
openssl 1.0
|
|
||||||
-----------
|
|
||||||
|
|
||||||
1. Download the zip file from http://rpm.netlabs.org/release/00/zip
|
|
||||||
2. Install the files to your libpath eg. x:\ecs\dll
|
|
||||||
|
|
||||||
pthread
|
|
||||||
-------
|
|
||||||
|
|
||||||
1. Download pthread 2012-03-13 or better from http://rpm.netlabs.org/release/00/zip
|
|
||||||
2. Install the files to your libpath eg. x:\ecs\dll
|
|
||||||
|
|
||||||
GCC4Core
|
|
||||||
--------
|
|
||||||
|
|
||||||
1. Download GCC4Core 1.2.1 or better from http://ftp.netlabs.org/pub/gcc
|
|
||||||
2. Install the files to your libpath eg. x:\ecs\dll
|
|
||||||
|
|
||||||
Qt4 dll
|
|
||||||
-------
|
|
||||||
|
|
||||||
1. Download Qt4 4.7.3 or better (see http://svn.netlabs.org/qt4 for more information)
|
|
||||||
2. Install the files according to the readme
|
|
||||||
|
|
||||||
|
|
||||||
3. INSTALLATION
|
3. INSTALLATION
|
||||||
@@ -100,6 +47,30 @@ Qt4 dll
|
|||||||
|
|
||||||
To install QBittorrent, do the following:
|
To install QBittorrent, do the following:
|
||||||
|
|
||||||
|
klibc
|
||||||
|
-----
|
||||||
|
|
||||||
|
1. Download klibc 0.6.3 csd3 or later.
|
||||||
|
2. Install the package by double-clicking on the WPI file.
|
||||||
|
|
||||||
|
|
||||||
|
openssl 1.0
|
||||||
|
-----------
|
||||||
|
|
||||||
|
1. Download the zip file
|
||||||
|
2. Install the files to your libpath eg. x:\ecs\dll
|
||||||
|
|
||||||
|
Qt4 dll
|
||||||
|
-------
|
||||||
|
|
||||||
|
1. Download the package
|
||||||
|
2. Install the package by double-clicking on the wpi file.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
QBittorrent
|
||||||
|
-----------
|
||||||
|
|
||||||
1. Create a directory for QBittorrent.
|
1. Create a directory for QBittorrent.
|
||||||
2. Extract the QBittorrent package to the new directory.
|
2. Extract the QBittorrent package to the new directory.
|
||||||
3. Create a WPS object for QBittorrent.exe.
|
3. Create a WPS object for QBittorrent.exe.
|
||||||
@@ -107,13 +78,18 @@ To install QBittorrent, do the following:
|
|||||||
5. Happy torrenting
|
5. Happy torrenting
|
||||||
|
|
||||||
|
|
||||||
4. BUGREPORTS
|
|
||||||
=============
|
|
||||||
|
|
||||||
Please create bugreports at http://svn.netlabs.org/qtapps
|
4. CONTACT
|
||||||
|
==========
|
||||||
|
|
||||||
|
Please send bugreports to:
|
||||||
|
|
||||||
|
ecs@aroa.ch
|
||||||
|
|
||||||
Only bug reports with a reproducable bug are accepted. :-)
|
Only bug reports with a reproducable bug are accepted. :-)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
5. CREDITS
|
5. CREDITS
|
||||||
==========
|
==========
|
||||||
|
|
||||||
@@ -146,33 +122,6 @@ development, you can do so in one of the following ways:
|
|||||||
7. HISTORY
|
7. HISTORY
|
||||||
==========
|
==========
|
||||||
|
|
||||||
2012-09-19
|
|
||||||
|
|
||||||
* updated to 3.0.4 code level of QBittorrent
|
|
||||||
* updated libtorrent to 0.16.3 level
|
|
||||||
|
|
||||||
2012-09-06
|
|
||||||
|
|
||||||
* updated to 3.0.2 code level of QBittorrent
|
|
||||||
|
|
||||||
2012-05-14
|
|
||||||
|
|
||||||
* updated to 2.9.8 code level of QBittorrent
|
|
||||||
|
|
||||||
2012-03-15
|
|
||||||
|
|
||||||
* updated to 2.9.5 code level of QBittorrent
|
|
||||||
|
|
||||||
2011-09-26
|
|
||||||
|
|
||||||
* updated to 2.8.5 code level of QBittorrent
|
|
||||||
* updated to Qt 4.7.3
|
|
||||||
|
|
||||||
2011-06-20
|
|
||||||
|
|
||||||
* updated to 2.7.3 code level of QBittorrent
|
|
||||||
* updated libtorrent to 0.15.6 level
|
|
||||||
|
|
||||||
2010-12-23
|
2010-12-23
|
||||||
|
|
||||||
* updated to 2.5.2 code level of QBittorrent
|
* updated to 2.5.2 code level of QBittorrent
|
||||||
|
|||||||
47
macxconf.pri
47
macxconf.pri
@@ -5,7 +5,6 @@ DATADIR = /usr/local/share
|
|||||||
# Use pkg-config to get all necessary libtorrent DEFINES
|
# Use pkg-config to get all necessary libtorrent DEFINES
|
||||||
CONFIG += link_pkgconfig
|
CONFIG += link_pkgconfig
|
||||||
PKGCONFIG += libtorrent-rasterbar
|
PKGCONFIG += libtorrent-rasterbar
|
||||||
DEFINES += BOOST_ASIO_DYN_LINK
|
|
||||||
|
|
||||||
# Special include/libs paths (macports)
|
# Special include/libs paths (macports)
|
||||||
INCLUDEPATH += /usr/include/openssl /usr/include /opt/local/include/boost /opt/local/include
|
INCLUDEPATH += /usr/include/openssl /usr/include /opt/local/include/boost /opt/local/include
|
||||||
@@ -16,52 +15,16 @@ LIBS += -lssl -lcrypto
|
|||||||
# Boost system lib
|
# Boost system lib
|
||||||
LIBS += -lboost_system-mt
|
LIBS += -lboost_system-mt
|
||||||
# Boost filesystem lib (Not needed for libtorrent >= 0.16.0)
|
# Boost filesystem lib (Not needed for libtorrent >= 0.16.0)
|
||||||
#LIBS += -lboost_filesystem-mt
|
LIBS += -lboost_filesystem-mt
|
||||||
# Carbon
|
# Carbon
|
||||||
LIBS += -framework Carbon -framework IOKit
|
LIBS += -framework Carbon -framework IOKit
|
||||||
# Zlib
|
|
||||||
LIBS += -lz
|
|
||||||
|
|
||||||
document_icon.path = Contents/Resources
|
document_icon.path = Contents/Resources
|
||||||
document_icon.files = mac/qBitTorrentDocument.icns
|
document_icon.files = Icons/qBitTorrentDocument.icns
|
||||||
|
|
||||||
QMAKE_BUNDLE_DATA += document_icon
|
QMAKE_BUNDLE_DATA += document_icon
|
||||||
|
ICON = Icons/qbittorrent_mac.icns
|
||||||
qt_conf.path = Contents/Resources
|
QMAKE_INFO_PLIST = Info.plist
|
||||||
qt_conf.files = mac/qt.conf
|
|
||||||
QMAKE_BUNDLE_DATA += qt_conf
|
|
||||||
|
|
||||||
qt_translations.path = Contents/MacOS/translations
|
|
||||||
qt_translations.files = qt-translations/qt_ar.qm \
|
|
||||||
qt-translations/qt_bg.qm \
|
|
||||||
qt-translations/qt_ca.qm \
|
|
||||||
qt-translations/qt_cs.qm \
|
|
||||||
qt-translations/qt_da.qm \
|
|
||||||
qt-translations/qt_de.qm \
|
|
||||||
qt-translations/qt_es.qm \
|
|
||||||
qt-translations/qt_fi.qm \
|
|
||||||
qt-translations/qt_fr.qm \
|
|
||||||
qt-translations/qt_gl.qm \
|
|
||||||
qt-translations/qt_he.qm \
|
|
||||||
qt-translations/qt_hu.qm \
|
|
||||||
qt-translations/qt_it.qm \
|
|
||||||
qt-translations/qt_ja.qm \
|
|
||||||
qt-translations/qt_ko.qm \
|
|
||||||
qt-translations/qt_lt.qm \
|
|
||||||
qt-translations/qt_nl.qm \
|
|
||||||
qt-translations/qt_pl.qm \
|
|
||||||
qt-translations/qt_pt.qm \
|
|
||||||
qt-translations/qt_pt_BR.qm \
|
|
||||||
qt-translations/qt_ru.qm \
|
|
||||||
qt-translations/qt_sk.qm \
|
|
||||||
qt-translations/qt_sv.qm \
|
|
||||||
qt-translations/qt_tr.qm \
|
|
||||||
qt-translations/qt_uk.qm \
|
|
||||||
qt-translations/qt_zh_CN.qm \
|
|
||||||
qt-translations/qt_zh_TW.qm
|
|
||||||
QMAKE_BUNDLE_DATA += qt_translations
|
|
||||||
|
|
||||||
ICON = mac/qbittorrent_mac.icns
|
|
||||||
QMAKE_INFO_PLIST = mac/Info.plist
|
|
||||||
|
|
||||||
DEFINES += WITH_GEOIP_EMBEDDED
|
DEFINES += WITH_GEOIP_EMBEDDED
|
||||||
message("On Mac OS X, GeoIP database must be embedded.")
|
message("On Mac OS X, GeoIP database must be embedded.")
|
||||||
|
|||||||
@@ -7,13 +7,12 @@ LIBS += -ltorrent-rasterbar \
|
|||||||
-lboost_thread \
|
-lboost_thread \
|
||||||
-lboost_system \
|
-lboost_system \
|
||||||
-lboost_filesystem \
|
-lboost_filesystem \
|
||||||
-lssl -lcrypto -lidn -lpthread -lz
|
-lssl -lcrypto -lidn -lpthread
|
||||||
|
|
||||||
RC_FILE = qbittorrent_os2.rc
|
RC_FILE = qbittorrent_os2.rc
|
||||||
|
|
||||||
# LIBTORRENT DEFINES
|
# LIBTORRENT DEFINES
|
||||||
DEFINES += WITH_SHIPPED_GEOIP_H
|
DEFINES += WITH_SHIPPED_GEOIP_H
|
||||||
DEFINES += BOOST_ASIO_DYN_LINK
|
|
||||||
|
|
||||||
DEFINES += WITH_GEOIP_EMBEDDED
|
DEFINES += WITH_GEOIP_EMBEDDED
|
||||||
message("On eCS(OS/2), GeoIP database must be embedded.")
|
message("On eCS(OS/2), GeoIP database must be embedded.")
|
||||||
|
|||||||
@@ -3,17 +3,13 @@ TEMPLATE = subdirs
|
|||||||
SUBDIRS += src
|
SUBDIRS += src
|
||||||
|
|
||||||
include(version.pri)
|
include(version.pri)
|
||||||
include(qm_gen.pri)
|
|
||||||
|
|
||||||
# Dist
|
# Dist
|
||||||
dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}/ &&
|
dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}/ &&
|
||||||
dist.commands += git clone . ../$${PROJECT_NAME}-$${PROJECT_VERSION} &&
|
dist.commands += git clone . ../$${PROJECT_NAME}-$${PROJECT_VERSION} &&
|
||||||
dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}/.git &&
|
dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}/.git &&
|
||||||
dist.commands += rm -f ../$${PROJECT_NAME}-$${PROJECT_VERSION}/.gitignore &&
|
dist.commands += rm -f ../$${PROJECT_NAME}-$${PROJECT_VERSION}/.gitignore &&
|
||||||
dist.commands += cd .. &&
|
dist.commands += tar zcpvf ../$${PROJECT_NAME}-$${PROJECT_VERSION}.tar.gz ../$${PROJECT_NAME}-$${PROJECT_VERSION} &&
|
||||||
dist.commands += tar czf $${PROJECT_NAME}-$${PROJECT_VERSION}.tar.gz $${PROJECT_NAME}-$${PROJECT_VERSION} &&
|
dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}
|
||||||
dist.commands += tar cf $${PROJECT_NAME}-$${PROJECT_VERSION}.tar $${PROJECT_NAME}-$${PROJECT_VERSION} &&
|
|
||||||
dist.commands += xz -f $${PROJECT_NAME}-$${PROJECT_VERSION}.tar &&
|
|
||||||
dist.commands += rm -fR $${PROJECT_NAME}-$${PROJECT_VERSION}
|
|
||||||
|
|
||||||
QMAKE_EXTRA_TARGETS += dist
|
QMAKE_EXTRA_TARGETS += dist
|
||||||
|
|||||||
@@ -71,7 +71,6 @@ public:
|
|||||||
#if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16
|
#if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16
|
||||||
required_libs << "filesystem" ;
|
required_libs << "filesystem" ;
|
||||||
#endif
|
#endif
|
||||||
//required_libs << "thread";
|
|
||||||
QStringList libDirs;
|
QStringList libDirs;
|
||||||
if (!s.isEmpty())
|
if (!s.isEmpty())
|
||||||
libDirs << s;
|
libDirs << s;
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ class qc_libtorrent_rasterbar : public ConfObj
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
|
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "libtorrent-rasterbar >= 0.15.0"; }
|
QString name() const { return "libtorrent-rasterbar >= 0.14.4"; }
|
||||||
QString shortname() const { return "libtorrent-rasterbar"; }
|
QString shortname() const { return "libtorrent-rasterbar"; }
|
||||||
bool exec(){
|
bool exec(){
|
||||||
QStringList incs;
|
QStringList incs;
|
||||||
QString req_ver = "0.15.0";
|
QString req_ver = "0.14.4";
|
||||||
QString version, libs, other;
|
QString version, libs, other;
|
||||||
VersionMode mode = VersionMin;
|
VersionMode mode = VersionMin;
|
||||||
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
|
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: Qt >= 4.6
|
name: Qt >= 4.5
|
||||||
arg: enable-debug, Enable debug mode
|
arg: enable-debug, Enable debug mode
|
||||||
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
@@ -9,8 +9,8 @@ class qc_qt4 : public ConfObj
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_qt4(Conf *c) : ConfObj(c) {}
|
qc_qt4(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "Qt >= 4.6"; }
|
QString name() const { return "Qt >= 4.5"; }
|
||||||
QString shortname() const { return "Qt 4.6"; }
|
QString shortname() const { return "Qt 4.5"; }
|
||||||
bool exec()
|
bool exec()
|
||||||
{
|
{
|
||||||
// NOX mode
|
// NOX mode
|
||||||
@@ -31,6 +31,6 @@ public:
|
|||||||
#else
|
#else
|
||||||
conf->addExtra("MANPREFIX = $$PREFIX/share");
|
conf->addExtra("MANPREFIX = $$PREFIX/share");
|
||||||
#endif
|
#endif
|
||||||
return(QT_VERSION >= 0x040600);
|
return(QT_VERSION >= 0x040500);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
19
qm_gen.pri
19
qm_gen.pri
@@ -1,19 +0,0 @@
|
|||||||
TS_IN = $$fromfile(src/src.pro,TRANSLATIONS)
|
|
||||||
TS_IN_NOEXT = $$replace(TS_IN,".ts","")
|
|
||||||
|
|
||||||
isEmpty(QMAKE_LRELEASE) {
|
|
||||||
win32|os2:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\\lrelease.exe
|
|
||||||
else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
|
|
||||||
unix {
|
|
||||||
!exists($$QMAKE_LRELEASE) { QMAKE_LRELEASE = lrelease-qt4 }
|
|
||||||
} else {
|
|
||||||
!exists($$QMAKE_LRELEASE) { QMAKE_LRELEASE = lrelease }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
message("Building translations")
|
|
||||||
for(L,TS_IN_NOEXT) {
|
|
||||||
message("Processing $${L}")
|
|
||||||
system("$$QMAKE_LRELEASE -silent src/$${L}.ts -qm src/$${L}.qm")
|
|
||||||
!exists("src/$${L}.qm"):error("Building translations failed, cannot continue")
|
|
||||||
}
|
|
||||||
@@ -2,118 +2,40 @@
|
|||||||
Categories=Network;FileTransfer;P2P;Qt;
|
Categories=Network;FileTransfer;P2P;Qt;
|
||||||
Exec=qbittorrent %U
|
Exec=qbittorrent %U
|
||||||
GenericName=BitTorrent client
|
GenericName=BitTorrent client
|
||||||
|
GenericName[ar]=العميل BitTorrent
|
||||||
|
GenericName[bg]=Торент клиент
|
||||||
|
GenericName[cs]=BitTorrent klient
|
||||||
|
GenericName[de]=BitTorren Client
|
||||||
|
GenericName[el]=BitTorrent πελάτης
|
||||||
|
GenericName[es]=Cliente BitTorrent
|
||||||
|
GenericName[fi]=BitTorrent-ohjelma
|
||||||
|
GenericName[fr]=Client BitTorrent
|
||||||
|
GenericName[hr]=BitTorrent klijent
|
||||||
|
GenericName[hu]=BitTorrent kliens
|
||||||
|
GenericName[it]=Client BitTorrent
|
||||||
|
GenericName[ja]=BitTorrent クライアント
|
||||||
|
GenericName[ko]=비토렌트 클라이언트
|
||||||
|
GenericName[lt]=BitTorrent klientas
|
||||||
|
GenericName[nl]=BitTorrent-cliënt
|
||||||
|
GenericName[pl]=Klient BitTorrent
|
||||||
|
GenericName[pt]=Cliente BitTorrent
|
||||||
|
GenericName[pt_BR]=Cliente BitTorrent
|
||||||
|
GenericName[ro]=Client BitTorrent
|
||||||
|
GenericName[ru]=клиент BitTorrent
|
||||||
|
GenericName[sk]=Klient siete BitTorrent
|
||||||
|
GenericName[sr]=BitTorrent-клијент
|
||||||
|
GenericName[sv]=BitTorrent-klient
|
||||||
|
GenericName[tr]=BitTorrent istemcisi
|
||||||
|
GenericName[uk]=BitTorrent-клієнт
|
||||||
|
GenericName[zh]=BitTorrent之用户
|
||||||
|
GenericName[zh_TW]=BitTorrent客戶端
|
||||||
Comment=Download and share files over BitTorrent
|
Comment=Download and share files over BitTorrent
|
||||||
|
Comment[fr]=Télécharger et partager des fichiers avec BitTorrent
|
||||||
|
Comment[pl]=Dzielenie się plikami przez BitTorrent
|
||||||
Icon=qbittorrent
|
Icon=qbittorrent
|
||||||
MimeType=application/x-bittorrent;x-scheme-handler/magnet;
|
MimeType=application/x-bittorrent;x-scheme-handler/magnet;
|
||||||
Name=qBittorrent
|
Name=qBittorrent
|
||||||
|
Name[ko]=큐비토런트
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Translations
|
|
||||||
|
|
||||||
|
|
||||||
# Translations
|
|
||||||
GenericName[ar]=العميل BitTorrent
|
|
||||||
Comment[be]=Сцягванне і раздача файлаў праз пратакол BitTorrent
|
|
||||||
GenericName[be]=BitTorrent-кліент
|
|
||||||
Name[be]=qBittorrent
|
|
||||||
Icon[be]=qbittorrent
|
|
||||||
GenericName[bg]=Торент клиент
|
|
||||||
Comment[cs]=Stahování a sdílení souborů přes síť BitTorrent
|
|
||||||
GenericName[cs]=BitTorrent klient
|
|
||||||
Name[cs]=qBittorrent
|
|
||||||
Icon[cs]=qbittorrent
|
|
||||||
GenericName[de]=BitTorren Client
|
|
||||||
Comment[el]=Λήψη και διαμοιρασμός αρχείων μέσω BitTorrent
|
|
||||||
GenericName[el]=BitTorrent πελάτης
|
|
||||||
Name[el]=qBittorrent
|
|
||||||
Icon[el]=qbittorrent
|
|
||||||
Comment[en_GB]=Download and share files over BitTorrent
|
|
||||||
GenericName[en_GB]=BitTorrent client
|
|
||||||
Name[en_GB]=qBittorrent
|
|
||||||
Icon[en_GB]=qbittorrent
|
|
||||||
Comment[es]=Descarga y comparte archivos por BitTorrent
|
|
||||||
GenericName[es]=Cliente BitTorrent
|
|
||||||
Name[es]=qBittorrent
|
|
||||||
Icon[es]=qbittorrent
|
|
||||||
Comment[eu]=Jeitsi eta elkarbanatu agiriak BitTorrent-en
|
|
||||||
GenericName[eu]=BitTorrent bezeroa
|
|
||||||
Name[eu]=qBittorrent
|
|
||||||
Icon[eu]=qbittorrent
|
|
||||||
Comment[fi]=Lataa ja jaa tiedostoja BitTorrentia käyttäen
|
|
||||||
GenericName[fi]=BitTorrent-ohjelma
|
|
||||||
Name[fi]=qBittorrent
|
|
||||||
Icon[fi]=qbittorrent
|
|
||||||
Comment[fr]=Télécharger et partager des fichiers avec BitTorrent
|
|
||||||
GenericName[fr]=Client BitTorrent
|
|
||||||
Comment[gl]=Descargue e comparta ficheiros co protocolo BitTorrent
|
|
||||||
GenericName[gl]=Cliente BitTorrent
|
|
||||||
Name[gl]=qBittorrent
|
|
||||||
Icon[gl]=qbittorrent
|
|
||||||
GenericName[hr]=BitTorrent klijent
|
|
||||||
GenericName[hu]=BitTorrent kliens
|
|
||||||
Comment[it]=Client BitTorrent per il download di file via internet
|
|
||||||
GenericName[it]=Client BitTorrent
|
|
||||||
Name[it]=qBittorrent
|
|
||||||
Icon[it]=qbittorrent
|
|
||||||
Comment[ja]=BitTorrent でファイルをダウンロードおよび共有します
|
|
||||||
GenericName[ja]=BitTorrent クライアント
|
|
||||||
Name[ja]=qBittorrent
|
|
||||||
Icon[ja]=qbittorrent
|
|
||||||
GenericName[ko]=비토렌트 클라이언트
|
|
||||||
Name[ko]=큐비토런트
|
|
||||||
GenericName[zh]=BitTorrent之用户
|
|
||||||
Comment[lt]=Atsisiųskite bei dalinkitės failais BitTorrent tinkle
|
|
||||||
GenericName[lt]=BitTorrent klientas
|
|
||||||
Name[lt]=qBittorrent
|
|
||||||
Icon[lt]=qbittorrent
|
|
||||||
Comment[nb]=Last ned og del filer over BitTorrent
|
|
||||||
GenericName[nb]=BitTorrent-klient
|
|
||||||
Name[nb]=qBittorrent
|
|
||||||
Icon[nb]=qbittorrent
|
|
||||||
GenericName[nl]=BitTorrent-cliënt
|
|
||||||
Comment[pl]=Dzielenie się plikami przez BitTorrent
|
|
||||||
GenericName[pl]=Klient BitTorrent
|
|
||||||
Name[pl]=qBittorrent
|
|
||||||
Icon[pl]=qbittorrent
|
|
||||||
Comment[pt]=Transferir e partilhar ficheiros por BitTorrent
|
|
||||||
GenericName[pt]=Aplicação BitTorrent
|
|
||||||
Name[pt]=qBittorrent
|
|
||||||
Icon[pt]=qbittorrent
|
|
||||||
Comment[pt_BR]=Baixe e compartilhe arquivos através do qBittorrent
|
|
||||||
GenericName[pt_BR]=Cliente BitTorrent
|
|
||||||
Name[pt_BR]=qBittorrent
|
|
||||||
Icon[pt_BR]=qbittorrent
|
|
||||||
Comment[ro]=Descărcați și partajați fișiere prin BitTorrent
|
|
||||||
GenericName[ro]=Client BitTorrent
|
|
||||||
Name[ro]=qBittorrent
|
|
||||||
Icon[ro]=qbittorrent
|
|
||||||
Comment[ru]=Скачивайте и делитесь файлами с помощью BitTorrent
|
|
||||||
GenericName[ru]=клиент BitTorrent
|
|
||||||
Name[ru]=qBittorrent
|
|
||||||
Icon[ru]=qbittorrent
|
|
||||||
GenericName[sk]=Klient siete BitTorrent
|
|
||||||
GenericName[sr]=BitTorrent-клијент
|
|
||||||
Comment[sv]=Hämta och dela filer över BitTorrent
|
|
||||||
GenericName[sv]=BitTorrent-klient
|
|
||||||
Name[sv]=qBittorrent
|
|
||||||
Icon[sv]=qbittorrent
|
|
||||||
GenericName[tr]=BitTorrent istemcisi
|
|
||||||
Comment[uk]=Завантажувати і обмінюватися файлами через BitTorrent
|
|
||||||
GenericName[uk]=BitTorrent-клієнт
|
|
||||||
Name[uk]=qBittorrent
|
|
||||||
Icon[uk]=qbittorrent
|
|
||||||
Comment[vi]=Tải về và chia sẻ các tập tin thông qua BitTorrent
|
|
||||||
GenericName[vi]=Máy trạm dạng BitTorrent
|
|
||||||
Name[vi]=qBittorrent
|
|
||||||
Icon[vi]=qbittorrent
|
|
||||||
Comment[zh_TW]=經由 BitTorrent 下載並分享檔案
|
|
||||||
GenericName[zh_TW]=BitTorrent 客戶端
|
|
||||||
Name[zh_TW]=qBittorrent
|
|
||||||
Icon[zh_TW]=qbittorrent
|
|
||||||
Comment[en_AU]=Download and share files over BitTorrent
|
|
||||||
GenericName[en_AU]=BitTorrent client
|
|
||||||
Name[en_AU]=qBittorrent
|
|
||||||
Icon[en_AU]=qbittorrent
|
|
||||||
|
|||||||
@@ -13,6 +13,10 @@
|
|||||||
<string>qBitTorrentDocument</string>
|
<string>qBitTorrentDocument</string>
|
||||||
<key>CFBundleTypeName</key>
|
<key>CFBundleTypeName</key>
|
||||||
<string>BitTorrent Document</string>
|
<string>BitTorrent Document</string>
|
||||||
|
<key>CFBundleTypeMIMETypes</key>
|
||||||
|
<array>
|
||||||
|
<string>application/x-bittorrent</string>
|
||||||
|
</array>
|
||||||
<key>CFBundleTypeRole</key>
|
<key>CFBundleTypeRole</key>
|
||||||
<string>Viewer</string>
|
<string>Viewer</string>
|
||||||
<key>LSHandlerRank</key>
|
<key>LSHandlerRank</key>
|
||||||
@@ -36,55 +40,21 @@
|
|||||||
<string>BitTorrent Magnet URL</string>
|
<string>BitTorrent Magnet URL</string>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleName</key>
|
|
||||||
<string>qBittorrent</string>
|
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>qbittorrent_mac.icns</string>
|
<string>qbittorrent_mac.icns</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>3.1.2</string>
|
<string>2.9.3</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>qBit</string>
|
<string>????</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>qbittorrent</string>
|
<string>qbittorrent</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.qbittorrent</string>
|
<string>org.qbittorrent</string>
|
||||||
<key>NSAppleScriptEnabled</key>
|
<key>NOTE</key>
|
||||||
<string>YES</string>
|
<string>This file was generated by Qt/QMake.</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
|
||||||
<string>Copyright © 2006-2013 The qBittorrent project</string>
|
|
||||||
<key>UTExportedTypeDeclarations</key>
|
|
||||||
<array>
|
|
||||||
<dict>
|
|
||||||
<key>UTTypeConformsTo</key>
|
|
||||||
<array>
|
|
||||||
<string>public.data</string>
|
|
||||||
<string>public.item</string>
|
|
||||||
<string>com.bittorrent.torrent</string>
|
|
||||||
</array>
|
|
||||||
<key>UTTypeDescription</key>
|
|
||||||
<string>BitTorrent Document</string>
|
|
||||||
<key>UTTypeIconFile</key>
|
|
||||||
<string>qBitTorrentDocument</string>
|
|
||||||
<key>UTTypeIdentifier</key>
|
|
||||||
<string>org.bittorrent.torrent</string>
|
|
||||||
<key>UTTypeReferenceURL</key>
|
|
||||||
<string>http://www.bittorrent.org/beps/bep_0000.html</string>
|
|
||||||
<key>UTTypeTagSpecification</key>
|
|
||||||
<dict>
|
|
||||||
<key>com.apple.ostype</key>
|
|
||||||
<string>TORR</string>
|
|
||||||
<key>public.filename-extension</key>
|
|
||||||
<array>
|
|
||||||
<string>torrent</string>
|
|
||||||
</array>
|
|
||||||
<key>public.mime-type</key>
|
|
||||||
<string>application/x-bittorrent</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</array>
|
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
312
src/about.ui
312
src/about.ui
File diff suppressed because one or more lines are too long
@@ -45,31 +45,13 @@ class about : public QDialog, private Ui::AboutDlg{
|
|||||||
qDebug("Deleting about dlg");
|
qDebug("Deleting about dlg");
|
||||||
}
|
}
|
||||||
|
|
||||||
about(QWidget *parent): QDialog(parent) {
|
about(QWidget *parent): QDialog(parent){
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
setAttribute(Qt::WA_DeleteOnClose);
|
setAttribute(Qt::WA_DeleteOnClose);
|
||||||
// About
|
|
||||||
QString aboutText =
|
|
||||||
QString::fromUtf8("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\"><html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">p, li { white-space: pre-wrap; }</style></head><body style=\" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;\"><p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">") +
|
|
||||||
tr("An advanced BitTorrent client programmed in C++, based on Qt4 toolkit and libtorrent-rasterbar.") +
|
|
||||||
QString::fromUtf8(" <br /><br />") +
|
|
||||||
trUtf8("Copyright ©2006-2013 The qBittorrent project") +
|
|
||||||
QString::fromUtf8("<br /><br />") +
|
|
||||||
tr("Home Page: ") +
|
|
||||||
QString::fromUtf8("<a href=\"http://www.qbittorrent.org\"><span style=\" text-decoration: underline; color:#0000ff;\">http://www.qbittorrent.org</span></a></p><p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">") +
|
|
||||||
tr("Bug Tracker: ") +
|
|
||||||
QString::fromUtf8("<a href=\"http://bugs.qbittorrent.org\"><span style=\" text-decoration: underline; color:#0000ff;\">http://bugs.qbittorrent.org</span></a><br />") +
|
|
||||||
tr("Forum: ") +
|
|
||||||
QString::fromUtf8(
|
|
||||||
"<a href=\"http://forum.qbittorrent.org\"><span style=\" text-decoration: underline; color:#0000ff;\">http://forum.qbittorrent.org</span></a></p><p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">") +
|
|
||||||
tr("IRC: #qbittorrent on Freenode") +
|
|
||||||
QString::fromUtf8(
|
|
||||||
"</p></body></html>");
|
|
||||||
lb_about->setText(aboutText);
|
|
||||||
// Set icons
|
// Set icons
|
||||||
logo->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/qbittorrent22.png")));
|
logo->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/qbittorrent22.png")));
|
||||||
//Title
|
//Title
|
||||||
lb_name->setText(QString::fromUtf8("<b><h1>qBittorrent")+QString::fromUtf8(" "VERSION"</h1></b>"));
|
lb_name->setText(QString::fromUtf8("<b><h1>")+tr("qBittorrent")+QString::fromUtf8(" "VERSION"</h1></b>"));
|
||||||
// Thanks
|
// Thanks
|
||||||
QString thanks_txt;
|
QString thanks_txt;
|
||||||
thanks_txt += QString::fromUtf8("<p>I would first like to thank sourceforge.net for hosting qBittorrent project and for their support.</p>");
|
thanks_txt += QString::fromUtf8("<p>I would first like to thank sourceforge.net for hosting qBittorrent project and for their support.</p>");
|
||||||
@@ -80,50 +62,44 @@ class about : public QDialog, private Ui::AboutDlg{
|
|||||||
te_thanks->setHtml(thanks_txt);
|
te_thanks->setHtml(thanks_txt);
|
||||||
// Translation
|
// Translation
|
||||||
QString trans_txt = "<p>"+tr("I would like to thank the following people who volunteered to translate qBittorrent:")+"</p>";
|
QString trans_txt = "<p>"+tr("I would like to thank the following people who volunteered to translate qBittorrent:")+"</p>";
|
||||||
trans_txt += QString::fromUtf8("<ul><li><u>Arabic:</u> SDERAWI (abz8868@msn.com), sn51234 (nesseyan@gmail.com) and Ibrahim Saed ibraheem_alex(Transifex)</li>\
|
trans_txt += QString::fromUtf8("<ul><li><u>Arabic:</u> SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)</li>\
|
||||||
<li><u>Armenian:</u> Hrant Ohanyan (hrantohanyan@mail.am)</li>\
|
<li><u>Armenian:</u> Hrant Ohanyan (hrantohanyan@mail.am)</li>\
|
||||||
<li><u>Basque:</u> Xabier Aramendi (azpidatziak@gmail.com)</li>\
|
<li><u>Brazilian:</u> Nick Marinho (nickmarinho@gmail.com)</li>\
|
||||||
<li><u>Belarusian:</u> Mihas Varantsou (meequz@gmail.com)</li>\
|
|
||||||
<li><u>Bulgarian:</u> Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)</li>\
|
<li><u>Bulgarian:</u> Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)</li>\
|
||||||
<li><u>Catalan:</u> Francisco Luque Contreras (frannoe@ya.com)</li>\
|
<li><u>Catalan:</u> Francisco Luque Contreras (frannoe@ya.com)</li>\
|
||||||
<li><u>Chinese (Simplified):</u> Guo Yue (yue.guo0418@gmail.com)</li>\
|
<li><u>Chinese (Simplified):</u> Guo Yue (yue.guo0418@gmail.com)</li>\
|
||||||
<li><u>Chinese (Traditional):</u> Yi-Shun Wang (dnextstep@gmail.com) and 冥王歐西里斯 s8321414(Transifex)</li>\
|
<li><u>Chinese (Traditional):</u> Yi-Shun Wang (dnextstep@gmail.com)</li>\
|
||||||
<li><u>Croatian:</u> Oliver Mucafir (oliver.untwist@gmail.com)</li>\
|
<li><u>Croatian:</u> Oliver Mucafir (oliver.untwist@gmail.com)</li>\
|
||||||
<li><u>Czech:</u> Jirka Vilim (web@tets.cz) and Petr Cernobila abr(Transifex)</li>\
|
<li><u>Czech:</u> Jirka Vilim (web@tets.cz)</li>\
|
||||||
<li><u>Danish:</u> Mathias Nielsen (comoneo@gmail.com)</li>\
|
<li><u>Danish:</u> Mathias Nielsen (comoneo@gmail.com)</li>\
|
||||||
<li><u>Dutch:</u> Pieter Heyvaert (pieter_heyvaert@hotmail.com)</li>\
|
<li><u>Dutch:</u> Pieter Heyvaert (pieter_heyvaert@hotmail.com)</li>\
|
||||||
<li><u>English(Australia):</u> Robert Readman readmanr(Transifex)</li>\
|
<li><u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net) and Pekka Niemi (pekka.niemi@iki.fi)</li>\
|
||||||
<li><u>English(United Kingdom):</u> Robert Readman readmanr(Transifex)</li>\
|
<li><u>Galician:</u> Marcos Lans (marcoslansgarza@gmail.com)</li>\
|
||||||
<li><u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net), Pekka Niemi (pekka.niemi@iki.fi) and Jiri Grönroos artnay(Transifex)</li>\
|
|
||||||
<li><u>Galician:</u> Marcos Lans (marcoslansgarza@gmail.com) and antiparvos(Transifex)</li>\
|
|
||||||
<li><u>Georgian:</u> Beqa Arabuli (arabulibeqa@yahoo.com)</li>\
|
<li><u>Georgian:</u> Beqa Arabuli (arabulibeqa@yahoo.com)</li>\
|
||||||
<li><u>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)</li>\
|
<li><u>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)</li>\
|
||||||
<li><u>Greek:</u> Tsvetan Bankov (emerge_life@users.sourceforge.net), Stephanos Antaris (santaris@csd.auth.gr), sledgehammer999(hammered999@gmail.com) and Γιάννης Ανθυμίδης Evropi(Transifex)</li>\
|
<li><u>Greek:</u> Tsvetan Bankov (emerge_life@users.sourceforge.net)</li>\
|
||||||
<li><u>Hebrew:</u> David Deutsch (d.deffo@gmail.com)</li>\
|
|
||||||
<li><u>Hungarian:</u> Majoros Péter (majoros.peterj@gmail.com)</li>\
|
<li><u>Hungarian:</u> Majoros Péter (majoros.peterj@gmail.com)</li>\
|
||||||
<li><u>Italian:</u> bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)</li>\
|
<li><u>Italian:</u> Matteo Sechi (bu17714@gmail.com)</li>\
|
||||||
<li><u>Japanese:</u> Masato Hashimoto (cabezon.hashimoto@gmail.com)</li>\
|
<li><u>Japanese:</u> Masato Hashimoto (cabezon.hashimoto@gmail.com)</li>\
|
||||||
<li><u>Korean:</u> Jin Woo Sin (jin828sin@users.sourceforge.net)</li>\
|
<li><u>Korean:</u> Jin Woo Sin (jin828sin@users.sourceforge.net)</li>\
|
||||||
<li><u>Lithuanian:</u> Naglis Jonaitis (njonaitis@gmail.com)</li>\
|
<li><u>Lithuanian:</u> Naglis Jonaitis (njonaitis@gmail.com)</li>\
|
||||||
<li><u>Norwegian:</u> Tomaso</li>\
|
<li><u>Norwegian:</u> Tomaso</li>\
|
||||||
<li><u>Polish:</u> Mariusz Fik (fisiu@opensuse.org)</li>\
|
<li><u>Polish:</u> Mariusz Fik (fisiu@opensuse.org)</li>\
|
||||||
<li><u>Portuguese:</u> Sérgio Marques smarquespt(Transifex)</li>\
|
<li><u>Portuguese:</u> Nick Marinho (nickmarinho@gmail.com)</li>\
|
||||||
<li><u>Portuguese(Brazil):</u> Nick Marinho (nickmarinho@gmail.com)</li>\
|
<li><u>Romanian:</u> Obada Denis (obadadenis@users.sourceforge.net)</li>\
|
||||||
<li><u>Romanian:</u> Obada Denis (obadadenis@users.sourceforge.net), Adrian Gabor Adriannho(Transifex) and Mihai Coman z0id(Transifex)</li>\
|
<li><u>Russian:</u> Nick Khazov (m2k3d0n@users.sourceforge.net) and Alexey Morsov (samurai@ricom.ru)</li>\
|
||||||
<li><u>Russian:</u> Nick Khazov (m2k3d0n at users.sourceforge.net), Alexey Morsov (samurai@ricom.ru), Nick Tiskov Dayman(daymansmail (at) gmail (dot) com), Dmitry DmitryKX(Transifex) and kraleksandr kraleksandr(Transifex)</li>\
|
|
||||||
<li><u>Serbian:</u> Anaximandar Milet (anaximandar@operamail.com)</li>\
|
<li><u>Serbian:</u> Anaximandar Milet (anaximandar@operamail.com)</li>\
|
||||||
<li><u>Slovak:</u> helix84</li>\
|
<li><u>Slovak:</u> helix84</li>\
|
||||||
<li><u>Spanish:</u> Alfredo Monclús (alfrix), Francisco Luque Contreras (frannoe@ya.com) and José Antonio Moray moray33(Transifex)</li>\
|
<li><u>Spanish:</u> Francisco Luque Contreras (frannoe@ya.com)</li>\
|
||||||
<li><u>Swedish:</u> Daniel Nylander (po@danielnylander.se) and Emil Hammarberg Ooglogput(Transifex)</li>\
|
<li><u>Swedish:</u> Daniel Nylander (po@danielnylander.se)</li>\
|
||||||
<li><u>Turkish:</u> Hasan YILMAZ (iletisim@hedefturkce.com) and Erdem Bingöl (erdem84@gmail.com)</li>\
|
<li><u>Turkish:</u> Hasan YILMAZ (iletisim@hedefturkce.com) and Erdem Bingöl (erdem84@gmail.com)</li>\
|
||||||
<li><u>Ukrainian:</u> Oleh Prypin (blaxpirit@gmail.com)</li>\
|
<li><u>Ukrainian:</u> Andrey Shpachenko (masterfix@users.sourceforge.net) and Oleh Prypin (blaxpirit@gmail.com)</li></ul>");
|
||||||
<li><u>Vietnamese:</u> Anh Phan ppanhh(Transifex)</li></ul>");
|
|
||||||
trans_txt += "<p>"+tr("Please contact me if you would like to translate qBittorrent into your own language.")+"</p>";
|
trans_txt += "<p>"+tr("Please contact me if you would like to translate qBittorrent into your own language.")+"</p>";
|
||||||
te_translation->setHtml(trans_txt);
|
te_translation->setHtml(trans_txt);
|
||||||
// License
|
// License
|
||||||
te_license->append(QString::fromUtf8("<a name='top'></a>"));
|
te_license->append(QString::fromUtf8("<a name='top'></a>"));
|
||||||
QFile licensefile(":/gpl.html");
|
QFile licensefile(":/gpl.html");
|
||||||
if (licensefile.open(QIODevice::ReadOnly|QIODevice::Text)) {
|
if(licensefile.open(QIODevice::ReadOnly|QIODevice::Text)) {
|
||||||
te_license->setHtml(licensefile.readAll());
|
te_license->setHtml(licensefile.readAll());
|
||||||
licensefile.close();
|
licensefile.close();
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,103 +0,0 @@
|
|||||||
/*
|
|
||||||
* Bittorrent Client using Qt4 and libtorrent.
|
|
||||||
* Copyright (C) 2012 Christophe Dumez
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation; either version 2
|
|
||||||
* of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
*
|
|
||||||
* In addition, as a special exception, the copyright holders give permission to
|
|
||||||
* link this program with the OpenSSL project's "OpenSSL" library (or with
|
|
||||||
* modified versions of it that use the same license as the "OpenSSL" library),
|
|
||||||
* and distribute the linked executables. You must obey the GNU General Public
|
|
||||||
* License in all respects for all of the code used other than "OpenSSL". If you
|
|
||||||
* modify file(s), you may extend this exception to your version of the file(s),
|
|
||||||
* but you are not obligated to do so. If you do not wish to do so, delete this
|
|
||||||
* exception statement from your version.
|
|
||||||
*
|
|
||||||
* Contact : chris@qbittorrent.org
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef ADDNEWTORRENTDIALOG_H
|
|
||||||
#define ADDNEWTORRENTDIALOG_H
|
|
||||||
|
|
||||||
#include <QShortcut>
|
|
||||||
#include <QDialog>
|
|
||||||
#include <QUrl>
|
|
||||||
#include <libtorrent/torrent_info.hpp>
|
|
||||||
#include "qtorrenthandle.h"
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
namespace Ui {
|
|
||||||
class AddNewTorrentDialog;
|
|
||||||
}
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
class TorrentContentFilterModel;
|
|
||||||
class PropListDelegate;
|
|
||||||
|
|
||||||
class AddNewTorrentDialog : public QDialog
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
~AddNewTorrentDialog();
|
|
||||||
|
|
||||||
static void showTorrent(const QString& torrent_path, const QString& from_url = QString());
|
|
||||||
static void showMagnet(const QString& torrent_link);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void showEvent(QShowEvent *event);
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void showAdvancedSettings(bool show);
|
|
||||||
void displayContentTreeMenu(const QPoint&);
|
|
||||||
void updateDiskSpaceLabel();
|
|
||||||
void onSavePathChanged(int);
|
|
||||||
void relayout();
|
|
||||||
void renameSelectedFile();
|
|
||||||
void setdialogPosition();
|
|
||||||
void updateMetadata(const QTorrentHandle& h);
|
|
||||||
|
|
||||||
protected slots:
|
|
||||||
virtual void accept();
|
|
||||||
virtual void reject();
|
|
||||||
|
|
||||||
private:
|
|
||||||
explicit AddNewTorrentDialog(QWidget *parent = 0);
|
|
||||||
bool loadTorrent(const QString& torrent_path, const QString& from_url);
|
|
||||||
bool loadMagnet(const QString& magnet_uri);
|
|
||||||
void loadSavePathHistory();
|
|
||||||
void saveSavePathHistory() const;
|
|
||||||
int indexOfSavePath(const QString& save_path);
|
|
||||||
void updateFileNameInSavePaths(const QString& new_filename);
|
|
||||||
void loadState();
|
|
||||||
void saveState();
|
|
||||||
void setMetadataProgressIndicator(bool visibleIndicator, const QString &labelText = QString());
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AddNewTorrentDialog *ui;
|
|
||||||
TorrentContentFilterModel *m_contentModel;
|
|
||||||
PropListDelegate *m_contentDelegate;
|
|
||||||
bool m_isMagnet;
|
|
||||||
bool m_hasMetadata;
|
|
||||||
QString m_filePath;
|
|
||||||
QString m_url;
|
|
||||||
QString m_hash;
|
|
||||||
boost::intrusive_ptr<libtorrent::torrent_info> m_torrentInfo;
|
|
||||||
QStringList m_filesPath;
|
|
||||||
bool m_hasRenamedFile;
|
|
||||||
QShortcut *editHotkey;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ADDNEWTORRENTDIALOG_H
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,121 +0,0 @@
|
|||||||
/*
|
|
||||||
* Bittorrent Client using Qt4 and libtorrent.
|
|
||||||
* Copyright (C) 2013 Nick Tiskov
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation; either version 2
|
|
||||||
* of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
*
|
|
||||||
* In addition, as a special exception, the copyright holders give permission to
|
|
||||||
* link this program with the OpenSSL project's "OpenSSL" library (or with
|
|
||||||
* modified versions of it that use the same license as the "OpenSSL" library),
|
|
||||||
* and distribute the linked executables. You must obey the GNU General Public
|
|
||||||
* License in all respects for all of the code used other than "OpenSSL". If you
|
|
||||||
* modify file(s), you may extend this exception to your version of the file(s),
|
|
||||||
* but you are not obligated to do so. If you do not wish to do so, delete this
|
|
||||||
* exception statement from your version.
|
|
||||||
*
|
|
||||||
* Contact : daymansmail@gmail.com
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <QDesktopWidget>
|
|
||||||
|
|
||||||
#include "mainwindow.h"
|
|
||||||
#include "autoexpandabledialog.h"
|
|
||||||
#include "ui_autoexpandabledialog.h"
|
|
||||||
|
|
||||||
AutoExpandableDialog::AutoExpandableDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AutoExpandableDialog) {
|
|
||||||
ui->setupUi(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
AutoExpandableDialog::~AutoExpandableDialog() {
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString AutoExpandableDialog::getText(QWidget *parent, const QString &title, const QString &label,
|
|
||||||
QLineEdit::EchoMode mode, const QString &text, bool *ok,
|
|
||||||
Qt::InputMethodHints inputMethodHints) {
|
|
||||||
|
|
||||||
AutoExpandableDialog d(parent);
|
|
||||||
d.setWindowTitle(title);
|
|
||||||
d.ui->textLabel->setText(label);
|
|
||||||
d.ui->textEdit->setText(text);
|
|
||||||
d.ui->textEdit->setEchoMode(mode);
|
|
||||||
d.ui->textEdit->setInputMethodHints(inputMethodHints);
|
|
||||||
|
|
||||||
bool res = d.exec();
|
|
||||||
if (ok)
|
|
||||||
*ok = res;
|
|
||||||
|
|
||||||
if (!res)
|
|
||||||
return QString();
|
|
||||||
|
|
||||||
return d.ui->textEdit->text();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AutoExpandableDialog::showEvent(QShowEvent *e) {
|
|
||||||
// Overriding showEvent is required for consistent UI with fixed size under custom DPI
|
|
||||||
// Show dialog
|
|
||||||
QDialog::showEvent(e);
|
|
||||||
// and resize textbox to fit the text
|
|
||||||
|
|
||||||
// NOTE: For some strange reason QFontMetrics gets more accurate
|
|
||||||
// when called from showEvent. Only 6 symbols off instead of 11 symbols off.
|
|
||||||
int textW = ui->textEdit->fontMetrics().width(ui->textEdit->text()) + 4;
|
|
||||||
int screenW = QApplication::desktop()->width() / 4;
|
|
||||||
int wd = textW;
|
|
||||||
|
|
||||||
if (!windowTitle().isEmpty()) {
|
|
||||||
int _w = fontMetrics().width(windowTitle());
|
|
||||||
if (_w > wd)
|
|
||||||
wd = _w;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ui->textLabel->text().isEmpty()) {
|
|
||||||
int _w = ui->textLabel->fontMetrics().width(ui->textLabel->text());
|
|
||||||
if (_w > wd)
|
|
||||||
wd = _w;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Now resize the dialog to fit the contents
|
|
||||||
// Maximum value is whichever is smaller:
|
|
||||||
// 1. screen width / 4
|
|
||||||
// 2. max width of text from either of: label, title, textedit
|
|
||||||
// If the value is less than dialog default size default size is used
|
|
||||||
wd = textW < screenW ? textW : screenW;
|
|
||||||
if (wd > width())
|
|
||||||
resize(width() - ui->horizontalLayout->sizeHint().width() + wd, height());
|
|
||||||
|
|
||||||
// Use old dialog behavior: prohibit resizing the dialog
|
|
||||||
setFixedHeight(height());
|
|
||||||
|
|
||||||
// Update geometry: center on screen
|
|
||||||
QDesktopWidget *desk = QApplication::desktop();
|
|
||||||
MainWindow *wnd = qobject_cast<MainWindow*>(QApplication::activeWindow());
|
|
||||||
QPoint p = QCursor::pos();
|
|
||||||
|
|
||||||
int screenNum = 0;
|
|
||||||
if (wnd == 0)
|
|
||||||
screenNum = desk->screenNumber(p);
|
|
||||||
else if (!wnd->isHidden())
|
|
||||||
screenNum = desk->screenNumber(wnd);
|
|
||||||
else
|
|
||||||
screenNum = desk->screenNumber(p);
|
|
||||||
|
|
||||||
QRect screenRes = desk->screenGeometry(screenNum);
|
|
||||||
|
|
||||||
QRect geom = geometry();
|
|
||||||
geom.moveCenter(QPoint(screenRes.width() / 2, screenRes.height() / 2));
|
|
||||||
setGeometry(geom);
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
/*
|
|
||||||
* Bittorrent Client using Qt4 and libtorrent.
|
|
||||||
* Copyright (C) 2013 Nick Tiskov
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation; either version 2
|
|
||||||
* of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
*
|
|
||||||
* In addition, as a special exception, the copyright holders give permission to
|
|
||||||
* link this program with the OpenSSL project's "OpenSSL" library (or with
|
|
||||||
* modified versions of it that use the same license as the "OpenSSL" library),
|
|
||||||
* and distribute the linked executables. You must obey the GNU General Public
|
|
||||||
* License in all respects for all of the code used other than "OpenSSL". If you
|
|
||||||
* modify file(s), you may extend this exception to your version of the file(s),
|
|
||||||
* but you are not obligated to do so. If you do not wish to do so, delete this
|
|
||||||
* exception statement from your version.
|
|
||||||
*
|
|
||||||
* Contact : daymansmail@gmail.com
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef AUTOEXPANDABLEDIALOG_H
|
|
||||||
#define AUTOEXPANDABLEDIALOG_H
|
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
#include <QString>
|
|
||||||
#include <QLineEdit>
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class AutoExpandableDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AutoExpandableDialog : public QDialog {
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit AutoExpandableDialog(QWidget *parent = 0);
|
|
||||||
~AutoExpandableDialog();
|
|
||||||
|
|
||||||
static QString getText(QWidget *parent, const QString& title, const QString& label,
|
|
||||||
QLineEdit::EchoMode mode = QLineEdit::Normal, const QString & text = QString(),
|
|
||||||
bool * ok = 0, Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void showEvent(QShowEvent *e);
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AutoExpandableDialog *ui;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // AUTOEXPANDABLEDIALOG_H
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AutoExpandableDialog</class>
|
|
||||||
<widget class="QDialog" name="AutoExpandableDialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>222</width>
|
|
||||||
<height>94</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string notr="true">Dialog</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<spacer name="verticalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="textLabel">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string notr="true"/>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true"/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="textEdit">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string notr="true"/>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true"/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>AutoExpandableDialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>248</x>
|
|
||||||
<y>254</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>157</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>rejected()</signal>
|
|
||||||
<receiver>AutoExpandableDialog</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>316</x>
|
|
||||||
<y>260</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>286</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
|
||||||
@@ -59,7 +59,7 @@ class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg {
|
|||||||
|
|
||||||
static bool askForDeletionConfirmation(bool *delete_local_files) {
|
static bool askForDeletionConfirmation(bool *delete_local_files) {
|
||||||
DeletionConfirmationDlg dlg;
|
DeletionConfirmationDlg dlg;
|
||||||
if (dlg.exec() == QDialog::Accepted) {
|
if(dlg.exec() == QDialog::Accepted) {
|
||||||
*delete_local_files = dlg.shouldDeleteLocalFiles();
|
*delete_local_files = dlg.shouldDeleteLocalFiles();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ DNSUpdater::DNSUpdater(QObject *parent) :
|
|||||||
updateCredentials();
|
updateCredentials();
|
||||||
|
|
||||||
// Load saved settings from previous session
|
// Load saved settings from previous session
|
||||||
QIniSettings settings;
|
QIniSettings settings("qBittorrent", "qBittorrent");
|
||||||
m_lastIPCheckTime = settings.value("DNSUpdater/lastUpdateTime").toDateTime();
|
m_lastIPCheckTime = settings.value("DNSUpdater/lastUpdateTime").toDateTime();
|
||||||
m_lastIP = QHostAddress(settings.value("DNSUpdater/lastIP").toString());
|
m_lastIP = QHostAddress(settings.value("DNSUpdater/lastIP").toString());
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ DNSUpdater::DNSUpdater(QObject *parent) :
|
|||||||
m_ipCheckTimer.start();
|
m_ipCheckTimer.start();
|
||||||
|
|
||||||
// Check lastUpdate to avoid flooding
|
// Check lastUpdate to avoid flooding
|
||||||
if (!m_lastIPCheckTime.isValid() ||
|
if(!m_lastIPCheckTime.isValid() ||
|
||||||
m_lastIPCheckTime.secsTo(QDateTime::currentDateTime())*1000 > IP_CHECK_INTERVAL_MS) {
|
m_lastIPCheckTime.secsTo(QDateTime::currentDateTime())*1000 > IP_CHECK_INTERVAL_MS) {
|
||||||
checkPublicIP();
|
checkPublicIP();
|
||||||
}
|
}
|
||||||
@@ -58,7 +58,7 @@ DNSUpdater::DNSUpdater(QObject *parent) :
|
|||||||
|
|
||||||
DNSUpdater::~DNSUpdater() {
|
DNSUpdater::~DNSUpdater() {
|
||||||
// Save lastupdate time and last ip
|
// Save lastupdate time and last ip
|
||||||
QIniSettings settings;
|
QIniSettings settings("qBittorrent", "qBittorrent");
|
||||||
settings.setValue("DNSUpdater/lastUpdateTime", m_lastIPCheckTime);
|
settings.setValue("DNSUpdater/lastUpdateTime", m_lastIPCheckTime);
|
||||||
settings.setValue("DNSUpdater/lastIP", m_lastIP.toString());
|
settings.setValue("DNSUpdater/lastIP", m_lastIP.toString());
|
||||||
}
|
}
|
||||||
@@ -79,19 +79,19 @@ void DNSUpdater::checkPublicIP()
|
|||||||
void DNSUpdater::ipRequestFinished(QNetworkReply *reply)
|
void DNSUpdater::ipRequestFinished(QNetworkReply *reply)
|
||||||
{
|
{
|
||||||
qDebug() << Q_FUNC_INFO;
|
qDebug() << Q_FUNC_INFO;
|
||||||
if (reply->error()) {
|
if(reply->error()) {
|
||||||
// Error
|
// Error
|
||||||
qWarning() << Q_FUNC_INFO << "Error:" << reply->errorString();
|
qWarning() << Q_FUNC_INFO << "Error:" << reply->errorString();
|
||||||
} else {
|
} else {
|
||||||
// Parse response
|
// Parse response
|
||||||
QRegExp ipregex("Current IP Address:\\s+([^<]+)</body>");
|
QRegExp ipregex("Current IP Address:\\s+([^<]+)</body>");
|
||||||
QString ret = reply->readAll();
|
QString ret = reply->readAll();
|
||||||
if (ipregex.indexIn(ret) >= 0) {
|
if(ipregex.indexIn(ret) >= 0) {
|
||||||
QString ip_str = ipregex.cap(1);
|
QString ip_str = ipregex.cap(1);
|
||||||
qDebug() << Q_FUNC_INFO << "Regular expression captured the following IP:" << ip_str;
|
qDebug() << Q_FUNC_INFO << "Regular expression captured the following IP:" << ip_str;
|
||||||
QHostAddress new_ip(ip_str);
|
QHostAddress new_ip(ip_str);
|
||||||
if (!new_ip.isNull()) {
|
if(!new_ip.isNull()) {
|
||||||
if (m_lastIP != new_ip) {
|
if(m_lastIP != new_ip) {
|
||||||
qDebug() << Q_FUNC_INFO << "The IP address changed, report the change to DynDNS...";
|
qDebug() << Q_FUNC_INFO << "The IP address changed, report the change to DynDNS...";
|
||||||
qDebug() << m_lastIP.toString() << "->" << new_ip.toString();
|
qDebug() << m_lastIP.toString() << "->" << new_ip.toString();
|
||||||
m_lastIP = new_ip;
|
m_lastIP = new_ip;
|
||||||
@@ -157,7 +157,7 @@ QUrl DNSUpdater::getUpdateUrl() const
|
|||||||
|
|
||||||
void DNSUpdater::ipUpdateFinished(QNetworkReply *reply)
|
void DNSUpdater::ipUpdateFinished(QNetworkReply *reply)
|
||||||
{
|
{
|
||||||
if (reply->error()) {
|
if(reply->error()) {
|
||||||
// Error
|
// Error
|
||||||
qWarning() << Q_FUNC_INFO << "Error:" << reply->errorString();
|
qWarning() << Q_FUNC_INFO << "Error:" << reply->errorString();
|
||||||
} else {
|
} else {
|
||||||
@@ -174,11 +174,11 @@ void DNSUpdater::processIPUpdateReply(const QString &reply)
|
|||||||
qDebug() << Q_FUNC_INFO << reply;
|
qDebug() << Q_FUNC_INFO << reply;
|
||||||
QString code = reply.split(" ").first();
|
QString code = reply.split(" ").first();
|
||||||
qDebug() << Q_FUNC_INFO << "Code:" << code;
|
qDebug() << Q_FUNC_INFO << "Code:" << code;
|
||||||
if (code == "good" || code == "nochg") {
|
if(code == "good" || code == "nochg") {
|
||||||
QBtSession::instance()->addConsoleMessage(tr("Your dynamic DNS was successfully updated."), "green");
|
QBtSession::instance()->addConsoleMessage(tr("Your dynamic DNS was successfuly updated."), "green");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (code == "911" || code == "dnserr") {
|
if(code == "911" || code == "dnserr") {
|
||||||
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: The service is temporarily unavailable, it will be retried in 30 minutes."),
|
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: The service is temporarily unavailable, it will be retried in 30 minutes."),
|
||||||
"red");
|
"red");
|
||||||
m_lastIP.clear();
|
m_lastIP.clear();
|
||||||
@@ -188,30 +188,30 @@ void DNSUpdater::processIPUpdateReply(const QString &reply)
|
|||||||
// Everything bellow is an error, stop updating until the user updates something
|
// Everything bellow is an error, stop updating until the user updates something
|
||||||
m_ipCheckTimer.stop();
|
m_ipCheckTimer.stop();
|
||||||
m_lastIP.clear();
|
m_lastIP.clear();
|
||||||
if (code == "nohost") {
|
if(code == "nohost") {
|
||||||
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: hostname supplied does not exist under specified account."),
|
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: hostname supplied does not exist under specified account."),
|
||||||
"red");
|
"red");
|
||||||
m_state = INVALID_CREDS;
|
m_state = INVALID_CREDS;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (code == "badauth") {
|
if(code == "badauth") {
|
||||||
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: Invalid username/password."), "red");
|
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: Invalid username/password."), "red");
|
||||||
m_state = INVALID_CREDS;
|
m_state = INVALID_CREDS;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (code == "badagent") {
|
if(code == "badagent") {
|
||||||
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: qBittorrent was blacklisted by the service, please report a bug at http://bugs.qbittorrent.org."),
|
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: qBittorrent was blacklisted by the service, please report a bug at http://bugs.qbittorrent.org."),
|
||||||
"red");
|
"red");
|
||||||
m_state = FATAL;
|
m_state = FATAL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (code == "!donator") {
|
if(code == "!donator") {
|
||||||
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: %1 was returned by the service, please report a bug at http://bugs.qbittorrent.org.").arg("!donator"),
|
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: %1 was returned by the service, please report a bug at http://bugs.qbittorrent.org.").arg("!donator"),
|
||||||
"red");
|
"red");
|
||||||
m_state = FATAL;
|
m_state = FATAL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (code == "abuse") {
|
if(code == "abuse") {
|
||||||
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: Your username was blocked due to abuse."),
|
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: Your username was blocked due to abuse."),
|
||||||
"red");
|
"red");
|
||||||
m_state = FATAL;
|
m_state = FATAL;
|
||||||
@@ -221,18 +221,18 @@ void DNSUpdater::processIPUpdateReply(const QString &reply)
|
|||||||
|
|
||||||
void DNSUpdater::updateCredentials()
|
void DNSUpdater::updateCredentials()
|
||||||
{
|
{
|
||||||
if (m_state == FATAL) return;
|
if(m_state == FATAL) return;
|
||||||
Preferences pref;
|
Preferences pref;
|
||||||
bool change = false;
|
bool change = false;
|
||||||
// Get DNS service information
|
// Get DNS service information
|
||||||
if (m_service != pref.getDynDNSService()) {
|
if(m_service != pref.getDynDNSService()) {
|
||||||
m_service = pref.getDynDNSService();
|
m_service = pref.getDynDNSService();
|
||||||
change = true;
|
change = true;
|
||||||
}
|
}
|
||||||
if (m_domain != pref.getDynDomainName()) {
|
if(m_domain != pref.getDynDomainName()) {
|
||||||
m_domain = pref.getDynDomainName();
|
m_domain = pref.getDynDomainName();
|
||||||
QRegExp domain_regex("^(?:(?!\\d|-)[a-zA-Z0-9\\-]{1,63}\\.)+[a-zA-Z]{2,}$");
|
QRegExp domain_regex("^(?:(?!\\d|-)[a-zA-Z0-9\\-]{1,63}\\.)+[a-zA-Z]{2,}$");
|
||||||
if (domain_regex.indexIn(m_domain) < 0) {
|
if(domain_regex.indexIn(m_domain) < 0) {
|
||||||
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: supplied domain name is invalid."),
|
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: supplied domain name is invalid."),
|
||||||
"red");
|
"red");
|
||||||
m_lastIP.clear();
|
m_lastIP.clear();
|
||||||
@@ -242,9 +242,9 @@ void DNSUpdater::updateCredentials()
|
|||||||
}
|
}
|
||||||
change = true;
|
change = true;
|
||||||
}
|
}
|
||||||
if (m_username != pref.getDynDNSUsername()) {
|
if(m_username != pref.getDynDNSUsername()) {
|
||||||
m_username = pref.getDynDNSUsername();
|
m_username = pref.getDynDNSUsername();
|
||||||
if (m_username.length() < 4) {
|
if(m_username.length() < 4) {
|
||||||
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: supplied username is too short."),
|
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: supplied username is too short."),
|
||||||
"red");
|
"red");
|
||||||
m_lastIP.clear();
|
m_lastIP.clear();
|
||||||
@@ -254,9 +254,9 @@ void DNSUpdater::updateCredentials()
|
|||||||
}
|
}
|
||||||
change = true;
|
change = true;
|
||||||
}
|
}
|
||||||
if (m_password != pref.getDynDNSPassword()) {
|
if(m_password != pref.getDynDNSPassword()) {
|
||||||
m_password = pref.getDynDNSPassword();
|
m_password = pref.getDynDNSPassword();
|
||||||
if (m_password.length() < 4) {
|
if(m_password.length() < 4) {
|
||||||
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: supplied password is too short."),
|
QBtSession::instance()->addConsoleMessage(tr("Dynamic DNS error: supplied password is too short."),
|
||||||
"red");
|
"red");
|
||||||
m_lastIP.clear();
|
m_lastIP.clear();
|
||||||
@@ -267,7 +267,7 @@ void DNSUpdater::updateCredentials()
|
|||||||
change = true;
|
change = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_state == INVALID_CREDS && change) {
|
if(m_state == INVALID_CREDS && change) {
|
||||||
m_state = OK; // Try again
|
m_state = OK; // Try again
|
||||||
m_ipCheckTimer.start();
|
m_ipCheckTimer.start();
|
||||||
checkPublicIP();
|
checkPublicIP();
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user