From 75f2dab3c87d9d88979553792473a5aace4c96bf Mon Sep 17 00:00:00 2001 From: Ghosty Date: Fri, 3 Dec 2021 03:02:58 +0100 Subject: NOISSUE Implemented copy screenshots to the clipboard - Added context-menu entry - Ctrl+C keybind works as well - If multiple screenshots are selected, only the first one gets copied --- launcher/ui/pages/instance/ScreenshotsPage.cpp | 22 ++++++++++++++++++++++ launcher/ui/pages/instance/ScreenshotsPage.h | 1 + launcher/ui/pages/instance/ScreenshotsPage.ui | 9 +++++++++ 3 files changed, 32 insertions(+) (limited to 'launcher') diff --git a/launcher/ui/pages/instance/ScreenshotsPage.cpp b/launcher/ui/pages/instance/ScreenshotsPage.cpp index 06c4379f..e391b95d 100644 --- a/launcher/ui/pages/instance/ScreenshotsPage.cpp +++ b/launcher/ui/pages/instance/ScreenshotsPage.cpp @@ -250,6 +250,12 @@ bool ScreenshotsPage::eventFilter(QObject *obj, QEvent *evt) return QWidget::eventFilter(obj, evt); } QKeyEvent *keyEvent = static_cast(evt); + + if (keyEvent->matches(QKeySequence::Copy)) { + on_actionCopy_triggered(); + return true; + } + switch (keyEvent->key()) { case Qt::Key_Delete: @@ -372,6 +378,22 @@ void ScreenshotsPage::on_actionUpload_triggered() m_uploadActive = false; } +void ScreenshotsPage::on_actionCopy_triggered() +{ + auto selection = ui->listView->selectionModel()->selectedRows(); + if(selection.size() < 1) + { + return; + } + + // You can only copy one image to the clipboard. In the case of multiple selected files, only the first one gets copied. + auto item = selection[0]; + auto info = m_model->fileInfo(item); + QImage image(info.absoluteFilePath()); + Q_ASSERT(!image.isNull()); + QApplication::clipboard()->setImage(image, QClipboard::Clipboard); +} + void ScreenshotsPage::on_actionDelete_triggered() { auto mbox = CustomMessageBox::selectable( diff --git a/launcher/ui/pages/instance/ScreenshotsPage.h b/launcher/ui/pages/instance/ScreenshotsPage.h index d2f44837..d32f08ff 100644 --- a/launcher/ui/pages/instance/ScreenshotsPage.h +++ b/launcher/ui/pages/instance/ScreenshotsPage.h @@ -73,6 +73,7 @@ protected: private slots: void on_actionUpload_triggered(); + void on_actionCopy_triggered(); void on_actionDelete_triggered(); void on_actionRename_triggered(); void on_actionView_Folder_triggered(); diff --git a/launcher/ui/pages/instance/ScreenshotsPage.ui b/launcher/ui/pages/instance/ScreenshotsPage.ui index ec461087..bb4213de 100644 --- a/launcher/ui/pages/instance/ScreenshotsPage.ui +++ b/launcher/ui/pages/instance/ScreenshotsPage.ui @@ -50,6 +50,7 @@ false + @@ -74,6 +75,14 @@ View Folder + + + Copy + + + Copy + + -- cgit From e9c52ec69663b2cb28a40428c96de749bdf49547 Mon Sep 17 00:00:00 2001 From: Ghosty Date: Fri, 3 Dec 2021 16:08:11 +0100 Subject: NOISSUE Added Copy File(s) feature for the screenshot page - Ctrl+C now copies the file instead of the image data - Renamed Copy to Copy Image --- launcher/ui/pages/instance/ScreenshotsPage.cpp | 24 ++++++++++++++++++++++-- launcher/ui/pages/instance/ScreenshotsPage.h | 3 ++- launcher/ui/pages/instance/ScreenshotsPage.ui | 17 +++++++++++++---- 3 files changed, 37 insertions(+), 7 deletions(-) (limited to 'launcher') diff --git a/launcher/ui/pages/instance/ScreenshotsPage.cpp b/launcher/ui/pages/instance/ScreenshotsPage.cpp index e391b95d..7aead623 100644 --- a/launcher/ui/pages/instance/ScreenshotsPage.cpp +++ b/launcher/ui/pages/instance/ScreenshotsPage.cpp @@ -252,7 +252,7 @@ bool ScreenshotsPage::eventFilter(QObject *obj, QEvent *evt) QKeyEvent *keyEvent = static_cast(evt); if (keyEvent->matches(QKeySequence::Copy)) { - on_actionCopy_triggered(); + on_actionCopy_File_s_triggered(); return true; } @@ -378,7 +378,7 @@ void ScreenshotsPage::on_actionUpload_triggered() m_uploadActive = false; } -void ScreenshotsPage::on_actionCopy_triggered() +void ScreenshotsPage::on_actionCopy_Image_triggered() { auto selection = ui->listView->selectionModel()->selectedRows(); if(selection.size() < 1) @@ -394,6 +394,26 @@ void ScreenshotsPage::on_actionCopy_triggered() QApplication::clipboard()->setImage(image, QClipboard::Clipboard); } +void ScreenshotsPage::on_actionCopy_File_s_triggered() +{ + auto selection = ui->listView->selectionModel()->selectedRows(); + if(selection.size() < 1) + { + // Don't do anything so we don't empty the users clipboard + return; + } + + QString buf = ""; + for (auto item : selection) + { + auto info = m_model->fileInfo(item); + buf += "file:///" + info.absoluteFilePath() + "\r\n"; + } + QMimeData* mimeData = new QMimeData(); + mimeData->setData("text/uri-list", buf.toLocal8Bit()); + QApplication::clipboard()->setMimeData(mimeData); +} + void ScreenshotsPage::on_actionDelete_triggered() { auto mbox = CustomMessageBox::selectable( diff --git a/launcher/ui/pages/instance/ScreenshotsPage.h b/launcher/ui/pages/instance/ScreenshotsPage.h index d32f08ff..2a1fdeee 100644 --- a/launcher/ui/pages/instance/ScreenshotsPage.h +++ b/launcher/ui/pages/instance/ScreenshotsPage.h @@ -73,7 +73,8 @@ protected: private slots: void on_actionUpload_triggered(); - void on_actionCopy_triggered(); + void on_actionCopy_Image_triggered(); + void on_actionCopy_File_s_triggered(); void on_actionDelete_triggered(); void on_actionRename_triggered(); void on_actionView_Folder_triggered(); diff --git a/launcher/ui/pages/instance/ScreenshotsPage.ui b/launcher/ui/pages/instance/ScreenshotsPage.ui index bb4213de..2e2227a2 100644 --- a/launcher/ui/pages/instance/ScreenshotsPage.ui +++ b/launcher/ui/pages/instance/ScreenshotsPage.ui @@ -50,7 +50,8 @@ false - + + @@ -75,12 +76,20 @@ View Folder - + - Copy + Copy Image - Copy + Copy Image + + + + + Copy File(s) + + + Copy File(s) -- cgit From a97d0a36f4807e082273d0f137186a5cebf6cd5d Mon Sep 17 00:00:00 2001 From: Ghosty Date: Fri, 3 Dec 2021 16:29:28 +0100 Subject: NOISSUE Copy Image is not shown if the selection is > 1 --- launcher/ui/pages/instance/ScreenshotsPage.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'launcher') diff --git a/launcher/ui/pages/instance/ScreenshotsPage.cpp b/launcher/ui/pages/instance/ScreenshotsPage.cpp index 7aead623..ccde78e7 100644 --- a/launcher/ui/pages/instance/ScreenshotsPage.cpp +++ b/launcher/ui/pages/instance/ScreenshotsPage.cpp @@ -278,6 +278,11 @@ ScreenshotsPage::~ScreenshotsPage() void ScreenshotsPage::ShowContextMenu(const QPoint& pos) { auto menu = ui->toolBar->createContextMenu(this, tr("Context menu")); + + if (ui->listView->selectionModel()->selectedRows().size() > 1) { + menu->removeAction( ui->actionCopy_Image ); + } + menu->exec(ui->listView->mapToGlobal(pos)); delete menu; } -- cgit From 03d730073281c44d3d7a3cdb3ecaa78c178d1fd5 Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sat, 8 Jan 2022 11:14:07 +0100 Subject: GH-4125 workaround for java printing garbage to stdout on bedrock linux --- launcher/java/JavaChecker.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'launcher') diff --git a/launcher/java/JavaChecker.cpp b/launcher/java/JavaChecker.cpp index 80c599cc..c3132af3 100644 --- a/launcher/java/JavaChecker.cpp +++ b/launcher/java/JavaChecker.cpp @@ -61,6 +61,10 @@ void JavaChecker::stdoutReady() QByteArray data = process->readAllStandardOutput(); QString added = QString::fromLocal8Bit(data); added.remove('\r'); + // NOTE: workaround for GH-4125, where garbage is getting printed into stdout on bedrock linux + if (added.contains("/bedrock/strata")) { + return; + } m_stdout += added; } -- cgit From 52420963cf1f258f14cedd7ff41412338d73b369 Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sat, 8 Jan 2022 12:26:16 +0100 Subject: GH-4125 fix it better --- launcher/java/JavaChecker.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'launcher') diff --git a/launcher/java/JavaChecker.cpp b/launcher/java/JavaChecker.cpp index c3132af3..4557784b 100644 --- a/launcher/java/JavaChecker.cpp +++ b/launcher/java/JavaChecker.cpp @@ -61,10 +61,6 @@ void JavaChecker::stdoutReady() QByteArray data = process->readAllStandardOutput(); QString added = QString::fromLocal8Bit(data); added.remove('\r'); - // NOTE: workaround for GH-4125, where garbage is getting printed into stdout on bedrock linux - if (added.contains("/bedrock/strata")) { - return; - } m_stdout += added; } @@ -107,6 +103,10 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status) for(QString line : lines) { line = line.trimmed(); + // NOTE: workaround for GH-4125, where garbage is getting printed into stdout on bedrock linux + if (line.contains("/bedrock/strata")) { + continue; + } auto parts = line.split('=', QString::SkipEmptyParts); if(parts.size() != 2 || parts[0].isEmpty() || parts[1].isEmpty()) -- cgit From 86d99f80c3b3c161688f6ce2fa222eb1a3ed5a3c Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sun, 16 Jan 2022 11:43:19 +0100 Subject: NOISSUE add some logging to profile fetching failures --- launcher/minecraft/auth/steps/MinecraftProfileStep.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'launcher') diff --git a/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp b/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp index 9fef99b0..dc3df44f 100644 --- a/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp +++ b/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp @@ -56,6 +56,11 @@ void MinecraftProfileStep::onRequestDone( return; } if (error != QNetworkReply::NoError) { + qWarning() << "Error getting profile:"; + qWarning() << " HTTP Status: " << requestor->httpStatus_; + qWarning() << " Internal error no.: " << error; + qWarning() << " Error string: " << requestor->errorString_; + emit finished( AccountTaskState::STATE_FAILED_SOFT, tr("Minecraft Java profile acquisition failed.") -- cgit From c1bf31cb27a2b0ac675d70b6204003c1d834bbf8 Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sun, 16 Jan 2022 12:05:40 +0100 Subject: NOISSUE in java checker, ignore invalid lines altogether Declaring them as errors is just causing problems because Java randomly prints garbage to STDOUT now. --- launcher/java/JavaChecker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'launcher') diff --git a/launcher/java/JavaChecker.cpp b/launcher/java/JavaChecker.cpp index 4557784b..35ddc35c 100644 --- a/launcher/java/JavaChecker.cpp +++ b/launcher/java/JavaChecker.cpp @@ -111,7 +111,7 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status) auto parts = line.split('=', QString::SkipEmptyParts); if(parts.size() != 2 || parts[0].isEmpty() || parts[1].isEmpty()) { - success = false; + continue; } else { -- cgit From aa770b63fba8ede60636c6c2473a20d4fe48d3a1 Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sun, 16 Jan 2022 12:46:20 +0100 Subject: NOISSUE correctly set http status code in auth reply --- launcher/minecraft/auth/AuthRequest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'launcher') diff --git a/launcher/minecraft/auth/AuthRequest.cpp b/launcher/minecraft/auth/AuthRequest.cpp index 459d2354..feface80 100644 --- a/launcher/minecraft/auth/AuthRequest.cpp +++ b/launcher/minecraft/auth/AuthRequest.cpp @@ -44,7 +44,7 @@ void AuthRequest::onRequestFinished() { if (reply_ != qobject_cast(sender())) { return; } - httpStatus_ = 200; + httpStatus_ = reply_->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); finish(); } -- cgit From 917f8a31e33e021d1eed84f6d731d3c1dc15b3e1 Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sun, 16 Jan 2022 12:51:42 +0100 Subject: NOISSUE log server response when failing to fetch profile --- launcher/minecraft/auth/steps/MinecraftProfileStep.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'launcher') diff --git a/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp b/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp index dc3df44f..add91659 100644 --- a/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp +++ b/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp @@ -61,6 +61,9 @@ void MinecraftProfileStep::onRequestDone( qWarning() << " Internal error no.: " << error; qWarning() << " Error string: " << requestor->errorString_; + qWarning() << " Response:"; + qWarning() << QString::fromUtf8(data); + emit finished( AccountTaskState::STATE_FAILED_SOFT, tr("Minecraft Java profile acquisition failed.") -- cgit From 8b31c638f344322822b9e05daead542b4ad70638 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sat, 22 Jan 2022 21:58:32 +0100 Subject: Fix error message The code is trying to get a string from a json object, and if that fails it should log "is not a string", not "is not a timestamp". --- launcher/minecraft/auth/Parsers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'launcher') diff --git a/launcher/minecraft/auth/Parsers.cpp b/launcher/minecraft/auth/Parsers.cpp index ed31e934..2dd36562 100644 --- a/launcher/minecraft/auth/Parsers.cpp +++ b/launcher/minecraft/auth/Parsers.cpp @@ -94,7 +94,7 @@ bool parseXTokenResponse(QByteArray & data, Katabasis::Token &output, QString na return false; } if(!getString(obj.value("Token"), output.token)) { - qWarning() << "User Token is not a timestamp"; + qWarning() << "User Token is not a string"; return false; } auto arrayVal = obj.value("DisplayClaims").toObject().value("xui"); -- cgit From c1aaf89baa6166707d7d489fe8ec1bcad1155df1 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Thu, 27 Jan 2022 19:06:07 -0500 Subject: Improve the About page Improves #106. This more clearly marks the original MultiMC contributors, and now correctly hides the "Build Platform" if this is set as empty. The version label is now moved under the "PolyMC" title so it looks just a little bit better (and matches other applications). The copyright on the "About" page now correctly attributes the MultiMC contributors just like on the "License" page. --- launcher/ui/dialogs/AboutDialog.cpp | 10 +++++++--- launcher/ui/dialogs/AboutDialog.ui | 17 +++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) (limited to 'launcher') diff --git a/launcher/ui/dialogs/AboutDialog.cpp b/launcher/ui/dialogs/AboutDialog.cpp index 46d2f429..bba3f78b 100644 --- a/launcher/ui/dialogs/AboutDialog.cpp +++ b/launcher/ui/dialogs/AboutDialog.cpp @@ -33,7 +33,7 @@ QString getCreditsHtml() stream.setCodec(QTextCodec::codecForName("UTF-8")); stream << "
\n"; // TODO: possibly retrieve from git history at build time? - stream << "

" << QObject::tr("Developers", "About Credits") << "

\n"; + stream << "

" << QObject::tr("MultiMC Developers", "About Credits") << "

\n"; stream << "

Andrew Okin <forkk@forkk.net>

\n"; stream << "

Petr Mrázek <peterix@gmail.com>

\n"; stream << "

Sky Welch <multimc@bunnies.io>

\n"; @@ -83,8 +83,12 @@ AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AboutDia ui->icon->setPixmap(APPLICATION->getThemedIcon("logo").pixmap(64)); ui->title->setText(launcherName); - ui->versionLabel->setText(tr("Version") +": " + BuildConfig.printableVersionString()); - ui->platformLabel->setText(tr("Platform") +": " + BuildConfig.BUILD_PLATFORM); + ui->versionLabel->setText(BuildConfig.printableVersionString()); + + if (!BuildConfig.BUILD_PLATFORM.isEmpty()) + ui->platformLabel->setText(tr("Platform") +": " + BuildConfig.BUILD_PLATFORM); + else + ui->platformLabel->setVisible(false); if (BuildConfig.VERSION_BUILD >= 0) ui->buildNumLabel->setText(tr("Build Number") +": " + QString::number(BuildConfig.VERSION_BUILD)); diff --git a/launcher/ui/dialogs/AboutDialog.ui b/launcher/ui/dialogs/AboutDialog.ui index 822c6f58..58275c66 100644 --- a/launcher/ui/dialogs/AboutDialog.ui +++ b/launcher/ui/dialogs/AboutDialog.ui @@ -86,6 +86,13 @@ Qt::AlignCenter + + + + + Qt::AlignCenter + + @@ -151,16 +158,6 @@ - - - - Version: - - - Qt::AlignCenter - - - -- cgit From 3aa9f5c376720f33c4ca77dc3c8803d6db5e7575 Mon Sep 17 00:00:00 2001 From: Jan200101 Date: Fri, 28 Jan 2022 19:42:30 +0100 Subject: Update rpm spec to support OpenSuse and conform to Fedora guidelines --- launcher/package/rpm/MultiMC5.spec | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'launcher') diff --git a/launcher/package/rpm/MultiMC5.spec b/launcher/package/rpm/MultiMC5.spec index 20839f11..4b7e5002 100644 --- a/launcher/package/rpm/MultiMC5.spec +++ b/launcher/package/rpm/MultiMC5.spec @@ -1,14 +1,20 @@ Name: MultiMC5 Version: 1.4 -Release: 3%{?dist} +Release: 4%{?dist} Summary: A local install wrapper for MultiMC License: ASL 2.0 URL: https://multimc.org -BuildArch: x86_64 +ExclusiveArch: %{ix86} x86_64 + +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib +Requires: zenity %{?suse_version:lib}qt5-qtbase wget xrandr +Provides: multimc = %{version} +Provides: MultiMC = %{version} +Provides: multimc5 = %{version} + -Requires: zenity qt5-qtbase wget xrandr -Provides: multimc MultiMC multimc5 %description A local install wrapper for MultiMC @@ -23,22 +29,29 @@ mkdir -p %{buildroot}/opt/multimc install -m 0644 ../ubuntu/multimc/opt/multimc/icon.svg %{buildroot}/opt/multimc/icon.svg install -m 0755 ../ubuntu/multimc/opt/multimc/run.sh %{buildroot}/opt/multimc/run.sh mkdir -p %{buildroot}/%{_datadir}/applications -install -m 0644 ../ubuntu/multimc/usr/share/applications/multimc.desktop %{buildroot}/%{_datadir}/applications/multimc.desktop +desktop-file-install --dir=%{buildroot}%{_datadir}/applications ../ubuntu/multimc/usr/share/applications/multimc.desktop + mkdir -p %{buildroot}/%{_datadir}/metainfo -install -m 0644 ../ubuntu/multimc/usr/share/metainfo/multimc.metainfo.xml %{buildroot}/%{_datadir}/metainfo/multimc.metainfo.xml +install -m 0644 ../ubuntu/multimc/usr/share/metainfo/multimc.metainfo.xml %{buildroot}/%{_metainfodir}/multimc.metainfo.xml mkdir -p %{buildroot}/%{_mandir}/man1 install -m 0644 ../ubuntu/multimc/usr/share/man/man1/multimc.1 %{buildroot}/%{_mandir}/man1/multimc.1 +%check +appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/multimc.metainfo.xml + %files %dir /opt/multimc /opt/multimc/icon.svg /opt/multimc/run.sh %{_datadir}/applications/multimc.desktop -%{_datadir}/metainfo/multimc.metainfo.xml -%dir /usr/share/man/man1 -%{_mandir}/man1/multimc.1.gz +%{_metainfodir}/multimc.metainfo.xml +%dir %{_mandir}/man1 +%{_mandir}/man1/multimc.1* %changelog +* Fri Jan 28 2022 Jan Drögehoff - 1.4-4 +- Update spec to support OpenSuse and conform to Fedora guidelines + * Sun Oct 03 2021 imperatorstorm <30777770+ImperatorStorm@users.noreply.github.com> - added manpage -- cgit From 0211ee3ef10ca169354ac939761f0128e16ff026 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 31 Jan 2022 09:09:58 -0500 Subject: Add "PolyMC Contributors" to Credits section This also adds a link to the PolyMC Contributors page on Github. --- launcher/ui/dialogs/AboutDialog.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'launcher') diff --git a/launcher/ui/dialogs/AboutDialog.cpp b/launcher/ui/dialogs/AboutDialog.cpp index bba3f78b..ef96cc23 100644 --- a/launcher/ui/dialogs/AboutDialog.cpp +++ b/launcher/ui/dialogs/AboutDialog.cpp @@ -32,6 +32,12 @@ QString getCreditsHtml() QTextStream stream(&output); stream.setCodec(QTextCodec::codecForName("UTF-8")); stream << "
\n"; + + stream << "

" << QObject::tr("PolyMC Developers", "About Credits") << "

\n"; + stream << "

swirl <swurl@swurl.xyz >

\n"; + stream << "

LennyMcLennington <lenny@sneed.church>

\n"; + stream << "
\n"; + // TODO: possibly retrieve from git history at build time? stream << "

" << QObject::tr("MultiMC Developers", "About Credits") << "

\n"; stream << "

Andrew Okin <forkk@forkk.net>

\n"; @@ -47,6 +53,7 @@ QString getCreditsHtml() stream << "

Kilobyte <stiepen22@gmx.de>

\n"; stream << "

Rootbear75 <@rootbear75>

\n"; stream << "

Zeker Zhayard <@Zeker_Zhayard>

\n"; + stream << "

Everyone else who contributed!

\n"; stream << "
\n"; stream << "
\n"; -- cgit