Continuing to flesh out MergeView.
This commit is contained in:
@@ -126,6 +126,19 @@ void Merge::unselect( MergeRecord* record )
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Select/unselect i'th record
|
||||
///
|
||||
void Merge::setSelected( int i, bool state )
|
||||
{
|
||||
if ( (i >= 0) && (i < mRecordList.size()) )
|
||||
{
|
||||
mRecordList[i]->setSelected( state );
|
||||
emit selectionChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Select all records
|
||||
///
|
||||
|
||||
@@ -70,6 +70,7 @@ public:
|
||||
public:
|
||||
void select( MergeRecord* record );
|
||||
void unselect( MergeRecord* record );
|
||||
void setSelected( int i, bool state = true );
|
||||
void selectAll();
|
||||
void unselectAll();
|
||||
const QList<MergeRecord*> selectedRecords() const;
|
||||
|
||||
+74
-2
@@ -29,7 +29,7 @@
|
||||
/// Constructor
|
||||
///
|
||||
MergeView::MergeView( QWidget *parent )
|
||||
: QWidget(parent), mModel(0)
|
||||
: QWidget(parent), mModel(0), mBlock(false)
|
||||
{
|
||||
setupUi( this );
|
||||
|
||||
@@ -96,6 +96,76 @@ void MergeView::onMergeChanged()
|
||||
|
||||
loadHeaders( mModel->merge() );
|
||||
loadTable( mModel->merge() );
|
||||
|
||||
connect( mModel->merge(), SIGNAL(sourceChanged()), this, SLOT(onMergeSourceChanged()) );
|
||||
connect( mModel->merge(), SIGNAL(selectionChanged()), this, SLOT(onMergeSelectionChanged()) );
|
||||
|
||||
connect( recordsTable, SIGNAL(cellChanged(int,int)), this, SLOT(onCellChanged(int,int)) );
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Merge source changed handler
|
||||
///
|
||||
void MergeView::onMergeSourceChanged()
|
||||
{
|
||||
loadHeaders( mModel->merge() );
|
||||
loadTable( mModel->merge() );
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Merge selection changed handler
|
||||
///
|
||||
void MergeView::onMergeSelectionChanged()
|
||||
{
|
||||
mBlock = true; // Don't recurse
|
||||
|
||||
const QList<MergeRecord*>& records = mModel->merge()->recordList();
|
||||
|
||||
int iRow = 0;
|
||||
foreach ( MergeRecord* record, records )
|
||||
{
|
||||
QTableWidgetItem* item = recordsTable->item( iRow, 0 );
|
||||
item->setCheckState( record->isSelected() ? Qt::Checked : Qt::Unchecked );
|
||||
|
||||
iRow++;
|
||||
}
|
||||
|
||||
mBlock = false;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Select all button clicked handler
|
||||
///
|
||||
void MergeView::onSelectAllButtonClicked()
|
||||
{
|
||||
mModel->merge()->selectAll();
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Unselect all button clicked handler
|
||||
///
|
||||
void MergeView::onUnselectAllButtonClicked()
|
||||
{
|
||||
mModel->merge()->unselectAll();
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Cell changed handler
|
||||
///
|
||||
void MergeView::onCellChanged( int iRow, int iCol )
|
||||
{
|
||||
if ( !mBlock )
|
||||
{
|
||||
QTableWidgetItem* item = recordsTable->item( iRow, 0 );
|
||||
bool state = (item->checkState() == Qt::Unchecked) ? false : true;
|
||||
|
||||
mModel->merge()->setSelected( iRow, state );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -142,6 +212,8 @@ void MergeView::loadHeaders( Merge* merge )
|
||||
///
|
||||
void MergeView::loadTable( Merge* merge )
|
||||
{
|
||||
mBlock = true;
|
||||
|
||||
const QList<MergeRecord*>& records = merge->recordList();
|
||||
recordsTable->setRowCount( records.size() );
|
||||
|
||||
@@ -185,5 +257,5 @@ void MergeView::loadTable( Merge* merge )
|
||||
iRow++;
|
||||
}
|
||||
|
||||
|
||||
mBlock = false;
|
||||
}
|
||||
|
||||
@@ -57,6 +57,12 @@ public:
|
||||
/////////////////////////////////
|
||||
private slots:
|
||||
void onMergeChanged();
|
||||
void onMergeSourceChanged();
|
||||
void onMergeSelectionChanged();
|
||||
|
||||
void onSelectAllButtonClicked();
|
||||
void onUnselectAllButtonClicked();
|
||||
void onCellChanged( int iRow, int iCol );
|
||||
|
||||
|
||||
/////////////////////////////////
|
||||
@@ -79,6 +85,8 @@ private:
|
||||
QStringList mKeys;
|
||||
QString mPrimaryKey;
|
||||
|
||||
bool mBlock;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user