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>
This commit is contained in:
parent
5a25ce8c1b
commit
4d2b5c2f42
@ -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));
|
auto foldersMenuButton = dynamic_cast<QToolButton*>(ui->mainToolBar->widgetForAction(ui->actionFoldersButton));
|
||||||
foldersMenuButton->setMenu(ui->foldersMenu);
|
ui->actionFoldersButton->setMenu(ui->foldersMenu);
|
||||||
foldersMenuButton->setPopupMode(QToolButton::InstantPopup);
|
foldersMenuButton->setPopupMode(QToolButton::InstantPopup);
|
||||||
|
|
||||||
helpMenuButton = dynamic_cast<QToolButton*>(ui->mainToolBar->widgetForAction(ui->actionHelpButton));
|
helpMenuButton = dynamic_cast<QToolButton*>(ui->mainToolBar->widgetForAction(ui->actionHelpButton));
|
||||||
helpMenuButton->setMenu(ui->helpMenu);
|
ui->actionHelpButton->setMenu(ui->helpMenu);
|
||||||
helpMenuButton->setPopupMode(QToolButton::InstantPopup);
|
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
|
// 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);
|
ui->actionCheckUpdate->setVisible(BuildConfig.UPDATER_ENABLED);
|
||||||
|
|
||||||
|
#ifndef Q_OS_MAC
|
||||||
ui->actionAddToPATH->setVisible(false);
|
ui->actionAddToPATH->setVisible(false);
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
ui->actionAddToPATH->setVisible(true);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// disabled until we have an instance selected
|
// 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);
|
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
ui->mainToolBar->insertWidget(ui->actionAccountsButton, spacer);
|
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
|
// 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();
|
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.
|
// 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.
|
// Shouldn't have to use lambdas here like this, but if I don't, the compiler throws a fit.
|
||||||
// Template hell sucks...
|
// Template hell sucks...
|
||||||
@ -434,10 +432,10 @@ void MainWindow::retranslateUi()
|
|||||||
MinecraftAccountPtr defaultAccount = accounts->defaultAccount();
|
MinecraftAccountPtr defaultAccount = accounts->defaultAccount();
|
||||||
if(defaultAccount) {
|
if(defaultAccount) {
|
||||||
auto profileLabel = profileInUseFilter(defaultAccount->profileName(), defaultAccount->isInUse());
|
auto profileLabel = profileInUseFilter(defaultAccount->profileName(), defaultAccount->isInUse());
|
||||||
accountMenuButton->setText(profileLabel);
|
ui->actionAccountsButton->setText(profileLabel);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
accountMenuButton->setText(tr("Accounts"));
|
ui->actionAccountsButton->setText(tr("Accounts"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_selectedInstance) {
|
if (m_selectedInstance) {
|
||||||
@ -687,7 +685,6 @@ void MainWindow::updateThemeMenu()
|
|||||||
|
|
||||||
void MainWindow::repopulateAccountsMenu()
|
void MainWindow::repopulateAccountsMenu()
|
||||||
{
|
{
|
||||||
accountMenu->clear();
|
|
||||||
ui->accountsMenu->clear();
|
ui->accountsMenu->clear();
|
||||||
|
|
||||||
auto accounts = APPLICATION->accounts();
|
auto accounts = APPLICATION->accounts();
|
||||||
@ -697,18 +694,16 @@ void MainWindow::repopulateAccountsMenu()
|
|||||||
if (defaultAccount)
|
if (defaultAccount)
|
||||||
{
|
{
|
||||||
// this can be called before accountMenuButton exists
|
// this can be called before accountMenuButton exists
|
||||||
if (accountMenuButton)
|
if (ui->actionAccountsButton)
|
||||||
{
|
{
|
||||||
auto profileLabel = profileInUseFilter(defaultAccount->profileName(), defaultAccount->isInUse());
|
auto profileLabel = profileInUseFilter(defaultAccount->profileName(), defaultAccount->isInUse());
|
||||||
accountMenuButton->setText(profileLabel);
|
ui->actionAccountsButton->setText(profileLabel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (accounts->count() <= 0)
|
if (accounts->count() <= 0)
|
||||||
{
|
{
|
||||||
ui->actionNoAccountsAdded->setText(tr("No accounts added!"));
|
|
||||||
ui->actionNoAccountsAdded->setEnabled(false);
|
ui->actionNoAccountsAdded->setEnabled(false);
|
||||||
accountMenu->addAction(ui->actionNoAccountsAdded);
|
|
||||||
ui->accountsMenu->addAction(ui->actionNoAccountsAdded);
|
ui->accountsMenu->addAction(ui->actionNoAccountsAdded);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -740,33 +735,21 @@ void MainWindow::repopulateAccountsMenu()
|
|||||||
action->setShortcut(QKeySequence(tr("Ctrl+%1").arg(i + 1)));
|
action->setShortcut(QKeySequence(tr("Ctrl+%1").arg(i + 1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
accountMenu->addAction(action);
|
|
||||||
ui->accountsMenu->addAction(action);
|
ui->accountsMenu->addAction(action);
|
||||||
connect(action, SIGNAL(triggered(bool)), SLOT(changeActiveAccount()));
|
connect(action, SIGNAL(triggered(bool)), SLOT(changeActiveAccount()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
accountMenu->addSeparator();
|
|
||||||
ui->accountsMenu->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->setData(-1);
|
||||||
ui->actionNoDefaultAccount->setShortcut(QKeySequence(tr("Ctrl+0")));
|
ui->actionNoDefaultAccount->setChecked(!defaultAccount);
|
||||||
if (!defaultAccount) {
|
|
||||||
ui->actionNoDefaultAccount->setChecked(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
accountMenu->addAction(ui->actionNoDefaultAccount);
|
|
||||||
ui->accountsMenu->addAction(ui->actionNoDefaultAccount);
|
ui->accountsMenu->addAction(ui->actionNoDefaultAccount);
|
||||||
|
|
||||||
connect(ui->actionNoDefaultAccount, SIGNAL(triggered(bool)), SLOT(changeActiveAccount()));
|
connect(ui->actionNoDefaultAccount, SIGNAL(triggered(bool)), SLOT(changeActiveAccount()));
|
||||||
|
|
||||||
accountMenu->addSeparator();
|
|
||||||
ui->accountsMenu->addSeparator();
|
ui->accountsMenu->addSeparator();
|
||||||
accountMenu->addAction(ui->actionManageAccounts);
|
|
||||||
ui->accountsMenu->addAction(ui->actionManageAccounts);
|
ui->accountsMenu->addAction(ui->actionManageAccounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -811,20 +794,20 @@ void MainWindow::defaultAccountChanged()
|
|||||||
if (account && account->profileName() != "")
|
if (account && account->profileName() != "")
|
||||||
{
|
{
|
||||||
auto profileLabel = profileInUseFilter(account->profileName(), account->isInUse());
|
auto profileLabel = profileInUseFilter(account->profileName(), account->isInUse());
|
||||||
accountMenuButton->setText(profileLabel);
|
ui->actionAccountsButton->setText(profileLabel);
|
||||||
auto face = account->getFace();
|
auto face = account->getFace();
|
||||||
if(face.isNull()) {
|
if(face.isNull()) {
|
||||||
accountMenuButton->setIcon(APPLICATION->getThemedIcon("noaccount"));
|
ui->actionAccountsButton->setIcon(APPLICATION->getThemedIcon("noaccount"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
accountMenuButton->setIcon(face);
|
ui->actionAccountsButton->setIcon(face);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the icon to the "no account" icon.
|
// Set the icon to the "no account" icon.
|
||||||
accountMenuButton->setIcon(APPLICATION->getThemedIcon("noaccount"));
|
ui->actionAccountsButton->setIcon(APPLICATION->getThemedIcon("noaccount"));
|
||||||
accountMenuButton->setText(tr("Accounts"));
|
ui->actionAccountsButton->setText(tr("Accounts"));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MainWindow::eventFilter(QObject *obj, QEvent *ev)
|
bool MainWindow::eventFilter(QObject *obj, QEvent *ev)
|
||||||
|
@ -239,10 +239,8 @@ private:
|
|||||||
QToolButton *newsLabel = nullptr;
|
QToolButton *newsLabel = nullptr;
|
||||||
QLabel *m_statusLeft = nullptr;
|
QLabel *m_statusLeft = nullptr;
|
||||||
QLabel *m_statusCenter = nullptr;
|
QLabel *m_statusCenter = nullptr;
|
||||||
QMenu *accountMenu = nullptr;
|
|
||||||
LabeledToolButton *changeIconButton = nullptr;
|
LabeledToolButton *changeIconButton = nullptr;
|
||||||
LabeledToolButton *renameButton = nullptr;
|
LabeledToolButton *renameButton = nullptr;
|
||||||
QToolButton *accountMenuButton = nullptr;
|
|
||||||
QToolButton *helpMenuButton = nullptr;
|
QToolButton *helpMenuButton = nullptr;
|
||||||
KonamiCode * secretEventFilter = nullptr;
|
KonamiCode * secretEventFilter = nullptr;
|
||||||
|
|
||||||
|
@ -487,6 +487,9 @@
|
|||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionNoDefaultAccount">
|
<action name="actionNoDefaultAccount">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="noaccount">
|
<iconset theme="noaccount">
|
||||||
<normaloff>.</normaloff>.</iconset>
|
<normaloff>.</normaloff>.</iconset>
|
||||||
@ -494,6 +497,9 @@
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string>No Default Account</string>
|
<string>No Default Account</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="shortcut">
|
||||||
|
<string>Ctrl+0</string>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionCloseWindow">
|
<action name="actionCloseWindow">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
|
Loading…
Reference in New Issue
Block a user