From 99e2e923d0c77b02f3fb4ff648ea916954868606 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- works/life/cpp-practicum/Record.cpp | 343 ------------------------------------ 1 file changed, 343 deletions(-) delete mode 100644 works/life/cpp-practicum/Record.cpp (limited to 'works/life/cpp-practicum/Record.cpp') diff --git a/works/life/cpp-practicum/Record.cpp b/works/life/cpp-practicum/Record.cpp deleted file mode 100644 index bdee28b..0000000 --- a/works/life/cpp-practicum/Record.cpp +++ /dev/null @@ -1,343 +0,0 @@ -#include "Record.hpp" - -#include - -void Record::WriteTo(QTextStream &stream) { - stream << books_.size() << ' ' << vendors_.size() << '\n'; - for (const auto &book : books_) { - stream << book << '\n'; - } - for (const auto &vendor : vendors_) { - stream << vendor << '\n'; - } -} - -void Record::ReadFrom(QTextStream &stream) { - books_.clear(); - vendors_.clear(); - - int book_count, vendor_count; - stream >> book_count >> vendor_count; - stream.skipWhiteSpace(); - for (int i = 0; i < book_count; i++) { - Book book; - stream >> book; - books_.push_back(std::move(book)); - } - for (int i = 0; i < vendor_count; i++) { - Vendor vendor; - stream >> vendor; - vendors_.push_back(std::move(vendor)); - } -} - -int BookModel::rowCount(const QModelIndex &parent) const { - if (parent.isValid()) - return 0; - return static_cast(record_->GetBooks().size()); -} - -int BookModel::columnCount(const QModelIndex &parent) const { - if (parent.isValid()) - return 0; - return 6; -} - -QVariant BookModel::headerData(int section, Qt::Orientation orientation, - int role) const { - if (role != Qt::DisplayRole) - return QVariant(); - if (orientation == Qt::Horizontal) { - switch (section) { - case 0: - return QStringLiteral("ISBN"); - case 1: - return QStringLiteral("标题"); - case 2: - return QStringLiteral("类型"); - case 3: - return QStringLiteral("作者"); - case 4: - return QStringLiteral("出版社"); - case 5: - return QStringLiteral("库存"); - default: - return QVariant(); - } - } - return QVariant(); -} - -QVariant BookModel::data(const QModelIndex &index, int role) const { - if (role != Qt::DisplayRole) - return QVariant(); - - if (!index.isValid()) - return QVariant(); - - if (index.row() >= static_cast(record_->GetBooks().size()) || - index.row() < 0) - return QVariant(); - - int row = index.row(); - const Book &book = record_->GetBooks()[row]; - - int col = index.column(); - switch (col) { - case 0: - return QString::fromStdU16String(book.GetIsbn()); - case 1: - return QString::fromStdU16String(book.GetTitle()); - case 2: - return QString::fromStdU16String(book.GetType()); - case 3: - return QString::fromStdU16String(book.GetAuthor()); - case 4: - return QString::fromStdU16String(book.GetPress()); - case 5: - return book.GetStockCount(); - default: - return QVariant(); - } -} - -bool BookModel::setData(const QModelIndex &index, const QVariant &value, - int role) { - if (index.isValid() && role == Qt::EditRole) { - int row = index.row(); - Book &book = record_->GetBooks()[row]; - - int col = index.column(); - switch (col) { - case 0: - if (!value.canConvert()) - return false; - book.SetIsbn(value.toString().toStdU16String()); - return true; - case 1: - if (!value.canConvert()) - return false; - book.SetTitle(value.toString().toStdU16String()); - emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole}); - return true; - case 2: - if (!value.canConvert()) - return false; - book.SetType(value.toString().toStdU16String()); - emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole}); - return true; - case 3: - if (!value.canConvert()) - return false; - book.SetAuthor(value.toString().toStdU16String()); - emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole}); - return true; - case 4: - if (!value.canConvert()) - return false; - book.SetPress(value.toString().toStdU16String()); - emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole}); - return true; - case 5: - if (!value.canConvert()) - return false; - book.SetStockCount(value.toInt()); - emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole}); - return true; - default: - return false; - } - } - return false; -} - -Qt::ItemFlags BookModel::flags(const QModelIndex &index) const { - if (!index.isValid()) - return Qt::ItemIsEnabled; - - return QAbstractTableModel::flags(index) | Qt::ItemIsEditable; -} - -bool BookModel::insertRows(int row, int count, const QModelIndex &parent) { - beginInsertRows(parent, row, row + count - 1); - for (int i = 0; i < count; i++) { - record_->GetBooks().insert(record_->GetBooks().cbegin() + row, Book()); - } - endInsertRows(); - return true; -} - -bool BookModel::removeRows(int row, int count, const QModelIndex &parent) { - beginRemoveRows(parent, row, row + count - 1); - record_->GetBooks().erase(record_->GetBooks().cbegin() + row, - record_->GetBooks().cbegin() + row + count); - endRemoveRows(); - return true; -} - -void BookModel::sort(int column, Qt::SortOrder order) { - if (column == 0) { - beginResetModel(); - if (order == Qt::AscendingOrder) { - std::sort(record_->GetBooks().begin(), record_->GetBooks().end(), - [](const Book &left, const Book &right) { - return left.GetIsbn() < right.GetIsbn(); - }); - } else { - std::sort(record_->GetBooks().begin(), record_->GetBooks().end(), - [](const Book &left, const Book &right) { - return left.GetIsbn() > right.GetIsbn(); - }); - } - endResetModel(); - } else if (column == 1) { - beginResetModel(); - if (order == Qt::AscendingOrder) { - std::sort(record_->GetBooks().begin(), record_->GetBooks().end(), - [](const Book &left, const Book &right) { - return left.GetTitle() < right.GetTitle(); - }); - } else { - std::sort(record_->GetBooks().begin(), record_->GetBooks().end(), - [](const Book &left, const Book &right) { - return left.GetTitle() > right.GetTitle(); - }); - } - endResetModel(); - } -} - -int VendorModel::rowCount(const QModelIndex &parent) const { - if (parent.isValid()) - return 0; - return static_cast(record_->GetVendors().size()); -} - -int VendorModel::columnCount(const QModelIndex &parent) const { - if (parent.isValid()) - return 0; - return 5; -} - -QVariant VendorModel::headerData(int section, Qt::Orientation orientation, - int role) const { - if (role != Qt::DisplayRole) - return QVariant(); - if (orientation == Qt::Horizontal) { - switch (section) { - case 0: - return QStringLiteral("编号"); - case 1: - return QStringLiteral("名称"); - case 2: - return QStringLiteral("类型"); - case 3: - return QStringLiteral("地址"); - case 4: - return QStringLiteral("电话"); - default: - return QVariant(); - } - } - return QVariant(); -} - -QVariant VendorModel::data(const QModelIndex &index, int role) const { - if (role != Qt::DisplayRole) - return QVariant(); - - if (!index.isValid()) - return QVariant(); - - if (index.row() >= static_cast(record_->GetVendors().size()) || - index.row() < 0) - return QVariant(); - - int row = index.row(); - const Vendor &vendor = record_->GetVendors()[row]; - - int col = index.column(); - switch (col) { - case 0: - return vendor.GetId(); - case 1: - return QString::fromStdU16String(vendor.GetName()); - case 2: - return QString::fromStdU16String(vendor.GetType()); - case 3: - return QString::fromStdU16String(vendor.GetAddress()); - case 4: - return QString::fromStdU16String(vendor.GetPhone()); - default: - return QVariant(); - } -} - -bool VendorModel::setData(const QModelIndex &index, const QVariant &value, - int role) { - if (index.isValid() && role == Qt::EditRole) { - int row = index.row(); - Vendor &vendor = record_->GetVendors()[row]; - - int col = index.column(); - switch (col) { - case 0: - if (!value.canConvert()) - return false; - vendor.SetId(value.toInt()); - return true; - case 1: - if (!value.canConvert()) - return false; - vendor.SetName(value.toString().toStdU16String()); - emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole}); - return true; - case 2: - if (!value.canConvert()) - return false; - vendor.SetType(value.toString().toStdU16String()); - emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole}); - return true; - case 3: - if (!value.canConvert()) - return false; - vendor.SetAddress(value.toString().toStdU16String()); - emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole}); - return true; - case 4: - if (!value.canConvert()) - return false; - vendor.SetPhone(value.toString().toStdU16String()); - emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole}); - return true; - default: - return false; - } - } - return false; -} - -Qt::ItemFlags VendorModel::flags(const QModelIndex &index) const { - if (!index.isValid()) - return Qt::ItemIsEnabled; - - return QAbstractTableModel::flags(index) | Qt::ItemIsEditable; -} - -bool VendorModel::insertRows(int row, int count, const QModelIndex &parent) { - beginInsertRows(parent, row, row + count - 1); - for (int i = 0; i < count; i++) { - record_->GetVendors().insert(record_->GetVendors().cbegin() + row, - Vendor()); - } - endInsertRows(); - return true; -} - -bool VendorModel::removeRows(int row, int count, const QModelIndex &parent) { - beginRemoveRows(parent, row, row + count - 1); - record_->GetVendors().erase(record_->GetVendors().cbegin() + row, - record_->GetVendors().cbegin() + row + count); - endRemoveRows(); - return true; -} -- cgit v1.2.3