1 /******************************************************************* 2 * reportinterface.h 3 * SPDX-FileCopyrightText: 2009, 2011 Dario Andres Rodriguez <andresbajotierra@gmail.com> 4 * SPDX-FileCopyrightText: 2009 George Kiagiadakis <gkiagia@users.sourceforge.net> 5 * 6 * SPDX-License-Identifier: GPL-2.0-or-later 7 * 8 ******************************************************************/ 9 10 #ifndef REPORTINTERFACE__H 11 #define REPORTINTERFACE__H 12 13 #include <QObject> 14 #include <QStringList> 15 16 namespace Bugzilla 17 { 18 class NewBug; 19 } 20 21 class BugzillaManager; 22 class ProductMapping; 23 class ApplicationDetailsExamples; 24 25 class ReportInterface : public QObject 26 { 27 Q_OBJECT 28 public: 29 enum Reproducible { 30 ReproducibleUnsure, 31 ReproducibleNever, 32 ReproducibleSometimes, 33 ReproducibleEverytime, 34 }; 35 36 enum class Backtrace { 37 Complete, 38 Reduced, 39 Exclude, 40 }; 41 42 enum class DrKonqiStamp { 43 Include, 44 Exclude, 45 }; 46 47 explicit ReportInterface(QObject *parent = nullptr); 48 49 void setBugAwarenessPageData(bool, Reproducible, bool, bool, bool); 50 bool isBugAwarenessPageDataUseful() const; 51 52 int selectedOptionsRating() const; 53 54 QStringList firstBacktraceFunctions() const; 55 void setFirstBacktraceFunctions(const QStringList &functions); 56 57 QString backtrace() const; 58 void setBacktrace(const QString &backtrace); 59 60 QString title() const; 61 void setTitle(const QString &text); 62 63 void setDetailText(const QString &text); 64 void setPossibleDuplicates(const QStringList &duplicatesList); 65 66 QString generateReportFullText(DrKonqiStamp stamp, Backtrace inlineBacktrace) const; 67 68 Bugzilla::NewBug newBugReportTemplate() const; 69 70 QStringList relatedBugzillaProducts() const; 71 72 bool isWorthReporting() const; 73 74 // Zero means creating a new bug report 75 void setAttachToBugNumber(uint); 76 uint attachToBugNumber() const; 77 78 // Zero means there is no duplicate 79 void setDuplicateId(uint); 80 uint duplicateId() const; 81 82 void setPossibleDuplicatesByQuery(const QStringList &); 83 84 BugzillaManager *bugzillaManager() const; 85 ApplicationDetailsExamples *appDetailsExamples() const; 86 ProductMapping *productMapping() const; 87 userCanProvideActionsAppDesktop()88 bool userCanProvideActionsAppDesktop() const 89 { 90 return m_provideActionsApplicationDesktop; 91 } 92 userCanProvideUnusualBehavior()93 bool userCanProvideUnusualBehavior() const 94 { 95 return m_provideUnusualBehavior; 96 } 97 userCanProvideApplicationConfigDetails()98 bool userCanProvideApplicationConfigDetails() const 99 { 100 return m_provideApplicationConfigurationDetails; 101 } 102 103 public Q_SLOTS: 104 void sendBugReport(); 105 106 private Q_SLOTS: 107 void sendUsingDefaultProduct() const; 108 // Attach backtrace to bug and use collected report as comment. 109 void attachBacktraceWithReport(); 110 void attachSent(int); 111 112 Q_SIGNALS: 113 void reportSent(int); 114 void sendReportError(const QString &); 115 116 private: 117 // Attach backtrace to bug. Only used internally when the comment isn't 118 // meant to be the full report. 119 void attachBacktrace(const QString &comment); 120 121 QString generateAttachmentComment() const; 122 123 // Information the user can provide 124 bool m_userRememberCrashSituation; 125 Reproducible m_reproducible; 126 bool m_provideActionsApplicationDesktop; 127 bool m_provideUnusualBehavior; 128 bool m_provideApplicationConfigurationDetails; 129 130 QString m_backtrace; 131 QStringList m_firstBacktraceFunctions; 132 133 QString m_reportTitle; 134 QString m_reportDetailText; 135 QStringList m_possibleDuplicates; 136 137 QStringList m_allPossibleDuplicatesByQuery; 138 139 uint m_attachToBugNumber; 140 uint m_duplicate; 141 142 ProductMapping *m_productMapping = nullptr; 143 BugzillaManager *m_bugzillaManager = nullptr; 144 ApplicationDetailsExamples *m_appDetailsExamples = nullptr; 145 }; 146 147 #endif 148