File indexing completed on 2024-05-26 05:38:22

0001 /*
0002     SPDX-FileCopyrightText: 2014-2015 Eike Hein <hein@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "abstractmodel.h"
0008 #include "actionlist.h"
0009 
0010 AbstractModel::AbstractModel(QObject *parent)
0011     : QAbstractListModel(parent)
0012 {
0013 }
0014 
0015 AbstractModel::~AbstractModel()
0016 {
0017 }
0018 
0019 QHash<int, QByteArray> AbstractModel::staticRoleNames()
0020 {
0021     QHash<int, QByteArray> roles;
0022     roles.insert(Qt::DisplayRole, "display");
0023     roles.insert(Qt::DecorationRole, "decoration");
0024     roles.insert(Kicker::GroupRole, "group");
0025     roles.insert(Kicker::DescriptionRole, "description");
0026     roles.insert(Kicker::FavoriteIdRole, "favoriteId");
0027     roles.insert(Kicker::IsParentRole, "isParent");
0028     roles.insert(Kicker::IsSeparatorRole, "isSeparator");
0029     roles.insert(Kicker::HasChildrenRole, "hasChildren");
0030     roles.insert(Kicker::HasActionListRole, "hasActionList");
0031     roles.insert(Kicker::ActionListRole, "actionList");
0032     roles.insert(Kicker::UrlRole, "url");
0033     roles.insert(Kicker::DisabledRole, "disabled");
0034     roles.insert(Kicker::IsMultilineTextRole, "isMultilineText");
0035     roles.insert(Kicker::DisplayWrappedRole, "displayWrapped");
0036 
0037     return roles;
0038 }
0039 
0040 int AbstractModel::count() const
0041 {
0042     return rowCount();
0043 }
0044 
0045 int AbstractModel::separatorCount() const
0046 {
0047     return 0;
0048 }
0049 
0050 int AbstractModel::iconSize() const
0051 {
0052     return m_iconSize;
0053 }
0054 
0055 void AbstractModel::setIconSize(int iconSize)
0056 {
0057     if (m_iconSize != iconSize) {
0058         m_iconSize = iconSize;
0059         refresh();
0060     }
0061 }
0062 
0063 void AbstractModel::refresh()
0064 {
0065 }
0066 
0067 QString AbstractModel::labelForRow(int row)
0068 {
0069     return data(index(row, 0), Qt::DisplayRole).toString();
0070 }
0071 
0072 AbstractModel *AbstractModel::modelForRow(int row)
0073 {
0074     Q_UNUSED(row)
0075 
0076     return nullptr;
0077 }
0078 
0079 int AbstractModel::rowForModel(AbstractModel *model)
0080 {
0081     Q_UNUSED(model)
0082 
0083     return -1;
0084 }
0085 
0086 bool AbstractModel::hasActions() const
0087 {
0088     return false;
0089 }
0090 
0091 QVariantList AbstractModel::actions() const
0092 {
0093     return QVariantList();
0094 }
0095 
0096 AbstractModel *AbstractModel::favoritesModel()
0097 {
0098     if (m_favoritesModel) {
0099         return m_favoritesModel;
0100     } else {
0101         AbstractModel *model = rootModel();
0102 
0103         if (model && model != this) {
0104             return model->favoritesModel();
0105         }
0106     }
0107 
0108     return nullptr;
0109 }
0110 
0111 void AbstractModel::setFavoritesModel(AbstractModel *model)
0112 {
0113     if (m_favoritesModel != model) {
0114         m_favoritesModel = model;
0115 
0116         Q_EMIT favoritesModelChanged();
0117     }
0118 }
0119 
0120 AbstractModel *AbstractModel::rootModel()
0121 {
0122     if (!parent()) {
0123         return nullptr;
0124     }
0125 
0126     QObject *p = this;
0127     AbstractModel *rootModel = nullptr;
0128 
0129     while (p) {
0130         if (qobject_cast<AbstractModel *>(p)) {
0131             rootModel = qobject_cast<AbstractModel *>(p);
0132         } else {
0133             return rootModel;
0134         }
0135 
0136         p = p->parent();
0137     }
0138 
0139     return rootModel;
0140 }
0141 
0142 QAbstractListModel *AbstractModel::sections() const
0143 {
0144     return nullptr;
0145 }
0146 
0147 void AbstractModel::entryChanged(AbstractEntry *entry)
0148 {
0149     Q_UNUSED(entry)
0150 }