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 }