Commit Graph

82 Commits

Author SHA1 Message Date
Vladimir Golovnev
93470f2080 Use subcategories unconditionally
PR #23585.
2025-12-16 21:56:15 +03:00
Vladimir Golovnev
c45dfb6662 Implement separate (advanced) "Tracker status" filter
PR #23452.
2025-12-03 10:09:35 +03:00
Chocobo1
9ce5463d9d Avoid container detachments
PR #23393.
2025-10-20 17:20:42 +08:00
anikey
5e11f4dc5e WebAPI: Add I2P peers to peer list
Fixes the second part of #19794.

PR #23061.
2025-08-29 20:51:31 +08:00
Mark Yu
8f709b5fbc WebUI: Implement Share limit action
PR #22989.
Closes #22984.
2025-07-20 16:39:31 +08:00
ivan
44bb1ac7eb WebUI: Add support for tracker status filter 2025-05-27 17:12:43 +03:00
Vladimir Golovnev (Glassez)
e309b17732 WebAPI: Provide announce stats within "sync" data 2025-05-27 11:28:13 +03:00
Vladimir Golovnev
732b2bcbdb Provide asynchronous results via QFuture
Makes asynchronous logic to look more straightforward.
Allows caller to choose blocking or non-blocking way of obtaining asynchronous results via the same interface.

PR #22598.
2025-04-27 16:24:07 +03:00
Chocobo1
8da43a4054 Use const accessor
This avoids an unnecessary check to the container internal atomic variable and prevents
potential detachment.

PR #22280.
2025-02-16 15:51:40 +08:00
Thomas Piccirello
f89c4c32ed Display External IP Address in status bar
This change displays the last detected IPv4 and/or IPv6 address(es) in the GUI and WebUI's status bar. This does not yet handle systems with multiple addresses of the same type (e.g. multiple IPv6 addresses).

PR #21383.

---------

Co-authored-by: Odin Vex <44311901+OdinVex@users.noreply.github.com>
2024-11-09 15:58:13 +08:00
Chocobo1
051d7137ea Use proper macro for unreachable switch cases
Those are the `default` cases which are not expected to hit (nor reachable) normally.

When the code is compiled with release mode and it reaches `Q_UNREACHABLE()`, it becomes
undefined behavior. So it rely on the developers to catch the errors in debug mode.
The upside of this is that the `switch` statement will be more optimized than not using it.
This also means the statements after `Q_UNREACHABLE()` isn't important. It allow anything to
preserve the intention of the code.

This macro is preferred over C++23 `std::unreachable` because it will automatically insert a
`Q_ASSERT(false)` with it.

PR #21752.
2024-11-05 11:55:55 +08:00
Vladimir Golovnev
91b2687032 WebAPI: Prevent producing empty sync data
PR #21688.
2024-10-28 09:40:13 +03:00
Vladimir Golovnev
7f4cb43a33 Fix incorrect sorting by "private" column
PR #21041.
2024-07-15 08:42:02 +03:00
Vladimir Golovnev
5ef2a1df07 Use QList explicitly
PR #21016.
2024-07-04 08:30:39 +03:00
Chocobo1
90383567b2 Revise Tracker related classes
And also rename them.

PR #20489.
2024-04-01 19:17:35 +08:00
thalieht
5d1c249606 Use Start/Stop instead of Resume/Pause
PR #20532.

---------

Co-authored-by: Vladimir Golovnev (Glassez) <glassez@yandex.ru>
2024-03-25 19:11:04 +03:00
Vladimir Golovnev
7a41192597 Add a class to represent a tag
PR #20028.
Closes #19744.
2023-12-05 17:01:09 +03:00
Vladimir Golovnev
c88bd7cb3f Improve free disk space checking for WebAPI
Use single free disk space checker instance for all the web sessions.

PR #19855.
Closes #19732.
2023-11-07 12:44:27 +03:00
Vladimir Golovnev
c051ee9409 Revamp tracker list widget
Internally redesign tracker list widget using Qt Model/View architecture.
Make tracker list sortable by any column.

PR #19633.
Closes #261.
2023-10-03 08:42:05 +03:00
Chocobo1
e31c3376bd Use library provided erase_if()
`Algorithm::removeIf()` is still valuable as `QHash::removeIf()` predicate require an
iterator or a `std::pair`, which both require more code to unpack the variable and therefore
cumbersome to use.

PR #19353.
2023-07-24 20:29:02 +08:00
Vladimir Golovnev
10ee1ab7a2 Switch to C++20
PR #19336.
2023-07-21 15:38:49 +03:00
Vladimir Golovnev
dbe79484d2 Drop support of Qt 5
Also remove usage of some deprecated stuff.

