Compare commits

..

2 Commits

Author SHA1 Message Date
Christophe Dumez
445d000a87 - Removed rc2 from version 2009-08-13 03:54:35 +00:00
Christophe Dumez
3bf89e17e5 - Tagged v1.4.0 release 2009-08-13 03:51:59 +00:00
361 changed files with 156590 additions and 2036 deletions

7
.gitattributes vendored
View File

@@ -1,7 +0,0 @@
core.eol=lf
* text eol=lf
*.zip binary
*.png binary
*.ico binary
*.qm binary
*.icns binary

36
.gitignore vendored
View File

@@ -1,36 +0,0 @@
src/gui/geoip/GeoIP.dat
src/gui/geoip/GeoIP.dat.gz
src/qbittorrent
src/qbittorrent-nox
src/release
src/debug
qbittorrent.pro.user*
conf.pri
Makefile*
*.pyc
*.log
# Compiled object files
*.o
*.pdb
*.exe
# Generated MOC, resource and UI files
moc_*.cpp
moc_*.h
qrc_*.cpp
ui_*.h
*.moc
src/lang/qbittorrent_*.qm
.DS_Store
.qmake.stash
src/qbittorrent.app
*.dmg
#Autotools junk
aclocal.m4
autom4te.cache/*
config.status
src/icons/qbt-theme/build-icons/node_modules/
src/icons/skin/build-icons/node_modules/
src/icons/skin/build-icons/icons/*.png

84
AUTHORS Normal file
View File

@@ -0,0 +1,84 @@
Author:
* Christophe Dumez <chris@qbittorrent.org>
Contributors:
* Arnaud Demaizière <arnaud@qbittorrent.org>
* Ishan Arora <ishan@qbittorrent.org>
* Grigis Gaëtan <cipher16@gmail.com>
Code from other projects:
* files src/ico.cpp src/ico.h
copyright: Malte Starostik <malte@kde.org>
license: LGPL
Images Authors:
* files: src/Icons/*.png
copyright: Gnome Icon Theme
license: GPLv2
url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme
* files: src/oxygen/*.png
copyright: Oxygen Icon Theme (KDE)
license: LGPL
url: http://www.oxygen-icons.org
* files: src/Icons/flags/*.png
copyright: Open Clip Art Library
license: Creative Commons Public Domain Dedication
url: http://www.openclipart.org
* files: src/Icons/skin/*.png
files: src/menuicons/YYxYY/*.png
copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
license: GPLv2
* file: src/Icons/skin/tabs.gif
copyright: Greg Houston <gregory.houston@gmail.com>
license: MIT
* file: src/search_engine/engines/btjunkie.png
copyright: Downloaded from btjunkie.org
* file: src/search_engine/engines/isohunt.png
copyright: Downloaded from isohunt.com
* file: src/search_engine/engines/mininova.png
copyright: Downloaded from mininova.org
* file: src/search_engine/engines/piratebay.png
copyright: Downloaded from thepiratebay.org
* file: src/search_engine/engines/torrentreactor.png
copyright: Downloaded from torrentreactor.net
Translations authors:
* files: src/lang/*.ts
copyright:
- Brazilian: Nick Marinho (nickmarinho@gmail.com)
- Bulgarian: Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net)
- Catalan: Gekko Dam Beer (gekko04@users.sourceforge.net)
- Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com)
- Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com)
- Czech: Jirka Vilim (web@tets.cz)
- Danish: Mathias Nielsen (comoneo@gmail.com)
- Dutch: Joost Schipper (heavyjoost@users.sourceforge.net)
- English: Christophe Dumez (chris@qbittorrent.org)
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
- French: Christophe Dumez (chris@qbittorrent.org)
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net)
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
- Italian: Mirko Ferrari (mirkoferrari@gmail.com) and Ferraro Luciano (luciano.ferraro@gmail.com)
- Japanese: Nardog (nardog@e2umail.com)
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
- Norwegian: Lars-Erik Labori (hamil@users.sourceforge.net)
- Polish: Jarek Smieja (ajep9691@wp.pl)
- Portuguese: Nick Marinho (nickmarinho@gmail.com)
- Romanian: Obada Denis (obadadenis@users.sourceforge.net)
- Russian: Nick Khazov (m2k3d0n at users.sourceforge.net)
- Slovak: helix84
- Spanish: Vicente Raul Plata Fonseca (silverxnt@users.sourceforge.net)
- Swedish: Daniel Nylander (po@danielnylander.se)
- Turkish: Erdem Bingöl (erdem84@gmail.com)
- Ukrainian: Andrey Shpachenko (masterfix@users.sourceforge.net)
license: GPLv2

354
COPYING Normal file
View File

@@ -0,0 +1,354 @@
qBittorrent is licensed under the GNU General Public License version 2 with the
addition of the following special exception:
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.
----------
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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 St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

514
Changelog Normal file
View File

@@ -0,0 +1,514 @@
* Thu Aug 13 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.4.0
- FEATURE: Display swarm information in lists
- FEATURE: Allow to define temporary download folder
- FEATURE: Display total amount of uploaded data in finished list
- FEATURE: Resizing a column in a search results tab affects all tabs
- FEATURE: Search results tab columns are now remembered upon startup
- FEATURE: Added right click menu in search engine to clear completion history
- FEATURE: Allow to set a different port for DHT (UDP) than the one used for Bittorrent
- FEATURE: Updated spoofing code to avoid trackers ban
- BUGFIX: Provide more helpful explanation when an I/O error occured
- BUGFIX: Stop enforcing UTF-8 and use system locale instead
- COSMETIC: Redesigned program preferences
- COSMETIC: Updated icons set
* Fri Jul 24 2009 - Christophe DUMEZ <chris@qbittorrent.org> - 1.3.5
- BUGFIX: Made IP filter parser more robust
- BUGFIX: Fixed torrent creation tool
- BUGFIX: Fixed possible overflow in progress calculation in arborescence.h
- BUGFIX: Save properties window size, position, columns width and restore them
- BUGFIX: Set a minimum default width for NAME column in properties
- BUGFIX: Remember visual indexes of columns in transfer lists
* Sun Jul 12 2009 - Christophe DUMEZ <chris@qbittorrent.org> - v1.3.4
- BUGFIX: Fixed IP filter file parsing on 64bits
- BUGFIX: Suppressed QLayout: Attempting to add QLayout "" to properties "properties" warning message when opening a properties dialog
- BUGFIX: Fixed a little bug in search engine plugins helper file
- BUGFIX: Fixed compilation problems with Qt 4.3
- BUGFIX: Percentages no longer disapear with default cleanlooks style
- BUGFIX: Cleanly fixed popup menus position in lists (no more workarounds)
- BUGFIX: Fixed memory leak in search engine
- BUGFIX: Torrents with an infinite ratio are no longer affected by ratio_limit set in program preferences
- BUGFIX: Display a ratio of 0.0 if total_upload and total_download are both 0
- BUGFIX: Remove last separator in top tool bar
- BUGFIX: Tuned lists properties to make sure display is correct
- COSMETIC: Display date as well as time in log window
* Sun Apr 5 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.3
- BUGFIX: Fixed Web UI torrent upload form
- BUGFIX: Fixed unicode support in search engine
- BUGFIX: Fixed search engine bug that prevented a torrent from appearing more than once among all tabs
- LICENSE: Added an exception to the license regarding OpenSSL.
- I18N: Updated Finnish translation
* Sat Mar 7 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.2
- BUGFIX: Fix top toolbar disabling
- BUGFIX: Fix building with Qt 4.5
- BUGFIX: RSS items read status is now remembered upon restart
* Mon Jan 26 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.1
- BUGFIX: Torrents paused due to an I/O error were displayed as queued
- BUGFIX: qBittorrent now prints backtrace in terminal when segfaulting
- BUGFIX: Fixed files progress display in torrent properties
- BUGFIX: Improved torrent ratio calculation
- BUGFIX: Fixed possible crash when parsing filter file
- BUGFIX: Made some code optimization
- BUGFIX: Fixed download/upload speed decrease problems
- I18N: Updated Finnish, Bulgarian and Greek translations
* Fri Jan 9 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.0
- FEATURE: Based on libtorrent-rasterbar v0.14.2
- FEATURE: Improved ratio calculation system
- FEATURE: Torrent creation code cleanup
- FEATURE: Allow to set maximum number of active seeds (queueing)
- FEATURE: Now seeds priorities are handled automatically by libtorrent-rasterbar (queueing)
- FEATURE: Code cleanup and optimization (save memory and cpu)
- FEATURE: ETA calculation now relies on average speed over all sessions
- FEATURE: Allow to force rechecking torrents
- FEATURE: Added support for 2 new extensions (uTorrent metadata and smart ban plugin)
- FEATURE: Allow to change the save path of torrents after addition
- FEATURE: Got rid of libmagick++ dependency
- FEATURE: Updated Web interface to MochaUI v0.9.5
- FEATURE: Added notification in WebUI when qBittorrent is not reachable
- FEATURE: Rewrote folder scanning code (Now uses a filesystem watcher)
- FEATURE: Added torrent deletion from hard drive function in Web UI
- FEATURE: Added queueing priority actions in Web UI
- FEATURE: Display progress using progress bars in Web UI
- BUGFIX: Made usage of fastresume data more reliable
- BUGFIX: qBittorrent shutdown is now faster
- BUGFIX: Fixed several memory leaks
- BUGFIX: WebUI is now working with IE7
- BUGFIX: Fixed spacing problem in toolbar when toggling its visibility
- BUGFIX: Fixed some compilation and Qt4 warnings
- BUGFIX: Do not use an addition dialog for torrents from folder scanning
- BUGFIX: Catch SIGTERM to exit cleanly (e.g. computer shutdown)
- BUGFIX: Improved proxy support code
- BUGFIX: Fixed systray icon tooltip on Windows
- BUGFIX: Proxy settings are now saved even if disabled
* Sun Nov 9 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.2.1
- BUGFIX: Fixed possible crash when deleting a torrent permanently
- BUGFIX: Queued_for_checking torrents were not displayed as checking in seeding list
- BUGFIX: Speed up startup time when having a lot of torrents
* Wed Oct 29th 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.2.0
- FEATURE: Torrent queueing system (with priorities)
- FEATURE: The number of DHT nodes is displayed
- FEATURE: RSS can now be disabled from program preferences
- FEATURE: Added collapse/expand all buttons in addition and properties dialogs
- FEATURE: Can have different proxies for Bittorrent and search engine
- FEATURE: Allow multiple item selection in Web UI transfer list
- FEATURE: Moved uploads to a separate list in Web UI
- BUGFIX: Totally rewritten Web UI list refresh system (fixed memory leak)
- BUGFIX: Disable ETA calculation when ETA column is hidden
- BUGFIX: Removed "disconnected" connection state, detection was far from perfect
- BUGFIX: Torrents are no longer starting from scratch when changing default save path (when torrent addition dialog is disabled)
- BUGFIX: Single instance code is now more reliable on Qt >= 4.4
- COSMETIC: Transfer speed, ratio, connection status and DHT nodes are displayed in status bar
- COSMETIC: RSS Tab is now hidden as a default
- COSMETIC: Allow to hide or display top toolbar
- COSMETIC: Log is now in a separate dialog
* Sun Sept 14 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.4
- FEATURE: DHT is no longer used as fallback only
- FEATURE: Ported WebUI to Mootools v1.2
- BUGFIX: Fixed 'start seeding after torrent creation' feature
- BUGFIX: Fixed compilation with boost v1.36
- BUGFIX: Some code optimization
- BUGFIX: Fixed memory leak in Web UI
- BUGFIX: Fixed problems with column sorting
- BUGFIX: Improved code for pausing torrents on startup
- BUGFIX: Torrent addition dialog is now disabled for downloads from WebUI
- BUGFIX: Give focus to input field in WebUI download dialog
* Tue Aug 26 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.3
- BUGFIX: Fixed ratio saving for seeding torrents
- I18N: Added czech and traditional chinese translations
* Sun Aug 17 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.2
- BUGFIX: Fixed progress calculation
- BUGFIX: Fixed finished torrent detection
* Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.1
- BUGFIX: Fixed bad resource file for icons
* Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
- FEATURE: Web interface to control qbittorrent (Ishan Arora)
- FEATURE: Can spoof Azureus peer id to avoid ban
- FEATURE: Allow to hide/show some columns in download and seeding lists
- FEATURE: Option to start qBittorrent minimized in systray
- FEATURE: Multi-tab support in search engine (Grigis Gaëtan)
- FEATURE: Allow to define double-click actions in torrents lists
- FEATURE: Allow to open torrent destination folder
- FEATURE: Real progress bar in torrent properties that displays downloaded pieces
- FEATURE: Allow to buy downloads using ShareMonkey
- FEATURE: Display if UPnP/NAT-PMP was successful or not
- FEATURE: Threadified torrent creation
- FEATURE: Improved eMule DAT ip filter parser
- FEATURE: Added support for PeerGuardian p2p filters (text)
- FEATURE: Added support for PeerGuardian p2b filters (binary)
- FEATURE: Allow to customize folder scan interval
- FEATURE: Allow to add several trackers at once
- BUGFIX: Allow to run one instance of qBittorrent per user
- BUGFIX: Do not display seeds number in seeding list (always 0)
- BUGFIX: Threadified IP filter file parser to avoid GUI freeze
- BUGFIX: Ask if we want to redownload if content was deleted from hard drive
- BUGFIX: Added missing copyright/licensing information for some files
- BUGFIX: qBittorrent is no longer conflicting with rTorrent (libtorrent renamed to libtorrent-rasterbar)
- COSMETIC: Do not display progress bar in seeding list (always 100%)
- COSMETIC: Added a progress bar for torrent creation
- COSMETIC: Display tracker errors in a cleaner way
- COSMETIC: Display "unpaused/total_torrent" in download/upload tabs
- COSMETIC: Allow to resize RSS column
- COSMETIC: Global UP/DL speeds and ratio are displayed above tabs
- COSMETIC: Use infinity symbol for ETA when time is infinite
* Fri Apr 11 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.0.0
- FEATURE: Based on new libtorrent v0.13
- FEATURE: Added UPnP / NAT-PMP port forwarding support
- FEATURE: Added encryption support (compatible with Azureus)
- FEATURE: Bittorrent FAST extension support
- FEATURE: Added RSS support
- FEATURE: Support files prioritizing in a torrent
- FEATURE: Brand new search engine plugins system
- FEATURE: Filtered files don't appear on hard disk anymore
- FEATURE: Finished torrents are now moved to another tab for seeding
- FEATURE: Display more infos about the torrent in its properties
- FEATURE: Allow the user to edit torrents' trackers
- FEATURE: Allow user to change qBT's style (Plastique, Cleanlooks, Motif, CDE, MacOSX, WinXP)
- FEATURE: Allow the user to disable system tray integration
- FEATURE: Search engine is now using one thread per website for faster results
- FEATURE: Improved a lot the torrent creation module
- FEATURE: Allow to set upload/download limit per torrent (right click)
- FEATURE: Ask for exit confirmation only if download list is not empty
- FEATURE: Allow to use a proxy for trackers / web seeds / peers / DHT connections
- FEATURE: Supports SOCKS5 proxies as well as HTTP ones
- FEATURE: Better systems integration (buttons, dialogs...)
- FEATURE: Filtered files are not allocated on the hard-drive anymore (sparse file support)
- FEATURE: IPs blocked by filter are now logged in GUI
- FEATURE: Added a way to link against static libtorrent (useful for deb packages)
- FEATURE: Allow to set global upload/download limits from tray icon menu
- FEATURE: IPv6 is now fully supported
- FEATURE: Real torrent share ratio is now displayed in transfer list
- FEATURE: Added keyboard shortcuts for main actions (see wiki)
- FEATURE: Added a popup menu to set priority for multiple files at once
- FEATURE: Improved a lot downloading from urls (using libcommoncpp2 instead of libcurl)
- FEATURE: A search request can now be terminated by another
- FEATURE: User is now warned when fast resume data was rejected
- FEATURE: Url seeds are now displayed in torrent properties and are editable
- FEATURE: Allow to drag 'n drop urls on the main window
- FEATURE: Improved search engine (multipage support in all plugins)
- FEATURE: Added BTJunkie search engine plugin
- FEATURE: Added an option to force full disk allocation for all torrents
- FEATURE: Added an option to add torrents in paused state
- FEATURE: Added an option to set the max number of connections per torrent
- FEATURE: Added an option to set the max number of uploads per torrent
- FEATURE: Added an option to automatically delete torrents when they reach a given ratio (>= 1.0)
- FEATURE: Added an option to display current transfer speeds in title bar
- FEATURE: Torrent content is now displayed as a tree
- I18N: Added Hungarian translation
- I18N: Added Brazilian translation
- BUGFIX: Progress of paused torrents is now correct on restart
- BUGFIX: Progress column gets sorted on restart it is was during last execution
- BUGFIX: Made ETA more reliable using stats instead of instant values
- BUGFIX: Remove torrent from hard drive used to delete parent folder if empty
- BUGFIX: Fixed a crash when filtering all the files in a torrent
- BUGFIX: Reload torrent only when necessary (properties)
- BUGFIX: qBittorrent is not exiting anymore when a dialog is closed and main window is hidden
- BUGFIX: Search plugin update is not making the GUI freeze anymore (moved to a thread)
- BUGFIX: DHT settings were not saved correctly
- BUGFIX: Workaround to build on Fedora system (pkg-config problem)
- BUGFIX: search plugin update - do not display only last version changelog
- BUGFIX: Search plugin update - fixed missing new lines in changelog
- BUGFIX: The number of search results was not reset when clicking on 'Clear' button
- BUGFIX: Update torrent progress when its content changed (filtered files)
- BUGFIX: Improved the way menu icons are installed to avoid problems on some systems
- BUGFIX: Improved incremental download
- BUGFIX: Improved unicode support
- BUGFIX: Made torrent deletion from hard-drive safer
- BUGFIX: Prevent downloadFromUrl flooding
- BUGFIX: ETA was wrong for torrents with filtered files
- BUGFIX: Fixed drag'n drop on non-KDE systems
- BUGFIX: Removed build dependency on Python
- BUGFIX: Catching DHT exception in case there is a problem
- COSMETIC: Redesigned torrent properties a little
- COSMETIC: Totally redesigned program preferences
- COSMETIC: Display more logs messages concerning features
- COSMETIC: Improved lists renderers
- COSMETIC: Use a different icon for torrents being checked and for connecting ones
- COSMETIC: Improved some icons
- COSMETIC: Improved systray tooltip style
* Mon May 07 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.3
- BUGFIX: Fixed pause toggle on double-click in download list
- BUGFIX: The torrent size displayed now only takes unfiltered files into account
- BUGFIX: Fixed compiling errors with libtorrent svn (future v0.13 with UPnP enabled)
- BUGFIX: Remember sorted column in download list on restart
- BUGFIX: Small fix in the german translation
- BUGFIX: Some fixes in slovak translation
* Tue Apr 10 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.2
- BUGFIX: Window can now stay maximized on exit
- BUGFIX: Use PKGCONFIG again for configuring libtorrent
- BUGFIX: Allow to compile with libtorrent v0.11
- BUGFIX: Disabled main window context menu (annoying)
- I18N: Added Japanese translation
- I18N: Updated Turkish translation
* Wed Apr 04 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.1
- BUGFIX: A lot of fixes in configure file
* Sun Apr 01 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.0
- FEATURE: Based on libtorrent v0.12
- FEATURE: Based on Qt4.2
- FEATURE: Brand new trayicon from Qt4.2
- FEATURE: Support uTorrent Peer Exchange (PeX - exchanges peers between clients)
- FEATURE: Added a menu action to visit qBittorrent website
- FEATURE: Added a menu action to report a bug in qBittorrent
- FEATURE: Improved the way parameters are passed between qBT instances (socket)
- FEATURE: User is warned when hard drive becomes full and downloads are paused
- FEATURE: Number of complete/incomplete sources are now displayed in download list for each torrent
- FEATURE: Implemented close to systray
- FEATURE: Added Autocompletion to search engine
- FEATURE: Splitted BT & GUI parts (huge code rewriting & optimization)
- FEATURE: New parameters for configure file to point to custom locations for libtorrent/libcurl
- FEATURE: Update application style according to the system (WindowsXP, MacOS, X11)
- BUGFIX: Two torrents can now have the same name although they are different (use their hash)
- BUGFIX: Fixed download from url that would fail sometimes
- BUGFIX: Save directory was reset to default when filtering files in torrent
- BUGFIX: Force a refresh of download list when the window is shown (avoid delay)
- BUGFIX: Fixed deletion from hard drive (failed for non-empty folders)
- BUGFIX: qBittorrent now identifies its version correctly on the network
- BUGFIX: Preventing GUI from freezing when deleting a download permanently
- BUGFIX: Fixed directory scanning (stop trying to download the same files several times)
- BUGFIX: Fixed bad loading of scan dir in option (widgets still disabled)
- BUGFIX: Threads are now stopped cleanly before their destruction
- BUGFIX: Create Options object only when necessary (to save memory)
- BUGFIX: Let libtorrent store the torrent handles (save memory)
- BUGFIX: Set DHT Port only when DHT is enabled
- BUGFIX: Made ipfilter.dat parser less sensitive to errors
- BUGFIX: Bring main window to foreground when asking for exit confirmation
- I18N: Added Danish translation
- I18N: Better internationalization thanks to dynamic text support
- COSMETIC: Replaced OSD messages by Qt4.2 systray messages
* Tue Nov 28 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.8.0
- FEATURE: Added a torrent addition dialog
- FEATURE: Allow user to change DHT port
- FEATURE: Added an action to remove files from download list and hard drive too
- FEATURE: Rewritten intensively options code
- FEATURE: Remember GUI settings in a cleaner way on restart
- I18N: Added Finnish translation
- I18N: Improved Italian translation a lot
- BUGFIX: Enabled debug with Qt 4.2.1 too because Trolltech didn't fix their bug yet
- BUGFIX: Fixed layout in torrent properties
- BUGFIX: Made right click menu work for multiple selection in DL list
- BUGFIX: Fixed utf-8 support in paths and filenames
- BUGFIX: Could only listen on the first IP of the given range
- COSMETIC: Connection status in toolBar is not clickable anymore
- COSMETIC: Displaying save path in torrent properties window
- COSMETIC: Reworked options window a little
- COSMETIC: Remember mainwindow position during last execution
* Mon Oct 16 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.7.1
- I18N: Updated French, Polish, Dutch, Swedish, Slovak translations
- BUGFIX: Fixed Seeds/Leechers display in torrent properties
- BUGFIX: Fixed finished torrent state on restart
- BUGFIX: Fixed trayicon with Qt 4.2
- BUGFIX: Enabling debug when Qt 4.2.0 is detected (because of a bug in this Qt)
- BUGFIX: Fixed new lines in log widget with Qt 4.2
- BUGFIX: Display errors to stderr instead of stdout
- BUGFIX: Forgot to catch invalid_handle exception thrown by libtorrent
- BUGFIX: Close torrents properties windows when they are deleted
- BUGFIX: Fixed prefix in Makefile
* Fri Oct 13 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.7.0
- FEATURE: Based on new libtorrent v0.11 (a lot of bugfixes, new features)
- FEATURE: Added DHT (Trackerless - Decentralized BT) support
- FEATURE: Audio/Video File previewing while downloading
- FEATURE: Added support for incremental download (slower but great for previewing)
- FEATURE: Added Tracker authentication support
- FEATURE: Defined qBittorrent fingerprint so that it doesn't use libtorrent fingerprint anymore
- FEATURE: Display an explicit error message when a download from url fails
- FEATURE: Allow the download multiple torrents from urls at once
- FEATURE: New context menu on main window (Add, Start all, Pause all, Exit...)
- FEATURE: Now supports one new search engines (MegaNova)
- FEATURE: Rewritten search engine plugin (by fab31)
- FEATURE: Rewritten parts of the download/search lists to improve performance
- FEATURE: Individual share ratio is now displayed in each torrent properties.
- FEATURE: Tuned default settings to improve download speed
- FEATURE: Downloading from an URL will retry 10 times if too many users.
- FEATURE: Now remembers filtered pieces in a torrent on restart
- FEATURE: Now updating pieces progress in real time in torrent properties
- I18N: Added Norwegian translation
- BUGFIX: Fixed a memory leak when pressing OK in torrent properties
- BUGFIX: Improved code so that GUI never freeze during downloading from an url
- BUGFIX: Forgot to remove torrent file from scanned directory when "Clear Finished torrents" is enabled
- BUGFIX: Fixed multiple selection in torrent content tab
- BUGFIX: Improved configure file (detects libboost-thread)
- BUGFIX: Fixed trayicon on some window managers (Gnome, XFCE)
- BUGFIX: Always set maximum limit for connection depending on system
- BUGFIX: Fixed Memory leaks in search engine
- BUGFIX: Remove torrent file from scanned directory if it is already in download list
- BUGFIX: Fixed possible segfault on loading due to columns size loading
- BUGFIX: Fixed problems that could happen with delete selection action
- BUGFIX: Fixed an arithmetic exception that could happen in ETA calculation
- BUGFIX: Fixed Isohunt search engine
- BUGFIX: Fixed download from URL function (was buggy)
- BUGFIX: Fixed download button in search engine
- BUGFIX: Fixed selective download
- BUGFIX: Fixed memory leaks in torrent properties
- BUGFIX: Fixed tooltip behaviour for trayicon
- BUGFIX: Fixed Ipfilter.dat loading
- BUGFIX: Not loading options every time we display options anymore
- COSMETIC: Now displaying the number of downloads in tab title
- COSMETIC: Redesigned download from url dialog
- COSMETIC: Added a message to warn user that we started download from an url
- COSMETIC: Renamed main tab from "Downloads" to "Transfers"
- COSMETIC: Improved icons
- COSMETIC: Resized flags in localization settings
- COSMETIC: Improved trayicon image
* Fri Aug 24 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.6.1
- BUGFIX: Fixed possible segfaults when using context menus
- BUGFIX: Cleanup up context menus code
- BUGFIX: Use best gzip compressing for man page
* Wed Aug 22 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.6.0
- FEATURE: Rewritten the download list from scratch (more flexible)
- FEATURE: Rewritten the search results list from scratch (more flexible)
- FEATURE: Rewritten the torrent properties list from scratch (more flexible)
- FEATURE: Improved and cleaned up search engine code
- FEATURE: Search results are now displayed in real time (not sequentially)
- FEATURE: Added two command lines parameters (--version, --help)
- FEATURE: Added a popup menu for download list
- FEATURE: Double-click on an item now toggles the paused state of a download
- FEATURE: Improved code to be more portable (Windows & MacOS versions should arrive soon)
- FEATURE: Allow to toggle selected state of a file within a torrent using double-click
- FEATURE: Remember columns width in download and search results lists
- BUGFIX: Don't use pkg-config for libcurl anymore (easier to compile)
- BUGFIX: Fixed ETA calculation when downloading while connecting
- BUGFIX: Download progress is now displayed correctly during first seconds of execution (was 0% before)
- BUGFIX: Code cleanup & optimization
- BUGFIX: Fixed sorting in download list
- BUGFIX: Fixed sorting in search results list
- BUGFIX: Fixed Parameters passing between instances
- BUGFIX: Fixed missing icon for clear action in infoBar popup menu
- BUGFIX: Fixed truncated lines in search results
- BUGFIX: Don't refresh download list when user is in search tab (save CPU)
- BUGFIX: Don't update Progress/DL Speed/ETA for finished downloads (save CPU)
- BUGFIX: Save selected search engines only when they have changed (faster program exit)
- COSMETIC: Increased icon size in toolbar from 24px to 32px
- COSMETIC: Display a progress bar to visualize each download progress
- COSMETIC: Size of each result in search are displayed in user friendly units
- COSMETIC: Display a progress bar to visualize each file progress within a torrent
- COSMETIC: Renamed 'ratio' to 'Session ratio' (makes more sense)
- COSMETIC: Improved layout of torrent properties window when maximized
- COSMETIC: Now number of search results is updated in real time
- COSMETIC: Remember last window size
- COSMETIC: Improved splash screen look
- COSMETIC: Improved default width of columns in download and search results lists
* Wed Aug 2 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.5.0
- FEATURE: Improved "Download from url" feature (now supports https, ftp & redirections)
- FEATURE: Added a torrent creation tool
- FEATURE: Display progress for each file within a torrent
- FEATURE: Based on new libtorrent v0.10 (lot of improvements)
- FEATURE: Now possible to clear log textbox (popup menu)
- FEATURE: Added two search engines (isohunt, torrentreactor)
- FEATURE: Now Display share ratio on main window
- FEATURE: Use OSD (On Screen Display) when a download or a search is finished
- FEATURE: Allow only one instance of qBittorrent (and add new parameters to download list)
- FEATURE: Remember last selected search engines in search tab
- FEATURE: Improved search engines status output (Aborted, timed out, finished, no results)
- FEATURE: qBittorrent can now update search plugin from qbittorrent.org
- I18N: Added Slovak, Italian, Portuguese, Romanian and Traditional Chinese languages
- BUGFIX: Fixed ThePirateBay parser for search engine (website had changed)
- BUGFIX: Fixed filenames for results from ThePirateBay search engine
- BUGFIX: Fixed unicode support for ThePirateBay search engine
- BUGFIX: Now search results are sorted by seeds
- BUGFIX: Overwrite nova.py search plugin only if it is outdated
- BUGFIX: Fixed possible division by 0 in ETA calculation
- BUGFIX: Improved ETA calculation precision
- BUGFIX: Fixed default tab in options
- BUGFIX: When saving options, reconnect only when listening ports changed
- COSMETIC: qBittorrent has now its own new logo
- COSMETIC: Display status "downloading" if DL Speed > 0 (even when tracker is down)
- COSMETIC: Added a splashscreen
- COSMETIC: qBittorrent has new cute icons
- COSMETIC: Display number of results in search tab
- COSMETIC: Added icons for each item in download list according to its state
- COSMETIC: Redesigned Locale settings
- COSMETIC: Fixed search engines names width (were cut on the right)
- COSMETIC: Moved search engines to the left of the window (better ui)
* Fri Jun 23 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.4.1
- Not counting "protocol chatter" in UP/DL speed anymore
- Download speed is now 0 when download is finished
- Paused torrents remain paused when qbittorrent is re-started
- Added option "go to systray when minimizing"
- Added option "Clear finished downloads on exit"
- Added option "Ask user for confirmation on exit"
- Added "Stalled" status for downloads (colored in orange, paused are in red and finished in green)
- Fixed Search window layout on maximizing
- Fixed a bug that caused upload limit not to be always applied
- Added Bulgarian translation
- Updated Translations
- Code optimization
* Tue Jun 13 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.4.0
- Added a search engine (supports Mininova & thepiratebay websites)
- Fixed critical bug: some options were not applied correctly to BT session
- Possibility to download a torrent file from an URL
- Added confirmation dialog on qbittorrent exit
- Enabled sorting in Download list
- Added Ukrainian translation
- Support urls as program parameters
- Added more actions to trayicon menu
- Fixed exception catching when retrieving fastresume data
- use Binary prefix standards from IEC 60027-2 for units (B, KiB, MiB, GiB, TiB)
- Iconification to systray when minimizing
- Code Cleanup & optimization
* Tue Jun 06 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.3.1
- Fixed toolbar layout (spacing)
- Added Russian translation
- Resume also finished files on startup (for seeding)
- Added colors corresponding to download state
- Fixed a segfault when deleting a download (if no scan dir is set)
* Mon Jun 05 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.3
- Fixed auto-resume (worked only once)
- Fixed BT_Backup dir creation on first startup (thanks Peter)
- Now min port and max port are inverted if (min port > max port)
- Fixed memory leaks
- Added qbittorrent man page
- Allow to disable max connections limit (default is disabled)
- Disable upload limit by default
- Added Menu Entry with icon (thanks Peter)
- Restructured directory, now Makefile is in main directory (not src/)
- Updated README / INSTALL
* Fri Jun 02 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.2.3
- Fixed ports checking function (user couldn't type the value he wanted)
- qBittorrent does not remove .torrent file from scanned directory anymore
- Check tracker errors list size and clear it if it becomes too big.
- Small cosmetic change
* Wed May 31 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.2.2
- Fixed missing icons
* Thu May 25 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.2.1
- Fixed "make install" rule
- Disabled debug mode
* Thu May 25 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.2
- Fixed a compatibility problem with some versions of qmake
- Added translations : Greek, Swedish
- Fixed Polish translation selection
- Fixed come warning because of two unexisting slots
- Improved "Apply" button behaviour in options
- Windows are now resizable
* Tue May 16 2006 - Christophe Dumez <chris@qbittorrent.org> - v0.1
- Initial release (lack features & still need a lot of improvements)

45
INSTALL Normal file
View File

@@ -0,0 +1,45 @@
qBittorrent - A BitTorrent client in C++ / Qt4
------------------------------------------
*** Necessary if qt3 is default on your system ***
export QTDIR=/usr/include/qt4
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
*** End ***
./configure
make && make install
qbittorrent
will install and execute qBittorrent hopefully without any problems.
Dependencies:
- Qt >= 4.3.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
Qt >= 4.4.0 is advised
- libtorrent-rasterbar by Arvid Norberg (>= v0.14.0 REQUIRED)
-> http://www.qbittorrent.org/download.php (advised)
-> http://www.libtorrent.net
Be careful: another library (the one used by rTorrent) uses a similar name.
- libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization
- libcurl
- python >= 2.3 (needed by search engine)
- libmagick++ (advised, not required)
* Needed for favicons support (RSS / Search plugins)
- libzzip (advised, not required)
* Needed for zip support (Search plugins)
NOTE FOR NON-KDE USERS:
- qt4-qtconfig package is advised when using other systems than KDE.
You can also change qBittorrent style to Cleanlooks (GNOME like)
DOCUMENTATION:
Please note that there is a documentation with a "compiling howto" at http://wiki.qbittorrent.org.
------------------------------------------
Christophe Dumez <chris@qbittorrent.org>

4
NEWS Normal file
View File

@@ -0,0 +1,4 @@
See Changelog
*******************************************
Christophe dumez - chris@qbittorrent.org

34
README Normal file
View File

@@ -0,0 +1,34 @@
qBittorrent - A BitTorrent client in Qt4
------------------------------------------
Description:
********************************
qBittorrent is a bittorrent client programmed in C++ / Qt4 that uses
libtorrent (sometimes called rblibtorrent) by Arvid Norberg.
It aims to be a good alternative to all other bittorrent clients
out there. qBittorrent is fast, stable and provides unicode
support as well as many features.
Installation:
********************************
For installation, follow the instructions from INSTALL file, but simple:
./configure
make && make install
qbittorrent
will install and execute qBittorrent hopefully without any problem.
For more information please visit:
http://www.qbittorrent.org
Please report any bug (or feature request) to:
http://bugs.qbittorrent.org
You can also meet me (chris-qBT) on IRC:
#qbittorrent on irc.freenode.net
------------------------------------------
Christophe Dumez <chris@qbittorrent.org>

2
TODO Normal file
View File

@@ -0,0 +1,2 @@
See https://blueprints.launchpad.net/qbittorrent/

1573
configure vendored Executable file

File diff suppressed because it is too large Load Diff

29
debian/NEWS vendored
View File

@@ -1,29 +0,0 @@
qbittorrent (2.4.3-1) unstable; urgency=low
qBittorrent version 2.3.0 (not packaged for Debian) introduced an
incompatible change with the torrent save path system.
Users upgrading from version 2.2.x (2.2.11-1 is the latest available point
release in Debian) should make a backup of the following directory in case
they want to switch back to a version older than 2.3.0:
~/.local/share/data/qBittorrent/BT_backup/
-- Cristian Greco <cristian@regolo.cc> Thu, 30 Sep 2010 16:13:40 +0200
qbittorrent (2.1.0-1) unstable; urgency=low
Starting from this new release qBittorrent will comply with the XDG Base
Directory Specification by storing its .torrent files in ~/.local instead of
the ~/.qbittorrent directory used so far.
In case you wish to switch back to an earlier version you will need to move
your torrents back to the old folder with the following commands:
$ mkdir ~/.qbittorrent/
$ cp -a ~/.local/share/data/qBittorrent/BT_backup/ ~/.qbittorrent/
This new release comes with a new binary package. qBittorrent-nox version of
qBittorrent that does not require X and can be controlled via a WebUI, thus is
more suitable for headless servers. The default account username and password
are mentioned in qbittorrent-nox(1) manpage.
-- Cristian Greco <cristian@regolo.cc> Wed, 20 Jan 2010 00:39:06 +0100

5
debian/changelog vendored
View File

@@ -1,5 +0,0 @@
qbittorrent (3.4.0-0ppa1~zesty) zesty; urgency=low
* v3.4.0 git import
-- sledgehammer999 <hammered999@gmail.com> Thu, 10 Aug 2017 02:00:19 +0300

1
debian/compat vendored
View File

@@ -1 +0,0 @@
10

78
debian/control vendored
View File

@@ -1,78 +0,0 @@
Source: qbittorrent
Section: net
Priority: optional
Maintainer: sledgehammer999 <hammered999@gmail.com>
Build-Depends: debhelper (>= 7.4.12),
dpkg-dev (>= 1.16.1),
libtorrent-rasterbar-dev (> 2.0.8),
libboost-dev (>= 1.40.0),
libboost-system-dev (>= 1.40.0),
qtbase5-dev (>= 5.9.0),
libqt5svg5-dev (>= 5.9.0),
qttools5-dev-tools,
zlib1g-dev
Standards-Version: 3.9.8
Vcs-Git: git://anonscm.debian.org/collab-maint/qbittorrent.git
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/qbittorrent.git
Homepage: http://www.qbittorrent.org/
Package: qbittorrent
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends},
python3 (>= 3.3.0), libqt5svg5, libqt5sql5-sqlite
Suggests: qbittorrent-dbg
Description: bittorrent client based on libtorrent-rasterbar with a Qt5 GUI
BitTorrent client written in C++ and based on libtorrent-rasterbar with a Qt5
user interface. qBittorrent is a feature rich but lightweight client that is
very similar to uTorrent. Its main features are:
.
* Polished uTorrent-like user interface
* Well integrated and extensible search engine
* Remote control through a Web user interface
* Vuze-compatible protocol encryption
* uTorrent-compatible Peer eXchange (PeX)
* DHT (trackerless) support
* UPnP / NAT-PMP port forwarding
* IPv6 compliant
* RSS support with advanced download filters
* Advanced control over torrent content and trackers
* IP Filtering (eMule / Peer Guardian filters)
* Torrents queueing and prioritizing
* Good localization (~25 languages supported)
* Unicode support
Package: qbittorrent-nox
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libqt5sql5-sqlite
Suggests: qbittorrent-dbg
Description: bittorrent client based on libtorrent-rasterbar (without X support)
BitTorrent client written in C++ and based on libtorrent-rasterbar.
qBittorrent-nox is a version of qBittorrent (Qt5 application) that does not
require X and can be controlled via a WebUI, thus is more suitable for headless
servers. It is a feature rich but lightweight client that is very similar to
rTorrent. Its main features are:
.
* Remote control through a Web user interface
* Vuze-compatible protocol encryption
* uTorrent-compatible Peer eXchange (PeX)
* DHT (trackerless) support
* UPnP / NAT-PMP port forwarding
* IPv6 compliant
* Advanced control over torrent content and trackers
* IP Filtering (eMule / Peer Guardian filters)
* Torrents queueing and prioritizing
* Good localization (~25 languages supported)
* Unicode support
Package: qbittorrent-dbg
Architecture: any
Section: debug
Priority: extra
Depends: qbittorrent (= ${binary:Version}) | qbittorrent-nox (= ${binary:Version}), ${misc:Depends}
Description: debug symbols for qbittorrent and qbittorrent-nox
BitTorrent client written in C++ and based on libtorrent-rasterbar with a Qt5
user interface. qBittorrent is a feature rich but lightweight client that is
very similar to uTorrent.
.
This package contains the debugging symbols for qbittorrent and
qbittorrent-nox.

339
debian/copyright vendored
View File

@@ -1,339 +0,0 @@
Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat
Upstream-Author: Christophe Dumez <chris@qbittorrent.org>
Packaged-By: Cristian Greco <cristian.debian@gmail.com>
Packaged-Date: Fri, 04 Jul 2008 23:12:54 +0200
Original-Source-Location: http://www.qbittorrent.org/
Files: src/*.cpp, src/*.h, src/*.ui
Copyright: Copyright © 2006,2007,2008 Christophe Dumez
Contributor: Arnaud Demaizière <arnaud@qbittorrent.org>
Contributor: Ishan Arora <ishan@qbittorrent.org>
Contributor: Grigis Gaëtan <cipher16@gmail.com>
License: GPL-2+ | other
This package 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 package 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 package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, 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.
Files: src/qtsingleapp/*
Copyright: Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)
License: other
Commercial Usage
Licensees holding valid Qt Commercial licenses may use this file in
accordance with the Qt Solutions Commercial License Agreement provided
with the Software or, alternatively, in accordance with the terms
contained in a written agreement between you and Nokia.
GNU Lesser General Public License Usage
Alternatively, this file may be used under the terms of the GNU Lesser
General Public License version 2.1 as published by the Free Software
Foundation and appearing in the file LICENSE.LGPL included in the
packaging of this file. Please review the following information to
ensure the GNU Lesser General Public License version 2.1 requirements
will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
In addition, as a special exception, Nokia gives you certain
additional rights. These rights are described in the Nokia Qt LGPL
Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
package.
GNU General Public License Usage
Alternatively, this file may be used under the terms of the GNU
General Public License version 3.0 as published by the Free Software
Foundation and appearing in the file LICENSE.GPL included in the
packaging of this file. Please review the following information to
ensure the GNU General Public License version 3.0 requirements will be
met: http://www.gnu.org/copyleft/gpl.html.
Please note Third Party Software included with Qt Solutions may impose
additional restrictions and it is the user's responsibility to ensure
that they have met the licensing requirements of the GPL, LGPL, or Qt
Solutions Commercial license and the relevant license of the Third
Party Software they are using.
If you are unsure which license is appropriate for your use, please
contact Nokia at qt-info@nokia.com.
Files: src/lineedit/*
Copyright: Copyright (c) 2007 Trolltech ASA <info@trolltech.com>
License: other
Use, modification and distribution is allowed without limitation,
warranty, liability or support of any kind.
Files: debian/*
Copyright: Copyright © 2008 Cristian Greco
License: GPL-2+
Files: src/Icons/*.png
Copyright: Gnome Icon Theme
License: GPL-2
Files: src/Icons/skin/*.png
src/menuicons/YYxYY/*.png
Copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
License: GPL-2
Files: src/lang/*.ts
Copyright:
- Arabic: SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)
- Armenian: Hrant Ohanyan (hrantohanyan@mail.am)
- Basque: Xabier Aramendi (azpidatziak@gmail.com)
- Belarusian: Mihas Varantsou (meequz@gmail.com)
- Brazilian: Nick Marinho (nickmarinho@gmail.com)
- Bulgarian: Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net)
- Catalan: Francisco Luque Contreras (frannoe@ya.com)
- Chinese (Simplified): Guo Yue (guoyue0418@hotmail.com)
- Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com)
- Croatian: Olivier Delakroa (oliver.untwist@gmail.com)
- Czech: Jirka Vilim (web@tets.cz)
- Danish: Mathias Nielsen (comoneo@gmail.com)
- Dutch: Pieter Heyvaert (pieter_heyvaert@hotmail.com)
- English: Christophe Dumez (chris@qbittorrent.org)
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
and Pekka Niemi (pekka.niemi@iki.fi)
- French: Christophe Dumez (chris@qbittorrent.org)
- Galician: Marcos Lans (marcoslansgarza@gmail.com)
- Georgian: Beqa Arabuli (arabulibeqa@yahoo.com)
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
- 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)
- Italian: bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
- Lithuanian: Naglis Jonaitis (njonaitis@gmail.com)
- Norwegian: Tomaso
- Polish: Jarek Smieja (ajep9691@wp.pl)
- Portuguese: Nick Marinho (nickmarinho@gmail.com)
- Romanian: Obada Denis (obadadenis@users.sourceforge.net)
- Russian: Nick Khazov (m2k3d0n at users.sourceforge.net)
- Slovak: helix84
- Spanish: Francisco Luque Contreras (frannoe@ya.com)
- Swedish: Daniel Nylander (po@danielnylander.se)
- Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
- Ukrainian: Oleh Prypin (blaxpirit@gmail.com)
License: GPL-2
This package 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 package 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 package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-2'.
Files: src/Icons/skin/qbittorrent_mono*
Copyright: Daniel Eguren <deguren@gmail.com>
License: LGPL-2.1+
Files: src/ico.cpp, src/ico.h
Copyright: Copyright © 2000 Malte Starostik <malte@kde.org>
License: LGPL-2.1+
Files: src/oxygen/*.png
Copyright: Oxygen Icon Theme (KDE) - www.oxygen-icons.org
License: LGPL-2.1+
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GNU Lesser General
Public License can be found in `/usr/share/common-licenses/LGPL-2.1'.
Files: src/stacktrace.h
Copyright: Copyright © 2008 Timo Bingmann
License: other
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar
14 rue de Plaisance, 75014 Paris, France
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
Files: src/Icons/flags/*.png
Copyright: Mark James <http://www.famfamfam.com>
License: other
Available for free use for any purpose with no requirement for attribution.
File: src/searchengine/nova/engines/btdigg.py
Copyright: BTDigg team (research@btdigg.org)
License: GPL-3+
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 3 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, see <http://www.gnu.org/licenses/>.
On Debian systems, the complete text of the GNU General Public License
version 3 can be found in `/usr/share/common-licenses/GPL-3'.
File: src/update_qrc_files.py,
src/searchengine/nova/engines/isohunt.py
src/searchengine/nova/engines/btjunkie.py
src/searchengine/nova/engines/vertor.py
src/searchengine/nova/engines/torrentdownloads.py
src/searchengine/nova/helpers.py
src/searchengine/nova/nova2dl.py
src/searchengine/nova/novaprinter.py
Copyright: Christophe Dumez <chris@qbittorrent.org>
License: BSD-3
Files: src/searchengine/nova/nova2.py
src/searchengine/nova/engines/mininova.py
src/searchengine/nova/engines/piratebay.py
Copyright: Fabien Devaux <fab@gnux.info>
License: BSD-3
Files: src/searchengine/nova/engines/torrentreactor.py
Copyright: Gekko Dam Beer (gekko04@users.sourceforge.net)
License: BSD-3
Files: src/searchengine/socks.py
Copyright: Copyright 2006 Dan-Haim
License: BSD-3
Redistribution and use in source and binary forms, with or without
modification, are permitted under the terms of the BSD License.
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Files: src/Icons/skin/tabs.gif
Copyright: Greg Houston <gregory.houston@gmail.com>
License: MIT
Files: src/webui/css/mootabs1.2.css
Copyright: Copyright © 2008 Christophe Dumez <chris@qbittorrent.org>
Original code from http://www.silverscripting.com/mootabs/
License: MIT
Files: src/webui/scripts/download.js
Copyright: Copyright © 2008 Ishan Arora <ishan@qbittorrent.org>
License: MIT
Files: src/webui/scripts/client.js
src/webui/scripts/dynamicTable.js
Copyright: Copyright © 2008 Ishan Arora <ishan@qbittorrent.org>
Copyright © 2008 Christophe Dumez <chris@qbittorrent.org>
License: MIT
Files: src/webui/scripts/mocha.js
src/webui/scripts/mocha-init.js
src/webui/css/mocha.css
Copyright: Copyright © 2007-2008 Greg Houston, <http://greghoustondesign.com/>
License: MIT-style
Files: src/webui/scripts/mootabs1.2.js
Copyright: Copyright © 2008 Christophe Dumez <chris@qbittorrent.org>
Original code from http://www.silverscripting.com/mootabs/
License: MIT
File: src/webui/scripts/mootools-1.2-core-yc.js
src/webui/scripts/mootools-1.2-more.js
Copyright: Copyright © 2006-2008 Valerio Proietti, <http://mootools.net>
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

1
debian/docs vendored
View File

@@ -1 +0,0 @@
README.md

View File

@@ -1,12 +0,0 @@
qbittorrent-nox for Debian
--------------------------
qBittorrent-nox is a version of qBittorrent that does not require X and can
be controlled via a WebUI, thus is more suitable for headless servers.
The Web User Interface is accessible as a default on http://localhost:8080.
Access is secured and the default account user name is "admin" with
"adminadmin" as a password. Please refer to qbittorrent-nox(1) manpage for
more information.
-- Cristian Greco <cristian@regolo.cc> Wed, 20 Jan 2010 00:50:45 +0100

View File

@@ -1 +0,0 @@
application/x-bittorrent; qbittorrent %s; description="BitTorrent client"; test=test -n "$DISPLAY"; nametemplate=%s.torrent

33
debian/rules vendored
View File

@@ -1,33 +0,0 @@
#!/usr/bin/make -f
DPKG_EXPORT_BUILDFLAGS = 1
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
include /usr/share/dpkg/buildflags.mk
%:
dh $@ --without autoreconf --parallel
override_dh_auto_configure:
mkdir -p build-nox && cd build-nox && ../configure --prefix=/usr --disable-gui \
--enable-systemd --with-boost-libdir=/usr/lib/$(DEB_HOST_MULTIARCH)
mkdir -p build-gui && cd build-gui && ../configure --prefix=/usr \
--with-boost-libdir=/usr/lib/$(DEB_HOST_MULTIARCH)
override_dh_auto_build:
dh_auto_build --builddirectory build-nox
dh_auto_build --builddirectory build-gui
override_dh_auto_install:
sed -i '/STRIP/d' build-nox/src/Makefile
sed -i '/STRIP/d' build-gui/src/Makefile
dh_auto_install --builddirectory build-nox --destdir debian/qbittorrent-nox \
-- INSTALL_ROOT=$(CURDIR)/debian/qbittorrent-nox
dh_auto_install --builddirectory build-gui --destdir debian/qbittorrent \
-- INSTALL_ROOT=$(CURDIR)/debian/qbittorrent
override_dh_auto_clean:
dh_auto_clean --builddirectory build-nox
dh_auto_clean --builddirectory build-gui
override_dh_strip:
dh_strip -a --dbg-package=qbittorrent-dbg

View File

@@ -1 +0,0 @@
3.0 (quilt)

View File

@@ -1,7 +0,0 @@
# False positive. File is not minified.
source-is-missing src/webui/www/public/scripts/excanvas-compressed.js
source-is-missing src/webui/www/public/scripts/mocha-init.js line length is 445 characters (>256)
# Full source provided in debian/missing-sources
source-is-missing src/webui/www/public/scripts/mootools-1.2-core-yc.js
source-is-missing debian/missing-sources/mootools-1.2-core-yc.js

9
debian/watch vendored
View File

@@ -1,9 +0,0 @@
version=3
#unstable: follow stable and rc releases
opts="uversionmangle=s/rc/~rc/" \
http://sf.net/qbittorrent/qbittorrent-([\d\.]*(?:rc\d)?)\.tar\.xz
#experimental: follow stable, rc and beta releases
#opts="uversionmangle=s/(rc|beta)/~$1/" \
# http://sf.net/qbittorrent/qbittorrent-([\d\.]*(?:(?:rc|beta)\d)?)\.tar\.xz

View File

@@ -1,29 +0,0 @@
qbittorrent (2.4.3-1) unstable; urgency=low
qBittorrent version 2.3.0 (not packaged for Debian) introduced an
incompatible change with the torrent save path system.
Users upgrading from version 2.2.x (2.2.11-1 is the latest available point
release in Debian) should make a backup of the following directory in case
they want to switch back to a version older than 2.3.0:
~/.local/share/data/qBittorrent/BT_backup/
-- Cristian Greco <cristian@regolo.cc> Thu, 30 Sep 2010 16:13:40 +0200
qbittorrent (2.1.0-1) unstable; urgency=low
Starting from this new release qBittorrent will comply with the XDG Base
Directory Specification by storing its .torrent files in ~/.local instead of
the ~/.qbittorrent directory used so far.
In case you wish to switch back to an earlier version you will need to move
your torrents back to the old folder with the following commands:
$ mkdir ~/.qbittorrent/
$ cp -a ~/.local/share/data/qBittorrent/BT_backup/ ~/.qbittorrent/
This new release comes with a new binary package. qBittorrent-nox version of
qBittorrent that does not require X and can be controlled via a WebUI, thus is
more suitable for headless servers. The default account username and password
are mentioned in qbittorrent-nox(1) manpage.
-- Cristian Greco <cristian@regolo.cc> Wed, 20 Jan 2010 00:39:06 +0100

View File

@@ -1,5 +0,0 @@
qbittorrent (3.4.0-0ppa1~zesty) zesty; urgency=low
* v3.4.0 git import
-- sledgehammer999 <hammered999@gmail.com> Thu, 10 Aug 2017 02:00:19 +0300

View File

@@ -1,69 +0,0 @@
Source: qbittorrent
Section: net
Priority: optional
Maintainer: sledgehammer999 <hammered999@gmail.com>
Homepage: http://www.qbittorrent.org/
Standards-Version: 4.6.1
Build-Depends: debhelper-compat (= 13),
cmake (>= 3.16.0),
libtorrent-rasterbar-dev (> 2.0.9),
libboost-dev (>= 1.40.0),
qt6-base-dev (>= 6.4.0),
qt6-base-private-dev (>= 6.4.0),
qt6-svg-dev (>= 6.4.0),
qt6-tools-dev (>= 6.4.0),
zlib1g-dev (>= 1.2.11),
libxkbcommon-dev,
systemd-dev,
ninja-build,
pkgconf
Package: qbittorrent
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends},
python3 (>= 3.7.0),
qt6-svg-plugins | libqt6svg6,
libqt6sql6-sqlite
Suggests: qbittorrent-dbg
Description: bittorrent client based on libtorrent-rasterbar with a Qt GUI
BitTorrent client written in C++ and based on libtorrent-rasterbar with a Qt
user interface. qBittorrent is a feature rich but lightweight client that is
very similar to uTorrent. Its main features are:
.
* Polished uTorrent-like user interface
* Well integrated and extensible search engine
* Remote control through a Web user interface
* Vuze-compatible protocol encryption
* uTorrent-compatible Peer eXchange (PeX)
* DHT (trackerless) support
* UPnP / NAT-PMP port forwarding
* IPv6 compliant
* RSS support with advanced download filters
* Advanced control over torrent content and trackers
* IP Filtering (eMule / Peer Guardian filters)
* Torrents queueing and prioritizing
* Good localization (~25 languages supported)
* Unicode support
Package: qbittorrent-nox
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libqt6sql6-sqlite
Suggests: qbittorrent-dbg
Description: bittorrent client based on libtorrent-rasterbar (without X support)
BitTorrent client written in C++ and based on libtorrent-rasterbar.
qBittorrent-nox is a version of qBittorrent (Qt application) that does not
require X and can be controlled via a WebUI, thus is more suitable for headless
servers. It is a feature rich but lightweight client that is very similar to
rTorrent. Its main features are:
.
* Remote control through a Web user interface
* Vuze-compatible protocol encryption
* uTorrent-compatible Peer eXchange (PeX)
* DHT (trackerless) support
* UPnP / NAT-PMP port forwarding
* IPv6 compliant
* Advanced control over torrent content and trackers
* IP Filtering (eMule / Peer Guardian filters)
* Torrents queueing and prioritizing
* Good localization (~25 languages supported)
* Unicode support

View File

@@ -1,339 +0,0 @@
Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat
Upstream-Author: Christophe Dumez <chris@qbittorrent.org>
Packaged-By: Cristian Greco <cristian.debian@gmail.com>
Packaged-Date: Fri, 04 Jul 2008 23:12:54 +0200
Original-Source-Location: http://www.qbittorrent.org/
Files: src/*.cpp, src/*.h, src/*.ui
Copyright: Copyright © 2006,2007,2008 Christophe Dumez
Contributor: Arnaud Demaizière <arnaud@qbittorrent.org>
Contributor: Ishan Arora <ishan@qbittorrent.org>
Contributor: Grigis Gaëtan <cipher16@gmail.com>
License: GPL-2+ | other
This package 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 package 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 package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, 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.
Files: src/qtsingleapp/*
Copyright: Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)
License: other
Commercial Usage
Licensees holding valid Qt Commercial licenses may use this file in
accordance with the Qt Solutions Commercial License Agreement provided
with the Software or, alternatively, in accordance with the terms
contained in a written agreement between you and Nokia.
GNU Lesser General Public License Usage
Alternatively, this file may be used under the terms of the GNU Lesser
General Public License version 2.1 as published by the Free Software
Foundation and appearing in the file LICENSE.LGPL included in the
packaging of this file. Please review the following information to
ensure the GNU Lesser General Public License version 2.1 requirements
will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
In addition, as a special exception, Nokia gives you certain
additional rights. These rights are described in the Nokia Qt LGPL
Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
package.
GNU General Public License Usage
Alternatively, this file may be used under the terms of the GNU
General Public License version 3.0 as published by the Free Software
Foundation and appearing in the file LICENSE.GPL included in the
packaging of this file. Please review the following information to
ensure the GNU General Public License version 3.0 requirements will be
met: http://www.gnu.org/copyleft/gpl.html.
Please note Third Party Software included with Qt Solutions may impose
additional restrictions and it is the user's responsibility to ensure
that they have met the licensing requirements of the GPL, LGPL, or Qt
Solutions Commercial license and the relevant license of the Third
Party Software they are using.
If you are unsure which license is appropriate for your use, please
contact Nokia at qt-info@nokia.com.
Files: src/lineedit/*
Copyright: Copyright (c) 2007 Trolltech ASA <info@trolltech.com>
License: other
Use, modification and distribution is allowed without limitation,
warranty, liability or support of any kind.
Files: debian/*
Copyright: Copyright © 2008 Cristian Greco
License: GPL-2+
Files: src/Icons/*.png
Copyright: Gnome Icon Theme
License: GPL-2
Files: src/Icons/skin/*.png
src/menuicons/YYxYY/*.png
Copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
License: GPL-2
Files: src/lang/*.ts
Copyright:
- Arabic: SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)
- Armenian: Hrant Ohanyan (hrantohanyan@mail.am)
- Basque: Xabier Aramendi (azpidatziak@gmail.com)
- Belarusian: Mihas Varantsou (meequz@gmail.com)
- Brazilian: Nick Marinho (nickmarinho@gmail.com)
- Bulgarian: Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net)
- Catalan: Francisco Luque Contreras (frannoe@ya.com)
- Chinese (Simplified): Guo Yue (guoyue0418@hotmail.com)
- Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com)
- Croatian: Olivier Delakroa (oliver.untwist@gmail.com)
- Czech: Jirka Vilim (web@tets.cz)
- Danish: Mathias Nielsen (comoneo@gmail.com)
- Dutch: Pieter Heyvaert (pieter_heyvaert@hotmail.com)
- English: Christophe Dumez (chris@qbittorrent.org)
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
and Pekka Niemi (pekka.niemi@iki.fi)
- French: Christophe Dumez (chris@qbittorrent.org)
- Galician: Marcos Lans (marcoslansgarza@gmail.com)
- Georgian: Beqa Arabuli (arabulibeqa@yahoo.com)
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
- 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)
- Italian: bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
- Lithuanian: Naglis Jonaitis (njonaitis@gmail.com)
- Norwegian: Tomaso
- Polish: Jarek Smieja (ajep9691@wp.pl)
- Portuguese: Nick Marinho (nickmarinho@gmail.com)
- Romanian: Obada Denis (obadadenis@users.sourceforge.net)
- Russian: Nick Khazov (m2k3d0n at users.sourceforge.net)
- Slovak: helix84
- Spanish: Francisco Luque Contreras (frannoe@ya.com)
- Swedish: Daniel Nylander (po@danielnylander.se)
- Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
- Ukrainian: Oleh Prypin (blaxpirit@gmail.com)
License: GPL-2
This package 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 package 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 package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-2'.
Files: src/Icons/skin/qbittorrent_mono*
Copyright: Daniel Eguren <deguren@gmail.com>
License: LGPL-2.1+
Files: src/ico.cpp, src/ico.h
Copyright: Copyright © 2000 Malte Starostik <malte@kde.org>
License: LGPL-2.1+
Files: src/oxygen/*.png
Copyright: Oxygen Icon Theme (KDE) - www.oxygen-icons.org
License: LGPL-2.1+
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GNU Lesser General
Public License can be found in `/usr/share/common-licenses/LGPL-2.1'.
Files: src/stacktrace.h
Copyright: Copyright © 2008 Timo Bingmann
License: other
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar
14 rue de Plaisance, 75014 Paris, France
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
Files: src/Icons/flags/*.png
Copyright: Mark James <http://www.famfamfam.com>
License: other
Available for free use for any purpose with no requirement for attribution.
File: src/searchengine/nova/engines/btdigg.py
Copyright: BTDigg team (research@btdigg.org)
License: GPL-3+
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 3 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, see <http://www.gnu.org/licenses/>.
On Debian systems, the complete text of the GNU General Public License
version 3 can be found in `/usr/share/common-licenses/GPL-3'.
File: src/update_qrc_files.py,
src/searchengine/nova/engines/isohunt.py
src/searchengine/nova/engines/btjunkie.py
src/searchengine/nova/engines/vertor.py
src/searchengine/nova/engines/torrentdownloads.py
src/searchengine/nova/helpers.py
src/searchengine/nova/nova2dl.py
src/searchengine/nova/novaprinter.py
Copyright: Christophe Dumez <chris@qbittorrent.org>
License: BSD-3
Files: src/searchengine/nova/nova2.py
src/searchengine/nova/engines/mininova.py
src/searchengine/nova/engines/piratebay.py
Copyright: Fabien Devaux <fab@gnux.info>
License: BSD-3
Files: src/searchengine/nova/engines/torrentreactor.py
Copyright: Gekko Dam Beer (gekko04@users.sourceforge.net)
License: BSD-3
Files: src/searchengine/socks.py
Copyright: Copyright 2006 Dan-Haim
License: BSD-3
Redistribution and use in source and binary forms, with or without
modification, are permitted under the terms of the BSD License.
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Files: src/Icons/skin/tabs.gif
Copyright: Greg Houston <gregory.houston@gmail.com>
License: MIT
Files: src/webui/css/mootabs1.2.css
Copyright: Copyright © 2008 Christophe Dumez <chris@qbittorrent.org>
Original code from http://www.silverscripting.com/mootabs/
License: MIT
Files: src/webui/scripts/download.js
Copyright: Copyright © 2008 Ishan Arora <ishan@qbittorrent.org>
License: MIT
Files: src/webui/scripts/client.js
src/webui/scripts/dynamicTable.js
Copyright: Copyright © 2008 Ishan Arora <ishan@qbittorrent.org>
Copyright © 2008 Christophe Dumez <chris@qbittorrent.org>
License: MIT
Files: src/webui/scripts/mocha.js
src/webui/scripts/mocha-init.js
src/webui/css/mocha.css
Copyright: Copyright © 2007-2008 Greg Houston, <http://greghoustondesign.com/>
License: MIT-style
Files: src/webui/scripts/mootabs1.2.js
Copyright: Copyright © 2008 Christophe Dumez <chris@qbittorrent.org>
Original code from http://www.silverscripting.com/mootabs/
License: MIT
File: src/webui/scripts/mootools-1.2-core-yc.js
src/webui/scripts/mootools-1.2-more.js
Copyright: Copyright © 2006-2008 Valerio Proietti, <http://mootools.net>
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

View File

@@ -1 +0,0 @@
README.md

View File

@@ -1,12 +0,0 @@
qbittorrent-nox for Debian
--------------------------
qBittorrent-nox is a version of qBittorrent that does not require X and can
be controlled via a WebUI, thus is more suitable for headless servers.
The Web User Interface is accessible as a default on http://localhost:8080.
Access is secured and the default account user name is "admin" with
"adminadmin" as a password. Please refer to qbittorrent-nox(1) manpage for
more information.
-- Cristian Greco <cristian@regolo.cc> Wed, 20 Jan 2010 00:50:45 +0100

View File

@@ -1 +0,0 @@
application/x-bittorrent; qbittorrent %s; description="BitTorrent client"; test=test -n "$DISPLAY"; nametemplate=%s.torrent

View File

@@ -1,39 +0,0 @@
#!/usr/bin/make -f
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
%:
dh $@ --without autoreconf -Scmake+ninja
override_dh_auto_configure:
dh_auto_configure --builddirectory build-nox -- \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DGUI=OFF -DQT6=ON -DSYSTEMD=ON
dh_auto_configure --builddirectory build-gui -- \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DQT6=ON
override_dh_auto_build:
dh_auto_build --builddirectory build-nox
dh_auto_build --builddirectory build-gui
override_dh_auto_install:
dh_auto_install --builddirectory build-nox --destdir debian/qbittorrent-nox
dh_auto_install --builddirectory build-gui --destdir debian/qbittorrent
override_dh_installsystemduser:
dh_installsystemduser -pqbittorrent-nox --no-enable
override_dh_auto_clean:
dh_auto_clean --builddirectory build-nox
dh_auto_clean --builddirectory build-gui
override_dh_clean:
dh_clean src/webui/www/translations/webui_*.qm \
src/lang/qbittorrent_*.qm src/base/version.h
override_dh_auto_test:
# Empty target to override default behavior which results
# in an errored build

View File

@@ -1 +0,0 @@
3.0 (quilt)

View File

@@ -1,7 +0,0 @@
# False positive. File is not minified.
source-is-missing src/webui/www/public/scripts/excanvas-compressed.js
source-is-missing src/webui/www/public/scripts/mocha-init.js line length is 445 characters (>256)
# Full source provided in debian/missing-sources
source-is-missing src/webui/www/public/scripts/mootools-1.2-core-yc.js
source-is-missing debian/missing-sources/mootools-1.2-core-yc.js

View File

@@ -1,9 +0,0 @@
version=3
#unstable: follow stable and rc releases
opts="uversionmangle=s/rc/~rc/" \
http://sf.net/qbittorrent/qbittorrent-([\d\.]*(?:rc\d)?)\.tar\.xz
#experimental: follow stable, rc and beta releases
#opts="uversionmangle=s/(rc|beta)/~$1/" \
# http://sf.net/qbittorrent/qbittorrent-([\d\.]*(?:(?:rc|beta)\d)?)\.tar\.xz

28
doc/qbittorrent.1 Normal file
View File

@@ -0,0 +1,28 @@
.\" This manpage has been automatically generated by docbook2man
.\" from a DocBook document. This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>.
.TH "QBITTORRENT" "1" "September 1st 2007" "Bittorrent client written in C++ / Qt4" ""
.SH NAME
qBittorrent \- a Bittorrent client written in C++ / Qt4
.SH SYNOPSIS
\fBqbittorrent\fR [FILE | URL] [FILE | URL...]
\fBqbittorrent\fR \-\-help
\fBqbittorrent\fR \-\-version
.PP
.SH "DESCRIPTION"
\fBqBittorrent\fR is an advanced Bittorrent client written in C++ / Qt4,
using the \fBrblibtorrent\fR library by Arvid Norberg. qBittorrent aims
to be a good alternative to all other bittorrent clients out there. qBittorrent
is fast, stable, light, it supports unicode and it provides a good integrated search engine.
It also comes with UPnP port forwarding / NAT-PMP, encryption (Azureus compatible), FAST extension (mainline) and PeX support (utorrent compatible).
Please report any problem to http://bugs.qbittorrent.org
.PP
.SH "AUTHOR"
Christophe Dumez <chris@qbittorrent.org>

View File

@@ -1,74 +0,0 @@
libtorrent-rasterbar for Debian
-------------------------------
* libtorrent-rasterbar 0.14.2-2
Revert build dependencies to boost1.37 only.
-- Cristian Greco <cristian.debian@gmail.com> Wed, 11 Mar 2009 16:27:20 +0100
* libtorrent-rasterbar 0.14.2-1
Enabled building against boost1.37 due to the boost library transition: build
dependencies will be updated each time a new version of boost get uploaded in
Debian (this will happen likely two times a year in the future).
Building against boost1.34.1 is still supported for backport purposes.
-- Cristian Greco <cristian.debian@gmail.com> Fri, 27 Feb 2009 07:46:38 +0100
* libtorrent-rasterbar 0.14.1-1
While version 0.14 was built against boost1.36, it seems like this release of
the boost libraries has been deleted from Debian and maintainers encourage use
of the next stable release boost1.37.
Anyhow, the best choice actually is to build 0.14.1 against boost1.34.1 because
it is a widely used and well tested release, and on the other hand maybe
libtorrent-rasterbar is not yet ready to support boost1.37.
-- Cristian Greco <cristian.debian@gmail.com> Mon, 15 Dec 2008 15:34:17 +0100
* libtorrent-rasterbar 0.14-1
- Python bindings for libtorrent-rasterbar
Added a patch (merged upstream, will be available in 0.14.1) to build python
bindings using configure and make. The name of the python module (and package)
is 'python-libtorrent' (as requested by upstream).
- Lintian Info tag 'no-symbols-control-file'
Maintaining a symbols control file for that library is more a cost than a
benefit. In fact, libtorrent-rasterbar exports a lot of symbols (quite big
symbols files, ~600Kb) and the C++ ABI mangling requires one to maintain a
different control file for each architecture. Moreover this library has a few
reverse dependencies (less than 10 clients, much of them not yet packaged for
Debian), so it wouldn't be difficult to maintain them.
-- Cristian Greco <cristian.debian@gmail.com> Sun, 23 Nov 2008 18:55:24 +0100
* libtorrent-rasterbar 0.13.1-2
Building a debug version (--enable-debug) of libtorrent-rasterbar seems to
cause some clients to crash (such as qbittorrent, btg - qbittorrent needs a
special option in order to build against a debug version), and actually most
clients upstream developers seems to prefer a release build of the library.
Then, now libtorrent-rasterbar builds a release version (--disable-debug).
NOTE for maintainers of all clients which depend on libtorrent-rasterbar:
please build-depends on this exact revision of the package in your
debian/control file:
Build-Depends: libtorrent-rasterbar-dev (>= 0.13.1-2)
-- Cristian Greco <cgreco@cs.unibo.it> Wed, 23 Jul 2008 11:18:31 +0200
* libtorrent-rasterbar 0.13.1-1
Actually, libtorrent-rasterbar has to be built against boost-1.34 and libasio
instead of boost-1.35 (which includes libasio and conflicts with version 1.34);
this is for compatibility with most bittorrent clients which depend also on
boost-1.34.
-- Cristian Greco <cgreco@cs.unibo.it> Wed, 02 Jul 2008 10:46:21 +0200

View File

@@ -1,41 +0,0 @@
libtorrent-rasterbar (1.2.5+git20200401.dcf3c83d29-1ppa1~19.04) disco; urgency=medium
* Build 1.2.5
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Wed, 01 Apr 2020 18:05:54 +0300
libtorrent-rasterbar (1.2.5+git20200323.0d06d47a29-2ppa1~19.04) disco; urgency=medium
* Build 1.2.5
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Tue, 24 Mar 2020 15:37:24 +0200
libtorrent-rasterbar (1.2.5+git20200323.0d06d47a29-1ppa1~19.04) disco; urgency=medium
* Build 1.2.5
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Mon, 23 Mar 2020 21:02:09 +0200
libtorrent-rasterbar (1.2.3+git20191216.68196dceae-1ppa1~19.04) disco; urgency=medium
* Build 1.2.3
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Mon, 16 Dec 2019 01:11:34 +0200
libtorrent-rasterbar (1.2.2+git20191202.7b0bb2fb0b-1ppa1~19.04) disco; urgency=medium
* Build 1.2.2
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Mon, 02 Dec 2019 15:36:28 +0200
libtorrent-rasterbar (1.2.0+git20190220.82900c441c-1ppa1~19.04) disco; urgency=medium
* Build 1.2.0
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Wed, 20 Feb 2019 17:04:17 +0200

View File

@@ -1 +0,0 @@
10

View File

@@ -1,53 +0,0 @@
Source: libtorrent-rasterbar
Section: libs
Priority: optional
Maintainer: Cristian Greco <cristian@debian.org>
Uploaders: Andrew Starr-Bochicchio <asb@debian.org>
Build-Depends: debhelper (>= 9),
dh-autoreconf,
dpkg-dev (>= 1.16.1~),
libboost-system-dev,
libssl-dev,
pkg-config
Standards-Version: 3.9.8
Vcs-Git: git://anonscm.debian.org/collab-maint/libtorrent-rasterbar.git
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/libtorrent-rasterbar.git
Homepage: http://www.rasterbar.com/products/libtorrent/index.html
Package: libtorrent-rasterbar10
Architecture: any
Pre-Depends: dpkg (>= 1.15.6~)
Depends: ${shlibs:Depends}, ${misc:Depends}
Suggests: libtorrent-rasterbar-dbg
Description: C++ bittorrent library by Rasterbar Software
Bittorrent library by Rasterbar Software (Arvid Norberg).
libtorrent-rasterbar is a C++ library that aims to be a good alternative to
all the other bittorrent implementations around.
.
The main goals of libtorrent-rasterbar are:
* to be cpu efficient
* to be memory efficient
* to be very easy to use
.
This package contains libtorrent-rasterbar run time shared library.
Package: libtorrent-rasterbar-dev
Section: libdevel
Architecture: any
Pre-Depends: dpkg (>= 1.15.6~)
Depends: ${misc:Depends},
libtorrent-rasterbar10 (= ${binary:Version}),
libboost-system-dev,
libssl-dev,
pkg-config
Description: Development files for libtorrent-rasterbar
Bittorrent library by Rasterbar Software (Arvid Norberg).
libtorrent-rasterbar is a C++ library that aims to be a good alternative to
all the other bittorrent implementations around.
.
The main goals of libtorrent-rasterbar are:
* to be cpu efficient
* to be memory efficient
* to be very easy to use
.
This package contains header files and static version of the library.

View File

@@ -1,168 +0,0 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Packaged-By: Cristian Greco <cristian.debian@gmail.com>
Packaged-Date: Wed, 02 Jul 2008 10:46:21 +0200
Upstream-Name: libtorrent
Upstream-Contact: Arvid Norberg <arvid@rasterbar.com>
Source: https://github.com/arvidn/libtorrent/releases
Files: debian/*
Copyright: 2008 Cristian Greco
License: GPL-2+
This package 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 package 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 package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
.
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-2'.
Files: * *.cpp *.hpp docs/*.rst docs/*.html
Copyright: 2003-2008 Arvid Norberg
Comment: Contributors:
2003-2007 Daniel Wallin
2007 Un Shyam
2006 Magnus Jonsson
2006 MassaRoddel
License: BSD-3-clause
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
.
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of the author nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Files: src/GeoIP.c include/libtorrent/GeoIP.h
Copyright: 2006 MaxMind LLC
License: LGPL-2.1+
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
.
This library 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
Lesser General Public License for more details.
.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
.
On Debian systems, the complete text of the GNU Lesser General
Public License can be found in `/usr/share/common-licenses/LGPL-2.1'.
Files: bindings/python/*.py
bindings/python/src/*.cpp
bindings/python/src/*.hpp
include/libtorrent/invariant_check.hpp
Copyright: 2004-2007 Daniel Wallin
2006-2008 Arvid Norberg
2008 Andrew Resch
License: BSL-1.0
Boost Software License - Version 1.0 - August 17th, 2003
.
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
.
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
Files: src/ConvertUTF.cpp include/libtorrent/ConvertUTF.h
Copyright: 2001-2004 Unicode, Inc.
License: other
This source code is provided as is by Unicode, Inc. No claims are
made as to fitness for any particular purpose. No warranties of any
kind are expressed or implied. The recipient agrees to determine
applicability of information provided. If this file has been
purchased on magnetic or optical media from Unicode, Inc., the
sole remedy for any claim will be exchange of defective media
within 90 days of receipt.
.
Limitations on Rights to Redistribute This Code
.
Unicode, Inc. hereby grants the right to freely use the information
supplied in this file in the creation of products supporting the
Unicode Standard, and to make copies of this file in any form
for internal or external distribution as long as this notice
remains attached.
Files: include/libtorrent/puff.hpp
Copyright: 2002-2003 Mark Adler
License: Zlib
This software is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages
arising from the use of this software.
.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
.
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would
be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not
be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
Files: src/sha1.cpp
Copyright: Steve Reid <sreid@sea-to-sky.net>
Comment: Contributors:
Modified 7/98 By James H. Brown <jbrown@burgoyne.com>
Modified 8/98 By Steve Reid <sreid@sea-to-sky.net>
Modified 4/01 By Saul Kravitz <Saul.Kravitz@celera.com>
Converted to C++ 6/04 By Arvid Norberg <arvidn@sourceforge.net>
License: public-domain
The file sha1.c was put in the public domain by Steve Reid.

View File

@@ -1 +0,0 @@
AUTHORS

View File

@@ -1 +0,0 @@
libtorrent-rasterbar_1.2.5+git20200401.dcf3c83d29-1ppa1~19.04_source.buildinfo libs optional

View File

@@ -1,4 +0,0 @@
usr/include/*
usr/lib/*/lib*.a
usr/lib/*/lib*.so
usr/lib/*/pkgconfig/*.pc

View File

@@ -1 +0,0 @@
usr/lib/*/lib*.so.*

