Graph Gallery

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

 #ifndef VARIANTBARDATAPROXY_H
 #define VARIANTBARDATAPROXY_H

 #include <QtCore/qpointer.h>
 #include <QtGraphs/qbardataproxy.h>
 #include "variantbardatamapping.h"
 #include "variantdataset.h"

 class VariantBarDataProxy : public QBarDataProxy
 {
     Q_OBJECT

 public:
     explicit VariantBarDataProxy();
     ~VariantBarDataProxy() override;

     // Doesn't gain ownership of the dataset, but does connect to it to listen for
     // data changes.
     void setDataSet(VariantDataSet *newSet);
     VariantDataSet *dataSet();

     // Map key (row, column, value) to value index in data item (VariantItem).
     // Doesn't gain ownership of mapping, but does connect to it to listen for
     // mapping changes. Modifying mapping that is set to proxy will trigger
     // dataset re-resolving.
     void setMapping(VariantBarDataMapping *mapping);
     VariantBarDataMapping *mapping();

 public Q_SLOTS:
     void handleItemsAdded(int index, int count);
     void handleDataCleared();
     void handleMappingChanged();

 private:
     void resolveDataSet();

     QPointer<VariantDataSet> m_dataSet;
     QPointer<VariantBarDataMapping> m_mapping;

     Q_DISABLE_COPY(VariantBarDataProxy)
 };

 #endif