Krita Source Code Documentation
Loading...
Searching...
No Matches
KisResourceMetaDataModel Class Reference

#include <KisResourceMetaDataModel.h>

Classes

struct  Private
 

Public Member Functions

 KisResourceMetaDataModel (const QString &tableName)
 
QVariant metaDataValue (int resourceId, const QString &key)
 
 ~KisResourceMetaDataModel ()
 

Private Attributes

QScopedPointer< Privatem_d
 

Detailed Description

simple class used for fetching specific metadata for a resource. Internally it stores a prepared query that can fetch particular metadata keys in an efficiant way.

In contrast to KisAbstractResourceModel::MetaData role in the resource model this class allows fetching individual keys from the resource's metadata. That is usually more efficient in some cases.

The rule of thumb: if you want to fetch all metadata for resource, use KisAbstractResourceModel::MetaData, if you want an individual key, use KisResourceMetaDataModel.

Definition at line 28 of file KisResourceMetaDataModel.h.

Constructor & Destructor Documentation

◆ KisResourceMetaDataModel()

KisResourceMetaDataModel::KisResourceMetaDataModel ( const QString & tableName)

Definition at line 16 of file KisResourceMetaDataModel.cpp.

17 : m_d(new Private)
18{
19 m_d->query.setForwardOnly(true);
20
21 m_d->isQueryPrepared =
22 m_d->query.prepare(
23 "SELECT value\n"
24 "FROM metadata\n"
25 "WHERE foreign_id = :id\n"
26 "AND table_name = :table\n"
27 "AND key = :key\n"
28 "LIMIT 1");
29
30 if (!m_d->isQueryPrepared) {
31 qWarning() << "Could not prepare metadata query" << m_d->query.lastError();
32 return;
33 } else {
34 m_d->query.bindValue(":table", tableName);
35 }
36}
QScopedPointer< Private > m_d

References m_d.

◆ ~KisResourceMetaDataModel()

KisResourceMetaDataModel::~KisResourceMetaDataModel ( )

Definition at line 38 of file KisResourceMetaDataModel.cpp.

39{
40}

Member Function Documentation

◆ metaDataValue()

QVariant KisResourceMetaDataModel::metaDataValue ( int resourceId,
const QString & key )

Definition at line 42 of file KisResourceMetaDataModel.cpp.

43{
44 QVariant resultValue;
45
46 if (!m_d->isQueryPrepared) return resultValue;
47
48 m_d->query.bindValue(":id", resourceId);
49 m_d->query.bindValue(":key", key);
50
51 if (!m_d->query.exec()) {
52 qWarning() << "Could not execute metadata query" << m_d->query.lastError();
53 return resultValue;
54 }
55
56 if (m_d->query.size() > 1) {
57 qWarning() << "Found duplicated entries for metadata for resource" << resourceId << "and key" << key;
58 }
59
60 if (m_d->query.first()) {
61 QByteArray ba = m_d->query.value(0).toByteArray();
62 if (!ba.isEmpty()) {
63 QDataStream ds(QByteArray::fromBase64(ba));
64 QVariant value;
65 ds >> value;
66 resultValue = value;
67 }
68 }
69
70 return resultValue;
71}
float value(const T *src, size_t ch)

References m_d, and value().

Member Data Documentation

◆ m_d

QScopedPointer<Private> KisResourceMetaDataModel::m_d
private

Definition at line 38 of file KisResourceMetaDataModel.h.


The documentation for this class was generated from the following files: