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
|
/// Select all records
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ public:
|
|||||||
public:
|
public:
|
||||||
void select( MergeRecord* record );
|
void select( MergeRecord* record );
|
||||||
void unselect( MergeRecord* record );
|
void unselect( MergeRecord* record );
|
||||||
|
void setSelected( int i, bool state = true );
|
||||||
void selectAll();
|
void selectAll();
|
||||||
void unselectAll();
|
void unselectAll();
|
||||||
const QList<MergeRecord*> selectedRecords() const;
|
const QList<MergeRecord*> selectedRecords() const;
|
||||||
|
|||||||
+74
-2
@@ -29,7 +29,7 @@
|
|||||||
/// Constructor
|
/// Constructor
|
||||||
///
|
///
|
||||||
MergeView::MergeView( QWidget *parent )
|
MergeView::MergeView( QWidget *parent )
|
||||||
: QWidget(parent), mModel(0)
|
: QWidget(parent), mModel(0), mBlock(false)
|
||||||
{
|
{
|
||||||
setupUi( this );
|
setupUi( this );
|
||||||
|
|
||||||
@@ -96,6 +96,76 @@ void MergeView::onMergeChanged()
|
|||||||
|
|
||||||
loadHeaders( mModel->merge() );
|
loadHeaders( mModel->merge() );
|
||||||
loadTable( 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 )
|
void MergeView::loadTable( Merge* merge )
|
||||||
{
|
{
|
||||||
|
mBlock = true;
|
||||||
|
|
||||||
const QList<MergeRecord*>& records = merge->recordList();
|
const QList<MergeRecord*>& records = merge->recordList();
|
||||||
recordsTable->setRowCount( records.size() );
|
recordsTable->setRowCount( records.size() );
|
||||||
|
|
||||||
@@ -185,5 +257,5 @@ void MergeView::loadTable( Merge* merge )
|
|||||||
iRow++;
|
iRow++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mBlock = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,12 @@ public:
|
|||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
private slots:
|
private slots:
|
||||||
void onMergeChanged();
|
void onMergeChanged();
|
||||||
|
void onMergeSourceChanged();
|
||||||
|
void onMergeSelectionChanged();
|
||||||
|
|
||||||
|
void onSelectAllButtonClicked();
|
||||||
|
void onUnselectAllButtonClicked();
|
||||||
|
void onCellChanged( int iRow, int iCol );
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
@@ -79,6 +85,8 @@ private:
|
|||||||
QStringList mKeys;
|
QStringList mKeys;
|
||||||
QString mPrimaryKey;
|
QString mPrimaryKey;
|
||||||
|
|
||||||
|
bool mBlock;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user