mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-22 12:23:37 -05:00
92bd1700e6
Any band can be added to the schedule for a day phase, when a coordinated band slot is not available a random band will be chosen from all the bands enabled for the current phase (Day, Night, etc.). Fine tuned the size of the hopping schedule table widget. Coloured the coordinated band columns in the schedule table widget. Due to the full range of bands now being supported, the settings key for the band hopping schedule has been changed forcing current testers to redefine their schedultes. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5543 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
84 lines
2.4 KiB
C++
84 lines
2.4 KiB
C++
#ifndef BANDS_HPP__
|
|
#define BANDS_HPP__
|
|
|
|
#include <QAbstractTableModel>
|
|
|
|
#include "Radio.hpp"
|
|
|
|
//
|
|
// Class Bands
|
|
//
|
|
// Encapsulates information about amateur radio bands as defined by
|
|
// the ADIF specification. The model is immutable. The rows are
|
|
// stored in asscending order of frequency.
|
|
//
|
|
// Responsibilities
|
|
//
|
|
// Provides a well known band name mapped to lower and upper
|
|
// frequency limits. Also provides a convenience operation to
|
|
// determine the band name for any given frequency, the result of
|
|
// which may be null if the given frequency doesn't lie within a
|
|
// recognised band.
|
|
//
|
|
// Collaborations
|
|
//
|
|
// Implements the QAbstractTableModel interface as an immutable table
|
|
// where rows are bands and columns are band name, lower frequency
|
|
// limit and, upper ferquency limit respectively.
|
|
//
|
|
class Bands final
|
|
: public QAbstractTableModel
|
|
{
|
|
public:
|
|
using Frequency = Radio::Frequency;
|
|
|
|
// an iterator that meets the requirements of the C++ for range statement
|
|
class const_iterator
|
|
{
|
|
public:
|
|
const_iterator (int row)
|
|
: row_ {row}
|
|
{
|
|
}
|
|
|
|
QString operator * ();
|
|
bool operator != (const_iterator const&) const;
|
|
const_iterator& operator ++ ();
|
|
|
|
private:
|
|
int row_;
|
|
};
|
|
|
|
explicit Bands (QObject * parent = nullptr);
|
|
|
|
//
|
|
// Model API
|
|
//
|
|
QString find (Frequency) const; // find band Frequency is in
|
|
int find (QString const&) const; // find row of band (-1 if not valid)
|
|
static QString const& oob ();
|
|
|
|
// Iterators
|
|
const_iterator begin () const;
|
|
const_iterator end () const;
|
|
|
|
// Custom role for sorting.
|
|
static int constexpr SortRole = Qt::UserRole;
|
|
|
|
// Implement the QAbstractTableModel interface
|
|
int rowCount (QModelIndex const& parent = QModelIndex {}) const override;
|
|
int columnCount (QModelIndex const& parent = QModelIndex {}) const override;
|
|
Qt::ItemFlags flags (QModelIndex const& = QModelIndex {}) const override;
|
|
QVariant headerData (int section, Qt::Orientation, int = Qt::DisplayRole) const override;
|
|
|
|
// The value return for the Qt::DisplayRole role for the root of the
|
|
// model (invalid index) is a special string representing out of
|
|
// band.
|
|
//
|
|
// All columns return a number for the custom role SortRole, this
|
|
// number defines a strict frequency order for the rows.
|
|
QVariant data (QModelIndex const&, int role = Qt::DisplayRole) const override;
|
|
};
|
|
|
|
#endif
|