Commit Graph

467 Commits

Author SHA1 Message Date
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
Chocobo1
2ebdf6060d Translate app help text 2022-07-29 11:13:59 +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
02d906d3ae Initialize pointer to a default value 2022-06-23 21:31:16 +08:00
Chocobo1
6de72ecc77 Make use of chrono literals from std library 2022-06-23 21:31:16 +08: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
af78344e5d Use coarse timestamp format
Since format in milliseconds doesn't add additional value and is
slower than just seconds.
2022-06-18 17:14:42 +08:00
Chocobo1
61adfea196 Fix garbage text appeared in log file
Fix up fed969ed64.
2022-06-18 04:18:27 +08:00
Chocobo1
fed969ed64 Avoid string encoding conversion
Use UTF-16 string literals to match QTextStream internal buffer
encoding.
2022-06-09 12:24:31 +08:00
Chocobo1
eddeda7bab Remove usage of QTextStream
Other classes already provide rich methods so avoid another
layer of QTextStream which slow things down (slightly).

PR #17180.
2022-06-09 11:18:41 +08:00
Chocobo1
9cd993d1da Merge pull request #17116 from Chocobo1/cleanup
Clean up usage of `static` keyword
2022-05-31 12:39:30 +08:00
sledgehammer999
242874e705 Use CMake to update translation files
It uses lupdate directly.
Qt's `qt_add_lupdate()` cmake function doesn't help much.
First of all it is Qt6 only.
Secondly, our project is split into multiple targets but we need all
strings into a single .ts file per language.
Thirdly, it looks like it will skip source files that are added conditionally into the build
via cmake condition checking (eg DBUS source files). We need to gather all strings present
in the source files regardless of the build configuration.

On another note, this is a step towards reducing dependency on qmake/autoconf.
2022-05-29 02:49:57 +03:00
Chocobo1
7eaaa8f92a Turn static variable into class member 2022-05-27 04:01:37 +08:00
Chocobo1
ca9f5a18d4 Suppress type narrowing warnings 2022-05-27 04:01:34 +08:00
Chocobo1
7c35904062 Use stacktrace dialog when GUI is enabled
PR #17022.
2022-05-13 12:12:36 +08:00
Chocobo1
5c3c6b63ba Migrate to Boost.Stacktrace
PR #17014.
2022-05-12 11:06:05 +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
21f4676b16 Rename method 2022-05-02 12:35:53 +08:00
Chocobo1
d69e6bb7aa Move stacktrace dialog to gui folder 2022-05-01 14:24:39 +08:00
Chocobo1
64d8db0c93 Move system signal related functions to its own file
And revise "signal safe print" function.
PR #16953.
2022-05-01 12:32:51 +08:00
Chocobo1
639ed40314 Disable Linux-specific function when compiling for Windows 2022-04-29 13:49:31 +08:00
Chocobo1
c5cbda0bbe Avoid splitting code over ifdef boundary
By removing unimportant debug message.
2022-04-29 13:49:31 +08:00
Chocobo1
59e37210f3 Use correct type for comparisons
`_write()` actually returns `int` type.

And fix wrong function parameters.

Closes #16938.
Closes #16944.
2022-04-29 13:49:31 +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
16bc0531f4 Simplify code 2022-04-05 10:39:23 +08:00