mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-10-03 18:46:54 -04:00
f7b0d3904a
This fixes a defect where station detail changes are not saved. The Qt sort and filter proxy models utilize an item cache that must be flushed by callig submit() before accessing the underlying model if the proxy model has been used for updates. Also separated the item model candidate key filter from the implementation internals of the foreign key item delegate so that candidate key filtered models can be used directly as view models. Make the insert new station details band combo box use a candidate key filtered item model to avoid constraint violations. Constraint is zero or one station records per band. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5161 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
60 lines
1.3 KiB
C++
60 lines
1.3 KiB
C++
#ifndef FREQUENCY_LIST_HPP__
|
|
#define FREQUENCY_LIST_HPP__
|
|
|
|
#include "pimpl_h.hpp"
|
|
|
|
#include <QSortFilterProxyModel>
|
|
|
|
#include "Radio.hpp"
|
|
|
|
//
|
|
// Class FrequencyList
|
|
//
|
|
// Encapsulates a collection of frequencies. The implementation is a
|
|
// table containing the list of Frequency type elements which is
|
|
// editable and a second column which is an immutable double
|
|
// representation of the corresponding Frequency item scaled to
|
|
// mega-Hertz.
|
|
//
|
|
// The list is ordered.
|
|
//
|
|
// Responsibilities
|
|
//
|
|
// Stores internally a list of unique frequencies. Provides methods
|
|
// to add and delete list elements.
|
|
//
|
|
// Collaborations
|
|
//
|
|
// Implements the QSortFilterProxyModel interface for a list of spot
|
|
// frequencies.
|
|
//
|
|
class FrequencyList final
|
|
: public QSortFilterProxyModel
|
|
{
|
|
public:
|
|
using Frequency = Radio::Frequency;
|
|
using Frequencies = Radio::Frequencies;
|
|
|
|
explicit FrequencyList (QObject * parent = nullptr);
|
|
explicit FrequencyList (Frequencies, QObject * parent = nullptr);
|
|
~FrequencyList ();
|
|
|
|
// Load and store contents
|
|
FrequencyList& operator = (Frequencies);
|
|
Frequencies frequencies ();
|
|
|
|
// Model API
|
|
QModelIndex add (Frequency);
|
|
bool remove (Frequency);
|
|
bool removeDisjointRows (QModelIndexList);
|
|
|
|
// Custom roles.
|
|
static int constexpr SortRole = Qt::UserRole;
|
|
|
|
private:
|
|
class impl;
|
|
pimpl<impl> m_;
|
|
};
|
|
|
|
#endif
|