82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#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,
							 | 
						||
| 
								 | 
							
								    SENTINAL                    // this must be last
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								  Q_ENUM (Region)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  explicit IARURegions (QObject * parent = nullptr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // translate between enumeration and human readable strings
							 | 
						||
| 
								 | 
							
								  static char const * name (Region);
							 | 
						||
| 
								 | 
							
								  static Region value (QString const&);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // Implement the QAbstractListModel interface
							 | 
						||
| 
								 | 
							
								  int rowCount (QModelIndex const& parent = QModelIndex {}) const override
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    return parent.isValid () ? 0 : SENTINAL; // Number of regionss in Region 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 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
							 | 
						||
| 
								 | 
							
								// Qt 5.5 introduces the Q_ENUM macro which automatically registers
							 | 
						||
| 
								 | 
							
								// 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
							 |