src/platform/qt/LogController.cpp (view raw)
1/* Copyright (c) 2013-2015 Jeffrey Pfau
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6#include "LogController.h"
7
8using namespace QGBA;
9
10LogController::LogController(int levels, QObject* parent)
11 : QObject(parent)
12 , m_logLevel(levels)
13{
14}
15
16void LogController::postLog(int level, const QString& string) {
17 if (!(m_logLevel & level)) {
18 return;
19 }
20 emit logPosted(level, string);
21}
22
23void LogController::setLevels(int levels) {
24 m_logLevel = levels;
25 emit levelsSet(levels);
26}
27
28void LogController::enableLevels(int levels) {
29 m_logLevel |= levels;
30 emit levelsEnabled(levels);
31}
32
33void LogController::disableLevels(int levels) {
34 m_logLevel &= ~levels;
35 emit levelsDisabled(levels);
36}
37
38QString LogController::toString(int level) {
39 switch (level) {
40 case GBA_LOG_DEBUG:
41 return tr("DEBUG");
42 case GBA_LOG_STUB:
43 return tr("STUB");
44 case GBA_LOG_INFO:
45 return tr("INFO");
46 case GBA_LOG_WARN:
47 return tr("WARN");
48 case GBA_LOG_ERROR:
49 return tr("ERROR");
50 case GBA_LOG_FATAL:
51 return tr("FATAL");
52 case GBA_LOG_GAME_ERROR:
53 return tr("GAME ERROR");
54 case GBA_LOG_SWI:
55 return tr("SWI");
56 case GBA_LOG_STATUS:
57 return tr("STATUS");
58 case GBA_LOG_SIO:
59 return tr("SIO");
60 }
61 return QString();
62}
63
64LogController::Stream::Stream(LogController* controller, int level)
65 : m_log(controller)
66 , m_level(level)
67{
68}
69
70LogController::Stream::~Stream() {
71 m_log->postLog(m_level, m_queue.join(" "));
72}
73
74LogController::Stream& LogController::Stream::operator<<(const QString& string) {
75 m_queue.append(string);
76 return *this;
77}