1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
@@ -102,6 +102,9 public slots: | |||||
102 | /// Update the temporal parameters of every selected variable to dateTime |
|
102 | /// Update the temporal parameters of every selected variable to dateTime | |
103 | void onDateTimeOnSelection(const SqpRange &dateTime); |
|
103 | void onDateTimeOnSelection(const SqpRange &dateTime); | |
104 |
|
104 | |||
|
105 | /// Update the temporal parameters of the specified variable | |||
|
106 | void onUpdateDateTime(std::shared_ptr<Variable> variable, const SqpRange &dateTime); | |||
|
107 | ||||
105 |
|
108 | |||
106 | void onDataProvided(QUuid vIdentifier, const SqpRange &rangeRequested, |
|
109 | void onDataProvided(QUuid vIdentifier, const SqpRange &rangeRequested, | |
107 | const SqpRange &cacheRangeRequested, |
|
110 | const SqpRange &cacheRangeRequested, |
@@ -94,6 +94,7 public: | |||||
94 | signals: |
|
94 | signals: | |
95 | void abortProgessRequested(std::shared_ptr<Variable> variable); |
|
95 | void abortProgessRequested(std::shared_ptr<Variable> variable); | |
96 | void requestVariable(const QVariantHash &productData); |
|
96 | void requestVariable(const QVariantHash &productData); | |
|
97 | void requestVariableRangeUpdate(std::shared_ptr<Variable> variable, const SqpRange &range); | |||
97 |
|
98 | |||
98 | private: |
|
99 | private: | |
99 | class VariableModelPrivate; |
|
100 | class VariableModelPrivate; |
@@ -187,6 +187,8 VariableController::VariableController(QObject *parent) | |||||
187 | connect(&impl->m_VariableAcquisitionWorkerThread, &QThread::finished, |
|
187 | connect(&impl->m_VariableAcquisitionWorkerThread, &QThread::finished, | |
188 | impl->m_VariableAcquisitionWorker.get(), &VariableAcquisitionWorker::finalize); |
|
188 | impl->m_VariableAcquisitionWorker.get(), &VariableAcquisitionWorker::finalize); | |
189 |
|
189 | |||
|
190 | connect(impl->m_VariableModel, &VariableModel::requestVariableRangeUpdate, this, | |||
|
191 | &VariableController::onUpdateDateTime); | |||
190 |
|
192 | |||
191 | impl->m_VariableAcquisitionWorkerThread.start(); |
|
193 | impl->m_VariableAcquisitionWorkerThread.start(); | |
192 | } |
|
194 | } | |
@@ -385,21 +387,7 void VariableController::onDateTimeOnSelection(const SqpRange &dateTime) | |||||
385 | if (auto selectedVariable |
|
387 | if (auto selectedVariable | |
386 | = impl->m_VariableModel->variable(qAsConst(selectedRows).first().row())) { |
|
388 | = impl->m_VariableModel->variable(qAsConst(selectedRows).first().row())) { | |
387 |
|
389 | |||
388 | auto itVar = impl->m_VariableToIdentifierMap.find(selectedVariable); |
|
390 | onUpdateDateTime(selectedVariable, dateTime); | |
389 | if (itVar == impl->m_VariableToIdentifierMap.cend()) { |
|
|||
390 | qCCritical(LOG_VariableController()) |
|
|||
391 | << tr("Impossible to onDateTimeOnSelection request for unknown variable"); |
|
|||
392 | return; |
|
|||
393 | } |
|
|||
394 |
|
||||
395 | // notify that rescale operation has to be done |
|
|||
396 | emit rangeChanged(selectedVariable, dateTime); |
|
|||
397 |
|
||||
398 | auto synchro = impl->m_VariableIdGroupIdMap.find(itVar->second) |
|
|||
399 | != impl->m_VariableIdGroupIdMap.cend(); |
|
|||
400 |
|
||||
401 | this->onRequestDataLoading(QVector<std::shared_ptr<Variable> >{selectedVariable}, |
|
|||
402 | dateTime, synchro); |
|
|||
403 | } |
|
391 | } | |
404 | } |
|
392 | } | |
405 | else if (selectedRows.size() > 1) { |
|
393 | else if (selectedRows.size() > 1) { | |
@@ -412,6 +400,25 void VariableController::onDateTimeOnSelection(const SqpRange &dateTime) | |||||
412 | } |
|
400 | } | |
413 | } |
|
401 | } | |
414 |
|
402 | |||
|
403 | void VariableController::onUpdateDateTime(std::shared_ptr<Variable> variable, | |||
|
404 | const SqpRange &dateTime) | |||
|
405 | { | |||
|
406 | auto itVar = impl->m_VariableToIdentifierMap.find(variable); | |||
|
407 | if (itVar == impl->m_VariableToIdentifierMap.cend()) { | |||
|
408 | qCCritical(LOG_VariableController()) | |||
|
409 | << tr("Impossible to onDateTimeOnSelection request for unknown variable"); | |||
|
410 | return; | |||
|
411 | } | |||
|
412 | ||||
|
413 | // notify that rescale operation has to be done | |||
|
414 | emit rangeChanged(variable, dateTime); | |||
|
415 | ||||
|
416 | auto synchro | |||
|
417 | = impl->m_VariableIdGroupIdMap.find(itVar->second) != impl->m_VariableIdGroupIdMap.cend(); | |||
|
418 | ||||
|
419 | this->onRequestDataLoading(QVector<std::shared_ptr<Variable> >{variable}, dateTime, synchro); | |||
|
420 | } | |||
|
421 | ||||
415 | void VariableController::onDataProvided(QUuid vIdentifier, const SqpRange &rangeRequested, |
|
422 | void VariableController::onDataProvided(QUuid vIdentifier, const SqpRange &rangeRequested, | |
416 | const SqpRange &cacheRangeRequested, |
|
423 | const SqpRange &cacheRangeRequested, | |
417 | QVector<AcquisitionDataPacket> dataAcquired) |
|
424 | QVector<AcquisitionDataPacket> dataAcquired) |
@@ -13,6 +13,7 | |||||
13 |
|
13 | |||
14 | #include <QMimeData> |
|
14 | #include <QMimeData> | |
15 | #include <QSize> |
|
15 | #include <QSize> | |
|
16 | #include <QTimer> | |||
16 | #include <unordered_map> |
|
17 | #include <unordered_map> | |
17 |
|
18 | |||
18 | Q_LOGGING_CATEGORY(LOG_VariableModel, "VariableModel") |
|
19 | Q_LOGGING_CATEGORY(LOG_VariableModel, "VariableModel") | |
@@ -322,7 +323,9 bool VariableModel::canDropMimeData(const QMimeData *data, Qt::DropAction action | |||||
322 | int column, const QModelIndex &parent) const |
|
323 | int column, const QModelIndex &parent) const | |
323 | { |
|
324 | { | |
324 | // drop of a product |
|
325 | // drop of a product | |
325 |
return data->hasFormat(MIME_TYPE_PRODUCT_LIST) |
|
326 | return data->hasFormat(MIME_TYPE_PRODUCT_LIST) | |
|
327 | || (data->hasFormat(MIME_TYPE_TIME_RANGE) && parent.isValid() | |||
|
328 | && !data->hasFormat(MIME_TYPE_VARIABLE_LIST)); | |||
326 | } |
|
329 | } | |
327 |
|
330 | |||
328 | bool VariableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, |
|
331 | bool VariableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, | |
@@ -341,6 +344,14 bool VariableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, i | |||||
341 |
|
344 | |||
342 | dropDone = true; |
|
345 | dropDone = true; | |
343 | } |
|
346 | } | |
|
347 | else if (data->hasFormat(MIME_TYPE_TIME_RANGE) && parent.isValid()) { | |||
|
348 | auto variable = this->variable(parent.row()); | |||
|
349 | auto range = TimeController::timeRangeForMimeData(data->data(MIME_TYPE_TIME_RANGE)); | |||
|
350 | ||||
|
351 | emit requestVariableRangeUpdate(variable, range); | |||
|
352 | ||||
|
353 | dropDone = true; | |||
|
354 | } | |||
344 |
|
355 | |||
345 | return dropDone; |
|
356 | return dropDone; | |
346 | } |
|
357 | } |
@@ -10,7 +10,7 class MacScrollBarStyle : public QProxyStyle { | |||||
10 |
|
10 | |||
11 | public: |
|
11 | public: | |
12 | int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, |
|
12 | int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, | |
13 | QStyleHintReturn *returnData) const; |
|
13 | QStyleHintReturn *returnData) const override; | |
14 |
|
14 | |||
15 | void selfInstallOn(QWidget *widget, bool installOnSubWidgets); |
|
15 | void selfInstallOn(QWidget *widget, bool installOnSubWidgets); | |
16 | }; |
|
16 | }; |
@@ -23,7 +23,7 signals: | |||||
23 | void dropOccuredOnWidget(VisualizationDragWidget *dragWidget, const QMimeData *mimeData); |
|
23 | void dropOccuredOnWidget(VisualizationDragWidget *dragWidget, const QMimeData *mimeData); | |
24 |
|
24 | |||
25 | public: |
|
25 | public: | |
26 | enum class DropBehavior { Inserted, Merged, InsertedAndMerged }; |
|
26 | enum class DropBehavior { Inserted, Merged, InsertedAndMerged, Forbidden }; | |
27 | using AcceptMimeDataFunction = std::function<bool(const QMimeData *mimeData)>; |
|
27 | using AcceptMimeDataFunction = std::function<bool(const QMimeData *mimeData)>; | |
28 |
|
28 | |||
29 | VisualizationDragDropContainer(QWidget *parent = nullptr); |
|
29 | VisualizationDragDropContainer(QWidget *parent = nullptr); | |
@@ -31,7 +31,7 public: | |||||
31 | void addDragWidget(VisualizationDragWidget *dragWidget); |
|
31 | void addDragWidget(VisualizationDragWidget *dragWidget); | |
32 | void insertDragWidget(int index, VisualizationDragWidget *dragWidget); |
|
32 | void insertDragWidget(int index, VisualizationDragWidget *dragWidget); | |
33 |
|
33 | |||
34 |
void |
|
34 | void setMimeType(const QString &mimeType, DropBehavior behavior); | |
35 |
|
35 | |||
36 | int countDragWidget() const; |
|
36 | int countDragWidget() const; | |
37 |
|
37 |
@@ -12,5 +12,6 | |||||
12 | <file>icones/previous.png</file> |
|
12 | <file>icones/previous.png</file> | |
13 | <file>icones/unplot.png</file> |
|
13 | <file>icones/unplot.png</file> | |
14 | <file>icones/up.png</file> |
|
14 | <file>icones/up.png</file> | |
|
15 | <file>icones/time.png</file> | |||
15 | </qresource> |
|
16 | </qresource> | |
16 | </RCC> |
|
17 | </RCC> |
@@ -94,7 +94,7 void TimeWidget::dragEnterEvent(QDragEnterEvent *event) | |||||
94 |
|
94 | |||
95 | void TimeWidget::dragLeaveEvent(QDragLeaveEvent *event) |
|
95 | void TimeWidget::dragLeaveEvent(QDragLeaveEvent *event) | |
96 | { |
|
96 | { | |
97 |
setStyleSheet(QString |
|
97 | setStyleSheet(QString{}); | |
98 | } |
|
98 | } | |
99 |
|
99 | |||
100 | void TimeWidget::dropEvent(QDropEvent *event) |
|
100 | void TimeWidget::dropEvent(QDropEvent *event) | |
@@ -109,7 +109,7 void TimeWidget::dropEvent(QDropEvent *event) | |||||
109 | event->ignore(); |
|
109 | event->ignore(); | |
110 | } |
|
110 | } | |
111 |
|
111 | |||
112 |
setStyleSheet(QString |
|
112 | setStyleSheet(QString{}); | |
113 | } |
|
113 | } | |
114 |
|
114 | |||
115 |
|
115 | |||
@@ -142,10 +142,8 void TimeWidget::mouseMoveEvent(QMouseEvent *event) | |||||
142 |
|
142 | |||
143 | drag->setMimeData(mimeData); |
|
143 | drag->setMimeData(mimeData); | |
144 |
|
144 | |||
145 |
auto pixmap = QPixmap |
|
145 | auto pixmap = QPixmap{":/icones/time.png"}; | |
146 | render(&pixmap); |
|
146 | drag->setPixmap(pixmap.scaledToWidth(22)); | |
147 | drag->setPixmap(pixmap); |
|
|||
148 | drag->setHotSpot(impl->m_DragStartPosition); |
|
|||
149 |
|
147 | |||
150 | sqpApp->dragDropHelper().resetDragAndDrop(); |
|
148 | sqpApp->dragDropHelper().resetDragAndDrop(); | |
151 |
|
149 |
@@ -14,6 +14,8 | |||||
14 |
|
14 | |||
15 | Q_LOGGING_CATEGORY(LOG_VisualizationDragDropContainer, "VisualizationDragDropContainer") |
|
15 | Q_LOGGING_CATEGORY(LOG_VisualizationDragDropContainer, "VisualizationDragDropContainer") | |
16 |
|
16 | |||
|
17 | auto DRAGGED_MINIATURE_WIDTH = 200; // in pixels | |||
|
18 | ||||
17 | struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate { |
|
19 | struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate { | |
18 |
|
20 | |||
19 | QVBoxLayout *m_Layout; |
|
21 | QVBoxLayout *m_Layout; | |
@@ -34,18 +36,33 struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate { | |||||
34 |
|
36 | |||
35 | bool acceptMimeData(const QMimeData *data) const |
|
37 | bool acceptMimeData(const QMimeData *data) const | |
36 | { |
|
38 | { | |
37 | for (const auto &type : m_AcceptedMimeTypes.keys()) { |
|
39 | auto accepted = false; | |
38 | if (data->hasFormat(type) && m_AcceptMimeDataFun(data)) { |
|
40 | for (auto it = m_AcceptedMimeTypes.constBegin(); it != m_AcceptedMimeTypes.constEnd(); | |
39 | return true; |
|
41 | ++it) { | |
|
42 | const auto &type = it.key(); | |||
|
43 | const auto &behavior = it.value(); | |||
|
44 | ||||
|
45 | if (data->hasFormat(type)) { | |||
|
46 | if (behavior != DropBehavior::Forbidden) { | |||
|
47 | accepted = true; | |||
|
48 | } | |||
|
49 | else { | |||
|
50 | accepted = false; | |||
|
51 | break; | |||
|
52 | } | |||
40 | } |
|
53 | } | |
41 | } |
|
54 | } | |
42 |
|
55 | |||
43 | return false; |
|
56 | if (accepted) { | |
|
57 | accepted = m_AcceptMimeDataFun(data); | |||
|
58 | } | |||
|
59 | ||||
|
60 | return accepted; | |||
44 | } |
|
61 | } | |
45 |
|
62 | |||
46 | bool allowMergeForMimeData(const QMimeData *data) const |
|
63 | bool allowMergeForMimeData(const QMimeData *data) const | |
47 | { |
|
64 | { | |
48 |
|
|
65 | auto result = false; | |
49 | for (auto it = m_AcceptedMimeTypes.constBegin(); it != m_AcceptedMimeTypes.constEnd(); |
|
66 | for (auto it = m_AcceptedMimeTypes.constBegin(); it != m_AcceptedMimeTypes.constEnd(); | |
50 | ++it) { |
|
67 | ++it) { | |
51 |
|
68 | |||
@@ -106,7 +123,9 struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate { | |||||
106 |
|
123 | |||
107 | bool cursorIsInContainer(QWidget *container) const |
|
124 | bool cursorIsInContainer(QWidget *container) const | |
108 | { |
|
125 | { | |
109 |
|
|
126 | auto widgetUnderMouse = sqpApp->widgetAt(QCursor::pos()); | |
|
127 | return container->isAncestorOf(widgetUnderMouse) && widgetUnderMouse != container | |||
|
128 | && sqpApp->dragDropHelper().placeHolder().isAncestorOf(widgetUnderMouse); | |||
110 | } |
|
129 | } | |
111 |
|
130 | |||
112 | int countDragWidget(const QWidget *parent, bool onlyVisible = false) const |
|
131 | int countDragWidget(const QWidget *parent, bool onlyVisible = false) const | |
@@ -151,7 +170,7 void VisualizationDragDropContainer::insertDragWidget(int index, | |||||
151 | &VisualizationDragDropContainer::startDrag); |
|
170 | &VisualizationDragDropContainer::startDrag); | |
152 | } |
|
171 | } | |
153 |
|
172 | |||
154 |
void VisualizationDragDropContainer:: |
|
173 | void VisualizationDragDropContainer::setMimeType( | |
155 | const QString &mimeType, VisualizationDragDropContainer::DropBehavior behavior) |
|
174 | const QString &mimeType, VisualizationDragDropContainer::DropBehavior behavior) | |
156 | { |
|
175 | { | |
157 | impl->m_AcceptedMimeTypes[mimeType] = behavior; |
|
176 | impl->m_AcceptedMimeTypes[mimeType] = behavior; | |
@@ -183,14 +202,14 void VisualizationDragDropContainer::startDrag(VisualizationDragWidget *dragWidg | |||||
183 |
|
202 | |||
184 | // Note: The management of the drag object is done by Qt |
|
203 | // Note: The management of the drag object is done by Qt | |
185 | auto drag = new QDrag{dragWidget}; |
|
204 | auto drag = new QDrag{dragWidget}; | |
186 | drag->setHotSpot(dragPosition); |
|
|||
187 |
|
205 | |||
188 | auto mimeData = dragWidget->mimeData(); |
|
206 | auto mimeData = dragWidget->mimeData(); | |
189 | drag->setMimeData(mimeData); |
|
207 | drag->setMimeData(mimeData); | |
190 |
|
208 | |||
191 | auto pixmap = QPixmap(dragWidget->size()); |
|
209 | auto pixmap = QPixmap(dragWidget->size()); | |
192 | dragWidget->render(&pixmap); |
|
210 | dragWidget->render(&pixmap); | |
193 | drag->setPixmap(pixmap); |
|
211 | drag->setPixmap(pixmap.scaled(DRAGGED_MINIATURE_WIDTH, DRAGGED_MINIATURE_WIDTH, | |
|
212 | Qt::KeepAspectRatio, Qt::SmoothTransformation)); | |||
194 |
|
213 | |||
195 | auto image = pixmap.toImage(); |
|
214 | auto image = pixmap.toImage(); | |
196 | mimeData->setImageData(image); |
|
215 | mimeData->setImageData(image); | |
@@ -374,7 +393,7 void VisualizationDragDropContainer::VisualizationDragDropContainerPrivate::find | |||||
374 | auto &helper = sqpApp->dragDropHelper(); |
|
393 | auto &helper = sqpApp->dragDropHelper(); | |
375 |
|
394 | |||
376 | auto absPos = container->mapToGlobal(pos); |
|
395 | auto absPos = container->mapToGlobal(pos); | |
377 |
auto isOnPlaceHolder = sqpApp->widgetAt(absPos) |
|
396 | auto isOnPlaceHolder = helper.placeHolder().isAncestorOf(sqpApp->widgetAt(absPos)); | |
378 |
|
397 | |||
379 | if (countDragWidget(container, true) == 0) { |
|
398 | if (countDragWidget(container, true) == 0) { | |
380 | // Drop on an empty container, just add the placeHolder at the top |
|
399 | // Drop on an empty container, just add the placeHolder at the top |
@@ -79,13 +79,14 VisualizationTabWidget::VisualizationTabWidget(const QString &name, QWidget *par | |||||
79 | #endif |
|
79 | #endif | |
80 |
|
80 | |||
81 | ui->dragDropContainer->setPlaceHolderType(DragDropHelper::PlaceHolderType::Zone, "Zone"); |
|
81 | ui->dragDropContainer->setPlaceHolderType(DragDropHelper::PlaceHolderType::Zone, "Zone"); | |
82 |
ui->dragDropContainer->layout()->setContentsMargins(0, 0, 0, |
|
82 | ui->dragDropContainer->layout()->setContentsMargins(0, 0, 0, 12); | |
83 |
ui->dragDropContainer-> |
|
83 | ui->dragDropContainer->layout()->setSpacing(0); | |
84 | MIME_TYPE_GRAPH, VisualizationDragDropContainer::DropBehavior::Inserted); |
|
84 | ui->dragDropContainer->setMimeType(MIME_TYPE_GRAPH, | |
85 | ui->dragDropContainer->addAcceptedMimeType( |
|
85 | VisualizationDragDropContainer::DropBehavior::Inserted); | |
86 | MIME_TYPE_ZONE, VisualizationDragDropContainer::DropBehavior::Inserted); |
|
86 | ui->dragDropContainer->setMimeType(MIME_TYPE_ZONE, | |
87 | ui->dragDropContainer->addAcceptedMimeType( |
|
87 | VisualizationDragDropContainer::DropBehavior::Inserted); | |
88 | MIME_TYPE_VARIABLE_LIST, VisualizationDragDropContainer::DropBehavior::Inserted); |
|
88 | ui->dragDropContainer->setMimeType(MIME_TYPE_VARIABLE_LIST, | |
|
89 | VisualizationDragDropContainer::DropBehavior::Inserted); | |||
89 |
|
90 | |||
90 | ui->dragDropContainer->setAcceptMimeDataFunction([this](auto mimeData) { |
|
91 | ui->dragDropContainer->setAcceptMimeDataFunction([this](auto mimeData) { | |
91 | return sqpApp->dragDropHelper().checkMimeDataForVisualization(mimeData, |
|
92 | return sqpApp->dragDropHelper().checkMimeDataForVisualization(mimeData, |
@@ -102,12 +102,14 VisualizationZoneWidget::VisualizationZoneWidget(const QString &name, QWidget *p | |||||
102 | ui->zoneNameLabel->setText(name); |
|
102 | ui->zoneNameLabel->setText(name); | |
103 |
|
103 | |||
104 | ui->dragDropContainer->setPlaceHolderType(DragDropHelper::PlaceHolderType::Graph); |
|
104 | ui->dragDropContainer->setPlaceHolderType(DragDropHelper::PlaceHolderType::Graph); | |
105 |
ui->dragDropContainer-> |
|
105 | ui->dragDropContainer->setMimeType(MIME_TYPE_GRAPH, | |
106 |
|
|
106 | VisualizationDragDropContainer::DropBehavior::Inserted); | |
107 |
ui->dragDropContainer-> |
|
107 | ui->dragDropContainer->setMimeType( | |
108 | MIME_TYPE_VARIABLE_LIST, VisualizationDragDropContainer::DropBehavior::InsertedAndMerged); |
|
108 | MIME_TYPE_VARIABLE_LIST, VisualizationDragDropContainer::DropBehavior::InsertedAndMerged); | |
109 |
ui->dragDropContainer-> |
|
109 | ui->dragDropContainer->setMimeType(MIME_TYPE_TIME_RANGE, | |
110 |
|
|
110 | VisualizationDragDropContainer::DropBehavior::Merged); | |
|
111 | ui->dragDropContainer->setMimeType(MIME_TYPE_ZONE, | |||
|
112 | VisualizationDragDropContainer::DropBehavior::Forbidden); | |||
111 | ui->dragDropContainer->setAcceptMimeDataFunction([this](auto mimeData) { |
|
113 | ui->dragDropContainer->setAcceptMimeDataFunction([this](auto mimeData) { | |
112 | return sqpApp->dragDropHelper().checkMimeDataForVisualization(mimeData, |
|
114 | return sqpApp->dragDropHelper().checkMimeDataForVisualization(mimeData, | |
113 | ui->dragDropContainer); |
|
115 | ui->dragDropContainer); | |
@@ -332,6 +334,11 QMimeData *VisualizationZoneWidget::mimeData() const | |||||
332 | auto mimeData = new QMimeData; |
|
334 | auto mimeData = new QMimeData; | |
333 | mimeData->setData(MIME_TYPE_ZONE, QByteArray{}); |
|
335 | mimeData->setData(MIME_TYPE_ZONE, QByteArray{}); | |
334 |
|
336 | |||
|
337 | if (auto firstGraph = impl->firstGraph(this)) { | |||
|
338 | auto timeRangeData = TimeController::mimeDataForTimeRange(firstGraph->graphRange()); | |||
|
339 | mimeData->setData(MIME_TYPE_TIME_RANGE, timeRangeData); | |||
|
340 | } | |||
|
341 | ||||
335 | return mimeData; |
|
342 | return mimeData; | |
336 | } |
|
343 | } | |
337 |
|
344 |
@@ -27,7 +27,7 | |||||
27 | <number>0</number> |
|
27 | <number>0</number> | |
28 | </property> |
|
28 | </property> | |
29 | <property name="bottomMargin"> |
|
29 | <property name="bottomMargin"> | |
30 |
<number> |
|
30 | <number>6</number> | |
31 | </property> |
|
31 | </property> | |
32 | <item> |
|
32 | <item> | |
33 | <widget class="QWidget" name="infobar" native="true"> |
|
33 | <widget class="QWidget" name="infobar" native="true"> |
General Comments 0
You need to be logged in to leave comments.
Login now