Move "manage accounts" to right, use player skin when available

This commit is contained in:
Sky
2013-11-27 16:56:15 +00:00
parent 7024e5a83e
commit 7d7579d7f0
9 changed files with 147 additions and 42 deletions

View File

@ -56,6 +56,8 @@ void AccountListDialog::on_rmAccountBtn_clicked()
{
QModelIndex selected = selection.first();
m_accounts->removeAccount(selected);
emit activeAccountChanged();
}
}
@ -72,7 +74,9 @@ void AccountListDialog::on_setActiveBtn_clicked()
QModelIndex selected = selection.first();
MojangAccountPtr account = selected.data(MojangAccountList::PointerRole).value<MojangAccountPtr>();
m_accounts->setActiveAccount(account->username());
}
emit activeAccountChanged();
}
}
void AccountListDialog::on_closeBtnBox_rejected()

View File

@ -47,6 +47,9 @@ slots:
// This will be sent when the "close" button is clicked.
void on_closeBtnBox_rejected();
signals:
void activeAccountChanged();
protected:
std::shared_ptr<MojangAccountList> m_accounts;

View File

@ -18,6 +18,7 @@
#include "keyring.h"
#include "gui/Platform.h"
#include "MultiMC.h"
#include "logic/SkinUtils.h"
#include <QFile>
#include <QJsonObject>
@ -168,47 +169,10 @@ void LoginDialog::userTextChanged(const QString &user)
ui->rememberPasswordCheckbox->setChecked(!passwd.isEmpty());
ui->passwordTextBox->setText(passwd);
QByteArray data;
{
auto filename =
MMC->metacache()->resolveEntry("skins", "skins.json")->getFullPath();
QFile listFile(filename);
if (!listFile.open(QIODevice::ReadOnly))
return;
data = listFile.readAll();
}
QPixmap face = SkinUtils::getFaceFromCache(user);
gotFace = !face.isNull();
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &jsonError);
QJsonObject root = jsonDoc.object();
QJsonObject mappings = root.value("mappings").toObject();
if (!mappings[user].isUndefined())
{
QJsonArray usernames = mappings.value(user).toArray();
if (!usernames.isEmpty())
{
QString mapped_username = usernames[0].toString();
if (!mapped_username.isEmpty())
{
QFile fskin(MMC->metacache()
->resolveEntry("skins", mapped_username + ".png")
->getFullPath());
if (fskin.exists())
{
QPixmap skin(MMC->metacache()
->resolveEntry("skins", mapped_username + ".png")
->getFullPath());
QPixmap face =
skin.copy(8, 8, 8, 8).scaled(48, 48, Qt::KeepAspectRatio);
ui->lblFace->setPixmap(face);
gotFace = true;
}
}
}
}
if(gotFace) ui->lblFace->setPixmap(face);
}
ui->lblFace->setVisible(gotFace);