mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-29 13:40:20 +00:00
bfe69239df
To make data flow more clear, unglobalize the downloadTable object. Make it a subobject of DownloadThread. The difficult part was making this compatible with QML, because somehow the pointer to the download-table has to be passed to the DiveImportedModel. Desktop would simply pass it to the constructor. But with objects generated in QML this is not possible. Instead, pass the table in the repopulate() function. This seems to make sense, but for this to work, we have to declare pointer-to-dive-table as a Q_METATYPE. And this only works if we use a typedef, because MOC removes the "struct" from "struct dive_table". This leads to compilation errors, because dive_table is the symbol-name of the global dive table! Sigh. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
#ifndef DIVEIMPORTEDMODEL_H
|
|
#define DIVEIMPORTEDMODEL_H
|
|
|
|
#include <QAbstractTableModel>
|
|
#include <vector>
|
|
#include "core/dive.h"
|
|
|
|
class DiveImportedModel : public QAbstractTableModel
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
enum roleTypes { DateTime = Qt::UserRole + 1, Duration, Depth, Selected};
|
|
|
|
DiveImportedModel(QObject *parent = 0);
|
|
int columnCount(const QModelIndex& index = QModelIndex()) const;
|
|
int rowCount(const QModelIndex& index = QModelIndex()) const;
|
|
QVariant data(const QModelIndex& index, int role) const;
|
|
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
|
|
void setImportedDivesIndexes(int first, int last);
|
|
Qt::ItemFlags flags(const QModelIndex &index) const;
|
|
Q_INVOKABLE void clearTable();
|
|
QHash<int, QByteArray> roleNames() const;
|
|
Q_INVOKABLE void repopulate(dive_table_t *table);
|
|
Q_INVOKABLE void recordDives();
|
|
public
|
|
slots:
|
|
void changeSelected(QModelIndex clickedIndex);
|
|
void selectRow(int row);
|
|
void selectAll();
|
|
void selectNone();
|
|
|
|
private:
|
|
int firstIndex;
|
|
int lastIndex;
|
|
std::vector<char> checkStates; // char instead of bool to avoid silly pessimization of std::vector.
|
|
struct dive_table *diveTable;
|
|
};
|
|
|
|
#endif
|