mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
No point in having this in the header file as it is not used outside. Remove the CSVAPPS macro, as this was never used. One thing less to maintain. Remove the sentinel with name = NULL, as we can simply use range-based for. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
116 lines
3.2 KiB
C++
116 lines
3.2 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef DIVELOGIMPORTDIALOG_H
|
|
#define DIVELOGIMPORTDIALOG_H
|
|
|
|
#include <QDialog>
|
|
#include <QAbstractListModel>
|
|
#include <QListView>
|
|
#include <QDragLeaveEvent>
|
|
#include <QTableView>
|
|
#include <QAbstractTableModel>
|
|
#include <QStyledItemDelegate>
|
|
|
|
#include "core/dive.h"
|
|
#include "core/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(int firstIndex, int secondIndex);
|
|
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:
|
|
};
|
|
|
|
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();
|
|
enum whatChanged { INITIAL, SEPARATOR, KNOWNTYPES };
|
|
private
|
|
slots:
|
|
void on_buttonBox_accepted();
|
|
void loadFileContentsSeperatorSelected(int value);
|
|
void loadFileContentsKnownTypesSelected(int value);
|
|
void loadFileContents(int value, enum whatChanged triggeredBy);
|
|
int setup_csv_params(QStringList r, char **params, int pnr);
|
|
int parseTxtHeader(QString fileName, char **params, int pnr);
|
|
void accept() override;
|
|
void reject() override;
|
|
|
|
private:
|
|
bool selector;
|
|
QStringList fileNames;
|
|
Ui::DiveLogImportDialog *ui;
|
|
QList<int> specialCSV;
|
|
int column;
|
|
ColumnNameResult *resultModel;
|
|
QString delta;
|
|
QString hw;
|
|
bool txtLog;
|
|
|
|
};
|
|
|
|
class TagDragDelegate : public QStyledItemDelegate {
|
|
Q_OBJECT
|
|
public:
|
|
TagDragDelegate(QObject *parent);
|
|
QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const;
|
|
void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const;
|
|
};
|
|
|
|
#endif // DIVELOGIMPORTDIALOG_H
|