Mercurial > hg > svcore
diff base/PropertyContainer.h @ 0:da6937383da8
initial import
author | Chris Cannam |
---|---|
date | Tue, 10 Jan 2006 16:33:16 +0000 |
parents | |
children | d86891498eef |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/base/PropertyContainer.h Tue Jan 10 16:33:16 2006 +0000 @@ -0,0 +1,86 @@ +/* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */ + +/* + A waveform viewer and audio annotation editor. + Chris Cannam, Queen Mary University of London, 2005 + + This is experimental software. Not for distribution. +*/ + +#ifndef _PROPERTY_CONTAINER_H_ +#define _PROPERTY_CONTAINER_H_ + +#include <QString> +#include <QObject> +#include <vector> + +class Playable; + +class PropertyContainer +{ +public: + typedef QString PropertyName; + typedef std::vector<PropertyName> PropertyList; + + enum PropertyType { + ToggleProperty, // on or off + RangeProperty, // range of integers + ValueProperty, // range of integers given string labels + ColourProperty, // colours, get/set as qRgb + InvalidProperty, // property not found! + }; + + /** + * Get a list of the names of all the supported properties on this + * container. Note that these should already have been + * internationalized with a call to tr() or equivalent. If the + * container needs to test for equality with string literals + * subsequently, it must be sure to call tr() again on the strings + * in order to ensure they match. + */ + virtual PropertyList getProperties() const; + + /** + * Return the type of the given property, or InvalidProperty if + * the property is not supported on this container. + */ + virtual PropertyType getPropertyType(const PropertyName &) const; + + /** + * If this property has something in common with other properties + * on this container, return a name that can be used to group them + * (in order to save screen space, for example). e.g. "Window + * Type" and "Window Size" might both have a group name of "Window". + * If this property is not groupable, return the empty string. + */ + virtual QString getPropertyGroupName(const PropertyName &) const; + + /** + * Return the minimum and maximum values for the given property + * and its current value in this container. Min and/or max may be + * passed as NULL if their values are not required. + */ + virtual int getPropertyRangeAndValue(const PropertyName &, + int *min, int *max) const; + + /** + * If the given property is a ValueProperty, return the display + * label to be used for the given value for that property. + */ + virtual QString getPropertyValueLabel(const PropertyName &, + int value) const; + + /** + * Set a property. This is used for all property types. For + * boolean properties, zero is false and non-zero true; for + * colours, the integer value should be treated as a qRgb. + */ + virtual void setProperty(const PropertyName &, int value); + + virtual QString getPropertyContainerName() const = 0; + virtual QString getPropertyContainerIconName() const = 0; + + Playable *getPlayable() const { return 0; } +}; + +#endif