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 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