From 791eb87afc69d1a1625a9be8aee56fe998a6d440 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 12 Apr 2023 00:36:09 +0800 Subject: [PATCH] Instantiate FileTagModel in FileDetails Signed-off-by: Claudio Cambra --- src/gui/filedetails/filedetails.cpp | 17 +++++++++++++++++ src/gui/filedetails/filedetails.h | 10 ++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/gui/filedetails/filedetails.cpp b/src/gui/filedetails/filedetails.cpp index 2f0e29a104..f2243e8409 100644 --- a/src/gui/filedetails/filedetails.cpp +++ b/src/gui/filedetails/filedetails.cpp @@ -14,6 +14,7 @@ #include +#include "accountstate.h" #include "filedetails.h" #include "folderman.h" @@ -71,6 +72,7 @@ void FileDetails::setLocalPath(const QString &localPath) _filelockState = _fileRecord._lockstate; updateLockExpireString(); + updateFileTagModel(file, folder); Q_EMIT fileChanged(); } @@ -153,4 +155,19 @@ bool FileDetails::isFolder() const return _fileInfo.isDir(); } +FileTagModel *FileDetails::fileTagModel() const +{ + return _fileTagModel.get(); +} + +void FileDetails::updateFileTagModel(const QString &serverRelPath, const Folder * const folder) +{ + Q_ASSERT(folder); + const auto account = folder->accountState()->account(); + Q_ASSERT(account); + + _fileTagModel = std::make_unique(serverRelPath, account); + Q_EMIT fileTagModelChanged(); +} + } // namespace OCC diff --git a/src/gui/filedetails/filedetails.h b/src/gui/filedetails/filedetails.h index 3a5d1e529d..d2d3243236 100644 --- a/src/gui/filedetails/filedetails.h +++ b/src/gui/filedetails/filedetails.h @@ -21,8 +21,12 @@ #include "common/syncjournalfilerecord.h" +#include "gui/filetagmodel.h" + namespace OCC { +class Folder; + class FileDetails : public QObject { Q_OBJECT @@ -33,6 +37,7 @@ class FileDetails : public QObject Q_PROPERTY(QString iconUrl READ iconUrl NOTIFY fileChanged) Q_PROPERTY(QString lockExpireString READ lockExpireString NOTIFY lockExpireStringChanged) Q_PROPERTY(bool isFolder READ isFolder NOTIFY isFolderChanged) + Q_PROPERTY(FileTagModel* fileTagModel READ fileTagModel NOTIFY fileTagModelChanged) public: explicit FileDetails(QObject *parent = nullptr); @@ -44,6 +49,7 @@ public: [[nodiscard]] QString iconUrl() const; [[nodiscard]] QString lockExpireString() const; [[nodiscard]] bool isFolder() const; + [[nodiscard]] FileTagModel *fileTagModel() const; public slots: void setLocalPath(const QString &localPath); @@ -53,10 +59,12 @@ signals: void fileChanged(); void lockExpireStringChanged(); void isFolderChanged(); + void fileTagModelChanged(); private slots: void refreshFileDetails(); void updateLockExpireString(); + void updateFileTagModel(const QString &serverRelPath, const Folder * const folder); private: QString _localPath; @@ -70,6 +78,8 @@ private: QTimer _filelockStateUpdateTimer; QLocale _locale; + + std::unique_ptr _fileTagModel; }; } // namespace OCC