Commit Graph

236 Commits

Author SHA1 Message Date
Victor Chernyakin
e045b4678d Use std::clamp() instead of various custom implementations
PR #19501.
2023-08-27 21:55:08 +03:00
Chocobo1
d8a03cd8d8 Use atomic primitives from standard library
QAtomicInteger underlying is using std::atomic structures, so
using std::atomic directly should not be a problem for us.

PR #19507.
2023-08-28 02:08:40 +08:00
Victor Chernyakin
34d30ed031 Replace Q_UNUSED with [[maybe_unused]] attribute
PR #19471.
2023-08-18 07:09:40 +03:00
Victor Chernyakin
f3f4610ba4 Convert Windows header names to lowercase
PR #19465.
2023-08-16 10:29:13 +03:00
Vladimir Golovnev
dcf3e97291 Implement gateway for adding new torrents
PR #19355.
2023-08-14 18:17:56 +03:00
Vladimir Golovnev
a0e41a11de Display error message when unrecoverable error occurred
PR #19462.
2023-08-14 16:03:57 +03: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
fbe93f0c47 Improve "apply memory working set" routine
Now it will try to raise the hard limit.
And also the log shows a more specific message when the new limit is not
applicable.

PR #19022.
2023-05-28 13:41:44 +08:00
Chocobo1
73134d5f4d Initialize member variables 2023-05-07 16:30:56 +08:00
Chocobo1
2059825597 Don't use instance for accessing static functions 2023-05-06 16:35:12 +08:00
Vladimir Golovnev
758ea7edca Improve logging of running external program
PR #18901.
2023-04-30 10:10:03 +03:00
Vladimir Golovnev
0dcbf9f698 Improve command line parameters dispatching
Encapsulate parameters dispatching in Application class.
Avoid serializing parameters when it is not necessary.

PR #18469.
2023-02-02 10:02:51 +03:00
Vladimir Golovnev
c58fb92365 Suppress warning when session cookie name isn't overridden
PR #18455.
2023-01-26 07:00:20 +03:00
sledgehammer999
ca72360b6f Merge pull request #18432 from sledgehammer999/chinese_fix
Migrate setting about Simplified Chinese locale
2023-01-25 01:17:54 +02:00
sledgehammer999
630b4ed3b9 Migrate settings much earlier 2023-01-24 10:23:12 +02:00
Vladimir Golovnev
2310dcd136 Reload system tray icon to replace menu
PR #18250.
Closes #18074.
2023-01-22 16:48:58 +03:00
Vladimir Golovnev
32e4371208 Improve startup window state handling
Replace current "Start qBittorrent minimized" option with "Initial window state" that allows to start qBittorrent as "hidden in system tray" while retaining regular "minimize to panel" functionality.

PR #18252.
Closes #487.
2023-01-16 14:57:56 +03:00
Vladimir Golovnev
5dbccf3473 Add all torrents passed via the command line
PR #18296.
Closes #18289.
2023-01-16 06:54:02 +03:00
Vladimir Golovnev
25ea0d274b Destroy desktop integration at correct place
Otherwise it is destructed in QObject destructor, i.e. after GUI application is already destructed.
This can be related to some problems with system tray icon.

PR #18108.
Closes #18093.
2022-11-30 20:09:51 +03:00
Chocobo1
93429840c8 Fix typos 2022-11-08 13:50:01 +08:00
BallsOfSpaghetti
fdba525e62 Introduce a 'change listen port' cmd option
Closes #17789.
PR #17862.
2022-10-25 12:43:38 +08:00
Vladimir Golovnev
4318de6dc5 Add ability to run external program on torrent added
PR #17646.
2022-09-04 07:51:50 +03:00
Chocobo1
fb37b0c147 Suppress warning
Seems `lupdate` tool cannot correctly recognize the class/context of `tr()` here, so specify the
class/context manually.
2022-09-03 15:26:40 +08:00
Chocobo1
06c704c740 Revise quote behavior
Now the behavior of double quotes aligns more as with issuing commands from shell/command line.
Related: https://github.com/qbittorrent/qBittorrent/pull/17453#issuecomment-1203372027

PR #17515.
2022-08-10 13:19:34 +08:00
Vladimir Golovnev
916e53c260 Show progress dialog on second instance run
PR #17516.
2022-08-09 19:12:12 +03:00
Vladimir Golovnev (Glassez)
d27dd85dfd Correctly replace desktop integration menu 2022-08-06 19:40:04 +03:00
Vladimir Golovnev (Glassez)
15515200ee Avoid race conditions between dialogs on startup 2022-08-06 15:01:35 +03:00
Vladimir Golovnev
e24aaa4ce1 Show startup progress dialog
PR #17389.
2022-08-03 07:14:26 +03:00
Chocobo1
0802b6d506 Fix empty string parameter was omitted
`QProcess::splitCommand()` will omit empty strings like `""` so provide
our own replacement.

