Change paste settings and add copyright headers

- There's now a notice reminding people to change the base URL if they
  had a custom base URL and change the paste type (that was something I
  personally had problems with when I was testing, so a reminder was
  helpful for me).

- Broke down some of the long lines on APIPage.cpp to be more readable.

- Added copyright headers where they were missing.

- Changed the paste service display names to the names they are more
  commonly known by.

- Changed the default hastebin base URL to https://hst.sh due to the
  acquisition of https://hastebin.com by Toptal.
This commit is contained in:
Lenny McLennington 2022-05-13 17:48:19 +01:00
parent 35f71f5793
commit caf6d02728
No known key found for this signature in database
GPG Key ID: F0467078ECA45FCB
7 changed files with 95 additions and 14 deletions

View File

@ -2,6 +2,7 @@
/* /*
* PolyMC - Minecraft Launcher * PolyMC - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net> * Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (C) 2022 Lenny McLennington <lenny@sneed.church>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -672,7 +673,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
m_settings->registerSetting("UpdateDialogGeometry", ""); m_settings->registerSetting("UpdateDialogGeometry", "");
// This code feels so stupid is there a less stupid way of doing this? // HACK: This code feels so stupid is there a less stupid way of doing this?
{ {
m_settings->registerSetting("PastebinURL", ""); m_settings->registerSetting("PastebinURL", "");
QString pastebinURL = m_settings->get("PastebinURL").toString(); QString pastebinURL = m_settings->get("PastebinURL").toString();
@ -694,7 +695,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
} }
bool ok; bool ok;
unsigned int pasteType = m_settings->get("PastebinType").toUInt(&ok); int pasteType = m_settings->get("PastebinType").toInt(&ok);
// If PastebinType is invalid then reset the related settings. // If PastebinType is invalid then reset the related settings.
if (!ok || !(PasteUpload::PasteType::First <= pasteType && pasteType <= PasteUpload::PasteType::Last)) if (!ok || !(PasteUpload::PasteType::First <= pasteType && pasteType <= PasteUpload::PasteType::Last))
{ {

View File

@ -1,6 +1,8 @@
// SPDX-License-Identifier: GPL-3.0-only // SPDX-License-Identifier: GPL-3.0-only
/* /*
* PolyMC - Minecraft Launcher * PolyMC - Minecraft Launcher
* Copyright (C) 2022 Lenny McLennington <lenny@sneed.church>
* Copyright (C) 2022 Swirl <swurl@swurl.xyz>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -43,10 +45,10 @@
#include <QFile> #include <QFile>
std::array<PasteUpload::PasteTypeInfo, 4> PasteUpload::PasteTypes = { std::array<PasteUpload::PasteTypeInfo, 4> PasteUpload::PasteTypes = {
{{"0x0", "https://0x0.st", ""}, {{"0x0.st", "https://0x0.st", ""},
{"hastebin", "https://hastebin.com", "/documents"}, {"hastebin", "https://hst.sh", "/documents"},
{"paste (paste.gg)", "https://paste.gg", "/api/v1/pastes"}, {"paste.gg", "https://paste.gg", "/api/v1/pastes"},
{"mclogs", "https://api.mclo.gs", "/1/log"}}}; {"mclo.gs", "https://api.mclo.gs", "/1/log"}}};
PasteUpload::PasteUpload(QWidget *window, QString text, QString baseUrl, PasteType pasteType) : m_window(window), m_baseUrl(baseUrl), m_pasteType(pasteType), m_text(text.toUtf8()) PasteUpload::PasteUpload(QWidget *window, QString text, QString baseUrl, PasteType pasteType) : m_window(window), m_baseUrl(baseUrl), m_pasteType(pasteType), m_text(text.toUtf8())
{ {

View File

@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-3.0-only // SPDX-License-Identifier: GPL-3.0-only
/* /*
* PolyMC - Minecraft Launcher * PolyMC - Minecraft Launcher
* Copyright (C) 2022 Lenny McLennington <lenny@sneed.church>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -45,7 +46,7 @@ class PasteUpload : public Task
{ {
Q_OBJECT Q_OBJECT
public: public:
enum PasteType : unsigned int { enum PasteType : int {
// 0x0.st // 0x0.st
NullPointer, NullPointer,
// hastebin.com // hastebin.com

View File

@ -1,3 +1,38 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Copyright (C) 2022 Lenny McLennington <lenny@sneed.church>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2013-2021 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "GuiUtil.h" #include "GuiUtil.h"
#include <QClipboard> #include <QClipboard>
@ -16,7 +51,7 @@
QString GuiUtil::uploadPaste(const QString &text, QWidget *parentWidget) QString GuiUtil::uploadPaste(const QString &text, QWidget *parentWidget)
{ {
ProgressDialog dialog(parentWidget); ProgressDialog dialog(parentWidget);
auto pasteTypeSetting = static_cast<PasteUpload::PasteType>(APPLICATION->settings()->get("PastebinType").toUInt()); auto pasteTypeSetting = static_cast<PasteUpload::PasteType>(APPLICATION->settings()->get("PastebinType").toInt());
auto pasteCustomAPIBaseSetting = APPLICATION->settings()->get("PastebinCustomAPIBase").toString(); auto pasteCustomAPIBaseSetting = APPLICATION->settings()->get("PastebinCustomAPIBase").toString();
std::unique_ptr<PasteUpload> paste(new PasteUpload(parentWidget, text, pasteCustomAPIBaseSetting, pasteTypeSetting)); std::unique_ptr<PasteUpload> paste(new PasteUpload(parentWidget, text, pasteCustomAPIBaseSetting, pasteTypeSetting));

View File

@ -53,8 +53,8 @@ APIPage::APIPage(QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::APIPage) ui(new Ui::APIPage)
{ {
// this is here so you can reorder the entries in the combobox without messing stuff up // This is here so you can reorder the entries in the combobox without messing stuff up
unsigned int comboBoxEntries[] = { int comboBoxEntries[] = {
PasteUpload::PasteType::Mclogs, PasteUpload::PasteType::Mclogs,
PasteUpload::PasteType::NullPointer, PasteUpload::PasteType::NullPointer,
PasteUpload::PasteType::PasteGG, PasteUpload::PasteType::PasteGG,
@ -69,13 +69,18 @@ APIPage::APIPage(QWidget *parent) :
ui->pasteTypeComboBox->addItem(PasteUpload::PasteTypes.at(pasteType).name, pasteType); ui->pasteTypeComboBox->addItem(PasteUpload::PasteTypes.at(pasteType).name, pasteType);
} }
connect(ui->pasteTypeComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &APIPage::updateBaseURLPlaceholder); 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. // This function needs to be called even when the ComboBox's index is still in its default state.
updateBaseURLPlaceholder(ui->pasteTypeComboBox->currentIndex()); updateBaseURLPlaceholder(ui->pasteTypeComboBox->currentIndex());
ui->baseURLEntry->setValidator(new QRegularExpressionValidator(validUrlRegExp, ui->baseURLEntry)); ui->baseURLEntry->setValidator(new QRegularExpressionValidator(validUrlRegExp, ui->baseURLEntry));
ui->tabWidget->tabBar()->hide(); ui->tabWidget->tabBar()->hide();
loadSettings(); loadSettings();
resetBaseURLNote();
connect(ui->pasteTypeComboBox, currentIndexChangedSignal, this, &APIPage::updateBaseURLNote);
connect(ui->baseURLEntry, &QLineEdit::textEdited, this, &APIPage::resetBaseURLNote);
} }
APIPage::~APIPage() APIPage::~APIPage()
@ -83,16 +88,36 @@ APIPage::~APIPage()
delete ui; delete ui;
} }
void APIPage::resetBaseURLNote()
{
ui->baseURLNote->hide();
baseURLPasteType = ui->pasteTypeComboBox->currentIndex();
}
void APIPage::updateBaseURLNote(int index)
{
if (baseURLPasteType == index)
{
ui->baseURLNote->hide();
}
else if (!ui->baseURLEntry->text().isEmpty())
{
ui->baseURLNote->show();
}
}
void APIPage::updateBaseURLPlaceholder(int index) void APIPage::updateBaseURLPlaceholder(int index)
{ {
ui->baseURLEntry->setPlaceholderText(PasteUpload::PasteTypes.at(ui->pasteTypeComboBox->itemData(index).toUInt()).defaultBase); int pasteType = ui->pasteTypeComboBox->itemData(index).toInt();
QString pasteDefaultURL = PasteUpload::PasteTypes.at(pasteType).defaultBase;
ui->baseURLEntry->setPlaceholderText(pasteDefaultURL);
} }
void APIPage::loadSettings() void APIPage::loadSettings()
{ {
auto s = APPLICATION->settings(); auto s = APPLICATION->settings();
unsigned int pasteType = s->get("PastebinType").toUInt(); int pasteType = s->get("PastebinType").toInt();
QString pastebinURL = s->get("PastebinCustomAPIBase").toString(); QString pastebinURL = s->get("PastebinCustomAPIBase").toString();
ui->baseURLEntry->setText(pastebinURL); ui->baseURLEntry->setText(pastebinURL);
@ -115,7 +140,7 @@ void APIPage::applySettings()
{ {
auto s = APPLICATION->settings(); auto s = APPLICATION->settings();
s->set("PastebinType", ui->pasteTypeComboBox->currentData().toUInt()); s->set("PastebinType", ui->pasteTypeComboBox->currentData().toInt());
s->set("PastebinCustomAPIBase", ui->baseURLEntry->text()); s->set("PastebinCustomAPIBase", ui->baseURLEntry->text());
QString msaClientID = ui->msaClientID->text(); QString msaClientID = ui->msaClientID->text();

View File

@ -3,6 +3,7 @@
* PolyMC - Minecraft Launcher * PolyMC - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net> * Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org> * Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org>
* Copyright (c) 2022 Lenny McLennington <lenny@sneed.church>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -73,6 +74,9 @@ public:
void retranslate() override; void retranslate() override;
private: private:
int baseURLPasteType;
void resetBaseURLNote();
void updateBaseURLNote(int index);
void updateBaseURLPlaceholder(int index); void updateBaseURLPlaceholder(int index);
void loadSettings(); void loadSettings();
void applySettings(); void applySettings();

View File

@ -61,6 +61,19 @@
<property name="placeholderText"> <property name="placeholderText">
<string/> <string/>
</property> </property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="baseURLNote">
<property name="text">
<string>Note: you probably want to change or clear the Base URL after changing the paste service type.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>