#ifndef PROJECTSETTINGSMODEL_H #define PROJECTSETTINGSMODEL_H #include #include #include #include class ProjectSettingsModel : public QObject { Q_OBJECT Q_PROPERTY(QString currentVariant READ currentVariant WRITE setCurrentVariant NOTIFY currentVariantChanged FINAL) Q_PROPERTY(QStringList columnMappings READ columnMappings WRITE setColumnMappings NOTIFY columnMappingsChanged FINAL) Q_PROPERTY(QStringList availableVariants READ availableVariants WRITE setAvailableVariants NOTIFY availableVariantsChanged FINAL) Q_PROPERTY(QStringList availableProperties READ availableProperties WRITE setAvailableProperties NOTIFY availablePropertiesChanged FINAL) public: explicit ProjectSettingsModel(QObject *parent = nullptr); // Текущий вариант исполнения QString currentVariant() const; void setCurrentVariant(const QString &newCurrentVariant); // Настройки столбцов QStringList columnMappings() const; void setColumnMappings(const QStringList &newColumnMappings); // Доступные варианты QStringList availableVariants() const; void setAvailableVariants(const QStringList &newAvailableVariants); // Доступные свойства компонентов QStringList availableProperties() const; void setAvailableProperties(const QStringList &newAvailableProperties); // Методы для работы с настройками void resetToDefaults(); bool isModified() const; void setModified(bool modified); // Методы для работы с настройками маппинга для разных типов документов void setColumnMapping(const QString &documentType, int columnIndex, const QString &propertyName); QString getColumnMapping(const QString &documentType, int columnIndex) const; QStringList getColumnMappings(const QString &documentType) const; void clearColumnMappings(const QString &documentType); // Методы для работы с размером шрифта для разных типов документов void setFontSize(const QString &documentType, int fontSize); int getFontSize(const QString &documentType) const; // Методы для работы с поджимом по ширине void setFontStretch(const QString &documentType, int stretch); int getFontStretch(const QString &documentType) const; // Метод для установки контроллера БД void setDatabaseController(class DataBaseController *controller); signals: void currentVariantChanged(); void columnMappingsChanged(); void availableVariantsChanged(); void availablePropertiesChanged(); void settingsModified(); private: QString m_currentVariant; QStringList m_columnMappings; QStringList m_availableVariants; QStringList m_availableProperties; bool m_isModified; // Хранилище настроек маппинга для разных типов документов // Ключ: "documentType_columnIndex", Значение: "propertyName" QMap m_columnMappingSettings; // Хранилище размеров шрифта для разных типов документов // Ключ: "documentType", Значение: размер шрифта (по умолчанию 12) QMap m_fontSizes; // Хранилище поджима по ширине для разных типов документов // Ключ: "documentType", Значение: поджим (100 = нормальный, по умолчанию 100) QMap m_fontStretches; // Контроллер БД для сохранения настроек class DataBaseController *m_databaseController; // Статические константы для значений по умолчанию static const QStringList DEFAULT_COLUMN_MAPPINGS; static const QString DEFAULT_VARIANT; }; #endif // PROJECTSETTINGSMODEL_H