From 8f0d2cb890199384fabf015a576b61435c80aedc Mon Sep 17 00:00:00 2001 From: Matt Gajownik Date: Mon, 6 Apr 2020 21:37:14 +1000 Subject: [PATCH 1/4] UI: Hide Help icon in Log Reply window --- UI/window-log-reply.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/UI/window-log-reply.cpp b/UI/window-log-reply.cpp index 7be665e47..debca31aa 100644 --- a/UI/window-log-reply.cpp +++ b/UI/window-log-reply.cpp @@ -22,6 +22,7 @@ OBSLogReply::OBSLogReply(QWidget *parent, const QString &url) : QDialog(parent), ui(new Ui::OBSLogReply) { + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); ui->setupUi(this); ui->urlEdit->setText(url); From c878bfcb1f12129d290fad0aef0866d936b324bf Mon Sep 17 00:00:00 2001 From: Matt Gajownik Date: Tue, 7 Apr 2020 20:22:05 +1000 Subject: [PATCH 2/4] UI: Differentiate between crash & session log dialogs --- UI/window-basic-main.cpp | 40 +++++++++++++++++++++++++++++++++------- UI/window-basic-main.hpp | 4 +++- UI/window-log-reply.cpp | 3 ++- UI/window-log-reply.hpp | 2 +- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 6bb34ec53..1deea52c4 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -5016,7 +5016,7 @@ static BPtr 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 fileString{ReadLogFile(subdir, file)}; @@ -5027,6 +5027,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 " @@ -5042,8 +5043,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(); } @@ -5059,12 +5065,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() @@ -5095,7 +5101,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() @@ -5106,6 +5112,7 @@ 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( @@ -5113,13 +5120,32 @@ void OBSBasic::logUploadFinished(const QString &text, const QString &error) 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( + this, QTStr("LogReturnDialog.ErrorUploadingLog"), + 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(); } diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 7d47ce286..344f5777b 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -292,7 +292,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); @@ -923,6 +923,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(); diff --git a/UI/window-log-reply.cpp b/UI/window-log-reply.cpp index debca31aa..57e23d292 100644 --- a/UI/window-log-reply.cpp +++ b/UI/window-log-reply.cpp @@ -19,7 +19,7 @@ #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); @@ -27,6 +27,7 @@ OBSLogReply::OBSLogReply(QWidget *parent, const QString &url) ui->urlEdit->setText(url); installEventFilter(CreateShortcutFilter()); + UNUSED_PARAMETER(crash); } void OBSLogReply::on_copyURL_clicked() diff --git a/UI/window-log-reply.hpp b/UI/window-log-reply.hpp index 9fcab20c1..c0a9e272e 100644 --- a/UI/window-log-reply.hpp +++ b/UI/window-log-reply.hpp @@ -27,7 +27,7 @@ private: std::unique_ptr ui; public: - OBSLogReply(QWidget *parent, const QString &url); + OBSLogReply(QWidget *parent, const QString &url, const bool crash); private slots: void on_copyURL_clicked(); From c7eaee632aa09b58e848e76a5e591d23d469f8cf Mon Sep 17 00:00:00 2001 From: Matt Gajownik Date: Mon, 6 Apr 2020 21:37:46 +1000 Subject: [PATCH 3/4] UI: Add description to Log Reply window --- UI/data/locale/en-US.ini | 2 ++ UI/forms/OBSLogReply.ui | 7 +++++++ UI/window-log-reply.cpp | 5 ++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index eef5ba45a..c52ff833d 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -333,6 +333,8 @@ 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.ErrorUploadingLog="Error uploading log file" diff --git a/UI/forms/OBSLogReply.ui b/UI/forms/OBSLogReply.ui index 63fb7c041..0eb477e10 100644 --- a/UI/forms/OBSLogReply.ui +++ b/UI/forms/OBSLogReply.ui @@ -14,6 +14,13 @@ LogReturnDialog + + + + LogReturnDialog.Description + + + diff --git a/UI/window-log-reply.cpp b/UI/window-log-reply.cpp index 57e23d292..6ff856872 100644 --- a/UI/window-log-reply.cpp +++ b/UI/window-log-reply.cpp @@ -25,9 +25,12 @@ OBSLogReply::OBSLogReply(QWidget *parent, const QString &url, const bool crash) setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); ui->setupUi(this); ui->urlEdit->setText(url); + if (crash) { + ui->description->setText( + Str("LogReturnDialog.Description.Crash")); + } installEventFilter(CreateShortcutFilter()); - UNUSED_PARAMETER(crash); } void OBSLogReply::on_copyURL_clicked() From 9d89de79f93bcc9b4ebb9fe18f6e63996b83e795 Mon Sep 17 00:00:00 2001 From: Matt Gajownik Date: Mon, 6 Apr 2020 21:39:09 +1000 Subject: [PATCH 4/4] UI: Add button to Analyzer in the Log Reply window --- UI/data/locale/en-US.ini | 1 + UI/forms/OBSLogReply.ui | 7 +++++++ UI/window-log-reply.cpp | 14 ++++++++++++++ UI/window-log-reply.hpp | 1 + 4 files changed, 23 insertions(+) diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index c52ff833d..fd7d209d1 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -336,6 +336,7 @@ 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 diff --git a/UI/forms/OBSLogReply.ui b/UI/forms/OBSLogReply.ui index 0eb477e10..6d4b7f430 100644 --- a/UI/forms/OBSLogReply.ui +++ b/UI/forms/OBSLogReply.ui @@ -40,6 +40,13 @@ + + + + LogReturnDialog.AnalyzeURL + + + diff --git a/UI/window-log-reply.cpp b/UI/window-log-reply.cpp index 6ff856872..099f85765 100644 --- a/UI/window-log-reply.cpp +++ b/UI/window-log-reply.cpp @@ -16,6 +16,9 @@ ******************************************************************************/ #include +#include +#include +#include #include "window-log-reply.hpp" #include "obs-app.hpp" @@ -26,6 +29,7 @@ OBSLogReply::OBSLogReply(QWidget *parent, const QString &url, const bool crash) ui->setupUi(this); ui->urlEdit->setText(url); if (crash) { + ui->analyzeURL->hide(); ui->description->setText( Str("LogReturnDialog.Description.Crash")); } @@ -38,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); +} diff --git a/UI/window-log-reply.hpp b/UI/window-log-reply.hpp index c0a9e272e..746d1f466 100644 --- a/UI/window-log-reply.hpp +++ b/UI/window-log-reply.hpp @@ -31,4 +31,5 @@ public: private slots: void on_copyURL_clicked(); + void on_analyzeURL_clicked(); };