{
if (parent.isValid()) {
return 0;
+ } else if (_maxTags <= 0) {
+ return totalTags();
+ } else {
+ return qMin(totalTags(), maxTags());
}
-
- return _tags.count();
}
QVariant FileTagModel::data(const QModelIndex &index, int role) const
beginResetModel();
_tags = result.value(QStringLiteral("tags")).toStringList();
+ Q_EMIT totalTagsChanged();
endResetModel();
}
{
beginResetModel();
_tags.clear();
+ Q_EMIT totalTagsChanged();
endResetModel();
fetchFileTags();
resetForNewFile();
}
+int FileTagModel::maxTags() const
+{
+ return _maxTags;
+}
+
+void FileTagModel::setMaxTags(const int maxTags)
+{
+ if (_maxTags == maxTags) {
+ return;
+ }
+
+ _maxTags = maxTags;
+ Q_EMIT maxTagsChanged();
+}
+
+int FileTagModel::totalTags() const
+{
+ return _tags.count();
+}
+
}
Q_PROPERTY(QString serverRelativePath READ serverRelativePath WRITE setServerRelativePath NOTIFY serverRelativePathChanged)
Q_PROPERTY(AccountPtr account READ account WRITE setAccount NOTIFY accountChanged)
+ Q_PROPERTY(int maxTags READ maxTags WRITE setMaxTags NOTIFY maxTagsChanged)
+ Q_PROPERTY(int totalTags READ totalTags NOTIFY totalTagsChanged)
+
public:
explicit FileTagModel(const QString &serverRelativePath, const AccountPtr &account, QObject * const parent = nullptr);
[[nodiscard]] QString serverRelativePath() const;
[[nodiscard]] AccountPtr account() const;
+ [[nodiscard]] int maxTags() const;
+ [[nodiscard]] int totalTags() const;
+
signals:
void serverRelativePathChanged();
void accountChanged();
+ void maxTagsChanged();
+ void totalTagsChanged();
+
public slots:
void setServerRelativePath(const QString &serverRelativePath);
void setAccount(const OCC::AccountPtr &account);
+ void setMaxTags(const int maxTags);
+
void resetForNewFile();
private slots:
QString _serverRelativePath;
AccountPtr _account;
QStringList _tags;
+
+ int _maxTags = 0;
+ int _totalTags = 0;
};
}