Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_meta_data_model.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: LGPL-2.1-or-later
5 */
6
8
9#include <klocalizedstring.h>
10
11#include <kis_meta_data_store.h>
12#include <kis_meta_data_entry.h>
13#include <kis_meta_data_value.h>
14
16{
17
18}
19
20int KisMetaDataModel::rowCount(const QModelIndex &parent) const
21{
22 Q_UNUSED(parent);
23 return m_store->keys().count();
24}
25
26int KisMetaDataModel::columnCount(const QModelIndex &parent) const
27{
28 Q_UNUSED(parent);
29 return 3;
30}
31
32QVariant KisMetaDataModel::data(const QModelIndex &index, int role) const
33{
34 if (!index.isValid()) {
35 return QVariant();
36 }
37 Q_ASSERT(index.row() < m_store->keys().count());
38 switch (role) {
39 case Qt::DisplayRole: {
40 switch (index.column()) {
41 case 0:
42 return m_store->keys()[index.row()];
43 case 1: {
44 KisMetaData::Value::ValueType vt = m_store->entries()[index.row()].value().type();
45 switch (vt) {
47 return i18n("Invalid");
49 int vt = m_store->entries()[index.row()].value().asVariant().type();
50 switch (vt) {
51 case QVariant::Date:
52 case QVariant::DateTime:
53 return i18n("Date");
54 case QVariant::Double:
55 case QVariant::Int:
56 return i18n("Number");
57 case QVariant::String:
58 return i18n("String");
59 default:
60 return i18n("Variant (%1)", vt);
61 }
62 }
64 return i18n("Ordered array");
66 return i18n("Unordered array");
68 return i18n("Alternative array");
70 return i18n("Language array");
72 return i18n("Structure");
74 return i18n("Rational");
75 }
76 break;
77 }
78 case 2:
79 return m_store->entries()[index.row()].value().toString();
80 }
81 break;
82 }
83 default:
84 return QVariant();
85 }
86 return QVariant();
87}
88
89QVariant KisMetaDataModel::headerData(int section, Qt::Orientation orientation, int role) const
90{
91 if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
92 Q_ASSERT(section < 3);
93 switch (section) {
94 case 0:
95 return i18n("Key");
96 case 1:
97 return i18n("Type");
98 case 2:
99 return i18nc("Metadata item value", "Value");
100 }
101 }
102 return QVariant();
103}
KisMetaData::Store * m_store
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
KisMetaDataModel(KisMetaData::Store *store)
int columnCount(const QModelIndex &parent=QModelIndex()) const override
int rowCount(const QModelIndex &parent=QModelIndex()) const override
QList< QString > keys() const
QList< Entry > entries() const
ValueType
Define the possible value type.