TimeViewerDockWidget.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
3 
4  This file is part of the TerraLib - a Framework for building GIS enabled
5  applications.
6 
7  TerraLib is free software: you can redistribute it and/or modify
8  it under the terms of the GNU Lesser General Public License as published by
9  the Free Software Foundation, either version 3 of the License,
10  or (at your option) any later version.
11 
12  TerraLib is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU Lesser General Public License for more details.
16 
17  You should have received a copy of the GNU Lesser General Public License
18  along with TerraLib. See COPYING. If not, write to
19  TerraLib Team at <terralib-team@terralib.org>.
20 */
21 
22 /*!
23  \file terralib/qt/plugins/timeviewer/Plugin.h
24 
25  \brief Add a plugin interface for dynamic loading of the TimeViewer plugin.
26 
27  \author Carolina Galvão dos Santos
28  \author Matheus Cavassan Zaglia
29  \author Fabiana Zioti
30 
31  */
32 
33 #ifndef __TERRALIB_QT_PLUGINS_TIMEVIEWERDOCKWIDGET_H__
34 #define __TERRALIB_QT_PLUGINS_TIMEVIEWERDOCKWIDGET_H__
35 
36 // TerraLib
37 #include "../../../color/RGBAColor.h"
38 #include "../../../dataaccess/datasource/DataSource.h"
39 #include "../../../maptools/QueryLayer.h"
40 #include "../../af/BaseApplication.h"
41 #include "../../widgets/colorbar/ColorCatalogWidget.h"
42 #include "Config.h"
45 
46 // QT
47 #include <QtConcurrent/qtconcurrentrun.h>
48 #include <QAction>
49 #include <QDockWidget>
50 #include <QEventLoop>
51 #include <QList>
52 #include <QTimer>
53 
54 // STL
55 #include <future>
56 
57 namespace Ui
58 {
59  class TimeViewerWidget;
60 }
61 
62 class QWidget;
63 class QDateTime;
64 
65 namespace te
66 {
67  // Forward declarations
68  namespace color
69  {
70  class ColorBar;
71  }
72 
73  namespace se
74  {
75  class Rule;
76  class Style;
77  }
78 
79  namespace map
80  {
81  class Grouping;
82  class GroupingItem;
83  }
84 
85  namespace qt
86  {
87  namespace af
88  {
89  namespace evt
90  {
91  struct Event;
92  }
93  class BaseApplication;
94  }
95 
96  namespace plugins
97  {
98  namespace tv
99  {
100  class TimeViewerDockWidget : public QDockWidget
101  {
102  Q_OBJECT
103 
104  public:
105  TimeViewerDockWidget(QWidget* parent = nullptr);
106 
108 
109  protected slots:
110 
111  void onLayerCBoxSelected(int index);
124 
126 
127  private:
128  void setupSlider();
130  void setupLayer();
132  void drawLayer();
133  void setupPlayer();
134  void buildSymbolizer(std::string date);
135  void getDataAsString(std::vector<std::string>& vec, const std::string& attrName, int& nullValues);
136 
137  Q_SIGNALS:
138 
140 
141  private:
142  Ui::TimeViewerWidget* m_ui;
143 
144  std::string m_dsId;
145  std::string m_start;
146  std::string m_end;
147  std::string m_datasetName;
148  std::string m_class;
149  std::string m_label;
150  QString m_accumColor = "#dddddd";
151 
154 
155  QFuture<void> m_future;
156 
157  QEventLoop* m_drawingLoop;
158  std::atomic<bool> m_drawing;
159 
161  std::list<te::map::AbstractLayerPtr> m_layerList;
163 
164  std::vector<te::se::Rule*> m_rules;
165 
166  std::unique_ptr<te::qt::plugins::tv::TimeViewerEditLegendDialog> m_editLegendDialog;
167  std::unique_ptr<te::qt::plugins::tv::TimeViewerEditAccumulateDialog> m_editAccumulateDialog;
168 
170  std::vector<std::string> m_dates;
171  std::vector<std::string> vec;
172  QWidget* m_mainWidget;
173  };
174 
175  } // end namespace tv
176  } // end namespace plugins
177  } // end namespace qt
178 } // end namespace te
179 
180 #endif //__TERRALIB_QT_PLUGINS_TIMEVIEWERDOCKWIDGET_H__
te::qt::plugins::tv::TimeViewerDockWidget::setupLayer
void setupLayer()
te::qt::plugins::tv::TimeViewerDockWidget::m_dsId
std::string m_dsId
Definition: TimeViewerDockWidget.h:144
te::qt::plugins::tv::TimeViewerDockWidget::vec
std::vector< std::string > vec
Definition: TimeViewerDockWidget.h:171
TimeViewerEditLegendDialog.h
A dialog used to edit legend.
te::qt::plugins::tv::TimeViewerDockWidget::~TimeViewerDockWidget
~TimeViewerDockWidget()
TimeViewerEditAccumulateDialog.h
A dialog used to edit Accumulate Legend.
te::qt::plugins::tv::TimeViewerDockWidget::m_mainWidget
QWidget * m_mainWidget
Definition: TimeViewerDockWidget.h:172
te::qt::plugins::tv::TimeViewerDockWidget::m_future
QFuture< void > m_future
Definition: TimeViewerDockWidget.h:155
te
TerraLib.
Definition: AddressGeocodingOp.h:52
te::qt::plugins::tv::TimeViewerDockWidget::m_class
std::string m_class
Definition: TimeViewerDockWidget.h:148
te::qt::plugins::tv::TimeViewerDockWidget::onApplicationTriggered
void onApplicationTriggered(te::qt::af::evt::Event *e)
te::qt::plugins::tv::TimeViewerDockWidget::m_accumColor
QString m_accumColor
Definition: TimeViewerDockWidget.h:150
te::qt::af::BaseApplication
Definition: BaseApplication.h:86
te::qt::plugins::tv::TimeViewerDockWidget::m_ui
Ui::TimeViewerWidget * m_ui
Definition: TimeViewerDockWidget.h:142
te::qt::plugins::tv::TimeViewerDockWidget::onBackButtonClicked
void onBackButtonClicked()
te::qt::plugins::tv::TimeViewerDockWidget::onEditLegendApplyClicked
void onEditLegendApplyClicked()
te::qt::plugins::tv::TimeViewerDockWidget::setupPlayer
void setupPlayer()
te::qt::plugins::tv::TimeViewerDockWidget::m_editAccumulateDialog
std::unique_ptr< te::qt::plugins::tv::TimeViewerEditAccumulateDialog > m_editAccumulateDialog
Definition: TimeViewerDockWidget.h:167
te::qt::plugins::tv::TimeViewerDockWidget::onPassButtonClicked
void onPassButtonClicked()
te::qt::plugins::tv::TimeViewerDockWidget::onApplyButtonClicked
void onApplyButtonClicked()
te::qt::plugins::tv::TimeViewerDockWidget
Definition: TimeViewerDockWidget.h:101
te::qt::plugins::tv::TimeViewerDockWidget::triggered
void triggered(te::qt::af::evt::Event *e)
te::qt::plugins::tv::TimeViewerDockWidget::getDataAsString
void getDataAsString(std::vector< std::string > &vec, const std::string &attrName, int &nullValues)
te::qt::plugins::tv::TimeViewerDockWidget::m_label
std::string m_label
Definition: TimeViewerDockWidget.h:149
te::qt::plugins::tv::TimeViewerDockWidget::onAccumulateOkClicked
void onAccumulateOkClicked()
te::qt::plugins::tv::TimeViewerDockWidget::m_end
std::string m_end
Definition: TimeViewerDockWidget.h:146
te::qt::plugins::tv::TimeViewerDockWidget::onPauseButtonClicked
void onPauseButtonClicked()
te::qt::plugins::tv::TimeViewerDockWidget::onLegendButtoClicked
void onLegendButtoClicked()
te::qt::plugins::tv::TimeViewerDockWidget::setupLayerCombo
void setupLayerCombo()
te::qt::plugins::tv::TimeViewerDockWidget::m_drawingLoop
QEventLoop * m_drawingLoop
Definition: TimeViewerDockWidget.h:157
te::qt::plugins::tv::TimeViewerDockWidget::m_start
std::string m_start
Definition: TimeViewerDockWidget.h:145
Ui
Definition: ConfigInputAddressDialog.h:44
te::qt::plugins::tv::TimeViewerDockWidget::m_drawing
std::atomic< bool > m_drawing
Definition: TimeViewerDockWidget.h:158
te::qt::plugins::tv::TimeViewerDockWidget::onSliderChanged
void onSliderChanged()
te::qt::af::evt::Event
A base class for application events.
Definition: Event.h:60
te::qt::plugins::tv::TimeViewerDockWidget::m_layer
te::map::QueryLayerPtr m_layer
Definition: TimeViewerDockWidget.h:162
slots
#define slots
Definition: VirtualMachine.h:48
te::qt::plugins::tv::TimeViewerDockWidget::buildSymbolizer
void buildSymbolizer(std::string date)
te::qt::plugins::tv::TimeViewerDockWidget::m_dates
std::vector< std::string > m_dates
Definition: TimeViewerDockWidget.h:170
te::qt::plugins::tv::TimeViewerDockWidget::onLayerCBoxSelected
void onLayerCBoxSelected(int index)
te::qt::plugins::tv::TimeViewerDockWidget::m_datasetName
std::string m_datasetName
Definition: TimeViewerDockWidget.h:147
te::qt::plugins::tv::TimeViewerDockWidget::TimeViewerDockWidget
TimeViewerDockWidget(QWidget *parent=nullptr)
te::qt::plugins::tv::TimeViewerDockWidget::onAccumulateSelect
void onAccumulateSelect()
te::qt::plugins::tv::TimeViewerDockWidget::onPlayButtonClicked
void onPlayButtonClicked()
te::qt::plugins::tv::TimeViewerDockWidget::m_dsPtr
te::da::DataSourcePtr m_dsPtr
Definition: TimeViewerDockWidget.h:160
te::qt::plugins::tv::TimeViewerDockWidget::m_sliderThr
bool m_sliderThr
Definition: TimeViewerDockWidget.h:153
te::map::QueryLayerPtr
boost::intrusive_ptr< QueryLayer > QueryLayerPtr
Definition: QueryLayer.h:186
te::qt::plugins::tv::TimeViewerDockWidget::setupSlider
void setupSlider()
te::qt::plugins::tv::TimeViewerDockWidget::m_app
te::qt::af::BaseApplication * m_app
Definition: TimeViewerDockWidget.h:169
te::da::DataSourcePtr
boost::shared_ptr< DataSource > DataSourcePtr
Definition: DataSource.h:1449
te::qt::plugins::tv::TimeViewerDockWidget::m_layerList
std::list< te::map::AbstractLayerPtr > m_layerList
Definition: TimeViewerDockWidget.h:161
Config.h
Proxy configuration file for TerraView (see terraview_config.h).
te::qt::plugins::tv::TimeViewerDockWidget::m_accumulate
bool m_accumulate
Definition: TimeViewerDockWidget.h:152
te::qt::plugins::tv::TimeViewerDockWidget::m_editLegendDialog
std::unique_ptr< te::qt::plugins::tv::TimeViewerEditLegendDialog > m_editLegendDialog
Definition: TimeViewerDockWidget.h:166
te::qt::plugins::tv::TimeViewerDockWidget::onStopButtonClicked
void onStopButtonClicked()
te::qt::plugins::tv::TimeViewerDockWidget::drawLayer
void drawLayer()
te::qt::plugins::tv::TimeViewerDockWidget::onAccumulateButtonClicked
void onAccumulateButtonClicked()
te::qt::plugins::tv::TimeViewerDockWidget::setupLayerInt
void setupLayerInt()
te::qt::plugins::tv::TimeViewerDockWidget::m_rules
std::vector< te::se::Rule * > m_rules
Definition: TimeViewerDockWidget.h:164