View File

@@ -1,50 +0,0 @@
#!/usr/bin/make -f
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
CONFIGURE_ARGS = --with-libiconv --with-boost-libdir=/usr/lib/$(DEB_HOST_MULTIARCH) --disable-deprecated-functions CXXFLAGS=-std=c++14 CPPFLAGS=-std=c++14
%:
dh $@ --parallel --with autoreconf
override_dh_auto_configure-nopy:
dh_auto_configure --builddirectory build -- $(CONFIGURE_ARGS)
# By default dh_autoreconf runs `autoreconf -f -i`
# But that fails because it can't find `config.rpath`
# Running `autotool.sh` just works
override_dh_autoreconf:
./autotool.sh
override_dh_auto_configure: override_dh_auto_configure-nopy
override_dh_auto_build-nopy:
dh_auto_build --builddirectory build
override_dh_auto_build: override_dh_auto_build-nopy
override_dh_auto_install-nopy:
dh_auto_install --builddirectory build
override_dh_auto_install: override_dh_auto_install-nopy
# During initial build, there is a "clean" step performed
# at this point there isn't a Makefile yet and
# dh_auto_clean falsely detects that it has to run `setup.py`
# and fails.
override_dh_auto_clean:
[ ! -f Makefile ] || dh_auto_clean
override_dh_compress:
dh_compress -Xcpp
override_dh_makeshlibs:
dh_makeshlibs -V
override_dh_builddeb:
dh_builddeb -- -Z xz

