diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 1f2123fc..a33f9948 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -646,7 +646,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv) m_settings->registerSetting("AutoUpdate", true); // Theming - m_settings->registerSetting("IconTheme", QString("multimc")); + m_settings->registerSetting("IconTheme", QString("pe_colored")); m_settings->registerSetting("ApplicationTheme", QString("system")); // Notifications diff --git a/launcher/ui/dialogs/ProfileSetupDialog.cpp b/launcher/ui/dialogs/ProfileSetupDialog.cpp index 2f599b51..44e75a6b 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.cpp +++ b/launcher/ui/dialogs/ProfileSetupDialog.cpp @@ -205,21 +205,50 @@ void ProfileSetupDialog::setupProfile(const QString &profileName) { namespace { struct MojangError{ - static MojangError fromJSON(QByteArray data) { + static MojangError fromJSON(QByteArray data, QNetworkReply::NetworkError networkError) { MojangError out; - out.error = QString::fromUtf8(data); - auto doc = QJsonDocument::fromJson(data, &out.parseError); - auto object = doc.object(); + out.rawError = QString::fromUtf8(data); + out.networkError = networkError; + + auto doc = QJsonDocument::fromJson(data, &out.parseError); + if(out.parseError.error != QJsonParseError::NoError) + { + out.fullyParsed = false; + } + else + { + out.fullyParsed = true; + auto object = doc.object(); + out.fullyParsed &= Parsers::getString(object.value("path"), out.path); + out.fullyParsed &= Parsers::getString(object.value("error"), out.error); + out.fullyParsed &= Parsers::getString(object.value("errorMessage"), out.errorMessage); + } - out.fullyParsed = true; - out.fullyParsed &= Parsers::getString(object.value("path"), out.path); - out.fullyParsed &= Parsers::getString(object.value("error"), out.error); - out.fullyParsed &= Parsers::getString(object.value("errorMessage"), out.errorMessage); return out; } + QString toString() const + { + QString outString; + QTextStream out(&outString); + out << "Network error:" << networkError << "\n"; + if(fullyParsed) + { + out << "path: " << path << "\n"; + out << "error: " << error << "\n"; + out << "errorMessage: " << errorMessage << "\n"; + } + else + { + out << "Mojang error failed to parse with error: " << parseError.errorString() << "\n"; + out << "Raw contents:\n" << rawError << "\n"; + } + return outString; + } + QNetworkReply::NetworkError networkError; QString rawError; + QJsonParseError parseError; bool fullyParsed; @@ -247,10 +276,11 @@ void ProfileSetupDialog::setupProfileFinished( accept(); } else { - auto parsedError = MojangError::fromJSON(data); + auto parsedError = MojangError::fromJSON(data, error); ui->errorLabel->setVisible(true); - ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + parsedError.errorMessage); - qDebug() << parsedError.rawError; + QString errorString = parsedError.toString(); + ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + errorString); + qWarning() << "Failed to set up player profile: " << errorString; auto button = ui->buttonBox->button(QDialogButtonBox::Cancel); button->setEnabled(true); }