NDEVR
API Documentation
VehicleTable.h
1#pragma once
2#include "VehicleDatabase/Headers/VehicleDatabase.h"
3#include "Widgets/Headers/PopupInfo.h"
4#include "Base/Headers/String.h"
5#include <QObject>
6#include <QWidget>
7#include <QTableView>
8#include <QSortFilterProxyModel>
9#include <QAbstractTableModel>
10namespace NDEVR
11{
12
16 class VehicleTableModel final : public QAbstractTableModel
17 {
18 Q_OBJECT
19 public:
23 VehicleTableModel(VehicleDatabase* m_database, QObject* parent = nullptr);
24
26 {}
27 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
28 int columnCount(const QModelIndex& parent = QModelIndex()) const override;
29 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
30 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
31 protected:
33 };
34
38 class VehicleTableFilterProxyModel : public QSortFilterProxyModel
39 {
40 Q_OBJECT
41 public:
45 explicit VehicleTableFilterProxyModel(VehicleDatabase* model, QObject* parent = nullptr);
48 void setMakeSearchString(const String& search_string);
51 void setModelSearchString(const String& search_string);
54 void setYearSearchString(const uint04& search_string);
59 void setSearchStrings(const String& make, const String& model, uint04 year);
60 void sort(int column, Qt::SortOrder order = Qt::DescendingOrder) override;
61
64 void setSelectedCallback(const std::function<void(uint04, PopupInfo)>& callback) { m_selected_callback = callback; };
67 [[nodiscard]] const std::function<void(uint04, PopupInfo)>& selectedCallback() const { return m_selected_callback; };
68 signals:
71 protected:
72 virtual bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const override;
73 virtual bool lessThan(const QModelIndex& left, const QModelIndex& right) const override;
74
75 protected:
79 uint04 m_search_year = Constant<uint04>::Invalid;
80 std::function<void(uint04, PopupInfo)> m_selected_callback;
81 };
82
85 class VehicleTableView : public QTableView
86 {
87 public:
91 explicit VehicleTableView(VehicleDatabase* database, QWidget* parent = nullptr);
94 [[nodiscard]] VehicleTableFilterProxyModel* filter() const { return m_filter; }
95 QSize minimumSizeHint() const override;
99 uint04 recordIndexFromSelection(const QModelIndex& selection_index) const;
100 protected:
103 };
104}
The core String class for the NDEVR API.
Definition String.h:95
A database of vehicle specifications (make, model, year, dimensions, weight) loaded from DBF files an...
A sort/filter proxy model that filters VehicleTableModel rows by make, model, and year search criteri...
void setMakeSearchString(const String &search_string)
Sets the make search filter string.
String m_search_make
Current make search filter.
void setModelSearchString(const String &search_string)
Sets the model search filter string.
VehicleDatabase * m_database
The vehicle database for filter logic.
uint04 m_search_year
Current year search filter.
void searchByParameterChangedSignal()
Emitted when the search filter parameters have changed.
void setSelectedCallback(const std::function< void(uint04, PopupInfo)> &callback)
Sets the callback invoked when a vehicle record is selected.
void setSearchStrings(const String &make, const String &model, uint04 year)
Sets all search criteria at once.
std::function< void(uint04, PopupInfo)> m_selected_callback
Callback invoked on vehicle selection.
String m_search_model
Current model search filter.
void setYearSearchString(const uint04 &search_string)
Sets the year search filter.
VehicleTableFilterProxyModel(VehicleDatabase *model, QObject *parent=nullptr)
Constructs the filter proxy model for the given vehicle database.
const std::function< void(uint04, PopupInfo)> & selectedCallback() const
Returns the current selection callback.
Qt table model that exposes VehicleDatabase records as rows for display in a QTableView.
VehicleTableModel(VehicleDatabase *m_database, QObject *parent=nullptr)
Constructs the table model for the given vehicle database.
VehicleDatabase * m_database
The vehicle database providing record data.
VehicleTableFilterProxyModel * filter() const
Returns the filter proxy model used by this view.
uint04 recordIndexFromSelection(const QModelIndex &selection_index) const
Converts a proxy model selection index to the underlying database record index.
VehicleTableModel * m_model
The underlying table model.
VehicleTableView(VehicleDatabase *database, QWidget *parent=nullptr)
Constructs the table view for the given vehicle database.
VehicleTableFilterProxyModel * m_filter
The sort/filter proxy model.
The primary namespace for the NDEVR SDK.
uint32_t uint04
-Defines an alias representing a 4 byte, unsigned integer -Can represent exact integer values 0 throu...
Class which is used to pass arguments and requests for creating a popup dialog or widget.
Definition PopupInfo.h:16