X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fchatmonitorsettingspage.cpp;h=5af07e3eb393e9969377cacf8acd00f49577c737;hb=c01c1ad4823a3e49c9526c19560dd5ce4fe30cb8;hp=16a4ca950b3af1e7b5f7387c7e7585f12bd0c586;hpb=9188f1a4880dc7f4c26612a265c1d874f6df5a8c;p=quassel.git diff --git a/src/qtui/settingspages/chatmonitorsettingspage.cpp b/src/qtui/settingspages/chatmonitorsettingspage.cpp index 16a4ca95..5af07e3e 100644 --- a/src/qtui/settingspages/chatmonitorsettingspage.cpp +++ b/src/qtui/settingspages/chatmonitorsettingspage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2018 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 * @@ -20,8 +20,11 @@ #include "chatmonitorsettingspage.h" +#include #include +#include "backlogrequester.h" +#include "backlogsettings.h" #include "buffermodel.h" #include "bufferview.h" #include "bufferviewconfig.h" @@ -30,6 +33,7 @@ #include "client.h" #include "icon.h" #include "networkmodel.h" +#include "util.h" ChatMonitorSettingsPage::ChatMonitorSettingsPage(QWidget* parent) : SettingsPage(tr("Interface"), tr("Chat Monitor"), parent) @@ -66,6 +70,10 @@ ChatMonitorSettingsPage::ChatMonitorSettingsPage(QWidget* parent) connect(ui.alwaysOwn, &QAbstractButton::toggled, this, &ChatMonitorSettingsPage::widgetHasChanged); connect(ui.showBacklog, &QAbstractButton::toggled, this, &ChatMonitorSettingsPage::widgetHasChanged); connect(ui.includeRead, &QAbstractButton::toggled, this, &ChatMonitorSettingsPage::widgetHasChanged); + + // AsNeededBacklogRequester conflicts with showing backlog in Chat Monitor + BacklogSettings backlogSettings; + backlogSettings.initAndNotify("RequesterType", this, &ChatMonitorSettingsPage::setRequesterType, BacklogRequester::AsNeeded); } bool ChatMonitorSettingsPage::hasDefaults() const @@ -156,7 +164,7 @@ void ChatMonitorSettingsPage::save() // save list of active buffers QVariantList saveableBufferIdList; foreach (BufferId id, _configActive->bufferList()) { - saveableBufferIdList << QVariant::fromValue(id); + saveableBufferIdList << QVariant::fromValue(id); } chatViewSettings.setValue("Buffers", saveableBufferIdList); @@ -189,7 +197,7 @@ bool ChatMonitorSettingsPage::testHasChanged() if (_configActive->bufferList().count() != settings["Buffers"].toList().count()) return true; - QSet uiBufs = _configActive->bufferList().toSet(); + QSet uiBufs = toQSet(_configActive->bufferList()); QSet settingsBufs; foreach (QVariant v, settings["Buffers"].toList()) settingsBufs << v.value(); @@ -278,3 +286,34 @@ void ChatMonitorSettingsPage::switchOperationMode(int idx) } widgetHasChanged(); } + +void ChatMonitorSettingsPage::setRequesterType(const QVariant& v) +{ + bool usingAsNeededRequester = (v.toInt() == BacklogRequester::AsNeeded); + ui.showBacklogUnavailableDetails->setVisible(usingAsNeededRequester); + if (usingAsNeededRequester) { + ui.showBacklog->setText(tr("Show messages from backlog (not available)")); + } + else { + ui.showBacklog->setText(tr("Show messages from backlog")); + } +} + +void ChatMonitorSettingsPage::on_showBacklogUnavailableDetails_clicked() +{ + // Explain that backlog fetching is disabled, so backlog messages won't show up + // + // Technically, backlog messages *will* show up once fetched, e.g. after clicking on a buffer. + // This might be too trivial of a detail to warrant explaining, though. + QMessageBox::information(this, + tr("Messages from backlog are not fetched"), + QString("

%1

%2

") + .arg(tr("No initial backlog will be fetched when using the backlog request method of %1.") + .arg(tr("Only fetch when needed").replace(" ", " ")), + tr("Configure this in the %1 settings page.") + .arg(tr("Backlog Fetching").replace(" ", " ")) + ) + ); + // Re-use translations of "Only fetch when needed" and "Backlog Fetching" as this is a + // word-for-word reference, forcing all spaces to be non-breaking +}