2017-07-07 19:11:41 -04:00
|
|
|
#ifndef IARU_REGIONS_HPP__
|
|
|
|
#define IARU_REGIONS_HPP__
|
|
|
|
|
|
|
|
#include <QAbstractListModel>
|
|
|
|
|
|
|
|
#include "qt_helpers.hpp"
|
|
|
|
|
|
|
|
class QString;
|
|
|
|
class QVariant;
|
|
|
|
class QModelIndex;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Class IARURegions - Qt model that implements the list of IARU regions
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Responsibilities
|
|
|
|
//
|
|
|
|
// Provides a single column list model that contains the human
|
|
|
|
// readable string version of the data region 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 IARURegions final
|
|
|
|
: public QAbstractListModel
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
Q_ENUMS (Region)
|
|
|
|
|
|
|
|
public:
|
|
|
|
//
|
|
|
|
// This enumeration contains the supported regions, to complement
|
|
|
|
// this an array of human readable strings in the implementation
|
|
|
|
// (IARURegions.cpp) must be maintained in parallel.
|
|
|
|
//
|
|
|
|
enum Region
|
|
|
|
{
|
|
|
|
ALL, // matches with all regions
|
|
|
|
R1,
|
|
|
|
R2,
|
|
|
|
R3,
|
2017-07-10 21:59:19 -04:00
|
|
|
SENTINAL // this must be last
|
2017-07-07 19:11:41 -04:00
|
|
|
};
|
|
|
|
Q_ENUM (Region)
|
|
|
|
|
|
|
|
explicit IARURegions (QObject * parent = nullptr);
|
|
|
|
|
|
|
|
// translate between enumeration and human readable strings
|
|
|
|
static char const * name (Region);
|
2017-07-10 21:59:19 -04:00
|
|
|
static Region value (int);
|
2017-07-07 19:11:41 -04:00
|
|
|
|
|
|
|
// Implement the QAbstractListModel interface
|
|
|
|
int rowCount (QModelIndex const& parent = QModelIndex {}) const override
|
|
|
|
{
|
2017-07-10 21:59:19 -04:00
|
|
|
return parent.isValid () ? 0 : SENTINAL; // Number of regionss in Region enumeration class
|
2017-07-07 19:11:41 -04:00
|
|
|
}
|
|
|
|
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 IARURegions::region 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
|
2017-07-13 14:02:07 -04:00
|
|
|
// Qt 5.5 introduces the Q_ENUM macro which automatically registers
|
2017-07-07 19:11:41 -04:00
|
|
|
// the meta-type
|
|
|
|
Q_DECLARE_METATYPE (IARURegions::Region);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if !defined (QT_NO_DEBUG_STREAM)
|
|
|
|
ENUM_QDEBUG_OPS_DECL (IARURegions, Region);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
ENUM_QDATASTREAM_OPS_DECL (IARURegions, Region);
|
|
|
|
ENUM_CONVERSION_OPS_DECL (IARURegions, Region);
|
|
|
|
|
|
|
|
#endif
|