View File

@@ -1 +0,0 @@
3.0 (quilt)

View File

@@ -1,3 +0,0 @@
version=3
opts=uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha)\d*)$/$1~$2/ \
https://github.com/arvidn/libtorrent/releases .*/libtorrent-rasterbar-(\d\S*)\.tar\.gz

View File

@@ -1,74 +0,0 @@
libtorrent-rasterbar for Debian
-------------------------------
* libtorrent-rasterbar 0.14.2-2
Revert build dependencies to boost1.37 only.
-- Cristian Greco <cristian.debian@gmail.com> Wed, 11 Mar 2009 16:27:20 +0100
* libtorrent-rasterbar 0.14.2-1
Enabled building against boost1.37 due to the boost library transition: build
dependencies will be updated each time a new version of boost get uploaded in
Debian (this will happen likely two times a year in the future).
Building against boost1.34.1 is still supported for backport purposes.
-- Cristian Greco <cristian.debian@gmail.com> Fri, 27 Feb 2009 07:46:38 +0100
* libtorrent-rasterbar 0.14.1-1
While version 0.14 was built against boost1.36, it seems like this release of
the boost libraries has been deleted from Debian and maintainers encourage use
of the next stable release boost1.37.
Anyhow, the best choice actually is to build 0.14.1 against boost1.34.1 because
it is a widely used and well tested release, and on the other hand maybe
libtorrent-rasterbar is not yet ready to support boost1.37.
-- Cristian Greco <cristian.debian@gmail.com> Mon, 15 Dec 2008 15:34:17 +0100
* libtorrent-rasterbar 0.14-1
- Python bindings for libtorrent-rasterbar
Added a patch (merged upstream, will be available in 0.14.1) to build python
bindings using configure and make. The name of the python module (and package)
is 'python-libtorrent' (as requested by upstream).
- Lintian Info tag 'no-symbols-control-file'
Maintaining a symbols control file for that library is more a cost than a
benefit. In fact, libtorrent-rasterbar exports a lot of symbols (quite big
symbols files, ~600Kb) and the C++ ABI mangling requires one to maintain a
different control file for each architecture. Moreover this library has a few
reverse dependencies (less than 10 clients, much of them not yet packaged for
Debian), so it wouldn't be difficult to maintain them.
-- Cristian Greco <cristian.debian@gmail.com> Sun, 23 Nov 2008 18:55:24 +0100
* libtorrent-rasterbar 0.13.1-2
Building a debug version (--enable-debug) of libtorrent-rasterbar seems to
cause some clients to crash (such as qbittorrent, btg - qbittorrent needs a
special option in order to build against a debug version), and actually most
clients upstream developers seems to prefer a release build of the library.
Then, now libtorrent-rasterbar builds a release version (--disable-debug).
NOTE for maintainers of all clients which depend on libtorrent-rasterbar:
please build-depends on this exact revision of the package in your
debian/control file:
Build-Depends: libtorrent-rasterbar-dev (>= 0.13.1-2)
-- Cristian Greco <cgreco@cs.unibo.it> Wed, 23 Jul 2008 11:18:31 +0200
* libtorrent-rasterbar 0.13.1-1
Actually, libtorrent-rasterbar has to be built against boost-1.34 and libasio
instead of boost-1.35 (which includes libasio and conflicts with version 1.34);
this is for compatibility with most bittorrent clients which depend also on
boost-1.34.
-- Cristian Greco <cgreco@cs.unibo.it> Wed, 02 Jul 2008 10:46:21 +0200

