summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-01-14 15:57:58 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-01-14 15:57:58 +0200
commit4521837765b6eb27f86773594995f8f483690d92 (patch)
treedbb155116b70e21233b9de27e8e2d546afee3720 /src
parentAdd a checkmark to messages that have been received by the server (#93) (diff)
downloadnheko-4521837765b6eb27f86773594995f8f483690d92.tar.xz
Add option to disable typing notifications
fixes #131
Diffstat (limited to 'src')
-rw-r--r--src/ChatPage.cc17
-rw-r--r--src/UserSettingsPage.cc31
2 files changed, 43 insertions, 5 deletions
diff --git a/src/ChatPage.cc b/src/ChatPage.cc

index 9bb90134..b2ffdfa7 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc
@@ -155,6 +155,11 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, connect(room_list_, &RoomList::roomChanged, this, [=](const QString &roomid) { QStringList users; + if (!userSettings_->isTypingNotificationsEnabled()) { + typingDisplay_->setUsers(users); + return; + } + if (typingUsers_.contains(roomid)) users = typingUsers_[roomid]; @@ -190,16 +195,25 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, }); connect(text_input_, &TextInputWidget::startedTyping, this, [=]() { + if (!userSettings_->isTypingNotificationsEnabled()) + return; + typingRefresher_->start(); client_->sendTypingNotification(current_room_); }); connect(text_input_, &TextInputWidget::stoppedTyping, this, [=]() { + if (!userSettings_->isTypingNotificationsEnabled()) + return; + typingRefresher_->stop(); client_->removeTypingNotification(current_room_); }); connect(typingRefresher_, &QTimer::timeout, this, [=]() { + if (!userSettings_->isTypingNotificationsEnabled()) + return; + client_->sendTypingNotification(current_room_); }); @@ -773,6 +787,9 @@ ChatPage::removeInvite(const QString &room_id) void ChatPage::updateTypingUsers(const QString &roomid, const std::vector<std::string> &user_ids) { + if (!userSettings_->isTypingNotificationsEnabled()) + return; + QStringList users; QSettings settings; diff --git a/src/UserSettingsPage.cc b/src/UserSettingsPage.cc
index 17668c3d..cff29afd 100644 --- a/src/UserSettingsPage.cc +++ b/src/UserSettingsPage.cc
@@ -20,6 +20,7 @@ #include <QDebug> #include <QLabel> #include <QPushButton> +#include <QScrollArea> #include <QSettings> #include "Config.h" @@ -33,10 +34,11 @@ void UserSettings::load() { QSettings settings; - isTrayEnabled_ = settings.value("user/window/tray", true).toBool(); - isOrderingEnabled_ = settings.value("user/room_ordering", true).toBool(); - isGroupViewEnabled_ = settings.value("user/group_view", true).toBool(); - theme_ = settings.value("user/theme", "light").toString(); + isTrayEnabled_ = settings.value("user/window/tray", true).toBool(); + isOrderingEnabled_ = settings.value("user/room_ordering", true).toBool(); + isGroupViewEnabled_ = settings.value("user/group_view", true).toBool(); + isTypingNotificationsEnabled_ = settings.value("user/typing_notifications", true).toBool(); + theme_ = settings.value("user/theme", "light").toString(); applyTheme(); } @@ -83,6 +85,7 @@ UserSettings::save() settings.endGroup(); settings.setValue("room_ordering", isOrderingEnabled_); + settings.setValue("typing_notifications", isTypingNotificationsEnabled_); settings.setValue("group_view", isGroupViewEnabled_); settings.setValue("theme", theme()); settings.endGroup(); @@ -152,9 +155,20 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge groupViewLayout->addWidget(groupViewLabel); groupViewLayout->addWidget(groupViewToggle_, 0, Qt::AlignBottom | Qt::AlignRight); + auto typingLayout = new QHBoxLayout; + typingLayout->setContentsMargins(0, OptionMargin, 0, OptionMargin); + auto typingLabel = new QLabel(tr("Typing notifications"), this); + typingNotifications_ = new Toggle(this); + typingNotifications_->setActiveColor(QColor("#38A3D8")); + typingNotifications_->setInactiveColor(QColor("gray")); + typingLabel->setStyleSheet("font-size: 15px;"); + + typingLayout->addWidget(typingLabel); + typingLayout->addWidget(typingNotifications_, 0, Qt::AlignBottom | Qt::AlignRight); + auto themeOptionLayout_ = new QHBoxLayout; themeOptionLayout_->setContentsMargins(0, OptionMargin, 0, OptionMargin); - auto themeLabel_ = new QLabel(tr("App theme"), this); + auto themeLabel_ = new QLabel(tr("Theme"), this); themeCombo_ = new QComboBox(this); themeCombo_->addItem("Light"); themeCombo_->addItem("Dark"); @@ -179,6 +193,8 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge mainLayout_->addWidget(new HorizontalLine(this)); mainLayout_->addLayout(groupViewLayout); mainLayout_->addWidget(new HorizontalLine(this)); + mainLayout_->addLayout(typingLayout); + mainLayout_->addWidget(new HorizontalLine(this)); mainLayout_->addLayout(themeOptionLayout_); mainLayout_->addWidget(new HorizontalLine(this)); @@ -203,6 +219,10 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge settings_->setGroupView(!isDisabled); }); + connect(typingNotifications_, &Toggle::toggled, this, [=](bool isDisabled) { + settings_->setTypingNotifications(!isDisabled); + }); + connect(backBtn_, &QPushButton::clicked, this, [=]() { settings_->save(); emit moveBack(); @@ -218,6 +238,7 @@ UserSettingsPage::showEvent(QShowEvent *) trayToggle_->setState(!settings_->isTrayEnabled()); roomOrderToggle_->setState(!settings_->isOrderingEnabled()); groupViewToggle_->setState(!settings_->isGroupViewEnabled()); + typingNotifications_->setState(!settings_->isTypingNotificationsEnabled()); } void