PR #19338.
2023-07-20 11:17:27 +03:00
Chocobo1
e6d85a468b Rename literal operator
Qt 6.4 introduced `QString operator""_s()` and the previous `""_qs` is
deprecated since Qt 6.8.
2023-06-18 03:32:44 +08:00
Chocobo1
179a61d75e Add curly braces 2023-05-07 19:41:55 +08:00
Bartu Özen
b55d4b1733 WebUI: Implement subcategories
PR #18740.
2023-04-02 11:02:22 +03:00
Vladimir Golovnev
d06f78dbbd Improve sync API performance
PR #18394.
2023-02-10 17:16:46 +03:00
Vladimir Golovnev
9cdf660ddb Use QThreadPool to invoke free disk space checking jobs
Prevent the creation of an excessive number of threads.
PR #18347.
Closes #18202.
2023-01-16 14:31:49 +03:00
Vladimir Golovnev
ac3ad17a9e Ensure thread is stopped before deleting QThread
PR #18037.
2022-12-08 08:37:14 +03:00
Hanabishi
6a560016dd Implement Peer ID Client column for Peers tab
PR #17940.
2022-11-06 12:21:31 +08:00
Vladimir Golovnev
616057a433 Improve session statistics handling
PR #17779.
2022-09-29 06:49:34 +03:00
Chocobo1
f6e2715f4a Apply forward declaration
Follow up 525692759d.
PR #17621.
2022-08-28 13:25:38 +08:00
Vladimir Golovnev
7527343629 Handle some torrent conflicts
PR #17576.
2022-08-23 07:47:20 +03:00
luzpaz
8736c9ec4c Fix various typos
Found via `codespell -q 3 -S *.ts,*.desktop,./src/base/3rdparty,./dist/windows/installer-translations -L ba,doas,ist,ro,ths`

PR #17317.
2022-07-06 13:11:11 +08:00
Vladimir Golovnev
f8a304abdc Implement base classes for application components
PR #17219.
2022-06-25 15:46:55 +03:00
Vladimir Golovnev
4471a6377e Have separate API controller instances per session
PR #16848.
2022-04-12 13:39:35 +03:00
Chocobo1
2854630b1c Use signed integer type for counters 2022-04-03 13:33:55 +08:00
Chocobo1
4ca6de2b54 Revise string literal usage
PR #16703.
2022-03-26 11:53:50 +08:00
Vladimir Golovnev (Glassez)
a4b606c6e9 Fix compilation issues due to inappropriate QString usage 2022-03-21 11:50:32 +03:00
Chocobo1
efc04645b7 Use QString literals
It covers src/webui and enables `QT_NO_CAST_FROM_ASCII`.
2022-03-20 13:33:40 +08:00
Vladimir Golovnev
dd1bd8ad10 Implement class for handling filesystem paths
PR #15915.
2022-02-08 06:03:48 +03:00
Chocobo1
d6e0164766 WebAPI: fix wrong key used for categories
Regression from 1c0f8b4289.
Closes #15969.
PR #15988.
2022-01-10 13:31:15 +08:00
Vladimir Golovnev (Glassez)
1c0f8b4289 Redesign "Incomplete folder" feature
Change "Incomplete/temp folder" term with "download folder".
Allow to set "download folder" per torrent (in manual mode) and per category (in automatic mode).
2022-01-01 20:58:49 +03:00
Vladimir Golovnev (Glassez)
62b50d1475 Make TorrentInfo immutable 2021-12-19 16:16:16 +03:00
Chocobo1
e3fe66d3ec Store enum type in settings directly
Affected settings will be migrated to new keys so nothing should break.

PR #15800.
2021-12-06 13:53:52 +08:00
Vladimir Golovnev (Glassez)
f022458383 Raise minimum supported Qt version to 5.12 2021-03-13 15:33:58 +03:00
Vladimir Golovnev (Glassez)
561b597031 Improve "info hash" handling
Define "torrent ID" concept, which is either a SHA1 hash for torrents of version 1,
or a SHA256 hash (truncated to SHA1 hash length) for torrents of version 2.
Add support for native libtorrent2 info hashes.
2021-03-12 12:43:14 +03:00
Vladimir Golovnev (Glassez)
7a8c05dc7c Improve tracker entries handling 2021-03-10 19:54:34 +03:00
Vladimir Golovnev (Glassez)
8cfd803222 Drop implicit conversions between InfoHash and QString 2021-03-06 12:35:42 +03:00
Vladimir Golovnev (Glassez)
0b4fef19f6 Remove redundant suffix from TorrentHandle class
Originally, it was just a wrapper for libtorrent::torrent_handle class, so it mimicked its name.
It was then transformed into a more complex aggregate, but the name was retained (just by inertia).
Unlike libtorrent::torrent_handle class in whose name "handle" means the pattern used,
it does not matter for qBittorrent classes and just eats up space in the source code.
2021-01-06 16:28:17 +03:00
Chocobo1
90a1ea4281 Don't use removed stat metric in libtorrent 2.0
For now, the metric is not entirely removed due to WebAPI still needs to
access it.
2020-12-24 12:04:14 +08:00