Commit Graph

257 Commits

Author SHA1 Message Date
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
Chocobo1
a59a6ce8e4 Remove redundant function
This helper function is useless after using `Path` class.
2022-04-11 13:07:53 +08:00
Chocobo1
c6b772da11 Improve function interface
`SettingsStorage` methods require `QString` so make `SettingValue` follow it.
`Path::operator+` can use `QStringView` to accept wider audience.
2022-03-26 12:41:02 +08:00
Chocobo1
4ca6de2b54 Revise string literal usage
PR #16703.
2022-03-26 11:53:50 +08:00
Chocobo1
bbd936fdfa Don't use explicit memory management
And avoid dangling pointers.
2022-03-24 14:44:38 +08:00
Vladimir Golovnev
c029122a8e Avoid integer overflow when calculating working set size 2022-03-23 07:56:59 +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
Chocobo1
f0dd7b7dae Use QString literals
This patch covers src/app and src/base folders.
Follow up of ab64ee872b.
2022-03-11 00:11:30 +08:00
Vladimir Golovnev
299f981441 Allow to limit max memory working set size
PR #16485.
2022-03-01 16:42:25 +03:00
Vladimir Golovnev
dd1bd8ad10 Implement class for handling filesystem paths
PR #15915.
2022-02-08 06:03:48 +03:00
Chocobo1
9f6130cbaa Move new line character out of translation string
PR #15948.
2022-01-08 12:24:49 +08:00
Vladimir Golovnev (Glassez)
fdbf8cb0ee Correctly concatenate path components 2022-01-03 19:44:47 +03:00
Chocobo1
aa3da942cb Use correct URL scheme when https is enabled
Closes #15844.
PR #15847.
2021-12-17 11:49:11 +08:00
Chocobo1
32698fe0be Migrate away from low-level SettingsStorage class
Also add `QFlags<T>` support to `SettingsStorage`.
PR #15693.
2021-11-08 13:23:33 +08:00
Chocobo1
a5c531f0a4 Create lock file in config folder instead of temp folder
Some linux distros seem to alter TMPDIR environment variable and
therefore hamper qbt ability to find the lock files. So use config
folder instead of TMPDIR folder to create/locate the lock files.
Note that this change will also make qbt become one instance per-user
instead of one instance per-system.

Closes #15646.
2021-11-01 14:08:49 +08:00
Chocobo1
ca28fc27dc Disable deprecated Qt functions
Also Qt6 by default set these attributes to our preferred value.
2021-10-13 12:00:21 +08:00
Chocobo1
03012cc175 Revise description wordings 2021-09-18 12:59:07 +08:00
Vladimir Golovnev (Glassez)
399d3ad85a Replace QStringRef with QStringView 2021-07-15 10:56:49 +03:00
Vladimir Golovnev (glassez)
27baa55443 Raise minimum Qt version to 5.15.2 2021-07-09 07:41:13 +03:00
Vladimir Golovnev
37f227ae74 Provide v1 and v2 infohashes in UI (#15097) 2021-06-25 20:44:23 +03:00
Vladimir Golovnev (Glassez)
97c7f3bc67 Raise minimum Qt version to 5.14 2021-06-03 08:56:41 +03:00
Vladimir Golovnev (Glassez)
2993fdb169 Improve "Watched folders" feature
Make "file system watcher" an application core component
and separate it from its presentation model.
2021-05-19 15:42:41 +03:00
Vladimir Golovnev (Glassez)
9565b695ef Unify custom exceptions 2021-05-18 08:40:05 +03:00
Chocobo1
fdc186c92f Revise tag related implementations
Fix #12690.
2021-04-27 11:47:52 +08:00
Chocobo1
a64bb1a990 Simplify natural sort classes interface
Now the comparison function/class should be constructed before usage.
This change also make it easier to plug in into various containers which
will require a compare function type (such as std::set).
2021-04-10 14:18:18 +08:00
Vladimir Golovnev
a8ae97ba91 Merge pull request #14427 from glassez/qt-5.12
Raise minimum Qt version to 5.12
2021-03-14 20:43:39 +03:00
Chocobo1
d74df935f4 Replace parameters in one step
This would avoid the unwanted effect of replacing parameter coming from
another parameter.
2021-03-14 14:03:42 +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)
8cfd803222 Drop implicit conversions between InfoHash and QString 2021-03-06 12:35:42 +03:00