changeset 163:ec196bd2f068

Use new async transform method in Document to get multiple additional layers from local analysis
author Chris Cannam
date Wed, 29 Jan 2014 17:34:28 +0000
parents cc9aa8f4fceb
children 62ceae757fe0
files .hgsubstate src/Analyser.cpp src/Analyser.h
diffstat 3 files changed, 25 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/.hgsubstate	Tue Jan 28 18:34:11 2014 +0000
+++ b/.hgsubstate	Wed Jan 29 17:34:28 2014 +0000
@@ -1,5 +1,5 @@
 236814e07bd07473958c1ff89103124536a0c3c8 dataquay
 27d4e7152c954bf3c4387319db088fb3cd02436b sv-dependency-builds
-d2c13ec0f1482e003d86c0ba3f7c5e5fbae6de08 svapp
-4dce43294740dc971bf16d2b98164097749bf814 svcore
+f72d58d1ccb0736f4ab40853986d5952e0dd8321 svapp
+a2689db084f49daf0dcac1bea13d33c51f600266 svcore
 5f9c0147d1d6302edac372e4d5747ae615d57638 svgui
--- a/src/Analyser.cpp	Tue Jan 28 18:34:11 2014 +0000
+++ b/src/Analyser.cpp	Wed Jan 29 17:34:28 2014 +0000
@@ -35,6 +35,8 @@
 
 #include <QSettings>
 
+using std::vector;
+
 Analyser::Analyser() :
     m_document(0),
     m_fileModel(0),
@@ -267,17 +269,24 @@
 
     transforms.push_back(t);
 
-    std::vector<Layer *> layers =
-        m_document->createDerivedLayers(transforms, m_fileModel);
+    m_document->createDerivedLayersAsync(transforms, m_fileModel, this);
 
-    std::cerr << "Analyser::addTestCandidates: Have " << layers.size() << " layer(s)" << std::endl;
+    return "";
+}
 
-    for (int i = 0; i < (int)layers.size(); ++i) {
-        TimeValueLayer *t = qobject_cast<TimeValueLayer *>(layers[i]);
+void
+Analyser::layersCreated(vector<Layer *> primary,
+                        vector<Layer *> additional)
+{
+    for (int i = 0; i < (int)primary.size(); ++i) {
+        TimeValueLayer *t = qobject_cast<TimeValueLayer *>(primary[i]);
         if (t) m_document->addLayerToView(m_pane, t);
     }
 
-    return "";
+    for (int i = 0; i < (int)additional.size(); ++i) {
+        TimeValueLayer *t = qobject_cast<TimeValueLayer *>(additional[i]);
+        if (t) m_document->addLayerToView(m_pane, t);
+    }
 }
 
 void
--- a/src/Analyser.h	Tue Jan 28 18:34:11 2014 +0000
+++ b/src/Analyser.h	Wed Jan 29 17:34:28 2014 +0000
@@ -19,16 +19,19 @@
 #include <QObject>
 
 #include <map>
+#include <vector>
+
+#include "framework/Document.h"
 
 class WaveFileModel;
 class Pane;
 class PaneStack;
-class Document;
 class Layer;
 class TimeValueLayer;
 class Layer;
 
-class Analyser : public QObject
+class Analyser : public QObject,
+                 public Document::LayerCreationHandler
 {
     Q_OBJECT
 
@@ -95,6 +98,9 @@
 
     QString addTestCandidates();
 
+    // Document::LayerCreationHandler method
+    void layersCreated(std::vector<Layer *>, std::vector<Layer *>);
+
     void saveState(Component c) const;
     void loadState(Component c);
 };