summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2016-08-10 08:41:58 +0200
committerPetr Mrázek <peterix@gmail.com>2016-08-10 08:41:58 +0200
commite2f3652a0f5fc51736cbda7ac4e337a597f3aed1 (patch)
treed7d25154db90d2db7724dfb6ee001ce0afee5e21 /api
parentc60db13af73523c08353f819cc2a8441a7ddbada (diff)
downloadMultiMC-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.txt2
-rw-r--r--api/logic/launch/LaunchTask.cpp12
-rw-r--r--api/logic/launch/LaunchTask.h12
-rw-r--r--api/logic/launch/LogModel.cpp135
-rw-r--r--api/logic/launch/LogModel.h51
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)
-};