Quantum GIS API Documentation  1.7.4
src/core/composer/qgscomposerlegenditem.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines