annotate data/model/ModelDataTableModel.h @ 425:f5e8f12d2e58

* Add audio device selection to preferences * Add (not yet functional) insert, delete, edit buttons to data edit window * Add proper set methods for time fields in data edit window (using general sparse model base class)
author Chris Cannam
date Fri, 13 Jun 2008 21:09:43 +0000
parents 4caa28a0a8a2
children 2386582f67cd
rev   line source
Chris@413 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@413 2
Chris@413 3 /*
Chris@413 4 Sonic Visualiser
Chris@413 5 An audio file viewer and annotation editor.
Chris@413 6 Centre for Digital Music, Queen Mary, University of London.
Chris@413 7 This file copyright 2008 QMUL.
Chris@413 8
Chris@413 9 This program is free software; you can redistribute it and/or
Chris@413 10 modify it under the terms of the GNU General Public License as
Chris@413 11 published by the Free Software Foundation; either version 2 of the
Chris@413 12 License, or (at your option) any later version. See the file
Chris@413 13 COPYING included with this distribution for more information.
Chris@413 14 */
Chris@413 15
Chris@413 16 #ifndef _MODEL_DATA_TABLE_MODEL_H_
Chris@413 17 #define _MODEL_DATA_TABLE_MODEL_H_
Chris@413 18
Chris@413 19 #include <QAbstractItemModel>
Chris@413 20
Chris@420 21 #include <vector>
Chris@413 22
Chris@420 23 class TabularModel;
Chris@416 24 class Command;
Chris@416 25
Chris@413 26 class ModelDataTableModel : public QAbstractItemModel
Chris@413 27 {
Chris@413 28 Q_OBJECT
Chris@413 29
Chris@413 30 public:
Chris@420 31 ModelDataTableModel(TabularModel *m);
Chris@413 32 virtual ~ModelDataTableModel();
Chris@413 33
Chris@413 34 QVariant data(const QModelIndex &index, int role) const;
Chris@413 35
Chris@413 36 bool setData(const QModelIndex &index, const QVariant &value, int role);
Chris@413 37
Chris@413 38 Qt::ItemFlags flags(const QModelIndex &index) const;
Chris@413 39
Chris@413 40 QVariant headerData(int section, Qt::Orientation orientation,
Chris@413 41 int role = Qt::DisplayRole) const;
Chris@413 42
Chris@413 43 QModelIndex index(int row, int column,
Chris@413 44 const QModelIndex &parent = QModelIndex()) const;
Chris@413 45
Chris@413 46 QModelIndex parent(const QModelIndex &index) const;
Chris@413 47
Chris@413 48 int rowCount(const QModelIndex &parent = QModelIndex()) const;
Chris@413 49 int columnCount(const QModelIndex &parent = QModelIndex()) const;
Chris@413 50
Chris@416 51 QModelIndex getModelIndexForFrame(size_t frame) const;
Chris@419 52 size_t getFrameForModelIndex(const QModelIndex &) const;
Chris@416 53
Chris@420 54 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
Chris@413 55
Chris@416 56 signals:
Chris@416 57 void frameSelected(size_t);
Chris@416 58 void executeCommand(Command *);
Chris@416 59
Chris@413 60 protected slots:
Chris@413 61 void modelChanged();
Chris@413 62 void modelChanged(size_t, size_t);
Chris@413 63
Chris@413 64 protected:
Chris@420 65 TabularModel *m_model;
Chris@420 66 int m_sortColumn;
Chris@420 67 Qt::SortOrder m_sortOrdering;
Chris@420 68 typedef std::vector<int> RowList;
Chris@420 69 RowList m_sort;
Chris@422 70 RowList m_rsort;
Chris@420 71 int getSorted(int row);
Chris@420 72 int getUnsorted(int row);
Chris@420 73 void resort();
Chris@422 74 void resortNumeric();
Chris@422 75 void resortAlphabetical();
Chris@413 76 };
Chris@413 77
Chris@413 78 #endif