File indexing completed on 2024-12-01 04:58:37

0001 /*
0002     SPDX-FileCopyrightText: 2009 George Kiagiadakis <gkiagia@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 #ifndef DRKONQI_H
0008 #define DRKONQI_H
0009 
0010 #include <QString>
0011 
0012 class QWidget;
0013 
0014 class SystemInformation;
0015 class DebuggerManager;
0016 class CrashedApplication;
0017 class AbstractDrKonqiBackend;
0018 
0019 class DrKonqi
0020 {
0021 public:
0022     static bool init();
0023 
0024     static SystemInformation *systemInformation();
0025     static DebuggerManager *debuggerManager();
0026     static CrashedApplication *crashedApplication();
0027 
0028     static void saveReport(const QString &reportText, QWidget *parent = nullptr);
0029     static void setSignal(int signal);
0030     static void setAppName(const QString &appName);
0031     static void setAppPath(const QString &appPath);
0032     static void setAppVersion(const QString &appVersion);
0033     static void setBugAddress(const QString &bugAddress);
0034     static void setProgramName(const QString &programName);
0035     static void setProductName(const QString &productName);
0036     static void setPid(int pid);
0037     static void setKdeinit(bool kdeinit);
0038     static void setSafer(bool safer);
0039     static void setRestarted(bool restarted);
0040     static void setKeepRunning(bool keepRunning);
0041     static void setThread(int thread);
0042     static void setStartupId(const QString &startupId);
0043 
0044     static int signal();
0045     static const QString &appName();
0046     static const QString &appPath();
0047     static const QString &appVersion();
0048     static const QString &bugAddress();
0049     static const QString &programName();
0050     static const QString &productName();
0051     static int pid();
0052     static bool isKdeinit();
0053     static bool isSafer();
0054     static bool isRestarted();
0055     static bool isKeepRunning();
0056     static int thread();
0057     static bool ignoreQuality();
0058     // Whether bugstest.kde.org is used.
0059     static bool isTestingBugzilla();
0060     static const QString &kdeBugzillaURL();
0061     static const QString &startupId();
0062     static QString backendClassName();
0063 
0064     // An ephemeral crash is one that cannot be restarted at a later point.
0065     // e.g. KCrashBackend is ephemeral, CoredumpBackend is not.
0066     static bool isEphemeralCrash();
0067 
0068     // Clean before quitting. This is not meant to ever get called if the quitting isn't the direct result of
0069     // an intentional quit. The primary effect of this function is that the backend will clean up persistent
0070     // backing data, such as coredumpd metadata files. We only want this to happen when we are certain
0071     // that the user has seen the crash but chosen to ignore it (e.g. closed the dialog window)
0072     static void cleanupBeforeQuit();
0073 
0074     // Whether to use the minimalistic UI or not. Defaults to false.
0075     static bool minimalMode();
0076 
0077     static DrKonqi *instance();
0078     QString m_glRenderer;
0079     QString m_exceptionName;
0080     QString m_exceptionWhat;
0081 
0082 private:
0083     DrKonqi();
0084     ~DrKonqi();
0085 
0086     SystemInformation *m_systemInformation = nullptr;
0087     AbstractDrKonqiBackend *m_backend = nullptr;
0088 
0089     int m_signal;
0090     QString m_appName;
0091     QString m_appPath;
0092     QString m_appVersion;
0093     QString m_bugAddress;
0094     QString m_programName;
0095     QString m_productName;
0096     int m_pid;
0097     bool m_kdeinit;
0098     bool m_safer;
0099     bool m_restarted;
0100     bool m_keepRunning;
0101     int m_thread;
0102     QString m_startupId;
0103 };
0104 
0105 #endif