diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 86e454802..a641a9d8a 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -66,7 +66,6 @@ #include "ui/pages/global/LauncherPage.h" #include "ui/pages/global/MinecraftPage.h" #include "ui/pages/global/ProxyPage.h" -#include "ui/pages/instance/OtherLogsPage.h" #include "ui/setupwizard/AutoJavaWizardPage.h" #include "ui/setupwizard/JavaWizardPage.h" @@ -905,7 +904,6 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_globalSettingsProvider->addPage(); m_globalSettingsProvider->addPage(); m_globalSettingsProvider->addPage(); - m_globalSettingsProvider->addPageCreator([]() { return new OtherLogsPage("launcher-logs", tr("Logs"), "Launcher-Logs"); }); } PixmapCache::setInstance(new PixmapCache(this)); diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index a7ccb809d..e9e32d481 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1098,6 +1098,8 @@ SET(LAUNCHER_SOURCES ui/dialogs/ResourceUpdateDialog.h ui/dialogs/InstallLoaderDialog.cpp ui/dialogs/InstallLoaderDialog.h + ui/dialogs/ViewLogDialog.cpp + ui/dialogs/ViewLogDialog.h ui/dialogs/skins/SkinManageDialog.cpp ui/dialogs/skins/SkinManageDialog.h @@ -1256,6 +1258,7 @@ qt_wrap_ui(LAUNCHER_UI ui/dialogs/ScrollMessageBox.ui ui/dialogs/BlockedModsDialog.ui ui/dialogs/ChooseProviderDialog.ui + ui/dialogs/ViewLogDialog.ui ui/dialogs/skins/SkinManageDialog.ui ) diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 455a95837..f68b94aca 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -103,6 +103,7 @@ #include "ui/dialogs/NewInstanceDialog.h" #include "ui/dialogs/NewsDialog.h" #include "ui/dialogs/ProgressDialog.h" +#include "ui/dialogs/ViewLogDialog.h" #include "ui/instanceview/InstanceDelegate.h" #include "ui/instanceview/InstanceProxyModel.h" #include "ui/instanceview/InstanceView.h" @@ -238,14 +239,11 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi ui->actionViewJavaFolder->setEnabled(BuildConfig.JAVA_DOWNLOADER_ENABLED); } - { // logs upload - - auto menu = new QMenu(this); - for (auto file : QDir("logs").entryInfoList(QDir::Files)) { - auto action = menu->addAction(file.fileName()); - connect(action, &QAction::triggered, this, [this, file] { GuiUtil::uploadPaste(file.fileName(), file, this); }); - } - ui->actionUploadLog->setMenu(menu); + { // logs viewing + connect(ui->actionViewLog, &QAction::triggered, this, [this] { + ViewLogDialog dialog(this); + dialog.exec(); + }); } // add the toolbar toggles to the view menu diff --git a/launcher/ui/MainWindow.ui b/launcher/ui/MainWindow.ui index 1499ec872..1d29ff628 100644 --- a/launcher/ui/MainWindow.ui +++ b/launcher/ui/MainWindow.ui @@ -215,7 +215,7 @@ - + @@ -663,16 +663,16 @@ Clear cached metadata - + .. - Upload logs + View logs - Upload launcher logs to the selected log provider + View current and previous launcher logs diff --git a/launcher/ui/dialogs/ViewLogDialog.cpp b/launcher/ui/dialogs/ViewLogDialog.cpp new file mode 100644 index 000000000..47c63d9cc --- /dev/null +++ b/launcher/ui/dialogs/ViewLogDialog.cpp @@ -0,0 +1,21 @@ +#include "ViewLogDialog.h" +#include "ui_ViewLogDialog.h" + +#include "ui/pages/instance/OtherLogsPage.h" + +ViewLogDialog::ViewLogDialog(QWidget* parent) + : QDialog(parent) + , ui(new Ui::ViewLogDialog) + , m_page(new OtherLogsPage("launcher-logs", tr("Launcher Logs"), "Launcher-Logs", nullptr, parent)) +{ + ui->setupUi(this); + ui->verticalLayout->insertWidget(0, m_page); + connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + m_page->opened(); +} + +ViewLogDialog::~ViewLogDialog() +{ + m_page->closed(); + delete ui; +} diff --git a/launcher/ui/dialogs/ViewLogDialog.h b/launcher/ui/dialogs/ViewLogDialog.h new file mode 100644 index 000000000..ebb9ef650 --- /dev/null +++ b/launcher/ui/dialogs/ViewLogDialog.h @@ -0,0 +1,22 @@ +#pragma once + +#include +#include + +namespace Ui { +class ViewLogDialog; +} + +class OtherLogsPage; + +class ViewLogDialog : public QDialog { + Q_OBJECT + + public: + explicit ViewLogDialog(QWidget* parent = nullptr); + ~ViewLogDialog(); + + private: + Ui::ViewLogDialog* ui; + OtherLogsPage* m_page; +}; diff --git a/launcher/ui/dialogs/ViewLogDialog.ui b/launcher/ui/dialogs/ViewLogDialog.ui new file mode 100644 index 000000000..4a7bb789e --- /dev/null +++ b/launcher/ui/dialogs/ViewLogDialog.ui @@ -0,0 +1,34 @@ + + + ViewLogDialog + + + + 0 + 0 + 825 + 782 + + + + View Launcher Logs + + + true + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + + diff --git a/launcher/ui/pages/instance/OtherLogsPage.cpp b/launcher/ui/pages/instance/OtherLogsPage.cpp index 281e5be27..b1f0c6507 100644 --- a/launcher/ui/pages/instance/OtherLogsPage.cpp +++ b/launcher/ui/pages/instance/OtherLogsPage.cpp @@ -231,7 +231,8 @@ void OtherLogsPage::on_btnReload_clicked() if (!m_model) return; m_model->clear(); - m_container->refreshContainer(); + if (m_container) + m_container->refreshContainer(); } else { reload(); } @@ -358,7 +359,8 @@ void OtherLogsPage::reload() void OtherLogsPage::on_btnPaste_clicked() { - GuiUtil::uploadPaste(m_currentFile, ui->text->toPlainText(), this); + QString name = m_currentFile.isEmpty() ? displayName() : m_currentFile; + GuiUtil::uploadPaste(name, ui->text->toPlainText(), this); } void OtherLogsPage::on_btnCopy_clicked()