#ifndef SCIQLOP_VARIABLEMODEL_H #define SCIQLOP_VARIABLEMODEL_H #include #include #include #include Q_DECLARE_LOGGING_CATEGORY(LOG_VariableModel) class IDataSeries; class Variable; /** * @brief The VariableModel class aims to hold the variables that have been created in SciQlop */ class VariableModel : public QAbstractTableModel { public: explicit VariableModel(QObject *parent = nullptr); /** * Creates a new variable in the model * @param name the name of the new variable * @param dateTime the dateTime of the new variable * @return the pointer to the new variable */ std::shared_ptr createVariable(const QString &name, const SqpDateTime &dateTime) noexcept; /** * Deletes a variable from the model, if it exists * @param variable the variable to delete */ void deleteVariable(std::shared_ptr variable) noexcept; std::shared_ptr variable(int index) const; // /////////////////////////// // // QAbstractTableModel methods // // /////////////////////////// // virtual int columnCount(const QModelIndex &parent = QModelIndex{}) const override; virtual int rowCount(const QModelIndex &parent = QModelIndex{}) const override; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; private: class VariableModelPrivate; spimpl::unique_impl_ptr impl; }; #endif // SCIQLOP_VARIABLEMODEL_H