X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=489c02c37a7b5aa4fcaa62b48851d31d8dbcf608;hp=3ada47fddc0603d1c2c248c3b7d97305ea6e8f9e;hb=9a7b4728db831ffb74447e393a0a2cd07176909e;hpb=f88bfa81380ceb2c4afce5b15f753570a1ef063d diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 3ada47fd..489c02c3 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2018 by the Quassel Project * + * Copyright (C) 2005-2019 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -79,7 +79,7 @@ #include "coreinfodlg.h" #include "contextmenuactionprovider.h" #include "debugbufferviewoverlay.h" -#include "debuglogwidget.h" +#include "debuglogdlg.h" #include "debugmessagemodelfilter.h" #include "flatproxymodel.h" #include "icon.h" @@ -305,21 +305,17 @@ void MainWin::init() // restore locked state of docks QtUi::actionCollection("General")->action("LockLayout")->setChecked(s.value("LockLayout", false).toBool()); - QTimer::singleShot(0, this, SLOT(doAutoConnect())); -} - - -MainWin::~MainWin() -{ -} - + Quassel::registerQuitHandler([this]() { + QtUiSettings s; + saveStateToSettings(s); + saveLayout(); + // Close all open dialogs and the MainWin, so we can safely kill the Client instance afterwards + // Note: This does not quit the application, as quitOnLastWindowClosed is set to false. + // We rely on another quit handler to be registered that actually quits the application. + qApp->closeAllWindows(); + }); -void MainWin::quit() -{ - QtUiSettings s; - saveStateToSettings(s); - saveLayout(); - QApplication::quit(); + QTimer::singleShot(0, this, SLOT(doAutoConnect())); } @@ -416,7 +412,7 @@ void MainWin::setupActions() // // See https://doc.qt.io/qt-5/qkeysequence.html coll->addAction("Quit", new Action(icon::get("application-exit"), tr("&Quit"), coll, - this, SLOT(quit()), Qt::CTRL + Qt::Key_Q)); + Quassel::instance(), SLOT(quit()), Qt::CTRL + Qt::Key_Q)); // View coll->addAction("ConfigureBufferViews", new Action(tr("&Configure Chat Lists..."), coll, @@ -467,7 +463,7 @@ void MainWin::setupActions() aboutQuasselAct->setMenuRole(QAction::AboutRole); coll->addAction("AboutQuassel", aboutQuasselAct); - QAction *aboutQtAct = new Action(QIcon(":/pics/qt-logo.png"), tr("About &Qt"), coll, + QAction *aboutQtAct = new Action(QIcon(":/pics/qt-logo-32.png"), tr("About &Qt"), coll, qApp, SLOT(aboutQt())); aboutQtAct->setMenuRole(QAction::AboutQtRole); coll->addAction("AboutQt", aboutQtAct); @@ -823,13 +819,12 @@ void MainWin::changeActiveBufferView(int bufferViewId) void MainWin::showPasswordChangeDlg() { if(Client::isCoreFeatureEnabled(Quassel::Feature::PasswordChange)) { - PasswordChangeDlg dlg(this); - dlg.exec(); + PasswordChangeDlg{}.exec(); } else { QMessageBox box(QMessageBox::Warning, tr("Feature Not Supported"), tr("Your Quassel Core does not support this feature"), - QMessageBox::Ok, this); + QMessageBox::Ok); box.setInformativeText(tr("You need a Quassel Core v0.12.0 or newer in order to be able to remotely change your password.")); box.exec(); } @@ -865,7 +860,7 @@ void MainWin::onExitRequested(const QString &reason) QMessageBox box(QMessageBox::Critical, tr("Fatal error"), "" + tr("Quassel encountered a fatal error and is terminated.") + "", - QMessageBox::Ok, this); + QMessageBox::Ok); box.setInformativeText("
" + tr("Reason:") + " " + reason + "");
box.exec();
}
@@ -942,22 +937,19 @@ void MainWin::hideCurrentBuffer()
void MainWin::showNotificationsDlg()
{
- SettingsPageDlg dlg(new NotificationsSettingsPage(this), this);
- dlg.exec();
+ SettingsPageDlg{new NotificationsSettingsPage{}}.exec();
}
void MainWin::on_actionConfigureNetworks_triggered()
{
- SettingsPageDlg dlg(new NetworksSettingsPage(this), this);
- dlg.exec();
+ SettingsPageDlg{new NetworksSettingsPage{}}.exec();
}
void MainWin::on_actionConfigureViews_triggered()
{
- SettingsPageDlg dlg(new BufferViewSettingsPage(this), this);
- dlg.exec();
+ SettingsPageDlg{new BufferViewSettingsPage{}}.exec();
}
@@ -1310,13 +1302,13 @@ void MainWin::loadLayout()
QtUiSettings s;
int accountId = Client::currentCoreAccount().accountId().toInt();
QByteArray state = s.value(QString("MainWinState-%1").arg(accountId)).toByteArray();
+ _nickListWidget->setVisible(true);
if (state.isEmpty()) {
foreach(BufferViewDock *view, _bufferViews)
view->show();
_layoutLoaded = true;
return;
}
- _nickListWidget->setVisible(true);
restoreState(state, accountId);
int bufferViewId = s.value(QString("ActiveBufferView-%1").arg(accountId), -1).toInt();
if (bufferViewId >= 0)
@@ -1393,7 +1385,7 @@ void MainWin::setDisconnectedState()
void MainWin::userAuthenticationRequired(CoreAccount *account, bool *valid, const QString &errorMessage)
{
Q_UNUSED(errorMessage)
- CoreConnectAuthDlg dlg(account, this);
+ CoreConnectAuthDlg dlg(account);
*valid = (dlg.exec() == QDialog::Accepted);
}
@@ -1401,7 +1393,7 @@ void MainWin::userAuthenticationRequired(CoreAccount *account, bool *valid, cons
void MainWin::handleNoSslInClient(bool *accepted)
{
QMessageBox box(QMessageBox::Warning, tr("Unencrypted Connection"), tr("Your client does not support SSL encryption"),
- QMessageBox::Ignore|QMessageBox::Cancel, this);
+ QMessageBox::Ignore|QMessageBox::Cancel);
box.setInformativeText(tr("Sensitive data, like passwords, will be transmitted unencrypted to your Quassel core."));
box.setDefaultButton(QMessageBox::Ignore);
*accepted = box.exec() == QMessageBox::Ignore;
@@ -1411,7 +1403,7 @@ void MainWin::handleNoSslInClient(bool *accepted)
void MainWin::handleNoSslInCore(bool *accepted)
{
QMessageBox box(QMessageBox::Warning, tr("Unencrypted Connection"), tr("Your core does not support SSL encryption"),
- QMessageBox::Ignore|QMessageBox::Cancel, this);
+ QMessageBox::Ignore|QMessageBox::Cancel);
box.setInformativeText(tr("Sensitive data, like passwords, will be transmitted unencrypted to your Quassel core."));
box.setDefaultButton(QMessageBox::Ignore);
*accepted = box.exec() == QMessageBox::Ignore;
@@ -1430,7 +1422,7 @@ void MainWin::handleSslErrors(const QSslSocket *socket, bool *accepted, bool *pe
QMessageBox box(QMessageBox::Warning,
tr("Untrusted Security Certificate"),
tr("The SSL certificate provided by the core at %1 is untrusted for the following reasons:").arg(socket->peerName()),
- QMessageBox::Cancel, this);
+ QMessageBox::Cancel);
box.setInformativeText(errorString);
box.addButton(tr("Continue"), QMessageBox::AcceptRole);
box.setDefaultButton(box.addButton(tr("Show Certificate"), QMessageBox::HelpRole));
@@ -1440,7 +1432,7 @@ void MainWin::handleSslErrors(const QSslSocket *socket, bool *accepted, bool *pe
box.exec();
role = box.buttonRole(box.clickedButton());
if (role == QMessageBox::HelpRole) {
- SslInfoDlg dlg(socket, this);
+ SslInfoDlg dlg(socket);
dlg.exec();
}
}
@@ -1451,7 +1443,7 @@ void MainWin::handleSslErrors(const QSslSocket *socket, bool *accepted, bool *pe
QMessageBox box2(QMessageBox::Warning,
tr("Untrusted Security Certificate"),
tr("Would you like to accept this certificate forever without being prompted?"),
- 0, this);
+ 0);
box2.setDefaultButton(box2.addButton(tr("Current Session Only"), QMessageBox::NoRole));
box2.addButton(tr("Forever"), QMessageBox::YesRole);
box2.exec();
@@ -1470,7 +1462,7 @@ void MainWin::handleCoreConnectionError(const QString &error)
void MainWin::showCoreConnectionDlg()
{
- CoreConnectDlg dlg(this);
+ CoreConnectDlg dlg;
if (dlg.exec() == QDialog::Accepted) {
AccountId accId = dlg.selectedAccount();
if (accId.isValid())
@@ -1489,8 +1481,6 @@ void MainWin::showCoreConfigWizard(const QVariantList &backends, const QVariantL
void MainWin::showChannelList(NetworkId netId, const QString &channelFilters, bool listImmediately)
{
- ChannelListDlg *channelListDlg = new ChannelListDlg();
-
if (!netId.isValid()) {
QAction *action = qobject_cast