History

Keep spinning on the bridge between js interface and the highlighting feature

Sam Gateau committed 8 years ago

Commit 3a0b2651 parent 6889c9d3 files · +74 −29Browse files

Showing the changes to interface/src/scripting/SelectionScriptingInterface.cpp (1 of 3 files). Show all

Unified · Split

interface/src/scripting/SelectionScriptingInterface.cpp+49−11
@@ -78,22 +78,28 @@ bool SelectionScriptingInterface::clearSelectedItemsList(const QString& listName · 77 unmodified lines
7878 }
7979
8080 bool SelectionScriptingInterface::enableListHighlight(const QString& listName, const QVariantMap& highlightStyleValues) {
81+ bool doSetupHandler = false;
82+
8183 auto highlightStyle = _highlightedListMap.find(listName);
8284 if (highlightStyle == _highlightedListMap.end()) {
8385 highlightStyle = _highlightedListMap.insert(listName, SelectionHighlightStyle());
86+ doSetupHandler = true;
8487 }
8588
8689 if (!(*highlightStyle).isBoundToList()) {
8790 GameplayObjects currentList = _selectedItemsListMap.value(listName);
8891 if (!currentList.getContainsData()) {
8992 _selectedItemsListMap.insert(listName, currentList);
90− highlightStyleChanged(listName);
93+ doSetupHandler = true;
9194 }
9295 (*highlightStyle).setBoundToList(true);
9396 }
9497
9598 (*highlightStyle).fromVariantMap(highlightStyleValues);
9699
100+ if (doSetupHandler) {
101+ setupHandler(listName);
102+ }
97103
98104 emit highlightStyleChanged(listName);
99105 return true;
@@ -190,12 +196,41 @@ bool SelectionScriptingInterface::removeListFromMap(const QString& listName) { · 90 unmodified lines
190196 }
191197 }
192198
199+void SelectionScriptingInterface::onSelectedItemsListChanged(const QString& listName) {
200+ emit selectedItemsListChanged(listName);
201+}
202+
203+void SelectionScriptingInterface::onHighlightStyleChanged(const QString& listName) {
204+ emit onHighlightStyleChanged(listName);
205+}
206+
207+void SelectionScriptingInterface::setupHandler(const QString& selectionName) {
208+ auto handler = _handlerMap.find(selectionName);
209+ if (handler == _handlerMap.end()) {
210+ handler = _handlerMap.insert(selectionName, new SelectionToSceneHandler());
211+ }
212+
213+
214+ (*handler)->initialize(selectionName);
215+
216+}
217+
193218
194219 SelectionToSceneHandler::SelectionToSceneHandler() {
195220 }
196221
197222 void SelectionToSceneHandler::initialize(const QString& listName) {
198223 _listName = listName;
224+
225+ connect(&(*DependencyManager::get<SelectionScriptingInterface>()), &SelectionScriptingInterface::selectedItemsListChanged, this, &SelectionToSceneHandler::selectedItemsListChanged);
226+ connect(&(*DependencyManager::get<SelectionScriptingInterface>()), &SelectionScriptingInterface::highlightStyleChanged, this, &SelectionToSceneHandler::highlightStyleChanged);
227+
228+ auto mainScene = qApp->getMain3DScene();
229+ if (mainScene) {
230+ render::Transaction transaction;
231+ transaction.resetSelectionHighlight(listName.toStdString(), DependencyManager::get<SelectionScriptingInterface>()->getHighlightStyle(listName));
232+ mainScene->enqueueTransaction(transaction);
233+ }
199234 }
200235
201236 void SelectionToSceneHandler::selectedItemsListChanged(const QString& listName) {
@@ -251,18 +286,20 @@ void SelectionToSceneHandler::updateSceneFromSelectedList() { · 49 unmodified lines
251286 }
252287
253288 void SelectionToSceneHandler::highlightStyleChanged(const QString& listName) {
254− auto mainScene = qApp->getMain3DScene();
255− if (mainScene) {
256− auto thisStyle = DependencyManager::get<SelectionScriptingInterface>()->getHighlightStyle(listName);
257− render::Transaction transaction;
258− render::ItemIDs finalList;
289+ if (listName == _listName) {
290+ auto mainScene = qApp->getMain3DScene();
291+ if (mainScene) {
292+ auto thisStyle = DependencyManager::get<SelectionScriptingInterface>()->getHighlightStyle(listName);
293+ render::Transaction transaction;
294+ render::ItemIDs finalList;
259295
260− transaction.resetSelectionHighlight(listName.toStdString(), thisStyle);
296+ transaction.resetSelectionHighlight(listName.toStdString(), thisStyle);
261297
262− mainScene->enqueueTransaction(transaction);
263− }
264− else {
265− qWarning() << "SelectionToSceneHandler::updateRendererSelectedList(), Unexpected null scene, possibly during application shutdown";
298+ mainScene->enqueueTransaction(transaction);
299+ }
300+ else {
301+ qWarning() << "SelectionToSceneHandler::updateRendererSelectedList(), Unexpected null scene, possibly during application shutdown";
302+ }
266303 }
267304 }
268305
@@ -300,6 +337,7 @@ bool SelectionHighlightStyle::fromVariantMap(const QVariantMap& properties) { · 31 unmodified lines
300337
301338 return true;
302339 }
340+
303341 QVariantMap SelectionHighlightStyle::toVariantMap() const {
304342 QVariantMap properties;
305343