File indexing completed on 2024-05-05 10:08:42
0001 /* 0002 SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QRecursiveMutex> 0010 #include <QString> 0011 0012 #include "globals.h" 0013 0014 #include "logLine.h" 0015 0016 #include "logFile.h" 0017 #include "logViewColumn.h" 0018 #include "logViewColumns.h" 0019 0020 class LogViewModel; 0021 class LogMode; 0022 0023 class Analyzer : public QObject 0024 { 0025 Q_OBJECT 0026 0027 public: 0028 enum ReadingMode { UpdatingRead, FullRead }; 0029 Q_DECLARE_FLAGS(ReadingModes, ReadingMode) 0030 0031 enum LogFileSortMode { AscendingSortedLogFile, FilteredLogFile, UnsortedLogFile }; 0032 Q_DECLARE_FLAGS(LogFileSortModes, LogFileSortMode) 0033 0034 explicit Analyzer(LogMode *mode); 0035 0036 ~Analyzer() override; 0037 0038 virtual void watchLogFiles(bool enabled) = 0; 0039 0040 virtual void setLogFiles(const QVector<LogFile> &logFiles) = 0; 0041 0042 virtual LogViewColumns initColumns() = 0; 0043 0044 void setLogViewModel(LogViewModel *logViewModel); 0045 0046 bool isParsingPaused() const; 0047 0048 public Q_SLOTS: 0049 void setParsingPaused(bool paused); 0050 0051 Q_SIGNALS: 0052 void statusBarChanged(const QString &message); 0053 void errorOccured(const QString &title, const QString &message); 0054 void statusChanged(const QString &status); 0055 0056 void openingProgressed(); 0057 0058 void logUpdated(int lineTotal); 0059 0060 void readFileStarted(const LogMode &logMode, const LogFile &logFile, int fileIndex, int fileCount); 0061 void readEnded(); 0062 0063 protected: 0064 void informOpeningProgress(int currentPosition, int total); 0065 0066 bool mParsingPaused = false; 0067 LogViewModel *mLogViewModel = nullptr; 0068 LogMode *const mLogMode; 0069 QRecursiveMutex mInsertionLocking; 0070 long mLogLineInternalIdGenerator = 0; 0071 };