1 #include "crash-report.hpp"
2 #include <QApplication>
3 #include <QFontDatabase>
4 #include <QPlainTextEdit>
5 #include <QPushButton>
6 #include <QVBoxLayout>
7 #include <QHBoxLayout>
8 #include <QClipboard>
9 #include "qt-wrappers.hpp"
10 
OBSCrashReport(QWidget * parent,const char * text)11 OBSCrashReport::OBSCrashReport(QWidget *parent, const char *text)
12 	: QDialog(parent)
13 {
14 	QPushButton *copyButton = new QPushButton;
15 	copyButton->setText("Copy crash log");
16 
17 	QPushButton *exitButton = new QPushButton;
18 	exitButton->setText("Exit");
19 
20 	textBox = new QPlainTextEdit;
21 	textBox->setPlainText(QT_UTF8(text));
22 	textBox->setLineWrapMode(QPlainTextEdit::NoWrap);
23 	textBox->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
24 
25 	QHBoxLayout *buttonLayout = new QHBoxLayout;
26 	buttonLayout->addWidget(copyButton);
27 	buttonLayout->addWidget(exitButton);
28 
29 	QVBoxLayout *mainLayout = new QVBoxLayout;
30 	mainLayout->addWidget(textBox);
31 	mainLayout->addItem(buttonLayout);
32 
33 	setLayout(mainLayout);
34 
35 	QWidget::connect(copyButton, SIGNAL(clicked()), this,
36 			 SLOT(CopyClicked()));
37 	QWidget::connect(exitButton, SIGNAL(clicked()), this,
38 			 SLOT(ExitClicked()));
39 
40 	resize(800, 600);
41 	setWindowTitle("Oops, OBS has crashed!");
42 }
43 
ExitClicked()44 void OBSCrashReport::ExitClicked()
45 {
46 	exit(-1);
47 }
48 
CopyClicked()49 void OBSCrashReport::CopyClicked()
50 {
51 	QApplication::clipboard()->setText(textBox->toPlainText());
52 }
53