PonyPlayer
crashreporter.hpp
浏览该文件的文档.
1//
2// Created by ColorsWind on 2022/6/3.
3//
4
5#pragma once
6#include <QtCore>
7
8#include <QFile>
9#include <QGuiApplication>
10#include <QProcessEnvironment>
11#include <QDesktopServices>
12#include <QClipboard>
13#include <utility>
14#include <filesystem>
15#include "platform.hpp"
16constexpr const static char* ISSUE_URL = "https://github.com/SCUT-SE-ProjectMP/PonyPlayer/issues";
17
18class CrashReporter : public QObject {
19 Q_OBJECT
20 Q_PROPERTY(QString crashMessage READ getCrashMessage FINAL)
21 Q_PROPERTY(QString logFile READ getLogFile FINAL)
22private:
23 QString crashMessage;
24 QString logFile;
25 QProcess process;
26 [[nodiscard]] const QString &getCrashMessage() const {
27 return crashMessage;
28 }
29
30 [[nodiscard]] const QString &getLogFile() const {
31 return logFile;
32 }
33
34public slots:
35
36 Q_INVOKABLE void openIssueBrowser() {
37 QDesktopServices::openUrl(QUrl(ISSUE_URL));
38 };
39
40 Q_INVOKABLE void copyLogPath() {
41 QClipboard *clipboard = QGuiApplication::clipboard();
42 clipboard->setText(logFile);
43 };
44
45 Q_INVOKABLE void restartApplication() {
46 int ret = process.startDetached();
47 QGuiApplication::exit(ret - 1);
48 }
49
50public:
51 CrashReporter(QString crashMessage, const QString& logFile, const QString& program, const QStringList& arguments, QObject *parent = nullptr) : QObject(parent),
52 crashMessage(std::move(crashMessage)), logFile(QFileInfo(logFile).absoluteFilePath()), process() {
53 process.setProgram(program);
54 process.setArguments(arguments);
55
56 }
57};
Definition: crashreporter.hpp:18
QString logFile
Definition: crashreporter.hpp:21
Q_INVOKABLE void openIssueBrowser()
Definition: crashreporter.hpp:36
Q_INVOKABLE void copyLogPath()
Definition: crashreporter.hpp:40
Q_INVOKABLE void restartApplication()
Definition: crashreporter.hpp:45
CrashReporter(QString crashMessage, const QString &logFile, const QString &program, const QStringList &arguments, QObject *parent=nullptr)
Definition: crashreporter.hpp:51
QString crashMessage
Definition: crashreporter.hpp:20