View File

@@ -1,154 +0,0 @@
libtorrent-rasterbar2 (2.0.4-1ppa1~20.04) focal; urgency=medium
* Build 2.0.4
* Use C++17 mode
* Don't provide python bindings
-- sledgehammer999 <hammered999@gmail.com> Sun, 20 Jun 2021 13:11:33 +0300
libtorrent-rasterbar (1.2.13+git20210501.22af326f6c-1ppa1~20.04) focal; urgency=medium
* Build 1.2.13
* Use C++14 mode
* Don't provide python2 bindings
-- sledgehammer999 <hammered999@gmail.com> Sat, 01 May 2021 00:58:07 +0300
libtorrent-rasterbar (1.2.13+git20210323.34a979720b-1ppa1~20.04) focal; urgency=medium
* Build 1.2.13
* Use C++14 mode
* Don't provide python2 bindings
-- sledgehammer999 <hammered999@gmail.com> Tue, 23 Mar 2021 20:15:34 +0200
libtorrent-rasterbar (1.2.13+git20210308.ed960c2562-1ppa1~20.04) focal; urgency=medium
* Build 1.2.13
* Use C++14 mode
* Don't provide python2 bindings
-- sledgehammer999 <hammered999@gmail.com> Mon, 08 Mar 2021 14:01:57 +0200
libtorrent-rasterbar (1.2.12+git20210118.3efdb8a941-1ppa1~20.04) focal; urgency=medium
* Build 1.2.12
* Use C++14 mode
* Don't provide python2 bindings
-- sledgehammer999 <hammered999@gmail.com> Mon, 18 Jan 2021 14:04:38 +0200
libtorrent-rasterbar (1.2.12+git20210104.bfafd20428-1ppa1~20.04) focal; urgency=medium
* Build 1.2.12
* Use C++14 mode
* Don't provide python2 bindings
-- sledgehammer999 <hammered999@gmail.com> Mon, 04 Jan 2021 11:52:50 +0200
libtorrent-rasterbar (1.2.11+git20201226.2c7852ea22-3ppa1~20.04) focal; urgency=medium
* Build 1.2.11
* Use C++14 mode
* Don't provide python2 bindings
-- sledgehammer999 <hammered999@gmail.com> Sat, 28 Dec 2020 21:42:22 +0200
libtorrent-rasterbar (1.2.11+git20201226.2c7852ea22-2ppa1~20.04) focal; urgency=medium
* Build 1.2.11
* Use C++14 mode
* Don't provide python2 bindings
-- sledgehammer999 <hammered999@gmail.com> Sat, 27 Dec 2020 21:42:22 +0200
libtorrent-rasterbar (1.2.11+git20201226.2c7852ea22-1ppa1~20.04) focal; urgency=medium
* Build 1.2.11
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Sat, 26 Dec 2020 21:42:22 +0200
libtorrent-rasterbar (1.2.11+git20201124.afa406f890-1ppa1~20.04) focal; urgency=medium
* Build 1.2.11
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Wed, 25 Nov 2020 00:40:21 +0200
libtorrent-rasterbar (1.2.10+git20201018.3d48e7d056-1ppa1~20.04) focal; urgency=medium
* Build 1.2.10
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Sun, 18 Oct 2020 21:44:40 +0300
libtorrent-rasterbar (1.2.6+git20200425.a9968916ca-1ppa1~20.04) focal; urgency=medium
* Build 1.2.6
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Sat, 25 Apr 2020 03:09:38 +0300
libtorrent-rasterbar (1.2.6+git20200424.86f04b2c09-1ppa1~20.04) focal; urgency=medium
* Build 1.2.6
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Fri, 24 Apr 2020 22:54:49 +0300
libtorrent-rasterbar (1.2.6+git20200422.a9968916ca-2ppa1~20.04) focal; urgency=medium
* Build 1.2.6
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Wed, 22 Apr 2020 19:24:09 +0300
libtorrent-rasterbar (1.2.6+git20200422.a9968916ca-1ppa1~20.04) focal; urgency=medium
* Build 1.2.6
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Wed, 22 Apr 2020 19:24:08 +0300
libtorrent-rasterbar (1.2.5+git20200401.dcf3c83d29-1ppa1~20.04) focal; urgency=medium
* Build 1.2.5
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Wed, 01 Apr 2020 18:05:54 +0300
libtorrent-rasterbar (1.2.5+git20200323.0d06d47a29-2ppa1~20.04) focal; urgency=medium
* Build 1.2.5
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Tue, 24 Mar 2020 15:37:24 +0200
libtorrent-rasterbar (1.2.5+git20200323.0d06d47a29-1ppa1~20.04) focal; urgency=medium
* Build 1.2.5
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Mon, 23 Mar 2020 21:02:09 +0200
libtorrent-rasterbar (1.2.3+git20191216.68196dceae-1ppa1~20.04) focal; urgency=medium
* Build 1.2.3
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Mon, 16 Dec 2019 01:11:34 +0200
libtorrent-rasterbar (1.2.2+git20191202.7b0bb2fb0b-1ppa1~20.04) focal; urgency=medium
* Build 1.2.2
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Mon, 02 Dec 2019 15:36:28 +0200
libtorrent-rasterbar (1.2.0+git20190220.82900c441c-1ppa1~20.04) focal; urgency=medium
* Build 1.2.0
* Use C++14 mode
-- sledgehammer999 <hammered999@gmail.com> Wed, 20 Feb 2019 17:04:17 +0200

