Since fiddling around with a sequence of property values is somewhat uncomfortable
in all known UNO language bindings (especially for tasks like simply changing the value
of an existing value), the Settings property wraps the Info
property for easier single-value access.
You should use the Setting property if you need to access a few properties only,
and the Info property if you need access to all existent settings at once.
The object represented by this property supports the ::com::sun::star::beans::PropertyBag
service. That is, you can at runtime add arbitrary new properties to the bag.
Additionally, the property bag supports default values of properties, and thus the
::com::sun::star::beans::XPropertyState interface. If you add an own property to
the bag using ::com::sun::star::beans::XPropertyContainer::addProperty, you need
to specifiy an initial value, which is also used as default value (exceptions see below).
Effectively, the property bag represented by Settings
contains two classes of properties:
Pre-defined ones and user-defined ones.
Pre-defined properties are properties which are potentially used by the data source, the
application UI for the data source, or a particular backend driver employed by the data source. There's
a large set of such properties, no all of them are effectively used for a concrete data source, nonetheless,
they're all present in the Settings
.
Such properties are not removeable from the bag, that is, their
::com::sun::star::beans::PropertyAttribute::REMOVEABLE attribute is not set.
Usually, you'll find that all of this properties have the
::com::sun::star::beans::PropertyState::PropertyState_DEFAULT_VALUE state.
User-defined properties are the ones which are added at runtime by any instance. They might or might
not be removeable, this depends on whether or not the code adding them specifies the
::com::sun::star::beans::PropertyAttribute::REMOVEABLE attribute. Also, they might
or might not have a default value, determined by the
::com::sun::star::beans::PropertyAttribute::MAYBEDEFAULT attribute at the time they're added
to the bag.
When a data source is made persistent, then properties which are not removeable (which are assumed to be the
pre-defined properties) are ignored when they are in DEFAULT
state. All other properties are
always made persistent, except when an explicit
::com::sun::star::beans::PropertyAttribute::TRANSIENT attribute prohibits this.
Similar, when you obtain the Info property of a DataSource
, the
Settings
bag is asked for all its property values, and the ones which are removeable and
in state default are stripped, and not returned in the Info
sequence.