9 #include "customfieldsmodel.h"
11 #include <KLocalizedString>
18 CustomFieldsModel::CustomFieldsModel(
QObject *parent)
23 CustomFieldsModel::~CustomFieldsModel() =
default;
25 void CustomFieldsModel::setCustomFields(
const CustomField::List &customFields)
27 Q_EMIT layoutAboutToBeChanged();
29 mCustomFields = customFields;
31 Q_EMIT layoutChanged();
34 CustomField::List CustomFieldsModel::customFields()
const
42 return createIndex(row, column);
57 if (index.
row() < 0 || index.
row() >= mCustomFields.count()) {
65 const CustomField &customField = mCustomFields[index.
row()];
69 return customField.title();
70 }
else if (index.
column() == 1) {
71 switch (customField.type()) {
72 case CustomField::TextType:
73 case CustomField::NumericType:
74 case CustomField::UrlType:
75 return customField.
value();
76 case CustomField::BooleanType:
78 case CustomField::DateType: {
82 case CustomField::TimeType: {
86 case CustomField::DateTimeType: {
91 return customField.value();
93 return customField.key();
99 if (customField.type() == CustomField::BooleanType) {
106 if (index.
column() == 0) {
107 return customField.title();
108 }
else if (index.
column() == 1) {
109 return customField.value();
111 return customField.key();
115 if (role == TypeRole) {
116 return customField.type();
119 if (role == ScopeRole) {
120 return customField.scope();
132 if (index.
row() < 0 || index.
row() >= mCustomFields.count()) {
140 CustomField &customField = mCustomFields[index.
row()];
143 if (index.
column() == 0) {
144 customField.setTitle(value.
toString());
145 }
else if (index.
column() == 1) {
146 customField.setValue(value.
toString());
148 customField.setKey(value.
toString());
151 Q_EMIT dataChanged(index, index);
156 if (index.
column() == 1) {
157 if (customField.type() == CustomField::BooleanType) {
159 Q_EMIT dataChanged(index, index);
165 if (role == TypeRole) {
166 customField.setType((CustomField::Type)value.
toInt());
167 Q_EMIT dataChanged(index, index);
171 if (role == ScopeRole) {
172 customField.setScope((CustomField::Scope)value.
toInt());
173 Q_EMIT dataChanged(index, index);
182 if (section < 0 || section > 1) {
195 return i18nc(
"custom field title",
"Title");
197 return i18nc(
"custom field value",
"Value");
203 if (!index.
isValid() || index.
row() < 0 || index.
row() >= mCustomFields.count()) {
207 const CustomField &customField = mCustomFields[index.
row()];
210 if ((customField.type() == CustomField::BooleanType) && (index.
column() == 1)) {
217 int CustomFieldsModel::columnCount(
const QModelIndex &parent)
const
226 int CustomFieldsModel::rowCount(
const QModelIndex &parent)
const
229 return mCustomFields.count();
235 bool CustomFieldsModel::insertRows(
int row,
int count,
const QModelIndex &parent)
241 beginInsertRows(parent, row, row + count - 1);
242 for (
int i = 0; i < count; ++i) {
243 mCustomFields.insert(row, CustomField());
250 bool CustomFieldsModel::removeRows(
int row,
int count,
const QModelIndex &parent)
256 beginRemoveRows(parent, row, row + count - 1);
257 for (
int i = 0; i < count; ++i) {
258 mCustomFields.remove(row);