annotate data/model/ModelDataTableModel.h @ 878:a2689db084f4 tonioni

Add a callback for no models as well (so we know something has completed and can e.g. delete the handler)
author Chris Cannam
date Wed, 29 Jan 2014 17:32:08 +0000
parents b1dc68507e46
children 59e7fe1b1003
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@427 38 bool insertRow(int row, const QModelIndex &parent = QModelIndex());
Chris@427 39 bool removeRow(int row, const QModelIndex &parent = QModelIndex());
Chris@427 40
Chris@413 41 Qt::ItemFlags flags(const QModelIndex &index) const;
Chris@413 42
Chris@413 43 QVariant headerData(int section, Qt::Orientation orientation,
Chris@413 44 int role = Qt::DisplayRole) const;
Chris@413 45
Chris@413 46 QModelIndex index(int row, int column,
Chris@413 47 const QModelIndex &parent = QModelIndex()) const;
Chris@413 48
Chris@413 49 QModelIndex parent(const QModelIndex &index) const;
Chris@413 50
Chris@413 51 int rowCount(const QModelIndex &parent = QModelIndex()) const;
Chris@413 52 int columnCount(const QModelIndex &parent = QModelIndex()) const;
Chris@413 53
Chris@416 54 QModelIndex getModelIndexForFrame(size_t frame) const;
Chris@419 55 size_t getFrameForModelIndex(const QModelIndex &) const;
Chris@416 56
Chris@420 57 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
Chris@413 58
Chris@618 59 QModelIndex findText(QString text) const;
Chris@618 60
Chris@428 61 void setCurrentRow(int row);
Chris@618 62 int getCurrentRow() const;
Chris@428 63
Chris@416 64 signals:
Chris@416 65 void frameSelected(size_t);
Chris@427 66 void addCommand(Command *);
Chris@428 67 void currentChanged(const QModelIndex &);
Chris@454 68 void modelRemoved();
Chris@416 69
Chris@413 70 protected slots:
Chris@413 71 void modelChanged();
Chris@413 72 void modelChanged(size_t, size_t);
Chris@454 73 void modelAboutToBeDeleted();
Chris@413 74
Chris@413 75 protected:
Chris@420 76 TabularModel *m_model;
Chris@420 77 int m_sortColumn;
Chris@420 78 Qt::SortOrder m_sortOrdering;
Chris@428 79 int m_currentRow;
Chris@420 80 typedef std::vector<int> RowList;
Chris@426 81 mutable RowList m_sort;
Chris@426 82 mutable RowList m_rsort;
Chris@426 83 int getSorted(int row) const;
Chris@426 84 int getUnsorted(int row) const;
Chris@426 85 void resort() const;
Chris@426 86 void resortNumeric() const;
Chris@426 87 void resortAlphabetical() const;
Chris@428 88 void clearSort();
Chris@413 89 };
Chris@413 90
Chris@413 91 #endif