Skip to content

Commit

Permalink
DXC: Full-text Search searches only in visible columns
Browse files Browse the repository at this point in the history
  • Loading branch information
foldynl committed Sep 30, 2024
1 parent e1c8b83 commit c69ad47
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 0 deletions.
9 changes: 9 additions & 0 deletions models/SearchFilterProxyModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,20 @@ void SearchFilterProxyModel::setSearchString(const QString &searchString)
invalidateFilter();
}

void SearchFilterProxyModel::setSearchSkippedCols(const QVector<int> &columns)
{
searchSkippedCols = columns;
invalidateFilter();
}

bool SearchFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
{
// full-text search
for ( int col = 0; col < sourceModel()->columnCount(); ++col )
{
if (searchSkippedCols.contains(col) )
continue;

QModelIndex index = sourceModel()->index(source_row, col, source_parent);
QString data = index.data(Qt::DisplayRole).toString();

Expand Down
2 changes: 2 additions & 0 deletions models/SearchFilterProxyModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ class SearchFilterProxyModel : public QSortFilterProxyModel
public:
SearchFilterProxyModel(QObject* parent = nullptr);
void setSearchString(const QString& searchString);
void setSearchSkippedCols(const QVector<int> &columns);

protected:
bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const override;

private:
QString searchString;
QVector<int> searchSkippedCols;
};

#endif // QLOG_MODELS_SEARCHFILTERPROXYMODEL_H
17 changes: 17 additions & 0 deletions ui/DxWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,7 @@ DxWidget::DxWidget(QWidget *parent) :

ui->actionConnectOnStartup->setChecked(getAutoconnectServer());
ui->actionKeepSpots->setChecked(getKeepQSOs());
dxTableProxyModel->setSearchSkippedCols(dxcListHiddenCols());
}

void DxWidget::toggleConnect()
Expand Down Expand Up @@ -1473,6 +1474,8 @@ void DxWidget::displayedColumns()
ColumnSettingSimpleDialog dialog(view);
dialog.exec();
saveWidgetSetting();
if ( view == ui->dxTable )
dxTableProxyModel->setSearchSkippedCols(dxcListHiddenCols());
}
}

Expand Down Expand Up @@ -1581,6 +1584,20 @@ void DxWidget::processDxSpot(const QString &spotter,
}
}

QVector<int> DxWidget::dxcListHiddenCols() const
{
QVector<int> ret;
ret.reserve(dxTableModel->columnCount());

for ( int i = 0; i < dxTableModel->columnCount(); ++i )
{
if (ui->dxTable->isColumnHidden(i))
ret.append(i);
}

return ret;
}

BandPlan::BandPlanMode DxWidget::modeGroupFromComment(const QString &comment) const
{
FCT_IDENTIFICATION;
Expand Down
1 change: 1 addition & 0 deletions ui/DxWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ private slots:
const QString &comment,
const QDateTime &dateTime = QDateTime());

QVector<int> dxcListHiddenCols() const;
BandPlan::BandPlanMode modeGroupFromComment(const QString &comment) const;
};

Expand Down

0 comments on commit c69ad47

Please sign in to comment.