From ec8ee53c76804afb270357b8463f0c2d53035953 Mon Sep 17 00:00:00 2001 From: Mateo Pidal Date: Sun, 2 May 2021 03:55:27 -0300 Subject: [PATCH 1/5] Replaced username writing with a proper dropdown selection saved in a file and ordered by last used --- application/LaunchController.cpp | 59 +++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/application/LaunchController.cpp b/application/LaunchController.cpp index dcdee4af..61063f62 100644 --- a/application/LaunchController.cpp +++ b/application/LaunchController.cpp @@ -37,15 +37,66 @@ void LaunchController::login() JavaCommon::checkJVMArgs(m_instance->settings()->get("JvmArgs").toString(), m_parentWidget); // Mojang account login bypass - bool ok = false; + //bool ok = false; + QString usedname = "Player"; - QString name = QInputDialog::getText(m_parentWidget, tr("Player name"), + QString name; /*= QInputDialog::getText(m_parentWidget, tr("Player name"), tr("Choose your offline mode player name."), QLineEdit::Normal, "Player", &ok); - if (!ok) - { + */ + QFile namesFile; + namesFile.setFileName("names.txt"); + if(!namesFile.exists()){ + namesFile.open(QIODevice::WriteOnly | QIODevice::Text); + namesFile.write("Player"); + namesFile.close(); + qDebug() << "Wrote default \"names.txt\" since it didn't exist"; + } + namesFile.open(QIODevice::ReadOnly | QIODevice::Text); + + QInputDialog nameSelector; + QStringList names; + + while(!namesFile.atEnd()){ + names += namesFile.readLine().simplified(); + } + namesFile.close(); + + //names << "Test1" << "Test2" << "New Entry..."; + //nameSelector.setOption(QInputDialog::UseListViewForComboBoxItems); //In case we want to use a list instead of a combobox + nameSelector.setComboBoxItems(names); + nameSelector.setComboBoxEditable(true); + nameSelector.setWindowTitle("Select Username..."); + + if(nameSelector.exec() == QDialog::Accepted){ + name = nameSelector.textValue(); + namesFile.open(QIODevice::WriteOnly | QIODevice::Text); + namesFile.write(name.toStdString().c_str()); + if(!names.contains(name)){ + for(int i = 0; i < names.count(); i++){ + namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); + } + qDebug() << "Wrote " << name << " to \"names.txt\" since it didn't exist before"; + } else { + for(int i = 0; i < names.count(); i++){ //TODO: Improve efficiency or find a better way to do this + if(names[i] != name){ + namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); + } + qDebug() << "Reordered \"names.txt\""; + } + } + namesFile.flush(); + namesFile.close(); + } else { return; } + qDebug() << "Username Selected: " << name; + + /*if (!ok) + { + return; + }*/ + if (name.length()) { usedname = name; From 1fd8dc8da08d0f172997c7f8c271a4ea02592e3b Mon Sep 17 00:00:00 2001 From: Mateo Pidal Date: Sun, 2 May 2021 04:23:33 -0300 Subject: [PATCH 2/5] Increased a little the performance on common cases of the dropdown list Signed-off-by: Mateo Pidal --- application/LaunchController.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/application/LaunchController.cpp b/application/LaunchController.cpp index 61063f62..5b436889 100644 --- a/application/LaunchController.cpp +++ b/application/LaunchController.cpp @@ -78,11 +78,13 @@ void LaunchController::login() } qDebug() << "Wrote " << name << " to \"names.txt\" since it didn't exist before"; } else { - for(int i = 0; i < names.count(); i++){ //TODO: Improve efficiency or find a better way to do this - if(names[i] != name){ - namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); + if(name != names[0]){ + for(int i = 0; i < names.count(); i++){ //TODO: Improve efficiency or find a better way to do this + if(names[i] != name){ + namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); + } + qDebug() << "Reordered \"names.txt\""; } - qDebug() << "Reordered \"names.txt\""; } } namesFile.flush(); From 0164d220f468ae389c3433b165add5dbb3b47337 Mon Sep 17 00:00:00 2001 From: Mateo Pidal Date: Mon, 3 May 2021 17:35:47 -0300 Subject: [PATCH 3/5] Fixed a little mistake Signed-off-by: Mateo Pidal --- application/LaunchController.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/application/LaunchController.cpp b/application/LaunchController.cpp index 5b436889..b987e98f 100644 --- a/application/LaunchController.cpp +++ b/application/LaunchController.cpp @@ -70,15 +70,15 @@ void LaunchController::login() if(nameSelector.exec() == QDialog::Accepted){ name = nameSelector.textValue(); - namesFile.open(QIODevice::WriteOnly | QIODevice::Text); - namesFile.write(name.toStdString().c_str()); - if(!names.contains(name)){ - for(int i = 0; i < names.count(); i++){ - namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); - } - qDebug() << "Wrote " << name << " to \"names.txt\" since it didn't exist before"; - } else { - if(name != names[0]){ + if(name != names[0]){ + namesFile.open(QIODevice::WriteOnly | QIODevice::Text); + namesFile.write(name.toStdString().c_str()); + if(!names.contains(name)){ + for(int i = 0; i < names.count(); i++){ + namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); + } + qDebug() << "Wrote " << name << " to \"names.txt\" since it didn't exist before"; + } else { for(int i = 0; i < names.count(); i++){ //TODO: Improve efficiency or find a better way to do this if(names[i] != name){ namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); @@ -86,9 +86,9 @@ void LaunchController::login() qDebug() << "Reordered \"names.txt\""; } } + namesFile.flush(); + namesFile.close(); } - namesFile.flush(); - namesFile.close(); } else { return; } From f869518e3ffb4e25bf451fc77a8edd6d06dbf987 Mon Sep 17 00:00:00 2001 From: Mateo Pidal Date: Tue, 4 May 2021 02:08:44 -0300 Subject: [PATCH 4/5] fixed indentation errors Signed-off-by: Mateo Pidal --- application/LaunchController.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/application/LaunchController.cpp b/application/LaunchController.cpp index b987e98f..1ca25cfc 100644 --- a/application/LaunchController.cpp +++ b/application/LaunchController.cpp @@ -46,7 +46,7 @@ void LaunchController::login() */ QFile namesFile; namesFile.setFileName("names.txt"); - if(!namesFile.exists()){ + if(!namesFile.exists()) { namesFile.open(QIODevice::WriteOnly | QIODevice::Text); namesFile.write("Player"); namesFile.close(); @@ -57,7 +57,7 @@ void LaunchController::login() QInputDialog nameSelector; QStringList names; - while(!namesFile.atEnd()){ + while(!namesFile.atEnd()) { names += namesFile.readLine().simplified(); } namesFile.close(); @@ -68,19 +68,19 @@ void LaunchController::login() nameSelector.setComboBoxEditable(true); nameSelector.setWindowTitle("Select Username..."); - if(nameSelector.exec() == QDialog::Accepted){ + if(nameSelector.exec() == QDialog::Accepted) { name = nameSelector.textValue(); - if(name != names[0]){ + if(name != names[0]) { namesFile.open(QIODevice::WriteOnly | QIODevice::Text); namesFile.write(name.toStdString().c_str()); - if(!names.contains(name)){ - for(int i = 0; i < names.count(); i++){ + if(!names.contains(name)) { + for(int i = 0; i < names.count(); i++) { namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); } qDebug() << "Wrote " << name << " to \"names.txt\" since it didn't exist before"; } else { - for(int i = 0; i < names.count(); i++){ //TODO: Improve efficiency or find a better way to do this - if(names[i] != name){ + for(int i = 0; i < names.count(); i++) { //TODO: Improve efficiency or find a better way to do this + if(names[i] != name) { namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); } qDebug() << "Reordered \"names.txt\""; From 41c87bd40368b8b2379ceefab5f14eb8944f4695 Mon Sep 17 00:00:00 2001 From: Mateo Pidal Date: Tue, 4 May 2021 02:27:03 -0300 Subject: [PATCH 5/5] Replaced standard C file writing to a QT standard --- application/LaunchController.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/application/LaunchController.cpp b/application/LaunchController.cpp index 1ca25cfc..74d8156a 100644 --- a/application/LaunchController.cpp +++ b/application/LaunchController.cpp @@ -72,16 +72,19 @@ void LaunchController::login() name = nameSelector.textValue(); if(name != names[0]) { namesFile.open(QIODevice::WriteOnly | QIODevice::Text); - namesFile.write(name.toStdString().c_str()); + QTextStream writer(&namesFile); + writer << name.toUtf8(); if(!names.contains(name)) { for(int i = 0; i < names.count(); i++) { - namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); + writer << "\n" << names[i].toUtf8(); + //namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); } qDebug() << "Wrote " << name << " to \"names.txt\" since it didn't exist before"; } else { for(int i = 0; i < names.count(); i++) { //TODO: Improve efficiency or find a better way to do this if(names[i] != name) { - namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); + //namesFile.write("\n"); namesFile.write(names[i].toStdString().c_str()); + writer << "\n" << names[i].toUtf8(); } qDebug() << "Reordered \"names.txt\""; }