syncthingtray/model/syncthingrecentchangesmodel.h
Martchus 19bede39a2 Simplify coloring of common ForkAwesome icons
The normal QPalette can be used to determine the icon color so it is
unnecessary to use the flag for custom bright colors here (which is only
intended for colors which are not on the standard QPalette).
2021-10-16 21:20:12 +02:00

73 lines
2.2 KiB
C++

#ifndef DATA_SYNCTHINGRECENTCHANGESMODEL_H
#define DATA_SYNCTHINGRECENTCHANGESMODEL_H
#include "./syncthingmodel.h"
#include <syncthingconnector/syncthingconnectionstatus.h>
#include <syncthingconnector/syncthingdir.h>
#include <deque>
namespace Data {
struct LIB_SYNCTHING_MODEL_EXPORT SyncthingRecentChange {
QString directoryId;
QString directoryName;
SyncthingFileChange fileChange;
};
class LIB_SYNCTHING_MODEL_EXPORT SyncthingRecentChangesModel : public SyncthingModel {
Q_OBJECT
Q_PROPERTY(int maxRows READ maxRows WRITE setMaxRows)
public:
enum SyncthingRecentChangesModelRole {
Action = Qt::UserRole + 1,
ActionIcon,
ModifiedBy,
DirectoryId,
DirectoryName,
Path,
EventTime,
ExtendedAction,
ItemType,
};
explicit SyncthingRecentChangesModel(SyncthingConnection &connection, int maxRows = 200, QObject *parent = nullptr);
public Q_SLOTS:
QHash<int, QByteArray> roleNames() const override;
const QVector<int> &colorRoles() const override;
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
QModelIndex parent(const QModelIndex &child) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
QVariant data(const QModelIndex &index, int role) const override;
bool setData(const QModelIndex &index, const QVariant &value, int role) override;
int rowCount(const QModelIndex &parent) const override;
int columnCount(const QModelIndex &parent) const override;
int maxRows() const;
void setMaxRows(int maxRows);
private Q_SLOTS:
void fileChanged(const SyncthingDir &dir, int index, const SyncthingFileChange &change);
void handleConfigInvalidated() override;
void handleNewConfigAvailable() override;
void handleStatusChanged(SyncthingStatus status);
void handleForkAwesomeIconsChanged() override;
private:
void ensureWithinLimit();
std::deque<SyncthingRecentChange> m_changes;
int m_maxRows;
};
inline int SyncthingRecentChangesModel::maxRows() const
{
return m_maxRows;
}
} // namespace Data
Q_DECLARE_METATYPE(Data::SyncthingRecentChange)
#endif // DATA_SYNCTHINGRECENTCHANGESMODEL_H