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
|