View File

@@ -1 +0,0 @@
10

View File

@@ -1,75 +0,0 @@
Source: libtorrent-rasterbar2
Section: libs
Priority: optional
Maintainer: Cristian Greco <cristian@debian.org>
Uploaders: Andrew Starr-Bochicchio <asb@debian.org>
Build-Depends: cmake,
debhelper (>= 9),
dh-python,
libboost-tools-dev,
libboost-dev,
libboost-system-dev,
libssl-dev,
pkg-config
Standards-Version: 3.9.8
Vcs-Git: git://anonscm.debian.org/collab-maint/libtorrent-rasterbar.git
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/libtorrent-rasterbar.git
Homepage: http://www.rasterbar.com/products/libtorrent/index.html
X-Python-Version: >= 2.4
X-Python3-Version: >= 3.1
Package: libtorrent-rasterbar2
Architecture: any
Pre-Depends: dpkg (>= 1.15.6~)
Depends: ${shlibs:Depends}, ${misc:Depends}
Suggests: libtorrent-rasterbar2-dbg
Description: C++ bittorrent library by Rasterbar Software
Bittorrent library by Rasterbar Software (Arvid Norberg).
libtorrent-rasterbar is a C++ library that aims to be a good alternative to
all the other bittorrent implementations around.
.
The main goals of libtorrent-rasterbar are:
* to be cpu efficient
* to be memory efficient
* to be very easy to use
.
This package contains libtorrent-rasterbar run time shared library.
Package: libtorrent-rasterbar2-dev
Section: libdevel
Architecture: any
Pre-Depends: dpkg (>= 1.15.6~)
Depends: ${misc:Depends},
libtorrent-rasterbar2 (= ${binary:Version}),
libboost-system-dev,
libssl-dev,
pkg-config
Description: Development files for libtorrent-rasterbar
Bittorrent library by Rasterbar Software (Arvid Norberg).
libtorrent-rasterbar is a C++ library that aims to be a good alternative to
all the other bittorrent implementations around.
.
The main goals of libtorrent-rasterbar are:
* to be cpu efficient
* to be memory efficient
* to be very easy to use
.
This package contains header files and static version of the library.
Package: libtorrent-rasterbar2-dbg
Section: debug
Priority: extra
Architecture: any
Pre-Depends: dpkg (>= 1.15.6~)
Depends: ${misc:Depends}, libtorrent-rasterbar2 (= ${binary:Version})
Description: Debug symbols for libtorrent-rasterbar
Bittorrent library by Rasterbar Software (Arvid Norberg).
libtorrent-rasterbar is a C++ library that aims to be a good alternative to
all the other bittorrent implementations around.
.
The main goals of libtorrent-rasterbar are:
* to be cpu efficient
* to be memory efficient
* to be very easy to use
.
This package contains debugging symbols.

View File

