mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6794 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#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,
 | 
						|
    JTMSK,
 | 
						|
    MSK144,
 | 
						|
    QRA65,
 | 
						|
    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
 |