summaryrefslogtreecommitdiffstats
path: root/bf_svtools/source/config/svt_itemholder1.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'bf_svtools/source/config/svt_itemholder1.cxx')
-rw-r--r--bf_svtools/source/config/svt_itemholder1.cxx316
1 files changed, 316 insertions, 0 deletions
diff --git a/bf_svtools/source/config/svt_itemholder1.cxx b/bf_svtools/source/config/svt_itemholder1.cxx
new file mode 100644
index 000000000..b81b1bf99
--- /dev/null
+++ b/bf_svtools/source/config/svt_itemholder1.cxx
@@ -0,0 +1,316 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "itemholder1.hxx"
+
+#include <comphelper/processfactory.hxx>
+
+#include <com/sun/star/lang/XComponent.hpp>
+
+#include <bf_svtools/addxmltostorageoptions.hxx>
+#include <cacheoptions.hxx>
+#include <bf_svtools/cmdoptions.hxx>
+#include <bf_svtools/compatibility.hxx>
+#include <bf_svtools/defaultoptions.hxx>
+#include <bf_svtools/dynamicmenuoptions.hxx>
+#include <bf_svtools/extendedsecurityoptions.hxx>
+#include <unotools/configitem.hxx>
+#include <bf_svtools/fontoptions.hxx>
+#include <bf_svtools/historyoptions.hxx>
+#include <bf_svtools/inetoptions.hxx>
+#include <bf_svtools/internaloptions.hxx>
+#include <sal/types.h>
+#include <unotools/configitem.hxx>
+#include <bf_svtools/lingucfg.hxx>
+#include <bf_svtools/localisationoptions.hxx>
+#include <bf_svtools/menuoptions.hxx>
+#include <bf_svtools/moduleoptions.hxx>
+#include <bf_svtools/options3d.hxx>
+#include <bf_svtools/pathoptions.hxx>
+#include <bf_svtools/printwarningoptions.hxx>
+#include <bf_tools/string.hxx>
+#include <bf_svtools/optionsdlg.hxx>
+#include <bf_svtools/saveopt.hxx>
+#include <searchopt.hxx>
+#include <bf_svtools/securityoptions.hxx>
+#include <bf_svtools/sourceviewconfig.hxx>
+#include <bf_svtools/startoptions.hxx>
+#include <bf_svtools/viewoptions.hxx>
+#include <bf_svtools/workingsetoptions.hxx>
+#include <bf_svtools/options.hxx>
+
+//-----------------------------------------------
+// namespaces
+
+namespace css = ::com::sun::star;
+
+namespace binfilter
+{
+
+
+//-----------------------------------------------
+ItemHolder1::ItemHolder1()
+ : ItemHolderMutexBase()
+{
+ try
+ {
+ css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR = ::comphelper::getProcessServiceFactory();
+ css::uno::Reference< css::lang::XComponent > xCfg(
+ xSMGR->createInstance(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ))),
+ css::uno::UNO_QUERY);
+ if (xCfg.is())
+ xCfg->addEventListener(static_cast< css::lang::XEventListener* >(this));
+ }
+#ifdef DBG_UTIL
+ catch(css::uno::Exception& rEx)
+ {
+ static sal_Bool bMessage = sal_True;
+ if(bMessage)
+ {
+ bMessage = sal_False;
+ ::rtl::OString sMsg("CreateInstance with arguments exception: ");
+ sMsg += ::rtl::OString(rEx.Message.getStr(),
+ rEx.Message.getLength(),
+ RTL_TEXTENCODING_ASCII_US);
+ OSL_FAIL(sMsg.getStr());
+ }
+ }
+#else
+ catch(css::uno::Exception&){}
+#endif
+}
+
+//-----------------------------------------------
+ItemHolder1::~ItemHolder1()
+{
+ impl_releaseAllItems();
+}
+
+//-----------------------------------------------
+void ItemHolder1::holdConfigItem(EItem eItem)
+{
+ static ItemHolder1* pHolder = new ItemHolder1();
+ pHolder->impl_addItem(eItem);
+}
+
+//-----------------------------------------------
+void SAL_CALL ItemHolder1::disposing(const css::lang::EventObject&)
+ throw(css::uno::RuntimeException)
+{
+ css::uno::Reference< css::uno::XInterface > xSelfHold(static_cast< css::lang::XEventListener* >(this), css::uno::UNO_QUERY);
+ impl_releaseAllItems();
+}
+
+//-----------------------------------------------
+void ItemHolder1::impl_addItem(EItem eItem)
+{
+ ::osl::ResettableMutexGuard aLock(m_aLock);
+
+ TItems::const_iterator pIt;
+ for ( pIt = m_lItems.begin();
+ pIt != m_lItems.end() ;
+ ++pIt )
+ {
+ const TItemInfo& rInfo = *pIt;
+ if (rInfo.eItem == eItem)
+ return;
+ }
+
+ TItemInfo aNewItem;
+ aNewItem.eItem = eItem;
+ impl_newItem(aNewItem);
+ if (aNewItem.pItem)
+ m_lItems.push_back(aNewItem);
+}
+
+//-----------------------------------------------
+void ItemHolder1::impl_releaseAllItems()
+{
+ ::osl::ResettableMutexGuard aLock(m_aLock);
+
+ TItems::iterator pIt;
+ for ( pIt = m_lItems.begin();
+ pIt != m_lItems.end() ;
+ ++pIt )
+ {
+ TItemInfo& rInfo = *pIt;
+ impl_deleteItem(rInfo);
+ }
+ m_lItems.clear();
+}
+
+//-----------------------------------------------
+void ItemHolder1::impl_newItem(TItemInfo& rItem)
+{
+ switch(rItem.eItem)
+ {
+ case E_ADDXMLTOSTORAGEOPTIONS :
+ rItem.pItem = new SvtAddXMLToStorageOptions();
+ break;
+
+ case E_CMDOPTIONS :
+ rItem.pItem = new SvtCommandOptions();
+ break;
+
+ case E_COMPATIBILITY :
+ rItem.pItem = new SvtCompatibilityOptions();
+ break;
+
+ case E_DEFAULTOPTIONS :
+ rItem.pItem = new SvtDefaultOptions();
+ break;
+
+ case E_DYNAMICMENUOPTIONS :
+ rItem.pItem = new SvtDynamicMenuOptions();
+ break;
+
+ case E_EVENTCFG :
+ break;
+
+ case E_EXTENDEDSECURITYOPTIONS :
+ rItem.pItem = new SvtExtendedSecurityOptions();
+ break;
+
+ case E_FLTRCFG :
+ break;
+
+ case E_FONTOPTIONS :
+ rItem.pItem = new SvtFontOptions();
+ break;
+
+ case E_HISTORYOPTIONS :
+ rItem.pItem = new SvtHistoryOptions();
+ break;
+
+ case E_INETOPTIONS :
+ rItem.pItem = new SvtInetOptions();
+ break;
+
+ case E_INTERNALOPTIONS :
+ rItem.pItem = new SvtInternalOptions();
+ break;
+
+ case E_JAVAOPTIONS :
+ break;
+
+ case E_LINGUCFG :
+ rItem.pItem = new SvtLinguConfig();
+ break;
+
+ case E_LOCALISATIONOPTIONS :
+ rItem.pItem = new SvtLocalisationOptions();
+ break;
+
+ case E_MENUOPTIONS :
+ rItem.pItem = new SvtMenuOptions();
+ break;
+
+ case E_MODULEOPTIONS :
+ rItem.pItem = new SvtModuleOptions();
+ break;
+
+ case E_OPTIONSDLGOPTIONS :
+ rItem.pItem = new SvtOptionsDialogOptions();
+ break;
+
+ case E_OPTIONS3D :
+ rItem.pItem = new SvtOptions3D();
+ break;
+
+ case E_PATHOPTIONS :
+ rItem.pItem = new SvtPathOptions();
+ break;
+
+ case E_PRINTWARNINGOPTIONS :
+ rItem.pItem = new SvtPrintWarningOptions();
+ break;
+
+ case E_REGOPTIONS :
+ break;
+
+ case E_SAVEOPTIONS :
+ rItem.pItem = new SvtSaveOptions();
+ break;
+
+ case E_SEARCHOPT :
+ break;
+
+ case E_SECURITYOPTIONS :
+ rItem.pItem = new SvtSecurityOptions();
+ break;
+
+ case E_SOURCEVIEWCONFIG :
+ rItem.pItem = new SourceViewConfig();
+ break;
+
+ case E_STARTOPTIONS :
+ rItem.pItem = new SvtStartOptions();
+ break;
+
+ case E_VIEWOPTIONS_DIALOG :
+ rItem.pItem = new SvtViewOptions(E_DIALOG, ::rtl::OUString());
+ break;
+
+ case E_VIEWOPTIONS_TABDIALOG :
+ rItem.pItem = new SvtViewOptions(E_TABDIALOG, ::rtl::OUString());
+ break;
+
+ case E_VIEWOPTIONS_TABPAGE :
+ rItem.pItem = new SvtViewOptions(E_TABPAGE, ::rtl::OUString());
+ break;
+
+ case E_VIEWOPTIONS_WINDOW :
+ rItem.pItem = new SvtViewOptions(E_WINDOW, ::rtl::OUString());
+ break;
+
+ case E_WORKINGSETOPTIONS :
+ rItem.pItem = new SvtWorkingSetOptions();
+ break;
+
+ case E_XMLACCELCFG :
+ // ??? TODO
+ break;
+ default:
+ OSL_FAIL( "unknown item type" );
+ break;
+ }
+}
+
+//-----------------------------------------------
+void ItemHolder1::impl_deleteItem(TItemInfo& rItem)
+{
+ if (rItem.pItem)
+ {
+ delete rItem.pItem;
+ rItem.pItem = 0;
+ }
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */