diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-02-12 15:55:21 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-02-12 15:55:21 +0800 |
commit | 10eb95869601e145b1d8bc909424777c25752d51 (patch) | |
tree | 49449a4076ded9bd937a51679318edbe2a532cae /works/life/cpp-practicum/Record.hpp | |
parent | 29ba3e88b1a7425fe00af0005b8a8228103aa21c (diff) | |
parent | f8c10dd1fc55e60f35286475356e48c4f642eb63 (diff) | |
download | crupest-10eb95869601e145b1d8bc909424777c25752d51.tar.gz crupest-10eb95869601e145b1d8bc909424777c25752d51.tar.bz2 crupest-10eb95869601e145b1d8bc909424777c25752d51.zip |
import(life): IMPORT crupest/life COMPLETE.
Diffstat (limited to 'works/life/cpp-practicum/Record.hpp')
-rw-r--r-- | works/life/cpp-practicum/Record.hpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/works/life/cpp-practicum/Record.hpp b/works/life/cpp-practicum/Record.hpp new file mode 100644 index 0000000..c379f04 --- /dev/null +++ b/works/life/cpp-practicum/Record.hpp @@ -0,0 +1,76 @@ +#pragma once
+#include "Base.hpp"
+
+#include "Book.hpp"
+#include "Vendor.hpp"
+
+#include <QAbstractTableModel>
+#include <QTextStream>
+#include <optional>
+#include <vector>
+
+class Record final {
+public:
+ Record() = default;
+
+ CRU_DEFAULT_COPY(Record);
+ CRU_DEFAULT_MOVE(Record);
+
+ ~Record() = default;
+
+public:
+ void WriteTo(QTextStream &stream);
+ void ReadFrom(QTextStream &stream);
+
+ std::vector<Book> &GetBooks() { return books_; }
+ std::vector<Vendor> &GetVendors() { return vendors_; }
+
+private:
+ std::vector<Book> books_;
+ std::vector<Vendor> vendors_;
+};
+
+class BookModel : public QAbstractTableModel {
+public:
+ explicit BookModel(Record *record) : record_(record) {}
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent = QModelIndex()) const override;
+ QVariant headerData(int section, Qt::Orientation orientation,
+ int role = Qt::DisplayRole) const override;
+ QVariant data(const QModelIndex &index,
+ int role = Qt::DisplayRole) const override;
+ bool setData(const QModelIndex &index, const QVariant &value,
+ int role = Qt::EditRole) override;
+ Qt::ItemFlags flags(const QModelIndex &index) const override;
+ bool insertRows(int row, int count,
+ const QModelIndex &parent = QModelIndex()) override;
+ bool removeRows(int row, int count,
+ const QModelIndex &parent = QModelIndex()) override;
+ void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override;
+
+private:
+ Record *record_;
+};
+
+class VendorModel : public QAbstractTableModel {
+public:
+ explicit VendorModel(Record *record) : record_(record) {}
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent = QModelIndex()) const override;
+ QVariant headerData(int section, Qt::Orientation orientation,
+ int role = Qt::DisplayRole) const override;
+ QVariant data(const QModelIndex &index,
+ int role = Qt::DisplayRole) const override;
+ bool setData(const QModelIndex &index, const QVariant &value,
+ int role = Qt::EditRole) override;
+ Qt::ItemFlags flags(const QModelIndex &index) const override;
+ bool insertRows(int row, int count,
+ const QModelIndex &parent = QModelIndex()) override;
+ bool removeRows(int row, int count,
+ const QModelIndex &parent = QModelIndex()) override;
+
+private:
+ Record *record_;
+};
|