Closed MVC loop for VariablesView.

This commit is contained in:
Jim Evins
2019-03-16 18:12:17 -04:00
parent c9e26c45fb
commit 6255939f39
11 changed files with 448 additions and 45 deletions
+104 -4
View File
@@ -22,9 +22,22 @@
#include "EditVariableDialog.h"
#include <QTableWidgetItem>
#include <QtDebug>
namespace
{
enum ICol {
I_COL_NAME = 0,
I_COL_TYPE = 1,
I_COL_VALUE = 2,
I_COL_INCREMENT = 3,
I_COL_STEP_SIZE = 4
};
}
namespace glabels
{
@@ -58,8 +71,9 @@ namespace glabels
mUndoRedoModel = undoRedoModel;
updateControls();
loadTable();
//connect( mModel, SIGNAL(variablesChanged()), this, SLOT(onVariablesChanged()) );
connect( mModel, SIGNAL(variablesChanged()), this, SLOT(onVariablesChanged()) );
}
@@ -79,16 +93,17 @@ namespace glabels
{
EditVariableDialog dialog( this );
model::Variable v( model::Variable::TYPE_NUMERIC,
model::Variable v( model::Variable::Type::NUMERIC,
"x",
"0",
model::Variable::INCREMENT_NEVER,
model::Variable::Increment::NEVER,
"0" );
dialog.setVariable( v );
if ( dialog.exec() == QDialog::Accepted )
{
qDebug() << "Add OK.";
mModel->variables()->addVariable( dialog.variable() );
selectVariable( dialog.variable().name() );
}
}
@@ -98,6 +113,22 @@ namespace glabels
///
void VariablesView::onEditButtonClicked()
{
int iRow = table->selectedItems()[0]->row();
QString name = table->item( iRow, I_COL_NAME )->text();
if ( mModel->variables()->hasVariable( name ) )
{
model::Variable v = mModel->variables()->value( name );
EditVariableDialog dialog( this );
dialog.setVariable( v );
if ( dialog.exec() == QDialog::Accepted )
{
mModel->variables()->replaceVariable( name, dialog.variable() );
selectVariable( dialog.variable().name() );
}
}
}
@@ -106,6 +137,20 @@ namespace glabels
///
void VariablesView::onDeleteButtonClicked()
{
int iRow = table->selectedItems()[0]->row();
QString name = table->item( iRow, I_COL_NAME )->text();
mModel->variables()->deleteVariable( name );
}
///
/// Variables Changed
///
void VariablesView::onVariablesChanged()
{
// Reload table from variables
loadTable();
}
@@ -121,4 +166,59 @@ namespace glabels
}
///
/// load table from variables
///
void VariablesView::loadTable()
{
table->clearContents();
table->setRowCount( mModel->variables()->size() );
int iRow = 0;
for( const auto& v : *mModel->variables() )
{
auto* typeItem = new QTableWidgetItem( model::Variable::typeToI18nString(v.type()) );
typeItem->setFlags( typeItem->flags() ^ Qt::ItemIsEditable );
table->setItem( iRow, I_COL_TYPE, typeItem );
auto* nameItem = new QTableWidgetItem( v.name() );
nameItem->setFlags( nameItem->flags() ^ Qt::ItemIsEditable );
table->setItem( iRow, I_COL_NAME, nameItem );
auto* valueItem = new QTableWidgetItem( v.value() );
valueItem->setFlags( valueItem->flags() ^ Qt::ItemIsEditable );
table->setItem( iRow, I_COL_VALUE, valueItem );
auto* incrementItem = new QTableWidgetItem( model::Variable::incrementToI18nString(v.increment()) );
incrementItem->setFlags( incrementItem->flags() ^ Qt::ItemIsEditable );
table->setItem( iRow, I_COL_INCREMENT, incrementItem );
auto* stepSizeItem = new QTableWidgetItem( v.stepSize() );
stepSizeItem->setFlags( stepSizeItem->flags() ^ Qt::ItemIsEditable );
table->setItem( iRow, I_COL_STEP_SIZE, stepSizeItem );
table->showRow( iRow );
iRow++;
}
}
void VariablesView::selectVariable( const QString& name )
{
int iRow = 0;
for( const auto& v : *mModel->variables() )
{
if ( v.name() == name )
{
qDebug() << "Selecting row " << iRow;
table->setCurrentCell( iRow, 0,
(QItemSelectionModel::Select|QItemSelectionModel::Rows) );
break;
}
iRow++;
}
}
} // namespace glabels