X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fchatviewsettingspage.cpp;h=80742d95e910787ab6e844d5609e6ae50e6f1d8b;hb=HEAD;hp=766bcd4093e2cf410182f9d5326f6446465dd442;hpb=310218c3d7be363ceeba646d11d007abae2d478b;p=quassel.git
diff --git a/src/qtui/settingspages/chatviewsettingspage.cpp b/src/qtui/settingspages/chatviewsettingspage.cpp
index 766bcd40..c54323c0 100644
--- a/src/qtui/settingspages/chatviewsettingspage.cpp
+++ b/src/qtui/settingspages/chatviewsettingspage.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2005-2016 by the Quassel Project *
+ * Copyright (C) 2005-2022 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -19,11 +19,14 @@
***************************************************************************/
#include "chatviewsettingspage.h"
+
+#include "chatviewsettings.h"
#include "client.h"
#include "qtui.h"
#include "qtuistyle.h"
+#include "uistyle.h"
-ChatViewSettingsPage::ChatViewSettingsPage(QWidget *parent)
+ChatViewSettingsPage::ChatViewSettingsPage(QWidget* parent)
: SettingsPage(tr("Interface"), tr("Chat View"), parent)
{
ui.setupUi(this);
@@ -33,26 +36,49 @@ ChatViewSettingsPage::ChatViewSettingsPage(QWidget *parent)
ui.showWebPreview->setEnabled(false);
#endif
+ // Handle UI dependent on core feature flags here
// FIXME remove with protocol v11
- if (!Client::coreFeatures().testFlag(Quassel::SynchronizedMarkerLine)) {
+ if (!Client::isCoreFeatureEnabled(Quassel::Feature::SynchronizedMarkerLine)) {
ui.autoMarkerLine->setEnabled(false);
ui.autoMarkerLine->setChecked(true);
ui.autoMarkerLine->setToolTip(tr("You need at least version 0.6 of Quassel Core to use this feature"));
}
- if (!Client::coreFeatures().testFlag(Quassel::Feature::CoreSideHighlights)) {
- ui.showSenderPrefixes->setEnabled(false);
- ui.showSenderPrefixes->setToolTip(tr("You need at least version 0.13 of Quassel Core to use this feature"));
+ if (!Client::isCoreFeatureEnabled(Quassel::Feature::SenderPrefixes)) {
+ // Sender prefixes are not supported, disallow toggling
+ ui.senderPrefixComboBox->setEnabled(false);
+ // Split up the message to allow re-using translations:
+ // [Original tool-tip]
+ // [Bold 'does not support feature' message]
+ // [Specific version needed and feature details]
+ ui.senderPrefixComboBox->setToolTip(QString("%2
%3")
+ .arg(tr("Your Quassel core does not support this feature"),
+ tr("You need a Quassel core v0.13.0 or newer in order to show sender "
+ "modes before nicknames.")));
}
-
initAutoWidgets();
+ initSenderPrefixComboBox();
}
+void ChatViewSettingsPage::initSenderPrefixComboBox()
+{
+ // Fill combobox with sender prefix modes
+ // Do not change ComboBox ordering without also adjusting chatviewsettingspage.ui "defaultValue"
+ // and UiStyle::SenderPrefixMode
+ ui.senderPrefixComboBox->addItem(tr("No modes"), static_cast(UiStyle::SenderPrefixMode::NoModes));
+ ui.senderPrefixComboBox->addItem(tr("Highest mode"), static_cast(UiStyle::SenderPrefixMode::HighestMode));
+ ui.senderPrefixComboBox->addItem(tr("All modes"), static_cast(UiStyle::SenderPrefixMode::AllModes));
+}
void ChatViewSettingsPage::save()
{
+ bool needsStyleReload = SettingsPage::hasChanged(ui.customChatViewFont) || SettingsPage::hasChanged(ui.chatViewFont);
+
// Save the general settings
SettingsPage::save();
- // Update the stylesheet in case fonts are changed
- QtUi::style()->generateSettingsQss();
- QtUi::style()->reload();
+
+ // Update the stylesheet if fonts are changed
+ if (needsStyleReload) {
+ QtUi::style()->generateSettingsQss();
+ QtUi::style()->reload();
+ }
}