mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-29 06:08:48 +03:00
parent
c4fa8c844d
commit
4521837765
3 changed files with 52 additions and 5 deletions
|
@ -61,10 +61,17 @@ public:
|
||||||
save();
|
save();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void setTypingNotifications(bool state)
|
||||||
|
{
|
||||||
|
isTypingNotificationsEnabled_ = state;
|
||||||
|
save();
|
||||||
|
};
|
||||||
|
|
||||||
QString theme() const { return !theme_.isEmpty() ? theme_ : "light"; }
|
QString theme() const { return !theme_.isEmpty() ? theme_ : "light"; }
|
||||||
bool isTrayEnabled() const { return isTrayEnabled_; }
|
bool isTrayEnabled() const { return isTrayEnabled_; }
|
||||||
bool isOrderingEnabled() const { return isOrderingEnabled_; }
|
bool isOrderingEnabled() const { return isOrderingEnabled_; }
|
||||||
bool isGroupViewEnabled() const { return isGroupViewEnabled_; }
|
bool isGroupViewEnabled() const { return isGroupViewEnabled_; }
|
||||||
|
bool isTypingNotificationsEnabled() const { return isTypingNotificationsEnabled_; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void groupViewStateChanged(bool state);
|
void groupViewStateChanged(bool state);
|
||||||
|
@ -74,6 +81,7 @@ private:
|
||||||
bool isTrayEnabled_;
|
bool isTrayEnabled_;
|
||||||
bool isOrderingEnabled_;
|
bool isOrderingEnabled_;
|
||||||
bool isGroupViewEnabled_;
|
bool isGroupViewEnabled_;
|
||||||
|
bool isTypingNotificationsEnabled_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class HorizontalLine : public QFrame
|
class HorizontalLine : public QFrame
|
||||||
|
@ -114,6 +122,7 @@ private:
|
||||||
Toggle *trayToggle_;
|
Toggle *trayToggle_;
|
||||||
Toggle *roomOrderToggle_;
|
Toggle *roomOrderToggle_;
|
||||||
Toggle *groupViewToggle_;
|
Toggle *groupViewToggle_;
|
||||||
|
Toggle *typingNotifications_;
|
||||||
|
|
||||||
QComboBox *themeCombo_;
|
QComboBox *themeCombo_;
|
||||||
|
|
||||||
|
|
|
@ -155,6 +155,11 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client,
|
||||||
connect(room_list_, &RoomList::roomChanged, this, [=](const QString &roomid) {
|
connect(room_list_, &RoomList::roomChanged, this, [=](const QString &roomid) {
|
||||||
QStringList users;
|
QStringList users;
|
||||||
|
|
||||||
|
if (!userSettings_->isTypingNotificationsEnabled()) {
|
||||||
|
typingDisplay_->setUsers(users);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (typingUsers_.contains(roomid))
|
if (typingUsers_.contains(roomid))
|
||||||
users = typingUsers_[roomid];
|
users = typingUsers_[roomid];
|
||||||
|
|
||||||
|
@ -190,16 +195,25 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client,
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(text_input_, &TextInputWidget::startedTyping, this, [=]() {
|
connect(text_input_, &TextInputWidget::startedTyping, this, [=]() {
|
||||||
|
if (!userSettings_->isTypingNotificationsEnabled())
|
||||||
|
return;
|
||||||
|
|
||||||
typingRefresher_->start();
|
typingRefresher_->start();
|
||||||
client_->sendTypingNotification(current_room_);
|
client_->sendTypingNotification(current_room_);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(text_input_, &TextInputWidget::stoppedTyping, this, [=]() {
|
connect(text_input_, &TextInputWidget::stoppedTyping, this, [=]() {
|
||||||
|
if (!userSettings_->isTypingNotificationsEnabled())
|
||||||
|
return;
|
||||||
|
|
||||||
typingRefresher_->stop();
|
typingRefresher_->stop();
|
||||||
client_->removeTypingNotification(current_room_);
|
client_->removeTypingNotification(current_room_);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(typingRefresher_, &QTimer::timeout, this, [=]() {
|
connect(typingRefresher_, &QTimer::timeout, this, [=]() {
|
||||||
|
if (!userSettings_->isTypingNotificationsEnabled())
|
||||||
|
return;
|
||||||
|
|
||||||
client_->sendTypingNotification(current_room_);
|
client_->sendTypingNotification(current_room_);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -773,6 +787,9 @@ ChatPage::removeInvite(const QString &room_id)
|
||||||
void
|
void
|
||||||
ChatPage::updateTypingUsers(const QString &roomid, const std::vector<std::string> &user_ids)
|
ChatPage::updateTypingUsers(const QString &roomid, const std::vector<std::string> &user_ids)
|
||||||
{
|
{
|
||||||
|
if (!userSettings_->isTypingNotificationsEnabled())
|
||||||
|
return;
|
||||||
|
|
||||||
QStringList users;
|
QStringList users;
|
||||||
|
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QScrollArea>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
|
@ -33,10 +34,11 @@ void
|
||||||
UserSettings::load()
|
UserSettings::load()
|
||||||
{
|
{
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
isTrayEnabled_ = settings.value("user/window/tray", true).toBool();
|
isTrayEnabled_ = settings.value("user/window/tray", true).toBool();
|
||||||
isOrderingEnabled_ = settings.value("user/room_ordering", true).toBool();
|
isOrderingEnabled_ = settings.value("user/room_ordering", true).toBool();
|
||||||
isGroupViewEnabled_ = settings.value("user/group_view", true).toBool();
|
isGroupViewEnabled_ = settings.value("user/group_view", true).toBool();
|
||||||
theme_ = settings.value("user/theme", "light").toString();
|
isTypingNotificationsEnabled_ = settings.value("user/typing_notifications", true).toBool();
|
||||||
|
theme_ = settings.value("user/theme", "light").toString();
|
||||||
|
|
||||||
applyTheme();
|
applyTheme();
|
||||||
}
|
}
|
||||||
|
@ -83,6 +85,7 @@ UserSettings::save()
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.setValue("room_ordering", isOrderingEnabled_);
|
settings.setValue("room_ordering", isOrderingEnabled_);
|
||||||
|
settings.setValue("typing_notifications", isTypingNotificationsEnabled_);
|
||||||
settings.setValue("group_view", isGroupViewEnabled_);
|
settings.setValue("group_view", isGroupViewEnabled_);
|
||||||
settings.setValue("theme", theme());
|
settings.setValue("theme", theme());
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
@ -152,9 +155,20 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge
|
||||||
groupViewLayout->addWidget(groupViewLabel);
|
groupViewLayout->addWidget(groupViewLabel);
|
||||||
groupViewLayout->addWidget(groupViewToggle_, 0, Qt::AlignBottom | Qt::AlignRight);
|
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;
|
auto themeOptionLayout_ = new QHBoxLayout;
|
||||||
themeOptionLayout_->setContentsMargins(0, OptionMargin, 0, OptionMargin);
|
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_ = new QComboBox(this);
|
||||||
themeCombo_->addItem("Light");
|
themeCombo_->addItem("Light");
|
||||||
themeCombo_->addItem("Dark");
|
themeCombo_->addItem("Dark");
|
||||||
|
@ -179,6 +193,8 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge
|
||||||
mainLayout_->addWidget(new HorizontalLine(this));
|
mainLayout_->addWidget(new HorizontalLine(this));
|
||||||
mainLayout_->addLayout(groupViewLayout);
|
mainLayout_->addLayout(groupViewLayout);
|
||||||
mainLayout_->addWidget(new HorizontalLine(this));
|
mainLayout_->addWidget(new HorizontalLine(this));
|
||||||
|
mainLayout_->addLayout(typingLayout);
|
||||||
|
mainLayout_->addWidget(new HorizontalLine(this));
|
||||||
mainLayout_->addLayout(themeOptionLayout_);
|
mainLayout_->addLayout(themeOptionLayout_);
|
||||||
mainLayout_->addWidget(new HorizontalLine(this));
|
mainLayout_->addWidget(new HorizontalLine(this));
|
||||||
|
|
||||||
|
@ -203,6 +219,10 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge
|
||||||
settings_->setGroupView(!isDisabled);
|
settings_->setGroupView(!isDisabled);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(typingNotifications_, &Toggle::toggled, this, [=](bool isDisabled) {
|
||||||
|
settings_->setTypingNotifications(!isDisabled);
|
||||||
|
});
|
||||||
|
|
||||||
connect(backBtn_, &QPushButton::clicked, this, [=]() {
|
connect(backBtn_, &QPushButton::clicked, this, [=]() {
|
||||||
settings_->save();
|
settings_->save();
|
||||||
emit moveBack();
|
emit moveBack();
|
||||||
|
@ -218,6 +238,7 @@ UserSettingsPage::showEvent(QShowEvent *)
|
||||||
trayToggle_->setState(!settings_->isTrayEnabled());
|
trayToggle_->setState(!settings_->isTrayEnabled());
|
||||||
roomOrderToggle_->setState(!settings_->isOrderingEnabled());
|
roomOrderToggle_->setState(!settings_->isOrderingEnabled());
|
||||||
groupViewToggle_->setState(!settings_->isGroupViewEnabled());
|
groupViewToggle_->setState(!settings_->isGroupViewEnabled());
|
||||||
|
typingNotifications_->setState(!settings_->isTypingNotificationsEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in a new issue