js8call/JS8_Main/CandidateKeyFilter.h
2026-01-18 19:19:15 -06:00

40 lines
1.4 KiB
C++

#ifndef CANDIDATE_KEY_FILTER_HPP_
#define CANDIDATE_KEY_FILTER_HPP_
#include "JS8_Include/pimpl_h.h"
#include <QModelIndex>
#include <QSortFilterProxyModel>
class QAbstractItemModel;
class CandidateKeyFilter final : public QSortFilterProxyModel {
public:
explicit CandidateKeyFilter(QAbstractItemModel *referenced_model,
int referenced_key_column,
QObject *parent = nullptr,
int referenced_key_role = Qt::EditRole);
explicit CandidateKeyFilter(QAbstractItemModel *referenced_model,
QAbstractItemModel const *referencing_model,
int referenced_key_column,
int referencing_key_column,
QObject *parent = nullptr,
int referenced_key_role = Qt::EditRole,
int referencing_key_role = Qt::EditRole);
~CandidateKeyFilter();
// this key is not to be filtered, usually because we want to allow
// it since we are editing the row that contains it this it is valid
// even though it is in use
void set_active_key(QModelIndex const &index = QModelIndex{});
protected:
bool filterAcceptsRow(int candidate_row,
QModelIndex const &candidate_parent) const override;
private:
class impl;
pimpl<impl> m_;
};
#endif