File indexing completed on 2024-04-28 15:11:24

0001 /*
0002     SPDX-FileCopyrightText: 2012 Samikshan Bairagya <samikshan@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "skyobjlistmodel.h"
0008 
0009 #include "skyobject.h"
0010 #include "skyobjitem.h"
0011 
0012 SkyObjListModel::SkyObjListModel(SkyObjItem *soitem, QObject *parent) : QAbstractListModel(parent)
0013 {
0014     //FIXME Needs porting to KF5
0015     //Fixed in roleNames(). setRoleNames is not a member of QAbstractListModel anymore
0016     //setRoleNames(soitem->roleNames());
0017     Q_UNUSED(soitem);
0018 }
0019 
0020 QHash<int, QByteArray> SkyObjListModel::roleNames() const
0021 {
0022     QHash<int, QByteArray> roles;
0023     roles[SkyObjItem::DispNameRole]     = "dispName";
0024     roles[SkyObjItem::DispImageRole]    = "imageSource";
0025     roles[SkyObjItem::DispSummaryRole]  = "dispObjSummary";
0026     roles[SkyObjItem::CategoryRole]     = "type";
0027     roles[SkyObjItem::CategoryNameRole] = "typeName";
0028     return roles;
0029 }
0030 
0031 void SkyObjListModel::addSkyObject(SkyObjItem *soitem)
0032 {
0033     beginInsertRows(QModelIndex(), rowCount(), rowCount());
0034     m_SoItemList.append(soitem);
0035     endInsertRows();
0036 }
0037 
0038 int SkyObjListModel::rowCount(const QModelIndex &parent) const
0039 {
0040     Q_UNUSED(parent)
0041 
0042     return m_SoItemList.size();
0043 }
0044 
0045 QVariant SkyObjListModel::data(const QModelIndex &index, int role) const
0046 {
0047     if (index.row() < 0 || index.row() > rowCount())
0048         return QVariant();
0049 
0050     SkyObjItem *soitem = m_SoItemList[index.row()];
0051 
0052     return soitem->data(role);
0053 }
0054 
0055 QList<SkyObjItem *> SkyObjListModel::getSkyObjItems()
0056 {
0057     return m_SoItemList;
0058 }
0059 
0060 SkyObjItem *SkyObjListModel::getSkyObjItem(int index)
0061 {
0062     if (m_SoItemList.size() > index)
0063         return m_SoItemList[index];
0064     else
0065         return nullptr;
0066 }
0067 
0068 int SkyObjListModel::getSkyObjIndex(SkyObjItem *item)
0069 {
0070     for (int i = 0; i < m_SoItemList.size(); i++)
0071     {
0072         if (item->getName() == m_SoItemList[i]->getName())
0073             return i;
0074     }
0075     return -1;
0076 }
0077 
0078 void SkyObjListModel::resetModel()
0079 {
0080     m_SoItemList.clear();
0081 }