27 #include "../../../st/maptools/TrajectoryDataSetLayer.h"
28 #include "../../../st/core/trajectory/TrajectoryDataSet.h"
29 #include "../canvas/MapDisplay.h"
30 #include "../layer/explorer/AbstractTreeItem.h"
31 #include "../utils/ScopedCursor.h"
43 #include "ui_TimeSliderWidgetForm.h"
44 #include "ui_SliderPropertiesDialogForm.h"
47 #include <QGraphicsEffect>
49 #include <QGraphicsView>
51 #include <QParallelAnimationGroup>
52 #include <QPropertyAnimation>
55 #include <QTextStream>
56 #include <QContextMenuEvent>
57 #include <QMessageBox>
58 #include <QInputDialog>
59 #include <QDateTimeEdit>
60 #include <QColorDialog>
61 #include <QListWidget>
64 #include <QFileDialog>
70 m_erasePerfectly(false),
71 m_ui(new
Ui::TimeSliderWidgetForm),
72 m_maxSliderValue(1000000000),
78 setFocusPolicy(Qt::StrongFocus);
79 setMouseTracking(
true);
92 m_ui->m_TemporalHorizontalSlider->setMinimum(0);
95 m_ui->m_durationSpinBox->setMinimum(100);
96 m_ui->m_durationSpinBox->setMaximum(100000000);
98 m_ui->m_durationSpinBox->setSingleStep(10000);
100 m_spd->
m_ui->m_initialTimeLineEdit->setEnabled(
false);
101 m_spd->
m_ui->m_finalTimeLineEdit->setEnabled(
false);
103 m_spd->
m_ui->m_opacitySpinBox->setMinimum(0);
104 m_spd->
m_ui->m_opacitySpinBox->setMaximum(255);
105 m_spd->
m_ui->m_opacitySpinBox->setValue(255);
106 m_spd->
m_ui->m_opacitySpinBox->setSingleStep(5);
109 m_spd->
m_ui->m_panFactorDoubleSpinBox->setSingleStep(.01);
110 m_spd->
m_ui->m_panFactorDoubleSpinBox->setCorrectionMode(QAbstractSpinBox::CorrectToPreviousValue);
124 m_ui->m_settingsToolButton->setIcon(QIcon::fromTheme(
"preferences-system"));
125 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-start"));
126 m_ui->m_stopToolButton->setIcon(QIcon::fromTheme(
"media-playback-stop"));
129 connect(
m_ui->m_dateTimeEdit, SIGNAL(dateTimeChanged(
const QDateTime&) ),
this, SLOT(
onDateTimeEditChanged(
const QDateTime&)));
134 connect(
m_ui->m_TemporalHorizontalSlider, SIGNAL(sliderMoved (
int)),
this, SLOT(
onSliderMoved(
int)));
136 setAttribute(Qt::WA_DeleteOnClose,
true);
144 m_spd->
m_ui->m_forwardRadioButton->setCheckable(
true);
148 QBrush brush(Qt::transparent);
149 QPalette palette(brush, brush, brush, brush, brush, brush, brush, brush, brush);
168 m_spd->
m_ui->m_forwardColorPushButton->installEventFilter(
this);
169 m_spd->
m_ui->m_backwardColorPushButton->installEventFilter(
this);
170 m_spd->
m_ui->m_iconPushButton->installEventFilter(
this);
171 m_ui->m_dateTimeEdit->installEventFilter(
this);
173 m_ui->m_dateTimeEdit->setDisplayFormat(
"dd/MMM/yyyy hh:mm:ss");
177 m_ui->m_durationSpinBox->setEnabled(
false);
178 m_ui->m_settingsToolButton->setEnabled(
false);
179 m_ui->m_playToolButton->setEnabled(
false);
180 m_ui->m_stopToolButton->setEnabled(
false);
181 m_ui->m_dateTimeEdit->setEnabled(
false);
182 m_ui->m_TemporalHorizontalSlider->setEnabled(
false);
183 m_ui->label->setEnabled(
false);
184 m_ui->label_2->setEnabled(
false);
189 m_ui->m_durationSpinBox->setEnabled(
true);
190 m_ui->m_settingsToolButton->setEnabled(
true);
191 m_ui->m_playToolButton->setEnabled(
true);
192 m_ui->m_stopToolButton->setEnabled(
true);
195 m_ui->m_dateTimeEdit->setEnabled(
true);
197 m_ui->m_dateTimeEdit->setEnabled(
false);
199 m_ui->m_TemporalHorizontalSlider->setEnabled(
true);
200 m_ui->label->setEnabled(
true);
201 m_ui->label_2->setEnabled(
true);
213 QList<QGraphicsItem*>::iterator it = list.begin();
225 m_parallelAnimation->stop();
226 m_parallelAnimation->clear();
227 delete m_parallelAnimation;
228 delete m_animationScene;
230 bool b = m_animationView->testAttribute(Qt::WA_DeleteOnClose);
231 m_animationView->close();
233 delete m_animationView;
243 if(layer->getType() ==
"TRAJECTORYDATASETLAYER")
246 QString title(tl->
getTitle().c_str());
247 QString layerId(tl->
getId().c_str());
248 QPair<QString, QString> p(title, layerId);
249 if(trajectoryAlreadyExists(p))
250 QMessageBox::information(
this, title +
" already exists", title +
" is already being animated!");
252 addTrajectory(tl,
"");
260 if(layer->getType() ==
"TRAJECTORYDATASETLAYER")
262 QString id(layer->getId().c_str());
265 QList<QString>::Iterator it;
266 for (it = m_animationIdList.begin(); it != m_animationIdList.end(); ++it)
272 if (it != m_animationIdList.end())
273 removeAnimation(ind);
280 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
281 QString
id = m_animationIdList.value(ind);
283 QList<QGraphicsItem*> list = m_animationScene->items();
284 QList<QGraphicsItem*>::iterator it;
286 for (it = list.begin(); it != list.end(); ++it)
289 if (ai->pixmap().isNull() ==
false)
303 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
305 removeAnimation(ind);
312 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
315 m_animationIdList.removeAt(ind);
316 removeAnimation(ind);
322 QString aid = m_animationIdList.takeAt(ind);
323 QString title = m_spd->m_ui->m_animationComboBox->itemText(ind);
325 QList<QGraphicsItem*> list = m_animationScene->items();
326 QList<QGraphicsItem*>::iterator it;
328 for (it = list.begin(); it != list.end(); ++it)
335 if (ai->pixmap().isNull())
338 id = ii->
m_dir.absolutePath();
348 if (list.count() == 1)
350 onStopToolButtonnClicked();
351 m_animationScene->removeItem(ai);
352 m_parallelAnimation->removeAnimation(ai->
m_animation);
355 m_ui->m_TemporalHorizontalSlider->setValue(0);
356 m_parallelAnimation->setCurrentTime(0);
357 m_ui->m_settingsToolButton->setEnabled(
false);
358 m_ui->m_playToolButton->setEnabled(
false);
359 m_ui->m_stopToolButton->setEnabled(
false);
360 m_ui->m_durationSpinBox->setEnabled(
false);
361 m_ui->m_dateTimeEdit->setEnabled(
false);
362 m_ui->m_TemporalHorizontalSlider->setEnabled(
false);
363 m_ui->label->setEnabled(
false);
364 m_ui->label_2->setEnabled(
false);
366 m_spd->m_ui->m_animationComboBox->removeItem(ind);
367 size_t size = m_spd->m_ui->m_animationComboBox->count();
369 m_spd->m_ui->m_animationComboBox->setCurrentIndex(0);
374 bool running =
false;
375 int state = m_parallelAnimation->state();
376 if (state == QAbstractAnimation::Running)
379 onPlayToolButtonnClicked();
382 m_currentTime = m_parallelAnimation->currentTime();
383 m_animationScene->removeItem(ai);
384 m_parallelAnimation->removeAnimation(ai->
m_animation);
387 if (m_animationScene->m_numberOfTrajectories)
389 m_animationScene->m_mutex.lock();
390 m_animationScene->m_trajectoryPixmap->fill(Qt::transparent);
391 m_animationScene->m_mutex.unlock();
398 calculateAllSpatialExtent();
399 calculateAllTemporalExtent();
401 setDuration(m_duration);
402 setDirection(m_direction);
406 onPlayToolButtonnClicked();
407 m_parallelAnimation->setCurrentTime(m_currentTime);
413 m_spd->m_ui->m_animationComboBox->removeItem(ind);
414 size_t size = m_spd->m_ui->m_animationComboBox->count();
416 m_spd->m_ui->m_animationComboBox->setCurrentIndex(0);
423 const QMimeData* mdata = e->mimeData();
424 QList<QUrl> urls = mdata->urls();
427 QByteArray ba = mdata->data(
"application/x-terralib;value=\"DraggedItems\"");
431 std::vector<te::qt::widgets::AbstractTreeItem*>* ditems = (std::vector<AbstractTreeItem*>*)s.toULongLong();
432 std::vector<te::qt::widgets::AbstractTreeItem*>::iterator it;
433 for(it = ditems->begin(); it != ditems->end(); ++it)
436 std::string ltype = ati->
getLayer()->getType();
437 if(ltype ==
"TRAJECTORYDATASETLAYER")
444 e->setDropAction(Qt::LinkAction);
446 QString path = urls.begin()->path();
447 size_t pos = path.indexOf(
"/");
451 QStringList nameFilter;
452 nameFilter.append(
"*.ctl");
453 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
454 if(files.empty() ==
false)
456 QString file(path +
"/" + files.first());
457 FILE* fp = fopen(file.toStdString().c_str(),
"r");
459 size_t c = fread(buf,
sizeof(
char), 2000, fp);
463 if(s.contains(
"undef", Qt::CaseInsensitive))
469 nameFilter.append(
"S1123*.jpg");
470 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
471 if(files.empty() ==
false && files.first().length() == 26)
476 nameFilter.append(
"S1118*.jpg");
477 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
478 if(files.empty() ==
false && files.first().length() == 26)
490 m_dropModifiers = e->keyboardModifiers();
491 const QMimeData* mdata = e->mimeData();
492 m_dropUrls = mdata->urls();
493 m_dropBA = mdata->data(
"application/x-terralib;value=\"DraggedItems\"");
494 QTimer::singleShot(10,
this, SLOT(dropAction()));
500 int state = m_parallelAnimation->state();
501 int tempo = m_currentTime;
502 if(state == QAbstractAnimation::Running)
503 onPlayToolButtonnClicked();
505 if(m_dropModifiers == Qt::NoModifier)
507 onStopToolButtonnClicked();
508 m_spd->m_ui->m_animationComboBox->clear();
509 m_animationIdList.clear();
510 m_ui->m_TemporalHorizontalSlider->setValue(0);
511 m_parallelAnimation->setCurrentTime(0);
512 m_ui->m_settingsToolButton->setEnabled(
false);
513 m_ui->m_playToolButton->setEnabled(
false);
514 m_ui->m_stopToolButton->setEnabled(
false);
515 m_ui->m_durationSpinBox->setEnabled(
false);
516 m_ui->m_dateTimeEdit->setEnabled(
false);
517 m_ui->m_TemporalHorizontalSlider->setEnabled(
false);
518 m_ui->label->setEnabled(
false);
519 m_ui->label_2->setEnabled(
false);
521 QList<QGraphicsItem*> list = m_animationScene->items();
522 QList<QGraphicsItem*>::iterator it;
523 for(it = list.begin(); it != list.end(); ++it)
526 m_animationScene->removeItem(ai);
527 m_parallelAnimation->removeAnimation(ai->
m_animation);
532 m_spd->m_ui->m_animationComboBox->clear();
536 if(m_dropUrls.empty())
538 if(m_dropBA.count() != 0)
541 std::vector<te::qt::widgets::AbstractTreeItem*>* ditems = (std::vector<AbstractTreeItem*>*)s.toULongLong();
542 std::vector<te::qt::widgets::AbstractTreeItem*>::iterator it;
543 for(it = ditems->begin(); it != ditems->end(); ++it)
547 std::string ltype = tl->
getType();
548 if(ltype ==
"TRAJECTORYDATASETLAYER")
550 QString layerId(ati->
getLayer()->getId().c_str());
551 QString title(ati->
getLayer()->getTitle().c_str());
552 QPair<QString, QString> p(title, layerId);
553 if(trajectoryAlreadyExists(p))
554 QMessageBox::information(
this,
"animation already exists", title +
" is already being animated!");
556 addTrajectory(tl,
"");
563 QList<QUrl>::iterator it;
564 for(it = m_dropUrls.begin(); it != m_dropUrls.end(); ++it)
566 QString path = it->path();
568 QString title = dir.dirName();
571 QPair<QString, QString> p(title, path);
573 if(coverageAlreadyExists(p))
574 QMessageBox::information(
this,
"animation already exists", title +
" is already being animated!");
576 addTemporalImages(path);
580 if(state == QAbstractAnimation::Running || m_dropModifiers == Qt::NoModifier)
582 m_currentTime = tempo;
583 onPlayToolButtonnClicked();
584 m_parallelAnimation->setCurrentTime(m_currentTime);
591 QList<QGraphicsItem*> list = m_animationScene->items();
592 QList<QGraphicsItem*>::iterator it;
593 for (it = list.begin(); it != list.end(); ++it)
596 if (ai->pixmap().isNull() ==
false && ai->
m_title == item.first)
609 QList<QGraphicsItem*> list = m_animationScene->items();
610 QList<QGraphicsItem*>::iterator it;
611 for (it = list.begin(); it != list.end(); ++it)
614 if (ai->pixmap().isNull() && ai->
m_title == item.first)
617 if (ii->
m_dir.absolutePath() == item.second)
626 int state = m_parallelAnimation->state();
628 QString title(tl->
getTitle().c_str());
629 QString layerId(tl->
getId().c_str());
631 m_animationScene->addItem(ti);
633 animation->setEasingCurve(QEasingCurve::Linear);
640 QVector<QPointF> points;
645 std::auto_ptr<te::dt::DateTime> time = dset->
getTime();
647 if(tiraRepetido == *tinstant)
649 tiraRepetido = *tinstant;
652 std::auto_ptr<te::gm::Geometry> geom = dset->
getGeometry();
654 points.push_back(QPointF(p->
getX(), p->
getY()));
664 QVector<QPointF>::iterator it;
666 for (it = points.begin(); it != points.end(); ++it)
669 ti->m_route->setPointN(i++, p);
676 m_parallelAnimation->addAnimation(animation);
677 calculateAllSpatialExtent();
678 calculateAllTemporalExtent();
680 setDuration(m_duration);
681 setDirection(m_direction);
683 if(state == QAbstractAnimation::Running)
685 onPlayToolButtonnClicked();
686 m_parallelAnimation->setCurrentTime(m_currentTime);
688 if(m_animationScene->items().isEmpty() ==
false)
690 m_ui->m_durationSpinBox->setEnabled(
true);
691 m_ui->m_settingsToolButton->setEnabled(
true);
692 m_ui->m_playToolButton->setEnabled(
true);
693 m_ui->m_stopToolButton->setEnabled(
true);
695 if(m_parallelAnimation->state() == QAbstractAnimation::Paused)
696 m_ui->m_dateTimeEdit->setEnabled(
true);
698 m_ui->m_dateTimeEdit->setEnabled(
false);
700 m_ui->m_TemporalHorizontalSlider->setEnabled(
true);
701 m_ui->label->setEnabled(
true);
702 m_ui->label_2->setEnabled(
true);
707 m_spd->m_ui->m_animationComboBox->addItem(title);
708 m_animationIdList.append(ti->m_layerId);
709 int count = m_spd->m_ui->m_animationComboBox->count();
710 m_spd->m_ui->m_animationComboBox->setCurrentIndex(count-1);
711 onAnimationComboBoxActivated(count-1);
716 if(m_animationScene->items().isEmpty())
717 m_ui->m_durationSpinBox->setValue(m_duration);
719 int state = m_parallelAnimation->state();
720 m_currentTime = m_parallelAnimation->currentTime();
721 if(state == QAbstractAnimation::Running)
722 onPlayToolButtonnClicked();
727 QMessageBox::information(
this,
"Error",
"Load error: " + filePath);
730 m_animationScene->addItem(pi);
731 m_parallelAnimation->addAnimation(pi->
m_animation);
733 calculateAllSpatialExtent();
734 calculateAllTemporalExtent();
736 setDuration(m_duration);
737 setDirection(m_direction);
738 if(state == QAbstractAnimation::Running)
740 onPlayToolButtonnClicked();
741 m_parallelAnimation->setCurrentTime(m_currentTime);
743 if(m_animationScene->items().isEmpty() ==
false)
745 m_ui->m_durationSpinBox->setEnabled(
true);
746 m_ui->m_settingsToolButton->setEnabled(
true);
747 m_ui->m_playToolButton->setEnabled(
true);
748 m_ui->m_stopToolButton->setEnabled(
true);
749 if(m_parallelAnimation->state() == QAbstractAnimation::Paused)
750 m_ui->m_dateTimeEdit->setEnabled(
true);
752 m_ui->m_dateTimeEdit->setEnabled(
false);
753 m_ui->m_TemporalHorizontalSlider->setEnabled(
true);
754 m_ui->label->setEnabled(
true);
755 m_ui->label_2->setEnabled(
true);
761 m_spd->m_ui->m_animationComboBox->addItem(dir.dirName());
762 m_animationIdList.append(pi->
m_dir.absolutePath());
763 int count = m_spd->m_ui->m_animationComboBox->count();
764 m_spd->m_ui->m_animationComboBox->setCurrentIndex(count-1);
765 onAnimationComboBoxActivated(count-1);
770 QList<QGraphicsItem*> list = m_animationScene->items();
774 if (m_display->getExtent().isValid() ==
false)
780 QList<QGraphicsItem*>::iterator it;
782 for(it = list.begin(); it != list.end(); ++it)
789 m_spatialExtent.Union(e);
794 QRectF rect(m_spatialExtent.m_llx, m_spatialExtent.m_lly, m_spatialExtent.getWidth(), m_spatialExtent.getHeight());
795 m_animationScene->setSceneRect(rect);
796 m_animationView->setSceneRect(rect);
803 QList<QGraphicsItem*> list = m_animationScene->items();
804 QList<QGraphicsItem*>::iterator it = list.begin();
813 while(it != list.end())
817 if(initial < t_initial)
828 if(list.count() == 1)
830 m_temporalAnimationExtent = tp;
832 for(it = list.begin(); it != list.end(); ++it)
843 QVector<te::dt::TimePeriod>
times;
844 QVector<te::gm::Envelope> envelopes;
845 QList<QGraphicsItem*> list = m_animationScene->items();
846 QList<QGraphicsItem*>::iterator it;
847 for(it = list.begin(); it != list.end(); ++it)
854 if(m_parallelAnimation->state() == QAbstractAnimation::Stopped)
855 m_parallelAnimation->clear();
858 int cur = m_parallelAnimation->currentTime();
859 m_parallelAnimation->stop();
860 m_parallelAnimation->clear();
861 m_parallelAnimation->setCurrentTime(cur);
864 for(it = list.begin(), i = 0 ; it != list.end(); ++it, ++i)
872 m_parallelAnimation->addAnimation(a);
881 boost::posix_time::ptime iTime = m_temporalAnimationExtent.getInitialTimeInstant().getTimeInstant();
882 boost::posix_time::ptime fTime = m_temporalAnimationExtent.getFinalTimeInstant().getTimeInstant();
883 boost::posix_time::time_duration diff = fTime - iTime;
884 double totalSeconds = diff.total_seconds();
886 diff = pTime - iTime;
887 double seconds = diff.total_seconds();
889 double t = seconds / totalSeconds;
890 int ret = qRound(t * (
double)m_duration);
896 double t = m_parallelAnimation->currentTime();
897 double trel = t / (double)m_duration;
900 boost::posix_time::ptime iTime = m_temporalAnimationExtent.getInitialTimeInstant().
getTimeInstant();
901 boost::posix_time::ptime fTime = m_temporalAnimationExtent.getFinalTimeInstant().getTimeInstant();
902 boost::posix_time::time_duration diff = fTime - iTime;
903 double totalSeconds = diff.total_seconds();
905 int secs = qRound(totalSeconds * trel);
906 boost::posix_time::time_duration td = boost::posix_time::seconds(secs);
907 boost::posix_time::ptime time = iTime + td;
914 if(m_animationScene->items().isEmpty())
916 if(m_parallelAnimation->state() == QAbstractAnimation::Stopped)
920 if(m_ui->m_dateTimeEdit->isEnabled() ==
false)
921 t = getTimeInstant();
924 QDateTime d = m_ui->m_dateTimeEdit->dateTime();
929 QList<QGraphicsItem*> list = m_animationScene->items();
930 QList<QGraphicsItem*>::iterator it;
932 if(m_animationScene->m_numberOfCoverages)
935 for(it = list.begin(); it != list.end(); ++it)
938 if(ai->pixmap().isNull())
943 if(t < tini || t > tfim)
949 QRect dr(m_display->rect());
950 if (dr.intersects(r))
959 if(m_animationScene->m_numberOfTrajectories)
962 for (it = list.begin(); it != list.end(); ++it)
965 if (ai->pixmap().isNull() ==
false)
971 if (t > tini || t < tfim)
975 if (it != list.end())
978 m_animationScene->m_mutex.lock();
979 QPixmap* pixt = (
dynamic_cast<AnimationScene*
>(m_animationScene))->m_trajectoryPixmap;
980 painter->drawPixmap(0, 0, *pixt);
981 m_animationScene->m_mutex.unlock();
984 for(it = list.begin(); it != list.end(); ++it)
987 if(ai->pixmap().isNull() ==
false)
993 if(t < tini || t > tfim)
1013 m_direction = direction;
1014 m_parallelAnimation->setDirection(m_direction);
1016 unsigned int count = m_parallelAnimation->animationCount();
1017 for(
unsigned int i = 0; i < count; ++i)
1019 QPropertyAnimation* a =
dynamic_cast<QPropertyAnimation*
>(m_parallelAnimation->animationAt(i));
1028 m_animationScene->setDuration(duration);
1033 m_animationScene->createNewPixmap();
1038 m_animationScene->createNewPixmap();
1039 m_animationScene->draw(m_currentTime);
1049 double ss = m_spd->m_ui->m_panFactorDoubleSpinBox->singleStep();
1051 v = (double)((
int)(v * 10. + .5)) / 10.;
1053 v = (double)((
int)(v * 100. + .5)) / 100.;
1055 v = (double)((
int)(v * 1000. + .5)) / 1000.;
1059 if (m_panFactor >= .1 && m_panFactor <= .5)
1062 m_spd->m_ui->m_panFactorDoubleSpinBox->setSingleStep(.01);
1064 else if (m_panFactor >= .01 && m_panFactor < .1)
1067 m_spd->m_ui->m_panFactorDoubleSpinBox->setSingleStep(.001);
1069 m_spd->m_ui->m_panFactorDoubleSpinBox->setValue(m_panFactor);
1073 if (m_panFactor >= .1 && v <= .5)
1074 m_spd->m_ui->m_panFactorDoubleSpinBox->setSingleStep(.1);
1075 else if (v >= .01 && v < .1)
1076 m_spd->m_ui->m_panFactorDoubleSpinBox->setSingleStep(.01);
1078 m_spd->m_ui->m_panFactorDoubleSpinBox->setSingleStep(.001);
1080 if (v < m_panFactor)
1082 else if (v > m_panFactor)
1088 m_panFactor = (double)((
int)(m_panFactor * 10. + .5)) / 10.;
1090 m_panFactor = (double)((
int)(m_panFactor * 100. + .5)) / 100.;
1092 m_panFactor = (double)((
int)(m_panFactor * 1000. + .5)) / 1000.;
1094 m_spd->m_ui->m_panFactorDoubleSpinBox->setValue(m_panFactor);
1097 QList<QGraphicsItem*> list = m_animationScene->items();
1098 QList<QGraphicsItem*>::iterator it;
1099 for(it = list.begin(); it != list.end(); ++it)
1108 if(m_animationScene->items().isEmpty())
1109 return QObject::eventFilter(obj, e);
1112 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
1113 QString
id = m_animationIdList.value(ind);
1115 QList<QGraphicsItem*> list = m_animationScene->items();
1116 QList<QGraphicsItem*>::iterator it;
1118 for (it = list.begin(); it != list.end(); ++it)
1121 if (ai->pixmap().isNull() ==
false)
1130 for (it = list.begin(); it != list.end(); ++it)
1133 if (ai->pixmap().isNull())
1136 if (ii->
m_dir.absolutePath() == id)
1141 if(obj == m_spd->m_ui->m_forwardColorPushButton)
1143 if(e->type() == QEvent::Paint)
1145 QPainter painter(m_spd->m_ui->m_forwardColorPushButton);
1146 QBrush brush(m_spd->m_ui->m_forwardColorPushButton->palette().color(QPalette::Window));
1147 painter.fillRect(m_spd->m_ui->m_forwardColorPushButton->rect(), brush);
1150 else if(e->type() == QEvent::MouseButtonPress)
1152 QColor cor = QColorDialog::getColor(m_spd->m_ui->m_forwardColorPushButton->palette().color(QPalette::Window),
this,
"Forward Color", QColorDialog::ShowAlphaChannel);
1153 if(cor.isValid() ==
false)
1155 else if(cor == m_spd->m_ui->m_forwardColorPushButton->palette().color(QPalette::Window))
1158 m_spd->m_ui->m_forwardColorPushButton->setPalette(QPalette(cor));
1165 else if(obj == m_spd->m_ui->m_backwardColorPushButton)
1167 if(e->type() == QEvent::Paint)
1169 QPainter painter(m_spd->m_ui->m_backwardColorPushButton);
1170 QBrush brush(m_spd->m_ui->m_backwardColorPushButton->palette().color(QPalette::Window));
1171 painter.fillRect(m_spd->m_ui->m_backwardColorPushButton->rect(), brush);
1174 else if(e->type() == QEvent::MouseButtonPress)
1176 QColor cor = QColorDialog::getColor(m_spd->m_ui->m_backwardColorPushButton->palette().color(QPalette::Window),
this,
"Forward Color", QColorDialog::ShowAlphaChannel);
1177 if(cor.isValid() ==
false)
1179 else if(cor == m_spd->m_ui->m_backwardColorPushButton->palette().color(QPalette::Window))
1182 m_spd->m_ui->m_backwardColorPushButton->setPalette(QPalette(cor));
1189 else if(obj == m_spd->m_ui->m_iconPushButton)
1191 if(e->type() == QEvent::Paint)
1193 QPainter painter(m_spd->m_ui->m_iconPushButton);
1194 painter.fillRect(m_spd->m_ui->m_iconPushButton->rect(), QBrush(Qt::white));
1195 QPixmap pix = ti->pixmap();
1196 QRect r = pix.rect();
1197 r.moveCenter(m_spd->m_ui->m_iconPushButton->rect().center());
1198 painter.drawPixmap(r, pix, pix.rect());
1203 else if(ti != 0 && e->type() == QEvent::MouseButtonPress)
1205 QString fileName = QFileDialog::getOpenFileName(
this, tr(
"Select File"),
"C:/", tr(
"Images (*.png *.xpm *.jpg *.gif)"));
1206 if(fileName.isNull())
1209 QPixmap pix(fileName);
1212 QMessageBox::information(
this,
"Pixmap Error",
"Invalid File");
1216 pp.fill(Qt::transparent);
1217 QPainter painter(&pp);
1218 painter.drawPixmap(pp.rect(), pix, pix.rect());
1223 m_spd->m_ui->m_iconPushButton->update();
1227 else if(obj == m_ui->m_dateTimeEdit)
1229 if(e->type() == QEvent::MouseButtonRelease)
1231 QDateTime d = m_ui->m_dateTimeEdit->dateTime();
1241 else if(d >= maximun)
1243 else if(d == m_oldQDateTime)
1244 d = fixDateTimeEdit(m_ui->m_dateTimeEdit, d);
1246 m_ui->m_dateTimeEdit->setDateTime(d);
1250 onFinishAnimation();
1254 else if(obj == m_spd->m_ui->m_initialAnimationDateTimeEdit)
1256 if(e->type() == QEvent::MouseButtonRelease)
1258 QDateTime d = m_spd->m_ui->m_initialAnimationDateTimeEdit->dateTime();
1268 else if(d >= maximun)
1270 else if(d == m_oldQDateTime)
1271 d = fixDateTimeEdit(m_spd->m_ui->m_initialAnimationDateTimeEdit, d);
1273 m_spd->m_ui->m_initialAnimationDateTimeEdit->setDateTime(d);
1278 else if(obj == m_spd->m_ui->m_finalAnimationDateTimeEdit)
1280 if(e->type() == QEvent::MouseButtonRelease)
1282 QDateTime d = m_spd->m_ui->m_finalAnimationDateTimeEdit->dateTime();
1292 else if(d >= maximun)
1294 else if(d == m_oldQDateTime)
1295 d = fixDateTimeEdit(m_spd->m_ui->m_finalAnimationDateTimeEdit, d);
1297 m_spd->m_ui->m_finalAnimationDateTimeEdit->setDateTime(d);
1302 return QObject::eventFilter(obj, e);
1307 if(m_spd->isHidden())
1315 if(m_animationScene->items().isEmpty())
1318 int state = m_parallelAnimation->state();
1319 if(state == QAbstractAnimation::Running)
1321 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-start"));
1322 m_parallelAnimation->pause();
1323 m_ui->m_dateTimeEdit->setEnabled(
true);
1328 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-pause"));
1329 if(m_comingBack ==
false)
1331 if(m_spd->m_ui->m_forwardRadioButton->isChecked())
1332 onForwardRadioButtonClicked(
true);
1333 if(m_spd->m_ui->m_backwardRadioButton->isChecked())
1334 onBackwardRadioButtonClicked(
true);
1336 if(m_spd->m_ui->m_loopCheckBox->isChecked())
1337 onLoopCheckBoxClicked(
true);
1338 if(m_spd->m_ui->m_goAndBackCheckBox->isChecked())
1339 onGoAndBackCheckBoxClicked(
true);
1341 if(m_parallelAnimation->direction() == QAbstractAnimation::Forward)
1343 if(m_ui->m_TemporalHorizontalSlider->value() == m_maxSliderValue)
1345 m_parallelAnimation->setCurrentTime(0);
1346 m_ui->m_TemporalHorizontalSlider->setValue(0);
1351 if(m_ui->m_TemporalHorizontalSlider->value() == 0)
1353 m_parallelAnimation->setCurrentTime(m_duration);
1354 m_ui->m_TemporalHorizontalSlider->setValue(m_maxSliderValue);
1357 m_ui->m_dateTimeEdit->setEnabled(
false);
1365 if(m_animationScene->items().isEmpty())
1368 m_parallelAnimation->stop();
1369 m_ui->m_dateTimeEdit->setEnabled(
false);
1370 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-start"));
1377 m_comingBack =
false;
1381 if(m_finished ==
false)
1383 if(m_parallelAnimation->direction() == QAbstractAnimation::Forward)
1385 m_ui->m_TemporalHorizontalSlider->setValue(0);
1386 m_parallelAnimation->setCurrentTime(0);
1390 m_ui->m_TemporalHorizontalSlider->setValue(m_maxSliderValue);
1391 m_parallelAnimation->setCurrentTime(m_parallelAnimation->duration());
1394 m_display->update();
1401 int state = m_parallelAnimation->state();
1402 if(state == QAbstractAnimation::Running)
1404 m_parallelAnimation->pause();
1406 m_parallelAnimation->resume();
1416 int state = m_parallelAnimation->state();
1417 if(state == QAbstractAnimation::Running)
1419 calculateAllSpatialExtent();
1422 m_display->update();
1423 m_parallelAnimation->start();
1427 calculateAllSpatialExtent();
1430 m_display->update();
1436 if(m_animationScene->items().isEmpty())
1439 int state = m_parallelAnimation->state();
1440 if(state == QAbstractAnimation::Stopped)
1443 m_parallelAnimation->start();
1445 else if(state == QAbstractAnimation::Paused)
1447 m_parallelAnimation->resume();
1453 int oldCurTime = m_parallelAnimation->currentTime();
1455 if(m_parallelAnimation->state() == QAbstractAnimation::Stopped)
1457 onStopToolButtonnClicked();
1461 double v = (double)value / (
double)m_maxSliderValue;
1463 int curTime = qRound(v * (
double)m_parallelAnimation->duration());
1465 if(curTime >= m_parallelAnimation->duration())
1466 curTime = m_parallelAnimation->duration();
1469 if(m_goAndBack ==
true)
1471 if(m_comingBack ==
false && m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1473 else if(m_comingBack ==
false && m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1475 else if(m_comingBack ==
true && m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1477 else if(m_comingBack ==
true && m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1482 if(m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1484 else if(m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1488 m_parallelAnimation->setCurrentTime(curTime);
1490 this->erase(curTime);
1492 m_currentTime = curTime;
1494 if(m_currentTime == 0 || m_currentTime == m_parallelAnimation->duration())
1495 onFinishAnimation();
1497 if(m_parallelAnimation->state() == QAbstractAnimation::Paused)
1498 m_display->update();
1503 QDateTime qdatetime(qdate, qtime);
1504 m_ui->m_dateTimeEdit->setDateTime(qdatetime);
1509 QAbstractAnimation::Direction direction = m_parallelAnimation->direction();
1510 if(direction == QAbstractAnimation::Forward)
1511 direction = QAbstractAnimation::Backward;
1513 direction = QAbstractAnimation::Forward;
1514 setDirection(direction);
1521 if(m_currentTime >= m_duration && m_parallelAnimation->direction() == QAbstractAnimation::Forward)
1523 m_currentTime = m_duration;
1525 m_comingBack =
true;
1526 m_parallelAnimation->setCurrentTime(m_currentTime);
1528 else if(m_currentTime <= 0 && m_parallelAnimation->direction() == QAbstractAnimation::Backward)
1532 m_comingBack =
false;
1533 m_parallelAnimation->setCurrentTime(m_currentTime);
1536 m_parallelAnimation->pause();
1545 m_comingBack = !m_comingBack;
1556 m_parallelAnimation->setCurrentTime(m_currentTime);
1561 if(m_comingBack ==
false)
1562 onStopToolButtonnClicked();
1572 onStopToolButtonnClicked();
1578 m_currentTime = m_parallelAnimation->currentTime();
1579 int v = qRound((
double)m_maxSliderValue * (
double)m_currentTime/(
double)m_duration);
1581 m_ui->m_TemporalHorizontalSlider->setValue(v);
1583 updateTimeTextEdit();
1588 if(m_ui->m_dateTimeEdit->isEnabled() ==
false && m_animationScene->items().isEmpty() ==
false)
1593 QDateTime qdatetime(qdate, qtime);
1594 m_ui->m_dateTimeEdit->setDateTime(qdatetime);
1600 emit deleteTimeSliderWidget();
1605 int state = m_parallelAnimation->state();
1606 if(state == QAbstractAnimation::Running)
1607 onPlayToolButtonnClicked();
1609 QList<QGraphicsItem*> list = m_animationScene->items();
1610 int i = list.indexOf(item);
1614 QList<QGraphicsItem*>::iterator it = list.begin();
1615 while(it != list.end())
1618 m_animationScene->removeItem(ai);
1621 while(list.isEmpty() ==
false)
1624 m_animationScene->addItem(ai);
1627 onPlayToolButtonnClicked();
1632 int state = m_parallelAnimation->state();
1633 if(state == QAbstractAnimation::Running)
1634 onPlayToolButtonnClicked();
1636 QList<QGraphicsItem*> list = m_animationScene->items();
1637 int i = list.indexOf(item);
1641 QList<QGraphicsItem*>::iterator it = list.begin();
1642 while(it != list.end())
1645 m_animationScene->removeItem(ai);
1648 while(list.isEmpty() ==
false)
1651 m_animationScene->addItem(ai);
1654 onPlayToolButtonnClicked();
1661 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
1662 QString
id = m_animationIdList.value(ind);
1664 QList<QGraphicsItem*> list = m_animationScene->items();
1665 QList<QGraphicsItem*>::iterator it;
1667 for (it = list.begin(); it != list.end(); ++it)
1670 if (ai->pixmap().isNull() ==
false)
1682 if (ii->
m_dir.absolutePath() == id)
1695 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
1696 QString
id = m_animationIdList.value(ind);
1698 QList<QGraphicsItem*> list = m_animationScene->items();
1699 QList<QGraphicsItem*>::iterator it;
1701 for (it = list.begin(); it != list.end(); ++it)
1704 if (ai->pixmap().isNull() ==
false)
1716 if (ii->
m_dir.absolutePath() == id)
1727 QList<QGraphicsItem*> list = m_animationScene->items();
1728 QList<QGraphicsItem*>::iterator it;
1729 for(it = list.begin(); it != list.end(); ++it)
1732 if(ai->pixmap().isNull() ==
false)
1733 (dynamic_cast<te::qt::widgets::TrajectoryItem*>(ai))->m_erasePerfectly = m_erasePerfectly;
1736 if(m_erasePerfectly)
1738 m_parallelAnimation->setCurrentTime(curTime);
1742 m_parallelAnimation->setCurrentTime(curTime);
1744 m_currentTime = curTime;
1749 if (val == m_duration)
1752 m_currentTime = m_parallelAnimation->currentTime();
1753 double f = double(m_currentTime) / (double)m_duration;
1755 int ss = m_ui->m_durationSpinBox->singleStep();
1757 bool isRound =
true;
1758 double d = (double)m_duration / (
double)ss;
1765 while ((m_duration / ns) > 10)
1769 while ((val / nns) > 10)
1774 if (ns < m_ui->m_durationSpinBox->minimum())
1775 ns = m_ui->m_durationSpinBox->minimum();
1776 m_ui->m_durationSpinBox->setSingleStep(ns);
1779 if (val == 100 && ns != ss)
1781 else if (val == (m_duration + ss) || val == (m_duration - ss))
1783 if (isRound ==
false)
1785 int nd = ((int)((
double)m_duration / (double)ns)) * ns;
1786 if (val < m_duration)
1789 m_duration = nd + ns;
1793 if (val < m_duration)
1802 m_ui->m_durationSpinBox->setSingleStep(nns);
1805 if (m_duration <= m_ui->m_durationSpinBox->minimum())
1807 m_duration = m_ui->m_durationSpinBox->minimum();
1808 m_ui->m_durationSpinBox->setSingleStep(m_duration);
1810 else if (m_duration >= m_ui->m_durationSpinBox->maximum())
1812 m_duration = m_ui->m_durationSpinBox->maximum();
1813 m_ui->m_durationSpinBox->setSingleStep(m_duration/10);
1815 m_ui->m_durationSpinBox->setValue(m_duration);
1817 bool running =
false;
1818 if (m_parallelAnimation->state() == QAbstractAnimation::Running)
1821 onPlayToolButtonnClicked();
1824 m_currentTime = qRound(f * (
double)m_duration);
1825 m_animationScene->m_mutex.lock();
1826 m_animationScene->m_trajectoryPixmap->fill(Qt::transparent);
1827 m_animationScene->m_mutex.unlock();
1828 setDuration(m_duration);
1829 m_parallelAnimation->setCurrentTime(m_currentTime);
1832 onPlayToolButtonnClicked();
1837 if(m_ui->m_dateTimeEdit->isEnabled() ==
false)
1841 int oldCurTime = m_parallelAnimation->currentTime();
1844 unsigned long totalSecs = m_temporalAnimationExtent.getTimePeriod().length().total_seconds();
1846 te::dt::Date date(t.date().year(), t.date().month(), t.date().day());
1851 unsigned long secs = tp.
getTimePeriod().length().total_seconds();
1853 double v = (double)secs / (
double)totalSecs;
1854 int curTime = qRound(v * (
double)m_parallelAnimation->duration());
1856 if(curTime > m_parallelAnimation->duration())
1857 curTime = m_parallelAnimation->duration();
1860 if(m_goAndBack ==
true)
1862 if(m_comingBack ==
false && m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1864 else if(m_comingBack ==
false && m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1866 else if(m_comingBack ==
true && m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1868 else if(m_comingBack ==
true && m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1873 if(m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1875 else if(m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1879 m_currentTime = curTime;
1880 m_parallelAnimation->setCurrentTime(curTime);
1882 this->erase(curTime);
1884 if(m_parallelAnimation->state() == QAbstractAnimation::Paused)
1885 m_display->update();
1891 QDateTimeEdit::Section section = dte->currentSection();
1892 if(section == QDateTimeEdit::SecondSection)
1894 int sec = t.time().second();
1900 else if(section == QDateTimeEdit::MinuteSection)
1902 int min = t.time().minute();
1908 else if(section == QDateTimeEdit::HourSection)
1910 int hour = t.time().hour();
1912 t = t.addSecs(-3600);
1914 t = t.addSecs(3600);
1916 else if(section == QDateTimeEdit::DaySection)
1918 int day = t.date().day();
1924 else if(section == QDateTimeEdit::MonthSection)
1926 int month = t.date().month();
1928 t = t.addMonths(-1);
1938 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
1939 QString
id = m_animationIdList.value(ind);
1941 QList<QGraphicsItem*> list = m_animationScene->items();
1942 QList<QGraphicsItem*>::iterator it;
1945 for (it = list.begin(); it != list.end(); ++it)
1948 if (ai->pixmap().isNull())
1951 if (ii->
m_dir.absolutePath() == id)
1961 if (it != list.end())
1964 m_display->update();
1970 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
1971 QString
id = m_animationIdList.value(ind);
1973 QList<QGraphicsItem*> list = m_animationScene->items();
1974 QList<QGraphicsItem*>::iterator it;
1976 for (it = list.begin(); it != list.end(); ++it)
1979 if (ai->pixmap().isNull() ==
false)
1984 QPixmap pix = ai->pixmap();
1985 QPixmap pn(m_spd->m_ui->m_widthSpinBox->value(), m_spd->m_ui->m_heightSpinBox->value());
1986 pn.fill(Qt::transparent);
1987 if (pix.isNull() ==
false)
1991 if (file.isEmpty() ==
false)
1997 QPainter painter(&pn);
1998 painter.drawPixmap(pn.rect(), pf, pf.rect());
2002 m_spd->m_ui->m_iconPushButton->update();
2003 m_display->update();
2008 QPainter painter(&pn);
2010 painter.setBrush(b);
2013 painter.drawEllipse(pn.rect());
2015 m_spd->m_ui->m_iconPushButton->update();
2019 m_display->update();
2031 QDateTime qdatetimei(qdatei, qtimei);
2032 m_spd->m_ui->m_initialAnimationDateTimeEdit->setDateTime(qdatetimei);
2037 QDateTime qdatetimef(qdatef, qtimef);
2038 m_spd->m_ui->m_finalAnimationDateTimeEdit->setDateTime(qdatetimef);
2040 if(m_direction == QAbstractAnimation::Forward)
2042 if(m_spd->m_ui->m_forwardRadioButton->isChecked() ==
false)
2043 m_spd->m_ui->m_forwardRadioButton->toggle();
2047 m_spd->m_ui->m_loopCheckBox->setChecked(
true);
2049 m_spd->m_ui->m_goAndBackCheckBox->setChecked(
true);
2051 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
2052 onAnimationComboBoxActivated(ind);
2057 QDateTime t = m_spd->m_ui->m_initialAnimationDateTimeEdit->dateTime();
2058 te::dt::Date date(t.date().year(), t.date().month(), t.date().day());
2066 QDateTime t = m_spd->m_ui->m_finalAnimationDateTimeEdit->dateTime();
2067 te::dt::Date date(t.date().year(), t.date().month(), t.date().day());
2078 QDateTime qdatetime(qdate, qtime);
2079 m_spd->m_ui->m_initialAnimationDateTimeEdit->setDateTime(qdatetime);
2087 QDateTime qdatetime(qdate, qtime);
2088 m_spd->m_ui->m_finalAnimationDateTimeEdit->setDateTime(qdatetime);
2093 if(b==
false && m_spd->m_ui->m_propertyWidget->isHidden())
2095 if(b==
true && m_spd->m_ui->m_propertyWidget->isHidden()==
false)
2098 int h = m_spd->m_ui->m_propertyWidget->height();
2102 m_spd->m_ui->m_propertyWidget->hide();
2103 resize(width(), height()-h);
2107 m_spd->m_ui->m_propertyWidget->show();
2108 resize(width(), height()+h);
2117 QDateTime qdatetimei(qdatei, qtimei);
2118 QDateTime qdi = m_spd->m_ui->m_initialAnimationDateTimeEdit->dateTime();
2119 if(qdatetimei != qdi)
2125 QDateTime qdatetimef(qdatef, qtimef);
2126 QDateTime qdf = m_spd->m_ui->m_finalAnimationDateTimeEdit->dateTime();
2127 if(qdatetimef != qdf)
2130 if(m_spd->m_ui->m_forwardRadioButton->isChecked() && m_direction != QAbstractAnimation::Forward)
2132 if(m_spd->m_ui->m_forwardRadioButton->isChecked() ==
false && m_direction != QAbstractAnimation::Backward)
2134 if(m_spd->m_ui->m_loopCheckBox->isChecked() != m_loop)
2136 if(m_spd->m_ui->m_goAndBackCheckBox->isChecked() != m_goAndBack)
2144 if(m_direction == QAbstractAnimation::Forward)
2147 m_comingBack =
false;
2155 if(m_direction == QAbstractAnimation::Backward)
2158 m_comingBack =
false;
2171 if(m_goAndBack != b)
2176 m_comingBack =
false;
2187 if(ti > tf || ti == tf)
2189 QMessageBox::warning(
this,
"Time Extent Error",
"Initial time can not be larger than the end time!", QMessageBox::Ok);
2199 QDateTime qdatetimei(qdatei, qtimei);
2200 QDateTime qdi = m_spd->m_ui->m_initialAnimationDateTimeEdit->dateTime();
2203 t = m_temporalAnimationExtent.getFinalTimeInstant();
2206 QDateTime qdatetimef(qdatef, qtimef);
2207 QDateTime qdf = m_spd->m_ui->m_finalAnimationDateTimeEdit->dateTime();
2209 if(qdatetimei == qdi && qdatetimef == qdf)
2214 boost::posix_time::time_duration ndiff = nfTime - niTime;
2215 double ntotalSeconds = ndiff.total_seconds();
2217 boost::posix_time::time_duration diff = fTime - iTime;
2218 double totalSeconds = diff.total_seconds();
2219 double rel = m_duration / totalSeconds;
2221 int nduration = qRound(rel * ntotalSeconds);
2224 if(btinst >= niTime && btinst <= nfTime)
2226 boost::posix_time::time_duration d = btinst - niTime;
2227 double tot = d.total_seconds();
2228 m_currentTime = qRound(nduration * tot / ntotalSeconds);
2231 m_currentTime = nduration;
2233 int state = m_parallelAnimation->state();
2234 if(state == QAbstractAnimation::Running)
2235 onPlayToolButtonnClicked();
2237 QDateTime dt = m_ui->m_dateTimeEdit->dateTime();
2243 calculateAllSpatialExtent();
2245 m_duration = nduration;
2246 m_ui->m_durationSpinBox->setValue(m_duration);
2247 setDuration(m_duration);
2248 setDirection(m_direction);
2250 if(state == QAbstractAnimation::Running)
2252 onPlayToolButtonnClicked();
2253 m_parallelAnimation->setCurrentTime(m_currentTime);
2254 m_parallelAnimation->start();
2258 m_parallelAnimation->setCurrentTime(m_currentTime);
2259 m_parallelAnimation->start();
2260 if(state == QAbstractAnimation::Paused)
2261 m_parallelAnimation->pause();
2264 if (tp == m_temporalAnimationExtent)
2265 onDateTimeEditChanged(dt);
2270 while ((m_duration / i) > 10)
2272 m_ui->m_durationSpinBox->setSingleStep(i);
2278 QString
id = m_animationIdList.value(ind);
2280 QList<QGraphicsItem*> list = m_animationScene->items();
2281 QList<QGraphicsItem*>::iterator it;
2283 for (it = list.begin(); it != list.end(); ++it)
2286 if (ai->pixmap().isNull() ==
false)
2292 m_spd->m_ui->m_opacitySpinBox->setValue(op);
2294 QString sini = getDateString(tini);
2296 QString sfim = getDateString(tfim);
2297 m_spd->m_ui->m_initialTimeLineEdit->setText(sini);
2298 m_spd->m_ui->m_finalTimeLineEdit->setText(sfim);
2300 adjustPropertyDialog(ai);
2311 QDateTime qdatetime(qdate, qtime);
2312 return qdatetime.toString(
"dd/MMM/yyyy hh:mm:ss");
2317 QPixmap pix = ai->pixmap();
2320 m_spd->m_ui->m_trajectoryGroupBox->setEnabled(
false);
2321 m_spd->m_ui->m_forwardColorPushButton->setPalette(QPalette(Qt::gray));
2322 m_spd->m_ui->m_forwardColorPushButton->update();
2323 m_spd->m_ui->m_backwardColorPushButton->setPalette(QPalette(Qt::gray));
2324 m_spd->m_ui->m_backwardColorPushButton->update();
2325 m_spd->m_ui->m_autoPanCheckBox->setChecked(
false);
2326 m_spd->m_ui->m_drawTrailCheckBox->setChecked(
false);
2330 m_spd->m_ui->m_trajectoryGroupBox->setEnabled(
true);
2332 m_spd->m_ui->m_forwardColorPushButton->setPalette(QPalette(ti->
m_forwardColor));
2333 m_spd->m_ui->m_forwardColorPushButton->update();
2334 m_spd->m_ui->m_backwardColorPushButton->setPalette(QPalette(ti->
m_backwardColor));
2335 m_spd->m_ui->m_backwardColorPushButton->update();
2338 m_spd->m_ui->m_drawTrailCheckBox->setChecked(ti->
m_drawTrail);
2340 m_spd->m_ui->m_iconRotateCheckBox->setChecked(ti->
m_doIconRotate);
2341 QPixmap pix = ti->pixmap();
2342 m_spd->m_ui->m_widthSpinBox->setValue(pix.width());
2343 m_spd->m_ui->m_heightSpinBox->setValue(pix.height());
2344 m_spd->m_ui->m_iconPushButton->update();
2350 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
2351 QString
id = m_animationIdList.value(ind);
2353 QList<QGraphicsItem*> list = m_animationScene->items();
2354 QList<QGraphicsItem*>::iterator it;
2356 for (it = list.begin(); it != list.end(); ++it)
2359 if (ai->pixmap().isNull() ==
false)
2373 int ind = m_spd->m_ui->m_animationComboBox->currentIndex();
2374 QString
id = m_animationIdList.value(ind);
2376 QList<QGraphicsItem*> list = m_animationScene->items();
2377 QList<QGraphicsItem*>::iterator it;
2379 for (it = list.begin(); it != list.end(); ++it)
2382 if (ai->pixmap().isNull() ==
false)
2396 QString d = dir.dirName();
2399 QString type(getTemporalImageType(path));
2401 if(type ==
"HIDRO_TYPE")
2403 else if (type ==
"ETA5KM_TYPE")
2405 else if (type ==
"GOES_TYPE")
2407 else if (type ==
"QTKNOW_TYPE")
2425 QString d = dir.dirName();
2426 QStringList nameFilter;
2427 nameFilter.append(
"*.ctl");
2428 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
2429 QString ctlFile = files.first();
2431 if (ctlFile ==
"racc.ctl")
2432 return "HIDRO_TYPE";
2433 else if (ctlFile ==
"Prec5km.ctl")
2434 return "ETA5KM_TYPE";
2438 nameFilter.append(
"S11*.jpg");
2439 files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
2440 if (files.empty() ==
false && files.first().length() == 26)
2443 return "QTKNOW_TYPE";
virtual const std::string & getId() const
It returns the layer id.
const std::string & getType() const
It returns the layer type: TRAJECTORYDATASETLAYER.
const te::dt::DateTimePeriod * getTemporalExtent() const
It returns the temporal extent of the trajectory observations.
virtual const std::string & getTitle() const
It returns the layer title.
std::complex< double > times(std::complex< double > lhs, std::complex< double > rhs)
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.
boost::gregorian::greg_day getDay() const
It returns the gregorian day - from 1 to 31.
std::auto_ptr< te::st::TrajectoryDataSet > getTrajectoryDataset(te::common::TraverseType travType=te::common::FORWARDONLY) const
const boost::posix_time::ptime & getTimeInstant() const
It returns the boost time instant type.
A class to represent time instant.
void computeMBR(bool cascade) const
It computes the minimum bounding rectangle for the point.
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.
#define TE_UNKNOWN_SRS
A numeric value to represent a unknown SRS identification in TerraLib.
A base class for date data types.
std::auto_ptr< te::dt::DateTime > getTime() const
It returns the time pointed by the internal cursor.
TimeInstant getFinalTimeInstant() const
It gets the final time instant.
virtual int getSRID() const
It return the Spatial Reference System used by the Map Display.
TimeInstant getInitialTimeInstant() const
It gets the initial time instant.
virtual const te::gm::Envelope & getExtent() const
It returns the world extent showned by the MapDisplay.
std::auto_ptr< te::gm::Geometry > getGeometry() const
It returns the geometry pointed by the internal cursor.
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.
const boost::posix_time::time_period & getTimePeriod() const
Assignment operator.
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.
virtual AbstractData * clone() const =0
It returns a clone of this object.
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.
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.