27 #include "../../../common/TreeItem.h" 28 #include "../../../geometry/Point.h" 29 #include "../../../st/maptools/TrajectoryDataSetLayer.h" 30 #include "../../../st/core/trajectory/TrajectoryDataSet.h" 31 #include "../../../qt/widgets/layer/explorer/LayerItem.h" 32 #include "../canvas/MapDisplay.h" 33 #include "../utils/ScopedCursor.h" 46 #include "ui_TimeSliderWidgetForm.h" 47 #include "ui_SliderPropertiesDialogForm.h" 50 #include <QGraphicsEffect> 52 #include <QGraphicsView> 54 #include <QParallelAnimationGroup> 55 #include <QPropertyAnimation> 58 #include <QTextStream> 59 #include <QContextMenuEvent> 60 #include <QMessageBox> 61 #include <QInputDialog> 62 #include <QDateTimeEdit> 63 #include <QColorDialog> 64 #include <QListWidget> 67 #include <QFileDialog> 73 m_erasePerfectly(false),
74 m_ui(new
Ui::TimeSliderWidgetForm),
75 m_maxSliderValue(1000000000),
81 setFocusPolicy(Qt::StrongFocus);
82 setMouseTracking(
true);
95 m_ui->m_TemporalHorizontalSlider->setMinimum(0);
98 m_ui->m_durationSpinBox->setMinimum(100);
99 m_ui->m_durationSpinBox->setMaximum(100000000);
101 m_ui->m_durationSpinBox->setSingleStep(10000);
103 m_spd->
m_ui->m_initialTimeLineEdit->setEnabled(
false);
104 m_spd->
m_ui->m_finalTimeLineEdit->setEnabled(
false);
106 m_spd->
m_ui->m_opacitySpinBox->setMinimum(0);
107 m_spd->
m_ui->m_opacitySpinBox->setMaximum(255);
108 m_spd->
m_ui->m_opacitySpinBox->setValue(255);
109 m_spd->
m_ui->m_opacitySpinBox->setSingleStep(5);
112 m_spd->
m_ui->m_panFactorDoubleSpinBox->setSingleStep(.01);
113 m_spd->
m_ui->m_panFactorDoubleSpinBox->setCorrectionMode(QAbstractSpinBox::CorrectToPreviousValue);
127 m_ui->m_settingsToolButton->setIcon(QIcon::fromTheme(
"preferences-system"));
128 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-start"));
129 m_ui->m_stopToolButton->setIcon(QIcon::fromTheme(
"media-playback-stop"));
132 connect(
m_ui->m_dateTimeEdit, SIGNAL(dateTimeChanged(
const QDateTime&) ),
this, SLOT(
onDateTimeEditChanged(
const QDateTime&)));
137 connect(
m_ui->m_TemporalHorizontalSlider, SIGNAL(sliderMoved (
int)),
this, SLOT(
onSliderMoved(
int)));
139 setAttribute(Qt::WA_DeleteOnClose,
true);
147 m_spd->
m_ui->m_forwardRadioButton->setCheckable(
true);
151 QBrush brush(Qt::transparent);
152 QPalette palette(brush, brush, brush, brush, brush, brush, brush, brush, brush);
171 m_spd->
m_ui->m_forwardColorPushButton->installEventFilter(
this);
172 m_spd->
m_ui->m_backwardColorPushButton->installEventFilter(
this);
173 m_spd->
m_ui->m_iconPushButton->installEventFilter(
this);
174 m_ui->m_dateTimeEdit->installEventFilter(
this);
176 m_ui->m_dateTimeEdit->setDisplayFormat(
"dd/MMM/yyyy hh:mm:ss");
180 m_ui->m_durationSpinBox->setEnabled(
false);
181 m_ui->m_settingsToolButton->setEnabled(
false);
182 m_ui->m_playToolButton->setEnabled(
false);
183 m_ui->m_stopToolButton->setEnabled(
false);
184 m_ui->m_dateTimeEdit->setEnabled(
false);
185 m_ui->m_TemporalHorizontalSlider->setEnabled(
false);
186 m_ui->label->setEnabled(
false);
187 m_ui->label_2->setEnabled(
false);
192 m_ui->m_durationSpinBox->setEnabled(
true);
193 m_ui->m_settingsToolButton->setEnabled(
true);
194 m_ui->m_playToolButton->setEnabled(
true);
195 m_ui->m_stopToolButton->setEnabled(
true);
198 m_ui->m_dateTimeEdit->setEnabled(
true);
200 m_ui->m_dateTimeEdit->setEnabled(
false);
202 m_ui->m_TemporalHorizontalSlider->setEnabled(
true);
203 m_ui->label->setEnabled(
true);
204 m_ui->label_2->setEnabled(
true);
216 QList<QGraphicsItem*>::iterator it = list.begin();
247 if(layer->getType() ==
"TRAJECTORYDATASETLAYER")
250 QString title(tl->
getTitle().c_str());
251 QString layerId(tl->
getId().c_str());
252 QPair<QString, QString>
p(title, layerId);
254 QMessageBox::information(
this, title +
" already exists", title +
" is already being animated!");
264 if(layer->getType() ==
"TRAJECTORYDATASETLAYER")
266 QString id(layer->getId().c_str());
269 QList<QString>::Iterator it;
284 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
288 QList<QGraphicsItem*>::iterator it;
290 for (it = list.begin(); it != list.end(); ++it)
293 if (ai->pixmap().isNull() ==
false)
307 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
314 while(
m_spd->
m_ui->m_animationComboBox->count() != 0)
316 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
324 QString title =
m_spd->
m_ui->m_animationComboBox->itemText(ind);
327 QList<QGraphicsItem*>::iterator it;
329 for (it = list.begin(); it != list.end(); ++it)
336 if (ai->pixmap().isNull())
339 id = ii->
m_dir.absolutePath();
349 if (list.count() == 1)
356 m_ui->m_TemporalHorizontalSlider->setValue(0);
358 m_ui->m_settingsToolButton->setEnabled(
false);
359 m_ui->m_playToolButton->setEnabled(
false);
360 m_ui->m_stopToolButton->setEnabled(
false);
361 m_ui->m_durationSpinBox->setEnabled(
false);
362 m_ui->m_dateTimeEdit->setEnabled(
false);
363 m_ui->m_TemporalHorizontalSlider->setEnabled(
false);
364 m_ui->label->setEnabled(
false);
365 m_ui->label_2->setEnabled(
false);
367 m_spd->
m_ui->m_animationComboBox->removeItem(ind);
368 size_t size =
m_spd->
m_ui->m_animationComboBox->count();
370 m_spd->
m_ui->m_animationComboBox->setCurrentIndex(0);
375 bool running =
false;
377 if (state == QAbstractAnimation::Running)
414 m_spd->
m_ui->m_animationComboBox->removeItem(ind);
415 size_t size =
m_spd->
m_ui->m_animationComboBox->count();
417 m_spd->
m_ui->m_animationComboBox->setCurrentIndex(0);
425 const QMimeData* mdata = e->mimeData();
426 QList<QUrl> urls = mdata->urls();
429 QByteArray ba = mdata->data(
"application/x-terralib;value=\"DraggedItems\"");
433 std::vector<te::qt::widgets::TreeItem*>* draggedItems =
reinterpret_cast<std::vector<te::qt::widgets::TreeItem*>*
>(s.toULongLong());
435 for (std::vector<te::qt::widgets::TreeItem*>::iterator it = draggedItems->begin(); it != draggedItems->end(); ++it)
439 std::string ltype = layer->
getType();
441 if (ltype ==
"TRAJECTORYDATASETLAYER")
448 e->setDropAction(Qt::LinkAction);
450 QString path = urls.begin()->path();
451 size_t pos = path.indexOf(
"/");
455 QStringList nameFilter;
456 nameFilter.append(
"*.ctl");
457 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
458 if (files.empty() ==
false)
460 QString
file(path +
"/" + files.first());
463 size_t c = fread(buf,
sizeof(
char), 2000, fp);
467 if (s.contains(
"undef", Qt::CaseInsensitive))
473 nameFilter.append(
"S1123*.jpg");
474 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
475 if (files.empty() ==
false && files.first().length() == 26)
480 nameFilter.append(
"S1118*.jpg");
481 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
482 if (files.empty() ==
false && files.first().length() == 26)
495 const QMimeData* mdata = e->mimeData();
497 m_dropBA = mdata->data(
"application/x-terralib;value=\"DraggedItems\"");
498 QTimer::singleShot(10,
this, SLOT(
dropAction()));
506 if(state == QAbstractAnimation::Running)
512 m_spd->
m_ui->m_animationComboBox->clear();
514 m_ui->m_TemporalHorizontalSlider->setValue(0);
516 m_ui->m_settingsToolButton->setEnabled(
false);
517 m_ui->m_playToolButton->setEnabled(
false);
518 m_ui->m_stopToolButton->setEnabled(
false);
519 m_ui->m_durationSpinBox->setEnabled(
false);
520 m_ui->m_dateTimeEdit->setEnabled(
false);
521 m_ui->m_TemporalHorizontalSlider->setEnabled(
false);
522 m_ui->label->setEnabled(
false);
523 m_ui->label_2->setEnabled(
false);
526 QList<QGraphicsItem*>::iterator it;
527 for(it = list.begin(); it != list.end(); ++it)
536 m_spd->
m_ui->m_animationComboBox->clear();
546 std::vector<te::qt::widgets::TreeItem*>* draggedItems =
reinterpret_cast<std::vector<te::qt::widgets::TreeItem*>*
>(s.toULongLong());
548 for (std::vector<te::qt::widgets::TreeItem*>::iterator it = draggedItems->begin(); it != draggedItems->end(); ++it)
552 std::string ltype = layer->
getType();
554 if (ltype ==
"TRAJECTORYDATASETLAYER")
557 QString layerId(tl->
getId().c_str());
558 QString title(tl->
getTitle().c_str());
559 QPair<QString, QString>
p(title, layerId);
561 QMessageBox::information(
this,
"animation already exists", title +
" is already being animated!");
570 QList<QUrl>::iterator it;
573 QString path = it->path();
575 QString title = dir.dirName();
578 QPair<QString, QString>
p(title, path);
581 QMessageBox::information(
this,
"animation already exists", title +
" is already being animated!");
587 if(state == QAbstractAnimation::Running ||
m_dropModifiers == Qt::NoModifier)
601 QList<QGraphicsItem*>::iterator it;
602 for (it = list.begin(); it != list.end(); ++it)
605 if (ai->pixmap().isNull() ==
false && ai->
m_title == item.first)
619 QList<QGraphicsItem*>::iterator it;
620 for (it = list.begin(); it != list.end(); ++it)
623 if (ai->pixmap().isNull() && ai->
m_title == item.first)
626 if (ii->
m_dir.absolutePath() == item.second)
638 QString title(tl->
getTitle().c_str());
639 QString layerId(tl->
getId().c_str());
650 QVector<QPointF> points;
655 std::unique_ptr<te::dt::DateTime> time = dset->
getTime();
657 if(tiraRepetido == *tinstant)
659 tiraRepetido = *tinstant;
662 std::unique_ptr<te::gm::Geometry> geom = dset->
getGeometry();
664 points.push_back(QPointF(p->
getX(), p->
getY()));
674 QVector<QPointF>::iterator it;
676 for (it = points.begin(); it != points.end(); ++it)
679 ti->m_route->setPointN(i++,
p);
693 if(state == QAbstractAnimation::Running)
700 m_ui->m_durationSpinBox->setEnabled(
true);
701 m_ui->m_settingsToolButton->setEnabled(
true);
702 m_ui->m_playToolButton->setEnabled(
true);
703 m_ui->m_stopToolButton->setEnabled(
true);
706 m_ui->m_dateTimeEdit->setEnabled(
true);
708 m_ui->m_dateTimeEdit->setEnabled(
false);
710 m_ui->m_TemporalHorizontalSlider->setEnabled(
true);
711 m_ui->label->setEnabled(
true);
712 m_ui->label_2->setEnabled(
true);
717 m_spd->
m_ui->m_animationComboBox->addItem(title);
719 int count =
m_spd->
m_ui->m_animationComboBox->count();
720 m_spd->
m_ui->m_animationComboBox->setCurrentIndex(count-1);
731 if(state == QAbstractAnimation::Running)
737 QMessageBox::information(
this,
"Error",
"Load error: " + filePath);
748 if(state == QAbstractAnimation::Running)
755 m_ui->m_durationSpinBox->setEnabled(
true);
756 m_ui->m_settingsToolButton->setEnabled(
true);
757 m_ui->m_playToolButton->setEnabled(
true);
758 m_ui->m_stopToolButton->setEnabled(
true);
760 m_ui->m_dateTimeEdit->setEnabled(
true);
762 m_ui->m_dateTimeEdit->setEnabled(
false);
763 m_ui->m_TemporalHorizontalSlider->setEnabled(
true);
764 m_ui->label->setEnabled(
true);
765 m_ui->label_2->setEnabled(
true);
771 m_spd->
m_ui->m_animationComboBox->addItem(dir.dirName());
773 int count =
m_spd->
m_ui->m_animationComboBox->count();
774 m_spd->
m_ui->m_animationComboBox->setCurrentIndex(count-1);
790 QList<QGraphicsItem*>::iterator it;
792 for(it = list.begin(); it != list.end(); ++it)
814 QList<QGraphicsItem*>::iterator it = list.begin();
823 while(it != list.end())
827 if(initial < t_initial)
838 if(list.count() == 1)
842 for(it = list.begin(); it != list.end(); ++it)
853 QVector<te::dt::TimePeriod>
times;
854 QVector<te::gm::Envelope> envelopes;
856 QList<QGraphicsItem*>::iterator it;
857 for(it = list.begin(); it != list.end(); ++it)
874 for(it = list.begin(), i = 0 ; it != list.end(); ++it, ++i)
893 boost::posix_time::time_duration diff = fTime - iTime;
894 double totalSeconds = diff.total_seconds();
896 diff = pTime - iTime;
897 double seconds = diff.total_seconds();
899 double t = seconds / totalSeconds;
912 boost::posix_time::time_duration diff = fTime - iTime;
913 double totalSeconds = diff.total_seconds();
915 int secs = qRound(totalSeconds * trel);
916 boost::posix_time::time_duration
td = boost::posix_time::seconds(secs);
917 boost::posix_time::ptime time = iTime +
td;
930 if(
m_ui->m_dateTimeEdit->isEnabled() ==
false)
934 QDateTime
d =
m_ui->m_dateTimeEdit->dateTime();
940 QList<QGraphicsItem*>::iterator it;
945 for(it = list.begin(); it != list.end(); ++it)
948 if(ai->pixmap().isNull())
960 if (dr.intersects(r))
972 for (it = list.begin(); it != list.end(); ++it)
975 if (ai->pixmap().isNull() ==
false)
981 if (t > tini || t < tfim)
985 if (it != list.end())
990 painter->drawPixmap(0, 0, *pixt);
994 for(it = list.begin(); it != list.end(); ++it)
997 if(ai->pixmap().isNull() ==
false)
1003 if(t < tini || t > tfim)
1027 for(
unsigned int i = 0; i < count; ++i)
1054 double ss =
m_spd->
m_ui->m_panFactorDoubleSpinBox->singleStep();
1056 v = (double)((
int)(v * 10. + .5)) / 10.;
1058 v = (double)((
int)(v * 100. + .5)) / 100.;
1060 v = (double)((
int)(v * 1000. + .5)) / 1000.;
1067 m_spd->
m_ui->m_panFactorDoubleSpinBox->setSingleStep(.01);
1072 m_spd->
m_ui->m_panFactorDoubleSpinBox->setSingleStep(.001);
1079 m_spd->
m_ui->m_panFactorDoubleSpinBox->setSingleStep(.1);
1080 else if (v >= .01 && v < .1)
1081 m_spd->
m_ui->m_panFactorDoubleSpinBox->setSingleStep(.01);
1083 m_spd->
m_ui->m_panFactorDoubleSpinBox->setSingleStep(.001);
1103 QList<QGraphicsItem*>::iterator it;
1104 for(it = list.begin(); it != list.end(); ++it)
1114 return QObject::eventFilter(obj, e);
1117 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
1121 QList<QGraphicsItem*>::iterator it;
1123 for (it = list.begin(); it != list.end(); ++it)
1126 if (ai->pixmap().isNull() ==
false)
1135 for (it = list.begin(); it != list.end(); ++it)
1138 if (ai->pixmap().isNull())
1141 if (ii->
m_dir.absolutePath() == id)
1146 if(obj ==
m_spd->
m_ui->m_forwardColorPushButton)
1148 if(e->type() == QEvent::Paint)
1150 QPainter painter(
m_spd->
m_ui->m_forwardColorPushButton);
1151 QBrush brush(
m_spd->
m_ui->m_forwardColorPushButton->palette().color(QPalette::Window));
1152 painter.fillRect(
m_spd->
m_ui->m_forwardColorPushButton->rect(), brush);
1155 else if(e->type() == QEvent::MouseButtonPress)
1157 QColor cor = QColorDialog::getColor(
m_spd->
m_ui->m_forwardColorPushButton->palette().color(QPalette::Window),
this,
"Forward Color", QColorDialog::ShowAlphaChannel);
1158 if(cor.isValid() ==
false)
1160 else if(cor ==
m_spd->
m_ui->m_forwardColorPushButton->palette().color(QPalette::Window))
1163 m_spd->
m_ui->m_forwardColorPushButton->setPalette(QPalette(cor));
1170 else if(obj ==
m_spd->
m_ui->m_backwardColorPushButton)
1172 if(e->type() == QEvent::Paint)
1174 QPainter painter(
m_spd->
m_ui->m_backwardColorPushButton);
1175 QBrush brush(
m_spd->
m_ui->m_backwardColorPushButton->palette().color(QPalette::Window));
1176 painter.fillRect(
m_spd->
m_ui->m_backwardColorPushButton->rect(), brush);
1179 else if(e->type() == QEvent::MouseButtonPress)
1181 QColor cor = QColorDialog::getColor(
m_spd->
m_ui->m_backwardColorPushButton->palette().color(QPalette::Window),
this,
"Forward Color", QColorDialog::ShowAlphaChannel);
1182 if(cor.isValid() ==
false)
1184 else if(cor ==
m_spd->
m_ui->m_backwardColorPushButton->palette().color(QPalette::Window))
1187 m_spd->
m_ui->m_backwardColorPushButton->setPalette(QPalette(cor));
1194 else if(ti !=
nullptr && obj ==
m_spd->
m_ui->m_iconPushButton)
1196 if(e->type() == QEvent::Paint)
1198 QPainter painter(
m_spd->
m_ui->m_iconPushButton);
1199 painter.fillRect(
m_spd->
m_ui->m_iconPushButton->rect(), QBrush(Qt::white));
1200 QPixmap pix = ti->pixmap();
1201 QRect r = pix.rect();
1202 r.moveCenter(
m_spd->
m_ui->m_iconPushButton->rect().center());
1203 painter.drawPixmap(r, pix, pix.rect());
1207 else if(e->type() == QEvent::MouseButtonPress)
1209 QString fileName = QFileDialog::getOpenFileName(
this, tr(
"Select File"),
"C:/", tr(
"Images (*.png *.xpm *.jpg *.gif)"));
1210 if(fileName.isNull())
1213 QPixmap pix(fileName);
1216 QMessageBox::information(
this,
"Pixmap Error",
"Invalid File");
1220 pp.fill(Qt::transparent);
1221 QPainter painter(&pp);
1222 painter.drawPixmap(pp.rect(), pix, pix.rect());
1227 m_spd->
m_ui->m_iconPushButton->update();
1231 else if(obj ==
m_ui->m_dateTimeEdit)
1233 if(e->type() == QEvent::MouseButtonRelease)
1235 QDateTime
d =
m_ui->m_dateTimeEdit->dateTime();
1245 else if(d >= maximun)
1250 m_ui->m_dateTimeEdit->setDateTime(d);
1258 else if(obj ==
m_spd->
m_ui->m_initialAnimationDateTimeEdit)
1260 if(e->type() == QEvent::MouseButtonRelease)
1262 QDateTime
d =
m_spd->
m_ui->m_initialAnimationDateTimeEdit->dateTime();
1272 else if(d >= maximun)
1277 m_spd->
m_ui->m_initialAnimationDateTimeEdit->setDateTime(d);
1282 else if(obj ==
m_spd->
m_ui->m_finalAnimationDateTimeEdit)
1284 if(e->type() == QEvent::MouseButtonRelease)
1286 QDateTime
d =
m_spd->
m_ui->m_finalAnimationDateTimeEdit->dateTime();
1296 else if(d >= maximun)
1301 m_spd->
m_ui->m_finalAnimationDateTimeEdit->setDateTime(d);
1307 return QObject::eventFilter(obj, e);
1312 if(
m_spd->isHidden())
1324 if(state == QAbstractAnimation::Running)
1326 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-start"));
1328 m_ui->m_dateTimeEdit->setEnabled(
true);
1333 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-pause"));
1336 if(
m_spd->
m_ui->m_forwardRadioButton->isChecked())
1338 if(
m_spd->
m_ui->m_backwardRadioButton->isChecked())
1341 if(
m_spd->
m_ui->m_loopCheckBox->isChecked())
1343 if(
m_spd->
m_ui->m_goAndBackCheckBox->isChecked())
1351 m_ui->m_TemporalHorizontalSlider->setValue(0);
1356 if(
m_ui->m_TemporalHorizontalSlider->value() == 0)
1362 m_ui->m_dateTimeEdit->setEnabled(
false);
1374 m_ui->m_dateTimeEdit->setEnabled(
false);
1375 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-start"));
1390 m_ui->m_TemporalHorizontalSlider->setValue(0);
1407 if(state == QAbstractAnimation::Running)
1422 if(state == QAbstractAnimation::Running)
1445 if(state == QAbstractAnimation::Stopped)
1450 else if(state == QAbstractAnimation::Paused)
1487 if(
m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1489 else if(
m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1495 this->
erase(curTime);
1508 QDateTime qdatetime(qdate, qtime);
1509 m_ui->m_dateTimeEdit->setDateTime(qdatetime);
1515 if(direction == QAbstractAnimation::Forward)
1516 direction = QAbstractAnimation::Backward;
1518 direction = QAbstractAnimation::Forward;
1533 else if(m_currentTime <= 0 && m_parallelAnimation->direction() == QAbstractAnimation::Backward)
1586 m_ui->m_TemporalHorizontalSlider->setValue(v);
1598 QDateTime qdatetime(qdate, qtime);
1599 m_ui->m_dateTimeEdit->setDateTime(qdatetime);
1611 if(state == QAbstractAnimation::Running)
1615 int i = list.indexOf(item);
1620 QList<QGraphicsItem*>::iterator it = list.begin();
1621 while(it != list.end())
1628 while(list.isEmpty() ==
false)
1640 if(state == QAbstractAnimation::Running)
1644 int i = list.indexOf(item);
1649 QList<QGraphicsItem*>::iterator it = list.begin();
1650 while(it != list.end())
1657 while (list.isEmpty() ==
false)
1670 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
1674 QList<QGraphicsItem*>::iterator it;
1676 for (it = list.begin(); it != list.end(); ++it)
1679 if (ai->pixmap().isNull() ==
false)
1691 if (ii->
m_dir.absolutePath() == id)
1704 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
1708 QList<QGraphicsItem*>::iterator it;
1710 for (it = list.begin(); it != list.end(); ++it)
1713 if (ai->pixmap().isNull() ==
false)
1725 if (ii->
m_dir.absolutePath() == id)
1737 QList<QGraphicsItem*>::iterator it;
1738 for(it = list.begin(); it != list.end(); ++it)
1741 if(ai->pixmap().isNull() ==
false)
1761 int ss =
m_ui->m_durationSpinBox->singleStep();
1775 nss = (
int)log10((
double)val);
1776 nss = (
int)pow(10., (
double)nss);
1777 if ((val % nss) == 0)
1788 nss = (
int)log10((
double)val);
1789 nss = (
int)pow(10., (
double)nss);
1793 if (m_duration <= m_ui->m_durationSpinBox->minimum())
1796 nss =
m_ui->m_durationSpinBox->minimum();
1801 nss =
m_ui->m_durationSpinBox->maximum() / 10;
1804 m_ui->m_durationSpinBox->setSingleStep(nss);
1807 bool running =
false;
1827 if(
m_ui->m_dateTimeEdit->isEnabled() ==
false)
1836 te::dt::Date date(t.date().year(), t.date().month(), t.date().day());
1841 unsigned long secs = tp.
getTimePeriod().length().total_seconds();
1843 double v = (double)secs / (
double)totalSecs;
1863 if(
m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1865 else if(
m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1872 this->
erase(curTime);
1881 QDateTimeEdit::Section section = dte->currentSection();
1882 if(section == QDateTimeEdit::SecondSection)
1884 int sec = t.time().second();
1890 else if(section == QDateTimeEdit::MinuteSection)
1892 int min = t.time().minute();
1898 else if(section == QDateTimeEdit::HourSection)
1900 int hour = t.time().hour();
1902 t = t.addSecs(-3600);
1904 t = t.addSecs(3600);
1906 else if(section == QDateTimeEdit::DaySection)
1908 int day = t.date().day();
1914 else if(section == QDateTimeEdit::MonthSection)
1916 int month = t.date().month();
1918 t = t.addMonths(-1);
1928 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
1932 QList<QGraphicsItem*>::iterator it;
1935 for (it = list.begin(); it != list.end(); ++it)
1938 if (ai->pixmap().isNull())
1941 if (ii->
m_dir.absolutePath() == id)
1951 if (it != list.end())
1960 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
1964 QList<QGraphicsItem*>::iterator it;
1966 for (it = list.begin(); it != list.end(); ++it)
1969 if (ai->pixmap().isNull() ==
false)
1974 QPixmap pix = ai->pixmap();
1975 QPixmap pn(
m_spd->
m_ui->m_widthSpinBox->value(),
m_spd->
m_ui->m_heightSpinBox->value());
1976 pn.fill(Qt::transparent);
1977 if (pix.isNull() ==
false)
1981 if (file.isEmpty() ==
false)
1987 QPainter painter(&pn);
1988 painter.drawPixmap(pn.rect(), pf, pf.rect());
1992 m_spd->
m_ui->m_iconPushButton->update();
1998 QPainter painter(&pn);
2000 painter.setBrush(b);
2003 painter.drawEllipse(pn.rect());
2005 m_spd->
m_ui->m_iconPushButton->update();
2021 QDateTime qdatetimei(qdatei, qtimei);
2022 m_spd->
m_ui->m_initialAnimationDateTimeEdit->setDateTime(qdatetimei);
2027 QDateTime qdatetimef(qdatef, qtimef);
2028 m_spd->
m_ui->m_finalAnimationDateTimeEdit->setDateTime(qdatetimef);
2032 if(
m_spd->
m_ui->m_forwardRadioButton->isChecked() ==
false)
2033 m_spd->
m_ui->m_forwardRadioButton->toggle();
2037 m_spd->
m_ui->m_loopCheckBox->setChecked(
true);
2039 m_spd->
m_ui->m_goAndBackCheckBox->setChecked(
true);
2041 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
2047 QDateTime t =
m_spd->
m_ui->m_initialAnimationDateTimeEdit->dateTime();
2048 te::dt::Date date(t.date().year(), t.date().month(), t.date().day());
2056 QDateTime t =
m_spd->
m_ui->m_finalAnimationDateTimeEdit->dateTime();
2057 te::dt::Date date(t.date().year(), t.date().month(), t.date().day());
2068 QDateTime qdatetime(qdate, qtime);
2069 m_spd->
m_ui->m_initialAnimationDateTimeEdit->setDateTime(qdatetime);
2077 QDateTime qdatetime(qdate, qtime);
2078 m_spd->
m_ui->m_finalAnimationDateTimeEdit->setDateTime(qdatetime);
2083 if(b==
false &&
m_spd->
m_ui->m_propertyWidget->isHidden())
2085 if(b==
true &&
m_spd->
m_ui->m_propertyWidget->isHidden()==
false)
2088 int h =
m_spd->
m_ui->m_propertyWidget->height();
2093 resize(width(), height()-h);
2098 resize(width(), height()+h);
2107 QDateTime qdatetimei(qdatei, qtimei);
2108 QDateTime qdi =
m_spd->
m_ui->m_initialAnimationDateTimeEdit->dateTime();
2109 if(qdatetimei != qdi)
2115 QDateTime qdatetimef(qdatef, qtimef);
2116 QDateTime qdf =
m_spd->
m_ui->m_finalAnimationDateTimeEdit->dateTime();
2117 if(qdatetimef != qdf)
2120 if(
m_spd->
m_ui->m_forwardRadioButton->isChecked() &&
m_direction != QAbstractAnimation::Forward)
2122 if(
m_spd->
m_ui->m_forwardRadioButton->isChecked() ==
false &&
m_direction != QAbstractAnimation::Backward)
2178 if(ti > tf || ti == tf)
2180 QMessageBox::warning(
this,
"Time Extent Error",
"Initial time can not be larger than the end time!", QMessageBox::Ok);
2190 QDateTime qdatetimei(qdatei, qtimei);
2191 QDateTime qdi =
m_spd->
m_ui->m_initialAnimationDateTimeEdit->dateTime();
2197 QDateTime qdatetimef(qdatef, qtimef);
2198 QDateTime qdf =
m_spd->
m_ui->m_finalAnimationDateTimeEdit->dateTime();
2200 if(qdatetimei == qdi && qdatetimef == qdf)
2205 boost::posix_time::time_duration ndiff = nfTime - niTime;
2206 double ntotalSeconds = ndiff.total_seconds();
2208 boost::posix_time::time_duration diff = fTime - iTime;
2209 double totalSeconds = diff.total_seconds();
2212 int nduration = qRound(rel * ntotalSeconds);
2215 if(btinst >= niTime && btinst <= nfTime)
2217 boost::posix_time::time_duration
d = btinst - niTime;
2218 double tot = d.total_seconds();
2225 if(state == QAbstractAnimation::Running)
2228 QDateTime
dt =
m_ui->m_dateTimeEdit->dateTime();
2241 if(state == QAbstractAnimation::Running)
2251 if(state == QAbstractAnimation::Paused)
2263 m_ui->m_durationSpinBox->setSingleStep(i);
2272 QList<QGraphicsItem*>::iterator it;
2274 for (it = list.begin(); it != list.end(); ++it)
2277 if (ai->pixmap().isNull() ==
false)
2283 m_spd->
m_ui->m_opacitySpinBox->setValue(op);
2288 m_spd->
m_ui->m_initialTimeLineEdit->setText(sini);
2289 m_spd->
m_ui->m_finalTimeLineEdit->setText(sfim);
2302 QDateTime qdatetime(qdate, qtime);
2303 return qdatetime.toString(
"dd/MMM/yyyy hh:mm:ss");
2308 QPixmap pix = ai->pixmap();
2311 m_spd->
m_ui->m_trajectoryGroupBox->setEnabled(
false);
2312 m_spd->
m_ui->m_forwardColorPushButton->setPalette(QPalette(Qt::gray));
2313 m_spd->
m_ui->m_forwardColorPushButton->update();
2314 m_spd->
m_ui->m_backwardColorPushButton->setPalette(QPalette(Qt::gray));
2315 m_spd->
m_ui->m_backwardColorPushButton->update();
2316 m_spd->
m_ui->m_autoPanCheckBox->setChecked(
false);
2317 m_spd->
m_ui->m_drawTrailCheckBox->setChecked(
false);
2321 m_spd->
m_ui->m_trajectoryGroupBox->setEnabled(
true);
2324 m_spd->
m_ui->m_forwardColorPushButton->update();
2326 m_spd->
m_ui->m_backwardColorPushButton->update();
2332 QPixmap pix = ti->pixmap();
2333 m_spd->
m_ui->m_widthSpinBox->setValue(pix.width());
2334 m_spd->
m_ui->m_heightSpinBox->setValue(pix.height());
2335 m_spd->
m_ui->m_iconPushButton->update();
2341 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
2345 QList<QGraphicsItem*>::iterator it;
2347 for (it = list.begin(); it != list.end(); ++it)
2350 if (ai->pixmap().isNull() ==
false)
2364 int ind =
m_spd->
m_ui->m_animationComboBox->currentIndex();
2368 QList<QGraphicsItem*>::iterator it;
2370 for (it = list.begin(); it != list.end(); ++it)
2373 if (ai->pixmap().isNull() ==
false)
2387 QString
d = dir.dirName();
2392 if(type ==
"HIDRO_TYPE")
2394 else if (type ==
"ETA5KM_TYPE")
2396 else if (type ==
"GOES_TYPE")
2398 else if (type ==
"QTKNOW_TYPE")
2416 QString
d = dir.dirName();
2417 QStringList nameFilter;
2418 nameFilter.append(
"*.ctl");
2419 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
2420 QString ctlFile = files.first();
2422 if (ctlFile ==
"racc.ctl")
2423 return "HIDRO_TYPE";
2424 else if (ctlFile ==
"Prec5km.ctl")
2425 return "ETA5KM_TYPE";
2429 nameFilter.append(
"S11*.jpg");
2430 files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
2431 if (files.empty() ==
false && files.first().length() == 26)
2434 return "QTKNOW_TYPE";
static te::dt::TimeDuration td(20, 30, 50, 11)
virtual const std::string & getId() const
It returns the layer id.
std::unique_ptr< te::st::TrajectoryDataSet > getTrajectoryDataset(te::common::TraverseType travType=te::common::FORWARDONLY) const
const te::dt::DateTimePeriod * getTemporalExtent() const
It returns the temporal extent of the trajectory observations.
This is the base class for layers.
#define TE_UNKNOWN_SRS
A numeric value to represent a unknown SRS identification in TerraLib.
virtual const std::string & getTitle() const
It returns the layer title.
virtual const std::string & getType() const =0
It returns the layer type.
long getSeconds() const
It returns the seconds of a minute - from 0 to 59.
boost::gregorian::greg_year getYear() const
It returns the gregorian year.
double getWidth() const
It returns the envelope width.
boost::gregorian::greg_day getDay() const
It returns the gregorian day - from 1 to 31.
static std::string fromUTF8(const std::string &src)
Convert a string in UTF-8 to the current locale encoding.
const boost::posix_time::ptime & getTimeInstant() const
It returns the boost time instant type.
void Union(const Envelope &rhs)
It updates the envelop with coordinates of another envelope.
A class to represent time instant.
double m_llx
Lower left corner x-coordinate.
This file defines a class for a Animation Scene.
LineString is a curve with linear interpolation between points.
This file defines a class for a Eta5kmItem.
Date getDate() const
It returns the date associated to time instant.
const double & getY() const
It returns the Point y-coordinate value.
A point with x and y coordinate values.
An Envelope defines a 2D rectangular region.
A base class for date data types.
TimeInstant getFinalTimeInstant() const
It gets the final time instant.
virtual int getSRID() const
It return the Spatial Reference System used by the Map Display.
static te::dt::DateTime d(2010, 8, 9, 15, 58, 39)
TimeInstant getInitialTimeInstant() const
It gets the initial time instant.
static te::dt::TimeDuration dt(20, 30, 50, 11)
std::unique_ptr< te::dt::DateTime > getTime() const
It returns the time pointed by the internal cursor.
virtual const te::gm::Envelope & getExtent() const
It returns the world extent showned by the MapDisplay.
std::complex< double > times(std::complex< double > lhs, std::complex< double > rhs)
virtual AbstractData * clone() const =0
It returns a clone of this object.
double m_lly
Lower left corner y-coordinate.
A class to represent a trajectory data set.
A class to represent time period.
This file defines a class for a Trajectory Animation.
This file defines a class for image files knowed by QT.
std::unique_ptr< te::gm::Geometry > getGeometry() const
It returns the geometry pointed by the internal cursor.
const boost::posix_time::time_period & getTimePeriod() const
Assignment operator.
void computeMBR(bool cascade) const
It computes the minimum bounding rectangle for the curve polygon.
A class to represent time duration with nano-second/micro-second resolution.
This file defines a class for a Trajectory Item.
TimeDuration getTime() const
It returns the time duration associated to time instant.
A layer with reference to a dataset that contains trajectories.
virtual int getSRID() const
It returns the Spatial Reference System ID associated to the Layer.
long getMinutes() const
It returns the minutes of a hour - from 0 to 59.
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
void transform(int oldsrid, int newsrid)
It will transform the coordinates of the Envelope from the old SRS to the new one.
double getHeight() const
It returns the envelope height.
boost::gregorian::greg_month getMonth() const
It returns the gregorian month - from 1 to 12.
const double & getX() const
It returns the Point x-coordinate value.
bool isValid() const
It tells if the rectangle is valid or not.
long getHours() const
It returns the hours of a day - from 0 to 23.
file(WRITE ${CMAKE_BINARY_DIR}/config_qhelp.cmake"configure_file (${TERRALIB_ABSOLUTE_ROOT_DIR}/doc/qhelp/help.qhcp.in ${CMAKE_BINARY_DIR}/share/terraview/help/help.qhcp @ONLY)") add_custom_command(OUTPUT del_dir COMMAND $