1
/* * This file is part of Maliit framework *
3
* Copyright (C) 2010, 2011 Nokia Corporation and/or its subsidiary(-ies).
6
* Contact: maliit-discuss@lists.maliit.org
8
* This library is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU Lesser General Public
10
* License version 2.1 as published by the Free Software Foundation
11
* and appearing in the file LICENSE.LGPL included in the packaging
15
// Based on minputmethodstate.cpp from libmeegotouch
17
#include "attributeextension.h"
18
#include "attributeextension_p.h"
20
#include "attributeextensionregistry.h"
21
#include "inputmethod.h"
27
AttributeExtensionPrivate::AttributeExtensionPrivate(const QString &fileName) :
31
registry(AttributeExtensionRegistry::instance())
35
AttributeExtensionPrivate::AttributeExtensionPrivate(int id) :
39
registry(AttributeExtensionRegistry::instance())
43
AttributeExtensionPrivate::~AttributeExtensionPrivate()
47
int AttributeExtensionPrivate::createId()
49
static int idCounter = 0;
50
// generate an application local unique identifier for the extension.
51
int result = idCounter;
56
AttributeExtension::AttributeExtension(const QString &fileName)
58
d_ptr(new AttributeExtensionPrivate(fileName))
60
Q_D(AttributeExtension);
62
if (AttributeExtensionRegistry *r = d->registry.data()) {
63
r->addExtension(this);
67
AttributeExtension::AttributeExtension(int id, bool registerExtension)
69
d_ptr(new AttributeExtensionPrivate(id))
71
Q_D(AttributeExtension);
73
AttributeExtensionRegistry *r = d->registry.data();
75
if (r && registerExtension) {
76
r->addExtension(this);
80
QSharedPointer<AttributeExtension> AttributeExtension::create(int id)
82
QSharedPointer<AttributeExtension> res(new AttributeExtension(id, false));
84
AttributeExtensionRegistry::instance()->addExtension(res);
89
AttributeExtension::~AttributeExtension()
91
Q_D(AttributeExtension);
93
if (AttributeExtensionRegistry *r = d->registry.data()) {
94
r->removeExtension(this);
98
AttributeExtension::ExtendedAttributeMap AttributeExtension::attributes() const
100
Q_D(const AttributeExtension);
105
QString AttributeExtension::fileName() const
107
Q_D(const AttributeExtension);
112
int AttributeExtension::id() const
114
Q_D(const AttributeExtension);
119
QString AttributeExtension::key(const QString &target,
120
const QString &targetItem,
121
const QString &attribute)
123
return QString::fromLatin1("%1/%2/%3").arg(target, targetItem, attribute);
126
void AttributeExtension::updateAttribute(const QString &key,
127
const QVariant &value)
129
Q_D(AttributeExtension);
131
d->values[key] = value;
133
Q_EMIT extendedAttributeChanged(key, value);
136
void AttributeExtension::setAttribute(const QString &key, const QVariant &value)
138
Q_D(AttributeExtension);
140
if (!d->values.contains(key) ||
141
d->values.value(key) != value)
143
d->values.insert(key, value);
144
if (AttributeExtensionRegistry *r = d->registry.data()) {
145
r->extensionChanged(this, key, value);
150
} // namespace Maliit