File indexing completed on 2024-05-12 17:24:10
0001 // SPDX-FileCopyrightText: 2023 Mathis <mbb@kaidan.im> 0002 // SPDX-License-Identifier: LGPL-2.0-or-later 0003 0004 #pragma once 0005 0006 #include "database.h" 0007 #include <QAbstractListModel> 0008 0009 class PlantsModel: public QAbstractListModel 0010 { 0011 Q_OBJECT 0012 0013 Q_PROPERTY(Summary summary READ summary NOTIFY summaryChanged) 0014 0015 public: 0016 enum Summary { 0017 NothingToDo, 0018 SomeNeedWater 0019 }; 0020 Q_ENUM(Summary); 0021 0022 explicit PlantsModel(QObject *parent = nullptr); 0023 0024 int rowCount(const QModelIndex&)const override; 0025 enum Role { 0026 PlantID, 0027 Name, 0028 Species, 0029 ImgUrl, 0030 WaterInterval, 0031 Location, 0032 DateOfBirth, 0033 LastWatered, 0034 WantsToBeWateredIn, 0035 CurrentHealth, 0036 }; 0037 QHash<int, QByteArray> roleNames()const override; 0038 QVariant data(const QModelIndex& index, int role) const override; 0039 Q_INVOKABLE void addPlant(const QString &name, const QString &species, const QString &imgUrl, const int waterInterval, const QString location, const int dateOfBirth, const int health); 0040 Q_INVOKABLE void editPlant(const DB::Plant::Id plantId, const QString &name, const QString &species, const QString &imgUrl, const int waterInterval, const QString location, const int dateOfBirth); 0041 Q_INVOKABLE void deletePlant(const int plantId); 0042 0043 Summary summary() const; 0044 Q_SIGNAL void summaryChanged(); 0045 0046 private: 0047 std::vector<DB::Plant> m_data; 0048 };