DisplayWidget.cpp
Go to the documentation of this file.
1 #include "../ApplicationController.h"
2 #include "../events/MapEvents.h"
3 #include "../events/ApplicationEvents.h"
4 #include "../Utils.h"
5 #include "../../widgets/canvas/MapDisplay.h"
6 #include "../../widgets/Utils.h"
7 
8 #include "../../widgets/layer/explorer/LayerItemView.h"
9 
10 #include "ui_DisplayWidgetForm.h"
11 #include "DisplayWidget.h"
12 
13 // Qt
14 #include <QColor>
15 #include <QColorDialog>
16 #include <QFrame>
17 #include <QPalette>
18 #include <QIntValidator>
19 #include <QApplication>
20 #include <QDesktopWidget>
21 #include <QRect>
22 
23 // Boost
24 #include <boost/lexical_cast.hpp>
25 
27 AbstractSettingWidget(parent),
28 m_ui(new Ui::DisplayWidgetForm)
29 {
30  m_ui->setupUi(this);
31 
32  m_resumeText = tr("Configurations of the display");
33 
34  QSettings sett(QSettings::IniFormat, QSettings::UserScope, qApp->organizationName(), qApp->applicationName());
35  QString hexColor = sett.value("display/defaultDisplayColor").toString();
36  QColor dColor;
37  dColor.setNamedColor(hexColor);
38 
39  QPalette palette = m_ui->m_backColor->palette();
40 
41  if(!dColor.isValid())
42  {
43  palette.setColor(QPalette::Window, Qt::white);
44  }
45  else
46  {
47  palette.setColor(QPalette::Window, dColor);
48  }
49 
50  m_ui->m_backColor->setPalette(palette);
51  m_ui->m_backColor->setAutoFillBackground(true);
52 
53  QIntValidator* validatorWidth = new QIntValidator(this);
54  m_ui->m_screenWidthLineEdit->setValidator(validatorWidth);
55 
56  QIntValidator* validatorHeight = new QIntValidator(this);
57  m_ui->m_screenHeightLineEdit->setValidator(validatorHeight);
58 
59  this->resetScreenSizeState();
60 
61  connect(m_ui->m_changeBackgroundPushButton, SIGNAL(clicked()), SLOT(onChangeBackgroundPushButton()));
62  connect(m_ui->m_applyScreenSizePushButton, SIGNAL(clicked()), SLOT(onApplyScreenSizeButtonClicked()));
63  connect(m_ui->m_restoreScreenSizePushButton, SIGNAL(clicked()), SLOT(onRestoreScreenSizeButtonClicked()));
64 }
65 
67 {
68  delete m_ui;
69 }
70 
72 {
73  QColor color = QColorDialog::getColor(m_ui->m_backColor->palette().color(QPalette::Window), this);
74 
75  if(!color.isValid())
76  return;
77 
78  QPalette palette = m_ui->m_backColor->palette();
79  palette.setColor(QPalette::Window, color);
80  m_ui->m_backColor->setPalette(palette);
81  m_ui->m_backColor->setAutoFillBackground(true);
82 
84 }
85 
87 {
88 
89  QString widthMMStr = m_ui->m_screenWidthLineEdit->text();
90  QString heightMMStr = m_ui->m_screenHeightLineEdit->text();
91 
92  if(widthMMStr.isEmpty() || heightMMStr.isEmpty())
93  {
94  QMessageBox::warning(this,
95  tr("Display Options"),
96  tr("Fill width and height!"));
97  return;
98  }
99 
100  int widthMM = widthMMStr.toInt();
101  int heightMM = heightMMStr.toInt();
102 
103  QRect screenRect = QApplication::desktop()->screenGeometry();
104  int width = screenRect.width();
105  int height = screenRect.height();
106 
107  int dpiX = (double)width/((double)widthMM/25.4);
108  int dpiY = (double)height/((double)heightMM/25.4);
109 
110  te::qt::af::evt::GetMapDisplay getMapDisplay;
111 
112  m_app->trigger(&getMapDisplay);
113 
114  te::qt::widgets::MapDisplay* mapDisplay = getMapDisplay.m_display->getDisplay();
115 
116  if(mapDisplay == nullptr)
117  {
118  QMessageBox::warning(this,
119  tr("Display Options"),
120  tr("Map Display Configuration Failed!"));
121  return;
122  }
123 
124  mapDisplay->setOverrideDPI(dpiX, dpiY);
125 
127 
128  m_app->trigger(&layerExEvent);
129 
130  std::list<te::map::AbstractLayerPtr> ls;
131 
132  te::qt::widgets::GetValidLayers(layerExEvent.m_layerExplorer->model(), QModelIndex(), ls);
133 
134  if(ls.empty())
135  return;
136 
137  getMapDisplay.m_display->fit(ls);
138 
139  this->saveScreenSizeChanges();
140 
141  QMessageBox::information(this,
142  tr("Display Options"),
143  tr("Screen Size Configuration Applied!"));
144 }
145 
147 {
148 
149  QString widthMMStr = m_ui->m_screenWidthLineEdit->text();
150  QString heightMMStr = m_ui->m_screenHeightLineEdit->text();
151 
152  if(widthMMStr.isEmpty() && heightMMStr.isEmpty())
153  {
154  return;
155  }
156 
157  te::qt::af::evt::GetMapDisplay getMapDisplay;
158 
159  m_app->trigger(&getMapDisplay);
160 
161  te::qt::widgets::MapDisplay* mapDisplay = getMapDisplay.m_display->getDisplay();
162 
163  if(mapDisplay == nullptr)
164  {
165  QMessageBox::warning(this,
166  tr("Display Options"),
167  tr("Map Display Configuration Failed!"));
168  return;
169  }
170 
171  mapDisplay->setOverrideDPI(-1, -1);
172 
174 
175  m_app->trigger(&layerExEvent);
176 
177  std::list<te::map::AbstractLayerPtr> ls;
178 
179  te::qt::widgets::GetValidLayers(layerExEvent.m_layerExplorer->model(), QModelIndex(), ls);
180 
181  m_ui->m_screenWidthLineEdit->clear();
182  m_ui->m_screenHeightLineEdit->clear();
183 
184 
185  this->saveScreenSizeChanges();
186 
187  QMessageBox::information(this,
188  tr("Display Options"),
189  tr("Default Screen Size Restored!"));
190 
191  if(ls.empty())
192  return;
193 
194  getMapDisplay.m_display->fit(ls);
195 
196 }
197 
199 {
200  QSettings sett(QSettings::IniFormat, QSettings::UserScope, qApp->organizationName(), qApp->applicationName());
201 
202  sett.setValue("display/defaultDisplayColor", m_ui->m_backColor->palette().color(QPalette::Window).name());
203 
204  te::qt::af::evt::MapColorChanged mapColorChanged(m_ui->m_backColor->palette().color(QPalette::Window));
205 
206  m_app->trigger(&mapColorChanged);
207 
208  changeApplyButtonState(false);
209 }
210 
212 {
213  QSettings sett(QSettings::IniFormat, QSettings::UserScope, qApp->organizationName(), qApp->applicationName());
214 
215  sett.setValue("display/screenWidthMM", m_ui->m_screenWidthLineEdit->text());
216  sett.setValue("display/screenHeightMM", m_ui->m_screenHeightLineEdit->text());
217 }
218 
220 {
221  QSettings sett(QSettings::IniFormat, QSettings::UserScope, qApp->organizationName(), qApp->applicationName());
222  QString hexColor = sett.value("display/defaultDisplayColor").toString();
223  QColor dColor;
224  dColor.setNamedColor(hexColor);
225 
226  QPalette palette = m_ui->m_backColor->palette();
227 
228  if(!dColor.isValid())
229  {
230  palette.setColor(QPalette::Window, Qt::white);
231  }
232  else
233  {
234  palette.setColor(QPalette::Window, dColor);
235  }
236 
237  m_ui->m_backColor->setPalette(palette);
238  m_ui->m_backColor->setAutoFillBackground(true);
239 }
240 
242 {
243  QSettings sett(QSettings::IniFormat, QSettings::UserScope, qApp->organizationName(), qApp->applicationName());
244 
245  QString widthMM = sett.value("display/screenWidthMM").toString();
246  QString heightMM = sett.value("display/screenHeightMM").toString();
247 
248  m_ui->m_screenWidthLineEdit->setText(widthMM);
249  m_ui->m_screenHeightLineEdit->setText(heightMM);
250 }
251 
253 {
254  saveChanges();
255 }
256 
257 void te::qt::af::DisplayWidget::getHelpInformations(QString& ns, QString& helpFile)
258 {
259  ns = "dpi.inpe.br.apf";
260  helpFile = "apf/settings/display/DisplayConfig.html";
261 }
te::qt::af::ApplicationController * m_app
void fit(const std::list< te::map::AbstractLayerPtr > &layers)
te::qt::widgets::LayerItemView * m_layerExplorer
A widget to control the display of a set of layers.
TEQTWIDGETSEXPORT void GetValidLayers(QAbstractItemModel *model, const QModelIndex &parent, std::vector< te::map::AbstractLayerPtr > &layers)
This event signals that the color of the map display changed.
Definition: MapEvents.h:75
A frame for setting Table options.
This event can be used to retrieve the MapDisplat component.
Definition: MapEvents.h:96
virtual void resetScreenSizeState()
A frame for setting display options.
void trigger(te::qt::af::evt::Event *)
virtual void setOverrideDPI(int dpiX, int dpiY)
Overrides the values of the DPI that had been acquired from the device. This is done in order to make...
virtual void getHelpInformations(QString &ns, QString &helpFile)
virtual void saveScreenSizeChanges()
te::qt::af::MapDisplay * m_display
Definition: MapEvents.h:107
DisplayWidget(QWidget *parent=0)
virtual void changeApplyButtonState(const bool &state)
Indicates that there&#39;s unsaved information. Use this method after each change in informations of the ...
Ui::DisplayWidgetForm * m_ui
Definition: DisplayWidget.h:82