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

Compare commits

..

693 Commits

Author SHA1 Message Date
sledgehammer999
ea5a29018f Bump to 4.1.1 2018-05-27 21:35:07 +03:00
sledgehammer999
c8d0a715e8 Update Changelog 2018-05-27 21:30:13 +03:00
sledgehammer999
2cfc6514ab Sync translations from Transifex and run lupdate 2018-05-27 21:03:53 +03:00
sledgehammer999
1d78bc7206 Bump Web API version 2018-05-27 21:03:53 +03:00
Chocobo1
e5577e43f8 Replace raster qbt logo with vector version
Add helper function for svg icons.
2018-05-27 18:31:51 +03:00
Chocobo1
17c0463906 Fix GUI scaling factor on macOS
macOS seems have an unique way to handle widget size, that is, it doesn't require
application to resize widgets manually, Qt will handle the resize job
automatically.

Closes #8841.
2018-05-27 18:31:51 +03:00
Chocobo1
4168772904 Use 32px icons for favicon
One less resource to manage and 16px size can be downsampled from 32px
on-the-fly anyway.
2018-05-27 18:31:51 +03:00
sledgehammer999
44f2186749 Fix compilation without D-Bus support
Closes #8977
2018-05-27 18:31:51 +03:00
Chocobo1
0c918bcc3a Initialize variables properly
The warnings are emitted when compiling on msys2, mingw

The warning was:
gui/torrentcontentmodel.cpp:135:33: warning: missing initializer for
member '_SHFILEINFOW::iIcon' [-Wmissing-field-initializers]

..\..\qBittorrent\src\app\stacktrace_win.h:141:30: warning: missing
initializer for member '_IMAGEHLP_LINE64::Key'
[-Wmissing-field-initializers]
2018-05-27 18:31:51 +03:00
sledgehammer999
0a8925dc75 Suppress multiple I/O errors for the same torrent
When a file error happens libtorrent spews a ton of `file_error_alert`
which result in log floods and notification balloon floods. The later
might render the program inaccessible because the constant
notifications prevent the user from interacting with the tray icon.

Closes #8934
2018-05-27 18:31:51 +03:00
airium
a446597597 Update strace_win to stacktrace in conf.pri.windows
It is advised to update the stack trace statement since #8701, otherwise people may forget to change it, which results in that no pdb file is generated for Windows distribution package.
2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
54354a2732 Add missing 'return' statement 2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
d94b8f08ab Use RSS feed update time as a fallback
Some sites omit publication date in its RSS feed articles
that prevents "Ignore Subsequent Matches" to work properly.
Closes #8959.
2018-05-27 18:31:51 +03:00
Chocobo1
0d8189efeb Relax behavior of "Download first and last piece first"
Now it applies the setting to all files in torrent, no matter whether
the file is previewable or not.

Torrent client shouldn't be smart by deciding which file this
option will be applied to, i.e. it should just follow the user's decision.
2018-05-27 18:31:51 +03:00
Chocobo1
00c886e426 Refactor code
Add const to variables.
Add Logger message.
Simplify code logic.
2018-05-27 18:31:51 +03:00
Chocobo1
551fc35439 Simplify the saving & loading of a setting
Remove excessive usage of constexpr.
2018-05-27 18:31:51 +03:00
Chocobo1
9ff17c8d9d Make use of QStringLiteral
Only changed instances that are initialized at program start.
2018-05-27 18:31:51 +03:00
Chocobo1
ec37732e99 Use smaller type 2018-05-27 18:31:51 +03:00
adem
8a414f32a8 Update Windows icons 2018-05-27 18:31:51 +03:00
sledgehammer999
bac06acb49 Fix Stats dialog size
Partially reverts e31ec20ec4.
Closes #8870.
2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
ae1e3c2a81 Rename torrent if content was initially renamed
Closes #8910.
2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
67940eb0f9 Place "Use Smart Episode Filter" more correctly 2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
007aa8480e Make "Ignoring days" to behave like other filters
This prevents confusing in GUI when it shows matched RSS
articles which be really ignored by the rule.
2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
dedec10c58 Improve code of RSS auto-downloading rule
Closes #8933.
2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
75219e21be Add last used save path to the front of history 2018-05-27 18:31:51 +03:00
Evgeny Lensky
10f5964f8e Fix open destination folder with Nautilus > 3.28
Closes #8923.
2018-05-27 18:31:51 +03:00
Chocobo1
a4a64d51c0 Improve "Run External Program" behavior
This follows utorrent behavior: they don't append backslash character at
the end of path variables.
Closes #8836.
2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
1014313d88 Rename RSS properties to follow other names 2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
e486bb4c29 Properly set RSS settings via API
Closes #8925.
2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
5c3d9ffb46 Properly fill UploadedFile::filename field
Closes #8928.
2018-05-27 18:31:51 +03:00
Chocobo1
2e474fd8db Detect endianness at compile time 2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
b2b110ae1f Add option to remember last used save path
Replace in "Add new torrent" dialog confusing "Set as default save path" option
with "Remember last used save path" option that affects only selected value in
"Save path" combo box.
Closes #7323.
2018-05-27 18:31:51 +03:00
Chocobo1
68a34e0738 Refactor code
Add const to variables.
No functionality change.
2018-05-27 18:31:51 +03:00
Chocobo1
38fa575958 Apply locale changes immediately in WebUI 2018-05-27 18:31:51 +03:00
Chocobo1
6cfeefe054 Rename variables
Variable name should not start with underscore as C++ standard stated it
is reserved.
2018-05-27 18:31:51 +03:00
Chocobo1
8007971a53 Fix i18n in WebUI
Closes #8844.
2018-05-27 18:31:51 +03:00
Chocobo1
d66bd30fae Make strings translatable
Closes #8866.
2018-05-27 18:31:51 +03:00
sledgehammer999
3fa59b1b12 Don't migrate torrents that have newer fastresumes 2018-05-27 18:31:51 +03:00
sledgehammer999
20e7aff393 Delete non-commited fastresume files
Old v3.3.x format had a number at the end indicating the queue position.
The naming scheme was '<infohash>.fastresume.<queueposition>'.
However, QSaveFile, which uses QTemporaryFile internally, might leave
non-commited files behind eg after a crash. These files have the
naming scheme '<infohash>.fastresume.XXXXXX' where each X is a random
character. We try to detect the latter and remove it without "migrating"
the fastresume to the new saving system.
2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
4b7ce87f57 Fix params handling for some legacy API methods
Closes #8880.
2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
2075533468 Improve legacy API params handling 2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
a4ad5c8d11 Fix invalid API calls in WebUI
Closes #8899.
2018-05-27 18:31:51 +03:00
sledgehammer999
35f2f56757 Fix deletion of old logs 2018-05-27 18:31:51 +03:00
Marcel Petersen
e6f4aa6a2f Filter torrent info endpoint by hashes
Added hashes parameter to info action.
Allows filtering seralized torrents by passing it into the TorrentFilter.
2018-05-27 18:31:51 +03:00
sledgehammer999
92fc62bb0d Show rechecking progress
When having big torrents, the rechecking might take a while to
complete. Users need some sort of feedback that progress is being made.
Also, I changed the float to qreal since that's the return type.
2018-05-27 18:31:51 +03:00
sledgehammer999
44b57a59f5 Log successful torrent move 2018-05-27 18:31:51 +03:00
sledgehammer999
97b8e02bf5 Add 'Moving' state for torrents being relocated/moved
This is another indication to the user that something is happening
behind the scenes.
Uses the same icon/color as "Checking" status.
Torrents in the `Moving` state are considered as "Active". This should
prevent accidental program exit from the user and inhibit system sleep.
2018-05-27 18:31:51 +03:00
Chocobo1
5df42420cb Retry saving settings when operation failed 2018-05-27 18:31:51 +03:00
Chocobo1
0ede11a1b7 Make settings file recovery more robust
We should not blindly remove the leftover settings file, as the following write()
operation could fail and the user would lost all settings.
We should try renaming it instead.
2018-05-27 18:31:51 +03:00
Chocobo1
7d9c282db9 Refactor SettingsStorage class
Make use of (i.e. returning) QFile::rename operation status
Make log message more verbose
Add const
Remove empty lines
Inline typedef
2018-05-27 18:31:51 +03:00
Chocobo1
bc0e0813a4 Enable more compiler warnings on linux 2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
f3aebb3001 Fix compilation with MinGW 2018-05-27 18:31:51 +03:00
thalieht
800f966df9 Use qt5 syntax for a few remaining SLOT() 2018-05-27 18:31:51 +03:00
thalieht
e33df4dd8c Clarify guidelines and fix some typos 2018-05-27 18:31:51 +03:00
thalieht
96d9d810fd Fix coding style 2018-05-27 18:31:51 +03:00
thalieht
8707a1bc86 Move some connect() from propertieswidget to their corresponding widget 2018-05-27 18:31:51 +03:00
thalieht
0c988a5fd4 Use qt5 connect() syntax 2018-05-27 18:31:51 +03:00
Chocobo1
b396ca771d Fix displayed tracker messages
Before this change, we were displaying debug messages constructed by
libtorrent, now we show messages returned by trackers.

Closes #8739.
2018-05-27 18:31:51 +03:00
Chocobo1
a37dfcf961 Refactor functions
Add const to variables
Remove debug messages
2018-05-27 18:31:51 +03:00
Chocobo1
31989740cd Comment out Werror flag in cmake script
Werror flag should be only enabled on developer's machine, not for
users using the product.
Also fix formatting.
2018-05-27 18:31:51 +03:00
Chocobo1
501191289b Print warning about cmake support status 2018-05-27 18:31:51 +03:00
Chocobo1
8971e92d78 Remove debug messages 2018-05-27 18:31:51 +03:00
Chocobo1
0c96e79d0d Refactor code
Remove forward declarations of Qt types.
Fix header include order.
2018-05-27 18:31:51 +03:00
Nick Korotysh
0704c0f5e6 Add missing "override" 2018-05-27 18:31:51 +03:00
thalieht
9cb190ebe7 Replace the zeroing of pointers with nullptr 2018-05-27 18:31:51 +03:00
Vladimir Golovnev (Glassez)
667f84995c Fix wrong API method names
Closes #8828.
2018-05-27 18:31:51 +03:00
Chocobo1
7a93fae6e4 Fix compile warnings on gcc 8
The warning was:
warning: catching polymorphic type ‘class std::exception’ by value
[-Wcatch-value=]
2018-05-27 18:31:51 +03:00
Chocobo1
0d6deca15c Revert commit
Apparently the translations were working in previous state, but affected by
lupdate issue:
https://github.com/qbittorrent/qBittorrent/issues/8220#issuecomment-385712673

The reverts commit fb698896c9.
Closes #8831.
2018-05-27 18:31:51 +03:00
Chocobo1
f54d7d46f2 Really fix translation in fspathedit
QT_TRANSLATE_NOOP3 is a macro, so we cannot use a runtime string for the context
argument.
Fix up 1d778676cd.
2018-05-27 18:31:51 +03:00
Chocobo1
8cf00ba5e1 Fix translation strings not found
The translation context doesn't exist, so the translations were not found, fixed
now.
Closes #8829.
2018-05-27 18:31:51 +03:00
Chocobo1
ecc9c6bbd9 Work around false-positive warning from lupdate
In short, lupdate will get confused when seeing `template <class T>`,
see: QTBUG-55478
2018-05-27 18:31:51 +03:00
Chocobo1
e11199f988 Fix usage of Q_DECLARE_TR_FUNCTIONS()
The context parameter shouldn't be enclosed in double quotes.
2018-05-27 18:31:51 +03:00
sledgehammer999
e9ed621178 Bump to 4.1.0 2018-05-05 00:55:42 +03:00
sledgehammer999
400743fc64 Update Changelog 2018-05-05 00:51:24 +03:00
sledgehammer999
ea8c57be23 Sync translations from Transifex and run lupdate 2018-05-05 00:39:47 +03:00
sledgehammer999
591cde53cf Merge pull request #8825 from sledgehammer999/fix_tabs
Add RSS/Log widgets to the QTabWidget on macOS
2018-05-04 23:59:07 +03:00
sledgehammer999
90bb67c654 Add RSS/Log widgets to the QTabWidget on macOS
Fixes commit a468c84b30
2018-05-04 19:56:42 +03:00
sledgehammer999
8f7fda492c Sync translations from Transifex and run lupdate
Closes #8220 #8169
2018-05-01 18:50:24 +03:00
sledgehammer999
f92d85c536 Merge pull request #8813 from Chocobo1/tr
Fix untranslated string
2018-05-01 17:59:49 +03:00
sledgehammer999
55c98d8706 Merge pull request #8811 from sledgehammer999/fix_RC_1_0
Fix compilation against libtorrent 1.0.x
2018-05-01 15:04:25 +03:00
sledgehammer999
6e94b03c13 Fix compilation against libtorrent 1.0.x
Closes #8798
2018-05-01 10:39:53 +03:00
Mike Tzou
e3a82d4614 Merge pull request #8347 from FranciscoPombal/new_contributing_guidelines
New CONTRIBUTING.md, based on the old one, Atom's and uBlock Origin's
2018-05-01 12:00:13 +08:00
Chocobo1
c61f641613 Fix untranslated string
Closes #8809.
2018-05-01 11:49:10 +08:00
sledgehammer999
b64a51337e Update Changelog 2018-04-28 10:33:32 +03:00
sledgehammer999
19dcf7851b Sync changelog entries from v4_0_x branch 2018-04-28 10:31:58 +03:00
sledgehammer999
fb346e15e8 Sync translations from Transifex and run lupdate 2018-04-27 02:04:37 +03:00
Mike Tzou
827d8c0dad Merge pull request #8748 from Chocobo1/header
Clarify header inclusion order
2018-04-26 23:41:58 +08:00
Mike Tzou
beef041e71 Merge pull request #8773 from Chocobo1/log
Fix path separator in log messages
2018-04-25 12:58:32 +08:00
Chocobo1
8b575484e6 Fix path separator in log messages 2018-04-24 01:02:54 +08:00
FranciscoPombal
d4b77a6541 Revise CONTRIBUTING.md
New version is based on old one, Atom's and uBlock Origin's.
2018-04-24 00:56:46 +08:00
sledgehammer999
4ba6334506 Update libtorrent bottle for Travis macOS 2018-04-22 22:42:23 +03:00
sledgehammer999
b78899cb9a Merge pull request #8724 from Chocobo1/rand
Use RNG provided by OS
2018-04-22 22:33:16 +03:00
Mike Tzou
0dec7b9f4f Merge pull request #8742 from tostercx/master
Add "Preserve file order" option to torrent creator. Closes #5652
2018-04-22 23:33:25 +08:00
Chocobo1
81a4f3ced0 Use RNG provided by OS
The general consensus is to use random facility provided by OS instead
of using other software random generators.
2018-04-20 23:34:46 +08:00
Vladimir Golovnev
b155b8609f Merge pull request #8767 from glassez/fix-legacy-api
Fix pauseAll/resumeAll legacy API methods. Closes #8766
2018-04-20 15:39:57 +03:00
Chocobo1
970ad7cf28 Sort filenames when creating torrent
First all dir paths are retrieved, then filenames in each path
are retrieved and sorted, then concatenate the sorted filenames together.
2018-04-20 14:35:48 +03:00
toster
c4625f50a8 Pass isAlignmentOptimized flag to piece size calculation 2018-04-20 14:31:20 +03:00
Vladimir Golovnev (Glassez)
001bd38557 Fix pauseAll/resumeAll legacy API methods
Closes #8766.
2018-04-20 14:30:25 +03:00
Mike Tzou
7aae915a68 Merge pull request #8754 from Chocobo1/fix
Fix memory leak
2018-04-19 11:42:01 +08:00
Chocobo1
5f1ac96f66 Clarify header inclusion order 2018-04-18 13:56:40 +08:00
Chocobo1
68c2d81072 Fix memory leak 2018-04-17 20:34:01 +08:00
Chocobo1
4dea03fc74 Remove unused constants 2018-04-17 20:29:43 +08:00
Mike Tzou
a70942ed53 Merge pull request #8598 from Piccirello/limit-share-ratio
WebUI Add Limit Share Ratio context menu option
2018-04-15 00:39:27 +08:00
Mike Tzou
7e8c72f424 Merge pull request #8732 from Chocobo1/rename
Fix renaming completed files
2018-04-15 00:39:00 +08:00
toster
e538eae726 Make alignment optimization optional
Disabling alignment optimization allows preserving file order in torrent
files and closes #5652
2018-04-14 06:46:41 +03:00
Chocobo1
898239a42e Fix renaming completed files
Check whether the file is already downloaded before appending QB_EXT to
filename.

Closes #8039.
2018-04-12 14:13:59 +08:00
Mike Tzou
1055cc0f45 Merge pull request #8691 from Chocobo1/js
Partially revert "Remove unused JavaScript library"
2018-04-12 00:07:37 +08:00
Thomas Piccirello
9f36b54b04 WebUI Add Limit Share Ratio context menu option
Closes #6815, #7602.
2018-04-11 23:45:54 +08:00
Thomas Piccirello
1f42ab8c4f Remove unused/superfluous variables 2018-04-11 23:45:54 +08:00
Thomas Piccirello
3f0fbc0810 WebUI rename property to match its definition 2018-04-11 23:45:54 +08:00
sledgehammer999
7e4b62c68d Merge pull request #8701 from Kolcha/musl-support
Allow to disable Stacktrace support
2018-04-11 17:10:01 +03:00
sledgehammer999
784b154228 Merge pull request #8721 from sledgehammer999/fix_string_arg
Fix wrong QString::arg() usage that leads to crash
2018-04-11 17:04:32 +03:00
sledgehammer999
ddba79ef3d Fix wrong QString::arg() usage that leads to crash
We need to be careful when using the multi-arg version of
QString::arg() and passing as 2nd, 3rd etc parameter an int.
It doesn't do the same as passing multiple QStrings.
2018-04-11 17:01:43 +03:00
Nick Korotysh
7712d0ada0 Allow to disable Stacktrace support
Enable backtrace stuff only if GNU C library used, because current
backtrace implementation based  on  <execinfo.h> , which is not a
part of standard C library, it is a GNU extension.

This will be usefull when building  with  custom POSIX-compilant C
library (like musl) and no <execinfo.h> available.

Note: configure script will detect presence of  <execinfo.h>  and
enable/disable feature depending on it.

Feature is enabled by default.
2018-04-10 20:51:11 +03:00
Mike Tzou
38837db8de Merge pull request #8699 from Chocobo1/linking
Add helper for loading Windows system functions
2018-04-11 00:13:55 +08:00
sledgehammer999
d997d887e5 Merge pull request #8650 from luis-pereira/fix-invalid-iterator-crash
Fix crashes due to invalid iterator use
2018-04-10 16:18:44 +03:00
sledgehammer999
341a971cd3 Merge pull request #8711 from sledgehammer999/recheck_paused
Avoid data corruption when rechecking paused torrents
2018-04-10 16:18:12 +03:00
Mike Tzou
fa380c8b2c Merge pull request #8622 from Chocobo1/formatter
Unify coding style for WebUI files
2018-04-10 14:51:32 +08:00
Luís Pereira
758c70283f Fix crashes due to invalid iterator use
Although the iterators are constant we are indirectly changing them.
Introduced by commit ac42ccb5e4.
Closes #8633
2018-04-09 23:40:08 +03:00
sledgehammer999
747c70a58e Avoid data corruption when rechecking paused torrents
Libtorrent can recheck only unpaused torrents. We get around this by
unpausing the torrent, issuing the recheck and pausing again after we
get alerted by libtorrent that the recheck has finished. This alert is
asyncronous. There is a small time frame where the program might start
downloading and writing data to the file before we pause it. This can
lead to data corruption if the file on disk is totally different that
the one expected by the torrent AND the file on disk is a valid file on
its own. OR in case the user points the new torrent to the wrong
directory by mistake.
To get around this the torrent is placed in upload_mode and out of
automanagement.
2018-04-09 23:25:52 +03:00
sledgehammer999
6ca2e42bca Merge pull request #8715 from glassez/max-ratio
Fix setting preferences via WebAPI. Closes #7335
2018-04-09 23:08:12 +03:00
Vladimir Golovnev (Glassez)
cb505a07fe Fix setting preferences via WebAPI
Closes #7335.
2018-04-09 18:54:43 +03:00
Chocobo1
5819b6dd39 Use Unicode version of InitiateSystemShutdown 2018-04-09 21:18:07 +08:00
Chocobo1
644e7d0450 Use dynamic linking for SetSuspendState function 2018-04-09 21:18:07 +08:00
Chocobo1
b0e3d77975 Add helper for loading Windows system functions 2018-04-09 21:18:04 +08:00
Chocobo1
643a209812 Sort include headers
Also add anonymous namespace.
2018-04-09 21:16:00 +08:00
Mike Tzou
c3311e83a0 Merge pull request #8687 from Chocobo1/folder
Stop creating Download folder on start
2018-04-09 13:20:48 +08:00
Mike Tzou
3301e9cb69 Merge pull request #8690 from Chocobo1/options
Avoid showing an empty row in AdvancedSettings
2018-04-08 13:14:21 +08:00
Chocobo1
cf2c0bd47e Apply formatting to Web UI files 2018-04-07 21:45:56 +08:00
Mike Tzou
df0c5c41c5 Merge pull request #8681 from dzmat/uncrutify_tinkering
Make uncrustify.cfg available to QtCreator IDE
2018-04-05 21:43:32 +08:00
Chocobo1
59e6757242 Avoid showing an empty row in AdvancedSettings
Fixup 543cbc6d1c.
2018-04-05 21:34:07 +08:00
Chocobo1
6bbcf9b3d6 Stop creating Download folder on start
The existence of this folder isn't required to run qbt and it can be
created when adding torrent.
Closes #8290.
2018-04-05 14:12:47 +08:00
Chocobo1
208d21ff73 Add js-beautify config
Try to standardize coding style for HTML & JavaScript via this tool
2018-04-05 12:19:54 +08:00
Chocobo1
2df71dbde5 Partially revert "Remove unused JavaScript library"
This reverts commit 470e993c2d.
2018-04-05 03:22:34 +08:00
Mike Tzou
9e4f246c89 Merge pull request #8672 from Chocobo1/js
Move JavaScript libraries to its own folder
2018-04-04 19:23:10 +08:00
Mike Tzou
e4fc8e4156 Merge pull request #8669 from Chocobo1/runext
Split args manually in runExternalProgram()
2018-04-03 22:19:29 +08:00
dzmat
883d4d81d5 Make uncrustify.cfg available to Qt Creator IDE 2018-04-03 18:35:28 +07:00
Mike Tzou
041b86981f Merge pull request #8665 from Chocobo1/iostream
Use lightweight printf instead of iostream
2018-04-02 20:17:12 +08:00
Chocobo1
470e993c2d Remove unused JavaScript library 2018-04-02 01:34:49 +08:00
Chocobo1
cbf10ebb7f Update clipboard.js to v2.0.0 2018-04-02 01:34:49 +08:00
Chocobo1
89f06274bb Move JavaScript libraries to its own folder 2018-04-02 01:34:43 +08:00
Chocobo1
c07cd440cd Split args manually in runExternalProgram()
Need to split arguments manually because QProcess::startDetached(QString)
will strip off empty parameters.
E.g. `python.exe "1" "" "3"` will become `python.exe "1" "3"`.
Closes #8454.
2018-04-01 18:42:42 +08:00
Mike Tzou
e90be67fec Merge pull request #8640 from Chocobo1/guide2
Clarify braces usages in CODING_GUIDELINES
2018-04-01 18:16:04 +08:00
Chocobo1
37ea01bd44 Use lightweight printf instead of iostream
Using iostream usually adds a lot of other operators (<<, endl), whereas
*printf takes only 1 function call.

