summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sdext/source/presenter/PresenterConfigurationAccess.cxx193
1 files changed, 175 insertions, 18 deletions
diff --git a/sdext/source/presenter/PresenterConfigurationAccess.cxx b/sdext/source/presenter/PresenterConfigurationAccess.cxx
index 43659b541fbc..7909d39e14e7 100644
--- a/sdext/source/presenter/PresenterConfigurationAccess.cxx
+++ b/sdext/source/presenter/PresenterConfigurationAccess.cxx
@@ -8,7 +8,7 @@
*
* $RCSfile: PresenterConfigurationAccess.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
* This file is part of OpenOffice.org.
*
@@ -40,13 +40,19 @@ using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using ::rtl::OUString;
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
namespace sdext { namespace presenter {
+const ::rtl::OUString PresenterConfigurationAccess::msPresenterScreenRootName =
+ A2S("/org.openoffice.Office.extension.PresenterScreen/");
+
PresenterConfigurationAccess::PresenterConfigurationAccess (
const Reference<XComponentContext>& rxContext,
const OUString& rsRootName,
WriteMode eMode)
- : mxRoot()
+ : mxRoot(),
+ maNode()
{
try
{
@@ -55,37 +61,35 @@ PresenterConfigurationAccess::PresenterConfigurationAccess (
{
Sequence<Any> aCreationArguments(3);
aCreationArguments[0] = makeAny(beans::PropertyValue(
- OUString(
- RTL_CONSTASCII_USTRINGPARAM("nodepath")),
+ A2S("nodepath"),
0,
makeAny(rsRootName),
beans::PropertyState_DIRECT_VALUE));
aCreationArguments[1] = makeAny(beans::PropertyValue(
- OUString(RTL_CONSTASCII_USTRINGPARAM("depth")),
+ A2S("depth"),
0,
makeAny((sal_Int32)-1),
beans::PropertyState_DIRECT_VALUE));
aCreationArguments[2] = makeAny(beans::PropertyValue(
- OUString(RTL_CONSTASCII_USTRINGPARAM("lazywrite")),
+ A2S("lazywrite"),
0,
makeAny(true),
beans::PropertyState_DIRECT_VALUE));
OUString sAccessService;
if (eMode == READ_ONLY)
- sAccessService = OUString(RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.configuration.ConfigurationAccess"));
+ sAccessService = A2S("com.sun.star.configuration.ConfigurationAccess");
else
- sAccessService = OUString(RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.configuration.ConfigurationUpdateAccess"));
+ sAccessService = A2S("com.sun.star.configuration.ConfigurationUpdateAccess");
Reference<lang::XMultiServiceFactory> xProvider (
xFactory->createInstanceWithContext(
- OUString::createFromAscii("com.sun.star.configuration.ConfigurationProvider"),
+ A2S("com.sun.star.configuration.ConfigurationProvider"),
rxContext),
UNO_QUERY_THROW);
mxRoot = xProvider->createInstanceWithArguments(
sAccessService, aCreationArguments);
+ maNode <<= mxRoot;
}
}
catch (Exception& rException)
@@ -99,6 +103,21 @@ PresenterConfigurationAccess::PresenterConfigurationAccess (
+PresenterConfigurationAccess::~PresenterConfigurationAccess (void)
+{
+}
+
+
+
+
+bool PresenterConfigurationAccess::IsValid (void) const
+{
+ return mxRoot.is();
+}
+
+
+
+
Any PresenterConfigurationAccess::GetConfigurationNode (const OUString& sPathToNode)
{
return GetConfigurationNode(
@@ -109,6 +128,72 @@ Any PresenterConfigurationAccess::GetConfigurationNode (const OUString& sPathToN
+Reference<beans::XPropertySet> PresenterConfigurationAccess::GetNodeProperties (
+ const OUString& sPathToNode)
+{
+ return GetNodeProperties(
+ Reference<container::XHierarchicalNameAccess>(mxRoot, UNO_QUERY),
+ sPathToNode);
+}
+
+
+
+
+bool PresenterConfigurationAccess::GoToChild (const ::rtl::OUString& rsPathToNode)
+{
+ if ( ! IsValid())
+ return false;
+
+ Reference<container::XHierarchicalNameAccess> xNode (maNode, UNO_QUERY);
+ if (xNode.is())
+ {
+ maNode = GetConfigurationNode(
+ Reference<container::XHierarchicalNameAccess>(maNode, UNO_QUERY),
+ rsPathToNode);
+ if (Reference<XInterface>(maNode, UNO_QUERY).is())
+ return true;
+ }
+
+ mxRoot = NULL;
+ return false;
+}
+
+
+
+
+bool PresenterConfigurationAccess::GoToChild (const Predicate& rPredicate)
+{
+ if ( ! IsValid())
+ return false;
+
+ maNode = Find(Reference<container::XNameAccess>(maNode,UNO_QUERY), rPredicate);
+ if (Reference<XInterface>(maNode, UNO_QUERY).is())
+ return true;
+
+ mxRoot = NULL;
+ return false;
+}
+
+
+
+
+bool PresenterConfigurationAccess::SetProperty (
+ const ::rtl::OUString& rsPropertyName,
+ const Any& rValue)
+{
+ Reference<beans::XPropertySet> xProperties (maNode, UNO_QUERY);
+ if (xProperties.is())
+ {
+ xProperties->setPropertyValue(rsPropertyName, rValue);
+ return true;
+ }
+ else
+ return false;
+}
+
+
+
+
Any PresenterConfigurationAccess::GetConfigurationNode (
const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
const OUString& sPathToNode)
@@ -136,6 +221,16 @@ Any PresenterConfigurationAccess::GetConfigurationNode (
+Reference<beans::XPropertySet> PresenterConfigurationAccess::GetNodeProperties (
+ const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
+ const ::rtl::OUString& rsPathToNode)
+{
+ return Reference<beans::XPropertySet>(GetConfigurationNode(rxNode, rsPathToNode), UNO_QUERY);
+}
+
+
+
+
void PresenterConfigurationAccess::CommitChanges (void)
{
Reference<util::XChangesBatch> xConfiguration (mxRoot, UNO_QUERY);
@@ -176,6 +271,8 @@ void PresenterConfigurationAccess::ForAll (
bool bHasAllValues (true);
const OUString& rsKey (aKeys[nItemIndex]);
Reference<container::XNameAccess> xSetItem (rxContainer->getByName(rsKey), UNO_QUERY);
+ Reference<beans::XPropertySet> xSet (xSetItem, UNO_QUERY);
+ OSL_ASSERT(xSet.is());
if (xSetItem.is())
{
// Get from the current item of the container the children
@@ -199,6 +296,26 @@ void PresenterConfigurationAccess::ForAll (
+void PresenterConfigurationAccess::ForAll (
+ const Reference<container::XNameAccess>& rxContainer,
+ const PropertySetProcessor& rProcessor)
+{
+ if (rxContainer.is())
+ {
+ Sequence<OUString> aKeys (rxContainer->getElementNames());
+ for (sal_Int32 nItemIndex=0; nItemIndex<aKeys.getLength(); ++nItemIndex)
+ {
+ const OUString& rsKey (aKeys[nItemIndex]);
+ Reference<beans::XPropertySet> xSet (rxContainer->getByName(rsKey), UNO_QUERY);
+ if (xSet.is())
+ rProcessor(rsKey, xSet);
+ }
+ }
+}
+
+
+
+
void PresenterConfigurationAccess::FillList(
const Reference<container::XNameAccess>& rxContainer,
const ::rtl::OUString& rsArgument,
@@ -228,7 +345,7 @@ void PresenterConfigurationAccess::FillList(
-Reference<container::XNameAccess> PresenterConfigurationAccess::Find (
+Any PresenterConfigurationAccess::Find (
const Reference<container::XNameAccess>& rxContainer,
const Predicate& rPredicate)
{
@@ -237,14 +354,54 @@ Reference<container::XNameAccess> PresenterConfigurationAccess::Find (
Sequence<OUString> aKeys (rxContainer->getElementNames());
for (sal_Int32 nItemIndex=0; nItemIndex<aKeys.getLength(); ++nItemIndex)
{
- Reference<container::XNameAccess> xSetItem (
- rxContainer->getByName(aKeys[nItemIndex]), UNO_QUERY);
- if (xSetItem.is())
- if (rPredicate(aKeys[nItemIndex], xSetItem))
- return xSetItem;
+ Reference<beans::XPropertySet> xProperties (
+ rxContainer->getByName(aKeys[nItemIndex]),
+ UNO_QUERY);
+ if (xProperties.is())
+ if (rPredicate(aKeys[nItemIndex], xProperties))
+ return Any(xProperties);
}
}
- return NULL;
+ return Any();
+}
+
+
+
+
+bool PresenterConfigurationAccess::IsStringPropertyEqual (
+ const ::rtl::OUString& rsValue,
+ const ::rtl::OUString& rsPropertyName,
+ const css::uno::Reference<css::beans::XPropertySet>& rxNode)
+{
+ OUString sValue;
+ if (GetProperty(rxNode, rsPropertyName) >>= sValue)
+ return sValue == rsValue;
+ else
+ return false;
+}
+
+
+
+
+Any PresenterConfigurationAccess::GetProperty (
+ const Reference<beans::XPropertySet>& rxProperties,
+ const OUString& rsKey)
+{
+ OSL_ASSERT(rxProperties.is());
+ if ( ! rxProperties.is())
+ return Any();
+ try
+ {
+ Reference<beans::XPropertySetInfo> xInfo (rxProperties->getPropertySetInfo());
+ if (xInfo.is())
+ if ( ! xInfo->hasPropertyByName(rsKey))
+ return Any();
+ return rxProperties->getPropertyValue(rsKey);
+ }
+ catch (beans::UnknownPropertyException&)
+ {
+ }
+ return Any();
}