all repos — mgba @ e0a6af087e83d79b53ad5352511c7e02c557b93f

mGBA Game Boy Advance Emulator

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}