af/connectors/InterfaceController.cpp
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of TerraView - A GIS Application.
4 
5  TerraView is free software: you can redistribute it and/or modify
6  it under the terms of the GNU 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  TerraView 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 General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with TerraLib Code Editor. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@dpi.inpe.br>.
18  */
19 
20 /*!
21  \file terralib/qt/af/connectors/InterfaceController.cpp
22 
23  \brief A connector to controll all non modal interfaces.
24 */
25 
26 // TerraLib
27 #include "../../widgets/InterfaceController.h"
28 #include "../events/Event.h"
29 #include "../events/LayerEvents.h"
30 #include "../ApplicationController.h"
31 #include "InterfaceController.h"
32 
34  : QObject(parent)
35 {
36 }
37 
39 {
40  m_interfaces.erase(m_interfaces.begin(), m_interfaces.end());
41  m_interfaces.clear();
42 }
43 
45 {
46  std::set<te::qt::widgets::InterfaceController*>::iterator it = m_interfaces.find(i);
47 
48  if(it == m_interfaces.end())
49  m_interfaces.insert(i);
50 }
51 
53 {
54  std::set<te::qt::widgets::InterfaceController*>::iterator it = m_interfaces.find(i);
55 
56  if(it != m_interfaces.end())
57  m_interfaces.erase(it);
58 }
59 
61 {
62  switch(evt->m_id)
63  {
65  {
67 
68  layerSelected( ev->m_layer);
69  }
70  break;
71 
73  {
75 
76  layerAdded( ev->m_layer);
77  }
78  break;
79 
81  {
83 
84  for(std::list<te::map::AbstractLayerPtr>::iterator it = ev->m_layers.begin(); it != ev->m_layers.end(); ++it)
85  layerRemoved(*it);
86  }
87  break;
88 
89  default:
90  return;
91  }
92 }
93 
95 {
96  assert(layer);
97 
98  std::set<te::qt::widgets::InterfaceController*>::iterator it = m_interfaces.begin();
99 
100  while(it != m_interfaces.end())
101  {
102  (*it)->layerSelected(layer);
103  ++it;
104  }
105 }
106 
108 {
109  assert(layer);
110 
111  std::set<te::qt::widgets::InterfaceController*>::iterator it = m_interfaces.begin();
112 
113  while(it != m_interfaces.end())
114  {
115  (*it)->layerAdded(layer);
116  ++it;
117  }
118 }
119 
121 {
122  assert(layer);
123 
124  std::set<te::qt::widgets::InterfaceController*>::iterator it = m_interfaces.begin();
125 
126  while(it != m_interfaces.end())
127  {
128  (*it)->layerRemoved(layer);
129  ++it;
130  }
131 }
void layerRemoved(te::map::AbstractLayerPtr layer)
This method is used to remove a layer.
This event signals that a new layer was created.
Definition: LayerEvents.h:71
void layerSelected(te::map::AbstractLayerPtr layer)
This method is used to set current layer.
A base class for application events.
void addInterface(te::qt::widgets::InterfaceController *i)
te::map::AbstractLayerPtr m_layer
Pointer to the selected layer.
Definition: LayerEvents.h:196
std::set< te::qt::widgets::InterfaceController * > m_interfaces
A virtual class for non modal interfaces.
void layerAdded(te::map::AbstractLayerPtr layer)
This method is used to add a new layer.
This event indicates that the layer has been selected.
Definition: LayerEvents.h:183
void removeInteface(te::qt::widgets::InterfaceController *i)
te::map::AbstractLayerPtr m_layer
The layer to be added.
Definition: LayerEvents.h:86
std::list< te::map::AbstractLayerPtr > m_layers
Layer removed.
Definition: LayerEvents.h:154
void onApplicationTriggered(te::qt::af::evt::Event *evt)
Listener to the application framewrork events.
InterfaceController(QObject *parent=0)
Constructor.
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
A connector to controll all non modal interfaces.