@ -39,37 +39,30 @@
|
||||
#include "APIPage.h"
|
||||
#include "ui_APIPage.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QRegularExpression>
|
||||
#include <QStandardPaths>
|
||||
#include <QTabBar>
|
||||
#include <QValidator>
|
||||
#include <QVariant>
|
||||
|
||||
#include "Application.h"
|
||||
#include "BuildConfig.h"
|
||||
#include "net/PasteUpload.h"
|
||||
#include "settings/SettingsObject.h"
|
||||
#include "tools/BaseProfiler.h"
|
||||
#include "Application.h"
|
||||
#include "net/PasteUpload.h"
|
||||
#include "BuildConfig.h"
|
||||
|
||||
APIPage::APIPage(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::APIPage)
|
||||
APIPage::APIPage(QWidget* parent) : QWidget(parent), ui(new Ui::APIPage)
|
||||
{
|
||||
// This is here so you can reorder the entries in the combobox without messing stuff up
|
||||
int comboBoxEntries[] = {
|
||||
PasteUpload::PasteType::Mclogs,
|
||||
PasteUpload::PasteType::NullPointer,
|
||||
PasteUpload::PasteType::PasteGG,
|
||||
PasteUpload::PasteType::Hastebin
|
||||
};
|
||||
int comboBoxEntries[] = { PasteUpload::PasteType::Mclogs, PasteUpload::PasteType::NullPointer, PasteUpload::PasteType::PasteGG,
|
||||
PasteUpload::PasteType::Hastebin };
|
||||
|
||||
static QRegularExpression validUrlRegExp("https?://.+");
|
||||
static QRegularExpression validMSAClientID(QRegularExpression::anchoredPattern(
|
||||
"[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}"));
|
||||
static QRegularExpression validFlameKey(QRegularExpression::anchoredPattern(
|
||||
"\\$2[ayb]\\$.{56}"));
|
||||
static QRegularExpression validMSAClientID(
|
||||
QRegularExpression::anchoredPattern("[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}"));
|
||||
static QRegularExpression validFlameKey(QRegularExpression::anchoredPattern("\\$2[ayb]\\$.{56}"));
|
||||
|
||||
ui->setupUi(this);
|
||||
|
||||
@ -77,7 +70,7 @@ APIPage::APIPage(QWidget *parent) :
|
||||
ui->pasteTypeComboBox->addItem(PasteUpload::PasteTypes.at(pasteType).name, pasteType);
|
||||
}
|
||||
|
||||
void (QComboBox::*currentIndexChangedSignal)(int) (&QComboBox::currentIndexChanged);
|
||||
void (QComboBox::*currentIndexChangedSignal)(int)(&QComboBox::currentIndexChanged);
|
||||
connect(ui->pasteTypeComboBox, currentIndexChangedSignal, this, &APIPage::updateBaseURLPlaceholder);
|
||||
// This function needs to be called even when the ComboBox's index is still in its default state.
|
||||
updateBaseURLPlaceholder(ui->pasteTypeComboBox->currentIndex());
|
||||
@ -110,12 +103,9 @@ void APIPage::resetBaseURLNote()
|
||||
|
||||
void APIPage::updateBaseURLNote(int index)
|
||||
{
|
||||
if (baseURLPasteType == index)
|
||||
{
|
||||
if (baseURLPasteType == index) {
|
||||
ui->baseURLNote->hide();
|
||||
}
|
||||
else if (!ui->baseURLEntry->text().isEmpty())
|
||||
{
|
||||
} else if (!ui->baseURLEntry->text().isEmpty()) {
|
||||
ui->baseURLNote->show();
|
||||
}
|
||||
}
|
||||
@ -136,8 +126,7 @@ void APIPage::loadSettings()
|
||||
|
||||
ui->baseURLEntry->setText(pastebinURL);
|
||||
int pasteTypeIndex = ui->pasteTypeComboBox->findData(pasteType);
|
||||
if (pasteTypeIndex == -1)
|
||||
{
|
||||
if (pasteTypeIndex == -1) {
|
||||
pasteTypeIndex = ui->pasteTypeComboBox->findData(PasteUpload::PasteType::Mclogs);
|
||||
ui->baseURLEntry->clear();
|
||||
}
|
||||
@ -167,15 +156,13 @@ void APIPage::applySettings()
|
||||
s->set("MSAClientIDOverride", msaClientID);
|
||||
QUrl metaURL(ui->metaURL->text());
|
||||
// Add required trailing slash
|
||||
if (!metaURL.isEmpty() && !metaURL.path().endsWith('/'))
|
||||
{
|
||||
if (!metaURL.isEmpty() && !metaURL.path().endsWith('/')) {
|
||||
QString path = metaURL.path();
|
||||
path.append('/');
|
||||
metaURL.setPath(path);
|
||||
}
|
||||
// Don't allow HTTP, since meta is basically RCE with all the jar files.
|
||||
if(!metaURL.isEmpty() && metaURL.scheme() == "http")
|
||||
{
|
||||
if (!metaURL.isEmpty() && metaURL.scheme() == "http") {
|
||||
metaURL.setScheme("https");
|
||||
}
|
||||
|
||||
|
@ -39,41 +39,28 @@
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include "ui/pages/BasePage.h"
|
||||
#include <Application.h>
|
||||
#include "ui/pages/BasePage.h"
|
||||
|
||||
namespace Ui {
|
||||
class APIPage;
|
||||
}
|
||||
|
||||
class APIPage : public QWidget, public BasePage
|
||||
{
|
||||
class APIPage : public QWidget, public BasePage {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit APIPage(QWidget *parent = 0);
|
||||
public:
|
||||
explicit APIPage(QWidget* parent = 0);
|
||||
~APIPage();
|
||||
|
||||
QString displayName() const override
|
||||
{
|
||||
return tr("APIs");
|
||||
}
|
||||
QIcon icon() const override
|
||||
{
|
||||
return APPLICATION->getThemedIcon("worlds");
|
||||
}
|
||||
QString id() const override
|
||||
{
|
||||
return "apis";
|
||||
}
|
||||
QString helpPage() const override
|
||||
{
|
||||
return "APIs";
|
||||
}
|
||||
QString displayName() const override { return tr("APIs"); }
|
||||
QIcon icon() const override { return APPLICATION->getThemedIcon("worlds"); }
|
||||
QString id() const override { return "apis"; }
|
||||
QString helpPage() const override { return "APIs"; }
|
||||
virtual bool apply() override;
|
||||
void retranslate() override;
|
||||
|
||||
private:
|
||||
private:
|
||||
int baseURLPasteType;
|
||||
void resetBaseURLNote();
|
||||
void updateBaseURLNote(int index);
|
||||
@ -81,7 +68,6 @@ private:
|
||||
void loadSettings();
|
||||
void applySettings();
|
||||
|
||||
private:
|
||||
Ui::APIPage *ui;
|
||||
private:
|
||||
Ui::APIPage* ui;
|
||||
};
|
||||
|
||||
|
@ -44,29 +44,27 @@
|
||||
|
||||
#include "net/NetJob.h"
|
||||
|
||||
#include "ui/dialogs/ProgressDialog.h"
|
||||
#include "ui/dialogs/OfflineLoginDialog.h"
|
||||
#include "ui/dialogs/CustomMessageBox.h"
|
||||
#include "ui/dialogs/LoginDialog.h"
|
||||
#include "ui/dialogs/MSALoginDialog.h"
|
||||
#include "ui/dialogs/CustomMessageBox.h"
|
||||
#include "ui/dialogs/OfflineLoginDialog.h"
|
||||
#include "ui/dialogs/ProgressDialog.h"
|
||||
#include "ui/dialogs/SkinUploadDialog.h"
|
||||
|
||||
#include "tasks/Task.h"
|
||||
#include "minecraft/auth/AccountTask.h"
|
||||
#include "minecraft/services/SkinDelete.h"
|
||||
#include "tasks/Task.h"
|
||||
|
||||
#include "Application.h"
|
||||
|
||||
#include "BuildConfig.h"
|
||||
|
||||
AccountListPage::AccountListPage(QWidget *parent)
|
||||
: QMainWindow(parent), ui(new Ui::AccountListPage)
|
||||
AccountListPage::AccountListPage(QWidget* parent) : QMainWindow(parent), ui(new Ui::AccountListPage)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->listView->setEmptyString(tr(
|
||||
"Welcome!\n"
|
||||
"If you're new here, you can click the \"Add\" button to add your Mojang or Minecraft account."
|
||||
));
|
||||
ui->listView->setEmptyString(
|
||||
tr("Welcome!\n"
|
||||
"If you're new here, you can click the \"Add\" button to add your Mojang or Minecraft account."));
|
||||
ui->listView->setEmptyMode(VersionListView::String);
|
||||
ui->listView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
|
||||
@ -82,7 +80,7 @@ AccountListPage::AccountListPage(QWidget *parent)
|
||||
|
||||
// Expand the account column
|
||||
|
||||
QItemSelectionModel *selectionModel = ui->listView->selectionModel();
|
||||
QItemSelectionModel* selectionModel = ui->listView->selectionModel();
|
||||
|
||||
connect(selectionModel, &QItemSelectionModel::selectionChanged,
|
||||
[this]([[maybe_unused]] const QItemSelection& sel, [[maybe_unused]] const QItemSelection& dsel) { updateButtonStates(); });
|
||||
@ -120,21 +118,19 @@ void AccountListPage::ShowContextMenu(const QPoint& pos)
|
||||
|
||||
void AccountListPage::changeEvent(QEvent* event)
|
||||
{
|
||||
if (event->type() == QEvent::LanguageChange)
|
||||
{
|
||||
if (event->type() == QEvent::LanguageChange) {
|
||||
ui->retranslateUi(this);
|
||||
}
|
||||
QMainWindow::changeEvent(event);
|
||||
}
|
||||
|
||||
QMenu * AccountListPage::createPopupMenu()
|
||||
QMenu* AccountListPage::createPopupMenu()
|
||||
{
|
||||
QMenu* filteredMenu = QMainWindow::createPopupMenu();
|
||||
filteredMenu->removeAction(ui->toolBar->toggleViewAction() );
|
||||
filteredMenu->removeAction(ui->toolBar->toggleViewAction());
|
||||
return filteredMenu;
|
||||
}
|
||||
|
||||
|
||||
void AccountListPage::listChanged()
|
||||
{
|
||||
updateButtonStates();
|
||||
@ -142,13 +138,10 @@ void AccountListPage::listChanged()
|
||||
|
||||
void AccountListPage::on_actionAddMojang_triggered()
|
||||
{
|
||||
MinecraftAccountPtr account = LoginDialog::newAccount(
|
||||
this,
|
||||
tr("Please enter your Mojang account email and password to add your account.")
|
||||
);
|
||||
MinecraftAccountPtr account =
|
||||
LoginDialog::newAccount(this, tr("Please enter your Mojang account email and password to add your account."));
|
||||
|
||||
if (account)
|
||||
{
|
||||
if (account) {
|
||||
m_accounts->addAccount(account);
|
||||
if (m_accounts->count() == 1) {
|
||||
m_accounts->setDefaultAccount(account);
|
||||
@ -158,13 +151,10 @@ void AccountListPage::on_actionAddMojang_triggered()
|
||||
|
||||
void AccountListPage::on_actionAddMicrosoft_triggered()
|
||||
{
|
||||
MinecraftAccountPtr account = MSALoginDialog::newAccount(
|
||||
this,
|
||||
tr("Please enter your Mojang account email and password to add your account.")
|
||||
);
|
||||
MinecraftAccountPtr account =
|
||||
MSALoginDialog::newAccount(this, tr("Please enter your Mojang account email and password to add your account."));
|
||||
|
||||
if (account)
|
||||
{
|
||||
if (account) {
|
||||
m_accounts->addAccount(account);
|
||||
if (m_accounts->count() == 1) {
|
||||
m_accounts->setDefaultAccount(account);
|
||||
@ -175,25 +165,17 @@ void AccountListPage::on_actionAddMicrosoft_triggered()
|
||||
void AccountListPage::on_actionAddOffline_triggered()
|
||||
{
|
||||
if (!m_accounts->anyAccountIsValid()) {
|
||||
QMessageBox::warning(
|
||||
this,
|
||||
tr("Error"),
|
||||
tr(
|
||||
"You must add a Microsoft or Mojang account that owns Minecraft before you can add an offline account."
|
||||
"<br><br>"
|
||||
"If you have lost your account you can contact Microsoft for support."
|
||||
)
|
||||
);
|
||||
QMessageBox::warning(this, tr("Error"),
|
||||
tr("You must add a Microsoft or Mojang account that owns Minecraft before you can add an offline account."
|
||||
"<br><br>"
|
||||
"If you have lost your account you can contact Microsoft for support."));
|
||||
return;
|
||||
}
|
||||
|
||||
MinecraftAccountPtr account = OfflineLoginDialog::newAccount(
|
||||
this,
|
||||
tr("Please enter your desired username to add your offline account.")
|
||||
);
|
||||
MinecraftAccountPtr account =
|
||||
OfflineLoginDialog::newAccount(this, tr("Please enter your desired username to add your offline account."));
|
||||
|
||||
if (account)
|
||||
{
|
||||
if (account) {
|
||||
m_accounts->addAccount(account);
|
||||
if (m_accounts->count() == 1) {
|
||||
m_accounts->setDefaultAccount(account);
|
||||
@ -204,14 +186,14 @@ void AccountListPage::on_actionAddOffline_triggered()
|
||||
void AccountListPage::on_actionRemove_triggered()
|
||||
{
|
||||
QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes();
|
||||
if (selection.size() > 0)
|
||||
{
|
||||
if (selection.size() > 0) {
|
||||
QModelIndex selected = selection.first();
|
||||
m_accounts->removeAccount(selected);
|
||||
}
|
||||
}
|
||||
|
||||
void AccountListPage::on_actionRefresh_triggered() {
|
||||
void AccountListPage::on_actionRefresh_triggered()
|
||||
{
|
||||
QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes();
|
||||
if (selection.size() > 0) {
|
||||
QModelIndex selected = selection.first();
|
||||
@ -220,12 +202,10 @@ void AccountListPage::on_actionRefresh_triggered() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void AccountListPage::on_actionSetDefault_triggered()
|
||||
{
|
||||
QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes();
|
||||
if (selection.size() > 0)
|
||||
{
|
||||
if (selection.size() > 0) {
|
||||
QModelIndex selected = selection.first();
|
||||
MinecraftAccountPtr account = selected.data(AccountList::PointerRole).value<MinecraftAccountPtr>();
|
||||
m_accounts->setDefaultAccount(account);
|
||||
@ -244,8 +224,7 @@ void AccountListPage::updateButtonStates()
|
||||
bool hasSelection = !selection.empty();
|
||||
bool accountIsReady = false;
|
||||
bool accountIsOnline = false;
|
||||
if (hasSelection)
|
||||
{
|
||||
if (hasSelection) {
|
||||
QModelIndex selected = selection.first();
|
||||
MinecraftAccountPtr account = selected.data(AccountList::PointerRole).value<MinecraftAccountPtr>();
|
||||
accountIsReady = !account->isActive();
|
||||
@ -257,11 +236,10 @@ void AccountListPage::updateButtonStates()
|
||||
ui->actionDeleteSkin->setEnabled(accountIsReady && accountIsOnline);
|
||||
ui->actionRefresh->setEnabled(accountIsReady && accountIsOnline);
|
||||
|
||||
if(m_accounts->defaultAccount().get() == nullptr) {
|
||||
if (m_accounts->defaultAccount().get() == nullptr) {
|
||||
ui->actionNoDefault->setEnabled(false);
|
||||
ui->actionNoDefault->setChecked(true);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
ui->actionNoDefault->setEnabled(true);
|
||||
ui->actionNoDefault->setChecked(false);
|
||||
}
|
||||
@ -270,8 +248,7 @@ void AccountListPage::updateButtonStates()
|
||||
void AccountListPage::on_actionUploadSkin_triggered()
|
||||
{
|
||||
QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes();
|
||||
if (selection.size() > 0)
|
||||
{
|
||||
if (selection.size() > 0) {
|
||||
QModelIndex selected = selection.first();
|
||||
MinecraftAccountPtr account = selected.data(AccountList::PointerRole).value<MinecraftAccountPtr>();
|
||||
SkinUploadDialog dialog(account, this);
|
||||
|
@ -41,47 +41,35 @@
|
||||
|
||||
#include "ui/pages/BasePage.h"
|
||||
|
||||
#include "minecraft/auth/AccountList.h"
|
||||
#include "Application.h"
|
||||
#include "minecraft/auth/AccountList.h"
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
namespace Ui {
|
||||
class AccountListPage;
|
||||
}
|
||||
|
||||
class AuthenticateTask;
|
||||
|
||||
class AccountListPage : public QMainWindow, public BasePage
|
||||
{
|
||||
class AccountListPage : public QMainWindow, public BasePage {
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit AccountListPage(QWidget *parent = 0);
|
||||
public:
|
||||
explicit AccountListPage(QWidget* parent = 0);
|
||||
~AccountListPage();
|
||||
|
||||
QString displayName() const override
|
||||
{
|
||||
return tr("Accounts");
|
||||
}
|
||||
QString displayName() const override { return tr("Accounts"); }
|
||||
QIcon icon() const override
|
||||
{
|
||||
auto icon = APPLICATION->getThemedIcon("accounts");
|
||||
if(icon.isNull())
|
||||
{
|
||||
if (icon.isNull()) {
|
||||
icon = APPLICATION->getThemedIcon("noaccount");
|
||||
}
|
||||
return icon;
|
||||
}
|
||||
QString id() const override
|
||||
{
|
||||
return "accounts";
|
||||
}
|
||||
QString helpPage() const override
|
||||
{
|
||||
return "Getting-Started#adding-an-account";
|
||||
}
|
||||
QString id() const override { return "accounts"; }
|
||||
QString helpPage() const override { return "Getting-Started#adding-an-account"; }
|
||||
void retranslate() override;
|
||||
|
||||
public slots:
|
||||
public slots:
|
||||
void on_actionAddMojang_triggered();
|
||||
void on_actionAddMicrosoft_triggered();
|
||||
void on_actionAddOffline_triggered();
|
||||
@ -97,12 +85,12 @@ public slots:
|
||||
//! Updates the states of the dialog's buttons.
|
||||
void updateButtonStates();
|
||||
|
||||
protected slots:
|
||||
void ShowContextMenu(const QPoint &pos);
|
||||
protected slots:
|
||||
void ShowContextMenu(const QPoint& pos);
|
||||
|
||||
private:
|
||||
void changeEvent(QEvent * event) override;
|
||||
QMenu * createPopupMenu() override;
|
||||
private:
|
||||
void changeEvent(QEvent* event) override;
|
||||
QMenu* createPopupMenu() override;
|
||||
shared_qobject_ptr<AccountList> m_accounts;
|
||||
Ui::AccountListPage *ui;
|
||||
Ui::AccountListPage* ui;
|
||||
};
|
||||
|
@ -35,13 +35,12 @@
|
||||
*/
|
||||
|
||||
#include "CustomCommandsPage.h"
|
||||
#include <QVBoxLayout>
|
||||
#include <QTabWidget>
|
||||
#include <QTabBar>
|
||||
#include <QTabWidget>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
CustomCommandsPage::CustomCommandsPage(QWidget* parent): QWidget(parent)
|
||||
CustomCommandsPage::CustomCommandsPage(QWidget* parent) : QWidget(parent)
|
||||
{
|
||||
|
||||
auto verticalLayout = new QVBoxLayout(this);
|
||||
verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
|
||||
verticalLayout->setContentsMargins(0, 0, 0, 0);
|
||||
@ -56,9 +55,7 @@ CustomCommandsPage::CustomCommandsPage(QWidget* parent): QWidget(parent)
|
||||
loadSettings();
|
||||
}
|
||||
|
||||
CustomCommandsPage::~CustomCommandsPage()
|
||||
{
|
||||
}
|
||||
CustomCommandsPage::~CustomCommandsPage() {}
|
||||
|
||||
bool CustomCommandsPage::apply()
|
||||
{
|
||||
@ -77,13 +74,8 @@ void CustomCommandsPage::applySettings()
|
||||
void CustomCommandsPage::loadSettings()
|
||||
{
|
||||
auto s = APPLICATION->settings();
|
||||
commands->initialize(
|
||||
false,
|
||||
true,
|
||||
s->get("PreLaunchCommand").toString(),
|
||||
s->get("WrapperCommand").toString(),
|
||||
s->get("PostExitCommand").toString()
|
||||
);
|
||||
commands->initialize(false, true, s->get("PreLaunchCommand").toString(), s->get("WrapperCommand").toString(),
|
||||
s->get("PostExitCommand").toString());
|
||||
}
|
||||
|
||||
void CustomCommandsPage::retranslate()
|
||||
|
@ -35,42 +35,29 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <QDialog>
|
||||
#include <memory>
|
||||
|
||||
#include "ui/pages/BasePage.h"
|
||||
#include <Application.h>
|
||||
#include "ui/pages/BasePage.h"
|
||||
#include "ui/widgets/CustomCommands.h"
|
||||
|
||||
class CustomCommandsPage : public QWidget, public BasePage
|
||||
{
|
||||
class CustomCommandsPage : public QWidget, public BasePage {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit CustomCommandsPage(QWidget *parent = 0);
|
||||
public:
|
||||
explicit CustomCommandsPage(QWidget* parent = 0);
|
||||
~CustomCommandsPage();
|
||||
|
||||
QString displayName() const override
|
||||
{
|
||||
return tr("Custom Commands");
|
||||
}
|
||||
QIcon icon() const override
|
||||
{
|
||||
return APPLICATION->getThemedIcon("custom-commands");
|
||||
}
|
||||
QString id() const override
|
||||
{
|
||||
return "custom-commands";
|
||||
}
|
||||
QString helpPage() const override
|
||||
{
|
||||
return "Custom-commands";
|
||||
}
|
||||
QString displayName() const override { return tr("Custom Commands"); }
|
||||
QIcon icon() const override { return APPLICATION->getThemedIcon("custom-commands"); }
|
||||
QString id() const override { return "custom-commands"; }
|
||||
QString helpPage() const override { return "Custom-commands"; }
|
||||
bool apply() override;
|
||||
void retranslate() override;
|
||||
|
||||
private:
|
||||
private:
|
||||
void applySettings();
|
||||
void loadSettings();
|
||||
CustomCommands * commands;
|
||||
CustomCommands* commands;
|
||||
};
|
||||
|
@ -36,20 +36,18 @@
|
||||
#include "ExternalToolsPage.h"
|
||||
#include "ui_ExternalToolsPage.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QStandardPaths>
|
||||
#include <QTabBar>
|
||||
|
||||
#include <FileSystem.h>
|
||||
#include <tools/MCEditTool.h>
|
||||
#include "Application.h"
|
||||
#include "settings/SettingsObject.h"
|
||||
#include "tools/BaseProfiler.h"
|
||||
#include <FileSystem.h>
|
||||
#include "Application.h"
|
||||
#include <tools/MCEditTool.h>
|
||||
|
||||
ExternalToolsPage::ExternalToolsPage(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::ExternalToolsPage)
|
||||
ExternalToolsPage::ExternalToolsPage(QWidget* parent) : QWidget(parent), ui(new Ui::ExternalToolsPage)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->tabWidget->tabBar()->hide();
|
||||
@ -87,12 +85,9 @@ void ExternalToolsPage::applySettings()
|
||||
|
||||
// Editors
|
||||
QString jsonEditor = ui->jsonEditorTextBox->text();
|
||||
if (!jsonEditor.isEmpty() &&
|
||||
(!QFileInfo(jsonEditor).exists() || !QFileInfo(jsonEditor).isExecutable()))
|
||||
{
|
||||
if (!jsonEditor.isEmpty() && (!QFileInfo(jsonEditor).exists() || !QFileInfo(jsonEditor).isExecutable())) {
|
||||
QString found = QStandardPaths::findExecutable(jsonEditor);
|
||||
if (!found.isEmpty())
|
||||
{
|
||||
if (!found.isEmpty()) {
|
||||
jsonEditor = found;
|
||||
}
|
||||
}
|
||||
@ -103,21 +98,16 @@ void ExternalToolsPage::on_jprofilerPathBtn_clicked()
|
||||
{
|
||||
QString raw_dir = ui->jprofilerPathEdit->text();
|
||||
QString error;
|
||||
do
|
||||
{
|
||||
do {
|
||||
raw_dir = QFileDialog::getExistingDirectory(this, tr("JProfiler Folder"), raw_dir);
|
||||
if (raw_dir.isEmpty())
|
||||
{
|
||||
if (raw_dir.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
QString cooked_dir = FS::NormalizePath(raw_dir);
|
||||
if (!APPLICATION->profilers()["jprofiler"]->check(cooked_dir, &error))
|
||||
{
|
||||
if (!APPLICATION->profilers()["jprofiler"]->check(cooked_dir, &error)) {
|
||||
QMessageBox::critical(this, tr("Error"), tr("Error while checking JProfiler install:\n%1").arg(error));
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
ui->jprofilerPathEdit->setText(cooked_dir);
|
||||
break;
|
||||
}
|
||||
@ -126,12 +116,9 @@ void ExternalToolsPage::on_jprofilerPathBtn_clicked()
|
||||
void ExternalToolsPage::on_jprofilerCheckBtn_clicked()
|
||||
{
|
||||
QString error;
|
||||
if (!APPLICATION->profilers()["jprofiler"]->check(ui->jprofilerPathEdit->text(), &error))
|
||||
{
|
||||
if (!APPLICATION->profilers()["jprofiler"]->check(ui->jprofilerPathEdit->text(), &error)) {
|
||||
QMessageBox::critical(this, tr("Error"), tr("Error while checking JProfiler install:\n%1").arg(error));
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
QMessageBox::information(this, tr("OK"), tr("JProfiler setup seems to be OK"));
|
||||
}
|
||||
}
|
||||
@ -140,21 +127,16 @@ void ExternalToolsPage::on_jvisualvmPathBtn_clicked()
|
||||
{
|
||||
QString raw_dir = ui->jvisualvmPathEdit->text();
|
||||
QString error;
|
||||
do
|
||||
{
|
||||
do {
|
||||
raw_dir = QFileDialog::getOpenFileName(this, tr("JVisualVM Executable"), raw_dir);
|
||||
if (raw_dir.isEmpty())
|
||||
{
|
||||
if (raw_dir.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
QString cooked_dir = FS::NormalizePath(raw_dir);
|
||||
if (!APPLICATION->profilers()["jvisualvm"]->check(cooked_dir, &error))
|
||||
{
|
||||
if (!APPLICATION->profilers()["jvisualvm"]->check(cooked_dir, &error)) {
|
||||
QMessageBox::critical(this, tr("Error"), tr("Error while checking JVisualVM install:\n%1").arg(error));
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
ui->jvisualvmPathEdit->setText(cooked_dir);
|
||||
break;
|
||||
}
|
||||
@ -163,12 +145,9 @@ void ExternalToolsPage::on_jvisualvmPathBtn_clicked()
|
||||
void ExternalToolsPage::on_jvisualvmCheckBtn_clicked()
|
||||
{
|
||||
QString error;
|
||||
if (!APPLICATION->profilers()["jvisualvm"]->check(ui->jvisualvmPathEdit->text(), &error))
|
||||
{
|
||||
if (!APPLICATION->profilers()["jvisualvm"]->check(ui->jvisualvmPathEdit->text(), &error)) {
|
||||
QMessageBox::critical(this, tr("Error"), tr("Error while checking JVisualVM install:\n%1").arg(error));
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
QMessageBox::information(this, tr("OK"), tr("JVisualVM setup seems to be OK"));
|
||||
}
|
||||
}
|
||||
@ -177,25 +156,20 @@ void ExternalToolsPage::on_mceditPathBtn_clicked()
|
||||
{
|
||||
QString raw_dir = ui->mceditPathEdit->text();
|
||||
QString error;
|
||||
do
|
||||
{
|
||||
do {
|
||||
#ifdef Q_OS_OSX
|
||||
raw_dir = QFileDialog::getOpenFileName(this, tr("MCEdit Application"), raw_dir);
|
||||
#else
|
||||
raw_dir = QFileDialog::getExistingDirectory(this, tr("MCEdit Folder"), raw_dir);
|
||||
#endif
|
||||
if (raw_dir.isEmpty())
|
||||
{
|
||||
if (raw_dir.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
QString cooked_dir = FS::NormalizePath(raw_dir);
|
||||
if (!APPLICATION->mcedit()->check(cooked_dir, error))
|
||||
{
|
||||
if (!APPLICATION->mcedit()->check(cooked_dir, error)) {
|
||||
QMessageBox::critical(this, tr("Error"), tr("Error while checking MCEdit install:\n%1").arg(error));
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
ui->mceditPathEdit->setText(cooked_dir);
|
||||
break;
|
||||
}
|
||||
@ -204,43 +178,34 @@ void ExternalToolsPage::on_mceditPathBtn_clicked()
|
||||
void ExternalToolsPage::on_mceditCheckBtn_clicked()
|
||||
{
|
||||
QString error;
|
||||
if (!APPLICATION->mcedit()->check(ui->mceditPathEdit->text(), error))
|
||||
{
|
||||
if (!APPLICATION->mcedit()->check(ui->mceditPathEdit->text(), error)) {
|
||||
QMessageBox::critical(this, tr("Error"), tr("Error while checking MCEdit install:\n%1").arg(error));
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
QMessageBox::information(this, tr("OK"), tr("MCEdit setup seems to be OK"));
|
||||
}
|
||||
}
|
||||
|
||||
void ExternalToolsPage::on_jsonEditorBrowseBtn_clicked()
|
||||
{
|
||||
QString raw_file = QFileDialog::getOpenFileName(
|
||||
this, tr("JSON Editor"),
|
||||
ui->jsonEditorTextBox->text().isEmpty()
|
||||
QString raw_file = QFileDialog::getOpenFileName(this, tr("JSON Editor"),
|
||||
ui->jsonEditorTextBox->text().isEmpty()
|
||||
#if defined(Q_OS_LINUX)
|
||||
? QString("/usr/bin")
|
||||
? QString("/usr/bin")
|
||||
#else
|
||||
? QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation).first()
|
||||
? QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation).first()
|
||||
#endif
|
||||
: ui->jsonEditorTextBox->text());
|
||||
: ui->jsonEditorTextBox->text());
|
||||
|
||||
if (raw_file.isEmpty())
|
||||
{
|
||||
if (raw_file.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
QString cooked_file = FS::NormalizePath(raw_file);
|
||||
|
||||
// it has to exist and be an executable
|
||||
if (QFileInfo(cooked_file).exists() && QFileInfo(cooked_file).isExecutable())
|
||||
{
|
||||
if (QFileInfo(cooked_file).exists() && QFileInfo(cooked_file).isExecutable()) {
|
||||
ui->jsonEditorTextBox->setText(cooked_file);
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning(this, tr("Invalid"),
|
||||
tr("The file chosen does not seem to be an executable"));
|
||||
} else {
|
||||
QMessageBox::warning(this, tr("Invalid"), tr("The file chosen does not seem to be an executable"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -37,54 +37,42 @@
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include "ui/pages/BasePage.h"
|
||||
#include <Application.h>
|
||||
#include "ui/pages/BasePage.h"
|
||||
|
||||
namespace Ui {
|
||||
class ExternalToolsPage;
|
||||
}
|
||||
|
||||
class ExternalToolsPage : public QWidget, public BasePage
|
||||
{
|
||||
class ExternalToolsPage : public QWidget, public BasePage {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ExternalToolsPage(QWidget *parent = 0);
|
||||
public:
|
||||
explicit ExternalToolsPage(QWidget* parent = 0);
|
||||
~ExternalToolsPage();
|
||||
|
||||
QString displayName() const override
|
||||
{
|
||||
return tr("External Tools");
|
||||
}
|
||||
QString displayName() const override { return tr("External Tools"); }
|
||||
QIcon icon() const override
|
||||
{
|
||||
auto icon = APPLICATION->getThemedIcon("externaltools");
|
||||
if(icon.isNull())
|
||||
{
|
||||
if (icon.isNull()) {
|
||||
icon = APPLICATION->getThemedIcon("loadermods");
|
||||
}
|
||||
return icon;
|
||||
}
|
||||
QString id() const override
|
||||
{
|
||||
return "external-tools";
|
||||
}
|
||||
QString helpPage() const override
|
||||
{
|
||||
return "Tools";
|
||||
}
|
||||
QString id() const override { return "external-tools"; }
|
||||
QString helpPage() const override { return "Tools"; }
|
||||
virtual bool apply() override;
|
||||
void retranslate() override;
|
||||
|
||||
private:
|
||||
private:
|
||||
void loadSettings();
|
||||
void applySettings();
|
||||
|
||||
private:
|
||||
Ui::ExternalToolsPage *ui;
|
||||
private:
|
||||
Ui::ExternalToolsPage* ui;
|
||||
|
||||
private
|
||||
slots:
|
||||
private slots:
|
||||
void on_jprofilerPathBtn_clicked();
|
||||
void on_jprofilerCheckBtn_clicked();
|
||||
void on_jvisualvmPathBtn_clicked();
|
||||
|
@ -38,22 +38,22 @@
|
||||
#include "JavaCommon.h"
|
||||
#include "ui_JavaPage.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QDir>
|
||||
#include <QTabBar>
|
||||
|
||||
#include "ui/dialogs/VersionSelectDialog.h"
|
||||
|
||||
#include "java/JavaUtils.h"
|
||||
#include "java/JavaInstallList.h"
|
||||
#include "java/JavaUtils.h"
|
||||
|
||||
#include "settings/SettingsObject.h"
|
||||
#include <FileSystem.h>
|
||||
#include "Application.h"
|
||||
#include <sys.h>
|
||||
#include "Application.h"
|
||||
#include "settings/SettingsObject.h"
|
||||
|
||||
JavaPage::JavaPage(QWidget *parent) : QWidget(parent), ui(new Ui::JavaPage)
|
||||
JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->tabWidget->tabBar()->hide();
|
||||
@ -80,13 +80,10 @@ void JavaPage::applySettings()
|
||||
// Memory
|
||||
int min = ui->minMemSpinBox->value();
|
||||
int max = ui->maxMemSpinBox->value();
|
||||
if(min < max)
|
||||
{
|
||||
if (min < max) {
|
||||
s->set("MinMemAlloc", min);
|
||||
s->set("MaxMemAlloc", max);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
s->set("MinMemAlloc", max);
|
||||
s->set("MaxMemAlloc", min);
|
||||
}
|
||||
@ -105,13 +102,10 @@ void JavaPage::loadSettings()
|
||||
// Memory
|
||||
int min = s->get("MinMemAlloc").toInt();
|
||||
int max = s->get("MaxMemAlloc").toInt();
|
||||
if(min < max)
|
||||
{
|
||||
if (min < max) {
|
||||
ui->minMemSpinBox->setValue(min);
|
||||
ui->maxMemSpinBox->setValue(max);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
ui->minMemSpinBox->setValue(max);
|
||||
ui->maxMemSpinBox->setValue(min);
|
||||
}
|
||||
@ -137,8 +131,7 @@ void JavaPage::on_javaDetectBtn_clicked()
|
||||
vselect.setResizeOn(2);
|
||||
vselect.exec();
|
||||
|
||||
if (vselect.result() == QDialog::Accepted && vselect.selectedVersion())
|
||||
{
|
||||
if (vselect.result() == QDialog::Accepted && vselect.selectedVersion()) {
|
||||
java = std::dynamic_pointer_cast<JavaInstall>(vselect.selectedVersion());
|
||||
ui->javaPathTextBox->setText(java->path);
|
||||
}
|
||||
@ -149,15 +142,14 @@ void JavaPage::on_javaBrowseBtn_clicked()
|
||||
QString raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable"));
|
||||
|
||||
// do not allow current dir - it's dirty. Do not allow dirs that don't exist
|
||||
if(raw_path.isEmpty())
|
||||
{
|
||||
if (raw_path.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QString cooked_path = FS::NormalizePath(raw_path);
|
||||
QFileInfo javaInfo(cooked_path);;
|
||||
if(!javaInfo.exists() || !javaInfo.isExecutable())
|
||||
{
|
||||
QFileInfo javaInfo(cooked_path);
|
||||
;
|
||||
if (!javaInfo.exists() || !javaInfo.isExecutable()) {
|
||||
return;
|
||||
}
|
||||
ui->javaPathTextBox->setText(cooked_path);
|
||||
@ -165,13 +157,11 @@ void JavaPage::on_javaBrowseBtn_clicked()
|
||||
|
||||
void JavaPage::on_javaTestBtn_clicked()
|
||||
{
|
||||
if(checker)
|
||||
{
|
||||
if (checker) {
|
||||
return;
|
||||
}
|
||||
checker.reset(new JavaCommon::TestCheck(
|
||||
this, ui->javaPathTextBox->text(), ui->jvmArgsTextBox->toPlainText().replace("\n", " "),
|
||||
ui->minMemSpinBox->value(), ui->maxMemSpinBox->value(), ui->permGenSpinBox->value()));
|
||||
checker.reset(new JavaCommon::TestCheck(this, ui->javaPathTextBox->text(), ui->jvmArgsTextBox->toPlainText().replace("\n", " "),
|
||||
ui->minMemSpinBox->value(), ui->maxMemSpinBox->value(), ui->permGenSpinBox->value()));
|
||||
connect(checker.get(), SIGNAL(finished()), SLOT(checkerFinished()));
|
||||
checker->run();
|
||||
}
|
||||
|
@ -35,62 +35,47 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <QDialog>
|
||||
#include "ui/pages/BasePage.h"
|
||||
#include "JavaCommon.h"
|
||||
#include <Application.h>
|
||||
#include <QObjectPtr.h>
|
||||
#include <QDialog>
|
||||
#include <memory>
|
||||
#include "JavaCommon.h"
|
||||
#include "ui/pages/BasePage.h"
|
||||
|
||||
class SettingsObject;
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
namespace Ui {
|
||||
class JavaPage;
|
||||
}
|
||||
|
||||
class JavaPage : public QWidget, public BasePage
|
||||
{
|
||||
class JavaPage : public QWidget, public BasePage {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit JavaPage(QWidget *parent = 0);
|
||||
public:
|
||||
explicit JavaPage(QWidget* parent = 0);
|
||||
~JavaPage();
|
||||
|
||||
QString displayName() const override
|
||||
{
|
||||
return tr("Java");
|
||||
}
|
||||
QIcon icon() const override
|
||||
{
|
||||
return APPLICATION->getThemedIcon("java");
|
||||
}
|
||||
QString id() const override
|
||||
{
|
||||
return "java-settings";
|
||||
}
|
||||
QString helpPage() const override
|
||||
{
|
||||
return "Java-settings";
|
||||
}
|
||||
QString displayName() const override { return tr("Java"); }
|
||||
QIcon icon() const override { return APPLICATION->getThemedIcon("java"); }
|
||||
QString id() const override { return "java-settings"; }
|
||||
QString helpPage() const override { return "Java-settings"; }
|
||||
bool apply() override;
|
||||
void retranslate() override;
|
||||
|
||||
void updateThresholds();
|
||||
|
||||
private:
|
||||
private:
|
||||
void applySettings();
|
||||
void loadSettings();
|
||||
|
||||
private
|
||||
slots:
|
||||
private slots:
|
||||
void on_javaDetectBtn_clicked();
|
||||
void on_javaTestBtn_clicked();
|
||||
void on_javaBrowseBtn_clicked();
|
||||
void on_maxMemSpinBox_valueChanged(int i);
|
||||
void checkerFinished();
|
||||
|
||||
private:
|
||||
Ui::JavaPage *ui;
|
||||
private:
|
||||
Ui::JavaPage* ui;
|
||||
unique_qobject_ptr<JavaCommon::TestCheck> checker;
|
||||
};
|
||||
|
@ -36,23 +36,20 @@
|
||||
|
||||
#include "LanguagePage.h"
|
||||
|
||||
#include "ui/widgets/LanguageSelectionWidget.h"
|
||||
#include <QVBoxLayout>
|
||||
#include "ui/widgets/LanguageSelectionWidget.h"
|
||||
|
||||
LanguagePage::LanguagePage(QWidget* parent) :
|
||||
QWidget(parent)
|
||||
LanguagePage::LanguagePage(QWidget* parent) : QWidget(parent)
|
||||
{
|
||||
setObjectName(QStringLiteral("languagePage"));
|
||||
auto layout = new QVBoxLayout(this);
|
||||
mainWidget = new LanguageSelectionWidget(this);
|
||||
layout->setContentsMargins(0,0,0,0);
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
layout->addWidget(mainWidget);
|
||||
retranslate();
|
||||
}
|
||||
|
||||
LanguagePage::~LanguagePage()
|
||||
{
|
||||
}
|
||||
LanguagePage::~LanguagePage() {}
|
||||
|
||||
bool LanguagePage::apply()
|
||||
{
|
||||
|
@ -36,45 +36,32 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include "ui/pages/BasePage.h"
|
||||
#include <Application.h>
|
||||
#include <QWidget>
|
||||
#include <memory>
|
||||
#include "ui/pages/BasePage.h"
|
||||
|
||||
class LanguageSelectionWidget;
|
||||
|
||||
class LanguagePage : public QWidget, public BasePage
|
||||
{
|
||||
class LanguagePage : public QWidget, public BasePage {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit LanguagePage(QWidget *parent = 0);
|
||||
public:
|
||||
explicit LanguagePage(QWidget* parent = 0);
|
||||
virtual ~LanguagePage();
|
||||
|
||||
QString displayName() const override
|
||||
{
|
||||
return tr("Language");
|
||||
}
|
||||
QIcon icon() const override
|
||||
{
|
||||
return APPLICATION->getThemedIcon("language");
|
||||
}
|
||||
QString id() const override
|
||||
{
|
||||
return "language-settings";
|
||||
}
|
||||
QString helpPage() const override
|
||||
{
|
||||
return "Language-settings";
|
||||
}
|
||||
QString displayName() const override { return tr("Language"); }
|
||||
QIcon icon() const override { return APPLICATION->getThemedIcon("language"); }
|
||||
QString id() const override { return "language-settings"; }
|
||||
QString helpPage() const override { return "Language-settings"; }
|
||||
bool apply() override;
|
||||
|
||||
void retranslate() override;
|
||||
|
||||
private:
|
||||
private:
|
||||
void applySettings();
|
||||
void loadSettings();
|
||||
|
||||
private:
|
||||
LanguageSelectionWidget *mainWidget;
|
||||
private:
|
||||
LanguageSelectionWidget* mainWidget;
|
||||
};
|
||||
|
@ -38,17 +38,17 @@
|
||||
#include "LauncherPage.h"
|
||||
#include "ui_LauncherPage.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QDir>
|
||||
#include <QTextCharFormat>
|
||||
#include <QFileDialog>
|
||||
#include <QMenuBar>
|
||||
#include <QMessageBox>
|
||||
#include <QTextCharFormat>
|
||||
|
||||
#include "settings/SettingsObject.h"
|
||||
#include <FileSystem.h>
|
||||
#include "Application.h"
|
||||
#include "BuildConfig.h"
|
||||
#include "DesktopServices.h"
|
||||
#include "settings/SettingsObject.h"
|
||||
#include "ui/themes/ITheme.h"
|
||||
#include "updater/ExternalUpdater.h"
|
||||
|
||||
@ -56,15 +56,14 @@
|
||||
#include <QProcess>
|
||||
|
||||
// FIXME: possibly move elsewhere
|
||||
enum InstSortMode
|
||||
{
|
||||
enum InstSortMode {
|
||||
// Sort alphabetically by name.
|
||||
Sort_Name,
|
||||
// Sort by which instance was launched most recently.
|
||||
Sort_LastLaunch
|
||||
};
|
||||
|
||||
LauncherPage::LauncherPage(QWidget *parent) : QWidget(parent), ui(new Ui::LauncherPage)
|
||||
LauncherPage::LauncherPage(QWidget* parent) : QWidget(parent), ui(new Ui::LauncherPage)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
auto origForeground = ui->fontPreview->palette().color(ui->fontPreview->foregroundRole());
|
||||
@ -104,46 +103,39 @@ void LauncherPage::on_instDirBrowseBtn_clicked()
|
||||
QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Instance Folder"), ui->instDirTextBox->text());
|
||||
|
||||
// do not allow current dir - it's dirty. Do not allow dirs that don't exist
|
||||
if (!raw_dir.isEmpty() && QDir(raw_dir).exists())
|
||||
{
|
||||
if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) {
|
||||
QString cooked_dir = FS::NormalizePath(raw_dir);
|
||||
if (FS::checkProblemticPathJava(QDir(cooked_dir)))
|
||||
{
|
||||
if (FS::checkProblemticPathJava(QDir(cooked_dir))) {
|
||||
QMessageBox warning;
|
||||
warning.setText(tr("You're trying to specify an instance folder which\'s path "
|
||||
"contains at least one \'!\'. "
|
||||
"Java is known to cause problems if that is the case, your "
|
||||
"instances (probably) won't start!"));
|
||||
warning.setText(
|
||||
tr("You're trying to specify an instance folder which\'s path "
|
||||
"contains at least one \'!\'. "
|
||||
"Java is known to cause problems if that is the case, your "
|
||||
"instances (probably) won't start!"));
|
||||
warning.setInformativeText(
|
||||
tr("Do you really want to use this path? "
|
||||
"Selecting \"No\" will close this and not alter your instance path."));
|
||||
warning.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
|
||||
int result = warning.exec();
|
||||
if (result == QMessageBox::Ok)
|
||||
{
|
||||
if (result == QMessageBox::Ok) {
|
||||
ui->instDirTextBox->setText(cooked_dir);
|
||||
}
|
||||
}
|
||||
else if(DesktopServices::isFlatpak() && raw_dir.startsWith("/run/user"))
|
||||
{
|
||||
} else if (DesktopServices::isFlatpak() && raw_dir.startsWith("/run/user")) {
|
||||
QMessageBox warning;
|
||||
warning.setText(tr("You're trying to specify an instance folder "
|
||||
"which was granted temporarily via Flatpak.\n"
|
||||
"This is known to cause problems. "
|
||||
"After a restart the launcher might break, "
|
||||
"because it will no longer have access to that directory.\n\n"
|
||||
"Granting %1 access to it via Flatseal is recommended.").arg(BuildConfig.LAUNCHER_DISPLAYNAME));
|
||||
warning.setInformativeText(
|
||||
tr("Do you want to proceed anyway?"));
|
||||
"which was granted temporarily via Flatpak.\n"
|
||||
"This is known to cause problems. "
|
||||
"After a restart the launcher might break, "
|
||||
"because it will no longer have access to that directory.\n\n"
|
||||
"Granting %1 access to it via Flatseal is recommended.")
|
||||
.arg(BuildConfig.LAUNCHER_DISPLAYNAME));
|
||||
warning.setInformativeText(tr("Do you want to proceed anyway?"));
|
||||
warning.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
|
||||
int result = warning.exec();
|
||||
if (result == QMessageBox::Ok)
|
||||
{
|
||||
if (result == QMessageBox::Ok) {
|
||||
ui->instDirTextBox->setText(cooked_dir);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
ui->instDirTextBox->setText(cooked_dir);
|
||||
}
|
||||
}
|
||||
@ -154,8 +146,7 @@ void LauncherPage::on_iconsDirBrowseBtn_clicked()
|
||||
QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Icons Folder"), ui->iconsDirTextBox->text());
|
||||
|
||||
// do not allow current dir - it's dirty. Do not allow dirs that don't exist
|
||||
if (!raw_dir.isEmpty() && QDir(raw_dir).exists())
|
||||
{
|
||||
if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) {
|
||||
QString cooked_dir = FS::NormalizePath(raw_dir);
|
||||
ui->iconsDirTextBox->setText(cooked_dir);
|
||||
}
|
||||
@ -166,8 +157,7 @@ void LauncherPage::on_modsDirBrowseBtn_clicked()
|
||||
QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Mods Folder"), ui->modsDirTextBox->text());
|
||||
|
||||
// do not allow current dir - it's dirty. Do not allow dirs that don't exist
|
||||
if (!raw_dir.isEmpty() && QDir(raw_dir).exists())
|
||||
{
|
||||
if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) {
|
||||
QString cooked_dir = FS::NormalizePath(raw_dir);
|
||||
ui->modsDirTextBox->setText(cooked_dir);
|
||||
}
|
||||
@ -177,8 +167,7 @@ void LauncherPage::on_downloadsDirBrowseBtn_clicked()
|
||||
{
|
||||
QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Downloads Folder"), ui->downloadsDirTextBox->text());
|
||||
|
||||
if (!raw_dir.isEmpty() && QDir(raw_dir).exists())
|
||||
{
|
||||
if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) {
|
||||
QString cooked_dir = FS::NormalizePath(raw_dir);
|
||||
ui->downloadsDirTextBox->setText(cooked_dir);
|
||||
}
|
||||
@ -194,8 +183,7 @@ void LauncherPage::applySettings()
|
||||
auto s = APPLICATION->settings();
|
||||
|
||||
// Updates
|
||||
if (APPLICATION->updater())
|
||||
{
|
||||
if (APPLICATION->updater()) {
|
||||
APPLICATION->updater()->setAutomaticallyChecksForUpdates(ui->autoUpdateCheckBox->isChecked());
|
||||
}
|
||||
|
||||
@ -220,15 +208,14 @@ void LauncherPage::applySettings()
|
||||
s->set("DownloadsDirWatchRecursive", ui->downloadsDirWatchRecursiveCheckBox->isChecked());
|
||||
|
||||
auto sortMode = (InstSortMode)ui->sortingModeGroup->checkedId();
|
||||
switch (sortMode)
|
||||
{
|
||||
case Sort_LastLaunch:
|
||||
s->set("InstSortMode", "LastLaunch");
|
||||
break;
|
||||
case Sort_Name:
|
||||
default:
|
||||
s->set("InstSortMode", "Name");
|
||||
break;
|
||||
switch (sortMode) {
|
||||
case Sort_LastLaunch:
|
||||
s->set("InstSortMode", "LastLaunch");
|
||||
break;
|
||||
case Sort_Name:
|
||||
default:
|
||||
s->set("InstSortMode", "Name");
|
||||
break;
|
||||
}
|
||||
|
||||
// Mods
|
||||
@ -238,12 +225,10 @@ void LauncherPage::loadSettings()
|
||||
{
|
||||
auto s = APPLICATION->settings();
|
||||
// Updates
|
||||
if (APPLICATION->updater())
|
||||
{
|
||||
if (APPLICATION->updater()) {
|
||||
ui->autoUpdateCheckBox->setChecked(APPLICATION->updater()->getAutomaticallyChecksForUpdates());
|
||||
}
|
||||
|
||||
|
||||
// Toolbar/menu bar settings (not applicable if native menu bar is present)
|
||||
ui->toolsBox->setEnabled(!QMenuBar().isNativeMenuBar());
|
||||
#ifdef Q_OS_MACOS
|
||||
@ -261,8 +246,7 @@ void LauncherPage::loadSettings()
|
||||
|
||||
bool conversionOk = true;
|
||||
int fontSize = APPLICATION->settings()->get("ConsoleFontSize").toInt(&conversionOk);
|
||||
if(!conversionOk)
|
||||
{
|
||||
if (!conversionOk) {
|
||||
fontSize = 11;
|
||||
}
|
||||
ui->fontSizeBox->setValue(fontSize);
|
||||
@ -279,12 +263,9 @@ void LauncherPage::loadSettings()
|
||||
|
||||
QString sortMode = s->get("InstSortMode").toString();
|
||||
|
||||
if (sortMode == "LastLaunch")
|
||||
{
|
||||
if (sortMode == "LastLaunch") {
|
||||
ui->sortLastLaunchedBtn->setChecked(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
ui->sortByNameBtn->setChecked(true);
|
||||
}
|
||||
|
||||
|
@ -35,56 +35,41 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <QDialog>
|
||||
#include <memory>
|
||||
|
||||
#include "java/JavaChecker.h"
|
||||
#include "ui/pages/BasePage.h"
|
||||
#include <Application.h>
|
||||
#include "ui/ColorCache.h"
|
||||
#include <translations/TranslationsModel.h>
|
||||
#include "java/JavaChecker.h"
|
||||
#include "ui/ColorCache.h"
|
||||
#include "ui/pages/BasePage.h"
|
||||
|
||||
class QTextCharFormat;
|
||||
class SettingsObject;
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
namespace Ui {
|
||||
class LauncherPage;
|
||||
}
|
||||
|
||||
class LauncherPage : public QWidget, public BasePage
|
||||
{
|
||||
class LauncherPage : public QWidget, public BasePage {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit LauncherPage(QWidget *parent = 0);
|
||||
public:
|
||||
explicit LauncherPage(QWidget* parent = 0);
|
||||
~LauncherPage();
|
||||
|
||||
QString displayName() const override
|
||||
{
|
||||
return tr("Launcher");
|
||||
}
|
||||
QIcon icon() const override
|
||||
{
|
||||
return APPLICATION->getThemedIcon("launcher");
|
||||
}
|
||||
QString id() const override
|
||||
{
|
||||
return "launcher-settings";
|
||||
}
|
||||
QString helpPage() const override
|
||||
{
|
||||
return "Launcher-settings";
|
||||
}
|
||||
QString displayName() const override { return tr("Launcher"); }
|
||||
QIcon icon() const override { return APPLICATION->getThemedIcon("launcher"); }
|
||||
QString id() const override { return "launcher-settings"; }
|
||||
QString helpPage() const override { return "Launcher-settings"; }
|
||||
bool apply() override;
|
||||
void retranslate() override;
|
||||
|
||||
private:
|
||||
private:
|
||||
void applySettings();
|
||||
void loadSettings();
|
||||
|
||||
private
|
||||
slots:
|
||||
private slots:
|
||||
void on_instDirBrowseBtn_clicked();
|
||||
void on_modsDirBrowseBtn_clicked();
|
||||
void on_iconsDirBrowseBtn_clicked();
|
||||
@ -96,8 +81,8 @@ slots:
|
||||
*/
|
||||
void refreshFontPreview();
|
||||
|
||||
private:
|
||||
Ui::LauncherPage *ui;
|
||||
private:
|
||||
Ui::LauncherPage* ui;
|
||||
|
||||
/*!
|
||||
* Stores the currently selected update channel.
|
||||
@ -105,7 +90,7 @@ private:
|
||||
QString m_currentUpdateChannel;
|
||||
|
||||
// default format for the font preview...
|
||||
QTextCharFormat *defaultFormat;
|
||||
QTextCharFormat* defaultFormat;
|
||||
|
||||
std::unique_ptr<LogColorCache> m_colors;
|
||||
|
||||
|
@ -37,14 +37,14 @@
|
||||
#include "MinecraftPage.h"
|
||||
#include "ui_MinecraftPage.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
#include <QDir>
|
||||
#include <QMessageBox>
|
||||
#include <QTabBar>
|
||||
|
||||
#include "settings/SettingsObject.h"
|
||||
#include "Application.h"
|
||||
#include "settings/SettingsObject.h"
|
||||
|
||||
MinecraftPage::MinecraftPage(QWidget *parent) : QWidget(parent), ui(new Ui::MinecraftPage)
|
||||
MinecraftPage::MinecraftPage(QWidget* parent) : QWidget(parent), ui(new Ui::MinecraftPage)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
loadSettings();
|
||||
|
@ -35,57 +35,41 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <QDialog>
|
||||
#include <memory>
|
||||
|
||||
#include <Application.h>
|
||||
#include "java/JavaChecker.h"
|
||||
#include "ui/pages/BasePage.h"
|
||||
#include <Application.h>
|
||||
|
||||
class SettingsObject;
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
namespace Ui {
|
||||
class MinecraftPage;
|
||||
}
|
||||
|
||||
class MinecraftPage : public QWidget, public BasePage
|
||||
{
|
||||
class MinecraftPage : public QWidget, public BasePage {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MinecraftPage(QWidget *parent = 0);
|
||||
public:
|
||||
explicit MinecraftPage(QWidget* parent = 0);
|
||||
~MinecraftPage();
|
||||
|
||||
QString displayName() const override
|
||||
{
|
||||
return tr("Minecraft");
|
||||
}
|
||||
QIcon icon() const override
|
||||
{
|
||||
return APPLICATION->getThemedIcon("minecraft");
|
||||
}
|
||||
QString id() const override
|
||||
{
|
||||
return "minecraft-settings";
|
||||
}
|
||||
QString helpPage() const override
|
||||
{
|
||||
return "Minecraft-settings";
|
||||
}
|
||||
QString displayName() const override { return tr("Minecraft"); }
|
||||
QIcon icon() const override { return APPLICATION->getThemedIcon("minecraft"); }
|
||||
QString id() const override { return "minecraft-settings"; }
|
||||
QString helpPage() const override { return "Minecraft-settings"; }
|
||||
bool apply() override;
|
||||
void retranslate() override;
|
||||
|
||||
private:
|
||||
private:
|
||||
void updateCheckboxStuff();
|
||||
void applySettings();
|
||||
void loadSettings();
|
||||
|
||||
private
|
||||
slots:
|
||||
private slots:
|
||||
void on_maximizedCheckBox_clicked(bool checked);
|
||||
|
||||
private:
|
||||
Ui::MinecraftPage *ui;
|
||||
|
||||
private:
|
||||
Ui::MinecraftPage* ui;
|
||||
};
|
||||
|
@ -40,18 +40,17 @@
|
||||
#include <QButtonGroup>
|
||||
#include <QTabBar>
|
||||
|
||||
#include "settings/SettingsObject.h"
|
||||
#include "Application.h"
|
||||
#include "settings/SettingsObject.h"
|
||||
|
||||
ProxyPage::ProxyPage(QWidget *parent) : QWidget(parent), ui(new Ui::ProxyPage)
|
||||
ProxyPage::ProxyPage(QWidget* parent) : QWidget(parent), ui(new Ui::ProxyPage)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->tabWidget->tabBar()->hide();
|
||||
loadSettings();
|
||||
updateCheckboxStuff();
|
||||
|
||||
connect(ui->proxyGroup, QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked),
|
||||
this, &ProxyPage::proxyGroupChanged);
|
||||
connect(ui->proxyGroup, QOverload<QAbstractButton*>::of(&QButtonGroup::buttonClicked), this, &ProxyPage::proxyGroupChanged);
|
||||
}
|
||||
|
||||
ProxyPage::~ProxyPage()
|
||||
@ -67,13 +66,12 @@ bool ProxyPage::apply()
|
||||
|
||||
void ProxyPage::updateCheckboxStuff()
|
||||
{
|
||||
bool enableEditing = ui->proxyHTTPBtn->isChecked()
|
||||
|| ui->proxySOCKS5Btn->isChecked();
|
||||
bool enableEditing = ui->proxyHTTPBtn->isChecked() || ui->proxySOCKS5Btn->isChecked();
|
||||
ui->proxyAddrBox->setEnabled(enableEditing);
|
||||
ui->proxyAuthBox->setEnabled(enableEditing);
|
||||
}
|
||||
|
||||
void ProxyPage::proxyGroupChanged([[maybe_unused]] QAbstractButton *button)
|
||||
void ProxyPage::proxyGroupChanged([[maybe_unused]] QAbstractButton* button)
|
||||
{
|
||||
updateCheckboxStuff();
|
||||
}
|
||||
@ -99,13 +97,8 @@ void ProxyPage::applySettings()
|
||||
s->set("ProxyUser", ui->proxyUserEdit->text());
|
||||
s->set("ProxyPass", ui->proxyPassEdit->text());
|
||||
|
||||
APPLICATION->updateProxySettings(
|
||||
proxyType,
|
||||
ui->proxyAddrEdit->text(),
|
||||
ui->proxyPortEdit->value(),
|
||||
ui->proxyUserEdit->text(),
|
||||
ui->proxyPassEdit->text()
|
||||
);
|
||||
APPLICATION->updateProxySettings(proxyType, ui->proxyAddrEdit->text(), ui->proxyPortEdit->value(), ui->proxyUserEdit->text(),
|
||||
ui->proxyPassEdit->text());
|
||||
}
|
||||
void ProxyPage::loadSettings()
|
||||
{
|
||||
|
@ -36,53 +36,39 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <QAbstractButton>
|
||||
#include <QDialog>
|
||||
#include <memory>
|
||||
|
||||
#include "ui/pages/BasePage.h"
|
||||
#include <Application.h>
|
||||
#include "ui/pages/BasePage.h"
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
namespace Ui {
|
||||
class ProxyPage;
|
||||
}
|
||||
|
||||
class ProxyPage : public QWidget, public BasePage
|
||||
{
|
||||
class ProxyPage : public QWidget, public BasePage {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ProxyPage(QWidget *parent = 0);
|
||||
public:
|
||||
explicit ProxyPage(QWidget* parent = 0);
|
||||
~ProxyPage();
|
||||
|
||||
QString displayName() const override
|
||||
{
|
||||
return tr("Proxy");
|
||||
}
|
||||
QIcon icon() const override
|
||||
{
|
||||
return APPLICATION->getThemedIcon("proxy");
|
||||
}
|
||||
QString id() const override
|
||||
{
|
||||
return "proxy-settings";
|
||||
}
|
||||
QString helpPage() const override
|
||||
{
|
||||
return "Proxy-settings";
|
||||
}
|
||||
QString displayName() const override { return tr("Proxy"); }
|
||||
QIcon icon() const override { return APPLICATION->getThemedIcon("proxy"); }
|
||||
QString id() const override { return "proxy-settings"; }
|
||||
QString helpPage() const override { return "Proxy-settings"; }
|
||||
bool apply() override;
|
||||
void retranslate() override;
|
||||
|
||||
private slots:
|
||||
void proxyGroupChanged(QAbstractButton *button);
|
||||
private slots:
|
||||
void proxyGroupChanged(QAbstractButton* button);
|
||||
|
||||
private:
|
||||
private:
|
||||
void updateCheckboxStuff();
|
||||
void applySettings();
|
||||
void loadSettings();
|
||||
|
||||
private:
|
||||
Ui::ProxyPage *ui;
|
||||
private:
|
||||
Ui::ProxyPage* ui;
|
||||
};
|
||||
|
Reference in New Issue
Block a user