@@ -0,0 +1,91 | |||||
|
1 | #ifndef SCIQLOP_MIMETYPESDEF_H | |||
|
2 | #define SCIQLOP_MIMETYPESDEF_H | |||
|
3 | ||||
|
4 | #include "CoreGlobal.h" | |||
|
5 | ||||
|
6 | #include <QByteArray> | |||
|
7 | #include <QDataStream> | |||
|
8 | #include <QMimeData> | |||
|
9 | #include <QString> | |||
|
10 | #include <QVariant> | |||
|
11 | ||||
|
12 | // ////////////////// // | |||
|
13 | // SciQlop Mime Types // | |||
|
14 | // ////////////////// // | |||
|
15 | ||||
|
16 | namespace MIME | |||
|
17 | { | |||
|
18 | inline QString const MIME_TYPE_GRAPH = | |||
|
19 | QStringLiteral("application/x.sciqlop.graph"); | |||
|
20 | inline QString const MIME_TYPE_ZONE = | |||
|
21 | QStringLiteral("application/x.sciqlop.zone"); | |||
|
22 | inline QString const MIME_TYPE_VARIABLE_LIST = | |||
|
23 | QStringLiteral("application/x.sciqlop.var-list"); | |||
|
24 | inline QString const MIME_TYPE_PRODUCT_LIST = | |||
|
25 | QStringLiteral("application/x.sciqlop.product-list"); | |||
|
26 | inline QString const MIME_TYPE_TIME_RANGE = | |||
|
27 | QStringLiteral("application/x.sciqlop.time-range"); | |||
|
28 | inline QString const MIME_TYPE_SELECTION_ZONE = | |||
|
29 | QStringLiteral("application/x.sciqlop.selection-zone"); | |||
|
30 | inline QString const MIME_TYPE_EVENT_LIST = | |||
|
31 | QStringLiteral("application/x.sciqlop.event-list"); | |||
|
32 | inline QString const MIME_TYPE_SOURCE_CATALOGUE_LIST = | |||
|
33 | QStringLiteral("application/x.sciqlop.source-catalogue-list"); | |||
|
34 | ||||
|
35 | enum class IDS | |||
|
36 | { | |||
|
37 | GRAPH, | |||
|
38 | ZONE, | |||
|
39 | VARIABLE_LIST, | |||
|
40 | PRODUCT_LIST, | |||
|
41 | TIME_RANGE, | |||
|
42 | SELECTION_ZONE, | |||
|
43 | EVENT_LIST, | |||
|
44 | SOURCE_CATALOGUE_LIST | |||
|
45 | }; | |||
|
46 | ||||
|
47 | inline std::unordered_map<IDS, QString> const MIME_TYPES = { | |||
|
48 | {IDS::GRAPH, MIME_TYPE_GRAPH}, | |||
|
49 | {IDS::ZONE, MIME_TYPE_ZONE}, | |||
|
50 | {IDS::VARIABLE_LIST, MIME_TYPE_VARIABLE_LIST}, | |||
|
51 | {IDS::PRODUCT_LIST, MIME_TYPE_PRODUCT_LIST}, | |||
|
52 | {IDS::TIME_RANGE, MIME_TYPE_TIME_RANGE}, | |||
|
53 | {IDS::SELECTION_ZONE, MIME_TYPE_SELECTION_ZONE}, | |||
|
54 | {IDS::EVENT_LIST, MIME_TYPE_EVENT_LIST}, | |||
|
55 | {IDS::SOURCE_CATALOGUE_LIST, MIME_TYPE_SOURCE_CATALOGUE_LIST}}; | |||
|
56 | ||||
|
57 | inline QVariantList decode(const QByteArray& mimeData) | |||
|
58 | { | |||
|
59 | QDataStream stream{mimeData}; | |||
|
60 | QVariantList productList; | |||
|
61 | stream >> productList; | |||
|
62 | return productList; | |||
|
63 | } | |||
|
64 | ||||
|
65 | inline QByteArray encode(const QVariantList& data) | |||
|
66 | { | |||
|
67 | QByteArray encodedData; | |||
|
68 | QDataStream stream{&encodedData, QIODevice::WriteOnly}; | |||
|
69 | stream << data; | |||
|
70 | return encodedData; | |||
|
71 | } | |||
|
72 | ||||
|
73 | inline QByteArray encode(const QString& data) | |||
|
74 | { | |||
|
75 | QByteArray encodedData; | |||
|
76 | QDataStream stream{&encodedData, QIODevice::WriteOnly}; | |||
|
77 | stream << (QVariantList{} << QVariant{data}); | |||
|
78 | return encodedData; | |||
|
79 | } | |||
|
80 | ||||
|
81 | // override mimeData in corresponding object source code | |||
|
82 | template<typename T> QMimeData* mimeData(const T& object) = delete; | |||
|
83 | ||||
|
84 | template<IDS id> QVariantList fromMimeData(const QMimeData* mime) | |||
|
85 | { | |||
|
86 | return decode(mime->data(MIME_TYPES.at(id))); | |||
|
87 | } | |||
|
88 | ||||
|
89 | } // namespace MIME | |||
|
90 | ||||
|
91 | #endif // SCIQLOP_MIMETYPESDEF_H |
@@ -4,11 +4,15 | |||||
4 | #include "CoreGlobal.h" |
|
4 | #include "CoreGlobal.h" | |
5 |
|
5 | |||
6 | #include <Common/spimpl.h> |
|
6 | #include <Common/spimpl.h> | |
|
7 | #include <MimeTypes/MimeTypes.h> | |||
|
8 | #include <QMimeData> | |||
7 | #include <QUuid> |
|
9 | #include <QUuid> | |
8 | #include <QVariant> |
|
10 | #include <QVariant> | |
9 | #include <QVector> |
|
11 | #include <QVector> | |
|
12 | #include <algorithm> | |||
10 | #include <iomanip> |
|
13 | #include <iomanip> | |
11 | #include <iostream> |
|
14 | #include <iostream> | |
|
15 | #include <iterator> | |||
12 | #include <optional> |
|
16 | #include <optional> | |
13 | #include <trees/algorithms.hpp> |
|
17 | #include <trees/algorithms.hpp> | |
14 |
|
18 | |||
@@ -45,8 +49,9 public: | |||||
45 | /// Key associated with a unique id of the plugin |
|
49 | /// Key associated with a unique id of the plugin | |
46 | static const QString ID_DATA_KEY; |
|
50 | static const QString ID_DATA_KEY; | |
47 |
|
51 | |||
48 | //explicit DataSourceItem(DataSourceItemType type, const QString& name); |
|
52 | // explicit DataSourceItem(DataSourceItemType type, const QString& name); | |
49 |
explicit DataSourceItem(DataSourceItemType type, const QString& name, |
|
53 | explicit DataSourceItem(DataSourceItemType type, const QString& name, | |
|
54 | QVariantHash data = {}, | |||
50 | std::optional<QUuid> sourceUUID = std::nullopt); |
|
55 | std::optional<QUuid> sourceUUID = std::nullopt); | |
51 |
|
56 | |||
52 | std::unique_ptr<DataSourceItem> clone() const; |
|
57 | std::unique_ptr<DataSourceItem> clone() const; | |
@@ -140,6 +145,7 public: | |||||
140 | QString name() const noexcept; |
|
145 | QString name() const noexcept; | |
141 | QString icon() const noexcept; |
|
146 | QString icon() const noexcept; | |
142 | void setIcon(const QString& iconName); |
|
147 | void setIcon(const QString& iconName); | |
|
148 | QString path() const noexcept; | |||
143 |
|
149 | |||
144 | /** |
|
150 | /** | |
145 | * Get the item's parent |
|
151 | * Get the item's parent | |
@@ -201,4 +207,18 private: | |||||
201 | spimpl::unique_impl_ptr<DataSourceItemPrivate> impl; |
|
207 | spimpl::unique_impl_ptr<DataSourceItemPrivate> impl; | |
202 | }; |
|
208 | }; | |
203 |
|
209 | |||
|
210 | namespace MIME | |||
|
211 | { | |||
|
212 | inline QMimeData* mimeData(const std::vector<DataSourceItem*>& items) | |||
|
213 | { | |||
|
214 | QVariantList path_list; | |||
|
215 | std::transform(std::cbegin(items), std::cend(items), | |||
|
216 | std::back_inserter(path_list), | |||
|
217 | [](const auto& item) { return item->path(); }); | |||
|
218 | QMimeData* m = new QMimeData; | |||
|
219 | m->setData(MIME::MIME_TYPE_PRODUCT_LIST, MIME::encode(path_list)); | |||
|
220 | return m; | |||
|
221 | } | |||
|
222 | } // namespace MIME | |||
|
223 | ||||
204 | #endif // SCIQLOP_DATASOURCEITEMMODEL_H |
|
224 | #endif // SCIQLOP_DATASOURCEITEMMODEL_H |
@@ -28,8 +28,8 | |||||
28 | #include "DataSourceItem.h" |
|
28 | #include "DataSourceItem.h" | |
29 |
|
29 | |||
30 | #include <QAbstractItemModel> |
|
30 | #include <QAbstractItemModel> | |
31 | #include <QObject> |
|
|||
32 | #include <QMimeData> |
|
31 | #include <QMimeData> | |
|
32 | #include <QObject> | |||
33 |
|
33 | |||
34 | class DataSources : public QAbstractItemModel |
|
34 | class DataSources : public QAbstractItemModel | |
35 | { |
|
35 | { | |
@@ -42,7 +42,7 public: | |||||
42 | }; |
|
42 | }; | |
43 |
|
43 | |||
44 | public: |
|
44 | public: | |
45 |
DataSources() : _root(new DataSourceItem(DataSourceItemType::NODE, " |
|
45 | DataSources() : _root(new DataSourceItem(DataSourceItemType::NODE, "")) {} | |
46 | ~DataSources() { delete _root; } |
|
46 | ~DataSources() { delete _root; } | |
47 |
|
47 | |||
48 | virtual QVariant data(const QModelIndex& index, int role) const final; |
|
48 | virtual QVariant data(const QModelIndex& index, int role) const final; | |
@@ -67,8 +67,6 public: | |||||
67 | void updateNodeMetaData(const QString& path, |
|
67 | void updateNodeMetaData(const QString& path, | |
68 | const QMap<QString, QString>& metaData) noexcept; |
|
68 | const QMap<QString, QString>& metaData) noexcept; | |
69 |
|
69 | |||
70 | void createVariable(const DataSourceItem& item); |
|
|||
71 |
|
||||
72 | void addIcon(const QString& name, QVariant icon) |
|
70 | void addIcon(const QString& name, QVariant icon) | |
73 | { |
|
71 | { | |
74 | _icons[name] = std::move(icon); |
|
72 | _icons[name] = std::move(icon); | |
@@ -76,6 +74,10 public: | |||||
76 |
|
74 | |||
77 | void setIcon(const QString& path, const QString& iconName); |
|
75 | void setIcon(const QString& path, const QString& iconName); | |
78 |
|
76 | |||
|
77 | public Q_SLOTS: | |||
|
78 | void createVariable(const DataSourceItem& item); | |||
|
79 | void createVariable(const QString& path); | |||
|
80 | ||||
79 | Q_SIGNALS: |
|
81 | Q_SIGNALS: | |
80 | void createVariable(const QString& variableName, |
|
82 | void createVariable(const QString& variableName, | |
81 | const QVariantHash& variableMetadata, |
|
83 | const QVariantHash& variableMetadata, |
@@ -66,7 +66,7 public: | |||||
66 | } |
|
66 | } | |
67 |
|
67 | |||
68 | signals: |
|
68 | signals: | |
69 |
void createVariable(const Q |
|
69 | void createVariable(const QString& productPath); | |
70 | void asyncChangeRange(const std::shared_ptr<Variable2>& variable, |
|
70 | void asyncChangeRange(const std::shared_ptr<Variable2>& variable, | |
71 | const DateTimeRange& r); |
|
71 | const DateTimeRange& r); | |
72 | public slots: |
|
72 | public slots: |
@@ -7,11 +7,11 cpp_utils_dep = dependency('cpp_utils', fallback:['cpp_utils','cpp_utils_dep']) | |||||
7 | core_moc_headers = [ |
|
7 | core_moc_headers = [ | |
8 | './include/Common/spimpl.h', |
|
8 | './include/Common/spimpl.h', | |
9 | './include/Common/DateUtils.h', |
|
9 | './include/Common/DateUtils.h', | |
10 | './include/Common/MimeTypesDef.h', |
|
|||
11 | './include/Common/SignalWaiter.h', |
|
10 | './include/Common/SignalWaiter.h', | |
12 | './include/Common/debug.h', |
|
11 | './include/Common/debug.h', | |
13 | './include/Common/MetaTypes.h', |
|
12 | './include/Common/MetaTypes.h', | |
14 | './include/Common/SortUtils.h', |
|
13 | './include/Common/SortUtils.h', | |
|
14 | './include/MimeTypes/MimeTypes.h', | |||
15 | './include/Data/DateTimeRangeHelper.h', |
|
15 | './include/Data/DateTimeRangeHelper.h', | |
16 | './include/Data/ScalarTimeSerie.h', |
|
16 | './include/Data/ScalarTimeSerie.h', | |
17 | './include/Data/DateTimeRange.h', |
|
17 | './include/Data/DateTimeRange.h', | |
@@ -29,9 +29,7 core_moc_headers = [ | |||||
29 | './include/Network/Downloader.h', |
|
29 | './include/Network/Downloader.h', | |
30 | './include/Settings/SqpSettingsDefs.h', |
|
30 | './include/Settings/SqpSettingsDefs.h', | |
31 | './include/Settings/ISqpSettingsBindable.h', |
|
31 | './include/Settings/ISqpSettingsBindable.h', | |
32 | './include/DataSource/DataSourceController.h', |
|
|||
33 | './include/DataSource/datasources.h', |
|
32 | './include/DataSource/datasources.h', | |
34 | './include/DataSource/DataSourcesFilter.h', |
|
|||
35 | './include/DataSource/DataSourceItem.h', |
|
33 | './include/DataSource/DataSourceItem.h', | |
36 | './include/DataSource/DataSourceItemAction.h', |
|
34 | './include/DataSource/DataSourceItemAction.h', | |
37 | './include/DataSource/DataSourceItemMergeHelper.h', |
|
35 | './include/DataSource/DataSourceItemMergeHelper.h', | |
@@ -53,7 +51,7 core_moc_sources = ['src/Network/Downloader.cpp'] | |||||
53 |
|
51 | |||
54 | core_moc_files = qt5.preprocess(moc_headers : core_moc_headers, moc_sources: core_moc_sources) |
|
52 | core_moc_files = qt5.preprocess(moc_headers : core_moc_headers, moc_sources: core_moc_sources) | |
55 |
|
53 | |||
56 |
core_sources = ['./src/ |
|
54 | core_sources = ['./src/MimeTypes/MimeTypes.cpp', | |
57 | './src/Common/SignalWaiter.cpp', |
|
55 | './src/Common/SignalWaiter.cpp', | |
58 | './src/Common/DateUtils.cpp', |
|
56 | './src/Common/DateUtils.cpp', | |
59 | './src/Network/Downloader.cpp', |
|
57 | './src/Network/Downloader.cpp', | |
@@ -62,9 +60,7 core_sources = ['./src/Common/MimeTypesDef.cpp', | |||||
62 | './src/DataSource/DataSourceItemAction.cpp', |
|
60 | './src/DataSource/DataSourceItemAction.cpp', | |
63 | './src/DataSource/DataSourceItemMergeHelper.cpp', |
|
61 | './src/DataSource/DataSourceItemMergeHelper.cpp', | |
64 | './src/DataSource/DataSourceItem.cpp', |
|
62 | './src/DataSource/DataSourceItem.cpp', | |
65 | './src/DataSource/DataSourceController.cpp', |
|
|||
66 | './src/DataSource/datasources.cpp', |
|
63 | './src/DataSource/datasources.cpp', | |
67 | './src/DataSource/DataSourcesFilter.cpp', |
|
|||
68 | './src/Time/TimeController.cpp', |
|
64 | './src/Time/TimeController.cpp', | |
69 | './src/PluginManager/PluginManager.cpp', |
|
65 | './src/PluginManager/PluginManager.cpp', | |
70 | './src/Version.cpp', |
|
66 | './src/Version.cpp', |
@@ -149,6 +149,21 void DataSourceItem::setIcon(const QString& iconName) | |||||
149 | impl->setIcon(iconName); |
|
149 | impl->setIcon(iconName); | |
150 | } |
|
150 | } | |
151 |
|
151 | |||
|
152 | QString DataSourceItem::path() const noexcept | |||
|
153 | { | |||
|
154 | std::vector<QString> path_list; | |||
|
155 | path_list.push_back(name()); | |||
|
156 | auto node= parentItem(); | |||
|
157 | while( node!=nullptr) | |||
|
158 | { | |||
|
159 | path_list.push_back(node->name()); | |||
|
160 | node = node->parentItem(); | |||
|
161 | } | |||
|
162 | QString path; | |||
|
163 | std::for_each(path_list.crbegin(),path_list.crend(),[&path](const auto& name){path.append('/'); path.append(name);}); | |||
|
164 | return path; | |||
|
165 | } | |||
|
166 | ||||
152 | DataSourceItem* DataSourceItem::parentItem() const noexcept |
|
167 | DataSourceItem* DataSourceItem::parentItem() const noexcept | |
153 | { |
|
168 | { | |
154 | return impl->m_Parent; |
|
169 | return impl->m_Parent; |
@@ -24,8 +24,8 | |||||
24 |
|
24 | |||
25 | #include "DataSource/datasources.h" |
|
25 | #include "DataSource/datasources.h" | |
26 |
|
26 | |||
27 | #include "Common/MimeTypesDef.h" |
|
|||
28 | #include "DataSource/DataSourceItemAction.h" |
|
27 | #include "DataSource/DataSourceItemAction.h" | |
|
28 | #include "MimeTypes/MimeTypes.h" | |||
29 | #include "containers/algorithms.hpp" |
|
29 | #include "containers/algorithms.hpp" | |
30 |
|
30 | |||
31 | #include <QDataStream> |
|
31 | #include <QDataStream> | |
@@ -118,8 +118,6 make_product_item(const QString& name, QVariantHash& metaData, | |||||
118 | // Adds plugin name to product metadata |
|
118 | // Adds plugin name to product metadata | |
119 | // TODO re-consider adding a name attribute to DataSourceItem class |
|
119 | // TODO re-consider adding a name attribute to DataSourceItem class | |
120 | result->setData(DataSourceItem::PLUGIN_DATA_KEY, DATA_SOURCE_NAME); |
|
120 | result->setData(DataSourceItem::PLUGIN_DATA_KEY, DATA_SOURCE_NAME); | |
121 | // result->setData(DataSourceItem::ID_DATA_KEY, |
|
|||
122 | // metaData.value(DataSourceItem::NAME_DATA_KEY)); |
|
|||
123 |
|
121 | |||
124 | // Add action to load product from DataSources |
|
122 | // Add action to load product from DataSources | |
125 | result->addAction(std::make_unique<DataSourceItemAction>( |
|
123 | result->addAction(std::make_unique<DataSourceItemAction>( | |
@@ -154,25 +152,17 QVariant DataSources::data(const QModelIndex& index, int role) const | |||||
154 |
|
152 | |||
155 | QMimeData* DataSources::mimeData(const QModelIndexList& indexes) const |
|
153 | QMimeData* DataSources::mimeData(const QModelIndexList& indexes) const | |
156 | { |
|
154 | { | |
157 | QVariantList productData; |
|
155 | std::vector<DataSourceItem*> items; | |
158 | std::for_each(std::cbegin(indexes), std::cend(indexes), |
|
156 | std::for_each(std::cbegin(indexes), std::cend(indexes), | |
159 |
[& |
|
157 | [&items](const auto& index) { | |
160 | if(index.isValid()) |
|
158 | if(index.isValid()) | |
161 | { |
|
159 | { | |
162 | DataSourceItem* item = |
|
160 | DataSourceItem* item = | |
163 | static_cast<DataSourceItem*>(index.internalPointer()); |
|
161 | static_cast<DataSourceItem*>(index.internalPointer()); | |
164 | if(item->isProductOrComponent()) |
|
162 | if(item->isProductOrComponent()) { items.push_back(item); } | |
165 | { productData.append(item->data()); } |
|
|||
166 | } |
|
163 | } | |
167 | }); |
|
164 | }); | |
168 | // TODO refactor this later |
|
165 | return MIME::mimeData(items); | |
169 | // maybe just an encode function |
|
|||
170 | QByteArray encodedData; |
|
|||
171 | QDataStream stream{&encodedData, QIODevice::WriteOnly}; |
|
|||
172 | stream << productData; |
|
|||
173 | auto mimeData = new QMimeData; |
|
|||
174 | mimeData->setData(MIME_TYPE_PRODUCT_LIST, encodedData); |
|
|||
175 | return mimeData; |
|
|||
176 | } |
|
166 | } | |
177 |
|
167 | |||
178 | int DataSources::columnCount(const QModelIndex& parent) const |
|
168 | int DataSources::columnCount(const QModelIndex& parent) const | |
@@ -281,6 +271,12 void DataSources::createVariable(const DataSourceItem& item) | |||||
281 | } |
|
271 | } | |
282 | } |
|
272 | } | |
283 |
|
273 | |||
|
274 | void DataSources::createVariable(const QString& path) | |||
|
275 | { | |||
|
276 | auto node = walk_tree(path, _root); | |||
|
277 | if(node != nullptr) { createVariable(*node); } | |||
|
278 | } | |||
|
279 | ||||
284 | void DataSources::setIcon(const QString& path, const QString& iconName) |
|
280 | void DataSources::setIcon(const QString& path, const QString& iconName) | |
285 | { |
|
281 | { | |
286 | auto node = walk_tree(path, _root); |
|
282 | auto node = walk_tree(path, _root); |
@@ -1,9 +1,8 | |||||
1 | #include <Common/DateUtils.h> |
|
1 | #include <Common/DateUtils.h> | |
2 |
#include < |
|
2 | #include <MimeTypes/MimeTypes.h> | |
3 | #include <cpp_utils_qt/cpp_utils_qt.hpp> |
|
3 | #include <cpp_utils_qt/cpp_utils_qt.hpp> | |
4 | #include <strings/algorithms.hpp> |
|
4 | #include <strings/algorithms.hpp> | |
5 | #include <containers/algorithms.hpp> |
|
5 | #include <containers/algorithms.hpp> | |
6 | #include <DataSource/DataSourceController.h> |
|
|||
7 | #include <QMimeData> |
|
6 | #include <QMimeData> | |
8 | #include <QSize> |
|
7 | #include <QSize> | |
9 | #include <QTimer> |
|
8 | #include <QTimer> | |
@@ -166,7 +165,7 Qt::DropActions VariableModel2::supportedDragActions() const | |||||
166 |
|
165 | |||
167 | QStringList VariableModel2::mimeTypes() const |
|
166 | QStringList VariableModel2::mimeTypes() const | |
168 | { |
|
167 | { | |
169 | return {MIME_TYPE_VARIABLE_LIST, MIME_TYPE_TIME_RANGE}; |
|
168 | return {MIME::MIME_TYPE_VARIABLE_LIST, MIME::MIME_TYPE_TIME_RANGE}; | |
170 | } |
|
169 | } | |
171 |
|
170 | |||
172 | QMimeData* VariableModel2::mimeData(const QModelIndexList& indexes) const |
|
171 | QMimeData* VariableModel2::mimeData(const QModelIndexList& indexes) const | |
@@ -193,13 +192,13 QMimeData* VariableModel2::mimeData(const QModelIndexList& indexes) const | |||||
193 | } |
|
192 | } | |
194 |
|
193 | |||
195 | auto variablesEncodedData = Variable2::mimeData(variables); |
|
194 | auto variablesEncodedData = Variable2::mimeData(variables); | |
196 | mimeData->setData(MIME_TYPE_VARIABLE_LIST, variablesEncodedData); |
|
195 | mimeData->setData(MIME::MIME_TYPE_VARIABLE_LIST, variablesEncodedData); | |
197 |
|
196 | |||
198 | if(variables.size() == 1) |
|
197 | if(variables.size() == 1) | |
199 | { |
|
198 | { | |
200 | // No time range MIME data if multiple variables are dragged |
|
199 | // No time range MIME data if multiple variables are dragged | |
201 | auto timeEncodedData = TimeController::mimeDataForTimeRange(firstTimeRange); |
|
200 | auto timeEncodedData = TimeController::mimeDataForTimeRange(firstTimeRange); | |
202 | mimeData->setData(MIME_TYPE_TIME_RANGE, timeEncodedData); |
|
201 | mimeData->setData(MIME::MIME_TYPE_TIME_RANGE, timeEncodedData); | |
203 | } |
|
202 | } | |
204 |
|
203 | |||
205 | return mimeData; |
|
204 | return mimeData; | |
@@ -211,9 +210,9 bool VariableModel2::canDropMimeData(const QMimeData* data, | |||||
211 | { |
|
210 | { | |
212 | Q_UNUSED(column); |
|
211 | Q_UNUSED(column); | |
213 | // drop of a product |
|
212 | // drop of a product | |
214 | return data->hasFormat(MIME_TYPE_PRODUCT_LIST) || |
|
213 | return data->hasFormat(MIME::MIME_TYPE_PRODUCT_LIST) || | |
215 |
|
|
214 | (data->hasFormat(MIME::MIME_TYPE_TIME_RANGE) && parent.isValid() && | |
216 |
|
|
215 | !data->hasFormat(MIME::MIME_TYPE_VARIABLE_LIST)); | |
217 | } |
|
216 | } | |
218 |
|
217 | |||
219 | bool VariableModel2::dropMimeData(const QMimeData* data, Qt::DropAction action, |
|
218 | bool VariableModel2::dropMimeData(const QMimeData* data, Qt::DropAction action, | |
@@ -222,23 +221,20 bool VariableModel2::dropMimeData(const QMimeData* data, Qt::DropAction action, | |||||
222 | { |
|
221 | { | |
223 | auto dropDone = false; |
|
222 | auto dropDone = false; | |
224 |
|
223 | |||
225 | if(data->hasFormat(MIME_TYPE_PRODUCT_LIST)) |
|
224 | if(data->hasFormat(MIME::MIME_TYPE_PRODUCT_LIST)) | |
226 | { |
|
225 | { | |
227 | auto productList = DataSourceController::productsDataForMimeData( |
|
226 | auto productList = MIME::fromMimeData<MIME::IDS::PRODUCT_LIST>(data); | |
228 | data->data(MIME_TYPE_PRODUCT_LIST)); |
|
227 | for(auto product : productList) | |
229 |
|
||||
230 | for(auto metaData : productList) |
|
|||
231 | { |
|
228 | { | |
232 |
emit createVariable( |
|
229 | emit createVariable(product.toString()); | |
233 | } |
|
230 | } | |
234 |
|
||||
235 | dropDone = true; |
|
231 | dropDone = true; | |
236 | } |
|
232 | } | |
237 | else if(data->hasFormat(MIME_TYPE_TIME_RANGE) && parent.isValid()) |
|
233 | else if(data->hasFormat(MIME::MIME_TYPE_TIME_RANGE) && parent.isValid()) | |
238 | { |
|
234 | { | |
239 | auto variable = _variables[parent.row()]; |
|
235 | auto variable = _variables[parent.row()]; | |
240 | auto range = |
|
236 | auto range = | |
241 |
|
|
237 | TimeController::timeRangeForMimeData(data->data(MIME::MIME_TYPE_TIME_RANGE)); | |
242 |
|
238 | |||
243 | emit asyncChangeRange(variable, range); |
|
239 | emit asyncChangeRange(variable, range); | |
244 |
|
240 |
@@ -1,4 +1,3 | |||||
1 | #include "DataSource/DataSourcesFilter.h" |
|
|||
2 |
|
|
1 | #include "DataSource/datasources.h" | |
3 | #include "TestProviders.h" |
|
2 | #include "TestProviders.h" | |
4 |
|
3 |
@@ -19,14 +19,6 tests = [ | |||||
19 | 'deps': [sciqlop_core, qt5test] |
|
19 | 'deps': [sciqlop_core, qt5test] | |
20 | }, |
|
20 | }, | |
21 | { |
|
21 | { | |
22 | 'name':'TestDataSourceController', |
|
|||
23 | 'sources': [ |
|
|||
24 | 'DataSource/TestDataSourceController.cpp', |
|
|||
25 | 'DataSource/DataSourceItemBuilder.cpp' |
|
|||
26 | ], |
|
|||
27 | 'deps': [sciqlop_core, qt5test] |
|
|||
28 | }, |
|
|||
29 | { |
|
|||
30 | 'name':'TestDataSources', |
|
22 | 'name':'TestDataSources', | |
31 | 'sources': [ |
|
23 | 'sources': [ | |
32 | 'DataSource/TestDataSources.cpp' |
|
24 | 'DataSource/TestDataSources.cpp' |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now