Commit graph

8839 commits

Author SHA1 Message Date
FranciscoPombal
a81789f4af Fix total connected peers count calculation
Also fix small typo in function name.
2020-03-17 18:01:57 +00:00
NotTsunami
c5aab39836 Allow other keypresses in LogListWidget
By not emitting the native signal, all other keypresses other than
the copy and select keysequences are ignored. This should reallow
keyboard navigation within LogListWidget objects.

Closes #12172.
2020-03-17 01:30:01 -04:00
Vladimir Golovnev
c323f64c96
Merge pull request #12188 from thalieht/queuemove
Append new move storage job to queue
2020-03-17 07:18:27 +03:00
thalieht
18289f2395 Append new move storage job to queue
fixup e4ff206e3c
2020-03-16 22:39:31 +02:00
Chocobo1
b7e7d8019c
Use helper function to construct QString
This is shorter and avoids the need of 2 constructors.
2020-03-16 21:27:42 +08:00
Chocobo1
6c307774f1
Get library version strings at runtime
We mostly use boost in header-only mode, so it is a non-trivial job to
get the version string at runtime.
2020-03-16 21:27:42 +08:00
Vladimir Golovnev
5127156ba4
Merge pull request #12035 from glassez/move-storage
Move torrent storages one by one
2020-03-13 15:59:05 +03:00
Mike Tzou
f80b7affd9
Merge pull request #12138 from Chocobo1/dist
Update Qt translations
2020-03-10 01:29:08 +08:00
Vladimir Golovnev
a7b342edcb
Merge pull request #12083 from glassez/app-instances
Allow single app instance per configuration
2020-03-09 07:40:48 +03:00
Chocobo1
7b25dd24d0
Update Qt translation files 2020-03-09 09:48:15 +08:00
Mike Tzou
92cc2a4f31
Merge pull request #12124 from Chocobo1/rename
Fix crash when renaming torrent contents
2020-03-08 00:16:02 +08:00
Mike Tzou
dc4e9e3779
Merge pull request #11813 from Chocobo1/python
Drop python2 support
2020-03-07 10:18:45 +08:00
Chocobo1
62b0d25140
Capture pointer by value 2020-03-07 10:06:35 +08:00
Mike Tzou
095ef67e30
Merge pull request #12102 from Kolcha/hidpi
Delegate GUI scaling work to Qt
2020-03-07 10:05:21 +08:00
Nick Korotysh
d49d7c1d82
Delegate GUI scaling work to Qt
Set Qt::AA_EnableHighDpiScaling application attribute when Qt 5.14.x or
newer is used. This fixes a lot of scaling issues on HiDPI displays.

Unfortunately, this flag must be set only before QApllication object
creation, so the only one place where it can be done is main().
2020-03-06 12:04:57 +03:00
Chocobo1
48e7191ef7
Initialize boolean variables 2020-03-06 15:50:55 +08:00
Chocobo1
9c6bc6c89a
Fix crash when renaming torrent contents
Closes #10328.
2020-03-06 15:50:37 +08:00
Vladimir Golovnev (Glassez)
38e54206d5
Allow single app instance per configuration 2020-03-06 08:59:59 +03:00
Mike Tzou
73ee901c45
Merge pull request #12113 from Chocobo1/smart_ptr
Use helper functions to construct smart pointers
2020-03-06 13:12:41 +08:00
Chocobo1
290d198977
Use proper type for piece index 2020-03-06 01:47:28 +08:00
Chocobo1
2157e500ef
Use helper functions to construct smart pointers 2020-03-05 19:32:28 +08:00
Mike Tzou
ca01b049a6
Merge pull request #12108 from Chocobo1/bits
Avoid unnecessary memory writes
2020-03-04 23:50:12 +08:00
Mike Tzou
949daf6c73
Merge pull request #12037 from an0n666/seed-mode-fix
Check if file exists in seed mode
2020-03-04 23:49:47 +08:00
an0n666
f7d2085b0a Check if file exists in seed mode 2020-03-04 17:38:00 +06:00
Chocobo1
24cd7c3611
Avoid unnecessary memory writes
Before this change, qbt spent ~1% in these two functions, now it
only spends about ~0.5% in my naive testing.
2020-03-04 03:18:39 +08:00
Mike Tzou
1ca303cb0a
Merge pull request #12027 from NotTsunami/pr2
Improve the options tooltips
2020-03-03 17:47:23 +08:00
NotTsunami
f1788c76a9 Improve the options tooltips
* Fix wrong fields for translation comments
* Improve torrent management tooltip to cover both modes
* Add new tooltips for potentially confusing settings