@@ -1,168 +0,0 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Packaged-By: Cristian Greco <cristian.debian@gmail.com>
Packaged-Date: Wed, 02 Jul 2008 10:46:21 +0200
Upstream-Name: libtorrent
Upstream-Contact: Arvid Norberg <arvid@rasterbar.com>
Source: https://github.com/arvidn/libtorrent/releases
Files: debian/*
Copyright: 2008 Cristian Greco
License: GPL-2+
This package 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 package 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 package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
.
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-2'.
Files: * *.cpp *.hpp docs/*.rst docs/*.html
Copyright: 2003-2008 Arvid Norberg
Comment: Contributors:
2003-2007 Daniel Wallin
2007 Un Shyam
2006 Magnus Jonsson
2006 MassaRoddel
License: BSD-3-clause
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
.
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of the author nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Files: src/GeoIP.c include/libtorrent/GeoIP.h
Copyright: 2006 MaxMind LLC
License: LGPL-2.1+
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
.
This library 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
Lesser General Public License for more details.
.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
.
On Debian systems, the complete text of the GNU Lesser General
Public License can be found in `/usr/share/common-licenses/LGPL-2.1'.
Files: bindings/python/*.py
bindings/python/src/*.cpp
bindings/python/src/*.hpp
include/libtorrent/invariant_check.hpp
Copyright: 2004-2007 Daniel Wallin
2006-2008 Arvid Norberg
2008 Andrew Resch
License: BSL-1.0
Boost Software License - Version 1.0 - August 17th, 2003
.
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
.
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
Files: src/ConvertUTF.cpp include/libtorrent/ConvertUTF.h
Copyright: 2001-2004 Unicode, Inc.
License: other
This source code is provided as is by Unicode, Inc. No claims are
made as to fitness for any particular purpose. No warranties of any
kind are expressed or implied. The recipient agrees to determine
applicability of information provided. If this file has been
purchased on magnetic or optical media from Unicode, Inc., the
sole remedy for any claim will be exchange of defective media
within 90 days of receipt.
.
Limitations on Rights to Redistribute This Code
.
Unicode, Inc. hereby grants the right to freely use the information
supplied in this file in the creation of products supporting the
Unicode Standard, and to make copies of this file in any form
for internal or external distribution as long as this notice
remains attached.
Files: include/libtorrent/puff.hpp
Copyright: 2002-2003 Mark Adler
License: Zlib
This software is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages
arising from the use of this software.
.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
.
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would
be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not
be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
Files: src/sha1.cpp
Copyright: Steve Reid <sreid@sea-to-sky.net>
Comment: Contributors:
Modified 7/98 By James H. Brown <jbrown@burgoyne.com>
Modified 8/98 By Steve Reid <sreid@sea-to-sky.net>
Modified 4/01 By Saul Kravitz <Saul.Kravitz@celera.com>
Converted to C++ 6/04 By Arvid Norberg <arvidn@sourceforge.net>
License: public-domain
The file sha1.c was put in the public domain by Steve Reid.

View File

@@ -1 +0,0 @@
AUTHORS

View File

@@ -1,50 +0,0 @@
#!/usr/bin/make -f
#
# Simple makefile for libtorrent-rasterbar's examples.
# Copyright © 2009 Cristian Greco <cristian.debian@gmail.com>
# This file is released in the public domain.
#
# Please note that you need to install the following packages in order to build
# these example programs:
# - libtorrent-rasterbar-dev
# - libboost-program-options*-dev
# - libboost-regex*-dev
# (where the `*' means the same version of boost development packages which
# libtorrent-rasterbar-dev actually depends on).
CXX = g++
CXXFLAGS = -ftemplate-depth-50 -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION
TORRENT_CFLAGS = $(shell pkg-config libtorrent-rasterbar --cflags)
TORRENT_LIBS = $(shell pkg-config libtorrent-rasterbar --libs)
BOOST_PROGRAM_OPTIONS_LIBS = -lboost_program_options-mt
BOOST_REGEX_LIBS = -lboost_regex-mt
examples_BIN = client_test dump_torrent make_torrent simple_client enum_if
all: $(examples_BIN)
client_test: client_test.cpp
@rm -f client_test
$(CXX) $(CXXFLAGS) $(TORRENT_CFLAGS) -o $@ $< $(TORRENT_LIBS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(BOOST_REGEX_LIBS)
dump_torrent: dump_torrent.cpp
@rm -f dump_torrent
$(CXX) $(CXXFLAGS) $(TORRENT_CFLAGS) -o $@ $< $(TORRENT_LIBS)
make_torrent: make_torrent.cpp
@rm -f make_torrent
$(CXX) $(CXXFLAGS) $(TORRENT_CFLAGS) -o $@ $< $(TORRENT_LIBS)
simple_client: simple_client.cpp
@rm -f simple_client
$(CXX) $(CXXFLAGS) $(TORRENT_CFLAGS) -o $@ $< $(TORRENT_LIBS)
enum_if: enum_if.cpp
@rm -f enum_if
$(CXX) $(CXXFLAGS) $(TORRENT_CFLAGS) -o $@ $< $(TORRENT_LIBS)
clean:
@rm -f $(examples_BIN)

View File

@@ -1,3 +0,0 @@
opt/libtorrent-rasterbar2/include/*
opt/libtorrent-rasterbar2/lib/*/lib*.so
opt/libtorrent-rasterbar2/lib/*/pkgconfig/*.pc

View File

@@ -1 +0,0 @@
opt/libtorrent-rasterbar2/lib/*/lib*.so.*

View File

@@ -1,36 +0,0 @@
#!/usr/bin/make -f
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
ifneq (,$(filter $(DEB_HOST_ARCH), armel mipsel m68k powerpc riscv64 sh4))
export DEB_LDFLAGS_MAINT_APPEND += -Wl,--no-as-needed -latomic -Wl,--as-needed
endif
CMAKE_ARGS = -DCMAKE_INSTALL_PREFIX=/opt/libtorrent-rasterbar2/ -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 -Ddeprecated-functions=off
%:
dh $@ --buildsystem=cmake
override_dh_auto_configure:
dh_auto_configure -- $(CMAKE_ARGS)
#override_dh_auto_build:
# dh_auto_build --builddirectory build
#
#override_dh_auto_install:
# dh_auto_install --builddirectory build
#
#override_dh_auto_clean:
# rm -rf build
#
override_dh_compress:
dh_compress -Xcpp
override_dh_strip:
dh_strip --dbg-package=libtorrent-rasterbar2-dbg
override_dh_makeshlibs:
dh_makeshlibs -V

View File

@@ -1 +0,0 @@
3.0 (quilt)

View File

@@ -1,3 +0,0 @@
version=3
opts=uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha)\d*)$/$1~$2/ \
https://github.com/arvidn/libtorrent/releases .*/libtorrent-rasterbar-(\d\S*)\.tar\.gz

199
qBittorrent.kdevelop Normal file
View File

@@ -0,0 +1,199 @@
<?xml version = '1.0'?>
<kdevelop>
<general>
<author>Christophe Dumez</author>
<email>chris@qbittorrent.org</email>
<version>1.0.0</version>
<projectmanagement>KDevTrollProject</projectmanagement>
<primarylanguage>C++</primarylanguage>
<keywords>
<keyword>Qt</keyword>
</keywords>
<projectname>qBittorrent</projectname>
<ignoreparts/>
<projectdirectory>.</projectdirectory>
<absoluteprojectpath>false</absoluteprojectpath>
<description/>
<defaultencoding/>
<versioncontrol>kdevsubversion</versioncontrol>
</general>
<kdevfileview>
<groups>
<group pattern="*.cpp;*.cxx;*.h" name="Sources" />
<group pattern="*.ui" name="User Interface" />
<group pattern="*.png" name="Icons" />
<group pattern="*" name="Others" />
<hidenonprojectfiles>false</hidenonprojectfiles>
<hidenonlocation>false</hidenonlocation>
</groups>
<tree>
<hidepatterns>*.o,*.lo,CVS</hidepatterns>
<hidenonprojectfiles>false</hidenonprojectfiles>
<showvcsfields>false</showvcsfields>
</tree>
</kdevfileview>
<kdevdoctreeview>
<ignoretocs>
<toc>bash</toc>
<toc>bash_bugs</toc>
<toc>clanlib</toc>
<toc>w3c-dom-level2-html</toc>
<toc>fortran_bugs_gcc</toc>
<toc>gnome1</toc>
<toc>gnustep</toc>
<toc>gtk</toc>
<toc>gtk_bugs</toc>
<toc>haskell</toc>
<toc>haskell_bugs_ghc</toc>
<toc>java_bugs_gcc</toc>
<toc>java_bugs_sun</toc>
<toc>kde2book</toc>
<toc>opengl</toc>
<toc>pascal_bugs_fp</toc>
<toc>php</toc>
<toc>php_bugs</toc>
<toc>perl</toc>
<toc>perl_bugs</toc>
<toc>python</toc>
<toc>python_bugs</toc>
<toc>qt-kdev3</toc>
<toc>ruby</toc>
<toc>ruby_bugs</toc>
<toc>sdl</toc>
<toc>stl</toc>
<toc>w3c-svg</toc>
<toc>sw</toc>
<toc>w3c-uaag10</toc>
<toc>wxwidgets_bugs</toc>
</ignoretocs>
<ignoredoxygen>
<toc>KDE Libraries (Doxygen)</toc>
</ignoredoxygen>
</kdevdoctreeview>
<kdevdebugger>
<general>
<dbgshell/>
<gdbpath/>
<configGdbScript/>
<runShellScript/>
<runGdbScript/>
<breakonloadinglibs>true</breakonloadinglibs>
<separatetty>false</separatetty>
<floatingtoolbar>false</floatingtoolbar>
</general>
<display>
<staticmembers>false</staticmembers>
<demanglenames>true</demanglenames>
<outputradix>10</outputradix>
</display>
</kdevdebugger>
<kdevcppsupport>
<qt>
<version>4</version>
<used>true</used>
<includestyle>4</includestyle>
<designerintegration>ExternalDesigner</designerintegration>
<root>/usr/lib/qt4</root>
<qmake>/usr/bin/qmake</qmake>
<designer>/usr/bin/designer</designer>
<designerpluginpaths/>
</qt>
<references>
<pcs>automatic_%2Fhome%2Fishanarora%2Fprojects%2Fqbittorrent</pcs>
</references>
<codecompletion>
<automaticCodeCompletion>true</automaticCodeCompletion>
<automaticArgumentsHint>true</automaticArgumentsHint>
<automaticHeaderCompletion>true</automaticHeaderCompletion>
<codeCompletionDelay>250</codeCompletionDelay>
<argumentsHintDelay>400</argumentsHintDelay>
<headerCompletionDelay>250</headerCompletionDelay>
<showOnlyAccessibleItems>false</showOnlyAccessibleItems>
<completionBoxItemOrder>0</completionBoxItemOrder>
<howEvaluationContextMenu>true</howEvaluationContextMenu>
<showCommentWithArgumentHint>true</showCommentWithArgumentHint>
<statusBarTypeEvaluation>false</statusBarTypeEvaluation>
<namespaceAliases>std=_GLIBCXX_STD;__gnu_cxx=std</namespaceAliases>
<processPrimaryTypes>true</processPrimaryTypes>
<processFunctionArguments>true</processFunctionArguments>
<preProcessAllHeaders>true</preProcessAllHeaders>
<parseMissingHeadersExperimental>true</parseMissingHeadersExperimental>
<resolveIncludePathsUsingMakeExperimental>true</resolveIncludePathsUsingMakeExperimental>
<alwaysParseInBackground>true</alwaysParseInBackground>
<usePermanentCaching>true</usePermanentCaching>
<alwaysIncludeNamespaces>false</alwaysIncludeNamespaces>
<includePaths>.;</includePaths>
</codecompletion>
<creategettersetter>
<prefixGet>get</prefixGet>
<prefixSet>set</prefixSet>
<prefixVariable>m_,_</prefixVariable>
<parameterName>theValue</parameterName>
<inlineGet>true</inlineGet>
<inlineSet>true</inlineSet>
</creategettersetter>
<splitheadersource>
<enabled>false</enabled>
<synchronize>true</synchronize>
<orientation>Vertical</orientation>
</splitheadersource>
</kdevcppsupport>
<kdevfilecreate>
<filetypes/>
<useglobaltypes>
<type ext="ui" />
<type ext="cpp" />
<type ext="h" />
</useglobaltypes>
</kdevfilecreate>
<kdevtrollproject>
<general>
<activedir>src</activedir>
</general>
<run>
<directoryradio>executable</directoryradio>
<mainprogram>/home/ishanarora/projects/qbittorrent/src/qbittorrent</mainprogram>
<programargs/>
<globaldebugarguments/>
<globalcwd>/home/ishanarora/projects/qbittorrent</globalcwd>
<useglobalprogram>true</useglobalprogram>
<terminal>false</terminal>
<autocompile>true</autocompile>
<autoinstall>false</autoinstall>
<autokdesu>false</autokdesu>
<envvars/>
</run>
<make>
<abortonerror>true</abortonerror>
<runmultiplejobs>false</runmultiplejobs>
<numberofjobs>1</numberofjobs>
<dontact>false</dontact>
<makebin/>
<prio>0</prio>
<envvars/>
</make>
<qmake>
<savebehaviour>2</savebehaviour>
<replacePaths>false</replacePaths>
<disableDefaultOpts>true</disableDefaultOpts>
</qmake>
</kdevtrollproject>
<cppsupportpart>
<filetemplates>
<interfacesuffix>.h</interfacesuffix>
<implementationsuffix>.cpp</implementationsuffix>
</filetemplates>
</cppsupportpart>
<ctagspart>
<customArguments/>
<customTagfilePath>/home/ishanarora/projects/qbittorrent/tags</customTagfilePath>
<activeTagsFiles/>
</ctagspart>
<kdevdocumentation>
<projectdoc>
<docsystem/>
<docurl/>
<usermanualurl/>
</projectdoc>
</kdevdocumentation>
</kdevelop>

6
qbittorrent.pro Normal file
View File

@@ -0,0 +1,6 @@
TEMPLATE = subdirs
include(conf.pri)
SUBDIRS += src

19
qbittorrent.qc Normal file
View File

@@ -0,0 +1,19 @@
<qconf>
<name>qbittorrent</name>
<profile>qbittorrent.pro</profile>
<moddir>qcm</moddir>
<datadir/>
<dep type='qt4'>
<required/>
</dep>
<dep type='libtorrent-rasterbar'>
<required/>
</dep>
<dep type='libboost'>
<required/>
</dep>
<dep type='libcurl'>
<required/>
</dep>
<dep type='libzzip'/>
</qconf>

56
qcm/libboost.qcm Normal file
View File

@@ -0,0 +1,56 @@
/*
-----BEGIN QCMOD-----
name: libboost
arg: with-libboost-inc=[path], Path to libboost include files
-----END QCMOD-----
*/
class qc_libboost : public ConfObj
{
public:
qc_libboost(Conf *c) : ConfObj(c) {}
QString name() const { return "libboost"; }
QString shortname() const { return "libboost"; }
bool exec(){
QString s;
s = conf->getenv("QC_WITH_LIBBOOST_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "boost/format.hpp")) {
return false;
}
if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) {
return false;
}
if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) {
return false;
}
if(!conf->checkHeader(s, "boost/thread.hpp")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/include";
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "boost/format.hpp")){
found = true;
break;
}
}
if(!found) {
return false;
}
if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) {
return false;
}
if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) {
return false;
}
if(!conf->checkHeader(s, "boost/thread.hpp")) {
return false;
}
}
conf->addIncludePath(s);
return true;
}
};

61
qcm/libcurl.qcm Normal file
View File

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

76
qcm/libmagick.qcm Normal file
View File

@@ -0,0 +1,76 @@
/*
-----BEGIN QCMOD-----
name: libmagick
arg: with-libmagick-inc=[path], Path to libmagick++ include files
arg: with-libmagick-lib=[path], Path to libmagick++ library files
-----END QCMOD-----
*/
#include <QProcess>
class qc_libmagick : public ConfObj
{
public:
qc_libmagick(Conf *c) : ConfObj(c) {}
QString name() const { return "ImageMagick library (libmagick++)"; }
QString shortname() const { return "libmagick++"; }
QString checkString() const {
if(!conf->getenv("QC_DISABLE_libmagick").isEmpty())
return "";
return ConfObj::checkString();
}
bool exec(){
if(!conf->getenv("QC_DISABLE_libmagick").isEmpty())
return false;
QString s;
s = conf->getenv("QC_WITH_LIBMAGICK_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "Magick++.h")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/include";
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "Magick++.h")){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBMAGICK_LIB");
if(!s.isEmpty()) {
if(!conf->checkLibrary(s, "Magick++")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/lib/";
sl << "/usr/lib64/";
sl << "/usr/local/lib/";
sl << "/usr/local/lib64/";
bool found = false;
foreach(s, sl){
if(conf->checkLibrary(s, "Magick++")) {
found = true;
break;
}
}
if(!found)
return false;
}
conf->addLib(QString("-L") + s);
QString out = "";
QStringList params;
params << "--libs";
qconf->doCommand("Magick++-config", params, &out);
out = out.replace("\n", "");
conf->addLib(result.data());
conf->addDefine("HAVE_MAGICK");
return true;
}
};

View File

@@ -0,0 +1,29 @@
/*
-----BEGIN QCMOD-----
name: libtorrent-rasterbar
-----END QCMOD-----
*/
// see Conf::findPkgConfig
class qc_libtorrent_rasterbar : public ConfObj
{
public:
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.14.4 advised)"; }
QString shortname() const { return "libtorrent-rasterbar"; }
bool exec(){
QStringList incs;
QString req_ver = "0.14.0";
QString adv_ver = "0.14.4";
QString version, libs, other;
VersionMode mode = VersionMin;
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
return false;
for(int n = 0; n < incs.count(); ++n)
conf->addIncludePath(incs[n]);
if(!libs.isEmpty())
conf->addLib(libs);
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, adv_ver, &version, &incs, &libs, &other))
printf("\nWarning: libtorrent-rasterbar v%s was detected. Although it will compile and run, you will probably experience some bugs. Please consider updating to v%s!\n", version.toUtf8().data(), adv_ver.toUtf8().data());
return true;
}
};

71
qcm/libzzip.qcm Normal file
View File

