diff data/model/SparseOneDimensionalModel.h @ 420:50a956688baa

* reorganise tabular data editor model support
author Chris Cannam
date Wed, 11 Jun 2008 16:13:25 +0000
parents 5858cc462d0a
children 4caa28a0a8a2
line wrap: on
line diff
--- a/data/model/SparseOneDimensionalModel.h	Wed Jun 11 12:54:18 2008 +0000
+++ b/data/model/SparseOneDimensionalModel.h	Wed Jun 11 16:13:25 2008 +0000
@@ -95,7 +95,8 @@
         return "<plugin program=\"tap\"/>";
     }
 
-    int getIndexOf(const Point &point) {
+    int getIndexOf(const Point &point)
+    {
 	// slow
 	int i = 0;
 	Point::Comparator comparator;
@@ -107,6 +108,47 @@
     }
 
     QString getTypeName() const { return tr("Sparse 1-D"); }
+
+    /**
+     * TabularModel methods.  
+     */
+    
+    virtual int getColumnCount() const
+    {
+        return 3;
+    }
+
+    virtual QString getHeading(int column) const
+    {
+        switch (column) {
+        case 0: return tr("Time");
+        case 1: return tr("Frame");
+        case 2: return tr("Label");
+        default: return tr("Unknown");
+        }
+    }
+
+    virtual QVariant getData(int row, int column, int role) const
+    {
+        if (role != Qt::EditRole && role != Qt::DisplayRole) return QVariant();
+        PointListIterator i = getPointListIteratorForRow(row);
+        if (i == m_points.end()) return QVariant();
+
+        switch (column) {
+        case 0: {
+            RealTime rt = RealTime::frame2RealTime(i->frame, getSampleRate());
+            return QVariant(rt.toText().c_str());
+        }
+        case 1: return QVariant(int(i->frame));
+        case 2: return QVariant(i->label);
+        default: return QVariant();
+        }
+    }
+
+    virtual bool isColumnTimeValue(int column) const
+    {
+        return (column < 2); 
+    }
 };
 
 #endif