WtssDialog.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/wtss/WtssDialog.h
24 
25  \brief Configuration dialog for Web Time Series Services plugin.
26 
27  \author Matheus Cavassan Zaglia
28  */
29 
30 #ifndef __TERRALIB_QT_PLUGINS_WTSS_WTSSDIALOG_H
31 #define __TERRALIB_QT_PLUGINS_WTSS_WTSSDIALOG_H
32 
33 // TerraLib
34 #include "../../../common.h"
35 #include "../../../datatype/Date.h"
36 #include "../../../se/Mark.h"
37 #include "../../../st/core/timeseries/TimeSeries.h"
38 #include "../../widgets/canvas/Canvas.h"
39 #include "../../widgets/canvas/MapDisplay.h"
40 #include "../../widgets/charts/ChartDisplay.h"
41 #include "../../widgets/charts/ChartDisplayWidget.h"
42 #include "../../widgets/charts/ChartStyle.h"
43 #include "../../widgets/charts/TimeSeriesChart.h"
44 
45 // QT
46 #include <QColor>
47 #include <QDialog>
48 #include <QGridLayout>
49 #include <QListWidgetItem>
50 #include <QObject>
51 #include <QTreeWidget>
52 #include <QtGui>
53 
54 // STL
55 #include <memory>
56 #include <string>
57 
58 // wtss.cxx
59 #include <wtss-cxx/data_types.hpp>
60 
61 namespace cxx = wtss::cxx;
62 
63 namespace Ui
64 {
65  class WtssDialogForm;
66 }
67 
68 namespace te
69 {
70  namespace qt
71  {
72  namespace plugins
73  {
74  namespace wtss
75  {
77  {
81  };
82 
83  class WtssDialog : public QDialog
84  {
85  Q_OBJECT
86 
87  public:
88 
89  WtssDialog(QWidget* parent = 0, Qt::WindowFlags f = 0);
90 
91  ~WtssDialog();
92 
94 
95  std::vector<te::st::TimeSeries*> getTimeSeries();
96 
97  public slots:
98 
99  void onPointPickerToggled(bool checked);
100 
101  protected slots:
102 
104 
106 
108 
109  void onItemChecked(QTreeWidgetItem* item);
110 
111  void onHideButtonClicked();
112 
114 
115  void onHelpButtonClicked();
116 
117  void onCloseButtonClicked();
118 
119  void onImportGraphClicked();
120 
121  void onExportGraphClicked();
122 
123  void onQueryButtonClicked();
124 
125  void onAddCoordToList(QListWidgetItem* coordSelected);
126 
127  void onGetPointCoordinate(QPointF& coord);
128 
129  signals:
130 
131  void pointPicked(QPointF& coord);
132 
133  void close();
134 
135  private:
136 
137  void loadSettings();
138 
139  void serverSettings();
140 
141  void dateSettings();
142 
143  void addServer(QString server);
144 
145  void addCoverage(QTreeWidgetItem* serverItem, QJsonObject j_server);
146 
147  void addAtributes(QTreeWidgetItem* coverageItem,
148  QJsonObject j_coverage);
149 
150  bool validateQuery();
151 
152  void doTimeseriesQuery(cxx::timeseries_query_t query);
153 
154  void convertToTimeSeries(cxx::timeseries_query_result_t result);
155 
156  void plotTimeSeries();
157 
158  void defineDisplay();
159 
160  void defineMarker();
161 
162  void setPointPicked(QPointF& coord);
163 
164  void addMarker(double x, double y);
165 
166  QColor randomColor();
167 
168  void addLocation(double x, double y);
169 
170  void clearCanvas();
171 
172  void closeEvent(QCloseEvent* e);
173 
174  private:
175 
176  std::auto_ptr<Ui::WtssDialogForm> m_ui;
177 
178  bool dirty;
179 
181 
183 
185 
186  QJsonObject j_config;
187 
188  cxx::timeseries_query_result_t m_result;
189 
190  std::string m_lastQueriedServer;
191 
193 
195 
197 
199 
200  std::vector<te::st::TimeSeries*> m_timeSeriesVec;
201 
203 
205 
206  };
207  }
208  }
209  } // end namespace tl
210 } // end namespace wtss
211 
212 #endif // __TERRALIB_QT_PLUGINS_WTSS_WTSSDIALOG_H
void doTimeseriesQuery(cxx::timeseries_query_t query)
void onGetPointCoordinate(QPointF &coord)
cxx::timeseries_query_result_t m_result
Definition: WtssDialog.h:188
void addServer(QString server)
A Mark specifies a geometric shape and applies coloring to it.
Definition: Mark.h:84
std::vector< te::st::TimeSeries * > m_timeSeriesVec
Definition: WtssDialog.h:200
te::qt::widgets::ChartDisplay * m_chartDisplay
Definition: WtssDialog.h:194
void addCoverage(QTreeWidgetItem *serverItem, QJsonObject j_server)
void addLocation(double x, double y)
std::auto_ptr< Ui::WtssDialogForm > m_ui
Definition: WtssDialog.h:176
void convertToTimeSeries(cxx::timeseries_query_result_t result)
A widget to control the display of a set of layers.
Definition: MapDisplay.h:69
void setPointPicked(QPointF &coord)
void setMapDisplay(te::qt::widgets::MapDisplay *mapDisplay)
void onPointPickerToggled(bool checked)
te::qt::widgets::MapDisplay * m_mapDisplay
Definition: WtssDialog.h:192
URI C++ Library.
void addMarker(double x, double y)
A class to represent a chart display.
Definition: ChartDisplay.h:65
te::qt::widgets::ChartStyle * m_chartStyle
Definition: WtssDialog.h:196
void pointPicked(QPointF &coord)
void onItemChecked(QTreeWidgetItem *item)
te::color::RGBAColor ** m_rgbaMarker
Definition: WtssDialog.h:202
void closeEvent(QCloseEvent *e)
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.
Definition: RGBAColor.h:57
te::qt::widgets::TimeSeriesChart * m_timeSeriesChart
Definition: WtssDialog.h:198
WtssDialog(QWidget *parent=0, Qt::WindowFlags f=0)
A class to represent a timeSeries chart.
std::vector< te::st::TimeSeries * > getTimeSeries()
void onAddCoordToList(QListWidgetItem *coordSelected)
void addAtributes(QTreeWidgetItem *coverageItem, QJsonObject j_coverage)