@@ -0,0 +1,71 @@
/*
-----BEGIN QCMOD-----
name: libzzip
arg: with-libzzip-inc=[path], Path to libzzip++ include files
arg: with-libzzip-lib=[path], Path to libzzip++ library files
-----END QCMOD-----
*/
#include <QProcess>
class qc_libzzip : public ConfObj
{
public:
qc_libzzip(Conf *c) : ConfObj(c) {}
QString name() const { return "Zzip library (libzzip)"; }
QString shortname() const { return "libzzip"; }
QString checkString() const {
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
return "";
return ConfObj::checkString();
}
bool exec(){
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
return false;
QString s;
s = conf->getenv("QC_WITH_LIBZZIP_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "zzip/zzip.h")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/include";
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "zzip/zzip.h")){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBZZIP_LIB");
if(!s.isEmpty()) {
if(!QFile::exists(s+QString("/libzzip.so"))){
return false;
}
}else{
QStringList sl;
sl << "/usr/lib/";
sl << "/usr/lib64/";
sl << "/usr/local/lib/";
sl << "/usr/local/lib64/";
bool found = false;
foreach(s, sl){
if(QFile::exists(s+QString("libzzip.so"))){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addLib(QString("-L") + s);
conf->addLib("-lzzip");
conf->addDefine("HAVE_ZZIP");
return true;
}
};

20
qcm/qt4.qcm Normal file
View File

@@ -0,0 +1,20 @@
/*
-----BEGIN QCMOD-----
name: Qt >= 4.3
-----END QCMOD-----
*/
class qc_qt4 : public ConfObj
{
public:
qc_qt4(Conf *c) : ConfObj(c) {}
QString name() const { return "Qt >= 4.3"; }
QString shortname() const { return "Qt 4.3"; }
bool exec()
{
if(QT_VERSION >= 0x040400) {
conf->addDefine("QT_4_4");
}
return(QT_VERSION >= 0x040300);
}
};

116
src/DLListDelegate.h Normal file
View File

@@ -0,0 +1,116 @@
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2006 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 DLLISTDELEGATE_H
#define DLLISTDELEGATE_H
#include <QItemDelegate>
#include <QModelIndex>
#include <QPainter>
#include <QStyleOptionProgressBarV2>
#include <QStyleOptionViewItemV2>
#include <QProgressBar>
#include <QApplication>
#include "misc.h"
// Defines for download list list columns
#define NAME 0
#define SIZE 1
#define PROGRESS 2
#define DLSPEED 3
#define UPSPEED 4
#define SEEDSLEECH 5
#define RATIO 6
#define ETA 7
#define PRIORITY 8
#define HASH 9
class DLListDelegate: public QItemDelegate {
Q_OBJECT
public:
DLListDelegate(QObject *parent) : QItemDelegate(parent){}
~DLListDelegate(){}
void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const{
QStyleOptionViewItemV2 opt = QItemDelegate::setOptions(index, option);
switch(index.column()){
case SIZE:
QItemDelegate::drawBackground(painter, opt, index);
QItemDelegate::drawDisplay(painter, opt, option.rect, misc::friendlyUnit(index.data().toLongLong()));
break;
case ETA:
QItemDelegate::drawBackground(painter, opt, index);
QItemDelegate::drawDisplay(painter, opt, option.rect, misc::userFriendlyDuration(index.data().toLongLong()));
break;
case UPSPEED:
case DLSPEED:{
QItemDelegate::drawBackground(painter, opt, index);
double speed = index.data().toDouble();
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(speed/1024., 'f', 1))+QString::fromUtf8(" ")+tr("KiB/s"));
break;
}
case RATIO:{
QItemDelegate::drawBackground(painter, opt, index);
double ratio = index.data().toDouble();
if(ratio > 100.)
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString::fromUtf8(""));
else
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(ratio, 'f', 1)));
break;
}
case PROGRESS:{
QStyleOptionProgressBarV2 newopt;
double progress = index.data().toDouble()*100.;
newopt.rect = opt.rect;
newopt.text = QString(QByteArray::number(progress, 'f', 1))+QString::fromUtf8("%");
newopt.progress = (int)progress;
newopt.maximum = 100;
newopt.minimum = 0;
newopt.state |= QStyle::State_Enabled;
newopt.textVisible = true;
QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt,
painter);
break;
}
default:
QItemDelegate::paint(painter, option, index);
}
}
QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const {
// No editor here
return 0;
}
};
#endif

View File

@@ -0,0 +1,98 @@
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2006 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 FINISHEDLISTDELEGATE_H
#define FINISHEDLISTDELEGATE_H
#include <QItemDelegate>
#include <QModelIndex>
#include <QPainter>
#include <QStyleOptionProgressBarV2>
#include <QStyleOptionViewItemV2>
#include <QProgressBar>
#include <QApplication>
#include "misc.h"
// Defines for download list list columns
#define F_NAME 0
#define F_SIZE 1
#define F_UPSPEED 2
#define F_SWARM 3
#define F_PEERS 4
#define F_UPLOAD 5
#define F_RATIO 6
#define F_HASH 7
#define MAX_RATIO 100.
class FinishedListDelegate: public QItemDelegate {
Q_OBJECT
public:
FinishedListDelegate(QObject *parent) : QItemDelegate(parent){}
~FinishedListDelegate(){}
void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const{
QStyleOptionViewItemV2 opt = QItemDelegate::setOptions(index, option);
switch(index.column()){
case F_SIZE:
case F_UPLOAD:
QItemDelegate::drawBackground(painter, opt, index);
QItemDelegate::drawDisplay(painter, opt, option.rect, misc::friendlyUnit(index.data().toLongLong()));
break;
case F_UPSPEED:{
QItemDelegate::drawBackground(painter, opt, index);
double speed = index.data().toDouble();
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(speed/1024., 'f', 1))+QString::fromUtf8(" ")+tr("KiB/s"));
break;
}
case F_RATIO:{
QItemDelegate::drawBackground(painter, opt, index);
double ratio = index.data().toDouble();
if(ratio > MAX_RATIO)
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString::fromUtf8(""));
else
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(ratio, 'f', 1)));
break;
}
default:
QItemDelegate::paint(painter, option, index);
}
}
QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const {
// No editor here
return 0;
}
};
#endif

682
src/FinishedTorrents.cpp Normal file
View File

@@ -0,0 +1,682 @@
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2006 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
*/
#include "FinishedTorrents.h"
#include "misc.h"
#include "properties_imp.h"
#include "bittorrent.h"
#include "allocationDlg.h"
#include "FinishedListDelegate.h"
#include "GUI.h"
#include <QFile>
#include <QSettings>
#include <QStandardItemModel>
#include <QHeaderView>
#include <QMenu>
#include <QMessageBox>
FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : parent(parent), BTSession(BTSession), nbFinished(0){
setupUi(this);
actionStart->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/play.png")));
actionPause->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/pause.png")));
finishedListModel = new QStandardItemModel(0,8);
finishedListModel->setHeaderData(F_NAME, Qt::Horizontal, tr("Name", "i.e: file name"));
finishedListModel->setHeaderData(F_SIZE, Qt::Horizontal, tr("Size", "i.e: file size"));
finishedListModel->setHeaderData(F_UPSPEED, Qt::Horizontal, tr("UP Speed", "i.e: Upload speed"));
finishedListModel->setHeaderData(F_SWARM, Qt::Horizontal, tr("Seeds / Leechers"));
finishedListModel->setHeaderData(F_PEERS, Qt::Horizontal, tr("Connected peers"));
finishedListModel->setHeaderData(F_UPLOAD, Qt::Horizontal, tr("Total uploaded", "i.e: Total amount of uploaded data"));
finishedListModel->setHeaderData(F_RATIO, Qt::Horizontal, tr("Ratio"));
finishedList->setModel(finishedListModel);
finishedList->setRootIsDecorated(false);
finishedList->setAllColumnsShowFocus(true);
loadHiddenColumns();
// Hide hash column
finishedList->hideColumn(F_HASH);
// Load last columns width for download list
if(!loadColWidthFinishedList()){
finishedList->header()->resizeSection(0, 200);
}
// Make download list header clickable for sorting
finishedList->header()->setClickable(true);
finishedList->header()->setSortIndicatorShown(true);
connect(finishedList->header(), SIGNAL(sectionPressed(int)), this, SLOT(toggleFinishedListSortOrder(int)));
finishedListDelegate = new FinishedListDelegate(finishedList);
finishedList->setItemDelegate(finishedListDelegate);
connect(finishedList, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayFinishedListMenu(const QPoint&)));
finishedList->header()->setContextMenuPolicy(Qt::CustomContextMenu);
connect(finishedList->header(), SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayFinishedHoSMenu(const QPoint&)));
connect(finishedList, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(notifyTorrentDoubleClicked(const QModelIndex&)));
actionDelete->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete.png")));
actionPreview_file->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/preview.png")));
actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png")));
actionTorrent_Properties->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/properties.png")));
actionSet_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png")));
connect(actionPause, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPause_triggered()));
connect(actionStart, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionStart_triggered()));
connect(actionDelete, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_triggered()));
connect(actionPreview_file, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPreview_file_triggered()));
connect(actionDelete_Permanently, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_Permanently_triggered()));
connect(actionOpen_destination_folder, SIGNAL(triggered()), (GUI*)parent, SLOT(openDestinationFolder()));
connect(actionBuy_it, SIGNAL(triggered()), (GUI*)parent, SLOT(goBuyPage()));
connect(actionTorrent_Properties, SIGNAL(triggered()), this, SLOT(propertiesSelection()));
connect(actionForce_recheck, SIGNAL(triggered()), this, SLOT(forceRecheck()));
connect(actionHOSColName, SIGNAL(triggered()), this, SLOT(hideOrShowColumnName()));
connect(actionHOSColSize, SIGNAL(triggered()), this, SLOT(hideOrShowColumnSize()));
connect(actionHOSColUpSpeed, SIGNAL(triggered()), this, SLOT(hideOrShowColumnUpSpeed()));
connect(actionHOSColSwarm, SIGNAL(triggered()), this, SLOT(hideOrShowColumnSwarm()));
connect(actionHOSColPeers, SIGNAL(triggered()), this, SLOT(hideOrShowColumnPeers()));
connect(actionHOSColUpload, SIGNAL(triggered()), this, SLOT(hideOrShowColumnUpload()));
connect(actionHOSColRatio, SIGNAL(triggered()), this, SLOT(hideOrShowColumnRatio()));
}
FinishedTorrents::~FinishedTorrents(){
saveColWidthFinishedList();
saveHiddenColumns();
delete finishedListDelegate;
delete finishedListModel;
}
void FinishedTorrents::notifyTorrentDoubleClicked(const QModelIndex& index) {
unsigned int row = index.row();
QString hash = getHashFromRow(row);
emit torrentDoubleClicked(hash, true);
}
void FinishedTorrents::addTorrent(QString hash){
int row = getRowFromHash(hash);
if(row != -1) return;
row = finishedListModel->rowCount();
QTorrentHandle h = BTSession->getTorrentHandle(hash);
// Adding torrent to download list
finishedListModel->insertRow(row);
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(h.name()));
finishedListModel->setData(finishedListModel->index(row, F_SIZE), QVariant((qlonglong)h.actual_size()));
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)0.));
finishedListModel->setData(finishedListModel->index(row, F_SWARM), QVariant("-1/-1"));
finishedListModel->setData(finishedListModel->index(row, F_PEERS), QVariant("0"));
finishedListModel->setData(finishedListModel->index(row, F_UPLOAD), QVariant((qlonglong)h.all_time_upload()));
finishedListModel->setData(finishedListModel->index(row, F_RATIO), QVariant(QString::fromUtf8(misc::toString(BTSession->getRealRatio(hash)).c_str())));
finishedListModel->setData(finishedListModel->index(row, F_HASH), QVariant(hash));
if(h.is_paused()) {
finishedListModel->setData(finishedListModel->index(row, F_NAME), QIcon(":/Icons/skin/paused.png"), Qt::DecorationRole);
setRowColor(row, "red");
}else{
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(":/Icons/skin/seeding.png")), Qt::DecorationRole);
setRowColor(row, "orange");
}
// Update the number of finished torrents
++nbFinished;
emit finishedTorrentsNumberChanged(nbFinished);
// Sort List
sortFinishedList();
}
// Set the color of a row in data model
void FinishedTorrents::setRowColor(int row, QString color){
unsigned int nbColumns = finishedListModel->columnCount()-1;
for(unsigned int i=0; i<nbColumns; ++i){
finishedListModel->setData(finishedListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole);
}
}
QStringList FinishedTorrents::getSelectedTorrents(bool only_one) const{
QStringList res;
QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes();
foreach(const QModelIndex &index, selectedIndexes) {
if(index.column() == F_NAME) {
// Get the file hash
QString hash = finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString();
res << hash;
if(only_one) break;
}
}
return res;
}
unsigned int FinishedTorrents::getNbTorrentsInList() const {
return nbFinished;
}
// Load columns width in a file that were saved previously
// (finished list)
bool FinishedTorrents::loadColWidthFinishedList(){
qDebug("Loading columns width for finished list");
QSettings settings("qBittorrent", "qBittorrent");
QString line = settings.value("FinishedListColsWidth", QString()).toString();
if(line.isEmpty())
return false;
QStringList width_list = line.split(' ');
if(width_list.size() < finishedListModel->columnCount()-1)
return false;
unsigned int listSize = width_list.size();
for(unsigned int i=0; i<listSize; ++i){
finishedList->header()->resizeSection(i, width_list.at(i).toInt());
}
loadLastSortedColumn();
QVariantList visualIndexes = settings.value(QString::fromUtf8("FinishedListVisualIndexes"), QVariantList()).toList();
if(visualIndexes.size() != finishedListModel->columnCount()-1) {
qDebug("Corrupted values for download list columns sizes");
return false;
}
bool change = false;
do {
change = false;
for(int i=0;i<visualIndexes.size(); ++i) {
int new_visual_index = visualIndexes.at(finishedList->header()->logicalIndex(i)).toInt();
if(i != new_visual_index) {
qDebug("Moving column from %d to %d", finishedList->header()->logicalIndex(i), new_visual_index);
finishedList->header()->moveSection(i, new_visual_index);
change = true;
}
}
}while(change);
qDebug("Finished list columns width loaded");
return true;
}
void FinishedTorrents::loadLastSortedColumn() {
// Loading last sorted column
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
QString sortedCol = settings.value(QString::fromUtf8("FinishedListSortedCol"), QString()).toString();
if(!sortedCol.isEmpty()) {
Qt::SortOrder sortOrder;
if(sortedCol.endsWith(QString::fromUtf8("d")))
sortOrder = Qt::DescendingOrder;
else
sortOrder = Qt::AscendingOrder;
sortedCol = sortedCol.left(sortedCol.size()-1);
int index = sortedCol.toInt();
sortFinishedList(index, sortOrder);
}
}
// Save columns width in a file to remember them
// (finished list)
void FinishedTorrents::saveColWidthFinishedList() const{
qDebug("Saving columns width in finished list");
QSettings settings("qBittorrent", "qBittorrent");
QStringList width_list;
QStringList new_width_list;
short nbColumns = finishedListModel->columnCount()-1;
QString line = settings.value("FinishedListColsWidth", QString()).toString();
if(!line.isEmpty()) {
width_list = line.split(' ');
}
for(short i=0; i<nbColumns; ++i){
if(finishedList->columnWidth(i)<1 && width_list.size() == nbColumns && width_list.at(i).toInt()>=1) {
// load the former width
new_width_list << width_list.at(i);
} else if(finishedList->columnWidth(i)>=1) {
// usual case, save the current width
new_width_list << QString::fromUtf8(misc::toString(finishedList->columnWidth(i)).c_str());
} else {
// default width
finishedList->resizeColumnToContents(i);
new_width_list << QString::fromUtf8(misc::toString(finishedList->columnWidth(i)).c_str());
}
}
settings.setValue("FinishedListColsWidth", new_width_list.join(" "));
QVariantList visualIndexes;
for(int i=0; i<nbColumns; ++i) {
visualIndexes.append(finishedList->header()->visualIndex(i));
}
settings.setValue(QString::fromUtf8("FinishedListVisualIndexes"), visualIndexes);
qDebug("Finished list columns width saved");
}
void FinishedTorrents::on_actionSet_upload_limit_triggered(){
QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes();
QStringList hashes;
foreach(const QModelIndex &index, selectedIndexes){
if(index.column() == F_NAME){
// Get the file hash
hashes << finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString();
}
}
new BandwidthAllocationDialog(this, true, BTSession, hashes);
}
void FinishedTorrents::updateTorrent(QTorrentHandle h) {
QString hash = h.hash();
int row = getRowFromHash(hash);
if(row == -1){
qDebug("Cannot find torrent in finished list, adding it");
addTorrent(hash);
row = getRowFromHash(hash);
}
Q_ASSERT(row != -1);
if(!finishedList->isColumnHidden(F_SWARM)) {
finishedListModel->setData(finishedListModel->index(row, F_SWARM), misc::toQString(h.num_complete())+QString("/")+misc::toQString(h.num_incomplete()));
}
if(h.is_paused()) return;
// Update queued torrent
if(BTSession->isQueueingEnabled() && h.is_queued()) {
if(h.state() == torrent_status::checking_files || h.state() == torrent_status::queued_for_checking){
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/oxygen/time.png"))), Qt::DecorationRole);
} else {
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/queued.png"))), Qt::DecorationRole);
}
// Reset upload speed and seeds/leech
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), 0.);
finishedListModel->setData(finishedListModel->index(row, F_PEERS), "0");
setRowColor(row, QString::fromUtf8("grey"));
return;
}
if(h.state() == torrent_status::checking_files || h.state() == torrent_status::queued_for_checking){
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/oxygen/time.png"))), Qt::DecorationRole);
setRowColor(row, QString::fromUtf8("grey"));
return;
}
setRowColor(row, QString::fromUtf8("orange"));
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png"))), Qt::DecorationRole);
if(!finishedList->isColumnHidden(F_UPSPEED)) {
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)h.upload_payload_rate()));
}
if(!finishedList->isColumnHidden(F_PEERS)) {
finishedListModel->setData(finishedListModel->index(row, F_PEERS), misc::toQString(h.num_peers() - h.num_seeds(), true));
}
if(!finishedList->isColumnHidden(F_UPLOAD)) {
finishedListModel->setData(finishedListModel->index(row, F_UPLOAD), QVariant((double)h.all_time_upload()));
}
if(!finishedList->isColumnHidden(F_RATIO)) {
finishedListModel->setData(finishedListModel->index(row, F_RATIO), QVariant(misc::toQString(BTSession->getRealRatio(hash))));
}
}
int FinishedTorrents::getRowFromHash(QString hash) const{
unsigned int nbRows = finishedListModel->rowCount();
for(unsigned int i=0; i<nbRows; ++i){
if(finishedListModel->data(finishedListModel->index(i, F_HASH)) == hash){
return i;
}
}
return -1;
}
// Note: does not actually pause the torrent in BT Session
void FinishedTorrents::pauseTorrent(QString hash) {
int row = getRowFromHash(hash);
if(row == -1)
return;
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)0.0));
finishedListModel->setData(finishedListModel->index(row, F_NAME), QIcon(QString::fromUtf8(":/Icons/skin/paused.png")), Qt::DecorationRole);
finishedListModel->setData(finishedListModel->index(row, F_PEERS), QVariant(QString::fromUtf8("0")));
setRowColor(row, QString::fromUtf8("red"));
}
QString FinishedTorrents::getHashFromRow(unsigned int row) const {
Q_ASSERT(row < (unsigned int)finishedListModel->rowCount());
return finishedListModel->data(finishedListModel->index(row, F_HASH)).toString();
}
// Will move it to download tab
void FinishedTorrents::deleteTorrent(QString hash){
int row = getRowFromHash(hash);
if(row == -1){
qDebug("Torrent is not in finished list, nothing to delete");
return;
}
finishedListModel->removeRow(row);
--nbFinished;
emit finishedTorrentsNumberChanged(nbFinished);
}
// Show torrent properties dialog
void FinishedTorrents::showProperties(const QModelIndex &index){
showPropertiesFromHash(finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString());
}
void FinishedTorrents::showPropertiesFromHash(QString hash){
QTorrentHandle h = BTSession->getTorrentHandle(hash);
properties *prop = new properties(this, BTSession, h);
connect(prop, SIGNAL(filteredFilesChanged(QString)), this, SLOT(updateFileSize(QString)));
connect(prop, SIGNAL(trackersChanged(QString)), BTSession, SLOT(saveTrackerFile(QString)));
prop->show();
}
void FinishedTorrents::updateFileSize(QString hash){
int row = getRowFromHash(hash);
QTorrentHandle h = BTSession->getTorrentHandle(hash);
finishedListModel->setData(finishedListModel->index(row, F_SIZE), QVariant((qlonglong)h.actual_size()));
}
// display properties of selected items
void FinishedTorrents::propertiesSelection(){
QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes();
foreach(const QModelIndex &index, selectedIndexes){
if(index.column() == F_NAME){
showProperties(index);
}
}
}
void FinishedTorrents::forceRecheck(){
QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes();
foreach(const QModelIndex &index, selectedIndexes){
if(index.column() == F_NAME){
QString hash = finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString();
QTorrentHandle h = BTSession->getTorrentHandle(hash);
qDebug("Forcing recheck for torrent %s", hash.toLocal8Bit().data());
h.force_recheck();
}
}
}
void FinishedTorrents::displayFinishedListMenu(const QPoint&){
QMenu myFinishedListMenu(this);
// Enable/disable pause/start action given the DL state
QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes();
bool has_pause = false, has_start = false, has_preview = false;
foreach(const QModelIndex &index, selectedIndexes) {
if(index.column() == F_NAME) {
// Get the file name
QString hash = finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString();
// Get handle and pause the torrent
QTorrentHandle h = BTSession->getTorrentHandle(hash);
if(!h.is_valid()) continue;
if(h.is_paused()) {
if(!has_start) {
myFinishedListMenu.addAction(actionStart);
has_start = true;
}
}else{
if(!has_pause) {
myFinishedListMenu.addAction(actionPause);
has_pause = true;
}
}
if(BTSession->isFilePreviewPossible(hash) && !has_preview) {
myFinishedListMenu.addAction(actionPreview_file);
has_preview = true;
}
if(has_pause && has_start && has_preview) break;
}
}
myFinishedListMenu.addSeparator();
myFinishedListMenu.addAction(actionDelete);
myFinishedListMenu.addAction(actionDelete_Permanently);
myFinishedListMenu.addSeparator();
myFinishedListMenu.addAction(actionSet_upload_limit);
myFinishedListMenu.addSeparator();
myFinishedListMenu.addAction(actionForce_recheck);
myFinishedListMenu.addSeparator();
myFinishedListMenu.addAction(actionOpen_destination_folder);
myFinishedListMenu.addAction(actionTorrent_Properties);
myFinishedListMenu.addSeparator();
myFinishedListMenu.addAction(actionBuy_it);
// Call menu
myFinishedListMenu.exec(QCursor::pos());
}
/*
* Hiding Columns functions
*/
// hide/show columns menu
void FinishedTorrents::displayFinishedHoSMenu(const QPoint& pos){
QMenu hideshowColumn(this);
hideshowColumn.setTitle(tr("Hide or Show Column"));
int lastCol = F_RATIO;
for(int i=0; i<=lastCol; i++) {
hideshowColumn.addAction(getActionHoSCol(i));
}
// Call menu
hideshowColumn.exec(mapToGlobal(pos)+QPoint(10,34));
}
// toggle hide/show a column
void FinishedTorrents::hideOrShowColumn(int index) {
unsigned int nbVisibleColumns = 0;
unsigned int nbCols = finishedListModel->columnCount();
// Count visible columns
for(unsigned int i=0; i<nbCols; ++i) {
if(!finishedList->isColumnHidden(i))
++nbVisibleColumns;
}
if(!finishedList->isColumnHidden(index)) {
// User wants to hide the column
// Is there at least one other visible column?
if(nbVisibleColumns <= 1) return;
// User can hide the column, do it.
finishedList->setColumnHidden(index, true);
getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/button_cancel.png")));
--nbVisibleColumns;
} else {
// User want to display the column
finishedList->setColumnHidden(index, false);
getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/button_ok.png")));
++nbVisibleColumns;
}
//resize all others non-hidden columns
for(unsigned int i=0; i<nbCols; ++i) {
if(!finishedList->isColumnHidden(i)) {
finishedList->setColumnWidth(i, (int)ceil(finishedList->columnWidth(i)+(finishedList->columnWidth(index)/nbVisibleColumns)));
}
}
}
void FinishedTorrents::hideOrShowColumnName() {
hideOrShowColumn(F_NAME);
}
void FinishedTorrents::hideOrShowColumnSize() {
hideOrShowColumn(F_SIZE);
}
void FinishedTorrents::hideOrShowColumnUpSpeed() {
hideOrShowColumn(F_UPSPEED);
}
void FinishedTorrents::hideOrShowColumnSwarm() {
hideOrShowColumn(F_SWARM);
}
void FinishedTorrents::hideOrShowColumnPeers() {
hideOrShowColumn(F_PEERS);
}
void FinishedTorrents::hideOrShowColumnUpload() {
hideOrShowColumn(F_UPLOAD);
}
void FinishedTorrents::hideOrShowColumnRatio() {
hideOrShowColumn(F_RATIO);
}
// load the previous settings, and hide the columns
bool FinishedTorrents::loadHiddenColumns() {
bool loaded = false;
QSettings settings("qBittorrent", "qBittorrent");
QString line = settings.value("FinishedListColsHoS", QString()).toString();
QStringList ishidden_list;
if(!line.isEmpty()) {
ishidden_list = line.split(' ');
if(ishidden_list.size() == finishedListModel->columnCount()-1) {
unsigned int listSize = ishidden_list.size();
for(unsigned int i=0; i<listSize; ++i){
finishedList->header()->resizeSection(i, ishidden_list.at(i).toInt());
}
loaded = true;
}
}
for(int i=0; i<finishedListModel->columnCount()-1; i++) {
if(loaded && ishidden_list.at(i) == "0") {
finishedList->setColumnHidden(i, true);
getActionHoSCol(i)->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/button_cancel.png")));
} else {
getActionHoSCol(i)->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/button_ok.png")));
}
}
return loaded;
}
// save the hidden columns in settings
void FinishedTorrents::saveHiddenColumns() {
QSettings settings("qBittorrent", "qBittorrent");
QStringList ishidden_list;
short nbColumns = finishedListModel->columnCount()-1;
for(short i=0; i<nbColumns; ++i){
if(finishedList->isColumnHidden(i)) {
ishidden_list << QString::fromUtf8(misc::toString(0).c_str());
} else {
ishidden_list << QString::fromUtf8(misc::toString(1).c_str());
}
}
settings.setValue("FinishedListColsHoS", ishidden_list.join(" "));
}
// getter, return the action hide or show whose id is index
QAction* FinishedTorrents::getActionHoSCol(int index) {
switch(index) {
case F_NAME :
return actionHOSColName;
break;
case F_SIZE :
return actionHOSColSize;
break;
case F_UPSPEED :
return actionHOSColUpSpeed;
break;
case F_SWARM :
return actionHOSColSwarm;
break;
case F_PEERS :
return actionHOSColPeers;
break;
case F_UPLOAD :
return actionHOSColUpload;
break;
case F_RATIO :
return actionHOSColRatio;
break;
default :
return NULL;
}
}
/*
* Sorting functions
*/
void FinishedTorrents::toggleFinishedListSortOrder(int index) {
Qt::SortOrder sortOrder = Qt::AscendingOrder;
if(finishedList->header()->sortIndicatorSection() == index){
sortOrder = (Qt::SortOrder)!(bool)finishedList->header()->sortIndicatorOrder();
}
switch(index) {
case F_SIZE:
case F_UPSPEED:
case F_RATIO:
case F_UPLOAD:
sortFinishedListFloat(index, sortOrder);
break;
default:
sortFinishedListString(index, sortOrder);
}
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
QString sortOrderLetter;
if(sortOrder == Qt::AscendingOrder)
sortOrderLetter = QString::fromUtf8("a");
else
sortOrderLetter = QString::fromUtf8("d");
settings.setValue(QString::fromUtf8("FinishedListSortedCol"), misc::toQString(index)+sortOrderLetter);
}
void FinishedTorrents::sortFinishedList(int index, Qt::SortOrder sortOrder){
if(index == -1) {
index = finishedList->header()->sortIndicatorSection();
sortOrder = finishedList->header()->sortIndicatorOrder();
} else {
finishedList->header()->setSortIndicator(index, sortOrder);
}
switch(index) {
case F_SIZE:
case F_UPSPEED:
case F_UPLOAD:
case F_RATIO:
sortFinishedListFloat(index, sortOrder);
break;
default:
sortFinishedListString(index, sortOrder);
}
}
void FinishedTorrents::sortFinishedListFloat(int index, Qt::SortOrder sortOrder){
QList<QPair<int, double> > lines;
// insertion sorting
unsigned int nbRows = finishedListModel->rowCount();
for(unsigned int i=0; i<nbRows; ++i){
misc::insertSort(lines, QPair<int,double>(i, finishedListModel->data(finishedListModel->index(i, index)).toDouble()), sortOrder);
}
// Insert items in new model, in correct order
unsigned int nbRows_old = lines.size();
for(unsigned int row=0; row<nbRows_old; ++row){
finishedListModel->insertRow(finishedListModel->rowCount());
unsigned int sourceRow = lines[row].first;
unsigned int nbColumns = finishedListModel->columnCount();
for(unsigned int col=0; col<nbColumns; ++col){
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col)));
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::DecorationRole), Qt::DecorationRole);
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::ForegroundRole), Qt::ForegroundRole);
}
}
// Remove old rows
finishedListModel->removeRows(0, nbRows_old);
}
void FinishedTorrents::sortFinishedListString(int index, Qt::SortOrder sortOrder){
QList<QPair<int, QString> > lines;
// Insertion sorting
unsigned int nbRows = finishedListModel->rowCount();
for(unsigned int i=0; i<nbRows; ++i){
misc::insertSortString(lines, QPair<int, QString>(i, finishedListModel->data(finishedListModel->index(i, index)).toString()), sortOrder);
}
// Insert items in new model, in correct order
unsigned int nbRows_old = lines.size();
for(unsigned int row=0; row<nbRows_old; ++row){
finishedListModel->insertRow(finishedListModel->rowCount());
unsigned int sourceRow = lines[row].first;
unsigned int nbColumns = finishedListModel->columnCount();
for(unsigned int col=0; col<nbColumns; ++col){
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col)));
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::DecorationRole), Qt::DecorationRole);
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::ForegroundRole), Qt::ForegroundRole);
}
}
// Remove old rows
finishedListModel->removeRows(0, nbRows_old);
}

