summary refs log tree commit diff
path: root/src/UserInfoWidget.cpp
diff options
context:
space:
mode:
authorJoseph Donofry <joedonofry@gmail.com>2020-06-11 22:28:44 -0400
committerGitHub <noreply@github.com>2020-06-11 22:28:44 -0400
commit21dfb3c0b9fb760391ff76f39a81889db94d50e3 (patch)
treefa33fb0a8be883401da6bc90054be31a42df4db0 /src/UserInfoWidget.cpp
parentMerge pull request #217 from Nheko-Reborn/reactions (diff)
parentMerge branch origin/master and update translations (diff)
downloadnheko-21dfb3c0b9fb760391ff76f39a81889db94d50e3.tar.xz
Merge pull request #216 from Nheko-Reborn/presence
Presence support
Diffstat (limited to 'src/UserInfoWidget.cpp')
-rw-r--r--src/UserInfoWidget.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/UserInfoWidget.cpp b/src/UserInfoWidget.cpp

index e11aa6aa..f8e94431 100644 --- a/src/UserInfoWidget.cpp +++ b/src/UserInfoWidget.cpp
@@ -16,7 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <QInputDialog> #include <QLabel> +#include <QMenu> #include <QPainter> #include <QStyle> #include <QStyleOption> @@ -24,10 +26,12 @@ #include <iostream> +#include "ChatPage.h" #include "Config.h" #include "MainWindow.h" #include "Splitter.h" #include "UserInfoWidget.h" +#include "UserSettingsPage.h" #include "ui/Avatar.h" #include "ui/FlatButton.h" #include "ui/OverlayModal.h" @@ -105,6 +109,52 @@ UserInfoWidget::UserInfoWidget(QWidget *parent) connect(logoutButton_, &QPushButton::clicked, this, []() { MainWindow::instance()->openLogoutDialog(); }); + + menu = new QMenu(this); + + auto setStatusAction = menu->addAction(tr("Set custom status message")); + connect(setStatusAction, &QAction::triggered, this, [this]() { + bool ok = false; + QString text = QInputDialog::getText(this, + tr("Custom status message"), + tr("Status:"), + QLineEdit::Normal, + ChatPage::instance()->status(), + &ok); + if (ok) + ChatPage::instance()->setStatus(text); + }); + +#if 0 // disable presence menu until issues in synapse are resolved + auto setAutoPresence = menu->addAction(tr("Set presence automatically")); + connect(setAutoPresence, &QAction::triggered, this, []() { + ChatPage::instance()->userSettings()->setPresence( + UserSettings::Presence::AutomaticPresence); + ChatPage::instance()->setStatus(ChatPage::instance()->status()); + }); + auto setOnline = menu->addAction(tr("Online")); + connect(setOnline, &QAction::triggered, this, []() { + ChatPage::instance()->userSettings()->setPresence(UserSettings::Presence::Online); + ChatPage::instance()->setStatus(ChatPage::instance()->status()); + }); + auto setUnavailable = menu->addAction(tr("Unavailable")); + connect(setUnavailable, &QAction::triggered, this, []() { + ChatPage::instance()->userSettings()->setPresence( + UserSettings::Presence::Unavailable); + ChatPage::instance()->setStatus(ChatPage::instance()->status()); + }); + auto setOffline = menu->addAction(tr("Offline")); + connect(setOffline, &QAction::triggered, this, []() { + ChatPage::instance()->userSettings()->setPresence(UserSettings::Presence::Offline); + ChatPage::instance()->setStatus(ChatPage::instance()->status()); + }); +#endif +} + +void +UserInfoWidget::contextMenuEvent(QContextMenuEvent *event) +{ + menu->popup(event->globalPos()); } void