From 1f4f4aa2217434d1903f78a8839b0250ee67dd96 Mon Sep 17 00:00:00 2001 From: Jaye Evins Date: Sat, 29 Nov 2025 00:16:21 -0500 Subject: [PATCH] Reload merge data (#252,#241) * Added reloadSource() method to Merge class. * Added reload button to MergeView --- backends/merge/Merge.cpp | 35 +++++++++++++++++++++++++++++++++++ backends/merge/Merge.h | 1 + glabels/MergeView.cpp | 9 +++++++++ glabels/MergeView.h | 1 + glabels/ui/MergeView.ui | 28 ++++++++++++++++++++++++++-- translations/glabels_C.ts | 4 ++++ 6 files changed, 76 insertions(+), 2 deletions(-) diff --git a/backends/merge/Merge.cpp b/backends/merge/Merge.cpp index bf37995..ca86f5b 100644 --- a/backends/merge/Merge.cpp +++ b/backends/merge/Merge.cpp @@ -77,6 +77,41 @@ namespace glabels } + /// + /// Reload source + /// + void Merge::reloadSource() + { + // temporary map of original selections + QMap origSelectionMap; + + for ( auto& record : mRecordList ) + { + origSelectionMap[ record[ primaryKey() ] ] = record.isSelected(); + } + + // Clear the original records + mRecordList.clear(); + + // Read the new records, preserve any original selections + open(); + for ( Record record = readNextRecord(); !record.isEmpty(); record = readNextRecord() ) + { + auto key = record[ primaryKey() ]; + auto it = origSelectionMap.find( key ); + if ( it != origSelectionMap.end() ) + { + record.setSelected( it.value() ); + } + + mRecordList.push_back( record ); + } + close(); + + emit sourceChanged(); + } + + /// /// Get record list /// diff --git a/backends/merge/Merge.h b/backends/merge/Merge.h index a8cecbb..db9284e 100644 --- a/backends/merge/Merge.h +++ b/backends/merge/Merge.h @@ -70,6 +70,7 @@ namespace glabels QString id() const; QString source() const; void setSource( const QString& source ); + void reloadSource(); const QList& recordList( ) const; diff --git a/glabels/MergeView.cpp b/glabels/MergeView.cpp index 6bf6d56..1901503 100644 --- a/glabels/MergeView.cpp +++ b/glabels/MergeView.cpp @@ -203,6 +203,15 @@ namespace glabels } + /// + /// Reload button clicked handler + /// + void MergeView::onReloadButtonClicked() + { + mModel->merge()->reloadSource(); + } + + /// /// Cell changed handler /// diff --git a/glabels/MergeView.h b/glabels/MergeView.h index 32e3395..698747c 100644 --- a/glabels/MergeView.h +++ b/glabels/MergeView.h @@ -70,6 +70,7 @@ namespace glabels void onLocationBrowseButtonClicked(); void onSelectAllButtonClicked(); void onUnselectAllButtonClicked(); + void onReloadButtonClicked(); void onCellChanged( int iRow, int iCol ); diff --git a/glabels/ui/MergeView.ui b/glabels/ui/MergeView.ui index c7f682a..8f940b2 100644 --- a/glabels/ui/MergeView.ui +++ b/glabels/ui/MergeView.ui @@ -131,6 +131,13 @@ + + + + Reload + + + @@ -197,8 +204,8 @@ onLocationBrowseButtonClicked() - 296 - 130 + 534 + 165 565 @@ -206,11 +213,28 @@ + + pushButton + clicked() + MergeView + onReloadButtonClicked() + + + 510 + 552 + + + 539 + 602 + + + onSelectAllButtonClicked() onUnselectAllButtonClicked() onFormatComboActivated() onLocationBrowseButtonClicked() + onReloadButtonClicked() diff --git a/translations/glabels_C.ts b/translations/glabels_C.ts index 85d887c..32ce9f8 100644 --- a/translations/glabels_C.ts +++ b/translations/glabels_C.ts @@ -301,6 +301,10 @@ Browse... + + Reload + + ObjectEditor