diff options
author | Robert Adam <dev@robert-adam.de> | 2022-09-09 15:01:38 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-09 15:01:38 +0300 |
commit | 7c069ca6868348a36e34ab0f40ae62264fc6214a (patch) | |
tree | 45d6d093476511363941f489da9c6bf82b147f79 /src/mumble | |
parent | 264eac3b45970e45cba087241ffc2e322ae4eceb (diff) | |
parent | 61ff688da0ad92e8696a19e16dfc5423877a73fe (diff) |
Merge PR #4636: FEAT(client): Adds shortcut to listen to a channel
This introduces a new global shortcut that can be used to start or stop
listening to a configured channel.
Fixes #4486
Diffstat (limited to 'src/mumble')
54 files changed, 840 insertions, 39 deletions
diff --git a/src/mumble/CMakeLists.txt b/src/mumble/CMakeLists.txt index 80681555f..2189f9525 100644 --- a/src/mumble/CMakeLists.txt +++ b/src/mumble/CMakeLists.txt @@ -157,6 +157,7 @@ set(MUMBLE_SOURCES "GlobalShortcutButtons.h" "GlobalShortcutButtons.ui" "GlobalShortcutTarget.ui" + "GlobalShortcutTypes.h" "JSONSerialization.cpp" "JSONSerialization.h" "LCD.cpp" diff --git a/src/mumble/Database.cpp b/src/mumble/Database.cpp index 63677dd1a..d4aeb30fe 100644 --- a/src/mumble/Database.cpp +++ b/src/mumble/Database.cpp @@ -10,6 +10,7 @@ #include "Utils.h" #include "Version.h" #include "Global.h" +#include "GlobalShortcutTypes.h" #include <QSettings> #include <QtCore/QStandardPaths> @@ -163,7 +164,9 @@ Database::Database(const QString &dbname) { execQueryAndLogFailure( query, QLatin1String("CREATE TABLE IF NOT EXISTS `shortcut` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `digest` " - "BLOB, `shortcut` BLOB, `target` BLOB, `suppress` INTEGER)")); + "BLOB, `type` INTEGER, `shortcut` BLOB, `target` BLOB, `suppress` INTEGER)")); + query.exec(QLatin1String( + "ALTER TABLE `shortcut` ADD COLUMN `type` INTEGER")); // Upgrade path, failing this query is not noteworthy execQueryAndLogFailure(query, QLatin1String("CREATE INDEX IF NOT EXISTS `shortcut_host_port` ON `shortcut`(`digest`)")); @@ -546,13 +549,25 @@ QList< Shortcut > Database::getShortcuts(const QByteArray &digest) { QList< Shortcut > ql; QSqlQuery query(db); - query.prepare(QLatin1String("SELECT `shortcut`,`target`,`suppress` FROM `shortcut` WHERE `digest` = ?")); + query.prepare(QLatin1String("SELECT `type`, `shortcut`,`target`,`suppress` FROM `shortcut` WHERE `digest` = ?")); query.addBindValue(digest); execQueryAndLogFailure(query); while (query.next()) { Shortcut sc; - QByteArray a = query.value(0).toByteArray(); + QVariant type = query.value(0); + + if (type.isNull()) { + // The shortcut's type was originally not explicitly stored, because the assumption was that the only + // server-specific shortcuts (which are the ones we're dealing with here) are those configuring whispers or + // shouts. Thus, if the field is not set, we assume that we're loading a shortcut from that era, which means + // that we'll assume it to be a whisper/shout shortcut as well. + sc.iIndex = GlobalShortcutType::Whisper_Shout; + } else { + sc.iIndex = type.toInt(); + } + + QByteArray a = query.value(1).toByteArray(); { QDataStream s(&a, QIODevice::ReadOnly); @@ -560,7 +575,7 @@ QList< Shortcut > Database::getShortcuts(const QByteArray &digest) { s >> sc.qlButtons; } - a = query.value(1).toByteArray(); + a = query.value(2).toByteArray(); { QDataStream s(&a, QIODevice::ReadOnly); @@ -568,7 +583,7 @@ QList< Shortcut > Database::getShortcuts(const QByteArray &digest) { s >> sc.qvData; } - sc.bSuppress = query.value(2).toBool(); + sc.bSuppress = query.value(3).toBool(); ql << sc; } return ql; @@ -590,12 +605,14 @@ void Database::setShortcuts(const QByteArray &digest, const QList< Shortcut > &s query.addBindValue(digest); execQueryAndLogFailure(query); - query.prepare( - QLatin1String("INSERT INTO `shortcut` (`digest`, `shortcut`, `target`, `suppress`) VALUES (?,?,?,?)")); + query.prepare(QLatin1String( + "INSERT INTO `shortcut` (`digest`, `type`, `shortcut`, `target`, `suppress`) VALUES (?,?,?,?,?)")); for (const Shortcut &sc : shortcuts) { if (sc.isServerSpecific()) { query.addBindValue(digest); + query.addBindValue(sc.iIndex); + QByteArray a; { QDataStream s(&a, QIODevice::WriteOnly); diff --git a/src/mumble/GlobalShortcut.cpp b/src/mumble/GlobalShortcut.cpp index b0998f20c..e6f849f18 100644 --- a/src/mumble/GlobalShortcut.cpp +++ b/src/mumble/GlobalShortcut.cpp @@ -26,6 +26,8 @@ # include <QtCore/QOperatingSystemVersion> #endif +#include <cassert> + const QString GlobalShortcutConfig::name = QLatin1String("GlobalShortcutConfig"); /** @@ -104,6 +106,31 @@ int ShortcutToggleWidget::index() const { return itemData(currentIndex()).toInt(); } +ChannelSelectWidget::ChannelSelectWidget(QWidget *parent) : MUComboBox(parent) { + QReadLocker lock(&Channel::c_qrwlChannels); + + int index = 0; + + for (const Channel *currentChannel : Channel::c_qhChannels) { + assert(currentChannel); + + insertItem(index, currentChannel->qsName); + setItemData(index, currentChannel->iId); + + index++; + } + + model()->sort(0); +} + +void ChannelSelectWidget::setCurrentChannel(const ChannelTarget &target) { + setCurrentIndex(findData(target.channelID)); +} + +ChannelTarget ChannelSelectWidget::currentChannel() const { + return itemData(currentIndex()).toInt(); +} + void iterateChannelChildren(QTreeWidgetItem *root, Channel *chan, QMap< int, QTreeWidgetItem * > &map) { foreach (Channel *c, chan->qlChannels) { QTreeWidgetItem *sub = new QTreeWidgetItem(root, QStringList(c->qsName)); @@ -432,6 +459,8 @@ ShortcutDelegate::ShortcutDelegate(QObject *p) : QStyledItemDelegate(p) { factory->registerEditor(QVariant::Int, new QStandardItemEditorCreator< ShortcutToggleWidget >()); factory->registerEditor(static_cast< QVariant::Type >(QVariant::fromValue(ShortcutTarget()).userType()), new QStandardItemEditorCreator< ShortcutTargetWidget >()); + factory->registerEditor(static_cast< QVariant::Type >(QVariant::fromValue(ChannelTarget()).userType()), + new QStandardItemEditorCreator< ChannelSelectWidget >()); factory->registerEditor(QVariant::String, new QStandardItemEditorCreator< QLineEdit >()); factory->registerEditor(QVariant::Invalid, new QStandardItemEditorCreator< QWidget >()); setItemEditorFactory(factory); @@ -448,6 +477,15 @@ ShortcutDelegate::~ShortcutDelegate() { QString ShortcutDelegate::displayText(const QVariant &item, const QLocale &loc) const { if (item.userType() == QVariant::fromValue(ShortcutTarget()).userType()) { return ShortcutTargetWidget::targetString(item.value< ShortcutTarget >()); + } else if (item.userType() == QVariant::fromValue(ChannelTarget()).userType()) { + ChannelTarget target = item.value< ChannelTarget >(); + + const Channel *c = Channel::get(target.channelID); + if (c) { + return c->qsName; + } else { + return tr("< Unknown Channel >"); + } } switch (item.type()) { @@ -665,7 +703,7 @@ void GlobalShortcutConfig::on_qtwShortcuts_itemChanged(QTreeWidgetItem *item, in sc.bSuppress = item->checkState(3) == Qt::Checked; const ::GlobalShortcut *gs = GlobalShortcutEngine::engine->qmShortcuts.value(sc.iIndex); - if (gs && sc.qvData.type() != gs->qvDefault.type()) { + if (gs && sc.qvData.userType() != gs->qvDefault.userType()) { item->setData(1, Qt::DisplayRole, gs->qvDefault); } } diff --git a/src/mumble/GlobalShortcut.h b/src/mumble/GlobalShortcut.h index aad5e89f0..9ba689719 100644 --- a/src/mumble/GlobalShortcut.h +++ b/src/mumble/GlobalShortcut.h @@ -11,6 +11,7 @@ #include <QtWidgets/QStyledItemDelegate> #include <QtWidgets/QToolButton> +#include "Channel.h" #include "ConfigDialog.h" #include "MUComboBox.h" #include "Timer.h" @@ -72,6 +73,17 @@ public: void setIndex(int); }; +class ChannelSelectWidget : public MUComboBox { + Q_OBJECT + Q_DISABLE_COPY(ChannelSelectWidget) + Q_PROPERTY(ChannelTarget currentChannel READ currentChannel WRITE setCurrentChannel USER true) +public: + ChannelSelectWidget(QWidget *parent = nullptr); + + ChannelTarget currentChannel() const; + void setCurrentChannel(const ChannelTarget &); +}; + /** * Dialog which is used to select the targets of a targeted shortcut like Whisper. */ @@ -136,6 +148,7 @@ public slots: * @see ShortcutKeyWidget * @see ShortcutActionWidget * @see ShortcutTargetWidget + * @see ChannelSelectWidget */ class ShortcutDelegate : public QStyledItemDelegate { Q_OBJECT diff --git a/src/mumble/GlobalShortcutTypes.h b/src/mumble/GlobalShortcutTypes.h new file mode 100644 index 000000000..6fbf49eb0 --- /dev/null +++ b/src/mumble/GlobalShortcutTypes.h @@ -0,0 +1,49 @@ +// Copyright 2022 The Mumble Developers. All rights reserved. +// Use of this source code is governed by a BSD-style license +// that can be found in the LICENSE file at the root of the +// Mumble source tree or at <https://www.mumble.info/LICENSE>. + +#ifndef MUMBLE_MUMBLE_GLOBALSHORTCUTTYPES_H_ +#define MUMBLE_MUMBLE_GLOBALSHORTCUTTYPES_H_ + +/** + * The entries in this namespace/enum represent the shortcut types (often referred to as a shortcut's "index") + * of the existing global shortcuts. + * + * IMPORTANT: ONLY EVER APPEND TO THE END OF THE ENUM! + */ +namespace GlobalShortcutType { +enum Type { + PushToTalk = 1, + ResetAudio, + MuteSelf, + DeafenSelf, + UnlinkPlugin, + PushToMute, + JoinChannel, + ToggleOverlay, + ToggleMinimalView, + VolumeUp, + VolumeDown, + Whisper_Shout, + LinkChannel, + CycleTransmitMode, + ToggleMainWindowVisibility, + UsePushToTalk, + UseContinous, + UseVAD, + SendTextMessage, + SendTextMessageClipboard, + ToggleTalkingUI, + ToggleSearch, + ListenToChannel, +}; + +// A few assertions meant to catch, if anyone inserts a new value in-between instead of appending +// to the end of the enum +static_assert(PushToTalk == 1, "You may only append to the end of the enum!"); +static_assert(ToggleMinimalView == 9, "You may only append to the end of the enum!"); +static_assert(ToggleSearch == 22, "You may only append to the end of the enum!"); +} // namespace GlobalShortcutType + +#endif // MUMBLE_MUMBLE_GLOBALSHORTCUTTYPES_H_ diff --git a/src/mumble/MainWindow.cpp b/src/mumble/MainWindow.cpp index 78a39e136..1774c74c2 100644 --- a/src/mumble/MainWindow.cpp +++ b/src/mumble/MainWindow.cpp @@ -24,6 +24,7 @@ #include "NetworkConfig.h" #include "OpusCodec.h" #include "GlobalShortcut.h" +#include "GlobalShortcutTypes.h" #ifdef USE_OVERLAY # include "OverlayClient.h" #endif @@ -202,8 +203,7 @@ MainWindow::MainWindow(QWidget *p) } void MainWindow::createActions() { - int idx = 1; - gsPushTalk = new GlobalShortcut(this, idx++, tr("Push-to-Talk", "Global Shortcut")); + gsPushTalk = new GlobalShortcut(this, GlobalShortcutType::PushToTalk, tr("Push-to-Talk", "Global Shortcut")); gsPushTalk->setObjectName(QLatin1String("PushToTalk")); gsPushTalk->qsToolTip = tr("Push and hold this button to send voice.", "Global Shortcut"); gsPushTalk->qsWhatsThis = tr( @@ -211,35 +211,43 @@ void MainWindow::createActions() { "Global Shortcut"); - gsResetAudio = new GlobalShortcut(this, idx++, tr("Reset Audio Processor", "Global Shortcut")); + gsResetAudio = + new GlobalShortcut(this, GlobalShortcutType::ResetAudio, tr("Reset Audio Processor", "Global Shortcut")); gsResetAudio->setObjectName(QLatin1String("ResetAudio")); - gsMuteSelf = new GlobalShortcut(this, idx++, tr("Mute Self", "Global Shortcut"), 0); + gsMuteSelf = new GlobalShortcut(this, GlobalShortcutType::MuteSelf, tr("Mute Self", "Global Shortcut"), 0); gsMuteSelf->setObjectName(QLatin1String("gsMuteSelf")); gsMuteSelf->qsToolTip = tr("Set self-mute status.", "Global Shortcut"); gsMuteSelf->qsWhatsThis = tr("This will set or toggle your muted status. If you turn this off, you will also disable self-deafen.", "Global Shortcut"); - gsDeafSelf = new GlobalShortcut(this, idx++, tr("Deafen Self", "Global Shortcut"), 0); + gsDeafSelf = new GlobalShortcut(this, GlobalShortcutType::DeafenSelf, tr("Deafen Self", "Global Shortcut"), 0); gsDeafSelf->setObjectName(QLatin1String("gsDeafSelf")); gsDeafSelf->qsToolTip = tr("Set self-deafen status.", "Global Shortcut"); gsDeafSelf->qsWhatsThis = tr("This will set or toggle your deafened status. If you turn this on, you will also enable self-mute.", "Global Shortcut"); - gsUnlink = new GlobalShortcut(this, idx++, tr("Unlink Plugin", "Global Shortcut")); + gsUnlink = new GlobalShortcut(this, GlobalShortcutType::UnlinkPlugin, tr("Unlink Plugin", "Global Shortcut")); gsUnlink->setObjectName(QLatin1String("UnlinkPlugin")); - gsPushMute = new GlobalShortcut(this, idx++, tr("Push-to-Mute", "Global Shortcut")); + gsPushMute = new GlobalShortcut(this, GlobalShortcutType::PushToMute, tr("Push-to-Mute", "Global Shortcut")); gsPushMute->setObjectName(QLatin1String("PushToMute")); - gsJoinChannel = new GlobalShortcut(this, idx++, tr("Join Channel", "Global Shortcut")); + gsJoinChannel = new GlobalShortcut(this, GlobalShortcutType::JoinChannel, tr("Join Channel", "Global Shortcut")); gsJoinChannel->setObjectName(QLatin1String("MetaChannel")); gsJoinChannel->qsToolTip = tr("Use in conjunction with Whisper to.", "Global Shortcut"); + gsListenChannel = + new GlobalShortcut(this, GlobalShortcutType::ListenToChannel, tr("Listen to Channel", "Global Shortcut"), + QVariant::fromValue(ChannelTarget())); + gsListenChannel->setObjectName(QLatin1String("gsListenChannel")); + gsListenChannel->qsToolTip = tr("Toggles listening to the given channel.", "Global Shortcut"); + #ifdef USE_OVERLAY - gsToggleOverlay = new GlobalShortcut(this, idx++, tr("Toggle Overlay", "Global Shortcut")); + gsToggleOverlay = + new GlobalShortcut(this, GlobalShortcutType::ToggleOverlay, tr("Toggle Overlay", "Global Shortcut")); gsToggleOverlay->setObjectName(QLatin1String("ToggleOverlay")); gsToggleOverlay->qsToolTip = tr("Toggle state of in-game overlay.", "Global Shortcut"); gsToggleOverlay->qsWhatsThis = tr("This will switch the states of the in-game overlay.", "Global Shortcut"); @@ -247,57 +255,66 @@ void MainWindow::createActions() { connect(gsToggleOverlay, SIGNAL(down(QVariant)), Global::get().o, SLOT(toggleShow())); #endif - gsMinimal = new GlobalShortcut(this, idx++, tr("Toggle Minimal", "Global Shortcut")); + gsMinimal = + new GlobalShortcut(this, GlobalShortcutType::ToggleMinimalView, tr("Toggle Minimal", "Global Shortcut")); gsMinimal->setObjectName(QLatin1String("ToggleMinimal")); - gsVolumeUp = new GlobalShortcut(this, idx++, tr("Volume Up (+10%)", "Global Shortcut")); + gsVolumeUp = new GlobalShortcut(this, GlobalShortcutType::VolumeUp, tr("Volume Up (+10%)", "Global Shortcut")); gsVolumeUp->setObjectName(QLatin1String("VolumeUp")); - gsVolumeDown = new GlobalShortcut(this, idx++, tr("Volume Down (-10%)", "Global Shortcut")); + gsVolumeDown = + new GlobalShortcut(this, GlobalShortcutType::VolumeDown, tr("Volume Down (-10%)", "Global Shortcut")); gsVolumeDown->setObjectName(QLatin1String("VolumeDown")); qstiIcon = new QSystemTrayIcon(qiIcon, this); qstiIcon->setToolTip(tr("Mumble -- %1").arg(Version::getRelease())); qstiIcon->setObjectName(QLatin1String("Icon")); - gsWhisper = new GlobalShortcut(this, idx++, tr("Whisper/Shout"), QVariant::fromValue(ShortcutTarget())); + gsWhisper = new GlobalShortcut(this, GlobalShortcutType::Whisper_Shout, tr("Whisper/Shout"), + QVariant::fromValue(ShortcutTarget())); gsWhisper->setObjectName(QLatin1String("gsWhisper")); - gsLinkChannel = new GlobalShortcut(this, idx++, tr("Link Channel", "Global Shortcut")); + gsLinkChannel = new GlobalShortcut(this, GlobalShortcutType::LinkChannel, tr("Link Channel", "Global Shortcut")); gsLinkChannel->setObjectName(QLatin1String("MetaLink")); gsLinkChannel->qsToolTip = tr("Use in conjunction with Whisper to.", "Global Shortcut"); - gsCycleTransmitMode = new GlobalShortcut(this, idx++, tr("Cycle Transmit Mode", "Global Shortcut")); + gsCycleTransmitMode = + new GlobalShortcut(this, GlobalShortcutType::CycleTransmitMode, tr("Cycle Transmit Mode", "Global Shortcut")); gsCycleTransmitMode->setObjectName(QLatin1String("gsCycleTransmitMode")); - gsToggleMainWindowVisibility = new GlobalShortcut(this, idx++, tr("Hide/show main window", "Global Shortcut")); + gsToggleMainWindowVisibility = new GlobalShortcut(this, GlobalShortcutType::ToggleMainWindowVisibility, + tr("Hide/show main window", "Global Shortcut")); gsToggleMainWindowVisibility->setObjectName(QLatin1String("gsToggleMainWindowVisibility")); - gsTransmitModePushToTalk = - new GlobalShortcut(this, idx++, tr("Set Transmit Mode to Push-To-Talk", "Global Shortcut")); + gsTransmitModePushToTalk = new GlobalShortcut(this, GlobalShortcutType::UsePushToTalk, + tr("Set Transmit Mode to Push-To-Talk", "Global Shortcut")); gsTransmitModePushToTalk->setObjectName(QLatin1String("gsTransmitModePushToTalk")); - gsTransmitModeContinuous = - new GlobalShortcut(this, idx++, tr("Set Transmit Mode to Continuous", "Global Shortcut")); + gsTransmitModeContinuous = new GlobalShortcut(this, GlobalShortcutType::UseContinous, + tr("Set Transmit Mode to Continuous", "Global Shortcut")); gsTransmitModeContinuous->setObjectName(QLatin1String("gsTransmitModeContinuous")); - gsTransmitModeVAD = new GlobalShortcut(this, idx++, tr("Set Transmit Mode to VAD", "Global Shortcut")); + gsTransmitModeVAD = + new GlobalShortcut(this, GlobalShortcutType::UseVAD, tr("Set Transmit Mode to VAD", "Global Shortcut")); gsTransmitModeVAD->setObjectName(QLatin1String("gsTransmitModeVAD")); - gsSendTextMessage = - new GlobalShortcut(this, idx++, tr("Send Text Message", "Global Shortcut"), QVariant(QString())); + gsSendTextMessage = new GlobalShortcut(this, GlobalShortcutType::SendTextMessage, + tr("Send Text Message", "Global Shortcut"), QVariant(QString())); gsSendTextMessage->setObjectName(QLatin1String("gsSendTextMessage")); - gsSendClipboardTextMessage = new GlobalShortcut(this, idx++, tr("Send Clipboard Text Message", "Global Shortcut")); + gsSendClipboardTextMessage = new GlobalShortcut(this, GlobalShortcutType::SendTextMessageClipboard, + tr("Send Clipboard Text Message", "Global Shortcut")); gsSendClipboardTextMessage->setObjectName(QLatin1String("gsSendClipboardTextMessage")); gsSendClipboardTextMessage->qsWhatsThis = tr("This will send your Clipboard content to the channel you are currently in.", "Global Shortcut"); - gsToggleTalkingUI = new GlobalShortcut(this, idx++, tr("Toggle TalkingUI", "Global shortcut")); + gsToggleTalkingUI = + new GlobalShortcut(this, GlobalShortcutType::ToggleTalkingUI, tr("Toggle TalkingUI", "Global shortcut")); gsToggleTalkingUI->setObjectName(QLatin1String("gsToggleTalkingUI")); gsToggleTalkingUI->qsWhatsThis = tr("Toggles the visibility of the TalkingUI.", "Global Shortcut"); - gsToggleSearch = new GlobalShortcut(this, idx++, tr("Toggle search dialog", "Global Shortcut")); + gsToggleSearch = + new GlobalShortcut(this, GlobalShortcutType::ToggleSearch, tr("Toggle search dialog", "Global Shortcut")); gsToggleSearch->setObjectName(QLatin1String("gsToggleSearch")); gsToggleSearch->qsWhatsThis = tr("This will open or close the search dialog depending on whether it is currently opened already"); @@ -3090,6 +3107,19 @@ void MainWindow::on_gsToggleMainWindowVisibility_triggered(bool down, QVariant) } } +void MainWindow::on_gsListenChannel_triggered(bool down, QVariant scdata) { + ChannelTarget target = scdata.value< ChannelTarget >(); + const Channel *c = Channel::get(target.channelID); + + if (down && c) { + if (!Global::get().channelListenerManager->isListening(Global::get().uiSession, c->iId)) { + Global::get().sh->startListeningToChannel(c->iId); + } else { + Global::get().sh->stopListeningToChannel(c->iId); + } + } +} + void MainWindow::on_gsTransmitModePushToTalk_triggered(bool down, QVariant) { if (down) { setTransmissionMode(Settings::PushToTalk); diff --git a/src/mumble/MainWindow.h b/src/mumble/MainWindow.h index fde90c5ef..880b33239 100644 --- a/src/mumble/MainWindow.h +++ b/src/mumble/MainWindow.h @@ -93,7 +93,7 @@ public: #ifdef USE_OVERLAY GlobalShortcut *gsToggleOverlay; #endif - GlobalShortcut *gsMinimal, *gsVolumeUp, *gsVolumeDown, *gsWhisper, *gsLinkChannel; + GlobalShortcut *gsMinimal, *gsVolumeUp, *gsVolumeDown, *gsWhisper, *gsLinkChannel, *gsListenChannel; GlobalShortcut *gsCycleTransmitMode, *gsToggleMainWindowVisibility, *gsTransmitModePushToTalk, *gsTransmitModeContinuous, *gsTransmitModeVAD; GlobalShortcut *gsSendTextMessage, *gsSendClipboardTextMessage; @@ -296,6 +296,7 @@ public slots: void on_gsWhisper_triggered(bool, QVariant); void addTarget(ShortcutTarget *); void removeTarget(ShortcutTarget *); + void on_gsListenChannel_triggered(bool, QVariant); void on_gsCycleTransmitMode_triggered(bool, QVariant); void on_gsToggleMainWindowVisibility_triggered(bool, QVariant); void on_gsTransmitModePushToTalk_triggered(bool, QVariant); diff --git a/src/mumble/Messages.cpp b/src/mumble/Messages.cpp index 631c11896..6e581ae9e 100644 --- a/src/mumble/Messages.cpp +++ b/src/mumble/Messages.cpp @@ -160,10 +160,6 @@ void MainWindow::msgServerSync(const MumbleProto::ServerSync &msg) { QList< Shortcut > sc = Global::get().db->getShortcuts(Global::get().sh->qbaDigest); if (!sc.isEmpty()) { - for (int i = 0; i < sc.count(); ++i) { - Shortcut &s = sc[i]; - s.iIndex = Global::get().mw->gsWhisper->idx; - } Global::get().s.qlShortcuts << sc; GlobalShortcutEngine::engine->bNeedRemap = true; } diff --git a/src/mumble/Settings.cpp b/src/mumble/Settings.cpp index 09b5aff75..15e7e7a90 100644 --- a/src/mumble/Settings.cpp +++ b/src/mumble/Settings.cpp @@ -59,6 +59,9 @@ bool Shortcut::isServerSpecific() const { const ShortcutTarget &sc = qvariant_cast< ShortcutTarget >(qvData); return sc.isServerSpecific(); } + if (qvData.canConvert< ChannelTarget >()) { + return true; + } return false; } @@ -378,6 +381,26 @@ QDataStream &operator>>(QDataStream &qds, ShortcutTarget &st) { } } +QDataStream &operator<<(QDataStream &qds, const ChannelTarget &target) { + return qds << target.channelID; +} + +QDataStream &operator>>(QDataStream &qds, ChannelTarget &target) { + return qds >> target.channelID; +} + +bool operator==(const ChannelTarget &lhs, const ChannelTarget &rhs) { + return lhs.channelID == rhs.channelID; +} + +bool operator<(const ChannelTarget &lhs, const ChannelTarget &rhs) { + return lhs.channelID < rhs.channelID; +} + +quint32 qHash(const ChannelTarget &target) { + return qHash(target.channelID); +} + const QString Settings::cqsDefaultPushClickOn = QLatin1String(":/on.ogg"); const QString Settings::cqsDefaultPushClickOff = QLatin1String(":/off.ogg"); @@ -492,6 +515,8 @@ Settings::Settings() { #endif qRegisterMetaType< ShortcutTarget >("ShortcutTarget"); qRegisterMetaTypeStreamOperators< ShortcutTarget >("ShortcutTarget"); + qRegisterMetaType< ChannelTarget >("ChannelTarget"); + qRegisterMetaTypeStreamOperators< ChannelTarget >("ChannelTarget"); qRegisterMetaType< QVariant >("QVariant"); qRegisterMetaType< PluginSetting >("PluginSetting"); qRegisterMetaTypeStreamOperators< PluginSetting >("PluginSetting"); diff --git a/src/mumble/Settings.h b/src/mumble/Settings.h index 6d37b77fb..6d5a4ee4b 100644 --- a/src/mumble/Settings.h +++ b/src/mumble/Settings.h @@ -23,6 +23,7 @@ #include <QVariant> #include <Qt> +#include "Channel.h" #include "EchoCancelOption.h" #include "SSL.h" #include "SearchDialog.h" @@ -52,6 +53,20 @@ struct Shortcut { bool operator==(const Shortcut &) const; }; +struct ChannelTarget { + int channelID = Channel::ROOT_ID; + + ChannelTarget() = default; + ChannelTarget(int id) : channelID(id) {} + + friend bool operator==(const ChannelTarget &lhs, const ChannelTarget &rhs); + friend bool operator<(const ChannelTarget &lhs, const ChannelTarget &rhs); +}; + +Q_DECLARE_METATYPE(ChannelTarget) + +quint32 qHash(const ChannelTarget &); + struct ShortcutTarget { bool bCurrentSelection = false; bool bUsers = true; diff --git a/src/mumble/mumble_ar.ts b/src/mumble/mumble_ar.ts index 40d884c9e..057789707 100644 --- a/src/mumble/mumble_ar.ts +++ b/src/mumble/mumble_ar.ts @@ -6365,6 +6365,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8068,6 +8078,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_bg.ts b/src/mumble/mumble_bg.ts index 868d23678..5f8a184bb 100644 --- a/src/mumble/mumble_bg.ts +++ b/src/mumble/mumble_bg.ts @@ -6362,6 +6362,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8065,6 +8075,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_br.ts b/src/mumble/mumble_br.ts index a63cf4730..6707d2ee0 100644 --- a/src/mumble/mumble_br.ts +++ b/src/mumble/mumble_br.ts @@ -6361,6 +6361,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8064,6 +8074,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_ca.ts b/src/mumble/mumble_ca.ts index e88e0c41e..681798b1b 100644 --- a/src/mumble/mumble_ca.ts +++ b/src/mumble/mumble_ca.ts @@ -6387,6 +6387,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8090,6 +8100,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_cs.ts b/src/mumble/mumble_cs.ts index 00ac81f1b..8e5abf9a6 100644 --- a/src/mumble/mumble_cs.ts +++ b/src/mumble/mumble_cs.ts @@ -6421,6 +6421,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Tato verze Mumble neumí pracovat s URL pro verzi Mumble %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8128,6 +8138,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_cy.ts b/src/mumble/mumble_cy.ts index 38a584fb5..8ce16c1f1 100644 --- a/src/mumble/mumble_cy.ts +++ b/src/mumble/mumble_cy.ts @@ -6365,6 +6365,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8068,6 +8078,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_da.ts b/src/mumble/mumble_da.ts index e4895bad3..8e3188d6d 100644 --- a/src/mumble/mumble_da.ts +++ b/src/mumble/mumble_da.ts @@ -6417,6 +6417,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Denne version af Mumble kan ikke håndtere URLs for Mumble version %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8124,6 +8134,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_de.ts b/src/mumble/mumble_de.ts index 59e82b49e..6441a110d 100644 --- a/src/mumble/mumble_de.ts +++ b/src/mumble/mumble_de.ts @@ -6508,6 +6508,16 @@ Gültige Optionen sind: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Diese Version von Mumble kann keine URLs von Mumble Version %1 verarbeiten</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8219,6 +8229,10 @@ Sie können sie jedoch erneut registrieren.</translation> <source>Press to show button combination</source> <translation>Drücken um die Tastenkombination anzuzeigen</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_el.ts b/src/mumble/mumble_el.ts index 1af15057c..4c10bd06e 100644 --- a/src/mumble/mumble_el.ts +++ b/src/mumble/mumble_el.ts @@ -6455,6 +6455,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Αυτή η έκδοση του Mumble δεν μπορεί να χειριστεί διευθύνσεις URL για την έκδοση Mumble %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8166,6 +8176,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation>Πατήστε για εμφάνιση του συνδυασμού κουμπιών</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_en.ts b/src/mumble/mumble_en.ts index 43250151d..2a18e5e8b 100644 --- a/src/mumble/mumble_en.ts +++ b/src/mumble/mumble_en.ts @@ -6360,6 +6360,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8063,6 +8073,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_en_GB.ts b/src/mumble/mumble_en_GB.ts index 1340c70ea..c07142abc 100644 --- a/src/mumble/mumble_en_GB.ts +++ b/src/mumble/mumble_en_GB.ts @@ -6397,6 +6397,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8100,6 +8110,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_eo.ts b/src/mumble/mumble_eo.ts index 461e8c155..0f4df4cb1 100644 --- a/src/mumble/mumble_eo.ts +++ b/src/mumble/mumble_eo.ts @@ -6373,6 +6373,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8076,6 +8086,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_es.ts b/src/mumble/mumble_es.ts index 8db576087..2366c216e 100644 --- a/src/mumble/mumble_es.ts +++ b/src/mumble/mumble_es.ts @@ -6433,6 +6433,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Esta versión de Mumble no puede manejar URLs para la versión %1 de Mumble</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8144,6 +8154,10 @@ Puedes registrarlos otra vez.</translation> <source>Press to show button combination</source> <translation>Presione para mostrar la combinación de botones</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_et.ts b/src/mumble/mumble_et.ts index 679b93139..a7cc3c0bb 100644 --- a/src/mumble/mumble_et.ts +++ b/src/mumble/mumble_et.ts @@ -6362,6 +6362,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8065,6 +8075,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_eu.ts b/src/mumble/mumble_eu.ts index 0ebd47ad8..9a1b25b4f 100644 --- a/src/mumble/mumble_eu.ts +++ b/src/mumble/mumble_eu.ts @@ -6382,6 +6382,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8085,6 +8095,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_fa_IR.ts b/src/mumble/mumble_fa_IR.ts index 3085d5a61..05a6a3b55 100644 --- a/src/mumble/mumble_fa_IR.ts +++ b/src/mumble/mumble_fa_IR.ts @@ -6360,6 +6360,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8063,6 +8073,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_fi.ts b/src/mumble/mumble_fi.ts index 27f0a0b3b..62ddebeed 100644 --- a/src/mumble/mumble_fi.ts +++ b/src/mumble/mumble_fi.ts @@ -6454,6 +6454,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Mumblen tämä versio ei pysty käsittelemään URL-osoitteita Mumblen versiosta %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8165,6 +8175,10 @@ Voit rekisteröidä ne uudelleen.</translation> <source>Press to show button combination</source> <translation>Paina näyttääksesi näppäinyhdistelmän</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_fr.ts b/src/mumble/mumble_fr.ts index c96b62ef1..ad9a08fae 100644 --- a/src/mumble/mumble_fr.ts +++ b/src/mumble/mumble_fr.ts @@ -6516,6 +6516,16 @@ Les options valides sont : <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Cette version de Mumble ne peut pas manipuler les URLs pour Mumble version %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8227,6 +8237,10 @@ Vous pouvez les enregistrer à nouveau.</translation> <source>Press to show button combination</source> <translation>Appuyer pour montrer la combinaison de touches</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_gl.ts b/src/mumble/mumble_gl.ts index 914493b88..a6f614803 100644 --- a/src/mumble/mumble_gl.ts +++ b/src/mumble/mumble_gl.ts @@ -6363,6 +6363,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8066,6 +8076,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_he.ts b/src/mumble/mumble_he.ts index a8d1037b2..43d6294dc 100644 --- a/src/mumble/mumble_he.ts +++ b/src/mumble/mumble_he.ts @@ -6413,6 +6413,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">גירסא זו של Mumble לא יכולה לטפל בכתובות עבור Mumble גירסא %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8120,6 +8130,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_hu.ts b/src/mumble/mumble_hu.ts index 85d376859..0e524c4ac 100644 --- a/src/mumble/mumble_hu.ts +++ b/src/mumble/mumble_hu.ts @@ -6413,6 +6413,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">A Mumble jelen verziója nem képes kezelni a %1 verziójú Mumble címeket</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8117,6 +8127,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_it.ts b/src/mumble/mumble_it.ts index d05267b31..47c8151b2 100644 --- a/src/mumble/mumble_it.ts +++ b/src/mumble/mumble_it.ts @@ -6455,6 +6455,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Questa versione di Mumble non può utilizzare gli URL di Mumble versione %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8166,6 +8176,10 @@ Puoi registrarle di nuovo.</translation> <source>Press to show button combination</source> <translation>Premi per mostrare la combinazione di tasti</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_ja.ts b/src/mumble/mumble_ja.ts index 0e7cc4411..a52a4b66f 100644 --- a/src/mumble/mumble_ja.ts +++ b/src/mumble/mumble_ja.ts @@ -6411,6 +6411,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">このバージョンのMumble は Mumble %1 のための URL を扱えません</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8118,6 +8128,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_ko.ts b/src/mumble/mumble_ko.ts index b09c3beb6..e505b4fde 100644 --- a/src/mumble/mumble_ko.ts +++ b/src/mumble/mumble_ko.ts @@ -6454,6 +6454,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">이 버전의 Mumble은 Mumble 버전 %1 URL을 처리할 수 없음</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8165,6 +8175,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation>버튼 조합을 표시하려면 누르세요</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_lt.ts b/src/mumble/mumble_lt.ts index 01cac5fec..d8896a43b 100644 --- a/src/mumble/mumble_lt.ts +++ b/src/mumble/mumble_lt.ts @@ -6395,6 +6395,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Ši Mumble versija negali apdoroti URL, skirtus Mumble versijai %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8102,6 +8112,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_nl.ts b/src/mumble/mumble_nl.ts index 0249ce710..93d0df321 100644 --- a/src/mumble/mumble_nl.ts +++ b/src/mumble/mumble_nl.ts @@ -6455,6 +6455,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Mumble-versie kan URL's voor Mumble versie %1 niet aan</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8166,6 +8176,10 @@ Je kunt ze opnieuw registreren.</translation> <source>Press to show button combination</source> <translation>Druk om knoppencombinatie weer te geven</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_no.ts b/src/mumble/mumble_no.ts index 7039e3f1a..db990af04 100644 --- a/src/mumble/mumble_no.ts +++ b/src/mumble/mumble_no.ts @@ -6470,6 +6470,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Denne versjonen av Mumble kan ikke håndtere URL-er for Mumble versjon %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8181,6 +8191,10 @@ Du kan registrere dem igjen.</translation> <source>Press to show button combination</source> <translation>Trykk for å vise tastekombinasjon</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_oc.ts b/src/mumble/mumble_oc.ts index eff089722..124242708 100644 --- a/src/mumble/mumble_oc.ts +++ b/src/mumble/mumble_oc.ts @@ -6362,6 +6362,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8065,6 +8075,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_pl.ts b/src/mumble/mumble_pl.ts index 6e1ea6b31..d3c3e7933 100644 --- a/src/mumble/mumble_pl.ts +++ b/src/mumble/mumble_pl.ts @@ -6516,6 +6516,16 @@ Prawidłowe opcje to: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Ta wersja Mumble nie obsługuje adresów URL starszych wersji Mumble %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8227,6 +8237,10 @@ Możesz je ponownie zarejestrować.</translation> <source>Press to show button combination</source> <translation>Naciśnij, aby wyświetlić kombinację przycisków</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_pt_BR.ts b/src/mumble/mumble_pt_BR.ts index 0e1c8d445..8d3543c67 100644 --- a/src/mumble/mumble_pt_BR.ts +++ b/src/mumble/mumble_pt_BR.ts @@ -6455,6 +6455,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Esta versão do Mumble não pode lidar com URLs para o Mumble versão %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8165,6 +8175,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation>Pressione para mostrar a combinação de teclas</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_pt_PT.ts b/src/mumble/mumble_pt_PT.ts index e773486d3..c0082d137 100644 --- a/src/mumble/mumble_pt_PT.ts +++ b/src/mumble/mumble_pt_PT.ts @@ -6433,6 +6433,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Esta versão do Mumble não consegue lidar com URLs para o Mumble versão %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8143,6 +8153,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation>Pressione para mostrar a combinação de teclas</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_ro.ts b/src/mumble/mumble_ro.ts index e60d610a8..6ab0b8987 100644 --- a/src/mumble/mumble_ro.ts +++ b/src/mumble/mumble_ro.ts @@ -6366,6 +6366,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8069,6 +8079,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_ru.ts b/src/mumble/mumble_ru.ts index 17b35e572..c264a7ee8 100644 --- a/src/mumble/mumble_ru.ts +++ b/src/mumble/mumble_ru.ts @@ -6456,6 +6456,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Эта версия Mumble не может использовать ссылки из Mumble версий %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8167,6 +8177,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation>Нажмите, чтобы показать комбинацию кнопок</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_si.ts b/src/mumble/mumble_si.ts index 4b4997d1b..fccaa18a3 100644 --- a/src/mumble/mumble_si.ts +++ b/src/mumble/mumble_si.ts @@ -6324,6 +6324,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8023,6 +8033,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_sk.ts b/src/mumble/mumble_sk.ts index da40b1276..38e404a67 100644 --- a/src/mumble/mumble_sk.ts +++ b/src/mumble/mumble_sk.ts @@ -6325,6 +6325,16 @@ Otherwise abort and check your certificate and username.</source> <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8024,6 +8034,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_sq.ts b/src/mumble/mumble_sq.ts index 3a8124009..04d36c6ff 100644 --- a/src/mumble/mumble_sq.ts +++ b/src/mumble/mumble_sq.ts @@ -6326,6 +6326,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8025,6 +8035,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_sv.ts b/src/mumble/mumble_sv.ts index 2a2ae50a1..5f956597c 100644 --- a/src/mumble/mumble_sv.ts +++ b/src/mumble/mumble_sv.ts @@ -6455,6 +6455,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Den här versionen av Mumble kan inte hantera URLer för Mumble version %1</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8165,6 +8175,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation>Tryck för att visa knappkombination</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_te.ts b/src/mumble/mumble_te.ts index 05a3c3756..ba14f05c4 100644 --- a/src/mumble/mumble_te.ts +++ b/src/mumble/mumble_te.ts @@ -6373,6 +6373,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8082,6 +8092,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_th.ts b/src/mumble/mumble_th.ts index c131a8ca6..28f2e4296 100644 --- a/src/mumble/mumble_th.ts +++ b/src/mumble/mumble_th.ts @@ -6360,6 +6360,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8063,6 +8073,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_tr.ts b/src/mumble/mumble_tr.ts index e7e1f127a..675521346 100644 --- a/src/mumble/mumble_tr.ts +++ b/src/mumble/mumble_tr.ts @@ -6514,6 +6514,16 @@ Geçerli seçenekler şunlardır: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">Mumble'ın bu sürümü %1 sayılı sürümün URL'lerini işleyemez</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8225,6 +8235,10 @@ Bunları tekrar kaydedebilirsiniz.</translation> <source>Press to show button combination</source> <translation>Düğme kombinasyonunu göstermek için basın</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_uk.ts b/src/mumble/mumble_uk.ts index 13f597aa8..55942dcdd 100644 --- a/src/mumble/mumble_uk.ts +++ b/src/mumble/mumble_uk.ts @@ -6362,6 +6362,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8065,6 +8075,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_zh_CN.ts b/src/mumble/mumble_zh_CN.ts index 2f7c4f53b..11f1a51e8 100644 --- a/src/mumble/mumble_zh_CN.ts +++ b/src/mumble/mumble_zh_CN.ts @@ -6514,6 +6514,16 @@ mumble://[<用户名>[:<密码>]@]<主机名>[:<端口>] <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">当前版本的 Mumble 无法处理用于 Mumble %1 的 URL</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8225,6 +8235,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation>点击显示组合键</translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_zh_HK.ts b/src/mumble/mumble_zh_HK.ts index 2e48845ec..f784c32f9 100644 --- a/src/mumble/mumble_zh_HK.ts +++ b/src/mumble/mumble_zh_HK.ts @@ -6365,6 +6365,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">目前的 Mumble 無法處理版本 %1 產生的網址</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8072,6 +8082,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> diff --git a/src/mumble/mumble_zh_TW.ts b/src/mumble/mumble_zh_TW.ts index ff64f04ab..907e57a3c 100644 --- a/src/mumble/mumble_zh_TW.ts +++ b/src/mumble/mumble_zh_TW.ts @@ -6388,6 +6388,16 @@ Valid options are: <source>This version of Mumble can't handle URLs for Mumble version %1</source> <translation type="unfinished">目前的 Mumble 無法處理版本 %1 產生的網址</translation> </message> + <message> + <source>Listen to Channel</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggles listening to the given channel.</source> + <comment>Global Shortcut</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Manual</name> @@ -8094,6 +8104,10 @@ You can register them again.</source> <source>Press to show button combination</source> <translation type="unfinished"></translation> </message> + <message> + <source>< Unknown Channel ></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ShortcutTargetDialog</name> |