mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2026-06-09 17:35:39 -04:00
Add mode dependent working frequencies
Working frequencies are mode dependent and a reset to defaults button has been added. Also re-factored much of the model and item delegate code to simplify several of the model implementations. Introduced a single routine called from main to register the custom types with Qt. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5453 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
+33
-14
@@ -8,11 +8,11 @@
|
||||
class CandidateKeyFilter::impl final
|
||||
{
|
||||
public:
|
||||
explicit impl (QAbstractItemModel const * referencing_model
|
||||
explicit impl (int referenced_key_column
|
||||
, int referenced_key_role
|
||||
, QAbstractItemModel const * referencing_model
|
||||
, int referencing_key_column
|
||||
, int referenced_key_column
|
||||
, int referencing_key_role
|
||||
, int referenced_key_role)
|
||||
, int referencing_key_role)
|
||||
: referencing_ {referencing_model}
|
||||
, referencing_key_column_ {referencing_key_column}
|
||||
, referencing_key_role_ {referencing_key_role}
|
||||
@@ -29,14 +29,25 @@ public:
|
||||
QModelIndex active_key_;
|
||||
};
|
||||
|
||||
CandidateKeyFilter::CandidateKeyFilter (QAbstractItemModel const * referencing_model
|
||||
, QAbstractItemModel * referenced_model
|
||||
, int referencing_key_column
|
||||
CandidateKeyFilter::CandidateKeyFilter (QAbstractItemModel * referenced_model
|
||||
, int referenced_key_column
|
||||
, int referencing_key_role
|
||||
, QObject * parent
|
||||
, int referenced_key_role)
|
||||
: QSortFilterProxyModel {nullptr} // ForeignKeyDelegate owns us
|
||||
, m_ {referencing_model, referencing_key_column, referenced_key_column, referencing_key_role, referenced_key_role}
|
||||
: QSortFilterProxyModel {parent}
|
||||
, m_ {referenced_key_column, referenced_key_role, nullptr, 0, Qt::EditRole}
|
||||
{
|
||||
setSourceModel (referenced_model);
|
||||
}
|
||||
|
||||
CandidateKeyFilter::CandidateKeyFilter (QAbstractItemModel * referenced_model
|
||||
, QAbstractItemModel const * referencing_model
|
||||
, int referenced_key_column
|
||||
, int referencing_key_column
|
||||
, QObject * parent
|
||||
, int referenced_key_role
|
||||
, int referencing_key_role)
|
||||
: QSortFilterProxyModel {parent}
|
||||
, m_ {referenced_key_column, referenced_key_role, referencing_model, referencing_key_column, referencing_key_role}
|
||||
{
|
||||
setSourceModel (referenced_model);
|
||||
}
|
||||
@@ -47,16 +58,24 @@ CandidateKeyFilter::~CandidateKeyFilter ()
|
||||
|
||||
void CandidateKeyFilter::set_active_key (QModelIndex const& index)
|
||||
{
|
||||
if (index.isValid () )
|
||||
if (m_->referencing_)
|
||||
{
|
||||
Q_ASSERT (index.column () == m_->referencing_key_column_);
|
||||
m_->active_key_ = index;
|
||||
if (index.isValid () )
|
||||
{
|
||||
Q_ASSERT (index.column () == m_->referencing_key_column_);
|
||||
m_->active_key_ = index;
|
||||
}
|
||||
invalidateFilter ();
|
||||
}
|
||||
invalidateFilter ();
|
||||
}
|
||||
|
||||
bool CandidateKeyFilter::filterAcceptsRow (int candidate_row, QModelIndex const& candidate_parent) const
|
||||
{
|
||||
if (!m_->referencing_) // many to many passes all
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
auto candidate_key = sourceModel ()->index (candidate_row, m_->referenced_key_column_, candidate_parent).data (m_->referenced_key_role_);
|
||||
|
||||
// Include the current key.
|
||||
|
||||
Reference in New Issue
Block a user