Also use qUtf8Printable whenever possible.
2018-03-31 03:21:53 +08:00
Mike Tzou
ccc91e2e52 Merge pull request #8629 from Chocobo1/guide
Extend Coding Guidelines to cover other languages
2018-03-30 14:31:55 +08:00
Chocobo1
d31954761f Clarify braces usages in CODING_GUIDELINES
Merge "Curly braces" & "If blocks" sections into "New lines & curly braces" section.

Add note about the list is not exhaustive and style can be determine on code review.
2018-03-29 02:50:48 +08:00
Mike Tzou
aa122b062e Merge pull request #8615 from Chocobo1/watcher
Improve FS watcher
2018-03-27 14:34:08 +08:00
Chocobo1
65921eaf7b Remove QPointer wrapper 2018-03-25 15:53:31 +08:00
Chocobo1
bfbd978d3f Move helper function to Utils::Fs 2018-03-25 13:26:03 +08:00
Chocobo1
1876dbd523 Fix typo 2018-03-25 13:26:02 +08:00
Chocobo1
ea7eb7c0ec Add delay before processing FS changes
This prevents file renaming errors in monitored folder on linux, for
example: ABC.torrent.part -> ABC.torrent
2018-03-25 13:26:02 +08:00
Chocobo1
19c733ce95 Use specific name for rejected files 2018-03-25 13:26:02 +08:00
Chocobo1
2ba5dd1344 Reduce debug messages 2018-03-25 13:26:02 +08:00
Chocobo1
61eddfce90 Refactor functions in FileSystemWatcher
Use c++11 range-loop
Add const
Better ifdef placement
Inline functions
2018-03-25 13:26:02 +08:00
Chocobo1
0840556f77 Do cleanups in FileSystemWatcher
Use Qt5 connect syntax
Sort headers
Add license
Add anonymous namespace
Replace macro defines with const variables
2018-03-25 13:25:28 +08:00
Mike Tzou
f564e8a1c4 Merge pull request #8621 from Chocobo1/html5
Update WebUI to be more compliant with HTML5 standard
2018-03-24 22:41:31 +08:00
Chocobo1
315d9835b2 Extend Coding Guidelines to cover other languages 2018-03-23 15:21:50 +08:00
Chocobo1
ed03456999 Update WebUI to be more compliant with HTML5 standard
Use modern and shorter "charset" attribute.
Remove "type", "charset" attributes in script/style tags, these are redundant in HTML5.
2018-03-23 00:04:43 +08:00
Mike Tzou
e1a14007f8 Merge pull request #8618 from Piccirello/remove-css
Remove unused CSS from WebUI login page
2018-03-23 00:02:12 +08:00
Thomas Piccirello
a15cfae03a Fix spacing 2018-03-21 00:04:21 -04:00
Thomas Piccirello
c2a195360a Resolve JavaScript errors 2018-03-21 00:04:21 -04:00
Thomas Piccirello
a4f99995bb Consolidate CSS into style.css 2018-03-21 00:04:18 -04:00
Thomas Piccirello
16616f4e0e Remove unused CSS from WebUI login page 2018-03-20 15:25:04 -04:00
Vladimir Golovnev
a5294e1e08 Merge pull request #8558 from luis-pereira/containter-anti-pattern
Don't create temporary containers just to iterate over them
2018-03-19 13:06:01 +03:00
Vladimir Golovnev
a8dbff06a3 Merge pull request #8607 from glassez/rss
Process loaded RSS articles in case of parsing error
2018-03-19 09:35:30 +03:00
Vladimir Golovnev (Glassez)
d9cd5d4680 Resolve (X)HTML entities in RSS content
Many sites include various HTML entities in the content of RSS feeds.
The most of these entities are not declared in the underlying XML,
so the documents are considered by parser to be malformed.
This patch allows you to successfully parse such soft-malformed
RSS feeds.
Closes #8527.
Closes #8569.
2018-03-18 18:59:55 +03:00
Luís Pereira
ac42ccb5e4 Don't create temporary containers just to iterate over them
Stops temporary containers being created needlessly due to API misuse.
For example, it’s common for developers to assume QHash::values() and
QHash::keys() are free and abuse them, failing to realize their
implementation internally actually iterates the whole container, allocates
memory, and fills a new QList.

Added a removeIf generic algorithm, similar to std ones. We can't use std
algorithms with Qt dictionaries because Qt iterators have different
behavior from the std ones.

