Initial commit
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
#include "entity_finder_widget.h"
|
||||
|
||||
#include "base_sql_table_model.h"
|
||||
#include "model_manager.h"
|
||||
#include "schema_metadata.h"
|
||||
#include "search_dialog.h"
|
||||
|
||||
EntityFinderWidget::EntityFinderWidget(QWidget *parent) : QWidget(parent) {
|
||||
setupUi(this);
|
||||
|
||||
setupConnections();
|
||||
setupFrameStyle();
|
||||
}
|
||||
|
||||
EntityFinderWidget::EntityFinderWidget(const QString &tableName,
|
||||
const QString &fieldName,
|
||||
QWidget *parent)
|
||||
: EntityFinderWidget(parent) {
|
||||
setModelTableName(tableName);
|
||||
setFieldName(fieldName);
|
||||
}
|
||||
|
||||
void EntityFinderWidget::setHiddenFrame(bool hidden) {
|
||||
QLayout *frameLayout = frame->layout();
|
||||
bool isHidden = frame->frameStyle() == QFrame::NoFrame;
|
||||
|
||||
if (isHidden == hidden) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (hidden) {
|
||||
frame->setFrameStyle(QFrame::NoFrame);
|
||||
frameLayout->setContentsMargins(0, 0, 0, 0);
|
||||
} else {
|
||||
frame->setFrameStyle(originalFrameStyle_);
|
||||
frameLayout->setContentsMargins(9, 9, 9, 9);
|
||||
}
|
||||
|
||||
parentWidget()->adjustSize();
|
||||
}
|
||||
|
||||
void EntityFinderWidget::refreshLineEditText(const QSqlRecord &record) {
|
||||
ModelManager &modelManager = ModelManager::instance();
|
||||
|
||||
BaseSqlTableModel *model =
|
||||
modelManager.getModelAs<BaseSqlTableModel>(modelTableName_);
|
||||
|
||||
QStringList columnDataList;
|
||||
|
||||
for (int i = 0; i < record.count(); ++i) {
|
||||
QString columnName = model->headerData(i, Qt::Horizontal).toString();
|
||||
QString columnValue = record.value(i).toString();
|
||||
columnDataList.append(QString("%1: %2").arg(columnName, columnValue));
|
||||
}
|
||||
|
||||
lineEditEntityInformation->setText(columnDataList.join(" | "));
|
||||
}
|
||||
|
||||
void EntityFinderWidget::setDefaultRelation(
|
||||
const QString &databaseRelationName) {
|
||||
SchemaMetadata metadata = SchemaMetadata::defaultSchema();
|
||||
setModelTableName(metadata.modelTableName(databaseRelationName));
|
||||
setFieldName(metadata.primaryIdColumnName(databaseRelationName));
|
||||
|
||||
qInfo() << "Default relation name set to:" << databaseRelationName;
|
||||
}
|
||||
|
||||
void EntityFinderWidget::setupConnections() {
|
||||
connect(pushButtonFindEntity, &QPushButton::clicked, this,
|
||||
&EntityFinderWidget::onPushButtonFindEntityClicked);
|
||||
}
|
||||
|
||||
void EntityFinderWidget::setupFrameStyle() {
|
||||
originalFrameStyle_ = frame->frameStyle();
|
||||
}
|
||||
|
||||
void EntityFinderWidget::resetToDefault() {
|
||||
qInfo() << "Resetting entity finder to default:"
|
||||
<< "Name of EntityFinderWidget:" << objectName();
|
||||
lineEditEntityInformation->setText("");
|
||||
|
||||
emit reseted();
|
||||
}
|
||||
|
||||
void EntityFinderWidget::onPushButtonFindEntityClicked() {
|
||||
SearchDialog searchDialog(modelTableName_, fieldName_, this);
|
||||
|
||||
// All its signals are automatically disconnected from the slots
|
||||
|
||||
connect(&searchDialog, &SearchDialog::rowSelected, this,
|
||||
&EntityFinderWidget::onRowSelected);
|
||||
|
||||
connect(&searchDialog, &SearchDialog::fieldRetrieved, this,
|
||||
&EntityFinderWidget::onFieldRetrieved);
|
||||
|
||||
connect(&searchDialog, &SearchDialog::recordRetrieved, this,
|
||||
&EntityFinderWidget::onRecordRetrieved);
|
||||
|
||||
searchDialog.exec();
|
||||
}
|
||||
|
||||
void EntityFinderWidget::onRowSelected(int rowIndex) {
|
||||
emit rowSelected(rowIndex);
|
||||
}
|
||||
|
||||
void EntityFinderWidget::onRecordRetrieved(const QSqlRecord &rowValues) {
|
||||
refreshLineEditText(rowValues);
|
||||
emit recordRetrieved(rowValues);
|
||||
}
|
||||
|
||||
void EntityFinderWidget::onFieldRetrieved(const QSqlField &field) {
|
||||
emit fieldRetrieved(field);
|
||||
}
|
||||
Reference in New Issue
Block a user