87 lines
2.9 KiB
C++
87 lines
2.9 KiB
C++
#ifndef DESIGNATORMAPPINGMODEL_H
|
|
#define DESIGNATORMAPPINGMODEL_H
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include <QList>
|
|
#include <QMap>
|
|
|
|
// 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<DesignatorMappingItem> 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<DesignatorMappingItem> mappings() const;
|
|
void setMappings(const QList<DesignatorMappingItem> &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<DesignatorMappingItem> m_mappings;
|
|
QMap<QString, DesignatorMappingItem> m_mappingMap;
|
|
bool m_isModified;
|
|
DataBaseController *m_dbController;
|
|
|
|
void updateMappingMap();
|
|
void initializeDefaultMappings();
|
|
|
|
// Статические константы для значений по умолчанию
|
|
static const QList<DesignatorMappingItem> DEFAULT_MAPPINGS;
|
|
};
|
|
|
|
#endif // DESIGNATORMAPPINGMODEL_H
|