aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/MainWindow.cpp
diff options
context:
space:
mode:
authorleo78913 <leo3758@riseup.net>2023-01-26 19:48:21 -0300
committerleo78913 <leo3758@riseup.net>2023-01-26 19:48:21 -0300
commit4d2b5c2f42a34888ad26700461deb8c4e6f7b28c (patch)
tree90a5ff9f46061ba09eca055a4465823b7736948a /launcher/ui/MainWindow.cpp
parent5a25ce8c1bb2aad54eb558297a11f6b614003cd1 (diff)
downloadPrismLauncher-4d2b5c2f42a34888ad26700461deb8c4e6f7b28c.tar.gz
PrismLauncher-4d2b5c2f42a34888ad26700461deb8c4e6f7b28c.tar.bz2
PrismLauncher-4d2b5c2f42a34888ad26700461deb8c4e6f7b28c.zip
refactor: clean up some MainWindow stuff
this makes the accounts button and menubar item share the same QMenu and also refactors some code Signed-off-by: leo78913 <leo3758@riseup.net>
Diffstat (limited to 'launcher/ui/MainWindow.cpp')
-rw-r--r--launcher/ui/MainWindow.cpp57
1 files changed, 20 insertions, 37 deletions
diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp
index a51cd55f..9bc0d61f 100644
--- a/launcher/ui/MainWindow.cpp
+++ b/launcher/ui/MainWindow.cpp
@@ -189,15 +189,19 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
}
- // set the menu for the folders and help tool buttons
+ // set the menu for the folders help, and accounts tool buttons
{
auto foldersMenuButton = dynamic_cast<QToolButton*>(ui->mainToolBar->widgetForAction(ui->actionFoldersButton));
- foldersMenuButton->setMenu(ui->foldersMenu);
+ ui->actionFoldersButton->setMenu(ui->foldersMenu);
foldersMenuButton->setPopupMode(QToolButton::InstantPopup);
helpMenuButton = dynamic_cast<QToolButton*>(ui->mainToolBar->widgetForAction(ui->actionHelpButton));
- helpMenuButton->setMenu(ui->helpMenu);
+ ui->actionHelpButton->setMenu(ui->helpMenu);
helpMenuButton->setPopupMode(QToolButton::InstantPopup);
+
+ auto accountMenuButton = dynamic_cast<QToolButton*>(ui->mainToolBar->widgetForAction(ui->actionAccountsButton));
+ ui->actionAccountsButton->setMenu(ui->accountsMenu);
+ accountMenuButton->setPopupMode(QToolButton::InstantPopup);
}
// hide, disable and show stuff
@@ -209,9 +213,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
ui->actionCheckUpdate->setVisible(BuildConfig.UPDATER_ENABLED);
+#ifndef Q_OS_MAC
ui->actionAddToPATH->setVisible(false);
-#ifdef Q_OS_MAC
- ui->actionAddToPATH->setVisible(true);
#endif
// disabled until we have an instance selected
@@ -338,16 +341,11 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
ui->mainToolBar->insertWidget(ui->actionAccountsButton, spacer);
- accountMenu = new QMenu(this);
// Use undocumented property... https://stackoverflow.com/questions/7121718/create-a-scrollbar-in-a-submenu-qt
- accountMenu->setStyleSheet("QMenu { menu-scrollable: 1; }");
+ ui->accountsMenu->setStyleSheet("QMenu { menu-scrollable: 1; }");
repopulateAccountsMenu();
- accountMenuButton = dynamic_cast<QToolButton *>(ui->mainToolBar->widgetForAction(ui->actionAccountsButton));
- accountMenuButton->setMenu(accountMenu);
- accountMenuButton->setPopupMode(QToolButton::InstantPopup);
-
// Update the menu when the active account changes.
// Shouldn't have to use lambdas here like this, but if I don't, the compiler throws a fit.
// Template hell sucks...
@@ -434,10 +432,10 @@ void MainWindow::retranslateUi()
MinecraftAccountPtr defaultAccount = accounts->defaultAccount();
if(defaultAccount) {
auto profileLabel = profileInUseFilter(defaultAccount->profileName(), defaultAccount->isInUse());
- accountMenuButton->setText(profileLabel);
+ ui->actionAccountsButton->setText(profileLabel);
}
else {
- accountMenuButton->setText(tr("Accounts"));
+ ui->actionAccountsButton->setText(tr("Accounts"));
}
if (m_selectedInstance) {
@@ -687,7 +685,6 @@ void MainWindow::updateThemeMenu()
void MainWindow::repopulateAccountsMenu()
{
- accountMenu->clear();
ui->accountsMenu->clear();
auto accounts = APPLICATION->accounts();
@@ -697,18 +694,16 @@ void MainWindow::repopulateAccountsMenu()
if (defaultAccount)
{
// this can be called before accountMenuButton exists
- if (accountMenuButton)
+ if (ui->actionAccountsButton)
{
auto profileLabel = profileInUseFilter(defaultAccount->profileName(), defaultAccount->isInUse());
- accountMenuButton->setText(profileLabel);
+ ui->actionAccountsButton->setText(profileLabel);
}
}
if (accounts->count() <= 0)
{
- ui->actionNoAccountsAdded->setText(tr("No accounts added!"));
ui->actionNoAccountsAdded->setEnabled(false);
- accountMenu->addAction(ui->actionNoAccountsAdded);
ui->accountsMenu->addAction(ui->actionNoAccountsAdded);
}
else
@@ -740,33 +735,21 @@ void MainWindow::repopulateAccountsMenu()
action->setShortcut(QKeySequence(tr("Ctrl+%1").arg(i + 1)));
}
- accountMenu->addAction(action);
ui->accountsMenu->addAction(action);
connect(action, SIGNAL(triggered(bool)), SLOT(changeActiveAccount()));
}
}
- accountMenu->addSeparator();
ui->accountsMenu->addSeparator();
- ui->actionNoDefaultAccount = new QAction(this);
- ui->actionNoDefaultAccount->setObjectName(QStringLiteral("actionNoDefaultAccount"));
- ui->actionNoDefaultAccount->setText(tr("No Default Account"));
- ui->actionNoDefaultAccount->setCheckable(true);
- ui->actionNoDefaultAccount->setIcon(APPLICATION->getThemedIcon("noaccount"));
ui->actionNoDefaultAccount->setData(-1);
- ui->actionNoDefaultAccount->setShortcut(QKeySequence(tr("Ctrl+0")));
- if (!defaultAccount) {
- ui->actionNoDefaultAccount->setChecked(true);
- }
+ ui->actionNoDefaultAccount->setChecked(!defaultAccount);
- accountMenu->addAction(ui->actionNoDefaultAccount);
ui->accountsMenu->addAction(ui->actionNoDefaultAccount);
+
connect(ui->actionNoDefaultAccount, SIGNAL(triggered(bool)), SLOT(changeActiveAccount()));
- accountMenu->addSeparator();
ui->accountsMenu->addSeparator();
- accountMenu->addAction(ui->actionManageAccounts);
ui->accountsMenu->addAction(ui->actionManageAccounts);
}
@@ -811,20 +794,20 @@ void MainWindow::defaultAccountChanged()
if (account && account->profileName() != "")
{
auto profileLabel = profileInUseFilter(account->profileName(), account->isInUse());
- accountMenuButton->setText(profileLabel);
+ ui->actionAccountsButton->setText(profileLabel);
auto face = account->getFace();
if(face.isNull()) {
- accountMenuButton->setIcon(APPLICATION->getThemedIcon("noaccount"));
+ ui->actionAccountsButton->setIcon(APPLICATION->getThemedIcon("noaccount"));
}
else {
- accountMenuButton->setIcon(face);
+ ui->actionAccountsButton->setIcon(face);
}
return;
}
// Set the icon to the "no account" icon.
- accountMenuButton->setIcon(APPLICATION->getThemedIcon("noaccount"));
- accountMenuButton->setText(tr("Accounts"));
+ ui->actionAccountsButton->setIcon(APPLICATION->getThemedIcon("noaccount"));
+ ui->actionAccountsButton->setText(tr("Accounts"));
}
bool MainWindow::eventFilter(QObject *obj, QEvent *ev)