未验证 提交 695f3c1f 编写于 作者: J Jim 提交者: GitHub

Merge pull request #2662 from WizardCM/log-dialog

Enhance Log dialog with description and Analyze button
......@@ -330,7 +330,10 @@ Output.BadPath.Text="The configured file output path is invalid. Please check yo
# log upload dialog text and messages
LogReturnDialog="Log Upload Successful"
LogReturnDialog.Description="Your log file has been uploaded. You can now share the URL for debugging or support purposes."
LogReturnDialog.Description.Crash="Your crash report has been uploaded. You can now share the URL for debugging purposes."
LogReturnDialog.CopyURL="Copy URL"
LogReturnDialog.AnalyzeURL="Analyze"
LogReturnDialog.ErrorUploadingLog="Error uploading log file"
# remux dialog
......
......@@ -14,6 +14,13 @@
<string>LogReturnDialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="description">
<property name="text">
<string>LogReturnDialog.Description</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
......@@ -33,6 +40,13 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="analyzeURL">
<property name="text">
<string>LogReturnDialog.AnalyzeURL</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
......
......@@ -5035,7 +5035,7 @@ static BPtr<char> ReadLogFile(const char *subdir, const char *log)
return file;
}
void OBSBasic::UploadLog(const char *subdir, const char *file)
void OBSBasic::UploadLog(const char *subdir, const char *file, const bool crash)
{
BPtr<char> fileString{ReadLogFile(subdir, file)};
......@@ -5046,6 +5046,7 @@ void OBSBasic::UploadLog(const char *subdir, const char *file)
return;
ui->menuLogFiles->setEnabled(false);
ui->menuCrashLogs->setEnabled(false);
stringstream ss;
ss << "OBS " << App()->GetVersionString() << " log file uploaded at "
......@@ -5061,8 +5062,13 @@ void OBSBasic::UploadLog(const char *subdir, const char *file)
"text/plain", ss.str().c_str());
logUploadThread.reset(thread);
connect(thread, &RemoteTextThread::Result, this,
&OBSBasic::logUploadFinished);
if (crash) {
connect(thread, &RemoteTextThread::Result, this,
&OBSBasic::crashUploadFinished);
} else {
connect(thread, &RemoteTextThread::Result, this,
&OBSBasic::logUploadFinished);
}
logUploadThread->start();
}
......@@ -5078,12 +5084,12 @@ void OBSBasic::on_actionShowLogs_triggered()
void OBSBasic::on_actionUploadCurrentLog_triggered()
{
UploadLog("obs-studio/logs", App()->GetCurrentLog());
UploadLog("obs-studio/logs", App()->GetCurrentLog(), false);
}
void OBSBasic::on_actionUploadLastLog_triggered()
{
UploadLog("obs-studio/logs", App()->GetLastLog());
UploadLog("obs-studio/logs", App()->GetLastLog(), false);
}
void OBSBasic::on_actionViewCurrentLog_triggered()
......@@ -5114,7 +5120,7 @@ void OBSBasic::on_actionShowCrashLogs_triggered()
void OBSBasic::on_actionUploadLastCrashLog_triggered()
{
UploadLog("obs-studio/crashes", App()->GetLastCrashLog());
UploadLog("obs-studio/crashes", App()->GetLastCrashLog(), true);
}
void OBSBasic::on_actionCheckForUpdates_triggered()
......@@ -5125,6 +5131,21 @@ void OBSBasic::on_actionCheckForUpdates_triggered()
void OBSBasic::logUploadFinished(const QString &text, const QString &error)
{
ui->menuLogFiles->setEnabled(true);
ui->menuCrashLogs->setEnabled(true);
if (text.isEmpty()) {
OBSMessageBox::critical(
this, QTStr("LogReturnDialog.ErrorUploadingLog"),
error);
return;
}
openLogDialog(text, false);
}
void OBSBasic::crashUploadFinished(const QString &text, const QString &error)
{
ui->menuLogFiles->setEnabled(true);
ui->menuCrashLogs->setEnabled(true);
if (text.isEmpty()) {
OBSMessageBox::critical(
......@@ -5132,13 +5153,18 @@ void OBSBasic::logUploadFinished(const QString &text, const QString &error)
error);
return;
}
openLogDialog(text, true);
}
void OBSBasic::openLogDialog(const QString &text, const bool crash)
{
obs_data_t *returnData = obs_data_create_from_json(QT_TO_UTF8(text));
string resURL = obs_data_get_string(returnData, "url");
QString logURL = resURL.c_str();
obs_data_release(returnData);
OBSLogReply logDialog(this, logURL);
OBSLogReply logDialog(this, logURL, crash);
logDialog.exec();
}
......
......@@ -301,7 +301,7 @@ private:
void UpdateVolumeControlsPeakMeterType();
void ClearVolumeControls();
void UploadLog(const char *subdir, const char *file);
void UploadLog(const char *subdir, const char *file, const bool crash);
void Save(const char *file);
void Load(const char *file);
......@@ -935,6 +935,8 @@ private slots:
void PauseToggled();
void logUploadFinished(const QString &text, const QString &error);
void crashUploadFinished(const QString &text, const QString &error);
void openLogDialog(const QString &text, const bool crash);
void updateCheckFinished();
......
......@@ -16,14 +16,23 @@
******************************************************************************/
#include <QClipboard>
#include <QUrl>
#include <QUrlQuery>
#include <QDesktopServices>
#include "window-log-reply.hpp"
#include "obs-app.hpp"
OBSLogReply::OBSLogReply(QWidget *parent, const QString &url)
OBSLogReply::OBSLogReply(QWidget *parent, const QString &url, const bool crash)
: QDialog(parent), ui(new Ui::OBSLogReply)
{
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
ui->setupUi(this);
ui->urlEdit->setText(url);
if (crash) {
ui->analyzeURL->hide();
ui->description->setText(
Str("LogReturnDialog.Description.Crash"));
}
installEventFilter(CreateShortcutFilter());
}
......@@ -33,3 +42,13 @@ void OBSLogReply::on_copyURL_clicked()
QClipboard *clipboard = QApplication::clipboard();
clipboard->setText(ui->urlEdit->text());
}
void OBSLogReply::on_analyzeURL_clicked()
{
QUrlQuery param;
param.addQueryItem("log_url",
QUrl::toPercentEncoding(ui->urlEdit->text()));
QUrl url("https://obsproject.com/tools/analyzer", QUrl::TolerantMode);
url.setQuery(param);
QDesktopServices::openUrl(url);
}
......@@ -27,8 +27,9 @@ private:
std::unique_ptr<Ui::OBSLogReply> ui;
public:
OBSLogReply(QWidget *parent, const QString &url);
OBSLogReply(QWidget *parent, const QString &url, const bool crash);
private slots:
void on_copyURL_clicked();
void on_analyzeURL_clicked();
};
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册