/** * @RDE_HEADER@ * LtsColumnsSetting Organise table columns * $Id$ * $HeadURL$ * $Author$ * Created by Steve Kemayou, ESZS, 2025-03-19 */ #pragma once #include #include "LtsWidgets/lts_frameless_dialog.h" #include #include #include namespace Ui { class LtsColumnsSetting; } namespace LtsDataView { struct ColumnOrganiserInfo { int logicalIndex; // logicalIndex QString name; bool show; bool debugOnly = false; // column is only displayed in debug mode bool hide() const {return !show;} }; class ColumnOrganiserModel; class LTSDATAVIEW_EXPORT LtsColumnsSettingWidget : public LtsWidgets::LtsFramelessDialog { Q_OBJECT public: explicit LtsColumnsSettingWidget(const QVector &columnInfoVec, QWidget *parent = nullptr); ~LtsColumnsSettingWidget(); signals: void columnVisibilityChanged(const QVector &data); void columnsResetted(); private slots: void onResetClicked(); void onApplyClicked(); void onAbortClicked(); private: Ui::LtsColumnsSetting *m_ui; ColumnOrganiserModel *m_model; }; class ColumnOrganiserModel final : public QAbstractTableModel { Q_OBJECT public: explicit ColumnOrganiserModel(QObject *parent = nullptr); ~ ColumnOrganiserModel(){} void setModelData(const QVector &infos); protected: void insertRow(const ColumnOrganiserInfo &info); int columnCount(const QModelIndex &parent = QModelIndex())const override; int rowCount(const QModelIndex &parent = QModelIndex() ) const override; QVariant data (const QModelIndex &index, int role = Qt::DisplayRole)const override; bool setData(const QModelIndex &index, const QVariant &value, int role) override; Qt::ItemFlags flags(const QModelIndex &index) const override; QVariant headerData(int section, Qt::Orientation orientation, int role) const override final; private: QVector m_vecData; }; } // namespace LtsDataView Q_DECLARE_METATYPE(LtsDataView::ColumnOrganiserInfo)