File indexing completed on 2024-11-03 11:08:40

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 shutdownSaveReport();
0030     static void setSignal(int signal);
0031     static void setAppName(const QString &appName);
0032     static void setAppPath(const QString &appPath);
0033     static void setAppVersion(const QString &appVersion);
0034     static void setBugAddress(const QString &bugAddress);
0035     static void setProgramName(const QString &programName);
0036     static void setProductName(const QString &productName);
0037     static void setPid(int pid);
0038     static void setKdeinit(bool kdeinit);
0039     static void setSafer(bool safer);
0040     static void setRestarted(bool restarted);
0041     static void setKeepRunning(bool keepRunning);
0042     static void setThread(int thread);
0043     static void setStartupId(const QString &startupId);
0044 
0045     static int signal();
0046     static const QString &appName();
0047     static const QString &appPath();
0048     static const QString &appVersion();
0049     static const QString &bugAddress();
0050     static const QString &programName();
0051     static const QString &productName();
0052     static int pid();
0053     static bool isKdeinit();
0054     static bool isSafer();
0055     static bool isRestarted();
0056     static bool isKeepRunning();
0057     static int thread();
0058     static bool ignoreQuality();
0059     // Whether bugstest.kde.org is used.
0060     static bool isTestingBugzilla();
0061     static const QString &kdeBugzillaURL();
0062     static const QString &startupId();
0063     static QString backendClassName();
0064 
0065     // An ephemeral crash is one that cannot be restarted at a later point.
0066     // e.g. KCrashBackend is ephemeral, CoredumpBackend is not.
0067     static bool isEphemeralCrash();
0068 
0069     // Clean before quitting. This is not meant to ever get called if the quitting isn't the direct result of
0070     // an intentional quit. The primary effect of this function is that the backend will clean up persistent
0071     // backing data, such as coredumpd metadata files. We only want this to happen when we are certain
0072     // that the user has seen the crash but chosen to ignore it (e.g. closed the dialog window)
0073     static void cleanupBeforeQuit();
0074 
0075 private:
0076     DrKonqi();
0077     ~DrKonqi();
0078     static DrKonqi *instance();
0079 
0080     SystemInformation *m_systemInformation = nullptr;
0081     AbstractDrKonqiBackend *m_backend = nullptr;
0082 
0083     int m_signal;
0084     QString m_appName;
0085     QString m_appPath;
0086     QString m_appVersion;
0087     QString m_bugAddress;
0088     QString m_programName;
0089     QString m_productName;
0090     int m_pid;
0091     bool m_kdeinit;
0092     bool m_safer;
0093     bool m_restarted;
0094     bool m_keepRunning;
0095     int m_thread;
0096     QString m_startupId;
0097 };
0098 
0099 #endif