42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | #ifndef CANDIDATE_KEY_FILTER_HPP_
 | ||
|  | #define CANDIDATE_KEY_FILTER_HPP_
 | ||
|  | 
 | ||
|  | #include <QSortFilterProxyModel>
 | ||
|  | #include <QModelIndex>
 | ||
|  | 
 | ||
|  | #include "pimpl_h.hpp"
 | ||
|  | 
 | ||
|  | 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
 |