TimeWidget.cpp
96 lines
| 2.6 KiB
| text/x-c
|
CppLexer
r134 | #include "TimeWidget/TimeWidget.h" | |||
#include "ui_TimeWidget.h" | ||||
|
r489 | #include <Common/DateUtils.h> | ||
r878 | #include <Common/MimeTypesDef.h> | |||
r302 | #include <SqpApplication.h> | |||
#include <Time/TimeController.h> | ||||
r192 | ||||
r878 | #include <QDragEnterEvent> | |||
#include <QDropEvent> | ||||
#include <QMimeData> | ||||
r134 | TimeWidget::TimeWidget(QWidget *parent) : QWidget{parent}, ui{new Ui::TimeWidget} | |||
{ | ||||
ui->setupUi(this); | ||||
r192 | ||||
r302 | ui->applyToolButton->setIcon(sqpApp->style()->standardIcon(QStyle::SP_DialogApplyButton)); | |||
r192 | // Connection | |||
connect(ui->startDateTimeEdit, &QDateTimeEdit::dateTimeChanged, this, | ||||
&TimeWidget::onTimeUpdateRequested); | ||||
connect(ui->endDateTimeEdit, &QDateTimeEdit::dateTimeChanged, this, | ||||
&TimeWidget::onTimeUpdateRequested); | ||||
r302 | ||||
connect(ui->applyToolButton, &QToolButton::clicked, &sqpApp->timeController(), | ||||
&TimeController::onTimeNotify); | ||||
r304 | ||||
// Initialisation | ||||
|
r489 | auto endDateTime = QDateTime::currentDateTimeUtc(); | ||
auto startDateTime = endDateTime.addSecs(-3600); // one hour before | ||||
ui->startDateTimeEdit->setDateTime(startDateTime); | ||||
ui->endDateTimeEdit->setDateTime(endDateTime); | ||||
r512 | auto dateTime = SqpRange{DateUtils::secondsSinceEpoch(startDateTime), | |||
DateUtils::secondsSinceEpoch(endDateTime)}; | ||||
r304 | ||||
sqpApp->timeController().onTimeToUpdate(dateTime); | ||||
r134 | } | |||
r302 | ||||
r134 | TimeWidget::~TimeWidget() | |||
{ | ||||
delete ui; | ||||
} | ||||
r192 | ||||
r878 | void TimeWidget::setTimeRange(SqpRange time) | |||
{ | ||||
auto startDateTime = DateUtils::dateTime(time.m_TStart); | ||||
auto endDateTime = DateUtils::dateTime(time.m_TEnd); | ||||
ui->startDateTimeEdit->setDateTime(startDateTime); | ||||
ui->endDateTimeEdit->setDateTime(endDateTime); | ||||
} | ||||
r192 | void TimeWidget::onTimeUpdateRequested() | |||
{ | ||||
r512 | auto dateTime = SqpRange{DateUtils::secondsSinceEpoch(ui->startDateTimeEdit->dateTime()), | |||
DateUtils::secondsSinceEpoch(ui->endDateTimeEdit->dateTime())}; | ||||
r192 | ||||
emit timeUpdated(std::move(dateTime)); | ||||
} | ||||
r878 | ||||
void TimeWidget::dragEnterEvent(QDragEnterEvent *event) | ||||
{ | ||||
if (event->mimeData()->hasFormat(MIME_TYPE_TIME_RANGE)) { | ||||
event->acceptProposedAction(); | ||||
setStyleSheet("QDateTimeEdit{background-color: #BBD5EE; border:2px solid #2A7FD4}"); | ||||
} | ||||
else { | ||||
event->ignore(); | ||||
} | ||||
} | ||||
void TimeWidget::dragLeaveEvent(QDragLeaveEvent *event) | ||||
{ | ||||
setStyleSheet(QString()); | ||||
} | ||||
void TimeWidget::dropEvent(QDropEvent *event) | ||||
{ | ||||
if (event->mimeData()->hasFormat(MIME_TYPE_TIME_RANGE)) { | ||||
auto mimeData = event->mimeData()->data(MIME_TYPE_TIME_RANGE); | ||||
auto timeRange = TimeController::timeRangeForMimeData(mimeData); | ||||
setTimeRange(timeRange); | ||||
} | ||||
else { | ||||
event->ignore(); | ||||
} | ||||
setStyleSheet(QString()); | ||||
} | ||||