Initial Commit
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
#ifndef MODES_HPP__
|
||||
#define MODES_HPP__
|
||||
|
||||
#include <QAbstractListModel>
|
||||
|
||||
#include "qt_helpers.hpp"
|
||||
|
||||
class QString;
|
||||
class QVariant;
|
||||
class QModelIndex;
|
||||
|
||||
//
|
||||
// Class Modes - Qt model that implements a list of data modes
|
||||
//
|
||||
//
|
||||
// Responsibilities
|
||||
//
|
||||
// Provides a single column list model that contains the human
|
||||
// readable string version of the data mode in the display role. Also
|
||||
// provided is a translatable column header string and tool tip
|
||||
// string.
|
||||
//
|
||||
//
|
||||
// Collaborations
|
||||
//
|
||||
// Implements a concrete sub-class of the QAbstractListModel class.
|
||||
//
|
||||
class Modes final
|
||||
: public QAbstractListModel
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_ENUMS (Mode)
|
||||
|
||||
public:
|
||||
//
|
||||
// This enumeration contains the supported modes, to complement this
|
||||
// an array of human readable strings in the implementation
|
||||
// (Modes.cpp) must be maintained in parallel.
|
||||
//
|
||||
enum Mode
|
||||
{
|
||||
NULL_MODE, // NULL Mode - matches with all modes
|
||||
JT65,
|
||||
JT9,
|
||||
JT4,
|
||||
WSPR,
|
||||
Echo,
|
||||
ISCAT,
|
||||
MSK144,
|
||||
QRA64,
|
||||
FreqCal,
|
||||
MODES_END_SENTINAL_AND_COUNT // this must be last
|
||||
};
|
||||
Q_ENUM (Mode)
|
||||
|
||||
explicit Modes (QObject * parent = nullptr);
|
||||
|
||||
// translate between enumeration and human readable strings
|
||||
static char const * name (Mode);
|
||||
static Mode value (QString const&);
|
||||
|
||||
// Implement the QAbstractListModel interface
|
||||
int rowCount (QModelIndex const& parent = QModelIndex {}) const override
|
||||
{
|
||||
return parent.isValid () ? 0 : MODES_END_SENTINAL_AND_COUNT; // Number of modes in Mode enumeration class
|
||||
}
|
||||
QVariant data (QModelIndex const&, int role = Qt::DisplayRole) const override;
|
||||
QVariant headerData (int section, Qt::Orientation, int = Qt::DisplayRole) const override;
|
||||
};
|
||||
|
||||
// Qt boilerplate to make the Modes::Mode enumeration a type that can
|
||||
// be streamed and queued as a signal argument as well as showing the
|
||||
// human readable string when output to debug streams.
|
||||
#if QT_VERSION < 0x050500
|
||||
// Qt 5.6 introduces the Q_ENUM macro which automatically registers
|
||||
// the meta-type
|
||||
Q_DECLARE_METATYPE (Modes::Mode);
|
||||
#endif
|
||||
|
||||
#if !defined (QT_NO_DEBUG_STREAM)
|
||||
ENUM_QDEBUG_OPS_DECL (Modes, Mode);
|
||||
#endif
|
||||
|
||||
ENUM_QDATASTREAM_OPS_DECL (Modes, Mode);
|
||||
ENUM_CONVERSION_OPS_DECL (Modes, Mode);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user