104
src/FinishedTorrents.h Normal file
View File

@@ -0,0 +1,104 @@
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2006 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 SEEDING_H
#define SEEDING_H
#include "ui_seeding.h"
#include "qtorrenthandle.h"
class QStandardItemModel;
class bittorrent;
class FinishedListDelegate;
using namespace libtorrent;
class FinishedTorrents : public QWidget, public Ui::seeding {
Q_OBJECT
private:
QObject *parent;
bittorrent *BTSession;
FinishedListDelegate *finishedListDelegate;
QStandardItemModel *finishedListModel;
unsigned int nbFinished;
void hideOrShowColumn(int index);
bool loadHiddenColumns();
void saveHiddenColumns();
QAction* getActionHoSCol(int index);
public:
FinishedTorrents(QObject *parent, bittorrent *BTSession);
~FinishedTorrents();
// Methods
bool loadColWidthFinishedList();
int getRowFromHash(QString hash) const;
QStringList getSelectedTorrents(bool only_one=false) const;
unsigned int getNbTorrentsInList() const;
QString getHashFromRow(unsigned int row) const;
protected slots:
void showProperties(const QModelIndex &index);
void displayFinishedListMenu(const QPoint&);
void displayFinishedHoSMenu(const QPoint&);
void setRowColor(int row, QString color);
void saveColWidthFinishedList() const;
void toggleFinishedListSortOrder(int index);
void sortFinishedList(int index=-1, Qt::SortOrder sortOrder=Qt::AscendingOrder);
void sortFinishedListFloat(int index, Qt::SortOrder sortOrder);
void sortFinishedListString(int index, Qt::SortOrder sortOrder);
void updateFileSize(QString hash);
void on_actionSet_upload_limit_triggered();
void notifyTorrentDoubleClicked(const QModelIndex& index);
void hideOrShowColumnName();
void hideOrShowColumnSize();
void hideOrShowColumnUpSpeed();
void hideOrShowColumnSwarm();
void hideOrShowColumnPeers();
void hideOrShowColumnUpload();
void hideOrShowColumnRatio();
void forceRecheck();
public slots:
void addTorrent(QString hash);
void updateTorrent(QTorrentHandle h);
void pauseTorrent(QString hash);
void propertiesSelection();
void deleteTorrent(QString hash);
void showPropertiesFromHash(QString hash);
void loadLastSortedColumn();
signals:
void torrentMovedFromFinishedList(QString);
void torrentDoubleClicked(QString hash, bool finished);
void finishedTorrentsNumberChanged(unsigned int);
};
#endif

1611
src/GUI.cpp Normal file

File diff suppressed because it is too large Load Diff

211
src/GUI.h Normal file
View File

@@ -0,0 +1,211 @@
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2006 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 GUI_H
#define GUI_H
#include <QProcess>
#include <QSystemTrayIcon>
#include <QPointer>
#include "ui_MainWindow.h"
#include "qtorrenthandle.h"
class bittorrent;
class createtorrent;
class QTimer;
class DownloadingTorrents;
class FinishedTorrents;
class downloadFromURL;
class SearchEngine;
#ifdef QT_4_4
class QLocalServer;
class QLocalSocket;
#else
class QTcpServer;
class QTcpSocket;
#endif
class QCloseEvent;
class RSSImp;
class QShortcut;
class about;
class previewSelect;
class options_imp;
class QTabWidget;
class QLabel;
class QModelIndex;
class HttpServer;
class QFrame;
class GUI : public QMainWindow, private Ui::MainWindow{
Q_OBJECT
private:
// Bittorrent
bittorrent *BTSession;
QTimer *checkConnect;
QTimer *scrapeTimer;
QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers;
// GUI related
QTabWidget *tabs;
QPointer<options_imp> options;
QSystemTrayIcon *myTrayIcon;
QPointer<QTimer> systrayCreator;
QMenu *myTrayIconMenu;
DownloadingTorrents *downloadingTorrentTab;
FinishedTorrents *finishedTorrentTab;
QLabel *connecStatusLblIcon;
bool systrayIntegration;
bool displaySpeedInTitle;
bool force_exit;
unsigned int refreshInterval;
QTimer *refresher;
QLabel *dlSpeedLbl;
QLabel *upSpeedLbl;
QLabel *ratioLbl;
QLabel *DHTLbl;
QFrame *statusSep1;
QFrame *statusSep2;
QFrame *statusSep3;
QFrame *statusSep4;
// Keyboard shortcuts
QShortcut *switchSearchShortcut;
QShortcut *switchSearchShortcut2;
QShortcut *switchDownShortcut;
QShortcut *switchUpShortcut;
QShortcut *switchRSSShortcut;
QAction *prioSeparator;
QAction *prioSeparator2;
// Search
SearchEngine *searchEngine;
// RSS
RSSImp *rssWidget;
// Web UI
QPointer<HttpServer> httpServer;
// Misc
#ifdef QT_4_4
QLocalServer *localServer;
QLocalSocket *clientConnection;
#else
QTcpServer *localServer;
QTcpSocket *clientConnection;
#endif
protected slots:
// GUI related slots
void dropEvent(QDropEvent *event);
void dragEnterEvent(QDragEnterEvent *event);
void toggleVisibility(QSystemTrayIcon::ActivationReason e);
void on_actionAbout_triggered();
void on_actionCreate_torrent_triggered();
void on_actionWebsite_triggered() const;
void on_actionBugReport_triggered() const;
void on_actionShow_console_triggered();
void readParamsOnSocket();
void acceptConnection();
void togglePausedState(QString hash);
void torrentDoubleClicked(QString hash, bool finished);
void on_actionPreview_file_triggered();
void previewFile(QString filePath);
void balloonClicked();
void writeSettings();
void readSettings();
void on_actionExit_triggered();
void createTrayIcon();
void updateUnfinishedTorrentNumber(unsigned int nb);
void updateFinishedTorrentNumber(unsigned int nb);
void fullDiskError(QTorrentHandle& h, QString msg) const;
void handleDownloadFromUrlFailure(QString, QString) const;
void createSystrayDelayed();
// Keyboard shortcuts
void createKeyboardShortcuts();
void displayDownTab() const;
void displayUpTab() const;
void displaySearchTab() const;
void displayRSSTab() const;
// Torrent actions
void on_actionTorrent_Properties_triggered();
void on_actionPause_triggered();
void on_actionPause_All_triggered();
void on_actionStart_triggered();
void on_actionStart_All_triggered();
void on_actionOpen_triggered();
void on_actionDelete_Permanently_triggered();
void on_actionDelete_triggered();
void on_actionSet_global_upload_limit_triggered();
void on_actionSet_global_download_limit_triggered();
void on_actionDocumentation_triggered() const;
void checkConnectionStatus();
void configureSession(bool deleteOptions);
void processParams(const QStringList& params);
void addTorrent(QString path);
void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker);
void processDownloadedFiles(QString path, QString url);
void downloadFromURLList(const QStringList& urls);
void deleteTorrent(QString hash);
void finishedTorrent(QTorrentHandle& h) const;
void addedTorrent(QTorrentHandle& h) const;
void checkedTorrent(QTorrentHandle& h) const;
void pausedTorrent(QTorrentHandle& h) const;
void resumedTorrent(QTorrentHandle& h) const;
void updateLists(bool force=false);
bool initWebUi(QString username, QString password, int port);
void on_actionIncreasePriority_triggered();
void on_actionDecreasePriority_triggered();
void scrapeTrackers();
// Options slots
void on_actionOptions_triggered();
void OptionsSaved(bool deleteOptions);
// HTTP slots
void on_actionDownload_from_URL_triggered();
public slots:
void trackerAuthenticationRequired(QTorrentHandle& h);
void setTabText(int index, QString text) const;
void openDestinationFolder() const;
void goBuyPage() const;
void updateRatio();
protected:
void closeEvent(QCloseEvent *);
void showEvent(QShowEvent *);
bool event(QEvent * event);
void displayRSSTab(bool enable);
public:
// Construct / Destruct
GUI(QWidget *parent=0, QStringList torrentCmdLine=QStringList());
~GUI();
// Methods
int getCurrentTabIndex() const;
QPoint screenCenter() const;
};
#endif

BIN
src/Icons/add_file.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1005 B

BIN
src/Icons/add_folder.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/Icons/downarrow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

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