mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +00:00
1c06252c00
This makes the code simpler and allows us to do a much better job matching the column names. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
113 lines
2.7 KiB
C++
113 lines
2.7 KiB
C++
#ifndef DIVELOGIMPORTDIALOG_H
|
|
#define DIVELOGIMPORTDIALOG_H
|
|
|
|
#include <QDialog>
|
|
#include <QAbstractListModel>
|
|
#include <QListView>
|
|
#include <QDragLeaveEvent>
|
|
#include <QTableView>
|
|
#include <QAbstractTableModel>
|
|
|
|
#include "../dive.h"
|
|
#include "../divelist.h"
|
|
|
|
namespace Ui {
|
|
class DiveLogImportDialog;
|
|
}
|
|
|
|
class ColumnNameProvider : public QAbstractListModel {
|
|
Q_OBJECT
|
|
public:
|
|
ColumnNameProvider(QObject *parent);
|
|
bool insertRows(int row, int count, const QModelIndex &parent);
|
|
bool removeRows(int row, int count, const QModelIndex &parent);
|
|
bool setData(const QModelIndex &index, const QVariant &value, int role);
|
|
QVariant data(const QModelIndex &index, int role) const;
|
|
int rowCount(const QModelIndex &parent) const;
|
|
int mymatch(QString value) const;
|
|
private:
|
|
QStringList columnNames;
|
|
};
|
|
|
|
class ColumnNameResult : public QAbstractTableModel {
|
|
Q_OBJECT
|
|
public:
|
|
ColumnNameResult(QObject *parent);
|
|
bool setData(const QModelIndex &index, const QVariant &value, int role);
|
|
QVariant data(const QModelIndex &index, int role) const;
|
|
int rowCount(const QModelIndex &parent = QModelIndex()) const;
|
|
int columnCount(const QModelIndex &parent = QModelIndex()) const;
|
|
void setColumnValues(QList<QStringList> columns);
|
|
QStringList result() const;
|
|
void swapValues(const QString& one, const QString& other);
|
|
private:
|
|
QList<QStringList> columnValues;
|
|
QStringList columnNames;
|
|
};
|
|
|
|
class ColumnNameView : public QListView {
|
|
Q_OBJECT
|
|
public:
|
|
ColumnNameView(QWidget *parent);
|
|
protected:
|
|
void mousePressEvent(QMouseEvent *press);
|
|
void dragLeaveEvent(QDragLeaveEvent *leave);
|
|
void dragEnterEvent(QDragEnterEvent *event);
|
|
void dragMoveEvent(QDragMoveEvent *event);
|
|
void dropEvent(QDropEvent *event);
|
|
private:
|
|
int currentDraggedIndex;
|
|
};
|
|
|
|
class ColumnDropCSVView : public QTableView {
|
|
Q_OBJECT
|
|
public:
|
|
ColumnDropCSVView(QWidget *parent);
|
|
protected:
|
|
void mousePressEvent(QMouseEvent *press);
|
|
void dragLeaveEvent(QDragLeaveEvent *leave);
|
|
void dragEnterEvent(QDragEnterEvent *event);
|
|
void dragMoveEvent(QDragMoveEvent *event);
|
|
void dropEvent(QDropEvent *event);
|
|
private:
|
|
QStringList columns;
|
|
};
|
|
|
|
class DiveLogImportDialog : public QDialog {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit DiveLogImportDialog(QStringList fn, QWidget *parent = 0);
|
|
~DiveLogImportDialog();
|
|
|
|
private
|
|
slots:
|
|
void on_buttonBox_accepted();
|
|
void loadFileContents();
|
|
private:
|
|
bool selector;
|
|
QStringList fileNames;
|
|
Ui::DiveLogImportDialog *ui;
|
|
QList<int> specialCSV;
|
|
int column;
|
|
ColumnNameResult *resultModel;
|
|
|
|
struct CSVAppConfig {
|
|
QString name;
|
|
int time;
|
|
int depth;
|
|
int temperature;
|
|
int po2;
|
|
int cns;
|
|
int ndl;
|
|
int tts;
|
|
int stopdepth;
|
|
int pressure;
|
|
QString separator;
|
|
};
|
|
|
|
#define CSVAPPS 7
|
|
static const CSVAppConfig CSVApps[CSVAPPS];
|
|
};
|
|
|
|
#endif // DIVELOGIMPORTDIALOG_H
|