From 1b68d51da634ddab39fe872fcc28a4f491c0c8a4 Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Fri, 20 Aug 2021 01:34:32 +0200 Subject: NOISSUE add setting capes, tweak missing profile message, fix cape IDs --- launcher/dialogs/LoginDialog.cpp | 12 ++- launcher/dialogs/MSALoginDialog.cpp | 12 ++- launcher/dialogs/MSALoginDialog.ui | 10 +- launcher/dialogs/SkinUploadDialog.cpp | 44 ++++++++- launcher/dialogs/SkinUploadDialog.ui | 170 ++++++++++++++++++---------------- 5 files changed, 161 insertions(+), 87 deletions(-) (limited to 'launcher/dialogs') diff --git a/launcher/dialogs/LoginDialog.cpp b/launcher/dialogs/LoginDialog.cpp index 1dee9920..b1ca2c88 100644 --- a/launcher/dialogs/LoginDialog.cpp +++ b/launcher/dialogs/LoginDialog.cpp @@ -73,7 +73,17 @@ void LoginDialog::on_passTextBox_textEdited(const QString &newText) void LoginDialog::onTaskFailed(const QString &reason) { // Set message - ui->label->setText("" + reason + ""); + auto lines = reason.split('\n'); + QString processed; + for(auto line: lines) { + if(line.size()) { + processed += "" + line + "\n"; + } + else { + processed += '\n'; + } + } + ui->label->setText(processed); // Re-enable user-interaction setUserInputsEnabled(true); diff --git a/launcher/dialogs/MSALoginDialog.cpp b/launcher/dialogs/MSALoginDialog.cpp index 778b379d..86ebdf91 100644 --- a/launcher/dialogs/MSALoginDialog.cpp +++ b/launcher/dialogs/MSALoginDialog.cpp @@ -60,7 +60,17 @@ void MSALoginDialog::setUserInputsEnabled(bool enable) void MSALoginDialog::onTaskFailed(const QString &reason) { // Set message - ui->label->setText("" + reason + ""); + auto lines = reason.split('\n'); + QString processed; + for(auto line: lines) { + if(line.size()) { + processed += "" + line + "\n"; + } + else { + processed += '\n'; + } + } + ui->label->setText(processed); // Re-enable user-interaction setUserInputsEnabled(true); diff --git a/launcher/dialogs/MSALoginDialog.ui b/launcher/dialogs/MSALoginDialog.ui index 4ae8085a..5479a726 100644 --- a/launcher/dialogs/MSALoginDialog.ui +++ b/launcher/dialogs/MSALoginDialog.ui @@ -6,8 +6,8 @@ 0 0 - 421 - 114 + 491 + 143 @@ -23,10 +23,12 @@ - Message label placeholder. + Message label placeholder. + +aaaaa - Qt::RichText + Qt::MarkdownText Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse diff --git a/launcher/dialogs/SkinUploadDialog.cpp b/launcher/dialogs/SkinUploadDialog.cpp index 19bfac4d..97478f4b 100644 --- a/launcher/dialogs/SkinUploadDialog.cpp +++ b/launcher/dialogs/SkinUploadDialog.cpp @@ -1,11 +1,16 @@ #include #include +#include + #include #include +#include + #include "SkinUploadDialog.h" #include "ui_SkinUploadDialog.h" #include "ProgressDialog.h" #include "CustomMessageBox.h" +#include void SkinUploadDialog::on_buttonBox_rejected() { @@ -85,8 +90,13 @@ void SkinUploadDialog::on_buttonBox_accepted() { model = SkinUpload::ALEX; } - SkinUploadPtr upload = std::make_shared(this, session, FS::read(fileName), model); - if (prog.execWithTask((Task*)upload.get()) != QDialog::Accepted) + SequentialTask skinUpload; + skinUpload.addTask(std::make_shared(this, session, FS::read(fileName), model)); + auto selectedCape = ui->capeCombo->currentData().toString(); + if(selectedCape != session->m_accountPtr->accountData()->minecraftProfile.currentCape) { + skinUpload.addTask(std::make_shared(this, session, selectedCape)); + } + if (prog.execWithTask(&skinUpload) != QDialog::Accepted) { CustomMessageBox::selectable(this, tr("Skin Upload"), tr("Failed to upload skin!"), QMessageBox::Warning)->exec(); close(); @@ -111,4 +121,34 @@ SkinUploadDialog::SkinUploadDialog(MinecraftAccountPtr acct, QWidget *parent) :QDialog(parent), m_acct(acct), ui(new Ui::SkinUploadDialog) { ui->setupUi(this); + + // FIXME: add a model for this, download/refresh the capes on demand + auto &data = *acct->accountData(); + int index = 0; + ui->capeCombo->addItem(tr("No Cape"), QVariant()); + auto currentCape = data.minecraftProfile.currentCape; + if(currentCape.isEmpty()) { + ui->capeCombo->setCurrentIndex(index); + } + + for(auto & cape: data.minecraftProfile.capes) { + index++; + if(cape.data.size()) { + QPixmap capeImage; + if(capeImage.loadFromData(cape.data, "PNG")) { + QPixmap preview = QPixmap(10, 16); + QPainter painter(&preview); + painter.drawPixmap(0, 0, capeImage.copy(1, 1, 10, 16)); + ui->capeCombo->addItem(capeImage, cape.alias, cape.id); + if(currentCape == cape.id) { + ui->capeCombo->setCurrentIndex(index); + } + continue; + } + } + ui->capeCombo->addItem(cape.alias, cape.id); + if(currentCape == cape.id) { + ui->capeCombo->setCurrentIndex(index); + } + } } diff --git a/launcher/dialogs/SkinUploadDialog.ui b/launcher/dialogs/SkinUploadDialog.ui index 6f5307e3..f4b0ed0a 100644 --- a/launcher/dialogs/SkinUploadDialog.ui +++ b/launcher/dialogs/SkinUploadDialog.ui @@ -1,85 +1,97 @@ - SkinUploadDialog - - - - 0 - 0 - 413 - 300 - + SkinUploadDialog + + + + 0 + 0 + 394 + 360 + + + + Skin Upload + + + + + + Skin File + + + + + + + + + + 0 + 0 + - - Skin Upload + + + 28 + 16777215 + - - - - - Skin File - - - - - - - - - - 0 - 0 - - - - - 28 - 16777215 - - - - ... - - - - - - - - - - Player Model - - - - - - Steve Model - - - true - - - - - - - Alex Model - - - - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - + + ... + + + + + + + + + + Player Model + + + + + + Steve Model + + + true + + + + + + + Alex Model + + + + + + + + + + Cape + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + - - + + + + + -- cgit