Decent progress towards #6346, closes #9994, closes #11528
2020-03-02 23:55:08 -05:00
Vladimir Golovnev
b519ece18b
Merge pull request #12095 from glassez/resume-torrent
Let libtorrent decide whether to resume a torrent
2020-03-01 19:54:16 +03:00
Vladimir Golovnev (Glassez)
74884d57ec
Let libtorrent decide whether to resume a torrent 2020-03-01 08:08:01 +03:00
Mike Tzou
9649c2a163
Merge pull request #12043 from FranciscoPombal/fix-embedded-tracker
Fix embedded tracker
2020-02-27 21:06:58 +08:00
Vladimir Golovnev
4d2943a782
Merge pull request #12033 from glassez/save-torrent
Allow to save downloaded metadata as torrent file
2020-02-27 08:49:40 +03:00
FranciscoPombal
966f891d91 Fix response to event=stopped
BEP-3 says all tracker responses to valid announce requests should be bencoded dictionaries with at least the "peers" and "interval" keys; the "peers" key can be empty.

Also clarify support for BEP-21.
2020-02-26 20:47:33 +00:00
FranciscoPombal
af6f63f82c Don't use IPv4-mapped IPv6
Always register peers with either IPv4 or IPv6.
Fixes potential connection issues.

Also clarify related BEP-24 support.
2020-02-26 20:44:09 +00:00
FranciscoPombal
abc69dfd20 Fix BEP-23 support
The embedded tracker was returning a non-compliant response.
The peer lists should be packed strings instead of lists.

Also clarify level of compliance with BEP-7.
2020-02-26 20:42:14 +00:00
FranciscoPombal
9f045500d1 Fix IPv6 endianness 2020-02-26 20:42:07 +00:00
Vladimir Golovnev (Glassez)
e4ff206e3c
Move torrent storages one by one 2020-02-26 10:20:04 +03:00
Vladimir Golovnev (Glassez)
dd0cee44c1
Allow to save downloaded metadata as torrent file 2020-02-26 08:10:11 +03:00
Chocobo1
071ffd13de
Fix wrong field for translation comment
The `comment` field is used for disambiguation between identical
strings. Our case here should use the `extracomment` field which
meant as comment for translators.
2020-02-26 13:04:18 +08:00
Chocobo1
f4febb96b4
Remove misleading translation comment
Also it was using the wrong field for translation comment.
2020-02-26 12:55:19 +08:00
djt3
e6887fc950 Change placeholder text in torrent list's filter 2020-02-23 14:40:45 +00:00
FranciscoPombal
dc6a56afcb Revert using random port by default
Revert change introduced in https://github.com/qbittorrent/qBittorrent/pull/11637 and also revert the associated follow-up https://github.com/qbittorrent/qBittorrent/pull/12000.