Found using clazy.
2018-03-18 16:22:12 +03:00
Mike Tzou
68ca95faf0 Merge pull request #8603 from Chocobo1/typo
Fix typo
2018-03-17 00:49:41 +08:00
Vladimir Golovnev (Glassez)
8d285c66aa Process loaded RSS articles in case of error
For some reason, the RSS feed may contain malformed XML data and it may not be
successfully parsed by the XML parser. We are still trying to load as many articles
as possible until we encounter corrupted data. So we can have some articles even in
case of parsing error.
Closes #8527.
Closes #8569.
2018-03-16 18:29:38 +03:00
Mike Tzou
1f28122428 Merge pull request #8595 from Chocobo1/runExt
Add Tags parameter to "Run External Program"
2018-03-16 19:37:34 +08:00
Mike Tzou
6ec179e0f7 Merge pull request #8594 from Chocobo1/ui
Properly align text label
2018-03-15 13:41:23 +08:00
Chocobo1
423511765a Fix typo 2018-03-14 23:37:08 +08:00
Vladimir Golovnev
c061d67b14 Merge pull request #8597 from Piccirello/fix
Use correct API method URL in WebUI
2018-03-14 15:19:00 +03:00
Thomas Piccirello
4863078744 Use correct API method URL in WebUI
Fix up 27d8dbf.
Closes #8596.
2018-03-14 03:08:46 -04:00
Chocobo1
88881de8c6 Add Tags parameter to "Run External Program"
Closes #8586.
Also sort headers.
2018-03-14 10:12:32 +08:00
Chocobo1
690c439ae6 Properly align text label 2018-03-14 00:35:20 +08:00
Mike Tzou
e78b5202bc Merge pull request #8585 from Chocobo1/lint
Fix compiler/clazy warnings
2018-03-13 22:36:10 +08:00
Vladimir Golovnev
c9be1d0a19 Merge pull request #8494 from paolo-sz/master
Fix for "Content" panel messed up
2018-03-13 16:54:05 +03:00
Vladimir Golovnev
3348eef423 Merge pull request #8488 from thalieht/fix
Move suffix-labels inside the corresponding spinboxes
2018-03-12 16:58:05 +03:00
Vladimir Golovnev
931af6c97e Merge pull request #8313 from Piccirello/search-categories
Calculate search categories based on selected plugin
2018-03-12 14:29:51 +03:00
Vladimir Golovnev
cea2948593 Merge pull request #8556 from Piccirello/compiler-warnings
Fix missing initializer warning during build
2018-03-12 14:28:38 +03:00
Chocobo1
a468c84b30 Fix warnings from unused variables 2018-03-12 14:36:28 +08:00
Thomas Piccirello
7278625f53 Calculate supported categories based on selected plugin 2018-03-12 01:33:45 -04:00
Thomas Piccirello
7b3e692f68 Fix missing initializer warning
This issue occurs when using gcc versions < 5.
2018-03-12 01:21:21 -04:00
Chocobo1
fdb0d97b28 Remove unused function 2018-03-11 23:27:04 +08:00
Chocobo1
08a2439f46 Check directly if container is empty or not 2018-03-11 23:12:16 +08:00
Chocobo1
6767487e40 Remove unused variable 2018-03-11 22:31:17 +08:00
Chocobo1
141a2d2856 Prevent detach from containers 2018-03-11 22:25:07 +08:00
thalieht
2eea57e609 Use spinbox suffix to display time unit 2018-03-11 12:08:00 +02:00
thalieht
0b185e347b Use spinbox suffix to display rate unit 2018-03-11 12:07:38 +02:00
thalieht
1e1db31ab5 Use unique layout names 2018-03-11 12:07:24 +02:00
Mike Tzou
7233274110 Merge pull request #8562 from Chocobo1/lint
Fix warnings from clazy
2018-03-11 12:41:58 +08:00
paolo-sz
d4e2b21534 Fix Content widget misbehavior
Starting from QT 5.10.1 Content widget is messed up and its settings are
lost while restarting.
Setting StretchLastSection property to false seems to solve the issue.
(Closes #8439).
2018-03-10 18:56:18 +01:00
Vladimir Golovnev
4f206f987a Merge pull request #8561 from glassez/tracker
Properly reply to announce request
2018-03-10 17:08:29 +03:00
Vladimir Golovnev (Glassez)
dfddda57b9 Properly reply to announce request 2018-03-09 17:41:06 +03:00
Mike Tzou
0cacd71503 Merge pull request #8403 from Piccirello/webui-download-height
Make WebUI iframe windows scrollable on iOS. Closes #8401, #7932.
2018-03-09 19:46:29 +08:00
Chocobo1
fdf3ebbb6c Remove usage of deprecated functions
Also use proper type for storing date/time data
2018-03-09 19:20:58 +08:00
Chocobo1
a3d9e457a0 Add context parameter in connect() 2018-03-09 13:44:17 +08:00
Chocobo1
ffb5c0635e Remove unused slot declaration for function 2018-03-09 01:50:23 +08:00
Chocobo1
b4f23d8154 Use faster code path
From Qt doc: Using this function is faster than using QFileInfo(file).exists() for
file system access.
2018-03-09 01:34:35 +08:00
Chocobo1
ed310c2dac Avoid temporary QString allocations
Fix up 0457fd260e
2018-03-09 01:34:35 +08:00
Chocobo1
50167d40d7 Allow ADL lookup for helper function 2018-03-09 01:34:19 +08:00
Mike Tzou
5261d4375f Merge pull request #8551 from Chocobo1/override
Fix warnings from linters
2018-03-09 00:36:52 +08:00
Thomas Piccirello
0b56cd5fa0 Make WebUI iframe windows scrollable on iOS
Closes #8401, #7932.
2018-03-08 01:30:13 -05:00
Vladimir Golovnev
e22946ef61 Merge pull request #8525 from glassez/url-query
Parse URL query string at application level
2018-03-07 17:16:21 +03:00
Chocobo1
0457fd260e Avoid temporary QString allocations
This fixes clazy warning: Use multi-arg instead [-Wclazy-qstring-arg]
2018-03-07 20:06:00 +08:00
Chocobo1
c60b7b213e Add missing 'override' specifier
This fixes clang warning:
'notify' overrides a member function but is not marked 'override'
[-Winconsistent-missing-override]
2018-03-07 20:05:52 +08:00
Mike Tzou
c759c4301e Merge pull request #8547 from Chocobo1/fix
Fix broken WebUI
2018-03-07 00:48:16 +08:00
Chocobo1
307736e263 Fix broken WebUI
Fix up c47e4efade.
Closes #8545.
2018-03-06 14:03:01 +08:00
Mike Tzou
7aa5bc4bc1 Merge pull request #8484 from Piccirello/improve-webui-stats
Improve WebUI stats dialog (addendum to #8349)
2018-03-06 00:49:49 +08:00
Thomas Piccirello
c47e4efade Save WebUI Statistics window size 2018-03-05 01:40:21 -05:00
Mike Tzou
b0781e820c Merge pull request #8531 from Chocobo1/https
Improve URL scheme handling
2018-03-05 01:28:27 +08:00
Vladimir Golovnev (Glassez)
1aca3b0adc Parse URL query string at application level 2018-03-04 17:08:48 +03:00
Chocobo1
20c4b0ee0c Use original scheme when downloading favicons
Previously was always using http, now we only drop back to http when
scheme is absent
2018-03-03 12:53:27 +08:00
Chocobo1
3df4a7ac2e Use https for documentation links 2018-03-03 12:43:59 +08:00
Vladimir Golovnev
efdeb81af1 Merge pull request #8374 from glassez/coding-style
Add Coding Style rules for commit messages
2018-03-02 18:05:25 +03:00
Vladimir Golovnev (Glassez)
34295a78f2 Move ByteArray utils into Utils::ByteArray namespace 2018-03-02 17:23:21 +03:00
Mike Tzou
57163612ff Merge pull request #8427 from Chocobo1/server2
Rewrite RequestParser
2018-03-02 16:07:12 +08:00
Tom Piccirello
1a9b009951 Enable Statistics window to be scrolled and resized
Text may go offscreen due to translations.
2018-03-02 02:18:42 -05:00
Vladimir Golovnev
9406b4b226 Merge pull request #8515 from glassez/webapi
Fix Legacy Web API to be fully available
2018-03-01 09:44:06 +03:00
Mike Tzou
38dc6ab8cf Merge pull request #8441 from Chocobo1/runExt
Revert back to QLineEdit for "Run external program". Closes #7800.
2018-03-01 13:23:42 +08:00
Mike Tzou
55c3db339b Merge pull request #8455 from Chocobo1/large_torrent
Fix loading very large torrents. Closes #8449
2018-03-01 13:22:43 +08:00
Vladimir Golovnev (Glassez)
34456a7459 Fix Legacy Web API to be fully available 2018-02-28 18:25:48 +03:00
Vladimir Golovnev
02b029abbe Merge pull request #8508 from luis-pereira/clang-cmake-support
Make it build when using Clang under CMake
2018-02-28 10:52:00 +03:00
Vladimir Golovnev
b26eb3d146 Merge pull request #8373 from glassez/search
Improve Search handling
2018-02-28 10:46:33 +03:00
Vladimir Golovnev
7cb6100c9c Merge pull request #8471 from luis-pereira/use-qstring-ref
Don't create temporary substrings
2018-02-28 10:44:59 +03:00
Vladimir Golovnev (Glassez)
ef06485c45 Add Coding Style rules for commit messages 2018-02-27 20:27:58 +03:00
sledgehammer999
1c2d9c1fe4 Merge pull request #8510 from adem4ik/patch-2
Fix typo in filelogger.cpp message
2018-02-27 17:38:52 +02:00
Mike Tzou
6f7f7d87c6 Merge pull request #8218 from Piccirello/webui-selection-bug
Reselect webui torrents after full_update. Temporary fix for #8209.
2018-02-27 13:33:39 +08:00
Andrei Stepanov
817aadd52d Fix typo in filelogger.cpp message 2018-02-27 02:00:43 +04:00
Luís Pereira
058bad0af3 Make it build when using Clang under CMake
The pair Clang/qmake builds.
CMake compiler settings are more strict and it causes clang build to fail.
2018-02-26 19:53:39 +00:00
Luís Pereira
0e421ae415 Don't create temporary substrings
Avoid temporary string allocations. They are only used to convert to
something else.
QString::xxxRef() returns a QStringRef. QStringRef avoids the memory
allocation and reference counting overhead of a standard QString by simply
referencing a part of the original string.
2018-02-26 11:39:36 +00:00
Thomas Piccirello
2227c3afc1 Reselect torrents in WebUI after full update
Temp fix for #8209.
2018-02-25 01:09:06 -05:00
Mike Tzou
050af8a793 Merge pull request #7894 from Piccirello/auto-management
Disable options when Force Proxy is enabled
2018-02-25 01:44:58 +08:00
Vladimir Golovnev
6207855f3b Merge pull request #8372 from thalieht/inactiverate
Expose the libtorrent fields for "dont_count_slow_torrents" to GUI.
Closes #5713.
2018-02-24 14:13:39 +03:00
Vladimir Golovnev
a65a70ab48 Merge pull request #8479 from thalieht/ratioLimitsCrash
Fix possible crash when using both share limits
2018-02-24 14:11:09 +03:00
Thomas Piccirello
4110bb874f Right align stat values 2018-02-23 14:54:31 -05:00
Thomas Piccirello
5c74f374af Re-order and rename stats 2018-02-23 14:54:24 -05:00
Thomas Piccirello
a8420a43f9 Format Read cache hits as percentage 2018-02-23 14:46:47 -05:00
Vladimir Golovnev (Glassez)
279bce2014 Make SearchManager singleton 2018-02-23 20:26:32 +03:00
Vladimir Golovnev (Glassez)
f3d370870d Improve Search handling
Legacy SearchEngine class really has three roles:
  1. Manage search plugins,
  2. Handle the search job, and
  3. Handle the download of the torrent file using the search plugin.
Now it is splitted into 3 classes: SearchManager, SearchHandler and
SearchDownloadHandler.
Search GUI is also improved.
2018-02-23 20:15:25 +03:00
thalieht
0e30659c26 Fix possible crash when using both share limits
Avoid possible crash in "torrent->name()" when processing seeding time of the torrent that already reached the ratio limit.
2018-02-23 17:13:56 +02:00
Chocobo1
f34dfca5e6 Enable Http/1.1 persistence connection
This enables reusing existing TCP connection instead of opening a new connection
for every request
2018-02-23 14:46:22 +08:00
Chocobo1
cec68c3fd7 Rewrite RequestParser
* Add more checks and also more strict checks for invalid conditions
* Add http version field
* Raise max request size to 64 MB
* Add author in license
* Use Qt5 new connect syntax
2018-02-23 14:46:17 +08:00
Vladimir Golovnev
5c2f698cb4 Merge pull request #8325 from luis-pereira/prevent-c++11-range-loop-detach
Prevent possible c++11 range-loop container detach
2018-02-22 16:28:04 +03:00
Chocobo1
f5fc2d52b8 Fix loading very large torrents. Closes #8449.
`torrent_info` constructor has default limits that can't be changed via
parameters, so we handle the loading process manually and explicitly
specifiy the limits to `bdecode()`.
The token_limit is also changed to 10000000.
2018-02-22 18:52:10 +08:00
Mike Tzou
edef85fa3e Merge pull request #8456 from vit9696/patch-1
Fix compilation with Qt 5.11 on macOS
2018-02-21 23:00:55 +08:00
Mike Tzou
6244ad5fa8 Merge pull request #8458 from luis-pereira/qgetenv
Use qEnvironmentVariableIsEmpty
2018-02-21 23:00:30 +08:00
Chocobo1
aba23f67a0 Revert back to QLineEdit for "Run external program". Closes #7800
1. Using FileSystemPathEdit is not entirely correct, as it only always
shows false warnings when parameters are present.
2. FileSystemPathEdit::selectedPath() modifies the path to unix format,
in this specific case, we need to faithfully execute what user inputted.
3. Given the above it is reasonable to revert back to QLineEdit, as it
is just sufficient in functionality and doesn't modifiy the inputs.
2018-02-21 10:16:32 +08:00
Luís Pereira
1a913c502b Prevent possible c++11 range-loop container detach
Explicit or implicit calls to begin() and end() cause a non-const
container to detach from shared data, ie. to perform a deep-copy to gain
a unique copy of the data.
That can be a expensive although unneeded operation.

In order to assist the developer a copyAsConst function is added.
copyAsConst returns a const copy of the object.

For lvalues just use qAsConst. It's only available on Qt 5.7.0. But we
added also for earlier versions. The developer can always use qAsConst.

Intended uses:

    QString s = ...;
    for (const auto &ch : qAsConst(s))
          process(ch);

    for (const auto &ch : copyAsConst(funcReturningQString()))
        process(ch);
2018-02-20 19:28:51 +00:00
Vladimir Golovnev
078982ada6 Merge pull request #8424 from glassez/fix-rss
Disable Auto TMM when RSS rule has save path. Closes #8411
2018-02-20 11:13:15 +03:00
Vladimir Golovnev
3035184d25 Merge pull request #8445 from glassez/fix-webapi
Fix POST params handling. Closes #8443
2018-02-20 11:11:33 +03:00
Thomas Piccirello
fccdc7ebdc Remove extra space 2018-02-20 02:22:40 -05:00
Thomas Piccirello
e0c74c2d39 Remove conditionals 2018-02-20 02:22:40 -05:00
Thomas Piccirello
288f372914 Rename onClick property to onclick 2018-02-20 02:16:16 -05:00
Thomas Piccirello
ba331436fa Add More Information link 2018-02-20 02:16:16 -05:00
Thomas Piccirello
afd4069eb4 Disable options when force proxy is enabled 2018-02-20 02:16:15 -05:00
Vladimir Golovnev
387f9b1230 Merge pull request #8438 from Piccirello/webui-proxy-only
Add "Use proxy only for torrents" option to webui
2018-02-20 09:06:30 +03:00
Luís Pereira
2114817890 Use qEnvironmentVariableIsEmpty
Instead of qgetenv("QT_AUTO_SCREEN_SCALE_FACTOR").isEmpty().
It's faster (don't allocate memory) and don't throw exceptions.
2018-02-19 21:35:23 +00:00
vit9696
dac2ab5409 Fix compilation with Qt 5.11 on macOS 2018-02-19 22:39:25 +03:00
Mike Tzou
b87ca60c5a Merge pull request #8134 from Piccirello/webui-show-status-bar
Add option to show/hide webui status bar
2018-02-20 00:09:09 +08:00
Mike Tzou
6d44075662 Merge pull request #8228 from Piccirello/webui-save-window-size
WebUI Save user's resized windows
2018-02-20 00:02:32 +08:00
Thomas Piccirello
69af205094 Use .each(). Refactor conditionals. 2018-02-18 23:54:48 -05:00
Thomas Piccirello
8a2e3f5d93 Add option to show/hide webui status bar 2018-02-18 23:46:27 -05:00
Thomas Piccirello
3f79726ab9 Make download + upload windows resizable 2018-02-18 22:50:21 -05:00
Thomas Piccirello
d1c4b1599a WebUI Save user's resized window sizes 2018-02-18 22:50:21 -05:00
Vladimir Golovnev (Glassez)
a0842a1e68 Don't convert POST parameter names to lower-case 2018-02-18 19:57:48 +03:00
Vladimir Golovnev (Glassez)
29042e4841 Fix wrong WebAPI param name 2018-02-18 19:54:08 +03:00
Vladimir Golovnev
3e2cfb5136 Merge pull request #8409 from luis-pereira/master
Don't implicitly cast iterator to const_iterator
2018-02-18 18:21:50 +03:00
Thomas Piccirello
0d55599e02 Add "Use proxy only for torrents" option to webui 2018-02-17 21:25:42 -05:00
Luís Pereira
ea1b0b26b1 Don't implicitly cast iterator to const_iterator
It prevents detachments:
To illustrate:

QMap<QString, QString> map;
/* code compiles and works fine but find() returns the non-const
   QMap::iterator that detaches!
*/
QMap<QString, QString>::const_iterator it = map.find("girish");

but also some subtle bugs:

QHash<int, int> wrong;
if (wrong.find(1) == wrong.cend()) {
    qDebug() << "Not found";
} else {
    /* find() detached the container before cend() was called, so it
       prints "Found"
    */
    qDebug() << "Found";
}

QHash<int, int> right;
if (right.constFind(1) == right.cend()) {
    qDebug() << "Not found"; // This is correct now !
} else {
    qDebug() << "Found";
}

Enforced by QT_STRICT_ITERATORS definition.
2018-02-17 17:02:52 +00:00
Vladimir Golovnev (Glassez)
176b2eb18b Disable Auto TMM when RSS rule has save path
Closes #8411.
2018-02-16 14:02:01 +03:00
Vladimir Golovnev
98a1c111b9 Merge pull request #5287 from elFarto/master
Implement RSS Smart Filter
2018-02-16 13:43:38 +03:00
Mike Tzou
47048d8410 Merge pull request #8349 from Chocobo1/stats
Improve stats dialog
2018-02-16 15:31:01 +08:00
Mike Tzou
882fa7ecd4 Merge pull request #8336 from Chocobo1/coalesce
Add "Coalesce reads & writes" checkbox in advanced options
2018-02-16 15:30:17 +08:00
Vladimir Golovnev
d07ece53e6 Merge pull request #7610 from glassez/webapi2
Redesign Web API
2018-02-16 10:09:35 +03:00
Vladimir Golovnev
afd2f6ba14 Merge pull request #8344 from FranciscoPombal/master
Fixed typo in function name isSplashScreenDisabled()
2018-02-16 09:55:37 +03:00
Vladimir Golovnev
226b0d4194 Merge pull request #8398 from luis-pereira/no-qdeleteall-on-temporaries
Don't use qDeleteAll() on temporaries
2018-02-16 09:53:41 +03:00
Luís Pereira
44e4b5d238 Don't use qDeleteAll() on temporaries
qDeleteAll() is being used on an unnecessary temporary container created
by QHash::values().
Using qDeleteAll(mycontainer) instead.
2018-02-12 16:36:03 +00:00
sledgehammer999
c59d2575c8 Sync translations from Transifex and run lupdate. 2018-02-09 21:14:12 +02:00
thalieht
f50b4724a6 Expose the libtorrent fields for "dont_count_slow_torrents" to GUI:
inactive_down_rate
inactive_up_rate
auto_manage_startup
2018-02-08 14:14:39 +02:00
Stephen Dawkins
48cbccff1e Made smart episode filter regular expression configurable 2018-02-05 19:23:11 +00:00
Chocobo1
e31ec20ec4 Clarify some terms in stats dialog
Reorder list
2018-02-02 23:41:42 +08:00
Chocobo1
b9ec216aa5 Redefine CacheStatus.readRatio field.
Now it is defined as:
CacheStatus.readRatio = (blocks read from cache) / (blocks read from disk + blocks read from cache)
The 2 variables in denominator are counted separately and the formula before this change doesn't really make sense

Add percentage sign to "Read cache hits" stats
Also remove redundant header include
2018-02-02 23:41:42 +08:00
FranciscoPombal
2ac3004762 Fixed typo in function name isSplashScreenDisabled() 2018-01-31 12:05:41 +00:00
Chocobo1
543cbc6d1c Add "Coalesce reads & writes" checkbox in advanced options
The setting is defaulted to ON for Windows. Closes #8295.
2018-01-30 22:46:14 +08:00
Vladimir Golovnev (Glassez)
27d8dbf13b Redesign Web API
Normalize Web API method names.
Allow to use alternative Web UI.
Switch Web API version to standard form (i.e. "2.0").
Improve Web UI translation code.
Retranslate changed files.
Add Web API for RSS subsystem.
2018-01-28 19:16:24 +03:00
sledgehammer999
e487b31877 Merge pull request #8319 from sledgehammer999/saner_log_settings
Set default file log size to 65 KiB and delete backup logs older than…
2018-01-27 15:26:03 +02:00
Stephen Dawkins
2845a791d0 Initial implementation of Smart Filter feature 2018-01-27 09:14:36 +00:00
sledgehammer999
024df8c53f Set default file log size to 65 KiB and delete backup logs older than 1 month. 2018-01-27 01:17:50 +02:00
sledgehammer999
12d97475da Merge pull request #8321 from luis-pereira/remove-duplicate-set-app-name
Don't set application name twice
2018-01-25 21:41:46 +02:00
Luís Pereira
5154d431f6 Don't set application name twice
It's an artifact introduced by commit b3c73b7868.
2018-01-25 16:30:11 +00:00
Vladimir Golovnev (Glassez)
0fc1ad664f Implement Qt wrapper for std::runtime_error 2018-01-23 11:08:41 +03:00
Vladimir Golovnev (Glassez)
bb683bd393 Switch built-in Web UI html to HTML5 2018-01-23 11:08:37 +03:00
Vladimir Golovnev (Glassez)
69df8174b9 Allow to load TorrentInfo from data buffer 2018-01-23 11:08:32 +03:00
Vladimir Golovnev
56ccf28000 Merge pull request #8133 from Piccirello/webui-statistics-format
WebUI Statistics parity with GUI
2018-01-23 10:15:39 +03:00
Vladimir Golovnev
0a45fc9ffe Merge pull request #7990 from Piccirello/subnet-whitelist-refactor
Refactor ip subnet whitelist
2018-01-23 10:03:00 +03:00
Mike Tzou
a56262401b Merge pull request #8304 from Piccirello/webui-torrent-status
Remove default case, fix #8302
2018-01-23 12:28:22 +08:00
Tom Piccirello
ebea0d91af Remove default case, fix #8302 2018-01-22 02:05:41 -05:00
Vladimir Golovnev
d6cea2f76d Merge pull request #8301 from glassez/clear-settings
Remove legacy and corrupted RSS settings. Closes #8278
2018-01-21 20:42:26 +03:00
Vladimir Golovnev
4386fd9f89 Merge pull request #8292 from glassez/coding-style
Require '#pragma once' in new code
2018-01-21 20:05:42 +03:00
Vladimir Golovnev (Glassez)
1c18edac76 Remove legacy and corrupted RSS settings 2018-01-21 20:01:56 +03:00
Vladimir Golovnev (Glassez)
247b93e8ec Require '#pragma once' in new code 2018-01-20 12:10:21 +03:00
sledgehammer999
6470f9acb9 Merge pull request #8286 from Piccirello/webui-torrent-status
Match webui statuses to gui: add default case (addendum to #8269)
2018-01-19 15:36:55 +02:00
Thomas Piccirello
65e0aa6b82 Add default case 2018-01-18 23:30:19 -05:00
sledgehammer999
53cc8e1115 Revert "Remove examples from gpl.html. Closes #7749."
The GPL folks are a bit overzealous. See https://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

This reverts commit 5cf4f00824.
2018-01-18 16:25:38 +02:00
sledgehammer999
72b8ec8f3b Sync translations from Transifex and run lupdate. 2018-01-18 16:18:44 +02:00
sledgehammer999
29e24232ad Merge pull request #8269 from Piccirello/webui-torrent-status
Match webui statuses to gui, closes #7516
2018-01-18 16:11:24 +02:00
Thomas Piccirello
6d0cceca83 Use switch statement 2018-01-18 00:15:13 -05:00
Thomas Piccirello
8e9b928b61 Match webui statuses to gui, closes #7516 2018-01-18 00:15:12 -05:00
sledgehammer999
df81e84fc2 Merge pull request #8271 from Piccirello/gui-search-separators
Only add Search combobox separators as needed
2018-01-18 01:25:38 +02:00
Tom Piccirello
e6a1b72354 Only add search separators as needed 2018-01-16 00:22:51 -05:00
Mike Tzou
e48b97466c Merge pull request #8199 from winneon/reannounce
transferlist: added a force reannounce option
2018-01-10 18:48:41 +08:00
Mike Tzou
84b9929025 Merge pull request #8240 from Chocobo1/size
Torrent creator: raise maximum piece size to 32 MiB
2018-01-10 13:28:51 +08:00
Chocobo1
5c50dba9e1 Torrent creator: raise maximum piece size to 32 MiB 2018-01-09 13:04:44 +08:00
Mike Tzou
55b9b8fc91 Merge pull request #8234 from Chocobo1/tr
Fix translation context.
2018-01-08 15:04:42 +08:00
Chocobo1
fb698896c9 Fix translation context.
Partially addresses #8220.

Also sort include headers
2018-01-07 23:01:22 +08:00
sledgehammer999
95c32221a2 Update copyright year. 2018-01-06 02:23:09 +02:00
sledgehammer999
230fc8e11e Merge pull request #8216 from Chocobo1/i18n
Fix translation context. Closes #8211.
2018-01-05 16:18:11 +02:00
Thomas Piccirello
9b919b6c34 Add missing units 2018-01-05 02:48:41 -05:00
Thomas Piccirello
49d3b7bf30 Right-align stat values 2018-01-05 02:48:41 -05:00
Chocobo1
1d778676cd Fix translation context. Closes #8211. 2018-01-05 12:07:50 +08:00
Jesse Bryan
e887b3106f transferlist: added a force reannounce option. closes #6448. 2018-01-03 16:48:31 -06:00
sledgehammer999
be5600dae2 Update configure version info. 2018-01-03 23:18:00 +02:00
sledgehammer999
686fb701bf Update libtorrent bottle for Travis. 2018-01-03 22:41:54 +02:00
Mike Tzou
a73c4d57b1 Merge pull request #8136 from Chocobo1/pri
Sort filename lists in .pri files
2018-01-03 23:53:50 +08:00
sledgehammer999
e6ce1dd0b0 configure: Parse all compiler related flags together. 2018-01-03 01:16:39 +02:00
sledgehammer999
25ab660c14 Fix splitting of compiler flags in configure.
Autoconf removes a set of [] during script translation, resulting in a wrong sed command.
2018-01-02 18:15:49 +02:00
sledgehammer999
38d3eea6ee Merge pull request #8185 from sledgehammer999/fix_status_state
Fix constant status of '[F] Downloading'. Closes #7628.
2018-01-02 18:13:10 +02:00
sledgehammer999
13f69a2245 Fix constant status of '[F] Downloading'. Closes #7628. 2018-01-02 18:09:48 +02:00
Chocobo1
ec337a8a84 Sort filename lists in .pri files 2017-12-31 11:53:45 +08:00
Mike Tzou
267362a7a0 Merge pull request #7876 from Chocobo1/optionIcons
Fix gui issues on high DPI monitor
2017-12-31 11:42:55 +08:00
Mike Tzou
11f26bfefd Merge pull request #7878 from Chocobo1/runExt
Revert "Run external program" function
2017-12-28 21:26:53 +08:00
Vladimir Golovnev
87c3f5163e Merge pull request #8141 from glassez/fix-rss
Don't process new/updated RSS rules when disabled
2017-12-28 09:08:31 +03:00
Vladimir Golovnev (Glassez)
22bdf98617 Don't process new/updated RSS rules when disabled 2017-12-27 20:01:40 +03:00
sledgehammer999
e5001e8f40 Merge pull request #8132 from Piccirello/use-https
Use https for www.qbittorrent.org
2017-12-27 02:10:49 +02:00
Thomas Piccirello
ddd6c82dd7 Use https for www.qbittorrent.org 2017-12-26 18:22:03 -05:00
Vladimir Golovnev
155dc49c5a Merge pull request #7914 from Piccirello/webui-columns
Webui add torrent columns to match gui
2017-12-26 22:03:07 +03:00
Chocobo1
c2c0dd2717 Fix column size too narrow on resize
Instead of giving a value, just resize to the content size
2017-12-24 21:54:56 +08:00
Chocobo1
27cf98a962 Resize dialog size on high DPI monitors 2017-12-24 21:54:56 +08:00
Chocobo1
aaaa67050c Fix gui issues on high DPI monitor
Fix LineEdit widget size issues
Up-scale the icons on statusbar
Up-scale the icons in options dialog. Closes #7729.
Fix small icons in cookie manager
Fix progress bar height
Fix small icons in confirm delete dialog
Fix small icons in options dialog
Fix small images in about dialog
2017-12-24 21:47:46 +08:00
Chocobo1
52ae118e3c Tweak spacing 2017-12-24 21:47:46 +08:00
Chocobo1
cb929f7e59 Cleanup
Use Qt5 connect syntax
Reorder include headers
2017-12-24 21:47:44 +08:00
sledgehammer999
94b64884f8 Merge pull request #7997 from Piccirello/webui-content-columns
Add "Remaining" and "Availability" columns to webui Content tab
2017-12-23 20:32:46 +02:00
sledgehammer999
8a590c7472 Merge pull request #8054 from hannsen/master
search only when category is supported by plugin
2017-12-23 20:24:06 +02:00
sledgehammer999
b11c33b2d9 Merge pull request #8068 from thalieht/readableFlags
Make peer information flags in peerlist more readable
2017-12-23 19:33:19 +02:00
sledgehammer999
eb201003ee Merge pull request #7974 from sledgehammer999/fix_limit_application
Fix application of speed limits on LAN and μTP connections.
2017-12-23 19:20:32 +02:00
sledgehammer999
cf9bad03aa Fix application of speed limits on LAN and μTP connections. Closes #7745. 2017-12-23 19:19:08 +02:00
sledgehammer999
c5127d2eec Merge pull request #8091 from sledgehammer999/fix_natural_sort
Fix natural sorting
2017-12-23 19:16:29 +02:00
sledgehammer999
0a35adbdba Merge pull request #8087 from sledgehammer999/fix_flag_sorting
Fix sorting of country flags column in Peers tab.
2017-12-23 19:15:44 +02:00
sledgehammer999
38d68d9d97 Merge pull request #8103 from glassez/fix-8094
Fix RSS rule updated when deleting. Closes #8094
2017-12-23 19:09:59 +02:00
sledgehammer999
8494c6c5d4 Merge pull request #8003 from Chocobo1/fileicon
Use standard folder icon for open file behavior on Windows
2017-12-23 19:09:05 +02:00
sledgehammer999
cbfdb7df56 Merge pull request #8033 from vit9696/cmdw
Fix CMD+W not closing the main window
2017-12-23 19:07:51 +02:00
sledgehammer999
ea44923cce Merge pull request #8032 from vit9696/fopen
Fix torrent file selection in Finder on mac
2017-12-23 19:03:33 +02:00
Vladimir Golovnev (Glassez)
e75f8603b0 Fix RSS rule updated when deleting
Closes #8094
2017-12-23 16:25:09 +03:00
sledgehammer999
5437974b85 Fix natural sorting when the common part of 2 strings ends partially in a number which continues in the uncommon part.
Closes #8080 #6732.
2017-12-21 17:00:37 +02:00
sledgehammer999
99abc21dab Simplify sorting code. 2017-12-21 15:26:38 +02:00
sledgehammer999
5156399c68 Fix sorting of country flags column in Peers tab. 2017-12-21 15:21:53 +02:00
Mike Tzou
c8a5ef8c5d Merge pull request #7985 from Chocobo1/source
Add source field in Torrent creator
2017-12-21 20:26:38 +08:00
thalieht
5b52835377 Make peer information flags in peerlist more readable 2017-12-20 11:22:23 +02:00
Mike Tzou
b8277614ec Merge pull request #8066 from Chocobo1/url
WebUI: Only prepend scheme when it is not present. Closes #8057.
2017-12-19 22:43:03 +08:00
Chocobo1
fb6bdbefd5 WebUI: Only prepend scheme when it is not present. Closes #8057. 2017-12-18 14:12:31 +08:00
sledgehammer999
53c33317f9 Sync translations from Transifex and run lupdate. 2017-12-17 23:14:53 +02:00
jan.karberg
d534973650 search only when category is supported by plugin Closes #8053 2017-12-17 13:04:37 +01:00
vit9696
ed154d35ba Fix Finder reveal in preview and torrent contents 2017-12-17 02:16:36 +03:00
vit9696
ff7e5da6de Fix cmd+w not closing the main window on macOS 2017-12-13 13:30:40 +03:00
vit9696
d7fa5b6b6b Put macOS specific functions to MacUtils namespace 2017-12-12 20:53:20 +03:00
vit9696
d57bd62add Fix torrent file selection in Finder on mac 2017-12-12 20:53:20 +03:00
Thomas Piccirello
0f6dff6315 Make value formatting consistent with GUI 2017-12-12 01:25:06 -05:00
Thomas Piccirello
97b4e4a3d3 Add "Remaining" and "Availability" columns to webui Content tab 2017-12-12 01:25:06 -05:00
Vladimir Golovnev
84c84160fd Merge pull request #8008 from glassez/fix-ipv6
Fix WebUI is not reachable via IPv6
2017-12-11 07:58:48 +03:00
sledgehammer999
60c9926834 Merge pull request #8005 from Chocobo1/helpbutton
Disable the "?" help button in all dialogs on Windows
2017-12-11 03:29:31 +02:00
Vladimir Golovnev (Glassez)
fcde1ba09c Fix WebUI is not reachable via IPv6 2017-12-09 09:57:19 +03:00
Chocobo1
8dcf326576 Add source field in Torrent creator. Closes #7965.
This field is often used for cross-seeding between (private) trackers.
2017-12-09 00:39:50 +08:00
Chocobo1
22b0ebb5a8 Disable the "?" help button in all dialogs on Windows. Closes #7365. 2017-12-08 12:51:06 +08:00
Chocobo1
c5d99a12f3 Use standard folder icon for open file behavior on Windows. Closes #7880. 2017-12-08 09:15:44 +08:00
Thomas Piccirello
240f5b6718 Remove invalid subnets directly from list 2017-12-06 20:32:50 -05:00
Thomas Piccirello
d184bd8c82 Perform ip string validation inside setWebUiAuthSubnetWhitelist 2017-12-06 02:05:33 -05:00
Thomas Piccirello
98a2dedb32 Separate subnet whitelist options into two lines 2017-12-06 02:05:32 -05:00
Chocobo1
c405cb2f1c Add struct TorrentCreatorParams for passing parameters
Filter out continuous newlines in Trackers field
Avoid adding empty url seed entries

Cleanup:
  Replace boost::bind
  Add const
  Use nullptr
  Use QString::SkipEmptyParts
  Rename variables
  Throw proper exception type
2017-12-06 01:56:36 +08:00
sledgehammer999
5ea100352e Merge pull request #7958 from Chocobo1/fixsort
Fix crash in #7952
2017-12-04 22:58:22 +02:00
Chocobo1
86c5a8df75 Partial revert eac8838dc2. Fixes #7952.
mapFromSource() didn't work as expected, when used in lessThan(), it sometimes
returns an invalid QModelIndex.
A crash is observed when filtering source model via filterAcceptsRow() in #7952,
the crash is due to endless recursive of filterAcceptsRow() & lessThan() calling
each other and mapFromSource() is the culprit of it.
2017-12-04 17:40:44 +08:00
Thomas Piccirello
a05562cdc5 Add Time Active column 2017-12-03 15:01:35 -05:00
Thomas Piccirello
ee37f1db3d Add Tags columns 2017-12-03 15:01:35 -05:00
sledgehammer999
c9720cad81 Merge pull request #7915 from Chocobo1/dragndrop
Allow to drag-n-drop URLs into mainwindow to initiate download
2017-12-02 20:35:47 +02:00
sledgehammer999
2124ef261a Merge pull request #7964 from Chocobo1/typeError
[WebUI] Fix logout behavior
2017-12-02 14:23:38 +02:00
sledgehammer999
aae6030064 Merge pull request #7963 from Chocobo1/logo
Fix missing qbt logo on login page in webUI. Closes #7953.
2017-12-02 14:22:43 +02:00
Chocobo1
b234fcec9c [WebUI] Use POST for logout command
This is to avoid browser being smart to prefetch the link then logging
out the user.
2017-12-02 14:32:40 +08:00
Chocobo1
1a45145c1e [WebUI] Add check to avoid type error after logout 2017-12-02 14:32:40 +08:00
Chocobo1
c1a282aa7b Fix missing qbt logo on login page in webUI. Closes #7953. 2017-12-02 14:31:48 +08:00
sledgehammer999
e23c5614b6 Add height padding to the transfer list icons. Closes #7951. 2017-12-02 00:50:40 +02:00
sledgehammer999
f457937980 Sync translations from Transifex and run lupdate. 2017-12-01 01:44:24 +02:00
Mike Tzou
eac8838dc2 [GUI] Implement stable sort (#7703)
* NaturalCompare now returns compare result instead of "less than" result
* Change to stable sort in GUI components
* Add Utils::String::naturalLessThan() helper function
* Use Qt::CaseSensitivity type
2017-11-30 17:10:30 +08:00
Mike Tzou
74d281526b Merge pull request #7647 from thalieht/style
Coding style for many files
2017-11-30 17:09:18 +08:00
sledgehammer999
7a8128eec4 Merge pull request #7858 from sledgehammer999/IpFilter_log
Stop logging IP filter parsing errors after a while.
2017-11-29 19:44:43 +02:00
sledgehammer999
a55be5e58f Stop logging IP filter parsing errors after a while.
When a lot of errors happen the resulting log lines introduce
a huge slowdown of the GUI, due to writing each log line to disk.

Closes #7755.
2017-11-29 15:49:59 +02:00
sledgehammer999
4c317f1e4a Merge pull request #7852 from surfernsk/master
Fix i386 build (configure). Closes #7845
2017-11-27 19:12:08 +02:00
sledgehammer999
48c46dc79a Fix crash on some systems when creating address object for 255.255.255.255
Closes #7735.
2017-11-27 19:06:37 +02:00
Chocobo1
b9339bb727 Allow to drag-n-drop URLs into mainwindow to initiate download
Fix issue: https://github.com/qbittorrent/qBittorrent/issues/7785#issuecomment-347092418
Minor refactor
2017-11-27 16:45:55 +08:00
Thomas Piccirello
e1f8e6aa6f Reposition Total Size column to match gui 2017-11-26 19:37:20 -05:00
Chocobo1
76c95d8c6c Revert "Run external program" function
This revert df95efe33e partially
2017-11-25 15:48:29 +08:00
Vladimir Golovnev
a7da714b13 Merge pull request #7832 from glassez/rss-import
Implement Import/Export RSS rules. Closes #7721
2017-11-25 10:35:24 +03:00
Vladimir Golovnev (Glassez)
916cfcdb03 Implement Import/Export RSS rules in JSON format 2017-11-24 21:20:44 +03:00
Vladimir Golovnev (Glassez)
b8fc415870 Implement Import/Export RSS rules in legacy format 2017-11-24 16:19:16 +03:00
Evgeny Lensky
428cb9c986 Fix i386 build (configure)
Fix building on i686 fails with wrong multilib library path #7845

and rebregenerate ./configure
2017-11-24 10:28:03 +07:00
sledgehammer999
99341409f4 Remove examples from gpl.html. Closes #7749. 2017-11-24 02:03:29 +02:00
Mike Tzou
f07333acc9 Merge pull request #7576 from TheNicker/master
Fixed blurry text under windows by setting DPI awareness to default
2017-11-23 20:43:26 +08:00
Vladimir Golovnev
342f5f1a09 Merge pull request #7821 from glassez/fix-rss
Fix RSS Parser. Closes #7751, #7763, #7768, #7786
2017-11-23 14:35:42 +03:00
sledgehammer999
d74efd839f Merge pull request #7826 from Chocobo1/tcp
Change MixedModeAlgorithm default to TCP. Closes #7779.
2017-11-23 01:53:29 +02:00
Heiko Becker
af898e9117 Fix build with --disable-webui
"app/application.cpp:108:7: error: class 'Application' does not have
any field named 'm_webui'"
2017-11-23 01:52:38 +02:00
Vladimir Golovnev (Glassez)
c0e48627ae Fix RSS Parser
Closes #7751
Closes #7763
Closes #7768
Closes #7786
2017-11-22 19:11:37 +03:00
Chocobo1
534ed91d04 Change MixedModeAlgorithm default to TCP. Closes #7779.
MixedModeAlgorithm::Proportional will throttle TCP connections when utp
is in use and users is expecting maximum speed no matter what, so now
disable the throttling.
2017-11-22 22:39:52 +08:00
sledgehammer999
c58d0af88f Merge pull request #7806 from thoradia/rss_feed
Fix missing include in rss_feed.cpp

Fixes #7805
2017-11-22 15:51:05 +02:00
thoradia
ca5c1e8a15 Fix missing include in rss_feed.cpp
Fixes #7805.
2017-11-22 14:39:07 +01:00
sledgehammer999
4e96a1065e Bump API_VERSION to 16. 2017-11-22 01:14:33 +02:00
sledgehammer999
c9a8d19e6c Sync translations from Transifex and run lupdate. 2017-11-22 01:01:05 +02:00
sledgehammer999
81f5fdda15 Correctly check if torrent passed during application start already exists. 2017-11-22 00:42:26 +02:00
sledgehammer999
a38730eb9e Merge pull request #7792 from Chocobo1/creator2
Fix crash when aborting a torrent creation process
2017-11-22 00:41:26 +02:00
sledgehammer999
1a9e650936 Merge pull request #7782 from Chocobo1/utf8
Remove superfluous QString::fromUtf8()
2017-11-22 00:40:51 +02:00
sledgehammer999
ae5177b20f Merge pull request #7778 from Chocobo1/dragdrop
Allow drag-n-drop magnet links to mainwindow. Closes #7742.
2017-11-21 21:27:19 +02:00
Chocobo1
27090f0cfb Remove superfluous QString::fromUtf8() 2017-11-21 22:48:00 +08:00
Chocobo1
433b5a46cf Fix crash when aborting a torrent creation process. Closes #7783.
The wait time wasn't long enough causing the thread to
terminate prematurely.
Also, to avoid crashing qbt entirely when creating a torrent for a very
big file, I decided to wait indefinitely here.
2017-11-21 18:33:47 +08:00
Chocobo1
034d71dce3 Wrap function into anonymous namespace 2017-11-21 18:23:39 +08:00
Chocobo1
c3de2310c5 Avoid double delete on close 2017-11-21 18:11:28 +08:00
Chocobo1
b9478e0f00 Use Qt5 connect syntax 2017-11-21 18:11:28 +08:00
Chocobo1
94aeac992c Allow drag-n-drop magnet links to mainwindow. Closes #7742. 2017-11-21 14:19:34 +08:00
sledgehammer999
4927d26877 Fix english typo. 2017-11-21 02:14:44 +02:00
thalieht
ae1634623e Coding style for many files 2017-11-20 23:29:59 +02:00
sledgehammer999
296c7d3c13 Merge pull request #7764 from Chocobo1/logo
[WebUI] Fix logo missing in login page
2017-11-20 23:28:13 +02:00
sledgehammer999
22add258ae Merge pull request #7753 from luigino/master
qtsingleapplication should always be built statically to avoid depend…
2017-11-20 22:31:46 +02:00
Chocobo1
77f66be493 [WebUI] Fix logo missing in login page 2017-11-21 03:41:07 +08:00
Vladimir Golovnev
f41cb8089d Merge pull request #6779 from Piccirello/disable-web-auth
Add ip subnet whitelist for bypassing webui auth
2017-11-20 21:52:33 +03:00
luigino
32a686a037 qtsingleapplication should always be built statically to avoid dependency problems 2017-11-20 17:23:22 +01:00
sledgehammer999
236abcf3f1 Fix crash on opening torrent/magnet (uninitialized pointer). Closes #7739 #7723. 2017-11-20 17:46:31 +02:00
sledgehammer999
325f9f629d Improve the github issue template. 2017-11-20 16:20:10 +02:00
sledgehammer999
88a771c9ff Bump to 4.1.0alpha 2017-11-20 02:42:16 +02:00
sledgehammer999
b960e41cfa Update Changelog. 2017-11-20 02:28:19 +02:00
sledgehammer999
9f461d0fe6 Sync translations from Transifex and run lupdate. 2017-11-20 02:23:31 +02:00
sledgehammer999
9db1f3baca Merge pull request #6484 from sledgehammer999/new_logo
Change qbittorrent logo. Issue #6467.
2017-11-19 19:15:50 +02:00
sledgehammer999
af5a02d971 Merge pull request #7673 from sledgehammer999/webui_clean_exit
WebUI: Correctly exit depending if mainloop is running.
2017-11-19 19:12:30 +02:00
Vladimir Golovnev (Glassez)
71bb6538db Fix WebUI error handling 2017-11-19 19:10:04 +02:00
sledgehammer999
06ecc45d13 Merge pull request #7711 from Chocobo1/update
Update m4 macros
2017-11-19 18:37:26 +02:00
Chocobo1
31607c4d18 Simplify AX_BOOST_BASE usage
Regenerate configure
2017-11-17 18:25:46 +08:00
Chocobo1
84bb214642 Sync m4 macros with upstream 2017-11-17 15:28:14 +08:00
Mike Tzou
d821bdc9f3 Merge pull request #7669 from Chocobo1/portCheck
[WebAPI] Improve error messages
2017-11-10 23:41:19 +08:00
Vladimir Golovnev
63461e0895 Merge pull request #7688 from glassez/rss-log
Improve RSS events logging
2017-11-10 14:38:38 +03:00
Eugene Shalygin
08755a211b Merge pull request #7596 from evsh/path-history-items
Add option to tune download history list length. Closes #4043.
2017-11-10 12:23:40 +01:00
Vladimir Golovnev (Glassez)
a3c9c1c386 Improve RSS events logging
Fix RSS log messages was untranslatable.
Add more logging.
2017-11-09 15:40:39 +03:00
Thomas Piccirello
0de2f1776e Remove duplicate header 2017-11-08 22:39:49 -05:00
Thomas Piccirello
da0db92b9f Enable preferences Apply button when ip banlist is modified 2017-11-08 22:39:49 -05:00
Thomas Piccirello
95bf63330e Add ip subnet whitelist for bypassing webui auth 2017-11-08 22:39:49 -05:00
Mike Tzou
04cec39277 Merge pull request #7667 from Chocobo1/stackdump
Include & print caught signal in stackdump
2017-11-04 11:10:49 +08:00
sledgehammer999
7b95785954 Merge pull request #7672 from Kolcha/fix-file-permissions
dropped unneeded executable flag from several files
2017-11-03 21:35:33 +02:00
Nikolay Korotysh
7d0342e366 dropped unneeded executable flag from several files 2017-11-03 17:19:54 +03:00
Chocobo1
21bc08d643 Include/print caught signal in stackdump 2017-11-03 14:13:17 +08:00
sledgehammer999
ffa6f7ea34 Bump API_VERSION to 16. 2017-11-03 01:57:32 +02:00
sledgehammer999
6b0449dde7 Update Changelog. 2017-11-03 01:39:44 +02:00
Chocobo1
aa4107478e [WebAPI] Improve error messages
Also refactor to use class methods
2017-11-02 23:01:14 +08:00
sledgehammer999
9f8e7917a8 Merge pull request #7657 from Chocobo1/upnp
Disable upnp & nat-pmp on startup if disabled in options. Closes #7338.
2017-10-31 18:24:28 +02:00
Chocobo1
1b652c882e Refactor
Add const
Use Qt5 connect syntax
2017-10-31 19:09:01 +08:00
Chocobo1
601234e492 Explicitly set UPnP state on start-up. Closes #7338.
libtorrent 1.1 enables upnp by default.
2017-10-31 19:08:58 +08:00
sledgehammer999
6c804edadf Change default settings for tracker/tier announces to mimick ìTorrent behavior. 2017-10-30 23:27:29 +02:00
sledgehammer999
3a5c0d9818 Allow to specify if announcing to all tiers is desired. 2017-10-30 23:27:28 +02:00
sledgehammer999
2194a05e60 Merge pull request #7652 from Chocobo1/aboutExtLink
Open links in browser. Closes #7651.
2017-10-30 18:06:34 +02:00
sledgehammer999
a89c1a8d9a Use new logo in the file icon. 2017-10-30 02:41:26 +02:00
sledgehammer999
86215f8483 Use new logo in the splash screen. 2017-10-30 02:41:25 +02:00
sledgehammer999
a1b01c1b40 Remove unused image. 2017-10-30 02:41:24 +02:00
sledgehammer999
09cb95d3da Use the SVG for the tray icon. 2017-10-30 02:41:23 +02:00
sledgehammer999
48d7bdee0e Change qbittorrent logo. Issue #6467. 2017-10-30 02:41:22 +02:00
sledgehammer999
5157fc201c Add Turkish translator in about page. 2017-10-30 00:32:44 +02:00
Chocobo1
492ea5bceb Open links in browser. Closes #7651. 2017-10-28 14:51:20 +08:00
Mike Tzou
e8cf351b6a Merge pull request #7643 from Chocobo1/email
Allow SMTP sender to be set. Closes #7575.
2017-10-27 12:52:35 +08:00
Chocobo1
fc0628d35b Allow SMTP sender to be set. Closes #7575. 2017-10-26 17:57:32 +08:00
Mike Tzou
1f7391737e Merge pull request #7445 from Chocobo1/fixAddTorrent
Disable processing socket events in findIncompleteFiles()
2017-10-25 23:00:35 +08:00
Mike Tzou
acdb7a27dc Merge pull request #7638 from Chocobo1/msg
[WebUI] Improve log messages
2017-10-24 20:19:12 +08:00
Eugene Shalygin
1fed324f91 Add option to tune download history list length. Closes #4043. 2017-10-24 12:56:05 +02:00
Eugene Shalygin
e4771ba508 Add maxVisibleItems combo box property to FileSystemPathComboEdit. 2017-10-24 12:56:04 +02:00
sledgehammer999
6a36a3b1d9 Run lupdate again. 2017-10-24 03:34:49 +03:00
sledgehammer999
2956b28a32 Mention more translators in the about page after their request. 2017-10-24 03:32:57 +03:00
sledgehammer999
50471ec8c8 String fixes and optimizations mentioned by translators on Transifex. 2017-10-24 03:32:56 +03:00
sledgehammer999
3aa9ff5fba Sync translations from Transifex and run lupdate. 2017-10-24 01:28:31 +03:00
Mike Tzou
b6be5afb89 Merge pull request #7584 from Chocobo1/refactor
[WebAPI] Refactor
2017-10-23 19:36:28 +08:00
Chocobo1
157b809e21 [WebUI] Improve log messages 2017-10-23 16:45:41 +08:00
Mike Tzou
f74e2b0130 Merge pull request #7631 from Chocobo1/webUIaddr
Reinitialize webUI server when "IP address" setting changed
2017-10-23 14:11:50 +08:00
sledgehammer999
c887a162ba Fix row height/width in webui for country flags.
Patch by Chocobo1.
2017-10-23 01:23:54 +03:00
sledgehammer999
52df71ad3a Use svg icons for the country flags.
Closes #6223.
2017-10-23 01:23:45 +03:00
Chocobo1
d6ddc90199 Reinitialize webUI server when "IP address" setting changed
An app restart won't be necessary from now on.
2017-10-22 14:42:51 +08:00
Mike Tzou
9600e7f5ad Merge pull request #7573 from fmatthew5876/config_webui_ip
Add WebUi\Address config option
2017-10-22 14:18:08 +08:00
Chocobo1
f3603d05e7 Disable processing events when adding torrents. Closes #7436.
webUI connection timeout & deletion might occur while
doing processEvents() and will result in use-after-free segfault.
2017-10-22 13:54:03 +08:00
Matthew Fioravante
8cd243b06b Add WebUi\Address config option 2017-10-21 09:32:30 -04:00
Mike Tzou
1da3437a4a Merge pull request #7603 from Chocobo1/debugMsg
[WebUI]: Print error messages upon receiving invalid header fields
2017-10-21 01:10:25 +08:00
Vladimir Golovnev
c72fb92318 Merge pull request #7529 from dzmat/speedwidget_qtconcurrent_removal
Excess QtConcurrent usage removal
2017-10-20 10:32:27 +03:00
sledgehammer999
954448863e Merge pull request #7599 from scootergrisen/patch-1
Add me for danish
2017-10-19 01:50:35 +03:00
sledgehammer999
eec6009398 Merge pull request #7583 from LordNyriox/status-icons
Invert Framing for Torrent Status Icons
2017-10-19 01:45:22 +03:00
Chocobo1
ce362f0e5e WebAPI refactor: utilize parseBool() function
Coding style cleanup
Rename variable
Return const reference
Add const
2017-10-18 22:27:59 +08:00
Chocobo1
4940a77d12 [WebUI]: Print error messages upon receiving invalid header fields 2017-10-18 20:11:53 +08:00
sledgehammer999
4e77e01a67 Generate pngs using svgexport and optimize using PNGGauntlet. 2017-10-17 19:40:46 +03:00
sledgehammer999
5acdcb6c09 Optimize and prettify the svg source using svgo. 2017-10-17 19:32:34 +03:00
scootergrisen
8400d855de Add me for danish 2017-10-16 22:14:10 +02:00
Mike Tzou
bd07cb91bb Merge pull request #7571 from Chocobo1/webui_download
[WebAPI] Add parameters for /command/download & /command/upload
2017-10-15 20:32:14 +08:00
LordNyriox
d7e0a9b1ad Invert Framing for Torrent Status Icons
Also recolor the icons to match the text-color used for the torrent-status as well. 
Optimized using SVGOMG [<https://jakearchibald.github.io/svgomg/>].
2017-10-13 13:41:42 -04:00
Mike Tzou
dc600d47ec Merge pull request #7570 from Chocobo1/webui_fileIdx
[WebAPI] Add file-to-piece-index mappings in /query/propertiesFiles command
2017-10-14 01:05:00 +08:00
sledgehammer999
0d3952eef5 Sync translations from Transifex and run lupdate. 2017-10-13 03:56:57 +03:00
TheNicker
30a4ce40b9 Fixed blurry text under Windows by setting DPI awareness to default 2017-10-12 22:23:02 +03:00
dzmat
9d0ab0ae5f speedwidget class: excess QtConcurent usage removal 2017-10-12 20:59:13 +07:00
Chocobo1
e78d8b9fcc Convert tab into whitespaces 2017-10-11 20:27:19 +08:00
Chocobo1
f350977cb4 WebUI: add optional parameters for /command/download & /command/upload
Specifically:
torrent name: string
download limit, upload limit: number in bytes, default: -1 (unlimited)
sequential download, first last piece prio: boolean true/false, default: false
2017-10-11 20:25:11 +08:00
Eugene Shalygin
7a652c0a8c Merge pull request #7566 from evsh/themes-cbc
Themes part 1
2017-10-11 10:34:56 +02:00
Chocobo1
a652baadb5 Add file-to-piece-index mappings in /query/propertiesFiles command
Also do the following cleanups:
  Use string constant QB_EXT
  Remove redundant variable
  Add const
2017-10-11 16:24:29 +08:00
Chocobo1
66b86888fc Add uploadLimit, downloadLimit fields to AddTorrentData & AddTorrentParams 2017-10-11 16:23:58 +08:00
Mike Tzou
e07501252c Merge pull request #7549 from fmatthew5876/master
Report TCPServer errorString() if webui fails to listen to port
2017-10-11 16:22:52 +08:00
Mike Tzou
2977ba9ec2 Merge pull request #7563 from Chocobo1/delkey
Fix delete key has no effect due to "Ambiguous shortcut overload"
2017-10-11 16:15:55 +08:00
Eugene Shalygin
db35bb54e1 Make BitTorrent::TorrentState strongly-typed enum
This is needed to forward declare this type and pass it by value.

Conversion from/to QVariant are hanled via Q_DECLARE_METATYPE, while
TorrentState::toString() function was used in webui only and as such is
moved there.
2017-10-10 21:28:57 +02:00
Tim Delaney
19bb6f5fe0 Follow project coding style. Issue #2192.
--HG--
branch : magao-dev
2017-10-10 21:28:56 +02:00
Chocobo1
aab752dd2e Fix delete key has no effect due to "Ambiguous shortcut overload"
We want to show the accelerator key in the menu but without hitting
the ambiguous overload error.
Fixup of 1378245a63
2017-10-10 14:43:05 +08:00
Eugene Shalygin
8c75fdcb4c Merge pull request #7558 from evsh/uncrustify
Update uncrustify config
2017-10-09 20:04:37 +02:00
sledgehammer999
df03b69151 Merge pull request #7502 from sledgehammer999/optimize_img
Image housekeeping
2017-10-09 18:16:38 +03:00
sledgehammer999
aca7a851bb Optimize SVGs.
Used svgo with commands --pretty --indent=2 --multipass.
2017-10-09 18:15:41 +03:00
sledgehammer999
e9caefdfce Optimize PNGs.
Using PNGGauntlet.
2017-10-09 18:15:40 +03:00
sledgehammer999
16ac20b594 Remove unused image. Possibly leftover from dropping Qt4. 2017-10-09 18:15:39 +03:00
sledgehammer999
a3e071b734 Merge pull request #7562 from sledgehammer999/drop_os2
Drop OS/2 support.
2017-10-09 18:14:11 +03:00
sledgehammer999
5d3b9d2f22 Drop OS/2 support. 2017-10-09 18:11:14 +03:00
sledgehammer999
27a7e86599 Merge pull request #7561 from sledgehammer999/native_path
Show new paths in native form.
2017-10-09 18:09:55 +03:00
sledgehammer999
d93d0ab19e Show new paths in native form. 2017-10-09 17:42:42 +03:00
Eugene Shalygin
776627eee9 Update uncrustify config 2017-10-09 16:42:34 +02:00
Chocobo1
5185eeb7ef Die gracefully when failed to initialize web server with qbt-nox 2017-10-09 13:50:01 +08:00
Vladimir Golovnev
083bc71315 Merge pull request #7396 from thalieht/updownratio
Properly pre-select the selected torrent's current ratio limiting options in UpDownRatioDlg
2017-10-08 21:06:55 +03:00
Eugene Shalygin
b1b931922e Merge pull request #7555 from evsh/fix-qtsingleapplication-cmake
cmake: do not use Qt5Widgets when locating QtSingleApplication. Closes #7551.
2017-10-08 09:28:00 +02:00
thalieht
0717f0d60c Save ratio limits as int instead of string 2017-10-08 10:22:40 +03:00
thalieht
525fdd6c2b Coding style, use nullptr and other minor things 2017-10-08 10:20:54 +03:00
thalieht
f27e75e8fa Properly pre-select the selected torrent's current ratio limiting options in UpDownRatioDlg dialogs. Fixes #7352 2017-10-08 10:20:38 +03:00
Eugene Shalygin
0ad5290389 cmake: do not use Qt5Widgets when locating QtSingleApplication. Closes #7551.
This fixes cmake builds with GUI disabled and system
QtSingleApplication. We rely on Qt5::Core instead of Qt5::Widgets.
2017-10-07 21:48:52 +02:00
Mike Tzou
7895afb8e9 Merge pull request #7542 from Chocobo1/wordbreak
Set QTextOption::NoWrap property in "Download from URLs" dialog
2017-10-07 13:40:41 +08:00
Mike Tzou
2626378dfd Merge pull request #7545 from Kolcha/del-shortcut
added keyboard shortcut to delete torrent. closes #7508
2017-10-07 13:38:05 +08:00
Nick Korotysh
1378245a63 show delete accelerator key in menu. closes #7508 2017-10-06 14:51:19 +03:00
Matthew Fioravante
05c92e652c Report TCPServer errorString() if webui fails to listen to port 2017-10-06 05:54:52 +00:00
Mike Tzou
6c0dd81528 Merge pull request #7541 from Kolcha/sort-plugins
allow search plugins sorting. closes #7526
2017-10-05 16:16:27 +08:00
Vladimir Golovnev
bd1d775ca9 Merge pull request #7522 from glassez/winconf
Reformat Windows build configuration files
2017-10-04 09:18:27 +03:00
Chocobo1
b3207b8144 Set QTextOption::NoWrap property in "Download from URLs" dialog
This makes it easier to put each magnet link on its own line
2017-10-03 22:45:18 +08:00
Nick Korotysh
4c8dd0ca9d allow search plugins sorting. closes #7526 2017-10-03 16:57:09 +03:00
Vladimir Golovnev (Glassez)
61d9fcd753 Reformat Windows build configuration files 2017-10-02 18:57:54 +03:00
Vladimir Golovnev
c5607f07c8 Merge pull request #7514 from dzmat/members_names_clarification
members names clarification
2017-09-30 09:36:24 +03:00
Mike Tzou
49802be7d4 Merge pull request #7499 from Chocobo1/fixTimeActive
Fix "Time active" field in transfer list
2017-09-30 11:36:57 +08:00
dzmat
3d932b1cce transferlistwidget class members names clarification 2017-09-29 19:55:30 +07:00
Vladimir Golovnev
66a6674cbc Merge pull request #7490 from glassez/category-path
Allow to set explicit save path for Category from GUI
2017-09-29 14:25:40 +03:00
Chocobo1
2d12c126eb Fix "Time active" field in transfer list
The "Time active" field was broken, displaying nothing when in
downloading state.
Also change type to int to match the return
types of TorrentHandle::activeTime() & TorrentHandle::seedingTime()
2017-09-28 16:54:46 +08:00
Vladimir Golovnev (Glassez)
3ec992474d Implement TorrentCategoryDialog class 2017-09-27 21:25:22 +03:00
Mike Tzou
15babe97ea Merge pull request #7500 from Chocobo1/mergeName
Show torrent name in "add new torrent" dialog on merging trackers
2017-09-27 21:04:51 +08:00
Mike Tzou
308fd3dcac Merge pull request #7477 from silverqx/options-dlg-persist-size
Center Options dialog when showed
2017-09-27 20:35:04 +08:00
Mike Tzou
e8250104c8 Merge pull request #7429 from silverqx/preview-modal-ux
Improved ux in preview dialog
2017-09-27 20:33:31 +08:00
Mike Tzou
796cd674d7 Merge pull request #7495 from silverqx/options-save-state-cancel
Options dialog save windows state in destructor
2017-09-26 15:30:17 +08:00
Mike Tzou
1fe9272a8f Merge pull request #7480 from Chocobo1/lastAct
Fix last activity calculation
2017-09-26 15:17:35 +08:00
sledgehammer999
c285de87d4 Don't use margins in FileSystemPathEdit widgets.
Introduced in 30081e0.
2017-09-26 04:06:32 +03:00
Chocobo1
058062d586 Show torrent name in "add new torrent" dialog on merging trackers 2017-09-26 01:34:24 +08:00
silver
3b4fd35dde Persist size and treeview header state in preview dialog
- renamed variable m_headerState
 - renamed PreviewSelect class to PreviewSelectDialog
 - renamed previewselect files to previewselectdialog
2017-09-25 16:33:17 +02:00
silver
2a6bd5de35 Options dialog save windows state in destructor 2017-09-24 22:56:14 +02:00
silver
64e539fcfb Center Options dialog when showed 2017-09-24 19:40:48 +02:00
Mike Tzou
de6ca29dcd Merge pull request #7482 from Chocobo1/update
Update qtsingleapplication
2017-09-24 22:39:59 +08:00
silver
ef63202be2 Follow project coding style. Issue #2192. 2017-09-24 16:18:39 +02:00
Chocobo1
62493c672d Fix last activity calculation. Closes #7461
`time_since_upload` & `time_since_download` can be -1, so filter them out
2017-09-24 21:06:34 +08:00
Vladimir Golovnev (Glassez)
8c58a69be6 Use Qt5 connect() style in CategoryFilterWidget 2017-09-24 16:01:39 +03:00
Mike Tzou
2eb3ec1a6e Merge pull request #7463 from Piccirello/fix-priority-context-menu-placement
Reposition "Priority" menu option in WebUI to match gui (closes #7072)
2017-09-24 10:28:05 +08:00
Chocobo1
e3da17caa8 Update qtsingleapplication
To upstream version a8dda66d7738cde9042b87db27993f710ae3eeeb
2017-09-23 00:27:00 +08:00
sledgehammer999
c7e35a1801 Merge pull request #7451 from sledgehammer999/report_delete_fail
Better reporting of success/failure of torrent and file deletion.
2017-09-21 23:36:53 +03:00
Mike Tzou
83c6b22d30 Merge pull request #7454 from Chocobo1/buttonbox
Replace dialog ok-cancel buttons with QDialogButtonBox
2017-09-21 22:45:45 +08:00
Mike Tzou
fc5d49bf9a Merge pull request #7460 from Chocobo1/tribool
Use smaller data type for TriStateBool
2017-09-21 20:17:34 +08:00
Mike Tzou
473ed45b3f Merge pull request #7468 from Chocobo1/apiwipeass
WebAPI: fix root_folder default behavior
2017-09-21 20:17:14 +08:00
Chocobo1
c5ddbcfb5b WebAPI: fix addPaused wrong default behavior
Add helper function
Sort include header
2017-09-19 17:26:01 +08:00
Chocobo1
72b0ba36ae Refactor
Merge statements
Use case-insensitive contains()
Add const
Use value(), this avoids inserting empty values.
Use range based for loop
2017-09-19 14:16:39 +08:00
Chocobo1
b107c0671d WebAPI: fix root_folder default behavior
Bug was introduced in
6b33db3ae3
2017-09-19 13:07:50 +08:00
sledgehammer999
b9e233601d Merge pull request #7446 from Chocobo1/utpOnly
Add uTP only mode option
2017-09-19 01:45:58 +03:00
sledgehammer999
8f16388915 Better reporting of success/failure of torrent and file deletion. 2017-09-17 23:04:12 +03:00
Chocobo1
d143929454 Use smaller data type for TriStateBool 2017-09-18 02:21:47 +08:00
Chocobo1
45a0c5558a Add comboBox for selecting BitTorrent protocol. Closes #6316.
Use unicode string C_UTP in place of "uTP"
2017-09-18 01:52:57 +08:00
Thomas Piccirello
b6596f9957 Reposition "Priority" menu option in WebUI to match gui (closes #7072) 2017-09-17 05:42:46 -04:00
Chocobo1
7059b947e8 Replace dialog ok-cancel buttons with QDialogButtonBox
This PR will make button order follow the platform default.
For example: windows use: OK, Cancel; linux use: Cancel, OK.
2017-09-15 18:52:21 +08:00
Mike Tzou
4eafe7a2c8 Merge pull request #7426 from thalieht/webuiStripFolder
Add the create root folder option when adding a torrent in WebUI
2017-09-15 13:01:48 +08:00
sledgehammer999
d165da9c6c Merge pull request #7417 from Chocobo1/fix
Fix default value of m_diskCacheSize
2017-09-14 16:13:12 +03:00
Chocobo1
a341b793e4 Rename option
The previous "Disk write cache size" is not accurate since it is also being used
for read cache, so rename it to "Disk cache".
2017-09-14 20:32:10 +08:00
Chocobo1
a1d46a278b Change default value of m_diskCacheSize. New default is 64 MB. 2017-09-14 20:32:04 +08:00
Eugene Shalygin
c6cf3a98a4 Merge pull request #7428 from evsh/allow-all-tray-icons
Allow custom tray icons when system icon theme is used. Closes #7403.
2017-09-12 11:09:44 +02:00
Mike Tzou
56887efdf5 Merge pull request #7422 from Chocobo1/delete
Fix dereferencing freed pointer
2017-09-12 02:14:08 +08:00
Eugene Shalygin
4ec193042f Allow custom tray icons when system icon theme is used. Closes #7403. 2017-09-11 16:18:10 +02:00
thalieht
6b33db3ae3 Create root folder option when adding a torrent in WebUI 2017-09-11 16:56:33 +03:00
Chocobo1
855772ae5a Fix dereferencing freed pointer. Closes #7420.
The torrent is removed from session after `deleteTorrent()`
yet we still invoke `torrent->name()`, thus result in crash.
2017-09-11 13:16:34 +08:00
sledgehammer999
467ba380b2 Travis: Update libtorrent bottle with boost 1.65+ fix. 2017-09-11 01:20:02 +03:00
Mike Tzou
93ed8e98c1 Merge pull request #7402 from comradekingu/patch-2
Spelling: HTTP/HTTPS
2017-09-08 20:12:27 +08:00
Allan Nordhøy
5c18db240c Spelling: HTTP/HTTPS 2017-09-08 11:22:25 +02:00
sledgehammer999
915ec81f83 Merge pull request #7385 from Chocobo1/coding_style
Update coding guidelines (proposal)
2017-09-08 02:20:15 +03:00
sledgehammer999
8c545d2947 Update Changelog. 2017-09-08 00:54:08 +03:00
sledgehammer999
cbfbae1409 Bump to 3.4.0beta2 2017-09-06 01:46:27 +03:00
sledgehammer999
728b7dec3e Sync translations from Transifex and run lupdate. 2017-09-06 01:44:47 +03:00
sledgehammer999
7b5730723d Fix file list expansion on singlefile torrent with folder. 2017-09-06 01:11:49 +03:00
Chocobo1
71844e13af Update coding guidelines
Add ranged-based for loop example
Add class inheritance example
Add Prefer pre-increment, pre-decrement operators section
Fix space after comment keyword
Fix header include order
[skip ci]
2017-09-05 14:24:52 +08:00
Vladimir Golovnev
c6dfdf9135 Fix CategoryFilterWidget::sizeHint() 2017-09-01 16:11:21 +03:00
Vladimir Golovnev
4cd3a37b4a Fix suggest_mode setting
Actually suggest_mode is of type int.
2017-08-31 22:02:52 +03:00
Mike Tzou
5efb4b522f Merge pull request #7358 from Chocobo1/qstringbuilder
Improve compile defines
2017-08-29 16:42:09 +08:00
Chocobo1
64d5e329c0 Sort the resource lists
Update RCC header
2017-08-29 13:39:02 +08:00
Chocobo1
ee9caa4305 Cleanup src.pro 2017-08-29 13:39:02 +08:00
Chocobo1
39b56ac598 Move NOMINMAX define 2017-08-29 13:39:01 +08:00
Chocobo1
551ffb88ab Define QT_USE_QSTRINGBUILDER.
The old defines are deprecated.
QT_USE_QSTRINGBUILDER also supports QByteArray which we use extensively
in WebUI.
2017-08-29 13:37:29 +08:00
Mike Tzou
698bd431e6 Merge pull request #7340 from Chocobo1/leak
Fix leak & use Qt5 connect syntax
2017-08-24 23:08:01 +08:00
Chocobo1
ccd3b305c2 Use Qt5 connect syntax 2017-08-24 20:15:25 +08:00
Chocobo1
b47c90f0e0 Setup parent ownership to avoid memory leak 2017-08-24 20:01:39 +08:00
Mike Tzou
1afd5f70dd Merge pull request #3235 from Chocobo1/session_option
libtorrent session options
2017-08-24 11:35:15 +08:00
Vladimir Golovnev
4cb304def8 Merge pull request #7334 from qbittorrent/fix-7333
Fix RSS Downloader fails to rename rule. Closes #7333
2017-08-23 22:21:57 +04:00
Vladimir Golovnev
f2af308e6d Fix RSS Downloader fails to rename rule
Closes #7333.
2017-08-23 16:45:14 +03:00
Vladimir Golovnev
a6868e2b25 Merge pull request #7313 from glassez/sched
Don't disable scheduler when manually switching speed limits. Closes #7306
2017-08-23 17:05:28 +04:00
Vladimir Golovnev
7a96ddccc6 Merge pull request #7332 from qbittorrent/fix-7327
Skip user input events when adding torrent. Closes #7327
2017-08-23 13:10:36 +04:00
Vladimir Golovnev
bda5be8e4c Skip user input events when adding torrent
Closes #7327.
2017-08-23 11:14:34 +03:00
Vladimir Golovnev (qlassez)
93f5d4058d Improve BandwidthScheduler
Don't disable scheduler when manually switching speed limits.
Closes #7306.
2017-08-23 09:48:31 +03:00
Eugene Shalygin
98dd2be673 Merge pull request #7324 from Evengard/vpntunnels-patch
Disable skipping of loopback interfaces in settings tab
2017-08-22 14:03:11 +02:00
Evengard
ea7c1ace2a Disable skipping of loopback interfaces
This fixes the absence of VPN tunnel interfaces under Windows and works around the QTBUG-32349
Fixes #7291
2017-08-22 00:00:20 +03:00
Chocobo1
2da2054ccf Use enums for settings 2017-08-21 20:30:26 +08:00
Chocobo1
3f5fa0025d Add sanitize helper clampValue() 2017-08-21 16:50:56 +08:00
Chocobo1
f4be165767 Add send_buffer_watermark send_buffer_low_watermark
send_buffer_watermark_factor knobs
2017-08-21 16:50:14 +08:00
Chocobo1
55a1628a5e Add suggest_mode knob 2017-08-21 16:50:14 +08:00
Chocobo1
6c32f6beff Add choking_algorithm & seed_choking_algorithm knob 2017-08-21 16:49:45 +08:00
Chocobo1
21ec8fe53f Add allow_multiple_connections_per_ip knob. Closes #5884. 2017-08-21 16:48:38 +08:00
Chocobo1
4185209036 Add mixed_mode_algorithm knob 2017-08-21 16:48:38 +08:00
Chocobo1
6150e0c56b Add guided_read_cache knob
cleanup header include order
2017-08-21 16:48:37 +08:00
sledgehammer999
42b811e578 Merge pull request #7316 from evsh/plugin-version-crash-fix
Fix ignoring of incorrect version strings in search plugins. Closes #7101
2017-08-21 00:18:19 +03:00
Eugene Shalygin
ef1597e45b Fix ignoring of incorrect version strings in search plugins. Closes #7101.
Printing of Version with all components set to zero was segfaulting due
to underflow in array index. Also add log message for such plugins.
2017-08-20 22:44:20 +02:00
sledgehammer999
1e677c6728 Merge pull request #7315 from Chocobo1/hostheader
WebAPI: fix validating wrong header field. Closes #7311.
2017-08-20 20:55:20 +03:00
Chocobo1
9ef1e32327 WebAPI: fix validating wrong header field. Closes #7311.
X-Forwarded-Host is a foreign proxy setting, it isn't the same as
qbt's local setting and thus it makes no sense to verify it.
2017-08-20 22:40:19 +08:00
sledgehammer999
173f6fd75d Check for Qt5Svg when configuring. 2017-08-18 23:00:53 +03:00
sledgehammer999
bbe7821483 Merge pull request #7300 from Chocobo1/cleanup
Minor cleanup
2017-08-18 21:08:27 +03:00
Chocobo1
65ca490b64 Wrap class & functions in anonymous namespace
Rename vars
Cleanup class interfaces
Pass by reference whenever possible
2017-08-19 01:57:11 +08:00
sledgehammer999
907f222a73 Switch settings to signed int because libtorrent expects them that way. 2017-08-18 20:21:39 +03:00
sledgehammer999
b649d61e8b Options to better memory control by libtorrent. Closes #7029. 2017-08-18 20:21:37 +03:00
sledgehammer999
ea793368a9 Merge pull request #7279 from evsh/file-icon-cache
Use pixmap cache for file icons on Mac OS and Windows. Closes #7264.
2017-08-18 19:31:19 +03:00
Eugene Shalygin
3331526865 Use pixmap cache for file icons on Mac OS and Windows. Closes #7264. 2017-08-15 22:25:03 +02:00
sledgehammer999
cccb22f0e3 Merge pull request #7282 from glassez/fsutils
Improve utils/fs.* and fix coding style
2017-08-15 22:47:39 +03:00
sledgehammer999
4f0d9605fe Merge pull request #7281 from vit9696/notifications2
Fix notification display on macOS
2017-08-15 22:34:35 +03:00
sledgehammer999
19fcd3dad6 Fix broken build. 2017-08-15 22:12:16 +03:00
vit9696
eb8ff91c5d Fix notification display on macOS 2017-08-15 21:16:37 +03:00
sledgehammer999
f98edcab5c Merge pull request #7272 from vit9696/patch-1
Fix macOS window restoration after using hide icon
2017-08-15 21:13:58 +03:00
sledgehammer999
e5ea3bd707 Merge pull request #7253 from briankendall/fix_objc_errors
Fixed mac specific compiler errors and cleaned up Objective C code. Closes #7252
2017-08-15 21:06:09 +03:00
sledgehammer999
c87c1d2359 Use simpler ifdef style. 2017-08-15 21:01:55 +03:00
sledgehammer999
7bb9c69c08 Fix connection problems when a specific interface/ip is configured.
Closes #7235.
Bug related to #7099 and Qt.
2017-08-15 19:33:45 +03:00
sledgehammer999
25eb2edb86 Merge pull request #7273 from vit9696/borders
Unify preference window borders across the tabs
2017-08-15 18:14:11 +03:00
sledgehammer999
c2a8970109 Fix calculation of 'Average time in queue' stat under libtorrent 1.1.x 2017-08-15 17:38:41 +03:00
Vladimir Golovnev (qlassez)
59c14801cc Improve utils/fs.* and fix coding style 2017-08-15 16:17:57 +03:00
Mike Tzou
ea749bb052 Merge pull request #7276 from Chocobo1/pr_7063
Auto torrent management from webui context menu
2017-08-15 11:47:21 +08:00
vit9696
1cb69c9b43 Unify preference window borders across the tabs 2017-08-14 20:10:28 +03:00
sledgehammer999
89d8a2fe72 Merge pull request #7251 from Chocobo1/spacing
Add space between widgets in left side panel. Closes #7224.
2017-08-14 19:11:54 +03:00
Thomas Piccirello
4846b0ec28 Use single quotes for char.
Use case insensitive compare.
Swap conditionals
2017-08-14 23:15:03 +08:00
Thomas Piccirello
771033a449 Add auto torrent management to webui context menu (addresses #6815) 2017-08-14 23:14:46 +08:00
vit9696
16d7301046 Fix macOS window restoration after using hide icon 2017-08-14 12:38:42 +03:00
sledgehammer999
e2893fe68f Error out in configure script if the proper Qt/qmake version isn't found.
Closes #7250.
Partially reverts e64bb1de8c.
2017-08-13 20:29:53 +03:00
sledgehammer999
8d913d77dd Merge pull request #7266 from Chocobo1/coverity
Fix issues found by coverity scan
2017-08-13 20:10:04 +03:00
Mike Tzou
0522db3f19 Merge pull request #7061 from Piccirello/webui-rename-torrent
Rename torrent from webui context menu (addresses #6815)
2017-08-13 23:39:35 +08:00
Vladimir Golovnev
50cea9d912 Merge pull request #7268 from glassez/logging-strings
Use qUtf8Printable() for logging strings
2017-08-13 17:34:28 +04:00
Vladimir Golovnev (qlassez)
cff6a64e9f Use qUtf8Printable() for logging strings
qDebug(), qInfo(), qWarning(), qCritical(), qFatal() expect %s arguments
to be UTF-8 encoded, while qPrintable() converts to local 8-bit encoding.
Therefore qUtf8Printable() should be used for logging strings instead of
qPrintable().
2017-08-13 16:14:57 +03:00
Vladimir Golovnev
219a6b3ad1 Merge pull request #7267 from glassez/remove-temp
Don't remove shared temp folder
2017-08-13 17:00:40 +04:00
Thomas Piccirello
798c230634 Add option to rename torrent from WebUI
Addresses #6815.
2017-08-13 15:45:51 +03:00
Vladimir Golovnev (qlassez)
3801150a7a Don't remove shared temp folder
Don't remove shared temp folder when torrent finished and moved to
its "complete" folder. Only torrents with stripped root folder
have subfolder in temp folder so they should remove it.
2017-08-13 14:17:12 +03:00
Chocobo1
91b2b14ba5 Initialize variables
Remove unused variable
2017-08-13 15:28:36 +08:00
sledgehammer999
1b8cda7924 Follow project coding style. 2017-08-12 16:23:15 +03:00
sledgehammer999
31a4309077 Catch possible exceptions when parsing IPs. Closes #7249. 2017-08-12 16:23:14 +03:00
sledgehammer999
db3fd24cea Use dpiawareness=1 on Windows. Closes #5393. 2017-08-12 12:50:24 +03:00
Brian Kendall
62b956946f Fixed mac specific compiler errors and cleaned up Objective C code
Created new file src/gui/macutilities.mm, moved code from mainwindow.cpp and torrentcontentmodel.cpp that used the Objective C runtime into it and converted it to actual Objective C. Rewrote pixmapForExtension() so that it doesn't call into private Qt functions.
2017-08-11 20:51:16 -04:00
Chocobo1
04552f7921 Add space between widgets in left side panel. Closes #7224. 2017-08-11 21:37:33 +08:00
Vladimir Golovnev
9417105990 Merge pull request #7240 from glassez/fix-7226
Remove legacy RSS settings after converting. Closes #7226
2017-08-11 13:08:28 +04:00
sledgehammer999
593c24e5bd Merge pull request #7234 from thalieht/indentation
Remove indentation for category/tag filter widgets in all platforms
2017-08-11 11:25:24 +03:00
Vladimir Golovnev (qlassez)
7380bfa9e4 Remove legacy RSS settings after converting
Closes #7226.
2017-08-09 22:01:30 +03:00
sledgehammer999
6f0d16bca5 Merge pull request #7237 from Chocobo1/prefill_name
Prefill torrent name when creating a new torrent. Closes #7229.
2017-08-09 20:04:42 +03:00
Chocobo1
78dafc9cbe Prefill torrent name when creating a new torrent. Closes #7229. 2017-08-09 15:26:05 +08:00
thalieht
2da5800665 Remove indentation for category/tag filter widgets in all platforms 2017-08-08 23:43:23 +03:00
sledgehammer999
6270433237 Fix explicit Torrent Management Mode in Add New Torrent dialog. Closes #5602. 2017-08-07 20:01:30 +03:00
sledgehammer999
8214d25f9f Update Changelog. 2017-08-07 08:53:57 +03:00
sledgehammer999
df7565c9e2 Bump to 3.4.0beta 2017-08-07 08:39:50 +03:00
sledgehammer999
d48218bfe9 Sync translations from Transifex and run lupdate. 2017-08-07 08:34:40 +03:00
sledgehammer999
db653cbdac Merge pull request #7214 from Chocobo1/fixups
WebUI fixups
2017-08-07 08:11:32 +03:00
sledgehammer999
766f70c81a Merge pull request #7118 from vit9696/master
Fixed file type icons not displaying on macOS
2017-08-07 08:10:58 +03:00
Chocobo1
3e9311b096 Correctly handle translation
Fixup of 07a85a1018
2017-08-06 17:20:01 +08:00
Chocobo1
1bfb8d35cd Move "Copy hash" menu item above "Copy magnet link"
Fix wrong "Copy hash" icon used in webUI
Fixup of 145641ac41
2017-08-06 17:19:55 +08:00
Tom Piccirello
07a85a1018 Set torrent location from webui context menu (addresses #6815) (#7062)
* Add option to set torrent location from webui context menu (addresses #6815)

* Update debug messages

* Use logger

* Remove redundant curly braces

* Remove message

* Use log message from transferlistwidget

* Use QDir

* Remove unused import

* Check if newLocation is an empty string
2017-08-06 17:04:39 +08:00
Tom Piccirello
145641ac41 Add copy options to webui context menu (addresses #6815) (#7036)
* Add copy options to webui context menu
Add Copy Hash to gui (closes #6964)

* Use switch statement

* Use camel case, switch from signal to qaction.

* Rename variable

* Change variable name
2017-08-06 16:35:12 +08:00
sledgehammer999
08aa827366 Fix some more strings. 2017-08-06 01:47:05 +03:00
sledgehammer999
4d8a939291 Merge pull request #7173 from comradekingu/patch-1
display, URLs, esc '
2017-08-06 01:46:03 +03:00
sledgehammer999
e1f514042f Merge pull request #7207 from glassez/move-torrent
Don't replace existing files when manually relocating torrent
2017-08-05 20:26:05 +03:00
Vladimir Golovnev (qlassez)
7d78457fe0 Don't replace existing files when relocating torrent 2017-08-05 20:17:44 +03:00
Vladimir Golovnev (qlassez)
f067b8b37c Don't remove shared temp folder 2017-08-05 19:53:23 +03:00
sledgehammer999
6043584305 Merge pull request #7176 from glassez/temp-folder
Don't create subfolder inside temp folder. Closes #5503
2017-08-04 20:47:49 +03:00
sledgehammer999
bb02ccd574 Merge pull request #7132 from vlakoff/FindProcDLL
Windows installer: also detect running process when it is 64-bit
2017-08-04 16:55:15 +03:00
Eugene Shalygin
64b250903f Merge pull request #7083 from tgregerson/tags
Improve tag selection context menu. Closes #7060
2017-08-03 21:06:08 +02:00
Tony Gregerson
c5e73219bf Improve checkbox interface for selecting tags in the context menu. Closes #7060 2017-08-02 19:27:00 -05:00
Vladimir Golovnev (Glassez)
5f47d3b021 Don't create subfolder inside temp folder 2017-07-29 18:04:23 +03:00
Vladimir Golovnev (Glassez)
d22b626a02 Fix temporary subfolder isn't deleted 2017-07-28 15:16:02 +03:00
Allan Nordhøy
af9c0cca23 display, URLs, esc ' 2017-07-28 02:42:35 +02:00
vlakoff
a641c0bb2f Windows installer: also detect running process when it is 64-bit
Replacing FindProcDLL with a different one that can be found here:

http://forums.winamp.com/showthread.php?t=322583#post2777719
2017-07-20 19:33:19 +02:00
vit9696
6c3ab99e3c Fix file type icons not displaying on macOS 2017-07-19 21:37:38 +03:00
361 changed files with 87178 additions and 67142 deletions

View File

@@ -134,13 +134,13 @@ install:
cp "version" $HOME/hombebrew_cache
cd "$HOME/hombebrew_cache"
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar.rb
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar-1.1.6+git20180101.b45acf28a5+patched-configure.el_capitan.bottle.tar.gz
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar-1.1.7+git20180422.3ede0b9c20+patched-configure.el_capitan.bottle.tar.gz
fi
# Copy custom libtorrent bottle to homebrew's cache so it can find and install it
# Also install our custom libtorrent formula by passing the local path to it
# These 2 files are restored from Travis' cache.
cp "$HOME/hombebrew_cache/libtorrent-rasterbar-1.1.6+git20180101.b45acf28a5+patched-configure.el_capitan.bottle.tar.gz" "$(brew --cache)"
cp "$HOME/hombebrew_cache/libtorrent-rasterbar-1.1.7+git20180422.3ede0b9c20+patched-configure.el_capitan.bottle.tar.gz" "$(brew --cache)"
brew install "$HOME/hombebrew_cache/libtorrent-rasterbar.rb"
if [ "$build_system" = "cmake" ]; then

View File

@@ -1,6 +1,8 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(VERSION 3.5)
message(WARNING "No official support for cmake build system. If it is broken, please submit patches!")
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
include(FunctionReadVersion)
@@ -43,13 +45,13 @@ option(GUI "Allows to disable GUI for headless running. Disables QtDBus and the
option(WEBUI "Allows to disable the WebUI." ON)
if (WIN32)
option(STACKTRACE_WIN "")
else (WIN32)
option(STACKTRACE "Enable stacktrace feature" ON)
if (UNIX)
cmake_dependent_option(SYSTEMD "Install the systemd service file (headless only)" OFF
"NOT GUI" OFF)
cmake_dependent_option(DBUS "Enable use of QtDBus (GUI only)" ON "GUI" OFF)
endif(WIN32)
endif(UNIX)
add_subdirectory(src)

File diff suppressed because it is too large Load Diff

View File

@@ -1,35 +1,221 @@
# Filing an issue
# How to contribute to qBittorrent
### Must read
* If you aren't sure, you can ask on the [**forum**](http://forum.qbittorrent.org) or read our [**wiki**](http://wiki.qbittorrent.org) first.
* Do a quick **search**. Others might already reported the issue.
* Write in **English**!
* Provide **version** information: (You can find version numbers at menu `Help -> About -> Libraries`)
```
qBittorrent:
Qt:
libtorrent:
boost:
OS version:
```
* Provide **steps** to reproduce the problem, it will be easier to pinpoint the fault.
* **Screenshots**! A screenshot is worth a thousand words. just upload it. [(How?)](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests)
There are three main ways to contribute to the project.
Read the respective section to find out more.
### Good to know
* **Be patient**. The dev team is small and resource limited. Devs finding their free time, analyzing the problem and fixing the issue, it all takes time. :clock3:
* If you can code, why not become a **contributor** by fixing the issue and open a pull request? :wink:
* Harsh words or threats won't help your situation. What's worse, your complain will (very likely) to be **ignored**. :fearful:
### Table Of Contents
* **[Bug reporting etiquette](#bug-reporting-etiquette)**
* **[Submitting an issue/bug report](#submitting-an-issuebug-report)**
* [What is an actual bug report?](#what-is-an-actual-bug-report)
* [Before submitting a bug report](#before-submitting-a-bug-report)
* [Steps to ensure a good bug report](#steps-to-ensure-a-good-bug-report)
* **[Suggesting enhancements/feature requests](#suggesting-enhancementsfeature-requests)**
* [Before submitting an enhancement/feature request](#before-submitting-an-enhancementfeature-request)
* [Steps to ensure a good enhancement/feature suggestion](#steps-to-ensure-a-good-enhancementfeature-suggestion)
* **[Opening a pull request](#opening-a-pull-request)**
* [Must read](#must-read)
* [Good to know](#good-to-know)
# Bug reporting etiquette
* Issues, pull requests, and comments must always be in **English.**
* This project is supported by volunteers, do not expect "customer support"-style interaction.
* **Be patient.** The development team is small and resource limited. Developers and contributors take from their free time to analyze the problem and fix the issue. :clock3:
* Harsh words or threats won't help your situation. What's worse, your complain will (very likely) be **ignored.** :fearful:
# Submitting an issue/bug report
This section guides you through submitting an issue/bug report for qBittorrent.
Following these guidelines helps maintainers and the community understand your report, reproduce the behavior, and find related reports.
Make sure to follow these rules carefully when submitting a bug report. Failure to do so will result in the issue being closed.
## What is an actual bug report?
Developers and contributors are not supposed to deal with issues for which little to no investigation to find the actual cause of a purported issue was made by the reporter.
Positive contributions are those which are reported with efforts to find the actual cause of an issue, or at the very least efforts were made to narrow it as much as possible.
Requiring people to investigate as much as possible before opening an issue will more than likely avoid burdening the project with invalid issues or issues unrelated to qBittorrent.
The following are _not_ bug reports. **Check the [wiki][wiki-url], [forum][forum-url] or other places for help and support for issues like these**:
- Explanation of qBittorrent options (see [wiki][wiki-url]).
- Help with WebUI setup.
- Help with embedded tracker setup.
- Help about BitTorrent in general.
- Issues with specific search plugins.
- Asking for specific builds of qBittorrent other than the current one. You can install older releases at your own risk or for regression testing purposes. Previous Windows and macOS builds are available [here][builds-url].
- If you want older Linux builds, you will have to compile them yourself from the corresponding commits, or ask someone on the [forum][forum-url] to do it for you.
- Possibly others. Read on and use common sense.
The issue tracker is for provable issues only: You will have to make the case that the issue is really with qBittorrent and not something else on your side.
To make a case means to provide detailed steps so that anybody can reproduce the issue.
Be sure to rule out that the issue is not caused by something specific on your side.
Issue reports for bugs that apparently aren't easily reproducible or that you can't figure out what triggers it even though you tried are OK.
Any issue opened without effort to provide the required details for developers, contributors or anybody else to reproduce the problem will be closed as invalid.
For example:
- Crash reports with just a stack trace.
- Speculated performance issues that do not come with actual profiling data + analysis supporting the claim.
## Before submitting a bug report
- **Do some basic troubleshooting (examples)**:
- Restart qBittorrent.
- Restart your PC.
- Update your OS (e.g. Windows updates).
- Update your network card drivers.
- Fully reinstall qBittorrent.
- etc...
- Make sure the problem is not caused by anti-virus or other program messing with your files.
- Check if you can reproduce the problem in the latest version of qBittorrent.
- **Check [forum][forum-url] and [wiki][wiki-url].** You might be able to find the cause of the problem and fix things yourself.
- **Check if the issue exists already in the issue tracker.**
- If it does and the issue is still open, add a comment to the existing issue instead of opening a new one.
- If you find a Closed issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.
- If the issue is with the search functionality:
- **Make sure you have [`python`][python-url] installed correctly (remember the search functionality requires a working python installation).**
- Make sure it is in fact a problem with the search functionality itself, and not a problem with the plugins. If something does not work properly with the search functionality, the first step is to rule out search plugin-related issues.
- For search plugin issues, report on the respective search plugin support page, or at [qbittorrent/search-plugins][search-plugins-url].
## Steps to ensure a good bug report
**Follow these guidelines** in order to provide as much useful information as possible right away. Not all of them are applicable to all issues, but you are expected to follow most of these steps (use common sense).
Otherwise, we've noticed that a lot of your time (and the developers') gets thrown away on exchanging back and forth to get this information.
* Use a **clear and descriptive title** for the issue to identify the problem.
* Post only **one specific issue per submission.**
* **Fill out the issue template properly.**
- **Make sure you are using qBittorrent on a supported platform.** Do not submit issues which can only be reproduced on beta/unsupported releases of supported operating systems (e.g. Windows 10 Insider, Ubuntu 12.04 LTS, etc).
These are unstable/unsupported platforms, and in all likelihood, whatever the issue is, it is not related to qBittorrent.
* **Specify the OS you're using, its version and architecture.**
* Examples: Windows 8.1 32-bit, Linux Mint 17.1 64-bit, Windows 10 Fall creators Update 64-bit, etc.
* **Report only if you run into the issue with an official stable release, a beta release, or with the most recent upstream changes (in this last case specify the specific commit you are on).** (beta testing is encouraged :smile:). We do not provide support for bugs on unofficial Windows builds.
* **Specify the version of qBittorrent** you are using, as well as its **architecture** (x86 or x64) and its **libraries' versions** (Help -> About -> Libraries).
* Specify **how you installed**:
- Linux: either from the PPA, your distribution's repositories, or compiled from source, or even possibly third-party repositories.
- Windows: either from the installer, or compiled from source, or even possibly third-party repositories.
- macOS: either from the installer, or compiled from source, or even possibly third-party repositories.
* **Describe the exact steps which reproduce the problem in as many details as possible.**
- For example, start by explaining how you started qBittorrent, e.g. was it via the terminal? Desktop icon? Did you start it as root or normal user?
- **When listing steps, don't just say what you did, but explain how you did it.**
- For example, if you added a torrent for download, did you do so via a `.torrent` file or via a magnet link? If it was with a torrent file did you do so by dragging the torrent file from the file manager to the transfer list, or did you use the "Add Torrent File" in the Top Bar?
- Describe the behavior you observed after following the steps and point out what exactly is the problem with that behavior; this is what we'll be looking for after executing the steps.
* **Explain which behavior you expected to see instead** and why.
* Use **screenshots/animated GIFs to help describe the issue** whenever appropriate [(How?)][attachments-howto-url].
* If the problem wasn't triggered by a specific action, describe what you were doing before the problem happened.
* **If you are reporting that qBittorrent crashes**, include the stack trace in the report; include it in a code block, a file attachment, or put it in a gist and provide link to that gist.
* **For performance-related issues**, include as much profiling data as you can (resource usage graphs, etc).
* Paste the **qBittorrent log** (or put the contents of the log in a gist and provide a link to the gist). The log can be viewed in the GUI (View -> Log -> tick all boxes). If you can't do that, the file is at:
- Linux: `~/.local/share/data/qBittorrent/logs/qBittorrent.log`
- Windows: `%LocalAppData%\qBittorrent\logs`
- macOS: `~/Library/Application Support/qBittorrent/qBittorrent.log`
* **Do NOT post comments like "+1" or "me too!"** without providing new relevant info on the issue. Using the built-in reactions is OK though. Remember that you can use the "subscribe" button to receive notifications of that report without having to comment first.
* If there seems to be an **issue with specific torrent files/magnet links**:
- Don't post private `.torrent` files/magnet links, or ones that point to copyrighted content. If you are willing, offer to email a link or the `.torrent` file itself to whoever developer is debugging it and requests it.
- Make sure you can't reproduce the problem with another client, to rule out the possibility that the issue is with the `.torrent` file/magnet link itself.
* A screenshot, transcription or file upload of any of **qBittorrent's preferences that differ from the defaults.** Please include everything different from the defaults whether or not it seems relevant to your issue.
* **Attachment rules**:
- Short logs and error messages can be pasted as quotes/code whenever small enough; otherwise make a gist with the contents and post the link to the gist.
- Avoid linking/attaching impractical file formats such as PDFs/Word documents with images. If you want to post an image, just post the image.
### Provide more context by answering these questions (if applicable):
- Can you **reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens (e.g. only happens with extremely large torrents/only happens after qBittorrent is open for more than 2 days/etc...)
- Did the problem start happening recently (e.g. after updating to a new version of qBittorrent) or was this always a problem?
- If the problem started happening recently, can you reproduce the problem in an older version of qBittorrent?
- Are you saving files locally (in a disk in your machine), or are you saving them remotely (e.g. network drives)?
- Are you using qBittorrent with multiple monitors? If so, can you reproduce the problem when you use a single monitor?
Good read: [How to Report Bugs Effectively][howto-report-bugs-url]
# Suggesting enhancements/feature requests
This section guides you through submitting an enhancement suggestion for qBittorrent, including completely new features and minor improvements to existing functionality.
Following these guidelines helps maintainers and the community understand your suggestion and find related suggestions.
## Before submitting an enhancement/feature request
* Check the [wiki][wiki-url] and [forum][forum-url] for tips — you might discover that the enhancement is already available.
* Most importantly, check if you're using the latest version of qBittorrent and if you can get the desired behavior by changing qBittorrent's settings.
* Check in the [releases][releases-url] page or on the [forum][forum-url], see if there's already a alpha/beta version with that enhancement.
* Perform a cursory search to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
## Steps to ensure a good enhancement/feature suggestion
- Specify which version of qBittorrent you're using.
- Specify the name and version of the OS you're using.
- Provide a step-by-step description of the suggested enhancement in as many details as possible.
- Describe the current behavior and explain which behavior you expected to see instead and why.
- Include screenshots and animated GIFs which help you demonstrate the steps or point out the part of qBittorrent which the suggestion is related to.
- If this enhancement exists in other BitTorrent clients, list those clients.
# Opening a pull request
### Must read
* Read our [**coding guidelines**](https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md). There are some scripts to help you: [uncrustify script](https://raw.githubusercontent.com/qbittorrent/qBittorrent/master/uncrustify.cfg), [astyle script](https://gist.github.com/Chocobo1/539cee860d1eef0acfa6), [(related thread)](https://github.com/qbittorrent/qBittorrent/issues/2192).
* Keep the title **short** and provide a **clear** description about what your pull request does.
* Provide **screenshots** for UI related changes.
* Keep your git commit history **clean** and **precise**. Commits like `xxx fixup` should not appear.
* If your commit fix a reported issue (for example #4134), add the following message to the commit `Closes #4134.`. Example [here](https://github.com/qbittorrent/qBittorrent/commit/a74bac20c4e8de9776bf9bb77fdc7526135d1988).
* Read our [**coding guidelines**][coding-guidelines-url]. There are some scripts to help you: [uncrustify script][uncrustify-script-url], [astyle script][astyle-script-url], [(related thread)][coding-guidelines-thread-url].
* Keep the title **short** and provide a **clear** description about what your pull request does.
* Provide **screenshots** for UI related changes.
* Keep your git commit history **clean** and **precise.** Refer to the section about "Git commit messages" in the [**coding guidelines**][coding-guidelines-url].
* If your commit fixes a reported issue (for example #4134), add the following message to the commit `Closes #4134.`. Example [here][commit-message-fix-issue-example-url].
### Good to know
* **Search** pull request history! Others might already implemented your idea and is waiting to be merged (or got rejected already). Save your precious time by doing a search first.
* When resolving merge conflicts, do `git rebase <target_branch_name>`, don't do `git pull`. Then you can start fixing the conflicts. Here is a good explanation: [link](https://www.atlassian.com/git/tutorials/merging-vs-rebasing).
* **Search** pull request history! Others might have already implemented your idea and it is waiting to be merged (or got rejected already). Save your precious time by doing a search first.
* When resolving merge conflicts, do `git rebase <target_branch_name>`, don't do `git pull`. Then you can start fixing the conflicts. Here is a good explanation: [link][merging-vs-rebasing-url].
[astyle-script-url]: https://gist.github.com/Chocobo1/539cee860d1eef0acfa6
[attachments-howto-url]: https://help.github.com/articles/file-attachments-on-issues-and-pull-requests
[coding-guidelines-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md
[coding-guidelines-thread-url]: https://github.com/qbittorrent/qBittorrent/issues/2192
[commit-message-fix-issue-example-url]: https://github.com/qbittorrent/qBittorrent/commit/c07cd440cd46345297debb47cb260f8688975f50
[forum-url]: http://forum.qbittorrent.org/
[howto-report-bugs-url]: https://www.chiark.greenend.org.uk/~sgtatham/bugs.html
[merging-vs-rebasing-url]: https://www.atlassian.com/git/tutorials/merging-vs-rebasing
[python-url]: https://www.python.org/
[releases-url]: https://github.com/qbittorrent/qBittorrent/releases
[search-plugins-url]: https://github.com/qbittorrent/search-plugins
[uncrustify-script-url]: https://raw.githubusercontent.com/qbittorrent/qBittorrent/master/uncrustify.cfg
[wiki-url]: https://github.com/qbittorrent/qBittorrent/wiki
[builds-url]: https://sourceforge.net/projects/qbittorrent/files/

142
Changelog

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
# - macro similar to target_link_libraries, which links Qt components
# names of the components are pased in Qt4/Qt5 agnostic way (Core, DBus, Xml...)
# names of the components are passed in Qt4/Qt5 agnostic way (Core, DBus, Xml...)
# and the macro links Qt4 ones if QT4_FOUND is set or Qt5 ones if not
macro (target_link_qt_components target)

View File

@@ -11,18 +11,17 @@ macro(qbt_set_compiler_options)
#-Wshadow -Wconversion ?
set(_GCC_COMMON_C_AND_CXX_FLAGS "-Wall -Wextra"
"-Wfloat-equal -Wcast-qual -Wcast-align"
"-Wsign-conversion -Winvalid-pch -Werror=return-type -Wno-long-long"
# -fstack-protector-all
"-Werror -Wno-error=deprecated-declarations"
"-Wsign-conversion -Winvalid-pch -Wno-long-long"
#"-fstack-protector-all"
#"-Werror -Wno-error=deprecated-declarations"
)
set (_GCC_COMMON_CXX_FLAGS "-fexceptions -frtti"
"-Woverloaded-virtual -Wold-style-cast -Wstrict-null-sentinel"
set(_GCC_COMMON_CXX_FLAGS "-fexceptions -frtti"
"-Woverloaded-virtual -Wold-style-cast"
"-Wnon-virtual-dtor -Wfloat-equal -Wcast-qual -Wcast-align"
"-Werror=overloaded-virtual"
# "-Weffc++"
"-Werror -Wno-error=cpp"
#"-Weffc++"
#"-Werror -Wno-error=cpp"
# we should modify code to make these ones obsolete
"-Wno-error=sign-conversion -Wno-error=float-equal"
#"-Wno-error=sign-conversion -Wno-error=float-equal"
)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
@@ -54,6 +53,20 @@ macro(qbt_set_compiler_options)
endif(${GLIBC_VERSION})
endif (CMAKE_SYSTEM_NAME MATCHES Linux)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# Clang 5.0 still doesn't support -Wstrict-null-sentinel
check_cxx_compiler_flag(-Wstrict-null-sentinel _STRICT_NULL_SENTINEL_IS_SUPPORTED)
if (_STRICT_NULL_SENTINEL_IS_SUPPORTED)
list(APPEND _GCC_COMMON_CXX_FLAGS "-Wstrict-null-sentinel")
endif (_STRICT_NULL_SENTINEL_IS_SUPPORTED)
# Code should be improved to render this not needed
list(APPEND _GCC_COMMON_CXX_FLAGS "-Wno-error=unused-function -Wno-error=inconsistent-missing-override")
else ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# GCC supports it
list(APPEND _GCC_COMMON_CXX_FLAGS "-Wstrict-null-sentinel")
endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
string(REPLACE ";" " " _GCC_COMMON_C_AND_CXX_FLAGS_STRING "${_GCC_COMMON_C_AND_CXX_FLAGS}")
string(REPLACE ";" " " _GCC_COMMON_CXX_FLAGS_STRING "${_GCC_COMMON_CXX_FLAGS}")

View File

@@ -58,4 +58,4 @@ DEFINES += BOOST_USE_WINAPI_VERSION=0x0501
#DEFINES += TORRENT_LINKING_SHARED
# Enable stack trace support
CONFIG += strace_win
CONFIG += stacktrace

68
configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for qbittorrent v4.0.4.
# Generated by GNU Autoconf 2.69 for qbittorrent v4.1.1.
#
# Report bugs to <bugs.qbittorrent.org>.
#
@@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='qbittorrent'
PACKAGE_TARNAME='qbittorrent'
PACKAGE_VERSION='v4.0.4'
PACKAGE_STRING='qbittorrent v4.0.4'
PACKAGE_VERSION='v4.1.1'
PACKAGE_STRING='qbittorrent v4.1.1'
PACKAGE_BUGREPORT='bugs.qbittorrent.org'
PACKAGE_URL='https://www.qbittorrent.org/'
@@ -717,6 +717,7 @@ enable_dependency_tracking
enable_silent_rules
with_qtsingleapplication
enable_debug
enable_stacktrace
enable_gui
enable_systemd
enable_webui
@@ -1296,7 +1297,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures qbittorrent v4.0.4 to adapt to many kinds of systems.
\`configure' configures qbittorrent v4.1.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1367,7 +1368,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of qbittorrent v4.0.4:";;
short | recursive ) echo "Configuration of qbittorrent v4.1.1:";;
esac
cat <<\_ACEOF
@@ -1382,6 +1383,7 @@ Optional Features:
--enable-silent-rules less verbose build output (undo: "make V=1")
--disable-silent-rules verbose build output (undo: "make V=0")
--enable-debug Enable debug build
--enable-stacktrace Enable stacktrace feature (default=auto)
--disable-gui Disable the GUI for headless running. Disables
QtDBus and the GeoIP Database.
--enable-systemd Install the systemd service file (headless only).
@@ -1501,7 +1503,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
qbittorrent configure v4.0.4
qbittorrent configure v4.1.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1640,7 +1642,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by qbittorrent $as_me v4.0.4, which was
It was created by qbittorrent $as_me v4.1.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3818,7 +3820,7 @@ fi
# Define the identity of the package.
PACKAGE='qbittorrent'
VERSION='v4.0.4'
VERSION='v4.1.1'
cat >>confdefs.h <<_ACEOF
@@ -4189,6 +4191,14 @@ else
fi
# Check whether --enable-stacktrace was given.
if test "${enable_stacktrace+set}" = set; then :
enableval=$enable_stacktrace;
else
enable_stacktrace=auto
fi
# Check whether --enable-gui was given.
if test "${enable_gui+set}" = set; then :
enableval=$enable_gui;
@@ -4389,6 +4399,39 @@ $as_echo "$enable_debug" >&6; }
as_fn_error $? "Unknown option \"$enable_debug\". Use either \"yes\" or \"no\"." "$LINENO" 5 ;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable the stacktrace feature" >&5
$as_echo_n "checking whether to enable the stacktrace feature... " >&6; }
case "x$enable_stacktrace" in #(
"xno") :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
QBT_REMOVE_CONFIG="$QBT_REMOVE_CONFIG stacktrace" ;; #(
"xyes") :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
QBT_ADD_CONFIG="$QBT_ADD_CONFIG stacktrace" ;; #(
"xauto") :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <execinfo.h>
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
QBT_ADD_CONFIG="$QBT_ADD_CONFIG stacktrace"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
QBT_REMOVE_CONFIG="$QBT_REMOVE_CONFIG stacktrace"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; #(
*) :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_stacktrace" >&5
$as_echo "$enable_stacktrace" >&6; }
as_fn_error $? "Unknown option \"$enable_stacktrace\". Use either \"yes\" or \"no\"." "$LINENO" 5 ;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable the GUI" >&5
$as_echo_n "checking whether to enable the GUI... " >&6; }
case "x$enable_gui" in #(
@@ -4636,7 +4679,6 @@ esac
# Check whether --with-boost was given.
if test "${with_boost+set}" = set; then :
withval=$with_boost;
@@ -6098,7 +6140,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by qbittorrent $as_me v4.0.4, which was
This file was extended by qbittorrent $as_me v4.1.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -6156,7 +6198,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
qbittorrent config.status v4.0.4
qbittorrent config.status v4.1.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -7413,7 +7455,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by qbittorrent $as_me v4.0.4, which was
This file was extended by qbittorrent $as_me v4.1.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -7471,7 +7513,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
qbittorrent config.status v4.0.4
qbittorrent config.status v4.1.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View File

@@ -1,4 +1,4 @@
AC_INIT([qbittorrent], [v4.0.4], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/])
AC_INIT([qbittorrent], [v4.1.1], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AC_PROG_CC
@@ -24,6 +24,12 @@ AC_ARG_ENABLE(debug,
[],
[enable_debug=no])
AC_ARG_ENABLE(stacktrace,
[AS_HELP_STRING([--enable-stacktrace],
[Enable stacktrace feature (default=auto)])],
[],
[enable_stacktrace=auto])
AC_ARG_ENABLE(gui,
[AS_HELP_STRING([--disable-gui],
[Disable the GUI for headless running. Disables QtDBus and the GeoIP Database.])],
@@ -80,6 +86,23 @@ AS_CASE(["x$enable_debug"],
[AC_MSG_RESULT([$enable_debug])
AC_MSG_ERROR([Unknown option "$enable_debug". Use either "yes" or "no".])])
AC_MSG_CHECKING([whether to enable the stacktrace feature])
AS_CASE(["x$enable_stacktrace"],
["xno"],
[AC_MSG_RESULT([no])
QBT_REMOVE_CONFIG="$QBT_REMOVE_CONFIG stacktrace"],
["xyes"],
[AC_MSG_RESULT([yes])
QBT_ADD_CONFIG="$QBT_ADD_CONFIG stacktrace"],
["xauto"],
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <execinfo.h>]])],
[AC_MSG_RESULT([yes])
QBT_ADD_CONFIG="$QBT_ADD_CONFIG stacktrace"],
[AC_MSG_RESULT([no])
QBT_REMOVE_CONFIG="$QBT_REMOVE_CONFIG stacktrace"])],
[AC_MSG_RESULT([$enable_stacktrace])
AC_MSG_ERROR([Unknown option "$enable_stacktrace". Use either "yes" or "no".])])
AC_MSG_CHECKING([whether to enable the GUI])
AS_CASE(["x$enable_gui"],
["xyes"],

2
dist/mac/Info.plist vendored
View File

@@ -45,7 +45,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>4.0.4</string>
<string>4.1.1</string>
<key>CFBundleSignature</key>
<string>qBit</string>
<key>CFBundleExecutable</key>

View File

@@ -27,7 +27,7 @@ XPStyle on
!define CSIDL_LOCALAPPDATA '0x1C' ;Local Application Data path
; Program specific
!define PROG_VERSION "4.0.4"
!define PROG_VERSION "4.1.1"
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun

View File

@@ -17,3 +17,7 @@ tarball.commands += xz -f $${PROJECT_NAME}-$${PROJECT_VERSION}.tar &&
tarball.commands += rm -fR $${PROJECT_NAME}-$${PROJECT_VERSION}
QMAKE_EXTRA_TARGETS += tarball
# For Qt Creator beautifier
DISTFILES += \
uncrustify.cfg

View File

@@ -51,9 +51,9 @@ if (NOT WEBUI)
add_definitions(-DDISABLE_WEBUI)
endif (NOT WEBUI)
if (STACKTRACE_WIN)
add_definitions(-DSTACKTRACE_WIN)
endif(STACKTRACE_WIN)
if (STACKTRACE)
add_definitions(-DSTACKTRACE)
endif(STACKTRACE)
# nogui {
# TARGET = qbittorrent-nox
# } else {

View File

@@ -53,16 +53,16 @@ if (WIN32)
list(APPEND QBT_APP_SOURCES ../qbittorrent.exe.manifest)
endif (WIN32)
if (UNIX)
list(APPEND QBT_APP_HEADERS stacktrace.h)
endif (UNIX)
if (STACKTRACE_WIN)
list(APPEND QBT_APP_HEADERS stacktrace_win.h)
if (GUI)
list(APPEND QBT_APP_HEADERS stacktrace_win_dlg.h)
endif (GUI)
endif (STACKTRACE_WIN)
if (STACKTRACE)
if (UNIX)
list(APPEND QBT_APP_HEADERS stacktrace.h)
else (UNIX)
list(APPEND QBT_APP_HEADERS stacktrace_win.h)
if (GUI)
list(APPEND QBT_APP_HEADERS stacktrace_win_dlg.h)
endif (GUI)
endif (UNIX)
endif (STACKTRACE)
# usesystemqtsingleapplication {
# nogui {

View File

@@ -25,12 +25,16 @@ SOURCES += \
$$PWD/filelogger.cpp \
$$PWD/main.cpp
unix: HEADERS += $$PWD/stacktrace.h
strace_win {
HEADERS += $$PWD/stacktrace_win.h
!nogui {
HEADERS += $$PWD/stacktrace_win_dlg.h
FORMS += $$PWD/stacktrace_win_dlg.ui
stacktrace {
unix {
HEADERS += $$PWD/stacktrace.h
}
else {
HEADERS += $$PWD/stacktrace_win.h
!nogui {
HEADERS += $$PWD/stacktrace_win_dlg.h
FORMS += $$PWD/stacktrace_win_dlg.ui
}
}
}

View File

@@ -27,62 +27,73 @@
* exception statement from your version.
*/
#include "application.h"
#include <algorithm>
#ifdef Q_OS_WIN
#include <memory>
#endif
#include <QAtomicInt>
#include <QDebug>
#include <QFileInfo>
#include <QLocale>
#include <QLibraryInfo>
#include <QSysInfo>
#include <QLocale>
#include <QProcess>
#include <QAtomicInt>
#include <QSysInfo>
#include "base/bittorrent/session.h"
#include "base/bittorrent/torrenthandle.h"
#include "base/iconprovider.h"
#include "base/logger.h"
#include "base/net/downloadmanager.h"
#include "base/net/geoipmanager.h"
#include "base/net/proxyconfigurationmanager.h"
#include "base/net/smtp.h"
#include "base/preferences.h"
#include "base/profile.h"
#include "base/rss/rss_autodownloader.h"
#include "base/rss/rss_session.h"
#include "base/scanfoldersmodel.h"
#include "base/settingsstorage.h"
#include "base/utils/fs.h"
#include "base/utils/misc.h"
#include "base/utils/string.h"
#include "filelogger.h"
#ifndef DISABLE_GUI
#include "gui/guiiconprovider.h"
#ifdef Q_OS_WIN
#include <windows.h>
#include <QSharedMemory>
#include <QSessionManager>
#include <QSharedMemory>
#endif // Q_OS_WIN
#ifdef Q_OS_MAC
#include <QFileOpenEvent>
#include <QFont>
#include <QUrl>
#endif // Q_OS_MAC
#include "mainwindow.h"
#include "addnewtorrentdialog.h"
#include "gui/guiiconprovider.h"
#include "mainwindow.h"
#include "shutdownconfirmdlg.h"
#else // DISABLE_GUI
#include <iostream>
#include <cstdio>
#endif // DISABLE_GUI
#ifdef Q_OS_WIN
#include <Shellapi.h>
#endif
#ifndef DISABLE_WEBUI
#include "webui/webui.h"
#endif
#include "application.h"
#include "filelogger.h"
#include "base/logger.h"
#include "base/preferences.h"
#include "base/settingsstorage.h"
#include "base/profile.h"
#include "base/utils/fs.h"
#include "base/utils/misc.h"
#include "base/iconprovider.h"
#include "base/scanfoldersmodel.h"
#include "base/net/smtp.h"
#include "base/net/downloadmanager.h"
#include "base/net/geoipmanager.h"
#include "base/net/proxyconfigurationmanager.h"
#include "base/bittorrent/session.h"
#include "base/bittorrent/torrenthandle.h"
#include "base/rss/rss_autodownloader.h"
#include "base/rss/rss_session.h"
namespace
{
#define SETTINGS_KEY(name) "Application/" name
// FileLogger properties keys
#define FILELOGGER_SETTINGS_KEY(name) SETTINGS_KEY("FileLogger/") name
#define FILELOGGER_SETTINGS_KEY(name) QStringLiteral(SETTINGS_KEY("FileLogger/") name)
const QString KEY_FILELOGGER_ENABLED = FILELOGGER_SETTINGS_KEY("Enabled");
const QString KEY_FILELOGGER_PATH = FILELOGGER_SETTINGS_KEY("Path");
const QString KEY_FILELOGGER_BACKUP = FILELOGGER_SETTINGS_KEY("Backup");
@@ -140,11 +151,11 @@ Application::Application(const QString &id, int &argc, char **argv)
#endif
#if defined(Q_OS_WIN) && !defined(DISABLE_GUI)
connect(this, SIGNAL(commitDataRequest(QSessionManager &)), this, SLOT(shutdownCleanup(QSessionManager &)), Qt::DirectConnection);
connect(this, &QGuiApplication::commitDataRequest, this, &Application::shutdownCleanup, Qt::DirectConnection);
#endif
connect(this, SIGNAL(messageReceived(const QString &)), SLOT(processMessage(const QString &)));
connect(this, SIGNAL(aboutToQuit()), SLOT(cleanup()));
connect(this, &Application::messageReceived, this, &Application::processMessage);
connect(this, &QCoreApplication::aboutToQuit, this, &Application::cleanup);
if (isFileLoggerEnabled())
m_fileLogger = new FileLogger(fileLoggerPath(), isFileLoggerBackup(), fileLoggerMaxSize(), isFileLoggerDeleteOld(), fileLoggerAge(), static_cast<FileLogger::FileLogAgeType>(fileLoggerAgeType()));
@@ -269,26 +280,58 @@ void Application::processMessage(const QString &message)
m_paramsQueue.append(params);
}
void Application::runExternalProgram(BitTorrent::TorrentHandle *const torrent) const
void Application::runExternalProgram(const BitTorrent::TorrentHandle *torrent) const
{
QString program = Preferences::instance()->getAutoRunProgram();
QString program = Preferences::instance()->getAutoRunProgram().trimmed();
program.replace("%N", torrent->name());
program.replace("%L", torrent->category());
QStringList tags = torrent->tags().toList();
std::sort(tags.begin(), tags.end(), Utils::String::naturalLessThan<Qt::CaseInsensitive>);
program.replace("%G", tags.join(','));
#if defined(Q_OS_WIN)
const auto chopPathSep = [](const QString &str) -> QString
{
if (str.endsWith('\\'))
return str.mid(0, (str.length() -1));
return str;
};
program.replace("%F", chopPathSep(Utils::Fs::toNativePath(torrent->contentPath())));
program.replace("%R", chopPathSep(Utils::Fs::toNativePath(torrent->rootPath())));
program.replace("%D", chopPathSep(Utils::Fs::toNativePath(torrent->savePath())));
#else
program.replace("%F", Utils::Fs::toNativePath(torrent->contentPath()));
program.replace("%R", Utils::Fs::toNativePath(torrent->rootPath()));
program.replace("%D", Utils::Fs::toNativePath(torrent->savePath()));
#endif
program.replace("%C", QString::number(torrent->filesCount()));
program.replace("%Z", QString::number(torrent->totalSize()));
program.replace("%T", torrent->currentTracker());
program.replace("%I", torrent->hash());
Logger *logger = Logger::instance();
logger->addMessage(tr("Torrent: %1, running external program, command: %2").arg(torrent->name()).arg(program));
logger->addMessage(tr("Torrent: %1, running external program, command: %2").arg(torrent->name(), program));
#if defined(Q_OS_UNIX)
QProcess::startDetached(QLatin1String("/bin/sh"), {QLatin1String("-c"), program});
#if defined(Q_OS_WIN)
std::unique_ptr<wchar_t[]> programWchar(new wchar_t[program.length() + 1] {});
program.toWCharArray(programWchar.get());
// Need to split arguments manually because QProcess::startDetached(QString)
// will strip off empty parameters.
// E.g. `python.exe "1" "" "3"` will become `python.exe "1" "3"`
int argCount = 0;
LPWSTR *args = ::CommandLineToArgvW(programWchar.get(), &argCount);
QStringList argList;
for (int i = 1; i < argCount; ++i)
argList += QString::fromWCharArray(args[i]);
QProcess::startDetached(QString::fromWCharArray(args[0]), argList);
::LocalFree(args);
#else
QProcess::startDetached(program);
QProcess::startDetached(QLatin1String("/bin/sh"), {QLatin1String("-c"), program});
#endif
}
@@ -401,7 +444,7 @@ void Application::processParams(const QStringList &params)
}
if (param.startsWith(QLatin1String("@addPaused="))) {
torrentParams.addPaused = param.mid(11).toInt() ? TriStateBool::True : TriStateBool::False;
torrentParams.addPaused = param.midRef(11).toInt() ? TriStateBool::True : TriStateBool::False;
continue;
}
@@ -426,7 +469,7 @@ void Application::processParams(const QStringList &params)
}
if (param.startsWith(QLatin1String("@skipDialog="))) {
skipTorrentDialog = param.mid(12).toInt() ? TriStateBool::True : TriStateBool::False;
skipTorrentDialog = param.midRef(12).toInt() ? TriStateBool::True : TriStateBool::False;
continue;
}
@@ -458,8 +501,8 @@ int Application::exec(const QStringList &params)
#endif
BitTorrent::Session::initInstance();
connect(BitTorrent::Session::instance(), SIGNAL(torrentFinished(BitTorrent::TorrentHandle *const)), SLOT(torrentFinished(BitTorrent::TorrentHandle *const)));
connect(BitTorrent::Session::instance(), SIGNAL(allTorrentsFinished()), SLOT(allTorrentsFinished()), Qt::QueuedConnection);
connect(BitTorrent::Session::instance(), &BitTorrent::Session::torrentFinished, this, &Application::torrentFinished);
connect(BitTorrent::Session::instance(), &BitTorrent::Session::allTorrentsFinished, this, &Application::allTorrentsFinished, Qt::QueuedConnection);
#ifndef DISABLE_COUNTRIES_RESOLUTION
Net::GeoIPManager::initInstance();
@@ -482,13 +525,16 @@ int Application::exec(const QStringList &params)
#ifndef DISABLE_WEBUI
Preferences* const pref = Preferences::instance();
// Display some information to the user
std::cout << std::endl << "******** " << qPrintable(tr("Information")) << " ********" << std::endl;
std::cout << qPrintable(tr("To control qBittorrent, access the Web UI at http://localhost:%1").arg(QString::number(pref->getWebUiPort()))) << std::endl;
std::cout << qPrintable(tr("The Web UI administrator user name is: %1").arg(pref->getWebUiUsername())) << std::endl;
const QString mesg = QString("\n******** %1 ********\n").arg(tr("Information"))
+ tr("To control qBittorrent, access the Web UI at %1")
.arg(QString("http://localhost:") + QString::number(pref->getWebUiPort())) + '\n'
+ tr("The Web UI administrator user name is: %1").arg(pref->getWebUiUsername()) + '\n';
printf("%s", qUtf8Printable(mesg));
qDebug() << "Password:" << pref->getWebUiPassword();
if (pref->getWebUiPassword() == "f6fdffe48c908deb0f4c3bd36c032e72") {
std::cout << qPrintable(tr("The Web UI administrator password is still the default one: %1").arg("adminadmin")) << std::endl;
std::cout << qPrintable(tr("This is a security risk, please consider changing your password from program preferences.")) << std::endl;
const QString warning = tr("The Web UI administrator password is still the default one: %1").arg("adminadmin") + '\n'
+ tr("This is a security risk, please consider changing your password from program preferences.") + '\n';
printf("%s", qUtf8Printable(warning));
}
#endif // DISABLE_WEBUI
#else
@@ -626,7 +672,7 @@ void Application::shutdownCleanup(QSessionManager &manager)
// According to the qt docs we shouldn't call quit() inside a slot.
// aboutToQuit() is never emitted if the user hits "Cancel" in
// the above dialog.
QTimer::singleShot(0, qApp, SLOT(quit()));
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
}
#endif
@@ -647,7 +693,7 @@ void Application::cleanup()
#ifdef Q_OS_WIN
typedef BOOL (WINAPI *PSHUTDOWNBRCREATE)(HWND, LPCWSTR);
PSHUTDOWNBRCREATE shutdownBRCreate = (PSHUTDOWNBRCREATE)::GetProcAddress(::GetModuleHandleW(L"User32.dll"), "ShutdownBlockReasonCreate");
const auto shutdownBRCreate = Utils::Misc::loadWinAPI<PSHUTDOWNBRCREATE>("User32.dll", "ShutdownBlockReasonCreate");
// Only available on Vista+
if (shutdownBRCreate)
shutdownBRCreate((HWND)m_window->effectiveWinId(), tr("Saving torrent progress...").toStdWString().c_str());
@@ -689,7 +735,7 @@ void Application::cleanup()
if (m_window) {
#ifdef Q_OS_WIN
typedef BOOL (WINAPI *PSHUTDOWNBRDESTROY)(HWND);
PSHUTDOWNBRDESTROY shutdownBRDestroy = (PSHUTDOWNBRDESTROY)::GetProcAddress(::GetModuleHandleW(L"User32.dll"), "ShutdownBlockReasonDestroy");
const auto shutdownBRDestroy = Utils::Misc::loadWinAPI<PSHUTDOWNBRDESTROY>("User32.dll", "ShutdownBlockReasonDestroy");
// Only available on Vista+
if (shutdownBRDestroy)
shutdownBRDestroy((HWND)m_window->effectiveWinId());

View File

@@ -110,9 +110,9 @@ public:
protected:
#ifndef DISABLE_GUI
#ifdef Q_OS_MAC
bool event(QEvent *);
bool event(QEvent *) override;
#endif
bool notify(QObject* receiver, QEvent* event);
bool notify(QObject* receiver, QEvent* event) override;
#endif
private slots:
@@ -146,7 +146,7 @@ private:
void initializeTranslation();
void processParams(const QStringList &params);
void runExternalProgram(BitTorrent::TorrentHandle *const torrent) const;
void runExternalProgram(const BitTorrent::TorrentHandle *torrent) const;
void sendNotificationEmail(const BitTorrent::TorrentHandle *torrent);
void validateCommandLineParameters();
};

View File

@@ -32,7 +32,7 @@
#include "cmdoptions.h"
#include <iostream>
#include <cstdio>
#include <QDebug>
#include <QFileInfo>
@@ -216,7 +216,7 @@ namespace
int res = val.toInt(&ok);
if (!ok) {
qDebug() << QObject::tr("Expected integer number in environment variable '%1', but got '%2'")
.arg(envVarName()).arg(val);
.arg(envVarName(), val);
return defaultValue;
}
return res;
@@ -293,7 +293,7 @@ namespace
}
else {
qDebug() << QObject::tr("Expected %1 in environment variable '%2', but got '%3'")
.arg(QLatin1String("true|false")).arg(envVarName()).arg(val);
.arg(QLatin1String("true|false"), envVarName(), val);
return TriStateBool::Undefined;
}
}
@@ -578,7 +578,7 @@ QString makeUsage(const QString &prgName)
void displayUsage(const QString &prgName)
{
#ifndef Q_OS_WIN
std::cout << qPrintable(makeUsage(prgName)) << std::endl;
printf("%s\n", qUtf8Printable(makeUsage(prgName)));
#else
QMessageBox msgBox(QMessageBox::Information, QObject::tr("Help"), makeUsage(prgName), QMessageBox::Ok);
msgBox.show(); // Need to be shown or to moveToCenter does not work

View File

@@ -41,7 +41,7 @@ FileLogger::FileLogger(const QString &path, const bool backup, const int maxSize
{
m_flusher.setInterval(0);
m_flusher.setSingleShot(true);
connect(&m_flusher, SIGNAL(timeout()), SLOT(flushLog()));
connect(&m_flusher, &QTimer::timeout, this, &FileLogger::flushLog);
changePath(path);
if (deleteOld)
@@ -51,7 +51,7 @@ FileLogger::FileLogger(const QString &path, const bool backup, const int maxSize
foreach (const Log::Msg& msg, logger->getMessages())
addLogMessage(msg);
connect(logger, SIGNAL(newLogMessage(const Log::Msg &)), SLOT(addLogMessage(const Log::Msg &)));
connect(logger, &Logger::newLogMessage, this, &FileLogger::addLogMessage);
}
FileLogger::~FileLogger()
@@ -83,21 +83,21 @@ void FileLogger::changePath(const QString& newPath)
void FileLogger::deleteOld(const int age, const FileLogAgeType ageType)
{
QDateTime date = QDateTime::currentDateTime();
QDir dir(m_path);
switch (ageType) {
case DAYS:
date = date.addDays(age);
break;
case MONTHS:
date = date.addMonths(age);
break;
default:
date = date.addYears(age);
}
QDir dir(Utils::Fs::branchPath(m_path));
foreach (const QFileInfo file, dir.entryInfoList(QStringList("qbittorrent.log.bak*"), QDir::Files | QDir::Writable, QDir::Time | QDir::Reversed)) {
if (file.lastModified() < date)
QDateTime modificationDate = file.lastModified();
switch (ageType) {
case DAYS:
modificationDate = modificationDate.addDays(age);
break;
case MONTHS:
modificationDate = modificationDate.addMonths(age);
break;
default:
modificationDate = modificationDate.addYears(age);
}
if (modificationDate > date)
break;
Utils::Fs::forceRemove(file.absoluteFilePath());
}
@@ -165,7 +165,7 @@ void FileLogger::openLogFile()
|| !m_logFile->setPermissions(QFile::ReadOwner | QFile::WriteOwner)) {
delete m_logFile;
m_logFile = nullptr;
Logger::instance()->addMessage(tr("An error occured while trying to open the log file. Logging to file is disabled."), Log::CRITICAL);
Logger::instance()->addMessage(tr("An error occurred while trying to open the log file. Logging to file is disabled."), Log::CRITICAL);
}
}

View File

@@ -29,6 +29,8 @@
* Contact : chris@qbittorrent.org
*/
#include <cstdlib>
#include <QDebug>
#include <QScopedPointer>
#include <QThread>
@@ -55,33 +57,28 @@ Q_IMPORT_PLUGIN(QICOPlugin)
#endif
#endif // DISABLE_GUI
#include <signal.h>
#ifdef STACKTRACE
#ifdef Q_OS_UNIX
#include <signal.h>
#include <execinfo.h>
#include "stacktrace.h"
#endif // Q_OS_UNIX
#ifdef STACKTRACE_WIN
#include <signal.h>
#else
#include "stacktrace_win.h"
#include "stacktrace_win_dlg.h"
#endif //STACKTRACE_WIN
#include <cstdlib>
#include <iostream>
#endif // Q_OS_UNIX
#endif //STACKTRACE
#include "application.h"
#include "base/profile.h"
#include "base/utils/misc.h"
#include "base/preferences.h"
#include "cmdoptions.h"
#include "upgrade.h"
// Signal handlers
#if defined(Q_OS_UNIX) || defined(STACKTRACE_WIN)
void sigNormalHandler(int signum);
#ifdef STACKTRACE
void sigAbnormalHandler(int signum);
#endif
// sys_signame[] is only defined in BSD
const char *sysSigName[] = {
#if defined(Q_OS_WIN)
@@ -96,7 +93,6 @@ const char *sysSigName[] = {
"SIGPWR", "SIGUNUSED"
#endif
};
#endif
#if !defined Q_OS_WIN && !defined Q_OS_HAIKU
void reportToUser(const char* str);
@@ -169,7 +165,7 @@ int main(int argc, char *argv[])
// Set environment variable
if (!qputenv("QBITTORRENT", QBT_VERSION))
std::cerr << "Couldn't set environment variable...\n";
fprintf(stderr, "Couldn't set environment variable...\n");
#ifndef DISABLE_GUI
if (!userAgreesWithLegalNotice())
@@ -257,9 +253,9 @@ int main(int argc, char *argv[])
showSplashScreen();
#endif
#if defined(Q_OS_UNIX) || defined(STACKTRACE_WIN)
signal(SIGINT, sigNormalHandler);
signal(SIGTERM, sigNormalHandler);
#ifdef STACKTRACE
signal(SIGABRT, sigAbnormalHandler);
signal(SIGSEGV, sigAbnormalHandler);
#endif
@@ -283,7 +279,6 @@ void reportToUser(const char* str)
}
#endif
#if defined(Q_OS_UNIX) || defined(STACKTRACE_WIN)
void sigNormalHandler(int signum)
{
#if !defined Q_OS_WIN && !defined Q_OS_HAIKU
@@ -297,6 +292,7 @@ void sigNormalHandler(int signum)
qApp->exit(); // unsafe, but exit anyway
}
#ifdef STACKTRACE
void sigAbnormalHandler(int signum)
{
const char *sigName = sysSigName[signum];
@@ -309,16 +305,18 @@ void sigAbnormalHandler(int signum)
reportToUser(sigName);
reportToUser("\n");
print_stacktrace(); // unsafe
#endif // !defined Q_OS_WIN && !defined Q_OS_HAIKU
#ifdef STACKTRACE_WIN
#endif
#if defined Q_OS_WIN
StraceDlg dlg; // unsafe
dlg.setStacktraceString(QLatin1String(sigName), straceWin::getBacktrace());
dlg.exec();
#endif // STACKTRACE_WIN
#endif
signal(signum, SIG_DFL);
raise(signum);
}
#endif // defined(Q_OS_UNIX) || defined(STACKTRACE_WIN)
#endif // STACKTRACE
#if !defined(DISABLE_GUI)
void showSplashScreen()
@@ -331,14 +329,14 @@ void showSplashScreen()
painter.drawText(224 - painter.fontMetrics().width(version), 270, version);
QSplashScreen *splash = new QSplashScreen(splash_img);
splash->show();
QTimer::singleShot(1500, splash, SLOT(deleteLater()));
QTimer::singleShot(1500, splash, &QObject::deleteLater);
qApp->processEvents();
}
#if defined(Q_OS_UNIX)
void setupDpi()
{
if (qgetenv("QT_AUTO_SCREEN_SCALE_FACTOR").isEmpty())
if (qEnvironmentVariableIsEmpty("QT_AUTO_SCREEN_SCALE_FACTOR"))
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
}
#endif // Q_OS_UNIX
@@ -346,7 +344,7 @@ void setupDpi()
void displayVersion()
{
std::cout << qPrintable(qApp->applicationName()) << " " << QBT_VERSION << std::endl;
printf("%s %s\n", qUtf8Printable(qApp->applicationName()), QBT_VERSION);
}
void displayBadArgMessage(const QString& message)
@@ -359,9 +357,10 @@ void displayBadArgMessage(const QString& message)
msgBox.move(Utils::Misc::screenCenter(&msgBox));
msgBox.exec();
#else
std::cerr << qPrintable(QObject::tr("Bad command line: "));
std::cerr << qPrintable(message) << std::endl;
std::cerr << qPrintable(help) << std::endl;
const QString errMsg = QObject::tr("Bad command line: ") + '\n'
+ message + '\n'
+ help + '\n';
fprintf(stderr, "%s", qUtf8Printable(errMsg));
#endif
}
@@ -372,9 +371,12 @@ bool userAgreesWithLegalNotice()
return true;
#ifdef DISABLE_GUI
std::cout << std::endl << "*** " << qPrintable(QObject::tr("Legal Notice")) << " ***" << std::endl;
std::cout << qPrintable(QObject::tr("qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility.\n\nNo further notices will be issued.")) << std::endl << std::endl;
std::cout << qPrintable(QObject::tr("Press %1 key to accept and continue...").arg("'y'")) << std::endl;
const QString eula = QString("\n*** %1 ***\n").arg(QObject::tr("Legal Notice"))
+ QObject::tr("qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility.") + "\n\n"
+ QObject::tr("No further notices will be issued.") + "\n\n"
+ QObject::tr("Press %1 key to accept and continue...").arg("'y'") + '\n';
printf("%s", qUtf8Printable(eula));
char ret = getchar(); // Read pressed key
if (ret == 'y' || ret == 'Y') {
// Save the answer

View File

@@ -138,7 +138,7 @@ bool straceWin::makeRelativePath(const QString& dir, QString& file)
QString straceWin::getSourcePathAndLineNumber(HANDLE hProcess, DWORD64 addr)
{
IMAGEHLP_LINE64 line = {0};
IMAGEHLP_LINE64 line {};
line.SizeOfStruct = sizeof(IMAGEHLP_LINE64);
DWORD dwDisplacement = 0;
@@ -291,7 +291,7 @@ const QString straceWin::getBacktrace()
demangle(funcName);
#endif
// now ihsf.InstructionOffset points to the instruction that follows CALL instuction
// now ihsf.InstructionOffset points to the instruction that follows CALL instruction
// decrease the query address by one byte to point somewhere in the CALL instruction byte sequence
sourceFile = getSourcePathAndLineNumber(hProcess, ihsf.InstructionOffset - 1);
}

View File

@@ -61,10 +61,11 @@
bool userAcceptsUpgrade()
{
#ifdef DISABLE_GUI
std::cout << std::endl << "*** " << qPrintable(QObject::tr("Upgrade")) << " ***" << std::endl;
printf("\n*** %s ***\n", qUtf8Printable(QObject::tr("Upgrade")));
char ret = '\0';
do {
std::cout << qPrintable(QObject::tr("You updated from an older version that saved things differently. You must migrate to the new saving system. You will not be able to use an older version than v3.3.0 again. Continue? [y/n]")) << std::endl;
printf("%s\n"
, qUtf8Printable(QObject::tr("You updated from an older version that saved things differently. You must migrate to the new saving system. You will not be able to use an older version than v3.3.0 again. Continue? [y/n]")));
ret = getchar(); // Read pressed key
}
while ((ret != 'y') && (ret != 'Y') && (ret != 'n') && (ret != 'N'));
@@ -113,12 +114,27 @@ bool upgradeResumeFile(const QString &filepath, const QVariantHash &oldTorrent =
bool v3_3 = false;
int queuePosition = 0;
QString outFilePath = filepath;
QRegExp rx(QLatin1String("([A-Fa-f0-9]{40})\\.fastresume\\.(\\d+)$"));
QRegExp rx(QLatin1String("([A-Fa-f0-9]{40})\\.fastresume\\.(.+)$"));
if (rx.indexIn(filepath) != -1) {
// old v3.3.x format
// Old v3.3.x format had a number at the end indicating the queue position.
// The naming scheme was '<infohash>.fastresume.<queueposition>'.
// However, QSaveFile, which uses QTemporaryFile internally, might leave
// non-commited files behind eg after a crash. These files have the
// naming scheme '<infohash>.fastresume.XXXXXX' where each X is a random
// character. So we detect if the last part is present. Then check if it
// is 6 chars long. If all the 6 chars are digits we assume it is an old
// v3.3.x format. Otherwise it is considered a non-commited fastresume
// and is deleted, because it may be a corrupted/incomplete fastresume.
// NOTE: When the upgrade code is removed, we must continue to perform
// cleanup of non-commited QSaveFile/QTemporaryFile fastresumes
queuePosition = rx.cap(2).toInt();
if ((rx.cap(2).size() == 6) && (queuePosition <= 99999)) {
Utils::Fs::forceRemove(filepath);
return true;
}
v3_3 = true;
outFilePath.replace(QRegExp("\\.\\d+$"), "");
outFilePath.replace(QRegExp("\\.fastresume\\..+$"), ".fastresume");
}
else {
queuePosition = fastOld.dict_find_int_value("qBt-queuePosition", 0);
@@ -129,6 +145,15 @@ bool upgradeResumeFile(const QString &filepath, const QVariantHash &oldTorrent =
// in versions < 3.3 we have -1 for seeding torrents, so we convert it to 0
fastNew["qBt-queuePosition"] = (queuePosition >= 0 ? queuePosition : 0);
if (v3_3) {
QFileInfo oldFile(filepath);
QFileInfo newFile(outFilePath);
if (newFile.exists()
&& (oldFile.lastModified() < newFile.lastModified())) {
Utils::Fs::forceRemove(filepath);
return true;
}
}
QFile file2(outFilePath);
QVector<char> out;
libtorrent::bencode(std::back_inserter(out), fastNew);
@@ -186,9 +211,10 @@ bool upgrade(bool ask = true)
}
}
foreach (const QString &hash, oldResumeData.keys()) {
QVariantHash oldTorrent = oldResumeData[hash].toHash();
for (auto i = oldResumeData.cbegin(); i != oldResumeData.cend(); ++i) {
const QVariantHash oldTorrent = i.value().toHash();
if (oldTorrent.value("is_magnet", false).toBool()) {
const QString &hash = i.key();
libtorrent::entry resumeData;
resumeData["qBt-magnetUri"] = oldTorrent.value("magnet_uri").toString().toStdString();
resumeData["qBt-paused"] = false;

View File

@@ -19,6 +19,7 @@ bittorrent/torrentinfo.h
bittorrent/tracker.h
bittorrent/trackerentry.h
http/connection.h
http/httperror.h
http/irequesthandler.h
http/requestparser.h
http/responsebuilder.h
@@ -43,6 +44,10 @@ rss/rss_feed.h
rss/rss_folder.h
rss/rss_item.h
rss/rss_session.h
search/searchdownloadhandler.h
search/searchhandler.h
search/searchpluginmanager.h
utils/bytearray.h
utils/fs.h
utils/gzip.h
utils/misc.h
@@ -50,7 +55,9 @@ utils/net.h
utils/random.h
utils/string.h
utils/version.h
algorithm.h
asyncfilestorage.h
exceptions.h
filesystemwatcher.h
global.h
iconprovider.h
@@ -59,7 +66,6 @@ logger.h
preferences.h
profile.h
scanfoldersmodel.h
searchengine.h
settingsstorage.h
torrentfileguard.h
torrentfilter.h
@@ -84,6 +90,7 @@ bittorrent/torrentinfo.cpp
bittorrent/tracker.cpp
bittorrent/trackerentry.cpp
http/connection.cpp
http/httperror.cpp
http/requestparser.cpp
http/responsebuilder.cpp
http/responsegenerator.cpp
@@ -106,6 +113,10 @@ rss/rss_feed.cpp
rss/rss_folder.cpp
rss/rss_item.cpp
rss/rss_session.cpp
search/searchdownloadhandler.cpp
search/searchhandler.cpp
search/searchpluginmanager.cpp
utils/bytearray.cpp
utils/fs.cpp
utils/gzip.cpp
utils/misc.cpp
@@ -113,13 +124,13 @@ utils/net.cpp
utils/random.cpp
utils/string.cpp
asyncfilestorage.cpp
exceptions.cpp
filesystemwatcher.cpp
iconprovider.cpp
logger.cpp
preferences.cpp
profile.cpp
scanfoldersmodel.cpp
searchengine.cpp
settingsstorage.cpp
torrentfileguard.cpp
torrentfilter.cpp

View File

@@ -1,6 +1,6 @@
/*
* Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2014 Vladimir Golovnev <glassez@yandex.ru>
* Copyright (C) 2018 Vladimir Golovnev <glassez@yandex.ru>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -26,26 +26,16 @@
* exception statement from your version.
*/
#ifndef JSONUTILS_H
#define JSONUTILS_H
#pragma once
#include <QVariant>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
namespace json {
inline QByteArray toJson(const QVariant& var)
namespace Dict
{
// To be used with QMap, QHash and it's variants
template <typename Dictionary, typename BinaryPredicate>
void removeIf(Dictionary &&dict, BinaryPredicate p)
{
return QJsonDocument::fromVariant(var).toJson(QJsonDocument::Compact);
auto it = dict.begin();
while (it != dict.end())
it = (p(it.key(), it.value()) ? dict.erase(it) : it + 1);
}
inline QVariant fromJson(const QString& json)
{
return QJsonDocument::fromJson(json.toUtf8()).toVariant();
}
}
#endif // JSONUTILS_H

View File

@@ -34,14 +34,14 @@
#include <QFile>
#include <QObject>
class AsyncFileStorageError: public std::runtime_error
class AsyncFileStorageError : public std::runtime_error
{
public:
explicit AsyncFileStorageError(const QString &message);
QString message() const;
};
class AsyncFileStorage: public QObject
class AsyncFileStorage : public QObject
{
Q_OBJECT

View File

@@ -1,4 +1,5 @@
HEADERS += \
$$PWD/algorithm.h \
$$PWD/asyncfilestorage.h \
$$PWD/bittorrent/addtorrentparams.h \
$$PWD/bittorrent/cachestatus.h \
@@ -17,9 +18,11 @@ HEADERS += \
$$PWD/bittorrent/torrentinfo.h \
$$PWD/bittorrent/tracker.h \
$$PWD/bittorrent/trackerentry.h \
$$PWD/exceptions.h \
$$PWD/filesystemwatcher.h \
$$PWD/global.h \
$$PWD/http/connection.h \
$$PWD/http/httperror.h \
$$PWD/http/irequesthandler.h \
$$PWD/http/requestparser.h \
$$PWD/http/responsebuilder.h \
@@ -50,7 +53,9 @@ HEADERS += \
$$PWD/rss/rss_item.h \
$$PWD/rss/rss_session.h \
$$PWD/scanfoldersmodel.h \
$$PWD/searchengine.h \
$$PWD/search/searchhandler.h \
$$PWD/search/searchdownloadhandler.h \
$$PWD/search/searchpluginmanager.h \
$$PWD/settingsstorage.h \
$$PWD/settingvalue.h \
$$PWD/torrentfileguard.h \
@@ -58,6 +63,7 @@ HEADERS += \
$$PWD/tristatebool.h \
$$PWD/types.h \
$$PWD/unicodestrings.h \
$$PWD/utils/bytearray.h \
$$PWD/utils/fs.h \
$$PWD/utils/gzip.h \
$$PWD/utils/misc.h \
@@ -82,8 +88,10 @@ SOURCES += \
$$PWD/bittorrent/torrentinfo.cpp \
$$PWD/bittorrent/tracker.cpp \
$$PWD/bittorrent/trackerentry.cpp \
$$PWD/exceptions.cpp \
$$PWD/filesystemwatcher.cpp \
$$PWD/http/connection.cpp \
$$PWD/http/httperror.cpp \
$$PWD/http/requestparser.cpp \
$$PWD/http/responsebuilder.cpp \
$$PWD/http/responsegenerator.cpp \
@@ -111,11 +119,14 @@ SOURCES += \
$$PWD/rss/rss_item.cpp \
$$PWD/rss/rss_session.cpp \
$$PWD/scanfoldersmodel.cpp \
$$PWD/searchengine.cpp \
$$PWD/search/searchdownloadhandler.cpp \
$$PWD/search/searchhandler.cpp \
$$PWD/search/searchpluginmanager.cpp \
$$PWD/settingsstorage.cpp \
$$PWD/torrentfileguard.cpp \
$$PWD/torrentfilter.cpp \
$$PWD/tristatebool.cpp \
$$PWD/utils/bytearray.cpp \
$$PWD/utils/fs.cpp \
$$PWD/utils/gzip.cpp \
$$PWD/utils/misc.cpp \

View File

@@ -91,7 +91,7 @@ bool InfoHash::operator!=(const InfoHash &other) const
return (m_nativeHash != other.m_nativeHash);
}
uint qHash(const InfoHash &key, uint seed)
uint BitTorrent::qHash(const InfoHash &key, uint seed)
{
return qHash(static_cast<QString>(key), seed);
}

View File

@@ -54,8 +54,8 @@ namespace BitTorrent
libtorrent::sha1_hash m_nativeHash;
QString m_hashString;
};
uint qHash(const InfoHash &key, uint seed);
}
uint qHash(const BitTorrent::InfoHash &key, uint seed);
#endif // BITTORRENT_INFOHASH_H

View File

@@ -55,7 +55,7 @@ void BandwidthScheduler::start()
bool BandwidthScheduler::isTimeForAlternative() const
{
const Preferences* const pref = Preferences::instance();
const Preferences *const pref = Preferences::instance();
QTime start = pref->getSchedulerStartTime();
QTime end = pref->getSchedulerEndTime();

View File

@@ -33,7 +33,7 @@
#include <QObject>
#include <QTimer>
class BandwidthScheduler: public QObject
class BandwidthScheduler : public QObject
{
Q_OBJECT
Q_DISABLE_COPY(BandwidthScheduler)

View File

@@ -1,5 +1,5 @@
/*
* Bittorrent Client using Qt and libt.
* Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2006 Christophe Dumez <chris@qbittorrent.org>
*
* This program is free software; you can redistribute it and/or
@@ -147,13 +147,13 @@ int FilterParserThread::parseDATFilterFile()
if (bytesRead < 0)
break;
int dataSize = bytesRead + offset;
if (bytesRead == 0 && dataSize == 0)
if ((bytesRead == 0) && (dataSize == 0))
break;
for (start = 0; start < dataSize; ++start) {
endOfLine = -1;
// The file might have ended without the last line having a newline
if (!(bytesRead == 0 && dataSize > 0)) {
if (!((bytesRead == 0) && (dataSize > 0))) {
for (int i = start; i < dataSize; ++i) {
if (buffer[i] == '\n') {
endOfLine = i;
@@ -295,13 +295,13 @@ int FilterParserThread::parseP2PFilterFile()
if (bytesRead < 0)
break;
int dataSize = bytesRead + offset;
if (bytesRead == 0 && dataSize == 0)
if ((bytesRead == 0) && (dataSize == 0))
break;
for (start = 0; start < dataSize; ++start) {
endOfLine = -1;
// The file might have ended without the last line having a newline
if (!(bytesRead == 0 && dataSize > 0)) {
if (!((bytesRead == 0) && (dataSize > 0))) {
for (int i = start; i < dataSize; ++i) {
if (buffer[i] == '\n') {
endOfLine = i;
@@ -610,7 +610,7 @@ int FilterParserThread::findAndNullDelimiter(char *const data, char delimiter, i
return -1;
}
int FilterParserThread::trim(char* const data, int start, int end)
int FilterParserThread::trim(char *const data, int start, int end)
{
if (start >= end) return start;
int newStart = start;

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