00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "itemproperties.h"
00023 #include "QVPropertyContainer"
00024
00025
00026
00027 ItemProperties::ItemProperties(QString type): containerType(type)
00028 {
00029 }
00030
00031
00032 ItemProperties::ItemProperties(QString type, QVPropertyContainer *container): containerType(type)
00033 {
00034 QList<QString> prop( container->getPropertyList() );
00035
00036 for (int i = 0; i < prop.size(); i++)
00037 {
00038 QVPropertyContainer::PropertyFlags flags = container->getPropertyFlags(prop[i]);
00039 if ( !(flags & (QVPropertyContainer::guiInvisible | QVPropertyContainer::internalProp)) )
00040 {
00041 properties.append( prop[i] );
00042 types.append( container->getPropertyType(prop[i]) );
00043 inputs.append( container->isInput(prop[i]) );
00044 outputs.append( container->isOutput(prop[i]) );
00045 infos.append( container->getPropertyInfo(prop[i]) );
00046 }
00047 }
00048 }
00049
00050 QString ItemProperties::getType() const
00051 {
00052 return containerType;
00053 }
00054
00055 QList<QString> ItemProperties::getProperties() const
00056 {
00057 return properties;
00058 }
00059
00060 int ItemProperties::propertyType(const uint i) const
00061 {
00062 if (i >= (uint)types.size()) return 0;
00063 return types[i];
00064 }
00065
00066 bool ItemProperties::isInput(const uint i) const
00067 {
00068 if (i >= (uint)inputs.size()) return false;
00069 return inputs[i];
00070 }
00071
00072 bool ItemProperties::isOutput(const uint i) const
00073 {
00074 if (i >= (uint)outputs.size()) return false;
00075 return outputs[i];
00076 }
00077
00078 QString ItemProperties::info(const uint i) const
00079 {
00080 if (i >= (uint)outputs.size()) return QString();
00081 return infos[i];
00082 }
00083
00084 void ItemProperties::insertProperty(int pos, QString name, int type, bool input, bool output)
00085 {
00086 if ( (pos >= 0) && (pos <= properties.size()) )
00087 {
00088 properties.insert(pos, name);
00089 types.insert(pos, type);
00090 inputs.insert(pos, input);
00091 outputs.insert(pos, output);
00092 }
00093 }
00094
00095 void ItemProperties::deleteProperty(int pos)
00096 {
00097 if ( (pos >= 0) && (pos <= properties.size()) )
00098 {
00099 properties.removeAt(pos);
00100 types.removeAt(pos);
00101 inputs.removeAt(pos);
00102 outputs.removeAt(pos);
00103 }
00104 }
00105
00106 void ItemProperties::deleteProperty(QString name)
00107 {
00108 deleteProperty(properties.indexOf(name));
00109 }
00110