summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew <forkk@forkk.net>2013-11-28 15:46:04 -0600
committerAndrew <forkk@forkk.net>2013-11-28 15:46:04 -0600
commitf7b64a551b6284abc855d8cb7d785844baa0ad9d (patch)
tree3a36a90363729dca16e913d6d7b7e43976214e31
parent8232271c00efd82885a8790acb5b8e318411fd14 (diff)
downloadMultiMC-f7b64a551b6284abc855d8cb7d785844baa0ad9d.tar
MultiMC-f7b64a551b6284abc855d8cb7d785844baa0ad9d.tar.gz
MultiMC-f7b64a551b6284abc855d8cb7d785844baa0ad9d.tar.lz
MultiMC-f7b64a551b6284abc855d8cb7d785844baa0ad9d.tar.xz
MultiMC-f7b64a551b6284abc855d8cb7d785844baa0ad9d.zip
Add icon for when no default account is selected
Also fixed a bug where the icon on the accounts button wouldn't change when the user checked the "Use as default" checkbox in the account selection dialog.
-rw-r--r--graphics.qrc97
-rw-r--r--gui/MainWindow.cpp33
-rw-r--r--logic/lists/MojangAccountList.cpp13
-rw-r--r--logic/lists/MojangAccountList.h11
-rw-r--r--resources/icons/toolbar/NoAccount.pngbin0 -> 284 bytes
5 files changed, 90 insertions, 64 deletions
diff --git a/graphics.qrc b/graphics.qrc
index fe8892fe..68d3beed 100644
--- a/graphics.qrc
+++ b/graphics.qrc
@@ -1,50 +1,51 @@
<RCC>
- <qresource prefix="/icons/toolbar">
- <file alias="about">resources/icons/toolbar/about.png</file>
- <file alias="bug">resources/icons/toolbar/ReportBug.png</file>
- <file alias="centralmods">resources/icons/toolbar/centralmods.png</file>
- <file alias="checkupdate">resources/icons/toolbar/checkupdate.png</file>
- <file alias="help">resources/icons/toolbar/help.png</file>
- <file alias="new">resources/icons/toolbar/new.png</file>
- <file alias="copy">resources/icons/toolbar/InstCopy.png</file>
- <file alias="news">resources/icons/toolbar/NewsIcon.png</file>
- <file alias="refresh">resources/icons/toolbar/refresh.png</file>
- <file alias="settings">resources/icons/toolbar/settings.png</file>
- <file alias="viewfolder">resources/icons/toolbar/viewfolder.png</file>
- <file alias="cat">resources/icons/toolbar/Cat.png</file>
- </qresource>
- <qresource prefix="/icons/instances">
- <file alias="brick">resources/icons/instances/brick.png</file>
- <file alias="chicken">resources/icons/instances/chicken128.png</file>
- <file alias="creeper">resources/icons/instances/creeper128.png</file>
- <file alias="derp">resources/icons/instances/derp.png</file>
- <file alias="diamond">resources/icons/instances/diamond.png</file>
- <file alias="dirt">resources/icons/instances/dirt.png</file>
- <file alias="enderman">resources/icons/instances/enderman.png</file>
- <file alias="enderpearl">resources/icons/instances/enderpearl128.png</file>
- <file alias="ftb-glow">resources/icons/instances/ftb_glow128.png</file>
- <file alias="ftb-logo">resources/icons/instances/ftb_logo128.png</file>
- <file alias="gear">resources/icons/instances/gear128.png</file>
- <file alias="gold">resources/icons/instances/gold.png</file>
- <file alias="grass">resources/icons/instances/grass.png</file>
- <file alias="herobrine">resources/icons/instances/herobrine128.png</file>
- <file alias="infinity">resources/icons/instances/infinity128.png</file>
- <file alias="iron">resources/icons/instances/iron.png</file>
- <file alias="magitech">resources/icons/instances/magitech128.png</file>
- <file alias="meat">resources/icons/instances/meat128.png</file>
- <file alias="netherstar">resources/icons/instances/netherstar128.png</file>
- <file alias="planks">resources/icons/instances/planks.png</file>
- <file alias="skeleton">resources/icons/instances/skeleton128.png</file>
- <file alias="squarecreeper">resources/icons/instances/squarecreeper128.png</file>
- <file alias="steve">resources/icons/instances/steve128.png</file>
- <file alias="stone">resources/icons/instances/stone.png</file>
- <file alias="tnt">resources/icons/instances/tnt.png</file>
- </qresource>
- <qresource prefix="/icons/multimc">
- <file alias="scalable/apps/multimc.svg">resources/icons/multimc.svg</file>
- <file alias="index.theme">resources/XdgIcon.theme</file>
- </qresource>
- <qresource prefix="/backgrounds">
- <file alias="kitteh">resources/catbgrnd2.png</file>
- </qresource>
+ <qresource prefix="/icons/toolbar">
+ <file alias="about">resources/icons/toolbar/about.png</file>
+ <file alias="bug">resources/icons/toolbar/ReportBug.png</file>
+ <file alias="centralmods">resources/icons/toolbar/centralmods.png</file>
+ <file alias="checkupdate">resources/icons/toolbar/checkupdate.png</file>
+ <file alias="help">resources/icons/toolbar/help.png</file>
+ <file alias="new">resources/icons/toolbar/new.png</file>
+ <file alias="copy">resources/icons/toolbar/InstCopy.png</file>
+ <file alias="news">resources/icons/toolbar/NewsIcon.png</file>
+ <file alias="refresh">resources/icons/toolbar/refresh.png</file>
+ <file alias="settings">resources/icons/toolbar/settings.png</file>
+ <file alias="viewfolder">resources/icons/toolbar/viewfolder.png</file>
+ <file alias="cat">resources/icons/toolbar/Cat.png</file>
+ <file alias="noaccount">resources/icons/toolbar/NoAccount.png</file>
+ </qresource>
+ <qresource prefix="/icons/instances">
+ <file alias="brick">resources/icons/instances/brick.png</file>
+ <file alias="chicken">resources/icons/instances/chicken128.png</file>
+ <file alias="creeper">resources/icons/instances/creeper128.png</file>
+ <file alias="derp">resources/icons/instances/derp.png</file>
+ <file alias="diamond">resources/icons/instances/diamond.png</file>
+ <file alias="dirt">resources/icons/instances/dirt.png</file>
+ <file alias="enderman">resources/icons/instances/enderman.png</file>
+ <file alias="enderpearl">resources/icons/instances/enderpearl128.png</file>
+ <file alias="ftb-glow">resources/icons/instances/ftb_glow128.png</file>
+ <file alias="ftb-logo">resources/icons/instances/ftb_logo128.png</file>
+ <file alias="gear">resources/icons/instances/gear128.png</file>
+ <file alias="gold">resources/icons/instances/gold.png</file>
+ <file alias="grass">resources/icons/instances/grass.png</file>
+ <file alias="herobrine">resources/icons/instances/herobrine128.png</file>
+ <file alias="infinity">resources/icons/instances/infinity128.png</file>
+ <file alias="iron">resources/icons/instances/iron.png</file>
+ <file alias="magitech">resources/icons/instances/magitech128.png</file>
+ <file alias="meat">resources/icons/instances/meat128.png</file>
+ <file alias="netherstar">resources/icons/instances/netherstar128.png</file>
+ <file alias="planks">resources/icons/instances/planks.png</file>
+ <file alias="skeleton">resources/icons/instances/skeleton128.png</file>
+ <file alias="squarecreeper">resources/icons/instances/squarecreeper128.png</file>
+ <file alias="steve">resources/icons/instances/steve128.png</file>
+ <file alias="stone">resources/icons/instances/stone.png</file>
+ <file alias="tnt">resources/icons/instances/tnt.png</file>
+ </qresource>
+ <qresource prefix="/icons/multimc">
+ <file alias="scalable/apps/multimc.svg">resources/icons/multimc.svg</file>
+ <file alias="index.theme">resources/XdgIcon.theme</file>
+ </qresource>
+ <qresource prefix="/backgrounds">
+ <file alias="kitteh">resources/catbgrnd2.png</file>
+ </qresource>
</RCC>
diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp
index f8904267..cb5584c7 100644
--- a/gui/MainWindow.cpp
+++ b/gui/MainWindow.cpp
@@ -168,13 +168,12 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
statusBar()->addPermanentWidget(m_statusRight, 0);
// Add "manage accounts" button, right align
-
QWidget* spacer = new QWidget();
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
ui->mainToolBar->addWidget(spacer);
accountMenu = new QMenu(this);
- manageAccountsAction = new QAction(tr("Manage accounts"), this);
+ manageAccountsAction = new QAction(tr("Manage Accounts"), this);
manageAccountsAction->setCheckable(false);
connect(manageAccountsAction, SIGNAL(triggered(bool)), this, SLOT(on_actionManageAccounts_triggered()));
@@ -186,12 +185,18 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
accountMenuButton->setPopupMode(QToolButton::InstantPopup);
accountMenuButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
accountMenuButton->setLayoutDirection(Qt::RightToLeft);
+ accountMenuButton->setIcon(QPixmap(":/icons/toolbar/noaccount").scaled(48, 48, Qt::KeepAspectRatio));
QWidgetAction *accountMenuButtonAction = new QWidgetAction(this);
accountMenuButtonAction->setDefaultWidget(accountMenuButton);
ui->mainToolBar->addAction(accountMenuButtonAction);
+ // 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...
+ connect(MMC->accounts().get(), &MojangAccountList::activeAccountChanged, [this] { activeAccountChanged(); });
+ connect(MMC->accounts().get(), &MojangAccountList::listChanged, [this] { repopulateAccountsMenu(); });
+
std::shared_ptr<MojangAccountList> accounts = MMC->accounts();
// TODO: Nicer way to iterate?
@@ -258,12 +263,12 @@ void MainWindow::repopulateAccountsMenu()
MojangAccountPtr active_account = accounts->activeAccount();
QString active_username = "";
- if(active_account != nullptr)
+ if (active_account != nullptr)
{
active_username = accounts->activeAccount()->username();
}
- if(accounts->count() <= 0)
+ if (accounts->count() <= 0)
{
QAction *action = new QAction(tr("No accounts added!"), this);
action->setEnabled(false);
@@ -274,7 +279,7 @@ void MainWindow::repopulateAccountsMenu()
else
{
// TODO: Nicer way to iterate?
- for(int i = 0; i < accounts->count(); i++)
+ for (int i = 0; i < accounts->count(); i++)
{
MojangAccountPtr account = accounts->at(i);
@@ -283,7 +288,7 @@ void MainWindow::repopulateAccountsMenu()
section->setEnabled(false);
accountMenu->addAction(section);
- for(AccountProfile profile : account->profiles())
+ for (AccountProfile profile : account->profiles())
{
QAction *action = new QAction(profile.name(), this);
action->setData(account->username());
@@ -302,8 +307,9 @@ void MainWindow::repopulateAccountsMenu()
}
}
- QAction *action = new QAction(tr("No default"), this);
+ QAction *action = new QAction(tr("No Default Account"), this);
action->setCheckable(true);
+ action->setIcon(QPixmap(":/icons/toolbar/noaccount").scaled(48, 48, Qt::KeepAspectRatio));
action->setData("");
if(active_username.isEmpty())
{
@@ -324,12 +330,12 @@ void MainWindow::changeActiveAccount()
{
QAction* sAction = (QAction*) sender();
// Profile's associated Mojang username
- // Will need to change when profiles are properly implemented
- if(sAction->data().type() != QVariant::Type::String) return;
+ // Will need to change when profiles are properly implemented
+ if (sAction->data().type() != QVariant::Type::String) return;
QVariant data = sAction->data();
QString id = "";
- if(!data.isNull())
+ if (!data.isNull())
{
id = data.toString();
}
@@ -345,17 +351,18 @@ void MainWindow::activeAccountChanged()
MojangAccountPtr account = MMC->accounts()->activeAccount();
- if(account != nullptr && account->username() != "")
+ if (account != nullptr && account->username() != "")
{
const AccountProfile *profile = account->currentProfile();
- if(profile != nullptr)
+ if (profile != nullptr)
{
accountMenuButton->setIcon(SkinUtils::getFaceFromCache(profile->name()));
return;
}
}
- accountMenuButton->setIcon(QIcon());
+ // Set the icon to the "no account" icon.
+ accountMenuButton->setIcon(QPixmap(":/icons/toolbar/noaccount").scaled(48, 48, Qt::KeepAspectRatio));
}
bool MainWindow::eventFilter(QObject *obj, QEvent *ev)
diff --git a/logic/lists/MojangAccountList.cpp b/logic/lists/MojangAccountList.cpp
index c6dce836..ec1937ad 100644
--- a/logic/lists/MojangAccountList.cpp
+++ b/logic/lists/MojangAccountList.cpp
@@ -106,7 +106,7 @@ void MojangAccountList::setActiveAccount(const QString& username)
}
}
endResetModel();
- onListChanged();
+ onActiveChanged();
}
@@ -116,8 +116,15 @@ void MojangAccountList::onListChanged()
// TODO: Alert the user if this fails.
saveList();
- // TODO: stop this getting called from setActiveAccount
- //emit listChanged();
+ emit listChanged();
+}
+
+void MojangAccountList::onActiveChanged()
+{
+ if (m_autosave)
+ saveList();
+
+ emit activeAccountChanged();
}
diff --git a/logic/lists/MojangAccountList.h b/logic/lists/MojangAccountList.h
index cfe96c11..908f5a7a 100644
--- a/logic/lists/MojangAccountList.h
+++ b/logic/lists/MojangAccountList.h
@@ -133,6 +133,11 @@ signals:
*/
void listChanged();
+ /*!
+ * Signal emitted to indicate that the active account has changed.
+ */
+ void activeAccountChanged();
+
protected:
/*!
* Called whenever the list changes.
@@ -140,6 +145,12 @@ protected:
*/
void onListChanged();
+ /*!
+ * Called whenever the active account changes.
+ * Emits the activeAccountChanged() signal and autosaves the list if enabled.
+ */
+ void onActiveChanged();
+
QList<MojangAccountPtr> m_accounts;
/*!
diff --git a/resources/icons/toolbar/NoAccount.png b/resources/icons/toolbar/NoAccount.png
new file mode 100644
index 00000000..466e4c07
--- /dev/null
+++ b/resources/icons/toolbar/NoAccount.png
Binary files differ