/*! * * Copyright (c) 2021-2023 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VLogFilesModel.h * \author (last) Behrouz NematiPour * \date (last) 02-Feb-2023 * \author (original) Behrouz NematiPour * \date (original) 11-May-2021 * */ #pragma once // Qt #include #include #include // Project #include "main.h" #include "VView.h" #include "MLogFile.h" // forward declarations class tst_views; namespace View { /*! * \brief The VLogFilesModel class * Interface between QML and the log files * \details Exposes log files to QML and provides an interface to list and select the files * References: https://doc.qt.io/qt-5.12/qtquick-modelviewsdata-cppmodels.html * */ class VLogFilesModel : public QAbstractListModel { Q_OBJECT public: // Note: VIEW_DEC_CLASS(VLogFilesModel) requires QObject as the parent, so it's necessary to define it here // Otherwise a VIEW_DEC_CLASS macro could allow specifying the parent class with QObject as the default explicit VLogFilesModel(QAbstractListModel *parent = nullptr); enum LogFileDataRole { FilePathRole = Qt::UserRole + 1 , FileNameRole , FileSizeRole , FileLogTypeRole , FileModificationDateTimeRole , }; int rowCount (const QModelIndex &parent = QModelIndex()) const; QVariant data (const QModelIndex &index, int role = Qt::DisplayRole) const; public slots: void doInit(); void refreshModel(); void removeAllRows(); private slots: void onWatchDirectoryChange(const QString &vDirectory); void onTotalModelRefresh(bool vIsStillProcessing); protected: virtual void updateModelOnDirChange(const QString &vDirectory) = 0; virtual void initConnections(); void updateLogModel(const QString &vDirectory); QList getLogListFromDir(Storage::Logger::LogType vType, const QString &vDirectory, bool vCheckPreInclude = false); QHash roleNames() const; QList _logFiles; private: virtual void populateLogModel(); }; class VSDCardLogFilesModel : public VLogFilesModel { public: explicit VSDCardLogFilesModel(QAbstractListModel *parent = nullptr); protected: virtual void updateModelOnDirChange(const QString &vDirectory) override; private: virtual void populateLogModel() override; }; class VUSBLogFilesModel : public VLogFilesModel { public: explicit VUSBLogFilesModel(QAbstractListModel *parent = nullptr); protected: virtual void initConnections() override; virtual void updateModelOnDirChange(const QString &vDirectory) override; private: virtual void populateLogModel() override; }; }