##// END OF EJS Templates
Some progress on new Catalogue GUI, can display most of items, still lack edition and link to SciQLop...
Some progress on new Catalogue GUI, can display most of items, still lack edition and link to SciQLop Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>

File last commit:

r1351:d755f1f0a484
r1408:45ab63a4480c
Show More
TimeWidget.cpp
156 lines | 4.1 KiB | text/x-c | CppLexer
Add the TimeWidget
r134 #include "TimeWidget/TimeWidget.h"
#include "ui_TimeWidget.h"
Alexandre Leroux
Passes TimeWidget in UTC...
r489 #include <Common/DateUtils.h>
Drop of variable, graph and zones on the time widget
r878 #include <Common/MimeTypesDef.h>
Rename "DragDropHelper" in "DragDropGuiController"
r1075 #include <DragAndDrop/DragDropGuiController.h>
Add apply button and its connection for timewidget
r302 #include <SqpApplication.h>
#include <Time/TimeController.h>
add TimeWidget connection
r192
Drag of the time widget on a graph
r879 #include <QDrag>
Drop of variable, graph and zones on the time widget
r878 #include <QDragEnterEvent>
#include <QDropEvent>
#include <QMimeData>
Made core module a git submodule, ready to start switching to new...
r1347 #include <QStyle>
Drop of variable, graph and zones on the time widget
r878
Drag of the time widget on a graph
r879
struct TimeWidget::TimeWidgetPrivate {
explicit TimeWidgetPrivate() {}
QPoint m_DragStartPosition;
};
TimeWidget::TimeWidget(QWidget *parent)
: QWidget{parent},
ui{new Ui::TimeWidget},
impl{spimpl::make_unique_impl<TimeWidgetPrivate>()}
Add the TimeWidget
r134 {
ui->setupUi(this);
add TimeWidget connection
r192
Add apply button and its connection for timewidget
r302 ui->applyToolButton->setIcon(sqpApp->style()->standardIcon(QStyle::SP_DialogApplyButton));
add TimeWidget connection
r192 // Connection
connect(ui->startDateTimeEdit, &QDateTimeEdit::dateTimeChanged, this,
&TimeWidget::onTimeUpdateRequested);
connect(ui->endDateTimeEdit, &QDateTimeEdit::dateTimeChanged, this,
&TimeWidget::onTimeUpdateRequested);
Add apply button and its connection for timewidget
r302
connect(ui->applyToolButton, &QToolButton::clicked, &sqpApp->timeController(),
&TimeController::onTimeNotify);
Temporal parameters of the selected variables can be updated using the...
r304
// Initialisation
Alexandre Leroux
Passes TimeWidget in UTC...
r489 auto endDateTime = QDateTime::currentDateTimeUtc();
auto startDateTime = endDateTime.addSecs(-3600); // one hour before
ui->startDateTimeEdit->setDateTime(startDateTime);
ui->endDateTimeEdit->setDateTime(endDateTime);
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 auto dateTime = DateTimeRange{DateUtils::secondsSinceEpoch(startDateTime),
Change SqpRange for SqpDateTime
r512 DateUtils::secondsSinceEpoch(endDateTime)};
Temporal parameters of the selected variables can be updated using the...
r304
Some WIP refactoring, trying to remove TimeController object...
r1345 sqpApp->timeController().setDateTimeRange(dateTime);
Add the TimeWidget
r134 }
Add apply button and its connection for timewidget
r302
Add the TimeWidget
r134 TimeWidget::~TimeWidget()
{
delete ui;
}
add TimeWidget connection
r192
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 void TimeWidget::setTimeRange(DateTimeRange time)
Drop of variable, graph and zones on the time widget
r878 {
auto startDateTime = DateUtils::dateTime(time.m_TStart);
auto endDateTime = DateUtils::dateTime(time.m_TEnd);
ui->startDateTimeEdit->setDateTime(startDateTime);
ui->endDateTimeEdit->setDateTime(endDateTime);
}
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 DateTimeRange TimeWidget::timeRange() const
add TimeWidget connection
r192 {
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 return DateTimeRange{DateUtils::secondsSinceEpoch(ui->startDateTimeEdit->dateTime()),
Drag of the time widget on a graph
r879 DateUtils::secondsSinceEpoch(ui->endDateTimeEdit->dateTime())};
}
add TimeWidget connection
r192
Drag of the time widget on a graph
r879 void TimeWidget::onTimeUpdateRequested()
{
auto dateTime = timeRange();
add TimeWidget connection
r192 emit timeUpdated(std::move(dateTime));
Removed old IDataProvider IF, some small steps toward new VC integration...
r1351 sqpApp->timeController().setDateTimeRange(dateTime);
add TimeWidget connection
r192 }
Drop of variable, graph and zones on the time widget
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)
{
code improvements
r939 setStyleSheet(QString{});
Drop of variable, graph and zones on the time widget
r878 }
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();
}
code improvements
r939 setStyleSheet(QString{});
Drop of variable, graph and zones on the time widget
r878 }
Drag of the time widget on a graph
r879
void TimeWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
impl->m_DragStartPosition = event->pos();
}
QWidget::mousePressEvent(event);
}
void TimeWidget::mouseMoveEvent(QMouseEvent *event)
{
if (!(event->buttons() & Qt::LeftButton)) {
return;
}
if ((event->pos() - impl->m_DragStartPosition).manhattanLength()
< QApplication::startDragDistance()) {
return;
}
// Note: The management of the drag object is done by Qt
auto drag = new QDrag{this};
auto mimeData = new QMimeData;
auto timeData = TimeController::mimeDataForTimeRange(timeRange());
mimeData->setData(MIME_TYPE_TIME_RANGE, timeData);
drag->setMimeData(mimeData);
show a clock icon during the drag of the TimeWidget
r935 auto pixmap = QPixmap{":/icones/time.png"};
drag->setPixmap(pixmap.scaledToWidth(22));
Drag of the time widget on a graph
r879
Rename "DragDropHelper" in "DragDropGuiController"
r1075 sqpApp->dragDropGuiController().resetDragAndDrop();
Drag of the time widget on a graph
r879
// Note: The exec() is blocking on windows but not on linux and macOS
drag->exec(Qt::MoveAction | Qt::CopyAction);
QWidget::mouseMoveEvent(event);
}