Quantum GIS API Documentation
1.8
|
00001 /*************************************************************************** 00002 qgscomposerlegenditem.h - description 00003 ------------------------ 00004 begin : May 2010 00005 copyright : (C) 2010 by Marco Hugentobler 00006 email : marco dot hugentobler at sourcepole dot ch 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef QGSCOMPOSERLEGENDITEM_H 00019 #define QGSCOMPOSERLEGENDITEM_H 00020 00021 #include <QStandardItem> 00022 class QDomDocument; 00023 class QDomElement; 00024 00026 class CORE_EXPORT QgsComposerLegendItem: public QStandardItem 00027 { 00028 public: 00029 00030 QgsComposerLegendItem(); 00031 QgsComposerLegendItem( const QString& text ); 00032 QgsComposerLegendItem( const QIcon& icon, const QString& text ); 00033 virtual ~QgsComposerLegendItem(); 00034 00035 enum ItemType 00036 { 00037 GroupItem = QStandardItem::UserType, 00038 LayerItem, 00039 SymbologyItem, 00040 SymbologyV2Item, 00041 RasterSymbolItem 00042 }; 00043 00044 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const = 0; 00048 virtual void readXML( const QDomElement& itemElem, bool xServerAvailable = true ) = 0; 00049 00050 virtual ItemType itemType() const = 0; 00051 virtual QStandardItem* clone() const = 0; 00052 00053 protected: 00054 void writeXMLChildren( QDomElement& elem, QDomDocument& doc ) const; 00055 }; 00056 00057 class QgsSymbol; 00058 00059 class CORE_EXPORT QgsComposerSymbolItem: public QgsComposerLegendItem 00060 { 00061 public: 00062 QgsComposerSymbolItem(); 00063 QgsComposerSymbolItem( const QString& text ); 00064 QgsComposerSymbolItem( const QIcon& icon, const QString& text ); 00065 virtual ~QgsComposerSymbolItem(); 00066 00067 virtual QStandardItem* clone() const; 00068 00069 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const; 00070 virtual void readXML( const QDomElement& itemElem, bool xServerAvailable = true ); 00071 00073 void setSymbol( QgsSymbol* s ); 00074 QgsSymbol* symbol() {return mSymbol;} 00075 00076 void setLayerID( const QString& id ) { mLayerID = id; } 00077 QString layerID() const { return mLayerID; } 00078 00079 ItemType itemType() const { return SymbologyItem; } 00080 00081 private: 00082 QgsSymbol* mSymbol; 00083 QString mLayerID; //this is needed to read the symbol from XML 00084 }; 00085 00086 class QgsSymbolV2; 00087 00088 class CORE_EXPORT QgsComposerSymbolV2Item: public QgsComposerLegendItem 00089 { 00090 public: 00091 QgsComposerSymbolV2Item(); 00092 QgsComposerSymbolV2Item( const QString& text ); 00093 QgsComposerSymbolV2Item( const QIcon& icon, const QString& text ); 00094 virtual ~QgsComposerSymbolV2Item(); 00095 00096 virtual QStandardItem* clone() const; 00097 00098 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const; 00099 virtual void readXML( const QDomElement& itemElem, bool xServerAvailable = true ); 00100 00102 void setSymbolV2( QgsSymbolV2* s ); 00103 QgsSymbolV2* symbolV2() {return mSymbolV2;} 00104 00105 ItemType itemType() const { return SymbologyV2Item; } 00106 00107 private: 00108 QgsSymbolV2* mSymbolV2; 00109 }; 00110 00111 class CORE_EXPORT QgsComposerRasterSymbolItem: public QgsComposerLegendItem 00112 { 00113 public: 00114 QgsComposerRasterSymbolItem(); 00115 QgsComposerRasterSymbolItem( const QString& text ); 00116 QgsComposerRasterSymbolItem( const QIcon& icon, const QString& text ); 00117 virtual ~QgsComposerRasterSymbolItem(); 00118 00119 virtual QStandardItem* clone() const; 00120 00121 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const; 00122 virtual void readXML( const QDomElement& itemElem, bool xServerAvailable = true ); 00123 00124 void setLayerID( const QString& id ) { mLayerID = id; } 00125 QString layerID() const { return mLayerID; } 00126 ItemType itemType() const { return RasterSymbolItem; } 00127 00128 void setColor( const QColor& c ) { mColor = c; } 00129 QColor color() const { return mColor; } 00130 00131 private: 00132 QString mLayerID; 00133 QColor mColor; 00134 }; 00135 00136 class CORE_EXPORT QgsComposerLayerItem: public QgsComposerLegendItem 00137 { 00138 public: 00139 QgsComposerLayerItem(); 00140 QgsComposerLayerItem( const QString& text ); 00141 virtual ~QgsComposerLayerItem(); 00142 virtual QStandardItem* clone() const; 00143 00144 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const; 00145 virtual void readXML( const QDomElement& itemElem, bool xServerAvailable = true ); 00146 00147 ItemType itemType() const { return LayerItem; } 00148 00149 void setLayerID( const QString& id ) { mLayerID = id; } 00150 QString layerID() const { return mLayerID; } 00151 00152 private: 00153 QString mLayerID; 00154 }; 00155 00156 class CORE_EXPORT QgsComposerGroupItem: public QgsComposerLegendItem 00157 { 00158 public: 00159 QgsComposerGroupItem(); 00160 QgsComposerGroupItem( const QString& text ); 00161 virtual ~QgsComposerGroupItem(); 00162 virtual QStandardItem* clone() const; 00163 00164 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const; 00165 virtual void readXML( const QDomElement& itemElem, bool xServerAvailable = true ); 00166 00167 ItemType itemType() const { return GroupItem; } 00168 }; 00169 00170 #endif // QGSCOMPOSERLEGENDITEM_H