All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
MapItem.h
Go to the documentation of this file.
1 /* Copyright (C) 2014-2014 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file MapItem.h
22 
23  \brief
24 
25  \ingroup layout
26 */
27 
28 #ifndef __TERRALIB_LAYOUT_INTERNAL_MAP_ITEM_H
29 #define __TERRALIB_LAYOUT_INTERNAL_MAP_ITEM_H
30 
31 // Qt
32 #include <QGraphicsProxyWidget>
33 #include <QVariant>
34 
35 // TerraLib
36 #include "ItemObserver.h"
37 #include "../../../../qt/widgets/canvas/MultiThreadMapDisplay.h"
38 #include "../../../../qt/widgets/layer/explorer/AbstractTreeItem.h"
39 #include "../../../../qt/widgets/tools/AbstractTool.h"
40 #include "EnumMode.h"
41 
42 class QGraphicsSceneMouseEvent;
43 class QMimeData;
44 
45 namespace te
46 {
47  namespace layout
48  {
49  class Observable;
50  class ItemController;
51 
52  class MapItem : public QGraphicsProxyWidget, public ItemObserver
53  {
54  Q_OBJECT //for slots/signals
55 
56  public:
57 
58  MapItem( ItemController* controller, Observable* o );
59  virtual ~MapItem();
60 
61  virtual void updateObserver(ContextItem context);
62 
63  void setPixmap( const QPixmap& pixmap );
64 
65  virtual void paint ( QPainter * painter, const QStyleOptionGraphicsItem* option, QWidget * widget = 0 );
66 
67  //Mandatory implementation methods
68  virtual void setRect(QRectF rect);
69 
70  virtual void setPos(const QPointF &pos);
71 
72  void setZValue ( qreal z );
73 
74  virtual void changeCurrentTool(LayoutMode mode);
75 
76  void clearCurrentTool();
77 
78  protected slots:
79 
80  void onDrawLayersFinished(const QMap<QString, QString>& errors);
81 
82  protected:
83 
84  virtual void dropEvent ( QGraphicsSceneDragDropEvent * event );
85 
86  //Override method for using moves, selected, etc.,
87  //which are implemented by default in QGraphicsItem
88  virtual void mouseMoveEvent ( QGraphicsSceneMouseEvent * event );
89  virtual void mousePressEvent ( QGraphicsSceneMouseEvent * event );
90  virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event );
91  virtual void dragEnterEvent ( QGraphicsSceneDragDropEvent * event );
92  virtual void dragLeaveEvent ( QGraphicsSceneDragDropEvent * event );
93  virtual void dragMoveEvent ( QGraphicsSceneDragDropEvent * event );
94  virtual void resizeEvent ( QGraphicsSceneResizeEvent * event );
95 
96  virtual te::gm::Coord2D getPosition();
97 
98  virtual void drawSelection( QPainter* painter );
99 
100  virtual void getMimeData(const QMimeData* mime);
101 
102  std::list<te::map::AbstractLayerPtr> getVisibleLayers();
103 
105 
106  virtual int getZValueItem();
107 
109 
110  protected:
111 
112  QPixmap m_pixmap;
113  QRectF m_rect;//In local coordinate
114  QMimeData* m_mime;
115 
120  };
121  }
122 }
123 
124 #endif
virtual void updateObserver(ContextItem context)
Definition: MapItem.cpp:129
virtual ~MapItem()
Definition: MapItem.cpp:113
virtual void getMimeData(const QMimeData *mime)
Definition: MapItem.cpp:346
QPixmap m_pixmap
Definition: MapItem.h:112
void onDrawLayersFinished(const QMap< QString, QString > &errors)
Definition: MapItem.cpp:399
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
Definition: MapItem.cpp:224
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
Definition: MapItem.cpp:291
virtual void changeCurrentTool(LayoutMode mode)
Definition: MapItem.cpp:459
virtual void drawSelection(QPainter *painter)
Definition: MapItem.cpp:188
virtual void setRect(QRectF rect)
Definition: MapItem.cpp:262
The class that represents an item in a LayerTreeModel.
virtual void setPos(const QPointF &pos)
Definition: MapItem.cpp:284
An utility struct for representing 2D coordinates.
Definition: Coord2D.h:40
void setPixmap(const QPixmap &pixmap)
Definition: MapItem.cpp:243
This class defines an interface for objects that can receive application events and respond to them...
Definition: AbstractTool.h:62
LayoutMode
Enum LayoutMode. This is the enumeration of the components types.
Definition: EnumMode.h:38
virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
Definition: MapItem.cpp:234
void setZValue(qreal z)
Definition: MapItem.cpp:420
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0)
Definition: MapItem.cpp:166
bool m_grabbedByWidget
Definition: MapItem.h:117
void setCurrentTool(te::qt::widgets::AbstractTool *tool)
Definition: MapItem.cpp:432
virtual void dropEvent(QGraphicsSceneDragDropEvent *event)
Definition: MapItem.cpp:210
std::list< te::map::AbstractLayerPtr > getVisibleLayers()
Definition: MapItem.cpp:358
virtual te::gm::Coord2D getPosition()
Definition: MapItem.cpp:271
virtual void resizeEvent(QGraphicsSceneResizeEvent *event)
Definition: MapItem.cpp:341
te::qt::widgets::AbstractTool * m_tool
Definition: MapItem.h:119
te::qt::widgets::AbstractTreeItem * m_treeItem
Definition: MapItem.h:118
void clearCurrentTool()
Definition: MapItem.cpp:446
QMimeData * m_mime
Definition: MapItem.h:114
virtual int getZValueItem()
Definition: MapItem.cpp:427
te::map::AbstractLayerPtr getLayer()
Definition: MapItem.cpp:387
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
Definition: MapItem.cpp:323
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event)
Definition: MapItem.cpp:238
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
A multi thread Qt4 widget to control the display of a set of layers.
MapItem(ItemController *controller, Observable *o)
Definition: MapItem.cpp:75
te::qt::widgets::MultiThreadMapDisplay * m_mapDisplay
Definition: MapItem.h:116
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event)
Definition: MapItem.cpp:307