00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef QGSFORMANNOTATIONITEM_H
00019 #define QGSFORMANNOTATIONITEM_H
00020
00021 #include "qgsannotationitem.h"
00022 #include <QObject>
00023
00024 class QGraphicsProxyWidget;
00025
00027 class GUI_EXPORT QgsFormAnnotationItem: public QObject, public QgsAnnotationItem
00028 {
00029 Q_OBJECT
00030 public:
00031 QgsFormAnnotationItem( QgsMapCanvas* canvas, QgsVectorLayer* vlayer = 0, bool hasFeature = false, int feature = 0 );
00032 ~QgsFormAnnotationItem();
00033
00034 void paint( QPainter * painter );
00035
00037 void paint( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 );
00038
00039 QSizeF minimumFrameSize() const;
00041 QSizeF preferredFrameSize() const;
00042
00044 void setMapPosition( const QgsPoint& pos );
00045
00046 void setDesignerForm( const QString& uiFile );
00047 QString designerForm() const { return mDesignerForm; }
00048
00049 void writeXML( QDomDocument& doc ) const;
00050 void readXML( const QDomDocument& doc, const QDomElement& itemElem );
00051
00052 QgsVectorLayer* vectorLayer() const { return mVectorLayer; }
00053
00054 private slots:
00056 void setFeatureForMapPosition();
00058 void updateVisibility();
00059
00060 private:
00061 QGraphicsProxyWidget* mWidgetContainer;
00062 QWidget* mDesignerWidget;
00064 QgsVectorLayer* mVectorLayer;
00066 bool mHasAssociatedFeature;
00068 int mFeature;
00070 QString mDesignerForm;
00071
00072 QWidget* createDesignerWidget( const QString& filePath );
00073 };
00074
00075 #endif // QGSFORMANNOTATIONITEM_H