mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-07-18 17:45:23 -04:00
------------------------------------------------------------------------ r7848 | bsomervi | 2017-07-11 02:59:19 +0100 (Tue, 11 Jul 2017) | 4 lines Use model row to express region rather than name string For some unknown reason on some machines the string version of the name does not match the model IARURegions names. ------------------------------------------------------------------------ git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx-1.8@7899 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
97 lines
2.0 KiB
C++
97 lines
2.0 KiB
C++
#include "IARURegions.hpp"
|
|
|
|
#include <algorithm>
|
|
|
|
#include <QString>
|
|
#include <QVariant>
|
|
#include <QModelIndex>
|
|
#include <QMetaType>
|
|
|
|
#include "moc_IARURegions.cpp"
|
|
|
|
namespace
|
|
{
|
|
// human readable strings for each Region enumeration value
|
|
char const * const region_names[] =
|
|
{
|
|
"All",
|
|
"Region 1",
|
|
"Region 2",
|
|
"Region 3",
|
|
};
|
|
std::size_t constexpr region_names_size = sizeof (region_names) / sizeof (region_names[0]);
|
|
}
|
|
|
|
IARURegions::IARURegions (QObject * parent)
|
|
: QAbstractListModel {parent}
|
|
{
|
|
static_assert (region_names_size == SENTINAL,
|
|
"region_names array must match Region enumeration");
|
|
}
|
|
|
|
char const * IARURegions::name (Region r)
|
|
{
|
|
return region_names[static_cast<int> (r)];
|
|
}
|
|
|
|
auto IARURegions::value (int r) -> Region
|
|
{
|
|
if (r < 0 || r + 1 >= SENTINAL) return ALL;
|
|
return static_cast<Region> (r);
|
|
}
|
|
|
|
QVariant IARURegions::data (QModelIndex const& index, int role) const
|
|
{
|
|
QVariant item;
|
|
|
|
if (index.isValid ())
|
|
{
|
|
auto const& row = index.row ();
|
|
switch (role)
|
|
{
|
|
case Qt::ToolTipRole:
|
|
case Qt::AccessibleDescriptionRole:
|
|
item = tr ("IARU Region");
|
|
break;
|
|
|
|
case Qt::EditRole:
|
|
item = static_cast<Region> (row);
|
|
break;
|
|
|
|
case Qt::DisplayRole:
|
|
case Qt::AccessibleTextRole:
|
|
item = region_names[row];
|
|
break;
|
|
|
|
case Qt::TextAlignmentRole:
|
|
item = Qt::AlignHCenter + Qt::AlignVCenter;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return item;
|
|
}
|
|
|
|
QVariant IARURegions::headerData (int section, Qt::Orientation orientation, int role) const
|
|
{
|
|
QVariant result;
|
|
|
|
if (Qt::DisplayRole == role && Qt::Horizontal == orientation)
|
|
{
|
|
result = tr ("IARU Region");
|
|
}
|
|
else
|
|
{
|
|
result = QAbstractListModel::headerData (section, orientation, role);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
#if !defined (QT_NO_DEBUG_STREAM)
|
|
ENUM_QDEBUG_OPS_IMPL (IARURegions, Region);
|
|
#endif
|
|
|
|
ENUM_QDATASTREAM_OPS_IMPL (IARURegions, Region);
|
|
ENUM_CONVERSION_OPS_IMPL (IARURegions, Region);
|