Use separate window for viewing logs

Signed-off-by: Yihe Li <winmikedows@hotmail.com>
This commit is contained in:
Yihe Li 2025-06-05 07:18:07 +08:00
parent 1aa8d7bc13
commit e4a801fdf7
No known key found for this signature in database
8 changed files with 94 additions and 16 deletions

View file

@ -66,7 +66,6 @@
#include "ui/pages/global/LauncherPage.h" #include "ui/pages/global/LauncherPage.h"
#include "ui/pages/global/MinecraftPage.h" #include "ui/pages/global/MinecraftPage.h"
#include "ui/pages/global/ProxyPage.h" #include "ui/pages/global/ProxyPage.h"
#include "ui/pages/instance/OtherLogsPage.h"
#include "ui/setupwizard/AutoJavaWizardPage.h" #include "ui/setupwizard/AutoJavaWizardPage.h"
#include "ui/setupwizard/JavaWizardPage.h" #include "ui/setupwizard/JavaWizardPage.h"
@ -905,7 +904,6 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
m_globalSettingsProvider->addPage<APIPage>(); m_globalSettingsProvider->addPage<APIPage>();
m_globalSettingsProvider->addPage<ExternalToolsPage>(); m_globalSettingsProvider->addPage<ExternalToolsPage>();
m_globalSettingsProvider->addPage<ProxyPage>(); m_globalSettingsProvider->addPage<ProxyPage>();
m_globalSettingsProvider->addPageCreator([]() { return new OtherLogsPage("launcher-logs", tr("Logs"), "Launcher-Logs"); });
} }
PixmapCache::setInstance(new PixmapCache(this)); PixmapCache::setInstance(new PixmapCache(this));

View file

@ -1098,6 +1098,8 @@ SET(LAUNCHER_SOURCES
ui/dialogs/ResourceUpdateDialog.h ui/dialogs/ResourceUpdateDialog.h
ui/dialogs/InstallLoaderDialog.cpp ui/dialogs/InstallLoaderDialog.cpp
ui/dialogs/InstallLoaderDialog.h ui/dialogs/InstallLoaderDialog.h
ui/dialogs/ViewLogDialog.cpp
ui/dialogs/ViewLogDialog.h
ui/dialogs/skins/SkinManageDialog.cpp ui/dialogs/skins/SkinManageDialog.cpp
ui/dialogs/skins/SkinManageDialog.h ui/dialogs/skins/SkinManageDialog.h
@ -1256,6 +1258,7 @@ qt_wrap_ui(LAUNCHER_UI
ui/dialogs/ScrollMessageBox.ui ui/dialogs/ScrollMessageBox.ui
ui/dialogs/BlockedModsDialog.ui ui/dialogs/BlockedModsDialog.ui
ui/dialogs/ChooseProviderDialog.ui ui/dialogs/ChooseProviderDialog.ui
ui/dialogs/ViewLogDialog.ui
ui/dialogs/skins/SkinManageDialog.ui ui/dialogs/skins/SkinManageDialog.ui
) )

View file

@ -103,6 +103,7 @@
#include "ui/dialogs/NewInstanceDialog.h" #include "ui/dialogs/NewInstanceDialog.h"
#include "ui/dialogs/NewsDialog.h" #include "ui/dialogs/NewsDialog.h"
#include "ui/dialogs/ProgressDialog.h" #include "ui/dialogs/ProgressDialog.h"
#include "ui/dialogs/ViewLogDialog.h"
#include "ui/instanceview/InstanceDelegate.h" #include "ui/instanceview/InstanceDelegate.h"
#include "ui/instanceview/InstanceProxyModel.h" #include "ui/instanceview/InstanceProxyModel.h"
#include "ui/instanceview/InstanceView.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); ui->actionViewJavaFolder->setEnabled(BuildConfig.JAVA_DOWNLOADER_ENABLED);
} }
{ // logs upload { // logs viewing
connect(ui->actionViewLog, &QAction::triggered, this, [this] {
auto menu = new QMenu(this); ViewLogDialog dialog(this);
for (auto file : QDir("logs").entryInfoList(QDir::Files)) { dialog.exec();
auto action = menu->addAction(file.fileName()); });
connect(action, &QAction::triggered, this, [this, file] { GuiUtil::uploadPaste(file.fileName(), file, this); });
}
ui->actionUploadLog->setMenu(menu);
} }
// add the toolbar toggles to the view menu // add the toolbar toggles to the view menu

View file

@ -215,7 +215,7 @@
</property> </property>
<addaction name="actionClearMetadata"/> <addaction name="actionClearMetadata"/>
<addaction name="actionReportBug"/> <addaction name="actionReportBug"/>
<addaction name="actionUploadLog"/> <addaction name="actionViewLog"/>
<addaction name="actionAddToPATH"/> <addaction name="actionAddToPATH"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionMATRIX"/> <addaction name="actionMATRIX"/>
@ -663,16 +663,16 @@
<string>Clear cached metadata</string> <string>Clear cached metadata</string>
</property> </property>
</action> </action>
<action name="actionUploadLog"> <action name="actionViewLog">
<property name="icon"> <property name="icon">
<iconset theme="log"> <iconset theme="log">
<normaloff>.</normaloff>.</iconset> <normaloff>.</normaloff>.</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Upload logs</string> <string>View logs</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Upload launcher logs to the selected log provider</string> <string>View current and previous launcher logs</string>
</property> </property>
</action> </action>
<action name="actionAddToPATH"> <action name="actionAddToPATH">

View file

@ -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;
}

View file

@ -0,0 +1,22 @@
#pragma once
#include <QDialog>
#include <QHash>
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;
};

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ViewLogDialog</class>
<widget class="QDialog" name="ViewLogDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>825</width>
<height>782</height>
</rect>
</property>
<property name="windowTitle">
<string>View Launcher Logs</string>
</property>
<property name="sizeGripEnabled">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Close</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -231,7 +231,8 @@ void OtherLogsPage::on_btnReload_clicked()
if (!m_model) if (!m_model)
return; return;
m_model->clear(); m_model->clear();
m_container->refreshContainer(); if (m_container)
m_container->refreshContainer();
} else { } else {
reload(); reload();
} }
@ -358,7 +359,8 @@ void OtherLogsPage::reload()
void OtherLogsPage::on_btnPaste_clicked() 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() void OtherLogsPage::on_btnCopy_clicked()