summaryrefslogtreecommitdiff
path: root/unotools/source/config/useroptions.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'unotools/source/config/useroptions.cxx')
-rw-r--r--unotools/source/config/useroptions.cxx1300
1 files changed, 1300 insertions, 0 deletions
diff --git a/unotools/source/config/useroptions.cxx b/unotools/source/config/useroptions.cxx
new file mode 100644
index 000000000000..e06d6a794e20
--- /dev/null
+++ b/unotools/source/config/useroptions.cxx
@@ -0,0 +1,1300 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: useroptions.cxx,v $
+ * $Revision: 1.24.238.2 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_unotools.hxx"
+
+#include <unotools/useroptions.hxx>
+#include <unotools/useroptions_const.hxx>
+
+#include <unotools/configmgr.hxx>
+#include <tools/debug.hxx>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <vos/mutex.hxx>
+#include <rtl/instance.hxx>
+#include <rtl/logfile.hxx>
+#include "itemholder1.hxx"
+
+#include <com/sun/star/beans/Property.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#include <com/sun/star/util/XChangesListener.hpp>
+#include <com/sun/star/util/XChangesNotifier.hpp>
+#include <com/sun/star/util/ChangesEvent.hpp>
+#include <comphelper/configurationhelper.hxx>
+#include <unotools/processfactory.hxx>
+#include <unotools/loghelper.hxx>
+
+using namespace utl;
+using namespace rtl;
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+
+namespace css = ::com::sun::star;
+
+// class SvtUserOptions_Impl ---------------------------------------------
+class SvtUserOptions_Impl;
+class SvtUserConfigChangeListener_Impl : public cppu::WeakImplHelper1
+<
+ com::sun::star::util::XChangesListener
+>
+{
+ SvtUserOptions_Impl& m_rParent;
+ public:
+ SvtUserConfigChangeListener_Impl(SvtUserOptions_Impl& rParent);
+ ~SvtUserConfigChangeListener_Impl();
+
+ //XChangesListener
+ virtual void SAL_CALL changesOccurred( const util::ChangesEvent& Event ) throw(RuntimeException);
+ //XEventListener
+ virtual void SAL_CALL disposing( const lang::EventObject& Source ) throw(RuntimeException);
+};
+
+class SvtUserOptions_Impl : public utl::ConfigurationBroadcaster
+{
+public:
+ SvtUserOptions_Impl();
+ ~SvtUserOptions_Impl();
+
+ // get the user token
+ ::rtl::OUString GetCompany() const;
+ ::rtl::OUString GetFirstName() const;
+ ::rtl::OUString GetLastName() const;
+ ::rtl::OUString GetID() const;
+ ::rtl::OUString GetStreet() const;
+ ::rtl::OUString GetCity() const;
+ ::rtl::OUString GetState() const;
+ ::rtl::OUString GetZip() const;
+ ::rtl::OUString GetCountry() const;
+ ::rtl::OUString GetPosition() const;
+ ::rtl::OUString GetTitle() const;
+ ::rtl::OUString GetTelephoneHome() const;
+ ::rtl::OUString GetTelephoneWork() const;
+ ::rtl::OUString GetFax() const;
+ ::rtl::OUString GetEmail() const;
+ ::rtl::OUString GetCustomerNumber() const;
+ ::rtl::OUString GetFathersName() const;
+ ::rtl::OUString GetApartment() const;
+
+ ::rtl::OUString GetFullName() const;
+ ::rtl::OUString GetLocale() const { return m_aLocale; }
+
+ // set the address token
+ void SetCompany( const ::rtl::OUString& rNewToken );
+ void SetFirstName( const ::rtl::OUString& rNewToken );
+ void SetLastName( const ::rtl::OUString& rNewToken );
+ void SetID( const ::rtl::OUString& rNewToken );
+ void SetStreet( const ::rtl::OUString& rNewToken );
+ void SetCity( const ::rtl::OUString& rNewToken );
+ void SetState( const ::rtl::OUString& rNewToken );
+ void SetZip( const ::rtl::OUString& rNewToken );
+ void SetCountry( const ::rtl::OUString& rNewToken );
+ void SetPosition( const ::rtl::OUString& rNewToken );
+ void SetTitle( const ::rtl::OUString& rNewToken );
+ void SetTelephoneHome( const ::rtl::OUString& rNewToken );
+ void SetTelephoneWork( const ::rtl::OUString& rNewToken );
+ void SetFax( const ::rtl::OUString& rNewToken );
+ void SetEmail( const ::rtl::OUString& rNewToken );
+ void SetCustomerNumber( const ::rtl::OUString& rNewToken );
+ void SetFathersName( const ::rtl::OUString& rNewToken );
+ void SetApartment( const ::rtl::OUString& rNewToken );
+
+ sal_Bool IsTokenReadonly( USHORT nToken ) const;
+ ::rtl::OUString GetToken(USHORT nToken) const;
+ void Notify();
+
+private:
+ uno::Reference< util::XChangesListener > m_xChangeListener;
+ css::uno::Reference< css::container::XNameAccess > m_xCfg;
+ css::uno::Reference< css::beans::XPropertySet > m_xData;
+ ::rtl::OUString m_aLocale;
+};
+
+// global ----------------------------------------------------------------
+
+static SvtUserOptions_Impl* pOptions = NULL;
+static sal_Int32 nRefCount = 0;
+
+#define READONLY_DEFAULT sal_False
+
+/*-- 16.06.2009 14:22:56---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SvtUserConfigChangeListener_Impl::SvtUserConfigChangeListener_Impl(SvtUserOptions_Impl& rParent) :
+ m_rParent( rParent )
+{
+}
+/*-- 16.06.2009 14:22:56---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SvtUserConfigChangeListener_Impl::~SvtUserConfigChangeListener_Impl()
+{
+}
+/*-- 16.06.2009 14:22:56---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SvtUserConfigChangeListener_Impl::changesOccurred( const util::ChangesEvent& rEvent ) throw(RuntimeException)
+{
+ if(rEvent.Changes.getLength())
+ m_rParent.Notify();
+}
+/*-- 16.06.2009 14:22:56---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SvtUserConfigChangeListener_Impl::disposing( const lang::EventObject& rSource ) throw(RuntimeException)
+{
+ try
+ {
+ uno::Reference< util::XChangesNotifier > xChgNot( rSource.Source, UNO_QUERY_THROW);
+ xChgNot->removeChangesListener(this);
+ }
+ catch(Exception& )
+ {
+ }
+}
+
+// class SvtUserOptions_Impl ---------------------------------------------
+
+// -----------------------------------------------------------------------
+SvtUserOptions_Impl::SvtUserOptions_Impl() :
+ m_xChangeListener( new SvtUserConfigChangeListener_Impl(*this) )
+{
+ try
+ {
+ m_xCfg = Reference< css::container::XNameAccess > (
+ ::comphelper::ConfigurationHelper::openConfig(
+ utl::getProcessServiceFactory(),
+ s_sData,
+ ::comphelper::ConfigurationHelper::E_STANDARD),
+ css::uno::UNO_QUERY );
+
+ m_xData = css::uno::Reference< css::beans::XPropertySet >(m_xCfg, css::uno::UNO_QUERY);
+ uno::Reference< util::XChangesNotifier > xChgNot( m_xCfg, UNO_QUERY);
+ try
+ {
+ xChgNot->addChangesListener( m_xChangeListener );
+ }
+ catch(RuntimeException& )
+ {
+ }
+ }
+ catch(const css::uno::Exception& ex)
+ {
+ m_xCfg.clear();
+ LogHelper::logIt(ex);
+ }
+
+ Any aAny = ConfigManager::GetConfigManager()->GetDirectConfigProperty( ConfigManager::LOCALE );
+ ::rtl::OUString aLocale;
+ if ( aAny >>= aLocale )
+ m_aLocale = aLocale;
+ else
+ {
+ DBG_ERRORFILE( "SvtUserOptions_Impl::SvtUserOptions_Impl(): no locale found" );
+ }
+}
+
+// -----------------------------------------------------------------------
+
+SvtUserOptions_Impl::~SvtUserOptions_Impl()
+{
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetCompany() const
+{
+ ::rtl::OUString sCompany;
+
+ try
+ {
+ m_xData->getPropertyValue(s_so) >>= sCompany;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sCompany;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetFirstName() const
+{
+ ::rtl::OUString sFirstName;
+
+ try
+ {
+ m_xData->getPropertyValue(s_sgivenname) >>= sFirstName;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sFirstName;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetLastName() const
+{
+ ::rtl::OUString sLastName;
+
+ try
+ {
+ m_xData->getPropertyValue(s_ssn) >>= sLastName;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sLastName;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetID() const
+{
+ ::rtl::OUString sID;
+
+ try
+ {
+ m_xData->getPropertyValue(s_sinitials) >>= sID;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sID;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetStreet() const
+{
+ ::rtl::OUString sStreet;
+
+ try
+ {
+ m_xData->getPropertyValue(s_sstreet) >>= sStreet;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sStreet;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetCity() const
+{
+ ::rtl::OUString sCity;
+
+ try
+ {
+ m_xData->getPropertyValue(s_sl) >>= sCity;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sCity;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetState() const
+{
+ ::rtl::OUString sState;
+
+ try
+ {
+ m_xData->getPropertyValue(s_sst) >>= sState;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sState;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetZip() const
+{
+ ::rtl::OUString sZip;
+
+ try
+ {
+ m_xData->getPropertyValue(s_spostalcode) >>= sZip;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sZip;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetCountry() const
+{
+ ::rtl::OUString sCountry;
+
+ try
+ {
+ m_xData->getPropertyValue(s_sc) >>= sCountry;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sCountry;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetPosition() const
+{
+ ::rtl::OUString sPosition;
+
+ try
+ {
+ m_xData->getPropertyValue(s_sposition) >>= sPosition;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sPosition;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetTitle() const
+{
+ ::rtl::OUString sTitle;
+
+ try
+ {
+ m_xData->getPropertyValue(s_stitle) >>= sTitle;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sTitle;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetTelephoneHome() const
+{
+ ::rtl::OUString sTelephoneHome;
+
+ try
+ {
+ m_xData->getPropertyValue(s_shomephone) >>= sTelephoneHome;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sTelephoneHome;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetTelephoneWork() const
+{
+ ::rtl::OUString sTelephoneWork;
+
+ try
+ {
+ m_xData->getPropertyValue(s_stelephonenumber) >>= sTelephoneWork;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sTelephoneWork;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetFax() const
+{
+ ::rtl::OUString sFax;
+
+ try
+ {
+ m_xData->getPropertyValue(s_sfacsimiletelephonenumber) >>= sFax;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sFax;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetEmail() const
+{
+ ::rtl::OUString sEmail;
+
+ try
+ {
+ m_xData->getPropertyValue(s_smail) >>= sEmail;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sEmail;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetCustomerNumber() const
+{
+ ::rtl::OUString sCustomerNumber;
+
+ try
+ {
+ m_xData->getPropertyValue(s_scustomernumber) >>= sCustomerNumber;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sCustomerNumber;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetFathersName() const
+{
+ ::rtl::OUString sFathersName;
+
+ try
+ {
+ m_xData->getPropertyValue(s_sfathersname) >>= sFathersName;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sFathersName;
+}
+
+::rtl::OUString SvtUserOptions_Impl::GetApartment() const
+{
+ ::rtl::OUString sApartment;
+
+ try
+ {
+ m_xData->getPropertyValue(s_sapartment) >>= sApartment;
+ }
+ catch ( const css::uno::Exception& ex )
+ {
+ LogHelper::logIt(ex);
+ }
+
+ return sApartment;
+}
+
+void SvtUserOptions_Impl::SetCompany( const ::rtl::OUString& sCompany )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_so, css::uno::makeAny(::rtl::OUString(sCompany)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetFirstName( const ::rtl::OUString& sFirstName )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_sgivenname, css::uno::makeAny(::rtl::OUString(sFirstName)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetLastName( const ::rtl::OUString& sLastName )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_ssn, css::uno::makeAny(::rtl::OUString(sLastName)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+void SvtUserOptions_Impl::SetID( const ::rtl::OUString& sID )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_sinitials, css::uno::makeAny(::rtl::OUString(sID)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetStreet( const ::rtl::OUString& sStreet )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_sstreet, css::uno::makeAny(::rtl::OUString(sStreet)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetCity( const ::rtl::OUString& sCity )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_sl, css::uno::makeAny(::rtl::OUString(sCity)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetState( const ::rtl::OUString& sState )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_sst, css::uno::makeAny(::rtl::OUString(sState)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetZip( const ::rtl::OUString& sZip )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_spostalcode, css::uno::makeAny(::rtl::OUString(sZip)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetCountry( const ::rtl::OUString& sCountry )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_sc, css::uno::makeAny(::rtl::OUString(sCountry)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetPosition( const ::rtl::OUString& sPosition )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_sposition, css::uno::makeAny(::rtl::OUString(sPosition)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetTitle( const ::rtl::OUString& sTitle )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_stitle, css::uno::makeAny(::rtl::OUString(sTitle)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetTelephoneHome( const ::rtl::OUString& sTelephoneHome )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_shomephone, css::uno::makeAny(::rtl::OUString(sTelephoneHome)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetTelephoneWork( const ::rtl::OUString& sTelephoneWork )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_stelephonenumber, css::uno::makeAny(::rtl::OUString(sTelephoneWork)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetFax( const ::rtl::OUString& sFax )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_sfacsimiletelephonenumber, css::uno::makeAny(::rtl::OUString(sFax)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetEmail( const ::rtl::OUString& sEmail )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_smail, css::uno::makeAny(::rtl::OUString(sEmail)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetCustomerNumber( const ::rtl::OUString& sCustomerNumber )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_scustomernumber, css::uno::makeAny(::rtl::OUString(sCustomerNumber)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetFathersName( const ::rtl::OUString& sFathersName )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_sfathersname, css::uno::makeAny(::rtl::OUString(sFathersName)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+void SvtUserOptions_Impl::SetApartment( const ::rtl::OUString& sApartment )
+{
+ try
+ {
+ m_xData->setPropertyValue(s_sapartment, css::uno::makeAny(::rtl::OUString(sApartment)));
+ ::comphelper::ConfigurationHelper::flush(m_xCfg);
+ }
+ catch ( const css::uno::Exception& ex)
+ {
+ LogHelper::logIt(ex);
+ }
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions_Impl::GetFullName() const
+{
+ ::rtl::OUString sFullName;
+
+ sFullName = GetFirstName();
+ sFullName.trim();
+ if ( sFullName.getLength() )
+ sFullName += ::rtl::OUString::createFromAscii(" ");
+ sFullName += GetLastName();
+ sFullName.trim();
+
+ return sFullName;
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions_Impl::Notify()
+{
+ NotifyListeners(0);
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool SvtUserOptions_Impl::IsTokenReadonly( USHORT nToken ) const
+{
+ css::uno::Reference< css::beans::XPropertySet > xData(m_xCfg, css::uno::UNO_QUERY);
+ css::uno::Reference< css::beans::XPropertySetInfo > xInfo = xData->getPropertySetInfo();
+ css::beans::Property aProp;
+ sal_Bool bRet = sal_False;
+
+ switch ( nToken )
+ {
+ case USER_OPT_COMPANY:
+ {
+ aProp = xInfo->getPropertyByName(s_so);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_FIRSTNAME:
+ {
+ aProp = xInfo->getPropertyByName(s_sgivenname);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_LASTNAME:
+ {
+ aProp = xInfo->getPropertyByName(s_ssn);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_ID:
+ {
+ aProp = xInfo->getPropertyByName(s_sinitials);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_STREET:
+ {
+ aProp = xInfo->getPropertyByName(s_sstreet);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_CITY:
+ {
+ aProp = xInfo->getPropertyByName(s_sl);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_STATE:
+ {
+ aProp = xInfo->getPropertyByName(s_sst);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_ZIP:
+ {
+ aProp = xInfo->getPropertyByName(s_spostalcode);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_COUNTRY:
+ {
+ aProp = xInfo->getPropertyByName(s_sc);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_POSITION:
+ {
+ aProp = xInfo->getPropertyByName(s_sposition);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_TITLE:
+ {
+ aProp = xInfo->getPropertyByName(s_stitle);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_TELEPHONEHOME:
+ {
+ aProp = xInfo->getPropertyByName(s_shomephone);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_TELEPHONEWORK:
+ {
+ aProp = xInfo->getPropertyByName(s_stelephonenumber);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_FAX:
+ {
+ aProp = xInfo->getPropertyByName(s_sfacsimiletelephonenumber);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_EMAIL:
+ {
+ aProp = xInfo->getPropertyByName(s_smail);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_FATHERSNAME:
+ {
+ aProp = xInfo->getPropertyByName(s_sfathersname);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ case USER_OPT_APARTMENT:
+ {
+ aProp = xInfo->getPropertyByName(s_sapartment);
+ bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
+ break;
+ }
+ default:
+ DBG_ERRORFILE( "SvtUserOptions_Impl::IsTokenReadonly(): invalid token" );
+ }
+
+ return bRet;
+}
+
+//------------------------------------------------------------------------
+::rtl::OUString SvtUserOptions_Impl::GetToken(USHORT nToken) const
+{
+ ::rtl::OUString pRet;
+ switch(nToken)
+ {
+ case USER_OPT_COMPANY: pRet = GetCompany(); break;
+ case USER_OPT_FIRSTNAME: pRet = GetFirstName(); break;
+ case USER_OPT_LASTNAME: pRet = GetLastName(); break;
+ case USER_OPT_ID: pRet = GetID(); break;
+ case USER_OPT_STREET: pRet = GetStreet(); break;
+ case USER_OPT_CITY: pRet = GetCity(); break;
+ case USER_OPT_STATE: pRet = GetState(); break;
+ case USER_OPT_ZIP: pRet = GetZip(); break;
+ case USER_OPT_COUNTRY: pRet = GetCountry(); break;
+ case USER_OPT_POSITION: pRet = GetPosition(); break;
+ case USER_OPT_TITLE: pRet = GetTitle(); break;
+ case USER_OPT_TELEPHONEHOME: pRet = GetTelephoneHome(); break;
+ case USER_OPT_TELEPHONEWORK: pRet = GetTelephoneWork(); break;
+ case USER_OPT_FAX: pRet = GetFax(); break;
+ case USER_OPT_EMAIL: pRet = GetEmail(); break;
+ case USER_OPT_FATHERSNAME: pRet = GetFathersName(); break;
+ case USER_OPT_APARTMENT: pRet = GetApartment(); break;
+ default:
+ DBG_ERRORFILE( "SvtUserOptions_Impl::GetToken(): invalid token" );
+ }
+ return pRet;
+}
+
+// class SvtUserOptions --------------------------------------------------
+
+SvtUserOptions::SvtUserOptions()
+{
+ // Global access, must be guarded (multithreading)
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+
+ if ( !pOptions )
+ {
+ RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtUserOptions_Impl::ctor()");
+ pOptions = new SvtUserOptions_Impl;
+
+ ItemHolder1::holdConfigItem(E_USEROPTIONS);
+ }
+ ++nRefCount;
+ pImp = pOptions;
+ pImp->AddListener(this);
+}
+
+// -----------------------------------------------------------------------
+
+SvtUserOptions::~SvtUserOptions()
+{
+ // Global access, must be guarded (multithreading)
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->RemoveListener(this);
+ if ( !--nRefCount )
+ {
+ //if ( pOptions->IsModified() )
+ // pOptions->Commit();
+ DELETEZ( pOptions );
+ }
+}
+
+// -----------------------------------------------------------------------
+
+::osl::Mutex& SvtUserOptions::GetInitMutex()
+{
+ // Initialize static mutex only for one time!
+ static ::osl::Mutex* pMutex = NULL;
+ // If these method first called (Mutex not already exist!) ...
+ if ( pMutex == NULL )
+ {
+ // ... we must create a new one. Protect follow code with the global mutex -
+ // It must be - we create a static variable!
+ ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
+ // We must check our pointer again -
+ // because another instance of our class will be faster then this instance!
+ if ( pMutex == NULL )
+ {
+ // Create the new mutex and set it for return on static variable.
+ static ::osl::Mutex aMutex;
+ pMutex = &aMutex;
+ }
+ }
+ // Return new created or already existing mutex object.
+ return *pMutex;
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetCompany() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetCompany();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetFirstName() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetFirstName();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetLastName() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetLastName();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetID() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetID();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetStreet() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetStreet();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetCity() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetCity();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetState() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetState();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetZip() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetZip();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetCountry() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetCountry();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetPosition() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetPosition();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetTitle() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetTitle();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetTelephoneHome() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetTelephoneHome();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetTelephoneWork() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetTelephoneWork();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetFax() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetFax();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetEmail() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetEmail();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetCustomerNumber() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetCustomerNumber();
+}
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetFathersName() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetFathersName() ;
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetApartment() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetApartment();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetFullName() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetFullName();
+}
+
+// -----------------------------------------------------------------------
+
+::rtl::OUString SvtUserOptions::GetLocale() const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetLocale();
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetCompany( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetCompany( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetFirstName( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetFirstName( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetLastName( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetLastName( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetID( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetID( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetStreet( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetStreet( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetCity( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetCity( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetState( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetState( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetZip( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetZip( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetCountry( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetCountry( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetPosition( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetPosition( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetTitle( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetTitle( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetTelephoneHome( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetTelephoneHome( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetTelephoneWork( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetTelephoneWork( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetFax( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetFax( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetEmail( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetEmail( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetCustomerNumber( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetCustomerNumber( rNewToken );
+}
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetFathersName( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetFathersName( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+void SvtUserOptions::SetApartment( const ::rtl::OUString& rNewToken )
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ pImp->SetApartment( rNewToken );
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool SvtUserOptions::IsTokenReadonly( USHORT nToken ) const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->IsTokenReadonly( nToken );
+}
+//------------------------------------------------------------------------
+::rtl::OUString SvtUserOptions::GetToken(USHORT nToken) const
+{
+ ::osl::MutexGuard aGuard( GetInitMutex() );
+ return pImp->GetToken( nToken );
+}