Add initial project structure with essential files including .gitignore, application resources, and various model and view components for the application. Implemented asynchronous parsing support and database structure checks.

This commit is contained in:
2025-12-08 15:21:18 +03:00
parent 4f8c90c15b
commit 3467003721
110 changed files with 35406 additions and 0 deletions
+135
View File
@@ -0,0 +1,135 @@
#include "adddesignatordialog.h"
#include "../model/designatormappingmodel.h"
#include <QRegularExpression>
AddDesignatorDialog::AddDesignatorDialog(QWidget *parent)
: QDialog(parent)
{
setUp();
}
void AddDesignatorDialog::setUp()
{
setWindowTitle(tr("Добавить дезигнатор"));
setModal(true);
setFixedSize(400, 200);
setUpLayout();
setUpConnections();
validateInputs();
}
void AddDesignatorDialog::setUpLayout()
{
QVBoxLayout *mainLayout = new QVBoxLayout(this);
// Группа для ввода данных
QGroupBox *inputGroup = new QGroupBox(tr("Информация о дезигнаторе"), this);
QVBoxLayout *inputLayout = new QVBoxLayout(inputGroup);
// Дезигнатор
QHBoxLayout *designatorLayout = new QHBoxLayout;
QLabel *designatorLabel = new QLabel(tr("Дезигнатор (1-2 буквы):"), this);
m_designatorEdit = new QLineEdit(this);
m_designatorEdit->setPlaceholderText(tr("Например: R, BA"));
m_designatorEdit->setMaxLength(2);
// Валидатор для дезигнатора (только латинские буквы)
QRegularExpression regex("^[A-Z]{1,2}$");
m_designatorValidator = new QRegularExpressionValidator(regex, this);
m_designatorEdit->setValidator(m_designatorValidator);
designatorLayout->addWidget(designatorLabel);
designatorLayout->addWidget(m_designatorEdit);
// Единственное число
QHBoxLayout *singularLayout = new QHBoxLayout;
QLabel *singularLabel = new QLabel(tr("Единственное число:"), this);
m_singularNameEdit = new QLineEdit(this);
m_singularNameEdit->setPlaceholderText(tr("Например: Резистор"));
singularLayout->addWidget(singularLabel);
singularLayout->addWidget(m_singularNameEdit);
// Множественное число
QHBoxLayout *pluralLayout = new QHBoxLayout;
QLabel *pluralLabel = new QLabel(tr("Множественное число:"), this);
m_pluralNameEdit = new QLineEdit(this);
m_pluralNameEdit->setPlaceholderText(tr("Например: Резисторы"));
pluralLayout->addWidget(pluralLabel);
pluralLayout->addWidget(m_pluralNameEdit);
// Добавляем все в layout группы
inputLayout->addLayout(designatorLayout);
inputLayout->addLayout(singularLayout);
inputLayout->addLayout(pluralLayout);
// Кнопки
QHBoxLayout *buttonsLayout = new QHBoxLayout;
m_okButton = new QPushButton(tr("OK"), this);
m_cancelButton = new QPushButton(tr("Отмена"), this);
buttonsLayout->addStretch();
buttonsLayout->addWidget(m_okButton);
buttonsLayout->addWidget(m_cancelButton);
// Добавляем все в основной layout
mainLayout->addWidget(inputGroup);
mainLayout->addLayout(buttonsLayout);
setLayout(mainLayout);
}
void AddDesignatorDialog::setUpConnections()
{
connect(m_designatorEdit, &QLineEdit::textChanged,
this, &AddDesignatorDialog::onDesignatorChanged);
connect(m_singularNameEdit, &QLineEdit::textChanged,
this, &AddDesignatorDialog::validateInputs);
connect(m_pluralNameEdit, &QLineEdit::textChanged,
this, &AddDesignatorDialog::validateInputs);
connect(m_okButton, &QPushButton::clicked,
this, &QDialog::accept);
connect(m_cancelButton, &QPushButton::clicked,
this, &QDialog::reject);
}
void AddDesignatorDialog::onDesignatorChanged()
{
QString text = m_designatorEdit->text().toUpper();
if (text != m_designatorEdit->text()) {
m_designatorEdit->setText(text);
}
validateInputs();
}
void AddDesignatorDialog::validateInputs()
{
bool isValid = !m_designatorEdit->text().isEmpty() &&
!m_singularNameEdit->text().isEmpty() &&
!m_pluralNameEdit->text().isEmpty();
m_okButton->setEnabled(isValid);
}
QString AddDesignatorDialog::getDesignator() const
{
return m_designatorEdit->text().toUpper();
}
QString AddDesignatorDialog::getSingularName() const
{
return m_singularNameEdit->text();
}
QString AddDesignatorDialog::getPluralName() const
{
return m_pluralNameEdit->text();
}
DesignatorMappingItem AddDesignatorDialog::getMapping() const
{
return DesignatorMappingItem(getDesignator(), getSingularName(), getPluralName(), true);
}