Files
GostGenerator/model/projectsettingsmodel.h
T

92 lines
4.1 KiB
C++

#ifndef PROJECTSETTINGSMODEL_H
#define PROJECTSETTINGSMODEL_H
#include <QObject>
#include <QString>
#include <QStringList>
#include <QMap>
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<QString, QString> m_columnMappingSettings;
// Хранилище размеров шрифта для разных типов документов
// Ключ: "documentType", Значение: размер шрифта (по умолчанию 12)
QMap<QString, int> m_fontSizes;
// Хранилище поджима по ширине для разных типов документов
// Ключ: "documentType", Значение: поджим (100 = нормальный, по умолчанию 100)
QMap<QString, int> m_fontStretches;
// Контроллер БД для сохранения настроек
class DataBaseController *m_databaseController;
// Статические константы для значений по умолчанию
static const QStringList DEFAULT_COLUMN_MAPPINGS;
static const QString DEFAULT_VARIANT;
};
#endif // PROJECTSETTINGSMODEL_H