Warning, file /plasma/kdeplasma-addons/applets/weather/plugin/abstractunitlistmodel.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  * SPDX-FileCopyrightText: 2016 Friedrich W. H. Kossebau <kossebau@kde.org>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef ABSTRACTUNITLISTMODEL_H
0008 #define ABSTRACTUNITLISTMODEL_H
0009 
0010 #include "util.h"
0011 
0012 #include <KUnitConversion/Unit>
0013 
0014 #include <QAbstractListModel>
0015 #include <QVector>
0016 
0017 class UnitItem
0018 {
0019 public:
0020     UnitItem()
0021     {
0022     }
0023     UnitItem(KUnitConversion::UnitId _unitId)
0024         : name(Util::nameFromUnitId(_unitId))
0025         , unitId(_unitId)
0026     {
0027     }
0028 
0029     QString name;
0030     KUnitConversion::UnitId unitId;
0031 };
0032 
0033 Q_DECLARE_METATYPE(UnitItem)
0034 Q_DECLARE_TYPEINFO(UnitItem, Q_MOVABLE_TYPE);
0035 
0036 class AbstractUnitListModel : public QAbstractListModel
0037 {
0038     Q_OBJECT
0039 
0040 public:
0041     explicit AbstractUnitListModel(const QVector<UnitItem> &items, QObject *parent = nullptr);
0042 
0043 public: // QAbstractListModel API
0044     QVariant data(const QModelIndex &index, int role) const override;
0045     int rowCount(const QModelIndex &index) const override;
0046 
0047 public:
0048     Q_INVOKABLE int listIndexForUnitId(int unitId) const;
0049     Q_INVOKABLE int unitIdForListIndex(int listIndex) const;
0050 
0051 private:
0052     const QVector<UnitItem> m_items;
0053 };
0054 
0055 #endif // ABSTRACTUNITLISTMODEL_H