00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
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;
00045 virtual void readXML( const QDomElement& itemElem ) = 0;
00046
00047 virtual ItemType itemType() const = 0;
00048 virtual QStandardItem* clone() const = 0;
00049
00050 protected:
00051 void writeXMLChildren( QDomElement& elem, QDomDocument& doc ) const;
00052 };
00053
00054 class QgsSymbol;
00055
00056 class CORE_EXPORT QgsComposerSymbolItem: public QgsComposerLegendItem
00057 {
00058 public:
00059 QgsComposerSymbolItem();
00060 QgsComposerSymbolItem( const QString& text );
00061 QgsComposerSymbolItem( const QIcon& icon, const QString& text );
00062 virtual ~QgsComposerSymbolItem();
00063
00064 virtual QStandardItem* clone() const;
00065
00066 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const;
00067 virtual void readXML( const QDomElement& itemElem );
00068
00070 void setSymbol( QgsSymbol* s );
00071 QgsSymbol* symbol() {return mSymbol;}
00072
00073 void setLayerID( const QString& id ) { mLayerID = id; }
00074 QString layerID() const { return mLayerID; }
00075
00076 ItemType itemType() const { return SymbologyItem; }
00077
00078 private:
00079 QgsSymbol* mSymbol;
00080 QString mLayerID;
00081 };
00082
00083 class QgsSymbolV2;
00084
00085 class CORE_EXPORT QgsComposerSymbolV2Item: public QgsComposerLegendItem
00086 {
00087 public:
00088 QgsComposerSymbolV2Item();
00089 QgsComposerSymbolV2Item( const QString& text );
00090 QgsComposerSymbolV2Item( const QIcon& icon, const QString& text );
00091 virtual ~QgsComposerSymbolV2Item();
00092
00093 virtual QStandardItem* clone() const;
00094
00095 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const;
00096 virtual void readXML( const QDomElement& itemElem );
00097
00099 void setSymbolV2( QgsSymbolV2* s );
00100 QgsSymbolV2* symbolV2() {return mSymbolV2;}
00101
00102 ItemType itemType() const { return SymbologyV2Item; }
00103
00104 private:
00105 QgsSymbolV2* mSymbolV2;
00106 };
00107
00108 class CORE_EXPORT QgsComposerRasterSymbolItem: public QgsComposerLegendItem
00109 {
00110 public:
00111 QgsComposerRasterSymbolItem();
00112 QgsComposerRasterSymbolItem( const QString& text );
00113 QgsComposerRasterSymbolItem( const QIcon& icon, const QString& text );
00114 virtual ~QgsComposerRasterSymbolItem();
00115
00116 virtual QStandardItem* clone() const;
00117
00118 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const;
00119 virtual void readXML( const QDomElement& itemElem );
00120
00121 void setLayerID( const QString& id ) { mLayerID = id; }
00122 QString layerID() const { return mLayerID; }
00123 ItemType itemType() const { return RasterSymbolItem; }
00124
00125 private:
00126 QString mLayerID;
00127 };
00128
00129 class CORE_EXPORT QgsComposerLayerItem: public QgsComposerLegendItem
00130 {
00131 public:
00132 QgsComposerLayerItem();
00133 QgsComposerLayerItem( const QString& text );
00134 virtual ~QgsComposerLayerItem();
00135 virtual QStandardItem* clone() const;
00136
00137 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const;
00138 virtual void readXML( const QDomElement& itemElem );
00139
00140 ItemType itemType() const { return LayerItem; }
00141
00142 void setLayerID( const QString& id ) { mLayerID = id; }
00143 QString layerID() const { return mLayerID; }
00144
00145 private:
00146 QString mLayerID;
00147 };
00148
00149 class CORE_EXPORT QgsComposerGroupItem: public QgsComposerLegendItem
00150 {
00151 public:
00152 QgsComposerGroupItem();
00153 QgsComposerGroupItem( const QString& text );
00154 virtual ~QgsComposerGroupItem();
00155 virtual QStandardItem* clone() const;
00156
00157 virtual void writeXML( QDomElement& elem, QDomDocument& doc ) const;
00158 virtual void readXML( const QDomElement& itemElem );
00159
00160 ItemType itemType() const { return GroupItem; }
00161 };
00162
00163 #endif // QGSCOMPOSERLEGENDITEM_H