/* Copyright (C) 2012 Sebastian Herbord. All rights reserved. This file is part of Mod Organizer. Mod Organizer is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Mod Organizer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ #ifndef LOGBUFFER_H #define LOGBUFFER_H #include "copyeventfilter.h" #include "shared/appconfig.h" #include #include #include class OrganizerCore; class LogModel : public QAbstractItemModel { Q_OBJECT public: static void create(); static LogModel& instance(); void add(MOBase::log::Entry e); void clear(); const std::deque& entries() const; QString formattedMessage(const QModelIndex& index) const; protected: QModelIndex index(int row, int column, const QModelIndex& parent) const override; QModelIndex parent(const QModelIndex& child) const override; int rowCount(const QModelIndex& parent) const override; int columnCount(const QModelIndex& parent) const override; QVariant data(const QModelIndex& index, int role) const override; QVariant headerData(int section, Qt::Orientation ori, int role = Qt::DisplayRole) const override; private: std::deque m_entries; LogModel(); void onEntryAdded(MOBase::log::Entry e); }; class LogList : public QTreeView { Q_OBJECT; public: LogList(QWidget* parent = nullptr); void setCore(OrganizerCore& core); void copyToClipboard(); void clear(); void openLogsFolder(); QMenu* createMenu(QWidget* parent = nullptr); private: OrganizerCore* m_core; QTimer m_timer; CopyEventFilter m_copyFilter; void onContextMenu(const QPoint& pos); void onNewEntry(); }; void logToStdout(bool b); void initLogging(); bool setLogDirectory(const QString& dir); #endif // LOGBUFFER_H