Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgspagesizeregistry.h 3 : : -------------------- 4 : : begin : June 2017 5 : : copyright : (C) 2017 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #ifndef QGSPAGESIZEREGISTRY_H 19 : : #define QGSPAGESIZEREGISTRY_H 20 : : 21 : : #include "qgslayoutsize.h" 22 : : #include <QString> 23 : : #include <QSizeF> 24 : : #include <QList> 25 : : 26 : : /** 27 : : * \ingroup core 28 : : * \class QgsPageSize 29 : : * \brief A named page size for layouts. 30 : : * \since QGIS 3.0 31 : : */ 32 : 480 : class CORE_EXPORT QgsPageSize 33 : : { 34 : : 35 : : public: 36 : : 37 : : QgsPageSize(); 38 : : 39 : : /** 40 : : * Constructor for QgsPageSize, accepting the \a name of the page size and 41 : : * page \a size. 42 : : */ 43 : : QgsPageSize( const QString &name, const QgsLayoutSize &size, const QString &displayName = QString() ); 44 : : 45 : : /** 46 : : * Constructor for QgsPageSize, accepting a page \a size. 47 : : */ 48 : : QgsPageSize( const QgsLayoutSize &size ); 49 : : 50 : : //! Name of page size 51 : : QString name; 52 : : 53 : : //! Page size 54 : : QgsLayoutSize size; 55 : : 56 : : //! Translated page name 57 : : QString displayName; 58 : : 59 : : bool operator==( const QgsPageSize &other ) const; 60 : : bool operator!=( const QgsPageSize &other ) const; 61 : : }; 62 : : 63 : : /** 64 : : * \ingroup core 65 : : * \class QgsPageSizeRegistry 66 : : * \brief A registry for known page sizes. 67 : : * 68 : : * QgsPageSizeRegistry is not usually directly created, but rather accessed through 69 : : * QgsApplication::pageSizeRegistry(). 70 : : * 71 : : * \since QGIS 3.0 72 : : */ 73 : 5 : class CORE_EXPORT QgsPageSizeRegistry 74 : : { 75 : : public: 76 : : 77 : : /** 78 : : * Creates a registry and populates it with known sizes 79 : : */ 80 : : QgsPageSizeRegistry(); 81 : : 82 : : /** 83 : : * Adds a page \a size to the registry. 84 : : */ 85 : : void add( const QgsPageSize &size ); 86 : : 87 : : /** 88 : : * Returns a list of page sizes in the registry. 89 : : */ 90 : : QList< QgsPageSize > entries() const; 91 : : 92 : : /** 93 : : * Finds matching page sizes from the registry, using a case insensitive match 94 : : * on the page size \a name. 95 : : */ 96 : : QList< QgsPageSize > find( const QString &name ) const; 97 : : 98 : : /** 99 : : * Finds a matching page \a size from the registry. Returns the page size name, 100 : : * or an empty string if no matching size could be found. 101 : : * 102 : : * Orientation is ignored when matching page sizes, so a landscape A4 page will 103 : : * match to the portrait A4 size in the registry. 104 : : */ 105 : : QString find( const QgsLayoutSize &size ) const; 106 : : 107 : : /** 108 : : * Decodes a \a string representing a preset page size. 109 : : * The decoded page size will be stored in the \a size argument. 110 : : * \returns TRUE if string was successfully decoded 111 : : */ 112 : : bool decodePageSize( const QString &string, QgsPageSize &size ); 113 : : 114 : : private: 115 : : 116 : : QList< QgsPageSize > mPageSizes; 117 : : }; 118 : : 119 : : #endif //QGSPAGESIZEREGISTRY_H