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