71 lines
1.7 KiB
C++
71 lines
1.7 KiB
C++
#ifndef ITEMDETAILMAPPER_H
|
|
#define ITEMDETAILMAPPER_H
|
|
|
|
#include <QComboBox>
|
|
#include <QDataWidgetMapper>
|
|
#include <QStringListModel>
|
|
#include <QWidget>
|
|
#include "model/metadata.h"
|
|
|
|
class QGridLayout;
|
|
class QLabel;
|
|
class QLineEdit;
|
|
class QDoubleSpinBox;
|
|
class QSpinBox;
|
|
class QPushButton;
|
|
class QAbstractItemModel;
|
|
class QItemSelectionModel;
|
|
class QTableView;
|
|
|
|
class ItemDetailMapper : public QWidget {
|
|
Q_OBJECT
|
|
public:
|
|
explicit ItemDetailMapper(QTableView* tableView, QWidget* parent = nullptr);
|
|
|
|
bool submit();
|
|
void revert();
|
|
|
|
signals:
|
|
void contentChanged(const QString text);
|
|
|
|
private slots:
|
|
void onCurrentIndexChanged(const QModelIndex& current, const QModelIndex& previous);
|
|
void rowsInserted(const QModelIndex& parent, int start, int end);
|
|
void rowsRemoved(const QModelIndex& parent, int start, int end);
|
|
void toPrevious();
|
|
void toNext();
|
|
void updateButtons(int row);
|
|
void emitContentChanged(const QModelIndex& currentIndex);
|
|
|
|
private:
|
|
/// *** members ***
|
|
/// Model stuff
|
|
QTableView* m_tableView = nullptr;
|
|
QAbstractItemModel* m_model = nullptr;
|
|
QItemSelectionModel* m_selectionModel = nullptr;
|
|
|
|
std::unique_ptr<QDataWidgetMapper> m_mapper;
|
|
|
|
/// GUI elements
|
|
QGridLayout* m_layout;
|
|
QList<QWidget*> m_controlWidgets;
|
|
|
|
QPushButton* m_nextButton;
|
|
QPushButton* m_previousButton;
|
|
|
|
void setupConnections();
|
|
void setupNavigationButtons();
|
|
void setupWidgets();
|
|
|
|
void setupWidgetPairForColumn(const int column);
|
|
QWidget* createControlWidget(const UserRoles role);
|
|
QWidget* createComboBox(const UserRoles role);
|
|
|
|
void clearControlWidgets();
|
|
void clearLineEdit(const int column);
|
|
void clearComboBox(const int column);
|
|
void clearSpinBox(const int column);
|
|
};
|
|
|
|
#endif // ITEMDETAILMAPPER_H
|