Closes #13124.
2022-07-30 00:17:31 +08:00
Vladimir Golovnev
5b269a782a Prevent tray menu from being accessed after destruction
PR #17400.
2022-07-21 09:30:05 +03:00
Dmitry Vodopyanov
f20f479a4b Improve sender field in mail notifications
Problem statement: user sees its email address in email notification,
while it is better to have sender field app-personalized, like it did
in Nextcloud: they send notifications from user's email address and
add alias 'Nextcloud' to it.

This patch adds alias 'qBittorrent' to qBittorrent email notifications,
so user sees more user-friendly email notification.

PR #17374.
2022-07-18 13:22:30 +08:00
Vladimir Golovnev
cfdf5cffac Show remote access info after it is available
PR #17329.
2022-07-11 08:38:45 +03:00
Vladimir Golovnev
890630944d Extract desktop integration stuff into separate class
PR #17313.
2022-07-09 08:06:22 +03:00
Chocobo1
dba711d099 Use helper function for logging messages 2022-07-07 12:17:52 +08:00
Chocobo1
ec13bba4da Revise classes startup sequence
1. Initialize Logger class earlier so that it can record messages from other classes (for
   debugging purpose).
2. Deprioritize WebUI port adjustment. It is not a high priority in here.
3. Slightly deprioritize file logger initialization.
2022-07-07 12:16:48 +08:00
Chocobo1
ed2eadaf56 Work around application stuttering on Windows
This is observed by unusual high page faults when the stuttering occurs.
With this workaround, the high page faults still occurs but the GUI remains responsive.
2022-07-04 18:38:23 +08:00
Chocobo1
fa26333a5b Move "memory priority" settings to Application class 2022-07-04 18:38:20 +08:00
Vladimir Golovnev
be7cfb78de Restore BitTorrent session asynchronously
Reduce the total startup time of the application and maintain sufficient responsiveness of the UI during startup due to the following:
1. Load resume data from disk asynchronously in separate thread;
2. Split handling of loaded resume data in chunks;
3. Reduce the number of emitting signals.

PR #16840.
2022-07-04 12:48:21 +03:00
Chocobo1
25b3f2d1a6 Raise priority of the main "event loop" thread
The goal is to improve responsiveness of qbt when CPU resources are scarce.

Instead of lowering libtorrent threads priority, it is chosen to raise main event loop thread
priority to avoid getting messy with libtorrent internals.

Also on Windows, threads doesn't inherit thread priority from the parent thread and it always
use the default (normal) priority.

PR #17278.
2022-07-02 14:57:47 +08:00
summer
cc0a0b56ed Make working set limit available only on libtorrent 2.0.x builds
You can already control the cache size in libtorrent 1.2.x so it doesn't make sense to implement this limit for all use cases. Also there are some downsides to using working set size to limit memory usage such as unresponsive GUI when limit gets hit.

PR #17275.
2022-06-30 11:23:48 +08:00
Vladimir Golovnev
f8a304abdc Implement base classes for application components
PR #17219.
2022-06-25 15:46:55 +03:00
Chocobo1
8114c11d58 Add shutdown logging 2022-06-18 17:14:54 +08:00
Chocobo1
e3425cfa9e Defer closing logger instance
So that logger can still be used in shutdown stage.
2022-06-18 17:14:54 +08:00
Chocobo1
7eaaa8f92a Turn static variable into class member 2022-05-27 04:01:37 +08:00
Chocobo1
002d56d8b3 Fix type mismatch
msys2 was reporting the following error:
```
D:/a/qbittorent_msys2/qbittorent_msys2/src/qBittorrent/src/app/application.cpp: In member function 'void Application::applyMemoryWorkingSetLimit()':
D:/a/qbittorent_msys2/qbittorent_msys2/src/qBittorrent/src/app/application.cpp:777:36: error: no matching function for call to 'min(unsigned int, long unsigned int)'
  777 |     const SIZE_T minSize = std::min((64 * MiB), (maxSize / 2));
      |                            ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
```
2022-05-08 16:48:29 +08:00
Chocobo1
bc937d38a2 Allow to set "working set limit" on non-Windows OS
PR #16874.
2022-04-16 11:36:58 +08:00
Chocobo1
a2b85ba1fd Provide interface for Application class
PR #16864.
2022-04-14 12:04:58 +08:00
Chocobo1
3f762a416d Use proper method for deferred calls 2022-04-12 16:23:39 +08:00