Reason: https://github.com/arvidn/libtorrent/pull/4335
2020-02-21 14:47:37 +00:00
sledgehammer999
193da7f2f9
Merge pull request #12014 from sledgehammer999/alt_IP_db_provider
Use IP geolocation database by DB-IP instead of MaxMind
2020-02-18 17:05:52 +02:00
sledgehammer999
ea1481beef
Use IP geolocation database by DB-IP instead of MaxMind
Closes #11792
2020-02-18 16:11:28 +02:00
Mike Tzou
bf6a88b3d2
Merge pull request #12021 from Chocobo1/trackerentry
Simplify TrackerEntry::status() logic
2020-02-18 02:22:05 +08:00
Chocobo1
e825473289
Simplify TrackerEntry::status() logic 2020-02-17 18:46:30 +08:00
sledgehammer999
322ae3e0bc
Merge pull request #11825 from FranciscoPombal/stalled_filter
Add stalled filters to GUI and Web API/UI
2020-02-16 18:32:37 +02:00
Mike Tzou
04132f6266
Merge pull request #11999 from an0n666/fix-not-contacted-tracker
Do not list not contacted trackers as error
2020-02-16 20:27:41 +08:00
an0n666
8423f43209 Do not list not contacted trackers as error 2020-02-15 19:44:14 +00:00
sledgehammer999
385d7247b7
Merge pull request #12016 from Chocobo1/errMsg
Include resume folder path in exception message
2020-02-15 19:41:39 +02:00
Vladimir Golovnev
362305f339
Merge pull request #12013 from glassez/fix-rss
Don't access download handler after it's finished
2020-02-15 07:02:59 +03:00
Mike Tzou
dbea2d95f9
Merge pull request #12004 from Chocobo1/authCount
Add configurable ban options for WebUI
2020-02-15 09:43:16 +08:00
Chocobo1
45c357dfe2
Include resume folder path in exception message
The message in RuntimeError exception will be displayed to the users and
users would be clueless if we don't show the path.
2020-02-15 02:48:55 +08:00
Chocobo1
6eb190c373
Expose WebUI ban duration to users 2020-02-14 16:23:30 +08:00
Chocobo1
ec61ef5145
Fix coding inconsistencies in preferences.html
1. Format table tags properly
2. Add a proper label tag
3. Don't use abbreviation for seconds, we use full name everywhere else
2020-02-14 16:23:03 +08:00
Chocobo1
4f7b799732
Use QDeadlineTimer for tracking WebUI banned duration
It simplifies our code and the new timer is monotonic.
2020-02-14 16:22:52 +08:00
Vladimir Golovnev (Glassez)
3762514662
Don't access download handler after it's finished 2020-02-14 08:24:49 +03:00
Chocobo1
45bd79ee74
Close document properly after writing
Closing document explicitly is recommended by MDN:
https://developer.mozilla.org/en-US/docs/Web/API/Document/write
2020-02-14 12:47:18 +08:00
Chocobo1
f88d6b2e55
Expose WebUI ban counter to users 2020-02-14 12:31:12 +08:00
Mike Tzou
d5a4ebe7c9
Merge pull request #11998 from Kolcha/filter-list
Inherit text color for filter list elements
2020-02-14 11:34:55 +08:00
Mike Tzou
195889a854
Merge pull request #11785 from Tester798/fix-portable-mode
Fix portable mode
2020-02-14 11:30:32 +08:00
Mike Tzou
882978c80a
Merge pull request #12000 from an0n666/legacy-default-no-random-port
Keep legacy default for random port
2020-02-13 12:24:45 +08:00
Tester798
58711cbe7e Fix portable mode
Try to fix portable mode bug. Closes #11706, #11178, #7765.
2020-02-12 19:56:25 +02:00
Mike Tzou
316f34cbf5
Merge pull request #11994 from Chocobo1/profile
Unify singleton pattern in Profile class
2020-02-12 23:59:47 +08:00
an0n666
41d8585932 Keep legacy default for random port 2020-02-12 12:28:13 +00:00
Nick Korotysh
1e59dcdb6c
Inherit text color for filter list elements
Filter list (left side panel) in WebUI is implemented using <a> tags,
CSS defines default style for all <a> elements, and specific style for
filter list elements. Default style for <a> elements sets color, and
this color also used in list. This is looks not so well. So lets just
inherit text color from parent element, and as so as it is not set, so
default text color will be used.
This makes filter list looks like other UI elemets, making all UI more
consistent (like in desktop app).
2020-02-12 10:40:08 +03:00
Vladimir Golovnev
4a2fda7edc
Merge pull request #11995 from glassez/fix-magnet-redirect
Handle HTTP redirections manually
2020-02-12 09:25:39 +03:00
Vladimir Golovnev
1e63dcb400
Merge pull request #11847 from glassez/legacy-defaults
Keep legacy defaults for existing users
2020-02-11 18:44:03 +03:00
Chocobo1
5de75eff05
Unify singleton pattern in Profile class
1. Use unified function names `initInstance()` and `freeInstance()` and
make them public.
2. Add `freeInstance()` to avoid noise from memory leak detectors.
3. Let `instance()`return a pointer directly to avoid unnecessary
indirections when invoking functions.
2020-02-11 15:30:59 +08:00
Vladimir Golovnev (Glassez)
0c6c65f6f8
Keep legacy defaults for existing users 2020-02-11 09:53:12 +03:00
Vladimir Golovnev (Glassez)
86c95db91d Perform settings upgrade for existing user only 2020-02-11 09:40:57 +03:00
Vladimir Golovnev (Glassez)
8bb34482ea
Handle HTTP redirections manually
Qt doesn't support Magnet protocol so we need to handle all redirections
manually to allow redirections to Magnet URIs.
2020-02-11 09:31:42 +03:00
Nick Korotysh
536580ca6b
Use SVG image for WebUI favicon
This will allow browsers to get high quality icon with required
resolution instead of resizing some small raster image.
Browsers can have even more benefit from it. For example, Firefox uses
high resolution icon to display it in "Top Sites" instead of page
preview.

Nothing changes for browsers which doesn't support SVG favicons, older
PNG icon will be used in such case.
2020-02-09 08:52:32 +03:00
Chocobo1
baa13c044a
Drop python2 support
Closes #11811.
2020-02-08 12:36:45 +08:00
Chocobo1
a6cdba17f0
Fix singleton class ownership
We shouldn't allow Qt parent ownership in here.
2020-02-07 15:34:04 +08:00
NotTsunami
6748e8d787 Remove redundant null checks
Attempting to delete a null pointer is a noop in C++.

Closes #2864.

