summary refs log tree commit diff
path: root/src/MainWindow.cpp
diff options
context:
space:
mode:
authortrilene <trilene@runbox.com>2020-07-23 17:20:32 -0400
committertrilene <trilene@runbox.com>2020-07-23 17:20:32 -0400
commit7377215d28df70ca365a843a6a05f4f28c6c403a (patch)
treeac5225c7b7b4de8d7202c821c16a533dc5b82610 /src/MainWindow.cpp
parentTweak ActiveCallBar (diff)
downloadnheko-7377215d28df70ca365a843a6a05f4f28c6c403a.tar.xz
Confirm logout/quit if active call in progress
Diffstat (limited to 'src/MainWindow.cpp')
-rw-r--r--src/MainWindow.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp

index cc1d868b..4dab3d26 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp
@@ -17,6 +17,7 @@ #include <QApplication> #include <QLayout> +#include <QMessageBox> #include <QPluginLoader> #include <QSettings> #include <QShortcut> @@ -35,6 +36,7 @@ #include "TrayIcon.h" #include "UserSettingsPage.h" #include "Utils.h" +#include "WebRTCSession.h" #include "WelcomePage.h" #include "ui/LoadingIndicator.h" #include "ui/OverlayModal.h" @@ -285,6 +287,14 @@ MainWindow::showChatPage() void MainWindow::closeEvent(QCloseEvent *event) { + if (WebRTCSession::instance().state() != WebRTCSession::State::DISCONNECTED) { + if (QMessageBox::question(this, "nheko", "A call is in progress. Quit?") != + QMessageBox::Yes) { + event->ignore(); + return; + } + } + if (!qApp->isSavingSession() && isVisible() && pageSupportsTray() && userSettings_->tray()) { event->ignore(); @@ -433,8 +443,17 @@ void MainWindow::openLogoutDialog() { auto dialog = new dialogs::Logout(this); - connect( - dialog, &dialogs::Logout::loggingOut, this, [this]() { chat_page_->initiateLogout(); }); + connect(dialog, &dialogs::Logout::loggingOut, this, [this]() { + if (WebRTCSession::instance().state() != WebRTCSession::State::DISCONNECTED) { + if (QMessageBox::question( + this, "nheko", "A call is in progress. Log out?") != + QMessageBox::Yes) { + return; + } + WebRTCSession::instance().end(); + } + chat_page_->initiateLogout(); + }); showDialog(dialog); }