This repository has been archived on 2026-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
powersync-app/nymea-app/applogcontroller.h
2019-03-12 13:15:15 +01:00

62 lines
1.4 KiB
C++

#ifndef APPLOGCONTROLLER_H
#define APPLOGCONTROLLER_H
#include <QObject>
#include <QFile>
#include <QQmlEngine>
#include <QAbstractListModel>
class AppLogController : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(bool canWriteLogs READ canWriteLogs CONSTANT)
Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
public:
enum Type {
TypeInfo,
TypeWarning
};
Q_ENUM(Type)
enum Roles {
RoleText,
RoleType
};
Q_ENUM(Roles)
static QObject* appLogControllerProvider(QQmlEngine *engine, QJSEngine *scriptEngine);
static AppLogController* instance();
bool canWriteLogs() const;
bool enabled() const;
void setEnabled(bool enabled);
int rowCount(const QModelIndex &parent) const override;
QVariant data(const QModelIndex &parent, int role) const override;
QHash<int, QByteArray> roleNames() const override;
Q_INVOKABLE void toClipboard();
signals:
void enabledChanged();
private:
explicit AppLogController(QObject *parent = nullptr);
static QtMessageHandler s_oldLogMessageHandler;
static void logMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message);
void append(const QString &message, Type type = TypeInfo);
void activate();
void deactivate();
QFile m_logFile;
QStringList m_buffer;
QList<Type> m_types;
};
#endif // APPLOGCONTROLLER_H