Commit Graph

5805 Commits

Author SHA1 Message Date
Robert Adam
05db5fe6fc
Merge PR #5003: FIX(server): ChannelListener IDs colliding across VServers
As the ChannelListener feature was implemented via a Singleton class,
there was only ever a single, global instance keeping track of listeners.
If however there were multiple VServers running from within a single
Mumble server instance, all of them would use the same ChannelListener
instance. That allowed for user-IDs to collide across different VServers
when it came to listener-management.

Thus listeners could appear/disappear seemingly at random whenever a
user on a different VServer (with the same session ID on that server)
changed their listeners.

Fixes #4366
2021-05-16 17:33:51 +02:00
Hosted Weblate
87df9ff889
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Matthaiks <kitynska@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/pl/
Translation: Mumble/Mumble Client
2021-05-16 16:52:02 +02:00
Hosted Weblate
edc34f55fa
TRANSLATION: Update German translation
Currently translated at 98.7% (2019 of 2045 strings)

TRANSLATION: Update German translation

Currently translated at 98.7% (2019 of 2045 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Robert Adam <dev@robert-adam.de>
Co-authored-by: Thomas Umbach <thum@vikings.net>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/de/
Translation: Mumble/Mumble Client
2021-05-16 16:52:01 +02:00
Robert Adam
f518ad8018 FIX(server): ChannelListener IDs colliding across VServers
As the ChannelListener feature was implemented via a Singleton class,
there was only ever a single, global instance keeping track of listeners.
If however there were multiple VServers running from within a single
Mumble server instance, all of them would use the same ChannelListener
instance. That allowed for user-IDs to collide across different VServers
when it came to listener-management.

Thus listeners could appear/disappear seemingly at random whenever a
user on a different VServer (with the same session ID on that server)
changed their listeners.

Fixes #4366
2021-05-16 16:21:25 +02:00
Robert Adam
06ec271076
Merge PR #5000: FIX(client): Don't escape characters in URL targets
If one was to send a link like
"http://localhost/?var1=foo&var2=bar&var3=baz" either as-is or as a
markdown-style link ("name"), the "&" character in the link
would get escaped as "&".

For displaying purposes this is fine, as the Mumble client re-interprets
these escape sequences before rendering them to the user. The same
escaping was done in the surrounding HTML element's href
specification. This lead to invalid URLs being used as link targets.

Therefore this commit makes sure that the href content of an HTML
element will be un-escaped before inserting into the HTML structure
(thus preserving the original characters in the href specification).

Fixes #4999
2021-05-16 15:48:34 +02:00
Robert Adam
d0bd1a0a1c FIX(client): Don't escape characters in URL targets
If one was to send a link like
"http://localhost/?var1=foo&var2=bar&var3=baz" either as-is or as a
markdown-style link ("[name](<url>)"), the "&" character in the link
would get escaped as "&amp;".

For displaying purposes this is fine, as the Mumble client re-interprets
these escape sequences before rendering them to the user. The same
escaping was done in the surrounding <a> HTML element's href
specification. This lead to invalid URLs being used as link targets.

Therefore this commit makes sure that the href content of an <a> HTML
element will be un-escaped before inserting into the HTML structure
(thus preserving the original characters in the href specification).

Fixes #4999
2021-05-16 15:09:19 +02:00
Hosted Weblate
fe275a05bd TRANSLATION: Update Korean translation
Currently translated at 60.3% (1233 of 2043 strings)

Co-authored-by: Linmalu(린마루) <gkdwns0103@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ko/
Translation: Mumble/Mumble Client
2021-05-16 14:20:52 +02:00
Robert Adam
1e388ac85f
Merge PR #4994: FIX(client): Echo cancellation options not translated
These Strings were not translated because as global static variables
they were created before the necessary translators are installed.

This commit fixes this by making sure the containing EchoCancelOption
objects are created lazily (at the time they are needed for the first
time), thus causing a delaying instantiation.

Fixes #4993
2021-05-16 09:32:41 +02:00
Robert Adam
a7bbef25bc TRANSLATION: Update translation files 2021-05-15 17:37:39 +02:00
Robert Adam
af1c4749a1 FEAT(client): Revamp positional audio settings page
The following things were changed/adapted:
- Ordering of sliders to be grouped more logically
- Tooltips
- Added SpinBox to display and manually edit values (also partly beyond
  the slider's range)
- Increased slider range for maximum distance to 200m (instead 100m)

Fixes #4990
2021-05-15 17:37:29 +02:00
Robert Adam
685480ef75 DOCS: Adde comments to AudioOutput::calcGain 2021-05-15 17:37:29 +02:00
Robert Adam
694ca16a6a MAINT: Remove overly verbose copyright notice 2021-05-15 17:37:29 +02:00
Hosted Weblate
a9c45d69ef
TRANSLATION: Update French translation
Currently translated at 93.0% (1902 of 2043 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: bendem <online+weblate.org@bendem.be>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/fr/
Translation: Mumble/Mumble Client
2021-05-14 23:18:06 +02:00
Hosted Weblate
f0c93abb2c
TRANSLATION: Update Korean translation
Currently translated at 59.2% (1210 of 2043 strings)

TRANSLATION: Update Korean translation

Currently translated at 57.9% (1184 of 2043 strings)

TRANSLATION: Update Korean translation

Currently translated at 55.8% (1142 of 2043 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: 린마루 <gkdwns0103@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ko/
Translation: Mumble/Mumble Client
2021-05-14 23:18:06 +02:00
Hosted Weblate
7fa3724a51
TRANSLATION: Update Dutch translation
Currently translated at 100.0% (2043 of 2043 strings)

TRANSLATION: Update Dutch translation

Currently translated at 99.9% (2042 of 2043 strings)

Co-authored-by: Gert-dev <qnyasgjhapqyuhoibr@kiabws.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: nocturnalfilth <nocturnalfilth@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/nl/
Translation: Mumble/Mumble Client
2021-05-14 23:18:06 +02:00
Hosted Weblate
81abf799ec
TRANSLATION: Update Russian translation
Currently translated at 99.8% (2039 of 2043 strings)

Co-authored-by: Game one <denis.melnyk.2006@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ru/
Translation: Mumble/Mumble Client
2021-05-14 23:18:06 +02:00
Davide Beatrici
0a31cd1c63 FEAT(client): Implement native support for PipeWire
Tested with PipeWire 0.3.26.

The implementation is quite basic and simple, yet it surpasses the JACK one in terms of features.
For example, support for the most common surround mappings is provided.

As opposed to JACK, an option to disable the auto endpoint connection is not provided.
However, it's something that can be easily implemented if needed.

Support for echo cancellation will definitely be added in future.
2021-05-13 21:09:35 +02:00
Robert Adam
c54a7dfbd9 FIX(client): Echo cancellation options not translated
These Strings were not translated because as global static variables
they were created before the necessary translators are installed.

This commit fixes this by making sure the containing EchoCancelOption
objects are created lazily (at the time they are needed for the first
time), thus causing a delaying instantiation.

Fixes #4993

Co-Authored-By: Jan Klass <kissaki@posteo.de>
2021-05-13 19:35:19 +02:00
Robert Adam
9e8a197f5c
Merge PR #4944: BUILD(cmake): Bundle Qt translations & other translation improvements 2021-05-13 15:35:41 +02:00
Robert Adam
19e16a0524 BUILD(cmake): Bundle Qt translations
In the old qmake build system we included the functionality to bundle Qt
translations into our executable (potentially overwriting some of them).

See f5bf5f17f3/src/mumble/mumble.pro (L692-L728)

This functionality was not ported over to cmake which could lead to Qt
standard texts (e.g. "Ok") not being translated.
This commit ports the old functionality to the new cmake build system.

Note however that this new functionality is only enabled by default, if
a static build of Mumble is created. In other instances the option can
be specified manually.

Fixes #4359
2021-05-13 14:10:00 +02:00
Robert Adam
68fa0d1b0f
Merge PR #4991: FIX(client, ui): TalkingUI font not scaling properly
When scaling the font size system-wide (e.g. set to 150%), the TalkingUI
might not adapt to this properly.

This started happening with the introduction of the
MultiStyleWidgetWrapper class (commit
ff040fb). As it turns out the
conversion from pixel to point size performed in its setFontSize did not
work properly, causing an incorrect font size to be used. And as the
font size also determines the icons size, these were not scaled properly
either.

The fix is to simply skip on the pixel to point conversion entirely and
instead use the appropriate unit when setting the respective StyleSheet
property. That way Qt can figure the conversion out as needed.
2021-05-13 10:58:57 +02:00
Robert Adam
9b353565a3 FIX(client, ui): TalkingUI font not scaling properly
When scaling the font size system-wide (e.g. set to 150%), the TalkingUI
might not adapt to this properly.

This started happening with the introduction of the
MultiStyleWidgetWrapper class (commit
ff040fb23c). As it turns out the
conversion from pixel to point size performed in its setFontSize did not
work properly, causing an incorrect font size to be used. And as the
font size also determines the icons size, these were not scaled properly
either.

The fix is to simply skip on the pixel to point conversion entirely and
instead use the appropriate unit when setting the respective StyleSheet
property. That way Qt can figure the conversion out as needed.
2021-05-13 10:01:06 +02:00
Hosted Weblate
cc57893e6b
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2043 of 2043 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Matthaiks <kitynska@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/pl/
Translation: Mumble/Mumble Client
2021-05-12 10:26:28 +02:00
Hosted Weblate
09b1e439c5
TRANSLATION: Update Chinese (Simplified) translation
Currently translated at 100.0% (2043 of 2043 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: deluxghost <deluxghost@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/zh_Hans/
Translation: Mumble/Mumble Client
2021-05-12 10:26:28 +02:00
Hosted Weblate
4e87e8ec9d
TRANSLATION: Update German translation
Currently translated at 98.7% (2018 of 2043 strings)

TRANSLATION: Update German translation

Currently translated at 98.4% (2012 of 2043 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Robert Adam <dev@robert-adam.de>
Co-authored-by: Thomas Umbach <thum@vikings.net>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/de/
Translation: Mumble/Mumble Client
2021-05-12 10:26:28 +02:00
Hosted Weblate
466e372fb9
TRANSLATION: Update Dutch translation
Currently translated at 99.9% (2042 of 2043 strings)

Co-authored-by: Gert-dev <qnyasgjhapqyuhoibr@kiabws.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/nl/
Translation: Mumble/Mumble Client
2021-05-12 10:26:28 +02:00
Hosted Weblate
6af18e319e
TRANSLATION: Update Hungarian translation
Currently translated at 79.1% (1618 of 2043 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: ViBE <vibe@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/hu/
Translation: Mumble/Mumble Client
2021-05-12 10:26:28 +02:00
Hosted Weblate
d1f2ce20f8
TRANSLATION: Update Turkish translation
Currently translated at 100.0% (2043 of 2043 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/tr/
Translation: Mumble/Mumble Client
2021-05-12 10:26:28 +02:00
Robert Adam
0f08870da5 BUILD(cmake): Revamp translation handling
Previously we re-generated our translation files when building, causing
them to change in the source tree.

With this new approach, we assume that the .ts files are already
up-to-date and thus we only compile them to .qm files that are stored in
the build directory. That way the source dir remains uncluttered.
2021-05-12 09:37:41 +02:00
Robert Adam
eb9944a7f9 TRANSLATION: Update translation files 2021-05-11 17:19:19 +02:00
Oğuz Ersen
5c2fc112a8 TRANSLATION: Update Turkish translation
Currently translated at 100.0% (2043 of 2043 strings)

Translation: Mumble/Mumble Client
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/tr/
2021-05-11 17:19:17 +02:00
Hosted Weblate
237c96e6dc TRANSLATION: Update Polish translation
Currently translated at 100.0% (2017 of 2017 strings)

Co-authored-by: Matthaiks <kitynska@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/pl/
Translation: Mumble/Mumble Client
2021-05-11 17:14:40 +02:00
Hosted Weblate
2cbbd43345 TRANSLATION: Update Chinese (Simplified) translation
Currently translated at 100.0% (2017 of 2017 strings)

Co-authored-by: deluxghost <deluxghost@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/zh_Hans/
Translation: Mumble/Mumble Client
2021-05-11 17:14:40 +02:00
Hosted Weblate
fcca2fc2cc TRANSLATION: Update Hungarian translation
Currently translated at 79.3% (1600 of 2017 strings)

Co-authored-by: ViBE <vibe@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/hu/
Translation: Mumble/Mumble Client
2021-05-11 17:00:57 +02:00
Robert Adam
ee14f8fe60
Merge PR #4985: FIX(translation): Wrong wording in search dialog 2021-05-11 16:56:50 +02:00
Robert Adam
4dc6715299 TRANSLATION: Update translation files 2021-05-11 15:10:19 +02:00
Robert Adam
40249c57f0 FIX(translation): Wrong wording in search dialog 2021-05-11 15:09:47 +02:00
Robert Adam
8c394b15cd
Merge PR #4967: FEAT(client): Search dialog
This PR introduces a fully featured search dialog.

Note that selections in the search dialog are synchronized with the main
UI and thus "whisper to selection" works by selecting something in the
search dialog as well.

There are also default actions that are executed when a search result is
activated (double-clicked or pressing enter on it). What that action is
exactly, can be configured in the settings.

Furthermore the context menu works as expected when invoked on entries
in the search result list.

In order to disambiguate the results, the full channel hierarchy to the
search result's parent channel is shown below each result.

The search dialog can be toggled via Ctrl+F when Mumble has focus or by
using the new entry in the toolbar. Additionally there is a new global
shortcut that can be configured for this purpose. Note however that on
Windows the SearchDialog won't obtain focus when toggled in a situation
when Mumble does not have focus already.
2021-05-11 13:18:13 +02:00
Robert Adam
f821fa5f9e TRANSLATION: Update translation files 2021-05-11 12:35:51 +02:00
Robert Adam
e59b890c36 FEAT(client): Search dialog
This commit introduces a fully featured search dialog.

Note that selections in the search dialog are synchronized with the main
UI and thus "whisper to selection" works by selecting something in the
search dialog as well.

There are also default actions that are executed when a search result is
activated (double-clicked or pressing enter on it). What that action is
exactly, can be configured in the settings.

Furthermore the context menu works as expected when invoked on entries
in the search result list.

In order to disambiguate the results, the full channel hierarchy to the
search result's parent channel is shown below each result.

The search dialog can be toggled via Ctrl+F when Mumble has focus or by
using the new entry in the toolbar. Additionally there is a new global
shortcut that can be configured for this purpose. Note however that on
Windows the search dialog won't obtain focus when toggled in a situation
when Mumble does not have focus already.
2021-05-11 12:35:24 +02:00
Robert Adam
ae3675d21d
Merge PR #4976: FIX(client): Windows loading/saving shortcuts
This pull request fixes the following issues:

The revamped raw inputs are not saving / loading shortcuts for the Windows client.

Keyboard shortcuts that are outside of the normal range show up as "Unknown"

Fix the shortcuts events not firing for input buttons when the structs were compared using the default memcmp.
2021-05-11 12:34:13 +02:00
Robert Adam
1bf8060d1b FEAT(client): Changed shorcut for channel filtering
The shortcut for toggling channel filters was Ctrl+F. While this makes
sense semantically, this specific shortcut is associated with starting a
search in 99% of all applications out there. Thus using it for something
else does not make for a very smooth user experience.

The new shortcut for filtering is thus set to be Alt+F instead.
2021-05-11 08:58:24 +02:00
Robert Adam
2783265620 FEAT(client): Disable keyboard search in UserView
Before the channel tree (UserView) in the main UI had a "feature" called
keyboard search. If the channel tree had focus and the user started
typing on their keyboard, Mumble would search for an entry in the tree
(either channel or user) that matches the invisibly typed search String.

This is however very impractical for searching as it is unclear if and
when this will expand collapsed entries or how subsequent searches work.
It is not even clear when the current search has ended and thus typing
another letter will start a new one.

And for users who don't expect such an invisible feature, this is a bad
experience as their channel tree selection jumps around wildly if they
accidentally push a key.

The search functionality will be provided by a more robust
implementation in a following commit.
2021-05-11 08:58:24 +02:00
Robert Adam
fb8d6d4881 REFAC(client): Move channel sep. setting to own category
This setting will be needed for other purposes as well and therefore
putting this into the TalkingUI group of settings in no longer
applicable.
2021-05-11 08:58:24 +02:00
Robert Adam
7a482a0aec REFAC(client): Use constant for root channel ID
Instead of implicitly assuming that the root channel has ID 0, there is
now an explicit constant (of the same value) that is used in all places
instead of literal "0" when referring to the root channel's ID.
2021-05-11 08:58:24 +02:00
Robert Adam
cdd37615dd REFAC(client): Move utility functions to own file 2021-05-11 08:58:24 +02:00
Septarius
1a04a17603
REFAC(client): Add comparator operators to Input structs
Fixes InputHid buttons not firing events. For consistency and to prevent hard to track down memcmp issues the other Input structs also have comparators.
This was partially solved by the memory initializations found earlier via lnt-uninitialized-local.

QVariant uses the comparators but defaults to memcmp when they don't exist. memcmp works until you have non-primitives like std::string.
QMetaType::registerComparators requires both the == and < operators for each metatype.

GlobalShortcutEngine::handleButton() has calls to qlButtonList.indexOf() which need comparisons to work properly.
2021-05-10 16:27:14 -06:00
Septarius
273a236fe4
FEAT(client): Show scan code for InputKeyboard
when GetKeyNameText() fails

For keys like F13 - F24 where GetKeyNameText() doesn't have a label.
Use similar technique to the InputMouse to show something other than "Unknown"
2021-05-10 16:18:35 -06:00
Septarius
4834ddef26
FIX(client): lnt-uninitialized-local in GlobalShortcut_win
lnt-uninitialized-local errors were preventing InputKeyboard shortcuts from being detected/fired after relaunch.
When initially setup they would work until the client was relaunched.
2021-05-10 16:15:17 -06:00
Septarius
247fe17dbd
FIX(client): Debug Assertion Failed in getPlugins
Expression: invalid comparator

Thrown when opening the Settings window.
This started happening when I had multiple shortcuts defined and running in debug mode.

std::sort requires strict weak ordering. This fixes the compare to provide it.
2021-05-10 16:15:17 -06:00