aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/dialogs
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/ui/dialogs')
-rw-r--r--launcher/ui/dialogs/AboutDialog.cpp63
-rw-r--r--launcher/ui/dialogs/AboutDialog.h17
-rw-r--r--launcher/ui/dialogs/BlockedModsDialog.cpp2
-rw-r--r--launcher/ui/dialogs/CopyInstanceDialog.cpp8
-rw-r--r--launcher/ui/dialogs/CustomMessageBox.cpp14
-rw-r--r--launcher/ui/dialogs/CustomMessageBox.h7
-rw-r--r--launcher/ui/dialogs/EditAccountDialog.cpp11
-rw-r--r--launcher/ui/dialogs/EditAccountDialog.h26
-rw-r--r--launcher/ui/dialogs/ExportInstanceDialog.cpp8
-rw-r--r--launcher/ui/dialogs/IconPickerDialog.cpp39
-rw-r--r--launcher/ui/dialogs/IconPickerDialog.h23
-rw-r--r--launcher/ui/dialogs/ImportResourceDialog.h2
-rw-r--r--launcher/ui/dialogs/LoginDialog.cpp28
-rw-r--r--launcher/ui/dialogs/LoginDialog.h31
-rw-r--r--launcher/ui/dialogs/MSALoginDialog.cpp43
-rw-r--r--launcher/ui/dialogs/MSALoginDialog.h32
-rw-r--r--launcher/ui/dialogs/ModUpdateDialog.cpp14
-rw-r--r--launcher/ui/dialogs/ModUpdateDialog.h4
-rw-r--r--launcher/ui/dialogs/NewComponentDialog.cpp30
-rw-r--r--launcher/ui/dialogs/NewComponentDialog.h16
-rw-r--r--launcher/ui/dialogs/NewInstanceDialog.cpp37
-rw-r--r--launcher/ui/dialogs/NewInstanceDialog.h2
-rw-r--r--launcher/ui/dialogs/OfflineLoginDialog.cpp23
-rw-r--r--launcher/ui/dialogs/OfflineLoginDialog.h29
-rw-r--r--launcher/ui/dialogs/ProfileSelectDialog.cpp30
-rw-r--r--launcher/ui/dialogs/ProfileSelectDialog.h22
-rw-r--r--launcher/ui/dialogs/ProfileSetupDialog.cpp107
-rw-r--r--launcher/ui/dialogs/ProfileSetupDialog.h56
-rw-r--r--launcher/ui/dialogs/ProgressDialog.cpp46
-rw-r--r--launcher/ui/dialogs/ProgressDialog.h47
-rw-r--r--launcher/ui/dialogs/ResourceDownloadDialog.cpp2
-rw-r--r--launcher/ui/dialogs/ReviewMessageBox.cpp2
-rw-r--r--launcher/ui/dialogs/ScrollMessageBox.cpp9
-rw-r--r--launcher/ui/dialogs/ScrollMessageBox.h15
-rw-r--r--launcher/ui/dialogs/SkinUploadDialog.cpp86
-rw-r--r--launcher/ui/dialogs/SkinUploadDialog.h21
-rw-r--r--launcher/ui/dialogs/VersionSelectDialog.cpp16
-rw-r--r--launcher/ui/dialogs/VersionSelectDialog.h37
38 files changed, 447 insertions, 558 deletions
diff --git a/launcher/ui/dialogs/AboutDialog.cpp b/launcher/ui/dialogs/AboutDialog.cpp
index b1734eff..3c6f6ef1 100644
--- a/launcher/ui/dialogs/AboutDialog.cpp
+++ b/launcher/ui/dialogs/AboutDialog.cpp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
@@ -34,26 +34,28 @@
*/
#include "AboutDialog.h"
-#include "BuildConfig.h"
-#include "ui_AboutDialog.h"
#include <QIcon>
#include "Application.h"
#include "BuildConfig.h"
#include "Markdown.h"
+#include "ui_AboutDialog.h"
#include <net/NetJob.h>
#include <qobject.h>
namespace {
-QString getLink(QString link, QString name) {
+QString getLink(QString link, QString name)
+{
return QString("&lt;<a href='%1'>%2</a>&gt;").arg(link).arg(name);
}
-QString getWebsite(QString link) {
+QString getWebsite(QString link)
+{
return getLink(link, QObject::tr("Website"));
}
-QString getGitHub(QString username) {
+QString getGitHub(QString username)
+{
return getLink("https://github.com/" + username, "GitHub");
}
@@ -70,19 +72,19 @@ QString getCreditsHtml()
//: %1 is the name of the launcher, determined at build time, e.g. "Prism Launcher Developers"
stream << "<h3>" << QObject::tr("%1 Developers", "About Credits").arg(BuildConfig.LAUNCHER_DISPLAYNAME) << "</h3>\n";
- stream << QString("<p>Sefa Eyeoglu (Scrumplex) %1</p>\n") .arg(getWebsite("https://scrumplex.net"));
- stream << QString("<p>d-513 %1</p>\n") .arg(getGitHub("d-513"));
- stream << QString("<p>txtsd %1</p>\n") .arg(getWebsite("https://ihavea.quest"));
- stream << QString("<p>timoreo %1</p>\n") .arg(getGitHub("timoreo22"));
- stream << QString("<p>Ezekiel Smith (ZekeSmith) %1</p>\n") .arg(getGitHub("ZekeSmith"));
- stream << QString("<p>cozyGalvinism %1</p>\n") .arg(getGitHub("cozyGalvinism"));
- stream << QString("<p>DioEgizio %1</p>\n") .arg(getGitHub("DioEgizio"));
- stream << QString("<p>flowln %1</p>\n") .arg(getGitHub("flowln"));
- stream << QString("<p>ViRb3 %1</p>\n") .arg(getGitHub("ViRb3"));
- stream << QString("<p>Rachel Powers (Ryex) %1</p>\n") .arg(getGitHub("Ryex"));
- stream << QString("<p>TayouVR %1</p>\n") .arg(getGitHub("TayouVR"));
- stream << QString("<p>TheKodeToad %1</p>\n") .arg(getGitHub("TheKodeToad"));
- stream << QString("<p>getchoo %1</p>\n") .arg(getGitHub("getchoo"));
+ stream << QString("<p>Sefa Eyeoglu (Scrumplex) %1</p>\n").arg(getWebsite("https://scrumplex.net"));
+ stream << QString("<p>d-513 %1</p>\n").arg(getGitHub("d-513"));
+ stream << QString("<p>txtsd %1</p>\n").arg(getWebsite("https://ihavea.quest"));
+ stream << QString("<p>timoreo %1</p>\n").arg(getGitHub("timoreo22"));
+ stream << QString("<p>Ezekiel Smith (ZekeSmith) %1</p>\n").arg(getGitHub("ZekeSmith"));
+ stream << QString("<p>cozyGalvinism %1</p>\n").arg(getGitHub("cozyGalvinism"));
+ stream << QString("<p>DioEgizio %1</p>\n").arg(getGitHub("DioEgizio"));
+ stream << QString("<p>flowln %1</p>\n").arg(getGitHub("flowln"));
+ stream << QString("<p>ViRb3 %1</p>\n").arg(getGitHub("ViRb3"));
+ stream << QString("<p>Rachel Powers (Ryex) %1</p>\n").arg(getGitHub("Ryex"));
+ stream << QString("<p>TayouVR %1</p>\n").arg(getGitHub("TayouVR"));
+ stream << QString("<p>TheKodeToad %1</p>\n").arg(getGitHub("TheKodeToad"));
+ stream << QString("<p>getchoo %1</p>\n").arg(getGitHub("getchoo"));
stream << "<br />\n";
// TODO: possibly retrieve from git history at build time?
@@ -96,20 +98,21 @@ QString getCreditsHtml()
stream << "<br />\n";
stream << "<h3>" << QObject::tr("With thanks to", "About Credits") << "</h3>\n";
- stream << QString("<p>Boba %1</p>\n") .arg(getWebsite("https://bobaonline.neocities.org/"));
- stream << QString("<p>Davi Rafael %1</p>\n") .arg(getWebsite("https://auti.one/"));
- stream << QString("<p>Fulmine %1</p>\n") .arg(getWebsite("https://www.fulmine.xyz/"));
- stream << QString("<p>ely %1</p>\n") .arg(getGitHub("elyrodso"));
- stream << QString("<p>gon sawa %1</p>\n") .arg(getGitHub("gonsawa"));
+ stream << QString("<p>Boba %1</p>\n").arg(getWebsite("https://bobaonline.neocities.org/"));
+ stream << QString("<p>Davi Rafael %1</p>\n").arg(getWebsite("https://auti.one/"));
+ stream << QString("<p>Fulmine %1</p>\n").arg(getWebsite("https://www.fulmine.xyz/"));
+ stream << QString("<p>ely %1</p>\n").arg(getGitHub("elyrodso"));
+ stream << QString("<p>gon sawa %1</p>\n").arg(getGitHub("gonsawa"));
stream << QString("<p>Pankakes</p>\n");
- stream << QString("<p>tobimori %1</p>\n") .arg(getGitHub("tobimori"));
+ stream << QString("<p>tobimori %1</p>\n").arg(getGitHub("tobimori"));
stream << "<p>Orochimarufan &lt;<a href='mailto:orochimarufan.x3@gmail.com'>orochimarufan.x3@gmail.com</a>&gt;</p>\n";
stream << "<p>TakSuyu &lt;<a href='mailto:taksuyu@gmail.com'>taksuyu@gmail.com</a>&gt;</p>\n";
stream << "<p>Kilobyte &lt;<a href='mailto:stiepen22@gmx.de'>stiepen22@gmx.de</a>&gt;</p>\n";
stream << "<p>Rootbear75 &lt;<a href='https://twitter.com/rootbear75'>@rootbear75</a>&gt;</p>\n";
stream << "<p>Zeker Zhayard &lt;<a href='https://twitter.com/zeker_zhayard'>@Zeker_Zhayard</a>&gt;</p>\n";
stream << "<p>Everyone who helped establish our branding!</p>\n";
- stream << "<p>And everyone else who <a href='https://github.com/PrismLauncher/PrismLauncher/graphs/contributors'>contributed</a>!</p>\n";
+ stream
+ << "<p>And everyone else who <a href='https://github.com/PrismLauncher/PrismLauncher/graphs/contributors'>contributed</a>!</p>\n";
stream << "<br />\n";
stream << "</center>\n";
@@ -124,9 +127,9 @@ QString getLicenseHtml()
return output;
}
-}
+} // namespace
-AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AboutDialog)
+AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent), ui(new Ui::AboutDialog)
{
ui->setupUi(this);
@@ -148,7 +151,7 @@ AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AboutDia
ui->versionLabel->setText(BuildConfig.printableVersionString());
if (!BuildConfig.BUILD_PLATFORM.isEmpty())
- ui->platformLabel->setText(tr("Platform") +": " + BuildConfig.BUILD_PLATFORM);
+ ui->platformLabel->setText(tr("Platform") + ": " + BuildConfig.BUILD_PLATFORM);
else
ui->platformLabel->setVisible(false);
@@ -163,7 +166,7 @@ AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AboutDia
ui->buildDateLabel->setVisible(false);
if (!BuildConfig.VERSION_CHANNEL.isEmpty())
- ui->channelLabel->setText(tr("Channel") +": " + BuildConfig.VERSION_CHANNEL);
+ ui->channelLabel->setText(tr("Channel") + ": " + BuildConfig.VERSION_CHANNEL);
else
ui->channelLabel->setVisible(false);
diff --git a/launcher/ui/dialogs/AboutDialog.h b/launcher/ui/dialogs/AboutDialog.h
index 814fd98c..356f005e 100644
--- a/launcher/ui/dialogs/AboutDialog.h
+++ b/launcher/ui/dialogs/AboutDialog.h
@@ -15,26 +15,23 @@
#pragma once
-#include <QDialog>
#include <net/NetJob.h>
+#include <QDialog>
-namespace Ui
-{
+namespace Ui {
class AboutDialog;
}
-class AboutDialog : public QDialog
-{
+class AboutDialog : public QDialog {
Q_OBJECT
-public:
- explicit AboutDialog(QWidget *parent = 0);
+ public:
+ explicit AboutDialog(QWidget* parent = 0);
~AboutDialog();
-private:
- Ui::AboutDialog *ui;
+ private:
+ Ui::AboutDialog* ui;
NetJob::Ptr netJob;
QByteArray dataSink;
};
-
diff --git a/launcher/ui/dialogs/BlockedModsDialog.cpp b/launcher/ui/dialogs/BlockedModsDialog.cpp
index fdfae597..727c0614 100644
--- a/launcher/ui/dialogs/BlockedModsDialog.cpp
+++ b/launcher/ui/dialogs/BlockedModsDialog.cpp
@@ -313,7 +313,7 @@ bool BlockedModsDialog::checkValidPath(QString path)
// efectivly compare two strings ignoring all separators and case
auto laxCompare = [](QString fsfilename, QString metadataFilename) {
// allowed character seperators
- QList<QChar> allowedSeperators = { '-', '+', '.' , '_'};
+ QList<QChar> allowedSeperators = { '-', '+', '.', '_' };
// copy in lowercase
auto fsName = fsfilename.toLower();
diff --git a/launcher/ui/dialogs/CopyInstanceDialog.cpp b/launcher/ui/dialogs/CopyInstanceDialog.cpp
index d75bb5fe..8b2f5bb8 100644
--- a/launcher/ui/dialogs/CopyInstanceDialog.cpp
+++ b/launcher/ui/dialogs/CopyInstanceDialog.cpp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
@@ -107,8 +107,8 @@ CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget* parent)
#if defined(Q_OS_WIN)
ui->symbolicLinksCheckbox->setIcon(style()->standardIcon(QStyle::SP_VistaShield));
- ui->symbolicLinksCheckbox->setToolTip(tr("Use symbolic links instead of copying files.") +
- "\n" + tr("On Windows, symbolic links may require admin permission to create."));
+ ui->symbolicLinksCheckbox->setToolTip(tr("Use symbolic links instead of copying files.") + "\n" +
+ tr("On Windows, symbolic links may require admin permission to create."));
#endif
updateLinkOptions();
@@ -220,7 +220,7 @@ void CopyInstanceDialog::on_iconButton_clicked()
}
}
-void CopyInstanceDialog::on_instNameTextBox_textChanged(const QString& arg1)
+void CopyInstanceDialog::on_instNameTextBox_textChanged([[maybe_unused]] const QString& arg1)
{
updateDialogState();
}
diff --git a/launcher/ui/dialogs/CustomMessageBox.cpp b/launcher/ui/dialogs/CustomMessageBox.cpp
index 19029f68..1af47a44 100644
--- a/launcher/ui/dialogs/CustomMessageBox.cpp
+++ b/launcher/ui/dialogs/CustomMessageBox.cpp
@@ -15,13 +15,15 @@
#include "CustomMessageBox.h"
-namespace CustomMessageBox
-{
-QMessageBox *selectable(QWidget *parent, const QString &title, const QString &text,
- QMessageBox::Icon icon, QMessageBox::StandardButtons buttons,
+namespace CustomMessageBox {
+QMessageBox* selectable(QWidget* parent,
+ const QString& title,
+ const QString& text,
+ QMessageBox::Icon icon,
+ QMessageBox::StandardButtons buttons,
QMessageBox::StandardButton defaultButton)
{
- QMessageBox *messageBox = new QMessageBox(parent);
+ QMessageBox* messageBox = new QMessageBox(parent);
messageBox->setWindowTitle(title);
messageBox->setText(text);
messageBox->setStandardButtons(buttons);
@@ -32,4 +34,4 @@ QMessageBox *selectable(QWidget *parent, const QString &title, const QString &te
return messageBox;
}
-}
+} // namespace CustomMessageBox
diff --git a/launcher/ui/dialogs/CustomMessageBox.h b/launcher/ui/dialogs/CustomMessageBox.h
index 712c6518..a9bc6a24 100644
--- a/launcher/ui/dialogs/CustomMessageBox.h
+++ b/launcher/ui/dialogs/CustomMessageBox.h
@@ -17,9 +17,10 @@
#include <QMessageBox>
-namespace CustomMessageBox
-{
-QMessageBox *selectable(QWidget *parent, const QString &title, const QString &text,
+namespace CustomMessageBox {
+QMessageBox* selectable(QWidget* parent,
+ const QString& title,
+ const QString& text,
QMessageBox::Icon icon = QMessageBox::NoIcon,
QMessageBox::StandardButtons buttons = QMessageBox::Ok,
QMessageBox::StandardButton defaultButton = QMessageBox::NoButton);
diff --git a/launcher/ui/dialogs/EditAccountDialog.cpp b/launcher/ui/dialogs/EditAccountDialog.cpp
index 002c064b..58036fd8 100644
--- a/launcher/ui/dialogs/EditAccountDialog.cpp
+++ b/launcher/ui/dialogs/EditAccountDialog.cpp
@@ -14,12 +14,11 @@
*/
#include "EditAccountDialog.h"
-#include "ui_EditAccountDialog.h"
#include <DesktopServices.h>
#include <QUrl>
+#include "ui_EditAccountDialog.h"
-EditAccountDialog::EditAccountDialog(const QString &text, QWidget *parent, int flags)
- : QDialog(parent), ui(new Ui::EditAccountDialog)
+EditAccountDialog::EditAccountDialog(const QString& text, QWidget* parent, int flags) : QDialog(parent), ui(new Ui::EditAccountDialog)
{
ui->setupUi(this);
@@ -35,12 +34,12 @@ EditAccountDialog::~EditAccountDialog()
delete ui;
}
-void EditAccountDialog::on_label_linkActivated(const QString &link)
+void EditAccountDialog::on_label_linkActivated(const QString& link)
{
DesktopServices::openUrl(QUrl(link));
}
-void EditAccountDialog::setUsername(const QString & user) const
+void EditAccountDialog::setUsername(const QString& user) const
{
ui->userTextBox->setText(user);
}
@@ -50,7 +49,7 @@ QString EditAccountDialog::username() const
return ui->userTextBox->text();
}
-void EditAccountDialog::setPassword(const QString & pass) const
+void EditAccountDialog::setPassword(const QString& pass) const
{
ui->passTextBox->setText(pass);
}
diff --git a/launcher/ui/dialogs/EditAccountDialog.h b/launcher/ui/dialogs/EditAccountDialog.h
index 6b5eb4aa..7a9ccba7 100644
--- a/launcher/ui/dialogs/EditAccountDialog.h
+++ b/launcher/ui/dialogs/EditAccountDialog.h
@@ -17,28 +17,24 @@
#include <QDialog>
-namespace Ui
-{
+namespace Ui {
class EditAccountDialog;
}
-class EditAccountDialog : public QDialog
-{
+class EditAccountDialog : public QDialog {
Q_OBJECT
-public:
- explicit EditAccountDialog(const QString &text = "", QWidget *parent = 0,
- int flags = UsernameField | PasswordField);
+ public:
+ explicit EditAccountDialog(const QString& text = "", QWidget* parent = 0, int flags = UsernameField | PasswordField);
~EditAccountDialog();
- void setUsername(const QString & user) const;
- void setPassword(const QString & pass) const;
+ void setUsername(const QString& user) const;
+ void setPassword(const QString& pass) const;
QString username() const;
QString password() const;
- enum Flags
- {
+ enum Flags {
NoFlags = 0,
//! Specifies that the dialog should have a username field.
@@ -48,9 +44,9 @@ public:
PasswordField,
};
-private slots:
- void on_label_linkActivated(const QString &link);
+ private slots:
+ void on_label_linkActivated(const QString& link);
-private:
- Ui::EditAccountDialog *ui;
+ private:
+ Ui::EditAccountDialog* ui;
};
diff --git a/launcher/ui/dialogs/ExportInstanceDialog.cpp b/launcher/ui/dialogs/ExportInstanceDialog.cpp
index d6a503cc..703736d6 100644
--- a/launcher/ui/dialogs/ExportInstanceDialog.cpp
+++ b/launcher/ui/dialogs/ExportInstanceDialog.cpp
@@ -195,8 +195,8 @@ void ExportInstanceDialog::loadPackIgnore()
if (!ignoreFile.open(QIODevice::ReadOnly)) {
return;
}
- auto data = ignoreFile.readAll();
- auto string = QString::fromUtf8(data);
+ auto ignoreData = ignoreFile.readAll();
+ auto string = QString::fromUtf8(ignoreData);
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
proxyModel->setBlockedPaths(string.split('\n', Qt::SkipEmptyParts));
#else
@@ -206,10 +206,10 @@ void ExportInstanceDialog::loadPackIgnore()
void ExportInstanceDialog::savePackIgnore()
{
- auto data = proxyModel->blockedPaths().toStringList().join('\n').toUtf8();
+ auto ignoreData = proxyModel->blockedPaths().toStringList().join('\n').toUtf8();
auto filename = ignoreFileName();
try {
- FS::write(filename, data);
+ FS::write(filename, ignoreData);
} catch (const Exception& e) {
qWarning() << e.cause();
}
diff --git a/launcher/ui/dialogs/IconPickerDialog.cpp b/launcher/ui/dialogs/IconPickerDialog.cpp
index 5131686a..faad3ce7 100644
--- a/launcher/ui/dialogs/IconPickerDialog.cpp
+++ b/launcher/ui/dialogs/IconPickerDialog.cpp
@@ -13,9 +13,9 @@
* limitations under the License.
*/
+#include <QFileDialog>
#include <QKeyEvent>
#include <QPushButton>
-#include <QFileDialog>
#include "Application.h"
@@ -24,12 +24,11 @@
#include "ui/instanceview/InstanceDelegate.h"
+#include <DesktopServices.h>
#include "icons/IconList.h"
#include "icons/IconUtils.h"
-#include <DesktopServices.h>
-IconPickerDialog::IconPickerDialog(QWidget *parent)
- : QDialog(parent), ui(new Ui::IconPickerDialog)
+IconPickerDialog::IconPickerDialog(QWidget* parent) : QDialog(parent), ui(new Ui::IconPickerDialog)
{
ui->setupUi(this);
setWindowModality(Qt::WindowModal);
@@ -69,31 +68,30 @@ IconPickerDialog::IconPickerDialog(QWidget *parent)
connect(contentsWidget, SIGNAL(doubleClicked(QModelIndex)), SLOT(activated(QModelIndex)));
- connect(contentsWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), SLOT(selectionChanged(QItemSelection, QItemSelection)));
+ connect(contentsWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
+ SLOT(selectionChanged(QItemSelection, QItemSelection)));
auto buttonFolder = ui->buttonBox->addButton(tr("Open Folder"), QDialogButtonBox::ResetRole);
connect(buttonFolder, &QPushButton::clicked, this, &IconPickerDialog::openFolder);
}
-bool IconPickerDialog::eventFilter(QObject *obj, QEvent *evt)
+bool IconPickerDialog::eventFilter(QObject* obj, QEvent* evt)
{
if (obj != ui->iconView)
return QDialog::eventFilter(obj, evt);
- if (evt->type() != QEvent::KeyPress)
- {
+ if (evt->type() != QEvent::KeyPress) {
return QDialog::eventFilter(obj, evt);
}
- QKeyEvent *keyEvent = static_cast<QKeyEvent *>(evt);
- switch (keyEvent->key())
- {
- case Qt::Key_Delete:
- removeSelectedIcon();
- return true;
- case Qt::Key_Plus:
- addNewIcon();
- return true;
- default:
- break;
+ QKeyEvent* keyEvent = static_cast<QKeyEvent*>(evt);
+ switch (keyEvent->key()) {
+ case Qt::Key_Delete:
+ removeSelectedIcon();
+ return true;
+ case Qt::Key_Plus:
+ addNewIcon();
+ return true;
+ default:
+ break;
}
return QDialog::eventFilter(obj, evt);
}
@@ -142,8 +140,7 @@ int IconPickerDialog::execWithSelection(QString selection)
int index_nr = list->getIconIndex(selection);
auto model_index = list->index(index_nr);
- contentsWidget->selectionModel()->select(
- model_index, QItemSelectionModel::Current | QItemSelectionModel::Select);
+ contentsWidget->selectionModel()->select(model_index, QItemSelectionModel::Current | QItemSelectionModel::Select);
QMetaObject::invokeMethod(this, "delayed_scroll", Qt::QueuedConnection, Q_ARG(QModelIndex, model_index));
return QDialog::exec();
diff --git a/launcher/ui/dialogs/IconPickerDialog.h b/launcher/ui/dialogs/IconPickerDialog.h
index c93f565f..37e53dcc 100644
--- a/launcher/ui/dialogs/IconPickerDialog.h
+++ b/launcher/ui/dialogs/IconPickerDialog.h
@@ -17,30 +17,27 @@
#include <QDialog>
#include <QItemSelection>
-namespace Ui
-{
+namespace Ui {
class IconPickerDialog;
}
-class IconPickerDialog : public QDialog
-{
+class IconPickerDialog : public QDialog {
Q_OBJECT
-public:
- explicit IconPickerDialog(QWidget *parent = 0);
+ public:
+ explicit IconPickerDialog(QWidget* parent = 0);
~IconPickerDialog();
int execWithSelection(QString selection);
QString selectedIconKey;
-protected:
- virtual bool eventFilter(QObject *, QEvent *);
+ protected:
+ virtual bool eventFilter(QObject*, QEvent*);
-private:
- Ui::IconPickerDialog *ui;
- QPushButton *buttonRemove;
+ private:
+ Ui::IconPickerDialog* ui;
+ QPushButton* buttonRemove;
-private
-slots:
+ private slots:
void selectionChanged(QItemSelection, QItemSelection);
void activated(QModelIndex);
void delayed_scroll(QModelIndex);
diff --git a/launcher/ui/dialogs/ImportResourceDialog.h b/launcher/ui/dialogs/ImportResourceDialog.h
index 5f2f7a92..bbde1ba7 100644
--- a/launcher/ui/dialogs/ImportResourceDialog.h
+++ b/launcher/ui/dialogs/ImportResourceDialog.h
@@ -17,7 +17,7 @@ class ImportResourceDialog : public QDialog {
explicit ImportResourceDialog(QString file_path, PackedResourceType type, QWidget* parent = nullptr);
~ImportResourceDialog() override;
QString selectedInstanceKey;
-
+
private:
Ui::ImportResourceDialog* ui;
PackedResourceType m_resource_type;
diff --git a/launcher/ui/dialogs/LoginDialog.cpp b/launcher/ui/dialogs/LoginDialog.cpp
index 30394b72..7296a13e 100644
--- a/launcher/ui/dialogs/LoginDialog.cpp
+++ b/launcher/ui/dialogs/LoginDialog.cpp
@@ -20,7 +20,7 @@
#include <QtWidgets/QPushButton>
-LoginDialog::LoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::LoginDialog)
+LoginDialog::LoginDialog(QWidget* parent) : QDialog(parent), ui(new Ui::LoginDialog)
{
ui->setupUi(this);
ui->progressBar->setVisible(false);
@@ -59,27 +59,24 @@ void LoginDialog::setUserInputsEnabled(bool enable)
}
// Enable the OK button only when both textboxes contain something.
-void LoginDialog::on_userTextBox_textEdited(const QString &newText)
+void LoginDialog::on_userTextBox_textEdited(const QString& newText)
{
- ui->buttonBox->button(QDialogButtonBox::Ok)
- ->setEnabled(!newText.isEmpty() && !ui->passTextBox->text().isEmpty());
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!newText.isEmpty() && !ui->passTextBox->text().isEmpty());
}
-void LoginDialog::on_passTextBox_textEdited(const QString &newText)
+void LoginDialog::on_passTextBox_textEdited(const QString& newText)
{
- ui->buttonBox->button(QDialogButtonBox::Ok)
- ->setEnabled(!newText.isEmpty() && !ui->userTextBox->text().isEmpty());
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!newText.isEmpty() && !ui->userTextBox->text().isEmpty());
}
-void LoginDialog::onTaskFailed(const QString &reason)
+void LoginDialog::onTaskFailed(const QString& reason)
{
// Set message
auto lines = reason.split('\n');
QString processed;
- for(auto line: lines) {
- if(line.size()) {
+ for (auto line : lines) {
+ if (line.size()) {
processed += "<font color='red'>" + line + "</font><br />";
- }
- else {
+ } else {
processed += "<br />";
}
}
@@ -95,7 +92,7 @@ void LoginDialog::onTaskSucceeded()
QDialog::accept();
}
-void LoginDialog::onTaskStatus(const QString &status)
+void LoginDialog::onTaskStatus(const QString& status)
{
ui->label->setText(status);
}
@@ -107,12 +104,11 @@ void LoginDialog::onTaskProgress(qint64 current, qint64 total)
}
// Public interface
-MinecraftAccountPtr LoginDialog::newAccount(QWidget *parent, QString msg)
+MinecraftAccountPtr LoginDialog::newAccount(QWidget* parent, QString msg)
{
LoginDialog dlg(parent);
dlg.ui->label->setText(msg);
- if (dlg.exec() == QDialog::Accepted)
- {
+ if (dlg.exec() == QDialog::Accepted) {
return dlg.m_account;
}
return nullptr;
diff --git a/launcher/ui/dialogs/LoginDialog.h b/launcher/ui/dialogs/LoginDialog.h
index f8101ff5..601b5fa7 100644
--- a/launcher/ui/dialogs/LoginDialog.h
+++ b/launcher/ui/dialogs/LoginDialog.h
@@ -15,45 +15,42 @@
#pragma once
-#include <QtWidgets/QDialog>
#include <QtCore/QEventLoop>
+#include <QtWidgets/QDialog>
#include "minecraft/auth/MinecraftAccount.h"
#include "tasks/Task.h"
-namespace Ui
-{
+namespace Ui {
class LoginDialog;
}
-class LoginDialog : public QDialog
-{
+class LoginDialog : public QDialog {
Q_OBJECT
-public:
+ public:
~LoginDialog();
- static MinecraftAccountPtr newAccount(QWidget *parent, QString message);
+ static MinecraftAccountPtr newAccount(QWidget* parent, QString message);
-private:
- explicit LoginDialog(QWidget *parent = 0);
+ private:
+ explicit LoginDialog(QWidget* parent = 0);
void setUserInputsEnabled(bool enable);
-protected
-slots:
+ protected slots:
void accept();
- void onTaskFailed(const QString &reason);
+ void onTaskFailed(const QString& reason);
void onTaskSucceeded();
- void onTaskStatus(const QString &status);
+ void onTaskStatus(const QString& status);
void onTaskProgress(qint64 current, qint64 total);
- void on_userTextBox_textEdited(const QString &newText);
- void on_passTextBox_textEdited(const QString &newText);
+ void on_userTextBox_textEdited(const QString& newText);
+ void on_passTextBox_textEdited(const QString& newText);
-private:
- Ui::LoginDialog *ui;
+ private:
+ Ui::LoginDialog* ui;
MinecraftAccountPtr m_account;
Task::Ptr m_loginTask;
};
diff --git a/launcher/ui/dialogs/MSALoginDialog.cpp b/launcher/ui/dialogs/MSALoginDialog.cpp
index be49babb..74fff9fd 100644
--- a/launcher/ui/dialogs/MSALoginDialog.cpp
+++ b/launcher/ui/dialogs/MSALoginDialog.cpp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
@@ -39,12 +39,12 @@
#include "DesktopServices.h"
#include "minecraft/auth/AccountTask.h"
-#include <QtWidgets/QPushButton>
-#include <QUrl>
#include <QApplication>
#include <QClipboard>
+#include <QUrl>
+#include <QtWidgets/QPushButton>
-MSALoginDialog::MSALoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::MSALoginDialog)
+MSALoginDialog::MSALoginDialog(QWidget* parent) : QDialog(parent), ui(new Ui::MSALoginDialog)
{
ui->setupUi(this);
ui->progressBar->setVisible(false);
@@ -55,7 +55,8 @@ MSALoginDialog::MSALoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::MS
connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
}
-int MSALoginDialog::exec() {
+int MSALoginDialog::exec()
+{
setUserInputsEnabled(false);
ui->progressBar->setVisible(true);
@@ -74,24 +75,24 @@ int MSALoginDialog::exec() {
return QDialog::exec();
}
-
MSALoginDialog::~MSALoginDialog()
{
delete ui;
}
-void MSALoginDialog::externalLoginTick() {
+void MSALoginDialog::externalLoginTick()
+{
m_externalLoginElapsed++;
ui->progressBar->setValue(m_externalLoginElapsed);
ui->progressBar->repaint();
- if(m_externalLoginElapsed >= m_externalLoginTimeout) {
+ if (m_externalLoginElapsed >= m_externalLoginTimeout) {
m_externalLoginTimer.stop();
}
}
-
-void MSALoginDialog::showVerificationUriAndCode(const QUrl& uri, const QString& code, int expiresIn) {
+void MSALoginDialog::showVerificationUriAndCode(const QUrl& uri, const QString& code, int expiresIn)
+{
m_externalLoginElapsed = 0;
m_externalLoginTimeout = expiresIn;
@@ -104,7 +105,8 @@ void MSALoginDialog::showVerificationUriAndCode(const QUrl& uri, const QString&
QString urlString = uri.toString();
QString linkString = QString("<a href=\"%1\">%2</a>").arg(urlString, urlString);
- ui->label->setText(tr("<p>Please open up %1 in a browser and put in the code <b>%2</b> to proceed with login.</p>").arg(linkString, code));
+ ui->label->setText(
+ tr("<p>Please open up %1 in a browser and put in the code <b>%2</b> to proceed with login.</p>").arg(linkString, code));
ui->actionButton->setVisible(true);
connect(ui->actionButton, &QPushButton::clicked, [=]() {
DesktopServices::openUrl(uri);
@@ -113,7 +115,8 @@ void MSALoginDialog::showVerificationUriAndCode(const QUrl& uri, const QString&
});
}
-void MSALoginDialog::hideVerificationUriAndCode() {
+void MSALoginDialog::hideVerificationUriAndCode()
+{
m_externalLoginTimer.stop();
ui->actionButton->setVisible(false);
}
@@ -123,16 +126,15 @@ void MSALoginDialog::setUserInputsEnabled(bool enable)
ui->buttonBox->setEnabled(enable);
}
-void MSALoginDialog::onTaskFailed(const QString &reason)
+void MSALoginDialog::onTaskFailed(const QString& reason)
{
// Set message
auto lines = reason.split('\n');
QString processed;
- for(auto line: lines) {
- if(line.size()) {
+ for (auto line : lines) {
+ if (line.size()) {
processed += "<font color='red'>" + line + "</font><br />";
- }
- else {
+ } else {
processed += "<br />";
}
}
@@ -149,7 +151,7 @@ void MSALoginDialog::onTaskSucceeded()
QDialog::accept();
}
-void MSALoginDialog::onTaskStatus(const QString &status)
+void MSALoginDialog::onTaskStatus(const QString& status)
{
ui->label->setText(status);
}
@@ -161,12 +163,11 @@ void MSALoginDialog::onTaskProgress(qint64 current, qint64 total)
}
// Public interface
-MinecraftAccountPtr MSALoginDialog::newAccount(QWidget *parent, QString msg)
+MinecraftAccountPtr MSALoginDialog::newAccount(QWidget* parent, QString msg)
{
MSALoginDialog dlg(parent);
dlg.ui->label->setText(msg);
- if (dlg.exec() == QDialog::Accepted)
- {
+ if (dlg.exec() == QDialog::Accepted) {
return dlg.m_account;
}
return nullptr;
diff --git a/launcher/ui/dialogs/MSALoginDialog.h b/launcher/ui/dialogs/MSALoginDialog.h
index 4cf146ab..03e276bc 100644
--- a/launcher/ui/dialogs/MSALoginDialog.h
+++ b/launcher/ui/dialogs/MSALoginDialog.h
@@ -15,49 +15,45 @@
#pragma once
-#include <QtWidgets/QDialog>
-#include <QtCore/QEventLoop>
#include <QTimer>
+#include <QtCore/QEventLoop>
+#include <QtWidgets/QDialog>
#include "minecraft/auth/MinecraftAccount.h"
-namespace Ui
-{
+namespace Ui {
class MSALoginDialog;
}
-class MSALoginDialog : public QDialog
-{
+class MSALoginDialog : public QDialog {
Q_OBJECT
-public:
+ public:
~MSALoginDialog();
- static MinecraftAccountPtr newAccount(QWidget *parent, QString message);
+ static MinecraftAccountPtr newAccount(QWidget* parent, QString message);
int exec() override;
-private:
- explicit MSALoginDialog(QWidget *parent = 0);
+ private:
+ explicit MSALoginDialog(QWidget* parent = 0);
void setUserInputsEnabled(bool enable);
-protected
-slots:
- void onTaskFailed(const QString &reason);
+ protected slots:
+ void onTaskFailed(const QString& reason);
void onTaskSucceeded();
- void onTaskStatus(const QString &status);
+ void onTaskStatus(const QString& status);
void onTaskProgress(qint64 current, qint64 total);
- void showVerificationUriAndCode(const QUrl &uri, const QString &code, int expiresIn);
+ void showVerificationUriAndCode(const QUrl& uri, const QString& code, int expiresIn);
void hideVerificationUriAndCode();
void externalLoginTick();
-private:
- Ui::MSALoginDialog *ui;
+ private:
+ Ui::MSALoginDialog* ui;
MinecraftAccountPtr m_account;
shared_qobject_ptr<AccountTask> m_loginTask;
QTimer m_externalLoginTimer;
int m_externalLoginElapsed = 0;
int m_externalLoginTimeout = 0;
};
-
diff --git a/launcher/ui/dialogs/ModUpdateDialog.cpp b/launcher/ui/dialogs/ModUpdateDialog.cpp
index 8618b924..0af1ec59 100644
--- a/launcher/ui/dialogs/ModUpdateDialog.cpp
+++ b/launcher/ui/dialogs/ModUpdateDialog.cpp
@@ -89,15 +89,17 @@ void ModUpdateDialog::checkCandidates()
if (!m_modrinth_to_update.empty()) {
m_modrinth_check_task.reset(new ModrinthCheckUpdate(m_modrinth_to_update, versions, loaders, m_mod_model));
- connect(m_modrinth_check_task.get(), &CheckUpdateTask::checkFailed, this,
- [this](Mod* mod, QString reason, QUrl recover_url) { m_failed_check_update.append({mod, reason, recover_url}); });
+ connect(m_modrinth_check_task.get(), &CheckUpdateTask::checkFailed, this, [this](Mod* mod, QString reason, QUrl recover_url) {
+ m_failed_check_update.append({ mod, reason, recover_url });
+ });
check_task.addTask(m_modrinth_check_task);
}
if (!m_flame_to_update.empty()) {
m_flame_check_task.reset(new FlameCheckUpdate(m_flame_to_update, versions, loaders, m_mod_model));
- connect(m_flame_check_task.get(), &CheckUpdateTask::checkFailed, this,
- [this](Mod* mod, QString reason, QUrl recover_url) { m_failed_check_update.append({mod, reason, recover_url}); });
+ connect(m_flame_check_task.get(), &CheckUpdateTask::checkFailed, this, [this](Mod* mod, QString reason, QUrl recover_url) {
+ m_failed_check_update.append({ mod, reason, recover_url });
+ });
check_task.addTask(m_flame_check_task);
}
@@ -162,7 +164,7 @@ void ModUpdateDialog::checkCandidates()
if (!recover_url.isEmpty())
//: %1 is the link to download it manually
text += tr("Possible solution: Getting the latest version manually:<br>%1<br>")
- .arg(QString("<a href='%1'>%1</a>").arg(recover_url.toString()));
+ .arg(QString("<a href='%1'>%1</a>").arg(recover_url.toString()));
text += "<br>";
}
@@ -342,7 +344,7 @@ void ModUpdateDialog::onMetadataFailed(Mod* mod, bool try_others, ModPlatform::R
} else {
QString reason{ tr("Couldn't find a valid version on the selected mod provider(s)") };
- m_failed_metadata.append({mod, reason});
+ m_failed_metadata.append({ mod, reason });
}
}
diff --git a/launcher/ui/dialogs/ModUpdateDialog.h b/launcher/ui/dialogs/ModUpdateDialog.h
index 1a92f613..12dddf5e 100644
--- a/launcher/ui/dialogs/ModUpdateDialog.h
+++ b/launcher/ui/dialogs/ModUpdateDialog.h
@@ -36,7 +36,9 @@ class ModUpdateDialog final : public ReviewMessageBox {
private slots:
void onMetadataEnsured(Mod*);
- void onMetadataFailed(Mod*, bool try_others = false, ModPlatform::ResourceProvider first_choice = ModPlatform::ResourceProvider::MODRINTH);
+ void onMetadataFailed(Mod*,
+ bool try_others = false,
+ ModPlatform::ResourceProvider first_choice = ModPlatform::ResourceProvider::MODRINTH);
private:
QWidget* m_parent;
diff --git a/launcher/ui/dialogs/NewComponentDialog.cpp b/launcher/ui/dialogs/NewComponentDialog.cpp
index ea790e8c..b47b85ff 100644
--- a/launcher/ui/dialogs/NewComponentDialog.cpp
+++ b/launcher/ui/dialogs/NewComponentDialog.cpp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
@@ -33,28 +33,28 @@
* limitations under the License.
*/
-#include "Application.h"
#include "NewComponentDialog.h"
+#include "Application.h"
#include "ui_NewComponentDialog.h"
#include <BaseVersion.h>
+#include <InstanceList.h>
#include <icons/IconList.h>
#include <tasks/Task.h>
-#include <InstanceList.h>
-#include "VersionSelectDialog.h"
-#include "ProgressDialog.h"
#include "IconPickerDialog.h"
+#include "ProgressDialog.h"
+#include "VersionSelectDialog.h"
+#include <QFileDialog>
#include <QLayout>
#include <QPushButton>
-#include <QFileDialog>
#include <QValidator>
#include <meta/Index.h>
#include <meta/VersionList.h>
-NewComponentDialog::NewComponentDialog(const QString & initialName, const QString & initialUid, QWidget *parent)
+NewComponentDialog::NewComponentDialog(const QString& initialName, const QString& initialUid, QWidget* parent)
: QDialog(parent), ui(new Ui::NewComponentDialog)
{
ui->setupUi(this);
@@ -81,12 +81,9 @@ void NewComponentDialog::updateDialogState()
{
auto protoUid = ui->nameTextBox->text().toLower();
protoUid.remove(QRegularExpression("[^a-z]"));
- if(protoUid.isEmpty())
- {
+ if (protoUid.isEmpty()) {
ui->uidTextBox->setPlaceholderText(originalPlaceholderText);
- }
- else
- {
+ } else {
QString suggestedUid = "org.multimc.custom." + protoUid;
ui->uidTextBox->setPlaceholderText(suggestedUid);
}
@@ -97,8 +94,7 @@ void NewComponentDialog::updateDialogState()
QString NewComponentDialog::name() const
{
auto result = ui->nameTextBox->text();
- if(result.size())
- {
+ if (result.size()) {
return result.trimmed();
}
return QString();
@@ -107,13 +103,11 @@ QString NewComponentDialog::name() const
QString NewComponentDialog::uid() const
{
auto result = ui->uidTextBox->text();
- if(result.size())
- {
+ if (result.size()) {
return result.trimmed();
}
result = ui->uidTextBox->placeholderText();
- if(result.size() && result != originalPlaceholderText)
- {
+ if (result.size() && result != originalPlaceholderText) {
return result.trimmed();
}
return QString();
diff --git a/launcher/ui/dialogs/NewComponentDialog.h b/launcher/ui/dialogs/NewComponentDialog.h
index 8c790beb..4fb68ff2 100644
--- a/launcher/ui/dialogs/NewComponentDialog.h
+++ b/launcher/ui/dialogs/NewComponentDialog.h
@@ -20,28 +20,26 @@
#include <QString>
#include <QStringList>
-namespace Ui
-{
+namespace Ui {
class NewComponentDialog;
}
-class NewComponentDialog : public QDialog
-{
+class NewComponentDialog : public QDialog {
Q_OBJECT
-public:
- explicit NewComponentDialog(const QString & initialName = QString(), const QString & initialUid = QString(), QWidget *parent = 0);
+ public:
+ explicit NewComponentDialog(const QString& initialName = QString(), const QString& initialUid = QString(), QWidget* parent = 0);
virtual ~NewComponentDialog();
void setBlacklist(QStringList badUids);
QString name() const;
QString uid() const;
-private slots:
+ private slots:
void updateDialogState();
-private:
- Ui::NewComponentDialog *ui;
+ private:
+ Ui::NewComponentDialog* ui;
QString originalPlaceholderText;
QStringList uidBlacklist;
diff --git a/launcher/ui/dialogs/NewInstanceDialog.cpp b/launcher/ui/dialogs/NewInstanceDialog.cpp
index 935f095e..9613c6b0 100644
--- a/launcher/ui/dialogs/NewInstanceDialog.cpp
+++ b/launcher/ui/dialogs/NewInstanceDialog.cpp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
@@ -89,15 +89,14 @@ NewInstanceDialog::NewInstanceDialog(const QString& initialGroup,
groupList.push_front("");
ui->groupBox->addItems(groupList);
int index = groupList.indexOf(initialGroup);
- if(index == -1)
- {
+ if (index == -1) {
index = 0;
}
ui->groupBox->setCurrentIndex(index);
ui->groupBox->lineEdit()->setPlaceholderText(tr("No group"));
-
- // NOTE: m_buttons must be initialized before PageContainer, because it indirectly accesses m_buttons through setSuggestedPack! Do not move this below.
+ // NOTE: m_buttons must be initialized before PageContainer, because it indirectly accesses m_buttons through setSuggestedPack! Do not
+ // move this below.
m_buttons = new QDialogButtonBox(QDialogButtonBox::Help | QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
m_container = new PageContainer(this, {}, this);
@@ -124,8 +123,7 @@ NewInstanceDialog::NewInstanceDialog(const QString& initialGroup,
HelpButton->setAutoDefault(false);
connect(HelpButton, &QPushButton::clicked, m_container, &PageContainer::help);
- if(!url.isEmpty())
- {
+ if (!url.isEmpty()) {
QUrl actualUrl(url);
m_container->selectPage("import");
importPage->setUrl(url);
@@ -158,9 +156,9 @@ void NewInstanceDialog::accept()
QDialog::accept();
}
-QList<BasePage *> NewInstanceDialog::getPages()
+QList<BasePage*> NewInstanceDialog::getPages()
{
- QList<BasePage *> pages;
+ QList<BasePage*> pages;
importPage = new ImportPage(this);
@@ -219,17 +217,17 @@ void NewInstanceDialog::setSuggestedPack(const QString& name, QString version, I
m_buttons->button(QDialogButtonBox::Ok)->setEnabled(allowOK);
}
-void NewInstanceDialog::setSuggestedIconFromFile(const QString &path, const QString &name)
+void NewInstanceDialog::setSuggestedIconFromFile(const QString& path, const QString& name)
{
importIcon = true;
importIconPath = path;
importIconName = name;
- //Hmm, for some reason they can be to small
+ // Hmm, for some reason they can be to small
ui->iconButton->setIcon(QIcon(path));
}
-void NewInstanceDialog::setSuggestedIcon(const QString &key)
+void NewInstanceDialog::setSuggestedIcon(const QString& key)
{
auto icon = APPLICATION->icons()->getIcon(key);
importIcon = false;
@@ -237,9 +235,9 @@ void NewInstanceDialog::setSuggestedIcon(const QString &key)
ui->iconButton->setIcon(icon);
}
-InstanceTask * NewInstanceDialog::extractTask()
+InstanceTask* NewInstanceDialog::extractTask()
{
- InstanceTask * extracted = creationTask.get();
+ InstanceTask* extracted = creationTask.get();
creationTask.release();
InstanceName inst_name(ui->instNameTextBox->placeholderText().trimmed(), importVersion);
@@ -255,8 +253,7 @@ void NewInstanceDialog::updateDialogState()
{
auto allowOK = creationTask && !instName().isEmpty();
auto OkButton = m_buttons->button(QDialogButtonBox::Ok);
- if(OkButton->isEnabled() != allowOK)
- {
+ if (OkButton->isEnabled() != allowOK) {
OkButton->setEnabled(allowOK);
}
}
@@ -264,13 +261,11 @@ void NewInstanceDialog::updateDialogState()
QString NewInstanceDialog::instName() const
{
auto result = ui->instNameTextBox->text().trimmed();
- if(result.size())
- {
+ if (result.size()) {
return result;
}
result = ui->instNameTextBox->placeholderText().trimmed();
- if(result.size())
- {
+ if (result.size()) {
return result;
}
return QString();
@@ -298,7 +293,7 @@ void NewInstanceDialog::on_iconButton_clicked()
}
}
-void NewInstanceDialog::on_instNameTextBox_textChanged(const QString& arg1)
+void NewInstanceDialog::on_instNameTextBox_textChanged([[maybe_unused]] const QString& arg1)
{
updateDialogState();
}
diff --git a/launcher/ui/dialogs/NewInstanceDialog.h b/launcher/ui/dialogs/NewInstanceDialog.h
index 6a6ad89e..92357956 100644
--- a/launcher/ui/dialogs/NewInstanceDialog.h
+++ b/launcher/ui/dialogs/NewInstanceDialog.h
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
diff --git a/launcher/ui/dialogs/OfflineLoginDialog.cpp b/launcher/ui/dialogs/OfflineLoginDialog.cpp
index a69537ab..137620be 100644
--- a/launcher/ui/dialogs/OfflineLoginDialog.cpp
+++ b/launcher/ui/dialogs/OfflineLoginDialog.cpp
@@ -5,7 +5,7 @@
#include <QtWidgets/QPushButton>
-OfflineLoginDialog::OfflineLoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::OfflineLoginDialog)
+OfflineLoginDialog::OfflineLoginDialog(QWidget* parent) : QDialog(parent), ui(new Ui::OfflineLoginDialog)
{
ui->setupUi(this);
ui->progressBar->setVisible(false);
@@ -52,22 +52,20 @@ void OfflineLoginDialog::on_allowLongUsernames_stateChanged(int value)
}
// Enable the OK button only when the textbox contains something.
-void OfflineLoginDialog::on_userTextBox_textEdited(const QString &newText)
+void OfflineLoginDialog::on_userTextBox_textEdited(const QString& newText)
{
- ui->buttonBox->button(QDialogButtonBox::Ok)
- ->setEnabled(!newText.isEmpty());
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!newText.isEmpty());
}
-void OfflineLoginDialog::onTaskFailed(const QString &reason)
+void OfflineLoginDialog::onTaskFailed(const QString& reason)
{
// Set message
auto lines = reason.split('\n');
QString processed;
- for(auto line: lines) {
- if(line.size()) {
+ for (auto line : lines) {
+ if (line.size()) {
processed += "<font color='red'>" + line + "</font><br />";
- }
- else {
+ } else {
processed += "<br />";
}
}
@@ -83,7 +81,7 @@ void OfflineLoginDialog::onTaskSucceeded()
QDialog::accept();
}
-void OfflineLoginDialog::onTaskStatus(const QString &status)
+void OfflineLoginDialog::onTaskStatus(const QString& status)
{
ui->label->setText(status);
}
@@ -95,12 +93,11 @@ void OfflineLoginDialog::onTaskProgress(qint64 current, qint64 total)
}
// Public interface
-MinecraftAccountPtr OfflineLoginDialog::newAccount(QWidget *parent, QString msg)
+MinecraftAccountPtr OfflineLoginDialog::newAccount(QWidget* parent, QString msg)
{
OfflineLoginDialog dlg(parent);
dlg.ui->label->setText(msg);
- if (dlg.exec() == QDialog::Accepted)
- {
+ if (dlg.exec() == QDialog::Accepted) {
return dlg.m_account;
}
return nullptr;
diff --git a/launcher/ui/dialogs/OfflineLoginDialog.h b/launcher/ui/dialogs/OfflineLoginDialog.h
index fdb3d91f..a50024a6 100644
--- a/launcher/ui/dialogs/OfflineLoginDialog.h
+++ b/launcher/ui/dialogs/OfflineLoginDialog.h
@@ -1,44 +1,41 @@
#pragma once
-#include <QtWidgets/QDialog>
#include <QtCore/QEventLoop>
+#include <QtWidgets/QDialog>
#include "minecraft/auth/MinecraftAccount.h"
#include "tasks/Task.h"
-namespace Ui
-{
+namespace Ui {
class OfflineLoginDialog;
}
-class OfflineLoginDialog : public QDialog
-{
+class OfflineLoginDialog : public QDialog {
Q_OBJECT
-public:
+ public:
~OfflineLoginDialog();
- static MinecraftAccountPtr newAccount(QWidget *parent, QString message);
+ static MinecraftAccountPtr newAccount(QWidget* parent, QString message);
-private:
- explicit OfflineLoginDialog(QWidget *parent = 0);
+ private:
+ explicit OfflineLoginDialog(QWidget* parent = 0);
void setUserInputsEnabled(bool enable);
-protected
-slots:
+ protected slots:
void accept();
- void onTaskFailed(const QString &reason);
+ void onTaskFailed(const QString& reason);
void onTaskSucceeded();
- void onTaskStatus(const QString &status);
+ void onTaskStatus(const QString& status);
void onTaskProgress(qint64 current, qint64 total);
- void on_userTextBox_textEdited(const QString &newText);
+ void on_userTextBox_textEdited(const QString& newText);
void on_allowLongUsernames_stateChanged(int value);
-private:
- Ui::OfflineLoginDialog *ui;
+ private:
+ Ui::OfflineLoginDialog* ui;
MinecraftAccountPtr m_account;
Task::Ptr m_loginTask;
};
diff --git a/launcher/ui/dialogs/ProfileSelectDialog.cpp b/launcher/ui/dialogs/ProfileSelectDialog.cpp
index 7882cf45..a62238bd 100644
--- a/launcher/ui/dialogs/ProfileSelectDialog.cpp
+++ b/launcher/ui/dialogs/ProfileSelectDialog.cpp
@@ -16,43 +16,38 @@
#include "ProfileSelectDialog.h"
#include "ui_ProfileSelectDialog.h"
-#include <QItemSelectionModel>
#include <QDebug>
+#include <QItemSelectionModel>
-#include "SkinUtils.h"
#include "Application.h"
+#include "SkinUtils.h"
#include "ui/dialogs/ProgressDialog.h"
-ProfileSelectDialog::ProfileSelectDialog(const QString &message, int flags, QWidget *parent)
+ProfileSelectDialog::ProfileSelectDialog(const QString& message, int flags, QWidget* parent)
: QDialog(parent), ui(new Ui::ProfileSelectDialog)
{
ui->setupUi(this);
m_accounts = APPLICATION->accounts();
auto view = ui->listView;
- //view->setModel(m_accounts.get());
- //view->hideColumn(AccountList::ActiveColumn);
+ // view->setModel(m_accounts.get());
+ // view->hideColumn(AccountList::ActiveColumn);
view->setColumnCount(1);
view->setRootIsDecorated(false);
// FIXME: use a real model, not this
- if(QTreeWidgetItem* header = view->headerItem())
- {
+ if (QTreeWidgetItem* header = view->headerItem()) {
header->setText(0, tr("Name"));
- }
- else
- {
+ } else {
view->setHeaderLabel(tr("Name"));
}
- QList <QTreeWidgetItem *> items;
- for (int i = 0; i < m_accounts->count(); i++)
- {
+ QList<QTreeWidgetItem*> items;
+ for (int i = 0; i < m_accounts->count(); i++) {
MinecraftAccountPtr account = m_accounts->at(i);
QString profileLabel;
- if(account->isInUse()) {
+ if (account->isInUse()) {
profileLabel = tr("%1 (in use)").arg(account->profileName());
- }
- else {
+ } else {
profileLabel = account->profileName();
}
auto item = new QTreeWidgetItem(view);
@@ -101,8 +96,7 @@ bool ProfileSelectDialog::useAsInstDefaullt() const
void ProfileSelectDialog::on_buttonBox_accepted()
{
QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes();
- if (selection.size() > 0)
- {
+ if (selection.size() > 0) {
QModelIndex selected = selection.first();
m_selected = selected.data(AccountList::PointerRole).value<MinecraftAccountPtr>();
}
diff --git a/launcher/ui/dialogs/ProfileSelectDialog.h b/launcher/ui/dialogs/ProfileSelectDialog.h
index 38aa4249..e56ba052 100644
--- a/launcher/ui/dialogs/ProfileSelectDialog.h
+++ b/launcher/ui/dialogs/ProfileSelectDialog.h
@@ -21,17 +21,14 @@
#include "minecraft/auth/AccountList.h"
-namespace Ui
-{
+namespace Ui {
class ProfileSelectDialog;
}
-class ProfileSelectDialog : public QDialog
-{
+class ProfileSelectDialog : public QDialog {
Q_OBJECT
-public:
- enum Flags
- {
+ public:
+ enum Flags {
NoFlags = 0,
/*!
@@ -52,7 +49,7 @@ public:
* Constructs a new account select dialog with the given parent and message.
* The message will be shown at the top of the dialog. It is an empty string by default.
*/
- explicit ProfileSelectDialog(const QString& message="", int flags=0, QWidget *parent = 0);
+ explicit ProfileSelectDialog(const QString& message = "", int flags = 0, QWidget* parent = 0);
~ProfileSelectDialog();
/*!
@@ -73,18 +70,17 @@ public:
*/
bool useAsInstDefaullt() const;
-public
-slots:
+ public slots:
void on_buttonBox_accepted();
void on_buttonBox_rejected();
-protected:
+ protected:
shared_qobject_ptr<AccountList> m_accounts;
//! The account that was selected when the user clicked OK.
MinecraftAccountPtr m_selected;
-private:
- Ui::ProfileSelectDialog *ui;
+ private:
+ Ui::ProfileSelectDialog* ui;
};
diff --git a/launcher/ui/dialogs/ProfileSetupDialog.cpp b/launcher/ui/dialogs/ProfileSetupDialog.cpp
index 64c0b924..4b0c5b76 100644
--- a/launcher/ui/dialogs/ProfileSetupDialog.cpp
+++ b/launcher/ui/dialogs/ProfileSetupDialog.cpp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
@@ -36,11 +36,11 @@
#include "ProfileSetupDialog.h"
#include "ui_ProfileSetupDialog.h"
-#include <QPushButton>
#include <QAction>
-#include <QRegularExpressionValidator>
-#include <QJsonDocument>
#include <QDebug>
+#include <QJsonDocument>
+#include <QPushButton>
+#include <QRegularExpressionValidator>
#include "ui/dialogs/ProgressDialog.h"
@@ -48,8 +48,7 @@
#include "minecraft/auth/AuthRequest.h"
#include "minecraft/auth/Parsers.h"
-
-ProfileSetupDialog::ProfileSetupDialog(MinecraftAccountPtr accountToSetup, QWidget *parent)
+ProfileSetupDialog::ProfileSetupDialog(MinecraftAccountPtr accountToSetup, QWidget* parent)
: QDialog(parent), m_accountToSetup(accountToSetup), ui(new Ui::ProfileSetupDialog)
{
ui->setupUi(this);
@@ -91,13 +90,11 @@ void ProfileSetupDialog::setNameStatus(ProfileSetupDialog::NameStatus status, QS
{
nameStatus = status;
auto okButton = ui->buttonBox->button(QDialogButtonBox::Ok);
- switch(nameStatus)
- {
+ switch (nameStatus) {
case NameStatus::Available: {
validityAction->setIcon(goodIcon);
okButton->setEnabled(true);
- }
- break;
+ } break;
case NameStatus::NotSet:
case NameStatus::Pending:
validityAction->setIcon(yellowIcon);
@@ -109,43 +106,44 @@ void ProfileSetupDialog::setNameStatus(ProfileSetupDialog::NameStatus status, QS
okButton->setEnabled(false);
break;
}
- if(!errorString.isEmpty()) {
+ if (!errorString.isEmpty()) {
ui->errorLabel->setText(errorString);
ui->errorLabel->setVisible(true);
- }
- else {
+ } else {
ui->errorLabel->setVisible(false);
}
}
void ProfileSetupDialog::nameEdited(const QString& name)
{
- if(!ui->nameEdit->hasAcceptableInput()) {
+ if (!ui->nameEdit->hasAcceptableInput()) {
setNameStatus(NameStatus::NotSet, tr("Name is too short - must be between 3 and 16 characters long."));
return;
}
scheduleCheck(name);
}
-void ProfileSetupDialog::scheduleCheck(const QString& name) {
+void ProfileSetupDialog::scheduleCheck(const QString& name)
+{
queuedCheck = name;
setNameStatus(NameStatus::Pending);
checkStartTimer.start(1000);
}
-void ProfileSetupDialog::startCheck() {
- if(isChecking) {
+void ProfileSetupDialog::startCheck()
+{
+ if (isChecking) {
return;
}
- if(queuedCheck.isNull()) {
+ if (queuedCheck.isNull()) {
return;
}
checkName(queuedCheck);
}
-
-void ProfileSetupDialog::checkName(const QString &name) {
- if(isChecking) {
+void ProfileSetupDialog::checkName(const QString& name)
+{
+ if (isChecking) {
return;
}
@@ -160,44 +158,40 @@ void ProfileSetupDialog::checkName(const QString &name) {
request.setRawHeader("Accept", "application/json");
request.setRawHeader("Authorization", QString("Bearer %1").arg(token).toUtf8());
- AuthRequest *requestor = new AuthRequest(this);
+ AuthRequest* requestor = new AuthRequest(this);
connect(requestor, &AuthRequest::finished, this, &ProfileSetupDialog::checkFinished);
requestor->get(request);
}
-void ProfileSetupDialog::checkFinished(
- QNetworkReply::NetworkError error,
- QByteArray data,
- QList<QNetworkReply::RawHeaderPair> headers
-) {
- auto requestor = qobject_cast<AuthRequest *>(QObject::sender());
+void ProfileSetupDialog::checkFinished(QNetworkReply::NetworkError error,
+ QByteArray profileData,
+ [[maybe_unused]] QList<QNetworkReply::RawHeaderPair> headers)
+{
+ auto requestor = qobject_cast<AuthRequest*>(QObject::sender());
requestor->deleteLater();
- if(error == QNetworkReply::NoError) {
- auto doc = QJsonDocument::fromJson(data);
+ if (error == QNetworkReply::NoError) {
+ auto doc = QJsonDocument::fromJson(profileData);
auto root = doc.object();
auto statusValue = root.value("status").toString("INVALID");
- if(statusValue == "AVAILABLE") {
+ if (statusValue == "AVAILABLE") {
setNameStatus(NameStatus::Available);
- }
- else if (statusValue == "DUPLICATE") {
+ } else if (statusValue == "DUPLICATE") {
setNameStatus(NameStatus::Exists, tr("Minecraft profile with name %1 already exists.").arg(currentCheck));
- }
- else if (statusValue == "NOT_ALLOWED") {
+ } else if (statusValue == "NOT_ALLOWED") {
setNameStatus(NameStatus::Exists, tr("The name %1 is not allowed.").arg(currentCheck));
- }
- else {
+ } else {
setNameStatus(NameStatus::Error, tr("Unhandled profile name status: %1").arg(statusValue));
}
- }
- else {
+ } else {
setNameStatus(NameStatus::Error, tr("Failed to check name availability."));
}
isChecking = false;
}
-void ProfileSetupDialog::setupProfile(const QString &profileName) {
- if(isWorking) {
+void ProfileSetupDialog::setupProfile(const QString& profileName)
+{
+ if (isWorking) {
return;
}
@@ -210,11 +204,11 @@ void ProfileSetupDialog::setupProfile(const QString &profileName) {
request.setRawHeader("Authorization", QString("Bearer %1").arg(token).toUtf8());
QString payloadTemplate("{\"profileName\":\"%1\"}");
- auto data = payloadTemplate.arg(profileName).toUtf8();
+ auto profileData = payloadTemplate.arg(profileName).toUtf8();
- AuthRequest *requestor = new AuthRequest(this);
+ AuthRequest* requestor = new AuthRequest(this);
connect(requestor, &AuthRequest::finished, this, &ProfileSetupDialog::setupProfileFinished);
- requestor->post(request, data);
+ requestor->post(request, profileData);
isWorking = true;
auto button = ui->buttonBox->button(QDialogButtonBox::Cancel);
@@ -223,8 +217,9 @@ void ProfileSetupDialog::setupProfile(const QString &profileName) {
namespace {
-struct MojangError{
- static MojangError fromJSON(QByteArray data) {
+struct MojangError {
+ static MojangError fromJSON(QByteArray data)
+ {
MojangError out;
out.error = QString::fromUtf8(data);
auto doc = QJsonDocument::fromJson(data, &out.parseError);
@@ -247,26 +242,24 @@ struct MojangError{
QString errorMessage;
};
-}
+} // namespace
-void ProfileSetupDialog::setupProfileFinished(
- QNetworkReply::NetworkError error,
- QByteArray data,
- QList<QNetworkReply::RawHeaderPair> headers
-) {
- auto requestor = qobject_cast<AuthRequest *>(QObject::sender());
+void ProfileSetupDialog::setupProfileFinished(QNetworkReply::NetworkError error,
+ QByteArray errorData,
+ [[maybe_unused]] QList<QNetworkReply::RawHeaderPair> headers)
+{
+ auto requestor = qobject_cast<AuthRequest*>(QObject::sender());
requestor->deleteLater();
isWorking = false;
- if(error == QNetworkReply::NoError) {
+ if (error == QNetworkReply::NoError) {
/*
* data contains the profile in the response
* ... we could parse it and update the account, but let's just return back to the normal login flow instead...
*/
accept();
- }
- else {
- auto parsedError = MojangError::fromJSON(data);
+ } else {
+ auto parsedError = MojangError::fromJSON(errorData);
ui->errorLabel->setVisible(true);
ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + parsedError.errorMessage);
qDebug() << parsedError.rawError;
diff --git a/launcher/ui/dialogs/ProfileSetupDialog.h b/launcher/ui/dialogs/ProfileSetupDialog.h
index 6f413ebd..09f8124e 100644
--- a/launcher/ui/dialogs/ProfileSetupDialog.h
+++ b/launcher/ui/dialogs/ProfileSetupDialog.h
@@ -17,65 +17,48 @@
#include <QDialog>
#include <QIcon>
-#include <QTimer>
#include <QNetworkReply>
+#include <QTimer>
-#include <memory>
#include <minecraft/auth/MinecraftAccount.h>
+#include <memory>
-namespace Ui
-{
+namespace Ui {
class ProfileSetupDialog;
}
-class ProfileSetupDialog : public QDialog
-{
+class ProfileSetupDialog : public QDialog {
Q_OBJECT
-public:
-
- explicit ProfileSetupDialog(MinecraftAccountPtr accountToSetup, QWidget *parent = 0);
+ public:
+ explicit ProfileSetupDialog(MinecraftAccountPtr accountToSetup, QWidget* parent = 0);
~ProfileSetupDialog();
- enum class NameStatus
- {
- NotSet,
- Pending,
- Available,
- Exists,
- Error
- } nameStatus = NameStatus::NotSet;
+ enum class NameStatus { NotSet, Pending, Available, Exists, Error } nameStatus = NameStatus::NotSet;
-private slots:
+ private slots:
void on_buttonBox_accepted();
void on_buttonBox_rejected();
- void nameEdited(const QString &name);
- void checkFinished(
- QNetworkReply::NetworkError error,
- QByteArray data,
- QList<QNetworkReply::RawHeaderPair> headers
- );
+ void nameEdited(const QString& name);
+ void checkFinished(QNetworkReply::NetworkError error, QByteArray data, QList<QNetworkReply::RawHeaderPair> headers);
void startCheck();
- void setupProfileFinished(
- QNetworkReply::NetworkError error,
- QByteArray data,
- QList<QNetworkReply::RawHeaderPair> headers
- );
-protected:
- void scheduleCheck(const QString &name);
- void checkName(const QString &name);
+ void setupProfileFinished(QNetworkReply::NetworkError error, QByteArray data, QList<QNetworkReply::RawHeaderPair> headers);
+
+ protected:
+ void scheduleCheck(const QString& name);
+ void checkName(const QString& name);
void setNameStatus(NameStatus status, QString errorString);
- void setupProfile(const QString & profileName);
+ void setupProfile(const QString& profileName);
-private:
+ private:
MinecraftAccountPtr m_accountToSetup;
- Ui::ProfileSetupDialog *ui;
+ Ui::ProfileSetupDialog* ui;
QIcon goodIcon;
QIcon yellowIcon;
QIcon badIcon;
- QAction * validityAction = nullptr;
+ QAction* validityAction = nullptr;
QString queuedCheck;
@@ -85,4 +68,3 @@ private:
QTimer checkStartTimer;
};
-
diff --git a/launcher/ui/dialogs/ProgressDialog.cpp b/launcher/ui/dialogs/ProgressDialog.cpp
index 4243e291..0ca3a1bd 100644
--- a/launcher/ui/dialogs/ProgressDialog.cpp
+++ b/launcher/ui/dialogs/ProgressDialog.cpp
@@ -37,18 +37,17 @@
#include <QPoint>
#include "ui_ProgressDialog.h"
-#include <limits>
#include <QDebug>
#include <QKeyEvent>
+#include <limits>
#include "tasks/Task.h"
#include "ui/widgets/SubTaskProgressBar.h"
-
// map a value in a numeric range of an arbitrary type to between 0 and INT_MAX
// for getting the best precision out of the qt progress bar
-template<typename T, std::enable_if_t<std::is_arithmetic_v<T>, bool> = true>
+template <typename T, std::enable_if_t<std::is_arithmetic_v<T>, bool> = true>
std::tuple<int, int> map_int_zero_max(T current, T range_max, T range_min)
{
int int_max = std::numeric_limits<int>::max();
@@ -57,10 +56,9 @@ std::tuple<int, int> map_int_zero_max(T current, T range_max, T range_min)
double percentage = static_cast<double>(current - range_min) / static_cast<double>(type_range);
int mapped_current = percentage * int_max;
- return {mapped_current, int_max};
+ return { mapped_current, int_max };
}
-
ProgressDialog::ProgressDialog(QWidget* parent) : QDialog(parent), ui(new Ui::ProgressDialog)
{
ui->setupUi(this);
@@ -87,7 +85,7 @@ void ProgressDialog::on_skipButton_clicked(bool checked)
{
Q_UNUSED(checked);
if (ui->skipButton->isEnabled()) // prevent other triggers from aborting
- task->abort();
+ m_task->abort();
}
ProgressDialog::~ProgressDialog()
@@ -96,7 +94,7 @@ ProgressDialog::~ProgressDialog()
}
void ProgressDialog::updateSize(bool recenterParent)
-{
+{
QSize lastSize = this->size();
QPoint lastPos = this->pos();
int minHeight = ui->globalStatusDetailsLabel->minimumSize().height() + (ui->verticalLayout->spacing() * 2);
@@ -118,28 +116,25 @@ void ProgressDialog::updateSize(bool recenterParent)
auto newX = std::max(0, parent->x() + ((parent->width() - newSize.width()) / 2));
auto newY = std::max(0, parent->y() + ((parent->height() - newSize.height()) / 2));
this->move(newX, newY);
- }
- else if (lastSize != newSize)
- {
+ } else if (lastSize != newSize) {
// center on old position after resize
- QSize sizeDiff = lastSize - newSize; // last size was smaller, the results should be negative
+ QSize sizeDiff = lastSize - newSize; // last size was smaller, the results should be negative
auto newX = std::max(0, lastPos.x() + (sizeDiff.width() / 2));
auto newY = std::max(0, lastPos.y() + (sizeDiff.height() / 2));
this->move(newX, newY);
}
-
}
int ProgressDialog::execWithTask(Task* task)
{
- this->task = task;
+ this->m_task = task;
if (!task) {
qDebug() << "Programmer error: Progress dialog created with null task.";
return QDialog::DialogCode::Accepted;
}
- QDialog::DialogCode result {};
+ QDialog::DialogCode result{};
if (handleImmediateResult(result)) {
return result;
}
@@ -184,8 +179,8 @@ int ProgressDialog::execWithTask(std::unique_ptr<Task>& task)
bool ProgressDialog::handleImmediateResult(QDialog::DialogCode& result)
{
- if (task->isFinished()) {
- if (task->wasSuccessful()) {
+ if (m_task->isFinished()) {
+ if (m_task->wasSuccessful()) {
result = QDialog::Accepted;
} else {
result = QDialog::Rejected;
@@ -197,12 +192,12 @@ bool ProgressDialog::handleImmediateResult(QDialog::DialogCode& result)
Task* ProgressDialog::getTask()
{
- return task;
+ return m_task;
}
void ProgressDialog::onTaskStarted() {}
-void ProgressDialog::onTaskFailed(QString failure)
+void ProgressDialog::onTaskFailed([[maybe_unused]] QString failure)
{
reject();
hide();
@@ -214,11 +209,11 @@ void ProgressDialog::onTaskSucceeded()
hide();
}
-void ProgressDialog::changeStatus(const QString& status)
+void ProgressDialog::changeStatus([[maybe_unused]] const QString& status)
{
- ui->globalStatusLabel->setText(task->getStatus());
+ ui->globalStatusLabel->setText(m_task->getStatus());
ui->globalStatusLabel->adjustSize();
- ui->globalStatusDetailsLabel->setText(task->getDetails());
+ ui->globalStatusDetailsLabel->setText(m_task->getDetails());
ui->globalStatusDetailsLabel->adjustSize();
updateSize();
@@ -234,16 +229,15 @@ void ProgressDialog::addTaskProgress(TaskStepProgress const& progress)
void ProgressDialog::changeStepProgress(TaskStepProgress const& task_progress)
{
m_is_multi_step = true;
- if(ui->taskProgressScrollArea->isHidden()) {
+ if (ui->taskProgressScrollArea->isHidden()) {
ui->taskProgressScrollArea->setHidden(false);
updateSize();
}
-
+
if (!taskProgress.contains(task_progress.uid))
addTaskProgress(task_progress);
auto task_bar = taskProgress.value(task_progress.uid);
-
auto const [mapped_current, mapped_total] = map_int_zero_max<qint64>(task_progress.current, task_progress.total, 0);
if (task_progress.total <= 0) {
task_bar->setRange(0, 0);
@@ -258,14 +252,12 @@ void ProgressDialog::changeStepProgress(TaskStepProgress const& task_progress)
if (task_progress.isDone()) {
task_bar->setVisible(false);
}
-
}
void ProgressDialog::changeProgress(qint64 current, qint64 total)
{
ui->globalProgressBar->setMaximum(total);
ui->globalProgressBar->setValue(current);
-
}
void ProgressDialog::keyPressEvent(QKeyEvent* e)
@@ -287,7 +279,7 @@ void ProgressDialog::keyPressEvent(QKeyEvent* e)
void ProgressDialog::closeEvent(QCloseEvent* e)
{
- if (task && task->isRunning()) {
+ if (m_task && m_task->isRunning()) {
e->ignore();
} else {
QDialog::closeEvent(e);
diff --git a/launcher/ui/dialogs/ProgressDialog.h b/launcher/ui/dialogs/ProgressDialog.h
index f062be08..15eadf4e 100644
--- a/launcher/ui/dialogs/ProgressDialog.h
+++ b/launcher/ui/dialogs/ProgressDialog.h
@@ -33,13 +33,12 @@
* limitations under the License.
*/
-
#pragma once
#include <QDialog>
-#include <memory>
#include <QHash>
#include <QUuid>
+#include <memory>
#include "QObjectPtr.h"
#include "tasks/Task.h"
@@ -49,60 +48,52 @@
class Task;
class SequentialTask;
-namespace Ui
-{
+namespace Ui {
class ProgressDialog;
}
-class ProgressDialog : public QDialog
-{
+class ProgressDialog : public QDialog {
Q_OBJECT
-public:
- explicit ProgressDialog(QWidget *parent = 0);
+ public:
+ explicit ProgressDialog(QWidget* parent = 0);
~ProgressDialog();
void updateSize(bool recenterParent = false);
int execWithTask(Task* task);
- int execWithTask(std::unique_ptr<Task> &&task);
- int execWithTask(std::unique_ptr<Task> &task);
+ int execWithTask(std::unique_ptr<Task>&& task);
+ int execWithTask(std::unique_ptr<Task>& task);
void setSkipButton(bool present, QString label = QString());
- Task *getTask();
+ Task* getTask();
-public
-slots:
+ public slots:
void onTaskStarted();
void onTaskFailed(QString failure);
void onTaskSucceeded();
- void changeStatus(const QString &status);
+ void changeStatus(const QString& status);
void changeProgress(qint64 current, qint64 total);
void changeStepProgress(TaskStepProgress const& task_progress);
-
-private
-slots:
+ private slots:
void on_skipButton_clicked(bool checked);
-protected:
- virtual void keyPressEvent(QKeyEvent *e);
- virtual void closeEvent(QCloseEvent *e);
+ protected:
+ virtual void keyPressEvent(QKeyEvent* e);
+ virtual void closeEvent(QCloseEvent* e);
-private:
- bool handleImmediateResult(QDialog::DialogCode &result);
+ private:
+ bool handleImmediateResult(QDialog::DialogCode& result);
void addTaskProgress(TaskStepProgress const& progress);
-private:
- Ui::ProgressDialog *ui;
+ private:
+ Ui::ProgressDialog* ui;
- Task *task;
+ Task* m_task;
bool m_is_multi_step = false;
QHash<QUuid, SubTaskProgressBar*> taskProgress;
-
-
};
-
diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp
index c243ce28..4b82c0c5 100644
--- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp
+++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp
@@ -300,7 +300,7 @@ GetModDependenciesTask::Ptr ModDownloadDialog::getModDependenciesTask()
return makeShared<GetModDependenciesTask>(this, m_instance, model, selectedVers);
}
return nullptr;
-};
+}
ResourcePackDownloadDialog::ResourcePackDownloadDialog(QWidget* parent,
const std::shared_ptr<ResourcePackFolderModel>& resource_packs,
diff --git a/launcher/ui/dialogs/ReviewMessageBox.cpp b/launcher/ui/dialogs/ReviewMessageBox.cpp
index 7b33765f..78c2542f 100644
--- a/launcher/ui/dialogs/ReviewMessageBox.cpp
+++ b/launcher/ui/dialogs/ReviewMessageBox.cpp
@@ -5,7 +5,7 @@
#include <QPushButton>
-ReviewMessageBox::ReviewMessageBox(QWidget* parent, QString const& title, QString const& icon)
+ReviewMessageBox::ReviewMessageBox(QWidget* parent, [[maybe_unused]] QString const& title, [[maybe_unused]] QString const& icon)
: QDialog(parent), ui(new Ui::ReviewMessageBox)
{
ui->setupUi(this);
diff --git a/launcher/ui/dialogs/ScrollMessageBox.cpp b/launcher/ui/dialogs/ScrollMessageBox.cpp
index afdc4bae..c04d8784 100644
--- a/launcher/ui/dialogs/ScrollMessageBox.cpp
+++ b/launcher/ui/dialogs/ScrollMessageBox.cpp
@@ -1,15 +1,16 @@
#include "ScrollMessageBox.h"
#include "ui_ScrollMessageBox.h"
-
-ScrollMessageBox::ScrollMessageBox(QWidget *parent, const QString &title, const QString &text, const QString &body) :
- QDialog(parent), ui(new Ui::ScrollMessageBox) {
+ScrollMessageBox::ScrollMessageBox(QWidget* parent, const QString& title, const QString& text, const QString& body)
+ : QDialog(parent), ui(new Ui::ScrollMessageBox)
+{
ui->setupUi(this);
this->setWindowTitle(title);
ui->label->setText(text);
ui->textBrowser->setText(body);
}
-ScrollMessageBox::~ScrollMessageBox() {
+ScrollMessageBox::~ScrollMessageBox()
+{
delete ui;
}
diff --git a/launcher/ui/dialogs/ScrollMessageBox.h b/launcher/ui/dialogs/ScrollMessageBox.h
index 84aa253a..8fd6769c 100644
--- a/launcher/ui/dialogs/ScrollMessageBox.h
+++ b/launcher/ui/dialogs/ScrollMessageBox.h
@@ -2,19 +2,20 @@
#include <QDialog>
-
QT_BEGIN_NAMESPACE
-namespace Ui { class ScrollMessageBox; }
+namespace Ui {
+class ScrollMessageBox;
+}
QT_END_NAMESPACE
class ScrollMessageBox : public QDialog {
-Q_OBJECT
+ Q_OBJECT
-public:
- ScrollMessageBox(QWidget *parent, const QString &title, const QString &text, const QString &body);
+ public:
+ ScrollMessageBox(QWidget* parent, const QString& title, const QString& text, const QString& body);
~ScrollMessageBox() override;
-private:
- Ui::ScrollMessageBox *ui;
+ private:
+ Ui::ScrollMessageBox* ui;
};
diff --git a/launcher/ui/dialogs/SkinUploadDialog.cpp b/launcher/ui/dialogs/SkinUploadDialog.cpp
index 8180ac1f..5b3ebfa2 100644
--- a/launcher/ui/dialogs/SkinUploadDialog.cpp
+++ b/launcher/ui/dialogs/SkinUploadDialog.cpp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
@@ -33,20 +33,20 @@
* limitations under the License.
*/
-#include <QFileInfo>
#include <QFileDialog>
+#include <QFileInfo>
#include <QPainter>
#include <FileSystem.h>
-#include <minecraft/services/SkinUpload.h>
#include <minecraft/services/CapeChange.h>
+#include <minecraft/services/SkinUpload.h>
#include <tasks/SequentialTask.h>
+#include "CustomMessageBox.h"
+#include "ProgressDialog.h"
#include "SkinUploadDialog.h"
#include "ui_SkinUploadDialog.h"
-#include "ProgressDialog.h"
-#include "CustomMessageBox.h"
void SkinUploadDialog::on_buttonBox_rejected()
{
@@ -64,71 +64,51 @@ void SkinUploadDialog::on_buttonBox_accepted()
QRegularExpression urlPrefixMatcher(QRegularExpression::anchoredPattern("^([a-z]+)://.+$"));
bool isLocalFile = false;
// it has an URL prefix -> it is an URL
- if(urlPrefixMatcher.match(input).hasMatch())
- {
+ if (urlPrefixMatcher.match(input).hasMatch()) {
QUrl fileURL = input;
- if(fileURL.isValid())
- {
+ if (fileURL.isValid()) {
// local?
- if(fileURL.isLocalFile())
- {
+ if (fileURL.isLocalFile()) {
isLocalFile = true;
fileName = fileURL.toLocalFile();
- }
- else
- {
- CustomMessageBox::selectable(
- this,
- tr("Skin Upload"),
- tr("Using remote URLs for setting skins is not implemented yet."),
- QMessageBox::Warning
- )->exec();
+ } else {
+ CustomMessageBox::selectable(this, tr("Skin Upload"), tr("Using remote URLs for setting skins is not implemented yet."),
+ QMessageBox::Warning)
+ ->exec();
close();
return;
}
- }
- else
- {
- CustomMessageBox::selectable(
- this,
- tr("Skin Upload"),
- tr("You cannot use an invalid URL for uploading skins."),
- QMessageBox::Warning
- )->exec();
+ } else {
+ CustomMessageBox::selectable(this, tr("Skin Upload"), tr("You cannot use an invalid URL for uploading skins."),
+ QMessageBox::Warning)
+ ->exec();
close();
return;
}
- }
- else
- {
+ } else {
// just assume it's a path then
isLocalFile = true;
fileName = ui->skinPathTextBox->text();
}
- if (isLocalFile && !QFile::exists(fileName))
- {
+ if (isLocalFile && !QFile::exists(fileName)) {
CustomMessageBox::selectable(this, tr("Skin Upload"), tr("Skin file does not exist!"), QMessageBox::Warning)->exec();
close();
return;
}
SkinUpload::Model model = SkinUpload::STEVE;
- if (ui->steveBtn->isChecked())
- {
+ if (ui->steveBtn->isChecked()) {
model = SkinUpload::STEVE;
- }
- else if (ui->alexBtn->isChecked())
- {
+ } else if (ui->alexBtn->isChecked()) {
model = SkinUpload::ALEX;
}
skinUpload.addTask(shared_qobject_ptr<SkinUpload>(new SkinUpload(this, m_acct->accessToken(), FS::read(fileName), model)));
}
auto selectedCape = ui->capeCombo->currentData().toString();
- if(selectedCape != m_acct->accountData()->minecraftProfile.currentCape) {
+ if (selectedCape != m_acct->accountData()->minecraftProfile.currentCape) {
skinUpload.addTask(shared_qobject_ptr<CapeChange>(new CapeChange(this, m_acct->accessToken(), selectedCape)));
}
- if (prog.execWithTask(&skinUpload) != QDialog::Accepted)
- {
+ if (prog.execWithTask(&skinUpload) != QDialog::Accepted) {
CustomMessageBox::selectable(this, tr("Skin Upload"), tr("Failed to upload skin!"), QMessageBox::Warning)->exec();
close();
return;
@@ -141,45 +121,43 @@ void SkinUploadDialog::on_skinBrowseBtn_clicked()
{
auto filter = QMimeDatabase().mimeTypeForName("image/png").filterString();
QString raw_path = QFileDialog::getOpenFileName(this, tr("Select Skin Texture"), QString(), filter);
- if (raw_path.isEmpty() || !QFileInfo::exists(raw_path))
- {
+ if (raw_path.isEmpty() || !QFileInfo::exists(raw_path)) {
return;
}
QString cooked_path = FS::NormalizePath(raw_path);
ui->skinPathTextBox->setText(cooked_path);
}
-SkinUploadDialog::SkinUploadDialog(MinecraftAccountPtr acct, QWidget *parent)
- :QDialog(parent), m_acct(acct), ui(new Ui::SkinUploadDialog)
+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();
+ auto& accountData = *acct->accountData();
int index = 0;
ui->capeCombo->addItem(tr("No Cape"), QVariant());
- auto currentCape = data.minecraftProfile.currentCape;
- if(currentCape.isEmpty()) {
+ auto currentCape = accountData.minecraftProfile.currentCape;
+ if (currentCape.isEmpty()) {
ui->capeCombo->setCurrentIndex(index);
}
- for(auto & cape: data.minecraftProfile.capes) {
+ for (auto& cape : accountData.minecraftProfile.capes) {
index++;
- if(cape.data.size()) {
+ if (cape.data.size()) {
QPixmap capeImage;
- if(capeImage.loadFromData(cape.data, "PNG")) {
+ 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) {
+ if (currentCape == cape.id) {
ui->capeCombo->setCurrentIndex(index);
}
continue;
}
}
ui->capeCombo->addItem(cape.alias, cape.id);
- if(currentCape == cape.id) {
+ if (currentCape == cape.id) {
ui->capeCombo->setCurrentIndex(index);
}
}
diff --git a/launcher/ui/dialogs/SkinUploadDialog.h b/launcher/ui/dialogs/SkinUploadDialog.h
index 84d17dc6..81d6140c 100644
--- a/launcher/ui/dialogs/SkinUploadDialog.h
+++ b/launcher/ui/dialogs/SkinUploadDialog.h
@@ -1,29 +1,28 @@
#pragma once
-#include <QDialog>
#include <minecraft/auth/MinecraftAccount.h>
+#include <QDialog>
-namespace Ui
-{
- class SkinUploadDialog;
+namespace Ui {
+class SkinUploadDialog;
}
class SkinUploadDialog : public QDialog {
Q_OBJECT
-public:
- explicit SkinUploadDialog(MinecraftAccountPtr acct, QWidget *parent = 0);
- virtual ~SkinUploadDialog() {};
+ public:
+ explicit SkinUploadDialog(MinecraftAccountPtr acct, QWidget* parent = 0);
+ virtual ~SkinUploadDialog(){};
-public slots:
+ public slots:
void on_buttonBox_accepted();
void on_buttonBox_rejected();
void on_skinBrowseBtn_clicked();
-protected:
+ protected:
MinecraftAccountPtr m_acct;
-private:
- Ui::SkinUploadDialog *ui;
+ private:
+ Ui::SkinUploadDialog* ui;
};
diff --git a/launcher/ui/dialogs/VersionSelectDialog.cpp b/launcher/ui/dialogs/VersionSelectDialog.cpp
index 9fa3c90f..c61d1057 100644
--- a/launcher/ui/dialogs/VersionSelectDialog.cpp
+++ b/launcher/ui/dialogs/VersionSelectDialog.cpp
@@ -35,20 +35,19 @@
#include "VersionSelectDialog.h"
+#include <QDebug>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QDialogButtonBox>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QVBoxLayout>
-#include <QDebug>
#include "ui/widgets/VersionSelectWidget.h"
#include "BaseVersion.h"
#include "BaseVersionList.h"
-VersionSelectDialog::VersionSelectDialog(BaseVersionList *vlist, QString title, QWidget *parent, bool cancelable)
- : QDialog(parent)
+VersionSelectDialog::VersionSelectDialog(BaseVersionList* vlist, QString title, QWidget* parent, bool cancelable) : QDialog(parent)
{
setObjectName(QStringLiteral("VersionSelectDialog"));
resize(400, 347);
@@ -68,7 +67,7 @@ VersionSelectDialog::VersionSelectDialog(BaseVersionList *vlist, QString title,
m_buttonBox = new QDialogButtonBox(this);
m_buttonBox->setObjectName(QStringLiteral("buttonBox"));
m_buttonBox->setOrientation(Qt::Horizontal);
- m_buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
+ m_buttonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok);
m_horizontalLayout->addWidget(m_buttonBox);
m_verticalLayout->addLayout(m_horizontalLayout);
@@ -85,8 +84,7 @@ VersionSelectDialog::VersionSelectDialog(BaseVersionList *vlist, QString title,
m_vlist = vlist;
- if (!cancelable)
- {
+ if (!cancelable) {
m_buttonBox->button(QDialogButtonBox::Cancel)->setEnabled(false);
}
}
@@ -125,8 +123,7 @@ int VersionSelectDialog::exec()
QDialog::open();
m_versionWidget->initialize(m_vlist);
m_versionWidget->selectSearch();
- if(resizeOnColumn != -1)
- {
+ if (resizeOnColumn != -1) {
m_versionWidget->setResizeOn(resizeOnColumn);
}
return QDialog::exec();
@@ -152,7 +149,8 @@ void VersionSelectDialog::setExactFilter(BaseVersionList::ModelRoles role, QStri
m_versionWidget->setExactFilter(role, filter);
}
-void VersionSelectDialog::setExactIfPresentFilter(BaseVersionList::ModelRoles role, QString filter) {
+void VersionSelectDialog::setExactIfPresentFilter(BaseVersionList::ModelRoles role, QString filter)
+{
m_versionWidget->setExactIfPresentFilter(role, filter);
}
diff --git a/launcher/ui/dialogs/VersionSelectDialog.h b/launcher/ui/dialogs/VersionSelectDialog.h
index c20a9ed5..0ccd45e7 100644
--- a/launcher/ui/dialogs/VersionSelectDialog.h
+++ b/launcher/ui/dialogs/VersionSelectDialog.h
@@ -18,7 +18,6 @@
#include <QDialog>
#include <QSortFilterProxyModel>
-
#include "BaseVersionList.h"
class QVBoxLayout;
@@ -27,26 +26,24 @@ class QDialogButtonBox;
class VersionSelectWidget;
class QPushButton;
-namespace Ui
-{
+namespace Ui {
class VersionSelectDialog;
}
class VersionProxyModel;
-class VersionSelectDialog : public QDialog
-{
+class VersionSelectDialog : public QDialog {
Q_OBJECT
-public:
- explicit VersionSelectDialog(BaseVersionList *vlist, QString title, QWidget *parent = 0, bool cancelable = true);
- virtual ~VersionSelectDialog() {};
+ public:
+ explicit VersionSelectDialog(BaseVersionList* vlist, QString title, QWidget* parent = 0, bool cancelable = true);
+ virtual ~VersionSelectDialog(){};
int exec() override;
BaseVersion::Ptr selectedVersion() const;
- void setCurrentVersion(const QString & version);
+ void setCurrentVersion(const QString& version);
void setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter);
void setExactFilter(BaseVersionList::ModelRoles role, QString filter);
void setExactIfPresentFilter(BaseVersionList::ModelRoles role, QString filter);
@@ -54,26 +51,26 @@ public:
void setEmptyErrorString(QString emptyErrorString);
void setResizeOn(int column);
-private slots:
+ private slots:
void on_refreshButton_clicked();
-private:
+ private:
void retranslate();
void selectRecommended();
-private:
+ private:
QString m_currentVersion;
- VersionSelectWidget *m_versionWidget = nullptr;
- QVBoxLayout *m_verticalLayout = nullptr;
- QHBoxLayout *m_horizontalLayout = nullptr;
- QPushButton *m_refreshButton = nullptr;
- QDialogButtonBox *m_buttonBox = nullptr;
+ VersionSelectWidget* m_versionWidget = nullptr;
+ QVBoxLayout* m_verticalLayout = nullptr;
+ QHBoxLayout* m_horizontalLayout = nullptr;
+ QPushButton* m_refreshButton = nullptr;
+ QDialogButtonBox* m_buttonBox = nullptr;
- BaseVersionList *m_vlist = nullptr;
+ BaseVersionList* m_vlist = nullptr;
- VersionProxyModel *m_proxyModel = nullptr;
+ VersionProxyModel* m_proxyModel = nullptr;
int resizeOnColumn = -1;
- Task * loadTask = nullptr;
+ Task* loadTask = nullptr;
};