[1] https://isocpp.org/wiki/faq/freestore-mgmt#delete-handles-null
2020-02-03 16:38:51 -05:00
Chocobo1
b2ab6c1858
Let ReverseResolution always return/emit a result 2020-01-30 19:24:18 +08:00
Chocobo1
ff31bb86bc
Speed up lookup time
By adding another variable we can get O(1) lookup time instead of O(n).
Fix up 5f415c292d.
2020-01-30 19:23:54 +08:00
Chocobo1
a2ebd77eac
Manually abort lookup on class destruction
Some lookup might take longer so instead of waiting them, we abort them
manually.
2020-01-30 14:11:03 +08:00
Chocobo1
86e3d0d816
Improve ReverseResolution class
* Use QHostAddress type for IP
* Avoid double lookup
* Use larger cache size
2020-01-30 14:11:03 +08:00
Mike Tzou
11bea8d393
Merge pull request #11918 from thalieht/peerssameip
Show any multiple connections from the same IP in peer list
2020-01-30 12:59:17 +08:00
thalieht
5f415c292d Show any multiple connections from the same IP in peer list
The uniqueness of peers is now determined by their
IP, port and connection type (uTP etc.) instead of just their IP
2020-01-29 20:40:10 +02:00
Mike Tzou
4884788c0b
Merge pull request #11933 from Chocobo1/qhash
Improve qHash functions
2020-01-29 02:07:27 +08:00
Chocobo1
5905c085c6
Use systematic approach to generate hash
The basic idea is to hash each class member and then mix them with xor
operation.
However the `seed` must be handled with care, it should only be
introduced once when mixing the hashes of each class member, otherwise
under some circumstances the `seed` might xor with itself and thus break
the intended effect.
2020-01-27 18:14:27 +08:00
Chocobo1
1740f968df
Revise qHash function
Instead of xor and narrowing the integers ourselves, now we let qHash()
from Qt do the job properly.
2020-01-27 12:53:22 +08:00
Chocobo1
2b4490d8a7
Use faster hash function
qHash(QString) will need to hash/loop through all the data while the new
code will only need one memcpy() and a few bit manipulations.
2020-01-27 12:53:13 +08:00
Vladimir Golovnev (Glassez)
666e733a4a
Track settings changed event in TransferListModel 2020-01-24 07:42:39 +03:00
Vladimir Golovnev (Glassez)
099943ea3c
Fix hide zero values 2020-01-24 07:41:04 +03:00
Mike Tzou
c3ce1aaa3d
Merge pull request #11903 from Sakib-Abrar/gui-improvement
Show "∞" instead of " -1" in Preferences
2020-01-22 11:56:26 +08:00
Vladimir Golovnev
89e72b38ea
Merge pull request #11881 from glassez/extension
Simplify torrent startup handling
2020-01-22 06:11:33 +03:00
Sakib-Abrar
1768570bf9 Show "∞" instead of " -1" in Preferences 2020-01-22 00:06:19 +06:00
Vladimir Golovnev (Glassez)
f2285e1b63
Redesign torrent startup handling 2020-01-21 10:14:59 +03:00
Mike Tzou
01ad8a443c
Merge pull request #11892 from NotTsunami/cmake
CMake: Further CMake improvements and fixes
2020-01-20 11:59:51 +08:00
Vladimir Golovnev
75ebd54ea3
Merge pull request #11088 from jagannatharjun/organize-style
Reorganize UI theme selection
2020-01-20 06:56:54 +03:00
NotTsunami
b21ed0063b CMake: Fix WebUI checks
When the CMake system was last revamped, the configure variable was
changed from WEBUI to DISABLE_WEBUI, but we are still checking
against WEBUI. This behavior was changed in fa770871e9
2020-01-19 15:08:45 -05:00
Prince Gupta
c9e162cf8a Reorganize UI theme selection 2020-01-18 23:12:33 +05:30
Chocobo1
3fce1db2eb
Migrate away from deprecated settings
Libtorrent has deprecated `upnp_ignore_nonrouters` in
https://github.com/arvidn/libtorrent/pull/4251
2020-01-16 23:44:54 +08:00
Mike Tzou
e27c9bd020
Merge pull request #11871 from NotTsunami/bitwise
WebUI: Use correct operators in logical expressions
2020-01-14 12:54:56 +08:00
Mike Tzou
146e8213a5
Merge pull request #11781 from FranciscoPombal/piece_extent_affinity
Add piece_extent_affinity to AdvancedSettings
2020-01-14 12:53:39 +08:00
Vladimir Golovnev
990e451765
Merge pull request #11865 from shemanaev/fix/webui-files-rename
WebUI: Fix first row renaming in files tab
2020-01-14 07:14:13 +03:00
FranciscoPombal
df2fbb1edc Bump Web API version 2020-01-13 11:41:59 +00:00