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
+156
View File
@@ -0,0 +1,156 @@
#include "projectparamtablemodel.h"
#include <QDebug>
ProjectParamTableModel::ProjectParamTableModel(QObject *parent)
: QAbstractTableModel{parent}
{}
int ProjectParamTableModel::rowCount(const QModelIndex &parent) const
{
if (parent.isValid())
return 0;
return m_data.size();
}
int ProjectParamTableModel::columnCount(const QModelIndex &parent) const
{
if (parent.isValid())
return 0;
return 2; // Название и значение
}
QVariant ProjectParamTableModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid() || index.row() >= m_data.size())
return QVariant();
const ProjectParamTableData &param = m_data.at(index.row());
if (role == Qt::DisplayRole || role == Qt::EditRole) {
switch (index.column()) {
case 0: // Название параметра
return param.name;
case 1: // Значение параметра
return param.value;
default:
return QVariant();
}
}
return QVariant();
}
QVariant ProjectParamTableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
if (role != Qt::DisplayRole)
return QVariant();
if (orientation == Qt::Horizontal) {
switch (section) {
case 0:
return tr("Название");
case 1:
return tr("Значение");
default:
return QVariant();
}
}
return QVariant();
}
bool ProjectParamTableModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (!index.isValid() || index.row() >= m_data.size() || role != Qt::EditRole)
return false;
ProjectParamTableData &param = m_data[index.row()];
bool changed = false;
switch (index.column()) {
case 0: // Название параметра
if (param.name != value.toString()) {
param.name = value.toString();
changed = true;
}
break;
case 1: // Значение параметра
if (param.value != value.toString()) {
param.value = value.toString();
changed = true;
}
break;
}
if (changed) {
emit dataChanged(index, index);
return true;
}
return false;
}
Qt::ItemFlags ProjectParamTableModel::flags(const QModelIndex &index) const
{
if (!index.isValid())
return Qt::NoItemFlags;
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable;
}
void ProjectParamTableModel::setProjectParams(const QList<ProjectParamTableData> &params)
{
qDebug() << "ProjectParamTableModel: устанавливаем" << params.size() << "параметров";
beginResetModel();
m_data = params;
endResetModel();
qDebug() << "ProjectParamTableModel: модель обновлена, теперь содержит" << m_data.size() << "параметров";
}
void ProjectParamTableModel::addProjectParam(const ProjectParamTableData &param)
{
beginInsertRows(QModelIndex(), m_data.size(), m_data.size());
m_data.append(param);
endInsertRows();
}
void ProjectParamTableModel::removeProjectParam(int row)
{
if (row < 0 || row >= m_data.size())
return;
beginRemoveRows(QModelIndex(), row, row);
m_data.removeAt(row);
endRemoveRows();
}
void ProjectParamTableModel::clear()
{
if (m_data.isEmpty())
return;
beginResetModel();
m_data.clear();
endResetModel();
}
ProjectParamTableData ProjectParamTableModel::getProjectParam(int row) const
{
if (row < 0 || row >= m_data.size())
return ProjectParamTableData();
return m_data.at(row);
}
QList<ProjectParamTableData> ProjectParamTableModel::getData() const
{
return m_data;
}
QMap<QString, QString> ProjectParamTableModel::getDataAsMap() const
{
QMap<QString, QString> result;
for (const ProjectParamTableData &param : m_data) {
result[param.name] = param.value;
}
return result;
}