| 615 | } |
| 616 | |
| 617 | void MainWindow::repopulateAccountsMenu() |
| 618 | { |
| 619 | ui->accountsMenu->clear(); |
| 620 | |
| 621 | // NOTE: this is done so the accounts button text is not set to the accounts menu title |
| 622 | QMenu* accountsButtonMenu = ui->actionAccountsButton->menu(); |
| 623 | if (accountsButtonMenu) { |
| 624 | accountsButtonMenu->clear(); |
| 625 | } else { |
| 626 | accountsButtonMenu = new QMenu(this); |
| 627 | ui->actionAccountsButton->setMenu(accountsButtonMenu); |
| 628 | } |
| 629 | |
| 630 | auto accounts = APPLICATION->accounts(); |
| 631 | MinecraftAccountPtr defaultAccount = accounts->defaultAccount(); |
| 632 | |
| 633 | QString active_profileId = ""; |
| 634 | if (defaultAccount) { |
| 635 | // this can be called before accountMenuButton exists |
| 636 | if (ui->actionAccountsButton) { |
| 637 | auto profileLabel = profileInUseFilter(defaultAccount->profileName(), defaultAccount->isInUse()); |
| 638 | ui->actionAccountsButton->setText(profileLabel); |
| 639 | } |
| 640 | } |
| 641 | |
| 642 | QActionGroup* accountsGroup = new QActionGroup(this); |
| 643 | |
| 644 | if (accounts->count() <= 0) { |
| 645 | ui->actionNoAccountsAdded->setEnabled(false); |
| 646 | ui->accountsMenu->addAction(ui->actionNoAccountsAdded); |
| 647 | } else { |
| 648 | // TODO: Nicer way to iterate? |
| 649 | for (int i = 0; i < accounts->count(); i++) { |
| 650 | MinecraftAccountPtr account = accounts->at(i); |
| 651 | auto profileLabel = profileInUseFilter(account->profileName(), account->isInUse()); |
| 652 | QAction* action = new QAction(profileLabel, this); |
| 653 | action->setData(i); |
| 654 | action->setCheckable(true); |
| 655 | action->setActionGroup(accountsGroup); |
| 656 | if (defaultAccount == account) { |
| 657 | action->setChecked(true); |
| 658 | } |
| 659 | |
| 660 | auto face = account->getFace(); |
| 661 | if (!face.isNull()) { |
| 662 | action->setIcon(face); |
| 663 | } else { |
| 664 | action->setIcon(APPLICATION->getThemedIcon("noaccount")); |
| 665 | } |
| 666 | |
| 667 | const int highestNumberKey = 9; |
| 668 | if (i < highestNumberKey) { |
| 669 | action->setShortcut(QKeySequence(tr("Ctrl+%1").arg(i + 1))); |
| 670 | } |
| 671 | |
| 672 | ui->accountsMenu->addAction(action); |
| 673 | connect(action, SIGNAL(triggered(bool)), SLOT(changeActiveAccount())); |
| 674 | } |
nothing calls this directly
no test coverage detected