#ifndef DESIGNATORMAPPINGMODEL_H #define DESIGNATORMAPPINGMODEL_H #include #include #include #include // Forward declaration class DataBaseController; class DesignatorMappingItem { public: QString designator; QString singularName; QString pluralName; bool isCustom; DesignatorMappingItem() : isCustom(false) {} DesignatorMappingItem(const QString &des, const QString &sing, const QString &plur, bool custom = false) : designator(des), singularName(sing), pluralName(plur), isCustom(custom) {} // Операторы сравнения для использования в QList bool operator==(const DesignatorMappingItem &other) const { return designator == other.designator && singularName == other.singularName && pluralName == other.pluralName && isCustom == other.isCustom; } bool operator!=(const DesignatorMappingItem &other) const { return !(*this == other); } }; class DesignatorMappingModel : public QObject { Q_OBJECT Q_PROPERTY(QList mappings READ mappings WRITE setMappings NOTIFY mappingsChanged FINAL) public: explicit DesignatorMappingModel(QObject *parent = nullptr); // Установка контроллера БД void setDatabaseController(DataBaseController *dbController); void loadDataFromDatabase(); // Новый метод для загрузки данных после инициализации БД void saveToDatabase(); void loadFromDatabase(); // Основные методы QList mappings() const; void setMappings(const QList &newMappings); // Методы для работы с маппингом QString getComponentType(const QString &designator, bool isPlural = false) const; void addMapping(const DesignatorMappingItem &item); void updateMapping(const QString &designator, const DesignatorMappingItem &item); void removeMapping(const QString &designator); void clearCustomMappings(); // Методы для работы с настройками void resetToDefaults(); bool isModified() const; void setModified(bool modified); signals: void mappingsChanged(); void mappingAdded(const QString &designator); void mappingUpdated(const QString &designator); void mappingRemoved(const QString &designator); void settingsModified(); private: QList m_mappings; QMap m_mappingMap; bool m_isModified; DataBaseController *m_dbController; void updateMappingMap(); void initializeDefaultMappings(); // Статические константы для значений по умолчанию static const QList DEFAULT_MAPPINGS; }; #endif // DESIGNATORMAPPINGMODEL_H