- Qt 6.7
- Qt Graphs
- Graph Gallery
- Qt Graphs | Commercial or GPLv3

# Graph Gallery

     // Copyright (C) 2023 The Qt Company Ltd.
     // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

     #ifndef VARIANTBARDATAMAPPING_H
     #define VARIANTBARDATAMAPPING_H

     #include <QtCore/qobject.h>
     #include <QtCore/qstringlist.h>

     class VariantBarDataMapping : public QObject
     {
         Q_OBJECT
         Q_PROPERTY(int rowIndex READ rowIndex WRITE setRowIndex NOTIFY rowIndexChanged)
         Q_PROPERTY(int columnIndex READ columnIndex WRITE setColumnIndex NOTIFY columnIndexChanged)
         Q_PROPERTY(int valueIndex READ valueIndex WRITE setValueIndex NOTIFY valueIndexChanged)
         Q_PROPERTY(QStringList rowCategories READ rowCategories WRITE setRowCategories NOTIFY
                        rowCategoriesChanged)
         Q_PROPERTY(QStringList columnCategories READ columnCategories WRITE setColumnCategories NOTIFY
                        columnCategoriesChanged)
     public:
         explicit VariantBarDataMapping(int rowIndex,
                                        int columnIndex,
                                        int valueIndex,
                                        const QStringList &rowCategories,
                                        const QStringList &columnCategories);
         ~VariantBarDataMapping() override;

         void setRowIndex(int index);
         int rowIndex() const;
         void setColumnIndex(int index);
         int columnIndex() const;
         void setValueIndex(int index);
         int valueIndex() const;

         void setRowCategories(const QStringList &categories);
         const QStringList &rowCategories() const;
         void setColumnCategories(const QStringList &categories);
         const QStringList &columnCategories() const;

         void remap(int rowIndex,
                    int columnIndex,
                    int valueIndex,
                    const QStringList &rowCategories,
                    const QStringList &columnCategories);
     Q_SIGNALS:
         void rowIndexChanged();
         void columnIndexChanged();
         void valueIndexChanged();
         void rowCategoriesChanged();
         void columnCategoriesChanged();
         void mappingChanged();

     private:
         // Indexes of the mapped items in the VariantDataItem
         int m_rowIndex = 0;
         int m_columnIndex = 1;
         int m_valueIndex = 2;

         // For row/column items, sort items into these categories. Other categories
         // are ignored.
         QStringList m_rowCategories = {};
         QStringList m_columnCategories = {};
     };

     #endif