146 lines
4.5 KiB
C++
146 lines
4.5 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2006 Trolltech ASA. All rights reserved.
|
|
**
|
|
** This file is part of the documentation of Qt. It was originally
|
|
** published as part of Qt Quarterly.
|
|
**
|
|
** This file may be used under the terms of the GNU General Public License
|
|
** version 2.0 as published by the Free Software Foundation or under the
|
|
** terms of the Qt Commercial License Agreement. The respective license
|
|
** texts for these are provided with the open source and commercial
|
|
** editions of Qt.
|
|
**
|
|
** If you are unsure which license is appropriate for your use, please
|
|
** review the following information:
|
|
** http://www.trolltech.com/products/qt/licensing.html or contact the
|
|
** sales department at sales@trolltech.com.
|
|
**
|
|
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
|
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
**
|
|
****************************************************************************/
|
|
|
|
#include "variantmanager.h"
|
|
|
|
class FilePathPropertyType
|
|
{
|
|
};
|
|
|
|
Q_DECLARE_METATYPE(FilePathPropertyType)
|
|
|
|
int VariantManager::filePathTypeId()
|
|
{
|
|
return qMetaTypeId<FilePathPropertyType>();
|
|
}
|
|
|
|
bool VariantManager::isPropertyTypeSupported(int propertyType) const
|
|
{
|
|
if (propertyType == filePathTypeId())
|
|
return true;
|
|
return QtVariantPropertyManager::isPropertyTypeSupported(propertyType);
|
|
}
|
|
|
|
int VariantManager::valueType(int propertyType) const
|
|
{
|
|
if (propertyType == filePathTypeId())
|
|
return QVariant::String;
|
|
return QtVariantPropertyManager::valueType(propertyType);
|
|
}
|
|
|
|
QVariant VariantManager::value(const QtProperty *property) const
|
|
{
|
|
if (theValues.contains(property))
|
|
return theValues[property].value;
|
|
return QtVariantPropertyManager::value(property);
|
|
}
|
|
|
|
QStringList VariantManager::attributes(int propertyType) const
|
|
{
|
|
if (propertyType == filePathTypeId()) {
|
|
QStringList attr;
|
|
attr << QLatin1String("filter");
|
|
return attr;
|
|
}
|
|
return QtVariantPropertyManager::attributes(propertyType);
|
|
}
|
|
|
|
int VariantManager::attributeType(int propertyType, const QString &attribute) const
|
|
{
|
|
if (propertyType == filePathTypeId()) {
|
|
if (attribute == QLatin1String("filter"))
|
|
return QVariant::String;
|
|
return 0;
|
|
}
|
|
return QtVariantPropertyManager::attributeType(propertyType, attribute);
|
|
}
|
|
|
|
QVariant VariantManager::attributeValue(const QtProperty *property, const QString &attribute)
|
|
{
|
|
if (theValues.contains(property)) {
|
|
if (attribute == QLatin1String("filter"))
|
|
return theValues[property].filter;
|
|
return QVariant();
|
|
}
|
|
return QtVariantPropertyManager::attributeValue(property, attribute);
|
|
}
|
|
|
|
QString VariantManager::valueText(const QtProperty *property) const
|
|
{
|
|
if (theValues.contains(property))
|
|
return theValues[property].value;
|
|
return QtVariantPropertyManager::valueText(property);
|
|
}
|
|
|
|
void VariantManager::setValue(QtProperty *property, const QVariant &val)
|
|
{
|
|
if (theValues.contains(property)) {
|
|
if (val.type() != QVariant::String && !val.canConvert(QVariant::String))
|
|
return;
|
|
QString str = val.value<QString>();
|
|
Data d = theValues[property];
|
|
if (d.value == str)
|
|
return;
|
|
d.value = str;
|
|
theValues[property] = d;
|
|
emit propertyChanged(property);
|
|
emit valueChanged(property, str);
|
|
return;
|
|
}
|
|
QtVariantPropertyManager::setValue(property, val);
|
|
}
|
|
|
|
void VariantManager::setAttribute(QtProperty *property,
|
|
const QString &attribute, const QVariant &val)
|
|
{
|
|
if (theValues.contains(property)) {
|
|
if (attribute == QLatin1String("filter")) {
|
|
if (val.type() != QVariant::String && !val.canConvert(QVariant::String))
|
|
return;
|
|
QString str = val.value<QString>();
|
|
Data d = theValues[property];
|
|
if (d.filter == str)
|
|
return;
|
|
d.filter = str;
|
|
theValues[property] = d;
|
|
emit attributeChanged(property, attribute, str);
|
|
}
|
|
return;
|
|
}
|
|
QtVariantPropertyManager::setAttribute(property, attribute, val);
|
|
}
|
|
|
|
void VariantManager::initializeProperty(QtProperty *property)
|
|
{
|
|
if (propertyType(property) == filePathTypeId())
|
|
theValues[property] = Data();
|
|
QtVariantPropertyManager::initializeProperty(property);
|
|
}
|
|
|
|
void VariantManager::uninitializeProperty(QtProperty *property)
|
|
{
|
|
theValues.remove(property);
|
|
QtVariantPropertyManager::uninitializeProperty(property);
|
|
}
|
|
|