diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-08-10 08:41:58 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-08-10 08:41:58 +0200 |
commit | e2f3652a0f5fc51736cbda7ac4e337a597f3aed1 (patch) | |
tree | d7d25154db90d2db7724dfb6ee001ce0afee5e21 /api | |
parent | c60db13af73523c08353f819cc2a8441a7ddbada (diff) | |
download | MultiMC-e2f3652a0f5fc51736cbda7ac4e337a597f3aed1.tar MultiMC-e2f3652a0f5fc51736cbda7ac4e337a597f3aed1.tar.gz MultiMC-e2f3652a0f5fc51736cbda7ac4e337a597f3aed1.tar.lz MultiMC-e2f3652a0f5fc51736cbda7ac4e337a597f3aed1.tar.xz MultiMC-e2f3652a0f5fc51736cbda7ac4e337a597f3aed1.zip |
Revert "NOISSUE rework of minecraft log"
This reverts commit fc198dd3085a2cd33fbaa7a3d2c95c2c8d3ee31a.
Diffstat (limited to 'api')
-rw-r--r-- | api/logic/CMakeLists.txt | 2 | ||||
-rw-r--r-- | api/logic/launch/LaunchTask.cpp | 12 | ||||
-rw-r--r-- | api/logic/launch/LaunchTask.h | 12 | ||||
-rw-r--r-- | api/logic/launch/LogModel.cpp | 135 | ||||
-rw-r--r-- | api/logic/launch/LogModel.h | 51 |
5 files changed, 8 insertions, 204 deletions
diff --git a/api/logic/CMakeLists.txt b/api/logic/CMakeLists.txt index 8a1f2f41..4514d8c3 100644 --- a/api/logic/CMakeLists.txt +++ b/api/logic/CMakeLists.txt @@ -119,8 +119,6 @@ set(LAUNCH_SOURCES launch/LaunchTask.h launch/LoggedProcess.cpp launch/LoggedProcess.h - launch/LogModel.cpp - launch/LogModel.h launch/MessageLevel.cpp launch/MessageLevel.h ) diff --git a/api/logic/launch/LaunchTask.cpp b/api/logic/launch/LaunchTask.cpp index 9c09caf4..5b7ff182 100644 --- a/api/logic/launch/LaunchTask.cpp +++ b/api/logic/launch/LaunchTask.cpp @@ -167,15 +167,6 @@ bool LaunchTask::abort() return false; } -shared_qobject_ptr<LogModel> LaunchTask::getLogModel() -{ - if(!m_logModel) - { - m_logModel.reset(new LogModel()); - } - return m_logModel; -} - void LaunchTask::onLogLines(const QStringList &lines, MessageLevel::Enum defaultLevel) { for (auto & line: lines) @@ -202,8 +193,7 @@ void LaunchTask::onLogLine(QString line, MessageLevel::Enum level) // censor private user info line = censorPrivateInfo(line); - auto &model = *getLogModel(); - model.append(level, line); + emit log(line, level); } void LaunchTask::emitSucceeded() diff --git a/api/logic/launch/LaunchTask.h b/api/logic/launch/LaunchTask.h index f2fb3a2c..447445ca 100644 --- a/api/logic/launch/LaunchTask.h +++ b/api/logic/launch/LaunchTask.h @@ -17,8 +17,6 @@ #pragma once #include <QProcess> -#include <QObjectPtr.h> -#include "LogModel.h" #include "BaseInstance.h" #include "MessageLevel.h" #include "LoggedProcess.h" @@ -82,8 +80,6 @@ public: /* methods */ */ virtual bool abort() override; - shared_qobject_ptr<LogModel> getLogModel(); - public: QString substituteVariables(const QString &cmd) const; QString censorPrivateInfo(QString in); @@ -102,6 +98,13 @@ signals: void requestLogging(); + /** + * @brief emitted when we want to log something + * @param text the text to log + * @param level the level to log at + */ + void log(QString text, MessageLevel::Enum level = MessageLevel::MultiMC); + public slots: void onLogLines(const QStringList& lines, MessageLevel::Enum defaultLevel = MessageLevel::MultiMC); void onLogLine(QString line, MessageLevel::Enum defaultLevel = MessageLevel::MultiMC); @@ -111,7 +114,6 @@ public slots: protected: /* data */ InstancePtr m_instance; - shared_qobject_ptr<LogModel> m_logModel; QList <std::shared_ptr<LaunchStep>> m_steps; QMap<QString, QString> m_censorFilter; int currentStep = -1; diff --git a/api/logic/launch/LogModel.cpp b/api/logic/launch/LogModel.cpp deleted file mode 100644 index c12a0488..00000000 --- a/api/logic/launch/LogModel.cpp +++ /dev/null @@ -1,135 +0,0 @@ -#include "LogModel.h" - -LogModel::LogModel(QObject *parent):QAbstractListModel(parent) -{ - m_content.resize(m_maxLines); -} - -int LogModel::rowCount(const QModelIndex &parent) const -{ - if (parent.isValid()) - return 0; - - return m_numLines; -} - -QVariant LogModel::data(const QModelIndex &index, int role) const -{ - if (index.row() < 0 || index.row() >= m_numLines) - return QVariant(); - - auto row = index.row(); - auto realRow = (row + m_firstLine) % m_maxLines; - if (role == Qt::DisplayRole || role == Qt::EditRole) - { - return m_content[realRow].line; - } - if(role == LevelRole) - { - return m_content[realRow].level; - } - - return QVariant(); -} - -void LogModel::append(MessageLevel::Enum level, QString line) -{ - int lineNum = (m_firstLine + m_numLines) % m_maxLines; - // overflow - if(m_numLines == m_maxLines) - { - if(m_stopOnOverflow) - { - // nothing more to do, the buffer is full - return; - } - beginRemoveRows(QModelIndex(), 0, 0); - m_firstLine = (m_firstLine + 1) % m_maxLines; - m_numLines --; - endRemoveRows(); - } - else if (m_numLines == m_maxLines - 1 && m_stopOnOverflow) - { - level = MessageLevel::Fatal; - line = m_overflowMessage; - } - beginInsertRows(QModelIndex(), m_numLines, m_numLines); - m_numLines ++; - m_content[lineNum].level = level; - m_content[lineNum].line = line; - endInsertRows(); -} - -void LogModel::clear() -{ - beginResetModel(); - m_firstLine = 0; - m_numLines = 0; - endResetModel(); -} - -QString LogModel::toPlainText() -{ - QString out; - out.reserve(m_numLines * 80); - for(int i = 0; i < m_numLines; i++) - { - QString & line = m_content[(m_firstLine + i) % m_maxLines].line; - out.append(line + '\n'); - } - out.squeeze(); - return out; -} - -void LogModel::setMaxLines(int maxLines) -{ - // no-op - if(maxLines == m_maxLines) - { - return; - } - // if it all still fits in the buffer, just resize it - if(m_firstLine + m_numLines < maxLines) - { - m_maxLines = maxLines; - m_content.resize(maxLines); - return; - } - // otherwise, we need to reorganize the data because it crosses the wrap boundary - QVector<entry> newContent; - newContent.resize(maxLines); - if(m_numLines <= maxLines) - { - // if it all fits in the new buffer, just copy it over - for(int i = 0; i < m_numLines; i++) - { - newContent[i] = m_content[(m_firstLine + i) % m_maxLines]; - } - m_content.swap(newContent); - } - else - { - // if it doesn't fit, part of the data needs to be thrown away (the oldest log messages) - int lead = m_numLines - maxLines; - beginRemoveRows(QModelIndex(), 0, lead - 1); - for(int i = 0; i < maxLines; i++) - { - newContent[i] = m_content[(m_firstLine + lead + i) % m_maxLines]; - } - m_numLines = m_maxLines; - m_content.swap(newContent); - endRemoveRows(); - } - m_firstLine = 0; - m_maxLines = maxLines; -} - -void LogModel::setStopOnOverflow(bool stop) -{ - m_stopOnOverflow = stop; -} - -void LogModel::setOverflowMessage(const QString& overflowMessage) -{ - m_overflowMessage = overflowMessage; -} diff --git a/api/logic/launch/LogModel.h b/api/logic/launch/LogModel.h deleted file mode 100644 index 87e6b583..00000000 --- a/api/logic/launch/LogModel.h +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include <QAbstractListModel> -#include <QString> -#include "MessageLevel.h" - -#include <multimc_logic_export.h> - -class MULTIMC_LOGIC_EXPORT LogModel : public QAbstractListModel -{ - Q_OBJECT -public: - explicit LogModel(QObject *parent = 0); - - int rowCount(const QModelIndex &parent = QModelIndex()) const; - QVariant data(const QModelIndex &index, int role) const; - - void append(MessageLevel::Enum, QString line); - void clear(); - - QString toPlainText(); - - void setMaxLines(int maxLines); - void setStopOnOverflow(bool stop); - void setOverflowMessage(const QString & overflowMessage); - - enum Roles - { - LevelRole = Qt::UserRole - }; - -private /* types */: - struct entry - { - MessageLevel::Enum level; - QString line; - }; - -private: /* data */ - QVector <entry> m_content; - int m_maxLines = 1000; - // first line in the circular buffer - int m_firstLine = 0; - // number of lines occupied in the circular buffer - int m_numLines = 0; - bool m_stopOnOverflow = false; - QString m_overflowMessage = "OVERFLOW"; - -private: - Q_DISABLE_COPY(LogModel) -}; |