/***************************************************************************
- * Copyright (C) 2005-09 by the Quassel Project *
+ * Copyright (C) 2005-2020 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#include "chatviewsettingspage.h"
+
+#include "chatviewsettings.h"
#include "client.h"
-#include "colorbutton.h"
#include "qtui.h"
#include "qtuistyle.h"
+#include "uistyle.h"
-ChatViewSettingsPage::ChatViewSettingsPage(QWidget *parent)
- : SettingsPage(tr("Interface"), tr("Chat View"), parent)
+ChatViewSettingsPage::ChatViewSettingsPage(QWidget* parent)
+ : SettingsPage(tr("Interface"), tr("Chat View"), parent)
{
- ui.setupUi(this);
+ ui.setupUi(this);
-#ifndef HAVE_WEBKIT
- ui.showWebPreview->hide();
- ui.showWebPreview->setEnabled(false);
+#if !defined HAVE_WEBKIT && !defined HAVE_WEBENGINE
+ ui.showWebPreview->hide();
+ ui.showWebPreview->setEnabled(false);
#endif
- // FIXME remove with protocol v11
- if(!(Client::coreFeatures() & Quassel::SynchronizedMarkerLine)) {
- ui.autoMarkerLine->setEnabled(false);
- ui.autoMarkerLine->setChecked(true);
- ui.autoMarkerLine->setToolTip(tr("You need at 0.6 quasselcore to use this feature"));
- }
+ // Handle UI dependent on core feature flags here
+ // FIXME remove with protocol v11
+ 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::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("<b>%2</b><br/>%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();
+}
- initAutoWidgets();
+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<int>(UiStyle::SenderPrefixMode::NoModes));
+ ui.senderPrefixComboBox->addItem(tr("Highest mode"), static_cast<int>(UiStyle::SenderPrefixMode::HighestMode));
+ ui.senderPrefixComboBox->addItem(tr("All modes"), static_cast<int>(UiStyle::SenderPrefixMode::AllModes));
}
-void ChatViewSettingsPage::save() {
- SettingsPage::save();
- QtUi::style()->generateSettingsQss();
- QtUi::style()->reload();
+void ChatViewSettingsPage::save()
+{
+ bool needsStyleReload = SettingsPage::hasChanged(ui.customChatViewFont) || SettingsPage::hasChanged(ui.chatViewFont);
+
+ // Save the general settings
+ SettingsPage::save();
+
+ // Update the stylesheet if fonts are changed
+ if (needsStyleReload) {
+ QtUi::style()->generateSettingsQss();
+ QtUi::style()->reload();
+ }
}