From 1af20e27f2dc050b319d269bad448f44848785e9 Mon Sep 17 00:00:00 2001 From: antonpavanvo Date: Fri, 27 May 2022 10:02:36 +0400 Subject: [PATCH] fix: Pop up windows: About, Accounts, Account, Settings - opening on centr of parent --- ui/squawk.cpp | 22 ++++++++-------------- ui/widgets/about.cpp | 7 +++---- ui/widgets/accounts/account.cpp | 8 ++++++-- ui/widgets/accounts/account.h | 2 +- ui/widgets/accounts/accounts.cpp | 10 +++++++--- ui/widgets/accounts/accounts.h | 4 ++-- ui/widgets/settings/settings.cpp | 6 +++++- ui/widgets/settings/settings.h | 4 ++-- 8 files changed, 34 insertions(+), 29 deletions(-) diff --git a/ui/squawk.cpp b/ui/squawk.cpp index 8547267..82066d9 100644 --- a/ui/squawk.cpp +++ b/ui/squawk.cpp @@ -96,7 +96,7 @@ Squawk::~Squawk() { void Squawk::onAccounts() { if (accounts == nullptr) { - accounts = new Accounts(rosterModel.accountsModel); + accounts = new Accounts(rosterModel.accountsModel, this); accounts->setAttribute(Qt::WA_DeleteOnClose); connect(accounts, &Accounts::destroyed, this, &Squawk::onAccountsClosed); connect(accounts, &Accounts::newAccount, this, &Squawk::newAccountRequest); @@ -104,29 +104,23 @@ void Squawk::onAccounts() connect(accounts, &Accounts::connectAccount, this, &Squawk::connectAccount); connect(accounts, &Accounts::disconnectAccount, this, &Squawk::disconnectAccount); connect(accounts, &Accounts::removeAccount, this, &Squawk::removeAccountRequest); - - accounts->show(); - } else { - accounts->show(); - accounts->raise(); - accounts->activateWindow(); } + accounts->show(); + accounts->raise(); + accounts->activateWindow(); } void Squawk::onPreferences() { if (preferences == nullptr) { - preferences = new Settings(); + preferences = new Settings(this); preferences->setAttribute(Qt::WA_DeleteOnClose); connect(preferences, &Settings::destroyed, this, &Squawk::onPreferencesClosed); connect(preferences, &Settings::changeDownloadsPath, this, &Squawk::changeDownloadsPath); - - preferences->show(); - } else { - preferences->show(); - preferences->raise(); - preferences->activateWindow(); } + preferences->show(); + preferences->raise(); + preferences->activateWindow(); } diff --git a/ui/widgets/about.cpp b/ui/widgets/about.cpp index b40594b..320c2c4 100644 --- a/ui/widgets/about.cpp +++ b/ui/widgets/about.cpp @@ -38,10 +38,9 @@ About::About(QWidget* parent): m_ui->qxmppBuiltAgainstVersion->setText(tr("(built against %1)").arg(QXMPP_VERSION_STRING)); setWindowFlag(Qt::WindowStaysOnTopHint); - move( - parent->window()->frameGeometry().topLeft() + - parent->window()->rect().center() - rect().center() - ); + if (parent) + move(parent->window()->frameGeometry().topLeft() + + parent->window()->rect().center() - rect().center()); connect(m_ui->licenceLink, &QLabel::linkActivated, this, &About::onLicenseActivated); } diff --git a/ui/widgets/accounts/account.cpp b/ui/widgets/accounts/account.cpp index 164af6c..16a2625 100644 --- a/ui/widgets/accounts/account.cpp +++ b/ui/widgets/accounts/account.cpp @@ -19,8 +19,8 @@ #include "account.h" #include "ui_account.h" -Account::Account(): - QDialog(), +Account::Account(QWidget *parent): + QDialog(parent), m_ui(new Ui::Account) { m_ui->setupUi(this); @@ -38,6 +38,10 @@ Account::Account(): QStandardItem *item = model->item(static_cast(Shared::AccountPassword::kwallet)); item->setFlags(item->flags() & ~Qt::ItemIsEnabled); } + + if (parent) + move(parent->window()->frameGeometry().topLeft() + + parent->window()->rect().center() - rect().center()); } Account::~Account() diff --git a/ui/widgets/accounts/account.h b/ui/widgets/accounts/account.h index cbe8b9c..6cc85dc 100644 --- a/ui/widgets/accounts/account.h +++ b/ui/widgets/accounts/account.h @@ -38,7 +38,7 @@ class Account : public QDialog Q_OBJECT public: - Account(); + Account(QWidget *parent = nullptr); ~Account(); QMap value() const; diff --git a/ui/widgets/accounts/accounts.cpp b/ui/widgets/accounts/accounts.cpp index 82a8ca0..0dd46a0 100644 --- a/ui/widgets/accounts/accounts.cpp +++ b/ui/widgets/accounts/accounts.cpp @@ -22,7 +22,7 @@ #include Accounts::Accounts(Models::Accounts* p_model, QWidget *parent) : - QWidget(parent), + QDialog(parent), m_ui(new Ui::Accounts), model(p_model), editing(false), @@ -38,13 +38,17 @@ Accounts::Accounts(Models::Accounts* p_model, QWidget *parent) : connect(m_ui->tableView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &Accounts::onSelectionChanged); connect(p_model, &Models::Accounts::changed, this, &Accounts::updateConnectButton); connect(m_ui->tableView, &QTableView::doubleClicked, this, &Accounts::onEditButton); + + if (parent) + move(parent->window()->frameGeometry().topLeft() + + parent->window()->rect().center() - rect().center()); } Accounts::~Accounts() = default; void Accounts::onAddButton() { - Account* acc = new Account(); + Account* acc = new Account(this); connect(acc, &Account::accepted, this, &Accounts::onAccountAccepted); connect(acc, &Account::rejected, this, &Accounts::onAccountRejected); acc->exec(); @@ -74,7 +78,7 @@ void Accounts::onAccountRejected() void Accounts::onEditButton() { - Account* acc = new Account(); + Account* acc = new Account(this); const Models::Account* mAcc = model->getAccount(m_ui->tableView->selectionModel()->selectedRows().at(0).row()); acc->setData({ diff --git a/ui/widgets/accounts/accounts.h b/ui/widgets/accounts/accounts.h index 6d5eb95..111a97a 100644 --- a/ui/widgets/accounts/accounts.h +++ b/ui/widgets/accounts/accounts.h @@ -19,7 +19,7 @@ #ifndef ACCOUNTS_H #define ACCOUNTS_H -#include +#include #include #include @@ -31,7 +31,7 @@ namespace Ui class Accounts; } -class Accounts : public QWidget +class Accounts : public QDialog { Q_OBJECT public: diff --git a/ui/widgets/settings/settings.cpp b/ui/widgets/settings/settings.cpp index cf5e905..86cd883 100644 --- a/ui/widgets/settings/settings.cpp +++ b/ui/widgets/settings/settings.cpp @@ -20,7 +20,7 @@ #include "ui_settings.h" Settings::Settings(QWidget* parent): - QWidget(parent), + QDialog(parent), m_ui(new Ui::Settings()), modifiedSettings() { @@ -34,6 +34,10 @@ Settings::Settings(QWidget* parent): connect(m_ui->applyButton, &QPushButton::clicked, this, &Settings::apply); connect(m_ui->okButton, &QPushButton::clicked, this, &Settings::confirm); connect(m_ui->cancelButton, &QPushButton::clicked, this, &Settings::close); + + if (parent) + move(parent->window()->frameGeometry().topLeft() + + parent->window()->rect().center() - rect().center()); } Settings::~Settings() diff --git a/ui/widgets/settings/settings.h b/ui/widgets/settings/settings.h index 689e0ce..22be36e 100644 --- a/ui/widgets/settings/settings.h +++ b/ui/widgets/settings/settings.h @@ -19,7 +19,7 @@ #ifndef SETTINGS_H #define SETTINGS_H -#include +#include #include #include #include @@ -36,7 +36,7 @@ class Settings; /** * @todo write docs */ -class Settings : public QWidget +class Settings : public QDialog { Q_OBJECT public: