1 #include <cstring>
2 #include <cstdarg>
3 #include "logdialog.h"
4 #include "ui_logdialog.h"
5 #include "burner.h"
6
7 LogDialog *LogDialog::m_instance = nullptr;
8
LogDialog(QWidget * parent)9 LogDialog::LogDialog(QWidget *parent) :
10 QDialog(parent),
11 ui(new Ui::LogDialog)
12 {
13 ui->setupUi(this);
14 setWindowTitle("Messages");
15 bprintf = &LogDialog::qprintf;
16 }
17
~LogDialog()18 LogDialog::~LogDialog()
19 {
20 delete ui;
21 m_instance = nullptr;
22 }
23
qprintf(INT32 level,TCHAR * fmt,...)24 INT32 LogDialog::qprintf(INT32 level, TCHAR *fmt, ...)
25 {
26
27 LogDialog *p = LogDialog::get();
28 if (!p)
29 return 0;
30
31 static const QColor colorLevels[4] = {
32 QColor( 0, 0, 0),
33 QColor( 0, 0, 127),
34 QColor( 0, 127, 0),
35 QColor(127, 0, 0)
36 };
37 if (level >= 4)
38 level = 0;
39
40 const int maxBuffer = 1024;
41 char strBuffer[maxBuffer];
42
43 va_list args;
44 va_start (args, fmt);
45 ::vsnprintf(strBuffer, maxBuffer, fmt, args);
46 va_end(args);
47
48 p->ui->teLogger->setTextColor(colorLevels[level]);
49 p->ui->teLogger->append(strBuffer);
50 return 1;
51 }
52
get(QWidget * parent)53 LogDialog *LogDialog::get(QWidget *parent)
54 {
55 if (!m_instance)
56 m_instance = new LogDialog(parent);
57 return m_instance;
58 }
59
60