diff options
Diffstat (limited to 'unotools')
179 files changed, 0 insertions, 56139 deletions
diff --git a/unotools/JunitTest_unotools_complex.mk b/unotools/JunitTest_unotools_complex.mk deleted file mode 100644 index 54c5c71a19..0000000000 --- a/unotools/JunitTest_unotools_complex.mk +++ /dev/null @@ -1,56 +0,0 @@ -# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*- -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2011 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. -# -#************************************************************************* - -$(eval $(call gb_JunitTest_JunitTest,unotools_complex,SRCDIR)) - -$(eval $(call gb_JunitTest_set_defs,unotools_complex,\ - $$(DEFS) \ -)) - -$(eval $(call gb_JunitTest_add_jars,unotools_complex,\ - $(OUTDIR)/bin/OOoRunner.jar \ - $(OUTDIR)/bin/ridl.jar \ - $(OUTDIR)/bin/test.jar \ - $(OUTDIR)/bin/test-tools.jar \ - $(OUTDIR)/bin/unoil.jar \ - $(OUTDIR)/bin/jurt.jar \ -)) - -$(eval $(call gb_JunitTest_add_sourcefiles,unotools_complex,\ - unotools/qa/complex/tempfile/TempFileTest \ - unotools/qa/complex/tempfile/TempFileUnitTest \ - unotools/qa/complex/tempfile/Test01 \ - unotools/qa/complex/tempfile/Test02 \ - unotools/qa/complex/tempfile/TestHelper \ -)) - -$(eval $(call gb_JunitTest_add_classes,unotools_complex,\ - complex.tempfile.TempFileUnitTest \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/unotools/Library_utl.mk b/unotools/Library_utl.mk deleted file mode 100644 index ad12dce09c..0000000000 --- a/unotools/Library_utl.mk +++ /dev/null @@ -1,157 +0,0 @@ -# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*- -# Version: MPL 1.1 / GPLv3+ / LGPLv3+ -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License or as specified alternatively below. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Initial Developer of the Original Code is -# David Tardon, Red Hat Inc. <dtardon@redhat.com> -# Portions created by the Initial Developer are Copyright (C) 2010 the -# Initial Developer. All Rights Reserved. -# -# Major Contributor(s): -# -# For minor contributions see the git repository. -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 3 or later (the "GPLv3+"), or -# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), -# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable -# instead of those above. - -# declare a library -# utl is the name of the library as it is found in Repository.mk -$(eval $(call gb_Library_Library,utl)) - -# declare packages that will be delivered before compilation of utl -# learn more about TYPE in the Package.mk template -$(eval $(call gb_Library_add_package_headers,utl,unotools_inc)) - -# for platforms supporting PCH: declare the location of the pch file -# this is the name of the cxx file (without extension) -$(eval $(call gb_Library_add_precompiled_header,utl,$(SRCDIR)/unotools/inc/pch/precompiled_unotools)) - -# in case UNO services are exported: declare location of component file -$(eval $(call gb_Library_set_componentfile,utl,unotools/util/utl)) - -# add any additional include paths for this library here -$(eval $(call gb_Library_set_include,utl,\ - $$(INCLUDE) \ - -I$(realpath $(SRCDIR)/unotools/inc/pch) \ - -I$(OUTDIR)/inc \ -)) - -# add any additional definitions to be set for compilation here -# (e.g. -DLIB_DLLIMPLEMENTATION) -$(eval $(call gb_Library_add_defs,utl,\ - -DUNOTOOLS_DLLIMPLEMENTATION \ -)) - -$(eval $(call gb_Library_add_api,utl,\ - offapi \ - udkapi \ -)) - -# add libraries to be linked to utl; again these names need to be given as -# specified in Repository.mk -$(eval $(call gb_Library_add_linked_libs,utl,\ - comphelper \ - cppu \ - cppuhelper \ - i18nisolang1 \ - sal \ - salhelper \ - tl \ - ucbhelper \ - $(gb_STDLIBS) \ -)) - -# add all source files that shall be compiled with exceptions enabled -# the name is relative to $(SRCROOT) and must not contain an extension -$(eval $(call gb_Library_add_exception_objects,utl,\ - unotools/source/accessibility/accessiblerelationsethelper \ - unotools/source/accessibility/accessiblestatesethelper \ - unotools/source/config/accelcfg \ - unotools/source/config/bootstrap \ - unotools/source/config/cacheoptions \ - unotools/source/config/cmdoptions \ - unotools/source/config/compatibility \ - unotools/source/config/configitem \ - unotools/source/config/configmgr \ - unotools/source/config/confignode \ - unotools/source/config/configpathes \ - unotools/source/config/configvaluecontainer \ - unotools/source/config/defaultoptions \ - unotools/source/config/docinfohelper \ - unotools/source/config/dynamicmenuoptions \ - unotools/source/config/eventcfg \ - unotools/source/config/extendedsecurityoptions \ - unotools/source/config/fltrcfg \ - unotools/source/config/fontcfg \ - unotools/source/config/fontoptions \ - unotools/source/config/historyoptions \ - unotools/source/config/inetoptions \ - unotools/source/config/internaloptions \ - unotools/source/config/itemholder1 \ - unotools/source/config/lingucfg \ - unotools/source/config/localisationoptions \ - unotools/source/config/misccfg \ - unotools/source/config/moduleoptions \ - unotools/source/config/options \ - unotools/source/config/optionsdlg \ - unotools/source/config/pathoptions \ - unotools/source/config/printwarningoptions \ - unotools/source/config/regoptions \ - unotools/source/config/saveopt \ - unotools/source/config/searchopt \ - unotools/source/config/securityoptions \ - unotools/source/config/sourceviewconfig \ - unotools/source/config/startoptions \ - unotools/source/config/syslocaleoptions \ - unotools/source/config/undoopt \ - unotools/source/config/useroptions \ - unotools/source/config/viewoptions \ - unotools/source/config/workingsetoptions \ - unotools/source/config/xmlaccelcfg \ - unotools/source/i18n/calendarwrapper \ - unotools/source/i18n/caserotate \ - unotools/source/i18n/charclass \ - unotools/source/i18n/collatorwrapper \ - unotools/source/i18n/intlwrapper \ - unotools/source/i18n/localedatawrapper \ - unotools/source/i18n/nativenumberwrapper \ - unotools/source/i18n/numberformatcodewrapper \ - unotools/source/i18n/readwritemutexguard \ - unotools/source/i18n/textsearch \ - unotools/source/i18n/transliterationwrapper \ - unotools/source/misc/atom \ - unotools/source/misc/componentresmodule \ - unotools/source/misc/datetime \ - unotools/source/misc/desktopterminationobserver \ - unotools/source/misc/eventlisteneradapter \ - unotools/source/misc/fontcvt \ - unotools/source/misc/fontdefs \ - unotools/source/misc/sharedunocomponent \ - unotools/source/misc/syslocale \ - unotools/source/processfactory/processfactory \ - unotools/source/property/propertysethelper \ - unotools/source/property/propertysetinfo \ - unotools/source/streaming/streamhelper \ - unotools/source/streaming/streamwrap \ - unotools/source/ucbhelper/localfilehelper \ - unotools/source/ucbhelper/progresshandlerwrap \ - unotools/source/ucbhelper/tempfile \ - unotools/source/ucbhelper/ucbhelper \ - unotools/source/ucbhelper/ucblockbytes \ - unotools/source/ucbhelper/ucbstreamhelper \ - unotools/source/ucbhelper/xtempfile \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/unotools/Makefile b/unotools/Makefile deleted file mode 100644 index 8d71119918..0000000000 --- a/unotools/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -#************************************************************************* -# -# 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. -# -#************************************************************************* - -ifeq ($(strip $(SOLARENV)),) -$(error No environment set!) -endif - -gb_PARTIALBUILD := T -GBUILDDIR := $(SOLARENV)/gbuild -include $(GBUILDDIR)/gbuild.mk - -$(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk))) - -# vim: set noet sw=4 ts=4: diff --git a/unotools/Module_unotools.mk b/unotools/Module_unotools.mk deleted file mode 100644 index a733906915..0000000000 --- a/unotools/Module_unotools.mk +++ /dev/null @@ -1,37 +0,0 @@ -# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*- -# Version: MPL 1.1 / GPLv3+ / LGPLv3+ -# -# OpenOffice.org - a multi-platform office productivity suite -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Initial Developer of the Original Code is -# Bjoern Michaelsen, Canonical Ltd. <bjoern.michaelsen@canonical.com> -# Portions created by the Initial Developer are Copyright (C) 2010 the -# Initial Developer. All Rights Reserved. -# -# Major Contributor(s): -# -# For minor contributions see the git repository. -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 3 or later (the "GPLv3+"), or -# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), -# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable -# instead of those above. - -$(eval $(call gb_Module_Module,unotools)) - -$(eval $(call gb_Module_add_targets,unotools,\ - Library_utl \ - Package_inc \ -)) - -$(eval $(call gb_Module_add_subsequentcheck_targets,unotools,\ - JunitTest_unotools_complex \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/unotools/Package_inc.mk b/unotools/Package_inc.mk deleted file mode 100644 index 2da66be727..0000000000 --- a/unotools/Package_inc.mk +++ /dev/null @@ -1,117 +0,0 @@ -# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*- -# Version: MPL 1.1 / GPLv3+ / LGPLv3+ -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License or as specified alternatively below. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Initial Developer of the Original Code is -# David Tardon, Red Hat Inc. <dtardon@redhat.com> -# Portions created by the Initial Developer are Copyright (C) 2010 the -# Initial Developer. All Rights Reserved. -# -# Major Contributor(s): -# -# For minor contributions see the git repository. -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 3 or later (the "GPLv3+"), or -# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), -# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable -# instead of those above. - -$(eval $(call gb_Package_Package,unotools_inc,$(SRCDIR)/unotools/inc)) - -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/accelcfg.hxx,unotools/accelcfg.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/accessiblerelationsethelper.hxx,unotools/accessiblerelationsethelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/accessiblestatesethelper.hxx,unotools/accessiblestatesethelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/atom.hxx,unotools/atom.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/bootstrap.hxx,unotools/bootstrap.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/cacheoptions.hxx,unotools/cacheoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/calendarwrapper.hxx,unotools/calendarwrapper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/caserotate.hxx,unotools/caserotate.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/charclass.hxx,unotools/charclass.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/cmdoptions.hxx,unotools/cmdoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/collatorwrapper.hxx,unotools/collatorwrapper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/compatibility.hxx,unotools/compatibility.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/componentresmodule.hxx,unotools/componentresmodule.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configitem.hxx,unotools/configitem.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configmgr.hxx,unotools/configmgr.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/confignode.hxx,unotools/confignode.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configpathes.hxx,unotools/configpathes.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configvaluecontainer.hxx,unotools/configvaluecontainer.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/datetime.hxx,unotools/datetime.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/defaultoptions.hxx,unotools/defaultoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/desktopterminationobserver.hxx,unotools/desktopterminationobserver.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/digitgroupingiterator.hxx,unotools/digitgroupingiterator.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/docinfohelper.hxx,unotools/docinfohelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/dynamicmenuoptions.hxx,unotools/dynamicmenuoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/eventcfg.hxx,unotools/eventcfg.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/eventlisteneradapter.hxx,unotools/eventlisteneradapter.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/extendedsecurityoptions.hxx,unotools/extendedsecurityoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/fltrcfg.hxx,unotools/fltrcfg.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/fontcfg.hxx,unotools/fontcfg.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/fontcvt.hxx,unotools/fontcvt.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/fontdefs.hxx,unotools/fontdefs.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/fontoptions.hxx,unotools/fontoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/historyoptions_const.hxx,unotools/historyoptions_const.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/historyoptions.hxx,unotools/historyoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/idhelper.hxx,unotools/idhelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/inetoptions.hxx,unotools/inetoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/internaloptions.hxx,unotools/internaloptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/intlwrapper.hxx,unotools/intlwrapper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/itemholderbase.hxx,unotools/itemholderbase.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/lingucfg.hxx,unotools/lingucfg.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/linguprops.hxx,unotools/linguprops.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/localedatawrapper.hxx,unotools/localedatawrapper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/localfilehelper.hxx,unotools/localfilehelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/localisationoptions.hxx,unotools/localisationoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/loghelper.hxx,unotools/loghelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/misccfg.hxx,unotools/misccfg.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/moduleoptions.hxx,unotools/moduleoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/nativenumberwrapper.hxx,unotools/nativenumberwrapper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/numberformatcodewrapper.hxx,unotools/numberformatcodewrapper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/optionsdlg.hxx,unotools/optionsdlg.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/options.hxx,unotools/options.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/pathoptions.hxx,unotools/pathoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/printwarningoptions.hxx,unotools/printwarningoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/processfactory.hxx,unotools/processfactory.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/progresshandlerwrap.hxx,unotools/progresshandlerwrap.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/propertysethelper.hxx,unotools/propertysethelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/propertysetinfo.hxx,unotools/propertysetinfo.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/querydeep.hxx,unotools/querydeep.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/readwritemutexguard.hxx,unotools/readwritemutexguard.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/regoptions.hxx,unotools/regoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/regpathhelper.hxx,unotools/regpathhelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/saveopt.hxx,unotools/saveopt.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/searchopt.hxx,unotools/searchopt.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/securityoptions.hxx,unotools/securityoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/sharedunocomponent.hxx,unotools/sharedunocomponent.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/sourceviewconfig.hxx,unotools/sourceviewconfig.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/startoptions.hxx,unotools/startoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/streamhelper.hxx,unotools/streamhelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/streamsection.hxx,unotools/streamsection.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/streamwrap.hxx,unotools/streamwrap.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/syslocale.hxx,unotools/syslocale.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/syslocaleoptions.hxx,unotools/syslocaleoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/tempfile.hxx,unotools/tempfile.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/textsearch.hxx,unotools/textsearch.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/transliterationwrapper.hxx,unotools/transliterationwrapper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/ucbhelper.hxx,unotools/ucbhelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/ucblockbytes.hxx,unotools/ucblockbytes.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/ucbstreamhelper.hxx,unotools/ucbstreamhelper.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/undoopt.hxx,unotools/undoopt.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/unotoolsdllapi.h,unotools/unotoolsdllapi.h)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/useroptions_const.hxx,unotools/useroptions_const.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/useroptions.hxx,unotools/useroptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/viewoptions.hxx,unotools/viewoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/workingsetoptions.hxx,unotools/workingsetoptions.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/xmlaccelcfg.hxx,unotools/xmlaccelcfg.hxx)) - -# vim: set noet sw=4 ts=4: diff --git a/unotools/inc/pch/precompiled_unotools.cxx b/unotools/inc/pch/precompiled_unotools.cxx deleted file mode 100644 index 5d1af014d3..0000000000 --- a/unotools/inc/pch/precompiled_unotools.cxx +++ /dev/null @@ -1,31 +0,0 @@ -/* -*- 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 "precompiled_unotools.hxx" - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/pch/precompiled_unotools.hxx b/unotools/inc/pch/precompiled_unotools.hxx deleted file mode 100644 index cee9a30c86..0000000000 --- a/unotools/inc/pch/precompiled_unotools.hxx +++ /dev/null @@ -1,34 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): Generated on 2006-09-01 17:50:16.701453 - -#ifdef PRECOMPILED_HEADERS -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/accelcfg.hxx b/unotools/inc/unotools/accelcfg.hxx deleted file mode 100644 index 959619e72c..0000000000 --- a/unotools/inc/unotools/accelcfg.hxx +++ /dev/null @@ -1,87 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_ACCELCFG_HXX -#define INCLUDED_unotools_ACCELCFG_HXX - -#include <com/sun/star/awt/KeyEvent.hpp> -#include <unotools/options.hxx> - -#include <rtl/ustring.hxx> -#include <tools/stream.hxx> - -struct SvtAcceleratorConfigItem -{ - sal_uInt16 nCode; - sal_uInt16 nModifier; - ::rtl::OUString aCommand; -}; - -#include <list> -typedef ::std::list < SvtAcceleratorConfigItem > SvtAcceleratorItemList; - -class SvStream; -class KeyEvent; -class String; -class SvtAcceleratorConfig_Impl; - -class SvtAcceleratorConfiguration: public utl::detail::Options -{ - SvtAcceleratorConfig_Impl* pImp; - -private: - -public: - // get the global accelerators - SvtAcceleratorConfiguration(); - - // get special accelerators - static String GetStreamName(); - static SvStream* GetDefaultStream( StreamMode ); - - virtual ~SvtAcceleratorConfiguration(); - - // save the configuration to a stream, f.e. into a document - bool Commit( SvStream& rStream ); - - // returns the configured URL for a KeyEvent - ::rtl::OUString GetCommand( const ::com::sun::star::awt::KeyEvent& rKeyEvent ); - - // returns the whole configuration - const SvtAcceleratorItemList& GetItems(); - - // sets a single configuration item - void SetCommand( const SvtAcceleratorConfigItem& rItem ); - - // sets several or all configuration items - // if bClear=sal_False, all items not in the sequence remain unchanged - void SetItems( const SvtAcceleratorItemList& rItems, bool bClear ); -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/accessiblerelationsethelper.hxx b/unotools/inc/unotools/accessiblerelationsethelper.hxx deleted file mode 100644 index 117ddd6e76..0000000000 --- a/unotools/inc/unotools/accessiblerelationsethelper.hxx +++ /dev/null @@ -1,162 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UTL_ACCESSIBLERELATIONSETHELPER_HXX_ -#define _UTL_ACCESSIBLERELATIONSETHELPER_HXX_ - -#include "unotools/unotoolsdllapi.h" - -#include <com/sun/star/accessibility/XAccessibleRelationSet.hpp> -#include <com/sun/star/uno/Reference.hxx> -#include <cppuhelper/weak.hxx> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XTypeProvider.hpp> -#include <com/sun/star/lang/XServiceName.hpp> -#include <osl/mutex.hxx> -#include <cppuhelper/implbase1.hxx> -#include <comphelper/servicehelper.hxx> - -class AccessibleRelationSetHelperImpl; - -//========================================================================= -//= XAccessibleRelationSet helper classes -//========================================================================= - -//... namespace utl ....................................................... -namespace utl -{ -//......................................................................... - -/** @descr - This base class provides an implementation of the - <code>AccessibleRelationSet</code> service. -*/ -class UNOTOOLS_DLLPUBLIC AccessibleRelationSetHelper - : public cppu::WeakImplHelper1< - ::com::sun::star::accessibility::XAccessibleRelationSet - > -{ -public: - //===== internal ======================================================== - AccessibleRelationSetHelper (); - AccessibleRelationSetHelper (const AccessibleRelationSetHelper& rHelper); -protected: - virtual ~AccessibleRelationSetHelper (void); -public: - - //===== XAccessibleRelationSet ========================================== - - /** Returns the number of relations in this relation set. - - @return - Returns the number of relations or zero if there are none. - */ - virtual sal_Int32 SAL_CALL getRelationCount( ) - throw (::com::sun::star::uno::RuntimeException); - - /** Returns the relation of this relation set that is specified by - the given index. - - @param nIndex - This index specifies the relatio to return. - - @return - For a valid index, i.e. inside the range 0 to the number of - relations minus one, the returned value is the requested - relation. If the index is invalid then the returned relation - has the type INVALID. - - */ - virtual ::com::sun::star::accessibility::AccessibleRelation SAL_CALL - getRelation( sal_Int32 nIndex ) - throw (::com::sun::star::lang::IndexOutOfBoundsException, - ::com::sun::star::uno::RuntimeException); - - /** Tests whether the relation set contains a relation matching the - specified key. - - @param aRelationType - The type of relation to look for in this set of relations. This - has to be one of the constants of - <type>AccessibleRelationType</type>. - - @return - Returns <TRUE/> if there is a (at least one) relation of the - given type and <FALSE/> if there is no such relation in the set. - */ - virtual sal_Bool SAL_CALL containsRelation( sal_Int16 aRelationType ) - throw (::com::sun::star::uno::RuntimeException); - - /** Retrieve and return the relation with the given relation type. - - @param aRelationType - The type of the relation to return. This has to be one of the - constants of <type>AccessibleRelationType</type>. - - @return - If a relation with the given type could be found than (a copy - of) this relation is returned. Otherwise a relation with the - type INVALID is returned. - */ - virtual ::com::sun::star::accessibility::AccessibleRelation SAL_CALL - getRelationByType( sal_Int16 aRelationType ) - throw (::com::sun::star::uno::RuntimeException); - - void AddRelation( - const ::com::sun::star::accessibility::AccessibleRelation& rRelation) - throw (::com::sun::star::uno::RuntimeException); - - //===== XTypeProvider =================================================== - - /** Returns a sequence of all supported interfaces. - */ - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> SAL_CALL - getTypes (void) - throw (::com::sun::star::uno::RuntimeException); - - /** Returns a implementation id. - */ - virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL - getImplementationId (void) - throw (::com::sun::star::uno::RuntimeException); - -protected: - /// Mutex guarding this object. - ::osl::Mutex maMutex; - -private: - /// The implementation of this helper interface. - AccessibleRelationSetHelperImpl* mpHelperImpl; -}; - -//......................................................................... -} -//... namespace utl ....................................................... -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/accessiblestatesethelper.hxx b/unotools/inc/unotools/accessiblestatesethelper.hxx deleted file mode 100644 index 8b76f58e20..0000000000 --- a/unotools/inc/unotools/accessiblestatesethelper.hxx +++ /dev/null @@ -1,184 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _UTL_ACCESSIBLESTATESETHELPER_HXX_ -#define _UTL_ACCESSIBLESTATESETHELPER_HXX_ - -#include "unotools/unotoolsdllapi.h" - -#include <com/sun/star/accessibility/XAccessibleStateSet.hpp> -#include <com/sun/star/uno/Reference.hxx> -#include <cppuhelper/weak.hxx> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XTypeProvider.hpp> -#include <com/sun/star/lang/XServiceName.hpp> -#include <osl/mutex.hxx> -#include <cppuhelper/implbase1.hxx> -#include <comphelper/servicehelper.hxx> - -class AccessibleStateSetHelperImpl; - -//========================================================================= -//= XAccessibleStateSet helper classes -//========================================================================= - -//... namespace utl ....................................................... -namespace utl -{ -//......................................................................... - -/** @descr - This base class provides an implementation of the - <code>AccessibleStateSet</code> service. -*/ -class UNOTOOLS_DLLPUBLIC AccessibleStateSetHelper - : public cppu::WeakImplHelper1< - ::com::sun::star::accessibility::XAccessibleStateSet - > -{ -public: - //===== internal ======================================================== - - AccessibleStateSetHelper (); - /** constructs an object with some states initially set - - <p>This ctor is compatible with - <method scope="comphelper">OAccessibleImplementationAccess::implGetForeignControlledStates</method></p> - - @param _nInitialStates - is a bit mask. Every bit 2^n means that the state number n (as got from the - AccessibleStateType constants) should be set initially. - */ - AccessibleStateSetHelper ( const sal_Int64 _nInitialStates ); - - AccessibleStateSetHelper ( const AccessibleStateSetHelper& rHelper ); -protected: - virtual ~AccessibleStateSetHelper (void); -public: - - //===== XAccessibleStateSet ============================================== - - /** Checks whether the current state set is empty. - - @return - Returns <TRUE/> if there is no state in this state set and - <FALSE/> if there is at least one state set in it. - */ - virtual sal_Bool SAL_CALL isEmpty () - throw (::com::sun::star::uno::RuntimeException); - - /** Checks if the given state is a member of the state set of this - object. - - @param aState - The state for which to check membership. This has to be one of - the constants of <type>AccessibleStateType</type>. - - @return - Returns <TRUE/> if the given state is a memeber of this object's - state set and <FALSE/> otherwise. - */ - virtual sal_Bool SAL_CALL contains (sal_Int16 aState) - throw (::com::sun::star::uno::RuntimeException); - - /** Checks if all of the given states are in this object's state - set. - - @param aStateSet - This sequence of states is interpreted as set and every of its - members, duplicates are ignored, is checked for membership in - this object's state set. Each state has to be one of the - constants of <type>AccessibleStateType</type>. - - @return - Returns <TRUE/> if all states of the given state set are members - of this object's state set. <FALSE/> is returned if at least - one of the states in the given state is not a member of this - object's state set. - */ - virtual sal_Bool SAL_CALL containsAll ( - const ::com::sun::star::uno::Sequence<sal_Int16>& rStateSet) - throw (::com::sun::star::uno::RuntimeException); - - /** Returns a sequence of all states. - */ - virtual com::sun::star::uno::Sequence<sal_Int16> SAL_CALL getStates() - throw (::com::sun::star::uno::RuntimeException); - - /** Adds a state to the set. - */ - void AddState(sal_Int16 aState) - throw (::com::sun::star::uno::RuntimeException); - - /** Removes a state from the set if the set contains the state, otherwise nothing is done. - */ - void RemoveState(sal_Int16 aState) - throw (::com::sun::star::uno::RuntimeException); - - /** Compares the set with the set given by rComparativeValue and puts the results - into rOldStates and rNewStates. - - rOldStates contains after call all states which are in the own set and - not in the comparative set. - - rNewStates contains after call all states which are in the comparative - set and not in the own set. - */ - sal_Bool Compare(const AccessibleStateSetHelper& rComparativeValue, - AccessibleStateSetHelper& rOldStates, - AccessibleStateSetHelper& rNewStates) - throw (::com::sun::star::uno::RuntimeException); - - //===== XTypeProvider =================================================== - - /** Returns a sequence of all supported interfaces. - */ - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> SAL_CALL - getTypes (void) - throw (::com::sun::star::uno::RuntimeException); - - /** Returns a implementation id. - */ - virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL - getImplementationId (void) - throw (::com::sun::star::uno::RuntimeException); - -protected: - /// Mutex guarding this object. - ::osl::Mutex maMutex; - -private: - /// The implementation of this helper interface. - AccessibleStateSetHelperImpl* mpHelperImpl; -}; - -//......................................................................... -} -//... namespace utl ....................................................... -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/atom.hxx b/unotools/inc/unotools/atom.hxx deleted file mode 100644 index f7c0f38c11..0000000000 --- a/unotools/inc/unotools/atom.hxx +++ /dev/null @@ -1,133 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _UTL_ATOM_HXX_ -#define _UTL_ATOM_HXX_ - -#include "unotools/unotoolsdllapi.h" -#include <rtl/ustring.hxx> -#include <osl/mutex.hxx> -#include <cppuhelper/implbase1.hxx> - -#include <boost/unordered_map.hpp> -#include <list> -#include <com/sun/star/util/XAtomServer.hpp> - -#define INVALID_ATOM 0 - -namespace utl { - - struct AtomDescription - { - int atom; - ::rtl::OUString description; - }; - - class AtomProvider - { - int m_nAtoms; - ::boost::unordered_map< int, ::rtl::OUString, ::boost::hash< int > > m_aStringMap; - ::boost::unordered_map< ::rtl::OUString, int, ::rtl::OUStringHash > m_aAtomMap; - public: - AtomProvider(); - ~AtomProvider(); - - int getAtom( const ::rtl::OUString&, sal_Bool bCreate = sal_False ); - int getLastAtom() const { return m_nAtoms-1; } - const ::rtl::OUString& getString( int ) const; - - void getAll( ::std::list< AtomDescription >& atoms ); - - void getRecent( int atom, ::std::list< AtomDescription >& atoms ); - - void overrideAtom( int atom, const ::rtl::OUString& description ); - - sal_Bool hasAtom( int atom ) const; - }; - - - class UNOTOOLS_DLLPUBLIC MultiAtomProvider - { - ::boost::unordered_map< int, AtomProvider*, ::boost::hash< int > > m_aAtomLists; - public: - MultiAtomProvider(); - ~MultiAtomProvider(); - - int getLastAtom( int atomClass ) const; - - sal_Bool insertAtomClass( int atomClass ); - - int getAtom( int atomClass, const ::rtl::OUString& rString, sal_Bool bCreate = sal_False ); - - void getRecent( int atomClass, int atom, ::std::list< AtomDescription >& atoms ); - - const ::rtl::OUString& getString( int atomClass, int atom ) const; - void getClass( int atomClass, ::std::list< AtomDescription >& atoms ) const; - - void overrideAtom( int atomClass, int atom, const ::rtl::OUString& description ); - void overrideAtom( int atomClass, const ::com::sun::star::util::AtomDescription& newDescription ) - { overrideAtom( atomClass, newDescription.atom, newDescription.description ); } - sal_Bool hasAtom( int atomClass, int atom ) const; - }; - - class AtomServer : public ::cppu::WeakAggImplHelper1< ::com::sun::star::util::XAtomServer > - { - private: - MultiAtomProvider m_aProvider; - ::osl::Mutex m_aMutex; - public: - AtomServer(); - virtual ~AtomServer(); - - const ::rtl::OUString& getString( int atomClass, int atom ) const - { return m_aProvider.getString( atomClass, atom ); } - - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::util::AtomDescription > SAL_CALL getClass( sal_Int32 atomClass ) throw(); - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::util::AtomDescription > > SAL_CALL getClasses( const ::com::sun::star::uno::Sequence< sal_Int32 >& atomClasses ) throw(); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getAtomDescriptions( const ::com::sun::star::uno::Sequence< ::com::sun::star::util::AtomClassRequest >& atoms ) throw(); - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::util::AtomDescription > SAL_CALL getRecentAtoms( sal_Int32 atomClass, sal_Int32 atom ) throw(); - virtual sal_Int32 SAL_CALL getAtom( sal_Int32 atomClass, const ::rtl::OUString& description, sal_Bool create ) throw(); - }; - - class AtomClient - { - private: - ::com::sun::star::uno::Reference< ::com::sun::star::util::XAtomServer > m_xServer; - MultiAtomProvider m_aProvider; - public: - AtomClient( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XAtomServer >& ); - ~AtomClient(); - - void updateAtomClasses( const ::com::sun::star::uno::Sequence< sal_Int32 >& atomClasses ); - int getAtom( int atomClass, const ::rtl::OUString& description, sal_Bool bCreate ); - const ::rtl::OUString& getString( int atomClass, int atom ); - }; -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/bootstrap.hxx b/unotools/inc/unotools/bootstrap.hxx deleted file mode 100644 index 8544a8ff1a..0000000000 --- a/unotools/inc/unotools/bootstrap.hxx +++ /dev/null @@ -1,144 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UTL_BOOTSTRAP_HXX -#define _UTL_BOOTSTRAP_HXX - -namespace rtl -{ - class OUString; -} - -namespace utl -{ -//----------------------------------------------------------------------------- - /** provides configuration information needed for application startup. - <p>This class handles the startup information for the office application. - It encapsulates knowledge of how to retriev such information and how - to diagnose failures to retriev required data. - </p> - */ - class UNOTOOLS_DLLPUBLIC Bootstrap - { - // the static interface - public: // some common information items - - /// retrieve the product key; defaults to executable name (without extension) - static rtl::OUString getProductKey(); - - /// retrieve the product key; uses the given default, if not found - static rtl::OUString getProductKey(rtl::OUString const& _sDefault); - - /// retrieve the product version - static rtl::OUString getProductVersion(); - - /// retrieve the product source (MWS name) - static ::rtl::OUString getProductSource(rtl::OUString const& _sDefault); - - /// retrieve the BUILDID information item; uses the given default, if not found - static rtl::OUString getBuildIdData(rtl::OUString const& _sDefault); - - /// retrieve the ALLUSERS information item from setup.ini file; uses the given default, if not found - static rtl::OUString getAllUsersValue(rtl::OUString const& _sDefault); - - /// reload cached data - static void reloadData(); - - public: // retrieve path information about the installat�on location - enum PathStatus - { - PATH_EXISTS, // Success: Found a path to an existing file or directory - PATH_VALID, // Found a valid path, but the file or directory does not exist - DATA_INVALID, // Retrieved a string for this path, that is not a valid file url or system path - DATA_MISSING, // Could not retrieve any data for this path - DATA_UNKNOWN // No attempt to retrieve data for this path was made - }; - - /// get a file URL to the common base installation [${insturl}] - static PathStatus locateBaseInstallation(rtl::OUString& _rURL); - - /// get a file URL to the user installation [${userurl}] - static PathStatus locateUserInstallation(rtl::OUString& _rURL); - - /// get a file URL to the shared data directory [default is ${insturl}/share] - static PathStatus locateSharedData(rtl::OUString& _rURL); - - /// get a file URL to the user data directory [default is ${userurl}/user] - static PathStatus locateUserData(rtl::OUString& _rURL); - - // the next two items are mainly supported for diagnostic purposes. both items may be unused - /// get a file URL to the bootstrap INI file used [e.g. ${insturl}/program/bootraprc] - static PathStatus locateBootstrapFile(rtl::OUString& _rURL); - /// get a file URL to the version locator INI file used [e.g. ${SYSUSERCONFIG}/sversion.ini] - static PathStatus locateVersionFile(rtl::OUString& _rURL); - - public: // evaluate the validity of the installation - /// high-level status of bootstrap success - enum Status - { - DATA_OK, /// user-dir and share-dir do exist, product key found or can be defaulted to exe-name - MISSING_USER_INSTALL, /// ${userurl} does not exist; or version-file cannot be found or is invalid - INVALID_USER_INSTALL, /// can locate ${userurl}, but user-dir is missing - INVALID_BASE_INSTALL /// other failure: e.g. cannot locate share-dir; bootstraprc missing or invalid; no product key - }; - - /// error code for detailed diagnostics of bootstrap failures - enum FailureCode - { - NO_FAILURE, /// bootstrap was successful - MISSING_INSTALL_DIRECTORY, /// the shared installation directory could not be located - MISSING_BOOTSTRAP_FILE, /// the bootstrap INI file could not be found or read - MISSING_BOOTSTRAP_FILE_ENTRY, /// the bootstrap INI is missing a required entry - INVALID_BOOTSTRAP_FILE_ENTRY, /// the bootstrap INI contains invalid data - MISSING_VERSION_FILE, /// the version locator INI file could not be found or read - MISSING_VERSION_FILE_ENTRY, /// the version locator INI has no entry for this version - INVALID_VERSION_FILE_ENTRY, /// the version locator INI entry is not a valid directory URL - MISSING_USER_DIRECTORY, /// the user installation directory does not exist - INVALID_BOOTSTRAP_DATA /// some bootstrap data was invalid in unexpected ways - }; - - /// Evaluates the status of the installation and returns a diagnostic message corresponding to this status - static Status checkBootstrapStatus(rtl::OUString& _rDiagnosticMessage); - - /** Evaluates the status of the installation and returns a diagnostic - message and error code corresponding to this status - */ - static Status checkBootstrapStatus(rtl::OUString& _rDiagnosticMessage, FailureCode& _rErrCode); - - public: - // singleton impl-class - class Impl; - static const Impl& data(); // the data related to the bootstrap.ini file - }; -//----------------------------------------------------------------------------- -} // namespace utl - -#endif // _UTL_BOOTSTRAP_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/cacheoptions.hxx b/unotools/inc/unotools/cacheoptions.hxx deleted file mode 100644 index f54fc189b0..0000000000 --- a/unotools/inc/unotools/cacheoptions.hxx +++ /dev/null @@ -1,176 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_unotools_CACHEOPTIONS_HXX -#define INCLUDED_unotools_CACHEOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <rtl/ustring.hxx> - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtCacheOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about startup features - @descr - - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtCacheOptions -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtCacheOptions(); - ~SvtCacheOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/_3D-Engine/..." - @descr These options describe internal states to enable/disable features of installed office. - - GetWriterOLE_Objects() - SetWriterOLE_Objects() => set the number of Writer OLE objects to be cached - - GetDrawingEngineOLE_Objects() - SetDrawingEngineOLE_Objects() => set the number of DrawingEngine OLE objects to be cached - - GetGraphicManagerTotalCacheSize() - SetGraphicManagerTotalCacheSize() => set the maximum cache size used by GraphicManager to cache graphic objects - - GetGraphicManagerObjectCacheSize() - SetGraphicManagerObjectCacheSize() => set the maximum cache size for one GraphicObject to be cached by GraphicManager - - @seealso configuration package "org.openoffice.Office.Common/_3D-Engine" - *//*-*****************************************************************************************************/ - - sal_Int32 GetWriterOLE_Objects() const; - sal_Int32 GetDrawingEngineOLE_Objects() const; - sal_Int32 GetGraphicManagerTotalCacheSize() const; - sal_Int32 GetGraphicManagerObjectCacheSize() const; - sal_Int32 GetGraphicManagerObjectReleaseTime() const; - - void SetWriterOLE_Objects( sal_Int32 nObjects ); - void SetDrawingEngineOLE_Objects( sal_Int32 nObjects ); - void SetGraphicManagerTotalCacheSize( sal_Int32 nTotalCacheSize ); - void SetGraphicManagerObjectCacheSize( sal_Int32 nObjectCacheSize ); - void SetGraphicManagerObjectReleaseTime( sal_Int32 nReleaseTimeSeconds ); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class use his own static mutex to be threadsafe. - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtCacheOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; - -#endif // #ifndef INCLUDED_unotools_CACHEOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/calendarwrapper.hxx b/unotools/inc/unotools/calendarwrapper.hxx deleted file mode 100644 index db0c5751b8..0000000000 --- a/unotools/inc/unotools/calendarwrapper.hxx +++ /dev/null @@ -1,136 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UNOTOOLS_CALENDARWRAPPER_HXX -#define _UNOTOOLS_CALENDARWRAPPER_HXX - -#include <tools/datetime.hxx> -#include <tools/string.hxx> -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/i18n/Calendar.hpp> -#include <com/sun/star/lang/Locale.hpp> -#include "unotools/unotoolsdllapi.h" - -namespace com { namespace sun { namespace star { - namespace lang { - class XMultiServiceFactory; - } -}}} - -namespace com { namespace sun { namespace star { - namespace i18n { - class XExtendedCalendar; - } -}}} - - -class UNOTOOLS_DLLPUBLIC CalendarWrapper -{ - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xSMgr; - ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XExtendedCalendar > xC; - - DateTime aEpochStart; // 1Jan1970 - -public: - CalendarWrapper( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF - ); - ~CalendarWrapper(); - - - // wrapper implementations of XCalendar - - void loadDefaultCalendar( const ::com::sun::star::lang::Locale& rLocale ); - void loadCalendar( const ::rtl::OUString& rUniqueID, const ::com::sun::star::lang::Locale& rLocale ); - ::com::sun::star::i18n::Calendar getLoadedCalendar() const; - ::com::sun::star::uno::Sequence< ::rtl::OUString > getAllCalendars( const ::com::sun::star::lang::Locale& rLocale ) const; - ::rtl::OUString getUniqueID() const; - /// set UTC date/time - void setDateTime( double nTimeInDays ); - /// get UTC date/time - double getDateTime() const; - /// convenience method to set local date/time - void setLocalDateTime( double nTimeInDays ); - /// convenience method to get local date/time - double getLocalDateTime() const; - - // wrapper implementations of XCalendar - - void setValue( sal_Int16 nFieldIndex, sal_Int16 nValue ); - sal_Bool isValid() const; - sal_Int16 getValue( sal_Int16 nFieldIndex ) const; - void addValue( sal_Int16 nFieldIndex, sal_Int32 nAmount ); - sal_Int16 getFirstDayOfWeek() const; - void setFirstDayOfWeek( sal_Int16 nDay ); - void setMinimumNumberOfDaysForFirstWeek( sal_Int16 nDays ); - sal_Int16 getMinimumNumberOfDaysForFirstWeek() const; - sal_Int16 getNumberOfMonthsInYear() const; - sal_Int16 getNumberOfDaysInWeek() const; - ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::CalendarItem > getMonths() const; - ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::CalendarItem > getDays() const; - String getDisplayName( sal_Int16 nCalendarDisplayIndex, sal_Int16 nIdx, sal_Int16 nNameType ) const; - - /** Convenience method to get timezone offset in milliseconds, taking both - fields ZONE_OFFSET and ZONE_OFFSET_SECOND_MILLIS into account. */ - sal_Int32 getZoneOffsetInMillis() const; - /** Convenience method to get DST offset in milliseconds, taking both - fields DST_OFFSET and DST_OFFSET_SECOND_MILLIS into account. */ - sal_Int32 getDSTOffsetInMillis() const; - - // wrapper implementations of XExtendedCalendar - - String getDisplayString( sal_Int32 nCalendarDisplayCode, sal_Int16 nNativeNumberMode ) const; - - - // convenience methods - - /// get epoch start (should be 01Jan1970) - inline const DateTime& getEpochStart() const - { return aEpochStart; } - - /// set a local (!) Gregorian DateTime - inline void setGregorianDateTime( const DateTime& rDateTime ) - { setLocalDateTime( rDateTime - aEpochStart ); } - - /// get the DateTime as a local (!) Gregorian DateTime - inline DateTime getGregorianDateTime() const - { return aEpochStart + getLocalDateTime(); } - -private: - - /** get timezone or DST offset in milliseconds, fields are - CalendarFieldIndex ZONE_OFFSET and ZONE_OFFSET_SECOND_MILLIS - respectively DST_OFFSET and DST_OFFSET_SECOND_MILLIS. - */ - sal_Int32 getCombinedOffsetInMillis( sal_Int16 nParentFieldIndex, sal_Int16 nChildFieldIndex ) const; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/caserotate.hxx b/unotools/inc/unotools/caserotate.hxx deleted file mode 100644 index c882857882..0000000000 --- a/unotools/inc/unotools/caserotate.hxx +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Version: MPL 1.1 / GPLv3+ / LGPLv3+ - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Initial Developer of the Original Code is - * Caolán McNamara <caolanm@redhat.com> - * - * Contributor(s): - * Caolán McNamara <caolanm@redhat.com> - * Dózsa Bálint <dozsa@linux-dugf.site> - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 3 or later (the "GPLv3+"), or - * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), - * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable - * instead of those above. - */ -#ifndef INCLUDED_UNOTOOLS_CASEROTATE_HXX -#define INCLUDED_UNOTOOLS_CASEROTATE_HXX - -#include <sal/config.h> - -#include "unotools/unotoolsdllapi.h" - -//TODO Use XCharacterClassification::getStringType to determine the current -//(possibly mixed) case type and rotate to the next one - -class UNOTOOLS_DLLPUBLIC RotateTransliteration -{ -private: - int nF3ShiftCounter; -public: - RotateTransliteration() : nF3ShiftCounter(0) - { - } - sal_uInt32 getNextMode(); -}; - -#endif -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/charclass.hxx b/unotools/inc/unotools/charclass.hxx deleted file mode 100644 index 0019a1b3b6..0000000000 --- a/unotools/inc/unotools/charclass.hxx +++ /dev/null @@ -1,239 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_CHARCLASS_HXX -#define _UNOTOOLS_CHARCLASS_HXX - -#include <ctype.h> // isdigit(), isalpha() -#include <tools/string.hxx> -#include <tools/solar.h> -#include <com/sun/star/i18n/KCharacterType.hpp> -#include <com/sun/star/i18n/KParseTokens.hpp> -#include <com/sun/star/i18n/KParseType.hpp> -#include <com/sun/star/i18n/ParseResult.hpp> -#include <com/sun/star/i18n/XCharacterClassification.hpp> -#include <osl/mutex.hxx> - -class String; -namespace com { namespace sun { namespace star { - namespace lang { - class XMultiServiceFactory; - } -}}} - -const sal_Int32 nCharClassAlphaType = - ::com::sun::star::i18n::KCharacterType::UPPER | - ::com::sun::star::i18n::KCharacterType::LOWER | - ::com::sun::star::i18n::KCharacterType::TITLE_CASE; - -const sal_Int32 nCharClassAlphaTypeMask = - nCharClassAlphaType | - ::com::sun::star::i18n::KCharacterType::PRINTABLE | - ::com::sun::star::i18n::KCharacterType::BASE_FORM; - -const sal_Int32 nCharClassLetterType = - nCharClassAlphaType | - ::com::sun::star::i18n::KCharacterType::LETTER; - -const sal_Int32 nCharClassLetterTypeMask = - nCharClassAlphaTypeMask | - ::com::sun::star::i18n::KCharacterType::LETTER; - -const sal_Int32 nCharClassNumericType = - ::com::sun::star::i18n::KCharacterType::DIGIT; - -const sal_Int32 nCharClassNumericTypeMask = - nCharClassNumericType | - ::com::sun::star::i18n::KCharacterType::PRINTABLE | - ::com::sun::star::i18n::KCharacterType::BASE_FORM; - - -class UNOTOOLS_DLLPUBLIC CharClass -{ - ::com::sun::star::lang::Locale aLocale; - ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XCharacterClassification > xCC; - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xSMgr; - mutable ::osl::Mutex aMutex; - - // not implemented, prevent usage - CharClass( const CharClass& ); - CharClass& operator=( const CharClass& ); - - // instantiate component somehow - void getComponentInstance(); - -public: - /// Preferred ctor with service manager specified - CharClass( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF, - const ::com::sun::star::lang::Locale& rLocale - ); - - /// Depricated ctor, tries to get a process service manager or to load the - /// library directly. - CharClass( - const ::com::sun::star::lang::Locale& rLocale - ); - - ~CharClass(); - - /// set a new Locale - void setLocale( const ::com::sun::star::lang::Locale& rLocale ); - - /// get current Locale - const ::com::sun::star::lang::Locale& getLocale() const; - - - /// isdigit() on ascii values - static inline sal_Bool isAsciiDigit( sal_Unicode c ) - { return c < 128 ? sal_Bool(isdigit( (unsigned char) c ) != 0) : sal_False; } - - /// isalpha() on ascii values - static inline sal_Bool isAsciiAlpha( sal_Unicode c ) - { return c < 128 ? sal_Bool(isalpha( (unsigned char) c ) != 0) : sal_False; } - - /// isalnum() on ascii values - static inline sal_Bool isAsciiAlphaNumeric( sal_Unicode c ) - { return c < 128 ? sal_Bool(isalnum( (unsigned char) c ) != 0) : sal_False; } - - /// isdigit() on ascii values of entire string - static sal_Bool isAsciiNumeric( const String& rStr ); - - /// isalpha() on ascii values of entire string - static sal_Bool isAsciiAlpha( const String& rStr ); - - /// isalnum() on ascii values of entire string - static sal_Bool isAsciiAlphaNumeric( const String& rStr ); - - /// whether type is pure alpha or not, e.g. return of getStringType - static inline sal_Bool isAlphaType( sal_Int32 nType ) - { - return ((nType & nCharClassAlphaType) != 0) && - ((nType & ~(nCharClassAlphaTypeMask)) == 0); - } - - /// whether type is pure numeric or not, e.g. return of getStringType - static inline sal_Bool isNumericType( sal_Int32 nType ) - { - return ((nType & nCharClassNumericType) != 0) && - ((nType & ~(nCharClassNumericTypeMask)) == 0); - } - - /// whether type is pure alphanumeric or not, e.g. return of getStringType - static inline sal_Bool isAlphaNumericType( sal_Int32 nType ) - { - return ((nType & (nCharClassAlphaType | - nCharClassNumericType)) != 0) && - ((nType & ~(nCharClassAlphaTypeMask | - nCharClassNumericTypeMask)) == 0); - } - - /// whether type is pure letter or not, e.g. return of getStringType - static inline sal_Bool isLetterType( sal_Int32 nType ) - { - return ((nType & nCharClassLetterType) != 0) && - ((nType & ~(nCharClassLetterTypeMask)) == 0); - } - - /// whether type is pure letternumeric or not, e.g. return of getStringType - static inline sal_Bool isLetterNumericType( sal_Int32 nType ) - { - return ((nType & (nCharClassLetterType | - nCharClassNumericType)) != 0) && - ((nType & ~(nCharClassLetterTypeMask | - nCharClassNumericTypeMask)) == 0); - } - - - // Wrapper implementations of class CharacterClassification - - String toUpper( const String& rStr, xub_StrLen nPos, xub_StrLen nCount ) const; - String toLower( const String& rStr, xub_StrLen nPos, xub_StrLen nCount ) const; - String toTitle( const String& rStr, xub_StrLen nPos, xub_StrLen nCount ) const; - - ::rtl::OUString toUpper_rtl( const ::rtl::OUString& rStr, sal_Int32 nPos, sal_Int32 nCount ) const; - ::rtl::OUString toLower_rtl( const ::rtl::OUString& rStr, sal_Int32 nPos, sal_Int32 nCount ) const; - // use the postfix because compilers could get confused by the both similar versions - // (me thinks they shouldn't, but in fact MSCV 6 does) - - sal_Int16 getType( const String& rStr, xub_StrLen nPos ) const; - sal_Int16 getCharacterDirection( const String& rStr, xub_StrLen nPos ) const; - sal_Int16 getScript( const String& rStr, xub_StrLen nPos ) const; - sal_Int32 getCharacterType( const String& rStr, xub_StrLen nPos ) const; - sal_Int32 getStringType( const String& rStr, xub_StrLen nPos, xub_StrLen nCount ) const; - - ::com::sun::star::i18n::ParseResult parseAnyToken( - const String& rStr, - sal_Int32 nPos, - sal_Int32 nStartCharFlags, - const String& userDefinedCharactersStart, - sal_Int32 nContCharFlags, - const String& userDefinedCharactersCont ) const; - - ::com::sun::star::i18n::ParseResult parsePredefinedToken( - sal_Int32 nTokenType, - const String& rStr, - sal_Int32 nPos, - sal_Int32 nStartCharFlags, - const String& userDefinedCharactersStart, - sal_Int32 nContCharFlags, - const String& userDefinedCharactersCont ) const; - - - // Functionality of class International methods - - sal_Bool isAlpha( const String& rStr, xub_StrLen nPos ) const; - sal_Bool isLetter( const String& rStr, xub_StrLen nPos ) const; - sal_Bool isDigit( const String& rStr, xub_StrLen nPos ) const; - sal_Bool isAlphaNumeric( const String& rStr, xub_StrLen nPos ) const; - sal_Bool isLetterNumeric( const String& rStr, xub_StrLen nPos ) const; - sal_Bool isAlpha( const String& rStr ) const; - sal_Bool isLetter( const String& rStr ) const; - sal_Bool isNumeric( const String& rStr ) const; - sal_Bool isAlphaNumeric( const String& rStr ) const; - sal_Bool isLetterNumeric( const String& rStr ) const; - - void toUpper( String& rStr ) const - { rStr = toUpper( rStr, 0, rStr.Len() ); } - void toLower( String& rStr ) const - { rStr = toLower( rStr, 0, rStr.Len() ); } - inline String upper( const String& rStr ) const - { return toUpper( rStr, 0, rStr.Len() ); } - inline String lower( const String& rStr ) const - { return toLower( rStr, 0, rStr.Len() ); } - - const ::rtl::OUString& toUpper_rtl( ::rtl::OUString& _rStr ) const { return _rStr = toUpper_rtl( _rStr, 0, _rStr.getLength() ); } - const ::rtl::OUString& toLower_rtl( ::rtl::OUString& _rStr ) const { return _rStr = toLower_rtl( _rStr, 0, _rStr.getLength() ); } -}; - - - -#endif // _UNOTOOLS_CHARCLASS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/cmdoptions.hxx b/unotools/inc/unotools/cmdoptions.hxx deleted file mode 100644 index 075c8884f9..0000000000 --- a/unotools/inc/unotools/cmdoptions.hxx +++ /dev/null @@ -1,258 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_CMDOPTIONS_HXX -#define INCLUDED_unotools_CMDOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <com/sun/star/uno/Sequence.h> -#include <com/sun/star/frame/XFrame.hpp> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// types, enums, ... -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @descr The method GetList() returns a list of property values. - Use follow defines to seperate values by names. -*//*-*************************************************************************************************************/ -#define CMDOPTIONS_PROPERTYNAME_URL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "CommandURL" )) - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtCommandOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about dynamic menus - @descr Make it possible to configure dynamic menu structures of menus like "new" or "wizard". - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtCommandOptions: public utl::detail::Options -{ - friend class SvtCommandOptions_Impl; - - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - enum CmdOption - { - CMDOPTION_DISABLED, - CMDOPTION_NONE - }; - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtCommandOptions(); - virtual ~SvtCommandOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short clear complete sepcified list - @descr Call this methods to clear the whole list. - To fill it again use AppendItem(). - - @seealso - - - @param "eMenu" select right menu to clear. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void Clear( CmdOption eOption ); - - /*-****************************************************************************************************//** - @short return complete specified list - @descr Call it to get all entries of an dynamic menu. - We return a list of all nodes with his names and properties. - - @seealso - - - @param "eOption" select the list to retrieve. - @return A list of command strings is returned. - - @onerror We return an empty list. - *//*-*****************************************************************************************************/ - - sal_Bool HasEntries( CmdOption eOption ) const; - - /*-****************************************************************************************************//** - @short Lookup if a command URL is inside a given list - @descr Lookup if a command URL is inside a given lst - - @seealso - - - @param "eOption" select right command list - @param "aCommandURL" a command URL that is used for the look up - @return "sal_True" if the command is inside the list otherwise "sal_False" - - @onerror - - *//*-*****************************************************************************************************/ - - sal_Bool Lookup( CmdOption eOption, const ::rtl::OUString& aCommandURL ) const; - - /*-****************************************************************************************************//** - @short return complete specified list - @descr Call it to get all entries of an dynamic menu. - We return a list of all nodes with his names and properties. - - @seealso - - - @param "eOption" select the list to retrieve. - @return A list of command strings is returned. - - @onerror We return an empty list. - *//*-*****************************************************************************************************/ - - ::com::sun::star::uno::Sequence< ::rtl::OUString > GetList( CmdOption eOption ) const; - - /*-****************************************************************************************************//** - @short adds a new command to specified options list - @descr You can add a command to specified options list! - - @seealso method Clear() - - @param "eOption" specifies the command list - @param "sURL" URL for dispatch - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void AddCommand( CmdOption eOption, const ::rtl::OUString& sURL ); - - /*-****************************************************************************************************//** - @short register an office frame, which must update its dispatches if - the underlying configuration was changed. - - @descr To avoid using of "dead" frame objects or implementing - deregistration mechanism too, we use weak references to - the given frames. - - @param "xFrame" points to the frame, which wish to be - notified, if configuration was changed. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void EstablisFrameCallback(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class is partially threadsafe (for de-/initialization only). - All access methods are'nt safe! - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtCommandOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtCmdOptions - -#endif // #ifndef INCLUDED_unotools_CMDOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/collatorwrapper.hxx b/unotools/inc/unotools/collatorwrapper.hxx deleted file mode 100644 index e438faeef2..0000000000 --- a/unotools/inc/unotools/collatorwrapper.hxx +++ /dev/null @@ -1,98 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_COLLATORWRAPPER_HXX -#define _UNOTOOLS_COLLATORWRAPPER_HXX - -#include <com/sun/star/i18n/XCollator.hpp> - -namespace com { namespace sun { namespace star { namespace lang { - class XMultiServiceFactory; -}}}} - -class UNOTOOLS_DLLPUBLIC CollatorWrapper -{ - private: - - ::com::sun::star::uno::Reference< - ::com::sun::star::lang::XMultiServiceFactory - > mxServiceFactory; - - ::com::sun::star::uno::Reference< - ::com::sun::star::i18n::XCollator - > mxInternationalCollator; - - public: - - CollatorWrapper ( - const ::com::sun::star::uno::Reference< - ::com::sun::star::lang::XMultiServiceFactory > &xServiceFactoryIn); - - ~CollatorWrapper(); - - sal_Int32 - compareSubstring ( - const ::rtl::OUString& s1, sal_Int32 off1, sal_Int32 len1, - const ::rtl::OUString& s2, sal_Int32 off2, sal_Int32 len2) const; - - sal_Int32 - compareString ( - const ::rtl::OUString& s1, const ::rtl::OUString& s2) const; - - ::com::sun::star::uno::Sequence< ::rtl::OUString > - listCollatorAlgorithms ( - const ::com::sun::star::lang::Locale& rLocale) const; - - ::com::sun::star::uno::Sequence< sal_Int32 > - listCollatorOptions ( - const ::rtl::OUString& rAlgorithm) const; - - sal_Int32 - loadDefaultCollator ( - const ::com::sun::star::lang::Locale& rLocale, sal_Int32 nOption); - - sal_Int32 - loadCollatorAlgorithm ( - const ::rtl::OUString& rAlgorithm, - const ::com::sun::star::lang::Locale& rLocale, sal_Int32 nOption); - - void - loadCollatorAlgorithmWithEndUserOption ( - const ::rtl::OUString& rAlgorithm, - const ::com::sun::star::lang::Locale& rLocale, - const ::com::sun::star::uno::Sequence< sal_Int32 >& rOption); - - protected: - - CollatorWrapper(); -}; - -#endif /* _UNOTOOLS_COLLATORWRAPPER_HXX */ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/compatibility.hxx b/unotools/inc/unotools/compatibility.hxx deleted file mode 100644 index 4f08699f25..0000000000 --- a/unotools/inc/unotools/compatibility.hxx +++ /dev/null @@ -1,257 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_COMPATIBILITY_HXX -#define INCLUDED_unotools_COMPATIBILITY_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <com/sun/star/uno/Sequence.h> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// types, enums, ... -//_________________________________________________________________________________________________________________ - -enum CompatibilityOptions -{ - COPT_USE_PRINTERDEVICE = 0, - COPT_ADD_SPACING, - COPT_ADD_SPACING_AT_PAGES, - COPT_USE_OUR_TABSTOPS, - COPT_NO_EXTLEADING, - COPT_USE_LINESPACING, - COPT_ADD_TABLESPACING, - COPT_USE_OBJECTPOSITIONING, - COPT_USE_OUR_TEXTWRAPPING, - COPT_CONSIDER_WRAPPINGSTYLE, - COPT_EXPAND_WORDSPACE -}; - -/*-************************************************************************************************************//** - @descr The method GetList() returns a list of property values. - Use follow defines to seperate values by names. -*//*-*************************************************************************************************************/ -#define COMPATIBILITY_PROPERTYNAME_NAME OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ) -#define COMPATIBILITY_PROPERTYNAME_MODULE OUString( RTL_CONSTASCII_USTRINGPARAM( "Module" ) ) -#define COMPATIBILITY_PROPERTYNAME_USEPRTMETRICS OUString( RTL_CONSTASCII_USTRINGPARAM( "UsePrinterMetrics" ) ) -#define COMPATIBILITY_PROPERTYNAME_ADDSPACING OUString( RTL_CONSTASCII_USTRINGPARAM( "AddSpacing" ) ) -#define COMPATIBILITY_PROPERTYNAME_ADDSPACINGATPAGES OUString( RTL_CONSTASCII_USTRINGPARAM( "AddSpacingAtPages" ) ) -#define COMPATIBILITY_PROPERTYNAME_USEOURTABSTOPS OUString( RTL_CONSTASCII_USTRINGPARAM( "UseOurTabStopFormat" ) ) -#define COMPATIBILITY_PROPERTYNAME_NOEXTLEADING OUString( RTL_CONSTASCII_USTRINGPARAM( "NoExternalLeading" ) ) -#define COMPATIBILITY_PROPERTYNAME_USELINESPACING OUString( RTL_CONSTASCII_USTRINGPARAM( "UseLineSpacing" ) ) -#define COMPATIBILITY_PROPERTYNAME_ADDTABLESPACING OUString( RTL_CONSTASCII_USTRINGPARAM( "AddTableSpacing" ) ) -#define COMPATIBILITY_PROPERTYNAME_USEOBJECTPOSITIONING OUString( RTL_CONSTASCII_USTRINGPARAM( "UseObjectPositioning" ) ) -#define COMPATIBILITY_PROPERTYNAME_USEOURTEXTWRAPPING OUString( RTL_CONSTASCII_USTRINGPARAM( "UseOurTextWrapping" ) ) -#define COMPATIBILITY_PROPERTYNAME_CONSIDERWRAPPINGSTYLE OUString( RTL_CONSTASCII_USTRINGPARAM( "ConsiderWrappingStyle" ) ) -#define COMPATIBILITY_PROPERTYNAME_EXPANDWORDSPACE OUString( RTL_CONSTASCII_USTRINGPARAM( "ExpandWordSpace" ) ) - -#define COMPATIBILITY_DEFAULT_NAME OUString( RTL_CONSTASCII_USTRINGPARAM( "_default" ) ) - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtCompatibilityOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about dynamic menus - @descr Make it possible to configure dynamic menu structures of menus like "new" or "wizard". - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtCompatibilityOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtCompatibilityOptions(); - virtual ~SvtCompatibilityOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short clear complete specified list - @descr Call this methods to clear the whole list. - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void Clear(); - - void SetDefault( ::rtl::OUString sName, bool bValue ); - - /*-****************************************************************************************************//** - @short return complete specified list - @descr Call it to get all entries of compatibility options. - We return a list of all nodes with its names and properties. - - @seealso - - - @param - - @return A list of compatibility options is returned. - - @onerror We return an empty list. - *//*-*****************************************************************************************************/ - - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > > GetList() const; - - /*-****************************************************************************************************//** - @short append a new item - @descr - - @seealso method Clear() - - @param "sName" Name - @param "sModule" Module - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void AppendItem( const ::rtl::OUString& sName, - const ::rtl::OUString& sModule, - bool bUsePrtMetrics, - bool bAddSpacing, - bool bAddSpacingAtPages, - bool bUseOurTabStops, - bool bNoExtLeading, - bool bUseLineSpacing, - bool bAddTableSpacing, - bool bUseObjectPositioning, - bool bUseOurTextWrapping, - bool bConsiderWrappingStyle, - bool bExpandWordSpace ); - - bool IsUsePrtDevice() const; - bool IsAddSpacing() const; - bool IsAddSpacingAtPages() const; - bool IsUseOurTabStops() const; - bool IsNoExtLeading() const; - bool IsUseLineSpacing() const; - bool IsAddTableSpacing() const; - bool IsUseObjectPositioning() const; - bool IsUseOurTextWrapping() const; - bool IsConsiderWrappingStyle() const; - bool IsExpandWordSpace() const; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class is partially threadsafe (for de-/initialization only). - All access methods are'nt safe! - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtCompatibilityOptions_Impl* m_pDataContainer; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtCompatibilityOptions - -#endif // #ifndef INCLUDED_unotools_COMPATIBILITY_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/componentresmodule.hxx b/unotools/inc/unotools/componentresmodule.hxx deleted file mode 100644 index 0ac905a4aa..0000000000 --- a/unotools/inc/unotools/componentresmodule.hxx +++ /dev/null @@ -1,191 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef UNOTOOLS_INC_UNOTOOLS_COMPONENTRESMODULE_HXX -#define UNOTOOLS_INC_UNOTOOLS_COMPONENTRESMODULE_HXX - -#include <comphelper/componentmodule.hxx> -#include <unotools/unotoolsdllapi.h> - -/** === begin UNO includes === **/ -/** === end UNO includes === **/ -#include <tools/resid.hxx> - -#include <memory> - -class ResMgr; - -//........................................................................ -namespace utl -{ -//........................................................................ - - class OComponentResModuleImpl; - - //==================================================================== - //= OComponentResourceModule - //==================================================================== - /** extends the <type scope="comphelper">OModule</type> implementation with - simply resource access - */ - class UNOTOOLS_DLLPUBLIC OComponentResourceModule : public ::comphelper::OModule - { - private: - typedef ::comphelper::OModule BaseClass; - - private: - ::std::auto_ptr< OComponentResModuleImpl > m_pImpl; - - public: - OComponentResourceModule( const ::rtl::OString& _rResFilePrefix ); - ~OComponentResourceModule(); - - /// get the vcl res manager of the module - ResMgr* getResManager(); - - protected: - // OModule overridables - virtual void onFirstClient(); - virtual void onLastClient(); - }; - - //========================================================================= - //= ModuleRes - //========================================================================= - /** specialized ResId, using the ressource manager provided by a given <type>OModule</type> - */ - class UNOTOOLS_DLLPUBLIC ModuleRes : public ::ResId - { - public: - ModuleRes( sal_uInt16 _nId, OComponentResourceModule& _rModule ) : ResId( _nId, *_rModule.getResManager() ) { } - }; - - //==================================================================== - //= defining a concrete module - //==================================================================== -#define DEFINE_MODULE( ModuleClass, ClientClass, ResClass ) \ - /* -------------------------------------------------------------------- */ \ - class ModuleClass : public ::utl::OComponentResourceModule \ - { \ - friend struct CreateModuleClass; \ - typedef ::utl::OComponentResourceModule BaseClass; \ - \ - public: \ - static ModuleClass& getInstance(); \ - \ - private: \ - ModuleClass(); \ - }; \ - \ - /* -------------------------------------------------------------------- */ \ - class ClientClass : public ::comphelper::OModuleClient \ - { \ - private: \ - typedef ::comphelper::OModuleClient BaseClass; \ - \ - public: \ - ClientClass() : BaseClass( ModuleClass::getInstance() ) \ - { \ - } \ - }; \ - \ - /* -------------------------------------------------------------------- */ \ - class ResClass : public ::utl::ModuleRes \ - { \ - private: \ - typedef ::utl::ModuleRes BaseClass; \ - \ - public: \ - ResClass( sal_uInt16 _nId ) : BaseClass( _nId, ModuleClass::getInstance() ) \ - { \ - } \ - }; \ - \ - /* -------------------------------------------------------------------- */ \ - template < class TYPE > \ - class OAutoRegistration : public ::comphelper::OAutoRegistration< TYPE > \ - { \ - private: \ - typedef ::comphelper::OAutoRegistration< TYPE > BaseClass; \ - \ - public: \ - OAutoRegistration() : BaseClass( ModuleClass::getInstance() ) \ - { \ - } \ - }; \ - \ - /* -------------------------------------------------------------------- */ \ - template < class TYPE > \ - class OSingletonRegistration : public ::comphelper::OSingletonRegistration< TYPE > \ - { \ - private: \ - typedef ::comphelper::OSingletonRegistration< TYPE > BaseClass; \ - \ - public: \ - OSingletonRegistration() : BaseClass( ModuleClass::getInstance() ) \ - { \ - } \ - }; - - //==================================================================== - //= implementing a concrete module - //==================================================================== -#define IMPLEMENT_MODULE( ModuleClass, resprefix ) \ - struct CreateModuleClass \ - { \ - ModuleClass* operator()() \ - { \ - static ModuleClass* pModule = new ModuleClass; \ - return pModule; \ - /* yes, in theory, this is a resource leak, since the ModuleClass \ - will never be cleaned up. However, using a non-heap instance of ModuleClass \ - would not work: It would be cleaned up when the module is unloaded. \ - This might happen (and is likely to happen) *after* the tools-library \ - has been unloaded. However, the module's dtor is where we would delete \ - our resource manager (in case not all our clients de-registered) - which \ - would call into the already-unloaded tools-library. */ \ - } \ - }; \ - \ - ModuleClass::ModuleClass() \ - :BaseClass( ::rtl::OString( resprefix ) ) \ - { \ - } \ - \ - ModuleClass& ModuleClass::getInstance() \ - { \ - return *rtl_Instance< ModuleClass, CreateModuleClass, ::osl::MutexGuard, ::osl::GetGlobalMutex >:: \ - create( CreateModuleClass(), ::osl::GetGlobalMutex() ); \ - } \ - -//........................................................................ -} // namespace utl -//........................................................................ - -#endif // UNOTOOLS_INC_UNOTOOLS_COMPONENTRESMODULE_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/configitem.hxx b/unotools/inc/unotools/configitem.hxx deleted file mode 100644 index 19ca23ec03..0000000000 --- a/unotools/inc/unotools/configitem.hxx +++ /dev/null @@ -1,215 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UTL_CONFIGITEM_HXX_ -#define _UTL_CONFIGITEM_HXX_ - -#include <sal/types.h> -#include <rtl/ustring.hxx> -#include <com/sun/star/uno/Sequence.h> -#include <com/sun/star/uno/Reference.h> -#include "unotools/unotoolsdllapi.h" -#include "unotools/options.hxx" - -//----------------------------------------------------------------------------- -namespace com{ namespace sun{ namespace star{ - namespace uno{ - class Any; - } - namespace beans{ - struct PropertyValue; - } - namespace container{ - class XHierarchicalNameAccess; - } - namespace util{ - class XChangesListener; - } -}}} -//----------------------------------------------------------------------------- -namespace utl -{ -#define CONFIG_MODE_IMMEDIATE_UPDATE 0x00 -#define CONFIG_MODE_DELAYED_UPDATE 0x01 -#define CONFIG_MODE_ALL_LOCALES 0x02 -#define CONFIG_MODE_RELEASE_TREE 0x04 -#define CONFIG_MODE_IGNORE_ERRORS 0x08 // prevent assertions, if creation fails -#define CONFIG_MODE_PROPAGATE_ERRORS 0x10 // throw exceptions, if creation fails - - enum ConfigNameFormat - { - CONFIG_NAME_PLAINTEXT_NAME, // unescaped local node name, for user display etc. - CONFIG_NAME_LOCAL_NAME, // local node name, for use in XNameAccess etc. ("Item", "Q & A") - CONFIG_NAME_LOCAL_PATH, // one-level relative path, for use when building pathes etc. ("Item", "Typ['Q & A']") - CONFIG_NAME_FULL_PATH, // full absolute path. ("/org.openoffice.Sample/Group/Item", "/org.openoffice.Sample/Set/Typ['Q & A']") - - CONFIG_NAME_DEFAULT = CONFIG_NAME_LOCAL_PATH // default format - }; - - class ConfigChangeListener_Impl; - class ConfigManager; - struct ConfigItem_Impl; - - class UNOTOOLS_DLLPUBLIC ConfigItem : public ConfigurationBroadcaster - { - friend class ConfigChangeListener_Impl; - friend class ConfigManager; - - const rtl::OUString sSubTree; - com::sun::star::uno::Reference< com::sun::star::container::XHierarchicalNameAccess> - m_xHierarchyAccess; - com::sun::star::uno::Reference< com::sun::star::util::XChangesListener > - xChangeLstnr; - ConfigItem_Impl* pImpl; - - ConfigItem();// - void RemoveChangesListener(); - void CallNotify( - const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames); - - //*********************************************************************************************************************** - // In special mode ALL_LOCALES we must support reading/writing of localized cfg entries as Sequence< PropertyValue >. - // These methods are helper to convert given lists of names and Any-values. - // format: PropertyValue.Name = <locale as ISO string> - // PropertyValue.Value = <value; type depends from cfg entry!> - // e.g. - // LOCALIZED NODE - // "UIName" - // LOCALE VALUE - // "de" "Mein Name" - // "en-US" "my name" - void impl_packLocalizedProperties ( const com::sun::star::uno::Sequence< rtl::OUString >& lInNames , - const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& lInValues , - com::sun::star::uno::Sequence< com::sun::star::uno::Any >& lOutValues ); - void impl_unpackLocalizedProperties ( const com::sun::star::uno::Sequence< rtl::OUString >& lInNames , - const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& lInValues , - com::sun::star::uno::Sequence< rtl::OUString >& lOutNames , - com::sun::star::uno::Sequence< com::sun::star::uno::Any >& lOutValues ); - - com::sun::star::uno::Reference< com::sun::star::container::XHierarchicalNameAccess> - GetTree(); - - protected: - ConfigItem(const rtl::OUString &rSubTree, - sal_Int16 nMode = CONFIG_MODE_DELAYED_UPDATE); - ConfigItem(utl::ConfigManager& rManager, const rtl::OUString rSubTree); - - void SetModified (); // mark item as modified - void ClearModified(); // reset state after commit! - - com::sun::star::uno::Sequence< com::sun::star::uno::Any> - GetProperties(const com::sun::star::uno::Sequence< rtl::OUString >& rNames); - - com::sun::star::uno::Sequence< sal_Bool > - GetReadOnlyStates(const com::sun::star::uno::Sequence< rtl::OUString >& rNames); - - sal_Bool PutProperties( - const com::sun::star::uno::Sequence< rtl::OUString >& rNames, - const com::sun::star::uno::Sequence< com::sun::star::uno::Any>& rValues); - - /** enables notifications about changes on selected sub nodes/values - - Before calling this method a second time for a possibly changed node/value set, - you must disable the current notifications by calling DisableNotification. - - @see Notify - @see DisableNotification - */ - sal_Bool EnableNotification(const com::sun::star::uno::Sequence< rtl::OUString >& rNames, - sal_Bool bEnableInternalNotification = sal_False); - /** disables notifications about changes on sub nodes/values, which previosly had - been enabled with EnableNotification - @see Notify - @see EnableNotification - */ - void DisableNotification(); - sal_Bool IsInternalNotification()const {return IsInValueChange();} - - //returns all members of a node in a specific format - com::sun::star::uno::Sequence< rtl::OUString > - GetNodeNames(const rtl::OUString& rNode); - //returns all members of a node in a specific format - com::sun::star::uno::Sequence< rtl::OUString > - GetNodeNames(const rtl::OUString& rNode, ConfigNameFormat eFormat); - // remove all members of a set - sal_Bool ClearNodeSet(const rtl::OUString& rNode); - // remove selected members of a set - sal_Bool ClearNodeElements(const rtl::OUString& rNode, - com::sun::star::uno::Sequence< rtl::OUString >& rElements); - // change or add members to a set - sal_Bool SetSetProperties(const rtl::OUString& rNode, com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > rValues); - // remove, change or add members of a set - sal_Bool ReplaceSetProperties(const rtl::OUString& rNode, com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > rValues); - // add a new node without setting any properties - sal_Bool AddNode(const rtl::OUString& rNode, const rtl::OUString& rNewNode); - - /** get a name for a new element of a set node - @param _rSetNode - relative path to the set node - @param _rBaseName - <ul><li><b>in</b>: the base to use when calculating a new name</li> - <li><b>out</b>: an unused element name</li> - </ul> - @return <TRUE/> if a free name could be generated - */ - sal_Bool getUniqueSetElementName( const rtl::OUString& _rSetNode, rtl::OUString& _rBaseName); - - public: - virtual ~ConfigItem(); - - /** is called from the ConfigManager before application ends of from the - PropertyChangeListener if the sub tree broadcasts changes. */ - virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames)=0; - - /** is called from the ConfigManager if it is destroyed before the ConfigItem. */ - void ReleaseConfigMgr(); - - /** enable locking of the XHierarchicalNameAccess if CONFIG_MODE_RELEASE_TREE is set to - prevent multiple calls ConfigManager::AcquireTree() from a single Commit() operation*/ - void LockTree(); - void UnlockTree(); - - const rtl::OUString& GetSubTreeName() const {return sSubTree;} - - sal_Bool IsModified() const; - - /** writes the changed values into the sub tree. Always called in the Dtor of the derived class. */ - virtual void Commit()=0; - - sal_Bool IsInValueChange() const; - - sal_Int16 GetMode() const; - - /** checks if the configuration manager used by this item is valid. - */ - sal_Bool IsValidConfigMgr() const; - }; -}//namespace utl -#endif //_UTL_CONFIGITEM_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/configmgr.hxx b/unotools/inc/unotools/configmgr.hxx deleted file mode 100644 index 1692e5b8bb..0000000000 --- a/unotools/inc/unotools/configmgr.hxx +++ /dev/null @@ -1,117 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UTL_CONFIGMGR_HXX_ -#define _UTL_CONFIGMGR_HXX_ - -#include <com/sun/star/uno/Reference.h> -#include <com/sun/star/uno/Any.hxx> -#include <rtl/ustring.hxx> -#include "unotools/unotoolsdllapi.h" - -//----------------------------------------------------------------------------- -namespace com{ namespace sun{ namespace star{ - namespace lang{ - class XMultiServiceFactory; - } - namespace container{ - class XHierarchicalNameAccess; - } -}}} - -//----------------------------------------------------------------------------- -namespace utl -{ - struct ConfigMgr_Impl; - class ConfigItem; - class UNOTOOLS_DLLPUBLIC ConfigManager - { - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > - xConfigurationProvider; - ConfigMgr_Impl* pMgrImpl; - - static void getBasisAboutBoxProductVersion( rtl::OUString& rVersion ); - - public: - ConfigManager(); - ConfigManager(com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > xConfigProvider); - ~ConfigManager(); - - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > - GetConfigurationProvider(); - - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > - GetLocalConfigurationProvider(); - - com::sun::star::uno::Reference< com::sun::star::container::XHierarchicalNameAccess> - AddConfigItem(utl::ConfigItem& rCfgItem); - - void RegisterConfigItem(utl::ConfigItem& rCfgItem); - com::sun::star::uno::Reference< com::sun::star::container::XHierarchicalNameAccess> - AcquireTree(utl::ConfigItem& rCfgItem); - - - void RemoveConfigItem(utl::ConfigItem& rCfgItem); - - void StoreConfigItems(); - - static ConfigManager& GetConfigManager(); - static rtl::OUString GetConfigBaseURL(); - - enum ConfigProperty - { - INSTALLPATH, // deprecated. don't use - LOCALE, - OFFICEINSTALL, // deprecated. don't use - USERINSTALLURL, // deprecated. don't use - OFFICEINSTALLURL, // deprecated. don't use - PRODUCTNAME, - PRODUCTVERSION, - PRODUCTEXTENSION, - DEFAULTCURRENCY, - PRODUCTXMLFILEFORMATNAME, - PRODUCTXMLFILEFORMATVERSION, - WRITERCOMPATIBILITYVERSIONOOO11, - OPENSOURCECONTEXT, - ABOUTBOXPRODUCTVERSION, - OOOVENDOR - }; - //direct readonly access to some special configuration elements - static com::sun::star::uno::Any GetDirectConfigProperty(ConfigProperty eProp); - - sal_Bool IsLocalConfigProvider(); - com::sun::star::uno::Reference< com::sun::star::container::XHierarchicalNameAccess> - GetHierarchyAccess(const rtl::OUString& rFullPath); - com::sun::star::uno::Any GetLocalProperty(const rtl::OUString& rProperty); - void PutLocalProperty(const rtl::OUString& , const com::sun::star::uno::Any& rValue); - - }; -}//namespace utl -#endif //_UTL_CONFIGMGR_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/confignode.hxx b/unotools/inc/unotools/confignode.hxx deleted file mode 100644 index 6f48858b68..0000000000 --- a/unotools/inc/unotools/confignode.hxx +++ /dev/null @@ -1,363 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _UNOTOOLS_CONFIGNODE_HXX_ -#define _UNOTOOLS_CONFIGNODE_HXX_ - -#include "unotools/unotoolsdllapi.h" -#include <com/sun/star/container/XHierarchicalNameAccess.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/container/XNameContainer.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/util/XChangesBatch.hpp> -#include <unotools/eventlisteneradapter.hxx> - -namespace comphelper -{ - class ComponentContext; -} - -//........................................................................ -namespace utl -{ -//........................................................................ - - //======================================================================== - //= OConfigurationNode - //======================================================================== - class OConfigurationTreeRoot; - /** a small wrapper around a configuration node.<p/> - Nodes in the terminology used herein are <em>inner</em> nodes of a configuration - tree, which means <em>no leafs</em>. - */ - class UNOTOOLS_DLLPUBLIC OConfigurationNode : public ::utl::OEventListenerAdapter - { - private: - ::com::sun::star::uno::Reference< ::com::sun::star::container::XHierarchicalNameAccess > - m_xHierarchyAccess; /// accessing children grandchildren (mandatory interface of our UNO object) - ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > - m_xDirectAccess; /// accessing children (mandatory interface of our UNO object) - ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > - m_xReplaceAccess; /// replacing child values - ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > - m_xContainerAccess; /// modifying set nodes (optional interface of our UNO object) - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > - m_xDummy; - sal_Bool m_bEscapeNames; /// escape names before accessing children ? - - ::rtl::OUString - m_sCompletePath; - - OConfigurationNode insertNode(const ::rtl::OUString& _rName,const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xNode) const throw(); - - protected: - /// constructs a node object with an interface representing a node - OConfigurationNode( - const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxNode - ); - - const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& - getUNONode() const { return m_xDirectAccess; } - - public: - /// constructs an empty and invalid node object - OConfigurationNode() :m_bEscapeNames(sal_False) { } - /// copy ctor - OConfigurationNode(const OConfigurationNode& _rSource); - - /// assigment - const OConfigurationNode& operator=(const OConfigurationNode& _rSource); - - /// dtor - ~OConfigurationNode() {} - - /// returns the local name of the node - ::rtl::OUString getLocalName() const; - - /// returns the fully qualified path of the node - ::rtl::OUString getNodePath() const; - - /** open a sub node - @param _rPath access path of the to-be-opened sub node. May be a hierarchical path. - */ - OConfigurationNode openNode(const ::rtl::OUString& _rPath) const throw(); - - OConfigurationNode openNode( const sal_Char* _pAsciiPath ) const - { - return openNode( ::rtl::OUString::createFromAscii( _pAsciiPath ) ); - } - - /** create a new child node - - If the object represents a set node, this method may be used to create a new child. For non-set-nodes, the - method will fail.<br/> - Unless the respective operations on the pure configuration API, the to-be-created node immediately - becomes a part of it's hierarchy, no explicit insertion is necessary. - @param _rName name for the new child. Must be level-1-depth. - */ - OConfigurationNode createNode(const ::rtl::OUString& _rName) const throw(); - - OConfigurationNode createNode( const sal_Char* _pAsciiName ) const - { - return createNode( ::rtl::OUString::createFromAscii( _pAsciiName ) ); - } - - /** appends a node under a new name - - If the object represents a set node, this method may be used to create a new child. For non-set-nodes, the - method will fail.<br/> - Unless the respective operations on the pure configuration API, the to-be-created node immediately - becomes a part of it's hierarchy, no explicit insertion is necessary. - @param _rName name for the new child. Must be level-1-depth. - @param _aNewNode the node which should be appended - */ - OConfigurationNode appendNode(const ::rtl::OUString& _rName,const OConfigurationNode& _aNewNode) const throw(); - - OConfigurationNode appendNode( const sal_Char* _pAsciiName, const OConfigurationNode& _aNewNode ) const - { - return appendNode( ::rtl::OUString::createFromAscii( _pAsciiName ), _aNewNode ); - } - - /** remove an existent child nod - - If the object represents a set node, this method may be used to delete an existent child. For non-set-nodes, - the method will fail. - */ - sal_Bool removeNode(const ::rtl::OUString& _rName) const throw(); - - sal_Bool removeNode( const sal_Char* _pAsciiName ) const - { - return removeNode( ::rtl::OUString::createFromAscii( _pAsciiName ) ); - } - - /** retrieves the content of a descendant - - the returned value may contain anything from an interface (if <arg>_rPath</arg> refers to inner node of - the configuration tree) to any explicit value (e.g. string, integer) or even void.<br/> - Unfortunately, this implies that if a void value is returned, you won't have a clue if this means - "the path does not exist" (besides the assertion made :), or if the value is really void. - */ - ::com::sun::star::uno::Any - getNodeValue(const ::rtl::OUString& _rPath) const throw(); - - ::com::sun::star::uno::Any - getNodeValue( const sal_Char* _pAsciiPath ) const - { - return getNodeValue( ::rtl::OUString::createFromAscii( _pAsciiPath ) ); - } - - /** write a node value<p/> - The value given is written into the node specified by the given relative path.<br/> - In opposite to <method>getNodeValue</method>, _rName must refer to a leaf in the configuration tree, not an inner - node. - @return sal_True if and only if the write was successfull. - */ - sal_Bool setNodeValue(const ::rtl::OUString& _rPath, const ::com::sun::star::uno::Any& _rValue) const throw(); - - sal_Bool setNodeValue( const sal_Char* _pAsciiPath, const ::com::sun::star::uno::Any& _rValue ) const - { - return setNodeValue( ::rtl::OUString::createFromAscii( _pAsciiPath ), _rValue ); - } - - /// return the names of the existing children - ::com::sun::star::uno::Sequence< ::rtl::OUString > - getNodeNames() const throw(); - - /** enables or disables name escaping when accessing direct children<p/> - Escaping is disabled by default, usually you enable it for set nodes (e.g. with calling setEscape(isSetNode)). - Once escaping is enabled, you should not access indirect children (e.g. openNode("child/grandchild"), 'cause - escaping for such names may not be supported by the underlying API objects. - @see getEscape - */ - void setEscape(sal_Bool _bEnable = sal_True); - /** get the flag specifying the current escape behaviour - @see setEscape - */ - sal_Bool getEscape() const { return m_bEscapeNames; } - - /// invalidate the object - virtual void clear() throw(); - - // ----------------------- - // meta informations about the node - - /// checks whether or not the object represents a set node. - sal_Bool isSetNode() const; - - /// checks whether or not a direct child with a given name exists - sal_Bool hasByName(const ::rtl::OUString& _rName) const throw(); - sal_Bool hasByName( const sal_Char* _pAsciiName ) const { return hasByName( ::rtl::OUString::createFromAscii( _pAsciiName ) ); } - - /// checks whether or not a descendent (no matter if direct or indirect) with the given name exists - sal_Bool hasByHierarchicalName( const ::rtl::OUString& _rName ) const throw(); - sal_Bool hasByHierarchicalName( const sal_Char* _pAsciiName ) const { return hasByHierarchicalName( ::rtl::OUString::createFromAscii( _pAsciiName ) ); } - - /// check if the objects represents a valid configuration node - sal_Bool isValid() const { return m_xHierarchyAccess.is(); } - - /// check whether the object is read-only of updatable - sal_Bool isReadonly() const { return !m_xReplaceAccess.is(); } - - protected: - // OEventListenerAdapter - virtual void _disposing( const ::com::sun::star::lang::EventObject& _rSource ); - - protected: - enum NAMEORIGIN - { - NO_CONFIGURATION, /// the name came from a configuration node - NO_CALLER /// the name came from a client of this class - }; - ::rtl::OUString normalizeName(const ::rtl::OUString& _rName, NAMEORIGIN _eOrigin) const; - }; - - //======================================================================== - //= OConfigurationTreeRoot - //======================================================================== - /** a specialized version of a OConfigurationNode, representing the root - of a configuration sub tree<p/> - Only this class is able to commit any changes made any any OConfigurationNode - objects. - */ - class UNOTOOLS_DLLPUBLIC OConfigurationTreeRoot : public OConfigurationNode - { - ::com::sun::star::uno::Reference< ::com::sun::star::util::XChangesBatch > - m_xCommitter; - protected: - /** ctor<p/> - */ - OConfigurationTreeRoot( - const ::com::sun::star::uno::Reference< ::com::sun::star::util::XChangesBatch >& _rxRootNode - ); - - /** ctor for a readonly node - */ - OConfigurationTreeRoot( - const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxRootNode - ); - - public: - /// modes to use when creating a top-level node object - enum CREATION_MODE - { - /// open the node (i.e. sub tree) for read access only - CM_READONLY, - /// open the node (i.e. sub tree) for read and write access, fall back to read-only if write access is not possible - CM_UPDATABLE - }; - - public: - /** default ctor<p/> - The object constructed here is invalid (i.e. <method>isValid</method> will return sal_False). - */ - OConfigurationTreeRoot() :OConfigurationNode() { } - - /** creates a configuration tree for the given path in the given mode - */ - OConfigurationTreeRoot( - const ::comphelper::ComponentContext& i_rContext, - const sal_Char* i_pAsciiNodePath, - const bool i_bUpdatable - ); - - /** creates a configuration tree for the given path in the given mode - */ - OConfigurationTreeRoot( - const ::comphelper::ComponentContext& i_rContext, - const ::rtl::OUString& i_rNodePath, - const bool i_bUpdatable - ); - - /// copy ctor - OConfigurationTreeRoot(const OConfigurationTreeRoot& _rSource) - :OConfigurationNode(_rSource), m_xCommitter(_rSource.m_xCommitter) { } - - /** open a new top-level configuration node - - opens a new node which is the root if an own configuration sub tree. This is what "top level" means: The - node does not have a parent. It does not mean that the node represents a module tree (like org.openoffice.Office.Writer - or such).<br/> - In opposite to <method>createWithServiceFactory</method>, createWithProvider expects a configuration provider - to work with. - - @param _rxConfProvider configuration provider to use when retrieving the node. - @param _rPath path to the node the object should represent - @param _nDepth depth for node retrieval - @param _eMode specifies which privileges should be applied when retrieving the node - - @see createWithServiceFactory - */ - static OConfigurationTreeRoot createWithProvider( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxConfProvider, - const ::rtl::OUString& _rPath, - sal_Int32 _nDepth = -1, - CREATION_MODE _eMode = CM_UPDATABLE, - sal_Bool _bLazyWrite = sal_True - ); - - /** open a new top-level configuration node<p/> - opens a new node which is the root if an own configuration sub tree. This is what "top level" means: The - node does not have a parent. It does not mean that the node represents a module tree (like org.openoffice.Office.Writer - or such).<br/> - In opposite to <method>createWithProvider</method>, createWithProvider expects a service factory. This factory - is used to create a configuration provider, and this provider is used to retrieve the node - @see createWithProvider - @param _rxORB service factory to use to create the configuration provider. - @param _rPath path to the node the object should represent - @param _nDepth depth for node retrieval - @param _eMode specifies which privileges should be applied when retrieving the node - */ - static OConfigurationTreeRoot createWithServiceFactory(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, - const ::rtl::OUString& _rPath, sal_Int32 _nDepth = -1, CREATION_MODE _eMode = CM_UPDATABLE, sal_Bool _bLazyWrite = sal_True); - - /** tolerant version of the <member>createWithServiceFactory</member> - - <p>No assertions are thrown in case of an failure to initialize the configuration service, but once - the configuration could be initialized, errors in the creation of the specific node (e.g. because the - given node path does not exist) are still asserted.</p> - */ - static OConfigurationTreeRoot tryCreateWithServiceFactory( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, - const ::rtl::OUString& _rPath, sal_Int32 _nDepth = -1, CREATION_MODE _eMode = CM_UPDATABLE, sal_Bool _bLazyWrite = sal_True ); - - /** commit all changes made on the subtree the object is the root for<p/> - All changes made on any <type>OConfigurationNode</type> object retrieved (maybe indirect) from this root - object are committed when calling this method. - @return sal_True if and only if the commit was successfull - */ - sal_Bool commit() const throw(); - - /// invalidate the object - virtual void clear() throw(); - }; - -//........................................................................ -} // namespace utl -//........................................................................ - -#endif // _UNOTOOLS_CONFIGNODE_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/configpathes.hxx b/unotools/inc/unotools/configpathes.hxx deleted file mode 100644 index f570e70c37..0000000000 --- a/unotools/inc/unotools/configpathes.hxx +++ /dev/null @@ -1,183 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef UNOTOOLS_CONFIGPATHES_HXX_INCLUDED -#define UNOTOOLS_CONFIGPATHES_HXX_INCLUDED -#include <sal/types.h> - -namespace rtl -{ - class OUString; -} - -//---------------------------------------------------------------------------- -namespace utl -{ -//---------------------------------------------------------------------------- - /** extract the local nodename and the parent nodepath - from a configuration path. - - @param _sInPath - A configuration path that is not an empty or root path.<BR/> - If this is not a valid configuration path, it is interpreted as - local name of a node. - - @param _rsOutPath - On exit: The configuration path obtained by dropping - the last level off <var>_sInPath</var>.<BR/> - If <var>_sInPath</var> could not be parsed as a valid - configuration path, this is set to an empty string. - - @param _rsLocalName - On exit: The plain (non-escaped) name of the node identified by - <var>_sInPath</var>. <BR/> - If <var>_sInPath</var> could not be parsed as a valid - configuration path, this is set to <var>_sInPath</var>. - - @returns - <TRUE/>, if a parent path could be set - <FALSE/>, if the path was a one-level path or an invalid path - - */ - UNOTOOLS_DLLPUBLIC sal_Bool splitLastFromConfigurationPath(::rtl::OUString const& _sInPath, - ::rtl::OUString& _rsOutPath, - ::rtl::OUString& _rsLocalName); - -//---------------------------------------------------------------------------- - /** extract the first nodename from a configuration path. - - @param _sInPath - A relative configuration path that is not empty.<BR/> - If this is not a valid configuration path, it is interpreted as - a single name of a node. - - @param _sOutPath - If non-null, contains the remainder of the path upon return. - - @returns - The plain (non-escaped) name of the node that is the first step - when traversing <var>_sInPath</var>.<BR/> - If <var>_sInPath</var> could not be parsed as a valid - configuration path, it is returned unaltered. - - */ - UNOTOOLS_DLLPUBLIC ::rtl::OUString extractFirstFromConfigurationPath( - ::rtl::OUString const& _sInPath, ::rtl::OUString* _sOutPath = 0); - -//---------------------------------------------------------------------------- - /** check whether a path is to a nested node with respect to a parent path. - - @param _sNestedPath - A configuration path that maybe points to a descendant of the node - identified by <var>_sPrefixPath</var>, with both pathes starting - from the same node (or both being absolute). - - @param _sPrefixPath - A configuration path.<BR/> - If this path is absolute, <var>_sNestedPath</var> should be absolute; - If this path is relative, <var>_sNestedPath</var> should be relative; - If this path is empty, <var>_sNestedPath</var> may start with a '/', - which is disregarded. - - @returns - <TRUE/>, if <var>_sPrefixPath</var> is a prefix of <var>_sNestedPath</var>; - <FALSE/> otherwise.<BR/> - If both pathes are equal <TRUE/> is returned. - - */ - sal_Bool isPrefixOfConfigurationPath(::rtl::OUString const& _sNestedPath, - ::rtl::OUString const& _sPrefixPath); - -//---------------------------------------------------------------------------- - /** get the relative path to a nested node with respect to a parent path. - - @param _sNestedPath - A configuration path that points to a descendant of the node - identified by <var>_sPrefixPath</var>, with both pathes starting - from the same node (or both being absolute). - - @param _sPrefixPath - A configuration path.<BR/> - If this path is absolute, <var>_sNestedPath</var> must be absolute; - If this path is relative, <var>_sNestedPath</var> must be relative; - If this path is empty, <var>_sNestedPath</var> may start with a '/', - which is stripped. - - @returns - The remaining relative path from the target of <var>_sPrefixPath</var> - to the target of <var>_sNestedPath</var>.<BR/> - If <var>_sPrefixPath</var> is not a prefix of <var>_sNestedPath</var>, - <var>_sNestedPath</var> is returned unaltered. - - */ - UNOTOOLS_DLLPUBLIC ::rtl::OUString dropPrefixFromConfigurationPath(::rtl::OUString const& _sNestedPath, - ::rtl::OUString const& _sPrefixPath); - -//---------------------------------------------------------------------------- - /** Create a one-level relative configuration path from a set element name - without a known set element type. - - @param _sElementName - An arbitrary string that is to be interpreted as - name of a configuration set element. - - @returns - A one-level relative path to the element, of the form - "*['<Name>']", where <Name> is properly escaped. - - */ - UNOTOOLS_DLLPUBLIC ::rtl::OUString wrapConfigurationElementName(::rtl::OUString const& _sElementName); - -//---------------------------------------------------------------------------- - /** Create a one-level relative configuration path from a set element name - and a known set element type. - - @param _sElementName - An arbitrary string that is to be interpreted as - name of a configuration set element. - - @param _sTypeName - An string identifying the type of the element. Usually this is be - the name of the element-template of the set.<BR/> - - @returns - A one-level relative path to the element, of the form - "<Type>['<Name>']", where <Name> is properly escaped. - - */ - ::rtl::OUString wrapConfigurationElementName(::rtl::OUString const& _sElementName, - ::rtl::OUString const& _sTypeName); - -//---------------------------------------------------------------------------- -} // namespace utl -//---------------------------------------------------------------------------- - -#endif // UNOTOOLS_CONFIGPATHES_HXX_INCLUDED - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/configvaluecontainer.hxx b/unotools/inc/unotools/configvaluecontainer.hxx deleted file mode 100644 index 88489bbd19..0000000000 --- a/unotools/inc/unotools/configvaluecontainer.hxx +++ /dev/null @@ -1,238 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef UNOTOOLS_CONFIGVALUECONTAINER_HXX -#define UNOTOOLS_CONFIGVALUECONTAINER_HXX -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <osl/mutex.hxx> - -//......................................................................... -namespace utl -{ -//......................................................................... - -#define CVC_READONLY_ACCESS 0x0000 -#define CVC_UPDATE_ACCESS 0x0001 - -#define CVC_LAZY_UPDATE 0x0000 -#define CVC_IMMEDIATE_UPDATE 0x0002 - - struct OConfigurationValueContainerImpl; - struct NodeValueAccessor; - //===================================================================== - //= OConfigurationValueContainer - //===================================================================== - /** allows simple access to static configuration structures. - - <p>The basic idea of this class is that it's clients (usually derived classes) simply register an - address in memory and a node path, and upon explicit request, the configuration value and the memory - are syncronized.<br/> - This means that when calling <method>read</method>, the current configuration values are copied into - the memory registered for them, and upon calling <method>write</method> the current values in memory - are set in the configuration nodes.</p> - - <p>This way, the usage of this class is pretty straight forward: derive your own class, spend some members - to it, and bind these members to configuration node (usually done in the ctor of the derived class).<br/> - In the dtor, simply call <method>write</method> and <method>commit</method>.</p> - - <p>There is no auto-commit mechanism in the dtor: In the usual scenario, when you derive from this class - and bind some members of your derived class to config nodes, this means that your members will be destroyed - before your base class' dtor is called, so accessing the memory during such a theoretical auto-commit would - yield undefined behaviour.</p> - */ - class UNOTOOLS_DLLPUBLIC OConfigurationValueContainer - { - private: - OConfigurationValueContainerImpl* - m_pImpl; - - protected: - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& - getServiceFactory( ) const; - - protected: - //----------------------------------------------------------------- - // construction/destruction - - /** constructs the object - - @param _rxORB - specifies the service factory which should be used to access the configuration - @param _rAccessSafety - As this class is intented to manipulate objects it does not hold itself (see the various - registerXXX methods), it needs to guard these access for muti threading safety.<br/> - The mutex given here is locked whenever such an access occurs. - @param _pConfigLocation - is an ASCII string describing the configurations node path - @param _nAccessFlags - specifies different aspects of the configuration aspect to be created, e.g. it's update mode etc.<br/> - See the CVC_xxx constants for what you can use here. - @param _nLevels - specifies the number of levels to access under the node given by <arg>_pConfigLocation</arg> - */ - OConfigurationValueContainer( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, - ::osl::Mutex& _rAccessSafety, - const sal_Char* _pConfigLocation, - const sal_uInt16 _nAccessFlags = CVC_UPDATE_ACCESS | CVC_LAZY_UPDATE, - const sal_Int32 _nLevels = -1 - ); - - /** constructs the object - - @param _rxORB - specifies the service factory which should be used to access the configuration - @param _rAccessSafety - As this class is intented to manipulate objects it does not hold itself (see the various - registerXXX methods), it needs to guard these access for muti threading safety.<br/> - The mutex given here is locked whenever such an access occurs. - @param _rConfigLocation - describes the configurations node path - @param _nAccessFlags - specifies different aspects of the configuration aspect to be created, e.g. it's update mode etc.<br/> - See the CVC_xxx constants for what you can use here. - @param _nLevels - specifies the number of levels to access under the node given by <arg>_pConfigLocation</arg> - */ - OConfigurationValueContainer( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, - ::osl::Mutex& _rAccessSafety, - const ::rtl::OUString& _rConfigLocation, - const sal_uInt16 _nAccessFlags = CVC_UPDATE_ACCESS | CVC_LAZY_UPDATE, - const sal_Int32 _nLevels = -1 - ); - - /// dtor - ~OConfigurationValueContainer(); - - //----------------------------------------------------------------- - // registering data containers - - /** registers a data accessor of an arbitrary type. - - <p>Usually, in your derived class you simply add a member of the correct type of the configuration - value, and then call this method with the address of this member.</p> - - <p>If the value you want to access may be <NULL/> at runtime, and if you want to recognize such - <NULL/> values, you may consider using <method>registerNullValueExchangeLocation</method>.</p> - - @param _pRelativePathAscii - is a relative (ASCII) path of the node which should be "mirrored" into the accessor. - @param _pContainer - points to the accessors location in memory. Usually, this is simply an address of your derived class - @param _rValueType - is the type of your accessort. This type must be supported by the configuration. - */ - void registerExchangeLocation( - const sal_Char* _pRelativePathAscii, - void* _pContainer, - const ::com::sun::star::uno::Type& _rValueType - ); - - /** registers a data accessor of an arbitrary type. - - <p>Usually, in your derived class you simply add a member of type <type scope="com.sun.star.uno">Any</type>, - and then call this method with the address of this member.</p> - - @param _pRelativePathAscii - is a relative (ASCII) path of the node which should be "mirrored" into the accessor. - @param _pContainer - points to the Any you want to hold the value - */ - void registerNullValueExchangeLocation( - const sal_Char* _pRelativePathAscii, - ::com::sun::star::uno::Any* _pContainer - ); - - public: - /** reads the configuration data - - <p>The current values of the nodes bound (using the registerXXX methods) is copied into their - respective exchange locations.</p> - - <p>Please note that any changes done to your exchange locations are overridden with the current config - values.</p> - - @see write - */ - void read( ); - - /** updates the configuration data - - <p>The current values in memory (your exchange locations registered using the registerXXX methods) is - forwarded to their respective configuration nodes.</p> - - <p>Note that calling <method>write</method>(<sal_True/) is the same as calling <method>commit</method>(<TRUE/>).</p> - - @precond - The access must have been created for update access - - @param _bCommit - If set to <TRUE/>, an automatic commit is done after the values have been synchronized.<br/> - If set to <FALSE/>, you must explicitly call <method>commit</method> to make your changes persistent. - - @see read - @see commit - */ - void write( sal_Bool _bCommit = sal_True ); - - /** commits any changes done - - <p>Note that calling <method>write</method>(<sal_True/) is the same as calling <method>commit</method>(<TRUE/>).</p> - - @precond - The access must have been created for update access - - @param _bWrite - If <TRUE/>, the current values in the exchange locations are written to the configuration nodes - before the changes are committed.<br/> - If <FALSE/>, only the current values in the config nodes (as present since the last call to - <method>write</method>) are committed. - */ - void commit( sal_Bool _bWrite = sal_True ); - - private: - /// implements the ctors - void implConstruct( - const ::rtl::OUString& _rConfigLocation, - const sal_uInt16 _nAccessFlags, - const sal_Int32 _nLevels - ); - - /// registers a value container - void implRegisterExchangeLocation( const NodeValueAccessor& _rAccessor ); - }; - -//......................................................................... -} // namespace utl -//......................................................................... - -#endif // UNOTOOLS_CONFIGVALUECONTAINER_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/datetime.hxx b/unotools/inc/unotools/datetime.hxx deleted file mode 100644 index 59cd2de36b..0000000000 --- a/unotools/inc/unotools/datetime.hxx +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -//= conversions UNO3.TimeClass <-> Tools.TimeClass (Date/Time/DateTime) -#include "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_DATETIME_HXX_ -#define _UNOTOOLS_DATETIME_HXX_ - -#include <com/sun/star/util/Date.hpp> -#include <com/sun/star/util/Time.hpp> -#include <com/sun/star/util/DateTime.hpp> - -class Date; -class Time; -class DateTime; - -//......................................................................... -namespace utl -{ -//......................................................................... - - namespace starutil = ::com::sun::star::util; - - UNOTOOLS_DLLPUBLIC void typeConvert(const Time& _rTime, starutil::Time& _rOut); - UNOTOOLS_DLLPUBLIC void typeConvert(const starutil::Time& _rTime, Time& _rOut); - - UNOTOOLS_DLLPUBLIC void typeConvert(const Date& _rDate, starutil::Date& _rOut); - UNOTOOLS_DLLPUBLIC void typeConvert(const starutil::Date& _rDate, Date& _rOut); - - UNOTOOLS_DLLPUBLIC void typeConvert(const DateTime& _rDateTime, starutil::DateTime& _rOut); - UNOTOOLS_DLLPUBLIC void typeConvert(const starutil::DateTime& _rDateTime, DateTime& _rOut); - -//......................................................................... -} // namespace utl -//......................................................................... - -#endif // _UNOTOOLS_DATETIME_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/defaultoptions.hxx b/unotools/inc/unotools/defaultoptions.hxx deleted file mode 100644 index 3250b7c2c1..0000000000 --- a/unotools/inc/unotools/defaultoptions.hxx +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_DEFAULTOPTIONS_HXX -#define INCLUDED_unotools_DEFAULTOPTIONS_HXX - -#include "unotools/unotoolsdllapi.h" -#include "tools/solar.h" -#include <unotools/options.hxx> - -class String; -class SvtDefaultOptions_Impl; - -// class SvtDefaultOptions ----------------------------------------------- - -class SvtDefaultOptions_Impl; -class UNOTOOLS_DLLPUBLIC SvtDefaultOptions: public utl::detail::Options -{ -private: - SvtDefaultOptions_Impl* pImp; - -public: - - SvtDefaultOptions(); - virtual ~SvtDefaultOptions(); - - String GetDefaultPath( sal_uInt16 nId ) const; -}; - -#endif // #ifndef INCLUDED_unotools_DEFAULTOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/desktopterminationobserver.hxx b/unotools/inc/unotools/desktopterminationobserver.hxx deleted file mode 100644 index 8eb6c52746..0000000000 --- a/unotools/inc/unotools/desktopterminationobserver.hxx +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef UNOTOOLS_INC_UNOTOOLS_DESKTOPTERMINATIONOBSERVER_HXX -#define UNOTOOLS_INC_UNOTOOLS_DESKTOPTERMINATIONOBSERVER_HXX - -/** === begin UNO includes === **/ -/** === end UNO includes === **/ - -//........................................................................ -namespace utl -{ -//........................................................................ - - //==================================================================== - //= ITerminationListener - //==================================================================== - /** non-UNO version of the <type scope="com.sun.star.frame">XTerminateListener</type> - */ - class ITerminationListener - { - public: - virtual bool queryTermination() const = 0; - virtual void notifyTermination() = 0; - }; - - //==================================================================== - //= DesktopTerminationObserver - //==================================================================== - /** a class which allows non-UNO components to observe the desktop (aka application) - for it's shutdown - */ - class UNOTOOLS_DLLPUBLIC DesktopTerminationObserver - { - public: - /** registers a listener which should be notified when the desktop terminates - (which means the application is shutting down) - */ - static void registerTerminationListener( ITerminationListener* _pListener ); - - /** revokes a termination listener - */ - static void revokeTerminationListener( ITerminationListener* _pListener ); - - private: - DesktopTerminationObserver(); // never implemented, only static methods - }; - -//........................................................................ -} // namespace utl -//........................................................................ - -#endif // UNOTOOLS_INC_UNOTOOLS_DESKTOPTERMINATIONOBSERVER_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/digitgroupingiterator.hxx b/unotools/inc/unotools/digitgroupingiterator.hxx deleted file mode 100644 index 96d8c25781..0000000000 --- a/unotools/inc/unotools/digitgroupingiterator.hxx +++ /dev/null @@ -1,207 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_UNOTOOLS_DIGITGROUPINGITERATOR_HXX -#define INCLUDED_UNOTOOLS_DIGITGROUPINGITERATOR_HXX - -#include <com/sun/star/uno/Sequence.hxx> - -namespace utl { - -/** Iterator to be used with a digit grouping as obtained through - LocaleDataWrapper::getDigitGrouping(). - - The iterator advances over the digit groupings, returning the number of - digits per group. If the last group was encountered the iterator will - always return the last grouping. - - Grouping values are sanitized to be 0 <= value <= SAL_MAX_UINT16, even if - originally Int32, to be able to easily cast it down to String's xub_StrLen. - This shouldn't make any difference in practice. - - Usage example with a string buffer containing a decimal representation of - an integer number. Note that of course this loop could be optimized to not - count single characters but hunks of groups instead using the get() method, - this is just for illustrating usage. Anyway, for double values it is highly - more efficient to use ::rtl::math::doubleToString() and pass the grouping - sequence, instead of using this iterator and inserting charcters into - strings. - - DigitGroupingIterator aGrouping(...) - sal_Int32 nCount = 0; - sal_Int32 n = aBuffer.getLength(); - // >1 because we don't want to insert a separator if there is no leading digit. - while (n-- > 1) - { - if (++nCount >= aGrouping.getPos()) - { - aBuffer.insert( n, cSeparator); - nGroupDigits = aGrouping.advance(); - } - } - - */ - -class DigitGroupingIterator -{ - const ::com::sun::star::uno::Sequence< sal_Int32 > maGroupings; - - sal_Int32 mnGroup; // current active grouping - sal_Int32 mnDigits; // current active digits per group - sal_Int32 mnNextPos; // position (in digits) of next grouping - - void setInfinite() - { - mnGroup = maGroupings.getLength(); - } - - bool isInfinite() const - { - return mnGroup >= maGroupings.getLength(); - } - - sal_Int32 getGrouping() const - { - if (mnGroup < maGroupings.getLength()) - { - sal_Int32 n = maGroupings[mnGroup]; - OSL_ENSURE( 0 <= n && n <= SAL_MAX_UINT16, "DigitGroupingIterator::getGrouping: far out"); - if (n < 0) - n = 0; // sanitize ... - else if (n > SAL_MAX_UINT16) - n = SAL_MAX_UINT16; // limit for use with xub_StrLen - return n; - } - return 0; - } - - void setPos() - { - // someone might be playing jokes on us, so check for overflow - if (mnNextPos <= SAL_MAX_INT32 - mnDigits) - mnNextPos += mnDigits; - } - - void setDigits() - { - sal_Int32 nPrev = mnDigits; - mnDigits = getGrouping(); - if (!mnDigits) - { - mnDigits = nPrev; - setInfinite(); - } - setPos(); - } - - void initGrouping() - { - mnDigits = 3; // just in case of constructed with empty grouping - mnGroup = 0; - mnNextPos = 0; - setDigits(); - } - - // not implemented, prevent usage - DigitGroupingIterator(); - DigitGroupingIterator( const DigitGroupingIterator & ); - DigitGroupingIterator & operator=( const DigitGroupingIterator & ); - -public: - - explicit DigitGroupingIterator( const ::com::sun::star::uno::Sequence< sal_Int32 > & rGroupings ) - : maGroupings( rGroupings) - { - initGrouping(); - } - - /** Advance iterator to next grouping. */ - DigitGroupingIterator & advance() - { - if (isInfinite()) - setPos(); - else - { - ++mnGroup; - setDigits(); - } - return *this; - } - - /** Obtain current grouping. Always > 0. */ - sal_Int32 get() const - { - return mnDigits; - } - - /** The next position (in integer digits) from the right where to insert a - group separator. */ - sal_Int32 getPos() - { - return mnNextPos; - } - - /** Reset iterator to start again from the right beginning. */ - void reset() - { - initGrouping(); - } - - /** Create a sequence of bool values containing positions where to add a - separator when iterating forward over a string and copying digit per - digit. For example, for grouping in thousands and nIntegerDigits==7 the - sequence returned would be {1,0,0,1,0,0,0} so the caller would add a - separator after the 1st and the 4th digit. */ - static ::com::sun::star::uno::Sequence< sal_Bool > createForwardSequence( - sal_Int32 nIntegerDigits, - const ::com::sun::star::uno::Sequence< sal_Int32 > & rGroupings ) - { - if (nIntegerDigits <= 0) - return ::com::sun::star::uno::Sequence< sal_Bool >(); - DigitGroupingIterator aIterator( rGroupings); - ::com::sun::star::uno::Sequence< sal_Bool > aSeq( nIntegerDigits); - sal_Bool* pArr = aSeq.getArray(); - for (sal_Int32 j = 0; --nIntegerDigits >= 0; ++j) - { - if (j == aIterator.getPos()) - { - pArr[nIntegerDigits] = sal_True; - aIterator.advance(); - } - else - pArr[nIntegerDigits] = sal_False; - } - return aSeq; - } -}; - -} // namespace utl - -#endif // INCLUDED_UNOTOOLS_DIGITGROUPINGITERATOR_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/docinfohelper.hxx b/unotools/inc/unotools/docinfohelper.hxx deleted file mode 100644 index 2b4d5a9dfa..0000000000 --- a/unotools/inc/unotools/docinfohelper.hxx +++ /dev/null @@ -1,49 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UNOTOOLS_DOCINFOHELPER_HXX_ -#define _UNOTOOLS_DOCINFOHELPER_HXX_ - -#include <unotools/unotoolsdllapi.h> -#include <rtl/ustring.hxx> - -namespace utl -{ -class UNOTOOLS_DLLPUBLIC DocInfoHelper -{ -public: - static ::rtl::OUString GetGeneratorString(); - -}; - -} // namespace utl - - -#endif // _UNOTOOLS_DOCINFOHELPER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/dynamicmenuoptions.hxx b/unotools/inc/unotools/dynamicmenuoptions.hxx deleted file mode 100644 index d6e42ed195..0000000000 --- a/unotools/inc/unotools/dynamicmenuoptions.hxx +++ /dev/null @@ -1,222 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_DYNAMICMENUOPTIONS_HXX -#define INCLUDED_unotools_DYNAMICMENUOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <com/sun/star/uno/Sequence.h> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// types, enums, ... -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @descr The method GetList() returns a list of property values. - Use follow defines to seperate values by names. -*//*-*************************************************************************************************************/ -#define DYNAMICMENU_PROPERTYNAME_URL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("URL" )) -#define DYNAMICMENU_PROPERTYNAME_TITLE ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Title" )) -#define DYNAMICMENU_PROPERTYNAME_IMAGEIDENTIFIER ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageIdentifier" )) -#define DYNAMICMENU_PROPERTYNAME_TARGETNAME ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TargetName" )) - -/*-************************************************************************************************************//** - @descr You can use these enum values to specify right menu if you call our interface methods. -*//*-*************************************************************************************************************/ -enum EDynamicMenuType -{ - E_NEWMENU = 0, - E_WIZARDMENU = 1, - E_HELPBOOKMARKS = 2 -}; -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtDynamicMenuOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about dynamic menus - @descr Make it possible to configure dynamic menu structures of menus like "new" or "wizard". - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtDynamicMenuOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtDynamicMenuOptions(); - virtual ~SvtDynamicMenuOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short clear complete sepcified list - @descr Call this methods to clear the whole list. - To fill it again use AppendItem(). - - @seealso - - - @param "eMenu" select right menu to clear. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void Clear( EDynamicMenuType eMenu ); - - /*-****************************************************************************************************//** - @short return complete specified list - @descr Call it to get all entries of an dynamic menu. - We return a list of all nodes with his names and properties. - - @seealso - - - @param "eMenu" select right menu. - @return A list of menu items is returned. - - @onerror We return an empty list. - *//*-*****************************************************************************************************/ - - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > > GetMenu( EDynamicMenuType eMenu ) const; - - /*-****************************************************************************************************//** - @short append a new item to specified menu - @descr You can append items to a menu only - removing isn't allowed for a special item! - We support a nothing or all mechanism only! Clear all or append something ... - - @seealso method Clear() - - @param "eMenu" select right menu. - @param "sURL" URL for dispatch - @param "sTitle" label of menu entry - @param "sImageIdentifier" icon identifier - @param "sTargetName" target for dispatch - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void AppendItem( EDynamicMenuType eMenu , - const ::rtl::OUString& sURL , - const ::rtl::OUString& sTitle , - const ::rtl::OUString& sImageIdentifier , - const ::rtl::OUString& sTargetName ); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class is partially threadsafe (for de-/initialization only). - All access methods are'nt safe! - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtDynamicMenuOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtDynamicMenuOptions - -#endif // #ifndef INCLUDED_unotools_DYNAMICMENUOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/eventcfg.hxx b/unotools/inc/unotools/eventcfg.hxx deleted file mode 100644 index 02c53ed2f8..0000000000 --- a/unotools/inc/unotools/eventcfg.hxx +++ /dev/null @@ -1,125 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _EVENTCFG_HXX -#define _EVENTCFG_HXX - -#include "unotools/unotoolsdllapi.h" -#include <unotools/configitem.hxx> -#include <com/sun/star/document/XEventsSupplier.hpp> -#include <com/sun/star/container/XNameReplace.hpp> -#include <com/sun/star/frame/XFrame.hpp> -#include <cppuhelper/weakref.hxx> -#include <cppuhelper/implbase2.hxx> -#include <boost/unordered_map.hpp> -#include <vector> - -#define STR_EVENT_STARTAPP 0 -#define STR_EVENT_CLOSEAPP 1 -#define STR_EVENT_DOCCREATED 2 -#define STR_EVENT_CREATEDOC 3 -#define STR_EVENT_LOADFINISHED 4 -#define STR_EVENT_OPENDOC 5 -#define STR_EVENT_PREPARECLOSEDOC 6 -#define STR_EVENT_CLOSEDOC 7 -#define STR_EVENT_SAVEDOC 8 -#define STR_EVENT_SAVEDOCDONE 9 -#define STR_EVENT_SAVEDOCFAILED 10 -#define STR_EVENT_SAVEASDOC 11 -#define STR_EVENT_SAVEASDOCDONE 12 -#define STR_EVENT_SAVEASDOCFAILED 13 -#define STR_EVENT_SAVETODOC 14 -#define STR_EVENT_SAVETODOCDONE 15 -#define STR_EVENT_SAVETODOCFAILED 16 -#define STR_EVENT_ACTIVATEDOC 17 -#define STR_EVENT_DEACTIVATEDOC 18 -#define STR_EVENT_PRINTDOC 19 -#define STR_EVENT_VIEWCREATED 20 -#define STR_EVENT_PREPARECLOSEVIEW 21 -#define STR_EVENT_CLOSEVIEW 22 -#define STR_EVENT_MODIFYCHANGED 23 -#define STR_EVENT_TITLECHANGED 24 -#define STR_EVENT_VISAREACHANGED 25 -#define STR_EVENT_MODECHANGED 26 -#define STR_EVENT_STORAGECHANGED 27 - -typedef ::boost::unordered_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash, ::std::equal_to< ::rtl::OUString > > EventBindingHash; -typedef ::std::vector< ::com::sun::star::uno::WeakReference< ::com::sun::star::frame::XFrame > > FrameVector; -typedef ::std::vector< ::rtl::OUString > SupportedEventsVector; - -class GlobalEventConfig_Impl : public utl::ConfigItem -{ - EventBindingHash m_eventBindingHash; - FrameVector m_lFrames; - SupportedEventsVector m_supportedEvents; - - void initBindingInfo(); - -public: - GlobalEventConfig_Impl( ); - ~GlobalEventConfig_Impl( ); - - void EstablishFrameCallback(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame); - void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames); - void Commit(); - - ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > SAL_CALL getEvents( ) throw (::com::sun::star::uno::RuntimeException); - void SAL_CALL replaceByName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw (::com::sun::star::uno::RuntimeException); - ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw (::com::sun::star::uno::RuntimeException); - ::sal_Bool SAL_CALL hasElements( ) throw (::com::sun::star::uno::RuntimeException); - ::rtl::OUString GetEventName( sal_Int32 nID ); -}; - -class UNOTOOLS_DLLPUBLIC GlobalEventConfig: - public ::cppu::WeakImplHelper2 < ::com::sun::star::document::XEventsSupplier, ::com::sun::star::container::XNameReplace > -{ - public: - GlobalEventConfig( ); - ~GlobalEventConfig( ); - static ::osl::Mutex& GetOwnStaticMutex(); - - void EstablishFrameCallback(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame); - ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > SAL_CALL getEvents( ) throw (::com::sun::star::uno::RuntimeException); - void SAL_CALL replaceByName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw (::com::sun::star::uno::RuntimeException); - ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw (::com::sun::star::uno::RuntimeException); - ::sal_Bool SAL_CALL hasElements( ) throw (::com::sun::star::uno::RuntimeException); - static ::rtl::OUString GetEventName( sal_Int32 nID ); - - private: - static GlobalEventConfig_Impl* m_pImpl; - static sal_Int32 m_nRefCount; -}; - -#endif // _EVENTCFG_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/eventlisteneradapter.hxx b/unotools/inc/unotools/eventlisteneradapter.hxx deleted file mode 100644 index 9cf1f997fc..0000000000 --- a/unotools/inc/unotools/eventlisteneradapter.hxx +++ /dev/null @@ -1,73 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_EVENTLISTENERADAPTER_HXX_ -#define _UNOTOOLS_EVENTLISTENERADAPTER_HXX_ -#include <com/sun/star/lang/XComponent.hpp> - -//......................................................................... -namespace utl -{ -//......................................................................... - - struct OEventListenerAdapterImpl; - //===================================================================== - //= OEventListenerAdapter - //===================================================================== - /** base class for non-UNO dispose listeners - */ - class UNOTOOLS_DLLPUBLIC OEventListenerAdapter - { - friend class OEventListenerImpl; - - private: - UNOTOOLS_DLLPRIVATE OEventListenerAdapter( const OEventListenerAdapter& _rSource ); // never implemented - UNOTOOLS_DLLPRIVATE const OEventListenerAdapter& operator=( const OEventListenerAdapter& _rSource ); // never implemented - - protected: - OEventListenerAdapterImpl* m_pImpl; - - protected: - OEventListenerAdapter(); - virtual ~OEventListenerAdapter(); - - void startComponentListening( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& _rxComp ); - void stopComponentListening( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& _rxComp ); - void stopAllComponentListening( ); - - virtual void _disposing( const ::com::sun::star::lang::EventObject& _rSource ) = 0; - }; - -//......................................................................... -} // namespace utl -//......................................................................... - -#endif // _UNOTOOLS_EVENTLISTENERADAPTER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/extendedsecurityoptions.hxx b/unotools/inc/unotools/extendedsecurityoptions.hxx deleted file mode 100644 index d3a2e324ba..0000000000 --- a/unotools/inc/unotools/extendedsecurityoptions.hxx +++ /dev/null @@ -1,163 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_EXTENDEDSECURITYOPTIONS_HXX -#define INCLUDED_unotools_EXTENDEDSECURITYOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <com/sun/star/uno/Sequence.h> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtExtendedSecurityOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about security features - @descr - - - @implements - - @base - - - @ATTENTION This class is partially threadsafe. - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtExtendedSecurityOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - // Must be zero based! - enum OpenHyperlinkMode - { - OPEN_NEVER = 0, - OPEN_WITHSECURITYCHECK, - OPEN_ALWAYS - }; - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtExtendedSecurityOptions(); - virtual ~SvtExtendedSecurityOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - sal_Bool IsSecureHyperlink( const rtl::OUString& aURL ) const; - com::sun::star::uno::Sequence< rtl::OUString > GetSecureExtensionList() const; - - OpenHyperlinkMode GetOpenHyperlinkMode(); - void SetOpenHyperlinkMode( OpenHyperlinkMode aMode ); - sal_Bool IsOpenHyperlinkModeReadOnly() const; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class is partially threadsafe (for de-/initialization only). - All access methods are'nt safe! - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetInitMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtExtendedSecurityOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtExtendedSecurityOptions - -#endif // #ifndef INCLUDED_unotools_EXTENDEDSECURITYOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/fltrcfg.hxx b/unotools/inc/unotools/fltrcfg.hxx deleted file mode 100644 index 12c67401f5..0000000000 --- a/unotools/inc/unotools/fltrcfg.hxx +++ /dev/null @@ -1,104 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _SVT_FLTRCFG_HXX -#define _SVT_FLTRCFG_HXX - -// ----------------------------------------------------------------------- - -#include "unotools/unotoolsdllapi.h" -#include <unotools/configitem.hxx> - -struct SvtFilterOptions_Impl; -class UNOTOOLS_DLLPUBLIC SvtFilterOptions : public utl::ConfigItem -{ - SvtFilterOptions_Impl* pImp; - - const com::sun::star::uno::Sequence<rtl::OUString>& GetPropertyNames(); -public: - SvtFilterOptions(); - virtual ~SvtFilterOptions(); - - virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames); - virtual void Commit(); - void Load(); - - void SetLoadWordBasicCode( sal_Bool bFlag ); - sal_Bool IsLoadWordBasicCode() const; - void SetLoadWordBasicExecutable( sal_Bool bFlag ); - sal_Bool IsLoadWordBasicExecutable() const; - void SetLoadWordBasicStorage( sal_Bool bFlag ); - sal_Bool IsLoadWordBasicStorage() const; - - void SetLoadExcelBasicCode( sal_Bool bFlag ); - sal_Bool IsLoadExcelBasicCode() const; - void SetLoadExcelBasicExecutable( sal_Bool bFlag ); - sal_Bool IsLoadExcelBasicExecutable() const; - void SetLoadExcelBasicStorage( sal_Bool bFlag ); - sal_Bool IsLoadExcelBasicStorage() const; - - void SetLoadPPointBasicCode( sal_Bool bFlag ); - sal_Bool IsLoadPPointBasicCode() const; - void SetLoadPPointBasicStorage( sal_Bool bFlag ); - sal_Bool IsLoadPPointBasicStorage() const; - - sal_Bool IsMathType2Math() const; - void SetMathType2Math( sal_Bool bFlag ); - sal_Bool IsMath2MathType() const; - void SetMath2MathType( sal_Bool bFlag ); - - sal_Bool IsWinWord2Writer() const; - void SetWinWord2Writer( sal_Bool bFlag ); - sal_Bool IsWriter2WinWord() const; - void SetWriter2WinWord( sal_Bool bFlag ); - - sal_Bool IsUseEnhancedFields() const; - void SetUseEnhancedFields( sal_Bool bFlag ); - - sal_Bool IsExcel2Calc() const; - void SetExcel2Calc( sal_Bool bFlag ); - sal_Bool IsCalc2Excel() const; - void SetCalc2Excel( sal_Bool bFlag ); - - sal_Bool IsPowerPoint2Impress() const; - void SetPowerPoint2Impress( sal_Bool bFlag ); - sal_Bool IsImpress2PowerPoint() const; - void SetImpress2PowerPoint( sal_Bool bFlag ); - - sal_Bool IsEnablePPTPreview() const; - sal_Bool IsEnableCalcPreview() const; - sal_Bool IsEnableWordPreview() const; - - static SvtFilterOptions* Get(); -}; - -#endif - - - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/fontcfg.hxx b/unotools/inc/unotools/fontcfg.hxx deleted file mode 100644 index 784d03e01f..0000000000 --- a/unotools/inc/unotools/fontcfg.hxx +++ /dev/null @@ -1,230 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _UNOTOOLS_FONTCFG_HXX -#define _UNOTOOLS_FONTCFG_HXX - -#include <unotools/unotoolsdllapi.h> -#include <tools/string.hxx> -#include <tools/fontenum.hxx> -#include <com/sun/star/lang/Locale.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/container/XNameAccess.hpp> - -#include <boost/unordered_map.hpp> -#include <boost/unordered_set.hpp> -#include <vector> - -namespace com { -namespace sun { -namespace star { -namespace lang { - -// equality operator needed for hash_map; -// (-> why does this need to be in the namespace of Locale ? g++ fails to compile else) -inline bool operator==( const com::sun::star::lang::Locale& rLeft, const com::sun::star::lang::Locale& rRight ) -{ - return - rLeft.Language.equals( rRight.Language ) && - rLeft.Country.equals( rRight.Country ) && - rLeft.Variant.equals( rRight.Variant ) - ; -} -}}}} - -namespace utl -{ - -struct LocaleHash -{ - size_t operator()( const com::sun::star::lang::Locale& rLocale ) const - { - return - (size_t)rLocale.Language.hashCode() ^ - (size_t)rLocale.Country.hashCode() ^ - (size_t)rLocale.Variant.hashCode(); - } -}; - -class UNOTOOLS_DLLPUBLIC DefaultFontConfiguration -{ - com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > - m_xConfigProvider; - com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > - m_xConfigAccess; - - struct LocaleAccess - { - // the real string used in the configuration - // used to get rid of upper/lower case problems - rtl::OUString aConfigLocaleString; - // xAccess is mutable to be able to be filled on demand - mutable com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > xAccess; - }; - - boost::unordered_map< com::sun::star::lang::Locale, - LocaleAccess, - utl::LocaleHash > - m_aConfig; - - rtl::OUString tryLocale( const com::sun::star::lang::Locale& rLocale, const rtl::OUString& rType ) const; - - public: - DefaultFontConfiguration(); - ~DefaultFontConfiguration(); - - static DefaultFontConfiguration& get(); - - rtl::OUString getDefaultFont( const com::sun::star::lang::Locale& rLocale, int nType ) const; - rtl::OUString getUserInterfaceFont( const com::sun::star::lang::Locale& rLocale ) const; -}; - -// IMPL_FONT_ATTR_DEFAULT - Default-Font like Andale Sans UI, Palace Script, Albany, Thorndale, Cumberland, ... -// IMPL_FONT_ATTR_STANDARD - Standard-Font like Arial, Times, Courier, ... -// IMPL_FONT_ATTR_NORMAL - normal Font for writing text like Arial, Verdana, Arial Narrow, Trebuchet, Times, Courier, ... -// IMPL_FONT_ATTR_SYMBOL - Font with symbols -// IMPL_FONT_ATTR_DECORATIVE - Readable and normally used for drawings -// IMPL_FONT_ATTR_SPECIAL - very special design -// IMPL_FONT_ATTR_TITLING - only uppercase characters -// IMPL_FONT_ATTR_FULL - Font with normally all characters -// IMPL_FONT_ATTR_CAPITALS - only uppercase characters, but lowercase characters smaller as the uppercase characters -// IMPL_FONT_ATTR_TYPEWRITER - like a typewriter: Courier, ... -// IMPL_FONT_ATTR_SCRIPT - Handwriting or Script -// IMPL_FONT_ATTR_HANDWRITING - More Handwriting with normal letters -// IMPL_FONT_ATTR_CHANCERY - Like Zapf Chancery -// IMPL_FONT_ATTR_COMIC - Like Comic Sans MS -// IMPL_FONT_ATTR_BRUSHSCRIPT - More Script -// IMPL_FONT_ATTR_OTHERSTYLE - OldStyle, ... so negativ points -#define IMPL_FONT_ATTR_DEFAULT ((sal_uLong)0x00000001) -#define IMPL_FONT_ATTR_STANDARD ((sal_uLong)0x00000002) -#define IMPL_FONT_ATTR_NORMAL ((sal_uLong)0x00000004) -#define IMPL_FONT_ATTR_SYMBOL ((sal_uLong)0x00000008) -#define IMPL_FONT_ATTR_FIXED ((sal_uLong)0x00000010) -#define IMPL_FONT_ATTR_SANSSERIF ((sal_uLong)0x00000020) -#define IMPL_FONT_ATTR_SERIF ((sal_uLong)0x00000040) -#define IMPL_FONT_ATTR_DECORATIVE ((sal_uLong)0x00000080) -#define IMPL_FONT_ATTR_SPECIAL ((sal_uLong)0x00000100) -#define IMPL_FONT_ATTR_ITALIC ((sal_uLong)0x00000200) -#define IMPL_FONT_ATTR_TITLING ((sal_uLong)0x00000400) -#define IMPL_FONT_ATTR_CAPITALS ((sal_uLong)0x00000800) -#define IMPL_FONT_ATTR_CJK ((sal_uLong)0x00001000) -#define IMPL_FONT_ATTR_CJK_JP ((sal_uLong)0x00002000) -#define IMPL_FONT_ATTR_CJK_SC ((sal_uLong)0x00004000) -#define IMPL_FONT_ATTR_CJK_TC ((sal_uLong)0x00008000) -#define IMPL_FONT_ATTR_CJK_KR ((sal_uLong)0x00010000) -#define IMPL_FONT_ATTR_CTL ((sal_uLong)0x00020000) -#define IMPL_FONT_ATTR_NONELATIN ((sal_uLong)0x00040000) -#define IMPL_FONT_ATTR_FULL ((sal_uLong)0x00080000) -#define IMPL_FONT_ATTR_OUTLINE ((sal_uLong)0x00100000) -#define IMPL_FONT_ATTR_SHADOW ((sal_uLong)0x00200000) -#define IMPL_FONT_ATTR_ROUNDED ((sal_uLong)0x00400000) -#define IMPL_FONT_ATTR_TYPEWRITER ((sal_uLong)0x00800000) -#define IMPL_FONT_ATTR_SCRIPT ((sal_uLong)0x01000000) -#define IMPL_FONT_ATTR_HANDWRITING ((sal_uLong)0x02000000) -#define IMPL_FONT_ATTR_CHANCERY ((sal_uLong)0x04000000) -#define IMPL_FONT_ATTR_COMIC ((sal_uLong)0x08000000) -#define IMPL_FONT_ATTR_BRUSHSCRIPT ((sal_uLong)0x10000000) -#define IMPL_FONT_ATTR_GOTHIC ((sal_uLong)0x20000000) -#define IMPL_FONT_ATTR_SCHOOLBOOK ((sal_uLong)0x40000000) -#define IMPL_FONT_ATTR_OTHERSTYLE ((sal_uLong)0x80000000) - -#define IMPL_FONT_ATTR_CJK_ALLLANG (IMPL_FONT_ATTR_CJK_JP | IMPL_FONT_ATTR_CJK_SC | IMPL_FONT_ATTR_CJK_TC | IMPL_FONT_ATTR_CJK_KR) -#define IMPL_FONT_ATTR_ALLSCRIPT (IMPL_FONT_ATTR_SCRIPT | IMPL_FONT_ATTR_HANDWRITING | IMPL_FONT_ATTR_CHANCERY | IMPL_FONT_ATTR_COMIC | IMPL_FONT_ATTR_BRUSHSCRIPT) -#define IMPL_FONT_ATTR_ALLSUBSCRIPT (IMPL_FONT_ATTR_HANDWRITING | IMPL_FONT_ATTR_CHANCERY | IMPL_FONT_ATTR_COMIC | IMPL_FONT_ATTR_BRUSHSCRIPT) -#define IMPL_FONT_ATTR_ALLSERIFSTYLE (IMPL_FONT_ATTR_ALLSCRIPT |\ - IMPL_FONT_ATTR_SANSSERIF | IMPL_FONT_ATTR_SERIF |\ - IMPL_FONT_ATTR_FIXED | IMPL_FONT_ATTR_ITALIC |\ - IMPL_FONT_ATTR_GOTHIC | IMPL_FONT_ATTR_SCHOOLBOOK |\ - IMPL_FONT_ATTR_SHADOW | IMPL_FONT_ATTR_OUTLINE) - -struct UNOTOOLS_DLLPUBLIC FontNameAttr -{ - String Name; - ::std::vector< String > Substitutions; - ::std::vector< String > MSSubstitutions; - ::std::vector< String > PSSubstitutions; - ::std::vector< String > HTMLSubstitutions; - FontWeight Weight; - FontWidth Width; - unsigned long Type; // bitfield of IMPL_FONT_ATTR_* -}; - -class UNOTOOLS_DLLPUBLIC FontSubstConfiguration -{ -private: - com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > - m_xConfigProvider; - com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > - m_xConfigAccess; - struct LocaleSubst - { - rtl::OUString aConfigLocaleString; - mutable bool bConfigRead; - // note: aSubstAttributes must be sorted alphabetically by Name - // searches on the substitutes are done with Name as key, where - // a minimal match is sufficient (that is e.g. "Thorndale" will match - // "Thorndale BlaBlub"). Also names must be lower case. - mutable std::vector< FontNameAttr > aSubstAttributes; - - LocaleSubst() : bConfigRead( false ) {} - }; - boost::unordered_map< com::sun::star::lang::Locale, LocaleSubst, utl::LocaleHash > m_aSubst; - typedef boost::unordered_set< rtl::OUString, rtl::OUStringHash > UniqueSubstHash; - mutable UniqueSubstHash maSubstHash; - - - void fillSubstVector( const com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > xFont, - const rtl::OUString& rType, - std::vector< String >& rSubstVector ) const; - FontWeight getSubstWeight( const com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > xFont, - const rtl::OUString& rType ) const; - FontWidth getSubstWidth( const com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > xFont, - const rtl::OUString& rType ) const; - unsigned long getSubstType( const com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > xFont, - const rtl::OUString& rType ) const; - void readLocaleSubst( const com::sun::star::lang::Locale& rLocale ) const; -public: - FontSubstConfiguration(); - ~FontSubstConfiguration(); - - static FontSubstConfiguration& get(); - - const FontNameAttr* getSubstInfo( - const String& rFontName, - const com::sun::star::lang::Locale& rLocale = - com::sun::star::lang::Locale( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "en" ) ), - rtl::OUString(), - rtl::OUString() ) - ) const; - static void getMapName( const String& rOrgName, String& rShortName, String& rFamilyName, FontWeight& rWeight, FontWidth& rWidth, sal_uLong& rType ); -}; - -} // namespace utl - -#endif // _UNOTOOLS_FONTCFG_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/fontcvt.hxx b/unotools/inc/unotools/fontcvt.hxx deleted file mode 100644 index 720a518d30..0000000000 --- a/unotools/inc/unotools/fontcvt.hxx +++ /dev/null @@ -1,82 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UNOTOOLS_FONTCVT_HXX -#define _UNOTOOLS_FONTCVT_HXX - -#include <unotools/unotoolsdllapi.h> -#include <tools/string.hxx> - -// ------------------ -// - FontToSubsFont - -// ------------------ - -#define FONTTOSUBSFONT_IMPORT ((sal_uLong)0x00000001) -#define FONTTOSUBSFONT_EXPORT ((sal_uLong)0x00000002) -#define FONTTOSUBSFONT_ONLYOLDSOSYMBOLFONTS ((sal_uLong)0x00000004) - -typedef void* FontToSubsFontConverter; -UNOTOOLS_DLLPUBLIC FontToSubsFontConverter CreateFontToSubsFontConverter( const String& rFontName, sal_uLong nFlags ); -UNOTOOLS_DLLPUBLIC void DestroyFontToSubsFontConverter( FontToSubsFontConverter hConverter ); -UNOTOOLS_DLLPUBLIC sal_Unicode ConvertFontToSubsFontChar( FontToSubsFontConverter hConverter, sal_Unicode c ); -UNOTOOLS_DLLPUBLIC String GetFontToSubsFontName( FontToSubsFontConverter hConverter ); - -// --------------------------- -// - StarSymbolToMSMultiFont - -// --------------------------- - -class UNOTOOLS_DLLPUBLIC StarSymbolToMSMultiFont -{ -public: - //Returns the name of the best windows symbol font which this char can be - //mapped to. Sets rChar to the correct position for that font. If no - //match found, then no name is returned, and rChar is unchanged. If you - //want to convert a string, you don't want to use this. - virtual String ConvertChar(sal_Unicode &rChar) = 0; - - //Starts converting the string at position rIndex. It converts as much of - //the string that can be converted to the same symbol font and returns the - //name of that font. rIndex is modified to the last index that was - //converted. Typically you call if continously until rIndex == - //rString.Len() and handle each section as seperate 8bit strings using - //seperate fonts. Will return an empty string for a continous section - //that has no possible mapping. - virtual String ConvertString(String &rString, xub_StrLen &rIndex) = 0; - virtual ~StarSymbolToMSMultiFont() {} -}; - -//with bPerfect set the converter will only try and convert symbols which have -//perfect mappings to the windows symbols fonts. With it not set, it will -//allow somewhat more dubious transformations that are nevertheless -//recognizably similiar. Even in this mode there will be characters that fail. -//The users of this might want to make a distinction between failed characters -//which were inside and those outside the unicode private area. -UNOTOOLS_DLLPUBLIC StarSymbolToMSMultiFont *CreateStarSymbolToMSMultiFont(bool bPerfectOnly=false); -#endif // _UNOTOOLS_FONTCVT_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/fontdefs.hxx b/unotools/inc/unotools/fontdefs.hxx deleted file mode 100644 index a16e2e44a2..0000000000 --- a/unotools/inc/unotools/fontdefs.hxx +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _UNOTOOLS_FONTDEFS_HXX -#define _UNOTOOLS_FONTDEFS_HXX - -#include <unotools/unotoolsdllapi.h> -#include <sal/types.h> -#include <tools/string.hxx> - -namespace utl { - class FontSubstConfiguration; - struct FontNameAttr; -} - -// ---------------- -// - SubsFontName - -// ---------------- - -#define SUBSFONT_ONLYONE ((sal_uLong)0x00000001) -#define SUBSFONT_MS ((sal_uLong)0x00000002) -#define SUBSFONT_PS ((sal_uLong)0x00000004) -#define SUBSFONT_HTML ((sal_uLong)0x00000008) - -UNOTOOLS_DLLPUBLIC String GetSubsFontName( const String& rName, sal_uLong nFlags ); - -// ----------------- -// - FontTokenName - -// ----------------- - -UNOTOOLS_DLLPUBLIC String GetFontToken( const String& rName, xub_StrLen nToken, xub_StrLen& rIndex ); -inline String GetFontToken( const String& rName, xub_StrLen nToken ) -{ - xub_StrLen nTempIndex = 0; - return GetFontToken( rName, nToken, nTempIndex ); -} - -UNOTOOLS_DLLPUBLIC void AddTokenFontName( String& rName, const String& rNewToken ); - -struct UNOTOOLS_DLLPUBLIC FontNameHash { int operator()(const String&) const; }; - -// --------------- -// - ConvertChar - -// --------------- - -class UNOTOOLS_DLLPUBLIC ConvertChar -{ -public: - const sal_Unicode* mpCvtTab; - const char* mpSubsFontName; - sal_Unicode (*mpCvtFunc)( sal_Unicode ); - sal_Unicode RecodeChar( sal_Unicode c ) const; - void RecodeString( String& rStra, xub_StrLen nIndex, xub_StrLen nLen ) const; - static const ConvertChar* GetRecodeData( const String& rOrgFontName, const String& rMapFontName ); -}; - - -// Default-Font -#define DEFAULTFONT_SANS_UNICODE ((sal_uInt16)1) -#define DEFAULTFONT_SANS ((sal_uInt16)2) -#define DEFAULTFONT_SERIF ((sal_uInt16)3) -#define DEFAULTFONT_FIXED ((sal_uInt16)4) -#define DEFAULTFONT_SYMBOL ((sal_uInt16)5) -#define DEFAULTFONT_UI_SANS ((sal_uInt16)1000) -#define DEFAULTFONT_UI_FIXED ((sal_uInt16)1001) -#define DEFAULTFONT_LATIN_TEXT ((sal_uInt16)2000) -#define DEFAULTFONT_LATIN_PRESENTATION ((sal_uInt16)2001) -#define DEFAULTFONT_LATIN_SPREADSHEET ((sal_uInt16)2002) -#define DEFAULTFONT_LATIN_HEADING ((sal_uInt16)2003) -#define DEFAULTFONT_LATIN_DISPLAY ((sal_uInt16)2004) -#define DEFAULTFONT_LATIN_FIXED ((sal_uInt16)2005) -#define DEFAULTFONT_CJK_TEXT ((sal_uInt16)3000) -#define DEFAULTFONT_CJK_PRESENTATION ((sal_uInt16)3001) -#define DEFAULTFONT_CJK_SPREADSHEET ((sal_uInt16)3002) -#define DEFAULTFONT_CJK_HEADING ((sal_uInt16)3003) -#define DEFAULTFONT_CJK_DISPLAY ((sal_uInt16)3004) -#define DEFAULTFONT_CTL_TEXT ((sal_uInt16)4000) -#define DEFAULTFONT_CTL_PRESENTATION ((sal_uInt16)4001) -#define DEFAULTFONT_CTL_SPREADSHEET ((sal_uInt16)4002) -#define DEFAULTFONT_CTL_HEADING ((sal_uInt16)4003) -#define DEFAULTFONT_CTL_DISPLAY ((sal_uInt16)4004) - -UNOTOOLS_DLLPUBLIC String GetNextFontToken( const String& rTokenStr, xub_StrLen& rIndex ); - -UNOTOOLS_DLLPUBLIC void GetEnglishSearchFontName( String& rName ); - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/fontoptions.hxx b/unotools/inc/unotools/fontoptions.hxx deleted file mode 100644 index d77ac641d1..0000000000 --- a/unotools/inc/unotools/fontoptions.hxx +++ /dev/null @@ -1,176 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_FONTOPTIONS_HXX -#define INCLUDED_unotools_FONTOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtFontOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about font features - @descr - - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtFontOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtFontOptions(); - virtual ~SvtFontOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/Font" - @descr These values defines different states of font handling. - - ..ReplacementTable..() => Determines if the list of font replacements is applied or not. - - ..FontHistory..() => The last 5 fonts will be shown and the last one will be the - first name on the list. These will be displayed in the Font name - combo box on the Object bar. - - ..FontWYSIWYG..() => With this option the names of the selectable fonts - (for example, the fonts in the Font field in the object bar) - will be formatted as the current font. - - @seealso - - - @param - - @return - - - @onerror No error should occurre! - *//*-*****************************************************************************************************/ - - sal_Bool IsReplacementTableEnabled ( ) const ; - void EnableReplacementTable ( sal_Bool bState ) ; - - sal_Bool IsFontHistoryEnabled ( ) const ; - void EnableFontHistory ( sal_Bool bState ) ; - - sal_Bool IsFontWYSIWYGEnabled ( ) const ; - void EnableFontWYSIWYG ( sal_Bool bState ) ; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class use his own static mutex to be threadsafe. - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& impl_GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtFontOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtFontOptions - -#endif // #ifndef INCLUDED_unotools_FONTOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/historyoptions.hxx b/unotools/inc/unotools/historyoptions.hxx deleted file mode 100644 index ceeb5e93d3..0000000000 --- a/unotools/inc/unotools/historyoptions.hxx +++ /dev/null @@ -1,251 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_SVTOOLS_HISTORYOPTIONS_HXX -#define INCLUDED_SVTOOLS_HISTORYOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <com/sun/star/uno/Sequence.h> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// types, enums, ... -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @descr The method GetList() returns a list of property values. - Use follow defines to seperate values by names. -*//*-*************************************************************************************************************/ - -#define HISTORY_PROPERTYNAME_URL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("URL" )) -#define HISTORY_PROPERTYNAME_FILTER ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Filter" )) -#define HISTORY_PROPERTYNAME_TITLE ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Title" )) -#define HISTORY_PROPERTYNAME_PASSWORD ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Password" )) - -/*-************************************************************************************************************//** - @descr You can use these enum values to specify right history if you call ouer interface methods. -*//*-*************************************************************************************************************/ - -enum EHistoryType -{ - ePICKLIST = 0, - eHISTORY = 1, - eHELPBOOKMARKS = 2 -}; - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtHistoryOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about history features - @descr - - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtHistoryOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtHistoryOptions(); - virtual ~SvtHistoryOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/History/..." - @descr key "PickList" : The last used documents displayed in the file menu. - key "History" : The last opened documents general. - *//*-*****************************************************************************************************/ - - /*-****************************************************************************************************//** - @short set/get max size of specified history - @descr Call this methods to get information about max. size of specified list. - These value lay down the max count of items in these history. If a new one - is add to it the oldest one is deleted automaticly! - - @seealso - - - @param "eHistory" select right history. - @param "nSize" is the new max size of specified list. If new size smaller then the old one - some oldest entries will be destroyed automaticly! - @return Current max size of specified list. - - @onerror - - *//*-*****************************************************************************************************/ - - sal_uInt32 GetSize( EHistoryType eHistory ) const ; - void SetSize( EHistoryType eHistory, sal_uInt32 nSize ) ; - - /*-****************************************************************************************************//** - @short clear complete sepcified list - @descr Call this methods to clear the whole list. After that GetItemCount() will return 0 ... - but GetSize() will return the old value! - - @seealso - - - @param "eHistory" select right history. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void Clear( EHistoryType eHistory ); - - /*-****************************************************************************************************//** - @short return complete sepcified list - @descr If you will show the whole list call this method to get it completly. - - @seealso - - - @param "eHistory" select right history. - @return A list of history items is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > > GetList( EHistoryType eHistory ) const ; - - /*-****************************************************************************************************//** - @short append a new item to specified list - @descr You can append items to a list only - removing isn't allowed for a special item! - The oldest entry is deleted automaticly if max size arrived or you can call Clear() ... - It exist two different overload methods to do this. - One for user which have an complete history item and another one for uncompletly data sets! - - @seealso method SetSize() - @seealso method Clear() - - @param "eHistory" select right history. - @param "sURL" URL to save in history - @param "sFilter" filter name to save in history - @param "sTitle" document title to save in history - @param "sPassword" password to save in history - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void AppendItem( EHistoryType eHistory , - const ::rtl::OUString& sURL , - const ::rtl::OUString& sFilter , - const ::rtl::OUString& sTitle , - const ::rtl::OUString& sPassword ); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr Make these class threadsafe. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtHistoryOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtHistoryOptions - -#endif // #ifndef INCLUDED_SVTOOLS_HISTORYOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/historyoptions_const.hxx b/unotools/inc/unotools/historyoptions_const.hxx deleted file mode 100644 index 9c04892f75..0000000000 --- a/unotools/inc/unotools/historyoptions_const.hxx +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#ifndef INCLUDE_CONFIGITEMS_HISTORYOPTIONS_CONST_HXX -#define INCLUDE_CONFIGITEMS_HISTORYOPTIONS_CONST_HXX - -#include <rtl/ustring.hxx> - -namespace -{ - static const ::rtl::OUString s_sCommonHistory(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Common/History")); - static const ::rtl::OUString s_sHistories(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Histories/Histories")); - static const ::rtl::OUString s_sPickListSize(RTL_CONSTASCII_USTRINGPARAM("PickListSize")); - static const ::rtl::OUString s_sURLHistorySize(RTL_CONSTASCII_USTRINGPARAM("Size")); - static const ::rtl::OUString s_sHelpBookmarksSize(RTL_CONSTASCII_USTRINGPARAM("HelpBookmarkSize")); - static const ::rtl::OUString s_sPickList(RTL_CONSTASCII_USTRINGPARAM("PickList")); - static const ::rtl::OUString s_sURLHistory(RTL_CONSTASCII_USTRINGPARAM("URLHistory")); - static const ::rtl::OUString s_sHelpBookmarks(RTL_CONSTASCII_USTRINGPARAM("HelpBookmarks")); - static const ::rtl::OUString s_sItemList(RTL_CONSTASCII_USTRINGPARAM("ItemList")); - static const ::rtl::OUString s_sOrderList(RTL_CONSTASCII_USTRINGPARAM("OrderList")); - static const ::rtl::OUString s_sHistoryItemRef(RTL_CONSTASCII_USTRINGPARAM("HistoryItemRef")); - static const ::rtl::OUString s_sURL(RTL_CONSTASCII_USTRINGPARAM("URL")); - static const ::rtl::OUString s_sFilter(RTL_CONSTASCII_USTRINGPARAM("Filter")); - static const ::rtl::OUString s_sTitle(RTL_CONSTASCII_USTRINGPARAM("Title")); - static const ::rtl::OUString s_sPassword(RTL_CONSTASCII_USTRINGPARAM("Password")); -} - -#endif // INCLUDE_CONFIGITEMS_HISTORYOPTIONS_CONST_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/idhelper.hxx b/unotools/inc/unotools/idhelper.hxx deleted file mode 100644 index 741a28a3e2..0000000000 --- a/unotools/inc/unotools/idhelper.hxx +++ /dev/null @@ -1,212 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UNOTOOLS_ID_HELPER_HXX_ -#define _UNOTOOLS_ID_HELPER_HXX_ - -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/lang/XTypeProvider.hpp> -#include <osl/mutex.hxx> -#include <comphelper/stl_types.hxx> -#include <cppuhelper/typeprovider.hxx> -#include <tools/debug.hxx> - -//......................................................................... -namespace utl -{ -//......................................................................... - -//========================================================================= -// to shorten some lines ... -typedef ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > TypeSequence; - -// compare to Sequences of Types -struct TypeSequenceLess : public ::std::binary_function<TypeSequence, TypeSequence, bool> -{ -public: - inline bool operator() (const TypeSequence& lhs, const TypeSequence& rhs) const - { - sal_Int32 nLengthLeft = lhs.getLength(); - sal_Int32 nLengthRight = rhs.getLength(); - - // first check the two lengths - if (nLengthLeft < nLengthRight) - return sal_True; - if (nLengthLeft > nLengthRight) - return sal_False; - - // both sequences have the same length -> check the type names - const ::com::sun::star::uno::Type* pTypesLeft = lhs.getConstArray(); - const ::com::sun::star::uno::Type* pTypesRight = rhs.getConstArray(); - for (sal_Int32 i=0; i<nLengthLeft; ++i, ++pTypesLeft, ++pTypesRight) - { - sal_Int32 nTypeNameCompare = pTypesLeft->getTypeName().compareTo(pTypesRight->getTypeName()); - if (nTypeNameCompare < 0) - return sal_True; - if (nTypeNameCompare > 0) - return sal_False; - } - - // both sequences are equal ... - return sal_False; - } -}; - -// declare the map -DECLARE_STL_MAP ( TypeSequence, - ::cppu::OImplementationId, - TypeSequenceLess, - MapType2Id - ); - -//......................................................................... -} // namespace utl -//......................................................................... - -//========================================================================= -/** defines a helper class for implementing the XTypeProvider::getImplementationId. - it maps sequences of ::com::sun::star::uno::Type to implementation ids - (which means sequences of bytes).<BR> - As there is no possibility to determine the time where the id's are no longer - needed (e.g. because the last instance of the class using this mechanism died) - the helper is "refcounted", i.e. there are acquire and release methods. - To simplify this there is a class classname##Ref which you may want to - use as an member of your classes. - <BR><BR> - As we don't want a global helper class which handles implementation id's - of components from all over the office (supposing somebody want's to use this :) - this is only a define. Wherever you have a "closed" area (which is small enough - and large enough :), see below) where diffenrent components want to use an id helper, - define your own one with this macro.<BR> - The more classes use this helper, the later redundant map entries will be - cleared. The less classes use it, the earlier map entries which may have - been reused will be cleared. -*/ -#define DECLARE_IMPLEMENTATIONID_HELPER(_namespace, classname) \ -namespace _namespace { \ -class classname \ -{ \ - friend class classname##Ref; \ - \ - static sal_Int32 s_nReferenced; \ - static void* s_pMap; \ - \ - static ::osl::Mutex s_aMutex; \ - \ -public: \ - static void acquire(); \ - static void release(); \ - \ - static ::com::sun::star::uno::Sequence< sal_Int8 > getImplementationId( \ - const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >& _rTypes); \ - \ -private: \ - static void implCreateMap(); \ - \ - classname() { } \ -}; \ - \ -/*=======================================================================*/ \ -class classname##Ref \ -{ \ -public: \ - classname##Ref() { classname::acquire(); } \ - ~classname##Ref() { classname::release(); } \ -}; \ - \ -} /* _namespace */ \ - \ - -/************************************************************************* -************************************************************************** -*************************************************************************/ - -/** implement an id helper -*/ -#define IMPLEMENT_IMPLEMENTATIONID_HELPER(_namespace, classname) \ -namespace _namespace { \ - \ -/*=======================================================================*/ \ - \ -sal_Int32 classname::s_nReferenced(0); \ -void* classname::s_pMap = NULL; \ -::osl::Mutex classname::s_aMutex; \ - \ -/*-----------------------------------------------------------------------*/ \ -void classname::acquire() \ -{ \ - ::osl::MutexGuard aGuard(s_aMutex); \ - ++s_nReferenced; \ -} \ - \ -/*-----------------------------------------------------------------------*/ \ -void classname::release() \ -{ \ - ::osl::MutexGuard aGuard(s_aMutex); \ - if (!--s_nReferenced) \ - { \ - delete static_cast< ::utl::MapType2Id *>( s_pMap ); \ - s_pMap = NULL; \ - } \ -} \ - \ -/*-----------------------------------------------------------------------*/ \ -::com::sun::star::uno::Sequence< sal_Int8 > classname::getImplementationId( \ - const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >& _rTypes) \ -{ \ - ::osl::MutexGuard aGuard(s_aMutex); \ - DBG_ASSERT(s_nReferenced, \ - "classname::getImplementationId : you need to hold a reference to this class in order to use it !"); \ - /* give the calling class a member of type classname##Ref and all is fine .... */ \ - \ - implCreateMap(); \ - \ - ::utl::MapType2Id* pMap = static_cast< ::utl::MapType2Id *>(s_pMap); \ - \ - ::cppu::OImplementationId& rId = (*pMap)[_rTypes]; \ - /* this will create an entry for the given type sequence, if neccessary */ \ - \ - return rId.getImplementationId(); \ -} \ - \ -/*-----------------------------------------------------------------------*/ \ -void classname::implCreateMap() \ -{ \ - if (s_pMap) \ - return; \ - s_pMap = new ::utl::MapType2Id(); \ -} \ - \ - \ -} /* _namespace */ \ - \ - - -#endif // _UNOTOOLS_ID_HELPER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/inetoptions.hxx b/unotools/inc/unotools/inetoptions.hxx deleted file mode 100644 index 99949bcc21..0000000000 --- a/unotools/inc/unotools/inetoptions.hxx +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _unotools_INETOPTIONS_HXX_ -#define _unotools_INETOPTIONS_HXX_ - -#include "unotools/unotoolsdllapi.h" -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <sal/types.h> -#include <unotools/options.hxx> - -namespace com { namespace sun { namespace star { namespace beans { - class XPropertiesChangeListener; -} } } } -namespace rtl { class OUString; } - -//============================================================================ -/** The names of all the properties (options) accessible through - SvtInetOptions. - - @descr These names are used in the methods - SvtInetOptions::addPropertiesChangeListener() and - SvtInetOptions::removePropertiesChangeListener(). - */ -#define SVT_INET_OPTION_PROXY_NO_PROXY "Inet/Proxy/NoProxy" -#define SVT_INET_OPTION_PROXY_TYPE "Inet/Proxy/Type" -#define SVT_INET_OPTION_PROXY_FTP_NAME "Inet/Proxy/FTP/Name" -#define SVT_INET_OPTION_PROXY_FTP_PORT "Inet/Proxy/FTP/Port" -#define SVT_INET_OPTION_PROXY_HTTP_NAME "Inet/Proxy/HTTP/Name" -#define SVT_INET_OPTION_PROXY_HTTP_PORT "Inet/Proxy/HTTP/Port" - -//============================================================================ -/** Interface to access those configuration database entries that are related - to the various Internet services. - - @descr The Set...() methods all have a second parameter bFlush. If false - is passed (the default), the new value is not written back directly, but - only cached within this class. If the value in the configuration database - is also changed, the cached change will get lost. If, on the other hand, - true is passed, the new value is instantly written back to the - configuration database. - */ -class UNOTOOLS_DLLPUBLIC SvtInetOptions: public utl::detail::Options -{ -public: - SvtInetOptions(); - - virtual ~SvtInetOptions(); - - enum ProxyType { NONE, AUTOMATIC, MANUAL }; - - rtl::OUString GetProxyNoProxy() const; - sal_Int32 GetProxyType() const; - - rtl::OUString GetProxyFtpName() const; - sal_Int32 GetProxyFtpPort() const; - - rtl::OUString GetProxyHttpName() const; - sal_Int32 GetProxyHttpPort() const; - - void SetProxyNoProxy(rtl::OUString const & rValue, bool bFlush = false); - void SetProxyType(ProxyType eValue, bool bFlush = false); - - void SetProxyFtpName(rtl::OUString const & rValue, bool bFlush = false); - void SetProxyFtpPort(sal_Int32 nValue, bool bFlush = false); - - void SetProxyHttpName(rtl::OUString const & rValue, bool bFlush = false); - void SetProxyHttpPort(sal_Int32 nValue, bool bFlush = false); - - void flush(); - - /** Add a listener on changes of certain properties (options). - - @param rPropertyNames The names of the properties (options). If an - empty sequence is used, nothing is done. - - @param rListener A listener. If the listener is already registered - on other properties, it continues to also get notifications about - changes of those properties. The - com::sun::star::beans::PropertyChangeEvents supplied to the listener - will have void OldValue and NewValue slots. - */ - void - addPropertiesChangeListener( - com::sun::star::uno::Sequence< rtl::OUString > const & rPropertyNames, - com::sun::star::uno::Reference< - com::sun::star::beans::XPropertiesChangeListener > const & - rListener); - - /** Remove a listener on changes of certain properties (options). - - @param rPropertyNames The names of the properties (options). If an - empty sequence is used, nothing is done. - - @param rListener A listener. If the listener is still registered on - other properties, it continues to get notifications about changes of - those properties. - */ - void - removePropertiesChangeListener( - com::sun::star::uno::Sequence< rtl::OUString > const & rPropertyNames, - com::sun::star::uno::Reference< - com::sun::star::beans::XPropertiesChangeListener > const & - rListener); - -private: - class Impl; - - static Impl * m_pImpl; -}; - -#endif // _unotools_INETOPTIONS_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/internaloptions.hxx b/unotools/inc/unotools/internaloptions.hxx deleted file mode 100644 index 07214bca4b..0000000000 --- a/unotools/inc/unotools/internaloptions.hxx +++ /dev/null @@ -1,183 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_INTERNALOPTIONS_HXX -#define INCLUDED_unotools_INTERNALOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// namespaces! -//_________________________________________________________________________________________________________________ - -#define MUTEX ::osl::Mutex -#define OUSTRING ::rtl::OUString - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtInternalOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about internal features - @descr - - - @implements - - @base - - - @ATTENTION This class is partially threadsafe. - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtInternalOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtInternalOptions(); - virtual ~SvtInternalOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/Internal/..." - @descr These options describe internal states to enable/disable features of installed office. - The values are fixed at runtime - and implemented as readonly! - - SlotCFGEnabled() => If this option is set (true), StarOffice is searching for the slot.cfg. - If the slot.cfg cannot be found, the start is aborted. - If this option is not set (false), the slot.cfg must not be available, - otherwise the start is also aborted. - - CrashMailEnabled() => Crash-Mail-Feature to document program crashes. After a crash, - an e-mail with information about the system used is generated - automatically when starting StarOffice. - - @seealso configuration package "org.openoffice.Office.Common/Internal" - *//*-*****************************************************************************************************/ - - sal_Bool SlotCFGEnabled () const; - sal_Bool CrashMailEnabled () const; - sal_Bool MailUIEnabled () const; - sal_Bool IsRemoveMenuEntryClose() const; - sal_Bool IsRemoveMenuEntryBackToWebtop() const; - sal_Bool IsRemoveMenuEntryNewWebtop() const; - sal_Bool IsRemoveMenuEntryLogout() const; - - OUSTRING GetCurrentTempURL() const; - void SetCurrentTempURL( const OUSTRING& aNewCurrentTempURL ); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class is partially threadsafe (for de-/initialization only). - All access methods are'nt safe! - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static MUTEX& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtInternalOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtInternalOptions - -#endif // #ifndef INCLUDED_unotools_INTERNALOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/intlwrapper.hxx b/unotools/inc/unotools/intlwrapper.hxx deleted file mode 100644 index 8fe8174a02..0000000000 --- a/unotools/inc/unotools/intlwrapper.hxx +++ /dev/null @@ -1,126 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_INTLWRAPPER_HXX -#define _UNOTOOLS_INTLWRAPPER_HXX -#include <unotools/charclass.hxx> -#include <unotools/localedatawrapper.hxx> -#include <unotools/calendarwrapper.hxx> -#include <unotools/collatorwrapper.hxx> -#include <i18npool/lang.h> - - -/** - A wrapper of I18N wrappers. Using this is more expensive than using some - single wrapper classes so use it only if you must pass a single pointer - without knowing in advance what is needed, e.g. for - SfxPoolItem::GetPresentation(). Remember that this wrapper was only created - for convenience to bypass some oddities, if possible don't use it. <p> - - Implemented are only the const get...() methods of the wrappers, which are - loaded on demand, for consistency reasons no change of locale is possible. - Only default calendar and default collator are supported. <p> - - One exception though is the calendar wrapper: to be able to set a value and - retrieve calendar values it is not const, so methods using this should - reset the calendar to the previous value if it isn't sure where the - IntlWrapper did come from. <p> - */ -class UNOTOOLS_DLLPUBLIC IntlWrapper -{ -private: - - ::com::sun::star::lang::Locale aLocale; - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xSMgr; - - CharClass* pCharClass; - LocaleDataWrapper* pLocaleData; - CalendarWrapper* pCalendar; - CollatorWrapper* pCollator; - CollatorWrapper* pCaseCollator; - - LanguageType eLanguage; - - void ImplNewCharClass() const; - void ImplNewLocaleData() const; - void ImplNewCalendar() const; - void ImplNewCollator( sal_Bool bCaseSensitive ) const; - - -public: - IntlWrapper( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF, - const ::com::sun::star::lang::Locale& rLocale - ); - IntlWrapper( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF, - LanguageType eLang - ); - ~IntlWrapper(); - - LanguageType getLanguage() const { return eLanguage; } - const ::com::sun::star::lang::Locale& getLocale() const { return aLocale; } - - const CharClass* getCharClass() const - { - if ( !pCharClass ) - ImplNewCharClass(); - return pCharClass; - } - const LocaleDataWrapper* getLocaleData() const - { - if ( !pLocaleData ) - ImplNewLocaleData(); - return pLocaleData; - } - CalendarWrapper* getCalendar() const - { - if ( !pCalendar ) - ImplNewCalendar(); - return pCalendar; - } - /// case insensitive collator, simple IGNORE_CASE - const CollatorWrapper* getCollator() const - { - if ( !pCollator ) - ImplNewCollator( sal_False ); - return pCollator; - } - /// case sensitive collator - const CollatorWrapper* getCaseCollator() const - { - if ( !pCaseCollator ) - ImplNewCollator( sal_True ); - return pCaseCollator; - } -}; - -#endif // _UNOTOOLS_INTLWRAPPER_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/itemholderbase.hxx b/unotools/inc/unotools/itemholderbase.hxx deleted file mode 100644 index 57bd8ebf70..0000000000 --- a/unotools/inc/unotools/itemholderbase.hxx +++ /dev/null @@ -1,131 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_unotools_ITEMHOLDERBASE_HXX_ -#define INCLUDED_unotools_ITEMHOLDERBASE_HXX_ - -//----------------------------------------------- -// includes - -#include <vector> -#include <osl/mutex.hxx> - -namespace utl { namespace detail { class Options; } } - -//----------------------------------------------- -// definitions - -struct ItemHolderMutexBase -{ - ::osl::Mutex m_aLock; -}; - -enum EItem -{ - E_ACCELCFG , // - E_ACCESSIBILITYOPTIONS , // 2 - E_ADDXMLTOSTORAGEOPTIONS , // - E_APEARCFG , // 2 - - E_CJKOPTIONS , // 2 - E_CMDOPTIONS , // - E_COLORCFG , // 2 - E_COMPATIBILITY , // - E_CTLOPTIONS , // 2 - - E_DEFAULTOPTIONS , // - E_DYNAMICMENUOPTIONS , // - - E_EVENTCFG , // - E_EXTENDEDSECURITYOPTIONS , // - - E_FLTRCFG , // - E_FONTOPTIONS , // - E_FONTSUBSTCONFIG , // 2 - - E_HELPOPTIONS , // 2 - E_HISTORYOPTIONS , // - - E_INETOPTIONS , // - E_INTERNALOPTIONS , // - - E_JAVAOPTIONS , // - - E_LANGUAGEOPTIONS , // 2 - E_LINGUCFG , // - E_LOCALISATIONOPTIONS , // - - E_MENUOPTIONS , // - E_MISCCFG , // 2 - E_MISCOPTIONS , // - E_MODULEOPTIONS , // - - E_OPTIONSDLGOPTIONS , // - - E_PATHOPTIONS , // - E_PRINTOPTIONS , // 2 - E_PRINTFILEOPTIONS , // 2 - E_PRINTWARNINGOPTIONS , // - - E_REGOPTIONS , // - - E_SAVEOPTIONS , // - E_SEARCHOPT , // - E_SECURITYOPTIONS , // - E_SOURCEVIEWCONFIG , // - E_STARTOPTIONS , // - E_SYSLOCALEOPTIONS , // 2 - - E_UNDOOPTIONS , // 2 - E_USEROPTIONS , // 2 - - E_VIEWOPTIONS_DIALOG , // - E_VIEWOPTIONS_TABDIALOG , // - E_VIEWOPTIONS_TABPAGE , // - E_VIEWOPTIONS_WINDOW , // - - E_WORKINGSETOPTIONS , // - - E_XMLACCELCFG // -}; - -struct TItemInfo -{ - TItemInfo() - : pItem(0) - {} - - utl::detail::Options * pItem; - EItem eItem; -}; - -typedef ::std::vector< TItemInfo > TItems; - -#endif // INCLUDED_unotools_ITEMHOLDERBASE_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/lingucfg.hxx b/unotools/inc/unotools/lingucfg.hxx deleted file mode 100644 index 2d807f66c4..0000000000 --- a/unotools/inc/unotools/lingucfg.hxx +++ /dev/null @@ -1,242 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _unotools_LINGUCFG_HXX_ -#define _unotools_LINGUCFG_HXX_ - -#include "unotools/unotoolsdllapi.h" -#include <com/sun/star/beans/PropertyValues.hpp> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/uno/Any.h> -#include <com/sun/star/lang/Locale.hpp> -#include <com/sun/star/util/XChangesBatch.hpp> -#include <tools/solar.h> -#include <rtl/ustring.hxx> -#include <unotools/configitem.hxx> -#include <osl/mutex.hxx> -#include <unotools/options.hxx> -#include <i18npool/lang.h> - -#include <vector> - -class SvtLinguConfigItem; - -////////////////////////////////////////////////////////////////////// - -struct UNOTOOLS_DLLPUBLIC SvtLinguOptions -{ - ::com::sun::star::uno::Sequence< rtl::OUString > aActiveDics; - ::com::sun::star::uno::Sequence< rtl::OUString > aActiveConvDics; - - sal_Bool bROActiveDics; - sal_Bool bROActiveConvDics; - - // Hyphenator service specific options - sal_Int16 nHyphMinLeading, - nHyphMinTrailing, - nHyphMinWordLength; - - sal_Bool bROHyphMinLeading, - bROHyphMinTrailing, - bROHyphMinWordLength; - - // misc options (non-service specific) - sal_Int16 nDefaultLanguage; - sal_Int16 nDefaultLanguage_CJK; - sal_Int16 nDefaultLanguage_CTL; - - sal_Bool bRODefaultLanguage; - sal_Bool bRODefaultLanguage_CJK; - sal_Bool bRODefaultLanguage_CTL; - - // spelling options (non-service specific) - sal_Bool bIsSpellSpecial; - sal_Bool bIsSpellAuto; - sal_Bool bIsSpellReverse; - - sal_Bool bROIsSpellSpecial; - sal_Bool bROIsSpellAuto; - sal_Bool bROIsSpellReverse; - - // hyphenation options (non-service specific) - sal_Bool bIsHyphSpecial; - sal_Bool bIsHyphAuto; - - sal_Bool bROIsHyphSpecial; - sal_Bool bROIsHyphAuto; - - // common to SpellChecker, Hyphenator and Thesaurus service - sal_Bool bIsUseDictionaryList; - sal_Bool bIsIgnoreControlCharacters; - - sal_Bool bROIsUseDictionaryList; - sal_Bool bROIsIgnoreControlCharacters; - - // SpellChecker service specific options - sal_Bool bIsSpellWithDigits, - bIsSpellUpperCase, - bIsSpellCapitalization; - - sal_Bool bROIsSpellWithDigits, - bROIsSpellUpperCase, - bROIsSpellCapitalization; - - // text conversion specific options - sal_Bool bIsIgnorePostPositionalWord; - sal_Bool bIsAutoCloseDialog; - sal_Bool bIsShowEntriesRecentlyUsedFirst; - sal_Bool bIsAutoReplaceUniqueEntries; - sal_Bool bIsDirectionToSimplified; - sal_Bool bIsUseCharacterVariants; - sal_Bool bIsTranslateCommonTerms; - sal_Bool bIsReverseMapping; - - sal_Bool bROIsIgnorePostPositionalWord; - sal_Bool bROIsAutoCloseDialog; - sal_Bool bROIsShowEntriesRecentlyUsedFirst; - sal_Bool bROIsAutoReplaceUniqueEntries; - sal_Bool bROIsDirectionToSimplified; - sal_Bool bROIsUseCharacterVariants; - sal_Bool bROIsTranslateCommonTerms; - sal_Bool bROIsReverseMapping; - - // check value need to determine if the configuration needs to updatet - // or not (used for a quick check if data files have been changed/added - // or deleted - sal_Int32 nDataFilesChangedCheckValue; - sal_Bool bRODataFilesChangedCheckValue; - - sal_Bool bIsGrammarAuto; - sal_Bool bIsGrammarInteractive; - - sal_Bool bROIsGrammarAuto; - sal_Bool bROIsGrammarInteractive; - - SvtLinguOptions(); -}; - -////////////////////////////////////////////////////////////////////// - -struct UNOTOOLS_DLLPUBLIC SvtLinguConfigDictionaryEntry -{ - // the URL's pointing to the location of the files the dictionary consists of - com::sun::star::uno::Sequence< rtl::OUString > aLocations; - // the name of the dictionary format implement - rtl::OUString aFormatName; - // the list of languages (ISO names) the dictionary can be used for - com::sun::star::uno::Sequence< rtl::OUString > aLocaleNames; -}; - -////////////////////////////////////////////////////////////////////// - -class UNOTOOLS_DLLPUBLIC SvtLinguConfig: public utl::detail::Options -{ - // returns static object - UNOTOOLS_DLLPRIVATE SvtLinguConfigItem & GetConfigItem(); - - SvtLinguConfigItem & GetConfigItem() const { return const_cast< SvtLinguConfig * >( this )->GetConfigItem(); } - - // configuration update access for the 'Linguistic' main node - mutable com::sun::star::uno::Reference< com::sun::star::util::XChangesBatch > m_xMainUpdateAccess; - - com::sun::star::uno::Reference< com::sun::star::util::XChangesBatch > GetMainUpdateAccess() const; - - com::sun::star::uno::Sequence< rtl::OUString > GetCurrentOrLastActiveDicts_Impl( const rtl::OUString &rPropName ) const; - void SetCurrentOrLastActiveDicts_Impl( const rtl::OUString &rPropName, const com::sun::star::uno::Sequence< rtl::OUString > &rDictionaries ) const; - - rtl::OUString GetVendorImageUrl_Impl( const rtl::OUString &rServiceImplName, const rtl::OUString &rImageName ) const; - - // disallow copy-constructor and assignment-operator for now - SvtLinguConfig( const SvtLinguConfig & ); - SvtLinguConfig & operator = ( const SvtLinguConfig & ); - -public: - SvtLinguConfig(); - virtual ~SvtLinguConfig(); - - // - // borrowed from utl::ConfigItem - // - com::sun::star::uno::Sequence< rtl::OUString > - GetNodeNames( const rtl::OUString &rNode ); - // - com::sun::star::uno::Sequence< com::sun::star::uno::Any > - GetProperties( - const com::sun::star::uno::Sequence< rtl::OUString > &rNames ); - // - sal_Bool - ReplaceSetProperties( - const rtl::OUString &rNode, - com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > rValues ); - - com::sun::star::uno::Any - GetProperty( const rtl::OUString &rPropertyName ) const; - com::sun::star::uno::Any - GetProperty( sal_Int32 nPropertyHandle ) const; - - sal_Bool SetProperty( const rtl::OUString &rPropertyName, - const com::sun::star::uno::Any &rValue ); - sal_Bool SetProperty( sal_Int32 nPropertyHandle, - const com::sun::star::uno::Any &rValue ); - - sal_Bool GetOptions( SvtLinguOptions &rOptions ) const; - sal_Bool SetOptions( const SvtLinguOptions &rOptions ); - - sal_Bool IsReadOnly( const rtl::OUString &rPropertyName ) const; - sal_Bool IsReadOnly( sal_Int32 nPropertyHandle ) const; - - //! - //! the following functions work on the 'ServiceManager' sub node of the - //! linguistic configuration only - //! - sal_Bool GetElementNamesFor( const rtl::OUString &rNodeName, com::sun::star::uno::Sequence< rtl::OUString > &rElementNames ) const; - // - sal_Bool GetSupportedDictionaryFormatsFor( const rtl::OUString &rSetName, const rtl::OUString &rSetEntry, com::sun::star::uno::Sequence< rtl::OUString > &rFormatList ) const; - - sal_Bool GetDictionaryEntry( const rtl::OUString &rNodeName, SvtLinguConfigDictionaryEntry &rDicEntry ) const; - - com::sun::star::uno::Sequence< rtl::OUString > GetDisabledDictionaries() const; - - std::vector< SvtLinguConfigDictionaryEntry > GetActiveDictionariesByFormat( const rtl::OUString &rFormatName ); - - // functions returning file URLs to the respective images (if found) and empty string otherwise - ::rtl::OUString GetSpellAndGrammarDialogImage( const ::rtl::OUString &rServiceImplName ) const; - ::rtl::OUString GetSpellAndGrammarContextSuggestionImage( const ::rtl::OUString &rServiceImplName ) const; - ::rtl::OUString GetSpellAndGrammarContextDictionaryImage( const ::rtl::OUString &rServiceImplName ) const; - ::rtl::OUString GetThesaurusDialogImage( const ::rtl::OUString &rServiceImplName ) const; - ::rtl::OUString GetSynonymsContextImage( const ::rtl::OUString &rServiceImplName ) const; - - bool HasVendorImages( const char *pImageName ) const; - bool HasGrammarChecker() const; -}; - -////////////////////////////////////////////////////////////////////// - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/linguprops.hxx b/unotools/inc/unotools/linguprops.hxx deleted file mode 100644 index ed8bacd844..0000000000 --- a/unotools/inc/unotools/linguprops.hxx +++ /dev/null @@ -1,123 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _unotools_LINGUPROPS_HXX_ -#define _unotools_LINGUPROPS_HXX_ - - -// UNO property names for general options -#define UPN_IS_GERMAN_PRE_REFORM "IsGermanPreReform" /*! deprecated #i91949 !*/ -#define UPN_IS_USE_DICTIONARY_LIST "IsUseDictionaryList" -#define UPN_IS_IGNORE_CONTROL_CHARACTERS "IsIgnoreControlCharacters" -#define UPN_ACTIVE_DICTIONARIES "ActiveDictionaries" - -// UNO property names for SpellChecker -#define UPN_IS_SPELL_UPPER_CASE "IsSpellUpperCase" -#define UPN_IS_SPELL_WITH_DIGITS "IsSpellWithDigits" -#define UPN_IS_SPELL_CAPITALIZATION "IsSpellCapitalization" - -// UNO property names for Hyphenator -#define UPN_HYPH_MIN_LEADING "HyphMinLeading" -#define UPN_HYPH_MIN_TRAILING "HyphMinTrailing" -#define UPN_HYPH_MIN_WORD_LENGTH "HyphMinWordLength" - -// UNO property names for Lingu -// (those not covered by the SpellChecker and Hyphenator -// properties and more likely to be used in other modules only) -#define UPN_DEFAULT_LANGUAGE "DefaultLanguage" -#define UPN_DEFAULT_LOCALE "DefaultLocale" -#define UPN_DEFAULT_LOCALE_CJK "DefaultLocale_CJK" -#define UPN_DEFAULT_LOCALE_CTL "DefaultLocale_CTL" -#define UPN_IS_HYPH_AUTO "IsHyphAuto" -#define UPN_IS_HYPH_SPECIAL "IsHyphSpecial" -#define UPN_IS_SPELL_AUTO "IsSpellAuto" -#define UPN_IS_SPELL_HIDE "IsSpellHide" /*! deprecated #i91949 !*/ -#define UPN_IS_SPELL_IN_ALL_LANGUAGES "IsSpellInAllLanguages" /*! deprecated #i91949 !*/ -#define UPN_IS_SPELL_SPECIAL "IsSpellSpecial" -#define UPN_IS_WRAP_REVERSE "IsWrapReverse" -#define UPN_DATA_FILES_CHANGED_CHECK_VALUE "DataFilesChangedCheckValue" - -// UNO property names for text conversion options -#define UPN_ACTIVE_CONVERSION_DICTIONARIES "ActiveConversionDictionaries" -#define UPN_IS_IGNORE_POST_POSITIONAL_WORD "IsIgnorePostPositionalWord" -#define UPN_IS_AUTO_CLOSE_DIALOG "IsAutoCloseDialog" -#define UPN_IS_SHOW_ENTRIES_RECENTLY_USED_FIRST "IsShowEntriesRecentlyUsedFirst" -#define UPN_IS_AUTO_REPLACE_UNIQUE_ENTRIES "IsAutoReplaceUniqueEntries" -#define UPN_IS_DIRECTION_TO_SIMPLIFIED "IsDirectionToSimplified" -#define UPN_IS_USE_CHARACTER_VARIANTS "IsUseCharacterVariants" -#define UPN_IS_TRANSLATE_COMMON_TERMS "IsTranslateCommonTerms" -#define UPN_IS_REVERSE_MAPPING "IsReverseMapping" - -// new UNO propertynames to be used with 'dictionaries as extensions' -#define UPN_DICTIONARIES "Dictionaries" -#define UPN_SPELL_CHECKERS "SpellCheckers" -#define UPN_HYPHENATORS "Hyphenators" -#define UPN_THESAURI "Thesauri" -#define UPN_CURRENT_ACTIVE_DICTIONARIES "CurrentActiveDictionaries" -#define UPN_LAST_ACTIVE_DICTIONARIES "LastActiveDictionaries" - -#define UPN_IS_GRAMMAR_AUTO "IsAutoGrammarCheck" -#define UPN_IS_GRAMMAR_INTERACTIVE "IsInteractiveGrammarCheck" - -// uno property handles -#define UPH_IS_GERMAN_PRE_REFORM 0 -#define UPH_IS_USE_DICTIONARY_LIST 1 -#define UPH_IS_IGNORE_CONTROL_CHARACTERS 2 -#define UPH_IS_SPELL_UPPER_CASE 3 -#define UPH_IS_SPELL_WITH_DIGITS 4 -#define UPH_IS_SPELL_CAPITALIZATION 5 -#define UPH_HYPH_MIN_LEADING 6 -#define UPH_HYPH_MIN_TRAILING 7 -#define UPH_HYPH_MIN_WORD_LENGTH 8 -#define UPH_DEFAULT_LOCALE 9 -#define UPH_IS_SPELL_AUTO 10 -#define UPH_IS_SPELL_HIDE 11 -#define UPH_IS_SPELL_IN_ALL_LANGUAGES 12 -#define UPH_IS_SPELL_SPECIAL 13 -#define UPH_IS_HYPH_AUTO 14 -#define UPH_IS_HYPH_SPECIAL 15 -#define UPH_IS_WRAP_REVERSE 16 -#define UPH_DATA_FILES_CHANGED_CHECK_VALUE 17 -#define UPH_DEFAULT_LANGUAGE 21 -#define UPH_DEFAULT_LOCALE_CJK 22 -#define UPH_DEFAULT_LOCALE_CTL 23 -#define UPH_ACTIVE_DICTIONARIES 24 -#define UPH_ACTIVE_CONVERSION_DICTIONARIES 25 -#define UPH_IS_IGNORE_POST_POSITIONAL_WORD 26 -#define UPH_IS_AUTO_CLOSE_DIALOG 27 -#define UPH_IS_SHOW_ENTRIES_RECENTLY_USED_FIRST 28 -#define UPH_IS_AUTO_REPLACE_UNIQUE_ENTRIES 29 -#define UPH_IS_DIRECTION_TO_SIMPLIFIED 30 -#define UPH_IS_USE_CHARACTER_VARIANTS 31 -#define UPH_IS_TRANSLATE_COMMON_TERMS 32 -#define UPH_IS_REVERSE_MAPPING 33 -#define UPH_IS_GRAMMAR_AUTO 34 -#define UPH_IS_GRAMMAR_INTERACTIVE 35 -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/localedatawrapper.hxx b/unotools/inc/unotools/localedatawrapper.hxx deleted file mode 100644 index 5e0a7904d0..0000000000 --- a/unotools/inc/unotools/localedatawrapper.hxx +++ /dev/null @@ -1,364 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UNOTOOLS_LOCALEDATAWRAPPER_HXX -#define _UNOTOOLS_LOCALEDATAWRAPPER_HXX - -#include <tools/string.hxx> -#include <com/sun/star/i18n/XLocaleData2.hpp> -#include <com/sun/star/i18n/LocaleItem.hpp> -#include <com/sun/star/i18n/reservedWords.hpp> -#include <unotools/readwritemutexguard.hxx> -#include "unotools/unotoolsdllapi.h" - -#include <boost/shared_ptr.hpp> - - -namespace com { namespace sun { namespace star { - namespace lang { - class XMultiServiceFactory; - } -}}} -class Date; -class Time; -class CalendarWrapper; - - -enum DateFormat { - MDY, - DMY, - YMD -}; - - -enum MeasurementSystem { - MEASURE_METRIC, - MEASURE_US -}; - - -class UNOTOOLS_DLLPUBLIC LocaleDataWrapper -{ - static sal_uInt8 nLocaleDataChecking; // 0:=dontknow, 1:=yes, 2:=no - - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xSMgr; - ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XLocaleData2 > xLD; - ::com::sun::star::lang::Locale aLocale; - ::boost::shared_ptr< ::com::sun::star::i18n::Calendar > xDefaultCalendar; - ::com::sun::star::i18n::LocaleDataItem aLocaleDataItem; - ::com::sun::star::uno::Sequence< ::rtl::OUString > aReservedWordSeq; - ::com::sun::star::uno::Sequence< sal_Int32 > aGrouping; - // cached items - String aLocaleItem[::com::sun::star::i18n::LocaleItem::COUNT]; - String aReservedWord[::com::sun::star::i18n::reservedWords::COUNT]; - String aCurrSymbol; - String aCurrBankSymbol; - int nDateFormat; - int nLongDateFormat; - sal_uInt16 nCurrPositiveFormat; - sal_uInt16 nCurrNegativeFormat; - sal_uInt16 nCurrDigits; - sal_Bool bLocaleDataItemValid; - sal_Bool bReservedWordValid; - mutable ::utl::ReadWriteMutex aMutex; - - // dummies, to be implemented or provided by XML locale data - sal_Unicode cCurrZeroChar; - - - // not implemented, prevent usage - LocaleDataWrapper( const LocaleDataWrapper& ); - LocaleDataWrapper& operator=( const LocaleDataWrapper& ); - - // whenever Locale changes - void invalidateData(); - - void getOneLocaleItemImpl( sal_Int16 nItem ); - const String& getOneLocaleItem( sal_Int16 nItem ) const; - - void getOneReservedWordImpl( sal_Int16 nWord ); - const String& getOneReservedWord( sal_Int16 nWord ) const; - - void getCurrSymbolsImpl(); - void getCurrFormatsImpl(); - - void scanCurrFormatImpl( const String& rCode, - xub_StrLen nStart, xub_StrLen& nSign, - xub_StrLen& nPar, xub_StrLen& nNum, - xub_StrLen& nBlank, xub_StrLen& nSym ); - - void getDateFormatsImpl(); - DateFormat scanDateFormatImpl( const String& rCode ); - - void getDefaultCalendarImpl(); - - sal_Unicode* ImplAddFormatNum( sal_Unicode* pBuf, - sal_Int64 nNumber, sal_uInt16 nDecimals, - sal_Bool bUseThousandSep, sal_Bool bTrailingZeros ) const; - - void getDigitGroupingImpl(); - -public: - LocaleDataWrapper( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF, - const ::com::sun::star::lang::Locale& rLocale - ); - ~LocaleDataWrapper(); - - /** Get the service factory, meant to be able to create a CalendarWrapper - from a LocaleDataWrapper. Note that the service factory may be - non-existent if this LocaleDataWrapper was created without one and - lives "on the grassland". The CalendarWrapper ctor can handle that - though. */ - const ::com::sun::star::uno::Reference< - ::com::sun::star::lang::XMultiServiceFactory > & getServiceFactory() - const { return xSMgr; } - - /// set a new Locale to request - void setLocale( const ::com::sun::star::lang::Locale& rLocale ); - - /// get current requested Locale - const ::com::sun::star::lang::Locale& getLocale() const; - - /// get current loaded Locale, which might differ from the requested Locale - ::com::sun::star::lang::Locale getLoadedLocale() const; - - - // Wrapper implementations of service LocaleData - - ::com::sun::star::i18n::LanguageCountryInfo getLanguageCountryInfo() const; - ::com::sun::star::i18n::LocaleDataItem getLocaleItem() const; - ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::Calendar > getAllCalendars() const; - /// NOTE: this wraps XLocaleData2::getAllCurrencies2() in fact. - ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::Currency2 > getAllCurrencies() const; - ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::FormatElement > getAllFormats() const; - ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::Implementation > getCollatorImplementations() const; - ::com::sun::star::uno::Sequence< ::rtl::OUString > getTransliterations() const; - ::com::sun::star::i18n::ForbiddenCharacters getForbiddenCharacters() const; - ::com::sun::star::uno::Sequence< ::rtl::OUString > getReservedWord() const; - ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > getAllInstalledLocaleNames() const; - - /// same as the wrapper implementation but static - static ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > getInstalledLocaleNames(); - - /** Get LanguageTypes for all installed locales which are unambiguous - convertible back and forth between locale ISO strings and MS-LCID - LanguageType. Upon the first time the function is called when - locale data checking is enabled, messages are shown for locales not - matching, excluding already known problems. - (e.g. used in number formatter dialog init) - */ - static ::com::sun::star::uno::Sequence< sal_uInt16 > getInstalledLanguageTypes(); - - /// maps the LocaleData string to the International enum - MeasurementSystem mapMeasurementStringToEnum( const String& rMS ) const; - - /// Convenience method to obtain the default calendar. - const ::boost::shared_ptr< ::com::sun::star::i18n::Calendar > getDefaultCalendar() const; - - /// Convenience method to obtain the day names of the default calendar. - const ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::CalendarItem > getDefaultCalendarDays() const; - - /// Convenience method to obtain the month names of the default calendar. - const ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::CalendarItem > getDefaultCalendarMonths() const; - - /** Obtain digit grouping. The usually known grouping by thousands (#,###) - is actually only one of possible groupings. Another one, for example, - used in India is group by 3 and then by 2 indefinitely (#,##,###). The - integer sequence returned here specifies grouping from right to left - (!), with a 0 entry designating the end of rules and the previous value - to be repeated indefinitely. Hence the sequence {3,0} specifies the - usual grouping by thousands, whereas the sequence {3,2,0} specifies - Indian grouping. The sal_Int32* getConstArray() can be passed directly - to the ::rtl::math::doubleToString() methods as argument for the - pGroups parameter. */ - const ::com::sun::star::uno::Sequence< sal_Int32 > getDigitGrouping() const; - - // Functionality of class International methods, LocaleItem - - inline const String& getDateSep() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::DATE_SEPARATOR ); } - inline const String& getNumThousandSep() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::THOUSAND_SEPARATOR ); } - inline const String& getNumDecimalSep() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::DECIMAL_SEPARATOR ); } - inline const String& getTimeSep() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::TIME_SEPARATOR ); } - inline const String& getTime100SecSep() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::TIME_100SEC_SEPARATOR ); } - inline const String& getListSep() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::LIST_SEPARATOR ); } - inline const String& getQuotationMarkStart() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::SINGLE_QUOTATION_START ); } - inline const String& getQuotationMarkEnd() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::SINGLE_QUOTATION_END ); } - inline const String& getDoubleQuotationMarkStart() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::DOUBLE_QUOTATION_START ); } - inline const String& getDoubleQuotationMarkEnd() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::DOUBLE_QUOTATION_END ); } - inline const String& getMeasurementSystem() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::MEASUREMENT_SYSTEM ); } - inline MeasurementSystem getMeasurementSystemEnum() const - { return mapMeasurementStringToEnum( getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::MEASUREMENT_SYSTEM ) ); } - inline const String& getTimeAM() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::TIME_AM ); } - inline const String& getTimePM() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::TIME_PM ); } - inline const String& getLongDateDayOfWeekSep() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::LONG_DATE_DAY_OF_WEEK_SEPARATOR ); } - inline const String& getLongDateDaySep() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::LONG_DATE_DAY_SEPARATOR ); } - inline const String& getLongDateMonthSep() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::LONG_DATE_MONTH_SEPARATOR ); } - inline const String& getLongDateYearSep() const - { return getOneLocaleItem( ::com::sun::star::i18n::LocaleItem::LONG_DATE_YEAR_SEPARATOR ); } - - // currency - const String& getCurrSymbol() const; - const String& getCurrBankSymbol() const; - sal_uInt16 getCurrPositiveFormat() const; - sal_uInt16 getCurrNegativeFormat() const; - sal_uInt16 getCurrDigits() const; - - // simple date and time formatting - DateFormat getDateFormat() const; - DateFormat getLongDateFormat() const; - /// only numerical values of Gregorian calendar - String getDate( const Date& rDate ) const; - String getTime( const Time& rTime, sal_Bool bSec = sal_True, - sal_Bool b100Sec = sal_False ) const; - String getDuration( const Time& rTime, - sal_Bool bSec = sal_True, sal_Bool b100Sec = sal_False ) const; - - /** The CalendarWrapper already <b>MUST</b> - have loaded a calendar. - @param nDisplayDayOfWeek - 0 := abbreviated name - 1 := full name - @param bDayOfMonthWithLeadingZero - <FALSE/> := without leading zero - <TRUE/> := with leading zero if <10 - @param nDisplayMonth - 0 := abbreviated name - 1 := full name - @param bTwoDigitYear - <FALSE/> := full year - <TRUE/> := year % 100 - */ - String getLongDate( const Date& rDate, - CalendarWrapper& rCal, - sal_Int16 nDisplayDayOfWeek = 1, - sal_Bool bDayOfMonthWithLeadingZero = sal_False, - sal_Int16 nDisplayMonth = 1, - sal_Bool bTwoDigitYear = sal_False - ) const; - - /** Simple number formatting - @param nNumber - value * 10**nDecimals - @param bTrailingZeros - </sal_True> := always display trailing zeros in - decimal places, even if integer value. - </sal_False> := trailing zeros are only displayed - if the value is not an integer value. - */ - String getNum( sal_Int64 nNumber, sal_uInt16 nDecimals, - sal_Bool bUseThousandSep = sal_True, - sal_Bool bTrailingZeros = sal_True ) const; - - /// "Secure" currency formatted string. - String getCurr( sal_Int64 nNumber, sal_uInt16 nDecimals, - const String& rCurrencySymbol, - sal_Bool bUseThousandSep = sal_True ) const; - /** Default currency formatted string, use with - care as default currency may change in any - locale, for example, DEM -> EUR */ - String getCurr( sal_Int64 nNumber, sal_uInt16 nDecimals, - sal_Bool bUseThousandSep = sal_True ) const - { return getCurr( nNumber, nDecimals, - getCurrSymbol(), bUseThousandSep ); } - - // dummy returns, to be implemented - inline sal_Unicode getCurrZeroChar() const - { return cCurrZeroChar; } - inline sal_Bool isNumLeadingZero() const - { return sal_True; } - /// standard decimal places - inline sal_uInt16 getNumDigits() const - { return 2; } - inline sal_Bool isNumTrailingZeros() const - { return sal_True; } - - - // reserved words - - inline const String& getTrueWord() const - { return getOneReservedWord( ::com::sun::star::i18n::reservedWords::TRUE_WORD ); } - inline const String& getFalseWord() const - { return getOneReservedWord( ::com::sun::star::i18n::reservedWords::FALSE_WORD ); } - /// return a quarter string matching nQuarter (0..3) => "1st quarter" .. "4th quarter" - inline const String& getQuarterWord( sal_Int16 nQuarter ) const - { return getOneReservedWord( ::com::sun::star::i18n::reservedWords::QUARTER1_WORD + nQuarter ); } - inline const String& getAboveWord() const - { return getOneReservedWord( ::com::sun::star::i18n::reservedWords::ABOVE_WORD ); } - inline const String& getBelowWord() const - { return getOneReservedWord( ::com::sun::star::i18n::reservedWords::BELOW_WORD ); } - /// return a quarter abbreviation string matching nQuarter (0..3) => "Q1" .. "Q2" - inline const String& getQuarterAbbreviation( sal_Int16 nQuarter ) const - { return getOneReservedWord( ::com::sun::star::i18n::reservedWords::QUARTER1_ABBREVIATION + nQuarter ); } - - /** Return whether locale data checks are enabled. - Checks are enabled if the environment variable - OOO_ENABLE_LOCALE_DATA_CHECKS is set to 'Y' or 'Yes' (or any other - string starting with 'Y') or '1'. - Also used in conjunction with the number formatter. */ - static inline bool areChecksEnabled() - { - if (nLocaleDataChecking == 0) - evaluateLocaleDataChecking(); - return nLocaleDataChecking == 1; - } - - /** Append locale info to string, used with locale data checking. - A string similar to "de_DE requested\n en_US loaded" is appended. */ - rtl::OUString appendLocaleInfo(const rtl::OUString& rDebugMsg) const; - - /** Ouput a message during locale data checking. The (UTF-8) string is - written to stderr and in a non-product build or if DBG_UTIL is enabled - also raised as an assertion message box. */ - static void outputCheckMessage( const String& rMsg ); - static void outputCheckMessage( const char* pStr); - -private: - static void evaluateLocaleDataChecking(); -}; - - -#endif // _UNOTOOLS_LOCALEDATAWRAPPER_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/localfilehelper.hxx b/unotools/inc/unotools/localfilehelper.hxx deleted file mode 100644 index 6c57efcfac..0000000000 --- a/unotools/inc/unotools/localfilehelper.hxx +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _UNOTOOLS_LOCALFILEHELPER_HXX -#define _UNOTOOLS_LOCALFILEHELPER_HXX - -#include <com/sun/star/uno/Sequence.hxx> -#include "unotools/unotoolsdllapi.h" - -#include <rtl/ustring.hxx> -#include <tools/string.hxx> - -namespace utl -{ - -class UNOTOOLS_DLLPUBLIC LocalFileHelper -{ -public: - /** - Converts a "physical" file name into a "UCB compatible" URL ( if possible ). - If no UCP is available for the local file system, sal_False and an empty URL is returned. - Returning sal_True and an empty URL means that the URL doesn't point to a local file. - */ - static sal_Bool ConvertPhysicalNameToURL( const String& rName, String& rReturn ); - static sal_Bool ConvertSystemPathToURL( const String& rName, const String& rBaseURL, String& rReturn ); - - /** - Converts a "UCB compatible" URL into a "physical" file name. - If no UCP is available for the local file system, sal_False and an empty file name is returned, - otherwise sal_True and a valid URL, because a file name can always be converted if a UCP for the local - file system is present ( watch: this doesn't mean that this file really exists! ) - */ - static sal_Bool ConvertURLToPhysicalName( const String& rName, String& rReturn ); - static sal_Bool ConvertURLToSystemPath( const String& rName, String& rReturn ); - - static sal_Bool IsLocalFile( const String& rName ); - static sal_Bool IsFileContent( const String& rName ); - - static ::com::sun::star::uno::Sequence< ::rtl::OUString > - GetFolderContents( const ::rtl::OUString& rFolder, sal_Bool bFolder ); -}; - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/localisationoptions.hxx b/unotools/inc/unotools/localisationoptions.hxx deleted file mode 100644 index 62a2ee6fe0..0000000000 --- a/unotools/inc/unotools/localisationoptions.hxx +++ /dev/null @@ -1,181 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_LOCALISATIONOPTIONS_HXX -#define INCLUDED_unotools_LOCALISATIONOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include <sal/types.h> -#include "unotools/unotoolsdllapi.h" -#include <osl/mutex.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtLocalisationOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about localisation features - @descr - - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtLocalisationOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtLocalisationOptions(); - virtual ~SvtLocalisationOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/View/Localisation/AutoMnemonic" - @descr These value specifies if shortcuts should be assigned automatically. - - @seealso - - - @param "bState", new value to set it in configuration. - @return The value which represent current state of internal variable. - - @onerror No error should occurre! - *//*-*****************************************************************************************************/ - - sal_Bool IsAutoMnemonic ( ) const ; - void SetAutoMnemonic ( sal_Bool bState ) ; - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/View/Localisation/DialogScale" - @descr These value specifies the factor for increasing controls. - Value from [0..100] are allowed. - - @ATTENTION These methods don't check for valid or invalid values! - Our configuration server can do it ... but these implementation don't get any notifications - about wrong commits ...! - => If you set an invalid value - nothing will be changed. The information will lost. - - @seealso baseclass ConfigItem - - @param "nScale" new value to set it in configuration. - @return The value which represent current state of internal variable. - - @onerror No error should occurre! - *//*-*****************************************************************************************************/ - - sal_Int32 GetDialogScale( ) const ; - void SetDialogScale( sal_Int32 nScale ) ; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class is partially threadsafe (for de-/initialization only). - All access methods are'nt safe! - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtLocalisationOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtLocalisationOptions - -#endif // #ifndef INCLUDED_unotools_LOCALISATIONOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/loghelper.hxx b/unotools/inc/unotools/loghelper.hxx deleted file mode 100644 index e16bd33e5f..0000000000 --- a/unotools/inc/unotools/loghelper.hxx +++ /dev/null @@ -1,53 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _SVT_LOGHELPER_HXX -#define _SVT_LOGHELPER_HXX - -namespace css = ::com::sun::star; - -class LogHelper -{ -public: - LogHelper(); - ~LogHelper(); - - static void logIt(const css::uno::Exception&){} -}; - -inline void logIt(const css::uno::Exception& ex) -{ - ::rtl::OUStringBuffer sMsg(256); - sMsg.appendAscii("Unexpected exception catched. Original message was:\n\"" ); - sMsg.append(ex.Message); - sMsg.appendAscii("\""); - OSL_FAIL(::rtl::OUStringToOString(sMsg.makeStringAndClear(), RTL_TEXTENCODING_UTF8).getStr()); -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/misccfg.hxx b/unotools/inc/unotools/misccfg.hxx deleted file mode 100644 index 5f6aff5170..0000000000 --- a/unotools/inc/unotools/misccfg.hxx +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _UTL_MISCCFG_HXX -#define _UTL_MISCCFG_HXX - -#include "unotools/unotoolsdllapi.h" -#include "tools/solar.h" -#include "unotools/options.hxx" - -namespace utl -{ - class SfxMiscCfg; - -class UNOTOOLS_DLLPUBLIC MiscCfg : public detail::Options -{ - SfxMiscCfg* pImpl; - -public: - MiscCfg( ); - virtual ~MiscCfg( ); - - sal_Bool IsNotFoundWarning() const; - void SetNotFoundWarning( sal_Bool bSet); - - sal_Bool IsPaperSizeWarning() const; - void SetPaperSizeWarning(sal_Bool bSet); - - sal_Bool IsPaperOrientationWarning() const; - void SetPaperOrientationWarning( sal_Bool bSet); - - // 0 ... 99 - sal_Int32 GetYear2000() const; - void SetYear2000( sal_Int32 nSet ); -}; - -} - -#endif // _MISCCFG_HXX - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/moduleoptions.hxx b/unotools/inc/unotools/moduleoptions.hxx deleted file mode 100644 index bd91e10af7..0000000000 --- a/unotools/inc/unotools/moduleoptions.hxx +++ /dev/null @@ -1,260 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_SVTOOLS_MODULEOPTIONS_HXX -#define INCLUDED_SVTOOLS_MODULEOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <salhelper/singletonref.hxx> -#include <com/sun/star/frame/XModel.hpp> -#include <com/sun/star/uno/Sequence.hxx> -#include <rtl/ustring.hxx> -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define FEATUREFLAG_BASICIDE 0x00000020 -#define FEATUREFLAG_MATH 0x00000100 -#define FEATUREFLAG_CHART 0x00000200 -#define FEATUREFLAG_CALC 0x00000800 -#define FEATUREFLAG_DRAW 0x00001000 -#define FEATUREFLAG_WRITER 0x00002000 -#define FEATUREFLAG_IMPRESS 0x00008000 -#define FEATUREFLAG_INSIGHT 0x00010000 - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ -class SvtModuleOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about installation state of modules - @descr Use these class to get installation state of different office modules like writer, calc etc - Further you can ask for additional informations; e.g. name of standard template file, which - should be used by corresponding module; or short/long name of these module factory. - - @implements - - @base - - - @devstatus ready to use - @threadsafe yes -*//*-*************************************************************************************************************/ -class UNOTOOLS_DLLPUBLIC SvtModuleOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public const declarations! - //------------------------------------------------------------------------------------------------------------- - public: - - enum EModule - { - E_SWRITER = 0, - E_SCALC = 1, - E_SDRAW = 2, - E_SIMPRESS = 3, - E_SMATH = 4, - E_SCHART = 5, - E_SSTARTMODULE = 6, - E_SBASIC = 7, - E_SDATABASE = 8, - E_SWEB = 9, - E_SGLOBAL = 10 - }; - - /*ATTENTION: - If you change these enum ... don't forget to change reading/writing and order of configuration values too! - See "SvtModuleOptions_Impl::impl_GetSetNames()" and his ctor for further informations. - */ - enum EFactory - { - E_UNKNOWN_FACTORY = -1, - E_WRITER = 0, - E_WRITERWEB = 1, - E_WRITERGLOBAL = 2, - E_CALC = 3, - E_DRAW = 4, - E_IMPRESS = 5, - E_MATH = 6, - E_CHART = 7, - E_STARTMODULE = 8, - E_DATABASE = 9, - E_BASIC = 10 - - }; - - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - SvtModuleOptions(); - virtual ~SvtModuleOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - sal_Bool IsModuleInstalled ( EModule eModule ) const; - ::rtl::OUString GetModuleName ( EModule eModule ) const; - ::rtl::OUString GetModuleName ( EFactory eFactory ) const; - ::rtl::OUString GetFactoryName ( EFactory eFactory ) const; - ::rtl::OUString GetFactoryShortName ( EFactory eFactory ) const; - ::rtl::OUString GetFactoryStandardTemplate( EFactory eFactory ) const; - ::rtl::OUString GetFactoryWindowAttributes( EFactory eFactory ) const; - ::rtl::OUString GetFactoryEmptyDocumentURL( EFactory eFactory ) const; - ::rtl::OUString GetFactoryDefaultFilter ( EFactory eFactory ) const; - sal_Bool IsDefaultFilterReadonly ( EFactory eFactory ) const; - sal_Int32 GetFactoryIcon ( EFactory eFactory ) const; - static sal_Bool ClassifyFactoryByName ( const ::rtl::OUString& sName , - EFactory& eFactory ); - void SetFactoryStandardTemplate( EFactory eFactory , - const ::rtl::OUString& sTemplate ); - void SetFactoryWindowAttributes( EFactory eFactory , - const ::rtl::OUString& sAttributes); - void SetFactoryDefaultFilter ( EFactory eFactory , - const ::rtl::OUString& sFilter ); - - //_______________________________________ - - /** @short return the corresponding application ID for the given - document service name. - */ - static EFactory ClassifyFactoryByServiceName(const ::rtl::OUString& sName); - - //_______________________________________ - - /** @short return the corresponding application ID for the given - short name. - */ - static EFactory ClassifyFactoryByShortName(const ::rtl::OUString& sName); - - //_______________________________________ - - /** @short return the corresponding application ID for the given properties. - - @descr Because this search base on filters currently (till we have a better solution) - a result is not guaranteed everytimes. May a filter does not exists for the specified - content (but a FrameLoader which is not bound to any application!) ... or - the given properties describe a stream (and we make no deep detection inside here!). - - @attention The module BASIC cant be detected here. Because it does not - has an own URL schema. - - @param sURL - the complete URL! - - @param lMediaDescriptor - additional informations - - @return A suitable enum value. See EFactory above. - */ - static EFactory ClassifyFactoryByURL(const ::rtl::OUString& sURL , - const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lMediaDescriptor); - - //_______________________________________ - - /** @short return the corresponding application ID for the given properties. - - @descr Here we try to use the list of supported service names of the given model - to find out the right application module. - - @attention The module BASIC cant be detected here. Because it does not - support any model/ctrl/view paradigm. - - @param xModel - the document model - - @return A suitable enum value. See EFactory above. - */ - static EFactory ClassifyFactoryByModel(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel); - - ::rtl::OUString GetDefaultModuleName(); - - //--------------------------------------------------------------------------------------------------------- - // old interface ... - //--------------------------------------------------------------------------------------------------------- - sal_Bool IsMath () const; - sal_Bool IsChart () const; - sal_Bool IsCalc () const; - sal_Bool IsDraw () const; - sal_Bool IsWriter () const; - sal_Bool IsImpress () const; - sal_Bool IsBasicIDE () const; - sal_Bool IsDataBase () const; - sal_uInt32 GetFeatures() const; - - ::com::sun::star::uno::Sequence < ::rtl::OUString > GetAllServiceNames(); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - private: - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& impl_GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double defined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtModuleOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtModuleOptions - -#endif // #ifndef INCLUDED_SVTOOLS_MODULEOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/nativenumberwrapper.hxx b/unotools/inc/unotools/nativenumberwrapper.hxx deleted file mode 100644 index d564c9e8d5..0000000000 --- a/unotools/inc/unotools/nativenumberwrapper.hxx +++ /dev/null @@ -1,78 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_NATIVENUMBERWRAPPER_HXX -#define _UNOTOOLS_NATIVENUMBERWRAPPER_HXX -#include <com/sun/star/i18n/XNativeNumberSupplier.hpp> - -namespace com { namespace sun { namespace star { - namespace lang { - class XMultiServiceFactory; - } -}}} - - -class UNOTOOLS_DLLPUBLIC NativeNumberWrapper -{ - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xSMgr; - ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XNativeNumberSupplier > xNNS; - // not implemented, prevent usage - NativeNumberWrapper( const NativeNumberWrapper& ); - NativeNumberWrapper& operator=( const NativeNumberWrapper& ); - -public: - NativeNumberWrapper( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF - ); - - ~NativeNumberWrapper(); - - // Wrapper implementations of XNativeNumberSupplier - - ::rtl::OUString getNativeNumberString( - const ::rtl::OUString& rNumberString, - const ::com::sun::star::lang::Locale& rLocale, - sal_Int16 nNativeNumberMode ) const; - - sal_Bool isValidNatNum( - const ::com::sun::star::lang::Locale& rLocale, - sal_Int16 nNativeNumberMode ) const; - - ::com::sun::star::i18n::NativeNumberXmlAttributes convertToXmlAttributes( - const ::com::sun::star::lang::Locale& rLocale, - sal_Int16 nNativeNumberMode ) const; - - sal_Int16 convertFromXmlAttributes( - const ::com::sun::star::i18n::NativeNumberXmlAttributes& rAttr ) const; - -}; - -#endif // _UNOTOOLS_NATIVENUMBERWRAPPER_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/numberformatcodewrapper.hxx b/unotools/inc/unotools/numberformatcodewrapper.hxx deleted file mode 100644 index 1f2b0b8801..0000000000 --- a/unotools/inc/unotools/numberformatcodewrapper.hxx +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UNOTOOLS_NUMBERFORMATCODEWRAPPER_HXX -#define _UNOTOOLS_NUMBERFORMATCODEWRAPPER_HXX - -#include <com/sun/star/i18n/XNumberFormatCode.hpp> -#include "unotools/unotoolsdllapi.h" - -namespace com { namespace sun { namespace star { - namespace lang { - class XMultiServiceFactory; - } -}}} - - -class UNOTOOLS_DLLPUBLIC NumberFormatCodeWrapper -{ - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xSMgr; - ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XNumberFormatCode > xNFC; - ::com::sun::star::lang::Locale aLocale; - - // not implemented, prevent usage - NumberFormatCodeWrapper( const NumberFormatCodeWrapper& ); - NumberFormatCodeWrapper& operator=( const NumberFormatCodeWrapper& ); - -public: - NumberFormatCodeWrapper( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF, - const ::com::sun::star::lang::Locale& rLocale - ); - - ~NumberFormatCodeWrapper(); - - - /// set a new Locale - void setLocale( const ::com::sun::star::lang::Locale& rLocale ); - - /// get current Locale - const ::com::sun::star::lang::Locale& getLocale() const { return aLocale; } - - - // Wrapper implementations of class NumberFormatCodeMapper - - ::com::sun::star::i18n::NumberFormatCode getDefault( sal_Int16 nFormatType, sal_Int16 nFormatUsage ) const; - ::com::sun::star::i18n::NumberFormatCode getFormatCode( sal_Int16 nFormatIndex ) const; - ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::NumberFormatCode > getAllFormatCode( sal_Int16 nFormatUsage ) const; - ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::NumberFormatCode > getAllFormatCodes() const; - -}; - -#endif // _UNOTOOLS_NUMBERFORMATCODEWRAPPER_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/options.hxx b/unotools/inc/unotools/options.hxx deleted file mode 100644 index dd44ba93b7..0000000000 --- a/unotools/inc/unotools/options.hxx +++ /dev/null @@ -1,101 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_unotools_OPTIONS_HXX -#define INCLUDED_unotools_OPTIONS_HXX - -#include "sal/config.h" -#include "unotools/unotoolsdllapi.h" -#include <vector> - -/* - The class utl::detail::Options provides a kind of multiplexer. It implements a ConfigurationListener - that is usually registered at a ConfigItem class. At the same time it implements a ConfigurationBroadcaster - that allows further ("external") listeners to register. - Once the class deriving from Options is notified about - configuration changes by the ConfigItem if its content has been changed by calling some of its methods, - a call of the Options::NotifyListeners() method will send out notifications to all external listeners. -*/ - -namespace utl { - - class ConfigurationBroadcaster; - - // interface for configuration listener - class UNOTOOLS_DLLPUBLIC ConfigurationListener - { - public: - virtual void ConfigurationChanged( ConfigurationBroadcaster* p, sal_uInt32 nHint=0 ) = 0; - }; - typedef ::std::vector< ConfigurationListener* > IMPL_ConfigurationListenerList; - - // complete broadcasting implementation - class UNOTOOLS_DLLPUBLIC ConfigurationBroadcaster - { - IMPL_ConfigurationListenerList* mpList; - sal_Int32 m_nBroadcastBlocked; // broadcast only if this is 0 - sal_uInt32 m_nBlockedHint; - - public: - void AddListener( utl::ConfigurationListener* pListener ); - void RemoveListener( utl::ConfigurationListener* pListener ); - - // notify listeners; nHint is an implementation detail of the particular class deriving from ConfigurationBroadcaster - void NotifyListeners( sal_uInt32 nHint ); - ConfigurationBroadcaster(); - virtual ~ConfigurationBroadcaster(); - virtual void BlockBroadcasts( bool bBlock ); - }; - -namespace detail { - -// A base class for the various option classes supported by -// unotools/source/config/itemholderbase.hxx (which must be public, as it is -// shared between unotools, svl and svt) -// It also provides an implementation for a Configuration Listener and inherits a broadcaster implementation - -class UNOTOOLS_DLLPUBLIC Options : public utl::ConfigurationBroadcaster, public utl::ConfigurationListener -{ -public: - Options(); - - virtual ~Options() = 0; - -private: - UNOTOOLS_DLLPRIVATE Options(Options &); // not defined - UNOTOOLS_DLLPRIVATE void operator =(Options &); // not defined - -protected: - virtual void ConfigurationChanged( ::utl::ConfigurationBroadcaster* p, sal_uInt32 nHint=0 ); -}; - -} } - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/optionsdlg.hxx b/unotools/inc/unotools/optionsdlg.hxx deleted file mode 100644 index d29934b150..0000000000 --- a/unotools/inc/unotools/optionsdlg.hxx +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_OPTIONSDLG_HXX -#define INCLUDED_unotools_OPTIONSDLG_HXX - -#include "unotools/unotoolsdllapi.h" -#include <tools/string.hxx> -#include <unotools/options.hxx> - -class SvtOptionsDlgOptions_Impl; - -class UNOTOOLS_DLLPUBLIC SvtOptionsDialogOptions: public utl::detail::Options -{ -private: - SvtOptionsDlgOptions_Impl* m_pImp; - -public: - SvtOptionsDialogOptions(); - virtual ~SvtOptionsDialogOptions(); - - sal_Bool IsGroupHidden ( const String& _rGroup ) const; - sal_Bool IsPageHidden ( const String& _rPage, - const String& _rGroup ) const; - sal_Bool IsOptionHidden ( const String& _rOption, - const String& _rPage, - const String& _rGroup ) const; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/pathoptions.hxx b/unotools/inc/unotools/pathoptions.hxx deleted file mode 100644 index bfd47655f7..0000000000 --- a/unotools/inc/unotools/pathoptions.hxx +++ /dev/null @@ -1,143 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_PATHOPTIONS_HXX -#define INCLUDED_unotools_PATHOPTIONS_HXX - -#include "unotools/unotoolsdllapi.h" -#include <tools/string.hxx> -#include <com/sun/star/lang/Locale.hpp> -#include <unotools/options.hxx> - -#define SVT_SEARCHPATH_DELIMITER ';' - -// class SvtPathOptions -------------------------------------------------- - -class SvtPathOptions_Impl; -class UNOTOOLS_DLLPUBLIC SvtPathOptions: public utl::detail::Options -{ -private: - SvtPathOptions_Impl* pImp; - -public: - enum Pathes - { - PATH_ADDIN, - PATH_AUTOCORRECT, - PATH_AUTOTEXT, - PATH_BACKUP, - PATH_BASIC, - PATH_BITMAP, - PATH_CONFIG, - PATH_DICTIONARY, - PATH_FAVORITES, - PATH_FILTER, - PATH_GALLERY, - PATH_GRAPHIC, - PATH_HELP, - PATH_LINGUISTIC, - PATH_MODULE, - PATH_PALETTE, - PATH_PLUGIN, - PATH_STORAGE, - PATH_TEMP, - PATH_TEMPLATE, - PATH_USERCONFIG, - PATH_WORK, - PATH_UICONFIG, - PATH_FINGERPRINT, - PATH_COUNT // should always be the last element - }; - - SvtPathOptions(); - virtual ~SvtPathOptions(); - - // get the pathes, not const because of using a mutex - const String& GetAddinPath() const; - const String& GetAutoCorrectPath() const; - const String& GetAutoTextPath() const; - const String& GetBackupPath() const; - const String& GetBasicPath() const; - const String& GetBitmapPath() const; - const String& GetConfigPath() const; - const String& GetDictionaryPath() const; - const String& GetFavoritesPath() const; - const String& GetFilterPath() const; - const String& GetGalleryPath() const; - const String& GetGraphicPath() const; - const String& GetHelpPath() const; - const String& GetLinguisticPath() const; - const String& GetModulePath() const; - const String& GetPalettePath() const; - const String& GetPluginPath() const; - const String& GetStoragePath() const; - const String& GetTempPath() const; - const String& GetTemplatePath() const; - const String& GetUserConfigPath() const; - const String& GetWorkPath() const; - const String& GetUIConfigPath() const; - const String& GetFingerprintPath() const; - - sal_Bool IsPathReadonly(Pathes ePath)const; - const String& GetPath(Pathes ePath) const; - - // set the pathes - void SetAddinPath( const String& rPath ); - void SetAutoCorrectPath( const String& rPath ); - void SetAutoTextPath( const String& rPath ); - void SetBackupPath( const String& rPath ); - void SetBasicPath( const String& rPath ); - void SetBitmapPath( const String& rPath ); - void SetConfigPath( const String& rPath ); - void SetDictionaryPath( const String& rPath ); - void SetFavoritesPath( const String& rPath ); - void SetFilterPath( const String& rPath ); - void SetGalleryPath( const String& rPath ); - void SetGraphicPath( const String& rPath ); - void SetHelpPath( const String& rPath ); - void SetLinguisticPath( const String& rPath ); - void SetModulePath( const String& rPath ); - void SetPalettePath( const String& rPath ); - void SetPluginPath( const String& rPath ); - void SetStoragePath( const String& rPath ); - void SetTempPath( const String& rPath ); - void SetTemplatePath( const String& rPath ); - void SetUserConfigPath( const String& rPath ); - void SetWorkPath( const String& rPath ); - void SetPath( SvtPathOptions::Pathes ePath, const String& rNewPath ); - - String SubstituteVariable( const String& rVar ) const; - String ExpandMacros( const String& rPath ) const; - String UseVariable( const String& rVar ) const; - sal_Bool SearchFile( String& rIniFile, Pathes ePath = PATH_USERCONFIG ); - ::com::sun::star::lang::Locale GetLocale() const; - sal_Bool IsReadonly() const; -}; - -#endif // #ifndef INCLUDED_unotools_PATHOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/printwarningoptions.hxx b/unotools/inc/unotools/printwarningoptions.hxx deleted file mode 100644 index 55b7add850..0000000000 --- a/unotools/inc/unotools/printwarningoptions.hxx +++ /dev/null @@ -1,164 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_unotools_PRINTWARNINGOPTIONS_HXX -#define INCLUDED_unotools_PRINTWARNINGOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtPrintWarningOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about startup features - @descr - - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtPrintWarningOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtPrintWarningOptions(); - virtual ~SvtPrintWarningOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/Print/Warning..." - @descr These options describe internal states to enable/disable features of installed office. - - @seealso configuration package "org.openoffice.Office.Common/_3D-Engine" - *//*-*****************************************************************************************************/ - - sal_Bool IsPaperSize() const; - sal_Bool IsPaperOrientation() const; - sal_Bool IsNotFound() const; - sal_Bool IsTransparency() const; - sal_Bool IsModifyDocumentOnPrintingAllowed() const; - - void SetPaperSize( sal_Bool bState ); - void SetPaperOrientation( sal_Bool bState ); - void SetNotFound( sal_Bool bState ); - void SetTransparency( sal_Bool bState ); - void SetModifyDocumentOnPrintingAllowed( sal_Bool bState ); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class use his own static mutex to be threadsafe. - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtPrintWarningOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtPrintWarningOptions - -#endif // #ifndef INCLUDED_unotools_PRINTWARNINGOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/processfactory.hxx b/unotools/inc/unotools/processfactory.hxx deleted file mode 100644 index 9def1111fb..0000000000 --- a/unotools/inc/unotools/processfactory.hxx +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_ -#define _UNOTOOLS_PROCESSFACTORY_HXX_ - -#include "unotools/unotoolsdllapi.h" -#include <comphelper/processfactory.hxx> -#include <com/sun/star/uno/Reference.hxx> - -namespace com { namespace sun { namespace star { namespace lang { - class XMultiServiceFactory; -} } } } - -namespace utl -{ - -/** - * This function set the process service factory. - * - * @author Juergen Schmidt - */ -UNOTOOLS_DLLPUBLIC void setProcessServiceFactory(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xSMgr); - -/** - * This function get the process service factory. If no service factory is set the function returns - * a null interface. - * - * @author Juergen Schmidt - */ -UNOTOOLS_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > getProcessServiceFactory(); - -} - -#endif // _UNOTOOLS_PROCESSFACTORY_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/progresshandlerwrap.hxx b/unotools/inc/unotools/progresshandlerwrap.hxx deleted file mode 100644 index caaf68f2db..0000000000 --- a/unotools/inc/unotools/progresshandlerwrap.hxx +++ /dev/null @@ -1,59 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UTL_PROGRESSHANDLERWRAP_HXX_ -#define _UTL_PROGRESSHANDLERWRAP_HXX_ -#include <cppuhelper/implbase1.hxx> -#include <com/sun/star/task/XStatusIndicator.hpp> -#include <com/sun/star/ucb/XProgressHandler.hpp> - -namespace utl -{ - -class UNOTOOLS_DLLPUBLIC ProgressHandlerWrap : public ::cppu::WeakImplHelper1< ::com::sun::star::ucb::XProgressHandler > -{ - ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > m_xStatusIndicator; - -public: - ProgressHandlerWrap( ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > xSI ); - - // XProgressHandler - virtual void SAL_CALL push( const ::com::sun::star::uno::Any& Status ) - throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL update( const ::com::sun::star::uno::Any& Status ) - throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL pop() - throw (::com::sun::star::uno::RuntimeException); -}; - -} // namespace utl - -#endif // _UTL_PROGRESSHANDLERWRAP_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/propertysethelper.hxx b/unotools/inc/unotools/propertysethelper.hxx deleted file mode 100644 index 13c312e0ee..0000000000 --- a/unotools/inc/unotools/propertysethelper.hxx +++ /dev/null @@ -1,98 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UTL_PROPERTYSETHELPER_HXX_ -#define _UTL_PROPERTYSETHELPER_HXX_ - -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/beans/XPropertyState.hpp> -#include <com/sun/star/beans/XMultiPropertySet.hpp> - -//========================================================================= -//= property helper classes -//========================================================================= - -//... namespace utl ....................................................... -namespace utl -{ -//......................................................................... - -class PropertySetInfo; -struct PropertyMapEntry; -class PropertySetHelperImpl; - -class PropertySetHelper : public ::com::sun::star::beans::XPropertySet, - public ::com::sun::star::beans::XPropertyState, - public ::com::sun::star::beans::XMultiPropertySet -{ -private: - PropertySetHelperImpl* mp; - -protected: - virtual void _setPropertyValues( const utl::PropertyMapEntry** ppEntries, const ::com::sun::star::uno::Any* pValues ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException ) = 0; - virtual void _getPropertyValues( const utl::PropertyMapEntry** ppEntries, ::com::sun::star::uno::Any* pValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException ) = 0; - - virtual void _getPropertyStates( const utl::PropertyMapEntry** ppEntries, ::com::sun::star::beans::PropertyState* pStates ) throw(::com::sun::star::beans::UnknownPropertyException ); - virtual void _setPropertyToDefault( const utl::PropertyMapEntry* pEntry ) throw(::com::sun::star::beans::UnknownPropertyException ); - virtual ::com::sun::star::uno::Any _getPropertyDefault( const utl::PropertyMapEntry* pEntry ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException ); - -public: - PropertySetHelper( utl::PropertySetInfo* pInfo ) throw(); - virtual ~PropertySetHelper() throw(); - - // XPropertySet - virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XMultiPropertySet -// virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL getPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException); - - // XPropertyState - virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL getPropertyStates( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); -}; - -//......................................................................... -} -//... namespace utl ....................................................... - -#endif // _UTL_PROPERTYSETHELPER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/propertysetinfo.hxx b/unotools/inc/unotools/propertysetinfo.hxx deleted file mode 100644 index 7cbcb7b609..0000000000 --- a/unotools/inc/unotools/propertysetinfo.hxx +++ /dev/null @@ -1,95 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UTL_PROPERTSETINFO_HXX_ -#define _UTL_PROPERTSETINFO_HXX_ - -#include <com/sun/star/uno/Type.h> -#include <com/sun/star/beans/XPropertySetInfo.hpp> -#include <cppuhelper/implbase1.hxx> -#include <comphelper/stl_types.hxx> - -//========================================================================= -//= property helper classes -//========================================================================= - -//... namespace utl ....................................................... -namespace utl -{ -//......................................................................... - -struct PropertyMapEntry -{ - const sal_Char* mpName; - sal_uInt16 mnNameLen; - sal_uInt16 mnWhich; - const com::sun::star::uno::Type* mpType; - sal_Int16 mnFlags; - sal_uInt8 mnMemberId; -}; - -DECLARE_STL_USTRINGACCESS_MAP( PropertyMapEntry*, PropertyMap ); - -class PropertyMapImpl; - -/** this class implements a XPropertySetInfo that is initialized with arrays of PropertyMapEntry. - It is used by the class PropertySetHelper. -*/ -class PropertySetInfo : public ::cppu::WeakImplHelper1< ::com::sun::star::beans::XPropertySetInfo > -{ -private: - PropertyMapImpl* mpMap; -public: - PropertySetInfo() throw(); - virtual ~PropertySetInfo() throw(); - - /** returns a stl map with all PropertyMapEntry pointer.<p> - The key is the property name. - */ - const PropertyMap* getPropertyMap() const throw(); - - /** adds an array of PropertyMapEntry to this instance.<p> - The end is marked with a PropertyMapEntry where mpName equals NULL - */ - void add( PropertyMapEntry* pMap ) throw(); - - /** removes an already added PropertyMapEntry which string in mpName equals to aName */ - void remove( const rtl::OUString& aName ) throw(); - - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > SAL_CALL getProperties() throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::beans::Property SAL_CALL getPropertyByName( const ::rtl::OUString& aName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasPropertyByName( const ::rtl::OUString& Name ) throw(::com::sun::star::uno::RuntimeException); -}; - -//......................................................................... -} -//... namespace utl ....................................................... - -#endif // _UTL_PROPERTSETINFO_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/querydeep.hxx b/unotools/inc/unotools/querydeep.hxx deleted file mode 100644 index 53d4a9ce28..0000000000 --- a/unotools/inc/unotools/querydeep.hxx +++ /dev/null @@ -1,488 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UNOTOOLS_QUERYDEEPINTERFACE_HXX -#define _UNOTOOLS_QUERYDEEPINTERFACE_HXX - -#include <com/sun/star/uno/XInterface.hpp> -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/uno/Type.hxx> - -/** */ //for docpp -namespace utl -{ - -//-------------------------------------------------------------------------------------------------------- -/** - * Inspect interfaces types whether they are related by inheritance. - *<BR> - * @return true if rType is derived from rBaseType - * @param rBaseType a <type>Type</type> of an interface. - * @param rType a <type>Type</type> of an interface. - */ -sal_Bool isDerivedFrom( - const ::com::sun::star::uno::Type & rBaseType, - const ::com::sun::star::uno::Type & rType ); - -//-------------------------------------------------------------------------------------------------------- -/** - * Inspect interface types whether they are related by inheritance. - *<BR> - * @return true if p is of a type derived from rBaseType - * @param rBaseType a <type>Type</type> of an interface. - * @param p a pointer to an interface. - */ -template <class Interface> -inline sal_Bool isDerivedFrom( - const ::com::sun::star::uno::Type& rBaseType, - Interface* /*p*/) -{ - return isDerivedFrom( - rBaseType, - ::getCppuType(static_cast<const ::com::sun::star::uno::Reference<Interface> *>(0))); -} - -//-------------------------------------------------------------------------------------------------------- -// possible optimization ? -// Any aRet(::cppu::queryInterface(rType, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12)); -// if (aRet.hasValue()) -// return aRet; - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - */ -template< class Interface1 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - */ -template< class Interface1, class Interface2 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - * @param p3 a pointer to an interface. - */ -template< class Interface1, class Interface2, class Interface3 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2, Interface3 * p3 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface3 > *>(0)))) - return ::com::sun::star::uno::Any( &p3, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - * @param p3 a pointer to an interface. - * @param p4 a pointer to an interface. - */ -template< class Interface1, class Interface2, class Interface3, class Interface4 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface3 > *>(0)))) - return ::com::sun::star::uno::Any( &p3, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface4 > *>(0)))) - return ::com::sun::star::uno::Any( &p4, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - * @param p3 a pointer to an interface. - * @param p4 a pointer to an interface. - * @param p5 a pointer to an interface. - */ -template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface3 > *>(0)))) - return ::com::sun::star::uno::Any( &p3, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface4 > *>(0)))) - return ::com::sun::star::uno::Any( &p4, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface5 > *>(0)))) - return ::com::sun::star::uno::Any( &p5, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - * @param p3 a pointer to an interface. - * @param p4 a pointer to an interface. - * @param p5 a pointer to an interface. - * @param p6 a pointer to an interface. - */ -template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5, - class Interface6 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5, - Interface6 * p6 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface3 > *>(0)))) - return ::com::sun::star::uno::Any( &p3, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface4 > *>(0)))) - return ::com::sun::star::uno::Any( &p4, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface5 > *>(0)))) - return ::com::sun::star::uno::Any( &p5, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface6 > *>(0)))) - return ::com::sun::star::uno::Any( &p6, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - * @param p3 a pointer to an interface. - * @param p4 a pointer to an interface. - * @param p5 a pointer to an interface. - * @param p6 a pointer to an interface. - * @param p7 a pointer to an interface. - */ -template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5, - class Interface6, class Interface7 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5, - Interface6 * p6, Interface7 * p7 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface3 > *>(0)))) - return ::com::sun::star::uno::Any( &p3, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface4 > *>(0)))) - return ::com::sun::star::uno::Any( &p4, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface5 > *>(0)))) - return ::com::sun::star::uno::Any( &p5, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface6 > *>(0)))) - return ::com::sun::star::uno::Any( &p6, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface7 > *>(0)))) - return ::com::sun::star::uno::Any( &p7, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - * @param p3 a pointer to an interface. - * @param p4 a pointer to an interface. - * @param p5 a pointer to an interface. - * @param p6 a pointer to an interface. - * @param p7 a pointer to an interface. - * @param p8 a pointer to an interface. - */ -template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5, - class Interface6, class Interface7, class Interface8 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5, - Interface6 * p6, Interface7 * p7, Interface8 * p8 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface3 > *>(0)))) - return ::com::sun::star::uno::Any( &p3, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface4 > *>(0)))) - return ::com::sun::star::uno::Any( &p4, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface5 > *>(0)))) - return ::com::sun::star::uno::Any( &p5, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface6 > *>(0)))) - return ::com::sun::star::uno::Any( &p6, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface7 > *>(0)))) - return ::com::sun::star::uno::Any( &p7, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface8 > *>(0)))) - return ::com::sun::star::uno::Any( &p8, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - * @param p3 a pointer to an interface. - * @param p4 a pointer to an interface. - * @param p5 a pointer to an interface. - * @param p6 a pointer to an interface. - * @param p7 a pointer to an interface. - * @param p8 a pointer to an interface. - * @param p9 a pointer to an interface. - */ -template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5, - class Interface6, class Interface7, class Interface8, class Interface9 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5, - Interface6 * p6, Interface7 * p7, Interface8 * p8, Interface9 * p9 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface3 > *>(0)))) - return ::com::sun::star::uno::Any( &p3, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface4 > *>(0)))) - return ::com::sun::star::uno::Any( &p4, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface5 > *>(0)))) - return ::com::sun::star::uno::Any( &p5, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface6 > *>(0)))) - return ::com::sun::star::uno::Any( &p6, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface7 > *>(0)))) - return ::com::sun::star::uno::Any( &p7, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface8 > *>(0)))) - return ::com::sun::star::uno::Any( &p8, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface9 > *>(0)))) - return ::com::sun::star::uno::Any( &p9, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - * @param p3 a pointer to an interface. - * @param p4 a pointer to an interface. - * @param p5 a pointer to an interface. - * @param p6 a pointer to an interface. - * @param p7 a pointer to an interface. - * @param p8 a pointer to an interface. - * @param p9 a pointer to an interface. - * @param p10 a pointer to an interface. - */ -template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5, - class Interface6, class Interface7, class Interface8, class Interface9, class Interface10 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5, - Interface6 * p6, Interface7 * p7, Interface8 * p8, Interface9 * p9, Interface10 * p10 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface3 > *>(0)))) - return ::com::sun::star::uno::Any( &p3, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface4 > *>(0)))) - return ::com::sun::star::uno::Any( &p4, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface5 > *>(0)))) - return ::com::sun::star::uno::Any( &p5, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface6 > *>(0)))) - return ::com::sun::star::uno::Any( &p6, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface7 > *>(0)))) - return ::com::sun::star::uno::Any( &p7, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface8 > *>(0)))) - return ::com::sun::star::uno::Any( &p8, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface9 > *>(0)))) - return ::com::sun::star::uno::Any( &p9, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface10 > *>(0)))) - return ::com::sun::star::uno::Any( &p10, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - * @param p3 a pointer to an interface. - * @param p4 a pointer to an interface. - * @param p5 a pointer to an interface. - * @param p6 a pointer to an interface. - * @param p7 a pointer to an interface. - * @param p8 a pointer to an interface. - * @param p9 a pointer to an interface. - * @param p10 a pointer to an interface. - * @param p11 a pointer to an interface. - */ -template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5, - class Interface6, class Interface7, class Interface8, class Interface9, class Interface10, - class Interface11 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5, - Interface6 * p6, Interface7 * p7, Interface8 * p8, Interface9 * p9, Interface10 * p10, - Interface11 * p11 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface3 > *>(0)))) - return ::com::sun::star::uno::Any( &p3, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface4 > *>(0)))) - return ::com::sun::star::uno::Any( &p4, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface5 > *>(0)))) - return ::com::sun::star::uno::Any( &p5, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface6 > *>(0)))) - return ::com::sun::star::uno::Any( &p6, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface7 > *>(0)))) - return ::com::sun::star::uno::Any( &p7, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface8 > *>(0)))) - return ::com::sun::star::uno::Any( &p8, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface9 > *>(0)))) - return ::com::sun::star::uno::Any( &p9, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface10 > *>(0)))) - return ::com::sun::star::uno::Any( &p10, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface11 > *>(0)))) - return ::com::sun::star::uno::Any( &p11, rType ); - else - return ::com::sun::star::uno::Any(); -} - -/** - * Inspect types and choose return proper interface. - *<BR> - * @param p1 a pointer to an interface. - * @param p2 a pointer to an interface. - * @param p3 a pointer to an interface. - * @param p4 a pointer to an interface. - * @param p5 a pointer to an interface. - * @param p6 a pointer to an interface. - * @param p7 a pointer to an interface. - * @param p8 a pointer to an interface. - * @param p9 a pointer to an interface. - * @param p10 a pointer to an interface. - * @param p11 a pointer to an interface. - * @param p12 a pointer to an interface. - */ -template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5, - class Interface6, class Interface7, class Interface8, class Interface9, class Interface10, - class Interface11, class Interface12 > -inline ::com::sun::star::uno::Any queryDeepInterface( - const ::com::sun::star::uno::Type & rType, - Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5, - Interface6 * p6, Interface7 * p7, Interface8 * p8, Interface9 * p9, Interface10 * p10, - Interface11 * p11, Interface12 * p12 ) -{ - if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface1 > *>(0)))) - return ::com::sun::star::uno::Any( &p1, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface2 > *>(0)))) - return ::com::sun::star::uno::Any( &p2, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface3 > *>(0)))) - return ::com::sun::star::uno::Any( &p3, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface4 > *>(0)))) - return ::com::sun::star::uno::Any( &p4, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface5 > *>(0)))) - return ::com::sun::star::uno::Any( &p5, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface6 > *>(0)))) - return ::com::sun::star::uno::Any( &p6, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface7 > *>(0)))) - return ::com::sun::star::uno::Any( &p7, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface8 > *>(0)))) - return ::com::sun::star::uno::Any( &p8, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface9 > *>(0)))) - return ::com::sun::star::uno::Any( &p9, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface10 > *>(0)))) - return ::com::sun::star::uno::Any( &p10, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface11 > *>(0)))) - return ::com::sun::star::uno::Any( &p11, rType ); - else if (isDerivedFrom(rType, ::getCppuType(static_cast<const ::com::sun::star::uno::Reference< Interface12 > *>(0)))) - return ::com::sun::star::uno::Any( &p12, rType ); - else - return ::com::sun::star::uno::Any(); -} - -} // namespace utl - -#endif // _UNOTOOLS_QUERYDEEPINTERFACE_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/readwritemutexguard.hxx b/unotools/inc/unotools/readwritemutexguard.hxx deleted file mode 100644 index f3d45644c0..0000000000 --- a/unotools/inc/unotools/readwritemutexguard.hxx +++ /dev/null @@ -1,115 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_UNOTOOLS_READWRITEMUTEXGUARD_HXX -#define INCLUDED_UNOTOOLS_READWRITEMUTEXGUARD_HXX - -#include <osl/mutex.hxx> - -namespace utl { - -class ReadWriteGuard; -class ReadWriteMutex -{ - friend class ReadWriteGuard; - - sal_uInt32 nReadCount; - sal_uInt32 nBlockCriticalCount; - ::osl::Mutex* pMutex; - ::osl::Mutex* pWriteMutex; - -public: - ReadWriteMutex() - : nReadCount(0) - , nBlockCriticalCount(0) - , pMutex( new ::osl::Mutex ) - , pWriteMutex( new ::osl::Mutex ) - {} - ~ReadWriteMutex() - { - delete pMutex; - delete pWriteMutex; - } -}; - - -namespace ReadWriteGuardMode { -const sal_Int32 nWrite = 0x01; -const sal_Int32 nCriticalChange = 0x02 | nWrite; -const sal_Int32 nBlockCritical = 0x04; // only a block, not a read, exclusive flag! -} - -/** Enable multiple threads to read simultaneously, but a write blocks all - other reads and writes, and a read blocks any write. - Used in I18N wrappers to be able to maintain a single instance of a wrapper - for the standard Office locale. - NEVER construct a writing guard if there is already a reading guard in the - same context, the following will dead lock EVEN IN THE SAME THREAD! - void foo() - { - ReadWriteGuard aGuard1( aMutex ); - bar(); - } - void bar() - { - // waits forever for aGuard1 - ReadWriteGuard aGuard2( aMutex, ReadWriteGuardMode::nWrite ); - } - */ -class ReadWriteGuard -{ - ReadWriteMutex& rMutex; - sal_Int32 nMode; -public: - ReadWriteGuard( - ReadWriteMutex& rMutex, - sal_Int32 nRequestMode = 0 // read only - ); - ~ReadWriteGuard(); - - /** Be careful with this, it does wait for ANY read to complete. - The following will dead lock EVEN IN THE SAME THREAD! - void foo() - { - ReadWriteGuard aGuard1( aMutex ); - bar(); - } - void bar() - { - ReadWriteGuard aGuard2( aMutex ); - aGuard2.changeReadToWrite(); // waits forever for aGuard1 - } - */ - void changeReadToWrite(); -}; - -} // namespace utl - -#endif // INCLUDED_UNOTOOLS_READWRITEMUTEXGUARD_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/regoptions.hxx b/unotools/inc/unotools/regoptions.hxx deleted file mode 100644 index 1b14260034..0000000000 --- a/unotools/inc/unotools/regoptions.hxx +++ /dev/null @@ -1,122 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef unotools_REGOPTIONS_HXX -#define unotools_REGOPTIONS_HXX - -#include "unotools/unotoolsdllapi.h" -#include <tools/string.hxx> - -//........................................................................ -namespace utl -{ -//........................................................................ - - //==================================================================== - //= RegOptions - //==================================================================== - class RegOptionsImpl; - /** encapsulates access to the configuration settings for registering the product - */ - class UNOTOOLS_DLLPUBLIC RegOptions - { - private: - RegOptionsImpl* m_pImpl; - - // the impl class is constructed upon need only (as this is expensive) - UNOTOOLS_DLLPRIVATE void ensureImpl( ); - - public: - RegOptions( ); - ~RegOptions( ); - - // retrieves the URL which should be used for online registration - String getRegistrationURL( ) const; - - // checks if the menu item which can be used to trigger the online registration should be available - sal_Bool allowMenu( ) const; - - enum DialogPermission - { // the registration dialog shall be executed .... - dpDisabled, // ... never - it has been disabled - dpNotThisSession, // ... later - no statement when, but _not now_ - dpRemindLater, // ... later at a reminder date - dpThisSession // ... during this session - }; - - /** checks if the registration dialog is allowed - <p>A return value of <TRUE/> does not mean that during this session, the dialog is allowed to - be executed. It simply means executing it is allowed <em>in general</em></p> - */ - DialogPermission getDialogPermission( ) const; - - /** claims that the current session is done with respect to the registration dialog. - - <p>This is not to be called if <method>getDialogPermission</method> returned dpDisabled previously<p> - <p>The behaviour changes as follows: - <ul> - <li>any subsequent calls to <method>getDialogPermission</method> will return dpNotThisSession, given - that it previously returned dpNotThisSession</li> - <li>any subsequent calls to <method>getDialogPermission</method> will return dpDisabled, given - that it previously returned dpThisSession</li> - <li>an internal (persistent) session counter is updated, so that during the next session, - <method>getDialogPermission</method> <em>may</em> return dpThisSession</li> - </ul></p> - */ - void markSessionDone( ); - - /** activates the reminder - - <p>If this method is called, the reminder for the dialog will be activated. - This means that during the next <arg>_nDaysFromNow</arg>-1 days, - <method>getDialogPermission</method> will return dpRemindLater</p>, - at the <arg>_nDaysFromNow</arg>th day from today onwards it will - return dpThisSession.</p> - - <p>It is not allowed to call this method if the dialog is currently disabled.</p> - - <p>If the current session has not been marked as done already - (i.e., <method>markSessionDone</method> has not been called, yet), this is - done implicitly when you call <method>activateReminder</method>.</p> - */ - void activateReminder( sal_Int32 _nDaysFromNow ); - - /** removes the reminder - - <p>If this method is called, the reminder for the dialog will be removed. - */ - void removeReminder(); - }; - -//........................................................................ -} // namespace utl -//........................................................................ - -#endif // unotools_REGOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/regpathhelper.hxx b/unotools/inc/unotools/regpathhelper.hxx deleted file mode 100644 index 3e8501955a..0000000000 --- a/unotools/inc/unotools/regpathhelper.hxx +++ /dev/null @@ -1,73 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UNOTOOLS_REGPATHHELPER_HXX_ -#define _UNOTOOLS_REGPATHHELPER_HXX_ - -#include <rtl/ustring.hxx> - -namespace utl -{ - -/** - * This function returns a path to the user registry file. - * Search for the user registry using the following rules: - * <dl> - * <dt> 1. (for further use) search in sversion.ini (.sversionrc) for an entry - * REGISTRY_VERSION_STRING (example: UserRegistry 5.0/505=test.rdb) in the section - * [Registry]. If found, then take this value instead of the name "user.rdb". - * <dt> 2. Search in the config directory of the user for a file "user.rdb". If - * found return the full path and name of the file. If not found, retry this - * step with a dot before ".user.rdb". - * <dt> 3. If not found a new user registry with name "user.rdb" will be created in the user - * config directory. - * </dl> - *<BR> - * @author Juergen Schmidt - */ -::rtl::OUString getPathToUserRegistry(); - -/** - * This function returns a path to the system registry file. - * The system registry will always be searched in the same directory of the - * executable. The name of the system registry is "applicat.rdb". If the system - * registry was not found, then the environment variable STAR_REGISTRY will be checked. - * If this variable was set, it must contain a full path to a valid system registry. - * Search for the user registry using the following rules: - * - *<BR> - * @author Juergen Schmidt - */ - -::rtl::OUString getPathToSystemRegistry(); - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/saveopt.hxx b/unotools/inc/unotools/saveopt.hxx deleted file mode 100644 index 3799e2327e..0000000000 --- a/unotools/inc/unotools/saveopt.hxx +++ /dev/null @@ -1,136 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_SAVEOPT_HXX -#define INCLUDED_unotools_SAVEOPT_HXX - -#include "unotools/unotoolsdllapi.h" -#include <unotools/options.hxx> - -struct SvtLoadSaveOptions_Impl; -class UNOTOOLS_DLLPUBLIC SvtSaveOptions: public utl::detail::Options -{ - SvtLoadSaveOptions_Impl* pImp; - -public: - - enum EOption - { - E_AUTOSAVETIME, - E_USEUSERDATA, - E_BACKUP, - E_AUTOSAVE, - E_AUTOSAVEPROMPT, - E_DOCINFSAVE, - E_SAVEWORKINGSET, - E_SAVEDOCVIEW, - E_SAVERELINET, - E_SAVERELFSYS, - E_SAVEUNPACKED, - E_DOPRETTYPRINTING, - E_WARNALIENFORMAT, - E_LOADDOCPRINTER, - E_ODFDEFAULTVERSION, - E_USESHA1INODF12, - E_USEBLOWFISHINODF12 - }; - - // keep enum values sorted that a less or greater compare maps to older and newer versions! - enum ODFDefaultVersion - { - ODFVER_UNKNOWN = 0, // unknown - ODFVER_010 = 1, // ODF 1.0 - ODFVER_011 = 2, // ODF 1.1 - DO_NOT_USE = 3, // Do not use this, only here for compatibility with pre OOo 3.2 configuration - ODFVER_012 = 4, // ODF 1.2 - - ODFVER_LATEST = SAL_MAX_ENUM, // ODF latest version with enhancements - }; - - SvtSaveOptions(); - virtual ~SvtSaveOptions(); - - void SetAutoSaveTime( sal_Int32 n ); - sal_Int32 GetAutoSaveTime() const; - - void SetUseUserData( sal_Bool b ); - sal_Bool IsUseUserData() const; - - void SetBackup( sal_Bool b ); - sal_Bool IsBackup() const; - - void SetAutoSave( sal_Bool b ); - sal_Bool IsAutoSave() const; - - void SetAutoSavePrompt( sal_Bool b ); - sal_Bool IsAutoSavePrompt() const; - - void SetDocInfoSave(sal_Bool b); - sal_Bool IsDocInfoSave() const; - - void SetSaveWorkingSet( sal_Bool b ); - sal_Bool IsSaveWorkingSet() const; - - void SetSaveDocView( sal_Bool b ); - sal_Bool IsSaveDocView() const; - - void SetSaveRelINet( sal_Bool b ); - sal_Bool IsSaveRelINet() const; - - void SetSaveRelFSys( sal_Bool b ); - sal_Bool IsSaveRelFSys() const; - - void SetSaveUnpacked( sal_Bool b ); - sal_Bool IsSaveUnpacked() const; - - void SetLoadUserSettings(sal_Bool b); - sal_Bool IsLoadUserSettings() const; - - void SetPrettyPrinting( sal_Bool _bEnable ); - sal_Bool IsPrettyPrinting( ) const; - - void SetWarnAlienFormat( sal_Bool _bEnable ); - sal_Bool IsWarnAlienFormat( ) const; - - void SetLoadDocumentPrinter( sal_Bool _bEnable ); - sal_Bool IsLoadDocumentPrinter( ) const; - - void SetODFDefaultVersion( ODFDefaultVersion eVersion ); - ODFDefaultVersion GetODFDefaultVersion() const; - - void SetUseSHA1InODF12( sal_Bool bUse ); - sal_Bool IsUseSHA1InODF12() const; - - void SetUseBlowfishInODF12( sal_Bool bUse ); - sal_Bool IsUseBlowfishInODF12() const; - - sal_Bool IsReadOnly( EOption eOption ) const; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/searchopt.hxx b/unotools/inc/unotools/searchopt.hxx deleted file mode 100644 index a4427a63e5..0000000000 --- a/unotools/inc/unotools/searchopt.hxx +++ /dev/null @@ -1,121 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _SVT_SEARCHOPT_HXX_ -#define _SVT_SEARCHOPT_HXX_ - -#include "unotools/unotoolsdllapi.h" -#include "tools/solar.h" - -class SvtSearchOptions_Impl; - -class UNOTOOLS_DLLPUBLIC SvtSearchOptions -{ - SvtSearchOptions_Impl *pImpl; - - // disallow copy-constructor and assignment-operator for now - SvtSearchOptions( const SvtSearchOptions & ); - SvtSearchOptions & operator = ( const SvtSearchOptions & ); - -protected: - -public: - SvtSearchOptions(); - ~SvtSearchOptions(); - - sal_Int32 GetTransliterationFlags() const; - - // - // General Options - // - - sal_Bool IsWholeWordsOnly() const; - sal_Bool IsBackwards() const; - sal_Bool IsUseRegularExpression() const; - sal_Bool IsSearchForStyles() const; - sal_Bool IsSimilaritySearch() const; - sal_Bool IsUseAsianOptions() const; - sal_Bool IsMatchCase() const; // also Japanese search option - sal_Bool IsNotes() const; - - void SetWholeWordsOnly( sal_Bool bVal ); - void SetBackwards( sal_Bool bVal ); - void SetUseRegularExpression( sal_Bool bVal ); - void SetSearchForStyles( sal_Bool bVal ); - void SetSimilaritySearch( sal_Bool bVal ); - void SetUseAsianOptions( sal_Bool bVal ); - void SetMatchCase( sal_Bool bVal ); // also Japanese search option - void SetNotes( sal_Bool bVal); - - // - // Japanese search options - // - - sal_Bool IsMatchFullHalfWidthForms() const; - sal_Bool IsMatchHiraganaKatakana() const; - sal_Bool IsMatchContractions() const; - sal_Bool IsMatchMinusDashChoon() const; - sal_Bool IsMatchRepeatCharMarks() const; - sal_Bool IsMatchVariantFormKanji() const; - sal_Bool IsMatchOldKanaForms() const; - sal_Bool IsMatchDiziDuzu() const; - sal_Bool IsMatchBavaHafa() const; - sal_Bool IsMatchTsithichiDhizi() const; - sal_Bool IsMatchHyuiyuByuvyu() const; - sal_Bool IsMatchSesheZeje() const; - sal_Bool IsMatchIaiya() const; - sal_Bool IsMatchKiku() const; - sal_Bool IsIgnorePunctuation() const; - sal_Bool IsIgnoreWhitespace() const; - sal_Bool IsIgnoreProlongedSoundMark() const; - sal_Bool IsIgnoreMiddleDot() const; - - void SetMatchFullHalfWidthForms( sal_Bool bVal ); - void SetMatchHiraganaKatakana( sal_Bool bVal ); - void SetMatchContractions( sal_Bool bVal ); - void SetMatchMinusDashChoon( sal_Bool bVal ); - void SetMatchRepeatCharMarks( sal_Bool bVal ); - void SetMatchVariantFormKanji( sal_Bool bVal ); - void SetMatchOldKanaForms( sal_Bool bVal ); - void SetMatchDiziDuzu( sal_Bool bVal ); - void SetMatchBavaHafa( sal_Bool bVal ); - void SetMatchTsithichiDhizi( sal_Bool bVal ); - void SetMatchHyuiyuByuvyu( sal_Bool bVal ); - void SetMatchSesheZeje( sal_Bool bVal ); - void SetMatchIaiya( sal_Bool bVal ); - void SetMatchKiku( sal_Bool bVal ); - void SetIgnorePunctuation( sal_Bool bVal ); - void SetIgnoreWhitespace( sal_Bool bVal ); - void SetIgnoreProlongedSoundMark( sal_Bool bVal ); - void SetIgnoreMiddleDot( sal_Bool bVal ); -}; - - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/securityoptions.hxx b/unotools/inc/unotools/securityoptions.hxx deleted file mode 100644 index c1087925ad..0000000000 --- a/unotools/inc/unotools/securityoptions.hxx +++ /dev/null @@ -1,299 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_SECURITYOPTIONS_HXX -#define INCLUDED_unotools_SECURITYOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <com/sun/star/uno/Sequence.h> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtSecurityOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @descr These values present modes to handle StarOffice basic scripts. - see GetBasicMode/SetBasicMode() for further informations -*//*-*************************************************************************************************************/ - -enum EBasicSecurityMode -{ - eNEVER_EXECUTE = 0, - eFROM_LIST = 1, - eALWAYS_EXECUTE = 2 -}; - -/*-************************************************************************************************************//** - @short collect informations about security features - @descr - - - @implements - - @base - - - @ATTENTION This class is partially threadsafe. - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtSecurityOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public types - //------------------------------------------------------------------------------------------------------------- - public: - - enum EOption - { - E_SECUREURLS, - E_BASICMODE, // xmlsec05 depricated - E_EXECUTEPLUGINS, // xmlsec05 depricated - E_WARNING, // xmlsec05 depricated - E_CONFIRMATION, // xmlsec05 depricated - E_DOCWARN_SAVEORSEND, - E_DOCWARN_SIGNING, - E_DOCWARN_PRINT, - E_DOCWARN_CREATEPDF, - E_DOCWARN_REMOVEPERSONALINFO, - E_DOCWARN_RECOMMENDPASSWORD, - E_MACRO_SECLEVEL, - E_MACRO_TRUSTEDAUTHORS, - E_MACRO_DISABLE, - E_CTRLCLICK_HYPERLINK - }; - - enum MacroAction - { - MA_DONTRUN = 0, - MA_CONFIRM, - MA_RUN - }; - - typedef ::com::sun::star::uno::Sequence< ::rtl::OUString > Certificate; - - /* - // MT: Doesn't work for sequence... - struct Certificate - { - ::rtl::OUString SubjectName; - ::rtl::OUString SerialNumber; - ::rtl::OUString RawData; - }; - */ - - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtSecurityOptions(); - virtual ~SvtSecurityOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short returns readonly state - @descr It can be called to get information about the readonly state of a provided item. - @seealso - - - @param "eOption", specify, which item is queried - @return <TRUE/> if item is readonly; <FALSE/> otherwhise - - @onerror No error should occurre! - *//*-*****************************************************************************************************/ - - sal_Bool IsReadOnly( EOption eOption ) const ; - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/Security/Scripting/SecureURL" - @descr These value displays the list of all trustworthy URLs. - zB.: file:/ => All scripts from the local file system including a LAN; - private:explorer => Scripts from the Explorer; - private:help => Scripts in the help system; - private:newmenu => Scripts that are executed by the commands File-New and AutoPilot; - private:schedule => Scripts of the scheduler; - private:searchfolder => Scripts of the searchfolder; - private:user => Scripts that are entered in the URL field. - @seealso - - - @param "seqURLList", new values to set it in configuration. - @return The values which represent current state of internal variable. - - @onerror No error should occurre! - *//*-*****************************************************************************************************/ - - ::com::sun::star::uno::Sequence< ::rtl::OUString > GetSecureURLs( ) const ; - void SetSecureURLs( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& seqURLList ) ; - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/Security/Scripting/StarOfficeBasic" - @descr These value determines how StarOffice Basic scripts should be handled. - It exist 3 different modes: - 0 = never execute - 1 = from list - 2 = always execute - - @ATTENTION These methods don't check for valid or invalid values! - Our configuration server can do it ... but these implementation don't get any notifications - about wrong commits ...! - => If you set an invalid value - nothing will be changed. The information will lost. - - @seealso enum EBasicSecurityMode - - @param "eMode" to set new mode ... Value must defined as an enum of type EBasicSecurityMode! - @return An enum value, which present current mode. - - @onerror No error should occurre! - *//*-*****************************************************************************************************/ - - sal_Int32 GetMacroSecurityLevel ( ) const ; - void SetMacroSecurityLevel ( sal_Int32 _nLevel ) ; - - sal_Bool IsMacroDisabled ( ) const ; - - /*-****************************************************************************************************//** - @short special method to check an URL and his referer corresponding to ouer internal security cessation - @descr Give us an URL and his referer and we will say you if these url can be scripted or not! - - @seealso - - - @param "sURL" reference to URL for checking - @param "sReferer" reference to referer which whish to run script by given URL - @return sal_True if URL is secure or security is obsolete(!) or sal_False otherwise. - - @onerror No error should occurre! - *//*-*****************************************************************************************************/ - - sal_Bool IsSecureURL( const ::rtl::OUString& sURL , - const ::rtl::OUString& sReferer ) const ; - - ::com::sun::star::uno::Sequence< Certificate > GetTrustedAuthors ( ) const ; - void SetTrustedAuthors ( const ::com::sun::star::uno::Sequence< Certificate >& rAuthors ) ; - sal_Bool IsTrustedAuthorsEnabled ( ) ; - - // for bool options only! - bool IsOptionSet ( EOption eOption ) const ; - bool SetOption ( EOption eOption, bool bValue ) ; - bool IsOptionEnabled ( EOption eOption ) const ; - - // xmlsec05 depricated methods - sal_Bool IsExecutePlugins() const; - void SetExecutePlugins( sal_Bool bSet ); - EBasicSecurityMode GetBasicMode( ) const ; - void SetBasicMode( EBasicSecurityMode eMode ) ; - sal_Bool IsWarningEnabled() const; - void SetWarningEnabled( sal_Bool bSet ); - sal_Bool IsConfirmationEnabled() const; - void SetConfirmationEnabled( sal_Bool bSet ); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class is partially threadsafe (for de-/initialization only). - All access methods are'nt safe! - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetInitMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtSecurityOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtSecurityOptions - -#endif // #ifndef INCLUDED_unotools_SECURITYOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/sharedunocomponent.hxx b/unotools/inc/unotools/sharedunocomponent.hxx deleted file mode 100644 index fe4d9f8efe..0000000000 --- a/unotools/inc/unotools/sharedunocomponent.hxx +++ /dev/null @@ -1,373 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef UNOTOOLS_INC_SHAREDUNOCOMPONENT_HXX -#define UNOTOOLS_INC_SHAREDUNOCOMPONENT_HXX - -#include "unotoolsdllapi.h" - -#include <boost/shared_ptr.hpp> -#include <com/sun/star/uno/Reference.hxx> -#include <rtl/ref.hxx> - -namespace com { namespace sun { namespace star { - namespace lang { - class XComponent; - } -} } } -//............................................................................ -namespace utl -{ -//............................................................................ - - //======================================================================== - //= DisposableComponent - //======================================================================== - /** is a class which controls lifetime of an UNO component via ->XComponent::dispose - - You'll usually never use this class directly, but only as parameter for a - ->SharedUNOComponent class. - */ - class UNOTOOLS_DLLPUBLIC DisposableComponent - { - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > - m_xComponent; - - public: - /** constructs a ->DisposableComponent instance - - @param _rxComponent - the component whose life time should be controlled by the instance. Must not be <NULL/>. - */ - DisposableComponent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxComponent ); - - /** disposes the component represented by the instance - - The component is queried for ->XComponent(which <em>must</em> be supported), - and ->XComponent::dispose is invoked. A failure of this invocation (e.g. a thrown - exception) is silenced in release builds, and reported in debug builds. - */ - ~DisposableComponent(); - - private: - DisposableComponent(); // never implemented - DisposableComponent( const DisposableComponent& ); // never implemented - DisposableComponent& operator=( const DisposableComponent& ); // never implemented - }; - - //======================================================================== - //= CloseableComponent - //======================================================================== - class CloseableComponentImpl; - /** is a class which controls lifetime of an UNO component via ->XCloseable::close - - You'll usually never use this class directly, but only as parameter for a - ->SharedUNOComponent class. - */ - class UNOTOOLS_DLLPUBLIC CloseableComponent - { - private: - /** Our IMPL class. - */ - ::rtl::Reference< CloseableComponentImpl > m_pImpl; - - public: - /** constructs a ->CloseableComponent instance - - @param _rxComponent - the component whose life time should be controlled by the instance. Must not be <NULL/>. - */ - CloseableComponent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxComponent ); - - /** destroys resources associated with this instance, and disposes the component - - The component is queried for ->XCloseable (which <em>must</em> be supported), - and ->XCloseable::close is invoked, with delivering the ownership. - If the invocation fails with a ->CloseVetoException, this is ignored, since in - this case the vetoing instance took the ownership. - - Any other failure will be reported in a debug version via assertion mechanisms, - and silenced in release builds. - */ - ~CloseableComponent(); - - private: - CloseableComponent(); // never implemented - CloseableComponent( const CloseableComponent& ); // never implemented - CloseableComponent& operator=( const CloseableComponent& ); // never implemented - }; - - //======================================================================== - //= SharedUNOComponent - //======================================================================== - /** is a helper class for sharing ownership of a UNO component - - If you need to share an UNO component, which normally needs a dedicated owner, - and is lifetime controlled by an explicit disposal action (not necessarily ->XComponent::dispose, - but <em>any</em> explicit method call, after which the object is considered - to be disposed), between different classes, ->SharedUNOComponent is what you need. - - Instead of passing around a <code>Reference< XFoo ></code>, and bothering - with ownership and disposal, you just use a <code>SharedUNOComponent< XFoo ></code>. - This instance can be passed around, including copying, and in nearly all respects behaves - like the original <code>Reference< XFoo ></code>. However, when the last - ->SharedUNOComponent referencing a certain <code>Reference< XFoo ></code> dies, it - will automatically get rid of the object held by this reference. - - @param INTERFACE - the UNO interface type as which the component should be held - - @param COMPONENT_HOLDER - a class which can be used to represent and dispose a UNO component. - The class must support (maybe explicit only) construction from a - <code>Reference< INTERFACE ></code>, and destruction. Upon destruction, - the class must dispose (by any suitable means) the component instance it was - constructed with. - */ - template < class INTERFACE, class COMPONENT = DisposableComponent > - class SharedUNOComponent - { - private: - typedef COMPONENT Component; - typedef ::boost::shared_ptr< Component > ComponentPointer; - - private: - ComponentPointer m_pComponent; - ::com::sun::star::uno::Reference< INTERFACE > m_xTypedComponent; - - public: - enum AssignmentMode - { - TakeOwnership, - NoTakeOwnership - }; - - public: - inline SharedUNOComponent() - { - } - - explicit inline SharedUNOComponent( const ::com::sun::star::uno::Reference< INTERFACE >& _rxComponent, AssignmentMode eMode = TakeOwnership ) - { - reset( _rxComponent, eMode ); - } - -#ifndef EXCEPTIONS_OFF - inline SharedUNOComponent( const ::com::sun::star::uno::XInterface* _pInterface, ::com::sun::star::uno::UnoReference_QueryThrow _queryThrow ) - { - set( _pInterface, _queryThrow ); - } - - inline SharedUNOComponent( const ::com::sun::star::uno::BaseReference & _rRef, ::com::sun::star::uno::UnoReference_QueryThrow _queryThrow ) - { - set( _rRef, _queryThrow ); - } - - inline SharedUNOComponent( const ::com::sun::star::uno::Any& _rAny, ::com::sun::star::uno::UnoReference_QueryThrow _queryThrow ) - { - set( _rAny, _queryThrow ); - } - - inline SharedUNOComponent( const SharedUNOComponent& _rxComponent, ::com::sun::star::uno::UnoReference_SetThrow _setThrow ) - { - set( _rxComponent, _setThrow ); - } -#endif - -// SharedUNOComponent& operator=( const ::com::sun::star::uno::Reference< INTERFACE >& _rxComponent ); - // this operator is not implemented by intention. There is no canonic ownership after this operatoer - // would hvae been applied: Should the SharedUNOComponent have the ownership of the component, - // or shouldn't it? Hard to guess, and probably wrong in 50 percent of all cases, anyway. So, - // instead of tempting clients of this class to use such a dangerous operator, we do - // not offer it at all. If you need to assign a Reference< INTERFACE > to your SharedUNOComponent, - // use the ->reset method. - - /** assigns a new component, and releases the old one - */ - void reset( const ::com::sun::star::uno::Reference< INTERFACE >& _rxComponent, AssignmentMode _eMode = TakeOwnership ); - - inline bool set( ::com::sun::star::uno::XInterface* _pInterface, ::com::sun::star::uno::UnoReference_Query _query ); - inline bool set( const ::com::sun::star::uno::BaseReference& _rRef, ::com::sun::star::uno::UnoReference_Query _query ); - inline bool set( const ::com::sun::star::uno::Any& _rAny, ::com::sun::star::uno::UnoReference_Query _query ); - -#ifndef EXCEPTIONS_OFF - inline void set( const ::com::sun::star::uno::XInterface* _pInterface, ::com::sun::star::uno::UnoReference_QueryThrow _queryThrow ); - inline void set( const ::com::sun::star::uno::BaseReference & _rRef, ::com::sun::star::uno::UnoReference_QueryThrow _queryThrow ); - inline void set( const ::com::sun::star::uno::Any& _rAny, ::com::sun::star::uno::UnoReference_QueryThrow _queryThrow ); - - inline void set( const INTERFACE* _pInterface, ::com::sun::star::uno::UnoReference_SetThrow _setThrow ); - inline void set( const ::com::sun::star::uno::Reference< INTERFACE >& _rRef, ::com::sun::star::uno::UnoReference_SetThrow _setThrow ); - inline void set( const SharedUNOComponent& _rComp, ::com::sun::star::uno::UnoReference_SetThrow _setThrow ); -#endif - - INTERFACE* SAL_CALL operator->() const; - - inline operator const ::com::sun::star::uno::Reference< INTERFACE >&() const - { - return m_xTypedComponent; - } - - inline const ::com::sun::star::uno::Reference< INTERFACE >& getTyped() const - { - return m_xTypedComponent; - } - - inline bool is() const - { - return m_xTypedComponent.is(); - } - - inline void clear() - { - m_pComponent.reset(); - m_xTypedComponent.clear(); - } - }; - - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - INTERFACE* SAL_CALL SharedUNOComponent< INTERFACE, COMPONENT >::operator->() const - { - return m_xTypedComponent.operator->(); - } - - //------------------------------------------------------------------------- - // assignments - template < class INTERFACE, class COMPONENT > - void SharedUNOComponent< INTERFACE, COMPONENT >::reset( const ::com::sun::star::uno::Reference< INTERFACE >& _rxComponent, AssignmentMode _eMode ) - { - m_pComponent.reset( _eMode == TakeOwnership ? new COMPONENT( _rxComponent ) : NULL ); - m_xTypedComponent = _rxComponent; - } - - //------------------------------------------------------------------------- - // comparison operators - template < class INTERFACE, class COMPONENT > - bool operator==( const ::com::sun::star::uno::Reference< INTERFACE >& _rLHS, const SharedUNOComponent< INTERFACE, COMPONENT >& _rRHS ) - { - return _rLHS == _rRHS.getTyped(); - } - - template < class INTERFACE, class COMPONENT > - bool operator==( const SharedUNOComponent< INTERFACE, COMPONENT >& _rLHS, const ::com::sun::star::uno::Reference< INTERFACE >& _rRHS ) - { - return _rLHS.getTyped() == _rRHS; - } - - //------------------------------------------------------------------------- - // conversion to Any - template < class INTERFACE, class COMPONENT > - inline void SAL_CALL operator <<= ( ::com::sun::star::uno::Any & rAny, const SharedUNOComponent< INTERFACE, COMPONENT >& value ) SAL_THROW( () ) - { - rAny <<= value.getTyped(); - } - - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - inline ::com::sun::star::uno::Any SAL_CALL makeAny( const SharedUNOComponent< INTERFACE, COMPONENT >& value ) SAL_THROW( () ) - { - return makeAny( value.getTyped() ); - } - -#ifndef EXCEPTIONS_OFF - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - void SharedUNOComponent< INTERFACE, COMPONENT >::set( const ::com::sun::star::uno::XInterface* _pInterface, ::com::sun::star::uno::UnoReference_QueryThrow _queryThrow ) - { - reset( ::com::sun::star::uno::Reference< INTERFACE >( _pInterface, _queryThrow ), TakeOwnership ); - } - - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - void SharedUNOComponent< INTERFACE, COMPONENT >::set( const ::com::sun::star::uno::BaseReference & _rRef, ::com::sun::star::uno::UnoReference_QueryThrow _queryThrow ) - { - reset( ::com::sun::star::uno::Reference< INTERFACE >( _rRef, _queryThrow ), TakeOwnership ); - } - - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - void SharedUNOComponent< INTERFACE, COMPONENT >::set( const ::com::sun::star::uno::Any& _rAny, ::com::sun::star::uno::UnoReference_QueryThrow _queryThrow ) - { - reset( ::com::sun::star::uno::Reference< INTERFACE >( _rAny, _queryThrow ), TakeOwnership ); - } - - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - void SharedUNOComponent< INTERFACE, COMPONENT >::set( const INTERFACE* _pInterface, ::com::sun::star::uno::UnoReference_SetThrow _setThrow ) - { - reset( ::com::sun::star::uno::Reference< INTERFACE >( _pInterface, _setThrow ), TakeOwnership ); - } - - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - void SharedUNOComponent< INTERFACE, COMPONENT >::set( const ::com::sun::star::uno::Reference< INTERFACE >& _rRef, ::com::sun::star::uno::UnoReference_SetThrow _setThrow ) - { - reset( ::com::sun::star::uno::Reference< INTERFACE >( _rRef, _setThrow ), TakeOwnership ); - } - - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - void SharedUNOComponent< INTERFACE, COMPONENT >::set( const SharedUNOComponent& _rComp, ::com::sun::star::uno::UnoReference_SetThrow _setThrow ) - { - *this = _rComp; - // provoke an exception in case the component is NULL - m_xTypedComponent.set( m_xTypedComponent, _setThrow ); - } -#endif - - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - bool SharedUNOComponent< INTERFACE, COMPONENT >::set( ::com::sun::star::uno::XInterface* _pInterface, ::com::sun::star::uno::UnoReference_Query _query ) - { - reset( ::com::sun::star::uno::Reference< INTERFACE >( _pInterface, _query ) ); - return is(); - } - - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - bool SharedUNOComponent< INTERFACE, COMPONENT >::set( const ::com::sun::star::uno::BaseReference& _rRef, ::com::sun::star::uno::UnoReference_Query _query ) - { - reset( ::com::sun::star::uno::Reference< INTERFACE >( _rRef, _query ) ); - return is(); - } - - //------------------------------------------------------------------------- - template < class INTERFACE, class COMPONENT > - bool SharedUNOComponent< INTERFACE, COMPONENT >::set( const ::com::sun::star::uno::Any& _rAny, ::com::sun::star::uno::UnoReference_Query _query ) - { - reset( ::com::sun::star::uno::Reference< INTERFACE >( _rAny, _query ) ); - return is(); - } - -//............................................................................ -} // namespace utl -//............................................................................ - -#endif // UNOTOOLS_INC_SHAREDUNOCOMPONENT_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/sourceviewconfig.hxx b/unotools/inc/unotools/sourceviewconfig.hxx deleted file mode 100644 index 176dfe787b..0000000000 --- a/unotools/inc/unotools/sourceviewconfig.hxx +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _unotools_SOURCEVIEWCONFIG_HXX -#define _unotools_SOURCEVIEWCONFIG_HXX - -// include --------------------------------------------------------------- - -#include "unotools/unotoolsdllapi.h" -#include <osl/mutex.hxx> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -namespace utl -{ - class SourceViewConfig_Impl; - class UNOTOOLS_DLLPUBLIC SourceViewConfig: public utl::detail::Options - { - static SourceViewConfig_Impl* m_pImplConfig; - static sal_Int32 m_nRefCount; - - public: - SourceViewConfig(); - virtual ~SourceViewConfig(); - - const rtl::OUString& GetFontName() const; - void SetFontName(const rtl::OUString& rName); - - sal_Int16 GetFontHeight() const; - void SetFontHeight(sal_Int16 nHeight); - - sal_Bool IsShowProportionalFontsOnly() const; - void SetShowProportionalFontsOnly(sal_Bool bSet); - }; -} -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/startoptions.hxx b/unotools/inc/unotools/startoptions.hxx deleted file mode 100644 index b59689289e..0000000000 --- a/unotools/inc/unotools/startoptions.hxx +++ /dev/null @@ -1,173 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_STARTOPTIONS_HXX -#define INCLUDED_unotools_STARTOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtStartOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about startup features - @descr - - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtStartOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtStartOptions(); - virtual ~SvtStartOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/Start/..." - @descr These options describe internal states to enable/disable features of installed office. - The values are fixed at runtime - and implemented as readonly! - - IsIntroEnabled() : Setting, if the StarOffice Logo is displayed when starting StarOffice. - Default = true - - EnableIntro() : Use it to enable/disable the logo at startup. - - @seealso configuration package "org.openoffice.Office.Common/Start" - *//*-*****************************************************************************************************/ - - sal_Bool IsIntroEnabled ( ) const ; - void EnableIntro ( sal_Bool bState ) ; - - /*-****************************************************************************************************//** - @short returns or set the connection URL of an office - @descr Specifies the URL for an UNO connection. - No default is given, the URL has to be entered manually by the admin/user. - zB.: "socket,host=pc1.test.de,port=6001;iiop;" - - @seealso configuration package "org.openoffice.Office.Common/Start" - *//*-*****************************************************************************************************/ - - ::rtl::OUString GetConnectionURL( ) const ; - void SetConnectionURL( const ::rtl::OUString& sURL ) ; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class use his own static mutex to be threadsafe. - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtStartOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtStartOptions - -#endif // #ifndef INCLUDED_unotools_STARTOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/streamhelper.hxx b/unotools/inc/unotools/streamhelper.hxx deleted file mode 100644 index 613025bb9b..0000000000 --- a/unotools/inc/unotools/streamhelper.hxx +++ /dev/null @@ -1,118 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_STREAMHELPER_HXX_ -#define _UNOTOOLS_STREAMHELPER_HXX_ -#include <com/sun/star/io/XOutputStream.hpp> -#include <com/sun/star/io/XInputStream.hpp> -#include <com/sun/star/io/XSeekable.hpp> -#include <osl/mutex.hxx> -#include <cppuhelper/implbase1.hxx> -#include <cppuhelper/implbase2.hxx> -#include <tools/stream.hxx> - -namespace utl -{ - namespace stario = ::com::sun::star::io; - namespace staruno = ::com::sun::star::uno; - -/** - * The helper implementation for a using input streams based on SvLockBytes. - * - * @author Dirk Grobler - * @since 00/28/03 - */ - typedef ::cppu::WeakImplHelper2<stario::XInputStream, stario::XSeekable> InputStreamHelper_Base; - // needed for some compilers -class UNOTOOLS_DLLPUBLIC OInputStreamHelper : public InputStreamHelper_Base -{ - ::osl::Mutex m_aMutex; - SvLockBytesRef m_xLockBytes; - sal_uInt32 m_nActPos; - sal_Int32 m_nAvailable; // this is typically the chunk(buffer) size - -public: - OInputStreamHelper(const SvLockBytesRef& _xLockBytes, - sal_uInt32 _nAvailable, - sal_uInt32 _nPos = 0) - :m_xLockBytes(_xLockBytes) - ,m_nActPos(_nPos) - ,m_nAvailable(_nAvailable){} - -// staruno::XInterface - virtual void SAL_CALL acquire() throw (); - virtual void SAL_CALL release() throw (); - -// stario::XInputStream - virtual sal_Int32 SAL_CALL readBytes( staruno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead ) throw(stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException); - virtual sal_Int32 SAL_CALL readSomeBytes( staruno::Sequence< sal_Int8 >& aData, sal_Int32 nMaxBytesToRead ) throw(stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException); - virtual void SAL_CALL skipBytes( sal_Int32 nBytesToSkip ) throw(stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException); - virtual sal_Int32 SAL_CALL available( ) throw(stario::NotConnectedException, stario::IOException, staruno::RuntimeException); - virtual void SAL_CALL closeInput( ) throw (stario::NotConnectedException, stario::IOException, staruno::RuntimeException); - - virtual void SAL_CALL seek( sal_Int64 location ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual sal_Int64 SAL_CALL getPosition( ) throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual sal_Int64 SAL_CALL getLength( ) throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); -}; - -/** - * The helper implementation for a using output streams based on SvLockBytes. - * - * @author Dirk Grobler - * @since 00/28/03 - */ -typedef ::cppu::WeakImplHelper1<stario::XOutputStream> OutputStreamHelper_Base; - // needed for some compilers -class UNOTOOLS_DLLPUBLIC OOutputStreamHelper : public OutputStreamHelper_Base -{ - ::osl::Mutex m_aMutex; - SvLockBytesRef m_xLockBytes; - sal_uInt32 m_nActPos; - -public: - OOutputStreamHelper(const SvLockBytesRef& _xLockBytes, sal_uInt32 _nPos = 0) - :m_xLockBytes(_xLockBytes) - ,m_nActPos(_nPos){} - -// staruno::XInterface - virtual void SAL_CALL acquire() throw (); - virtual void SAL_CALL release() throw (); - -// stario::XOutputStream - virtual void SAL_CALL writeBytes( const staruno::Sequence< sal_Int8 >& aData ) throw(stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException); - virtual void SAL_CALL flush( ) throw(stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException); - virtual void SAL_CALL closeOutput( ) throw(stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException); -}; - -} // namespace utl - - -#endif // _UNOTOOLS_STREAM_WRAPPER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/streamsection.hxx b/unotools/inc/unotools/streamsection.hxx deleted file mode 100644 index 9545b4d7a5..0000000000 --- a/unotools/inc/unotools/streamsection.hxx +++ /dev/null @@ -1,87 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef _UNOTOOLS_STREAMSECTION_HXX_ -#define _UNOTOOLS_STREAMSECTION_HXX_ - -#include <com/sun/star/io/XMarkableStream.hpp> -#include <com/sun/star/io/XDataInputStream.hpp> -#include <com/sun/star/io/XDataOutputStream.hpp> - -namespace utl -{ - - namespace stario = ::com::sun::star::io; - namespace staruno = ::com::sun::star::uno; - -/** implements handling for compatibly reading/writing data from/into an input/output stream. - data written in a block secured by this class should be readable by older versions which - use the same mechanism. - - @author Frank Schoenheit - @since 00/26/05 -*/ - -class OStreamSection -{ - staruno::Reference< stario::XMarkableStream > m_xMarkStream; - staruno::Reference< stario::XDataInputStream > m_xInStream; - staruno::Reference< stario::XDataOutputStream > m_xOutStream; - - sal_Int32 m_nBlockStart; - sal_Int32 m_nBlockLen; - -public: - /** starts reading of a "skippable" section of data within the given input stream<BR> - @param _rxInput the stream to read from. Must support the - <type scope="com::sun::star::io">XMarkableStream</type> interface - */ - OStreamSection(const staruno::Reference< stario::XDataInputStream >& _rxInput); - - /** starts writing of a "skippable" section of data into the given output stream - @param _rxOutput the stream the stream to write to. Must support the - <type scope="com::sun::star::io">XMarkableStream</type> interface - @param _nPresumedLength estimation for the length of the upcoming section. If greater 0, this - value will be written as section length and corrected (in the dtor) only if - needed. If you know how much bytes you are about to write, you may - want to use this param, saving some stream operations this way. - */ - OStreamSection(const staruno::Reference< stario::XDataOutputStream >& _rxOutput, sal_Int32 _nPresumedLength = 0); - - /** dtor. <BR>If constructed for writing, the section "opened" by this object will be "closed".<BR> - If constructed for reading, any remaining bytes 'til the end of the section will be skipped. - */ - ~OStreamSection(); -}; - -} // namespace utl - -#endif // _UNOTOOLS_STREAMSECTION_HXX_ - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/streamwrap.hxx b/unotools/inc/unotools/streamwrap.hxx deleted file mode 100644 index 4b5350051a..0000000000 --- a/unotools/inc/unotools/streamwrap.hxx +++ /dev/null @@ -1,179 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UTL_STREAM_WRAPPER_HXX_ -#define _UTL_STREAM_WRAPPER_HXX_ -#include <osl/mutex.hxx> -#include <com/sun/star/io/XOutputStream.hpp> -#include <com/sun/star/io/XInputStream.hpp> -#include <com/sun/star/io/XSeekable.hpp> -#include <com/sun/star/io/XTruncate.hpp> -#include <com/sun/star/io/XStream.hpp> -#include <cppuhelper/implbase3.hxx> -#include <cppuhelper/implbase1.hxx> -#include <comphelper/uno3.hxx> - -class SvStream; - -namespace utl -{ - namespace stario = ::com::sun::star::io; - namespace staruno = ::com::sun::star::uno; - -//================================================================== -//= OInputStreamWrapper -//================================================================== -typedef ::cppu::WeakImplHelper1 < stario::XInputStream - > InputStreamWrapper_Base; -// needed for some compilers -/// helper class for wrapping an SvStream into an <type scope="com.sun.star.io">XInputStream</type> -class UNOTOOLS_DLLPUBLIC OInputStreamWrapper : public InputStreamWrapper_Base -{ -protected: - ::osl::Mutex m_aMutex; - SvStream* m_pSvStream; - sal_Bool m_bSvStreamOwner : 1; - OInputStreamWrapper() - { m_pSvStream = 0; m_bSvStreamOwner = sal_False; } - void SetStream(SvStream* _pStream, sal_Bool bOwner ) - { m_pSvStream = _pStream; m_bSvStreamOwner = bOwner; } - -public: - OInputStreamWrapper(SvStream& _rStream); - OInputStreamWrapper(SvStream* pStream, sal_Bool bOwner=sal_False); - virtual ~OInputStreamWrapper(); - -// stario::XInputStream - virtual sal_Int32 SAL_CALL readBytes(staruno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead) throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException); - virtual sal_Int32 SAL_CALL readSomeBytes(staruno::Sequence< sal_Int8 >& aData, sal_Int32 nMaxBytesToRead) throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException); - virtual void SAL_CALL skipBytes(sal_Int32 nBytesToSkip) throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException); - virtual sal_Int32 SAL_CALL available() throw(stario::NotConnectedException, staruno::RuntimeException); - virtual void SAL_CALL closeInput() throw(stario::NotConnectedException, staruno::RuntimeException); - -protected: - /// throws a NotConnectedException if the object is not connected anymore - void checkConnected() const; - /// throws an exception according to the error flag of m_pSvStream - void checkError() const; -}; - -//================================================================== -//= OSeekableInputStreamWrapper -//================================================================== -typedef ::cppu::ImplHelper1 < ::com::sun::star::io::XSeekable - > OSeekableInputStreamWrapper_Base; -/** helper class for wrapping an SvStream into an <type scope="com.sun.star.io">XInputStream</type> - which is seekable (i.e. supports the <type scope="com.sun.star.io">XSeekable</type> interface). -*/ -class UNOTOOLS_DLLPUBLIC OSeekableInputStreamWrapper : public ::cppu::ImplInheritanceHelper1 < OInputStreamWrapper, com::sun::star::io::XSeekable > -{ -protected: - OSeekableInputStreamWrapper() {} -public: - OSeekableInputStreamWrapper(SvStream& _rStream); - OSeekableInputStreamWrapper(SvStream* _pStream, sal_Bool _bOwner = sal_False); - - // XSeekable - virtual void SAL_CALL seek( sal_Int64 _nLocation ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual sal_Int64 SAL_CALL getPosition( ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual sal_Int64 SAL_CALL getLength( ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); -}; - -//================================================================== -//= OOutputStreamWrapper -//================================================================== -typedef ::cppu::WeakImplHelper1<stario::XOutputStream> OutputStreamWrapper_Base; - // needed for some compilers -class UNOTOOLS_DLLPUBLIC OOutputStreamWrapper : public OutputStreamWrapper_Base -{ -protected: - // TODO: thread safety! - SvStream& rStream; - -public: - OOutputStreamWrapper(SvStream& _rStream) :rStream(_rStream) { } - -// stario::XOutputStream - virtual void SAL_CALL writeBytes(const staruno::Sequence< sal_Int8 >& aData) throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException); - virtual void SAL_CALL flush() throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException); - virtual void SAL_CALL closeOutput() throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException); - -protected: - /// throws an exception according to the error flag of m_pSvStream - void checkError() const; -}; - -//================================================================== -//= OSeekableOutputStreamWrapper -//================================================================== -typedef ::cppu::ImplHelper1 < ::com::sun::star::io::XSeekable - > OSeekableOutputStreamWrapper_Base; -/** helper class for wrapping an SvStream into an <type scope="com.sun.star.io">XOutputStream</type> - which is seekable (i.e. supports the <type scope="com.sun.star.io">XSeekable</type> interface). -*/ -class UNOTOOLS_DLLPUBLIC OSeekableOutputStreamWrapper - :public OOutputStreamWrapper - ,public OSeekableOutputStreamWrapper_Base -{ -public: - OSeekableOutputStreamWrapper(SvStream& _rStream); - - // disambiguate XInterface - virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& _rType ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL acquire( ) throw (); - virtual void SAL_CALL release( ) throw (); - - // XSeekable - virtual void SAL_CALL seek( sal_Int64 _nLocation ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual sal_Int64 SAL_CALL getPosition( ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual sal_Int64 SAL_CALL getLength( ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); -}; - -class UNOTOOLS_DLLPUBLIC OStreamWrapper : public ::cppu::ImplInheritanceHelper3 < OSeekableInputStreamWrapper, com::sun::star::io::XStream, com::sun::star::io::XOutputStream, com::sun::star::io::XTruncate > -{ -public: - OStreamWrapper(SvStream& _rStream); - -// stario::XStream - virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getInputStream( ) throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > SAL_CALL getOutputStream( ) throw (::com::sun::star::uno::RuntimeException); - -// stario::XOutputStream - virtual void SAL_CALL writeBytes(const staruno::Sequence< sal_Int8 >& aData) throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException); - virtual void SAL_CALL flush() throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException); - virtual void SAL_CALL closeOutput() throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException); - virtual void SAL_CALL truncate() throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); -}; - -} -// namespace utl - -#endif // _UTL_STREAM_WRAPPER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/syslocale.hxx b/unotools/inc/unotools/syslocale.hxx deleted file mode 100644 index b622142ca9..0000000000 --- a/unotools/inc/unotools/syslocale.hxx +++ /dev/null @@ -1,91 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_UNOTOOLS_SYSLOCALE_HXX -#define INCLUDED_UNOTOOLS_SYSLOCALE_HXX - -#include "unotools/unotoolsdllapi.h" -#include <unotools/localedatawrapper.hxx> -#include <unotools/charclass.hxx> -#include <sal/types.h> -#include <i18npool/lang.h> -#include <rtl/textenc.h> - -class SvtSysLocale_Impl; -class SvtSysLocaleOptions; - -namespace osl { class Mutex; } -class LocaleDataWrapper; - -/** - SvtSysLocale provides a refcounted single instance of an application wide - <type>LocaleDataWrapper</type> and <type>CharClass</type> which always - follow the locale as it is currently configured by the user. You may use - it anywhere to access the locale data elements like decimal separator and - simple date formatting and so on. Contructing and destructing a - SvtSysLocale is not expensive as long as there is at least one instance - left. - */ -class UNOTOOLS_DLLPUBLIC SvtSysLocale -{ - friend class SvtSysLocale_Impl; // access to mutex - - static SvtSysLocale_Impl* pImpl; - static sal_Int32 nRefCount; - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetMutex(); - -public: - SvtSysLocale(); - ~SvtSysLocale(); - - const LocaleDataWrapper& GetLocaleData() const; - const CharClass& GetCharClass() const; - - /** It is safe to store the pointers locally and use them AS LONG AS THE - INSTANCE OF SvtSysLocale LIVES! - It is a faster access but be sure what you do! - */ - const LocaleDataWrapper* GetLocaleDataPtr() const; - const CharClass* GetCharClassPtr() const; - SvtSysLocaleOptions& GetOptions() const; - com::sun::star::lang::Locale GetLocale() const; - LanguageType GetLanguage() const; - com::sun::star::lang::Locale GetUILocale() const; - LanguageType GetUILanguage() const; - - /** Get the best MIME encoding matching the system locale, or if that isn't - determinable one that matches the UI locale, or UTF8 if everything else - fails. - */ - static rtl_TextEncoding GetBestMimeEncoding(); -}; - -#endif // INCLUDED_SVTOOLS_SYSLOCALE_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/syslocaleoptions.hxx b/unotools/inc/unotools/syslocaleoptions.hxx deleted file mode 100644 index c59e55b7df..0000000000 --- a/unotools/inc/unotools/syslocaleoptions.hxx +++ /dev/null @@ -1,171 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_SVTOOLS_SYSLOCALEOPTIONS_HXX -#define INCLUDED_SVTOOLS_SYSLOCALEOPTIONS_HXX - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <rtl/ustring.hxx> -#include <tools/solar.h> -#include <tools/link.hxx> -#include <i18npool/lang.h> -#include <tools/string.hxx> -#include <unotools/options.hxx> - -// bits for broadcasting hints of changes in a SfxSimpleHint, may be combined -const sal_uLong SYSLOCALEOPTIONS_HINT_LOCALE = 0x00000001; -const sal_uLong SYSLOCALEOPTIONS_HINT_CURRENCY = 0x00000002; -const sal_uLong SYSLOCALEOPTIONS_HINT_UILOCALE = 0x00000004; -const sal_uLong SYSLOCALEOPTIONS_HINT_DECSEP = 0x00000008; - -class SvtSysLocaleOptions_Impl; -class SvtListener; -namespace osl { class Mutex; } - -class UNOTOOLS_DLLPUBLIC SvtSysLocaleOptions: public utl::detail::Options -{ - static SvtSysLocaleOptions_Impl* pOptions; - static sal_Int32 nRefCount; - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetMutex(); - virtual void ConfigurationChanged( utl::ConfigurationBroadcaster* p, sal_uInt32 nHint ); - -public: - - enum EOption - { - E_LOCALE, - E_UILOCALE, - E_CURRENCY - }; - SvtSysLocaleOptions(); - virtual ~SvtSysLocaleOptions(); - - // ConfigItem methods - - sal_Bool IsModified(); - void Commit(); - - /** Add a listener to react on config changes - which are broadcasted in a SfxSimpleHint - @return - <TRUE/> if added - <FALSE/> if not added - */ - - /** Block broadcasts and accumulate hints. This may be useful if, for - example, the locale and currency are changed and the currency was - empty before, since changing the locale with an empty currency does - also broadcast a change hint for the currency which would result in - two currency changes broadcasted. - - @param bBlock - <TRUE/>: broadcasts are blocked until reversed. - <FALSE/>: broadcasts are not blocked anymore. Pending hints are - broadcasted if no other instance blocks the broadcast. - - @ATTENTION - All SvtSysLocaleOptions instances point to exactly one refcounted - internal representation instance and broadcast blocks are counted. - Thus if you issue a BlockBroadcasts(sal_True) you MUST issue a matching - BlockBroadcasts(sal_False) or otherwise pending hints would never be - broadcasted again. - */ - virtual void BlockBroadcasts( bool bBlock ); - - // config value access methods - - /// The config string may be empty to denote the SYSTEM locale - const ::rtl::OUString& GetLocaleConfigString() const; - void SetLocaleConfigString( const ::rtl::OUString& rStr ); - com::sun::star::lang::Locale GetLocale() const; - com::sun::star::lang::Locale GetRealLocale() const; - LanguageType GetRealLanguage() const; - - /// The config string may be empty to denote the SYSTEM locale - const ::rtl::OUString& GetUILocaleConfigString() const; - void SetUILocaleConfigString( const ::rtl::OUString& rStr ); - com::sun::star::lang::Locale GetUILocale() const; - com::sun::star::lang::Locale GetRealUILocale() const; - LanguageType GetRealUILanguage() const; - - /// The config string may be empty to denote the default currency of the locale - const ::rtl::OUString& GetCurrencyConfigString() const; - void SetCurrencyConfigString( const ::rtl::OUString& rStr ); - // determine whether the decimal separator defined in the keyboard layout is used - // or the one approriate to the locale - sal_Bool IsDecimalSeparatorAsLocale() const; - void SetDecimalSeparatorAsLocale( sal_Bool bSet); - - // convenience methods - - /// Get currency abbreviation and locale from an USD-en-US or EUR-de-DE string - static void GetCurrencyAbbrevAndLanguage( - String& rAbbrev, - LanguageType& eLang, - const ::rtl::OUString& rConfigString ); - - /// Create an USD-en-US or EUR-de-DE string - static ::rtl::OUString CreateCurrencyConfigString( - const String& rAbbrev, - LanguageType eLang ); - - void GetCurrencyAbbrevAndLanguage( - String& rAbbrev, - LanguageType& eLang ) const - { - GetCurrencyAbbrevAndLanguage( rAbbrev, - eLang, GetCurrencyConfigString() ); - } - - void SetCurrencyAbbrevAndLanguage( - const String& rAbbrev, - LanguageType eLang ) - { - SetCurrencyConfigString( - CreateCurrencyConfigString( - rAbbrev, eLang ) ); - } - - /** Set a link to a method to be called whenever the default currency - changes. This can be only one method, and normally it is the static - link method which calls SvNumberFormatter::SetDefaultSystemCurrency(). - This is needed because the number formatter isn't part of the svl light - library, otherwise we could call SetDefaultSystemCurrency() directly. - */ - static void SetCurrencyChangeLink( const Link& rLink ); - static const Link& GetCurrencyChangeLink(); - - /** return the readonly state of the queried option. */ - sal_Bool IsReadOnly( EOption eOption ) const; -}; - -#endif // INCLUDED_SVTOOLS_SYSLOCALEOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/tempfile.hxx b/unotools/inc/unotools/tempfile.hxx deleted file mode 100644 index 2580b6305e..0000000000 --- a/unotools/inc/unotools/tempfile.hxx +++ /dev/null @@ -1,163 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_TEMPFILE_HXX -#define _UNOTOOLS_TEMPFILE_HXX - -#include <tools/string.hxx> -#include <tools/stream.hxx> - -namespace utl -{ - -struct TempFile_Impl; - -/** - The class TempFile gives access to temporary files in the local file system. Sometimes they are needed because a 3rd party - code has a file name based interface, or some file access has to be done locally without transferring tons of bytes to or - from a remote system. - Creating a UCB content on a TempFile is only possible if a UCP for the local file system is present. - TempFiles can always be accessed by SvFileStreams or Sot/SvStorages using the "physical" file name ( not the URL, because - this may be a non-file URL, see below ), but if a UCB content can be created, it is also possible to take the URL and use - the UCB helper classes for streams. For convenience use UcbStreamHelper. - A Tempfile always has a "physical" file name ( a file name in the local computers host notation ) but it has a - "UCB compatible" URL only if a UCP for the local file system exists. This URL may have its own URL scheme - ( not neccessarily "file://" ! ). The TempFile class methods take this into account, but other simple conversions like - the osl functions do not. - So it is a potential error to convert between the filename and the URL of a TempFile object using functions or methods - outside this class. -*/ - -class UNOTOOLS_DLLPUBLIC TempFile -{ - TempFile_Impl* pImp; - sal_Bool bKillingFileEnabled; - -protected: - -public: - /** - Create a temporary file or directory, in the default tempfile folder or if possible in a given folder. - This given folder ( the "parent" parameter ( if not NULL ) ) must be a "UCB compatible" URL. - The temporary object is created in the local file system, even if there is no UCB that can access it. - If the given folder is part of the local file system, the TempFile is created in this folder. - */ - TempFile( const String* pParent=NULL, sal_Bool bDirectory=sal_False ); - - /** - Same as above; additionally the name starts with some given characters followed by a counter ( example: - rLeadingChars="abc" means "abc0","abc1" and so on, depending on existing files in the folder ). - The extension string may be f.e. ".txt" or "", if no extension string is given, ".tmp" is used - */ - TempFile( const String& rLeadingChars, const String* pExtension=NULL, const String* pParent=NULL, - sal_Bool bDirectory=sal_False); - - /** - Same as above; additionally the name starts with some given characters followed by a counter ( example: - rLeadingChars="abc" means "abc0","abc1" and so on, depending on existing files in the folder ). - The extension string may be f.e. ".txt" or "", if no extension string is given, ".tmp" is used - @param _bStartWithZero If set to false names will be generated like "abc","abc0","abc1" - */ - TempFile( const String& rLeadingChars,sal_Bool _bStartWithZero, const String* pExtension=NULL, const String* pParent=NULL,sal_Bool bDirectory=sal_False); - - /** - TempFile will be removed from disk in dtor if EnableKillingTempFile was called before. - Temporary directories will be removed recursively in that case. - */ - ~TempFile(); - - /** - Returns sal_True if it has a valid file name. - */ - sal_Bool IsValid() const; - - /** - Returns the "UCB compatible" URL of the tempfile object. - If you want to have the "physical" file name, use the GetFileName() method of this object, because these - method uses the UCB for the conversion, but never use any external conversion functions for URLs into - "physical" names. - If no UCP is available for the local file system, an empty URL is returned. In this case you can't access - the file as a UCB content ! - */ - String GetURL() const; - - /** - Returns the "physical" name of the tempfile in host notation ( should only be used for 3rd party code - with file name interfaces ). - If you want to have the URL, use the GetURL() method of this object, but never use any external - conversion functions for "physical" names into URLs. - */ - String GetFileName() const; - - /** - Returns a stream to the tempfiles data; the stream is owned by the tempfile object, so you have to keep this - alive as long as you want to use the stream. If the TempFile object is destroyed, it also destroys the - stream object, the underlying file is only deleted if EnableKillingFile( sal_True ) has been called before! - */ - SvStream* GetStream( StreamMode eMode ); - - /** - Let the TempFile object close and destroy the owned stream object if any. - */ - void CloseStream(); - - /** - If enabled the file will be removed from disk when the dtor is called ( default is not enabled ) - */ - void EnableKillingFile( sal_Bool bEnable=sal_True ) - { bKillingFileEnabled = bEnable; } - - sal_Bool IsKillingFileEnabled() const - { return bKillingFileEnabled; } - - /** - Only create a "physical" file name for a temporary file that would be valid at that moment. - Should only be used for 3rd party code with a file name interface that wants to create the file by itself. - If you want to convert file name into a URL, always use class LocalFileHelper, but never use any - conversion functions of osl. - */ - static String CreateTempName( const String* pParent=NULL ); - - /** - The TempNameBaseDirectory is a subfolder in the folder that is passed as a "physical" file name in the - SetTempNameBaseDirectory method. - This subfolder will be used if a TempFile or TempName is created without a parent name or a parent name - that does not belong to the local file system. - The caller of the SetTempNameBase is responsible for deleting this folder and all temporary files in it. - The return value of both methods is the complete "physical" name of the tempname base folder. - It is not a URL because alle URLs must be "UCB compatible", so there may be no suitable URL at all. - */ - static String SetTempNameBaseDirectory( const String &rBaseName ); -}; - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/textsearch.hxx b/unotools/inc/unotools/textsearch.hxx deleted file mode 100644 index 2ed2aebe10..0000000000 --- a/unotools/inc/unotools/textsearch.hxx +++ /dev/null @@ -1,189 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_TEXTSEARCH_HXX -#define _UNOTOOLS_TEXTSEARCH_HXX -#include <i18npool/lang.h> -#include <tools/string.hxx> -#include <com/sun/star/uno/Reference.h> -#include <com/sun/star/lang/Locale.hpp> -#include <com/sun/star/util/XTextSearch.hpp> -#include <com/sun/star/util/SearchOptions.hpp> - -// Forward-Deklaration -class CharClass; - -namespace com { - namespace sun { - namespace star { - namespace util { - struct SearchResult; - } - } - } -} - -// ............................................................................ -namespace utl -{ -// ............................................................................ - -// SS - Klasse fuers Suchen -class UNOTOOLS_DLLPUBLIC SearchParam -{ -public: - enum SearchType{ SRCH_NORMAL, SRCH_REGEXP, SRCH_LEVDIST }; - -private: - String sSrchStr; // the search string - String sReplaceStr; // the replace string - - SearchType eSrchType; // search normal/regular/LevDist - - int bWordOnly : 1; // used by normal search - int bSrchInSel : 1; // search only in the selection - int bCaseSense : 1; // - - // values for the "weight Levenshtein-Distance" - int bLEV_Relaxed : 1; - int nLEV_OtherX; - int nLEV_ShorterY; - int nLEV_LongerZ; - - // asian flags - used for the transliteration - long nTransliterationFlags; - -public: - SearchParam( const String &rText, - SearchType eSrchType = SearchParam::SRCH_NORMAL, - sal_Bool bCaseSens = sal_True, - sal_Bool bWrdOnly = sal_False, - sal_Bool bSrchInSel = sal_False ); - SearchParam( const SearchParam& ); - - const String& GetSrchStr() const { return sSrchStr; } - const String& GetReplaceStr() const { return sReplaceStr; } - SearchType GetSrchType() const { return eSrchType; } - - int IsCaseSensitive() const { return bCaseSense; } - int IsSrchInSelection() const { return bSrchInSel; } - int IsSrchWordOnly() const { return bWordOnly; } - - - void SetSrchStr( const String& rStr ) { sSrchStr = rStr; } - void SetReplaceStr( const String& rStr ) { sReplaceStr = rStr; } - void SetSrchType( SearchType eType ) { eSrchType = eType; } - - void SetCaseSensitive( int bFlag ) { bCaseSense = bFlag; } - void SetSrchInSelection( int bFlag ) { bSrchInSel = bFlag; } - void SetSrchWordOnly( int bFlag ) { bWordOnly = bFlag; } - - int IsSrchRelaxed() const { return bLEV_Relaxed; } - int GetLEVOther() const { return nLEV_OtherX; } - int GetLEVShorter() const { return nLEV_ShorterY; } - int GetLEVLonger() const { return nLEV_LongerZ; } - - void SetSrchRelaxed( int bFlag ) { bLEV_Relaxed = bFlag; } - void SetLEVOther( int nValue ) { nLEV_OtherX = nValue; } - void SetLEVShorter( int nValue ) { nLEV_ShorterY = nValue; } - void SetLEVLonger( int nValue ) { nLEV_LongerZ = nValue; } - - long GetTransliterationFlags() const { return nTransliterationFlags; } - void SetTransliterationFlags( long nValue ) { nTransliterationFlags = nValue; } -}; - -// Klasse zum Suchen eines Strings in einem String. -// Unterstuetzt werden folgende Verfahren: -// - normalen Text (Bayer/Moore) -// - regulaere Ausdruecke -// - gewichtete Levenshtein Distanz -// -// Es kann Vorwaerts und Rueckwaerts gesucht werden! - -class UNOTOOLS_DLLPUBLIC TextSearch -{ - static ::com::sun::star::uno::Reference< ::com::sun::star::util::XTextSearch > - getXTextSearch( const ::com::sun::star::util::SearchOptions& rPara ); - - com::sun::star::uno::Reference < com::sun::star::util::XTextSearch > - xTextSearch; - - void Init( const SearchParam & rParam, - const ::com::sun::star::lang::Locale& rLocale ); - -public: - // rText ist der zusuchende String - // this first two CTORs are deprecated! - TextSearch( const SearchParam & rPara, LanguageType nLanguage ); - TextSearch( const SearchParam & rPara, const CharClass& rCClass ); - - TextSearch( const ::com::sun::star::util::SearchOptions& rPara ); - ~TextSearch(); - - /* search in the (selected) text the search string: - rScrTxt - the text, in in which we search - pStart - start position for the search - pEnde - end position for the search - - RETURN values == sal_True: something is found - - pStart start pos of the found text, - - pStart end pos of the found text, - - pSrchResult - the search result with all found - positions. Is only filled with more positions - if the regular expression handles groups. - - == sal_False: nothing found, pStart,pEnde unchanged. - - Definitions: start pos always inclusive, end pos always exclusive! - The position must always in the right direction! - search forward: start <= end - search backward: end <= start - */ - int SearchFrwrd( const String &rStr, - xub_StrLen* pStart, xub_StrLen* pEnde, - ::com::sun::star::util::SearchResult* pSrchResult = 0 ); - int SearchBkwrd( const String &rStr, - xub_StrLen* pStart, xub_StrLen* pEnde, - ::com::sun::star::util::SearchResult* pSrchResult = 0 ); - - void SetLocale( const ::com::sun::star::util::SearchOptions& rOpt, - const ::com::sun::star::lang::Locale& rLocale ); - - /* replace back references in the replace string by the sub expressions from the search result */ - void ReplaceBackReferences( String& rReplaceStr, const String &rStr, const ::com::sun::star::util::SearchResult& rResult ); - -}; - -// ............................................................................ -} // namespace utl -// ............................................................................ - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/transliterationwrapper.hxx b/unotools/inc/unotools/transliterationwrapper.hxx deleted file mode 100644 index 350e037845..0000000000 --- a/unotools/inc/unotools/transliterationwrapper.hxx +++ /dev/null @@ -1,148 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_TRANSLITERATIONWRAPPER_HXX -#define _UNOTOOLS_TRANSLITERATIONWRAPPER_HXX -#include <tools/string.hxx> -#include <tools/solar.h> -#include <com/sun/star/i18n/XExtendedTransliteration.hpp> - -namespace com { namespace sun { namespace star { - namespace lang { - class XMultiServiceFactory; - } -}}} - -namespace utl -{ - -class UNOTOOLS_DLLPUBLIC TransliterationWrapper -{ - ::com::sun::star::uno::Reference< - ::com::sun::star::lang::XMultiServiceFactory > xSMgr; - ::com::sun::star::uno::Reference< - ::com::sun::star::i18n::XExtendedTransliteration > xTrans; - ::com::sun::star::lang::Locale aLocale; - sal_uInt32 nType; - sal_uInt16 nLanguage; - mutable sal_Bool bFirstCall; - - // not implemented, prevent usage - TransliterationWrapper( const TransliterationWrapper& ); - TransliterationWrapper& operator=( const TransliterationWrapper& ); - - void loadModuleImpl() const; - void setLanguageLocaleImpl( sal_uInt16 nLang ); - -public: - TransliterationWrapper( const ::com::sun::star::uno::Reference< - ::com::sun::star::lang::XMultiServiceFactory > & xSF, - sal_uInt32 nType ); - - ~TransliterationWrapper(); - - // get current Locale / Language - const ::com::sun::star::lang::Locale& getLocale() const { return aLocale;} - sal_uInt16 getLanguage() const { return nLanguage; } - - sal_uInt32 getType() const { return nType; } - - sal_Bool needLanguageForTheMode() const; - - /** set a new language and load the corresponding transliteration module if - needed for the mode set with nType in the ctor */ - void loadModuleIfNeeded( sal_uInt16 nLang ); - - /** Load the transliteration module specified by rModuleName, which has to - be the UNO service implementation name that is expanded to the full UNO - service implementation name, for example, "NumToCharKanjiShort_ja_JP" - expands to - "com.sun.star.i18n.Transliteration.NumToCharKanjiShort_ja_JP". - @ATTENTION! - This method ignores the mode type set with the constructor and - interferes with the loadModuleIfNeeded() method and the transliterate() - method that gets a LanguageType passed as parameter. Using one of - those may load a different module and overwrite this setting. Only the - transliterate() method that takes no LanguageType parameter may be used - for a specific module loaded with this method. */ - void loadModuleByImplName( const String& rModuleName, sal_uInt16 nLang ); - - /** This transliteration method corresponds with the loadModuleByImplName() - method. It relies on a module being loaded and does not try load one. - If for any reason the string can't be transliterated the original - string is returned. */ - String transliterate( const String& rStr, - xub_StrLen nStart, xub_StrLen nLen, - ::com::sun::star::uno::Sequence <sal_Int32>* pOffset ) const; - - // Wrapper implementations of class Transliteration - String transliterate( const String& rStr, sal_uInt16 nLanguage, - xub_StrLen nStart, xub_StrLen nLen, - ::com::sun::star::uno::Sequence <sal_Int32>* pOffset ); - - /** If two strings are equal per this transliteration. - Returns the number of matched code points in any case, even if strings - are not equal, for example: - equals( "a", 0, 1, nMatch1, "aaa", 0, 3, nMatch2 ) - returns false and nMatch:=1 and nMatch2:=1 - equals( "aab", 0, 3, nMatch1, "aaa", 0, 3, nMatch2 ) - returns false and nMatch:=2 and nMatch2:=2 - */ - sal_Bool equals( - const String& rStr1, sal_Int32 nPos1, sal_Int32 nCount1, sal_Int32& nMatch1, - const String& rStr2, sal_Int32 nPos2, sal_Int32 nCount2, sal_Int32& nMatch2 ) const; - - sal_Int32 compareSubstring( - const String& rStr1, sal_Int32 nOff1, sal_Int32 nLen1, - const String& rStr2, sal_Int32 nOff2, sal_Int32 nLen2 ) const; - - sal_Int32 compareString( const String& rStr1, const String& rStr2 ) const; - - - // helpers - - /** If two strings are really equal as per this translation, and not just - one string is matching the start of the other. Use this method instead - of compareString()==0 because it is much faster. - */ - sal_Bool isEqual( const String& rStr1, const String& rStr2 ) const; - - /** If string rStr1 matches the start of string rStr2, i.e. "a" in "aaa" - */ - sal_Bool isMatch( const String& rStr1, const String& rStr2 ) const; - -}; - -// ............................................................................ -} // namespace utl -// ............................................................................ - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/ucbhelper.hxx b/unotools/inc/unotools/ucbhelper.hxx deleted file mode 100644 index 6debb33ba6..0000000000 --- a/unotools/inc/unotools/ucbhelper.hxx +++ /dev/null @@ -1,91 +0,0 @@ -/* -*- 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 "unotools/unotoolsdllapi.h" - -#ifndef _UNOTOOLS_UCBHELPER_HXX -#define _UNOTOOLS_UCBHELPER_HXX - -// include --------------------------------------------------------------- -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/ucb/NameClash.hpp> -#include <com/sun/star/ucb/XContentProvider.hpp> - -#include <tools/string.hxx> - -namespace ucbhelper -{ - class Content; -} - -namespace utl -{ - class UNOTOOLS_DLLPUBLIC UCBContentHelper - { - private: - static sal_Bool Transfer_Impl( const String& rSource, const String& rDest, sal_Bool bMoveData, - sal_Int32 nNameClash ); - - public: - static sal_Bool IsDocument( const String& rContent ); - static sal_Bool IsFolder( const String& rContent ); - static sal_Bool GetTitle( const String& rContent, String& rTitle ); - static sal_Bool Kill( const String& rContent ); - - static ::com::sun::star::uno::Any GetProperty( const String& rURL, const ::rtl::OUString& rName ); - - static ::com::sun::star::uno::Sequence< ::rtl::OUString > - GetFolderContents( const String& rFolder, sal_Bool bFolder, sal_Bool bSorted = sal_False ); - static ::com::sun::star::uno::Sequence< ::rtl::OUString > GetResultSet( const String& rURL ); - - static sal_Bool CopyTo( const String& rSource, const String& rDest ); - static sal_Bool MoveTo( const String& rSource, const String& rDest, sal_Int32 nNameClash = com::sun::star::ucb::NameClash::ERROR ); - - static sal_Bool CanMakeFolder( const String& rFolder ); - static sal_Bool MakeFolder( const String& rFolder, sal_Bool bNewOnly = sal_False ); - static sal_Bool MakeFolder( ::ucbhelper::Content& rParent, - const String& rTitle, - ::ucbhelper::Content& rNewFolder, - sal_Bool bNewOnly = sal_False ); - static sal_Bool HasParentFolder( const String& rFolder ); - - static sal_uLong GetSize( const String& rContent ); - static sal_Bool IsYounger( const String& rIsYoung, const String& rIsOlder ); - - static sal_Bool Exists( const String& rContent ); - static sal_Bool FindInPath( const String& rPath, const String& rName, String& rFile, char cDelim = ';', sal_Bool bAllowWildCards = sal_True ); - static sal_Bool Find( const String& rFolder, const String& rName, String& rFile, sal_Bool bAllowWildCards = sal_False ); - static sal_Bool IsSubPath( const ::rtl::OUString& rPath, const ::rtl::OUString& rChildCandidate, const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentProvider >& xContentProvider = ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentProvider >() ); - static sal_Bool EqualURLs( const ::rtl::OUString& aFirstURL, const ::rtl::OUString& aSecondURL ); - }; -} - -#endif - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/ucblockbytes.hxx b/unotools/inc/unotools/ucblockbytes.hxx deleted file mode 100644 index c729f4a3aa..0000000000 --- a/unotools/inc/unotools/ucblockbytes.hxx +++ /dev/null @@ -1,225 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _UNTOOLS_UCBLOCKBYTES_HXX -#define _UNTOOLS_UCBLOCKBYTES_HXX - -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/ucb/XContent.hpp> -#include <com/sun/star/beans/PropertyValue.hpp> -#include "unotools/unotoolsdllapi.h" - -#include <osl/thread.hxx> -#include <osl/conditn.hxx> -#include <osl/mutex.hxx> -#include <tools/stream.hxx> -#include <tools/link.hxx> -#include <tools/errcode.hxx> -#include <tools/datetime.hxx> - -namespace com -{ - namespace sun - { - namespace star - { - namespace task - { - class XInteractionHandler; - } - namespace io - { - class XStream; - class XInputStream; - class XOutputStream; - class XSeekable; - } - namespace ucb - { - class XContent; - } - namespace beans - { - struct PropertyValue; - } - } - } -} - -namespace utl -{ -SV_DECL_REF( UcbLockBytes ) - -class UcbLockBytesHandler : public SvRefBase -{ - sal_Bool m_bActive; -public: - enum LoadHandlerItem - { - DATA_AVAILABLE, - DONE, - CANCEL - }; - - UcbLockBytesHandler() - : m_bActive( sal_True ) - {} - - virtual void Handle( LoadHandlerItem nWhich, UcbLockBytesRef xLockBytes ) = 0; - void Activate( sal_Bool bActivate = sal_True ) { m_bActive = bActivate; } - sal_Bool IsActive() const { return m_bActive; } -}; - -SV_DECL_IMPL_REF( UcbLockBytesHandler ) - -#define NS_UNO ::com::sun::star::uno -#define NS_IO ::com::sun::star::io -#define NS_UCB ::com::sun::star::ucb -#define NS_BEANS ::com::sun::star::beans -#define NS_TASK ::com::sun::star::task - -class UNOTOOLS_DLLPUBLIC UcbLockBytes : public virtual SvLockBytes -{ - osl::Condition m_aInitialized; - osl::Condition m_aTerminated; - osl::Mutex m_aMutex; - - String m_aContentType; - String m_aRealURL; - DateTime m_aExpireDate; - - NS_UNO::Reference < NS_IO::XInputStream > m_xInputStream; - NS_UNO::Reference < NS_IO::XOutputStream > m_xOutputStream; - NS_UNO::Reference < NS_IO::XSeekable > m_xSeekable; - void* m_pCommandThread; // is alive only for compatibility reasons - UcbLockBytesHandlerRef m_xHandler; - - sal_uInt32 m_nRead; - sal_uInt32 m_nSize; - ErrCode m_nError; - - sal_Bool m_bTerminated : 1; - sal_Bool m_bDontClose : 1; - sal_Bool m_bStreamValid : 1; - - DECL_LINK( DataAvailHdl, void * ); - - UcbLockBytes( UcbLockBytesHandler* pHandler=NULL ); -protected: - virtual ~UcbLockBytes (void); - -public: - // properties: Referer, PostMimeType - static UcbLockBytesRef CreateLockBytes( const NS_UNO::Reference < NS_UCB::XContent >& xContent, - const ::rtl::OUString& rReferer, - const ::rtl::OUString& rMediaType, - const NS_UNO::Reference < NS_IO::XInputStream >& xPostData, - const NS_UNO::Reference < NS_TASK::XInteractionHandler >& xInter, - UcbLockBytesHandler* pHandler=0 ); - - static UcbLockBytesRef CreateLockBytes( const NS_UNO::Reference < NS_UCB::XContent >& xContent, - const NS_UNO::Sequence < NS_BEANS::PropertyValue >& rProps, - StreamMode eMode, - const NS_UNO::Reference < NS_TASK::XInteractionHandler >& xInter, - UcbLockBytesHandler* pHandler=0 ); - - static UcbLockBytesRef CreateInputLockBytes( const NS_UNO::Reference < NS_IO::XInputStream >& xContent ); - static UcbLockBytesRef CreateLockBytes( const NS_UNO::Reference < NS_IO::XStream >& xContent ); - - // SvLockBytes - virtual void SetSynchronMode (sal_Bool bSynchron); - virtual ErrCode ReadAt ( sal_uLong nPos, void *pBuffer, sal_uLong nCount, sal_uLong *pRead) const; - virtual ErrCode WriteAt ( sal_uLong, const void*, sal_uLong, sal_uLong *pWritten); - virtual ErrCode Flush (void) const; - virtual ErrCode SetSize (sal_uLong); - virtual ErrCode Stat ( SvLockBytesStat *pStat, SvLockBytesStatFlag) const; - - void SetError( ErrCode nError ) - { m_nError = nError; } - - ErrCode GetError() const - { return m_nError; } - - void Cancel(); // is alive only for compatibility reasons - - // the following properties are available when and after the first DataAvailable callback has been executed - String GetContentType() const; - String GetRealURL() const; - DateTime GetExpireDate() const; - - // calling this method delegates the responsibility to call closeinput to the caller! - NS_UNO::Reference < NS_IO::XInputStream > getInputStream(); - NS_UNO::Reference < NS_IO::XStream > getStream(); - -#if _SOLAR__PRIVATE - sal_Bool setInputStream_Impl( const NS_UNO::Reference < NS_IO::XInputStream > &rxInputStream, - sal_Bool bSetXSeekable = sal_True ); - sal_Bool setStream_Impl( const NS_UNO::Reference < NS_IO::XStream > &rxStream ); - void terminate_Impl (void); - - NS_UNO::Reference < NS_IO::XInputStream > getInputStream_Impl() const - { - osl::MutexGuard aGuard( SAL_CONST_CAST(UcbLockBytes*, this)->m_aMutex ); - return m_xInputStream; - } - - NS_UNO::Reference < NS_IO::XOutputStream > getOutputStream_Impl() const - { - osl::MutexGuard aGuard( SAL_CONST_CAST(UcbLockBytes*, this)->m_aMutex ); - return m_xOutputStream; - } - - NS_UNO::Reference < NS_IO::XSeekable > getSeekable_Impl() const - { - osl::MutexGuard aGuard( SAL_CONST_CAST(UcbLockBytes*, this)->m_aMutex ); - return m_xSeekable; - } - - sal_Bool hasInputStream_Impl() const - { - osl::MutexGuard aGuard( SAL_CONST_CAST(UcbLockBytes*, this)->m_aMutex ); - return m_xInputStream.is(); - } - - void setDontClose_Impl() - { m_bDontClose = sal_True; } - - void SetContentType_Impl( const String& rType ) { m_aContentType = rType; } - void SetRealURL_Impl( const String& rURL ) { m_aRealURL = rURL; } - void SetExpireDate_Impl( const DateTime& rDateTime ) { m_aExpireDate = rDateTime; } - void SetStreamValid_Impl(); -#endif -}; - -SV_IMPL_REF( UcbLockBytes ); - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/ucbstreamhelper.hxx b/unotools/inc/unotools/ucbstreamhelper.hxx deleted file mode 100644 index cbd3ee9047..0000000000 --- a/unotools/inc/unotools/ucbstreamhelper.hxx +++ /dev/null @@ -1,86 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _UNTOOLS_UCBSTREAMHELPER_HXX -#define _UNTOOLS_UCBSTREAMHELPER_HXX - -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/io/XInputStream.hpp> -#include <com/sun/star/io/XStream.hpp> -#include "unotools/unotoolsdllapi.h" - -#include <tools/stream.hxx> - -namespace com -{ - namespace sun - { - namespace star - { - namespace task - { - class XInteractionHandler; - } - namespace io - { - class XStream; - class XInputStream; - } - } - } -} - -#define NS_UNO ::com::sun::star::uno -#define NS_IO ::com::sun::star::io -#define NS_TASK ::com::sun::star::task - -class String; -namespace utl -{ - class UcbLockBytesHandler; - - class UNOTOOLS_DLLPUBLIC UcbStreamHelper : public SvStream - { - public: - static SvStream* CreateStream( const String& rFileName, StreamMode eOpenMode, - UcbLockBytesHandler* pHandler=0, sal_Bool bForceSynchron=sal_True ); - static SvStream* CreateStream( const String& rFileName, StreamMode eOpenMode, - NS_UNO::Reference < NS_TASK::XInteractionHandler >, - UcbLockBytesHandler* pHandler=0, sal_Bool bForceSynchron=sal_True ); - static SvStream* CreateStream( const String& rFileName, StreamMode eOpenMode, - sal_Bool bFileExists, - UcbLockBytesHandler* pHandler=0, sal_Bool bForceSynchron=sal_True ); - static SvStream* CreateStream( NS_UNO::Reference < NS_IO::XInputStream > xStream ); - static SvStream* CreateStream( NS_UNO::Reference < NS_IO::XStream > xStream ); - static SvStream* CreateStream( NS_UNO::Reference < NS_IO::XInputStream > xStream, sal_Bool bCloseStream ); - static SvStream* CreateStream( NS_UNO::Reference < NS_IO::XStream > xStream, sal_Bool bCloseStream ); - }; -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/undoopt.hxx b/unotools/inc/unotools/undoopt.hxx deleted file mode 100644 index 2bb1fec9b7..0000000000 --- a/unotools/inc/unotools/undoopt.hxx +++ /dev/null @@ -1,51 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_UNDOOPT_HXX -#define INCLUDED_unotools_UNDOOPT_HXX - -#include "unotools/unotoolsdllapi.h" -#include <sal/types.h> -#include <unotools/options.hxx> - -class SvtUndoOptions_Impl; - -class UNOTOOLS_DLLPUBLIC SvtUndoOptions: public utl::detail::Options -{ - SvtUndoOptions_Impl* pImp; - -public: - SvtUndoOptions(); - virtual ~SvtUndoOptions(); - - void SetUndoCount( sal_Int32 n ); - sal_Int32 GetUndoCount() const; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/unotoolsdllapi.h b/unotools/inc/unotools/unotoolsdllapi.h deleted file mode 100644 index a2d5f90cc4..0000000000 --- a/unotools/inc/unotools/unotoolsdllapi.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_UNOTOOLSDLLAPI_H -#define INCLUDED_UNOTOOLSDLLAPI_H - -#include "sal/types.h" - -#if defined(UNOTOOLS_DLLIMPLEMENTATION) -#define UNOTOOLS_DLLPUBLIC SAL_DLLPUBLIC_EXPORT -#else -#define UNOTOOLS_DLLPUBLIC SAL_DLLPUBLIC_IMPORT -#endif -#define UNOTOOLS_DLLPRIVATE SAL_DLLPRIVATE - -#endif /* INCLUDED_UNOTOOLSDLLAPI_H */ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/useroptions.hxx b/unotools/inc/unotools/useroptions.hxx deleted file mode 100644 index 1001b13812..0000000000 --- a/unotools/inc/unotools/useroptions.hxx +++ /dev/null @@ -1,121 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_USEROPTIONS_HXX -#define INCLUDED_unotools_USEROPTIONS_HXX - -#include "unotools/unotoolsdllapi.h" -#include <unotools/configitem.hxx> -#include <tools/string.hxx> -#include <osl/mutex.hxx> -#include <unotools/options.hxx> - -// define ---------------------------------------------------------------- - -#define USER_OPT_CITY ((sal_uInt16)0) -#define USER_OPT_COMPANY ((sal_uInt16)1) -#define USER_OPT_COUNTRY ((sal_uInt16)2) -#define USER_OPT_EMAIL ((sal_uInt16)3) -#define USER_OPT_FAX ((sal_uInt16)4) -#define USER_OPT_FIRSTNAME ((sal_uInt16)5) -#define USER_OPT_LASTNAME ((sal_uInt16)6) -#define USER_OPT_POSITION ((sal_uInt16)7) -#define USER_OPT_STATE ((sal_uInt16)8) -#define USER_OPT_STREET ((sal_uInt16)9) -#define USER_OPT_TELEPHONEHOME ((sal_uInt16)10) -#define USER_OPT_TELEPHONEWORK ((sal_uInt16)11) -#define USER_OPT_TITLE ((sal_uInt16)12) -#define USER_OPT_ID ((sal_uInt16)13) -#define USER_OPT_ZIP ((sal_uInt16)14) -#define USER_OPT_FATHERSNAME ((sal_uInt16)15) -#define USER_OPT_APARTMENT ((sal_uInt16)16) - -// class SvtUserOptions -------------------------------------------------- - -class SvtUserOptions_Impl; - -class UNOTOOLS_DLLPUBLIC SvtUserOptions: public utl::detail::Options -{ -private: - SvtUserOptions_Impl* pImp; - -public: - SvtUserOptions(); - virtual ~SvtUserOptions(); - - static ::osl::Mutex& GetInitMutex(); - - // get the address 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; - - // 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( sal_uInt16 nToken ) const; - ::rtl::OUString GetToken(sal_uInt16 nToken) const; -}; - -#endif // #ifndef INCLUDED_unotools_USEROPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/useroptions_const.hxx b/unotools/inc/unotools/useroptions_const.hxx deleted file mode 100644 index cd395b692c..0000000000 --- a/unotools/inc/unotools/useroptions_const.hxx +++ /dev/null @@ -1,59 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDE_CONFIGITEMS_USEROPTIONS_CONST_HXX -#define INCLUDE_CONFIGITEMS_USEROPTIONS_CONST_HXX - -#include <rtl/ustring.hxx> - -namespace -{ - static const ::rtl::OUString s_sData(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.UserProfile/Data")); - static const ::rtl::OUString s_so(RTL_CONSTASCII_USTRINGPARAM("o")); // USER_OPT_COMPANY - static const ::rtl::OUString s_sgivenname(RTL_CONSTASCII_USTRINGPARAM("givenname")); // USER_OPT_FIRSTNAME - static const ::rtl::OUString s_ssn(RTL_CONSTASCII_USTRINGPARAM("sn")); // USER_OPT_LASTNAME - static const ::rtl::OUString s_sinitials(RTL_CONSTASCII_USTRINGPARAM("initials")); // USER_OPT_ID - static const ::rtl::OUString s_sstreet(RTL_CONSTASCII_USTRINGPARAM("street")); // USER_OPT_STREET - static const ::rtl::OUString s_sl(RTL_CONSTASCII_USTRINGPARAM("l")); // USER_OPT_CITY - static const ::rtl::OUString s_sst(RTL_CONSTASCII_USTRINGPARAM("st")); // USER_OPT_STATE - static const ::rtl::OUString s_spostalcode(RTL_CONSTASCII_USTRINGPARAM("postalcode")); // USER_OPT_ZIP - static const ::rtl::OUString s_sc(RTL_CONSTASCII_USTRINGPARAM("c")); // USER_OPT_COUNTRY - static const ::rtl::OUString s_stitle(RTL_CONSTASCII_USTRINGPARAM("title")); // USER_OPT_TITLE - static const ::rtl::OUString s_sposition(RTL_CONSTASCII_USTRINGPARAM("position")); // USER_OPT_POSITION - static const ::rtl::OUString s_shomephone(RTL_CONSTASCII_USTRINGPARAM("homephone")); // USER_OPT_TELEPHONEHOME - static const ::rtl::OUString s_stelephonenumber(RTL_CONSTASCII_USTRINGPARAM("telephonenumber")); // USER_OPT_TELEPHONEWORK - static const ::rtl::OUString s_sfacsimiletelephonenumber(RTL_CONSTASCII_USTRINGPARAM("facsimiletelephonenumber")); // USER_OPT_FAX - static const ::rtl::OUString s_smail(RTL_CONSTASCII_USTRINGPARAM("mail")); // USER_OPT_EMAIL - static const ::rtl::OUString s_scustomernumber(RTL_CONSTASCII_USTRINGPARAM("customernumber")); // USER_OPT_CUSTOMERNUMBER - static const ::rtl::OUString s_sfathersname(RTL_CONSTASCII_USTRINGPARAM("fathersname")); // USER_OPT_FATHERSNAME - static const ::rtl::OUString s_sapartment(RTL_CONSTASCII_USTRINGPARAM("apartment")); // USER_OPT_APARTMENT -} - -#endif // INCLUDE_CONFIGITEMS_USEROPTIONS_CONST_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/viewoptions.hxx b/unotools/inc/unotools/viewoptions.hxx deleted file mode 100644 index 07fefb2686..0000000000 --- a/unotools/inc/unotools/viewoptions.hxx +++ /dev/null @@ -1,356 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_VIEWOPTIONS_HXX -#define INCLUDED_unotools_VIEWOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include "unotools/unotoolsdllapi.h" -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/beans/NamedValue.hpp> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -class SvtViewOptionsBase_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @descr Use these enum values to specify right list in configuration in which your view data are saved. -*//*-*************************************************************************************************************/ - -enum EViewType -{ - E_DIALOG = 0, - E_TABDIALOG = 1, - E_TABPAGE = 2, - E_WINDOW = 3 -}; - -/*-************************************************************************************************************//** - @short collect informations about view features - @descr We support different basetypes of views like dialogs, tab-dialogs, tab-pages and normal windows. - You must specify your basetype by using right enum value and must give us a valid name for your - subkey in registry! We support some fix features for some bastypes and user data as string for all! - see also configuration package "org.openoffice.Office.Views/..." for further informations. - - template of configuration: - DialogType - /WindowState [string] - /UserData [set of any scalar types] - TabDialogType - /WindowState [string] - /UserData [set of any scalar types] - /PageID [int] - TabPageType - /WindowState [string] - /UserData [set of any scalar types] - WindowType - /WindowState [string] - /UserData [set of any scalar types] - /Visible [boolean] - - structure of configuration: - - org.openoffice.Office.Views [package] - /Dialogs [set] - /Dialog_FileOpen [DialogType] - /Dialog_ImportGraphics [DialogType] - ... - /Dialog_<YourName> [DialogType] - - /TabDialogs [set] - /TabDialog_001 [TabDialogType] - /TabDialog_Blubber [TabDialogType] - ... - /TabDialog_<YourName> [TabDialogType] - - /TabPages [set] - /TabPage_XXX [TabPageType] - /TabPage_Date [TabPageType] - ... - /TabPage_<YourName> [TabPageType] - - /Windows [set] - /Window_User [WindowType] - /Window_Options [WindowType] - ... - /Window_<YourName> [WindowType] - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class UNOTOOLS_DLLPUBLIC SvtViewOptions: public utl::detail::Options -{ - /* - #ifdef TF_OLDVIEW - public: - void GetPosition ( sal_Int32& nX , - sal_Int32& nY ) const; - void SetPosition ( sal_Int32 nX , - sal_Int32 nY ); - void GetSize ( sal_Int32& nWidth , - sal_Int32& nHeight ) const; - void SetSize ( sal_Int32 nWidth , - sal_Int32 nHeight ); - ::rtl::OUString GetUserData ( ) const; - void SetUserData ( const ::rtl::OUString& sData ); - static ::com::sun::star::uno::Sequence< ::rtl::OUString > SeperateUserData( const ::rtl::OUString& sData , - sal_Unicode cSeperator=';' ); - static ::rtl::OUString GenerateUserData( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& seqData , - sal_Unicode cSeperator=';' ); - ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > GetAnyData ( ) const; - void SetAnyData ( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lData ); - #endif - */ - - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will de-/initialize an instance with default values. - You must give us the basic type of your view and a name which specify right entry - in dynamical configuration list. If entry not exist, we create a new one! - - @seealso enum EViewType - - @param "eType" specify type of your view and is used to use right data container! - @param "sViewName" specify the name of your view and is the key name in data list too. - @return - - - @onerror An assertion is thrown in debug version. Otherwise we do nothing! - *//*-*****************************************************************************************************/ - - SvtViewOptions( EViewType eType , - const ::rtl::OUString& sViewName ); - virtual ~SvtViewOptions(); - - /*-****************************************************************************************************//** - @short support preload of these config item - @descr Sometimes we need preloading of these configuration data without real using of it. - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - static void AcquireOptions(); - static void ReleaseOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short use it to get information about existing entries in configuration - @descr The methods to set/get the position or size will create a new entry automaticly if - it not already exist and work with default values! - If this a problem for you - you MUST call these method before and - you must make up your own mind about that. - - @seealso - - - @onerror No error should occure. - *//*-*****************************************************************************************************/ - - sal_Bool Exists() const; - - /*-****************************************************************************************************//** - @short use it to delete an entry of dynamic view set - @descr You can use this method to delete anexisting node in configuration. - But if you call a Set- or Get- method again on this instance - the item is created again! If you do nothing after this call - your view will die relay in configuration ... - - @seealso method Exist() - - @return True if delete OK, False otherwise. - - @onerror We return sal_False. - *//*-*****************************************************************************************************/ - - sal_Bool Delete(); - - /*-****************************************************************************************************//** - @short use it to set/get the window state of your view - @descr These value describe position/size and some other states of a window. - Use it with right vcl methods directly. Normaly it's not neccessary to - parse given string! - - @seealso vcl methods - - @onerror - - *//*-*****************************************************************************************************/ - - ::rtl::OUString GetWindowState( ) const; - void SetWindowState( const ::rtl::OUString& sState ); - - /*-****************************************************************************************************//** - @short use it to set/get the page number which was the last active one - @descr It's only supported for: - tab-dialogs - If you call it for other ones you will get an assertion in debug version. - In a product version we do nothing! - - @seealso - - - @onerror An assertion is thrown in debug version. Otherwise we do nothing! - *//*-*****************************************************************************************************/ - - sal_Int32 GetPageID( ) const; - void SetPageID( sal_Int32 nID ); - - /*-****************************************************************************************************//** - @short use it to set/get the visual state of a window - @descr It's only supported for: - windows - If you call it for other ones you will get an assertion in debug version. - In a product version we do nothing! - - @seealso - - - @onerror An assertion is thrown in debug version. Otherwise we do nothing! - *//*-*****************************************************************************************************/ - - sal_Bool IsVisible ( ) const; - void SetVisible( sal_Bool bState ); - - /*-****************************************************************************************************//** - @short use it to set/get the extended user data (consisting of a set of named scalar values) - @descr It's supported for ALL types! - Every view can handle its own user defined data set. - - @seealso - - - @onerror In the non-product version, an assertion is made. In a product version, errors are silently ignored. - *//*-*****************************************************************************************************/ -/* -#ifdef TF_OLDVIEW - ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > GetUserData( sal_Bool bMakeItDifferent ) const; -#else -*/ - ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > GetUserData( ) const; -//#endif - void SetUserData( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& lData ); - - /*-****************************************************************************************************//** - @short use it to set/get ONE special user data item directly - @descr Normaly you can work on full user data list by using "Set/GetUserData()". - With this function you have an access on special list entries directly without any - - @seealso - - - @onerror In the non-product version, an assertion is made. In a product version, errors are silently ignored. - *//*-*****************************************************************************************************/ - - ::com::sun::star::uno::Any GetUserItem( const ::rtl::OUString& sName ) const; - void SetUserItem( const ::rtl::OUString& sName , - const ::com::sun::star::uno::Any& aValue ); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class is threadsafe. - We create a static mutex only for one time and use it to protect our refcount and container - member! - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /// specify which list of views in configuration is used! This can't be a static value!!! - /// ... because we need this value to work with right static data container. - EViewType m_eViewType ; - ::rtl::OUString m_sViewName ; - - /// - impl. data container as dynamic pointer for smaller memory requirements! - /// - internal ref count mechanism - - /*Attention - - Don't initialize these static member in these header! - a) Double defined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtViewOptionsBase_Impl* m_pDataContainer_Dialogs ; /// hold data for all dialogs - static sal_Int32 m_nRefCount_Dialogs ; - static SvtViewOptionsBase_Impl* m_pDataContainer_TabDialogs ; /// hold data for all tab-dialogs - static sal_Int32 m_nRefCount_TabDialogs ; - static SvtViewOptionsBase_Impl* m_pDataContainer_TabPages ; /// hold data for all tab-pages - static sal_Int32 m_nRefCount_TabPages ; - static SvtViewOptionsBase_Impl* m_pDataContainer_Windows ; /// hold data for all windows - static sal_Int32 m_nRefCount_Windows ; - -}; // class SvtViewOptions - -#endif // #ifndef INCLUDED_unotools_VIEWOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/workingsetoptions.hxx b/unotools/inc/unotools/workingsetoptions.hxx deleted file mode 100644 index 1a21e3706b..0000000000 --- a/unotools/inc/unotools/workingsetoptions.hxx +++ /dev/null @@ -1,159 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef INCLUDED_unotools_WORKINGSETOPTIONS_HXX -#define INCLUDED_unotools_WORKINGSETOPTIONS_HXX - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include <sal/types.h> -#include <osl/mutex.hxx> -#include <com/sun/star/uno/Sequence.h> -#include <rtl/ustring.hxx> -#include <unotools/options.hxx> - -//_________________________________________________________________________________________________________________ -// forward declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short forward declaration to our private date container implementation - @descr We use these class as internal member to support small memory requirements. - You can create the container if it is neccessary. The class which use these mechanism - is faster and smaller then a complete implementation! -*//*-*************************************************************************************************************/ - -class SvtWorkingSetOptions_Impl; - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short collect informations about security features - @descr - - - @implements - - @base - - - @devstatus ready to use -*//*-*************************************************************************************************************/ - -class SvtWorkingSetOptions: public utl::detail::Options -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. - We implement these class with a refcount mechanism! Every instance of this class increase it - at create and decrease it at delete time - but all instances use the same data container! - He is implemented as a static member ... - - @seealso member m_nRefCount - @seealso member m_pDataContainer - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - SvtWorkingSetOptions(); - virtual ~SvtWorkingSetOptions(); - - //--------------------------------------------------------------------------------------------------------- - // interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short interface methods to get and set value of config key "org.openoffice.Office.Common/Security/Scripting/SecureURL" - @descr These value defines the editing view for documents and windows, which have to be restored - when restarting StarOffice. The list gets filled, if Save/WorkingSet = true. - - @seealso - - - @param "seqWindowList", new values to set it in configuration. - @return The values which represent current state of internal variable. - - @onerror No error should occurre! - *//*-*****************************************************************************************************/ - - ::com::sun::star::uno::Sequence< ::rtl::OUString > GetWindowList( ) const ; - void SetWindowList( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& seqWindowList ) ; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class use his own static mutex to be threadsafe. - We create a static mutex only for one ime and use at different times. - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - *//*-*****************************************************************************************************/ - - static ::osl::Mutex& GetOwnStaticMutex(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - /*Attention - - Don't initialize these static member in these header! - a) Double dfined symbols will be detected ... - b) and unresolved externals exist at linking time. - Do it in your source only. - */ - - static SvtWorkingSetOptions_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! - static sal_Int32 m_nRefCount ; /// internal ref count mechanism - -}; // class SvtWorkingSetOptions - -#endif // #ifndef INCLUDED_unotools_WORKINGSETOPTIONS_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/inc/unotools/xmlaccelcfg.hxx b/unotools/inc/unotools/xmlaccelcfg.hxx deleted file mode 100644 index 3ee8006617..0000000000 --- a/unotools/inc/unotools/xmlaccelcfg.hxx +++ /dev/null @@ -1,110 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_unotools_XMLACCELCFG_HXX -#define INCLUDED_unotools_XMLACCELCFG_HXX - -#include <com/sun/star/xml/sax/XDocumentHandler.hpp> -#include <cppuhelper/weak.hxx> - -#include <unotools/accelcfg.hxx> - -class OReadAccelatorDocumentHandler : public ::com::sun::star::xml::sax::XDocumentHandler, - public ::cppu::OWeakObject -{ - public: - OReadAccelatorDocumentHandler( SvtAcceleratorItemList& aNewAcceleratorItemList ) : - m_nElementDepth( 0 ), - m_bAcceleratorMode( sal_False ), - m_bItemCloseExpected( sal_False ), - m_xLocator( 0 ), - m_aReadAcceleratorList( aNewAcceleratorItemList ) {} - virtual ~OReadAccelatorDocumentHandler() {} - - // XInterface - virtual void SAL_CALL acquire() throw() - { OWeakObject::acquire(); } - virtual void SAL_CALL release() throw() - { OWeakObject::release(); } - virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( - const ::com::sun::star::uno::Type & rType ) throw( ::com::sun::star::uno::RuntimeException ); - - // XDocumentHandler - virtual void SAL_CALL startDocument(void) - throw ( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL endDocument(void) - throw ( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL startElement( - const ::rtl::OUString& aName, - const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > &xAttribs ) - throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL endElement(const ::rtl::OUString& aName) throw - ( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL characters(const ::rtl::OUString& aChars) - throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL ignorableWhitespace(const ::rtl::OUString& aWhitespaces) - throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL processingInstruction( const ::rtl::OUString& aTarget, const ::rtl::OUString& aData ) - throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL setDocumentLocator( - const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator > &xLocator) - throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ); - - private: - ::rtl::OUString getErrorLineString(); - - int m_nElementDepth; - sal_Bool m_bAcceleratorMode; - sal_Bool m_bItemCloseExpected; - ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator > m_xLocator; - SvtAcceleratorItemList& m_aReadAcceleratorList; -}; - - -class OWriteAccelatorDocumentHandler -{ - public: - OWriteAccelatorDocumentHandler( - const SvtAcceleratorItemList& aWriteAcceleratorList, - ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > ); - virtual ~OWriteAccelatorDocumentHandler(); - - void WriteAcceleratorDocument() throw ( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ); - - private: - void WriteAcceleratorItem( const SvtAcceleratorConfigItem& aAcceleratorItem ) throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ); - - ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > m_xWriteDocumentHandler; - ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > m_xEmptyList; - ::rtl::OUString m_aAttributeType; - const SvtAcceleratorItemList& m_aWriteAcceleratorList; -}; - -#endif // INCLUDED_unotools_XMLACCELCFG_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/prj/build.lst b/unotools/prj/build.lst deleted file mode 100644 index 8e182910f2..0000000000 --- a/unotools/prj/build.lst +++ /dev/null @@ -1,3 +0,0 @@ -ut unotools : LIBXSLT:libxslt comphelper cppuhelper offapi tools ucbhelper NULL -ut unotools\prj nmake - all ut_prj NULL - diff --git a/unotools/prj/d.lst b/unotools/prj/d.lst deleted file mode 100644 index e69de29bb2..0000000000 --- a/unotools/prj/d.lst +++ /dev/null diff --git a/unotools/prj/makefile.mk b/unotools/prj/makefile.mk deleted file mode 100755 index e312a7ccab..0000000000 --- a/unotools/prj/makefile.mk +++ /dev/null @@ -1,40 +0,0 @@ -#************************************************************************* -# -# 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. -# -#************************************************************************* - -PRJ=.. -TARGET=prj - -.INCLUDE : settings.mk - -.IF "$(VERBOSE)"!="" -VERBOSEFLAG := -.ELSE -VERBOSEFLAG := -s -.ENDIF - -all: - cd $(PRJ) && $(GNUMAKE) $(VERBOSEFLAG) -r -j$(MAXPROCESS) $(gb_MAKETARGET) && $(GNUMAKE) $(VERBOSEFLAG) -r deliverlog diff --git a/unotools/qa/complex/tempfile/TempFileTest.java b/unotools/qa/complex/tempfile/TempFileTest.java deleted file mode 100644 index 581d7ae97b..0000000000 --- a/unotools/qa/complex/tempfile/TempFileTest.java +++ /dev/null @@ -1,31 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -package complex.tempfile; - -public interface TempFileTest { - boolean test(); -} diff --git a/unotools/qa/complex/tempfile/TempFileUnitTest.java b/unotools/qa/complex/tempfile/TempFileUnitTest.java deleted file mode 100644 index dfa51d21c3..0000000000 --- a/unotools/qa/complex/tempfile/TempFileUnitTest.java +++ /dev/null @@ -1,114 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -package complex.tempfile; - -// import complexlib.ComplexTestCase; -import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.ucb.XSimpleFileAccess; -import com.sun.star.uno.UnoRuntime; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.openoffice.test.OfficeConnection; -import static org.junit.Assert.*; - -/* Document. - */ - -public class TempFileUnitTest /* extends ComplexTestCase */ { - private XMultiServiceFactory m_xMSF = null; - private XSimpleFileAccess m_xSFA = null; - -// public String[] getTestMethodNames() { -// return new String[] { -// "ExecuteTest01", -// "ExecuteTest02"}; -// } -// -// public String getTestObjectName() { -// return "TempFileUnitTest"; -// } - - @Before public void before() { - m_xMSF = getMSF(); - if ( m_xMSF == null ) { - fail ( "Cannot create service factory!" ); - } - try - { - Object oSFA = m_xMSF.createInstance( "com.sun.star.ucb.SimpleFileAccess" ); - m_xSFA = UnoRuntime.queryInterface( XSimpleFileAccess.class, oSFA ); - } - catch ( Exception e ) - { - fail ( "Cannot get simple file access! Exception: " + e); - } - if ( m_xSFA == null ) { - fail ( "Cannot get simple file access!" ); - } - } - - @After public void after() { - m_xMSF = null; - m_xSFA = null; - } - - @Test public void ExecuteTest01() { - TempFileTest aTest = new Test01( m_xMSF, m_xSFA ); - assertTrue( "Test01 failed!", aTest.test() ); - } - - @Test public void ExecuteTest02() { - TempFileTest aTest = new Test02( m_xMSF, m_xSFA ); - assertTrue( "Test02 failed!", aTest.test() ); - } - - private XMultiServiceFactory getMSF() - { - final XMultiServiceFactory xMSF1 = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager()); - return xMSF1; - } - - // setup and close connections - @BeforeClass public static void setUpConnection() throws Exception { - System.out.println("setUpConnection()"); - connection.setUp(); - } - - @AfterClass public static void tearDownConnection() - throws InterruptedException, com.sun.star.uno.Exception - { - System.out.println("tearDownConnection()"); - connection.tearDown(); - } - - private static final OfficeConnection connection = new OfficeConnection(); -}; - diff --git a/unotools/qa/complex/tempfile/Test01.java b/unotools/qa/complex/tempfile/Test01.java deleted file mode 100644 index 1b0823ada5..0000000000 --- a/unotools/qa/complex/tempfile/Test01.java +++ /dev/null @@ -1,118 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -package complex.tempfile; - -// import complexlib.ComplexTestCase; - -import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.ucb.XSimpleFileAccess; -import com.sun.star.io.*; -import com.sun.star.uno.UnoRuntime; -import java.util.Random; - -import share.LogWriter; - -public class Test01 implements TempFileTest { - LogWriter m_aLogWriter; - XMultiServiceFactory m_xMSF = null; - XSimpleFileAccess m_xSFA = null; - TestHelper m_aTestHelper = null; - - public Test01(XMultiServiceFactory xMSF, XSimpleFileAccess xSFA) { - m_xMSF = xMSF; - m_xSFA = xSFA; - m_aTestHelper = new TestHelper( "Test01: "); - } - - public boolean test() { - XTempFile xTempFile = null; - XTruncate xTruncate = null; - String sFileURL = null; - String sFileName = null; - //create a temporary file. - try { - Object oTempFile = m_xMSF.createInstance( "com.sun.star.io.TempFile" ); - xTempFile = UnoRuntime.queryInterface(XTempFile.class, oTempFile); - m_aTestHelper.Message( "Tempfile created." ); - xTruncate = UnoRuntime.queryInterface(XTruncate.class, oTempFile); - } catch( Exception e ) { - m_aTestHelper.Error( "Cannot create TempFile. exception: " + e ); - return false; - } - - //retrieve the tempfile URL - if ( xTempFile == null ) { - m_aTestHelper.Error( "Cannot get XTempFile interface." ); - return false; - } - - try { - //compare the file name with the name in the URL. - sFileURL = m_aTestHelper.GetTempFileURL( xTempFile ); - sFileName = m_aTestHelper.GetTempFileName( xTempFile ); - m_aTestHelper.CompareFileNameAndURL( sFileName, sFileURL ); - - //write to the stream using the service. - byte pBytesIn[] = new byte[9]; - byte pBytesOut1[][] = new byte [1][9]; - byte pBytesOut2[][] = new byte [1][9]; - Random oRandom = new Random(); - oRandom.nextBytes( pBytesIn ); - m_aTestHelper.WriteBytesWithStream( pBytesIn, xTempFile ); - - //check the result by reading from the service. - xTempFile.seek(0); - m_aTestHelper.ReadBytesWithStream( pBytesOut1, pBytesIn.length + 1, xTempFile ); - for ( int i = 0; i < pBytesIn.length ; i++ ) { - if ( pBytesOut1[0][i] != pBytesIn[i] ) { - m_aTestHelper.Error( "Tempfile outputs false data!" ); - } - } - - //check the result by reading from the file directly. - m_aTestHelper.ReadDirectlyFromTempFile( pBytesOut2, pBytesIn.length + 1, m_xSFA, sFileURL ); - for ( int i = 0; i < pBytesIn.length; i++ ) { - if ( pBytesOut2[0][i] != pBytesIn[i] ) { - m_aTestHelper.Error( "Tempfile contains false data!" ); - } - } - - //close the object(by closing input and output), check that the file was removed. - xTempFile.setRemoveFile( false ); - m_aTestHelper.CloseTempFile( xTempFile ); - if( !m_aTestHelper.IfTempFileExists( m_xSFA, sFileURL ) ) { - m_aTestHelper.Error( "TempFile mistakenly removed. " ); - } else { - m_aTestHelper.KillTempFile( sFileURL, m_xSFA ); - } - } catch ( Exception e ) { - m_aTestHelper.Error( "Exception: " + e ); - return false; - } - return true; - } -} diff --git a/unotools/qa/complex/tempfile/Test02.java b/unotools/qa/complex/tempfile/Test02.java deleted file mode 100644 index 4b707ebbe6..0000000000 --- a/unotools/qa/complex/tempfile/Test02.java +++ /dev/null @@ -1,96 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -package complex.tempfile; - - -import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.ucb.XSimpleFileAccess; -import com.sun.star.io.*; - -import com.sun.star.uno.UnoRuntime; -import java.util.Random; - -public class Test02 implements TempFileTest { - - XMultiServiceFactory m_xMSF; - XSimpleFileAccess m_xSFA; - TestHelper m_aTestHelper; - - public Test02(XMultiServiceFactory xMSF, XSimpleFileAccess xSFA) { - m_xMSF = xMSF; - m_xSFA = xSFA; - m_aTestHelper = new TestHelper( "Test02: "); - } - - public boolean test() { - Object oTempFile = null; - XTempFile xTempFile = null; - XTruncate xTruncate = null; - String sFileURL = null; - String sFileName = null; - //create a temporary file. - try { - oTempFile = m_xMSF.createInstance( "com.sun.star.io.TempFile" ); - xTempFile = UnoRuntime.queryInterface(XTempFile.class, oTempFile); - m_aTestHelper.Message( "Tempfile created." ); - xTruncate = UnoRuntime.queryInterface(XTruncate.class, oTempFile); - } catch(Exception e) { - m_aTestHelper.Error( "Cannot create TempFile. exception: " + e ); - return false; - } - try { - //write something. - byte pBytesIn[] = new byte[9]; - byte pBytesOut[][] = new byte[1][9]; - Random oRandom = new Random(); - oRandom.nextBytes( pBytesIn ); - m_aTestHelper.WriteBytesWithStream( pBytesIn, xTempFile ); - - //get the URL. - sFileURL = m_aTestHelper.GetTempFileURL( xTempFile ); - - //let the service not to remove the URL. - m_aTestHelper.SetTempFileRemove( xTempFile, false ); - - //close the tempfile by closing input and output. - m_aTestHelper.CloseTempFile( xTempFile ); - - //check that the file is still available. - //xTempFile.seek(0); - m_aTestHelper.ReadDirectlyFromTempFile( pBytesOut, pBytesIn.length + 1, m_xSFA, sFileURL ); - for ( int i = 0; i < pBytesIn.length; i++ ) { - if ( pBytesOut[0][i] != pBytesIn[i] ) { - m_aTestHelper.Error( "Tempfile contains false data!" ); - } - } - } catch ( Exception e) { - m_aTestHelper.Error("Exception: " + e); - return false; - } - return true; - } -} diff --git a/unotools/qa/complex/tempfile/TestHelper.java b/unotools/qa/complex/tempfile/TestHelper.java deleted file mode 100644 index b0fb48d3be..0000000000 --- a/unotools/qa/complex/tempfile/TestHelper.java +++ /dev/null @@ -1,223 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -package complex.tempfile; - - - -import com.sun.star.io.*; - -import com.sun.star.uno.AnyConverter; -import com.sun.star.ucb.XSimpleFileAccess; - - -public class TestHelper { - - String m_sTestPrefix; - - public TestHelper( String sTestPrefix ) { - - m_sTestPrefix = sTestPrefix; - } - public void SetTempFileRemove( XTempFile xTempFile, boolean b ) { - try { - xTempFile.setRemoveFile( b ); - } catch( Exception e ) { - Error( "Cannot set TempFileRemove. exception: " + e ); - } - } - - public boolean GetTempFileRemove ( XTempFile xTempFile ) { - boolean b = false; - try { - b = xTempFile.getRemoveFile(); - } catch( Exception e) { - Error( "Cannot get TempFileRemove. exception: " + e ); - } - return b; - } - - public String GetTempFileURL ( XTempFile xTempFile ) { - String sTempFileURL = null; - try { - sTempFileURL = AnyConverter.toString( xTempFile.getUri() ); - } catch (Exception e) { - Error ( "Cannot get TempFileURL. exception: " + e ); - } - if ( sTempFileURL == null || sTempFileURL.equals("") ) { - Error ( "Temporary file not valid." ); - } - return sTempFileURL; - } - - public String GetTempFileName( XTempFile xTempFile ) { - String sTempFileName = null; - try { - sTempFileName = AnyConverter.toString( xTempFile.getResourceName() ); - } catch ( Exception e ) { - Error( "Cannot get TempFileName. exception: " + e ); - } - if ( sTempFileName == null || sTempFileName.equals("") ) { - Error( "Temporary file not valid." ); - } - return sTempFileName; - } - - public boolean CompareFileNameAndURL ( String sTempFileName, String sTempFileURL ) { - boolean bRet = false; - try { - bRet = sTempFileURL.endsWith( sTempFileName.replaceAll( "\\\\" , "/" ) ); - Message ( "Compare file name and URL: " + - ( bRet ? "OK." : "ERROR: FILE NAME AND URL DO NOT MATCH." ) ); - } - catch ( Exception e ) { - Error ( "exception: " + e); - } - return bRet; - } - - public void WriteBytesWithStream( byte [] pBytes, XTempFile xTempFile ) { - try { - XOutputStream xOutTemp = xTempFile.getOutputStream(); - if ( xOutTemp == null ) { - Error( "Cannot get output stream." ); - } else { - xOutTemp.writeBytes( pBytes ); - Message ( "Write to tempfile successfully." ); - } - } catch ( Exception e ) { - Error( "Cannot write to stream. exception: " + e ); - } - } - - public void ReadBytesWithStream( byte [][] pBytes, int nBytes, XTempFile xTempFile ) { - try { - XInputStream xInTemp = xTempFile.getInputStream(); - if ( xInTemp == null ) { - Error( "Cannot get input stream from tempfile." ); - } else { - xInTemp.readBytes( pBytes, nBytes ); - Message ( "Read from tempfile successfully." ); - } - } catch ( Exception e ) { - Error( "Cannot read from stream. exception: " + e ); - } - } - public void ReadDirectlyFromTempFile( byte [][] pBytes, int nBytes, XSimpleFileAccess xSFA, String sTempFileURL ) - { - try - { - if ( xSFA != null ) { - XInputStream xInTemp = xSFA.openFileRead( sTempFileURL ); - if ( xInTemp != null ) - { - xInTemp.readBytes( pBytes, nBytes ); - xInTemp.closeInput(); - Message ( "Read directly from tempfile successfully." ); - } else { - Error ( "Cannot creat input stream from URL." ); - } - } - } - catch ( Exception e) - { - Error( "Exception caught in TestHelper." + - "ReadDirectlyFromTempFile(). exception: " + e ); - } - } - - public void CloseTempFile( XTempFile xTempFile ) { - XOutputStream xOutTemp = null; - XInputStream xInTemp = null; - try { - xOutTemp = xTempFile.getOutputStream(); - if ( xOutTemp == null ) { - Error( "Cannot get output stream." ); - } - } catch ( Exception e ) { - Error( "Cannot get output stream. exception:" + e ); - } - try { - xOutTemp.closeOutput(); - } catch( Exception e ) { - Error( "Cannot close output stream. exception:" + e ); - } - try { - xInTemp = xTempFile.getInputStream(); - if ( xInTemp == null ) { - Error( "Cannot get input stream." ); - } - } catch ( Exception e ) { - Error( "Cannot get input stream. exception:" + e ); - } - try { - xInTemp.closeInput(); - Message ( "Tempfile closed successfully." ); - } catch( Exception e ) { - Error( "Cannot close input stream. exception:" + e ); - } - } - - public void KillTempFile ( String sTempFileURL, XSimpleFileAccess xSFA ) { - try { - if ( sTempFileURL != null ) { - if ( xSFA != null ) { - xSFA.kill( sTempFileURL ); - Message ( "Tempfile killed successfully." ); - } - } - } - catch ( Exception e ) { - Error ( "Exception caught in TestHelper." + - "KillTempFile(): " + e); - } - } - - public boolean IfTempFileExists( XSimpleFileAccess xSFA, String sTempFileURL ) { - boolean bRet = false; - try { - if ( sTempFileURL != null ) { - if ( xSFA != null ) { - bRet = xSFA.exists( sTempFileURL ); - Message ( "Tempfile " + ( bRet ? "still " : "no longer " ) + "exists." ); - } - } - } - catch( Exception e ) { - Error( "Exception caught in TestHelper." + - "IfTempFileExists(): " + e ); - } - return bRet; - } - - public void Error( String sError ) { - System.out.println( m_sTestPrefix + "Error: " + sError ); - } - - public void Message( String sMessage ) { - System.out.println( m_sTestPrefix + sMessage ); - } -} diff --git a/unotools/source/accessibility/accessiblerelationsethelper.cxx b/unotools/source/accessibility/accessiblerelationsethelper.cxx deleted file mode 100644 index 31436159a1..0000000000 --- a/unotools/source/accessibility/accessiblerelationsethelper.cxx +++ /dev/null @@ -1,273 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - - -#include "unotools/accessiblerelationsethelper.hxx" -#include <vector> -#include <comphelper/sequence.hxx> -#include <comphelper/servicehelper.hxx> - -using namespace ::utl; -using namespace ::rtl; -using namespace ::com::sun::star; -using namespace ::com::sun::star::accessibility; - -class AccessibleRelationSetHelperImpl -{ -public: - AccessibleRelationSetHelperImpl(); - AccessibleRelationSetHelperImpl(const AccessibleRelationSetHelperImpl& rImpl); - ~AccessibleRelationSetHelperImpl(); - - sal_Int32 getRelationCount( ) - throw (uno::RuntimeException); - AccessibleRelation getRelation( sal_Int32 nIndex ) - throw (lang::IndexOutOfBoundsException, - uno::RuntimeException); - sal_Bool containsRelation( sal_Int16 aRelationType ) - throw (uno::RuntimeException); - AccessibleRelation getRelationByType( sal_Int16 aRelationType ) - throw (uno::RuntimeException); - void AddRelation(const AccessibleRelation& rRelation) - throw (uno::RuntimeException); - -private: - std::vector<AccessibleRelation> maRelations; -}; - -AccessibleRelationSetHelperImpl::AccessibleRelationSetHelperImpl() -{ -} - -AccessibleRelationSetHelperImpl::AccessibleRelationSetHelperImpl(const AccessibleRelationSetHelperImpl& rImpl) - : maRelations(rImpl.maRelations) -{ -} - -AccessibleRelationSetHelperImpl::~AccessibleRelationSetHelperImpl() -{ -} - -sal_Int32 AccessibleRelationSetHelperImpl::getRelationCount( ) - throw (uno::RuntimeException) -{ - return maRelations.size(); -} - -AccessibleRelation AccessibleRelationSetHelperImpl::getRelation( sal_Int32 nIndex ) - throw (lang::IndexOutOfBoundsException, - uno::RuntimeException) -{ - if ((nIndex < 0) || (static_cast<sal_uInt32>(nIndex) >= maRelations.size())) - throw lang::IndexOutOfBoundsException(); - return maRelations[nIndex]; -} - -sal_Bool AccessibleRelationSetHelperImpl::containsRelation( sal_Int16 aRelationType ) - throw (uno::RuntimeException) -{ - AccessibleRelation defaultRelation; // default is INVALID - AccessibleRelation relationByType = getRelationByType(aRelationType); - return relationByType.RelationType != defaultRelation.RelationType; -} - -AccessibleRelation AccessibleRelationSetHelperImpl::getRelationByType( sal_Int16 aRelationType ) - throw (uno::RuntimeException) -{ - sal_Int32 nCount(getRelationCount()); - sal_Int32 i(0); - sal_Bool bFound(sal_False); - while ((i < nCount) && !bFound) - { - if (maRelations[i].RelationType == aRelationType) - return maRelations[i]; - else - i++; - } - return AccessibleRelation(); -} - -void AccessibleRelationSetHelperImpl::AddRelation(const AccessibleRelation& rRelation) - throw (uno::RuntimeException) -{ - sal_Int32 nCount(getRelationCount()); - sal_Int32 i(0); - sal_Bool bFound(sal_False); - while ((i < nCount) && !bFound) - { - if (maRelations[i].RelationType == rRelation.RelationType) - bFound = sal_True; - else - i++; - } - if (bFound) - maRelations[i].TargetSet = comphelper::concatSequences(maRelations[i].TargetSet, rRelation.TargetSet); - else - maRelations.push_back(rRelation); -} - -//===== internal ============================================================ - -AccessibleRelationSetHelper::AccessibleRelationSetHelper () - : mpHelperImpl(NULL) -{ - mpHelperImpl = new AccessibleRelationSetHelperImpl(); -} - -AccessibleRelationSetHelper::AccessibleRelationSetHelper (const AccessibleRelationSetHelper& rHelper) - : cppu::WeakImplHelper1<XAccessibleRelationSet>() - , mpHelperImpl(NULL) -{ - if (rHelper.mpHelperImpl) - mpHelperImpl = new AccessibleRelationSetHelperImpl(*rHelper.mpHelperImpl); - else - mpHelperImpl = new AccessibleRelationSetHelperImpl(); -} - -AccessibleRelationSetHelper::~AccessibleRelationSetHelper(void) -{ - delete mpHelperImpl; -} - -//===== XAccessibleRelationSet ============================================== - - /** Returns the number of relations in this relation set. - - @return - Returns the number of relations or zero if there are none. - */ -sal_Int32 SAL_CALL - AccessibleRelationSetHelper::getRelationCount( ) - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - return mpHelperImpl->getRelationCount(); -} - - /** Returns the relation of this relation set that is specified by - the given index. - - @param nIndex - This index specifies the relatio to return. - - @return - For a valid index, i.e. inside the range 0 to the number of - relations minus one, the returned value is the requested - relation. If the index is invalid then the returned relation - has the type INVALID. - - */ - AccessibleRelation SAL_CALL - AccessibleRelationSetHelper::getRelation( sal_Int32 nIndex ) - throw (lang::IndexOutOfBoundsException, - uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - return mpHelperImpl->getRelation(nIndex); -} - - /** Tests whether the relation set contains a relation matching the - specified key. - - @param aRelationType - The type of relation to look for in this set of relations. This - has to be one of the constants of - <type>AccessibleRelationType</type>. - - @return - Returns <TRUE/> if there is a (at least one) relation of the - given type and <FALSE/> if there is no such relation in the set. - */ -sal_Bool SAL_CALL - AccessibleRelationSetHelper::containsRelation( sal_Int16 aRelationType ) - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - return mpHelperImpl->containsRelation(aRelationType); -} - - /** Retrieve and return the relation with the given relation type. - - @param aRelationType - The type of the relation to return. This has to be one of the - constants of <type>AccessibleRelationType</type>. - - @return - If a relation with the given type could be found than (a copy - of) this relation is returned. Otherwise a relation with the - type INVALID is returned. - */ -AccessibleRelation SAL_CALL - AccessibleRelationSetHelper::getRelationByType( sal_Int16 aRelationType ) - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - return mpHelperImpl->getRelationByType(aRelationType); -} - -void AccessibleRelationSetHelper::AddRelation(const AccessibleRelation& rRelation) - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - mpHelperImpl->AddRelation(rRelation); -} - -//===== XTypeProvider ======================================================= - -uno::Sequence< ::com::sun::star::uno::Type> - AccessibleRelationSetHelper::getTypes (void) - throw (::com::sun::star::uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - const ::com::sun::star::uno::Type aTypeList[] = { - ::getCppuType((const uno::Reference< - XAccessibleRelationSet>*)0), - ::getCppuType((const uno::Reference< - lang::XTypeProvider>*)0) - }; - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> - aTypeSequence (aTypeList, 2); - return aTypeSequence; -} - -namespace -{ - class theAccessibleRelationSetHelperUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theAccessibleRelationSetHelperUnoTunnelId > {}; -} - -uno::Sequence<sal_Int8> SAL_CALL - AccessibleRelationSetHelper::getImplementationId (void) - throw (::com::sun::star::uno::RuntimeException) -{ - return theAccessibleRelationSetHelperUnoTunnelId::get().getSeq(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/accessibility/accessiblestatesethelper.cxx b/unotools/source/accessibility/accessiblestatesethelper.cxx deleted file mode 100644 index 1eee61933a..0000000000 --- a/unotools/source/accessibility/accessiblestatesethelper.cxx +++ /dev/null @@ -1,325 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - - -#include "unotools/accessiblestatesethelper.hxx" -#include <tools/debug.hxx> -#include <comphelper/servicehelper.hxx> - -// defines how many states the bitfield can contain -// it has the size of 64 because I use a uInt64 -#define BITFIELDSIZE 64 - -using namespace ::utl; -using namespace ::rtl; -using namespace ::com::sun::star; -using namespace ::com::sun::star::accessibility; - -class AccessibleStateSetHelperImpl -{ -public: - AccessibleStateSetHelperImpl(); - AccessibleStateSetHelperImpl(const AccessibleStateSetHelperImpl& rImpl); - ~AccessibleStateSetHelperImpl(); - - sal_Bool IsEmpty () const - throw (uno::RuntimeException); - sal_Bool Contains (sal_Int16 aState) const - throw (uno::RuntimeException); - uno::Sequence<sal_Int16> GetStates() const - throw (uno::RuntimeException); - void AddState(sal_Int16 aState) - throw (uno::RuntimeException); - void RemoveState(sal_Int16 aState) - throw (uno::RuntimeException); - sal_Bool Compare(const AccessibleStateSetHelperImpl* pComparativeValue, - AccessibleStateSetHelperImpl* pOldStates, - AccessibleStateSetHelperImpl* pNewStates) const - throw (uno::RuntimeException); - - inline void AddStates( const sal_Int64 _nStates ) SAL_THROW( ( ) ); - -private: - sal_uInt64 maStates; -}; - -AccessibleStateSetHelperImpl::AccessibleStateSetHelperImpl() - : maStates(0) -{ -} - -AccessibleStateSetHelperImpl::AccessibleStateSetHelperImpl(const AccessibleStateSetHelperImpl& rImpl) - : maStates(rImpl.maStates) -{ -} - -AccessibleStateSetHelperImpl::~AccessibleStateSetHelperImpl() -{ -} - -inline sal_Bool AccessibleStateSetHelperImpl::IsEmpty () const - throw (uno::RuntimeException) -{ - return maStates == 0; -} - -inline sal_Bool AccessibleStateSetHelperImpl::Contains (sal_Int16 aState) const - throw (uno::RuntimeException) -{ - DBG_ASSERT(aState < BITFIELDSIZE, "the statesset is too small"); - sal_uInt64 aTempBitSet(1); - aTempBitSet <<= aState; - return ((aTempBitSet & maStates) != 0); -} - -inline uno::Sequence<sal_Int16> AccessibleStateSetHelperImpl::GetStates() const - throw (uno::RuntimeException) -{ - uno::Sequence<sal_Int16> aRet(BITFIELDSIZE); - sal_Int16* pSeq = aRet.getArray(); - sal_Int16 nStateCount(0); - for (sal_Int16 i = 0; i < BITFIELDSIZE; ++i) - if (Contains(i)) - { - *pSeq = i; - ++pSeq; - ++nStateCount; - } - aRet.realloc(nStateCount); - return aRet; -} - -inline void AccessibleStateSetHelperImpl::AddStates( const sal_Int64 _nStates ) SAL_THROW( ( ) ) -{ - maStates |= _nStates; -} - -inline void AccessibleStateSetHelperImpl::AddState(sal_Int16 aState) - throw (uno::RuntimeException) -{ - DBG_ASSERT(aState < BITFIELDSIZE, "the statesset is too small"); - sal_uInt64 aTempBitSet(1); - aTempBitSet <<= aState; - maStates |= aTempBitSet; -} - -inline void AccessibleStateSetHelperImpl::RemoveState(sal_Int16 aState) - throw (uno::RuntimeException) -{ - DBG_ASSERT(aState < BITFIELDSIZE, "the statesset is too small"); - sal_uInt64 aTempBitSet(1); - aTempBitSet <<= aState; - aTempBitSet = ~aTempBitSet; - maStates &= aTempBitSet; -} - -inline sal_Bool AccessibleStateSetHelperImpl::Compare( - const AccessibleStateSetHelperImpl* pComparativeValue, - AccessibleStateSetHelperImpl* pOldStates, - AccessibleStateSetHelperImpl* pNewStates) const - throw (uno::RuntimeException) -{ - sal_Bool bResult(sal_False); - if (pComparativeValue && pOldStates && pNewStates) - { - if (maStates == pComparativeValue->maStates) - bResult = sal_True; - else - { - sal_uInt64 aTempBitSet(maStates); - aTempBitSet ^= pComparativeValue->maStates; - pOldStates->maStates = aTempBitSet; - pOldStates->maStates &= maStates; - pNewStates->maStates = aTempBitSet; - pNewStates->maStates &= pComparativeValue->maStates; - } - } - return bResult; -} - - -//===== internal ============================================================ - -AccessibleStateSetHelper::AccessibleStateSetHelper () - : mpHelperImpl(NULL) -{ - mpHelperImpl = new AccessibleStateSetHelperImpl(); -} - -AccessibleStateSetHelper::AccessibleStateSetHelper ( const sal_Int64 _nInitialStates ) - : mpHelperImpl(NULL) -{ - mpHelperImpl = new AccessibleStateSetHelperImpl(); - mpHelperImpl->AddStates( _nInitialStates ); -} - -AccessibleStateSetHelper::AccessibleStateSetHelper (const AccessibleStateSetHelper& rHelper) - : cppu::WeakImplHelper1<XAccessibleStateSet>() - , mpHelperImpl(NULL) -{ - if (rHelper.mpHelperImpl) - mpHelperImpl = new AccessibleStateSetHelperImpl(*rHelper.mpHelperImpl); - else - mpHelperImpl = new AccessibleStateSetHelperImpl(); -} - -AccessibleStateSetHelper::~AccessibleStateSetHelper(void) -{ - delete mpHelperImpl; -} - -//===== XAccessibleStateSet ============================================== - - /** Checks whether the current state set is empty. - - @return - Returns <TRUE/> if there is no state in this state set and - <FALSE/> if there is at least one state set in it. - */ -sal_Bool SAL_CALL AccessibleStateSetHelper::isEmpty () - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - return mpHelperImpl->IsEmpty(); -} - - /** Checks if the given state is a member of the state set of this - object. - - @param aState - The state for which to check membership. This has to be one of - the constants of <type>AccessibleStateType</type>. - - @return - Returns <TRUE/> if the given state is a memeber of this object's - state set and <FALSE/> otherwise. - */ -sal_Bool SAL_CALL AccessibleStateSetHelper::contains (sal_Int16 aState) - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - return mpHelperImpl->Contains(aState); -} - - /** Checks if all of the given states are in this object's state - set. - - @param aStateSet - This sequence of states is interpreted as set and every of its - members, duplicates are ignored, is checked for membership in - this object's state set. Each state has to be one of the - constants of <type>AccessibleStateType</type>. - - @return - Returns <TRUE/> if all states of the given state set are members - of this object's state set. <FALSE/> is returned if at least - one of the states in the given state is not a member of this - object's state set. - */ -sal_Bool SAL_CALL AccessibleStateSetHelper::containsAll - (const uno::Sequence<sal_Int16>& rStateSet) - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - sal_Int32 nCount(rStateSet.getLength()); - const sal_Int16* pStates = rStateSet.getConstArray(); - sal_Int32 i = 0; - sal_Bool bFound(sal_True); - while (i < nCount) - { - bFound = mpHelperImpl->Contains(pStates[i]); - i++; - } - return bFound; -} - -uno::Sequence<sal_Int16> SAL_CALL AccessibleStateSetHelper::getStates() - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard(maMutex); - return mpHelperImpl->GetStates(); -} - -void AccessibleStateSetHelper::AddState(sal_Int16 aState) - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - mpHelperImpl->AddState(aState); -} - -void AccessibleStateSetHelper::RemoveState(sal_Int16 aState) - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - mpHelperImpl->RemoveState(aState); -} - -sal_Bool AccessibleStateSetHelper::Compare( - const AccessibleStateSetHelper& rComparativeValue, - AccessibleStateSetHelper& rOldStates, - AccessibleStateSetHelper& rNewStates) - throw (uno::RuntimeException) -{ - osl::MutexGuard aGuard (maMutex); - return mpHelperImpl->Compare(rComparativeValue.mpHelperImpl, - rOldStates.mpHelperImpl, rNewStates.mpHelperImpl); -} - -//===== XTypeProvider ======================================================= - -uno::Sequence< ::com::sun::star::uno::Type> - AccessibleStateSetHelper::getTypes (void) - throw (::com::sun::star::uno::RuntimeException) -{ - const ::com::sun::star::uno::Type aTypeList[] = { - ::getCppuType((const uno::Reference< - XAccessibleStateSet>*)0), - ::getCppuType((const uno::Reference< - lang::XTypeProvider>*)0) - }; - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> - aTypeSequence (aTypeList, 2); - return aTypeSequence; -} - -namespace -{ - class theAccessibleStateSetHelperUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theAccessibleStateSetHelperUnoTunnelId > {}; -} - -uno::Sequence<sal_Int8> SAL_CALL - AccessibleStateSetHelper::getImplementationId (void) - throw (::com::sun::star::uno::RuntimeException) -{ - return theAccessibleStateSetHelperUnoTunnelId::get().getSeq(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/accelcfg.cxx b/unotools/source/config/accelcfg.cxx deleted file mode 100644 index 95257031ca..0000000000 --- a/unotools/source/config/accelcfg.cxx +++ /dev/null @@ -1,267 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include "rtl/instance.hxx" -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/io/XActiveDataSource.hpp> -#include <com/sun/star/io/XInputStream.hpp> -#include <com/sun/star/io/XOutputStream.hpp> -#include <com/sun/star/xml/sax/XParser.hpp> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> - -#include <osl/mutex.hxx> -#include <tools/string.hxx> -#include <tools/urlobj.hxx> -#include <unotools/streamwrap.hxx> -#include <unotools/ucbstreamhelper.hxx> -#include <comphelper/processfactory.hxx> - -#include <unotools/accelcfg.hxx> -#include <unotools/xmlaccelcfg.hxx> -#include <unotools/pathoptions.hxx> -#include "itemholder1.hxx" - - -using namespace utl; -using namespace com::sun::star::uno; -using namespace com::sun::star::io; -using namespace com::sun::star::xml::sax; - -using ::rtl::OUString; - - -static SvtAcceleratorConfig_Impl* pOptions = NULL; -static sal_Int32 nRefCount = 0; - -class SvtAcceleratorConfig_Impl -{ -public: - - SvtAcceleratorItemList aList; - bool bModified; - - SvtAcceleratorConfig_Impl() - : bModified( sal_False ) - {} - - SvtAcceleratorConfig_Impl( Reference< XInputStream >& xInputStream ); - bool Commit( Reference< XOutputStream >& xOutputStream ); -}; - -// ----------------------------------------------------------------------- - -SvtAcceleratorConfig_Impl::SvtAcceleratorConfig_Impl( Reference< XInputStream >& rInputStream ) - : bModified( false ) -{ - Reference< XParser > xParser( ::comphelper::getProcessServiceFactory()->createInstance( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.xml.sax.Parser"))), - UNO_QUERY); - - // connect stream to input stream to the parser - InputSource aInputSource; - aInputSource.aInputStream = rInputStream; - - // get filter - Reference< XDocumentHandler > xFilter( new OReadAccelatorDocumentHandler( aList )); - - // connect parser and filter - xParser->setDocumentHandler( xFilter ); - xParser->parseStream( aInputSource ); -} - -bool SvtAcceleratorConfig_Impl::Commit( Reference< XOutputStream >& rOutputStream ) -{ - Reference< XDocumentHandler > xWriter; - - xWriter = Reference< XDocumentHandler >( ::comphelper::getProcessServiceFactory()->createInstance( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.xml.sax.Writer"))), UNO_QUERY) ; - - Reference< ::com::sun::star::io::XActiveDataSource> xDataSource( xWriter , UNO_QUERY ); - xDataSource->setOutputStream( rOutputStream ); - try - { - OWriteAccelatorDocumentHandler aWriteHandler( aList, xWriter ); - aWriteHandler.WriteAcceleratorDocument(); - rOutputStream->flush(); - return true; - } - catch ( RuntimeException& ) - { - } - catch ( SAXException& ) - { - } - catch ( ::com::sun::star::io::IOException& ) - { - } - - return false; -} - -namespace -{ - class LocalSingleton : public rtl::Static< osl::Mutex, LocalSingleton > - { - }; -} - -SvtAcceleratorConfiguration::SvtAcceleratorConfiguration() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( LocalSingleton::get() ); - if ( !pOptions ) - { - SvStream* pStream = GetDefaultStream( STREAM_STD_READ ); - ::utl::OInputStreamWrapper aHelper( *pStream ); - com::sun::star::uno::Reference < ::com::sun::star::io::XInputStream > xOut( &aHelper ); - - try - { - pOptions = new SvtAcceleratorConfig_Impl( xOut ); - } - catch ( RuntimeException& ) - { - pOptions = new SvtAcceleratorConfig_Impl(); - } - catch( SAXException& ) - { - pOptions = new SvtAcceleratorConfig_Impl(); - } - catch( ::com::sun::star::io::IOException& ) - { - pOptions = new SvtAcceleratorConfig_Impl(); - } - - if (pOptions) - ItemHolder1::holdConfigItem(E_ACCELCFG); - - delete pStream; - } - - ++nRefCount; - pImp = pOptions; -} - -// ----------------------------------------------------------------------- - -SvtAcceleratorConfiguration::~SvtAcceleratorConfiguration() -{ - if ( pImp == pOptions ) - { - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( LocalSingleton::get() ); - if ( !--nRefCount ) - { - if ( pImp->bModified ) - { - String aUserConfig = SvtPathOptions().GetUserConfigPath(); - INetURLObject aObj( aUserConfig ); - aObj.insertName( String::CreateFromAscii("GlobalKeyBindings.xml") ); - SvStream* pStream = ::utl::UcbStreamHelper::CreateStream( aObj.GetMainURL( INetURLObject::NO_DECODE ), STREAM_STD_READWRITE|STREAM_TRUNC ); - ::utl::OOutputStreamWrapper aHelper( *pStream ); - com::sun::star::uno::Reference < ::com::sun::star::io::XOutputStream > xOut( &aHelper ); - pImp->Commit( xOut ); - delete pStream; - } - - DELETEZ( pOptions ); - } - } - else - { - delete pImp; - } -} - -::rtl::OUString SvtAcceleratorConfiguration::GetCommand( const ::com::sun::star::awt::KeyEvent& rKeyEvent ) -{ - sal_Int16 nCode=rKeyEvent.KeyCode, nModifier=rKeyEvent.Modifiers; - if ( !nCode ) - nCode = rKeyEvent.KeyFunc; - - std::list< SvtAcceleratorConfigItem>::const_iterator p; - for ( p = pImp->aList.begin(); p != pImp->aList.end(); ++p ) - if ( p->nCode == nCode && p->nModifier == nModifier ) - return p->aCommand; - - return ::rtl::OUString(); -} - -const SvtAcceleratorItemList& SvtAcceleratorConfiguration::GetItems() -{ - return pImp->aList; -} - -void SvtAcceleratorConfiguration::SetCommand( const SvtAcceleratorConfigItem& rItem ) -{ - std::list< SvtAcceleratorConfigItem>::iterator p; - for ( p = pImp->aList.begin(); p != pImp->aList.end(); ++p ) - if ( p->nCode == rItem.nCode && p->nModifier == rItem.nModifier ) - { - p->aCommand = rItem.aCommand; - return; - } - - pImp->aList.push_back( rItem ); - -} - -void SvtAcceleratorConfiguration::SetItems( const SvtAcceleratorItemList& rItems, bool bClear ) -{ - if ( bClear ) - { - pImp->aList = rItems; - } - else - { - std::list< SvtAcceleratorConfigItem>::const_iterator p; - for ( p = rItems.begin(); p != rItems.end(); ++p ) - SetCommand( *p ); - } -} - -String SvtAcceleratorConfiguration::GetStreamName() -{ - return String::CreateFromAscii("KeyBindings.xml"); -} - -SvStream* SvtAcceleratorConfiguration::GetDefaultStream( StreamMode nMode ) -{ - String aUserConfig = SvtPathOptions().GetUserConfigPath(); - INetURLObject aObj( aUserConfig ); - aObj.insertName( GetStreamName() ); - return ::utl::UcbStreamHelper::CreateStream( aObj.GetMainURL( INetURLObject::NO_DECODE ), nMode ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/bootstrap.cxx b/unotools/source/config/bootstrap.cxx deleted file mode 100644 index c5f09d1c53..0000000000 --- a/unotools/source/config/bootstrap.cxx +++ /dev/null @@ -1,916 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <stdio.h> - -#include "unotools/bootstrap.hxx" - -// --------------------------------------------------------------------------------------- -#include <rtl/ustring.hxx> -#include <rtl/ustrbuf.hxx> -#include <osl/file.hxx> -#include <osl/mutex.hxx> -#include <osl/diagnose.h> -// --------------------------------------------------------------------------------------- -#include <rtl/bootstrap.hxx> -#include <rtl/instance.hxx> -#include <osl/process.h> // for osl_getExecutableFile -#include "tools/getprocessworkingdir.hxx" - -// --------------------------------------------------------------------------------------- -// #define this to a non-zero value, if remembering defaults is not supported properly -#define RTL_BOOTSTRAP_DEFAULTS_BROKEN 1 - -// --------------------------------------------------------------------------------------- -#define BOOTSTRAP_DATA_NAME SAL_CONFIGFILE("bootstrap") - -#define BOOTSTRAP_ITEM_PRODUCT_KEY "ProductKey" -#define BOOTSTRAP_ITEM_PRODUCT_VERSION "OOOBaseVersion" -#define BOOTSTRAP_ITEM_PRODUCT_SOURCE "ProductSource" -#define BOOTSTRAP_ITEM_VERSIONFILE "Location" -#define BOOTSTRAP_ITEM_BUILDID "buildid" - -#define BOOTSTRAP_ITEM_BASEINSTALLATION "BaseInstallation" -#define BOOTSTRAP_ITEM_USERINSTALLATION "UserInstallation" - -#define BOOTSTRAP_ITEM_SHAREDIR "SharedDataDir" -#define BOOTSTRAP_ITEM_USERDIR "UserDataDir" - -#define BOOTSTRAP_DEFAULT_BASEINSTALL "$SYSBINDIR/.." - -#define BOOTSTRAP_DIRNAME_SHAREDIR "share" -#define BOOTSTRAP_DIRNAME_USERDIR "user" - -#define VERSIONFILE_SECTION "Versions" - -#define SETUP_DATA_NAME SAL_CONFIGFILE("setup") -#define SETUP_ITEM_ALLUSERS "ALLUSERS" -// --------------------------------------------------------------------------------------- -typedef char const * AsciiString; -// --------------------------------------------------------------------------------------- - -namespace utl -{ -// --------------------------------------------------------------------------------------- - using ::rtl::OUString; - using ::rtl::OUStringBuffer; - using ::rtl::OString; - -// --------------------------------------------------------------------------------------- -// Implementation class: Bootstrap::Impl -// --------------------------------------------------------------------------------------- - - namespace - { - rtl::OUString makeImplName() - { - rtl::OUString uri; - rtl::Bootstrap::get( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("BRAND_BASE_DIR")), - uri); - return uri + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/program/"BOOTSTRAP_DATA_NAME)); - } - } - - class Bootstrap::Impl - { - const OUString m_aImplName; - public: // struct to cache the result of a path lookup - struct PathData - { - OUString path; - PathStatus status; - - PathData() - : path() - , status(DATA_UNKNOWN) - {} - }; - public: // data members - // base install data - PathData aBaseInstall_; - - // user install data - PathData aUserInstall_; - - // INI files - PathData aBootstrapINI_; - PathData aVersionINI_; - - // overall status - Status status_; - - public: // construction and initialization - Impl() : m_aImplName(makeImplName()) - { - initialize(); - } - - void initialize(); - - // access helper - OUString getBootstrapValue(OUString const& _sName, OUString const& _sDefault) const; - sal_Bool getVersionValue(OUString const& _sName, OUString& _rValue, OUString const& _sDefault) const; - - OUString getImplName() const { return m_aImplName; } - - private: // implementation - bool initBaseInstallationData(rtl::Bootstrap& _rData); - bool initUserInstallationData(rtl::Bootstrap& _rData); - }; - - namespace - { - class theImpl : public rtl::Static<Bootstrap::Impl, theImpl> {}; - } - - const Bootstrap::Impl& Bootstrap::data() - { - return theImpl::get(); - } - - void Bootstrap::reloadData() - { - theImpl::get().initialize(); - } - -// --------------------------------------------------------------------------------------- -// helper -// --------------------------------------------------------------------------------------- - -typedef Bootstrap::PathStatus PathStatus; - -sal_Unicode const cURLSeparator = '/'; - -// --------------------------------------------------------------------------------------- -static -inline -OUString getURLSeparator() -{ - static OUString theSep(&cURLSeparator,1); - return theSep; -} - -// --------------------------------------------------------------------------------------- -// path status utility function -static -PathStatus implCheckStatusOfURL(OUString const& _sURL, osl::DirectoryItem& aDirItem) -{ - using namespace osl; - - PathStatus eStatus = Bootstrap::DATA_UNKNOWN; - - if (_sURL.getLength() != 0) - { - switch( DirectoryItem::get(_sURL, aDirItem) ) - { - case DirectoryItem::E_None: // Success - eStatus = Bootstrap::PATH_EXISTS; - break; - - case DirectoryItem::E_NOENT: // No such file or directory<br> - eStatus = Bootstrap::PATH_VALID; - break; - - case DirectoryItem::E_INVAL: // the format of the parameters was not valid<br> - case DirectoryItem::E_NAMETOOLONG: // File name too long<br> - case DirectoryItem::E_NOTDIR: // A component of the path prefix of path is not a directory<p> - eStatus = Bootstrap::DATA_INVALID; - break; - - // how to handle these ? - case DirectoryItem::E_LOOP: // Too many symbolic links encountered<br> - case DirectoryItem::E_ACCES: // permission denied<br> - // any other error - what to do ? - default: - eStatus = Bootstrap::DATA_UNKNOWN; - break; - } - } - else - eStatus = Bootstrap::DATA_MISSING; - - return eStatus; -} -// --------------------------------------------------------------------------------------- - -static -bool implNormalizeURL(OUString & _sURL, osl::DirectoryItem& aDirItem) -{ - using namespace osl; - - OSL_PRECOND(aDirItem.is(), "Opened DirItem required"); - - static const sal_uInt32 cosl_FileStatus_Mask = osl_FileStatus_Mask_FileURL; - - FileStatus aFileStatus(cosl_FileStatus_Mask); - - if (aDirItem.getFileStatus(aFileStatus) != DirectoryItem::E_None) - return false; - - OUString aNormalizedURL = aFileStatus.getFileURL(); - - if (aNormalizedURL.getLength() == 0) - return false; - - // #109863# sal/osl returns final slash for file URLs contradicting - // the URL/URI RFCs. - if ( aNormalizedURL.getStr()[aNormalizedURL.getLength()-1] != cURLSeparator ) - _sURL = aNormalizedURL; - else - _sURL = aNormalizedURL.copy( 0, aNormalizedURL.getLength()-1 ); - - return true; -} -// --------------------------------------------------------------------------------------- -static -bool implEnsureAbsolute(OUString & _rsURL) // also strips embedded dots !! -{ - using osl::File; - - OUString sBasePath; - OSL_VERIFY(tools::getProcessWorkingDir(sBasePath)); - - OUString sAbsolute; - if ( File::E_None == File::getAbsoluteFileURL(sBasePath, _rsURL, sAbsolute)) - { - _rsURL = sAbsolute; - return true; - } - else - { - OSL_FAIL("Could not get absolute file URL for URL"); - return false; - } -} -/* old code to strip embedded dots - static OUString const sDots(RTL_CONSTASCII_USTRINGPARAM("/..")); - - sal_Int32 nDotsIndex = _rsURL.indexOf(sDots); - while (nDotsIndex >= 0) - { - OSL_ASSERT(_rsURL.indexOf(sDots) == nDotsIndex); - - sal_Int32 nStripIndex = _rsURL.lastIndexOf(cURLSeparator,nDotsIndex); - if (nStripIndex < 0 || nStripIndex+1 == nDotsIndex) - { - OSL_TRACE("Invalid use of dots in bootstrap URL"); - return false; - } - _rsURL = _rsURL.copy(0,nStripIndex) + _rsURL.copy(nDotsIndex + sDots.getLength()); - - nDotsIndex = _rsURL.indexOf(sDots,nStripIndex); - } - return true; -} - -*/ -// --------------------------------------------------------------------------------------- - -static -bool implMakeAbsoluteURL(OUString & _rsPathOrURL) -{ - using namespace osl; - - bool bURL; - - OUString sOther; - // check if it already was normalized - if ( File::E_None == File::getSystemPathFromFileURL(_rsPathOrURL, sOther) ) - { - bURL = true; - } - - else if ( File::E_None == File::getFileURLFromSystemPath(_rsPathOrURL, sOther) ) - { - _rsPathOrURL = sOther; - bURL = true; - } - else - bURL = false; - - return bURL && implEnsureAbsolute(_rsPathOrURL); -} -// --------------------------------------------------------------------------------------- -#if OSL_DEBUG_LEVEL > 0 -static -PathStatus dbgCheckStatusOfURL(OUString const& _sURL) -{ - using namespace osl; - - DirectoryItem aDirItem; - - return implCheckStatusOfURL(_sURL,aDirItem); -} -// --------------------------------------------------------------------------------------- -#endif - -static -PathStatus checkStatusAndNormalizeURL(OUString & _sURL) -{ - using namespace osl; - - PathStatus eStatus = Bootstrap::DATA_UNKNOWN; - - if (_sURL.getLength() == 0) - eStatus = Bootstrap::DATA_MISSING; - - else if ( !implMakeAbsoluteURL(_sURL) ) - eStatus = Bootstrap::DATA_INVALID; - - else - { - DirectoryItem aDirItem; - - eStatus = implCheckStatusOfURL(_sURL,aDirItem); - - if (eStatus == Bootstrap::PATH_EXISTS) - { - if (!implNormalizeURL(_sURL,aDirItem)) - OSL_FAIL("Unexpected failure getting actual URL for existing object"); - } - } - return eStatus; -} - - -// ---------------------------------------------------------------------------------- -// helpers to build and check a nested URL -static -PathStatus getDerivedPath( - OUString& _rURL, - OUString const& _aBaseURL, PathStatus _aBaseStatus, - OUString const& _sRelativeURL, - rtl::Bootstrap& _rData, OUString const& _sBootstrapParameter - ) -{ - OUString sDerivedURL; - - OSL_PRECOND(!_rData.getFrom(_sBootstrapParameter,sDerivedURL),"Setting for derived path is already defined"); - OSL_PRECOND(_sRelativeURL.getLength() != 0 && _sRelativeURL[0] != cURLSeparator,"Invalid Relative URL"); - - PathStatus aStatus = _aBaseStatus; - - // do we have a base path ? - if (_aBaseURL.getLength()) - { - OSL_PRECOND(_aBaseURL[_aBaseURL.getLength()-1] != cURLSeparator,"Unexpected: base URL ends in slash"); - - sDerivedURL = _aBaseURL + getURLSeparator() + _sRelativeURL; - - // a derived (nested) URL can only exist or have a lesser status, if the parent exists - if (aStatus == Bootstrap::PATH_EXISTS) - aStatus = checkStatusAndNormalizeURL(sDerivedURL); - - else // the relative appendix must be valid - OSL_ASSERT(aStatus != Bootstrap::PATH_VALID || dbgCheckStatusOfURL(sDerivedURL) == Bootstrap::PATH_VALID); - - _rData.getFrom(_sBootstrapParameter, _rURL, sDerivedURL); - - OSL_ENSURE(sDerivedURL == _rURL,"Could not set derived URL via Bootstrap default parameter"); - OSL_POSTCOND(RTL_BOOTSTRAP_DEFAULTS_BROKEN || - (_rData.getFrom(_sBootstrapParameter,sDerivedURL) && sDerivedURL==_rURL),"Use of default did not affect bootstrap value"); - } - else - { - // clear the result - _rURL = _aBaseURL; - - // if we have no data it can't be a valid path - OSL_ASSERT( aStatus > Bootstrap::PATH_VALID ); - } - - - return aStatus; -} - -// ---------------------------------------------------------------------------------- -static -inline -PathStatus getDerivedPath( - OUString& _rURL, - Bootstrap::Impl::PathData const& _aBaseData, - OUString const& _sRelativeURL, - rtl::Bootstrap& _rData, OUString const& _sBootstrapParameter - ) -{ - return getDerivedPath(_rURL,_aBaseData.path,_aBaseData.status,_sRelativeURL,_rData,_sBootstrapParameter); -} - -// --------------------------------------------------------------------------------------- - -static -OUString getExecutableBaseName() -{ - OUString sExecutable; - - if (osl_Process_E_None == osl_getExecutableFile(&sExecutable.pData)) - { - // split the executable name - sal_Int32 nSepIndex = sExecutable.lastIndexOf(cURLSeparator); - - sExecutable = sExecutable.copy(nSepIndex + 1); - - // ... and get the basename (strip the extension) - sal_Unicode const cExtensionSep = '.'; - - sal_Int32 const nExtIndex = sExecutable.lastIndexOf(cExtensionSep); - sal_Int32 const nExtLength = sExecutable.getLength() - nExtIndex - 1; - if (0 < nExtIndex && nExtLength < 4) - sExecutable = sExecutable.copy(0,nExtIndex); - } - else - OSL_TRACE("Cannot get executable name: osl_getExecutableFile failed\n"); - - return sExecutable; -} - -// --------------------------------------------------------------------------------------- -static -OUString getExecutableDirectory() -{ - OUString sFileName; - OSL_VERIFY(osl_Process_E_None == osl_getExecutableFile(&sFileName.pData)); - - sal_Int32 nDirEnd = sFileName.lastIndexOf(cURLSeparator); - - OSL_ENSURE(nDirEnd >= 0, "Cannot locate executable directory"); - - return sFileName.copy(0,nDirEnd); -} - -// ---------------------------------------------------------------------------------- - -static -inline -Bootstrap::PathStatus updateStatus(Bootstrap::Impl::PathData & _rResult) -{ - return _rResult.status = checkStatusAndNormalizeURL(_rResult.path); -} -// --------------------------------------------------------------------------------------- - -static -Bootstrap::PathStatus implGetBootstrapFile(rtl::Bootstrap& _rData, Bootstrap::Impl::PathData & _rBootstrapFile) -{ - _rData.getIniName(_rBootstrapFile.path); - - return updateStatus(_rBootstrapFile); -} -// --------------------------------------------------------------------------------------- - -static -Bootstrap::PathStatus implGetVersionFile(rtl::Bootstrap& _rData, Bootstrap::Impl::PathData & _rVersionFile) -{ - OUString const csVersionFileItem(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_ITEM_VERSIONFILE)); - - _rData.getFrom(csVersionFileItem,_rVersionFile.path); - - return updateStatus(_rVersionFile); -} -// --------------------------------------------------------------------------------------- -// Error reporting - -static char const IS_MISSING[] = "is missing"; -static char const IS_INVALID[] = "is corrupt"; -static char const PERIOD[] = ". "; - -// --------------------------------------------------------------------------------------- -static void addFileError(OUStringBuffer& _rBuf, OUString const& _aPath, AsciiString _sWhat) -{ - OUString sSimpleFileName = _aPath.copy(1 +_aPath.lastIndexOf(cURLSeparator)); - - _rBuf.appendAscii("The configuration file"); - _rBuf.appendAscii(" '").append(sSimpleFileName).appendAscii("' "); - _rBuf.appendAscii(_sWhat).appendAscii(PERIOD); -} -// --------------------------------------------------------------------------------------- - -static void addMissingDirectoryError(OUStringBuffer& _rBuf, OUString const& _aPath) -{ - _rBuf.appendAscii("The configuration directory"); - _rBuf.appendAscii(" '").append(_aPath).appendAscii("' "); - _rBuf.appendAscii(IS_MISSING).appendAscii(PERIOD); -} -// --------------------------------------------------------------------------------------- - -static void addUnexpectedError(OUStringBuffer& _rBuf, AsciiString _sExtraInfo = NULL) -{ - if (NULL == _sExtraInfo) - _sExtraInfo = "An internal failure occurred"; - - _rBuf.appendAscii(_sExtraInfo).appendAscii(PERIOD); -} -// --------------------------------------------------------------------------------------- - -static Bootstrap::FailureCode describeError(OUStringBuffer& _rBuf, Bootstrap::Impl const& _rData) -{ - Bootstrap::FailureCode eErrCode = Bootstrap::INVALID_BOOTSTRAP_DATA; - - _rBuf.appendAscii("The program cannot be started. "); - - switch (_rData.aUserInstall_.status) - { - case Bootstrap::PATH_EXISTS: - switch (_rData.aBaseInstall_.status) - { - case Bootstrap::PATH_VALID: - addMissingDirectoryError(_rBuf, _rData.aBaseInstall_.path); - eErrCode = Bootstrap::MISSING_INSTALL_DIRECTORY; - break; - - case Bootstrap::DATA_INVALID: - addUnexpectedError(_rBuf,"The installation path is invalid"); - break; - - case Bootstrap::DATA_MISSING: - addUnexpectedError(_rBuf,"The installation path is not available"); - break; - - case Bootstrap::PATH_EXISTS: // seems to be all fine (?) - addUnexpectedError(_rBuf,""); - break; - - default: OSL_ASSERT(false); - addUnexpectedError(_rBuf); - break; - } - break; - - case Bootstrap::PATH_VALID: - addMissingDirectoryError(_rBuf, _rData.aUserInstall_.path); - eErrCode = Bootstrap::MISSING_USER_DIRECTORY; - break; - - // else fall through - case Bootstrap::DATA_INVALID: - if (_rData.aVersionINI_.status == Bootstrap::PATH_EXISTS) - { - addFileError(_rBuf, _rData.aVersionINI_.path, IS_INVALID); - eErrCode = Bootstrap::INVALID_VERSION_FILE_ENTRY; - break; - } - // else fall through - - case Bootstrap::DATA_MISSING: - switch (_rData.aVersionINI_.status) - { - case Bootstrap::PATH_EXISTS: - addFileError(_rBuf, _rData.aVersionINI_.path, "does not support the current version"); - eErrCode = Bootstrap::MISSING_VERSION_FILE_ENTRY; - break; - - case Bootstrap::PATH_VALID: - addFileError(_rBuf, _rData.aVersionINI_.path, IS_MISSING); - eErrCode = Bootstrap::MISSING_VERSION_FILE; - break; - - default: - switch (_rData.aBootstrapINI_.status) - { - case Bootstrap::PATH_EXISTS: - addFileError(_rBuf, _rData.aBootstrapINI_.path, IS_INVALID); - - if (_rData.aVersionINI_.status == Bootstrap::DATA_MISSING) - eErrCode = Bootstrap::MISSING_BOOTSTRAP_FILE_ENTRY; - else - eErrCode = Bootstrap::INVALID_BOOTSTRAP_FILE_ENTRY; - break; - - case Bootstrap::DATA_INVALID: OSL_ASSERT(false); - case Bootstrap::PATH_VALID: - addFileError(_rBuf, _rData.aBootstrapINI_.path, IS_MISSING); - eErrCode = Bootstrap::MISSING_BOOTSTRAP_FILE; - break; - - default: - addUnexpectedError(_rBuf); - break; - } - break; - } - break; - - default: OSL_ASSERT(false); - addUnexpectedError(_rBuf); - break; - } - - return eErrCode; -} -// --------------------------------------------------------------------------------------- -// --------------------------------------------------------------------------------------- -// class Bootstrap -// --------------------------------------------------------------------------------------- - -OUString Bootstrap::getProductKey() -{ - OUString const csProductKeyItem(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_ITEM_PRODUCT_KEY)); - - OUString const sDefaultProductKey = getExecutableBaseName(); - - return data().getBootstrapValue( csProductKeyItem, sDefaultProductKey ); -} -// --------------------------------------------------------------------------------------- - -OUString Bootstrap::getProductKey(OUString const& _sDefault) -{ - OUString const csProductKeyItem(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_ITEM_PRODUCT_KEY)); - - return data().getBootstrapValue( csProductKeyItem, _sDefault ); -} -// --------------------------------------------------------------------------------------- - -OUString Bootstrap::getProductVersion() -{ - // read OOOBaseVersion from version.ini (versionrc) - OUString sVersion; - data().getVersionValue( OUString( RTL_CONSTASCII_USTRINGPARAM( BOOTSTRAP_ITEM_PRODUCT_VERSION ) ), sVersion, OUString() ); - return sVersion; -} - -OUString Bootstrap::getProductSource(OUString const& _sDefault) -{ - OUString const csProductSourceItem(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_ITEM_PRODUCT_SOURCE)); - - OUString sProductSource; - // read ProductSource from version.ini (versionrc) - data().getVersionValue( csProductSourceItem, sProductSource, _sDefault ); - return sProductSource; -} -// --------------------------------------------------------------------------------------- - -OUString Bootstrap::getBuildIdData(OUString const& _sDefault) -{ - OUString const csBuildIdItem(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_ITEM_BUILDID)); - - OUString sBuildId; - // read buildid from version.ini (versionrc), if it doesn't exist or buildid is empty - if ( data().getVersionValue( csBuildIdItem, sBuildId, _sDefault ) != sal_True || - sBuildId.getLength() == 0 ) - // read buildid from bootstrap.ini (bootstraprc) - sBuildId = data().getBootstrapValue( csBuildIdItem, _sDefault ); - return sBuildId; -} - -// --------------------------------------------------------------------------------------- - -OUString Bootstrap::getAllUsersValue(OUString const& _sDefault) -{ - OUString const csAllUsersItem(RTL_CONSTASCII_USTRINGPARAM(SETUP_ITEM_ALLUSERS)); - - rtl::Bootstrap aData( getExecutableDirectory() + OUString( RTL_CONSTASCII_USTRINGPARAM( "/"SETUP_DATA_NAME ) ) ); - OUString sResult; - aData.getFrom( csAllUsersItem, sResult, _sDefault ); - return sResult; -} -// --------------------------------------------------------------------------------------- - -Bootstrap::PathStatus Bootstrap::locateBaseInstallation(OUString& _rURL) -{ - Impl::PathData const& aPathData = data().aBaseInstall_; - - _rURL = aPathData.path; - return aPathData.status; -} -// --------------------------------------------------------------------------------------- - -PathStatus Bootstrap::locateUserInstallation(OUString& _rURL) -{ - Impl::PathData const& aPathData = data().aUserInstall_; - - _rURL = aPathData.path; - return aPathData.status; -} -// --------------------------------------------------------------------------------------- - -PathStatus Bootstrap::locateSharedData(OUString& _rURL) -{ - OUString const csShareDirItem(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_ITEM_SHAREDIR)); - - rtl::Bootstrap aData( data().getImplName() ); - - if ( aData.getFrom(csShareDirItem, _rURL) ) - { - return checkStatusAndNormalizeURL(_rURL); - } - else - { - OUString const csShareDir(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_DIRNAME_SHAREDIR)); - return getDerivedPath(_rURL, data().aBaseInstall_, csShareDir, aData, csShareDirItem); - } -} -// --------------------------------------------------------------------------------------- - -PathStatus Bootstrap::locateUserData(OUString& _rURL) -{ - OUString const csUserDirItem(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_ITEM_USERDIR)); - - rtl::Bootstrap aData( data().getImplName() ); - - if ( aData.getFrom(csUserDirItem, _rURL) ) - { - return checkStatusAndNormalizeURL(_rURL); - } - else - { - OUString const csUserDir(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_DIRNAME_USERDIR)); - return getDerivedPath(_rURL, data().aUserInstall_ ,csUserDir, aData, csUserDirItem); - } -} -// --------------------------------------------------------------------------------------- - -PathStatus Bootstrap::locateBootstrapFile(OUString& _rURL) -{ - Impl::PathData const& aPathData = data().aBootstrapINI_; - - _rURL = aPathData.path; - return aPathData.status; -} -// --------------------------------------------------------------------------------------- - -PathStatus Bootstrap::locateVersionFile(OUString& _rURL) -{ - Impl::PathData const& aPathData = data().aVersionINI_; - - _rURL = aPathData.path; - return aPathData.status; -} -// --------------------------------------------------------------------------------------- - -Bootstrap::Status Bootstrap::checkBootstrapStatus(OUString& _rDiagnosticMessage) -{ - FailureCode eDummyCode(NO_FAILURE); - - return checkBootstrapStatus(_rDiagnosticMessage,eDummyCode); -} -// --------------------------------------------------------------------------------------- - -Bootstrap::Status Bootstrap::checkBootstrapStatus(rtl::OUString& _rDiagnosticMessage, FailureCode& _rErrCode) -{ - Impl const& aData = data(); - - Status result = aData.status_; - - // maybe do further checks here - - OUStringBuffer sErrorBuffer; - if (result != DATA_OK) - _rErrCode = describeError(sErrorBuffer,aData); - - else - _rErrCode = NO_FAILURE; - - _rDiagnosticMessage = sErrorBuffer.makeStringAndClear(); - - return result; -} - -// --------------------------------------------------------------------------------------- -// class Bootstrap::Impl -// --------------------------------------------------------------------------------------- - -bool Bootstrap::Impl::initBaseInstallationData(rtl::Bootstrap& _rData) -{ - OUString const csBaseInstallItem( RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_ITEM_BASEINSTALLATION) ); - OUString const csBaseInstallDefault( RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_DEFAULT_BASEINSTALL) ); - - _rData.getFrom(csBaseInstallItem, aBaseInstall_.path, csBaseInstallDefault); - - bool bResult = (PATH_EXISTS == updateStatus(aBaseInstall_)); - - implGetBootstrapFile(_rData, aBootstrapINI_); - - return bResult; -} -// --------------------------------------------------------------------------------------- - -bool Bootstrap::Impl::initUserInstallationData(rtl::Bootstrap& _rData) -{ - OUString const csUserInstallItem( RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_ITEM_USERINSTALLATION) ); - - if (_rData.getFrom(csUserInstallItem, aUserInstall_.path)) - { - updateStatus(aUserInstall_); - } - else - { - // should we do just this - aUserInstall_.status = DATA_MISSING; - - // .. or this - look for a single-user user directory ? - OUString const csUserDirItem(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_ITEM_USERDIR)); - OUString sDummy; - // look for $BASEINSTALLATION/user only if default UserDir setting is used - if (! _rData.getFrom(csUserDirItem, sDummy)) - { - OUString const csUserDir(RTL_CONSTASCII_USTRINGPARAM(BOOTSTRAP_DIRNAME_USERDIR)); - - if ( PATH_EXISTS == getDerivedPath(sDummy, aBaseInstall_, csUserDir, _rData, csUserDirItem) ) - aUserInstall_ = aBaseInstall_; - } - } - - bool bResult = (PATH_EXISTS == aUserInstall_.status); - - implGetVersionFile(_rData, aVersionINI_); - - return bResult; -} -// --------------------------------------------------------------------------------------- - -void Bootstrap::Impl::initialize() -{ - rtl::Bootstrap aData( m_aImplName ); - - if (!initBaseInstallationData(aData)) - { - status_ = INVALID_BASE_INSTALL; - } - else if (!initUserInstallationData(aData)) - { - status_ = INVALID_USER_INSTALL; - - if (aUserInstall_.status >= DATA_MISSING) - { - switch (aVersionINI_.status) - { - case PATH_EXISTS: - case PATH_VALID: - status_ = MISSING_USER_INSTALL; - break; - - case DATA_INVALID: - case DATA_MISSING: - status_ = INVALID_BASE_INSTALL; - break; - default: - break; - } - } - } - else - { - status_ = DATA_OK; - } -} -// --------------------------------------------------------------------------------------- - -OUString Bootstrap::Impl::getBootstrapValue(OUString const& _sName, OUString const& _sDefault) const -{ - rtl::Bootstrap aData( m_aImplName ); - - OUString sResult; - aData.getFrom(_sName,sResult,_sDefault); - return sResult; -} -// --------------------------------------------------------------------------------------- - -sal_Bool Bootstrap::Impl::getVersionValue(OUString const& _sName, OUString& _rValue, OUString const& _sDefault) const -{ - // try to open version.ini (versionrc) - rtl::OUString uri; - rtl::Bootstrap::get( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("BRAND_BASE_DIR")), uri); - rtl::Bootstrap aData( uri + - OUString(RTL_CONSTASCII_USTRINGPARAM("/program/"SAL_CONFIGFILE("version"))) ); - if ( aData.getHandle() == NULL ) - // version.ini (versionrc) doesn't exist - return sal_False; - - // read value - aData.getFrom(_sName,_rValue,_sDefault); - return sal_True; -} -// --------------------------------------------------------------------------------------- - -} // namespace utl - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/cacheoptions.cxx b/unotools/source/config/cacheoptions.cxx deleted file mode 100644 index c228cefdf5..0000000000 --- a/unotools/source/config/cacheoptions.cxx +++ /dev/null @@ -1,495 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/cacheoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <rtl/instance.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::utl; -using namespace ::rtl; -using namespace ::osl; -using namespace ::com::sun::star::uno; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_START OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Cache" )) -#define DEFAULT_WRITEROLE 20 -#define DEFAULT_DRAWINGOLE 20 -#define DEFAULT_GRFMGR_TOTALSIZE 10000000 -#define DEFAULT_GRFMGR_OBJECTSIZE 2400000 -#define DEFAULT_GRFMGR_OBJECTRELEASE 600 - -#define PROPERTYNAME_WRITEROLE OUString(RTL_CONSTASCII_USTRINGPARAM("Writer/OLE_Objects")) -#define PROPERTYNAME_DRAWINGOLE OUString(RTL_CONSTASCII_USTRINGPARAM("DrawingEngine/OLE_Objects")) -#define PROPERTYNAME_GRFMGR_TOTALSIZE OUString(RTL_CONSTASCII_USTRINGPARAM("GraphicManager/TotalCacheSize")) -#define PROPERTYNAME_GRFMGR_OBJECTSIZE OUString(RTL_CONSTASCII_USTRINGPARAM("GraphicManager/ObjectCacheSize")) -#define PROPERTYNAME_GRFMGR_OBJECTRELEASE OUString(RTL_CONSTASCII_USTRINGPARAM("GraphicManager/ObjectReleaseTime")) - -#define PROPERTYHANDLE_WRITEROLE 0 -#define PROPERTYHANDLE_DRAWINGOLE 1 -#define PROPERTYHANDLE_GRFMGR_TOTALSIZE 2 -#define PROPERTYHANDLE_GRFMGR_OBJECTSIZE 3 -#define PROPERTYHANDLE_GRFMGR_OBJECTRELEASE 4 - -#define PROPERTYCOUNT 5 - -class SvtCacheOptions_Impl : public ConfigItem -{ -public: - -//--------------------------------------------------------------------------------------------------------- -// constructor / destructor -//--------------------------------------------------------------------------------------------------------- - - SvtCacheOptions_Impl(); - ~SvtCacheOptions_Impl(); - -//--------------------------------------------------------------------------------------------------------- -// overloaded methods of baseclass -//--------------------------------------------------------------------------------------------------------- - - virtual void Commit(); - virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); - -//--------------------------------------------------------------------------------------------------------- -// public interface -//--------------------------------------------------------------------------------------------------------- - - sal_Int32 GetWriterOLE_Objects() const; - sal_Int32 GetDrawingEngineOLE_Objects() const; - sal_Int32 GetGraphicManagerTotalCacheSize() const; - sal_Int32 GetGraphicManagerObjectCacheSize() const; - sal_Int32 GetGraphicManagerObjectReleaseTime() const; - - void SetWriterOLE_Objects( sal_Int32 nObjects ); - void SetDrawingEngineOLE_Objects( sal_Int32 nObjects ); - void SetGraphicManagerTotalCacheSize( sal_Int32 nTotalCacheSize ); - void SetGraphicManagerObjectCacheSize( sal_Int32 nObjectCacheSize ); - void SetGraphicManagerObjectReleaseTime( sal_Int32 nReleaseTimeSeconds ); - -//------------------------------------------------------------------------------------------------------------- -// private methods -//------------------------------------------------------------------------------------------------------------- - -private: - - static Sequence< OUString > impl_GetPropertyNames(); - -//------------------------------------------------------------------------------------------------------------- -// private member -//------------------------------------------------------------------------------------------------------------- - -private: - - sal_Int32 mnWriterOLE; - sal_Int32 mnDrawingOLE; - sal_Int32 mnGrfMgrTotalSize; - sal_Int32 mnGrfMgrObjectSize; - sal_Int32 mnGrfMgrObjectRelease; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtCacheOptions_Impl::SvtCacheOptions_Impl() : - ConfigItem( ROOTNODE_START ), - mnWriterOLE( DEFAULT_WRITEROLE ), - mnDrawingOLE( DEFAULT_DRAWINGOLE ), - mnGrfMgrTotalSize( DEFAULT_GRFMGR_TOTALSIZE ), - mnGrfMgrObjectSize( DEFAULT_GRFMGR_OBJECTSIZE ), - mnGrfMgrObjectRelease( DEFAULT_GRFMGR_OBJECTRELEASE ) -{ - Sequence< OUString > seqNames( impl_GetPropertyNames() ); - Sequence< Any > seqValues = GetProperties( seqNames ) ; - - DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtCacheOptions_Impl::SvtCacheOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Copy values from list in right order to ouer internal member. - sal_Int32 nPropertyCount = seqValues.getLength(); - sal_Int32 nProperty = 0; - - for( nProperty=0; nProperty<nPropertyCount; ++nProperty ) - { - if( seqValues[ nProperty ].hasValue() ) - { - switch( nProperty ) - { - case PROPERTYHANDLE_WRITEROLE: - { - if( seqValues[ nProperty ].getValueTypeClass() == TypeClass_LONG ) - seqValues[nProperty] >>= mnWriterOLE; - } - break; - - case PROPERTYHANDLE_DRAWINGOLE: - { - if( seqValues[ nProperty ].getValueTypeClass() == TypeClass_LONG ) - seqValues[nProperty] >>= mnDrawingOLE; - } - break; - - case PROPERTYHANDLE_GRFMGR_TOTALSIZE: - { - if( seqValues[ nProperty ].getValueTypeClass() == TypeClass_LONG ) - seqValues[nProperty] >>= mnGrfMgrTotalSize; - } - break; - - case PROPERTYHANDLE_GRFMGR_OBJECTSIZE: - { - if( seqValues[ nProperty ].getValueTypeClass() == TypeClass_LONG ) - seqValues[nProperty] >>= mnGrfMgrObjectSize; - } - break; - - case PROPERTYHANDLE_GRFMGR_OBJECTRELEASE: - { - if( seqValues[ nProperty ].getValueTypeClass() == TypeClass_LONG ) - seqValues[nProperty] >>= mnGrfMgrObjectRelease; - } - break; - } - } - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtCacheOptions_Impl::~SvtCacheOptions_Impl() -{ - if( IsModified() ) - Commit(); -} - -//***************************************************************************************************************** -// Commit -//***************************************************************************************************************** -void SvtCacheOptions_Impl::Commit() -{ - Sequence< OUString > aSeqNames( impl_GetPropertyNames() ); - Sequence< Any > aSeqValues( aSeqNames.getLength() ); - - for( sal_Int32 nProperty = 0, nCount = aSeqNames.getLength(); nProperty < nCount; ++nProperty ) - { - switch( nProperty ) - { - case PROPERTYHANDLE_WRITEROLE: - aSeqValues[nProperty] <<= mnWriterOLE; - break; - - case PROPERTYHANDLE_DRAWINGOLE: - aSeqValues[nProperty] <<= mnDrawingOLE; - break; - - case PROPERTYHANDLE_GRFMGR_TOTALSIZE: - aSeqValues[nProperty] <<= mnGrfMgrTotalSize; - break; - - case PROPERTYHANDLE_GRFMGR_OBJECTSIZE: - aSeqValues[nProperty] <<= mnGrfMgrObjectSize; - break; - - case PROPERTYHANDLE_GRFMGR_OBJECTRELEASE: - aSeqValues[nProperty] <<= mnGrfMgrObjectRelease; - break; - } - } - - PutProperties( aSeqNames, aSeqValues ); -} - -void SvtCacheOptions_Impl::Notify( const Sequence< rtl::OUString >& ) -{ -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtCacheOptions_Impl::GetWriterOLE_Objects() const -{ - return mnWriterOLE; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtCacheOptions_Impl::GetDrawingEngineOLE_Objects() const -{ - return mnDrawingOLE; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtCacheOptions_Impl::GetGraphicManagerTotalCacheSize() const -{ - return mnGrfMgrTotalSize; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtCacheOptions_Impl::GetGraphicManagerObjectCacheSize() const -{ - return mnGrfMgrObjectSize; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtCacheOptions_Impl::GetGraphicManagerObjectReleaseTime() const -{ - return mnGrfMgrObjectRelease; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCacheOptions_Impl::SetWriterOLE_Objects( sal_Int32 nWriterOLE ) -{ - mnWriterOLE = nWriterOLE; - SetModified(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCacheOptions_Impl::SetDrawingEngineOLE_Objects( sal_Int32 nDrawingOLE ) -{ - mnDrawingOLE = nDrawingOLE; - SetModified(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCacheOptions_Impl::SetGraphicManagerTotalCacheSize( sal_Int32 nGrfMgrTotalSize ) -{ - mnGrfMgrTotalSize = nGrfMgrTotalSize; - SetModified(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCacheOptions_Impl::SetGraphicManagerObjectCacheSize( sal_Int32 nGrfMgrObjectSize ) -{ - mnGrfMgrObjectSize = nGrfMgrObjectSize; - SetModified(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCacheOptions_Impl::SetGraphicManagerObjectReleaseTime( sal_Int32 nGrfMgrObjectReleaseTime ) -{ - mnGrfMgrObjectRelease = nGrfMgrObjectReleaseTime; - SetModified(); -} - -Sequence< OUString > SvtCacheOptions_Impl::impl_GetPropertyNames() -{ - // Build list of configuration key names. - const OUString pProperties[] = - { - PROPERTYNAME_WRITEROLE, - PROPERTYNAME_DRAWINGOLE, - PROPERTYNAME_GRFMGR_TOTALSIZE, - PROPERTYNAME_GRFMGR_OBJECTSIZE, - PROPERTYNAME_GRFMGR_OBJECTRELEASE - }; - // Initialize return sequence with these list ... - const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT ); - // ... and return it. - return seqPropertyNames; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtCacheOptions_Impl* SvtCacheOptions::m_pDataContainer = NULL; -sal_Int32 SvtCacheOptions::m_nRefCount = 0; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtCacheOptions::SvtCacheOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already! - if( m_pDataContainer == NULL ) - { - m_pDataContainer = new SvtCacheOptions_Impl(); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtCacheOptions::~SvtCacheOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtCacheOptions::GetWriterOLE_Objects() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetWriterOLE_Objects(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtCacheOptions::GetDrawingEngineOLE_Objects() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetDrawingEngineOLE_Objects(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtCacheOptions::GetGraphicManagerTotalCacheSize() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetGraphicManagerTotalCacheSize(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtCacheOptions::GetGraphicManagerObjectCacheSize() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetGraphicManagerObjectCacheSize(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtCacheOptions::GetGraphicManagerObjectReleaseTime() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetGraphicManagerObjectReleaseTime(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCacheOptions::SetWriterOLE_Objects( sal_Int32 nWriterOLE ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetWriterOLE_Objects( nWriterOLE ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCacheOptions::SetDrawingEngineOLE_Objects( sal_Int32 nDrawingOLE ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetDrawingEngineOLE_Objects( nDrawingOLE ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCacheOptions::SetGraphicManagerTotalCacheSize( sal_Int32 nGrfMgrTotalSize ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetGraphicManagerTotalCacheSize( nGrfMgrTotalSize ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCacheOptions::SetGraphicManagerObjectCacheSize( sal_Int32 nGrfMgrObjectSize ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetGraphicManagerObjectCacheSize( nGrfMgrObjectSize ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCacheOptions::SetGraphicManagerObjectReleaseTime( sal_Int32 nGrfMgrObjectReleaseTime ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetGraphicManagerObjectReleaseTime( nGrfMgrObjectReleaseTime ); -} - -namespace -{ - class theCacheOptionsMutex : public rtl::Static<osl::Mutex, theCacheOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtCacheOptions::GetOwnStaticMutex() -{ - return theCacheOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/cmdoptions.cxx b/unotools/source/config/cmdoptions.cxx deleted file mode 100644 index fbcbc04029..0000000000 --- a/unotools/source/config/cmdoptions.cxx +++ /dev/null @@ -1,610 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include <unotools/cmdoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <cppuhelper/weakref.hxx> -#include <tools/urlobj.hxx> -#include <rtl/ustrbuf.hxx> -#include <rtl/instance.hxx> - -#include <itemholder1.hxx> - -#include <algorithm> -#include <boost/unordered_map.hpp> - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::std ; -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; -using namespace ::com::sun::star::beans ; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_CMDOPTIONS OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Commands/Execute" )) -#define PATHDELIMITER OUString(RTL_CONSTASCII_USTRINGPARAM("/" )) - -#define SETNODE_DISABLED OUString(RTL_CONSTASCII_USTRINGPARAM("Disabled" )) - -#define PROPERTYNAME_CMD OUString(RTL_CONSTASCII_USTRINGPARAM("Command" )) - -#define PROPERTYCOUNT 1 - -#define OFFSET_CMD 0 - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -// Method to retrieve a hash code from a string. May be we have to change it to decrease collisions in the hash map -struct OUStringHashCode -{ - size_t operator()( const ::rtl::OUString& sString ) const - { - return sString.hashCode(); - } -}; - -/*-**************************************************************************************************************** - @descr support simple command option structures and operations on it -****************************************************************************************************************-*/ -class SvtCmdOptions -{ - public: - //--------------------------------------------------------------------------------------------------------- - // the only way to free memory! - void Clear() - { - m_aCommandHashMap.clear(); - } - - sal_Bool HasEntries() const - { - return ( m_aCommandHashMap.size() > 0 ); - } - - sal_Bool Lookup( const OUString& aCmd ) const - { - CommandHashMap::const_iterator pEntry = m_aCommandHashMap.find( aCmd ); - return ( pEntry != m_aCommandHashMap.end() ); - } - - void AddCommand( const OUString& aCmd ) - { - m_aCommandHashMap.insert( CommandHashMap::value_type( aCmd, 0 ) ); - } - - //--------------------------------------------------------------------------------------------------------- - // convert internal list to external format - // for using it on right menus realy - // Notice: We build a property list with 4 entries and set it on result list then. - // The while-loop starts with pointer on internal member list lSetupEntries, change to - // lUserEntries then and stop after that with NULL! - // Separator entries will be packed in another way then normal entries! We define - // special strings "sEmpty" and "sSeperator" to perform too ... - Sequence< OUString > GetList() const - { - sal_Int32 nCount = (sal_Int32)m_aCommandHashMap.size(); - sal_Int32 nIndex = 0; - Sequence< OUString > aList( nCount ); - - CommandHashMap::const_iterator pEntry = m_aCommandHashMap.begin(); - while ( pEntry != m_aCommandHashMap.end() ) - aList[nIndex++] = pEntry->first; - - return aList; - } - - private: - class CommandHashMap : public ::boost::unordered_map< ::rtl::OUString , - sal_Int32 , - OUStringHashCode , - ::std::equal_to< ::rtl::OUString > > - { - public: - inline void free() - { - CommandHashMap().swap( *this ); - } - }; - - CommandHashMap m_aCommandHashMap; -}; - -typedef ::std::vector< ::com::sun::star::uno::WeakReference< ::com::sun::star::frame::XFrame > > SvtFrameVector; - -class SvtCommandOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtCommandOptions_Impl(); - ~SvtCommandOptions_Impl(); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @seealso baseclass ConfigItem - - @param "lPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& lPropertyNames ); - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short base implementation of public interface for "SvtDynamicMenuOptions"! - @descr These class is used as static member of "SvtDynamicMenuOptions" ... - => The code exist only for one time and isn't duplicated for every instance! - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void Clear ( SvtCommandOptions::CmdOption eCmdOption ); - sal_Bool HasEntries ( SvtCommandOptions::CmdOption eOption ) const; - sal_Bool Lookup ( SvtCommandOptions::CmdOption eCmdOption, const OUString& ) const; - Sequence< OUString > GetList ( SvtCommandOptions::CmdOption eCmdOption ) const ; - void AddCommand ( SvtCommandOptions::CmdOption eCmdOption, - const OUString& sURL ); - void EstablisFrameCallback(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return list of key names of our configuration management which represent oue module tree - @descr These methods return the current list of key names! We need it to get needed values from our - configuration management and support dynamical menu item lists! - - @seealso - - - @param "nDisabledCount" , returns count of menu entries for "new" - @return A list of configuration key names is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - Sequence< OUString > impl_GetPropertyNames(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - SvtCmdOptions m_aDisabledCommands; - SvtFrameVector m_lFrames; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtCommandOptions_Impl::SvtCommandOptions_Impl() - // Init baseclasses first - : ConfigItem( ROOTNODE_CMDOPTIONS ) - // Init member then... -{ - // Get names and values of all accessable menu entries and fill internal structures. - // See impl_GetPropertyNames() for further informations. - Sequence< OUString > lNames = impl_GetPropertyNames (); - Sequence< Any > lValues = GetProperties ( lNames ); - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - DBG_ASSERT( !(lNames.getLength()!=lValues.getLength()), "SvtCommandOptions_Impl::SvtCommandOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Copy values from list in right order to ouer internal member. - // Attention: List for names and values have an internal construction pattern! - sal_Int32 nItem = 0 ; - OUString sCmd ; - - // Get names/values for disabled commands. - for( nItem=0; nItem < lNames.getLength(); ++nItem ) - { - // Currently only one value - lValues[nItem] >>= sCmd; - m_aDisabledCommands.AddCommand( sCmd ); - } - -/*TODO: Not used in the moment! see Notify() ... - // Enable notification mechanism of ouer baseclass. - // We need it to get information about changes outside these class on ouer used configuration keys! */ - Sequence< OUString > aNotifySeq( 1 ); - aNotifySeq[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "Disabled" )); - EnableNotification( aNotifySeq, sal_True ); -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtCommandOptions_Impl::~SvtCommandOptions_Impl() -{ - // We must save our current values .. if user forget it! - if( IsModified() == sal_True ) - { - Commit(); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCommandOptions_Impl::Notify( const Sequence< OUString >& ) -{ - MutexGuard aGuard( SvtCommandOptions::GetOwnStaticMutex() ); - - Sequence< OUString > lNames = impl_GetPropertyNames (); - Sequence< Any > lValues = GetProperties ( lNames ); - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - DBG_ASSERT( !(lNames.getLength()!=lValues.getLength()), "SvtCommandOptions_Impl::SvtCommandOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Copy values from list in right order to ouer internal member. - // Attention: List for names and values have an internal construction pattern! - sal_Int32 nItem = 0 ; - OUString sCmd ; - - m_aDisabledCommands.Clear(); - - // Get names/values for disabled commands. - for( nItem=0; nItem < lNames.getLength(); ++nItem ) - { - // Currently only one value - lValues[nItem] >>= sCmd; - m_aDisabledCommands.AddCommand( sCmd ); - } - - // dont forget to update all existing frames and her might cached dispatch objects! - // But look for already killed frames. We hold weak references instead of hard ones ... - for (SvtFrameVector::const_iterator pIt = m_lFrames.begin(); - pIt != m_lFrames.end() ; - ++pIt ) - { - ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > xFrame(pIt->get(), ::com::sun::star::uno::UNO_QUERY); - if (xFrame.is()) - xFrame->contextChanged(); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCommandOptions_Impl::Commit() -{ - OSL_FAIL( "SvtCommandOptions_Impl::Commit()\nNot implemented yet!\n" ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCommandOptions_Impl::Clear( SvtCommandOptions::CmdOption eCmdOption ) -{ - switch( eCmdOption ) - { - case SvtCommandOptions::CMDOPTION_DISABLED: - { - m_aDisabledCommands.Clear(); - SetModified(); - } - break; - - default: - DBG_ASSERT( sal_False, "SvtCommandOptions_Impl::Clear()\nUnknown option type given!\n" ); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtCommandOptions_Impl::HasEntries( SvtCommandOptions::CmdOption eOption ) const -{ - if ( eOption == SvtCommandOptions::CMDOPTION_DISABLED ) - return ( m_aDisabledCommands.HasEntries() > 0 ); - else - return sal_False; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< OUString > SvtCommandOptions_Impl::GetList( SvtCommandOptions::CmdOption eCmdOption ) const -{ - Sequence< OUString > lReturn; - - switch( eCmdOption ) - { - case SvtCommandOptions::CMDOPTION_DISABLED: - { - lReturn = m_aDisabledCommands.GetList(); - } - break; - - default: - DBG_ASSERT( sal_False, "SvtCommandOptions_Impl::GetList()\nUnknown option type given!\n" ); - } - - return lReturn; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtCommandOptions_Impl::Lookup( SvtCommandOptions::CmdOption eCmdOption, const OUString& aCommand ) const -{ - switch( eCmdOption ) - { - case SvtCommandOptions::CMDOPTION_DISABLED: - { - return m_aDisabledCommands.Lookup( aCommand ); - } - default: - DBG_ASSERT( sal_False, "SvtCommandOptions_Impl::GetList()\nUnknown option type given!\n" ); - } - - return sal_False; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCommandOptions_Impl::AddCommand( SvtCommandOptions::CmdOption eCmdOption, const OUString& sCmd ) -{ - switch( eCmdOption ) - { - case SvtCommandOptions::CMDOPTION_DISABLED: - { - m_aDisabledCommands.AddCommand( sCmd ); - SetModified(); - } - break; - - default: - DBG_ASSERT( sal_False, "SvtCommandOptions_Impl::GetList()\nUnknown option type given!\n" ); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCommandOptions_Impl::EstablisFrameCallback(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame) -{ - // check if frame already exists inside list - // ignore double registrations - // every frame must be notified one times only! - ::com::sun::star::uno::WeakReference< ::com::sun::star::frame::XFrame > xWeak(xFrame); - SvtFrameVector::const_iterator pIt = ::std::find(m_lFrames.begin(), m_lFrames.end(), xWeak); - if (pIt == m_lFrames.end()) - m_lFrames.push_back(xWeak); -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Sequence< OUString > SvtCommandOptions_Impl::impl_GetPropertyNames() -{ - // First get ALL names of current existing list items in configuration! - Sequence< OUString > lDisabledItems = GetNodeNames( SETNODE_DISABLED, utl::CONFIG_NAME_LOCAL_PATH ); - - OUString aSetNode( SETNODE_DISABLED ); - aSetNode += PATHDELIMITER; - - OUString aCommandKey( PATHDELIMITER ); - aCommandKey += PROPERTYNAME_CMD; - - // Expand all keys - for (sal_Int32 i=0; i<lDisabledItems.getLength(); ++i ) - { - OUStringBuffer aBuffer( 32 ); - aBuffer.append( aSetNode ); - aBuffer.append( lDisabledItems[i] ); - aBuffer.append( aCommandKey ); - lDisabledItems[i] = aBuffer.makeStringAndClear(); - } - - // Return result. - return lDisabledItems; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtCommandOptions_Impl* SvtCommandOptions::m_pDataContainer = NULL ; -sal_Int32 SvtCommandOptions::m_nRefCount = 0 ; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtCommandOptions::SvtCommandOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already exist! - if( m_pDataContainer == NULL ) - { - m_pDataContainer = new SvtCommandOptions_Impl; - ItemHolder1::holdConfigItem(E_CMDOPTIONS); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtCommandOptions::~SvtCommandOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCommandOptions::Clear( CmdOption eCmdOption ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->Clear( eCmdOption ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtCommandOptions::HasEntries( CmdOption eOption ) const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->HasEntries( eOption ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtCommandOptions::Lookup( CmdOption eCmdOption, const OUString& aCommandURL ) const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->Lookup( eCmdOption, aCommandURL ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< OUString > SvtCommandOptions::GetList( CmdOption eCmdOption ) const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetList( eCmdOption ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCommandOptions::AddCommand( CmdOption eCmdOption, const OUString& sURL ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->AddCommand( eCmdOption, sURL ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCommandOptions::EstablisFrameCallback(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->EstablisFrameCallback(xFrame); -} - -namespace -{ - class theCommandOptionsMutex : public rtl::Static<osl::Mutex, theCommandOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtCommandOptions::GetOwnStaticMutex() -{ - return theCommandOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/compatibility.cxx b/unotools/source/config/compatibility.cxx deleted file mode 100644 index 7771e293e4..0000000000 --- a/unotools/source/config/compatibility.cxx +++ /dev/null @@ -1,833 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include <unotools/compatibility.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <unotools/syslocale.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <vector> - -#include <itemholder1.hxx> - -#include <algorithm> - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::std; -using namespace ::utl; -using namespace ::rtl; -using namespace ::osl; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::beans; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_OPTIONS OUString( RTL_CONSTASCII_USTRINGPARAM( "Office.Compatibility/" ) ) -#define PATHDELIMITER OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) -#define SETNODE_ALLFILEFORMATS OUString( RTL_CONSTASCII_USTRINGPARAM( "AllFileFormats" ) ) - -#define PROPERTYNAME_NAME COMPATIBILITY_PROPERTYNAME_NAME -#define PROPERTYNAME_MODULE COMPATIBILITY_PROPERTYNAME_MODULE -#define PROPERTYNAME_USEPRTMETRICS COMPATIBILITY_PROPERTYNAME_USEPRTMETRICS -#define PROPERTYNAME_ADDSPACING COMPATIBILITY_PROPERTYNAME_ADDSPACING -#define PROPERTYNAME_ADDSPACINGATPAGES COMPATIBILITY_PROPERTYNAME_ADDSPACINGATPAGES -#define PROPERTYNAME_USEOURTABSTOPS COMPATIBILITY_PROPERTYNAME_USEOURTABSTOPS -#define PROPERTYNAME_NOEXTLEADING COMPATIBILITY_PROPERTYNAME_NOEXTLEADING -#define PROPERTYNAME_USELINESPACING COMPATIBILITY_PROPERTYNAME_USELINESPACING -#define PROPERTYNAME_ADDTABLESPACING COMPATIBILITY_PROPERTYNAME_ADDTABLESPACING -#define PROPERTYNAME_USEOBJPOS COMPATIBILITY_PROPERTYNAME_USEOBJECTPOSITIONING -#define PROPERTYNAME_USEOURTEXTWRAP COMPATIBILITY_PROPERTYNAME_USEOURTEXTWRAPPING -#define PROPERTYNAME_CONSIDERWRAPSTYLE COMPATIBILITY_PROPERTYNAME_CONSIDERWRAPPINGSTYLE -#define PROPERTYNAME_EXPANDWORDSPACE COMPATIBILITY_PROPERTYNAME_EXPANDWORDSPACE - -#define PROPERTYCOUNT 13 - -#define OFFSET_NAME 0 -#define OFFSET_MODULE 1 -#define OFFSET_USEPRTMETRICS 2 -#define OFFSET_ADDSPACING 3 -#define OFFSET_ADDSPACINGATPAGES 4 -#define OFFSET_USEOURTABSTOPS 5 -#define OFFSET_NOEXTLEADING 6 -#define OFFSET_USELINESPACING 7 -#define OFFSET_ADDTABLESPACING 8 -#define OFFSET_USEOBJPOS 9 -#define OFFSET_USEOURTEXTWRAPPING 10 -#define OFFSET_CONSIDERWRAPPINGSTYLE 11 -#define OFFSET_EXPANDWORDSPACE 12 - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -/*-**************************************************************************************************************** - @descr struct to hold information about one compatibility entry -****************************************************************************************************************-*/ -struct SvtCompatibilityEntry -{ - public: - SvtCompatibilityEntry() : - bUsePrtMetrics( false ), bAddSpacing( false ), - bAddSpacingAtPages( false ), bUseOurTabStops( false ), - bNoExtLeading( false ), bUseLineSpacing( false ), - bAddTableSpacing( false ), bUseObjPos( false ), - bUseOurTextWrapping( false ), bConsiderWrappingStyle( false ), - bExpandWordSpace( true ) {} - SvtCompatibilityEntry( - const OUString& _rName, const OUString& _rNewModule ) : - sName( _rName ), sModule( _rNewModule ), - bUsePrtMetrics( false ), bAddSpacing( false ), - bAddSpacingAtPages( false ), bUseOurTabStops( false ), - bNoExtLeading( false ), bUseLineSpacing( false ), - bAddTableSpacing( false ), bUseObjPos( false ), - bUseOurTextWrapping( false ), bConsiderWrappingStyle( false ), - bExpandWordSpace( true ) {} - - inline void SetUsePrtMetrics( bool _bSet ) { bUsePrtMetrics = _bSet; } - inline void SetAddSpacing( bool _bSet ) { bAddSpacing = _bSet; } - inline void SetAddSpacingAtPages( bool _bSet ) { bAddSpacingAtPages = _bSet; } - inline void SetUseOurTabStops( bool _bSet ) { bUseOurTabStops = _bSet; } - inline void SetNoExtLeading( bool _bSet ) { bNoExtLeading = _bSet; } - inline void SetUseLineSpacing( bool _bSet ) { bUseLineSpacing = _bSet; } - inline void SetAddTableSpacing( bool _bSet ) { bAddTableSpacing = _bSet; } - inline void SetUseObjPos( bool _bSet ) { bUseObjPos = _bSet; } - inline void SetUseOurTextWrapping( bool _bSet ) { bUseOurTextWrapping = _bSet; } - inline void SetConsiderWrappingStyle( bool _bSet ) { bConsiderWrappingStyle = _bSet; } - inline void SetExpandWordSpace( bool _bSet ) { bExpandWordSpace = _bSet; } - - public: - OUString sName; - OUString sModule; - bool bUsePrtMetrics; - bool bAddSpacing; - bool bAddSpacingAtPages; - bool bUseOurTabStops; - bool bNoExtLeading; - bool bUseLineSpacing; - bool bAddTableSpacing; - bool bUseObjPos; - bool bUseOurTextWrapping; - bool bConsiderWrappingStyle; - bool bExpandWordSpace; -}; - -/*-**************************************************************************************************************** - @descr support simple menu structures and operations on it -****************************************************************************************************************-*/ -class SvtCompatibility -{ - public: - //--------------------------------------------------------------------------------------------------------- - // append one entry - void AppendEntry( const SvtCompatibilityEntry& rEntry ) - { - lEntries.push_back( rEntry ); - } - - //--------------------------------------------------------------------------------------------------------- - // the only way to free memory! - void Clear() - { - lEntries.clear(); - } - - //--------------------------------------------------------------------------------------------------------- - // convert internal list to external format - Sequence< Sequence< PropertyValue > > GetList() const - { - sal_Int32 nCount = (sal_Int32)lEntries.size(); - sal_Int32 nStep = 0; - Sequence< PropertyValue > lProperties( PROPERTYCOUNT ); - Sequence< Sequence< PropertyValue > > lResult( nCount ); - const vector< SvtCompatibilityEntry >* pList = &lEntries; - - lProperties[ OFFSET_NAME ].Name = PROPERTYNAME_NAME; - lProperties[ OFFSET_MODULE ].Name = PROPERTYNAME_MODULE; - lProperties[ OFFSET_USEPRTMETRICS ].Name = PROPERTYNAME_USEPRTMETRICS; - lProperties[ OFFSET_ADDSPACING ].Name = PROPERTYNAME_ADDSPACING; - lProperties[ OFFSET_ADDSPACINGATPAGES ].Name = PROPERTYNAME_ADDSPACINGATPAGES; - lProperties[ OFFSET_USEOURTABSTOPS ].Name = PROPERTYNAME_USEOURTABSTOPS; - lProperties[ OFFSET_NOEXTLEADING ].Name = PROPERTYNAME_NOEXTLEADING; - lProperties[ OFFSET_USELINESPACING ].Name = PROPERTYNAME_USELINESPACING; - lProperties[ OFFSET_ADDTABLESPACING ].Name = PROPERTYNAME_ADDTABLESPACING; - lProperties[ OFFSET_USEOBJPOS ].Name = PROPERTYNAME_USEOBJPOS; - lProperties[ OFFSET_USEOURTEXTWRAPPING ].Name = PROPERTYNAME_USEOURTEXTWRAP; - lProperties[ OFFSET_CONSIDERWRAPPINGSTYLE ].Name = PROPERTYNAME_CONSIDERWRAPSTYLE; - lProperties[ OFFSET_EXPANDWORDSPACE ].Name = PROPERTYNAME_EXPANDWORDSPACE; - - for ( vector< SvtCompatibilityEntry >::const_iterator pItem = pList->begin(); - pItem != pList->end(); ++pItem ) - { - lProperties[ OFFSET_NAME ].Value <<= pItem->sName; - lProperties[ OFFSET_MODULE ].Value <<= pItem->sModule; - lProperties[ OFFSET_USEPRTMETRICS ].Value <<= pItem->bUsePrtMetrics; - lProperties[ OFFSET_ADDSPACING ].Value <<= pItem->bAddSpacing; - lProperties[ OFFSET_ADDSPACINGATPAGES ].Value <<= pItem->bAddSpacingAtPages; - lProperties[ OFFSET_USEOURTABSTOPS ].Value <<= pItem->bUseOurTabStops; - lProperties[ OFFSET_NOEXTLEADING ].Value <<= pItem->bNoExtLeading; - lProperties[ OFFSET_USELINESPACING ].Value <<= pItem->bUseLineSpacing; - lProperties[ OFFSET_ADDTABLESPACING ].Value <<= pItem->bAddTableSpacing; - lProperties[ OFFSET_USEOBJPOS ].Value <<= pItem->bUseObjPos; - lProperties[ OFFSET_USEOURTEXTWRAPPING ].Value <<= pItem->bUseOurTextWrapping; - lProperties[ OFFSET_CONSIDERWRAPPINGSTYLE ].Value <<= pItem->bConsiderWrappingStyle; - lProperties[ OFFSET_EXPANDWORDSPACE ].Value <<= pItem->bExpandWordSpace; - lResult[ nStep ] = lProperties; - ++nStep; - } - - return lResult; - } - - int size() const - { - return lEntries.size(); - } - - const SvtCompatibilityEntry& operator[]( int i ) const - { - return lEntries[i]; - } - - private: - vector< SvtCompatibilityEntry > lEntries; -}; - -class SvtCompatibilityOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtCompatibilityOptions_Impl(); - ~SvtCompatibilityOptions_Impl(); - - void SetDefault( OUString sName, bool bValue ); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @seealso baseclass ConfigItem - - @param "lPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& lPropertyNames ); - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short base implementation of public interface for "SvtCompatibilityOptions"! - @descr These class is used as static member of "SvtCompatibilityOptions" ... - => The code exist only for one time and isn't duplicated for every instance! - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void Clear(); - Sequence< Sequence< PropertyValue > > GetList() const; - void AppendItem( const ::rtl::OUString& _sName, - const ::rtl::OUString& _sModule, - bool _bUsePrtMetrics, - bool _bAddSpacing, - bool _bAddSpacingAtPages, - bool _bUseOurTabStops, - bool _bNoExtLeading, - bool _bUseLineSpacing, - bool _bAddTableSpacing, - bool _bUseObjPos, - bool _bUseOurTextWrapping, - bool _bConsiderWrappingStyle, - bool _bExpandWordSpace ); - - inline bool IsUsePrtDevice() const { return m_aDefOptions.bUsePrtMetrics; } - inline bool IsAddSpacing() const { return m_aDefOptions.bAddSpacing; } - inline bool IsAddSpacingAtPages() const { return m_aDefOptions.bAddSpacingAtPages; } - inline bool IsUseOurTabStops() const { return m_aDefOptions.bUseOurTabStops; } - inline bool IsNoExtLeading() const { return m_aDefOptions.bNoExtLeading; } - inline bool IsUseLineSpacing() const { return m_aDefOptions.bUseLineSpacing; } - inline bool IsAddTableSpacing() const { return m_aDefOptions.bAddTableSpacing; } - inline bool IsUseObjPos() const { return m_aDefOptions.bUseObjPos; } - inline bool IsUseOurTextWrapping() const { return m_aDefOptions.bUseOurTextWrapping; } - inline bool IsConsiderWrappingStyle() const { return m_aDefOptions.bConsiderWrappingStyle; } - inline bool IsExpandWordSpace() const { return m_aDefOptions.bExpandWordSpace; } - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return list of key names of our configuration management which represent one module tree - @descr These methods return the current list of key names! We need it to get needed values from our - configuration management and support dynamical menu item lists! - - @seealso - - - @param - - @return A list of configuration key names is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - Sequence< OUString > impl_GetPropertyNames( Sequence< OUString >& rItems ); - - /*-****************************************************************************************************//** - @short expand the list for all well known properties to destination - @descr - - @attention - - - @seealso method impl_GetPropertyNames() - - @param "lSource" , original list - @param "lDestination" , destination of operation - @return A list of configuration key names is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - void impl_ExpandPropertyNames( const Sequence< OUString >& lSource, - Sequence< OUString >& lDestination ); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - SvtCompatibility m_aOptions; - SvtCompatibilityEntry m_aDefOptions; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtCompatibilityOptions_Impl::SvtCompatibilityOptions_Impl() - // Init baseclasses first - : ConfigItem( ROOTNODE_OPTIONS ) - // Init member then... -{ - // Get names and values of all accessable menu entries and fill internal structures. - // See impl_GetPropertyNames() for further informations. - Sequence< OUString > lNodes; - Sequence< OUString > lNames = impl_GetPropertyNames( lNodes ); - sal_uInt32 nCount = lNodes.getLength(); - Sequence< Any > lValues = GetProperties( lNames ); - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - DBG_ASSERT( !( lNames.getLength()!=lValues.getLength() ), "SvtCompatibilityOptions_Impl::SvtCompatibilityOptions_Impl()\nI miss some values of configuration keys!\n" ); - - SvtCompatibilityEntry aItem; - sal_uInt32 nItem = 0; - sal_uInt32 nPosition = 0; - - // Get names/values for new menu. - // 4 subkeys for every item! - bool bDefaultFound = false; - for( nItem = 0; nItem < nCount; ++nItem ) - { - aItem.sName = lNodes[ nItem ]; - lValues[ nPosition++ ] >>= aItem.sModule; - lValues[ nPosition++ ] >>= aItem.bUsePrtMetrics; - lValues[ nPosition++ ] >>= aItem.bAddSpacing; - lValues[ nPosition++ ] >>= aItem.bAddSpacingAtPages; - lValues[ nPosition++ ] >>= aItem.bUseOurTabStops; - lValues[ nPosition++ ] >>= aItem.bNoExtLeading; - lValues[ nPosition++ ] >>= aItem.bUseLineSpacing; - lValues[ nPosition++ ] >>= aItem.bAddTableSpacing; - lValues[ nPosition++ ] >>= aItem.bUseObjPos; - lValues[ nPosition++ ] >>= aItem.bUseOurTextWrapping; - lValues[ nPosition++ ] >>= aItem.bConsiderWrappingStyle; - lValues[ nPosition++ ] >>= aItem.bExpandWordSpace; - m_aOptions.AppendEntry( aItem ); - - if ( !bDefaultFound && aItem.sName.equals( COMPATIBILITY_DEFAULT_NAME ) != sal_False ) - { - SvtSysLocale aSysLocale; - com::sun::star::lang::Locale aLocale = aSysLocale.GetLocale(); - if ( aLocale.Language.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("zh")) || - aLocale.Language.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ja")) || - aLocale.Language.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ko")) ) - aItem.bExpandWordSpace = false; - - m_aDefOptions = aItem; - bDefaultFound = true; - } - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtCompatibilityOptions_Impl::~SvtCompatibilityOptions_Impl() -{ - // We must save our current values .. if user forget it! - if( IsModified() == sal_True ) - { - Commit(); - } -} - -void SvtCompatibilityOptions_Impl::SetDefault( OUString sName, bool bValue ) -{ - if ( COMPATIBILITY_PROPERTYNAME_USEPRTMETRICS.equals( sName ) ) - m_aDefOptions.SetUsePrtMetrics( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_ADDSPACING.equals( sName ) ) - m_aDefOptions.SetAddSpacing( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_ADDSPACINGATPAGES.equals( sName ) ) - m_aDefOptions.SetAddSpacingAtPages( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_USEOURTABSTOPS.equals( sName ) ) - m_aDefOptions.SetUseOurTabStops( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_NOEXTLEADING.equals( sName ) ) - m_aDefOptions.SetNoExtLeading( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_USELINESPACING.equals( sName ) ) - m_aDefOptions.SetUseLineSpacing( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_ADDTABLESPACING.equals( sName ) ) - m_aDefOptions.SetAddTableSpacing( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_USEOBJECTPOSITIONING.equals( sName ) ) - m_aDefOptions.SetUseObjPos( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_USEOURTEXTWRAPPING.equals( sName ) ) - m_aDefOptions.SetUseOurTextWrapping( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_CONSIDERWRAPPINGSTYLE.equals( sName ) ) - m_aDefOptions.SetConsiderWrappingStyle( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_EXPANDWORDSPACE.equals( sName ) ) - m_aDefOptions.SetExpandWordSpace( bValue ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCompatibilityOptions_Impl::Notify( const Sequence< OUString >& ) -{ - DBG_ASSERT( sal_False, "SvtCompatibilityOptions_Impl::Notify()\nNot implemented yet! I don't know how I can handle a dynamical list of unknown properties ...\n" ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCompatibilityOptions_Impl::Commit() -{ - // Write all properties! - // Delete complete set first. - ClearNodeSet( SETNODE_ALLFILEFORMATS ); - - SvtCompatibilityEntry aItem; - OUString sNode; - Sequence< PropertyValue > lPropertyValues( PROPERTYCOUNT - 1 ); - sal_uInt32 nItem = 0; - sal_uInt32 nNewCount = m_aOptions.size(); - for( nItem = 0; nItem < nNewCount; ++nItem ) - { - aItem = m_aOptions[ nItem ]; - sNode = SETNODE_ALLFILEFORMATS + PATHDELIMITER + aItem.sName + PATHDELIMITER; - - lPropertyValues[ OFFSET_MODULE - 1 ].Name = sNode + PROPERTYNAME_MODULE; - lPropertyValues[ OFFSET_USEPRTMETRICS - 1 ].Name = sNode + PROPERTYNAME_USEPRTMETRICS; - lPropertyValues[ OFFSET_ADDSPACING - 1 ].Name = sNode + PROPERTYNAME_ADDSPACING; - lPropertyValues[ OFFSET_ADDSPACINGATPAGES - 1 ].Name = sNode + PROPERTYNAME_ADDSPACINGATPAGES; - lPropertyValues[ OFFSET_USEOURTABSTOPS - 1 ].Name = sNode + PROPERTYNAME_USEOURTABSTOPS; - lPropertyValues[ OFFSET_NOEXTLEADING - 1 ].Name = sNode + PROPERTYNAME_NOEXTLEADING; - lPropertyValues[ OFFSET_USELINESPACING - 1 ].Name = sNode + PROPERTYNAME_USELINESPACING; - lPropertyValues[ OFFSET_ADDTABLESPACING - 1 ].Name = sNode + PROPERTYNAME_ADDTABLESPACING; - lPropertyValues[ OFFSET_USEOBJPOS - 1 ].Name = sNode + PROPERTYNAME_USEOBJPOS; - lPropertyValues[ OFFSET_USEOURTEXTWRAPPING - 1 ].Name = sNode + PROPERTYNAME_USEOURTEXTWRAP; - lPropertyValues[ OFFSET_CONSIDERWRAPPINGSTYLE - 1 ].Name = sNode + PROPERTYNAME_CONSIDERWRAPSTYLE; - lPropertyValues[ OFFSET_EXPANDWORDSPACE - 1 ].Name = sNode + PROPERTYNAME_EXPANDWORDSPACE; - - lPropertyValues[ OFFSET_MODULE - 1 ].Value <<= aItem.sModule; - lPropertyValues[ OFFSET_USEPRTMETRICS - 1 ].Value <<= aItem.bUsePrtMetrics; - lPropertyValues[ OFFSET_ADDSPACING - 1 ].Value <<= aItem.bAddSpacing; - lPropertyValues[ OFFSET_ADDSPACINGATPAGES - 1 ].Value <<= aItem.bAddSpacingAtPages; - lPropertyValues[ OFFSET_USEOURTABSTOPS - 1 ].Value <<= aItem.bUseOurTabStops; - lPropertyValues[ OFFSET_NOEXTLEADING - 1 ].Value <<= aItem.bNoExtLeading; - lPropertyValues[ OFFSET_USELINESPACING - 1 ].Value <<= aItem.bUseLineSpacing; - lPropertyValues[ OFFSET_ADDTABLESPACING - 1 ].Value <<= aItem.bAddTableSpacing; - lPropertyValues[ OFFSET_USEOBJPOS - 1 ].Value <<= aItem.bUseObjPos; - lPropertyValues[ OFFSET_USEOURTEXTWRAPPING - 1 ].Value <<= aItem.bUseOurTextWrapping; - lPropertyValues[ OFFSET_CONSIDERWRAPPINGSTYLE - 1 ].Value <<= aItem.bConsiderWrappingStyle; - lPropertyValues[ OFFSET_EXPANDWORDSPACE - 1 ].Value <<= aItem.bExpandWordSpace; - - SetSetProperties( SETNODE_ALLFILEFORMATS, lPropertyValues ); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCompatibilityOptions_Impl::Clear() -{ - m_aOptions.Clear(); - SetModified(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< Sequence< PropertyValue > > SvtCompatibilityOptions_Impl::GetList() const -{ - Sequence< Sequence< PropertyValue > > lReturn; - lReturn = m_aOptions.GetList(); - return lReturn; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** - -void SvtCompatibilityOptions_Impl::AppendItem( const ::rtl::OUString& _sName, - const ::rtl::OUString& _sModule, - bool _bUsePrtMetrics, - bool _bAddSpacing, - bool _bAddSpacingAtPages, - bool _bUseOurTabStops, - bool _bNoExtLeading, - bool _bUseLineSpacing, - bool _bAddTableSpacing, - bool _bUseObjPos, - bool _bUseOurTextWrapping, - bool _bConsiderWrappingStyle, - bool _bExpandWordSpace ) -{ - SvtCompatibilityEntry aItem( _sName, _sModule ); - aItem.SetUsePrtMetrics( _bUsePrtMetrics ); - aItem.SetAddSpacing( _bAddSpacing ); - aItem.SetAddSpacingAtPages( _bAddSpacingAtPages ); - aItem.SetUseOurTabStops( _bUseOurTabStops ); - aItem.SetNoExtLeading( _bNoExtLeading ); - aItem.SetUseLineSpacing( _bUseLineSpacing ); - aItem.SetAddTableSpacing( _bAddTableSpacing ); - aItem.SetUseObjPos( _bUseObjPos ); - aItem.SetUseOurTextWrapping( _bUseOurTextWrapping ); - aItem.SetConsiderWrappingStyle( _bConsiderWrappingStyle ); - aItem.SetExpandWordSpace( _bExpandWordSpace ); - m_aOptions.AppendEntry( aItem ); - - // default item reset? - if ( _sName.equals( COMPATIBILITY_DEFAULT_NAME ) != sal_False ) - m_aDefOptions = aItem; - - SetModified(); -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Sequence< OUString > SvtCompatibilityOptions_Impl::impl_GetPropertyNames( Sequence< OUString >& rItems ) -{ - // First get ALL names of current existing list items in configuration! - rItems = GetNodeNames( SETNODE_ALLFILEFORMATS ); - // expand list to result list ... - Sequence< OUString > lProperties( rItems.getLength() * ( PROPERTYCOUNT - 1 ) ); - impl_ExpandPropertyNames( rItems, lProperties ); - // Return result. - return lProperties; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -void SvtCompatibilityOptions_Impl::impl_ExpandPropertyNames( - const Sequence< OUString >& lSource, Sequence< OUString >& lDestination ) -{ - OUString sFixPath; - sal_Int32 nDestStep = 0; - sal_Int32 nSourceCount = lSource.getLength(); - // Copy entries to destination and expand every item with 2 supported sub properties. - for( sal_Int32 nSourceStep = 0; nSourceStep < nSourceCount; ++nSourceStep ) - { - sFixPath = SETNODE_ALLFILEFORMATS; - sFixPath += PATHDELIMITER; - sFixPath += lSource[ nSourceStep ]; - sFixPath += PATHDELIMITER; - - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_MODULE; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_USEPRTMETRICS; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_ADDSPACING; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_ADDSPACINGATPAGES; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_USEOURTABSTOPS; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_NOEXTLEADING; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_USELINESPACING; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_ADDTABLESPACING; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_USEOBJPOS; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_USEOURTEXTWRAP; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_CONSIDERWRAPSTYLE; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_EXPANDWORDSPACE; - ++nDestStep; - } -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtCompatibilityOptions_Impl* SvtCompatibilityOptions::m_pDataContainer = NULL; -sal_Int32 SvtCompatibilityOptions::m_nRefCount = 0; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtCompatibilityOptions::SvtCompatibilityOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already exist! - if( m_pDataContainer == NULL ) - { - m_pDataContainer = new SvtCompatibilityOptions_Impl; - ItemHolder1::holdConfigItem(E_COMPATIBILITY); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtCompatibilityOptions::~SvtCompatibilityOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCompatibilityOptions::Clear() -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->Clear(); -} - -void SvtCompatibilityOptions::SetDefault( ::rtl::OUString sName, bool bValue ) -{ - m_pDataContainer->SetDefault( sName, bValue ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCompatibilityOptions::AppendItem( const ::rtl::OUString& sName, - const ::rtl::OUString& sModule, - bool bUsePrtMetrics, - bool bAddSpacing, - bool bAddSpacingAtPages, - bool bUseOurTabStops, - bool bNoExtLeading, - bool bUseLineSpacing, - bool bAddTableSpacing, - bool bUseObjPos, - bool bUseOurTextWrapping, - bool bConsiderWrappingStyle, - bool bExpandWordSpace ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->AppendItem( - sName, sModule, bUsePrtMetrics, bAddSpacing, - bAddSpacingAtPages, bUseOurTabStops, bNoExtLeading, - bUseLineSpacing, bAddTableSpacing, bUseObjPos, - bUseOurTextWrapping, bConsiderWrappingStyle, bExpandWordSpace ); -} - -bool SvtCompatibilityOptions::IsUsePrtDevice() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsUsePrtDevice(); -} - -bool SvtCompatibilityOptions::IsAddSpacing() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsAddSpacing(); -} - -bool SvtCompatibilityOptions::IsAddSpacingAtPages() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsAddSpacingAtPages(); -} - -bool SvtCompatibilityOptions::IsUseOurTabStops() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsUseOurTabStops(); -} - -bool SvtCompatibilityOptions::IsNoExtLeading() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsNoExtLeading(); -} - -bool SvtCompatibilityOptions::IsUseLineSpacing() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsUseLineSpacing(); -} - -bool SvtCompatibilityOptions::IsAddTableSpacing() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsAddTableSpacing(); -} - -bool SvtCompatibilityOptions::IsUseObjectPositioning() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsUseObjPos(); -} - -bool SvtCompatibilityOptions::IsUseOurTextWrapping() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsUseOurTextWrapping(); -} - -bool SvtCompatibilityOptions::IsConsiderWrappingStyle() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsConsiderWrappingStyle(); -} - -bool SvtCompatibilityOptions::IsExpandWordSpace() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsExpandWordSpace(); -} - -Sequence< Sequence< PropertyValue > > SvtCompatibilityOptions::GetList() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetList(); -} - -namespace -{ - class theCompatibilityOptionsMutex : public rtl::Static<osl::Mutex, theCompatibilityOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtCompatibilityOptions::GetOwnStaticMutex() -{ - return theCompatibilityOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/configitem.cxx b/unotools/source/config/configitem.cxx deleted file mode 100644 index a1f144b452..0000000000 --- a/unotools/source/config/configitem.cxx +++ /dev/null @@ -1,1344 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include "unotools/configitem.hxx" -#include "unotools/configmgr.hxx" -#include "unotools/configpathes.hxx" -#include <comphelper/processfactory.hxx> -#include <com/sun/star/beans/XMultiPropertySet.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/util/XChangesListener.hpp> -#include <com/sun/star/util/XChangesNotifier.hpp> -#include <com/sun/star/container/XHierarchicalNameAccess.hpp> -#include <com/sun/star/container/XHierarchicalName.hpp> -#include <com/sun/star/configuration/XTemplateContainer.hpp> -#include <com/sun/star/container/XNameContainer.hpp> -#include <com/sun/star/lang/XSingleServiceFactory.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/awt/XRequestCallback.hpp> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <com/sun/star/beans/PropertyAttribute.hpp> -#include <com/sun/star/util/XStringEscape.hpp> -#include <com/sun/star/util/XChangesBatch.hpp> -#include <osl/diagnose.h> -#include <tools/solarmutex.hxx> -#include <rtl/ustrbuf.hxx> - -using namespace utl; -using rtl::OUString; -using rtl::OString; -using namespace com::sun::star::uno; -using namespace com::sun::star::util; -using namespace com::sun::star::lang; -using namespace com::sun::star::beans; -using namespace com::sun::star::container; -using namespace com::sun::star::configuration; - -#define C2U(cChar) OUString(RTL_CONSTASCII_USTRINGPARAM(cChar)) -#include <cppuhelper/implbase1.hxx> // helper for implementations - -#ifdef DBG_UTIL -inline void lcl_CFG_DBG_EXCEPTION(const sal_Char* cText, const Exception& rEx) -{ - OString sMsg(cText); - sMsg += OString(rEx.Message.getStr(), rEx.Message.getLength(), RTL_TEXTENCODING_ASCII_US); - OSL_FAIL(sMsg.getStr()); -} -#define CATCH_INFO(a) \ -catch(Exception& rEx) \ -{ \ - lcl_CFG_DBG_EXCEPTION(a, rEx);\ -} -#else - #define lcl_CFG_DBG_EXCEPTION( a, b) - #define CATCH_INFO(a) catch(Exception& ){} -#endif - -/* - The ConfigChangeListener_Impl receives notifications from the configuration about changes that - have happened. It forwards this notification to the ConfigItem it knows a pParent by calling its - "CallNotify" method. As ConfigItems are most probably not thread safe, the SolarMutex is acquired - before doing so. -*/ - -namespace utl{ - class ConfigChangeListener_Impl : public cppu::WeakImplHelper1 - < - com::sun::star::util::XChangesListener - > - { - public: - ConfigItem* pParent; - const Sequence< OUString > aPropertyNames; - ConfigChangeListener_Impl(ConfigItem& rItem, const Sequence< OUString >& rNames); - ~ConfigChangeListener_Impl(); - - //XChangesListener - virtual void SAL_CALL changesOccurred( const ChangesEvent& Event ) throw(RuntimeException); - - //XEventListener - virtual void SAL_CALL disposing( const EventObject& Source ) throw(RuntimeException); - }; - -struct ConfigItem_Impl -{ - utl::ConfigManager* pManager; - sal_Int16 nMode; - sal_Bool bIsModified; - sal_Bool bEnableInternalNotification; - - sal_Int16 nInValueChange; - ConfigItem_Impl() : - pManager(0), - nMode(0), - bIsModified(sal_False), - bEnableInternalNotification(sal_False), - nInValueChange(0) - {} -}; -} - -class ValueCounter_Impl -{ - sal_Int16& rCnt; -public: - ValueCounter_Impl(sal_Int16& rCounter): - rCnt(rCounter) - {rCnt++;} - ~ValueCounter_Impl() - { - OSL_ENSURE(rCnt>0, "RefCount < 0 ??"); - rCnt--; - } -}; - -namespace -{ - // helper to achieve exception - safe handling of an Item under construction - template <class TYP> - class AutoDeleter // : Noncopyable - { - TYP* m_pItem; - public: - AutoDeleter(TYP * pItem) - : m_pItem(pItem) - { - } - - ~AutoDeleter() - { - delete m_pItem; - } - - void keep() { m_pItem = 0; } - }; -} - -ConfigChangeListener_Impl::ConfigChangeListener_Impl( - ConfigItem& rItem, const Sequence< OUString >& rNames) : - pParent(&rItem), - aPropertyNames(rNames) -{ -} - -ConfigChangeListener_Impl::~ConfigChangeListener_Impl() -{ -} - -sal_Bool lcl_Find( - const rtl::OUString& rTemp, - const OUString* pCheckPropertyNames, - sal_Int32 nLength) -{ - //return true if the path is completely correct or if it is longer - //i.e ...Print/Content/Graphic and .../Print - for(sal_Int32 nIndex = 0; nIndex < nLength; nIndex++) - if( isPrefixOfConfigurationPath(rTemp, pCheckPropertyNames[nIndex]) ) - return sal_True; - return sal_False; -} -//----------------------------------------------------------------------------- -void ConfigChangeListener_Impl::changesOccurred( const ChangesEvent& rEvent ) throw(RuntimeException) -{ - const ElementChange* pElementChanges = rEvent.Changes.getConstArray(); - - Sequence<OUString> aChangedNames(rEvent.Changes.getLength()); - OUString* pNames = aChangedNames.getArray(); - - const OUString* pCheckPropertyNames = aPropertyNames.getConstArray(); - - sal_Int32 nNotify = 0; - for(int i = 0; i < aChangedNames.getLength(); i++) - { - OUString sTemp; - pElementChanges[i].Accessor >>= sTemp; - if(lcl_Find(sTemp, pCheckPropertyNames, aPropertyNames.getLength())) - pNames[nNotify++] = sTemp; - } - if( nNotify ) - { - if ( ::tools::SolarMutex::Acquire() ) - { - aChangedNames.realloc(nNotify); - pParent->CallNotify(aChangedNames); - ::tools::SolarMutex::Release(); - } - } -} - - -void ConfigChangeListener_Impl::disposing( const EventObject& /*rSource*/ ) throw(RuntimeException) -{ - pParent->RemoveChangesListener(); -} - -ConfigItem::ConfigItem(const OUString &rSubTree, sal_Int16 nSetMode ) : - sSubTree(rSubTree), - pImpl(new ConfigItem_Impl) -{ - AutoDeleter<ConfigItem_Impl> aNewImpl(pImpl); - - pImpl->pManager = &ConfigManager::GetConfigManager(); - pImpl->nMode = nSetMode; - if(0 != (nSetMode&CONFIG_MODE_RELEASE_TREE)) - pImpl->pManager->AddConfigItem(*this); - else - m_xHierarchyAccess = pImpl->pManager->AddConfigItem(*this); - - // no more exceptions after c'tor has finished - aNewImpl.keep(); - pImpl->nMode &= ~CONFIG_MODE_PROPAGATE_ERRORS; -} - -ConfigItem::ConfigItem(utl::ConfigManager& rManager, const rtl::OUString rSubTree) : - sSubTree(rSubTree), - pImpl(new ConfigItem_Impl) -{ - pImpl->pManager = &rManager; - pImpl->nMode = CONFIG_MODE_IMMEDIATE_UPDATE; // does not allow exceptions - m_xHierarchyAccess = pImpl->pManager->AddConfigItem(*this); -} - -sal_Bool ConfigItem::IsValidConfigMgr() const -{ - return ( pImpl->pManager && pImpl->pManager->GetConfigurationProvider().is() ); -} - -ConfigItem::~ConfigItem() -{ - if(pImpl->pManager) - { - RemoveChangesListener(); - pImpl->pManager->RemoveConfigItem(*this); - } - delete pImpl; -} - -void ConfigItem::ReleaseConfigMgr() -{ - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - if(xHierarchyAccess.is()) - { - try - { - Reference<XChangesBatch> xBatch(xHierarchyAccess, UNO_QUERY); - xBatch->commitChanges(); - } - CATCH_INFO("Exception from commitChanges(): ") - } - RemoveChangesListener(); - OSL_ENSURE(pImpl->pManager, "ConfigManager already released"); - pImpl->pManager = 0; -} - -void ConfigItem::CallNotify( const com::sun::star::uno::Sequence<OUString>& rPropertyNames ) -{ - // the call is forwarded to the virtual Notify() method - // it is pure virtual, so all classes deriving from ConfigItem have to decide how they - // want to notify listeners - if(!IsInValueChange() || pImpl->bEnableInternalNotification) - Notify(rPropertyNames); -} - -sal_Bool lcl_IsLocalProperty(const OUString& rSubTree, const OUString& rProperty) -{ - static const sal_Char* aLocalProperties[] = - { - "Office.Common/Path/Current/Storage", - "Office.Common/Path/Current/Temp" - }; - static const int aLocalPropLen[] = - { - 34, - 31 - }; - OUString sProperty(rSubTree); - sProperty += C2U("/"); - sProperty += rProperty; - - if(sProperty.equalsAsciiL( aLocalProperties[0], aLocalPropLen[0]) || - sProperty.equalsAsciiL( aLocalProperties[1], aLocalPropLen[1])) - return sal_True; - - return sal_False; -} - -void ConfigItem::impl_packLocalizedProperties( const Sequence< OUString >& lInNames , - const Sequence< Any >& lInValues , - Sequence< Any >& lOutValues ) -{ - // Safe impossible cases. - // This method should be called for special ConfigItem-mode only! - OSL_ENSURE( ((pImpl->nMode & CONFIG_MODE_ALL_LOCALES ) == CONFIG_MODE_ALL_LOCALES), "ConfigItem::impl_packLocalizedProperties()\nWrong call of this method detected!\n" ); - - sal_Int32 nSourceCounter ; // used to step during input lists - sal_Int32 nSourceSize ; // marks end of loop over input lists - sal_Int32 nDestinationCounter ; // actual position in output lists - sal_Int32 nPropertyCounter ; // counter of inner loop for Sequence< PropertyValue > - sal_Int32 nPropertiesSize ; // marks end of inner loop - Sequence< OUString > lPropertyNames ; // list of all locales for localized entry - Sequence< PropertyValue > lProperties ; // localized values of an configuration entry packed for return - Reference< XInterface > xLocalizedNode ; // if cfg entry is localized ... lInValues contains an XInterface! - - // Optimise follow algorithm ... A LITTLE BIT :-) - // There exist two different possibilities: - // i ) There exist no localized entries ... => size of lOutValues will be the same like lInNames/lInValues! - // ii) There exist some (mostly one or two) localized entries ... => size of lOutValues will be the same like lInNames/lInValues! - // ... Why? If a localized value exist - the any is filled with an XInterface object (is a SetNode-service). - // We read all his child nodes and pack it into Sequence< PropertyValue >. - // The result list we pack into the return any. We never change size of lists! - nSourceSize = lInNames.getLength(); - lOutValues.realloc( nSourceSize ); - - // Algorithm: - // Copy all names and values from in to out lists. - // Look for special localized entries ... You can detect it as "XInterface" packed into an Any. - // Use this XInterface-object to read all localized values and pack it into Sequence< PropertValue >. - // Add this list to out lists then. - - nDestinationCounter = 0; - for( nSourceCounter=0; nSourceCounter<nSourceSize; ++nSourceCounter ) - { - // If item a special localized one ... convert and pack it ... - if( lInValues[nSourceCounter].getValueTypeName() == C2U("com.sun.star.uno.XInterface") ) - { - lInValues[nSourceCounter] >>= xLocalizedNode; - Reference< XNameContainer > xSetAccess( xLocalizedNode, UNO_QUERY ); - if( xSetAccess.is() == sal_True ) - { - lPropertyNames = xSetAccess->getElementNames() ; - nPropertiesSize = lPropertyNames.getLength() ; - lProperties.realloc( nPropertiesSize ) ; - - for( nPropertyCounter=0; nPropertyCounter<nPropertiesSize; ++nPropertyCounter ) - { - #if OSL_DEBUG_LEVEL > 1 - // Sometimes it's better to see what's going on :-) - OUString sPropName = lInNames[nSourceCounter]; - OUString sLocaleName = lPropertyNames[nPropertyCounter]; - #endif - lProperties[nPropertyCounter].Name = lPropertyNames[nPropertyCounter] ; - OUString sLocaleValue; - xSetAccess->getByName( lPropertyNames[nPropertyCounter] ) >>= sLocaleValue ; - lProperties[nPropertyCounter].Value <<= sLocaleValue; - } - - lOutValues[nDestinationCounter] <<= lProperties; - } - } - // ... or copy normal items to return lists directly. - else - { - lOutValues[nDestinationCounter] = lInValues[nSourceCounter]; - } - ++nDestinationCounter; - } -} - -void ConfigItem::impl_unpackLocalizedProperties( const Sequence< OUString >& lInNames , - const Sequence< Any >& lInValues , - Sequence< OUString >& lOutNames , - Sequence< Any >& lOutValues ) -{ - // Safe impossible cases. - // This method should be called for special ConfigItem-mode only! - OSL_ENSURE( ((pImpl->nMode & CONFIG_MODE_ALL_LOCALES ) == CONFIG_MODE_ALL_LOCALES), "ConfigItem::impl_unpackLocalizedProperties()\nWrong call of this method detected!\n" ); - - sal_Int32 nSourceCounter ; // used to step during input lists - sal_Int32 nSourceSize ; // marks end of loop over input lists - sal_Int32 nDestinationCounter ; // actual position in output lists - sal_Int32 nPropertyCounter ; // counter of inner loop for Sequence< PropertyValue > - sal_Int32 nPropertiesSize ; // marks end of inner loop - OUString sNodeName ; // base name of node ( e.g. "UIName/" ) ... expand to locale ( e.g. "UIName/de" ) - Sequence< PropertyValue > lProperties ; // localized values of an configuration entry getted from lInValues-Any - - // Optimise follow algorithm ... A LITTLE BIT :-) - // There exist two different possibilities: - // i ) There exist no localized entries ... => size of lOutNames/lOutValues will be the same like lInNames/lInValues! - // ii) There exist some (mostly one or two) localized entries ... => size of lOutNames/lOutValues will be some bytes greater then lInNames/lInValues. - // => I think we should make it fast for i). ii) is a special case and mustn't be SOOOO... fast. - // We should reserve same space for output list like input ones first. - // Follow algorithm looks for these borders and change it for ii) only! - // It will be faster then a "realloc()" call in every loop ... - nSourceSize = lInNames.getLength(); - - lOutNames.realloc ( nSourceSize ); - lOutValues.realloc ( nSourceSize ); - - // Algorithm: - // Copy all names and values from const to return lists. - // Look for special localized entries ... You can detect it as Sequence< PropertyValue > packed into an Any. - // Split it ... insert PropertyValue.Name to lOutNames and PropertyValue.Value to lOutValues. - - nDestinationCounter = 0; - for( nSourceCounter=0; nSourceCounter<nSourceSize; ++nSourceCounter ) - { - // If item a special localized one ... split it and insert his parts to output lists ... - if( lInValues[nSourceCounter].getValueType() == ::getCppuType( (const Sequence< PropertyValue >*)NULL ) ) - { - lInValues[nSourceCounter] >>= lProperties ; - sNodeName = lInNames[nSourceCounter] ; - sNodeName += C2U("/") ; - nPropertiesSize = lProperties.getLength() ; - - if( (nDestinationCounter+nPropertiesSize) > lOutNames.getLength() ) - { - lOutNames.realloc ( nDestinationCounter+nPropertiesSize ); - lOutValues.realloc ( nDestinationCounter+nPropertiesSize ); - } - - for( nPropertyCounter=0; nPropertyCounter<nPropertiesSize; ++nPropertyCounter ) - { - lOutNames [nDestinationCounter] = sNodeName + lProperties[nPropertyCounter].Name ; - lOutValues[nDestinationCounter] = lProperties[nPropertyCounter].Value ; - ++nDestinationCounter; - } - } - // ... or copy normal items to return lists directly. - else - { - if( (nDestinationCounter+1) > lOutNames.getLength() ) - { - lOutNames.realloc ( nDestinationCounter+1 ); - lOutValues.realloc ( nDestinationCounter+1 ); - } - - lOutNames [nDestinationCounter] = lInNames [nSourceCounter]; - lOutValues[nDestinationCounter] = lInValues[nSourceCounter]; - ++nDestinationCounter; - } - } -} - -Sequence< sal_Bool > ConfigItem::GetReadOnlyStates(const com::sun::star::uno::Sequence< rtl::OUString >& rNames) -{ - sal_Int32 i; - - // size of return list is fix! - // Every item must match to length of incoming name list. - sal_Int32 nCount = rNames.getLength(); - Sequence< sal_Bool > lStates(nCount); - - // We must be shure to return a valid information everytime! - // Set default to non readonly ... similar to the configuration handling of this property. - for ( i=0; i<nCount; ++i) - lStates[i] = sal_False; - - // no access - no informations ... - Reference< XHierarchicalNameAccess > xHierarchyAccess = GetTree(); - if (!xHierarchyAccess.is()) - return lStates; - - for (i=0; i<nCount; ++i) - { - try - { - if(pImpl->pManager->IsLocalConfigProvider() && lcl_IsLocalProperty(sSubTree, rNames[i])) - { - OSL_FAIL("ConfigItem::IsReadonly()\nlocal mode seams to be used!?\n"); - continue; - } - - OUString sName = rNames[i]; - OUString sPath; - OUString sProperty; - - ::utl::splitLastFromConfigurationPath(sName,sPath,sProperty); - if (!sPath.getLength() && !sProperty.getLength()) - { - OSL_FAIL("ConfigItem::IsReadonly()\nsplitt failed\n"); - continue; - } - - Reference< XInterface > xNode; - Reference< XPropertySet > xSet ; - Reference< XPropertySetInfo > xInfo; - if (sPath.getLength()) - { - Any aNode = xHierarchyAccess->getByHierarchicalName(sPath); - if (!(aNode >>= xNode) || !xNode.is()) - { - OSL_FAIL("ConfigItem::IsReadonly()\nno set available\n"); - continue; - } - } - else - { - xNode = Reference< XInterface >(xHierarchyAccess, UNO_QUERY); - } - - xSet = Reference< XPropertySet >(xNode, UNO_QUERY); - if (xSet.is()) - { - xInfo = xSet->getPropertySetInfo(); - OSL_ENSURE(xInfo.is(), "ConfigItem::IsReadonly()\ngetPropertySetInfo failed ...\n"); - } - else - { - xInfo = Reference< XPropertySetInfo >(xNode, UNO_QUERY); - OSL_ENSURE(xInfo.is(), "ConfigItem::IsReadonly()\nUNO_QUERY failed ...\n"); - } - - if (!xInfo.is()) - { - OSL_FAIL("ConfigItem::IsReadonly()\nno prop info available\n"); - continue; - } - - Property aProp = xInfo->getPropertyByName(sProperty); - lStates[i] = ((aProp.Attributes & PropertyAttribute::READONLY) == PropertyAttribute::READONLY); - } - catch(Exception&){} - } - - return lStates; -} - -Sequence< Any > ConfigItem::GetProperties(const Sequence< OUString >& rNames) -{ - Sequence< Any > aRet(rNames.getLength()); - const OUString* pNames = rNames.getConstArray(); - Any* pRet = aRet.getArray(); - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - if(xHierarchyAccess.is()) - { - for(int i = 0; i < rNames.getLength(); i++) - { - try - { - if(pImpl->pManager->IsLocalConfigProvider() && lcl_IsLocalProperty(sSubTree, pNames[i])) - { - OUString sProperty(sSubTree); - sProperty += C2U("/"); - sProperty += pNames[i]; - pRet[i] = pImpl->pManager->GetLocalProperty(sProperty); - } - else - pRet[i] = xHierarchyAccess->getByHierarchicalName(pNames[i]); - } - catch(Exception& rEx) - { -#if OSL_DEBUG_LEVEL > 0 - OString sMsg("XHierarchicalNameAccess: "); - sMsg += OString(rEx.Message.getStr(), - rEx.Message.getLength(), - RTL_TEXTENCODING_ASCII_US); - sMsg += OString("\n"); - sMsg += OString(ConfigManager::GetConfigBaseURL().getStr(), - ConfigManager::GetConfigBaseURL().getLength(), - RTL_TEXTENCODING_ASCII_US); - sMsg += OString(sSubTree.getStr(), - sSubTree.getLength(), - RTL_TEXTENCODING_ASCII_US); - sMsg += OString("/"); - sMsg += OString(pNames[i].getStr(), - pNames[i].getLength(), - RTL_TEXTENCODING_ASCII_US); - OSL_FAIL(sMsg.getStr()); -#else - (void) rEx; // avoid warning -#endif - } - } - - // In special mode "ALL_LOCALES" we must convert localized values to Sequence< PropertyValue >. - if((pImpl->nMode & CONFIG_MODE_ALL_LOCALES ) == CONFIG_MODE_ALL_LOCALES) - { - Sequence< Any > lValues; - impl_packLocalizedProperties( rNames, aRet, lValues ); - aRet = lValues; - } - } - return aRet; -} - -sal_Bool ConfigItem::PutProperties( const Sequence< OUString >& rNames, - const Sequence< Any>& rValues) -{ - ValueCounter_Impl aCounter(pImpl->nInValueChange); - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - Reference<XNameReplace> xTopNodeReplace(xHierarchyAccess, UNO_QUERY); - sal_Bool bRet = xHierarchyAccess.is() && xTopNodeReplace.is(); - if(bRet) - { - Sequence< OUString > lNames ; - Sequence< Any > lValues ; - const OUString* pNames = NULL ; - const Any* pValues = NULL ; - sal_Int32 nNameCount ; - if(( pImpl->nMode & CONFIG_MODE_ALL_LOCALES ) == CONFIG_MODE_ALL_LOCALES ) - { - // If ConfigItem works in "ALL_LOCALES"-mode ... we must support a Sequence< PropertyValue > - // as value of an localized configuration entry! - // How we can do that? - // We must split all PropertyValues to "Sequence< OUString >" AND "Sequence< Any >"! - impl_unpackLocalizedProperties( rNames, rValues, lNames, lValues ); - pNames = lNames.getConstArray (); - pValues = lValues.getConstArray (); - nNameCount = lNames.getLength (); - } - else - { - // This is the normal mode ... - // Use given input lists directly. - pNames = rNames.getConstArray (); - pValues = rValues.getConstArray (); - nNameCount = rNames.getLength (); - } - for(int i = 0; i < nNameCount; i++) - { - if(pImpl->pManager->IsLocalConfigProvider() && lcl_IsLocalProperty(sSubTree, pNames[i])) - { - OUString sProperty(sSubTree); - sProperty += C2U("/"); - sProperty += pNames[i]; - pImpl->pManager->PutLocalProperty(sProperty, pValues[i]); - } - else - { - try - { - OUString sNode, sProperty; - if (splitLastFromConfigurationPath(pNames[i],sNode, sProperty)) - { - Any aNode = xHierarchyAccess->getByHierarchicalName(sNode); - - Reference<XNameAccess> xNodeAcc; - aNode >>= xNodeAcc; - Reference<XNameReplace> xNodeReplace(xNodeAcc, UNO_QUERY); - Reference<XNameContainer> xNodeCont (xNodeAcc, UNO_QUERY); - - sal_Bool bExist = (xNodeAcc.is() && xNodeAcc->hasByName(sProperty)); - if (bExist && xNodeReplace.is()) - xNodeReplace->replaceByName(sProperty, pValues[i]); - else - if (!bExist && xNodeCont.is()) - xNodeCont->insertByName(sProperty, pValues[i]); - else - bRet = sal_False; - } - else //direct value - { - xTopNodeReplace->replaceByName(sProperty, pValues[i]); - } - } - CATCH_INFO("Exception from PutProperties: "); - } - } - try - { - Reference<XChangesBatch> xBatch(xHierarchyAccess, UNO_QUERY); - xBatch->commitChanges(); - } - CATCH_INFO("Exception from commitChanges(): ") - } - - return bRet; -} - -void ConfigItem::DisableNotification() -{ - OSL_ENSURE( xChangeLstnr.is(), "ConfigItem::DisableNotification: notifications not enabled currently!" ); - RemoveChangesListener(); -} - -sal_Bool ConfigItem::EnableNotification(const Sequence< OUString >& rNames, - sal_Bool bEnableInternalNotification ) - -{ - OSL_ENSURE(0 == (pImpl->nMode&CONFIG_MODE_RELEASE_TREE), "notification in CONFIG_MODE_RELEASE_TREE mode not possible"); - pImpl->bEnableInternalNotification = bEnableInternalNotification; - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - Reference<XChangesNotifier> xChgNot(xHierarchyAccess, UNO_QUERY); - if(!xChgNot.is()) - return sal_False; - - OSL_ENSURE(!xChangeLstnr.is(), "EnableNotification already called"); - if(xChangeLstnr.is()) - xChgNot->removeChangesListener( xChangeLstnr ); - sal_Bool bRet = sal_True; - - try - { - xChangeLstnr = new ConfigChangeListener_Impl(*this, rNames); - xChgNot->addChangesListener( xChangeLstnr ); - } - catch(RuntimeException& ) - { - bRet = sal_False; - } - return bRet; -} - -void ConfigItem::RemoveChangesListener() -{ - Reference<XChangesNotifier> xChgNot(m_xHierarchyAccess, UNO_QUERY); - if(xChgNot.is() && xChangeLstnr.is()) - { - try - { - xChgNot->removeChangesListener( xChangeLstnr ); - xChangeLstnr = 0; - } - catch(Exception & ) - { - } - } -} - -void lcl_normalizeLocalNames(Sequence< OUString >& _rNames, ConfigNameFormat _eFormat, Reference<XInterface> const& _xParentNode) -{ - switch (_eFormat) - { - case CONFIG_NAME_LOCAL_NAME: - // unaltered - this is our input format - break; - - case CONFIG_NAME_FULL_PATH: - { - Reference<XHierarchicalName> xFormatter(_xParentNode, UNO_QUERY); - if (xFormatter.is()) - { - OUString * pNames = _rNames.getArray(); - for(int i = 0; i<_rNames.getLength(); ++i) - try - { - pNames[i] = xFormatter->composeHierarchicalName(pNames[i]); - } - CATCH_INFO("Exception from composeHierarchicalName(): ") - break; - } - } - OSL_FAIL("Cannot create absolute pathes: missing interface"); - // make local pathes instaed - - case CONFIG_NAME_LOCAL_PATH: - { - Reference<XTemplateContainer> xTypeContainer(_xParentNode, UNO_QUERY); - if (xTypeContainer.is()) - { - OUString sTypeName = xTypeContainer->getElementTemplateName(); - sTypeName = sTypeName.copy(sTypeName.lastIndexOf('/')+1); - - OUString * pNames = _rNames.getArray(); - for(int i = 0; i<_rNames.getLength(); ++i) - { - pNames[i] = wrapConfigurationElementName(pNames[i],sTypeName); - } - } - else - { - static const OUString sSetService(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.SetAccess")); - Reference<XServiceInfo> xSVI(_xParentNode, UNO_QUERY); - if (xSVI.is() && xSVI->supportsService(sSetService)) - { - OUString * pNames = _rNames.getArray(); - for(int i = 0; i<_rNames.getLength(); ++i) - { - pNames[i] = wrapConfigurationElementName(pNames[i]); - } - } - } - } - break; - - case CONFIG_NAME_PLAINTEXT_NAME: - { - Reference<XStringEscape> xEscaper(_xParentNode, UNO_QUERY); - if (xEscaper.is()) - { - OUString * pNames = _rNames.getArray(); - for(int i = 0; i<_rNames.getLength(); ++i) - try - { - pNames[i] = xEscaper->unescapeString(pNames[i]); - } - CATCH_INFO("Exception from unescapeString(): ") - } - } - break; - - } -} - -Sequence< OUString > ConfigItem::GetNodeNames(const OUString& rNode) -{ - ConfigNameFormat const eDefaultFormat = CONFIG_NAME_LOCAL_NAME; // CONFIG_NAME_DEFAULT; - - return GetNodeNames(rNode, eDefaultFormat); -} - -Sequence< OUString > ConfigItem::GetNodeNames(const OUString& rNode, ConfigNameFormat eFormat) -{ - Sequence< OUString > aRet; - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - if(xHierarchyAccess.is()) - { - try - { - Reference<XNameAccess> xCont; - if(rNode.getLength()) - { - Any aNode = xHierarchyAccess->getByHierarchicalName(rNode); - aNode >>= xCont; - } - else - xCont = Reference<XNameAccess> (xHierarchyAccess, UNO_QUERY); - if(xCont.is()) - { - aRet = xCont->getElementNames(); - lcl_normalizeLocalNames(aRet,eFormat,xCont); - } - - } - CATCH_INFO("Exception from GetNodeNames: "); - } - return aRet; -} - -sal_Bool ConfigItem::ClearNodeSet(const OUString& rNode) -{ - ValueCounter_Impl aCounter(pImpl->nInValueChange); - sal_Bool bRet = sal_False; - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - if(xHierarchyAccess.is()) - { - try - { - Reference<XNameContainer> xCont; - if(rNode.getLength()) - { - Any aNode = xHierarchyAccess->getByHierarchicalName(rNode); - aNode >>= xCont; - } - else - xCont = Reference<XNameContainer> (xHierarchyAccess, UNO_QUERY); - if(!xCont.is()) - return sal_False; - Sequence< OUString > aNames = xCont->getElementNames(); - const OUString* pNames = aNames.getConstArray(); - Reference<XChangesBatch> xBatch(xHierarchyAccess, UNO_QUERY); - for(sal_Int32 i = 0; i < aNames.getLength(); i++) - { - try - { - xCont->removeByName(pNames[i]); - } - CATCH_INFO("Exception from removeByName(): ") - } - xBatch->commitChanges(); - bRet = sal_True; - } - CATCH_INFO("Exception from ClearNodeSet") - } - return bRet; -} - -sal_Bool ConfigItem::ClearNodeElements(const OUString& rNode, Sequence< OUString >& rElements) -{ - ValueCounter_Impl aCounter(pImpl->nInValueChange); - sal_Bool bRet = sal_False; - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - if(xHierarchyAccess.is()) - { - const OUString* pElements = rElements.getConstArray(); - try - { - Reference<XNameContainer> xCont; - if(rNode.getLength()) - { - Any aNode = xHierarchyAccess->getByHierarchicalName(rNode); - aNode >>= xCont; - } - else - xCont = Reference<XNameContainer> (xHierarchyAccess, UNO_QUERY); - if(!xCont.is()) - return sal_False; - try - { - for(sal_Int32 nElement = 0; nElement < rElements.getLength(); nElement++) - { - xCont->removeByName(pElements[nElement]); - } - Reference<XChangesBatch> xBatch(xHierarchyAccess, UNO_QUERY); - xBatch->commitChanges(); - } - CATCH_INFO("Exception from commitChanges(): ") - bRet = sal_True; - } - CATCH_INFO("Exception from GetNodeNames: ") - } - return bRet; -} -//---------------------------------------------------------------------------- -static inline -OUString lcl_extractSetPropertyName( const OUString& rInPath, const OUString& rPrefix ) -{ - OUString const sSubPath = dropPrefixFromConfigurationPath( rInPath, rPrefix); - return extractFirstFromConfigurationPath( sSubPath ); -} -//---------------------------------------------------------------------------- -static -Sequence< OUString > lcl_extractSetPropertyNames( const Sequence< PropertyValue >& rValues, const OUString& rPrefix ) -{ - const PropertyValue* pProperties = rValues.getConstArray(); - - Sequence< OUString > aSubNodeNames(rValues.getLength()); - OUString* pSubNodeNames = aSubNodeNames.getArray(); - - OUString sLastSubNode; - sal_Int32 nSubIndex = 0; - - for(sal_Int32 i = 0; i < rValues.getLength(); i++) - { - OUString const sSubPath = dropPrefixFromConfigurationPath( pProperties[i].Name, rPrefix); - OUString const sSubNode = extractFirstFromConfigurationPath( sSubPath ); - - if(sLastSubNode != sSubNode) - { - pSubNodeNames[nSubIndex++] = sSubNode; - } - - sLastSubNode = sSubNode; - } - aSubNodeNames.realloc(nSubIndex); - - return aSubNodeNames; -} - -// Add or change properties -sal_Bool ConfigItem::SetSetProperties( - const OUString& rNode, Sequence< PropertyValue > rValues) -{ - ValueCounter_Impl aCounter(pImpl->nInValueChange); - sal_Bool bRet = sal_True; - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - if(xHierarchyAccess.is()) - { - Reference<XChangesBatch> xBatch(xHierarchyAccess, UNO_QUERY); - try - { - Reference<XNameContainer> xCont; - if(rNode.getLength()) - { - Any aNode = xHierarchyAccess->getByHierarchicalName(rNode); - aNode >>= xCont; - } - else - xCont = Reference<XNameContainer> (xHierarchyAccess, UNO_QUERY); - if(!xCont.is()) - return sal_False; - - Reference<XSingleServiceFactory> xFac(xCont, UNO_QUERY); - - if(xFac.is()) - { - const Sequence< OUString > aSubNodeNames = lcl_extractSetPropertyNames(rValues, rNode); - - const sal_Int32 nSubNodeCount = aSubNodeNames.getLength(); - - for(sal_Int32 j = 0; j <nSubNodeCount ; j++) - { - if(!xCont->hasByName(aSubNodeNames[j])) - { - Reference<XInterface> xInst = xFac->createInstance(); - Any aVal; aVal <<= xInst; - xCont->insertByName(aSubNodeNames[j], aVal); - } - //set values - } - try - { - xBatch->commitChanges(); - } - CATCH_INFO("Exception from commitChanges(): ") - - const PropertyValue* pProperties = rValues.getConstArray(); - - Sequence< OUString > aSetNames(rValues.getLength()); - OUString* pSetNames = aSetNames.getArray(); - - Sequence< Any> aSetValues(rValues.getLength()); - Any* pSetValues = aSetValues.getArray(); - - sal_Bool bEmptyNode = rNode.getLength() == 0; - for(sal_Int32 k = 0; k < rValues.getLength(); k++) - { - pSetNames[k] = pProperties[k].Name.copy( bEmptyNode ? 1 : 0); - pSetValues[k] = pProperties[k].Value; - } - bRet = PutProperties(aSetNames, aSetValues); - } - else - { - //if no factory is available then the node contains basic data elements - const PropertyValue* pValues = rValues.getConstArray(); - for(int nValue = 0; nValue < rValues.getLength();nValue++) - { - try - { - OUString sSubNode = lcl_extractSetPropertyName( pValues[nValue].Name, rNode ); - - if(xCont->hasByName(sSubNode)) - xCont->replaceByName(sSubNode, pValues[nValue].Value); - else - xCont->insertByName(sSubNode, pValues[nValue].Value); - - OSL_ENSURE( xHierarchyAccess->hasByHierarchicalName(pValues[nValue].Name), - "Invalid config path" ); - } - CATCH_INFO("Exception form insert/replaceByName(): ") - } - xBatch->commitChanges(); - } - } -#ifdef DBG_UTIL - catch(Exception& rEx) - { - lcl_CFG_DBG_EXCEPTION("Exception from SetSetProperties: ", rEx); -#else - catch(Exception&) - { -#endif - bRet = sal_False; - } - } - return bRet; -} - -sal_Bool ConfigItem::ReplaceSetProperties( - const OUString& rNode, Sequence< PropertyValue > rValues) -{ - ValueCounter_Impl aCounter(pImpl->nInValueChange); - sal_Bool bRet = sal_True; - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - if(xHierarchyAccess.is()) - { - Reference<XChangesBatch> xBatch(xHierarchyAccess, UNO_QUERY); - try - { - Reference<XNameContainer> xCont; - if(rNode.getLength()) - { - Any aNode = xHierarchyAccess->getByHierarchicalName(rNode); - aNode >>= xCont; - } - else - xCont = Reference<XNameContainer> (xHierarchyAccess, UNO_QUERY); - if(!xCont.is()) - return sal_False; - - // JB: Change: now the same name handling for sets of simple values - const Sequence< OUString > aSubNodeNames = lcl_extractSetPropertyNames(rValues, rNode); - const OUString* pSubNodeNames = aSubNodeNames.getConstArray(); - const sal_Int32 nSubNodeCount = aSubNodeNames.getLength(); - - Reference<XSingleServiceFactory> xFac(xCont, UNO_QUERY); - const bool isSimpleValueSet = !xFac.is(); - - //remove unknown members first - { - const Sequence<OUString> aContainerSubNodes = xCont->getElementNames(); - const OUString* pContainerSubNodes = aContainerSubNodes.getConstArray(); - - for(sal_Int32 nContSub = 0; nContSub < aContainerSubNodes.getLength(); nContSub++) - { - sal_Bool bFound = sal_False; - for(sal_Int32 j = 0; j < nSubNodeCount; j++) - { - if(pSubNodeNames[j] == pContainerSubNodes[nContSub]) - { - bFound = sal_True; - break; - } - } - if(!bFound) - try - { - xCont->removeByName(pContainerSubNodes[nContSub]); - } - catch (Exception & ) - { - if (isSimpleValueSet) - try - { - // #i37322#: fallback action: replace with <void/> - xCont->replaceByName(pContainerSubNodes[nContSub], Any()); - // fallback successfull: continue looping - continue; - } - catch (Exception &) - {} // propagate original exception, if fallback fails - - throw; - } - } - try { xBatch->commitChanges(); } - CATCH_INFO("Exception from commitChanges(): ") - } - - if(xFac.is()) // !isSimpleValueSet - { - for(sal_Int32 j = 0; j < nSubNodeCount; j++) - { - if(!xCont->hasByName(pSubNodeNames[j])) - { - //create if not available - Reference<XInterface> xInst = xFac->createInstance(); - Any aVal; aVal <<= xInst; - xCont->insertByName(pSubNodeNames[j], aVal); - } - } - try { xBatch->commitChanges(); } - CATCH_INFO("Exception from commitChanges(): ") - - const PropertyValue* pProperties = rValues.getConstArray(); - - Sequence< OUString > aSetNames(rValues.getLength()); - OUString* pSetNames = aSetNames.getArray(); - - Sequence< Any> aSetValues(rValues.getLength()); - Any* pSetValues = aSetValues.getArray(); - - sal_Bool bEmptyNode = rNode.getLength() == 0; - for(sal_Int32 k = 0; k < rValues.getLength(); k++) - { - pSetNames[k] = pProperties[k].Name.copy( bEmptyNode ? 1 : 0); - pSetValues[k] = pProperties[k].Value; - } - bRet = PutProperties(aSetNames, aSetValues); - } - else - { - const PropertyValue* pValues = rValues.getConstArray(); - - //if no factory is available then the node contains basic data elements - for(int nValue = 0; nValue < rValues.getLength();nValue++) - { - try - { - OUString sSubNode = lcl_extractSetPropertyName( pValues[nValue].Name, rNode ); - - if(xCont->hasByName(sSubNode)) - xCont->replaceByName(sSubNode, pValues[nValue].Value); - else - xCont->insertByName(sSubNode, pValues[nValue].Value); - } - CATCH_INFO("Exception from insert/replaceByName(): "); - } - xBatch->commitChanges(); - } - } -#ifdef DBG_UTIL - catch(Exception& rEx) - { - lcl_CFG_DBG_EXCEPTION("Exception from ReplaceSetProperties: ", rEx); -#else - catch(Exception&) - { -#endif - bRet = sal_False; - } - } - return bRet; -} - -sal_Bool ConfigItem::getUniqueSetElementName( const ::rtl::OUString& _rSetNode, ::rtl::OUString& _rName) -{ - ::rtl::OUString sNewElementName; - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - sal_Bool bRet = sal_False; - if(xHierarchyAccess.is()) - { - try - { - Reference< XNameAccess > xSetNode; - xHierarchyAccess->getByHierarchicalName(_rSetNode) >>= xSetNode; - if (xSetNode.is()) - { - const sal_uInt32 nPrime = 65521; // a prime number - const sal_uInt32 nPrimeLess2 = nPrime - 2; - sal_uInt32 nEngendering = (rand() % nPrimeLess2) + 2; // the engendering of the field - - // the element which will loop through the field - sal_uInt32 nFieldElement = nEngendering; - - for (; 1 != nFieldElement; nFieldElement = (nFieldElement * nEngendering) % nPrime) - { - ::rtl::OUString sThisRoundTrial = _rName; - sThisRoundTrial += ::rtl::OUString::valueOf((sal_Int32)nFieldElement); - - if (!xSetNode->hasByName(sThisRoundTrial)) - { - _rName = sThisRoundTrial; - bRet = sal_True; - break; - } - } - } - } - CATCH_INFO("Exception from getUniqueSetElementName(): ") - } - return bRet; -} - -sal_Bool ConfigItem::AddNode(const rtl::OUString& rNode, const rtl::OUString& rNewNode) -{ - ValueCounter_Impl aCounter(pImpl->nInValueChange); - sal_Bool bRet = sal_True; - Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree(); - if(xHierarchyAccess.is()) - { - Reference<XChangesBatch> xBatch(xHierarchyAccess, UNO_QUERY); - try - { - Reference<XNameContainer> xCont; - if(rNode.getLength()) - { - Any aNode = xHierarchyAccess->getByHierarchicalName(rNode); - aNode >>= xCont; - } - else - xCont = Reference<XNameContainer> (xHierarchyAccess, UNO_QUERY); - if(!xCont.is()) - return sal_False; - - Reference<XSingleServiceFactory> xFac(xCont, UNO_QUERY); - - if(xFac.is()) - { - if(!xCont->hasByName(rNewNode)) - { - Reference<XInterface> xInst = xFac->createInstance(); - Any aVal; aVal <<= xInst; - xCont->insertByName(rNewNode, aVal); - } - try - { - xBatch->commitChanges(); - } - CATCH_INFO("Exception from commitChanges(): ") - } - else - { - //if no factory is available then the node contains basic data elements - try - { - if(!xCont->hasByName(rNewNode)) - xCont->insertByName(rNewNode, Any()); - } - CATCH_INFO("Exception from AddNode(): ") - } - xBatch->commitChanges(); - } -#ifdef DBG_UTIL - catch(Exception& rEx) - { - lcl_CFG_DBG_EXCEPTION("Exception from AddNode(): ", rEx); -#else - catch(Exception&) - { -#endif - bRet = sal_False; - } - } - return bRet; -} - -sal_Int16 ConfigItem::GetMode() const -{ - return pImpl->nMode; -} - -void ConfigItem::SetModified() -{ - pImpl->bIsModified = sal_True; -} - -void ConfigItem::ClearModified() -{ - pImpl->bIsModified = sal_False; -} - -sal_Bool ConfigItem::IsModified() const -{ - return pImpl->bIsModified; -} - -sal_Bool ConfigItem::IsInValueChange() const -{ - return pImpl->nInValueChange > 0; -} - -Reference< XHierarchicalNameAccess> ConfigItem::GetTree() -{ - Reference< XHierarchicalNameAccess> xRet; - if(!m_xHierarchyAccess.is()) - xRet = pImpl->pManager->AcquireTree(*this); - else - xRet = m_xHierarchyAccess; - return xRet; -} - -void ConfigItem::LockTree() -{ - OSL_ENSURE(0 != (pImpl->nMode&CONFIG_MODE_RELEASE_TREE), "call LockTree in CONFIG_MODE_RELEASE_TREE mode, only"); - m_xHierarchyAccess = GetTree(); -} - -void ConfigItem::UnlockTree() -{ - OSL_ENSURE(0 != (pImpl->nMode&CONFIG_MODE_RELEASE_TREE), "call UnlockTree in CONFIG_MODE_RELEASE_TREE mode, only"); - if(0 != (pImpl->nMode&CONFIG_MODE_RELEASE_TREE)) - m_xHierarchyAccess = 0; -} - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/configmgr.cxx b/unotools/source/config/configmgr.cxx deleted file mode 100644 index dfa9cd9f7c..0000000000 --- a/unotools/source/config/configmgr.cxx +++ /dev/null @@ -1,712 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include "unotools/configmgr.hxx" -#include "unotools/configitem.hxx" -#include "unotools/configpathes.hxx" -#include <unotools/processfactory.hxx> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/container/XHierarchicalNameAccess.hpp> -#include <com/sun/star/container/XNameContainer.hpp> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <osl/diagnose.h> -#include <rtl/bootstrap.hxx> -#include <rtl/instance.hxx> -#if OSL_DEBUG_LEVEL > 0 -#include <rtl/strbuf.hxx> -#endif - -#include <list> - -#include <stdio.h> - -//----------------------------------------------------------------------------- - -using namespace utl; -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; -using namespace com::sun::star::beans; -using namespace com::sun::star::container; - -using ::rtl::OUString; -#if OSL_DEBUG_LEVEL > 0 -using ::rtl::OString; -#endif - -#define UNISTRING(s) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)) - -//----------------------------------------------------------------------------- -const char* pConfigBaseURL = "/org.openoffice."; -const char* pAccessSrvc = "com.sun.star.configuration.ConfigurationUpdateAccess"; - -namespace -{ - struct BrandName - : public rtl::Static< ::rtl::OUString, BrandName > {}; - struct ProductVersion - : public rtl::Static< ::rtl::OUString, ProductVersion > {}; - struct AboutBoxProductVersion - : public rtl::Static< ::rtl::OUString, AboutBoxProductVersion > {}; - struct OOOVendor - : public rtl::Static< ::rtl::OUString, OOOVendor > {}; - struct ProductExtension - : public rtl::Static< ::rtl::OUString, ProductExtension > {}; - struct XMLFileFormatName - : public rtl::Static< ::rtl::OUString, XMLFileFormatName > {}; - struct XMLFileFormatVersion - : public rtl::Static< ::rtl::OUString, XMLFileFormatVersion > {}; - struct WriterCompatibilityVersionOOo11 - : public rtl::Static< ::rtl::OUString, WriterCompatibilityVersionOOo11 > {}; - struct OpenSourceContext : public rtl::StaticWithInit< sal_Int32, OpenSourceContext > - { - sal_Int32 operator() () { return sal_Int32( -1 ); } - }; - -} - -//----------------------------------------------------------------------------- -struct ConfigItemListEntry_Impl -{ - ConfigItem* pConfigItem; - - ConfigItemListEntry_Impl(ConfigItem* pItem ) : - pConfigItem(pItem){} -}; -typedef std::list<ConfigItemListEntry_Impl> ConfigItemList; -struct utl::ConfigMgr_Impl -{ - ConfigItemList aItemList; -}; - -ConfigManager::ConfigManager() : - pMgrImpl(new utl::ConfigMgr_Impl) -{ - GetConfigurationProvider(); // attempt to create the provider early -} - -ConfigManager::ConfigManager(Reference< XMultiServiceFactory > xConfigProv) : - xConfigurationProvider(xConfigProv), - pMgrImpl(new utl::ConfigMgr_Impl) -{ -} - -ConfigManager::~ConfigManager() -{ - //check list content -> should be empty! -#if OSL_DEBUG_LEVEL > 0 - OSL_ENSURE(pMgrImpl->aItemList.empty(), "some ConfigItems are still alive"); -#endif - if(!pMgrImpl->aItemList.empty()) - { - ConfigItemList::iterator aListIter; - for(aListIter = pMgrImpl->aItemList.begin(); aListIter != pMgrImpl->aItemList.end(); ++aListIter) - { - ConfigItemListEntry_Impl& rEntry = *aListIter; -#if OSL_DEBUG_LEVEL > 0 - fprintf(stderr, "Dangling config item of %s\n", rtl::OUStringToOString(rEntry.pConfigItem->GetSubTreeName(), RTL_TEXTENCODING_UTF8).getStr()); -#endif - rEntry.pConfigItem->ReleaseConfigMgr(); - } - pMgrImpl->aItemList.erase(pMgrImpl->aItemList.begin(), pMgrImpl->aItemList.end()); - } - delete pMgrImpl; - -} - -Reference< XMultiServiceFactory > ConfigManager::GetConfigurationProvider() -{ - if(!xConfigurationProvider.is()) - { - Reference< XMultiServiceFactory > xMSF = ::utl::getProcessServiceFactory(); - if ( xMSF.is() ) - { - try - { - xConfigurationProvider = Reference< XMultiServiceFactory > - (xMSF->createInstance( - UNISTRING("com.sun.star.configuration.ConfigurationProvider")), - UNO_QUERY); - } -#if OSL_DEBUG_LEVEL > 1 - catch (const Exception& rEx) - { - static sal_Bool bMessage = sal_True; - if(bMessage) - { - bMessage = sal_False; - OString sMsg("CreateInstance with arguments exception: "); - sMsg += OString(rEx.Message.getStr(), - rEx.Message.getLength(), - RTL_TEXTENCODING_ASCII_US); - OSL_FAIL(sMsg.getStr()); - } - } -#else - catch (const Exception&) - { - } -#endif - } - } - return xConfigurationProvider; -} - -namespace -{ - // helper to achieve exception - safe registration of a ConfigItem under construction - class RegisterConfigItemHelper // : Noncopyable - { - utl::ConfigManager & rCfgMgr; - utl::ConfigItem* pCfgItem; - public: - RegisterConfigItemHelper(utl::ConfigManager & rMgr, utl::ConfigItem& rCfgItem) - : rCfgMgr(rMgr) - , pCfgItem(&rCfgItem) - { - rCfgMgr.RegisterConfigItem(rCfgItem); - } - - ~RegisterConfigItemHelper() - { - if (pCfgItem) rCfgMgr.RemoveConfigItem(*pCfgItem); - } - - void keep() { pCfgItem = 0; } - }; -} - -Reference< XMultiServiceFactory > ConfigManager::GetLocalConfigurationProvider() -{ - return GetConfigurationProvider(); -} - -Reference< XHierarchicalNameAccess > ConfigManager::AddConfigItem(utl::ConfigItem& rCfgItem) -{ - RegisterConfigItemHelper registeredItem(*this,rCfgItem); - Reference< XHierarchicalNameAccess > xTree = AcquireTree(rCfgItem); - registeredItem.keep(); - return xTree; -} - -void ConfigManager::RegisterConfigItem(utl::ConfigItem& rCfgItem) -{ - ConfigItemList::iterator aListIter = pMgrImpl->aItemList.begin(); -#if OSL_DEBUG_LEVEL > 1 - for(aListIter = pMgrImpl->aItemList.begin(); aListIter != pMgrImpl->aItemList.end(); ++aListIter) - { - ConfigItemListEntry_Impl& rEntry = *aListIter; - if(rEntry.pConfigItem == &rCfgItem) - OSL_FAIL("RegisterConfigItem: already inserted!"); - } -#endif - pMgrImpl->aItemList.insert(aListIter, ConfigItemListEntry_Impl(&rCfgItem)); -} - -Reference< XHierarchicalNameAccess> ConfigManager::AcquireTree(utl::ConfigItem& rCfgItem) -{ -#if OSL_DEBUG_LEVEL > 1 - sal_Bool bFound = sal_False; - ConfigItemList::iterator aListIter = pMgrImpl->aItemList.begin(); - for(aListIter = pMgrImpl->aItemList.begin(); aListIter != pMgrImpl->aItemList.end(); ++aListIter) - { - ConfigItemListEntry_Impl& rEntry = *aListIter; - if(rEntry.pConfigItem == &rCfgItem) - { - bFound = sal_True; - break; - } - } - OSL_ENSURE(bFound, "AcquireTree: ConfigItem unknown!"); -#endif - OUString sPath(OUString::createFromAscii(pConfigBaseURL)); - sPath += rCfgItem.GetSubTreeName(); - Sequence< Any > aArgs(2); - Any* pArgs = aArgs.getArray(); - PropertyValue aPath; - aPath.Name = UNISTRING("nodepath"); - aPath.Value <<= sPath; - pArgs[0] <<= aPath; - sal_Bool bLazy = 0 != (rCfgItem.GetMode()&CONFIG_MODE_DELAYED_UPDATE); - PropertyValue aUpdate; - aUpdate.Name = UNISTRING("lazywrite"); - aUpdate.Value.setValue(&bLazy, ::getBooleanCppuType()); - pArgs[1] <<= aUpdate; - - // Initialize item with support for reading/writing more then one locales at same time! - // It's neccessary for creation of a complete configuration entry without changing office locale - // at runtime. - if((rCfgItem.GetMode() & CONFIG_MODE_ALL_LOCALES) == CONFIG_MODE_ALL_LOCALES) - { - sal_Int32 nCount = aArgs.getLength(); - aArgs.realloc(nCount+1); - - PropertyValue aAllLocale; - aAllLocale.Name = UNISTRING("locale"); - aAllLocale.Value <<= UNISTRING("*" ); - aArgs[nCount] <<= aAllLocale; - } - - Reference< XMultiServiceFactory > xCfgProvider = GetConfigurationProvider(); - Reference< XInterface > xIFace; - if(xCfgProvider.is()) - { - try - { - xIFace = xCfgProvider->createInstanceWithArguments( - OUString::createFromAscii(pAccessSrvc), - aArgs); - } - catch (const Exception& rEx) - { - if (CONFIG_MODE_PROPAGATE_ERRORS & rCfgItem.GetMode()) - { - OSL_TRACE("ConfigItem: Propagating creation error: %s\n", - OUStringToOString(rEx.Message,RTL_TEXTENCODING_ASCII_US).getStr()); - - throw; - } -#if OSL_DEBUG_LEVEL > 1 - if(0 == (CONFIG_MODE_IGNORE_ERRORS & rCfgItem.GetMode())) - { - OString sMsg("CreateInstance exception: "); - sMsg += OString(rEx.Message.getStr(), - rEx.Message.getLength(), - RTL_TEXTENCODING_ASCII_US); - OSL_FAIL(sMsg.getStr()); - } -#endif - } - } - return Reference<XHierarchicalNameAccess>(xIFace, UNO_QUERY); -} - -void ConfigManager::RemoveConfigItem(utl::ConfigItem& rCfgItem) -{ - if( !pMgrImpl->aItemList.empty() ) - { - ConfigItemList::iterator aListIter = pMgrImpl->aItemList.begin(); - for(aListIter = pMgrImpl->aItemList.begin(); aListIter != pMgrImpl->aItemList.end(); ++aListIter) - { - ConfigItemListEntry_Impl& rEntry = *aListIter; - if(rEntry.pConfigItem == &rCfgItem) - { - pMgrImpl->aItemList.erase(aListIter); - break; - } - } - } -} - -void ConfigManager::StoreConfigItems() -{ - if(!pMgrImpl->aItemList.empty()) - { - ConfigItemList::iterator aListIter = pMgrImpl->aItemList.begin(); - for(aListIter = pMgrImpl->aItemList.begin(); aListIter != pMgrImpl->aItemList.end(); ++aListIter) - { - ConfigItemListEntry_Impl& rEntry = *aListIter; - if(rEntry.pConfigItem->IsModified()) - { - rEntry.pConfigItem->Commit(); - rEntry.pConfigItem->ClearModified(); - } - } - } -} - -struct theConfigManager : public rtl::Static<ConfigManager, theConfigManager> {}; - -ConfigManager& ConfigManager::GetConfigManager() -{ - return theConfigManager::get(); -} - -rtl::OUString ConfigManager::GetConfigBaseURL() -{ - return OUString::createFromAscii(pConfigBaseURL); -} - -Any ConfigManager::GetDirectConfigProperty(ConfigProperty eProp) -{ - switch(eProp) - { - case INSTALLPATH: - OSL_FAIL( "ConfigManager::GetDirectConfigProperty: " - "INSTALLPATH no longer supported." ); - return Any(); - case USERINSTALLURL: - OSL_FAIL( "ConfigManager::GetDirectConfigProperty: " - "USERINSTALLURL no longer supported." ); - return Any(); - case OFFICEINSTALL: - OSL_FAIL( "ConfigManager::GetDirectConfigProperty: " - "OFFICEINSTALL no longer supported." ); - return Any(); - case OFFICEINSTALLURL: - OSL_FAIL( "ConfigManager::GetDirectConfigProperty: " - "OFFICEINSTALLURL no longer supported." ); - return Any(); - default: - break; - } - - Any aRet; - - ::rtl::OUString &rBrandName = BrandName::get(); - if ( eProp == PRODUCTNAME && rBrandName.getLength() ) - { - aRet <<= rBrandName; - return aRet; - } - - rtl::OUString &rProductVersion = ProductVersion::get(); - if ( eProp == PRODUCTVERSION && rProductVersion.getLength() ) - { - aRet <<= rProductVersion; - return aRet; - } - - rtl::OUString &rAboutBoxProductVersion = AboutBoxProductVersion::get(); - if ( eProp == ABOUTBOXPRODUCTVERSION && rAboutBoxProductVersion.getLength() ) - { - aRet <<= rAboutBoxProductVersion; - return aRet; - } - - rtl::OUString &rOOOVendor = OOOVendor::get(); - if ( eProp == OOOVENDOR && rOOOVendor.getLength() ) - { - aRet <<= rOOOVendor; - return aRet; - } - - - rtl::OUString &rProductExtension = ProductExtension::get(); - if ( eProp == PRODUCTEXTENSION && rProductExtension.getLength() ) - { - aRet <<= rProductExtension; - return aRet; - } - - rtl::OUString &rXMLFileFormatName = XMLFileFormatName::get(); - if ( eProp == PRODUCTXMLFILEFORMATNAME && rXMLFileFormatName.getLength() ) - { - aRet <<= rXMLFileFormatName; - return aRet; - } - - rtl::OUString &rXMLFileFormatVersion = XMLFileFormatVersion::get(); - if ( eProp == PRODUCTXMLFILEFORMATVERSION && rXMLFileFormatVersion.getLength() ) - { - aRet <<= rXMLFileFormatVersion; - return aRet; - } - - sal_Int32 &rOpenSourceContext = OpenSourceContext::get(); - if ( eProp == OPENSOURCECONTEXT && ( rOpenSourceContext >= 0 ) ) - { - aRet <<= rOpenSourceContext; - return aRet; - } - - rtl::OUString &rWriterCompatibilityVersionOOo11 = WriterCompatibilityVersionOOo11::get(); - if ( eProp == WRITERCOMPATIBILITYVERSIONOOO11 && rWriterCompatibilityVersionOOo11.getLength() ) - { - aRet <<= rWriterCompatibilityVersionOOo11; - return aRet; - } - - if (eProp == PRODUCTEXTENSION) { - rtl::OUString name( - RTL_CONSTASCII_USTRINGPARAM( - "${BRAND_BASE_DIR}/program/edition/edition.ini")); - rtl::Bootstrap::expandMacros(name); - if (rtl::Bootstrap(name).getFrom( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("EDITIONNAME")), - rProductExtension)) - { - return com::sun::star::uno::Any(rProductExtension); - } - } - - OUString sPath = OUString::createFromAscii(pConfigBaseURL); - switch(eProp) - { - case LOCALE: sPath += UNISTRING("Setup/L10N"); break; - - case PRODUCTNAME: - case PRODUCTVERSION: - case PRODUCTEXTENSION: - case PRODUCTXMLFILEFORMATNAME : - case PRODUCTXMLFILEFORMATVERSION: - case OPENSOURCECONTEXT: - case OOOVENDOR: - case ABOUTBOXPRODUCTVERSION: sPath += UNISTRING("Setup/Product"); break; - - case DEFAULTCURRENCY: sPath += UNISTRING("Setup/L10N"); break; - - case WRITERCOMPATIBILITYVERSIONOOO11: - sPath += UNISTRING("Office.Compatibility/WriterCompatibilityVersion"); break; - default: - break; - } - Sequence< Any > aArgs(1); - aArgs[0] <<= sPath; - Reference< XMultiServiceFactory > xCfgProvider = GetConfigManager().GetConfigurationProvider(); - if(!xCfgProvider.is()) - return aRet; - Reference< XInterface > xIFace; - try - { - xIFace = xCfgProvider->createInstanceWithArguments( - OUString::createFromAscii(pAccessSrvc), - aArgs); - - } - catch (const Exception&) - { - } - Reference<XNameAccess> xDirectAccess(xIFace, UNO_QUERY); - if(xDirectAccess.is()) - { - OUString sProperty; - switch(eProp) - { - case LOCALE: sProperty = UNISTRING("ooLocale"); break; - case PRODUCTNAME: sProperty = UNISTRING("ooName"); break; - case PRODUCTVERSION: sProperty = UNISTRING("ooSetupVersion"); break; - case ABOUTBOXPRODUCTVERSION: sProperty = UNISTRING("ooSetupVersionAboutBox"); break; - case OOOVENDOR: sProperty = UNISTRING("ooVendor"); break; - case PRODUCTEXTENSION: sProperty = UNISTRING("ooSetupExtension"); break; - case PRODUCTXMLFILEFORMATNAME: sProperty = UNISTRING("ooXMLFileFormatName"); break; - case PRODUCTXMLFILEFORMATVERSION: sProperty = UNISTRING("ooXMLFileFormatVersion"); break; - case OPENSOURCECONTEXT: sProperty = UNISTRING("ooOpenSourceContext"); break; - case DEFAULTCURRENCY: sProperty = UNISTRING("ooSetupCurrency"); break; - case WRITERCOMPATIBILITYVERSIONOOO11: sProperty = UNISTRING("OOo11"); break; - default: - break; - } - try - { - aRet = xDirectAccess->getByName(sProperty); - } - catch (const Exception&) - { - #if OSL_DEBUG_LEVEL > 0 - rtl::OStringBuffer aBuf(256); - aBuf.append( "ConfigManager::GetDirectConfigProperty: could not retrieve the property \"" ); - aBuf.append( rtl::OUStringToOString( sProperty, RTL_TEXTENCODING_ASCII_US ) ); - aBuf.append( "\" under \"" ); - aBuf.append( rtl::OUStringToOString( sPath, RTL_TEXTENCODING_ASCII_US ) ); - aBuf.append( "\" (caught an exception)!" ); - OSL_FAIL( aBuf.getStr() ); - #endif - } - } - - if ( eProp == PRODUCTNAME ) - aRet >>= rBrandName; - - if ( eProp == PRODUCTXMLFILEFORMATNAME ) - aRet >>= rXMLFileFormatName; - - if ( eProp == PRODUCTXMLFILEFORMATVERSION ) - aRet >>= rXMLFileFormatVersion; - - if ( eProp == PRODUCTVERSION ) - aRet >>= rProductVersion; - - if( eProp == OOOVENDOR ) - aRet >>= rOOOVendor; - - if ( eProp == ABOUTBOXPRODUCTVERSION ) - { - aRet >>= rAboutBoxProductVersion; - getBasisAboutBoxProductVersion( rAboutBoxProductVersion ); - aRet <<= rAboutBoxProductVersion; - } - - if ( eProp == PRODUCTEXTENSION ) - aRet >>= rProductExtension; - - if ( eProp == WRITERCOMPATIBILITYVERSIONOOO11 ) - aRet >>= rWriterCompatibilityVersionOOo11; - - if ( eProp == OPENSOURCECONTEXT ) - aRet >>= rOpenSourceContext; - - return aRet; -} - -/*---------------------------------------------------------------------------*/ -void ConfigManager::getBasisAboutBoxProductVersion( OUString& rVersion ) -{ - rtl::OUString aPackageVersion = UNISTRING( "${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") ":OOOPackageVersion}" ); - rtl::Bootstrap::expandMacros( aPackageVersion ); - - if ( aPackageVersion.getLength() ) - { - sal_Int32 nTokIndex = 0; - rtl::OUString aVersionMinor = aPackageVersion.getToken( 1, '.', nTokIndex ); - rtl::OUString aVersionMicro; - - if ( nTokIndex > 0 ) - aVersionMicro = aPackageVersion.getToken( 0, '.', nTokIndex ); - - if ( aVersionMinor.getLength() == 0 ) - aVersionMinor = UNISTRING( "0" ); - if ( aVersionMicro.getLength() == 0 ) - aVersionMicro = UNISTRING( "0" ); - - sal_Int32 nIndex = rVersion.indexOf( '.' ); - if ( nIndex == -1 ) - { - rVersion += UNISTRING( "." ); - rVersion += aVersionMinor; - } - else - { - nIndex = rVersion.indexOf( '.', nIndex+1 ); - } - if ( nIndex == -1 ) - { - rVersion += UNISTRING( "." ); - rVersion += aVersionMicro; - } - else - { - rVersion = rVersion.replaceAt( nIndex+1, rVersion.getLength()-nIndex-1, aVersionMicro ); - } - } -} - -Reference< XHierarchicalNameAccess> ConfigManager::GetHierarchyAccess(const OUString& rFullPath) -{ - Sequence< Any > aArgs(1); - aArgs[0] <<= rFullPath; - Reference< XMultiServiceFactory > xCfgProvider = GetLocalConfigurationProvider(); - Reference< XInterface > xIFace; - if(xCfgProvider.is()) - { - try - { - xIFace = xCfgProvider->createInstanceWithArguments( - OUString::createFromAscii(pAccessSrvc), - aArgs); - } -#if OSL_DEBUG_LEVEL > 1 - catch (const Exception& rEx) - { - OString sMsg("CreateInstance exception: "); - sMsg += OString(rEx.Message.getStr(), - rEx.Message.getLength(), - RTL_TEXTENCODING_ASCII_US); - OSL_FAIL(sMsg.getStr()); - } -#else - catch (const Exception&) - { - } -#endif - } - return Reference<XHierarchicalNameAccess>(xIFace, UNO_QUERY); -} - -Any ConfigManager::GetLocalProperty(const OUString& rProperty) -{ - OUString sPath(OUString::createFromAscii(pConfigBaseURL)); - sPath += rProperty; - - OUString sNode, sProperty; - OSL_VERIFY( splitLastFromConfigurationPath(sPath, sNode, sProperty) ); - - Reference< XNameAccess> xAccess( GetHierarchyAccess(sNode), UNO_QUERY ); - Any aRet; - try - { - if(xAccess.is()) - aRet = xAccess->getByName(sProperty); - } -#if OSL_DEBUG_LEVEL > 1 - catch (const Exception& rEx) - { - OString sMsg("GetLocalProperty: "); - sMsg += OString(rEx.Message.getStr(), - rEx.Message.getLength(), - RTL_TEXTENCODING_ASCII_US); - OSL_FAIL(sMsg.getStr()); - } -#else - catch (const Exception&) - { - } -#endif - return aRet; -} - -void ConfigManager::PutLocalProperty(const OUString& rProperty, const Any& rValue) -{ - OUString sPath(OUString::createFromAscii(pConfigBaseURL)); - sPath += rProperty; - - OUString sNode, sProperty; - OSL_VERIFY( splitLastFromConfigurationPath(sPath, sNode, sProperty) ); - - Reference<XNameReplace> xNodeReplace(GetHierarchyAccess(sNode), UNO_QUERY); - if(xNodeReplace.is()) - { - try - { - xNodeReplace->replaceByName(sProperty, rValue); - } -#if OSL_DEBUG_LEVEL > 1 - catch (const Exception& rEx) - { - OString sMsg("PutLocalProperty: "); - sMsg += OString(rEx.Message.getStr(), - rEx.Message.getLength(), - RTL_TEXTENCODING_ASCII_US); - OSL_FAIL(sMsg.getStr()); - } -#else - catch (const Exception&) - { - } -#endif - } -} - -sal_Bool ConfigManager::IsLocalConfigProvider() -{ - return false; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/confignode.cxx b/unotools/source/config/confignode.cxx deleted file mode 100644 index 32b4eb6377..0000000000 --- a/unotools/source/config/confignode.cxx +++ /dev/null @@ -1,663 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/confignode.hxx> -#include <unotools/configpathes.hxx> -#include <tools/diagnose_ex.h> -#include <osl/diagnose.h> -#include <com/sun/star/container/XHierarchicalName.hpp> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <com/sun/star/lang/XSingleServiceFactory.hpp> -#include <com/sun/star/lang/XComponent.hpp> -#include <com/sun/star/util/XStringEscape.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/container/XNamed.hpp> -#include <comphelper/extract.hxx> -#include <comphelper/componentcontext.hxx> -#include <comphelper/namedvaluecollection.hxx> -#include <rtl/string.hxx> -#if OSL_DEBUG_LEVEL > 0 -#include <rtl/strbuf.hxx> -#endif - -//........................................................................ -namespace utl -{ -//........................................................................ - - using namespace ::com::sun::star::uno; - using namespace ::com::sun::star::lang; - using namespace ::com::sun::star::util; - using namespace ::com::sun::star::beans; - using namespace ::com::sun::star::container; - - //======================================================================== - //= OConfigurationNode - //======================================================================== - //------------------------------------------------------------------------ - OConfigurationNode::OConfigurationNode(const Reference< XInterface >& _rxNode ) - :m_bEscapeNames(sal_False) - { - OSL_ENSURE(_rxNode.is(), "OConfigurationNode::OConfigurationNode: invalid node interface!"); - if (_rxNode.is()) - { - // collect all interfaces necessary - m_xHierarchyAccess = Reference< XHierarchicalNameAccess >(_rxNode, UNO_QUERY); - m_xDirectAccess = Reference< XNameAccess >(_rxNode, UNO_QUERY); - - // reset _all_ interfaces if _one_ of them is not supported - if (!m_xHierarchyAccess.is() || !m_xDirectAccess.is()) - { - m_xHierarchyAccess = NULL; - m_xDirectAccess = NULL; - } - - // now for the non-critical interfaces - m_xReplaceAccess = Reference< XNameReplace >(_rxNode, UNO_QUERY); - m_xContainerAccess = Reference< XNameContainer >(_rxNode, UNO_QUERY); - } - - Reference< XComponent > xConfigNodeComp(m_xDirectAccess, UNO_QUERY); - if (xConfigNodeComp.is()) - startComponentListening(xConfigNodeComp); - - if (isValid()) - setEscape(isSetNode()); - } - - //------------------------------------------------------------------------ - OConfigurationNode::OConfigurationNode(const OConfigurationNode& _rSource) - :OEventListenerAdapter() - ,m_xHierarchyAccess(_rSource.m_xHierarchyAccess) - ,m_xDirectAccess(_rSource.m_xDirectAccess) - ,m_xReplaceAccess(_rSource.m_xReplaceAccess) - ,m_xContainerAccess(_rSource.m_xContainerAccess) - ,m_bEscapeNames(_rSource.m_bEscapeNames) - ,m_sCompletePath(_rSource.m_sCompletePath) - { - Reference< XComponent > xConfigNodeComp(m_xDirectAccess, UNO_QUERY); - if (xConfigNodeComp.is()) - startComponentListening(xConfigNodeComp); - } - - //------------------------------------------------------------------------ - const OConfigurationNode& OConfigurationNode::operator=(const OConfigurationNode& _rSource) - { - stopAllComponentListening(); - - m_xHierarchyAccess = _rSource.m_xHierarchyAccess; - m_xDirectAccess = _rSource.m_xDirectAccess; - m_xContainerAccess = _rSource.m_xContainerAccess; - m_xReplaceAccess = _rSource.m_xReplaceAccess; - m_bEscapeNames = _rSource.m_bEscapeNames; - m_sCompletePath = _rSource.m_sCompletePath; - - Reference< XComponent > xConfigNodeComp(m_xDirectAccess, UNO_QUERY); - if (xConfigNodeComp.is()) - startComponentListening(xConfigNodeComp); - - return *this; - } - - //------------------------------------------------------------------------ - void OConfigurationNode::_disposing( const EventObject& _rSource ) - { - Reference< XComponent > xDisposingSource(_rSource.Source, UNO_QUERY); - Reference< XComponent > xConfigNodeComp(m_xDirectAccess, UNO_QUERY); - if (xDisposingSource.get() == xConfigNodeComp.get()) - clear(); - } - - //------------------------------------------------------------------------ - ::rtl::OUString OConfigurationNode::getLocalName() const - { - ::rtl::OUString sLocalName; - try - { - Reference< XNamed > xNamed( m_xDirectAccess, UNO_QUERY_THROW ); - sLocalName = xNamed->getName(); - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - return sLocalName; - } - - //------------------------------------------------------------------------ - ::rtl::OUString OConfigurationNode::getNodePath() const - { - ::rtl::OUString sNodePath; - try - { - Reference< XHierarchicalName > xNamed( m_xDirectAccess, UNO_QUERY_THROW ); - sNodePath = xNamed->getHierarchicalName(); - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - return sNodePath; - } - - //------------------------------------------------------------------------ - ::rtl::OUString OConfigurationNode::normalizeName(const ::rtl::OUString& _rName, NAMEORIGIN _eOrigin) const - { - ::rtl::OUString sName(_rName); - if (getEscape()) - { - Reference< XStringEscape > xEscaper(m_xDirectAccess, UNO_QUERY); - if (xEscaper.is() && sName.getLength()) - { - try - { - if (NO_CALLER == _eOrigin) - sName = xEscaper->escapeString(sName); - else - sName = xEscaper->unescapeString(sName); - } - catch(Exception&) - { - DBG_UNHANDLED_EXCEPTION(); - } - } - } - return sName; - } - - //------------------------------------------------------------------------ - Sequence< ::rtl::OUString > OConfigurationNode::getNodeNames() const throw() - { - OSL_ENSURE(m_xDirectAccess.is(), "OConfigurationNode::getNodeNames: object is invalid!"); - Sequence< ::rtl::OUString > aReturn; - if (m_xDirectAccess.is()) - { - try - { - aReturn = m_xDirectAccess->getElementNames(); - // normalize the names - ::rtl::OUString* pNames = aReturn.getArray(); - for (sal_Int32 i=0; i<aReturn.getLength(); ++i, ++pNames) - *pNames = normalizeName(*pNames, NO_CONFIGURATION); - } - catch(Exception&) - { - OSL_FAIL("OConfigurationNode::getNodeNames: caught a generic exception!"); - } - } - - return aReturn; - } - - //------------------------------------------------------------------------ - sal_Bool OConfigurationNode::removeNode(const ::rtl::OUString& _rName) const throw() - { - OSL_ENSURE(m_xContainerAccess.is(), "OConfigurationNode::removeNode: object is invalid!"); - if (m_xContainerAccess.is()) - { - try - { - ::rtl::OUString sName = normalizeName(_rName, NO_CALLER); - m_xContainerAccess->removeByName(sName); - return sal_True; - } - catch (NoSuchElementException&) - { - #if OSL_DEBUG_LEVEL > 0 - rtl::OStringBuffer aBuf( 256 ); - aBuf.append("OConfigurationNode::removeNode: there is no element named!"); - aBuf.append( rtl::OUStringToOString( _rName, RTL_TEXTENCODING_ASCII_US ) ); - aBuf.append( "!" ); - OSL_FAIL(aBuf.getStr()); - #endif - } - catch (WrappedTargetException&) - { - OSL_FAIL("OConfigurationNode::removeNode: caught a WrappedTargetException!"); - } - catch(Exception&) - { - OSL_FAIL("OConfigurationNode::removeNode: caught a generic exception!"); - } - } - return sal_False; - } - //------------------------------------------------------------------------ - OConfigurationNode OConfigurationNode::insertNode(const ::rtl::OUString& _rName,const Reference< XInterface >& _xNode) const throw() - { - if(_xNode.is()) - { - try - { - ::rtl::OUString sName = normalizeName(_rName, NO_CALLER); - m_xContainerAccess->insertByName(sName, makeAny(_xNode)); - // if we're here, all was ok ... - return OConfigurationNode( _xNode ); - } - catch(const Exception&) - { - DBG_UNHANDLED_EXCEPTION(); - } - - // dispose the child if it has already been created, but could not be inserted - Reference< XComponent > xChildComp(_xNode, UNO_QUERY); - if (xChildComp.is()) - try { xChildComp->dispose(); } catch(Exception&) { } - } - - return OConfigurationNode(); - } - //------------------------------------------------------------------------ - OConfigurationNode OConfigurationNode::createNode(const ::rtl::OUString& _rName) const throw() - { - Reference< XSingleServiceFactory > xChildFactory(m_xContainerAccess, UNO_QUERY); - OSL_ENSURE(xChildFactory.is(), "OConfigurationNode::createNode: object is invalid or read-only!"); - - if (xChildFactory.is()) // implies m_xContainerAccess.is() - { - Reference< XInterface > xNewChild; - try - { - xNewChild = xChildFactory->createInstance(); - } - catch(const Exception&) - { - DBG_UNHANDLED_EXCEPTION(); - } - return insertNode(_rName,xNewChild); - } - - return OConfigurationNode(); - } - - //------------------------------------------------------------------------ - OConfigurationNode OConfigurationNode::appendNode(const ::rtl::OUString& _rName,const OConfigurationNode& _aNewNode) const throw() - { - return insertNode(_rName,_aNewNode.m_xDirectAccess); - } - //------------------------------------------------------------------------ - OConfigurationNode OConfigurationNode::openNode(const ::rtl::OUString& _rPath) const throw() - { - OSL_ENSURE(m_xDirectAccess.is(), "OConfigurationNode::openNode: object is invalid!"); - OSL_ENSURE(m_xHierarchyAccess.is(), "OConfigurationNode::openNode: object is invalid!"); - try - { - ::rtl::OUString sNormalized = normalizeName(_rPath, NO_CALLER); - - Reference< XInterface > xNode; - if (m_xDirectAccess.is() && m_xDirectAccess->hasByName(sNormalized)) - { - if (!::cppu::extractInterface(xNode, m_xDirectAccess->getByName(sNormalized))) - OSL_FAIL("OConfigurationNode::openNode: could not open the node!"); - } - else if (m_xHierarchyAccess.is()) - { - if (!::cppu::extractInterface(xNode, m_xHierarchyAccess->getByHierarchicalName(_rPath))) - OSL_FAIL("OConfigurationNode::openNode: could not open the node!"); - } - if (xNode.is()) - return OConfigurationNode( xNode ); - } - catch(NoSuchElementException& e) - { - (void)e; - #if OSL_DEBUG_LEVEL > 0 - rtl::OStringBuffer aBuf( 256 ); - aBuf.append("OConfigurationNode::openNode: there is no element named "); - aBuf.append( rtl::OUStringToOString( _rPath, RTL_TEXTENCODING_ASCII_US ) ); - aBuf.append("!"); - OSL_FAIL(aBuf.getStr()); - #endif - } - catch(Exception&) - { - OSL_FAIL("OConfigurationNode::openNode: caught an exception while retrieving the node!"); - } - return OConfigurationNode(); - } - - //------------------------------------------------------------------------ - void OConfigurationNode::setEscape(sal_Bool _bEnable) - { - m_bEscapeNames = _bEnable && Reference< XStringEscape >::query(m_xDirectAccess).is(); - } - - //------------------------------------------------------------------------ - sal_Bool OConfigurationNode::isSetNode() const - { - sal_Bool bIsSet = sal_False; - Reference< XServiceInfo > xSI(m_xHierarchyAccess, UNO_QUERY); - if (xSI.is()) - { - try { bIsSet = xSI->supportsService(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.SetAccess"))); } - catch(Exception&) { } - } - return bIsSet; - } - - sal_Bool OConfigurationNode::hasByHierarchicalName( const ::rtl::OUString& _rName ) const throw() - { - OSL_ENSURE( m_xHierarchyAccess.is(), "OConfigurationNode::hasByHierarchicalName: no hierarchy access!" ); - try - { - if ( m_xHierarchyAccess.is() ) - { - ::rtl::OUString sName = normalizeName( _rName, NO_CALLER ); - return m_xHierarchyAccess->hasByHierarchicalName( sName ); - } - } - catch(Exception&) - { - } - return sal_False; - } - - //------------------------------------------------------------------------ - sal_Bool OConfigurationNode::hasByName(const ::rtl::OUString& _rName) const throw() - { - OSL_ENSURE(m_xDirectAccess.is(), "OConfigurationNode::hasByName: object is invalid!"); - try - { - ::rtl::OUString sName = normalizeName(_rName, NO_CALLER); - if (m_xDirectAccess.is()) - return m_xDirectAccess->hasByName(sName); - } - catch(Exception&) - { - } - return sal_False; - } - - //------------------------------------------------------------------------ - sal_Bool OConfigurationNode::setNodeValue(const ::rtl::OUString& _rPath, const Any& _rValue) const throw() - { - sal_Bool bResult = false; - - OSL_ENSURE(m_xReplaceAccess.is(), "OConfigurationNode::setNodeValue: object is invalid!"); - if (m_xReplaceAccess.is()) - { - try - { - // check if _rPath is a level-1 path - ::rtl::OUString sNormalizedName = normalizeName(_rPath, NO_CALLER); - if (m_xReplaceAccess->hasByName(sNormalizedName)) - { - m_xReplaceAccess->replaceByName(sNormalizedName, _rValue); - bResult = true; - } - - // check if the name refers to a indirect descendant - else if (m_xHierarchyAccess.is() && m_xHierarchyAccess->hasByHierarchicalName(_rPath)) - { - OSL_ASSERT(_rPath.getLength()); - - ::rtl::OUString sParentPath, sLocalName; - - if ( splitLastFromConfigurationPath(_rPath, sParentPath, sLocalName) ) - { - OConfigurationNode aParentAccess = openNode(sParentPath); - if (aParentAccess.isValid()) - bResult = aParentAccess.setNodeValue(sLocalName, _rValue); - } - else - { - m_xReplaceAccess->replaceByName(sLocalName, _rValue); - bResult = true; - } - } - - } - catch(IllegalArgumentException&) - { - OSL_FAIL("OConfigurationNode::setNodeValue: could not replace the value: caught an IllegalArgumentException!"); - } - catch(NoSuchElementException&) - { - OSL_FAIL("OConfigurationNode::setNodeValue: could not replace the value: caught a NoSuchElementException!"); - } - catch(WrappedTargetException&) - { - OSL_FAIL("OConfigurationNode::setNodeValue: could not replace the value: caught a WrappedTargetException!"); - } - catch(Exception&) - { - OSL_FAIL("OConfigurationNode::setNodeValue: could not replace the value: caught a generic Exception!"); - } - - - } - return bResult; - } - - //------------------------------------------------------------------------ - Any OConfigurationNode::getNodeValue(const ::rtl::OUString& _rPath) const throw() - { - OSL_ENSURE(m_xDirectAccess.is(), "OConfigurationNode::hasByName: object is invalid!"); - OSL_ENSURE(m_xHierarchyAccess.is(), "OConfigurationNode::hasByName: object is invalid!"); - Any aReturn; - try - { - ::rtl::OUString sNormalizedPath = normalizeName(_rPath, NO_CALLER); - if (m_xDirectAccess.is() && m_xDirectAccess->hasByName(sNormalizedPath) ) - { - aReturn = m_xDirectAccess->getByName(sNormalizedPath); - } - else if (m_xHierarchyAccess.is()) - { - aReturn = m_xHierarchyAccess->getByHierarchicalName(_rPath); - } - } - catch(const NoSuchElementException&) - { - DBG_UNHANDLED_EXCEPTION(); - } - return aReturn; - } - - //------------------------------------------------------------------------ - void OConfigurationNode::clear() throw() - { - m_xHierarchyAccess.clear(); - m_xDirectAccess.clear(); - m_xReplaceAccess.clear(); - m_xContainerAccess.clear(); - } - - //======================================================================== - //= helper - //======================================================================== - namespace - { - //-------------------------------------------------------------------- - static const ::rtl::OUString& lcl_getProviderServiceName( ) - { - static ::rtl::OUString s_sProviderServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) ); - return s_sProviderServiceName; - } - - //-------------------------------------------------------------------- - Reference< XMultiServiceFactory > lcl_getConfigProvider( const ::comphelper::ComponentContext& i_rContext ) - { - try - { - Reference< XMultiServiceFactory > xProvider( i_rContext.createComponent( lcl_getProviderServiceName() ), UNO_QUERY_THROW ); - return xProvider; - } - catch ( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - return NULL; - } - - //-------------------------------------------------------------------- - Reference< XInterface > lcl_createConfigurationRoot( const Reference< XMultiServiceFactory >& i_rxConfigProvider, - const ::rtl::OUString& i_rNodePath, const bool i_bUpdatable, const sal_Int32 i_nDepth, const bool i_bLazyWrite ) - { - ENSURE_OR_RETURN( i_rxConfigProvider.is(), "invalid provider", NULL ); - try - { - ::comphelper::NamedValueCollection aArgs; - aArgs.put( "nodepath", i_rNodePath ); - aArgs.put( "lazywrite", i_bLazyWrite ); - aArgs.put( "depth", i_nDepth ); - - ::rtl::OUString sAccessService( i_bUpdatable ? - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" )) : - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationAccess" ))); - - Reference< XInterface > xRoot( - i_rxConfigProvider->createInstanceWithArguments( sAccessService, aArgs.getWrappedPropertyValues() ), - UNO_SET_THROW - ); - return xRoot; - } - catch ( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - return NULL; - } - } - //======================================================================== - //= OConfigurationTreeRoot - //======================================================================== - //------------------------------------------------------------------------ - OConfigurationTreeRoot::OConfigurationTreeRoot( const Reference< XChangesBatch >& _rxRootNode ) - :OConfigurationNode( _rxRootNode.get() ) - ,m_xCommitter(_rxRootNode) - { - } - - //------------------------------------------------------------------------ - OConfigurationTreeRoot::OConfigurationTreeRoot( const Reference< XInterface >& _rxRootNode ) - :OConfigurationNode( _rxRootNode ) - ,m_xCommitter( _rxRootNode, UNO_QUERY ) - { - } - - //------------------------------------------------------------------------ - OConfigurationTreeRoot::OConfigurationTreeRoot( const ::comphelper::ComponentContext& i_rContext, const sal_Char* i_pAsciiNodePath, const bool i_bUpdatable ) - :OConfigurationNode( lcl_createConfigurationRoot( lcl_getConfigProvider( i_rContext.getLegacyServiceFactory() ), - ::rtl::OUString::createFromAscii( i_pAsciiNodePath ), i_bUpdatable, -1, false ).get() ) - ,m_xCommitter() - { - if ( i_bUpdatable ) - { - m_xCommitter.set( getUNONode(), UNO_QUERY ); - OSL_ENSURE( m_xCommitter.is(), "OConfigurationTreeRoot::OConfigurationTreeRoot: could not create an updatable node!" ); - } - } - - //------------------------------------------------------------------------ - OConfigurationTreeRoot::OConfigurationTreeRoot( const ::comphelper::ComponentContext& i_rContext, const ::rtl::OUString& i_rNodePath, const bool i_bUpdatable ) - :OConfigurationNode( lcl_createConfigurationRoot( lcl_getConfigProvider( i_rContext.getLegacyServiceFactory() ), - i_rNodePath, i_bUpdatable, -1, false ).get() ) - ,m_xCommitter() - { - if ( i_bUpdatable ) - { - m_xCommitter.set( getUNONode(), UNO_QUERY ); - OSL_ENSURE( m_xCommitter.is(), "OConfigurationTreeRoot::OConfigurationTreeRoot: could not create an updatable node!" ); - } - } - - //------------------------------------------------------------------------ - void OConfigurationTreeRoot::clear() throw() - { - OConfigurationNode::clear(); - m_xCommitter.clear(); - } - - //------------------------------------------------------------------------ - sal_Bool OConfigurationTreeRoot::commit() const throw() - { - OSL_ENSURE(isValid(), "OConfigurationTreeRoot::commit: object is invalid!"); - if (!isValid()) - return sal_False; - OSL_ENSURE(m_xCommitter.is(), "OConfigurationTreeRoot::commit: I'm a readonly node!"); - if (!m_xCommitter.is()) - return sal_False; - - try - { - m_xCommitter->commitChanges(); - return sal_True; - } - catch(const Exception&) - { - DBG_UNHANDLED_EXCEPTION(); - } - return sal_False; - } - - //------------------------------------------------------------------------ - OConfigurationTreeRoot OConfigurationTreeRoot::createWithProvider(const Reference< XMultiServiceFactory >& _rxConfProvider, const ::rtl::OUString& _rPath, sal_Int32 _nDepth, CREATION_MODE _eMode, sal_Bool _bLazyWrite) - { - Reference< XInterface > xRoot( lcl_createConfigurationRoot( - _rxConfProvider, _rPath, _eMode != CM_READONLY, _nDepth, _bLazyWrite ) ); - if ( xRoot.is() ) - return OConfigurationTreeRoot( xRoot ); - return OConfigurationTreeRoot(); - } - - //------------------------------------------------------------------------ - OConfigurationTreeRoot OConfigurationTreeRoot::createWithServiceFactory( const Reference< XMultiServiceFactory >& _rxORB, const ::rtl::OUString& _rPath, sal_Int32 _nDepth, CREATION_MODE _eMode, sal_Bool _bLazyWrite ) - { - return createWithProvider( lcl_getConfigProvider( _rxORB ), _rPath, _nDepth, _eMode, _bLazyWrite ); - } - - //------------------------------------------------------------------------ - OConfigurationTreeRoot OConfigurationTreeRoot::tryCreateWithServiceFactory( const Reference< XMultiServiceFactory >& _rxORB, - const ::rtl::OUString& _rPath, sal_Int32 _nDepth , CREATION_MODE _eMode , sal_Bool _bLazyWrite ) - { - OSL_ENSURE( _rxORB.is(), "OConfigurationTreeRoot::tryCreateWithServiceFactory: invalid service factory!" ); - if ( _rxORB.is() ) - { - try - { - Reference< XMultiServiceFactory > xConfigFactory( _rxORB->createInstance( lcl_getProviderServiceName( ) ), UNO_QUERY ); - if ( xConfigFactory.is() ) - return createWithProvider( xConfigFactory, _rPath, _nDepth, _eMode, _bLazyWrite ); - } - catch(const Exception&) - { - // silence this, 'cause the contract of this method states "no assertions" - } - } - return OConfigurationTreeRoot(); - } - -//........................................................................ -} // namespace utl -//........................................................................ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/configpathes.cxx b/unotools/source/config/configpathes.cxx deleted file mode 100644 index db5eb97333..0000000000 --- a/unotools/source/config/configpathes.cxx +++ /dev/null @@ -1,311 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include "unotools/configpathes.hxx" -#include <rtl/ustring.hxx> -#include <rtl/ustrbuf.hxx> -#include <osl/diagnose.h> - -//---------------------------------------------------------------------------- -namespace utl -{ -//---------------------------------------------------------------------------- - - using ::rtl::OUString; - using ::rtl::OUStringBuffer; - -//---------------------------------------------------------------------------- - -static -void lcl_resolveCharEntities(OUString & aLocalString) -{ - sal_Int32 nEscapePos=aLocalString.indexOf('&'); - if (nEscapePos < 0) return; - - OUStringBuffer aResult; - sal_Int32 nStart = 0; - - do - { - sal_Unicode ch = 0; - if (aLocalString.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("&"),nEscapePos)) - ch = '&'; - - else if (aLocalString.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("'"),nEscapePos)) - ch = '\''; - - else if (aLocalString.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("""),nEscapePos)) - ch = '"'; - - OSL_ENSURE(ch,"Configuration path contains '&' that is not part of a valid character escape"); - if (ch) - { - aResult.append(aLocalString.copy(nStart,nEscapePos-nStart)).append(ch); - - sal_Int32 nEscapeEnd=aLocalString.indexOf(';',nEscapePos); - nStart = nEscapeEnd+1; - nEscapePos=aLocalString.indexOf('&',nStart); - } - else - { - nEscapePos=aLocalString.indexOf('&',nEscapePos+1); - } - } - while ( nEscapePos > 0); - - aResult.append(aLocalString.copy(nStart)); - - aLocalString = aResult.makeStringAndClear(); -} - -//---------------------------------------------------------------------------- -sal_Bool splitLastFromConfigurationPath(OUString const& _sInPath, - OUString& _rsOutPath, - OUString& _rsLocalName) -{ - sal_Int32 nStart,nEnd; - - sal_Int32 nPos = _sInPath.getLength()-1; - - // strip trailing slash - if (nPos > 0 && _sInPath[ nPos ] == sal_Unicode('/')) - { - OSL_FAIL("Invalid config path: trailing '/' is not allowed"); - --nPos; - } - - // check for predicate ['xxx'] or ["yyy"] - if (nPos > 0 && _sInPath[ nPos ] == sal_Unicode(']')) - { - sal_Unicode chQuote = _sInPath[--nPos]; - - if (chQuote == '\'' || chQuote == '\"') - { - nEnd = nPos; - nPos = _sInPath.lastIndexOf(chQuote,nEnd); - nStart = nPos + 1; - --nPos; // nPos = rInPath.lastIndexOf('[',nPos); - } - else // allow [xxx] - { - nEnd = nPos + 1; - nPos = _sInPath.lastIndexOf('[',nEnd); - nStart = nPos + 1; - } - - OSL_ENSURE(nPos >= 0 && _sInPath[nPos] == '[', "Invalid config path: unmatched quotes or brackets"); - if (nPos >= 0 && _sInPath[nPos] == '[') - { - nPos = _sInPath.lastIndexOf('/',nPos); - } - else // defined behavior for invalid pathes - { - nStart = 0, nEnd = _sInPath.getLength(); - nPos = -1; - } - - } - else - { - nEnd = nPos+1; - nPos = _sInPath.lastIndexOf('/',nEnd); - nStart = nPos + 1; - } - OSL_ASSERT( -1 <= nPos && - nPos < nStart && - nStart < nEnd && - nEnd <= _sInPath.getLength() ); - - OSL_ASSERT(nPos == -1 || _sInPath[nPos] == '/'); - OSL_ENSURE(nPos != 0 , "Invalid config child path: immediate child of root"); - - _rsLocalName = _sInPath.copy(nStart, nEnd-nStart); - _rsOutPath = (nPos > 0) ? _sInPath.copy(0,nPos) : OUString(); - lcl_resolveCharEntities(_rsLocalName); - - return nPos >= 0; -} - -//---------------------------------------------------------------------------- -OUString extractFirstFromConfigurationPath(OUString const& _sInPath, OUString* _sOutPath) -{ - sal_Int32 nSep = _sInPath.indexOf('/'); - sal_Int32 nBracket = _sInPath.indexOf('['); - - sal_Int32 nStart = nBracket + 1; - sal_Int32 nEnd = nSep; - - if (0 <= nBracket) // found a bracket-quoted relative path - { - if (nSep < 0 || nBracket < nSep) // and the separator comes after it - { - sal_Unicode chQuote = _sInPath[nStart]; - if (chQuote == '\'' || chQuote == '\"') - { - ++nStart; - nEnd = _sInPath.indexOf(chQuote, nStart+1); - nBracket = nEnd+1; - } - else - { - nEnd = _sInPath.indexOf(']',nStart); - nBracket = nEnd; - } - OSL_ENSURE(nEnd > nStart && _sInPath[nBracket] == ']', "Invalid config path: improper mismatch of quote or bracket"); - OSL_ENSURE((nBracket+1 == _sInPath.getLength() && nSep == -1) || (_sInPath[nBracket+1] == '/' && nSep == nBracket+1), "Invalid config path: brackets not followed by slash"); - } - else // ... but our initial element name is in simple form - nStart = 0; - } - - OUString sResult = (nEnd >= 0) ? _sInPath.copy(nStart, nEnd-nStart) : _sInPath; - lcl_resolveCharEntities(sResult); - - if (_sOutPath != 0) - { - *_sOutPath = (nSep >= 0) ? _sInPath.copy(nSep + 1) : OUString(); - } - - return sResult; -} - -//---------------------------------------------------------------------------- - -// find the position after the prefix in the nested path -static inline -sal_Int32 lcl_findPrefixEnd(OUString const& _sNestedPath, OUString const& _sPrefixPath) -{ - // TODO: currently handles only exact prefix matches - sal_Int32 nPrefixLength = _sPrefixPath.getLength(); - - OSL_ENSURE(nPrefixLength == 0 || _sPrefixPath[nPrefixLength-1] != '/', - "Cannot handle slash-terminated prefix pathes"); - - sal_Bool bIsPrefix; - if (_sNestedPath.getLength() > nPrefixLength) - { - bIsPrefix = _sNestedPath[nPrefixLength] == '/' && - _sNestedPath.compareTo(_sPrefixPath,nPrefixLength) == 0; - ++nPrefixLength; - } - else if (_sNestedPath.getLength() == nPrefixLength) - { - bIsPrefix = _sNestedPath.equals(_sPrefixPath); - } - else - { - bIsPrefix = false; - } - - return bIsPrefix ? nPrefixLength : 0; -} - -//---------------------------------------------------------------------------- -sal_Bool isPrefixOfConfigurationPath(OUString const& _sNestedPath, - OUString const& _sPrefixPath) -{ - return _sPrefixPath.getLength() == 0 || lcl_findPrefixEnd(_sNestedPath,_sPrefixPath) != 0; -} - -//---------------------------------------------------------------------------- -OUString dropPrefixFromConfigurationPath(OUString const& _sNestedPath, - OUString const& _sPrefixPath) -{ - if ( sal_Int32 nPrefixEnd = lcl_findPrefixEnd(_sNestedPath,_sPrefixPath) ) - { - return _sNestedPath.copy(nPrefixEnd); - } - else - { - OSL_ENSURE(_sPrefixPath.getLength() == 0, "Path does not start with expected prefix"); - - return _sNestedPath; - } -} - -//---------------------------------------------------------------------------- -static -OUString lcl_wrapName(const OUString& _sContent, const OUString& _sType) -{ - const sal_Unicode * const pBeginContent = _sContent.getStr(); - const sal_Unicode * const pEndContent = pBeginContent + _sContent.getLength(); - - OSL_PRECOND(_sType.getLength(), "Unexpected config type name: empty"); - OSL_PRECOND(pBeginContent <= pEndContent, "Invalid config name: empty"); - - if (pBeginContent == pEndContent) - return _sType; - - rtl::OUStringBuffer aNormalized(_sType.getLength() + _sContent.getLength() + 4); // reserve approximate size initially - - // prefix: type, opening bracket and quote - aNormalized.append( _sType ).appendAscii( RTL_CONSTASCII_STRINGPARAM("['") ); - - // content: copy over each char and handle escaping - for(const sal_Unicode* pCur = pBeginContent; pCur != pEndContent; ++pCur) - { - // append (escape if needed) - switch(*pCur) - { - case sal_Unicode('&') : aNormalized.appendAscii( RTL_CONSTASCII_STRINGPARAM("&") ); break; - case sal_Unicode('\''): aNormalized.appendAscii( RTL_CONSTASCII_STRINGPARAM("'") ); break; - case sal_Unicode('\"'): aNormalized.appendAscii( RTL_CONSTASCII_STRINGPARAM(""") ); break; - - default: aNormalized.append( *pCur ); - } - } - - // suffix: closing quote and bracket - aNormalized.appendAscii( RTL_CONSTASCII_STRINGPARAM("']") ); - - return aNormalized.makeStringAndClear(); -} - -//---------------------------------------------------------------------------- - -OUString wrapConfigurationElementName(OUString const& _sElementName) -{ - return lcl_wrapName(_sElementName, OUString(RTL_CONSTASCII_USTRINGPARAM("*")) ); -} - -//---------------------------------------------------------------------------- - -OUString wrapConfigurationElementName(OUString const& _sElementName, - OUString const& _sTypeName) -{ - // todo: check that _sTypeName is valid - return lcl_wrapName(_sElementName, _sTypeName); -} - -//---------------------------------------------------------------------------- -} // namespace utl - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/configvaluecontainer.cxx b/unotools/source/config/configvaluecontainer.cxx deleted file mode 100644 index 811621c20e..0000000000 --- a/unotools/source/config/configvaluecontainer.cxx +++ /dev/null @@ -1,395 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/configvaluecontainer.hxx> -#include <unotools/confignode.hxx> -#include <tools/debug.hxx> -#include <comphelper/stl_types.hxx> -#include <uno/data.h> -#include <algorithm> - -#ifdef DBG_UTIL -#include <rtl/strbuf.hxx> -#endif - -//......................................................................... -namespace utl -{ -//......................................................................... - - using namespace ::com::sun::star::uno; - using namespace ::com::sun::star::lang; - - //===================================================================== - //= NodeValueAccessor - //===================================================================== - enum LocationType - { - ltSimplyObjectInstance, - ltAnyInstance, - - ltUnbound - }; - - struct NodeValueAccessor - { - private: - ::rtl::OUString sRelativePath; // the relative path of the node - LocationType eLocationType; // the type of location where the value is stored - void* pLocation; // the pointer to the location - Type aDataType; // the type object pointed to by pLocation - - public: - NodeValueAccessor( const ::rtl::OUString& _rNodePath ); - - void bind( void* _pLocation, const Type& _rType ); - void bind( Any* _pLocation ); - - bool isBound( ) const { return ( ltUnbound != eLocationType ) && ( NULL != pLocation ); } - const ::rtl::OUString& getPath( ) const { return sRelativePath; } - LocationType getLocType( ) const { return eLocationType; } - void* getLocation( ) const { return pLocation; } - const Type& getDataType( ) const { return aDataType; } - - bool operator == ( const NodeValueAccessor& rhs ) const; - bool operator != ( const NodeValueAccessor& rhs ) const { return !operator == ( rhs ); } - }; - - NodeValueAccessor::NodeValueAccessor( const ::rtl::OUString& _rNodePath ) - :sRelativePath( _rNodePath ) - ,eLocationType( ltUnbound ) - ,pLocation( NULL ) - { - } - - bool NodeValueAccessor::operator == ( const NodeValueAccessor& rhs ) const - { - return ( sRelativePath == rhs.sRelativePath ) - && ( eLocationType == rhs.eLocationType ) - && ( pLocation == rhs.pLocation ); - } - - void NodeValueAccessor::bind( void* _pLocation, const Type& _rType ) - { - DBG_ASSERT( !isBound(), "NodeValueAccessor::bind: already bound!" ); - - eLocationType = ltSimplyObjectInstance; - pLocation = _pLocation; - aDataType = _rType; - } - - void NodeValueAccessor::bind( Any* _pLocation ) - { - DBG_ASSERT( !isBound(), "NodeValueAccessor::bind: already bound!" ); - - eLocationType = ltAnyInstance; - pLocation = _pLocation; - aDataType = ::getCppuType( _pLocation ); - } - - #ifndef UNX - static - #endif - void lcl_copyData( const NodeValueAccessor& _rAccessor, const Any& _rData, ::osl::Mutex& _rMutex ) - { - ::osl::MutexGuard aGuard( _rMutex ); - - DBG_ASSERT( _rAccessor.isBound(), "::utl::lcl_copyData: invalid accessor!" ); - switch ( _rAccessor.getLocType() ) - { - case ltSimplyObjectInstance: - { - if ( _rData.hasValue() ) - { -#ifdef DBG_UTIL - sal_Bool bSuccess = -#endif - // assign the value - uno_type_assignData( - _rAccessor.getLocation(), _rAccessor.getDataType().getTypeLibType(), - const_cast< void* >( _rData.getValue() ), _rData.getValueType().getTypeLibType(), - (uno_QueryInterfaceFunc)cpp_queryInterface, (uno_AcquireFunc)cpp_acquire, (uno_ReleaseFunc)cpp_release - ); - #ifdef DBG_UTIL - rtl::OStringBuffer aBuf( 256 ); - aBuf.append("::utl::lcl_copyData( Accessor, Any ): could not assign the data (node path: "); - aBuf.append( rtl::OUStringToOString( _rAccessor.getPath(), RTL_TEXTENCODING_ASCII_US ) ); - aBuf.append( " !" ); - DBG_ASSERT( bSuccess, aBuf.getStr() ); - #endif - } - else { - DBG_WARNING( "::utl::lcl_copyData: NULL value lost!" ); - } - } - break; - case ltAnyInstance: - // a simple assignment of an Any ... - *static_cast< Any* >( _rAccessor.getLocation() ) = _rData; - break; - default: - break; - } - } - - #ifndef UNX - static - #endif - void lcl_copyData( Any& _rData, const NodeValueAccessor& _rAccessor, ::osl::Mutex& _rMutex ) - { - ::osl::MutexGuard aGuard( _rMutex ); - - DBG_ASSERT( _rAccessor.isBound(), "::utl::lcl_copyData: invalid accessor!" ); - switch ( _rAccessor.getLocType() ) - { - case ltSimplyObjectInstance: - // a simple setValue .... - _rData.setValue( _rAccessor.getLocation(), _rAccessor.getDataType() ); - break; - - case ltAnyInstance: - // a simple assignment of an Any ... - _rData = *static_cast< Any* >( _rAccessor.getLocation() ); - break; - default: - break; - } - } - - //===================================================================== - //= functors on NodeValueAccessor instances - //===================================================================== - - /// base class for functors syncronizing between exchange locations and config sub nodes - struct SubNodeAccess : public ::std::unary_function< NodeValueAccessor, void > - { - protected: - const OConfigurationNode& m_rRootNode; - ::osl::Mutex& m_rMutex; - - public: - SubNodeAccess( const OConfigurationNode& _rRootNode, ::osl::Mutex& _rMutex ) - :m_rRootNode( _rRootNode ) - ,m_rMutex( _rMutex ) - { - } - }; - - struct UpdateFromConfig : public SubNodeAccess - { - public: - UpdateFromConfig( const OConfigurationNode& _rRootNode, ::osl::Mutex& _rMutex ) : SubNodeAccess( _rRootNode, _rMutex ) { } - - void operator() ( NodeValueAccessor& _rAccessor ) - { - ::utl::lcl_copyData( _rAccessor, m_rRootNode.getNodeValue( _rAccessor.getPath( ) ), m_rMutex ); - } - }; - - struct UpdateToConfig : public SubNodeAccess - { - public: - UpdateToConfig( const OConfigurationNode& _rRootNode, ::osl::Mutex& _rMutex ) : SubNodeAccess( _rRootNode, _rMutex ) { } - - void operator() ( NodeValueAccessor& _rAccessor ) - { - Any aNewValue; - lcl_copyData( aNewValue, _rAccessor, m_rMutex ); - m_rRootNode.setNodeValue( _rAccessor.getPath( ), aNewValue ); - } - }; - - DECLARE_STL_VECTOR( NodeValueAccessor, NodeValueAccessors ); - - //===================================================================== - //= OConfigurationValueContainerImpl - //===================================================================== - struct OConfigurationValueContainerImpl - { - Reference< XMultiServiceFactory > xORB; // the service factory - ::osl::Mutex& rMutex; // the mutex for accessing the data containers - OConfigurationTreeRoot aConfigRoot; // the configuration node we're accessing - - NodeValueAccessors aAccessors; // the accessors to the node values - - OConfigurationValueContainerImpl( const Reference< XMultiServiceFactory >& _rxORB, ::osl::Mutex& _rMutex ) - :xORB( _rxORB ) - ,rMutex( _rMutex ) - { - } - }; - - //===================================================================== - //= OConfigurationValueContainer - //===================================================================== - - OConfigurationValueContainer::OConfigurationValueContainer( - const Reference< XMultiServiceFactory >& _rxORB, ::osl::Mutex& _rAccessSafety, - const sal_Char* _pConfigLocation, const sal_uInt16 _nAccessFlags, const sal_Int32 _nLevels ) - :m_pImpl( new OConfigurationValueContainerImpl( _rxORB, _rAccessSafety ) ) - { - implConstruct( ::rtl::OUString::createFromAscii( _pConfigLocation ), _nAccessFlags, _nLevels ); - } - - OConfigurationValueContainer::OConfigurationValueContainer( - const Reference< XMultiServiceFactory >& _rxORB, ::osl::Mutex& _rAccessSafety, - const ::rtl::OUString& _rConfigLocation, const sal_uInt16 _nAccessFlags, const sal_Int32 _nLevels ) - :m_pImpl( new OConfigurationValueContainerImpl( _rxORB, _rAccessSafety ) ) - { - implConstruct( _rConfigLocation, _nAccessFlags, _nLevels ); - } - - OConfigurationValueContainer::~OConfigurationValueContainer() - { - delete m_pImpl; - } - - const Reference< XMultiServiceFactory >& OConfigurationValueContainer::getServiceFactory( ) const - { - return m_pImpl->xORB; - } - - void OConfigurationValueContainer::implConstruct( const ::rtl::OUString& _rConfigLocation, - const sal_uInt16 _nAccessFlags, const sal_Int32 _nLevels ) - { - DBG_ASSERT( !m_pImpl->aConfigRoot.isValid(), "OConfigurationValueContainer::implConstruct: already initialized!" ); - - // ................................. - // create the configuration node we're about to work with - m_pImpl->aConfigRoot = OConfigurationTreeRoot::createWithServiceFactory( - m_pImpl->xORB, - _rConfigLocation, - _nLevels, - ( _nAccessFlags & CVC_UPDATE_ACCESS ) ? OConfigurationTreeRoot::CM_UPDATABLE : OConfigurationTreeRoot::CM_READONLY, - ( _nAccessFlags & CVC_IMMEDIATE_UPDATE ) ? sal_False : sal_True - ); - #ifdef DBG_UTIL - rtl::OStringBuffer aBuf(256); - aBuf.append("Could not access the configuration node located at "); - aBuf.append( rtl::OUStringToOString( _rConfigLocation, RTL_TEXTENCODING_ASCII_US ) ); - aBuf.append( " !" ); - DBG_ASSERT( m_pImpl->aConfigRoot.isValid(), aBuf.getStr() ); - #endif - } - - void OConfigurationValueContainer::registerExchangeLocation( const sal_Char* _pRelativePath, - void* _pContainer, const Type& _rValueType ) - { - // checks .... - DBG_ASSERT( _pContainer, "OConfigurationValueContainer::registerExchangeLocation: invalid container location!" ); - DBG_ASSERT( ( TypeClass_CHAR == _rValueType.getTypeClass( ) ) - || ( TypeClass_BOOLEAN == _rValueType.getTypeClass( ) ) - || ( TypeClass_BYTE == _rValueType.getTypeClass( ) ) - || ( TypeClass_SHORT == _rValueType.getTypeClass( ) ) - || ( TypeClass_LONG == _rValueType.getTypeClass( ) ) - || ( TypeClass_DOUBLE == _rValueType.getTypeClass( ) ) - || ( TypeClass_STRING == _rValueType.getTypeClass( ) ) - || ( TypeClass_SEQUENCE == _rValueType.getTypeClass( ) ), - "OConfigurationValueContainer::registerExchangeLocation: invalid type!" ); - - // build an accessor for this container - NodeValueAccessor aNewAccessor( ::rtl::OUString::createFromAscii( _pRelativePath ) ); - aNewAccessor.bind( _pContainer, _rValueType ); - - // insert it into our structure - implRegisterExchangeLocation( aNewAccessor ); - } - - void OConfigurationValueContainer::registerNullValueExchangeLocation( const sal_Char* _pRelativePath, Any* _pContainer ) - { - // build an accessor for this container - NodeValueAccessor aNewAccessor( ::rtl::OUString::createFromAscii( _pRelativePath ) ); - aNewAccessor.bind( _pContainer ); - - // insert it into our structure - implRegisterExchangeLocation( aNewAccessor ); - } - - void OConfigurationValueContainer::read( ) - { - std::for_each( - m_pImpl->aAccessors.begin(), - m_pImpl->aAccessors.end(), - UpdateFromConfig( m_pImpl->aConfigRoot, m_pImpl->rMutex ) - ); - } - - void OConfigurationValueContainer::write( sal_Bool _bCommit ) - { - // collect the current values in the exchange locations - std::for_each( - m_pImpl->aAccessors.begin(), - m_pImpl->aAccessors.end(), - UpdateToConfig( m_pImpl->aConfigRoot, m_pImpl->rMutex ) - ); - - // commit the changes done (if requested) - if ( _bCommit ) - commit( sal_False ); - } - - void OConfigurationValueContainer::commit( sal_Bool _bWrite ) - { - // write the current values in the exchange locations (if requested) - if ( _bWrite ) - write( sal_False ); - - // commit the changes done - m_pImpl->aConfigRoot.commit( ); - } - - void OConfigurationValueContainer::implRegisterExchangeLocation( const NodeValueAccessor& _rAccessor ) - { - // some checks - DBG_ASSERT( !m_pImpl->aConfigRoot.isValid() || m_pImpl->aConfigRoot.hasByHierarchicalName( _rAccessor.getPath() ), - "OConfigurationValueContainer::implRegisterExchangeLocation: invalid relative path!" ); - -#ifdef DBG_UTIL - // another check (should be the first container for this node) - ConstNodeValueAccessorsIterator aExistent = ::std::find( - m_pImpl->aAccessors.begin(), - m_pImpl->aAccessors.end(), - _rAccessor - ); - DBG_ASSERT( m_pImpl->aAccessors.end() == aExistent, "OConfigurationValueContainer::implRegisterExchangeLocation: already registered a container for this subnode!" ); -#endif - - // remember the accessor - m_pImpl->aAccessors.push_back( _rAccessor ); - - // and initially fill the value - lcl_copyData( _rAccessor, m_pImpl->aConfigRoot.getNodeValue( _rAccessor.getPath() ), m_pImpl->rMutex ); - } - -//......................................................................... -} // namespace utl -//......................................................................... - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/defaultoptions.cxx b/unotools/source/config/defaultoptions.cxx deleted file mode 100644 index ea008fd42f..0000000000 --- a/unotools/source/config/defaultoptions.cxx +++ /dev/null @@ -1,365 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/defaultoptions.hxx> -#include <unotools/pathoptions.hxx> -#include <unotools/configitem.hxx> -#include <unotools/configmgr.hxx> -#include <tools/debug.hxx> -#include <tools/resmgr.hxx> -#include <tools/urlobj.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <osl/mutex.hxx> - -#include <unotools/localfilehelper.hxx> -#include <rtl/instance.hxx> - -#include <itemholder1.hxx> - -using namespace osl; -using namespace utl; -using namespace com::sun::star::uno; - -using ::rtl::OUString; - -// define ---------------------------------------------------------------- - -#define ASCII_STR(s) OUString( RTL_CONSTASCII_USTRINGPARAM(s) ) - -#define DEFAULTPATH__ADDIN 0 -#define DEFAULTPATH__AUTOCORRECT 1 -#define DEFAULTPATH__AUTOTEXT 2 -#define DEFAULTPATH__BACKUP 3 -#define DEFAULTPATH__BASIC 4 -#define DEFAULTPATH__BITMAP 5 -#define DEFAULTPATH__CONFIG 6 -#define DEFAULTPATH__DICTIONARY 7 -#define DEFAULTPATH__FAVORITES 8 -#define DEFAULTPATH__FILTER 9 -#define DEFAULTPATH__GALLERY 10 -#define DEFAULTPATH__GRAPHIC 11 -#define DEFAULTPATH__HELP 12 -#define DEFAULTPATH__LINGUISTIC 13 -#define DEFAULTPATH__MODULE 14 -#define DEFAULTPATH__PALETTE 15 -#define DEFAULTPATH__PLUGIN 16 -#define DEFAULTPATH__TEMP 17 -#define DEFAULTPATH__TEMPLATE 18 -#define DEFAULTPATH__USERCONFIG 19 -#define DEFAULTPATH__WORK 20 -#define DEFAULTPATH__USERDICTIONARY 21 - -// class SvtDefaultOptions_Impl ------------------------------------------ - -class SvtDefaultOptions_Impl : public utl::ConfigItem -{ -public: - String m_aAddinPath; - String m_aAutoCorrectPath; - String m_aAutoTextPath; - String m_aBackupPath; - String m_aBasicPath; - String m_aBitmapPath; - String m_aConfigPath; - String m_aDictionaryPath; - String m_aFavoritesPath; - String m_aFilterPath; - String m_aGalleryPath; - String m_aGraphicPath; - String m_aHelpPath; - String m_aLinguisticPath; - String m_aModulePath; - String m_aPalettePath; - String m_aPluginPath; - String m_aTempPath; - String m_aTemplatePath; - String m_aUserConfigPath; - String m_aWorkPath; - String m_aUserDictionaryPath; - - SvtDefaultOptions_Impl(); - - String GetDefaultPath( sal_uInt16 nId ) const; - virtual void Commit(); - virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames); -}; - -// global ---------------------------------------------------------------- - -static SvtDefaultOptions_Impl* pOptions = NULL; -static sal_Int32 nRefCount = 0; - -typedef String SvtDefaultOptions_Impl:: *PathStrPtr; - -struct PathToDefaultMapping_Impl -{ - SvtPathOptions::Pathes _ePath; - PathStrPtr _pDefaultPath; -}; - -static PathToDefaultMapping_Impl const PathMap_Impl[] = -{ - { SvtPathOptions::PATH_ADDIN, &SvtDefaultOptions_Impl::m_aAddinPath }, - { SvtPathOptions::PATH_AUTOCORRECT, &SvtDefaultOptions_Impl::m_aAutoCorrectPath }, - { SvtPathOptions::PATH_AUTOTEXT, &SvtDefaultOptions_Impl::m_aAutoTextPath }, - { SvtPathOptions::PATH_BACKUP, &SvtDefaultOptions_Impl::m_aBackupPath }, - { SvtPathOptions::PATH_BASIC, &SvtDefaultOptions_Impl::m_aBasicPath }, - { SvtPathOptions::PATH_BITMAP, &SvtDefaultOptions_Impl::m_aBitmapPath }, - { SvtPathOptions::PATH_CONFIG, &SvtDefaultOptions_Impl::m_aConfigPath }, - { SvtPathOptions::PATH_DICTIONARY, &SvtDefaultOptions_Impl::m_aDictionaryPath }, - { SvtPathOptions::PATH_FAVORITES, &SvtDefaultOptions_Impl::m_aFavoritesPath }, - { SvtPathOptions::PATH_FILTER, &SvtDefaultOptions_Impl::m_aFilterPath }, - { SvtPathOptions::PATH_GALLERY, &SvtDefaultOptions_Impl::m_aGalleryPath }, - { SvtPathOptions::PATH_GRAPHIC, &SvtDefaultOptions_Impl::m_aGraphicPath }, - { SvtPathOptions::PATH_HELP, &SvtDefaultOptions_Impl::m_aHelpPath }, - { SvtPathOptions::PATH_LINGUISTIC, &SvtDefaultOptions_Impl::m_aLinguisticPath }, - { SvtPathOptions::PATH_MODULE, &SvtDefaultOptions_Impl::m_aModulePath }, - { SvtPathOptions::PATH_PALETTE, &SvtDefaultOptions_Impl::m_aPalettePath }, - { SvtPathOptions::PATH_PLUGIN, &SvtDefaultOptions_Impl::m_aPluginPath }, - { SvtPathOptions::PATH_TEMP, &SvtDefaultOptions_Impl::m_aTempPath }, - { SvtPathOptions::PATH_TEMPLATE, &SvtDefaultOptions_Impl::m_aTemplatePath }, - { SvtPathOptions::PATH_USERCONFIG, &SvtDefaultOptions_Impl::m_aUserConfigPath }, - { SvtPathOptions::PATH_WORK, &SvtDefaultOptions_Impl::m_aWorkPath } -}; - -// functions ------------------------------------------------------------- - -Sequence< OUString > GetDefaultPropertyNames() -{ - static const char* aPropNames[] = - { - "Addin", // PATH_ADDIN - "AutoCorrect", // PATH_AUTOCORRECT - "AutoText", // PATH_AUTOTEXT - "Backup", // PATH_BACKUP - "Basic", // PATH_BASIC - "Bitmap", // PATH_BITMAP - "Config", // PATH_CONFIG - "Dictionary", // PATH_DICTIONARY - "Favorite", // PATH_FAVORITES - "Filter", // PATH_FILTER - "Gallery", // PATH_GALLERY - "Graphic", // PATH_GRAPHIC - "Help", // PATH_HELP - "Linguistic", // PATH_LINGUISTIC - "Module", // PATH_MODULE - "Palette", // PATH_PALETTE - "Plugin", // PATH_PLUGIN - "Temp", // PATH_TEMP - "Template", // PATH_TEMPLATE - "UserConfig", // PATH_USERCONFIG - "Work" // PATH_WORK - }; - - const int nCount = sizeof( aPropNames ) / sizeof( const char* ); - Sequence< OUString > aNames( nCount ); - OUString* pNames = aNames.getArray(); - for ( int i = 0; i < nCount; i++ ) - pNames[i] = OUString::createFromAscii( aPropNames[i] ); - - return aNames; -} - -void SvtDefaultOptions_Impl::Notify( const Sequence< rtl::OUString >& ) -{ - // no notification, will never be changed -} - -void SvtDefaultOptions_Impl::Commit() -{ - // will never be changed -} - -// class SvtDefaultOptions_Impl ------------------------------------------ - -String SvtDefaultOptions_Impl::GetDefaultPath( sal_uInt16 nId ) const -{ - String aRet; - sal_uInt16 nIdx = 0; - - while ( PathMap_Impl[nIdx]._ePath <= SvtPathOptions::PATH_WORK ) - { - if ( nId == PathMap_Impl[nIdx]._ePath && PathMap_Impl[nIdx]._pDefaultPath ) - { - aRet = this->*(PathMap_Impl[nIdx]._pDefaultPath); - if ( nId == SvtPathOptions::PATH_ADDIN || - nId == SvtPathOptions::PATH_FILTER || - nId == SvtPathOptions::PATH_HELP || - nId == SvtPathOptions::PATH_MODULE || - nId == SvtPathOptions::PATH_PLUGIN ) - { - String aTmp; - ::utl::LocalFileHelper::ConvertPhysicalNameToURL( aRet, aTmp ); - aRet = aTmp; - } - - break; - } - ++nIdx; - } - - return aRet; -} - -// ----------------------------------------------------------------------- - -SvtDefaultOptions_Impl::SvtDefaultOptions_Impl() : ConfigItem( ASCII_STR("Office.Common/Path/Default") ) -{ - /*ConfigManager* pCfgMgr =*/ ConfigManager::GetConfigManager(); - Sequence< OUString > aNames = GetDefaultPropertyNames(); - Sequence< Any > aValues = GetProperties( aNames ); - EnableNotification( aNames ); - const Any* pValues = aValues.getConstArray(); - DBG_ASSERT( aValues.getLength() == aNames.getLength(), "GetProperties failed" ); - if ( aValues.getLength() == aNames.getLength() ) - { - SvtPathOptions aPathOpt; - OUString aTempStr, aFullPath; - - for ( int nProp = 0; nProp < aNames.getLength(); nProp++ ) - { - if ( pValues[nProp].hasValue() ) - { - switch ( pValues[nProp].getValueTypeClass() ) - { - case ::com::sun::star::uno::TypeClass_STRING : - { - // multi pathes - if ( pValues[nProp] >>= aTempStr ) - aFullPath = aPathOpt.SubstituteVariable( aTempStr ); - else - { - DBG_ERRORFILE( "any operator >>= failed" ); - } - break; - } - - case ::com::sun::star::uno::TypeClass_SEQUENCE : - { - // single pathes - aFullPath = OUString(); - Sequence < OUString > aList; - if ( pValues[nProp] >>= aList ) - { - sal_Int32 nCount = aList.getLength(); - for ( sal_Int32 nPosition = 0; nPosition < nCount; ++nPosition ) - { - aTempStr = aPathOpt.SubstituteVariable( aList[ nPosition ] ); - aFullPath += aTempStr; - if ( nPosition < nCount-1 ) - aFullPath += OUString( RTL_CONSTASCII_USTRINGPARAM(";") ); - } - } - else - { - DBG_ERRORFILE( "any operator >>= failed" ); - } - break; - } - - default: - { - DBG_ERRORFILE( "Wrong any type" ); - } - } - - switch ( nProp ) - { - case DEFAULTPATH__ADDIN: m_aAddinPath = String( aFullPath ); break; - case DEFAULTPATH__AUTOCORRECT: m_aAutoCorrectPath = String( aFullPath ); break; - case DEFAULTPATH__AUTOTEXT: m_aAutoTextPath = String( aFullPath ); break; - case DEFAULTPATH__BACKUP: m_aBackupPath = String( aFullPath ); break; - case DEFAULTPATH__BASIC: m_aBasicPath = String( aFullPath ); break; - case DEFAULTPATH__BITMAP: m_aBitmapPath = String( aFullPath ); break; - case DEFAULTPATH__CONFIG: m_aConfigPath = String( aFullPath ); break; - case DEFAULTPATH__DICTIONARY: m_aDictionaryPath = String( aFullPath ); break; - case DEFAULTPATH__FAVORITES: m_aFavoritesPath = String( aFullPath ); break; - case DEFAULTPATH__FILTER: m_aFilterPath = String( aFullPath ); break; - case DEFAULTPATH__GALLERY: m_aGalleryPath = String( aFullPath ); break; - case DEFAULTPATH__GRAPHIC: m_aGraphicPath = String( aFullPath ); break; - case DEFAULTPATH__HELP: m_aHelpPath = String( aFullPath ); break; - case DEFAULTPATH__LINGUISTIC: m_aLinguisticPath = String( aFullPath ); break; - case DEFAULTPATH__MODULE: m_aModulePath = String( aFullPath ); break; - case DEFAULTPATH__PALETTE: m_aPalettePath = String( aFullPath ); break; - case DEFAULTPATH__PLUGIN: m_aPluginPath = String( aFullPath ); break; - case DEFAULTPATH__TEMP: m_aTempPath = String( aFullPath ); break; - case DEFAULTPATH__TEMPLATE: m_aTemplatePath = String( aFullPath ); break; - case DEFAULTPATH__USERCONFIG: m_aUserConfigPath = String( aFullPath ); break; - case DEFAULTPATH__WORK: m_aWorkPath = String( aFullPath ); break; - case DEFAULTPATH__USERDICTIONARY: m_aUserDictionaryPath = String( aFullPath );break; - - default: - DBG_ERRORFILE( "invalid index to load a default path" ); - } - } - } - } -} - -// class SvtDefaultOptions ----------------------------------------------- -namespace { struct lclMutex : public rtl::Static< ::osl::Mutex, lclMutex > {}; } - -SvtDefaultOptions::SvtDefaultOptions() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( lclMutex::get() ); - if ( !pOptions ) - { - pOptions = new SvtDefaultOptions_Impl; - ItemHolder1::holdConfigItem(E_DEFAULTOPTIONS); - } - ++nRefCount; - pImp = pOptions; -} - -// ----------------------------------------------------------------------- - -SvtDefaultOptions::~SvtDefaultOptions() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( lclMutex::get() ); - if ( !--nRefCount ) - { - if ( pOptions->IsModified() ) - pOptions->Commit(); - DELETEZ( pOptions ); - } -} - -// ----------------------------------------------------------------------- - -String SvtDefaultOptions::GetDefaultPath( sal_uInt16 nId ) const -{ - return pImp->GetDefaultPath( nId ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/docinfohelper.cxx b/unotools/source/config/docinfohelper.cxx deleted file mode 100644 index 12b7df33fc..0000000000 --- a/unotools/source/config/docinfohelper.cxx +++ /dev/null @@ -1,120 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <rtl/ustrbuf.hxx> -#include <tools/inetdef.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/bootstrap.hxx> -#include <unotools/docinfohelper.hxx> -#include <rtl/bootstrap.hxx> - -using namespace ::com::sun::star; - -namespace utl -{ - -::rtl::OUString DocInfoHelper::GetGeneratorString() -{ - rtl::OUStringBuffer aResult; - - // First product: branded name + version - // version is <product_versions>_<product_extension>$<platform> - utl::ConfigManager& rMgr = utl::ConfigManager::GetConfigManager(); - // plain product name - rtl::OUString aValue; - uno::Any aAny = rMgr.GetDirectConfigProperty( - utl::ConfigManager::PRODUCTNAME); - if ( (aAny >>= aValue) && aValue.getLength() ) - { - aResult.append( aValue.replace( ' ', '_' ) ); - aResult.append( (sal_Unicode)'/' ); - - aAny = rMgr.GetDirectConfigProperty( - utl::ConfigManager::PRODUCTVERSION); - if ( (aAny >>= aValue) && aValue.getLength() ) - { - aResult.append( aValue.replace( ' ', '_' ) ); - - aAny = rMgr.GetDirectConfigProperty( - utl::ConfigManager::PRODUCTEXTENSION); - if ( (aAny >>= aValue) && aValue.getLength() ) - { - aResult.append( (sal_Unicode)'_' ); - aResult.append( aValue.replace( ' ', '_' ) ); - } - } - - ::rtl::OUString os( RTL_CONSTASCII_USTRINGPARAM("$_OS") ); - ::rtl::OUString arch( RTL_CONSTASCII_USTRINGPARAM("$_ARCH") ); - ::rtl::Bootstrap::expandMacros(os); - ::rtl::Bootstrap::expandMacros(arch); - aResult.append( (sal_Unicode)'$' ); - aResult.append( os ); - aResult.append( (sal_Unicode)'_' ); - aResult.append( arch ); - aResult.append( (sal_Unicode)' ' ); - } - - // second product: LibreOffice_project/<build_information> - // build_information has '(' and '[' encoded as '$', ')' and ']' ignored - // and ':' replaced by '-' - { - aResult.appendAscii( "LibreOffice_project/" ); - ::rtl::OUString aDefault; - ::rtl::OUString aBuildId( Bootstrap::getBuildIdData( aDefault ) ); - for( sal_Int32 i=0; i < aBuildId.getLength(); i++ ) - { - sal_Unicode c = aBuildId[i]; - switch( c ) - { - case '(': - case '[': - aResult.append( (sal_Unicode)'$' ); - break; - case ')': - case ']': - break; - case ':': - aResult.append( (sal_Unicode)'-' ); - break; - default: - aResult.append( c ); - break; - } - } - } - - return aResult.makeStringAndClear(); -} - -} // end of namespace utl - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/dynamicmenuoptions.cxx b/unotools/source/config/dynamicmenuoptions.cxx deleted file mode 100644 index 93e68eadae..0000000000 --- a/unotools/source/config/dynamicmenuoptions.cxx +++ /dev/null @@ -1,903 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/dynamicmenuoptions.hxx> -#include <unotools/moduleoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <vector> - -#include <itemholder1.hxx> - -#include <algorithm> - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::std ; -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; -using namespace ::com::sun::star::beans ; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_MENUS OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Menus/" )) -#define PATHDELIMITER OUString(RTL_CONSTASCII_USTRINGPARAM("/" )) - -#define SETNODE_NEWMENU OUString(RTL_CONSTASCII_USTRINGPARAM("New" )) -#define SETNODE_WIZARDMENU OUString(RTL_CONSTASCII_USTRINGPARAM("Wizard" )) -#define SETNODE_HELPBOOKMARKS OUString(RTL_CONSTASCII_USTRINGPARAM("HelpBookmarks" )) - -#define PROPERTYNAME_URL DYNAMICMENU_PROPERTYNAME_URL -#define PROPERTYNAME_TITLE DYNAMICMENU_PROPERTYNAME_TITLE -#define PROPERTYNAME_IMAGEIDENTIFIER DYNAMICMENU_PROPERTYNAME_IMAGEIDENTIFIER -#define PROPERTYNAME_TARGETNAME DYNAMICMENU_PROPERTYNAME_TARGETNAME - -#define PROPERTYCOUNT 4 - -#define OFFSET_URL 0 -#define OFFSET_TITLE 1 -#define OFFSET_IMAGEIDENTIFIER 2 -#define OFFSET_TARGETNAME 3 - -#define PATHPREFIX_SETUP OUString(RTL_CONSTASCII_USTRINGPARAM("m" )) -#define PATHPREFIX_USER OUString(RTL_CONSTASCII_USTRINGPARAM("u" )) - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -/*-**************************************************************************************************************** - @descr struct to hold information about one menu entry. -****************************************************************************************************************-*/ -struct SvtDynMenuEntry -{ - public: - SvtDynMenuEntry() {}; - - SvtDynMenuEntry( const OUString& sNewURL , - const OUString& sNewTitle , - const OUString& sNewImageIdentifier , - const OUString& sNewTargetName ) - { - sURL = sNewURL ; - sTitle = sNewTitle ; - sImageIdentifier = sNewImageIdentifier ; - sTargetName = sNewTargetName ; - } - - public: - OUString sName ; - OUString sURL ; - OUString sTitle ; - OUString sImageIdentifier ; - OUString sTargetName ; -}; - -/*-**************************************************************************************************************** - @descr support simple menu structures and operations on it -****************************************************************************************************************-*/ -class SvtDynMenu -{ - public: - //--------------------------------------------------------------------------------------------------------- - // append setup written menu entry - // Don't touch name of entry. It was defined by setup and must be the same everytime! - // Look for double menu entries here too ... may be some seperator items are supeflous ... - void AppendSetupEntry( const SvtDynMenuEntry& rEntry ) - { - if( - ( lSetupEntries.size() < 1 ) || - ( lSetupEntries.rbegin()->sURL != rEntry.sURL ) - ) - { - lSetupEntries.push_back( rEntry ); - } - } - - //--------------------------------------------------------------------------------------------------------- - // append user specific menu entry - // We must find unique name for it by using special prefix - // and next count of user setted entries! - // Look for double menu entries here too ... may be some seperator items are supeflous ... - void AppendUserEntry( SvtDynMenuEntry& rEntry ) - { - if( - ( lUserEntries.size() < 1 ) || - ( lUserEntries.rbegin()->sURL != rEntry.sURL ) - ) - { - rEntry.sName = PATHPREFIX_USER; - rEntry.sName += OUString::valueOf( (sal_Int32)impl_getNextUserEntryNr() ); - lUserEntries.push_back( rEntry ); - } - } - - //--------------------------------------------------------------------------------------------------------- - // the only way to free memory! - void Clear() - { - lSetupEntries.clear(); - lUserEntries.clear(); - } - - //--------------------------------------------------------------------------------------------------------- - // convert internal list to external format - // for using it on right menus realy - // Notice: We build a property list with 4 entries and set it on result list then. - // The while-loop starts with pointer on internal member list lSetupEntries, change to - // lUserEntries then and stop after that with NULL! - // Separator entries will be packed in another way then normal entries! We define - // special strings "sEmpty" and "sSeperator" to perform too ... - Sequence< Sequence< PropertyValue > > GetList() const - { - sal_Int32 nSetupCount = (sal_Int32)lSetupEntries.size(); - sal_Int32 nUserCount = (sal_Int32)lUserEntries.size(); - sal_Int32 nStep = 0; - Sequence< PropertyValue > lProperties ( PROPERTYCOUNT ); - Sequence< Sequence< PropertyValue > > lResult ( nSetupCount+nUserCount ); - OUString sSeperator ( RTL_CONSTASCII_USTRINGPARAM("private:separator") ); - OUString sEmpty ; - const vector< SvtDynMenuEntry >* pList = &lSetupEntries; - - lProperties[OFFSET_URL ].Name = PROPERTYNAME_URL ; - lProperties[OFFSET_TITLE ].Name = PROPERTYNAME_TITLE ; - lProperties[OFFSET_IMAGEIDENTIFIER].Name = PROPERTYNAME_IMAGEIDENTIFIER ; - lProperties[OFFSET_TARGETNAME ].Name = PROPERTYNAME_TARGETNAME ; - - while( pList != NULL ) - { - for( vector< SvtDynMenuEntry >::const_iterator pItem =pList->begin(); - pItem!=pList->end() ; - ++pItem ) - { - if( pItem->sURL == sSeperator ) - { - lProperties[OFFSET_URL ].Value <<= sSeperator ; - lProperties[OFFSET_TITLE ].Value <<= sEmpty ; - lProperties[OFFSET_IMAGEIDENTIFIER ].Value <<= sEmpty ; - lProperties[OFFSET_TARGETNAME ].Value <<= sEmpty ; - } - else - { - lProperties[OFFSET_URL ].Value <<= pItem->sURL ; - lProperties[OFFSET_TITLE ].Value <<= pItem->sTitle ; - lProperties[OFFSET_IMAGEIDENTIFIER ].Value <<= pItem->sImageIdentifier; - lProperties[OFFSET_TARGETNAME ].Value <<= pItem->sTargetName ; - } - lResult[nStep] = lProperties; - ++nStep; - } - if( pList == &lSetupEntries ) - pList = &lUserEntries; - else - pList = NULL; - } - return lResult; - } - - private: - //--------------------------------------------------------------------------------------------------------- - // search for an entry named "ux" with x=[0..i] inside our menu - // which has set highest number x. So we can add another user entry. - sal_Int32 impl_getNextUserEntryNr() const - { - sal_Int32 nNr = 0; - for( vector< SvtDynMenuEntry >::const_iterator pItem =lUserEntries.begin(); - pItem!=lUserEntries.end() ; - ++pItem ) - { - if( pItem->sName.compareTo( PATHPREFIX_USER, 1 ) == 0 ) - { - OUString sNr = pItem->sName.copy( 1, pItem->sName.getLength()-1 ); - sal_Int32 nCheckNr = sNr.toInt32(); - if( nCheckNr > nNr ) - nNr = nCheckNr; - } - } - // Attention: Code isn't prepared for recyling of unused fragmented numbers! - // If we reach end of sal_Int32 range ... we must stop further working ... - // But I think nobody expand a menu to more then 1000 ... 100000 ... entries ... or? - DBG_ASSERT( !(nNr>0x7fffffff), "Menu::impl_getNextUserEntryNr()\nUser count can be out of range next time ...\n" ); - return nNr; - } - - private: - vector< SvtDynMenuEntry > lSetupEntries; - vector< SvtDynMenuEntry > lUserEntries ; -}; - -class SvtDynamicMenuOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtDynamicMenuOptions_Impl(); - ~SvtDynamicMenuOptions_Impl(); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @seealso baseclass ConfigItem - - @param "lPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& lPropertyNames ); - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short base implementation of public interface for "SvtDynamicMenuOptions"! - @descr These class is used as static member of "SvtDynamicMenuOptions" ... - => The code exist only for one time and isn't duplicated for every instance! - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void Clear ( EDynamicMenuType eMenu ); - Sequence< Sequence< PropertyValue > > GetMenu ( EDynamicMenuType eMenu ) const ; - void AppendItem ( EDynamicMenuType eMenu , - const OUString& sURL , - const OUString& sTitle , - const OUString& sImageIdentifier, - const OUString& sTargetName ); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return list of key names of our configuration management which represent oue module tree - @descr These methods return the current list of key names! We need it to get needed values from our - configuration management and support dynamical menu item lists! - - @seealso - - - @param "nNewCount" , returns count of menu entries for "new" - @param "nWizardCount" , returns count of menu entries for "wizard" - @return A list of configuration key names is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - Sequence< OUString > impl_GetPropertyNames( sal_uInt32& nNewCount, sal_uInt32& nWizardCount, sal_uInt32& nHelpBookmarksCount ); - - /*-****************************************************************************************************//** - @short sort given source list and expand it for all well known properties to destination - @descr We must support sets of entries with count inside the name .. but some of them could be missing! - e.g. s1-s2-s3-s0-u1-s6-u5-u7 - Then we must sort it by name and expand it to the follow one: - sSetNode/s0/URL - sSetNode/s0/Title - sSetNode/s0/... - sSetNode/s1/URL - sSetNode/s1/Title - sSetNode/s1/... - ... - sSetNode/s6/URL - sSetNode/s6/Title - sSetNode/s6/... - sSetNode/u1/URL - sSetNode/u1/Title - sSetNode/u1/... - ... - sSetNode/u7/URL - sSetNode/u7/Title - sSetNode/u7/... - Rules: We start with all setup written entries names "sx" and x=[0..n]. - Then we handle all "ux" items. Inside these blocks we sort it ascending by number. - - @attention We add these expanded list to the end of given "lDestination" list! - So we must start on "lDestination.getLength()". - Reallocation of memory of destination list is done by us! - - @seealso method impl_GetPropertyNames() - - @param "lSource" , original list (e.g. [m1-m2-m3-m6-m0] ) - @param "lDestination" , destination of operation - @param "sSetNode" , name of configuration set to build complete path - @return A list of configuration key names is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - void impl_SortAndExpandPropertyNames( const Sequence< OUString >& lSource , - Sequence< OUString >& lDestination , - const OUString& sSetNode ); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - SvtDynMenu m_aNewMenu ; - SvtDynMenu m_aWizardMenu ; - SvtDynMenu m_aHelpBookmarksMenu ; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtDynamicMenuOptions_Impl::SvtDynamicMenuOptions_Impl() - // Init baseclasses first - : ConfigItem( ROOTNODE_MENUS ) - // Init member then... -{ - // Get names and values of all accessable menu entries and fill internal structures. - // See impl_GetPropertyNames() for further informations. - sal_uInt32 nNewCount = 0; - sal_uInt32 nWizardCount = 0; - sal_uInt32 nHelpBookmarksCount = 0; - Sequence< OUString > lNames = impl_GetPropertyNames ( nNewCount , - nWizardCount , - nHelpBookmarksCount ); - Sequence< Any > lValues = GetProperties ( lNames ); - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - DBG_ASSERT( !(lNames.getLength()!=lValues.getLength()), "SvtDynamicMenuOptions_Impl::SvtDynamicMenuOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Copy values from list in right order to ouer internal member. - // Attention: List for names and values have an internal construction pattern! - // - // first "New" menu ... - // Name Value - // /New/1/URL "private:factory/swriter" - // /New/1/Title "Neues Writer Dokument" - // /New/1/ImageIdentifier "icon_writer" - // /New/1/TargetName "_blank" - // - // /New/2/URL "private:factory/scalc" - // /New/2/Title "Neues Calc Dokument" - // /New/2/ImageIdentifier "icon_calc" - // /New/2/TargetName "_blank" - // - // second "Wizard" menu ... - // /Wizard/1/URL "file://b" - // /Wizard/1/Title "MalWas" - // /Wizard/1/ImageIdentifier "icon_?" - // /Wizard/1/TargetName "_self" - // - // ... and so on ... - - sal_uInt32 nItem = 0 ; - sal_uInt32 nPosition = 0 ; - OUString sName ; - - // We must use these one instance object(!) to get information about installed modules. - // These information are used to filter menu entries wich need not installed modules ... - // Such entries shouldnt be available then! - // see impl_IsEntrySupported() too - SvtModuleOptions aModuleOptions; - - // Get names/values for new menu. - // 4 subkeys for every item! - for( nItem=0; nItem<nNewCount; ++nItem ) - { - SvtDynMenuEntry aItem ; - lValues[nPosition] >>= aItem.sURL ; - ++nPosition; - lValues[nPosition] >>= aItem.sTitle ; - ++nPosition; - lValues[nPosition] >>= aItem.sImageIdentifier ; - ++nPosition; - lValues[nPosition] >>= aItem.sTargetName ; - ++nPosition; - m_aNewMenu.AppendSetupEntry( aItem ); - } - - // Attention: Don't reset nPosition here! - - // Get names/values for wizard menu. - // 4 subkeys for every item! - for( nItem=0; nItem<nWizardCount; ++nItem ) - { - SvtDynMenuEntry aItem ; - lValues[nPosition] >>= aItem.sURL ; - ++nPosition; - lValues[nPosition] >>= aItem.sTitle ; - ++nPosition; - lValues[nPosition] >>= aItem.sImageIdentifier ; - ++nPosition; - lValues[nPosition] >>= aItem.sTargetName ; - ++nPosition; - m_aWizardMenu.AppendSetupEntry( aItem ); - } - - // Attention: Don't reset nPosition here! - - // Get names/values for wizard menu. - // 4 subkeys for every item! - for( nItem=0; nItem<nHelpBookmarksCount; ++nItem ) - { - SvtDynMenuEntry aItem ; - lValues[nPosition] >>= aItem.sURL ; - ++nPosition; - lValues[nPosition] >>= aItem.sTitle ; - ++nPosition; - lValues[nPosition] >>= aItem.sImageIdentifier ; - ++nPosition; - lValues[nPosition] >>= aItem.sTargetName ; - ++nPosition; - m_aHelpBookmarksMenu.AppendSetupEntry( aItem ); - } - -/*TODO: Not used in the moment! see Notify() ... - // Enable notification mechanism of ouer baseclass. - // We need it to get information about changes outside these class on ouer used configuration keys! - EnableNotification( lNames ); -*/ -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtDynamicMenuOptions_Impl::~SvtDynamicMenuOptions_Impl() -{ - // We must save our current values .. if user forget it! - if( IsModified() == sal_True ) - { - Commit(); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtDynamicMenuOptions_Impl::Notify( const Sequence< OUString >& ) -{ - DBG_ASSERT( sal_False, "SvtDynamicMenuOptions_Impl::Notify()\nNot implemented yet! I don't know how I can handle a dynamical list of unknown properties ...\n" ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtDynamicMenuOptions_Impl::Commit() -{ - OSL_FAIL( "SvtDynamicMenuOptions_Impl::Commit()\nNot implemented yet!\n" ); - /* - // Write all properties! - // Delete complete sets first. - ClearNodeSet( SETNODE_NEWMENU ); - ClearNodeSet( SETNODE_WIZARDMENU ); - ClearNodeSet( SETNODE_HELPBOOKMARKS ); - - MenuEntry aItem ; - OUString sNode ; - Sequence< PropertyValue > lPropertyValues( PROPERTYCOUNT ); - sal_uInt32 nItem = 0 ; - - // Copy "new" menu entries to save-list! - sal_uInt32 nNewCount = m_aNewMenu.size(); - for( nItem=0; nItem<nNewCount; ++nItem ) - { - aItem = m_aNewMenu[nItem]; - // Format: "New/1/URL" - // "New/1/Title" - // ... - sNode = SETNODE_NEWMENU + PATHDELIMITER + PATHPREFIX + OUString::valueOf( (sal_Int32)nItem ) + PATHDELIMITER; - - lPropertyValues[OFFSET_URL ].Name = sNode + PROPERTYNAME_URL ; - lPropertyValues[OFFSET_TITLE ].Name = sNode + PROPERTYNAME_TITLE ; - lPropertyValues[OFFSET_IMAGEIDENTIFIER ].Name = sNode + PROPERTYNAME_IMAGEIDENTIFIER ; - lPropertyValues[OFFSET_TARGETNAME ].Name = sNode + PROPERTYNAME_TARGETNAME ; - - lPropertyValues[OFFSET_URL ].Value <<= aItem.sURL ; - lPropertyValues[OFFSET_TITLE ].Value <<= aItem.sTitle ; - lPropertyValues[OFFSET_IMAGEIDENTIFIER ].Value <<= aItem.sImageIdentifier ; - lPropertyValues[OFFSET_TARGETNAME ].Value <<= aItem.sTargetName ; - - SetSetProperties( SETNODE_NEWMENU, lPropertyValues ); - } - - // Copy "wizard" menu entries to save-list! - sal_uInt32 nWizardCount = m_aWizardMenu.size(); - for( nItem=0; nItem<nWizardCount; ++nItem ) - { - aItem = m_aWizardMenu[nItem]; - // Format: "Wizard/1/URL" - // "Wizard/1/Title" - // ... - sNode = SETNODE_WIZARDMENU + PATHDELIMITER + PATHPREFIX + OUString::valueOf( (sal_Int32)nItem ) + PATHDELIMITER; - - lPropertyValues[OFFSET_URL ].Name = sNode + PROPERTYNAME_URL ; - lPropertyValues[OFFSET_TITLE ].Name = sNode + PROPERTYNAME_TITLE ; - lPropertyValues[OFFSET_IMAGEIDENTIFIER ].Name = sNode + PROPERTYNAME_IMAGEIDENTIFIER ; - lPropertyValues[OFFSET_TARGETNAME ].Name = sNode + PROPERTYNAME_TARGETNAME ; - - lPropertyValues[OFFSET_URL ].Value <<= aItem.sURL ; - lPropertyValues[OFFSET_TITLE ].Value <<= aItem.sTitle ; - lPropertyValues[OFFSET_IMAGEIDENTIFIER ].Value <<= aItem.sImageIdentifier ; - lPropertyValues[OFFSET_TARGETNAME ].Value <<= aItem.sTargetName ; - - SetSetProperties( SETNODE_WIZARDMENU, lPropertyValues ); - } - - // Copy help bookmarks entries to save-list! - sal_uInt32 nHelpBookmarksCount = m_aHelpBookmarksMenu.size(); - for( nItem=0; nItem<nHelpBookmarksCount; ++nItem ) - { - aItem = m_aHelpBookmarksMenu[nItem]; - // Format: "HelpBookmarks/1/URL" - // "HelpBookmarks/1/Title" - // ... - sNode = SETNODE_HELPBOOKMARKS + PATHDELIMITER + PATHPREFIX + OUString::valueOf( (sal_Int32)nItem ) + PATHDELIMITER; - - lPropertyValues[OFFSET_URL ].Name = sNode + PROPERTYNAME_URL ; - lPropertyValues[OFFSET_TITLE ].Name = sNode + PROPERTYNAME_TITLE ; - lPropertyValues[OFFSET_IMAGEIDENTIFIER ].Name = sNode + PROPERTYNAME_IMAGEIDENTIFIER ; - lPropertyValues[OFFSET_TARGETNAME ].Name = sNode + PROPERTYNAME_TARGETNAME ; - - lPropertyValues[OFFSET_URL ].Value <<= aItem.sURL ; - lPropertyValues[OFFSET_TITLE ].Value <<= aItem.sTitle ; - lPropertyValues[OFFSET_IMAGEIDENTIFIER ].Value <<= aItem.sImageIdentifier ; - lPropertyValues[OFFSET_TARGETNAME ].Value <<= aItem.sTargetName ; - - SetSetProperties( SETNODE_HELPBOOKMARKS, lPropertyValues ); - } - */ -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtDynamicMenuOptions_Impl::Clear( EDynamicMenuType eMenu ) -{ - switch( eMenu ) - { - case E_NEWMENU : { - m_aNewMenu.Clear(); - SetModified(); - } - break; - - case E_WIZARDMENU : { - m_aWizardMenu.Clear(); - SetModified(); - } - break; - - case E_HELPBOOKMARKS : { - m_aHelpBookmarksMenu.Clear(); - SetModified(); - } - break; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< Sequence< PropertyValue > > SvtDynamicMenuOptions_Impl::GetMenu( EDynamicMenuType eMenu ) const -{ - Sequence< Sequence< PropertyValue > > lReturn; - switch( eMenu ) - { - case E_NEWMENU : { - lReturn = m_aNewMenu.GetList(); - } - break; - - case E_WIZARDMENU : { - lReturn = m_aWizardMenu.GetList(); - } - break; - - case E_HELPBOOKMARKS : { - lReturn = m_aHelpBookmarksMenu.GetList(); - } - break; - } - return lReturn; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtDynamicMenuOptions_Impl::AppendItem( EDynamicMenuType eMenu , - const OUString& sURL , - const OUString& sTitle , - const OUString& sImageIdentifier, - const OUString& sTargetName ) -{ - SvtDynMenuEntry aItem( sURL, sTitle, sImageIdentifier, sTargetName ); - - switch( eMenu ) - { - case E_NEWMENU : { - m_aNewMenu.AppendUserEntry( aItem ); - SetModified(); - } - break; - - case E_WIZARDMENU : { - m_aWizardMenu.AppendUserEntry( aItem ); - SetModified(); - } - break; - - case E_HELPBOOKMARKS : { - m_aHelpBookmarksMenu.AppendUserEntry( aItem ); - SetModified(); - } - break; - } -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Sequence< OUString > SvtDynamicMenuOptions_Impl::impl_GetPropertyNames( sal_uInt32& nNewCount, sal_uInt32& nWizardCount, sal_uInt32& nHelpBookmarksCount ) -{ - // First get ALL names of current existing list items in configuration! - Sequence< OUString > lNewItems = GetNodeNames( SETNODE_NEWMENU ); - Sequence< OUString > lWizardItems = GetNodeNames( SETNODE_WIZARDMENU ); - Sequence< OUString > lHelpBookmarksItems = GetNodeNames( SETNODE_HELPBOOKMARKS ); - - // Get information about list counts ... - nNewCount = lNewItems.getLength (); - nWizardCount = lWizardItems.getLength (); - nHelpBookmarksCount = lHelpBookmarksItems.getLength(); - - // Sort and expand all three list to result list ... - Sequence< OUString > lProperties; - impl_SortAndExpandPropertyNames( lNewItems , lProperties, SETNODE_NEWMENU ); - impl_SortAndExpandPropertyNames( lWizardItems , lProperties, SETNODE_WIZARDMENU ); - impl_SortAndExpandPropertyNames( lHelpBookmarksItems, lProperties, SETNODE_HELPBOOKMARKS ); - - // Return result. - return lProperties; -} - -//***************************************************************************************************************** -// private helper -//***************************************************************************************************************** -class CountWithPrefixSort -{ - public: - int operator() ( const OUString& s1 , - const OUString& s2 ) const - { - // Get order numbers from entry name without prefix. - // e.g. "m10" => 10 - // "m5" => 5 - sal_Int32 n1 = s1.copy( 1, s1.getLength()-1 ).toInt32(); - sal_Int32 n2 = s2.copy( 1, s2.getLength()-1 ).toInt32(); - // MUST be in [0,1] ... because it's a difference between - // insert-positions of given entries in sorted list! - return( n1<n2 ); - } -}; - -class SelectByPrefix -{ - public: - bool operator() ( const OUString& s ) const - { - // Prefer setup written entries by check first letter of given string. It must be a "s". - return( s.indexOf( PATHPREFIX_SETUP ) == 0 ); - } -}; - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -void SvtDynamicMenuOptions_Impl::impl_SortAndExpandPropertyNames( const Sequence< OUString >& lSource , - Sequence< OUString >& lDestination , - const OUString& sSetNode ) -{ - OUString sFixPath ; - vector< OUString > lTemp ; - sal_Int32 nSourceCount = lSource.getLength() ; - sal_Int32 nDestinationStep = lDestination.getLength() ; // start on end of current list ...! - - lDestination.realloc( (nSourceCount*PROPERTYCOUNT)+nDestinationStep ); // get enough memory for copy operations after nDestination ... - - // Copy all items to temp. vector to use fast sort operations :-) - for( sal_Int32 nSourceStep=0; nSourceStep<nSourceCount; ++nSourceStep ) - lTemp.push_back( lSource[nSourceStep] ); - - // Sort all entries by number ... - stable_sort( lTemp.begin(), lTemp.end(), CountWithPrefixSort() ); - // and split into setup & user written entries! - stable_partition( lTemp.begin(), lTemp.end(), SelectByPrefix() ); - - // Copy sorted entries to destination and expand every item with - // 4 supported sub properties. - for( vector< OUString >::const_iterator pItem =lTemp.begin() ; - pItem!=lTemp.end() ; - ++pItem ) - { - sFixPath = sSetNode ; - sFixPath += PATHDELIMITER ; - sFixPath += *pItem ; - sFixPath += PATHDELIMITER ; - - lDestination[nDestinationStep] = sFixPath ; - lDestination[nDestinationStep] += PROPERTYNAME_URL ; - ++nDestinationStep; - lDestination[nDestinationStep] = sFixPath ; - lDestination[nDestinationStep] += PROPERTYNAME_TITLE ; - ++nDestinationStep; - lDestination[nDestinationStep] = sFixPath ; - lDestination[nDestinationStep] += PROPERTYNAME_IMAGEIDENTIFIER ; - ++nDestinationStep; - lDestination[nDestinationStep] = sFixPath ; - lDestination[nDestinationStep] += PROPERTYNAME_TARGETNAME ; - ++nDestinationStep; - } -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtDynamicMenuOptions_Impl* SvtDynamicMenuOptions::m_pDataContainer = NULL ; -sal_Int32 SvtDynamicMenuOptions::m_nRefCount = 0 ; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtDynamicMenuOptions::SvtDynamicMenuOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already exist! - if( m_pDataContainer == NULL ) - { - m_pDataContainer = new SvtDynamicMenuOptions_Impl; - ItemHolder1::holdConfigItem(E_DYNAMICMENUOPTIONS); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtDynamicMenuOptions::~SvtDynamicMenuOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtDynamicMenuOptions::Clear( EDynamicMenuType eMenu ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->Clear( eMenu ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< Sequence< PropertyValue > > SvtDynamicMenuOptions::GetMenu( EDynamicMenuType eMenu ) const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetMenu( eMenu ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtDynamicMenuOptions::AppendItem( EDynamicMenuType eMenu , - const OUString& sURL , - const OUString& sTitle , - const OUString& sImageIdentifier, - const OUString& sTargetName ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->AppendItem( eMenu, sURL, sTitle, sImageIdentifier, sTargetName ); -} - -namespace -{ - class theDynamicMenuOptionsMutex : public rtl::Static<osl::Mutex, theDynamicMenuOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtDynamicMenuOptions::GetOwnStaticMutex() -{ - return theDynamicMenuOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/eventcfg.cxx b/unotools/source/config/eventcfg.cxx deleted file mode 100644 index 9c9173b911..0000000000 --- a/unotools/source/config/eventcfg.cxx +++ /dev/null @@ -1,441 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/eventcfg.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <cppuhelper/weakref.hxx> - -#include <boost/unordered_map.hpp> -#include <tools/urlobj.hxx> -#include <rtl/ustrbuf.hxx> - -#include <itemholder1.hxx> - -#include <algorithm> - -using namespace ::std ; -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; -using namespace ::com::sun::star; - -#define ROOTNODE_EVENTS OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Events/ApplicationEvents" )) -#define PATHDELIMITER OUString(RTL_CONSTASCII_USTRINGPARAM("/")) -#define SETNODE_BINDINGS OUString(RTL_CONSTASCII_USTRINGPARAM("Bindings" )) -#define PROPERTYNAME_BINDINGURL OUString(RTL_CONSTASCII_USTRINGPARAM("BindingURL")) - -const char* pEventAsciiNames[] = -{ -"OnStartApp", -"OnCloseApp", -"OnCreate", -"OnNew", -"OnLoadFinished", -"OnLoad", -"OnPrepareUnload", -"OnUnload", -"OnSave", -"OnSaveDone", -"OnSaveFailed", -"OnSaveAs", -"OnSaveAsDone", -"OnSaveAsFailed", -"OnCopyTo", -"OnCopyToDone", -"OnCopyToFailed", -"OnFocus", -"OnUnfocus", -"OnPrint", -"OnViewCreated", -"OnPrepareViewClosing", -"OnViewClosed", -"OnModifyChanged", -"OnTitleChanged", -"OnVisAreaChanged", -"OnModeChanged", -"OnStorageChanged" -}; - -GlobalEventConfig_Impl::GlobalEventConfig_Impl() - : ConfigItem( ROOTNODE_EVENTS, CONFIG_MODE_IMMEDIATE_UPDATE ) -{ - // the supported event names - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_STARTAPP] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_CLOSEAPP] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_DOCCREATED] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_CREATEDOC] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_LOADFINISHED] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_OPENDOC] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_PREPARECLOSEDOC] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_CLOSEDOC] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEDOC] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEDOCDONE] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEDOCFAILED] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEASDOC] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEASDOCDONE] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEASDOCFAILED] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVETODOC] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVETODOCDONE] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVETODOCFAILED] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_ACTIVATEDOC] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_DEACTIVATEDOC] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_PRINTDOC] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_VIEWCREATED] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_PREPARECLOSEVIEW] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_CLOSEVIEW] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_MODIFYCHANGED] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_TITLECHANGED] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_VISAREACHANGED] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_MODECHANGED] ) ); - m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_STORAGECHANGED] ) ); - - initBindingInfo(); - -/*TODO: Not used in the moment! see Notify() ... - // Enable notification mechanism of our baseclass. - // We need it to get information about changes outside these class on our used configuration keys! */ - Sequence< OUString > aNotifySeq( 1 ); - aNotifySeq[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "Events" )); - EnableNotification( aNotifySeq, sal_True ); -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -GlobalEventConfig_Impl::~GlobalEventConfig_Impl() -{ - // We must save our current values .. if user forget it! - if( IsModified() == sal_True ) - { - Commit(); - } -} - -::rtl::OUString GlobalEventConfig_Impl::GetEventName( sal_Int32 nIndex ) -{ - if ( nIndex < (sal_Int32) m_supportedEvents.size() ) - return m_supportedEvents[nIndex]; - else - return rtl::OUString(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void GlobalEventConfig_Impl::Notify( const Sequence< OUString >& ) -{ - MutexGuard aGuard( GlobalEventConfig::GetOwnStaticMutex() ); - - initBindingInfo(); - - // dont forget to update all existing frames and her might cached dispatch objects! - // But look for already killed frames. We hold weak references instead of hard ones ... - for (FrameVector::const_iterator pIt = m_lFrames.begin(); - pIt != m_lFrames.end() ; - ++pIt ) - { - ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > xFrame(pIt->get(), ::com::sun::star::uno::UNO_QUERY); - if (xFrame.is()) - xFrame->contextChanged(); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void GlobalEventConfig_Impl::Commit() -{ - //DF need to check it this is correct?? - OSL_TRACE("In GlobalEventConfig_Impl::Commit"); - EventBindingHash::const_iterator it = m_eventBindingHash.begin(); - EventBindingHash::const_iterator it_end = m_eventBindingHash.end(); - // clear the existing nodes - ClearNodeSet( SETNODE_BINDINGS ); - Sequence< beans::PropertyValue > seqValues( 1 ); - OUString sNode; - static const OUString sPrefix(SETNODE_BINDINGS + PATHDELIMITER + OUString(RTL_CONSTASCII_USTRINGPARAM("BindingType['"))); - static const OUString sPostfix(OUString(RTL_CONSTASCII_USTRINGPARAM("']")) + PATHDELIMITER + PROPERTYNAME_BINDINGURL); - //step through the list of events - for(int i=0;it!=it_end;++it,++i) - { - //no point in writing out empty bindings! - if(it->second.getLength() == 0 ) - continue; - sNode = sPrefix + it->first + sPostfix; - OSL_TRACE("writing binding for: %s",::rtl::OUStringToOString(sNode , RTL_TEXTENCODING_ASCII_US ).pData->buffer); - seqValues[ 0 ].Name = sNode; - seqValues[ 0 ].Value <<= it->second; - //write the data to the registry - SetSetProperties(SETNODE_BINDINGS,seqValues); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void GlobalEventConfig_Impl::EstablishFrameCallback(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame) -{ - // check if frame already exists inside list - // ignore double registrations - // every frame must be notified one times only! - ::com::sun::star::uno::WeakReference< ::com::sun::star::frame::XFrame > xWeak(xFrame); - FrameVector::const_iterator pIt = ::std::find(m_lFrames.begin(), m_lFrames.end(), xWeak); - if (pIt == m_lFrames.end()) - m_lFrames.push_back(xWeak); -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -void GlobalEventConfig_Impl::initBindingInfo() -{ - // Get ALL names of current existing list items in configuration! - Sequence< OUString > lEventNames = GetNodeNames( SETNODE_BINDINGS, utl::CONFIG_NAME_LOCAL_PATH ); - - OUString aSetNode( SETNODE_BINDINGS ); - aSetNode += PATHDELIMITER; - - OUString aCommandKey( PATHDELIMITER ); - aCommandKey += PROPERTYNAME_BINDINGURL; - - // Expand all keys - Sequence< OUString > lMacros(1); - for (sal_Int32 i=0; i<lEventNames.getLength(); ++i ) - { - OUStringBuffer aBuffer( 32 ); - aBuffer.append( aSetNode ); - aBuffer.append( lEventNames[i] ); - aBuffer.append( aCommandKey ); - lMacros[0] = aBuffer.makeStringAndClear(); - OSL_TRACE("reading binding for: %s",::rtl::OUStringToOString(lMacros[0] , RTL_TEXTENCODING_ASCII_US ).pData->buffer); - Sequence< Any > lValues = GetProperties( lMacros ); - OUString sMacroURL; - if( lValues.getLength() > 0 ) - { - lValues[0] >>= sMacroURL; - sal_Int32 startIndex = lEventNames[i].indexOf('\''); - sal_Int32 endIndex = lEventNames[i].lastIndexOf('\''); - if( startIndex >=0 && endIndex > 0 ) - { - startIndex++; - OUString eventName = lEventNames[i].copy(startIndex,endIndex-startIndex); - m_eventBindingHash[ eventName ] = sMacroURL; - } - } - } -} - -Reference< container::XNameReplace > SAL_CALL GlobalEventConfig_Impl::getEvents() throw (::com::sun::star::uno::RuntimeException) -{ - //how to return this object as an XNameReplace? - Reference< container::XNameReplace > ret; - return ret; -} - -void SAL_CALL GlobalEventConfig_Impl::replaceByName( const OUString& aName, const Any& aElement ) throw (lang::IllegalArgumentException, container::NoSuchElementException, lang::WrappedTargetException, RuntimeException) -{ - Sequence< beans::PropertyValue > props; - //DF should we prepopulate the hash with a list of valid event Names? - if( sal_False == ( aElement >>= props ) ) - { - throw lang::IllegalArgumentException( OUString(), - Reference< XInterface > (), 2); - } - OUString macroURL; - sal_Int32 nPropCount = props.getLength(); - for( sal_Int32 index = 0 ; index < nPropCount ; ++index ) - { - if ( props[ index ].Name.compareToAscii( "Script" ) == 0 ) - props[ index ].Value >>= macroURL; - } - m_eventBindingHash[ aName ] = macroURL; - SetModified(); -} - -Any SAL_CALL GlobalEventConfig_Impl::getByName( const OUString& aName ) throw (container::NoSuchElementException, lang::WrappedTargetException, RuntimeException) -{ - Any aRet; - Sequence< beans::PropertyValue > props(2); - props[0].Name = OUString(RTL_CONSTASCII_USTRINGPARAM("EventType")); - props[0].Value <<= OUString(RTL_CONSTASCII_USTRINGPARAM("Script")); - props[1].Name = OUString(RTL_CONSTASCII_USTRINGPARAM("Script")); - EventBindingHash::const_iterator it = m_eventBindingHash.find( aName ); - if( it != m_eventBindingHash.end() ) - { - props[1].Value <<= it->second; - } - else - { - // not yet accessed - is it a supported name? - SupportedEventsVector::const_iterator pos = ::std::find( - m_supportedEvents.begin(), m_supportedEvents.end(), aName ); - if ( pos == m_supportedEvents.end() ) - throw container::NoSuchElementException( aName, NULL ); - - props[1].Value <<= OUString(); - } - aRet <<= props; - return aRet; -} - -Sequence< OUString > SAL_CALL GlobalEventConfig_Impl::getElementNames( ) throw (RuntimeException) -{ - const ::rtl::OUString* pRet = m_supportedEvents.empty() ? NULL : &m_supportedEvents[0]; - return uno::Sequence< ::rtl::OUString >(pRet, m_supportedEvents.size()); -} - -sal_Bool SAL_CALL GlobalEventConfig_Impl::hasByName( const OUString& aName ) throw (RuntimeException) -{ - if ( m_eventBindingHash.find( aName ) != m_eventBindingHash.end() ) - return sal_True; - - // never accessed before - is it supported in general? - SupportedEventsVector::const_iterator pos = ::std::find( - m_supportedEvents.begin(), m_supportedEvents.end(), aName ); - if ( pos != m_supportedEvents.end() ) - return sal_True; - - return sal_False; -} - -Type SAL_CALL GlobalEventConfig_Impl::getElementType( ) throw (RuntimeException) -{ - //DF definitly not sure about this?? - return ::getCppuType((const Sequence<beans::PropertyValue>*)0); -} - -sal_Bool SAL_CALL GlobalEventConfig_Impl::hasElements( ) throw (RuntimeException) -{ - return ( m_eventBindingHash.empty() ); -} - -// and now the wrapper - - -//initialize static member -GlobalEventConfig_Impl* GlobalEventConfig::m_pImpl = NULL ; -sal_Int32 GlobalEventConfig::m_nRefCount = 0 ; - -GlobalEventConfig::GlobalEventConfig() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase our refcount ... - ++m_nRefCount; - // ... and initialize our data container only if it not already exist! - if( m_pImpl == NULL ) - { - m_pImpl = new GlobalEventConfig_Impl; - ItemHolder1::holdConfigItem(E_EVENTCFG); - } -} - -GlobalEventConfig::~GlobalEventConfig() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease our refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy our static data container! - if( m_nRefCount <= 0 ) - { - delete m_pImpl; - m_pImpl = NULL; - } -} - -void GlobalEventConfig::EstablishFrameCallback(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pImpl->EstablishFrameCallback( xFrame ); -} - -Reference< container::XNameReplace > SAL_CALL GlobalEventConfig::getEvents() throw (::com::sun::star::uno::RuntimeException) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - Reference< container::XNameReplace > ret(this); - return ret; -} - -void SAL_CALL GlobalEventConfig::replaceByName( const OUString& aName, const Any& aElement ) throw (lang::IllegalArgumentException, container::NoSuchElementException, lang::WrappedTargetException, RuntimeException) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pImpl->replaceByName( aName, aElement ); -} -Any SAL_CALL GlobalEventConfig::getByName( const OUString& aName ) throw (container::NoSuchElementException, lang::WrappedTargetException, RuntimeException) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->getByName( aName ); -} -Sequence< OUString > SAL_CALL GlobalEventConfig::getElementNames( ) throw (RuntimeException) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->getElementNames( ); -} -sal_Bool SAL_CALL GlobalEventConfig::hasByName( const OUString& aName ) throw (RuntimeException) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->hasByName( aName ); -} -Type SAL_CALL GlobalEventConfig::getElementType( ) throw (RuntimeException) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->getElementType( ); -} -sal_Bool SAL_CALL GlobalEventConfig::hasElements( ) throw (RuntimeException) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->hasElements( ); -} - -namespace -{ - class theGlobalEventConfigMutex : public rtl::Static<osl::Mutex, theGlobalEventConfigMutex>{}; -} - -Mutex& GlobalEventConfig::GetOwnStaticMutex() -{ - return theGlobalEventConfigMutex::get(); -} - -::rtl::OUString GlobalEventConfig::GetEventName( sal_Int32 nIndex ) -{ - return GlobalEventConfig().m_pImpl->GetEventName( nIndex ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/extendedsecurityoptions.cxx b/unotools/source/config/extendedsecurityoptions.cxx deleted file mode 100644 index 550d2d2ea1..0000000000 --- a/unotools/source/config/extendedsecurityoptions.cxx +++ /dev/null @@ -1,525 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include <unotools/extendedsecurityoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <tools/urlobj.hxx> -#include <tools/wldcrd.hxx> -#include <rtl/ustrbuf.hxx> - -#include <unotools/pathoptions.hxx> - -#include <boost/unordered_map.hpp> - -#include <rtl/logfile.hxx> -#include "itemholder1.hxx" - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_SECURITY OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Security")) - -#define SECURE_EXTENSIONS_SET OUString(RTL_CONSTASCII_USTRINGPARAM("SecureExtensions")) -#define EXTENSION_PROPNAME OUString(RTL_CONSTASCII_USTRINGPARAM("/Extension")) - -#define PROPERTYNAME_HYPERLINKS_OPEN OUString(RTL_CONSTASCII_USTRINGPARAM("Hyperlinks/Open")) - -#define PROPERTYHANDLE_HYPERLINKS_OPEN 0 - -#define PROPERTYCOUNT 1 - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -struct OUStringHashCode -{ - size_t operator()( const ::rtl::OUString& sString ) const - { - return sString.hashCode(); - } -}; - -class ExtensionHashMap : public ::boost::unordered_map< ::rtl::OUString, - sal_Int32, - OUStringHashCode, - ::std::equal_to< ::rtl::OUString > > -{ - public: - inline void free() - { - ExtensionHashMap().swap( *this ); - } -}; - -class SvtExtendedSecurityOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtExtendedSecurityOptions_Impl(); - ~SvtExtendedSecurityOptions_Impl(); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @seealso baseclass ConfigItem - - @param "seqPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& seqPropertyNames ); - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short Access method to check for security problems - @descr Different methods to check for security related problems. - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - sal_Bool IsSecureHyperlink( const rtl::OUString& aURL ) const; - Sequence< rtl::OUString > GetSecureExtensionList() const; - - SvtExtendedSecurityOptions::OpenHyperlinkMode GetOpenHyperlinkMode(); - void SetOpenHyperlinkMode( SvtExtendedSecurityOptions::OpenHyperlinkMode aMode ); - sal_Bool IsOpenHyperlinkModeReadOnly() const; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return list of key names of ouer configuration management which represent oue module tree - @descr These methods return a static const list of key names. We need it to get needed values from our - configuration management. - - @seealso - - - @param - - @return A list of needed configuration keys is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - static Sequence< OUString > GetPropertyNames(); - - /*-****************************************************************************************************//** - @short Fills the hash map with all extensions known to be secure - @descr These methods fills the given hash map object with all extensions known to be secure. - - @seealso - - - @param aHashMap - A hash map to be filled with secure extension strings. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - void FillExtensionHashMap( ExtensionHashMap& aHashMap ); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - OUString m_aSecureExtensionsSetName; - OUString m_aExtensionPropName; - - SvtExtendedSecurityOptions::OpenHyperlinkMode m_eOpenHyperlinkMode; - sal_Bool m_bROOpenHyperlinkMode; - ExtensionHashMap m_aExtensionHashMap; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtExtendedSecurityOptions_Impl::SvtExtendedSecurityOptions_Impl() - // Init baseclasses first - : ConfigItem ( ROOTNODE_SECURITY ), - m_aSecureExtensionsSetName( SECURE_EXTENSIONS_SET ), - m_aExtensionPropName( EXTENSION_PROPNAME ), - m_bROOpenHyperlinkMode(sal_False) - // Init member then. -{ - // Fill the extension hash map with all secure extension strings - FillExtensionHashMap( m_aExtensionHashMap ); - - Sequence< OUString > seqNames = GetPropertyNames(); - Sequence< Any > seqValues = GetProperties( seqNames ); - Sequence< sal_Bool > seqRO = GetReadOnlyStates ( seqNames ); - - sal_Int32 nPropertyCount = seqValues.getLength(); - for( sal_Int32 nProperty=0; nProperty<nPropertyCount; ++nProperty ) - { - // Safe impossible cases. - // Check any for valid value. - DBG_ASSERT( !(seqValues[nProperty].hasValue()==sal_False), "SvtExtendedSecurityOptions_Impl::SvtExtendedSecurityOptions_Impl()\nInvalid property value detected!\n" ); - switch( nProperty ) - { - case PROPERTYHANDLE_HYPERLINKS_OPEN: - { - DBG_ASSERT( ( seqValues[nProperty].getValueTypeClass() == TypeClass_LONG ), "SvtExtendedSecurityOptions_Impl::SvtExtendedSecurityOptions_Impl()\nWho has changed the value type of 'Hyperlink/Open'?" ); - - sal_Int32 nMode = SvtExtendedSecurityOptions::OPEN_WITHSECURITYCHECK; - if ( seqValues[nProperty] >>= nMode ) - m_eOpenHyperlinkMode = (SvtExtendedSecurityOptions::OpenHyperlinkMode)nMode; - else { - OSL_FAIL("Wrong type for Open mode!"); - } - m_bROOpenHyperlinkMode = seqRO[nProperty]; - } - break; - } - } - - // Enable notification mechanism of our baseclass. - // We need it to get information about changes outside these class on ouer used configuration keys! - Sequence< OUString > seqNotifyNames( 1 ); - seqNotifyNames[0] = m_aSecureExtensionsSetName; - EnableNotification( seqNotifyNames ); -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtExtendedSecurityOptions_Impl::~SvtExtendedSecurityOptions_Impl() -{ - // We must save our current values .. if user forget it! - if( IsModified() == sal_True ) - { - Commit(); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtExtendedSecurityOptions_Impl::Notify( const Sequence< OUString >& ) -{ - // Not implemented -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtExtendedSecurityOptions_Impl::Commit() -{ - // Get names of supported properties, create a list for values and copy current values to it. - Sequence< OUString > seqNames = GetPropertyNames (); - sal_Int32 nCount = seqNames.getLength(); - Sequence< Any > seqValues ( nCount ); - for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty ) - { - switch( nProperty ) - { - case PROPERTYHANDLE_HYPERLINKS_OPEN: { - seqValues[nProperty] <<= (sal_Int32)m_eOpenHyperlinkMode; - } - break; - } - } - - // Set properties in configuration. - PutProperties( seqNames, seqValues ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtExtendedSecurityOptions_Impl::IsSecureHyperlink( const OUString& aURL ) const -{ - INetURLObject aURLObject( aURL ); - - String aExtension = aURLObject.getExtension(); - aExtension.ToLowerAscii(); - - ExtensionHashMap::const_iterator pIter = m_aExtensionHashMap.find( aExtension ); - if ( pIter != m_aExtensionHashMap.end() ) - return sal_True; - else - return sal_False; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< OUString > SvtExtendedSecurityOptions_Impl::GetSecureExtensionList() const -{ - Sequence< OUString > aResult( m_aExtensionHashMap.size() ); - - sal_Int32 nIndex = 0; - for ( ExtensionHashMap::const_iterator pIter = m_aExtensionHashMap.begin(); - pIter != m_aExtensionHashMap.end(); ++pIter ) - { - aResult[nIndex++] = pIter->first; - } - - return aResult; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -SvtExtendedSecurityOptions::OpenHyperlinkMode SvtExtendedSecurityOptions_Impl::GetOpenHyperlinkMode() -{ - return m_eOpenHyperlinkMode; -} - -sal_Bool SvtExtendedSecurityOptions_Impl::IsOpenHyperlinkModeReadOnly() const -{ - return m_bROOpenHyperlinkMode; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtExtendedSecurityOptions_Impl::SetOpenHyperlinkMode( SvtExtendedSecurityOptions::OpenHyperlinkMode eNewMode ) -{ - m_eOpenHyperlinkMode = eNewMode; - SetModified(); -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -void SvtExtendedSecurityOptions_Impl::FillExtensionHashMap( ExtensionHashMap& aHashMap ) -{ - // Get sequence with secure extensions from configuration - Sequence< OUString > seqNodes = GetNodeNames( m_aSecureExtensionsSetName ); - - OUString aValue; - Sequence< Any > aValues; - Sequence< OUString > aPropSeq( 1 ); - for ( int i = 0; i < seqNodes.getLength(); i++ ) - { - // Create access name for property - OUStringBuffer aExtEntryProp( m_aSecureExtensionsSetName ); - aExtEntryProp.appendAscii( "/" ); - aExtEntryProp.append( seqNodes[i] ); - aExtEntryProp.append( m_aExtensionPropName ); - - aPropSeq[0] = aExtEntryProp.makeStringAndClear(); - aValues = GetProperties( aPropSeq ); - if ( aValues.getLength() == 1 ) - { - // Don't use value if sequence has not the correct length - if ( aValues[0] >>= aValue ) - // Add extension into secure extensions hash map - aHashMap.insert( ExtensionHashMap::value_type( aValue.toAsciiLowerCase(), 1 ) ); - else - { - DBG_ERRORFILE( "SvtExtendedSecurityOptions_Impl::FillExtensionHashMap(): not string value?" ); - } - } - } -} - -//***************************************************************************************************************** -// private method (currently not used) -//***************************************************************************************************************** -Sequence< OUString > SvtExtendedSecurityOptions_Impl::GetPropertyNames() -{ - // Build list of configuration key names. - const OUString pProperties[] = - { - PROPERTYNAME_HYPERLINKS_OPEN - }; - // Initialize return sequence with these list ... - const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT ); - // ... and return it. - return seqPropertyNames; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtExtendedSecurityOptions_Impl* SvtExtendedSecurityOptions::m_pDataContainer = NULL ; -sal_Int32 SvtExtendedSecurityOptions::m_nRefCount = 0 ; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtExtendedSecurityOptions::SvtExtendedSecurityOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetInitMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already exist! - if( m_pDataContainer == NULL ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtExtendedSecurityOptions_Impl::ctor()"); - m_pDataContainer = new SvtExtendedSecurityOptions_Impl; - - ItemHolder1::holdConfigItem(E_EXTENDEDSECURITYOPTIONS); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtExtendedSecurityOptions::~SvtExtendedSecurityOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetInitMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtExtendedSecurityOptions::IsSecureHyperlink( const rtl::OUString& aURL ) const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->IsSecureHyperlink( aURL ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< rtl::OUString > SvtExtendedSecurityOptions::GetSecureExtensionList() const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->GetSecureExtensionList(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -SvtExtendedSecurityOptions::OpenHyperlinkMode SvtExtendedSecurityOptions::GetOpenHyperlinkMode() -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->GetOpenHyperlinkMode(); -} - -sal_Bool SvtExtendedSecurityOptions::IsOpenHyperlinkModeReadOnly() const -{ - return m_pDataContainer->IsOpenHyperlinkModeReadOnly(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtExtendedSecurityOptions::SetOpenHyperlinkMode( SvtExtendedSecurityOptions::OpenHyperlinkMode eMode ) -{ - MutexGuard aGuard( GetInitMutex() ); - m_pDataContainer->SetOpenHyperlinkMode( eMode ); -} - -namespace -{ - class theExtendedSecurityOptionsMutex : public rtl::Static<osl::Mutex, theExtendedSecurityOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtExtendedSecurityOptions::GetInitMutex() -{ - return theExtendedSecurityOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/fltrcfg.cxx b/unotools/source/config/fltrcfg.cxx deleted file mode 100644 index 3d08a81c0a..0000000000 --- a/unotools/source/config/fltrcfg.cxx +++ /dev/null @@ -1,651 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/fltrcfg.hxx> -#include <tools/debug.hxx> - -#include <rtl/logfile.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -using namespace utl; -using namespace com::sun::star::uno; - -using ::rtl::OUString; - -#define C2U(cChar) OUString(RTL_CONSTASCII_USTRINGPARAM(cChar)) - -// ----------------------------------------------------------------------- -#define FILTERCFG_WORD_CODE 0x0001 -#define FILTERCFG_WORD_STORAGE 0x0002 -#define FILTERCFG_EXCEL_CODE 0x0004 -#define FILTERCFG_EXCEL_STORAGE 0x0008 -#define FILTERCFG_PPOINT_CODE 0x0010 -#define FILTERCFG_PPOINT_STORAGE 0x0020 -#define FILTERCFG_MATH_LOAD 0x0100 -#define FILTERCFG_MATH_SAVE 0x0200 -#define FILTERCFG_WRITER_LOAD 0x0400 -#define FILTERCFG_WRITER_SAVE 0x0800 -#define FILTERCFG_CALC_LOAD 0x1000 -#define FILTERCFG_CALC_SAVE 0x2000 -#define FILTERCFG_IMPRESS_LOAD 0x4000 -#define FILTERCFG_IMPRESS_SAVE 0x8000 -#define FILTERCFG_EXCEL_EXECTBL 0x10000 -#define FILTERCFG_ENABLE_PPT_PREVIEW 0x20000 -#define FILTERCFG_ENABLE_EXCEL_PREVIEW 0x40000 -#define FILTERCFG_ENABLE_WORD_PREVIEW 0x80000 -#define FILTERCFG_USE_ENHANCED_FIELDS 0x100000 -#define FILTERCFG_WORD_WBCTBL 0x200000 - -static SvtFilterOptions* pOptions=0; - -class SvtAppFilterOptions_Impl : public utl::ConfigItem -{ - sal_Bool bLoadVBA; - sal_Bool bSaveVBA; -public: - SvtAppFilterOptions_Impl(const OUString& rRoot) : - utl::ConfigItem(rRoot), - bLoadVBA(sal_False), - bSaveVBA(sal_False) {} - ~SvtAppFilterOptions_Impl(); - virtual void Commit(); - virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames); - void Load(); - - sal_Bool IsLoad() const {return bLoadVBA;} - void SetLoad(sal_Bool bSet) - { - if(bSet != bLoadVBA) - SetModified(); - bLoadVBA = bSet; - } - sal_Bool IsSave() const {return bSaveVBA;} - void SetSave(sal_Bool bSet) - { - if(bSet != bSaveVBA) - SetModified(); - bSaveVBA = bSet; - } -}; - -SvtAppFilterOptions_Impl::~SvtAppFilterOptions_Impl() -{ - if(IsModified()) - Commit(); -} - -void SvtAppFilterOptions_Impl::Commit() -{ - Sequence<OUString> aNames(2); - OUString* pNames = aNames.getArray(); - pNames[0] = C2U("Load"); - pNames[1] = C2U("Save"); - Sequence<Any> aValues(aNames.getLength()); - Any* pValues = aValues.getArray(); - - const Type& rType = ::getBooleanCppuType(); - pValues[0].setValue(&bLoadVBA, rType); - pValues[1].setValue(&bSaveVBA, rType); - - PutProperties(aNames, aValues); -} - -void SvtAppFilterOptions_Impl::Notify( const Sequence< rtl::OUString >& ) -{ - // no listeners supported yet -} - -void SvtAppFilterOptions_Impl::Load() -{ - Sequence<OUString> aNames(2); - OUString* pNames = aNames.getArray(); - pNames[0] = C2U("Load"); - pNames[1] = C2U("Save"); - - Sequence<Any> aValues = GetProperties(aNames); - const Any* pValues = aValues.getConstArray(); - - if(pValues[0].hasValue()) - bLoadVBA = *(sal_Bool*)pValues[0].getValue(); - if(pValues[1].hasValue()) - bSaveVBA = *(sal_Bool*)pValues[1].getValue(); -} - -// ----------------------------------------------------------------------- -class SvtWriterFilterOptions_Impl : public SvtAppFilterOptions_Impl -{ - sal_Bool bLoadExecutable; -public: - SvtWriterFilterOptions_Impl(const OUString& rRoot) : - SvtAppFilterOptions_Impl(rRoot), - bLoadExecutable(sal_False) - {} - virtual void Commit(); - void Load(); - - sal_Bool IsLoadExecutable() const {return bLoadExecutable;} - void SetLoadExecutable(sal_Bool bSet) - { - if(bSet != bLoadExecutable) - SetModified(); - bLoadExecutable = bSet; - } -}; - -void SvtWriterFilterOptions_Impl::Commit() -{ - SvtAppFilterOptions_Impl::Commit(); - - Sequence<OUString> aNames(1); - aNames[0] = C2U("Executable"); - Sequence<Any> aValues(1); - aValues[0] <<= bLoadExecutable; - - PutProperties(aNames, aValues); -} - -void SvtWriterFilterOptions_Impl::Load() -{ - SvtAppFilterOptions_Impl::Load(); - - Sequence<OUString> aNames(1); - aNames[0] = C2U("Executable"); - - Sequence<Any> aValues = GetProperties(aNames); - const Any* pValues = aValues.getConstArray(); - if(pValues[0].hasValue()) - bLoadExecutable = *(sal_Bool*)pValues[0].getValue(); -} - -// ----------------------------------------------------------------------- -class SvtCalcFilterOptions_Impl : public SvtAppFilterOptions_Impl -{ - sal_Bool bLoadExecutable; -public: - SvtCalcFilterOptions_Impl(const OUString& rRoot) : - SvtAppFilterOptions_Impl(rRoot), - bLoadExecutable(sal_False) - {} - virtual void Commit(); - void Load(); - - sal_Bool IsLoadExecutable() const {return bLoadExecutable;} - void SetLoadExecutable(sal_Bool bSet) - { - if(bSet != bLoadExecutable) - SetModified(); - bLoadExecutable = bSet; - } -}; - -void SvtCalcFilterOptions_Impl::Commit() -{ - SvtAppFilterOptions_Impl::Commit(); - - Sequence<OUString> aNames(1); - aNames[0] = C2U("Executable"); - Sequence<Any> aValues(1); - aValues[0] <<= bLoadExecutable; - - PutProperties(aNames, aValues); -} - -void SvtCalcFilterOptions_Impl::Load() -{ - SvtAppFilterOptions_Impl::Load(); - - Sequence<OUString> aNames(1); - aNames[0] = C2U("Executable"); - - Sequence<Any> aValues = GetProperties(aNames); - const Any* pValues = aValues.getConstArray(); - if(pValues[0].hasValue()) - bLoadExecutable = *(sal_Bool*)pValues[0].getValue(); -} - -struct SvtFilterOptions_Impl -{ - sal_uLong nFlags; - SvtWriterFilterOptions_Impl aWriterCfg; - SvtCalcFilterOptions_Impl aCalcCfg; - SvtAppFilterOptions_Impl aImpressCfg; - - SvtFilterOptions_Impl() : - aWriterCfg(C2U("Office.Writer/Filter/Import/VBA")), - aCalcCfg(C2U("Office.Calc/Filter/Import/VBA")), - aImpressCfg(C2U("Office.Impress/Filter/Import/VBA")) - { - nFlags = FILTERCFG_WORD_CODE | - FILTERCFG_WORD_STORAGE | - FILTERCFG_EXCEL_CODE | - FILTERCFG_EXCEL_STORAGE | - FILTERCFG_PPOINT_CODE | - FILTERCFG_PPOINT_STORAGE | - FILTERCFG_MATH_LOAD | - FILTERCFG_MATH_SAVE | - FILTERCFG_WRITER_LOAD | - FILTERCFG_WRITER_SAVE | - FILTERCFG_CALC_LOAD | - FILTERCFG_CALC_SAVE | - FILTERCFG_IMPRESS_LOAD | - FILTERCFG_IMPRESS_SAVE | - FILTERCFG_USE_ENHANCED_FIELDS; - Load(); - } - - void SetFlag( sal_uLong nFlag, sal_Bool bSet ); - sal_Bool IsFlag( sal_uLong nFlag ) const; - void Load() - { - aWriterCfg.Load(); - aCalcCfg.Load(); - aImpressCfg.Load(); - } -}; - -void SvtFilterOptions_Impl::SetFlag( sal_uLong nFlag, sal_Bool bSet ) -{ - switch(nFlag) - { - case FILTERCFG_WORD_CODE: aWriterCfg.SetLoad(bSet);break; - case FILTERCFG_WORD_STORAGE: aWriterCfg.SetSave(bSet);break; - case FILTERCFG_WORD_WBCTBL: aWriterCfg.SetLoadExecutable(bSet);break; - case FILTERCFG_EXCEL_CODE: aCalcCfg.SetLoad(bSet);break; - case FILTERCFG_EXCEL_STORAGE: aCalcCfg.SetSave(bSet);break; - case FILTERCFG_EXCEL_EXECTBL: aCalcCfg.SetLoadExecutable(bSet);break; - case FILTERCFG_PPOINT_CODE: aImpressCfg.SetLoad(bSet);break; - case FILTERCFG_PPOINT_STORAGE: aImpressCfg.SetSave(bSet);break; - default: - if( bSet ) - nFlags |= nFlag; - else - nFlags &= ~nFlag; - } -} - -sal_Bool SvtFilterOptions_Impl::IsFlag( sal_uLong nFlag ) const -{ - sal_Bool bRet; - switch(nFlag) - { - case FILTERCFG_WORD_CODE : bRet = aWriterCfg.IsLoad();break; - case FILTERCFG_WORD_STORAGE : bRet = aWriterCfg.IsSave();break; - case FILTERCFG_WORD_WBCTBL : bRet = aWriterCfg.IsLoadExecutable();break; - case FILTERCFG_EXCEL_CODE : bRet = aCalcCfg.IsLoad();break; - case FILTERCFG_EXCEL_STORAGE : bRet = aCalcCfg.IsSave();break; - case FILTERCFG_EXCEL_EXECTBL : bRet = aCalcCfg.IsLoadExecutable();break; - case FILTERCFG_PPOINT_CODE : bRet = aImpressCfg.IsLoad();break; - case FILTERCFG_PPOINT_STORAGE : bRet = aImpressCfg.IsSave();break; - default: - bRet = 0 != (nFlags & nFlag ); - } - return bRet; -} - -// ----------------------------------------------------------------------- - -SvtFilterOptions::SvtFilterOptions() : - ConfigItem( C2U("Office.Common/Filter/Microsoft") ), - pImp(new SvtFilterOptions_Impl) -{ - RTL_LOGFILE_CONTEXT(aLog, "unotools SvtFilterOptions::SvtFilterOptions()"); - EnableNotification(GetPropertyNames()); - Load(); -} -// ----------------------------------------------------------------------- -SvtFilterOptions::~SvtFilterOptions() -{ - delete pImp; -} - -const Sequence<OUString>& SvtFilterOptions::GetPropertyNames() -{ - static Sequence<OUString> aNames; - if(!aNames.getLength()) - { - int nCount = 12; - aNames.realloc(nCount); - static const char* aPropNames[] = - { - "Import/MathTypeToMath", // 0 - "Import/WinWordToWriter", // 1 - "Import/PowerPointToImpress", // 2 - "Import/ExcelToCalc", // 3 - "Export/MathToMathType", // 4 - "Export/WriterToWinWord", // 5 - "Export/ImpressToPowerPoint", // 6 - "Export/CalcToExcel", // 7 - "Export/EnablePowerPointPreview", // 8 - "Export/EnableExcelPreview", // 9 - "Export/EnableWordPreview", // 10 - "Import/ImportWWFieldsAsEnhancedFields" // 11 - }; - OUString* pNames = aNames.getArray(); - for(int i = 0; i < nCount; i++) - pNames[i] = OUString::createFromAscii(aPropNames[i]); - } - return aNames; -} -//----------------------------------------------------------------------- -static sal_uLong lcl_GetFlag(sal_Int32 nProp) -{ - sal_uLong nFlag = 0; - switch(nProp) - { - case 0: nFlag = FILTERCFG_MATH_LOAD; break; - case 1: nFlag = FILTERCFG_WRITER_LOAD; break; - case 2: nFlag = FILTERCFG_IMPRESS_LOAD; break; - case 3: nFlag = FILTERCFG_CALC_LOAD; break; - case 4: nFlag = FILTERCFG_MATH_SAVE; break; - case 5: nFlag = FILTERCFG_WRITER_SAVE; break; - case 6: nFlag = FILTERCFG_IMPRESS_SAVE; break; - case 7: nFlag = FILTERCFG_CALC_SAVE; break; - case 8: nFlag = FILTERCFG_ENABLE_PPT_PREVIEW; break; - case 9: nFlag = FILTERCFG_ENABLE_EXCEL_PREVIEW; break; - case 10: nFlag = FILTERCFG_ENABLE_WORD_PREVIEW; break; - case 11: nFlag = FILTERCFG_USE_ENHANCED_FIELDS; break; - - default: OSL_FAIL("illegal value"); - } - return nFlag; -} - -void SvtFilterOptions::Notify( const Sequence<OUString>& ) -{ - Load(); -} - -void SvtFilterOptions::Commit() -{ - const Sequence<OUString>& aNames = GetPropertyNames(); - Sequence<Any> aValues(aNames.getLength()); - Any* pValues = aValues.getArray(); - - const Type& rType = ::getBooleanCppuType(); - for(int nProp = 0; nProp < aNames.getLength(); nProp++) - { - sal_uLong nFlag = lcl_GetFlag(nProp); - sal_Bool bVal = pImp->IsFlag( nFlag); - pValues[nProp].setValue(&bVal, rType); - - } - PutProperties(aNames, aValues); -} - -void SvtFilterOptions::Load() -{ - pImp->Load(); - const Sequence<OUString>& rNames = GetPropertyNames(); - Sequence<Any> aValues = GetProperties(rNames); - const Any* pValues = aValues.getConstArray(); - DBG_ASSERT(aValues.getLength() == rNames.getLength(), "GetProperties failed"); - if(aValues.getLength() == rNames.getLength()) - { - for(int nProp = 0; nProp < rNames.getLength(); nProp++) - { - if(pValues[nProp].hasValue()) - { - sal_Bool bVal = *(sal_Bool*)pValues[nProp].getValue(); - sal_uLong nFlag = lcl_GetFlag(nProp); - pImp->SetFlag( nFlag, bVal); - } - } - } -} -// ----------------------------------------------------------------------- - -void SvtFilterOptions::SetLoadWordBasicCode( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_WORD_CODE, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsLoadWordBasicCode() const -{ - return pImp->IsFlag( FILTERCFG_WORD_CODE ); -} - -void SvtFilterOptions::SetLoadWordBasicExecutable( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_WORD_WBCTBL, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsLoadWordBasicExecutable() const -{ - return pImp->IsFlag( FILTERCFG_WORD_WBCTBL ); -} - -void SvtFilterOptions::SetLoadWordBasicStorage( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_WORD_STORAGE, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsLoadWordBasicStorage() const -{ - return pImp->IsFlag( FILTERCFG_WORD_STORAGE ); -} - -// ----------------------------------------------------------------------- - -void SvtFilterOptions::SetLoadExcelBasicCode( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_EXCEL_CODE, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsLoadExcelBasicCode() const -{ - return pImp->IsFlag( FILTERCFG_EXCEL_CODE ); -} - -void SvtFilterOptions::SetLoadExcelBasicExecutable( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_EXCEL_EXECTBL, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsLoadExcelBasicExecutable() const -{ - return pImp->IsFlag( FILTERCFG_EXCEL_EXECTBL ); -} - -void SvtFilterOptions::SetLoadExcelBasicStorage( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_EXCEL_STORAGE, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsLoadExcelBasicStorage() const -{ - return pImp->IsFlag( FILTERCFG_EXCEL_STORAGE ); -} - -// ----------------------------------------------------------------------- - -void SvtFilterOptions::SetLoadPPointBasicCode( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_PPOINT_CODE, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsLoadPPointBasicCode() const -{ - return pImp->IsFlag( FILTERCFG_PPOINT_CODE ); -} - -void SvtFilterOptions::SetLoadPPointBasicStorage( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_PPOINT_STORAGE, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsLoadPPointBasicStorage() const -{ - return pImp->IsFlag( FILTERCFG_PPOINT_STORAGE ); -} - -// ----------------------------------------------------------------------- - -sal_Bool SvtFilterOptions::IsMathType2Math() const -{ - return pImp->IsFlag( FILTERCFG_MATH_LOAD ); -} - -void SvtFilterOptions::SetMathType2Math( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_MATH_LOAD, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsMath2MathType() const -{ - return pImp->IsFlag( FILTERCFG_MATH_SAVE ); -} - -void SvtFilterOptions::SetMath2MathType( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_MATH_SAVE, bFlag ); - SetModified(); -} - - -// ----------------------------------------------------------------------- -sal_Bool SvtFilterOptions::IsWinWord2Writer() const -{ - return pImp->IsFlag( FILTERCFG_WRITER_LOAD ); -} - -void SvtFilterOptions::SetWinWord2Writer( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_WRITER_LOAD, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsWriter2WinWord() const -{ - return pImp->IsFlag( FILTERCFG_WRITER_SAVE ); -} - -void SvtFilterOptions::SetWriter2WinWord( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_WRITER_SAVE, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsUseEnhancedFields() const -{ - return pImp->IsFlag( FILTERCFG_USE_ENHANCED_FIELDS ); -} - -void SvtFilterOptions::SetUseEnhancedFields( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_USE_ENHANCED_FIELDS, bFlag ); - SetModified(); -} - -// ----------------------------------------------------------------------- -sal_Bool SvtFilterOptions::IsExcel2Calc() const -{ - return pImp->IsFlag( FILTERCFG_CALC_LOAD ); -} - -void SvtFilterOptions::SetExcel2Calc( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_CALC_LOAD, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsCalc2Excel() const -{ - return pImp->IsFlag( FILTERCFG_CALC_SAVE ); -} - -void SvtFilterOptions::SetCalc2Excel( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_CALC_SAVE, bFlag ); - SetModified(); -} - - -// ----------------------------------------------------------------------- -sal_Bool SvtFilterOptions::IsPowerPoint2Impress() const -{ - return pImp->IsFlag( FILTERCFG_IMPRESS_LOAD ); -} - -void SvtFilterOptions::SetPowerPoint2Impress( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_IMPRESS_LOAD, bFlag ); - SetModified(); -} - -sal_Bool SvtFilterOptions::IsImpress2PowerPoint() const -{ - return pImp->IsFlag( FILTERCFG_IMPRESS_SAVE ); -} - -void SvtFilterOptions::SetImpress2PowerPoint( sal_Bool bFlag ) -{ - pImp->SetFlag( FILTERCFG_IMPRESS_SAVE, bFlag ); - SetModified(); -} - -SvtFilterOptions* SvtFilterOptions::Get() -{ - if ( !pOptions ) - pOptions = new SvtFilterOptions; - return pOptions; -} - -// ----------------------------------------------------------------------- - -sal_Bool SvtFilterOptions::IsEnablePPTPreview() const -{ - return pImp->IsFlag( FILTERCFG_ENABLE_PPT_PREVIEW ); -} - - -sal_Bool SvtFilterOptions::IsEnableCalcPreview() const -{ - return pImp->IsFlag( FILTERCFG_ENABLE_EXCEL_PREVIEW ); -} - - -sal_Bool SvtFilterOptions::IsEnableWordPreview() const -{ - return pImp->IsFlag( FILTERCFG_ENABLE_WORD_PREVIEW ); -} - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/fontcfg.cxx b/unotools/source/config/fontcfg.cxx deleted file mode 100644 index ba56773624..0000000000 --- a/unotools/source/config/fontcfg.cxx +++ /dev/null @@ -1,1238 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/fontcfg.hxx> -#include <unotools/fontdefs.hxx> -#include <comphelper/processfactory.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <unotools/configpathes.hxx> -#include <unotools/syslocale.hxx> -#include <rtl/ustrbuf.hxx> -#include <rtl/instance.hxx> -#include <sal/macros.h> -#include <tools/debug.hxx> - -#if OSL_DEBUG_LEVEL > 1 -#include <stdio.h> -#endif - -#include <string.h> -#include <list> -#include <algorithm> - -#define DEFAULTFONT_CONFIGNODE "VCL/DefaultFonts" -#define SUBSTFONT_CONFIGNODE "VCL/FontSubstitutions" - -using namespace utl; -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; -using namespace com::sun::star::beans; -using namespace com::sun::star::container; - -using ::rtl::OUString; - -/* - * DefaultFontConfiguration - */ - -static const char* getKeyType( int nKeyType ) -{ - switch( nKeyType ) - { - case DEFAULTFONT_CJK_DISPLAY: return "CJK_DISPLAY"; - case DEFAULTFONT_CJK_HEADING: return "CJK_HEADING"; - case DEFAULTFONT_CJK_PRESENTATION: return "CJK_PRESENTATION"; - case DEFAULTFONT_CJK_SPREADSHEET: return "CJK_SPREADSHEET"; - case DEFAULTFONT_CJK_TEXT: return "CJK_TEXT"; - case DEFAULTFONT_CTL_DISPLAY: return "CTL_DISPLAY"; - case DEFAULTFONT_CTL_HEADING: return "CTL_HEADING"; - case DEFAULTFONT_CTL_PRESENTATION: return "CTL_PRESENTATION"; - case DEFAULTFONT_CTL_SPREADSHEET: return "CTL_SPREADSHEET"; - case DEFAULTFONT_CTL_TEXT: return "CTL_TEXT"; - case DEFAULTFONT_FIXED: return "FIXED"; - case DEFAULTFONT_LATIN_DISPLAY: return "LATIN_DISPLAY"; - case DEFAULTFONT_LATIN_FIXED: return "LATIN_FIXED"; - case DEFAULTFONT_LATIN_HEADING: return "LATIN_HEADING"; - case DEFAULTFONT_LATIN_PRESENTATION: return "LATIN_PRESENTATION"; - case DEFAULTFONT_LATIN_SPREADSHEET: return "LATIN_SPREADSHEET"; - case DEFAULTFONT_LATIN_TEXT: return "LATIN_TEXT"; - case DEFAULTFONT_SANS: return "SANS"; - case DEFAULTFONT_SANS_UNICODE: return "SANS_UNICODE"; - case DEFAULTFONT_SERIF: return "SERIF"; - case DEFAULTFONT_SYMBOL: return "SYMBOL"; - case DEFAULTFONT_UI_FIXED: return "UI_FIXED"; - case DEFAULTFONT_UI_SANS: return "UI_SANS"; - default: - OSL_FAIL( "unmatched type" ); - return ""; - } -} - -namespace -{ - class theDefaultFontConfiguration - : public rtl::Static<DefaultFontConfiguration, - theDefaultFontConfiguration> - { - }; -} - -DefaultFontConfiguration& DefaultFontConfiguration::get() -{ - return theDefaultFontConfiguration::get(); -} - -DefaultFontConfiguration::DefaultFontConfiguration() -{ - try - { - // get service provider - Reference< XMultiServiceFactory > xSMgr( comphelper::getProcessServiceFactory() ); - // create configuration hierachical access name - if( xSMgr.is() ) - { - try - { - m_xConfigProvider = - Reference< XMultiServiceFactory >( - xSMgr->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.configuration.ConfigurationProvider" ))), - UNO_QUERY ); - if( m_xConfigProvider.is() ) - { - Sequence< Any > aArgs(1); - PropertyValue aVal; - aVal.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ); - aVal.Value <<= OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.VCL/DefaultFonts" ) ); - aArgs.getArray()[0] <<= aVal; - m_xConfigAccess = - Reference< XNameAccess >( - m_xConfigProvider->createInstanceWithArguments( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.configuration.ConfigurationAccess" )), - aArgs ), - UNO_QUERY ); - if( m_xConfigAccess.is() ) - { - Sequence< OUString > aLocales = m_xConfigAccess->getElementNames(); - // fill config hash with empty interfaces - int nLocales = aLocales.getLength(); - const OUString* pLocaleStrings = aLocales.getConstArray(); - Locale aLoc; - for( int i = 0; i < nLocales; i++ ) - { - sal_Int32 nIndex = 0; - aLoc.Language = pLocaleStrings[i].getToken( 0, sal_Unicode('-'), nIndex ).toAsciiLowerCase(); - if( nIndex != -1 ) - aLoc.Country = pLocaleStrings[i].getToken( 0, sal_Unicode('-'), nIndex ).toAsciiUpperCase(); - else - aLoc.Country = OUString(); - if( nIndex != -1 ) - aLoc.Variant = pLocaleStrings[i].getToken( 0, sal_Unicode('-'), nIndex ).toAsciiUpperCase(); - else - aLoc.Variant = OUString(); - m_aConfig[ aLoc ] = LocaleAccess(); - m_aConfig[ aLoc ].aConfigLocaleString = pLocaleStrings[i]; - } - } - } - } - catch (const Exception&) - { - // configuration is awry - m_xConfigProvider.clear(); - m_xConfigAccess.clear(); - } - } - } - catch (const WrappedTargetException&) - { - } - #if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "config provider: %s, config access: %s\n", - m_xConfigProvider.is() ? "true" : "false", - m_xConfigAccess.is() ? "true" : "false" - ); - #endif -} - -DefaultFontConfiguration::~DefaultFontConfiguration() -{ - // release all nodes - m_aConfig.clear(); - // release top node - m_xConfigAccess.clear(); - // release config provider - m_xConfigProvider.clear(); -} - -OUString DefaultFontConfiguration::tryLocale( const Locale& rLocale, const OUString& rType ) const -{ - OUString aRet; - - boost::unordered_map< Locale, LocaleAccess, LocaleHash >::const_iterator it = - m_aConfig.find( rLocale ); - if( it != m_aConfig.end() ) - { - if( !it->second.xAccess.is() ) - { - try - { - Reference< XNameAccess > xNode; - if ( m_xConfigAccess->hasByName( it->second.aConfigLocaleString ) ) - { - Any aAny = m_xConfigAccess->getByName( it->second.aConfigLocaleString ); - if( aAny >>= xNode ) - it->second.xAccess = xNode; - } - } - catch (const NoSuchElementException&) - { - } - catch (const WrappedTargetException&) - { - } - } - if( it->second.xAccess.is() ) - { - try - { - if ( it->second.xAccess->hasByName( rType ) ) - { - Any aAny = it->second.xAccess->getByName( rType ); - aAny >>= aRet; - } - } - catch (const NoSuchElementException&) - { - } - catch (const WrappedTargetException&) - { - } - } - } - - return aRet; -} - -OUString DefaultFontConfiguration::getDefaultFont( const Locale& rLocale, int nType ) const -{ - Locale aLocale; - aLocale.Language = rLocale.Language.toAsciiLowerCase(); - aLocale.Country = rLocale.Country.toAsciiUpperCase(); - aLocale.Variant = rLocale.Variant.toAsciiUpperCase(); - - OUString aType = OUString::createFromAscii( getKeyType( nType ) ); - OUString aRet = tryLocale( aLocale, aType ); - if( ! aRet.getLength() && aLocale.Variant.getLength() ) - { - aLocale.Variant = OUString(); - aRet = tryLocale( aLocale, aType ); - } - if( ! aRet.getLength() && aLocale.Country.getLength() ) - { - aLocale.Country = OUString(); - aRet = tryLocale( aLocale, aType ); - } - if( ! aRet.getLength() ) - { - aLocale.Language = OUString( RTL_CONSTASCII_USTRINGPARAM( "en" ) ); - aRet = tryLocale( aLocale, aType ); - } - return aRet; -} - -OUString DefaultFontConfiguration::getUserInterfaceFont( const Locale& rLocale ) const -{ - Locale aLocale = rLocale; - if( ! aLocale.Language.getLength() ) - aLocale = SvtSysLocale().GetUILocale(); - - OUString aUIFont = getDefaultFont( aLocale, DEFAULTFONT_UI_SANS ); - - if( aUIFont.getLength() ) - return aUIFont; - - // fallback mechanism (either no configuration or no entry in configuration - - #define FALLBACKFONT_UI_SANS "Andale Sans UI;Albany;Albany AMT;Tahoma;Arial Unicode MS;Arial;Nimbus Sans L;Bitstream Vera Sans;gnu-unifont;Interface User;Geneva;WarpSans;Dialog;Swiss;Lucida;Helvetica;Charcoal;Chicago;MS Sans Serif;Helv;Times;Times New Roman;Interface System" - #define FALLBACKFONT_UI_SANS_LATIN2 "Andale Sans UI;Albany;Albany AMT;Tahoma;Arial Unicode MS;Arial;Nimbus Sans L;Luxi Sans;Bitstream Vera Sans;Interface User;Geneva;WarpSans;Dialog;Swiss;Lucida;Helvetica;Charcoal;Chicago;MS Sans Serif;Helv;Times;Times New Roman;Interface System" - #define FALLBACKFONT_UI_SANS_ARABIC "Tahoma;Traditional Arabic;Simplified Arabic;Lucidasans;Lucida Sans;Supplement;Andale Sans UI;clearlyU;Interface User;Arial Unicode MS;Lucida Sans Unicode;WarpSans;Geneva;MS Sans Serif;Helv;Dialog;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Helmet;Interface System;Sans Serif" - #define FALLBACKFONT_UI_SANS_THAI "OONaksit;Tahoma;Lucidasans;Arial Unicode MS" - #define FALLBACKFONT_UI_SANS_KOREAN "SunGulim;BaekmukGulim;Gulim;Roundgothic;Arial Unicode MS;Lucida Sans Unicode;gnu-unifont;Andale Sans UI" - #define FALLBACKFONT_UI_SANS_JAPANESE1 "HG-GothicB-Sun;Andale Sans UI;HG MhinchoLightJ" - #define FALLBACKFONT_UI_SANS_JAPANESE2 "Kochi Gothic;Gothic" - #define FALLBACKFONT_UI_SANS_CHINSIM "Andale Sans UI;Arial Unicode MS;ZYSong18030;AR PL SungtiL GB;AR PL KaitiM GB;SimSun;Lucida Sans Unicode;Fangsong;Hei;Song;Kai;Ming;gnu-unifont;Interface User;" - #define FALLBACKFONT_UI_SANS_CHINTRD "Andale Sans UI;Arial Unicode MS;AR PL Mingti2L Big5;AR PL KaitiM Big5;Kai;PMingLiU;MingLiU;Ming;Lucida Sans Unicode;gnu-unifont;Interface User;" - - // we need localized names for japanese fonts - static sal_Unicode const aMSGothic[] = { 0xFF2D, 0xFF33, ' ', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 }; - static sal_Unicode const aMSPGothic[] = { 0xFF2D, 0xFF33, ' ', 0xFF30, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 }; - static sal_Unicode const aTLPGothic[] = { 0x0054, 0x004C, 0x0050, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 }; - static sal_Unicode const aLXGothic[] = { 0x004C, 0x0058, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 }; - static sal_Unicode const aKochiGothic[] = { 0x6771, 0x98A8, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 }; - - String aFallBackJapaneseLocalized( RTL_CONSTASCII_USTRINGPARAM( "MS UI Gothic;" ) ); - aFallBackJapaneseLocalized += String( RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_JAPANESE1 ) ); - aFallBackJapaneseLocalized += String( aMSPGothic ); - aFallBackJapaneseLocalized += String(RTL_CONSTASCII_USTRINGPARAM( ";" ) ); - aFallBackJapaneseLocalized += String( aMSGothic ); - aFallBackJapaneseLocalized += String(RTL_CONSTASCII_USTRINGPARAM( ";" ) ); - aFallBackJapaneseLocalized += String( aTLPGothic ); - aFallBackJapaneseLocalized += String(RTL_CONSTASCII_USTRINGPARAM( ";" ) ); - aFallBackJapaneseLocalized += String( aLXGothic ); - aFallBackJapaneseLocalized += String(RTL_CONSTASCII_USTRINGPARAM( ";" ) ); - aFallBackJapaneseLocalized += String( aKochiGothic ); - aFallBackJapaneseLocalized += String(RTL_CONSTASCII_USTRINGPARAM( ";" ) ); - aFallBackJapaneseLocalized += String(RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_JAPANESE2 ) ); - static const OUString aFallBackJapanese( aFallBackJapaneseLocalized ); - static const OUString aFallback (RTL_CONSTASCII_USTRINGPARAM(FALLBACKFONT_UI_SANS)); - static const OUString aFallbackLatin2 (RTL_CONSTASCII_USTRINGPARAM(FALLBACKFONT_UI_SANS_LATIN2)); - static const OUString aFallBackArabic (RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_ARABIC ) ); - static const OUString aFallBackThai (RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_THAI ) ); - static const OUString aFallBackChineseSIM (RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_CHINSIM ) ); - static const OUString aFallBackChineseTRD (RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_CHINTRD ) ); - - // we need localized names for korean fonts - static sal_Unicode const aSunGulim[] = { 0xC36C, 0xAD74, 0xB9BC, 0 }; - static sal_Unicode const aBaekmukGulim[] = { 0xBC31, 0xBC35, 0xAD74, 0xB9BC, 0 }; - String aFallBackKoreanLocalized( aSunGulim ); - aFallBackKoreanLocalized += String(RTL_CONSTASCII_USTRINGPARAM( ";" ) ); - aFallBackKoreanLocalized += String( aBaekmukGulim ); - aFallBackKoreanLocalized += String(RTL_CONSTASCII_USTRINGPARAM( ";" ) ); - aFallBackKoreanLocalized += String(RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_KOREAN ) ); - static const OUString aFallBackKorean( aFallBackKoreanLocalized ); - - // optimize font list for some locales, as long as Andale Sans UI does not support them - if( aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ar" ) ) || - aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "he" ) ) || - aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "iw" ) ) ) - { - return aFallBackArabic; - } - else if( aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "th" ) ) ) - { - return aFallBackThai; - } - else if( aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ko" ) ) ) - { - return aFallBackKorean; - } - else if( aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "cs" ) ) || - aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "hu" ) ) || - aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "pl" ) ) || - aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ro" ) ) || - aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "rm" ) ) || - aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "hr" ) ) || - aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "sk" ) ) || - aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "sl" ) ) || - aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "sb" ) ) ) - { - return aFallbackLatin2; - } - else if( aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "zh" ) ) ) - { - if( ! aLocale.Country.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "cn" ) ) ) - return aFallBackChineseTRD; - else - return aFallBackChineseSIM; - } - else if( aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ja" ) ) ) - { - return aFallBackJapanese; - } - - return aFallback; -} - -// ------------------------------------------------------------------------------------ - -/* - * FontSubstConfigItem::get - */ - -namespace -{ - class theFontSubstConfiguration - : public rtl::Static<FontSubstConfiguration, theFontSubstConfiguration> - { - }; -} - -FontSubstConfiguration& FontSubstConfiguration::get() -{ - return theFontSubstConfiguration::get(); -} - -/* - * FontSubstConfigItem::FontSubstConfigItem - */ - -FontSubstConfiguration::FontSubstConfiguration() : - maSubstHash( 300 ) -{ - try - { - // get service provider - Reference< XMultiServiceFactory > xSMgr( comphelper::getProcessServiceFactory() ); - // create configuration hierachical access name - if( xSMgr.is() ) - { - try - { - m_xConfigProvider = - Reference< XMultiServiceFactory >( - xSMgr->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.configuration.ConfigurationProvider" ))), - UNO_QUERY ); - if( m_xConfigProvider.is() ) - { - Sequence< Any > aArgs(1); - PropertyValue aVal; - aVal.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ); - aVal.Value <<= OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.VCL/FontSubstitutions" ) ); - aArgs.getArray()[0] <<= aVal; - m_xConfigAccess = - Reference< XNameAccess >( - m_xConfigProvider->createInstanceWithArguments( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.configuration.ConfigurationAccess" )), - aArgs ), - UNO_QUERY ); - if( m_xConfigAccess.is() ) - { - Sequence< OUString > aLocales = m_xConfigAccess->getElementNames(); - // fill config hash with empty interfaces - int nLocales = aLocales.getLength(); - const OUString* pLocaleStrings = aLocales.getConstArray(); - Locale aLoc; - for( int i = 0; i < nLocales; i++ ) - { - sal_Int32 nIndex = 0; - aLoc.Language = pLocaleStrings[i].getToken( 0, sal_Unicode('-'), nIndex ).toAsciiLowerCase(); - if( nIndex != -1 ) - aLoc.Country = pLocaleStrings[i].getToken( 0, sal_Unicode('-'), nIndex ).toAsciiUpperCase(); - else - aLoc.Country = OUString(); - if( nIndex != -1 ) - aLoc.Variant = pLocaleStrings[i].getToken( 0, sal_Unicode('-'), nIndex ).toAsciiUpperCase(); - else - aLoc.Variant = OUString(); - m_aSubst[ aLoc ] = LocaleSubst(); - m_aSubst[ aLoc ].aConfigLocaleString = pLocaleStrings[i]; - } - } - } - } - catch (const Exception&) - { - // configuration is awry - m_xConfigProvider.clear(); - m_xConfigAccess.clear(); - } - } - } - catch (const WrappedTargetException&) - { - } - #if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "config provider: %s, config access: %s\n", - m_xConfigProvider.is() ? "true" : "false", - m_xConfigAccess.is() ? "true" : "false" - ); - #endif -} - -/* - * FontSubstConfigItem::~FontSubstConfigItem - */ - -FontSubstConfiguration::~FontSubstConfiguration() -{ - // release config access - m_xConfigAccess.clear(); - // release config provider - m_xConfigProvider.clear(); -} - -/* - * FontSubstConfigItem::getMapName - */ -// ======================================================================= - -static const char* const aImplKillLeadingList[] = -{ - "microsoft", - "monotype", - "linotype", - "baekmuk", - "adobe", - "nimbus", - "zycjk", - "itc", - "sun", - "amt", - "ms", - "mt", - "cg", - "hg", - "fz", - "ipa", - "sazanami", - "kochi", - NULL -}; - -// ----------------------------------------------------------------------- - -static const char* const aImplKillTrailingList[] = -{ - "microsoft", - "monotype", - "linotype", - "adobe", - "nimbus", - "itc", - "sun", - "amt", - "ms", - "mt", - "clm", - // Scripts, for compatibility with older versions - "we", - "cyr", - "tur", - "wt", - "greek", - "wl", - // CJK extensions - "gb", - "big5", - "pro", - "z01", - "z02", - "z03", - "z13", - "b01", - "w3x12", - // Old Printer Fontnames - "5cpi", - "6cpi", - "7cpi", - "8cpi", - "9cpi", - "10cpi", - "11cpi", - "12cpi", - "13cpi", - "14cpi", - "15cpi", - "16cpi", - "18cpi", - "24cpi", - "scale", - "pc", - NULL -}; - -// ----------------------------------------------------------------------- - -static const char* const aImplKillTrailingWithExceptionsList[] = -{ - "ce", "monospace", "oldface", NULL, - "ps", "caps", NULL, - NULL -}; - -// ----------------------------------------------------------------------- - -struct ImplFontAttrWeightSearchData -{ - const char* mpStr; - FontWeight meWeight; -}; - -static ImplFontAttrWeightSearchData const aImplWeightAttrSearchList[] = -{ -// the attribute names are ordered by "first match wins" -// e.g. "semilight" should wins over "semi" -{ "extrablack", WEIGHT_BLACK }, -{ "ultrablack", WEIGHT_BLACK }, -{ "ultrabold", WEIGHT_ULTRABOLD }, -{ "semibold", WEIGHT_SEMIBOLD }, -{ "semilight", WEIGHT_SEMILIGHT }, -{ "semi", WEIGHT_SEMIBOLD }, -{ "demi", WEIGHT_SEMIBOLD }, -{ "black", WEIGHT_BLACK }, -{ "bold", WEIGHT_BOLD }, -{ "heavy", WEIGHT_BLACK }, -{ "ultralight", WEIGHT_ULTRALIGHT }, -{ "light", WEIGHT_LIGHT }, -{ "medium", WEIGHT_MEDIUM }, -{ NULL, WEIGHT_DONTKNOW }, -}; - -// ----------------------------------------------------------------------- - -struct ImplFontAttrWidthSearchData -{ - const char* mpStr; - FontWidth meWidth; -}; - -static ImplFontAttrWidthSearchData const aImplWidthAttrSearchList[] = -{ -{ "narrow", WIDTH_CONDENSED }, -{ "semicondensed", WIDTH_SEMI_CONDENSED }, -{ "ultracondensed", WIDTH_ULTRA_CONDENSED }, -{ "semiexpanded", WIDTH_SEMI_EXPANDED }, -{ "ultraexpanded", WIDTH_ULTRA_EXPANDED }, -{ "expanded", WIDTH_EXPANDED }, -{ "wide", WIDTH_ULTRA_EXPANDED }, -{ "condensed", WIDTH_CONDENSED }, -{ "cond", WIDTH_CONDENSED }, -{ "cn", WIDTH_CONDENSED }, -{ NULL, WIDTH_DONTKNOW }, -}; - -struct ImplFontAttrTypeSearchData -{ - const char* mpStr; - sal_uLong mnType; -}; - -static ImplFontAttrTypeSearchData const aImplTypeAttrSearchList[] = -{ -{ "monotype", 0 }, -{ "linotype", 0 }, -{ "titling", IMPL_FONT_ATTR_TITLING }, -{ "captitals", IMPL_FONT_ATTR_CAPITALS }, -{ "captital", IMPL_FONT_ATTR_CAPITALS }, -{ "caps", IMPL_FONT_ATTR_CAPITALS }, -{ "italic", IMPL_FONT_ATTR_ITALIC }, -{ "oblique", IMPL_FONT_ATTR_ITALIC }, -{ "rounded", IMPL_FONT_ATTR_ROUNDED }, -{ "outline", IMPL_FONT_ATTR_OUTLINE }, -{ "shadow", IMPL_FONT_ATTR_SHADOW }, -{ "handwriting", IMPL_FONT_ATTR_HANDWRITING | IMPL_FONT_ATTR_SCRIPT }, -{ "hand", IMPL_FONT_ATTR_HANDWRITING | IMPL_FONT_ATTR_SCRIPT }, -{ "signet", IMPL_FONT_ATTR_HANDWRITING | IMPL_FONT_ATTR_SCRIPT }, -{ "script", IMPL_FONT_ATTR_BRUSHSCRIPT | IMPL_FONT_ATTR_SCRIPT }, -{ "calligraphy", IMPL_FONT_ATTR_CHANCERY | IMPL_FONT_ATTR_SCRIPT }, -{ "chancery", IMPL_FONT_ATTR_CHANCERY | IMPL_FONT_ATTR_SCRIPT }, -{ "corsiva", IMPL_FONT_ATTR_CHANCERY | IMPL_FONT_ATTR_SCRIPT }, -{ "gothic", IMPL_FONT_ATTR_SANSSERIF | IMPL_FONT_ATTR_GOTHIC }, -{ "schoolbook", IMPL_FONT_ATTR_SERIF | IMPL_FONT_ATTR_SCHOOLBOOK }, -{ "schlbk", IMPL_FONT_ATTR_SERIF | IMPL_FONT_ATTR_SCHOOLBOOK }, -{ "typewriter", IMPL_FONT_ATTR_TYPEWRITER | IMPL_FONT_ATTR_FIXED }, -{ "lineprinter", IMPL_FONT_ATTR_TYPEWRITER | IMPL_FONT_ATTR_FIXED }, -{ "monospaced", IMPL_FONT_ATTR_FIXED }, -{ "monospace", IMPL_FONT_ATTR_FIXED }, -{ "mono", IMPL_FONT_ATTR_FIXED }, -{ "fixed", IMPL_FONT_ATTR_FIXED }, -{ "sansserif", IMPL_FONT_ATTR_SANSSERIF }, -{ "sans", IMPL_FONT_ATTR_SANSSERIF }, -{ "swiss", IMPL_FONT_ATTR_SANSSERIF }, -{ "serif", IMPL_FONT_ATTR_SERIF }, -{ "bright", IMPL_FONT_ATTR_SERIF }, -{ "symbols", IMPL_FONT_ATTR_SYMBOL }, -{ "symbol", IMPL_FONT_ATTR_SYMBOL }, -{ "dingbats", IMPL_FONT_ATTR_SYMBOL }, -{ "dings", IMPL_FONT_ATTR_SYMBOL }, -{ "ding", IMPL_FONT_ATTR_SYMBOL }, -{ "bats", IMPL_FONT_ATTR_SYMBOL }, -{ "math", IMPL_FONT_ATTR_SYMBOL }, -{ "oldstyle", IMPL_FONT_ATTR_OTHERSTYLE }, -{ "oldface", IMPL_FONT_ATTR_OTHERSTYLE }, -{ "old", IMPL_FONT_ATTR_OTHERSTYLE }, -{ "new", 0 }, -{ "modern", 0 }, -{ "lucida", 0 }, -{ "regular", 0 }, -{ "extended", 0 }, -{ "extra", IMPL_FONT_ATTR_OTHERSTYLE }, -{ "ext", 0 }, -{ "scalable", 0 }, -{ "scale", 0 }, -{ "nimbus", 0 }, -{ "adobe", 0 }, -{ "itc", 0 }, -{ "amt", 0 }, -{ "mt", 0 }, -{ "ms", 0 }, -{ "cpi", 0 }, -{ "no", 0 }, -{ NULL, 0 }, -}; - -// ----------------------------------------------------------------------- - -static bool ImplKillLeading( String& rName, const char* const* ppStr ) -{ - for(; *ppStr; ++ppStr ) - { - const char* pStr = *ppStr; - const xub_Unicode* pNameStr = rName.GetBuffer(); - while ( (*pNameStr == (xub_Unicode)(unsigned char)*pStr) && *pStr ) - { - pNameStr++; - pStr++; - } - if ( !*pStr ) - { - xub_StrLen nLen = sal::static_int_cast<xub_StrLen>(pNameStr - rName.GetBuffer()); - rName.Erase( 0, nLen ); - return true; - } - } - - // special case for Baekmuk - // TODO: allow non-ASCII KillLeading list - const xub_Unicode* pNameStr = rName.GetBuffer(); - if( (pNameStr[0]==0xBC31) && (pNameStr[1]==0xBC35) ) - { - xub_StrLen nLen = (pNameStr[2]==0x0020) ? 3 : 2; - rName.Erase( 0, nLen ); - return true; - } - - return false; -} - -// ----------------------------------------------------------------------- - -static xub_StrLen ImplIsTrailing( const String& rName, const char* pStr ) -{ - xub_StrLen nStrLen = static_cast<xub_StrLen>( strlen( pStr ) ); - if( nStrLen >= rName.Len() ) - return 0; - - const xub_Unicode* pEndName = rName.GetBuffer() + rName.Len(); - const sal_Unicode* pNameStr = pEndName - nStrLen; - do if( *(pNameStr++) != *(pStr++) ) - return 0; - while( *pStr ); - - return nStrLen; -} - -// ----------------------------------------------------------------------- - -static bool ImplKillTrailing( String& rName, const char* const* ppStr ) -{ - for(; *ppStr; ++ppStr ) - { - xub_StrLen nTrailLen = ImplIsTrailing( rName, *ppStr ); - if( nTrailLen ) - { - rName.Erase( rName.Len()-nTrailLen ); - return true; - } - } - - return false; -} - -// ----------------------------------------------------------------------- - -static bool ImplKillTrailingWithExceptions( String& rName, const char* const* ppStr ) -{ - for(; *ppStr; ++ppStr ) - { - xub_StrLen nTrailLen = ImplIsTrailing( rName, *ppStr ); - if( nTrailLen ) - { - // check string match against string exceptions - while( *++ppStr ) - if( ImplIsTrailing( rName, *ppStr ) ) - return false; - - rName.Erase( rName.Len()-nTrailLen ); - return true; - } - else - { - // skip exception strings - while( *++ppStr ) ; - } - } - - return false; -} - -// ----------------------------------------------------------------------- - -static sal_Bool ImplFindAndErase( String& rName, const char* pStr ) -{ - xub_StrLen nPos = rName.SearchAscii( pStr ); - if ( nPos == STRING_NOTFOUND ) - return sal_False; - - const char* pTempStr = pStr; - while ( *pTempStr ) - pTempStr++; - rName.Erase( nPos, (xub_StrLen)(pTempStr-pStr) ); - return sal_True; -} - -// ======================================================================= - -void FontSubstConfiguration::getMapName( const String& rOrgName, String& rShortName, - String& rFamilyName, FontWeight& rWeight, FontWidth& rWidth, sal_uLong& rType ) -{ - rShortName = rOrgName; - - // TODO: get rid of the crazy O(N*strlen) searches below - // they should be possible in O(strlen) - - // Kill leading vendor names and other unimportant data - ImplKillLeading( rShortName, aImplKillLeadingList ); - - // Kill trailing vendor names and other unimportant data - ImplKillTrailing( rShortName, aImplKillTrailingList ); - ImplKillTrailingWithExceptions( rShortName, aImplKillTrailingWithExceptionsList ); - - rFamilyName = rShortName; - - // Kill attributes from the name and update the data - // Weight - const ImplFontAttrWeightSearchData* pWeightList = aImplWeightAttrSearchList; - while ( pWeightList->mpStr ) - { - if ( ImplFindAndErase( rFamilyName, pWeightList->mpStr ) ) - { - if ( (rWeight == WEIGHT_DONTKNOW) || (rWeight == WEIGHT_NORMAL) ) - rWeight = pWeightList->meWeight; - break; - } - pWeightList++; - } - - // Width - const ImplFontAttrWidthSearchData* pWidthList = aImplWidthAttrSearchList; - while ( pWidthList->mpStr ) - { - if ( ImplFindAndErase( rFamilyName, pWidthList->mpStr ) ) - { - if ( (rWidth == WIDTH_DONTKNOW) || (rWidth == WIDTH_NORMAL) ) - rWidth = pWidthList->meWidth; - break; - } - pWidthList++; - } - - // Type - rType = 0; - const ImplFontAttrTypeSearchData* pTypeList = aImplTypeAttrSearchList; - while ( pTypeList->mpStr ) - { - if ( ImplFindAndErase( rFamilyName, pTypeList->mpStr ) ) - rType |= pTypeList->mnType; - pTypeList++; - } - - // Remove numbers - // TODO: also remove localized and fullwidth digits - xub_StrLen i = 0; - while ( i < rFamilyName.Len() ) - { - sal_Unicode c = rFamilyName.GetChar( i ); - if ( (c >= 0x0030) && (c <= 0x0039) ) - rFamilyName.Erase( i, 1 ); - else - i++; - } -} - - -struct StrictStringSort : public ::std::binary_function< const FontNameAttr&, const FontNameAttr&, bool > -{ - bool operator()( const FontNameAttr& rLeft, const FontNameAttr& rRight ) - { return rLeft.Name.CompareTo( rRight.Name ) == COMPARE_LESS ; } -}; - -static const char* const pAttribNames[] = -{ - "default", - "standard", - "normal", - "symbol", - "fixed", - "sansserif", - "serif", - "decorative", - "special", - "italic", - "title", - "capitals", - "cjk", - "cjk_jp", - "cjk_sc", - "cjk_tc", - "cjk_kr", - "ctl", - "nonelatin", - "full", - "outline", - "shadow", - "rounded", - "typewriter", - "script", - "handwriting", - "chancery", - "comic", - "brushscript", - "gothic", - "schoolbook", - "other" -}; - -struct enum_convert -{ - const char* pName; - int nEnum; -}; - - -static const enum_convert pWeightNames[] = -{ - { "normal", WEIGHT_NORMAL }, - { "medium", WEIGHT_MEDIUM }, - { "bold", WEIGHT_BOLD }, - { "black", WEIGHT_BLACK }, - { "semibold", WEIGHT_SEMIBOLD }, - { "light", WEIGHT_LIGHT }, - { "semilight", WEIGHT_SEMILIGHT }, - { "ultrabold", WEIGHT_ULTRABOLD }, - { "semi", WEIGHT_SEMIBOLD }, - { "demi", WEIGHT_SEMIBOLD }, - { "heavy", WEIGHT_BLACK }, - { "unknown", WEIGHT_DONTKNOW }, - { "thin", WEIGHT_THIN }, - { "ultralight", WEIGHT_ULTRALIGHT } -}; - -static const enum_convert pWidthNames[] = -{ - { "normal", WIDTH_NORMAL }, - { "condensed", WIDTH_CONDENSED }, - { "expanded", WIDTH_EXPANDED }, - { "unknown", WIDTH_DONTKNOW }, - { "ultracondensed", WIDTH_ULTRA_CONDENSED }, - { "extracondensed", WIDTH_EXTRA_CONDENSED }, - { "semicondensed", WIDTH_SEMI_CONDENSED }, - { "semiexpanded", WIDTH_SEMI_EXPANDED }, - { "extraexpanded", WIDTH_EXTRA_EXPANDED }, - { "ultraexpanded", WIDTH_ULTRA_EXPANDED } -}; - -void FontSubstConfiguration::fillSubstVector( const com::sun::star::uno::Reference< XNameAccess > xFont, - const rtl::OUString& rType, - std::vector< String >& rSubstVector ) const -{ - try - { - Any aAny = xFont->getByName( rType ); - if( aAny.getValueTypeClass() == TypeClass_STRING ) - { - const OUString* pLine = (const OUString*)aAny.getValue(); - sal_Int32 nIndex = 0; - sal_Int32 nLength = pLine->getLength(); - if( nLength ) - { - const sal_Unicode* pStr = pLine->getStr(); - sal_Int32 nTokens = 0; - // count tokens - while( nLength-- ) - { - if( *pStr++ == sal_Unicode(';') ) - nTokens++; - } - rSubstVector.clear(); - // optimize performance, heap fragmentation - rSubstVector.reserve( nTokens ); - while( nIndex != -1 ) - { - OUString aSubst( pLine->getToken( 0, ';', nIndex ) ); - if( aSubst.getLength() ) - { - UniqueSubstHash::iterator aEntry = maSubstHash.find( aSubst ); - if (aEntry != maSubstHash.end()) - aSubst = *aEntry; - else - maSubstHash.insert( aSubst ); - rSubstVector.push_back( aSubst ); - } - } - } - } - } - catch (const NoSuchElementException&) - { - } - catch (const WrappedTargetException&) - { - } -} - -FontWeight FontSubstConfiguration::getSubstWeight( const com::sun::star::uno::Reference< XNameAccess > xFont, - const rtl::OUString& rType ) const -{ - int weight = -1; - try - { - Any aAny = xFont->getByName( rType ); - if( aAny.getValueTypeClass() == TypeClass_STRING ) - { - const OUString* pLine = (const OUString*)aAny.getValue(); - if( pLine->getLength() ) - { - for( weight=SAL_N_ELEMENTS(pWeightNames)-1; weight >= 0; weight-- ) - if( pLine->equalsIgnoreAsciiCaseAscii( pWeightNames[weight].pName ) ) - break; - } -#if OSL_DEBUG_LEVEL > 1 - if( weight < 0 ) - fprintf( stderr, "Error: invalid weight %s\n", - OUStringToOString( *pLine, RTL_TEXTENCODING_ASCII_US ).getStr() ); -#endif - } - } - catch (const NoSuchElementException&) - { - } - catch (const WrappedTargetException&) - { - } - return (FontWeight)( weight >= 0 ? pWeightNames[weight].nEnum : WEIGHT_DONTKNOW ); -} - -FontWidth FontSubstConfiguration::getSubstWidth( const com::sun::star::uno::Reference< XNameAccess > xFont, - const rtl::OUString& rType ) const -{ - int width = -1; - try - { - Any aAny = xFont->getByName( rType ); - if( aAny.getValueTypeClass() == TypeClass_STRING ) - { - const OUString* pLine = (const OUString*)aAny.getValue(); - if( pLine->getLength() ) - { - for( width=SAL_N_ELEMENTS(pWidthNames)-1; width >= 0; width-- ) - if( pLine->equalsIgnoreAsciiCaseAscii( pWidthNames[width].pName ) ) - break; - } -#if OSL_DEBUG_LEVEL > 1 - if( width < 0 ) - fprintf( stderr, "Error: invalid width %s\n", - OUStringToOString( *pLine, RTL_TEXTENCODING_ASCII_US ).getStr() ); -#endif - } - } - catch (const NoSuchElementException&) - { - } - catch (const WrappedTargetException&) - { - } - return (FontWidth)( width >= 0 ? pWidthNames[width].nEnum : WIDTH_DONTKNOW ); -} - -unsigned long FontSubstConfiguration::getSubstType( const com::sun::star::uno::Reference< XNameAccess > xFont, - const rtl::OUString& rType ) const -{ - unsigned long type = 0; - try - { - Any aAny = xFont->getByName( rType ); - if( aAny.getValueTypeClass() == TypeClass_STRING ) - { - const OUString* pLine = (const OUString*)aAny.getValue(); - if( pLine->getLength() ) - { - sal_Int32 nIndex = 0; - while( nIndex != -1 ) - { - String aToken( pLine->getToken( 0, ',', nIndex ) ); - for( int k = 0; k < 32; k++ ) - if( aToken.EqualsIgnoreCaseAscii( pAttribNames[k] ) ) - { - type |= 1 << k; - break; - } - } - } - } - } - catch (const NoSuchElementException&) - { - } - catch (const WrappedTargetException&) - { - } - - return type; -} - -void FontSubstConfiguration::readLocaleSubst( const com::sun::star::lang::Locale& rLocale ) const -{ - boost::unordered_map< Locale, LocaleSubst, LocaleHash >::const_iterator it = - m_aSubst.find( rLocale ); - if( it != m_aSubst.end() ) - { - if( ! it->second.bConfigRead ) - { - it->second.bConfigRead = true; - Reference< XNameAccess > xNode; - try - { - Any aAny = m_xConfigAccess->getByName( it->second.aConfigLocaleString ); - aAny >>= xNode; - } - catch (const NoSuchElementException&) - { - } - catch (const WrappedTargetException&) - { - } - if( xNode.is() ) - { - Sequence< OUString > aFonts = xNode->getElementNames(); - int nFonts = aFonts.getLength(); - const OUString* pFontNames = aFonts.getConstArray(); - // improve performance, heap fragmentation - it->second.aSubstAttributes.reserve( nFonts ); - - // strings for subst retrieval, construct only once - OUString aSubstFontsStr ( RTL_CONSTASCII_USTRINGPARAM( "SubstFonts" ) ); - OUString aSubstFontsMSStr ( RTL_CONSTASCII_USTRINGPARAM( "SubstFontsMS" ) ); - OUString aSubstFontsPSStr ( RTL_CONSTASCII_USTRINGPARAM( "SubstFontsPS" ) ); - OUString aSubstFontsHTMLStr ( RTL_CONSTASCII_USTRINGPARAM( "SubstFontsHTML" ) ); - OUString aSubstWeightStr ( RTL_CONSTASCII_USTRINGPARAM( "FontWeight" ) ); - OUString aSubstWidthStr ( RTL_CONSTASCII_USTRINGPARAM( "FontWidth" ) ); - OUString aSubstTypeStr ( RTL_CONSTASCII_USTRINGPARAM( "FontType" ) ); - for( int i = 0; i < nFonts; i++ ) - { - Reference< XNameAccess > xFont; - try - { - Any aAny = xNode->getByName( pFontNames[i] ); - aAny >>= xFont; - } - catch (const NoSuchElementException&) - { - } - catch (const WrappedTargetException&) - { - } - if( ! xFont.is() ) - { - #if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "did not get font attributes for %s\n", - OUStringToOString( pFontNames[i], RTL_TEXTENCODING_UTF8 ).getStr() ); - #endif - continue; - } - - FontNameAttr aAttr; - // read subst attributes from config - aAttr.Name = pFontNames[i]; - fillSubstVector( xFont, aSubstFontsStr, aAttr.Substitutions ); - fillSubstVector( xFont, aSubstFontsMSStr, aAttr.MSSubstitutions ); - fillSubstVector( xFont, aSubstFontsPSStr, aAttr.PSSubstitutions ); - fillSubstVector( xFont, aSubstFontsHTMLStr, aAttr.HTMLSubstitutions ); - aAttr.Weight = getSubstWeight( xFont, aSubstWeightStr ); - aAttr.Width = getSubstWidth( xFont, aSubstWidthStr ); - aAttr.Type = getSubstType( xFont, aSubstTypeStr ); - - // finally insert this entry - it->second.aSubstAttributes.push_back( aAttr ); - } - std::sort( it->second.aSubstAttributes.begin(), it->second.aSubstAttributes.end(), StrictStringSort() ); - } - } - } -} - -const FontNameAttr* FontSubstConfiguration::getSubstInfo( const String& rFontName, const Locale& rLocale ) const -{ - if( !rFontName.Len() ) - return NULL; - - // search if a (language dep.) replacement table for the given font exists - // fallback is english - String aSearchFont( rFontName ); - aSearchFont.ToLowerAscii(); - FontNameAttr aSearchAttr; - aSearchAttr.Name = aSearchFont; - - Locale aLocale; - aLocale.Language = rLocale.Language.toAsciiLowerCase(); - aLocale.Country = rLocale.Country.toAsciiUpperCase(); - aLocale.Variant = rLocale.Variant.toAsciiUpperCase(); - - if( ! aLocale.Language.getLength() ) - aLocale = SvtSysLocale().GetUILocale(); - - while( aLocale.Language.getLength() ) - { - boost::unordered_map< Locale, LocaleSubst, LocaleHash >::const_iterator lang = m_aSubst.find( aLocale ); - if( lang != m_aSubst.end() ) - { - if( ! lang->second.bConfigRead ) - readLocaleSubst( aLocale ); - // try to find an exact match - // because the list is sorted this will also find fontnames of the form searchfontname* - std::vector< FontNameAttr >::const_iterator it = ::std::lower_bound( lang->second.aSubstAttributes.begin(), lang->second.aSubstAttributes.end(), aSearchAttr, StrictStringSort() ); - if( it != lang->second.aSubstAttributes.end()) - { - const FontNameAttr& rFoundAttr = *it; - // a search for "abcblack" may match with an entry for "abc" - // the reverse is not a good idea (e.g. #i112731# alba->albani) - if( rFoundAttr.Name.Len() <= aSearchFont.Len() ) - if( aSearchFont.CompareTo( rFoundAttr.Name, rFoundAttr.Name.Len() ) == COMPARE_EQUAL ) - return &rFoundAttr; - } - } - // gradually become more unspecific - if( aLocale.Variant.getLength() ) - aLocale.Variant = OUString(); - else if( aLocale.Country.getLength() ) - aLocale.Country = OUString(); - else if( ! aLocale.Language.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "en" ) ) ) - aLocale.Language = OUString( RTL_CONSTASCII_USTRINGPARAM( "en" ) ); - else - aLocale.Language = OUString(); - } - return NULL; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/fontoptions.cxx b/unotools/source/config/fontoptions.cxx deleted file mode 100644 index 028cb7a696..0000000000 --- a/unotools/source/config/fontoptions.cxx +++ /dev/null @@ -1,497 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/fontoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <rtl/logfile.hxx> -#include <rtl/instance.hxx> -#include "itemholder1.hxx" - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_FONT OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Font" )) - -#define PROPERTYNAME_REPLACEMENTTABLE OUString(RTL_CONSTASCII_USTRINGPARAM("Substitution/Replacement" )) -#define PROPERTYNAME_FONTHISTORY OUString(RTL_CONSTASCII_USTRINGPARAM("View/History" )) -#define PROPERTYNAME_FONTWYSIWYG OUString(RTL_CONSTASCII_USTRINGPARAM("View/ShowFontBoxWYSIWYG" )) - -#define PROPERTYHANDLE_REPLACEMENTTABLE 0 -#define PROPERTYHANDLE_FONTHISTORY 1 -#define PROPERTYHANDLE_FONTWYSIWYG 2 - -#define PROPERTYCOUNT 3 - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -class SvtFontOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtFontOptions_Impl(); - ~SvtFontOptions_Impl(); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @seealso baseclass ConfigItem - - @param "seqPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& seqPropertyNames ); - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short access method to get internal values - @descr These method give us a chance to regulate acces to ouer internal values. - It's not used in the moment - but it's possible for the feature! - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - sal_Bool IsReplacementTableEnabled ( ) const ; - void EnableReplacementTable ( sal_Bool bState ) ; - - sal_Bool IsFontHistoryEnabled ( ) const ; - void EnableFontHistory ( sal_Bool bState ) ; - - sal_Bool IsFontWYSIWYGEnabled ( ) const ; - void EnableFontWYSIWYG ( sal_Bool bState ) ; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return list of key names of ouer configuration management which represent oue module tree - @descr These methods return a static const list of key names. We need it to get needed values from our - configuration management. - - @seealso - - - @param - - @return A list of needed configuration keys is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - static Sequence< OUString > impl_GetPropertyNames(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - sal_Bool m_bReplacementTable ; - sal_Bool m_bFontHistory ; - sal_Bool m_bFontWYSIWYG ; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtFontOptions_Impl::SvtFontOptions_Impl() - // Init baseclasses first - : ConfigItem ( ROOTNODE_FONT ) - // Init member then. - , m_bReplacementTable ( sal_False ) - , m_bFontHistory ( sal_False ) - , m_bFontWYSIWYG ( sal_False ) -{ - // Use our static list of configuration keys to get his values. - Sequence< OUString > seqNames = impl_GetPropertyNames ( ); - Sequence< Any > seqValues = GetProperties ( seqNames ); - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtFontOptions_Impl::SvtFontOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Copy values from list in right order to ouer internal member. - sal_Int32 nPropertyCount = seqValues.getLength(); - for( sal_Int32 nProperty=0; nProperty<nPropertyCount; ++nProperty ) - { - // Safe impossible cases. - // Check any for valid value. - DBG_ASSERT( !(seqValues[nProperty].hasValue()==sal_False), "SvtFontOptions_Impl::SvtFontOptions_Impl()\nInvalid property value detected!\n" ); - switch( nProperty ) - { - case PROPERTYHANDLE_REPLACEMENTTABLE : { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtFontOptions_Impl::SvtFontOptions_Impl()\nWho has changed the value type of \"Office.Common\\Font\\Substitution\\Replacement\"?" ); - seqValues[nProperty] >>= m_bReplacementTable; - } - break; - case PROPERTYHANDLE_FONTHISTORY : { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtFontOptions_Impl::SvtFontOptions_Impl()\nWho has changed the value type of \"Office.Common\\Font\\View\\History\"?" ); - seqValues[nProperty] >>= m_bFontHistory; - } - break; - case PROPERTYHANDLE_FONTWYSIWYG : { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtFontOptions_Impl::SvtFontOptions_Impl()\nWho has changed the value type of \"Office.Common\\Font\\View\\ShowFontBoxWYSIWYG\"?" ); - seqValues[nProperty] >>= m_bFontWYSIWYG; - } - break; - } - } - - // Enable notification mechanism of ouer baseclass. - // We need it to get information about changes outside these class on ouer used configuration keys! - EnableNotification( seqNames ); -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtFontOptions_Impl::~SvtFontOptions_Impl() -{ - // We must save our current values .. if user forget it! - if( IsModified() == sal_True ) - { - Commit(); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtFontOptions_Impl::Notify( const Sequence< OUString >& seqPropertyNames ) -{ - // Use given list of updated properties to get his values from configuration directly! - Sequence< Any > seqValues = GetProperties( seqPropertyNames ); - // Safe impossible cases. - // We need values from ALL notified configuration keys. - DBG_ASSERT( !(seqPropertyNames.getLength()!=seqValues.getLength()), "SvtFontOptions_Impl::Notify()\nI miss some values of configuration keys!\n" ); - // Step over list of property names and get right value from coreesponding value list to set it on internal members! - sal_Int32 nCount = seqPropertyNames.getLength(); - for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty ) - { - if( seqPropertyNames[nProperty] == PROPERTYNAME_REPLACEMENTTABLE ) - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtFontOptions_Impl::Notify()\nWho has changed the value type of \"Office.Common\\Font\\Substitution\\Replacement\"?" ); - seqValues[nProperty] >>= m_bReplacementTable; - } - else - if( seqPropertyNames[nProperty] == PROPERTYNAME_FONTHISTORY ) - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtFontOptions_Impl::Notify()\nWho has changed the value type of \"Office.Common\\Font\\View\\History\"?" ); - seqValues[nProperty] >>= m_bFontHistory; - } - else - if( seqPropertyNames[nProperty] == PROPERTYNAME_FONTWYSIWYG ) - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtFontOptions_Impl::Notify()\nWho has changed the value type of \"Office.Common\\Font\\View\\ShowFontBoxWYSIWYG\"?" ); - seqValues[nProperty] >>= m_bFontWYSIWYG; - } - #if OSL_DEBUG_LEVEL > 1 - else DBG_ASSERT( sal_False, "SvtFontOptions_Impl::Notify()\nUnkown property detected ... I can't handle these!\n" ); - #endif - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtFontOptions_Impl::Commit() -{ - // Get names of supported properties, create a list for values and copy current values to it. - Sequence< OUString > seqNames = impl_GetPropertyNames(); - sal_Int32 nCount = seqNames.getLength(); - Sequence< Any > seqValues ( nCount ); - for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty ) - { - switch( nProperty ) - { - case PROPERTYHANDLE_REPLACEMENTTABLE : { - seqValues[nProperty] <<= m_bReplacementTable; - } - break; - case PROPERTYHANDLE_FONTHISTORY : { - seqValues[nProperty] <<= m_bFontHistory; - } - break; - case PROPERTYHANDLE_FONTWYSIWYG : { - seqValues[nProperty] <<= m_bFontWYSIWYG; - } - break; - } - } - // Set properties in configuration. - PutProperties( seqNames, seqValues ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtFontOptions_Impl::IsReplacementTableEnabled() const -{ - return m_bReplacementTable; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtFontOptions_Impl::EnableReplacementTable( sal_Bool bState ) -{ - m_bReplacementTable = bState; - SetModified(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtFontOptions_Impl::IsFontHistoryEnabled() const -{ - return m_bFontHistory; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtFontOptions_Impl::EnableFontHistory( sal_Bool bState ) -{ - m_bFontHistory = bState; - SetModified(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtFontOptions_Impl::IsFontWYSIWYGEnabled() const -{ - return m_bFontWYSIWYG; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtFontOptions_Impl::EnableFontWYSIWYG( sal_Bool bState ) -{ - m_bFontWYSIWYG = bState; - SetModified(); -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Sequence< OUString > SvtFontOptions_Impl::impl_GetPropertyNames() -{ - // Build list of configuration key names. - const OUString pProperties[] = - { - PROPERTYNAME_REPLACEMENTTABLE , - PROPERTYNAME_FONTHISTORY , - PROPERTYNAME_FONTWYSIWYG , - }; - // Initialize return sequence with these list ... - const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT ); - // ... and return it. - return seqPropertyNames; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtFontOptions_Impl* SvtFontOptions::m_pDataContainer = NULL ; -sal_Int32 SvtFontOptions::m_nRefCount = 0 ; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtFontOptions::SvtFontOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( impl_GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already exist! - if( m_pDataContainer == NULL ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtFontOptions_Impl::ctor()"); - m_pDataContainer = new SvtFontOptions_Impl; - - ItemHolder1::holdConfigItem(E_FONTOPTIONS); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtFontOptions::~SvtFontOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( impl_GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtFontOptions::IsReplacementTableEnabled() const -{ - MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsReplacementTableEnabled(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtFontOptions::EnableReplacementTable( sal_Bool bState ) -{ - MutexGuard aGuard( impl_GetOwnStaticMutex() ); - m_pDataContainer->EnableReplacementTable( bState ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtFontOptions::IsFontHistoryEnabled() const -{ - MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsFontHistoryEnabled(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtFontOptions::EnableFontHistory( sal_Bool bState ) -{ - MutexGuard aGuard( impl_GetOwnStaticMutex() ); - m_pDataContainer->EnableFontHistory( bState ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtFontOptions::IsFontWYSIWYGEnabled() const -{ - MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsFontWYSIWYGEnabled(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtFontOptions::EnableFontWYSIWYG( sal_Bool bState ) -{ - MutexGuard aGuard( impl_GetOwnStaticMutex() ); - m_pDataContainer->EnableFontWYSIWYG( bState ); -} - -namespace -{ - class theFontOptionsMutex : public rtl::Static<osl::Mutex, theFontOptionsMutex> {}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtFontOptions::impl_GetOwnStaticMutex() -{ - return theFontOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/historyoptions.cxx b/unotools/source/config/historyoptions.cxx deleted file mode 100644 index f0ebe9a413..0000000000 --- a/unotools/source/config/historyoptions.cxx +++ /dev/null @@ -1,715 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/historyoptions.hxx> -#include <unotools/historyoptions_const.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <deque> -#include <algorithm> - -#include <rtl/logfile.hxx> -#include "itemholder1.hxx" - -#include <com/sun/star/beans/XPropertySet.hpp> - -#include <com/sun/star/container/XNameAccess.hpp> - -#include <com/sun/star/container/XNameContainer.hpp> - -#include <com/sun/star/lang/XSingleServiceFactory.hpp> - -#include <comphelper/configurationhelper.hxx> - -#include <unotools/processfactory.hxx> - -#include <unotools/loghelper.hxx> - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::std ; -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; -using namespace ::com::sun::star::beans ; - -namespace css = ::com::sun::star; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -namespace { - static const ::sal_Int32 s_nOffsetURL = 0; - static const ::sal_Int32 s_nOffsetFilter = 1; - static const ::sal_Int32 s_nOffsetTitle = 2; - static const ::sal_Int32 s_nOffsetPassword = 3; -} - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -struct IMPL_THistoryItem -{ - IMPL_THistoryItem() - { - } - - IMPL_THistoryItem( const OUString& sNewURL , - const OUString& sNewFilter , - const OUString& sNewTitle , - const OUString& sNewPassword ) - { - sURL = sNewURL ; - sFilter = sNewFilter ; - sTitle = sNewTitle ; - sPassword = sNewPassword ; - } - - sal_Bool operator==( const OUString& sSearchedURL ) const - { - return( sURL == sSearchedURL ); - } - - OUString sURL ; - OUString sFilter ; - OUString sTitle ; - OUString sPassword ; -}; - -//***************************************************************************************************************** -// class SvtHistoryOptions_Impl -// redesigned -//***************************************************************************************************************** -class SvtHistoryOptions_Impl -{ -public: - SvtHistoryOptions_Impl(); - ~SvtHistoryOptions_Impl(); - - sal_uInt32 GetSize( EHistoryType eHistory ); - void SetSize( EHistoryType eHistory, sal_uInt32 nSize ); - void Clear( EHistoryType eHistory ); - Sequence< Sequence< PropertyValue > > GetList( EHistoryType eHistory ); - void AppendItem( EHistoryType eHistory , - const OUString& sURL , - const OUString& sFilter , - const OUString& sTitle , - const OUString& sPassword ); - -private: - void impl_truncateList (EHistoryType eHistory, sal_uInt32 nSize); - -private: - css::uno::Reference< css::container::XNameAccess > m_xCfg; - css::uno::Reference< css::container::XNameAccess > m_xCommonXCU; -}; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtHistoryOptions_Impl::SvtHistoryOptions_Impl() -{ - try - { - m_xCfg = Reference< css::container::XNameAccess > ( - ::comphelper::ConfigurationHelper::openConfig( - utl::getProcessServiceFactory(), - s_sHistories, - ::comphelper::ConfigurationHelper::E_STANDARD), - css::uno::UNO_QUERY ); - - m_xCommonXCU = Reference< css::container::XNameAccess > ( - ::comphelper::ConfigurationHelper::openConfig( - utl::getProcessServiceFactory(), - s_sCommonHistory, - ::comphelper::ConfigurationHelper::E_STANDARD), - css::uno::UNO_QUERY ); - } - catch(const css::uno::Exception& ex) - { - m_xCfg.clear(); - m_xCommonXCU.clear(); - - LogHelper::logIt(ex); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtHistoryOptions_Impl::~SvtHistoryOptions_Impl() -{ -} - -//***************************************************************************************************************** -// public method -// Attention: We return the max. size of our internal lists - That is the capacity not the size! -//***************************************************************************************************************** -sal_uInt32 SvtHistoryOptions_Impl::GetSize( EHistoryType eHistory ) -{ - css::uno::Reference< css::beans::XPropertySet > xListAccess(m_xCommonXCU, css::uno::UNO_QUERY); - - if (!xListAccess.is()) - return 0; - - sal_uInt32 nSize = 0 ; - - try - { - switch( eHistory ) - { - case ePICKLIST: - xListAccess->getPropertyValue(s_sPickListSize) >>= nSize; - break; - - case eHISTORY: - xListAccess->getPropertyValue(s_sURLHistorySize) >>= nSize; - break; - - case eHELPBOOKMARKS: - xListAccess->getPropertyValue(s_sHelpBookmarksSize) >>= nSize; - break; - - default: - break; - } - } - catch(const css::uno::Exception& ex) - { - LogHelper::logIt(ex); - } - - return nSize; -} - -//***************************************************************************************************************** -// public method -// Attention: We return the max. size of our internal lists - That is the capacity not the size! -//***************************************************************************************************************** -void SvtHistoryOptions_Impl::SetSize( EHistoryType eHistory, sal_uInt32 nSize ) -{ - css::uno::Reference< css::beans::XPropertySet > xListAccess(m_xCommonXCU, css::uno::UNO_QUERY); - if (! xListAccess.is ()) - return; - - try - { - switch( eHistory ) - { - case ePICKLIST: - if(nSize!=GetSize(ePICKLIST)) - { - xListAccess->setPropertyValue(s_sPickListSize, css::uno::makeAny(nSize)); - ::comphelper::ConfigurationHelper::flush(m_xCommonXCU); - } - break; - - case eHISTORY: - if(nSize!=GetSize(eHISTORY)) - { - xListAccess->setPropertyValue(s_sURLHistorySize, css::uno::makeAny(nSize)); - ::comphelper::ConfigurationHelper::flush(m_xCommonXCU); - } - break; - - case eHELPBOOKMARKS: - if(nSize!=GetSize(eHELPBOOKMARKS)) - { - xListAccess->setPropertyValue(s_sHelpBookmarksSize, css::uno::makeAny(nSize)); - ::comphelper::ConfigurationHelper::flush(m_xCommonXCU); - } - break; - - default: - break; - } - - impl_truncateList (eHistory, nSize); - } - catch(const css::uno::Exception& ex) - { - LogHelper::logIt(ex); - } -} - -//***************************************************************************************************************** -void SvtHistoryOptions_Impl::impl_truncateList ( EHistoryType eHistory, sal_uInt32 nSize ) -{ - css::uno::Reference< css::container::XNameAccess > xList; - css::uno::Reference< css::container::XNameContainer > xItemList; - css::uno::Reference< css::container::XNameContainer > xOrderList; - css::uno::Reference< css::beans::XPropertySet > xSet; - - try - { - switch( eHistory ) - { - case ePICKLIST: - m_xCfg->getByName(s_sPickList) >>= xList; - break; - - case eHISTORY: - m_xCfg->getByName(s_sURLHistory) >>= xList; - break; - - case eHELPBOOKMARKS: - m_xCfg->getByName(s_sHelpBookmarks) >>= xList; - break; - - default: - break; - } - - // If too much items in current list ... - // truncate the oldest items BEFORE you set the new one. - if ( ! xList.is()) - return; - - xList->getByName(s_sOrderList) >>= xOrderList; - xList->getByName(s_sItemList) >>= xItemList; - - const sal_uInt32 nLength = xOrderList->getElementNames().getLength(); - if (nSize < nLength) - { - for (sal_uInt32 i=nLength-1; i>=nSize; --i) - { - ::rtl::OUString sTmp; - const ::rtl::OUString sRemove = ::rtl::OUString::valueOf((sal_Int32)i); - xOrderList->getByName(sRemove) >>= xSet; - xSet->getPropertyValue(s_sHistoryItemRef) >>= sTmp; - xItemList->removeByName(sTmp); - xOrderList->removeByName(sRemove); - } - - ::comphelper::ConfigurationHelper::flush(m_xCfg); - } - } - catch(const css::uno::Exception& ex) - { - LogHelper::logIt(ex); - } -} - -//***************************************************************************************************************** -// public method -// Clear specified history list -//***************************************************************************************************************** -void SvtHistoryOptions_Impl::Clear( EHistoryType eHistory ) -{ - css::uno::Reference< css::container::XNameAccess > xListAccess; - css::uno::Reference< css::container::XNameContainer > xNode; - Sequence< ::rtl::OUString > lOrders; - - try - { - switch( eHistory ) - { - case ePICKLIST: - { - m_xCfg->getByName(s_sPickList) >>= xListAccess; - break; - } - - case eHISTORY: - { - m_xCfg->getByName(s_sURLHistory) >>= xListAccess; - break; - } - - case eHELPBOOKMARKS: - { - m_xCfg->getByName(s_sHelpBookmarks) >>= xListAccess; - break; - } - - default: - break; - } - - if (xListAccess.is()) - { - // clear ItemList - xListAccess->getByName(s_sItemList) >>= xNode ; - lOrders = xNode->getElementNames(); - const sal_Int32 nLength = lOrders.getLength(); - for(sal_Int32 i=0; i<nLength; ++i) - xNode->removeByName(lOrders[i]); - - // clear OrderList - xListAccess->getByName(s_sOrderList) >>= xNode ; - lOrders = xNode->getElementNames(); - for(sal_Int32 j=0; j<nLength; ++j) - xNode->removeByName(lOrders[j]); - - ::comphelper::ConfigurationHelper::flush(m_xCfg); - } - } - catch(const css::uno::Exception& ex) - { - LogHelper::logIt(ex); - } -} - -//***************************************************************************************************************** -// public method -// get a sequence list from the items -//***************************************************************************************************************** -Sequence< Sequence< PropertyValue > > SvtHistoryOptions_Impl::GetList( EHistoryType eHistory ) -{ - impl_truncateList (eHistory, GetSize (eHistory)); - - Sequence< Sequence< PropertyValue > > seqReturn; // Set default return value. - Sequence< PropertyValue > seqProperties( 4 ); - Sequence< ::rtl::OUString > lOrders; - - css::uno::Reference< css::container::XNameAccess > xListAccess; - css::uno::Reference< css::container::XNameAccess > xItemList; - css::uno::Reference< css::container::XNameAccess > xOrderList; - css::uno::Reference< css::beans::XPropertySet > xSet; - - seqProperties[s_nOffsetURL ].Name = HISTORY_PROPERTYNAME_URL; - seqProperties[s_nOffsetFilter ].Name = HISTORY_PROPERTYNAME_FILTER; - seqProperties[s_nOffsetTitle ].Name = HISTORY_PROPERTYNAME_TITLE; - seqProperties[s_nOffsetPassword ].Name = HISTORY_PROPERTYNAME_PASSWORD; - - try - { - switch( eHistory ) - { - case ePICKLIST: - { - m_xCfg->getByName(s_sPickList) >>= xListAccess; - break; - } - - case eHISTORY: - { - m_xCfg->getByName(s_sURLHistory) >>= xListAccess; - break; - } - - case eHELPBOOKMARKS: - { - m_xCfg->getByName(s_sHelpBookmarks) >>= xListAccess; - break; - } - - default: - break; - } - - if (xListAccess.is()) - { - xListAccess->getByName(s_sItemList) >>= xItemList; - xListAccess->getByName(s_sOrderList) >>= xOrderList; - - const sal_Int32 nLength = xOrderList->getElementNames().getLength(); - Sequence< Sequence< PropertyValue > > aRet(nLength); - - for(sal_Int32 nItem=0; nItem<nLength; ++nItem) - { - ::rtl::OUString sUrl; - xOrderList->getByName(::rtl::OUString::valueOf(nItem)) >>= xSet; - xSet->getPropertyValue(s_sHistoryItemRef) >>= sUrl; - - xItemList->getByName(sUrl) >>= xSet; - seqProperties[s_nOffsetURL ].Value <<= sUrl; - xSet->getPropertyValue(s_sFilter) >>= seqProperties[s_nOffsetFilter ].Value; - xSet->getPropertyValue(s_sTitle) >>= seqProperties[s_nOffsetTitle ].Value; - xSet->getPropertyValue(s_sPassword) >>= seqProperties[s_nOffsetPassword ].Value; - aRet[nItem] = seqProperties; - } - seqReturn = aRet; - } - } - catch(const css::uno::Exception& ex) - { - LogHelper::logIt(ex); - } - - return seqReturn; -} - -//***************************************************************************************************************** -// public method -// implements a deque in XML -//***************************************************************************************************************** -void SvtHistoryOptions_Impl::AppendItem( EHistoryType eHistory , - const OUString& sURL , - const OUString& sFilter , - const OUString& sTitle , - const OUString& sPassword ) -{ - impl_truncateList (eHistory, GetSize (eHistory)); - - css::uno::Reference< css::container::XNameAccess > xListAccess; - sal_Int32 nMaxSize = 0; - - switch(eHistory) - { - case ePICKLIST: - { - m_xCfg->getByName(s_sPickList) >>= xListAccess; - nMaxSize = GetSize(ePICKLIST); - } - break; - case eHISTORY: - { - m_xCfg->getByName(s_sURLHistory) >>= xListAccess; - nMaxSize = GetSize(eHISTORY); - } - break; - case eHELPBOOKMARKS: - { - m_xCfg->getByName(s_sHelpBookmarks) >>= xListAccess; - nMaxSize = GetSize(eHELPBOOKMARKS); - } - break; - default: - break; - } - - if (nMaxSize==0) - return; - - css::uno::Reference< css::container::XNameContainer > xItemList; - css::uno::Reference< css::container::XNameContainer > xOrderList; - css::uno::Reference< css::beans::XPropertySet > xSet; - - try - { - xListAccess->getByName(s_sItemList) >>= xItemList; - xListAccess->getByName(s_sOrderList) >>= xOrderList; - sal_Int32 nLength = xOrderList->getElementNames().getLength(); - - // The item to be appended is already existing! - if (xItemList->hasByName(sURL)) - { - for (sal_Int32 i=0; i<nLength; ++i) - { - ::rtl::OUString sTmp; - xOrderList->getByName(::rtl::OUString::valueOf(i)) >>= xSet; - xSet->getPropertyValue(s_sHistoryItemRef) >>= sTmp; - - if(sURL == sTmp) - { - ::rtl::OUString sFind; - xOrderList->getByName( ::rtl::OUString::valueOf(i) ) >>= xSet; - xSet->getPropertyValue(s_sHistoryItemRef) >>= sFind; - for (sal_Int32 j=i-1; j>=0; --j) - { - css::uno::Reference< css::beans::XPropertySet > xPrevSet; - css::uno::Reference< css::beans::XPropertySet > xNextSet; - xOrderList->getByName( ::rtl::OUString::valueOf(j+1) ) >>= xPrevSet; - xOrderList->getByName( ::rtl::OUString::valueOf(j) ) >>= xNextSet; - - ::rtl::OUString sTemp; - xNextSet->getPropertyValue(s_sHistoryItemRef) >>= sTemp; - xPrevSet->setPropertyValue(s_sHistoryItemRef, css::uno::makeAny(sTemp)); - } - xOrderList->getByName( ::rtl::OUString::valueOf((sal_Int32)0) ) >>= xSet; - xSet->setPropertyValue(s_sHistoryItemRef, css::uno::makeAny(sFind)); - - ::comphelper::ConfigurationHelper::flush(m_xCfg); - break; - } - } - } - - // The item to be appended is not existing! - else - { - css::uno::Reference< css::lang::XSingleServiceFactory > xFac; - css::uno::Reference< css::uno::XInterface > xInst; - css::uno::Reference< css::beans::XPropertySet > xPrevSet; - css::uno::Reference< css::beans::XPropertySet > xNextSet; - - // Append new item to OrderList. - if ( nLength == nMaxSize ) - { - ::rtl::OUString sRemove; - xOrderList->getByName(::rtl::OUString::valueOf(nLength-1)) >>= xSet; - xSet->getPropertyValue(s_sHistoryItemRef) >>= sRemove; - xItemList->removeByName(sRemove); - } - if ( nLength != nMaxSize ) - { - xFac = css::uno::Reference< css::lang::XSingleServiceFactory >(xOrderList, css::uno::UNO_QUERY); - xInst = xFac->createInstance(); - ::rtl::OUString sPush = ::rtl::OUString::valueOf(nLength++); - xOrderList->insertByName(sPush, css::uno::makeAny(xInst)); - } - for (sal_Int32 j=nLength-1; j>0; --j) - { - xOrderList->getByName( ::rtl::OUString::valueOf(j) ) >>= xPrevSet; - xOrderList->getByName( ::rtl::OUString::valueOf(j-1) ) >>= xNextSet; - ::rtl::OUString sTemp; - xNextSet->getPropertyValue(s_sHistoryItemRef) >>= sTemp; - xPrevSet->setPropertyValue(s_sHistoryItemRef, css::uno::makeAny(sTemp)); - } - xOrderList->getByName( ::rtl::OUString::valueOf((sal_Int32)0) ) >>= xSet; - xSet->setPropertyValue(s_sHistoryItemRef, css::uno::makeAny(sURL)); - - // Append the item to ItemList. - xFac = css::uno::Reference< css::lang::XSingleServiceFactory >(xItemList, css::uno::UNO_QUERY); - xInst = xFac->createInstance(); - xItemList->insertByName(sURL, css::uno::makeAny(xInst)); - xSet = css::uno::Reference< css::beans::XPropertySet >(xInst, css::uno::UNO_QUERY); - xSet->setPropertyValue(s_sFilter, css::uno::makeAny(sFilter)); - xSet->setPropertyValue(s_sTitle, css::uno::makeAny(sTitle)); - xSet->setPropertyValue(s_sPassword, css::uno::makeAny(sPassword)); - - ::comphelper::ConfigurationHelper::flush(m_xCfg); - } - } - catch(const css::uno::Exception& ex) - { - LogHelper::logIt(ex); - } -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtHistoryOptions_Impl* SvtHistoryOptions::m_pDataContainer = NULL ; -sal_Int32 SvtHistoryOptions::m_nRefCount = 0 ; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtHistoryOptions::SvtHistoryOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already exist! - if( m_pDataContainer == NULL ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtHistoryOptions_Impl::ctor()"); - m_pDataContainer = new SvtHistoryOptions_Impl; - - ItemHolder1::holdConfigItem(E_HISTORYOPTIONS); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtHistoryOptions::~SvtHistoryOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_uInt32 SvtHistoryOptions::GetSize( EHistoryType eHistory ) const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetSize( eHistory ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtHistoryOptions::SetSize( EHistoryType eHistory, sal_uInt32 nSize ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetSize( eHistory, nSize ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtHistoryOptions::Clear( EHistoryType eHistory ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->Clear( eHistory ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< Sequence< PropertyValue > > SvtHistoryOptions::GetList( EHistoryType eHistory ) const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetList( eHistory ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtHistoryOptions::AppendItem( EHistoryType eHistory , - const OUString& sURL , - const OUString& sFilter , - const OUString& sTitle , - const OUString& sPassword ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->AppendItem( eHistory, sURL, sFilter, sTitle, sPassword ); -} - -namespace -{ - class theHistoryOptionsMutex : public rtl::Static<osl::Mutex, theHistoryOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtHistoryOptions::GetOwnStaticMutex() -{ - return theHistoryOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/inetoptions.cxx b/unotools/source/config/inetoptions.cxx deleted file mode 100644 index f2d13e9a8b..0000000000 --- a/unotools/source/config/inetoptions.cxx +++ /dev/null @@ -1,553 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/inetoptions.hxx> -#include "rtl/instance.hxx" -#include <tools/urlobj.hxx> -#include <tools/wldcrd.hxx> - -#include <algorithm> -#include <map> -#include <set> -#include <vector> -#include <utility> -#include <com/sun/star/beans/PropertyChangeEvent.hpp> -#include <com/sun/star/beans/XPropertiesChangeListener.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/system/XProxySettings.hpp> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Exception.hpp> -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/uno/RuntimeException.hpp> -#include <osl/mutex.hxx> -#include <rtl/ustring.h> -#include <rtl/ustring.hxx> -#include <sal/types.h> -#include <unotools/configitem.hxx> -#include <unotools/processfactory.hxx> -#include <osl/diagnose.h> -#include <salhelper/refobj.hxx> -#include <rtl/logfile.hxx> -#include "itemholder1.hxx" - -using namespace com::sun; - -//============================================================================ -// -// takeAny -// -//============================================================================ - -namespace { - -template< typename T > inline T takeAny(star::uno::Any const & rAny) -{ - T aValue = T(); - rAny >>= aValue; - return aValue; -} - -} - -//============================================================================ -// -// SvtInetOptions::Impl -// -//============================================================================ - -class SvtInetOptions::Impl: public salhelper::ReferenceObject, - public utl::ConfigItem -{ -public: - enum Index - { - INDEX_NO_PROXY, - INDEX_PROXY_TYPE, - INDEX_FTP_PROXY_NAME, - INDEX_FTP_PROXY_PORT, - INDEX_HTTP_PROXY_NAME, - INDEX_HTTP_PROXY_PORT - }; - - Impl(); - - star::uno::Any getProperty(Index nIndex); - - void - setProperty(Index nIndex, star::uno::Any const & rValue, bool bFlush); - - inline void flush() { Commit(); } - - void - addPropertiesChangeListener( - star::uno::Sequence< rtl::OUString > const & rPropertyNames, - star::uno::Reference< star::beans::XPropertiesChangeListener > const & - rListener); - - void - removePropertiesChangeListener( - star::uno::Sequence< rtl::OUString > const & rPropertyNames, - star::uno::Reference< star::beans::XPropertiesChangeListener > const & - rListener); - -private: - enum { ENTRY_COUNT = INDEX_HTTP_PROXY_PORT + 1 }; - - struct Entry - { - enum State { UNKNOWN, KNOWN, MODIFIED }; - - inline Entry(): m_eState(UNKNOWN) {} - - rtl::OUString m_aName; - star::uno::Any m_aValue; - State m_eState; - }; - - // MSVC has problems with the below Map type when - // star::uno::Reference< star::beans::XPropertiesChangeListener > is not - // wrapped in class Listener: - class Listener: - public star::uno::Reference< star::beans::XPropertiesChangeListener > - { - public: - Listener(star::uno::Reference< - star::beans::XPropertiesChangeListener > const & - rListener): - star::uno::Reference< star::beans::XPropertiesChangeListener >( - rListener) - {} - }; - - typedef std::map< Listener, std::set< rtl::OUString > > Map; - - osl::Mutex m_aMutex; - Entry m_aEntries[ENTRY_COUNT]; - Map m_aListeners; - - virtual inline ~Impl() { Commit(); } - - virtual void Notify(star::uno::Sequence< rtl::OUString > const & rKeys); - - virtual void Commit(); - - void notifyListeners(star::uno::Sequence< rtl::OUString > const & rKeys); -}; - -//============================================================================ -// virtual -void -SvtInetOptions::Impl::Notify(star::uno::Sequence< rtl::OUString > const & - rKeys) -{ - { - osl::MutexGuard aGuard(m_aMutex); - for (sal_Int32 i = 0; i < rKeys.getLength(); ++i) - for (sal_Int32 j = 0; j < ENTRY_COUNT; ++j) - if (rKeys[i] == m_aEntries[j].m_aName) - { - m_aEntries[j].m_eState = Entry::UNKNOWN; - break; - } - } - notifyListeners(rKeys); -} - -//============================================================================ -// virtual -void SvtInetOptions::Impl::Commit() -{ - star::uno::Sequence< rtl::OUString > aKeys(ENTRY_COUNT); - star::uno::Sequence< star::uno::Any > aValues(ENTRY_COUNT); - sal_Int32 nCount = 0; - { - osl::MutexGuard aGuard(m_aMutex); - for (sal_Int32 i = 0; i < ENTRY_COUNT; ++i) - if (m_aEntries[i].m_eState == Entry::MODIFIED) - { - aKeys[nCount] = m_aEntries[i].m_aName; - aValues[nCount] = m_aEntries[i].m_aValue; - ++nCount; - m_aEntries[i].m_eState = Entry::KNOWN; - } - } - if (nCount > 0) - { - aKeys.realloc(nCount); - aValues.realloc(nCount); - PutProperties(aKeys, aValues); - } -} - -//============================================================================ -void -SvtInetOptions::Impl::notifyListeners( - star::uno::Sequence< rtl::OUString > const & rKeys) -{ - typedef - std::vector< std::pair< star::uno::Reference< - star::beans::XPropertiesChangeListener >, - star::uno::Sequence< - star::beans::PropertyChangeEvent > > > - List; - List aNotifications; - { - osl::MutexGuard aGuard(m_aMutex); - aNotifications.reserve(m_aListeners.size()); - Map::const_iterator aMapEnd(m_aListeners.end()); - for (Map::const_iterator aIt(m_aListeners.begin()); aIt != aMapEnd; - ++aIt) - { - const Map::mapped_type &rSet = aIt->second; - Map::mapped_type::const_iterator aSetEnd(rSet.end()); - star::uno::Sequence< star::beans::PropertyChangeEvent > - aEvents(rKeys.getLength()); - sal_Int32 nCount = 0; - for (sal_Int32 i = 0; i < rKeys.getLength(); ++i) - { - rtl::OUString - aTheKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( - "Inet/"))); - aTheKey += rKeys[i]; - if (rSet.find(aTheKey) != aSetEnd) - { - aEvents[nCount].PropertyName = aTheKey; - aEvents[nCount].PropertyHandle = -1; - ++nCount; - } - } - if (nCount > 0) - { - aEvents.realloc(nCount); - aNotifications. - push_back(std::pair< List::value_type::first_type, - List::value_type::second_type >( - aIt->first, aEvents)); - } - } - } - for (List::size_type i = 0; i < aNotifications.size(); ++i) - if (aNotifications[i].first.is()) - aNotifications[i].first-> - propertiesChange(aNotifications[i].second); -} - -//============================================================================ -SvtInetOptions::Impl::Impl(): - ConfigItem(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Inet/Settings"))) -{ - m_aEntries[INDEX_NO_PROXY].m_aName - = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooInetNoProxy")); - m_aEntries[INDEX_PROXY_TYPE].m_aName - = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooInetProxyType")); - m_aEntries[INDEX_FTP_PROXY_NAME].m_aName - = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooInetFTPProxyName")); - m_aEntries[INDEX_FTP_PROXY_PORT].m_aName - = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooInetFTPProxyPort")); - m_aEntries[INDEX_HTTP_PROXY_NAME].m_aName - = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooInetHTTPProxyName")); - m_aEntries[INDEX_HTTP_PROXY_PORT].m_aName - = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooInetHTTPProxyPort")); - - star::uno::Sequence< rtl::OUString > aKeys(ENTRY_COUNT); - for (sal_Int32 i = 0; i < ENTRY_COUNT; ++i) - aKeys[i] = m_aEntries[i].m_aName; - if (!EnableNotification(aKeys)) - OSL_FAIL("SvtInetOptions::Impl::Impl(): Bad EnableNotifications()"); -} - -//============================================================================ -star::uno::Any SvtInetOptions::Impl::getProperty(Index nPropIndex) -{ - for (int nTryCount = 0; nTryCount < 10; ++nTryCount) - { - { - osl::MutexGuard aGuard(m_aMutex); - if (m_aEntries[nPropIndex].m_eState != Entry::UNKNOWN) - return m_aEntries[nPropIndex].m_aValue; - } - star::uno::Sequence< rtl::OUString > aKeys(ENTRY_COUNT); - int nIndices[ENTRY_COUNT]; - sal_Int32 nCount = 0; - { - osl::MutexGuard aGuard(m_aMutex); - for (int i = 0; i < ENTRY_COUNT; ++i) - if (m_aEntries[i].m_eState == Entry::UNKNOWN) - { - aKeys[nCount] = m_aEntries[i].m_aName; - nIndices[nCount] = i; - ++nCount; - } - } - if (nCount > 0) - { - aKeys.realloc(nCount); - star::uno::Sequence< star::uno::Any > - aValues(GetProperties(aKeys)); - OSL_ENSURE(aValues.getLength() == nCount, - "SvtInetOptions::Impl::getProperty():" - " Bad GetProperties() result"); - nCount = std::min(nCount, aValues.getLength()); - { - osl::MutexGuard aGuard(m_aMutex); - for (sal_Int32 i = 0; i < nCount; ++i) - { - int nIndex = nIndices[i]; - if (m_aEntries[nIndex].m_eState == Entry::UNKNOWN) - { - m_aEntries[nIndices[i]].m_aValue = aValues[i]; - m_aEntries[nIndices[i]].m_eState = Entry::KNOWN; - } - } - } - } - } - OSL_FAIL("SvtInetOptions::Impl::getProperty(): Possible life lock"); - { - osl::MutexGuard aGuard(m_aMutex); - return m_aEntries[nPropIndex].m_aValue; - } -} - -//============================================================================ -void SvtInetOptions::Impl::setProperty(Index nIndex, - star::uno::Any const & rValue, - bool bFlush) -{ - SetModified(); - { - osl::MutexGuard aGuard(m_aMutex); - m_aEntries[nIndex].m_aValue = rValue; - m_aEntries[nIndex].m_eState = bFlush ? Entry::KNOWN : Entry::MODIFIED; - } - - star::uno::Sequence< rtl::OUString > aKeys(1); - aKeys[0] = m_aEntries[nIndex].m_aName; - if (bFlush) - { - star::uno::Sequence< star::uno::Any > aValues(1); - aValues[0] = rValue; - PutProperties(aKeys, aValues); - } - else - notifyListeners(aKeys); -} - -//============================================================================ -void -SvtInetOptions::Impl::addPropertiesChangeListener( - star::uno::Sequence< rtl::OUString > const & rPropertyNames, - star::uno::Reference< star::beans::XPropertiesChangeListener > const & - rListener) -{ - osl::MutexGuard aGuard(m_aMutex); - Map::mapped_type & rEntry = m_aListeners[rListener]; - for (sal_Int32 i = 0; i < rPropertyNames.getLength(); ++i) - rEntry.insert(rPropertyNames[i]); -} - -//============================================================================ -void -SvtInetOptions::Impl::removePropertiesChangeListener( - star::uno::Sequence< rtl::OUString > const & rPropertyNames, - star::uno::Reference< star::beans::XPropertiesChangeListener > const & - rListener) -{ - osl::MutexGuard aGuard(m_aMutex); - Map::iterator aIt(m_aListeners.find(rListener)); - if (aIt != m_aListeners.end()) - { - for (sal_Int32 i = 0; i < rPropertyNames.getLength(); ++i) - aIt->second.erase(rPropertyNames[i]); - if (aIt->second.empty()) - m_aListeners.erase(aIt); - } -} - -//============================================================================ -// -// SvtInetOptions -// -//============================================================================ - -namespace -{ - class LocalSingleton : public rtl::Static< osl::Mutex, LocalSingleton > - { - }; -} - -// static -SvtInetOptions::Impl * SvtInetOptions::m_pImpl = 0; - -//============================================================================ -SvtInetOptions::SvtInetOptions() -{ - osl::MutexGuard aGuard(LocalSingleton::get()); - if (!m_pImpl) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtInetOptions_Impl::ctor()"); - m_pImpl = new Impl; - - ItemHolder1::holdConfigItem(E_INETOPTIONS); - } - m_pImpl->acquire(); -} - -//============================================================================ -SvtInetOptions::~SvtInetOptions() -{ - osl::MutexGuard aGuard(LocalSingleton::get()); - if (m_pImpl->release() == 0) - m_pImpl = 0; -} - -//============================================================================ -rtl::OUString SvtInetOptions::GetProxyNoProxy() const -{ - return takeAny< rtl::OUString >(m_pImpl-> - getProperty(Impl::INDEX_NO_PROXY)); -} - -//============================================================================ -sal_Int32 SvtInetOptions::GetProxyType() const -{ - return takeAny< sal_Int32 >(m_pImpl-> - getProperty(Impl::INDEX_PROXY_TYPE)); -} - -//============================================================================ -rtl::OUString SvtInetOptions::GetProxyFtpName() const -{ - return takeAny< rtl::OUString >(m_pImpl-> - getProperty( - Impl::INDEX_FTP_PROXY_NAME)); -} - -//============================================================================ -sal_Int32 SvtInetOptions::GetProxyFtpPort() const -{ - return takeAny< sal_Int32 >(m_pImpl-> - getProperty(Impl::INDEX_FTP_PROXY_PORT)); -} - -//============================================================================ -rtl::OUString SvtInetOptions::GetProxyHttpName() const -{ - return takeAny< rtl::OUString >(m_pImpl-> - getProperty( - Impl::INDEX_HTTP_PROXY_NAME)); -} - -//============================================================================ -sal_Int32 SvtInetOptions::GetProxyHttpPort() const -{ - return takeAny< sal_Int32 >(m_pImpl-> - getProperty(Impl::INDEX_HTTP_PROXY_PORT)); -} - -//============================================================================ -void SvtInetOptions::SetProxyNoProxy(rtl::OUString const & rValue, - bool bFlush) -{ - m_pImpl->setProperty(Impl::INDEX_NO_PROXY, - star::uno::makeAny(rValue), - bFlush); -} - -//============================================================================ -void SvtInetOptions::SetProxyType(ProxyType eValue, bool bFlush) -{ - m_pImpl->setProperty(Impl::INDEX_PROXY_TYPE, - star::uno::makeAny(sal_Int32(eValue)), - bFlush); -} - -//============================================================================ -void SvtInetOptions::SetProxyFtpName(rtl::OUString const & rValue, - bool bFlush) -{ - m_pImpl->setProperty(Impl::INDEX_FTP_PROXY_NAME, - star::uno::makeAny(rValue), - bFlush); -} - -//============================================================================ -void SvtInetOptions::SetProxyFtpPort(sal_Int32 nValue, bool bFlush) -{ - m_pImpl->setProperty(Impl::INDEX_FTP_PROXY_PORT, - star::uno::makeAny(nValue), - bFlush); -} - -//============================================================================ -void SvtInetOptions::SetProxyHttpName(rtl::OUString const & rValue, - bool bFlush) -{ - m_pImpl->setProperty(Impl::INDEX_HTTP_PROXY_NAME, - star::uno::makeAny(rValue), - bFlush); -} - -//============================================================================ -void SvtInetOptions::SetProxyHttpPort(sal_Int32 nValue, bool bFlush) -{ - m_pImpl->setProperty(Impl::INDEX_HTTP_PROXY_PORT, - star::uno::makeAny(nValue), - bFlush); -} - -//============================================================================ -void SvtInetOptions::flush() -{ - m_pImpl->flush(); -} - -//============================================================================ -void -SvtInetOptions::addPropertiesChangeListener( - star::uno::Sequence< rtl::OUString > const & rPropertyNames, - star::uno::Reference< star::beans::XPropertiesChangeListener > const & - rListener) -{ - m_pImpl->addPropertiesChangeListener(rPropertyNames, rListener); -} - -//============================================================================ -void -SvtInetOptions::removePropertiesChangeListener( - star::uno::Sequence< rtl::OUString > const & rPropertyNames, - star::uno::Reference< star::beans::XPropertiesChangeListener > const & - rListener) -{ - m_pImpl->removePropertiesChangeListener(rPropertyNames, rListener); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/internaloptions.cxx b/unotools/source/config/internaloptions.cxx deleted file mode 100644 index 0a2bfaca4f..0000000000 --- a/unotools/source/config/internaloptions.cxx +++ /dev/null @@ -1,550 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <deque> - -#include <unotools/internaloptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/beans/PropertyValue.hpp> - -#include <rtl/logfile.hxx> -#include "itemholder1.hxx" - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::std ; -using namespace ::com::sun::star::uno ; -using namespace ::com::sun::star::beans ; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_INTERNAL OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Internal" )) -#define DEFAULT_SLOTCFG sal_False -#define DEFAULT_SENDCRASHMAIL sal_False -#define DEFAULT_USEMAILUI sal_True -#define DEFAULT_CURRENTTEMPURL OUString(RTL_CONSTASCII_USTRINGPARAM("")) - -#define FIXPROPERTYNAME_SLOTCFG OUString(RTL_CONSTASCII_USTRINGPARAM("Slot" )) -#define FIXPROPERTYNAME_SENDCRASHMAIL OUString(RTL_CONSTASCII_USTRINGPARAM("SendCrashMail" )) -#define FIXPROPERTYNAME_USEMAILUI OUString(RTL_CONSTASCII_USTRINGPARAM("UseMailUI" )) -#define FIXPROPERTYNAME_CURRENTTEMPURL OUString(RTL_CONSTASCII_USTRINGPARAM("CurrentTempURL" )) -//#define FIXPROPERTYNAME_REMOVEMENUENTRYCLOSE OUString(RTL_CONSTASCII_USTRINGPARAM("RemoveMenuEntryClose")) -//#define FIXPROPERTYNAME_REMOVEMENUENTRYBACKTOWEBTOP OUString(RTL_CONSTASCII_USTRINGPARAM("RemoveMenuEntryBackToWebtop")) -//#define FIXPROPERTYNAME_REMOVEMENUENTRYNEWWEBTOP OUString(RTL_CONSTASCII_USTRINGPARAM("RemoveMenuEntryNewWebtop")) -//#define FIXPROPERTYNAME_REMOVEMENUENTRYLOGOUT OUString(RTL_CONSTASCII_USTRINGPARAM("RemoveMenuEntryLogout")) - -#define FIXPROPERTYHANDLE_SLOTCFG 0 -#define FIXPROPERTYHANDLE_SENDCRASHMAIL 1 -#define FIXPROPERTYHANDLE_USEMAILUI 2 -#define FIXPROPERTYHANDLE_CURRENTTEMPURL 3 -//#define FIXPROPERTYHANDLE_REMOVEMENUENTRYCLOSE 3 -//#define FIXPROPERTYHANDLE_REMOVEMENUENTRYBACKTOWEBTOP 4 -//#define FIXPROPERTYHANDLE_REMOVEMENUENTRYNEWWEBTOP 5 -//#define FIXPROPERTYHANDLE_REMOVEMENUENTRYLOGOUT 6 - -#define FIXPROPERTYCOUNT 4 -/* -#define PROPERTYNAME_RECOVERYLIST OUString(RTL_CONSTASCII_USTRINGPARAM("RecoveryList" )) -#define PROPERTYNAME_URL OUString(RTL_CONSTASCII_USTRINGPARAM("OrgURL" )) -#define PROPERTYNAME_FILTER OUString(RTL_CONSTASCII_USTRINGPARAM("FilterName" )) -#define PROPERTYNAME_TEMPNAME OUString(RTL_CONSTASCII_USTRINGPARAM("TempURL" )) - -#define OFFSET_URL 0 -#define OFFSET_FILTER 1 -#define OFFSET_TEMPNAME 2 -*/ -#define PATHDELIMITER OUString(RTL_CONSTASCII_USTRINGPARAM("/" )) -#define FIXR OUString(RTL_CONSTASCII_USTRINGPARAM("r" )) - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ -/* -struct tIMPL_RecoveryEntry -{ - OUString sURL ; - OUString sFilter ; - OUString sTempName ; - - tIMPL_RecoveryEntry() - { - sURL = OUString(); - sFilter = OUString(); - sTempName = OUString(); - } - - tIMPL_RecoveryEntry( const OUString& sNewURL , - const OUString& sNewFilter , - const OUString& sNewTempName ) - { - sURL = sNewURL ; - sFilter = sNewFilter ; - sTempName = sNewTempName ; - } -}; - -typedef deque< tIMPL_RecoveryEntry > tIMPL_RecoveryStack; -*/ -class SvtInternalOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - sal_Bool m_bRemoveMenuEntryClose; - sal_Bool m_bRemoveMenuEntryBackToWebtop; - sal_Bool m_bRemoveMenuEntryNewWebtop; - sal_Bool m_bRemoveMenuEntryLogout; - sal_Bool m_bSlotCFG ; /// cache "Slot" of Internal section - sal_Bool m_bSendCrashMail ; /// cache "SendCrashMail" of Internal section - sal_Bool m_bUseMailUI; - OUString m_aCurrentTempURL ; - // tIMPL_RecoveryStack m_aRecoveryList ; /// cache "RecoveryList" of Internal section - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtInternalOptions_Impl(); - ~SvtInternalOptions_Impl(); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @seealso baseclass ConfigItem - - @param "seqPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& ) - { - DBG_ASSERT( sal_False, "SvtInternalOptions::Notify()\nNot used yet ... but called!?\n" ); - } - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short access method to get internal values - @descr These method give us a chance to regulate acces to ouer internal values. - It's not used in the moment - but it's possible for the feature! - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - sal_Bool IsRemoveMenuEntryClose() const { return m_bRemoveMenuEntryClose; } - sal_Bool IsRemoveMenuEntryBackToWebtop() const { return m_bRemoveMenuEntryBackToWebtop; } - sal_Bool IsRemoveMenuEntryNewWebtop() const { return m_bRemoveMenuEntryNewWebtop; } - sal_Bool IsRemoveMenuEntryLogout() const { return m_bRemoveMenuEntryLogout; } - sal_Bool SlotCFGEnabled () const { return m_bSlotCFG; } - sal_Bool CrashMailEnabled () const { return m_bSendCrashMail; } - sal_Bool MailUIEnabled () const { return m_bUseMailUI; } - - OUString GetCurrentTempURL() const { return m_aCurrentTempURL; } - void SetCurrentTempURL( const OUString& aNewCurrentTempURL ); -/* - void PushRecoveryItem ( const OUString& sURL , - const OUString& sFilter , - const OUString& sTempName ); - void PopRecoveryItem ( OUString& sURL , - OUString& sFilter , - OUString& sTempName ); - sal_Bool IsRecoveryListEmpty ( ) const; -*/ - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return list of fix key names of ouer configuration management which represent oue module tree - @descr These methods return a static const list of key names. We need it to get needed values from our - configuration management. We return well known key names only - because the "UserData" node - is handled in a special way! - - @seealso - - - @param - - @return A list of needed configuration keys is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - Sequence< OUString > impl_GetPropertyNames(); -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtInternalOptions_Impl::SvtInternalOptions_Impl() - // Init baseclasses first - : ConfigItem ( ROOTNODE_INTERNAL, CONFIG_MODE_IMMEDIATE_UPDATE ) - // Init member then. - , m_bRemoveMenuEntryClose(sal_False) - , m_bRemoveMenuEntryBackToWebtop(sal_False) - , m_bRemoveMenuEntryNewWebtop(sal_False) - , m_bRemoveMenuEntryLogout(sal_False) - , m_bSlotCFG(DEFAULT_SLOTCFG) - , m_bSendCrashMail(DEFAULT_SENDCRASHMAIL) - , m_bUseMailUI(DEFAULT_USEMAILUI) - , m_aCurrentTempURL(DEFAULT_CURRENTTEMPURL) -{ - // Use our list of configuration keys to get his values. - // structure of internal section: (first 2 entries are fixed - all other are member of a set!) - // "Slot" - // "SendCrashMail" - // "RecoveryList/r1/URL" - // "RecoveryList/r1/Filter" - // "RecoveryList/r1/TempName" - // "RecoveryList/r2/URL" - // "RecoveryList/r2/Filter" - // "RecoveryList/r2/TempName" - // "RecoveryList/.." - Sequence< OUString > seqNames = impl_GetPropertyNames() ; - Sequence< Any > seqValues = GetProperties( seqNames ) ; - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtInternalOptions_Impl::SvtInternalOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Read fixed values first! - DBG_ASSERT(!seqValues[FIXPROPERTYHANDLE_SLOTCFG].hasValue() || (seqValues[FIXPROPERTYHANDLE_SLOTCFG].getValueTypeClass() == TypeClass_BOOLEAN), "SvtInternalOptions_Impl::SvtInternalOptions_Impl()\nWho has changed the value type of \"Office.Common\\Internal\\Slot\"?"); - DBG_ASSERT(!seqValues[FIXPROPERTYHANDLE_SENDCRASHMAIL].hasValue() || !(seqValues[FIXPROPERTYHANDLE_SENDCRASHMAIL].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtInternalOptions_Impl::SvtInternalOptions_Impl()\nWho has changed the value type of \"Office.Common\\Internal\\SendCrashMail\"?"); - seqValues[FIXPROPERTYHANDLE_SLOTCFG] >>= m_bSlotCFG; - seqValues[FIXPROPERTYHANDLE_SENDCRASHMAIL] >>= m_bSendCrashMail; - seqValues[FIXPROPERTYHANDLE_USEMAILUI] >>= m_bUseMailUI; - seqValues[FIXPROPERTYHANDLE_CURRENTTEMPURL] >>= m_aCurrentTempURL; -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtInternalOptions_Impl::~SvtInternalOptions_Impl() -{ - if( IsModified() == sal_True ) - { - Commit(); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtInternalOptions_Impl::Commit() -{ - // We have to write our current temp URL - Sequence< OUString > aNames( 1 ); - OUString* pNames = aNames.getArray(); - Sequence< Any > aValues( 1 ); - Any* pValues = aValues.getArray(); - - pNames[0] = FIXPROPERTYNAME_CURRENTTEMPURL; - pValues[0] <<= m_aCurrentTempURL; - - PutProperties( aNames, aValues ); - -/* - // Write set of dynamic properties then. - ClearNodeSet( PROPERTYNAME_RECOVERYLIST ); - - tIMPL_RecoveryEntry aItem ; - OUString sNode ; - Sequence< PropertyValue > seqPropertyValues( 3 ) ; // Every node in set has 3 sub-nodes!( url, filter, tempname ) - - // Copy list entries to save-list and write it to configuration. - - sal_uInt32 nCount = m_aRecoveryList.size(); - for( sal_uInt32 nItem=0; nItem<nCount; ++nItem ) - { - aItem = m_aRecoveryList.top(); - m_aRecoveryList.pop(); - sNode = PROPERTYNAME_RECOVERYLIST + PATHDELIMITER + FIXR + OUString::valueOf( (sal_Int32)nItem ) + PATHDELIMITER; - seqPropertyValues[OFFSET_URL ].Name = sNode + PROPERTYNAME_URL ; - seqPropertyValues[OFFSET_FILTER ].Name = sNode + PROPERTYNAME_FILTER ; - seqPropertyValues[OFFSET_TEMPNAME ].Name = sNode + PROPERTYNAME_TEMPNAME ; - seqPropertyValues[OFFSET_URL ].Value <<= aItem.sURL ; - seqPropertyValues[OFFSET_FILTER ].Value <<= aItem.sFilter ; - seqPropertyValues[OFFSET_TEMPNAME ].Value <<= aItem.sTempName ; - - SetSetProperties( PROPERTYNAME_RECOVERYLIST, seqPropertyValues ); - } - - tIMPL_RecoveryStack::iterator iRecovery = m_aRecoveryList.begin(); - for ( sal_uInt32 nItem=0; iRecovery != m_aRecoveryList.end(); ++nItem, ++iRecovery) - { - aItem = *iRecovery; - sNode = PROPERTYNAME_RECOVERYLIST + PATHDELIMITER + FIXR + - OUString::valueOf( (sal_Int32)nItem ) + PATHDELIMITER; - seqPropertyValues[OFFSET_URL ].Name = sNode + PROPERTYNAME_URL ; - seqPropertyValues[OFFSET_FILTER ].Name = sNode + PROPERTYNAME_FILTER ; - seqPropertyValues[OFFSET_TEMPNAME ].Name = sNode + PROPERTYNAME_TEMPNAME ; - seqPropertyValues[OFFSET_URL ].Value <<= iRecovery->sURL ; - seqPropertyValues[OFFSET_FILTER ].Value <<= iRecovery->sFilter ; - seqPropertyValues[OFFSET_TEMPNAME ].Value <<= iRecovery->sTempName ; - SetSetProperties( PROPERTYNAME_RECOVERYLIST, seqPropertyValues ); - } - - */ -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtInternalOptions_Impl::SetCurrentTempURL( const OUString& aNewCurrentTempURL ) -{ - m_aCurrentTempURL = aNewCurrentTempURL; - SetModified(); - Commit(); -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Sequence< OUString > SvtInternalOptions_Impl::impl_GetPropertyNames() -{ - /* - // First get ALL names of current existing list items in configuration! - Sequence< OUString > seqRecoveryItems = GetNodeNames( PROPERTYNAME_RECOVERYLIST ); - // Get information about list counts ... - sal_Int32 nRecoveryCount = seqRecoveryItems.getLength(); - // ... and create a property list with right size! (+2...for fix properties!) (*3 ... = sub nodes for every set node!) - Sequence< OUString > seqProperties( FIXPROPERTYCOUNT + (nRecoveryCount*3) ); - */ - Sequence< OUString > seqProperties(4); - - // Add names of fix properties to list. - seqProperties[FIXPROPERTYHANDLE_SLOTCFG ] = FIXPROPERTYNAME_SLOTCFG ; - seqProperties[FIXPROPERTYHANDLE_SENDCRASHMAIL ] = FIXPROPERTYNAME_SENDCRASHMAIL ; - seqProperties[FIXPROPERTYHANDLE_USEMAILUI ] = FIXPROPERTYNAME_USEMAILUI ; - seqProperties[FIXPROPERTYHANDLE_CURRENTTEMPURL ] = FIXPROPERTYNAME_CURRENTTEMPURL ; -// seqProperties[FIXPROPERTYHANDLE_REMOVEMENUENTRYCLOSE ] = FIXPROPERTYNAME_REMOVEMENUENTRYCLOSE; -// seqProperties[FIXPROPERTYHANDLE_REMOVEMENUENTRYBACKTOWEBTOP ] = FIXPROPERTYNAME_REMOVEMENUENTRYBACKTOWEBTOP; -// seqProperties[FIXPROPERTYHANDLE_REMOVEMENUENTRYNEWWEBTOP ] = FIXPROPERTYNAME_REMOVEMENUENTRYNEWWEBTOP; -// seqProperties[FIXPROPERTYHANDLE_REMOVEMENUENTRYLOGOUT ] = FIXPROPERTYNAME_REMOVEMENUENTRYLOGOUT; -/* - sal_uInt32 nPosition = FIXPROPERTYCOUNT; - // Add names for recovery list to list. - // 3 subkeys for every item! - // nPosition is the start point of an list item, nItem an index into right list of node names! - for( sal_Int32 nItem=0; nItem<nRecoveryCount; ++nItem ) - { - seqProperties[nPosition] = PROPERTYNAME_RECOVERYLIST + PATHDELIMITER + seqRecoveryItems[nItem] + PATHDELIMITER + PROPERTYNAME_URL ; - ++nPosition; - seqProperties[nPosition] = PROPERTYNAME_RECOVERYLIST + PATHDELIMITER + seqRecoveryItems[nItem] + PATHDELIMITER + PROPERTYNAME_FILTER ; - ++nPosition; - seqProperties[nPosition] = PROPERTYNAME_RECOVERYLIST + PATHDELIMITER + seqRecoveryItems[nItem] + PATHDELIMITER + PROPERTYNAME_TEMPNAME ; - ++nPosition; - } -*/ - // Return result. - return seqProperties; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtInternalOptions_Impl* SvtInternalOptions::m_pDataContainer = NULL ; -sal_Int32 SvtInternalOptions::m_nRefCount = 0 ; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtInternalOptions::SvtInternalOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already! - if( m_pDataContainer == NULL ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtInternalOptions_Impl::ctor()"); - m_pDataContainer = new SvtInternalOptions_Impl(); - - ItemHolder1::holdConfigItem(E_INTERNALOPTIONS); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtInternalOptions::~SvtInternalOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtInternalOptions::SlotCFGEnabled() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->SlotCFGEnabled(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtInternalOptions::CrashMailEnabled() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->CrashMailEnabled(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtInternalOptions::MailUIEnabled() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->MailUIEnabled(); -} - -//***************************************************************************************************************** -// public methods -//***************************************************************************************************************** -sal_Bool SvtInternalOptions::IsRemoveMenuEntryClose() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsRemoveMenuEntryClose(); -} - -sal_Bool SvtInternalOptions::IsRemoveMenuEntryBackToWebtop() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsRemoveMenuEntryBackToWebtop(); -} - -sal_Bool SvtInternalOptions::IsRemoveMenuEntryNewWebtop() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsRemoveMenuEntryNewWebtop(); -} - -sal_Bool SvtInternalOptions::IsRemoveMenuEntryLogout() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsRemoveMenuEntryLogout(); -} - -OUString SvtInternalOptions::GetCurrentTempURL() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetCurrentTempURL(); -} - -void SvtInternalOptions::SetCurrentTempURL( const OUString& aNewCurrentTempURL ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetCurrentTempURL( aNewCurrentTempURL ); -} - -namespace -{ - class theInternalOptionsMutex : public rtl::Static<osl::Mutex, theInternalOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtInternalOptions::GetOwnStaticMutex() -{ - return theInternalOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/itemholder1.cxx b/unotools/source/config/itemholder1.cxx deleted file mode 100644 index 298144cfcb..0000000000 --- a/unotools/source/config/itemholder1.cxx +++ /dev/null @@ -1,330 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include "itemholder1.hxx" - -//----------------------------------------------- -// includes -#include <comphelper/processfactory.hxx> -#include <com/sun/star/lang/XComponent.hpp> - -#include <unotools/misccfg.hxx> -#include <unotools/undoopt.hxx> -#include <unotools/useroptions.hxx> -#include <unotools/accelcfg.hxx> -#include <unotools/cacheoptions.hxx> -#include <unotools/cmdoptions.hxx> -#include <unotools/compatibility.hxx> -#include <unotools/defaultoptions.hxx> -#include <unotools/dynamicmenuoptions.hxx> -#include <unotools/eventcfg.hxx> -#include <unotools/extendedsecurityoptions.hxx> -#include <unotools/fltrcfg.hxx> -#include <unotools/fontoptions.hxx> -#include <unotools/historyoptions.hxx> -#include <unotools/inetoptions.hxx> -#include <unotools/internaloptions.hxx> -#include <unotools/lingucfg.hxx> -#include <unotools/localisationoptions.hxx> -#include <unotools/moduleoptions.hxx> -#include <unotools/pathoptions.hxx> -#include <unotools/printwarningoptions.hxx> -#include <unotools/regoptions.hxx> -#include <unotools/optionsdlg.hxx> -#include <unotools/saveopt.hxx> -#include <unotools/searchopt.hxx> -#include <unotools/securityoptions.hxx> -#include <unotools/sourceviewconfig.hxx> -#include <unotools/startoptions.hxx> -#include <unotools/viewoptions.hxx> -#include <unotools/workingsetoptions.hxx> -#include <unotools/xmlaccelcfg.hxx> -#include <unotools/options.hxx> -#include <unotools/syslocaleoptions.hxx> - -//----------------------------------------------- -// namespaces - -namespace css = ::com::sun::star; - -//----------------------------------------------- -// declarations - -//----------------------------------------------- -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)); - } -// #i37892 got errorhandling from ConfigManager::GetConfigurationProvider() -#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_ACCELCFG : - rItem.pItem = new SvtAcceleratorConfiguration(); - 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 : - //rItem.pItem = new GlobalEventConfig(); - break; - - case E_EXTENDEDSECURITYOPTIONS : - rItem.pItem = new SvtExtendedSecurityOptions(); - break; - - case E_FLTRCFG : -// no ref count rItem.pItem = new SvtFilterOptions(); - 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 : -// no ref count rItem.pItem = new SvtJavaOptions(); - break; - - case E_LINGUCFG : - rItem.pItem = new SvtLinguConfig(); - break; - - case E_LOCALISATIONOPTIONS : - rItem.pItem = new SvtLocalisationOptions(); - break; - - case E_MODULEOPTIONS : - rItem.pItem = new SvtModuleOptions(); - break; - - case E_OPTIONSDLGOPTIONS : - rItem.pItem = new SvtOptionsDialogOptions(); - break; - - case E_PATHOPTIONS : - rItem.pItem = new SvtPathOptions(); - break; - - case E_PRINTWARNINGOPTIONS : - rItem.pItem = new SvtPrintWarningOptions(); - break; - - case E_MISCCFG : - rItem.pItem = new ::utl::MiscCfg(); - break; - - case E_SAVEOPTIONS : - rItem.pItem = new SvtSaveOptions(); - break; - - case E_SEARCHOPT : -// no ref count rItem.pItem = new SvtSearchOptions(); - break; - - case E_SECURITYOPTIONS : - rItem.pItem = new SvtSecurityOptions(); - break; - - case E_SOURCEVIEWCONFIG : - rItem.pItem = new ::utl::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; - - case E_UNDOOPTIONS : - rItem.pItem = new SvtUndoOptions(); - break; - - case E_USEROPTIONS : - rItem.pItem = new SvtUserOptions(); - break; - - case E_SYSLOCALEOPTIONS : - rItem.pItem = new SvtSysLocaleOptions(); - 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: */ diff --git a/unotools/source/config/itemholder1.hxx b/unotools/source/config/itemholder1.hxx deleted file mode 100644 index 75719b9c26..0000000000 --- a/unotools/source/config/itemholder1.hxx +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -#ifndef INCLUDED_unotools_ITEMHOLDER1_HXX_ -#define INCLUDED_unotools_ITEMHOLDER1_HXX_ - -//----------------------------------------------- -// includes - -#include <unotools/itemholderbase.hxx> -#include <cppuhelper/implbase1.hxx> -#include <com/sun/star/lang/XEventListener.hpp> - -//----------------------------------------------- -// namespaces - -#ifdef css -#error "Cant use css as namespace alias." -#else -#define css ::com::sun::star -#endif - -//----------------------------------------------- -// definitions - -class ItemHolder1 : private ItemHolderMutexBase - , public ::cppu::WeakImplHelper1< css::lang::XEventListener > -{ - //........................................... - // member - private: - - TItems m_lItems; - - //........................................... - // c++ interface - public: - - ItemHolder1(); - virtual ~ItemHolder1(); - static void holdConfigItem(EItem eItem); - - //........................................... - // uno interface - public: - - virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent) - throw(css::uno::RuntimeException); - - //........................................... - // helper - private: - - void impl_addItem(EItem eItem); - void impl_releaseAllItems(); - void impl_newItem(TItemInfo& rItem); - void impl_deleteItem(TItemInfo& rItem); -}; - -//----------------------------------------------- -// namespaces - -#undef css - -#endif // INCLUDED_unotools_ITEMHOLDER1_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/lingucfg.cxx b/unotools/source/config/lingucfg.cxx deleted file mode 100644 index 7451de1789..0000000000 --- a/unotools/source/config/lingucfg.cxx +++ /dev/null @@ -1,1394 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - - -#include <com/sun/star/lang/Locale.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/lang/XSingleServiceFactory.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/container/XNameContainer.hpp> -#include <com/sun/star/container/XNameReplace.hpp> -#include "com/sun/star/util/XMacroExpander.hpp" -#include "com/sun/star/beans/XPropertySet.hpp" -#include <rtl/uri.hxx> -#include <rtl/instance.hxx> -#include <osl/mutex.hxx> -#include <i18npool/mslangid.hxx> -#include <tools/debug.hxx> -#include <tools/string.hxx> -#include <unotools/lingucfg.hxx> -#include <unotools/linguprops.hxx> -#include <sal/macros.h> - -#include <comphelper/processfactory.hxx> - -#include <itemholder1.hxx> - -using namespace com::sun::star; - -using ::rtl::OUString; -using ::rtl::Uri; - -#define A2OU(x) ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( x )) -#define EXPAND_PROTOCOL "vnd.sun.star.expand:" -#define FILE_PROTOCOL "file:///" - -/////////////////////////////////////////////////////////////////////////// - -namespace -{ - class theSvtLinguConfigItemMutex : - public rtl::Static< osl::Mutex, theSvtLinguConfigItemMutex > {}; -} - -/////////////////////////////////////////////////////////////////////////// - -static sal_Bool lcl_SetLocale( sal_Int16 &rLanguage, const uno::Any &rVal ) -{ - sal_Bool bSucc = sal_False; - - lang::Locale aNew; - if (rVal >>= aNew) // conversion successful? - { - sal_Int16 nNew = MsLangId::convertLocaleToLanguage( aNew ); - if (nNew != rLanguage) - { - rLanguage = nNew; - bSucc = sal_True; - } - } - return bSucc; -} - - -static inline const OUString lcl_LanguageToCfgLocaleStr( sal_Int16 nLanguage ) -{ - OUString aRes; - if (LANGUAGE_SYSTEM != nLanguage) - aRes = MsLangId::convertLanguageToIsoString( nLanguage ); - return aRes; -} - - -static sal_Int16 lcl_CfgAnyToLanguage( const uno::Any &rVal ) -{ - OUString aTmp; - rVal >>= aTmp; - return (aTmp.getLength() == 0) ? LANGUAGE_SYSTEM : MsLangId::convertIsoStringToLanguage( aTmp ); -} - - -////////////////////////////////////////////////////////////////////// - -SvtLinguOptions::SvtLinguOptions() -{ - nDefaultLanguage = LANGUAGE_NONE; - nDefaultLanguage_CJK = LANGUAGE_NONE; - nDefaultLanguage_CTL = LANGUAGE_NONE; - - // general options - bIsUseDictionaryList = - bIsIgnoreControlCharacters = sal_True; - - // spelling options - bIsSpellCapitalization = - bIsSpellSpecial = sal_True; - bIsSpellAuto = - bIsSpellReverse = - bIsSpellWithDigits = - bIsSpellUpperCase = sal_False; - - // text conversion options - bIsIgnorePostPositionalWord = sal_True; - bIsAutoCloseDialog = - bIsShowEntriesRecentlyUsedFirst = - bIsAutoReplaceUniqueEntries = sal_False; - bIsDirectionToSimplified = sal_True; - bIsUseCharacterVariants = - bIsTranslateCommonTerms = - bIsReverseMapping = sal_False; - - bROIsDirectionToSimplified = - bROIsUseCharacterVariants = - bROIsTranslateCommonTerms = - bROIsReverseMapping = sal_False; - - // hyphenation options - bIsHyphSpecial = sal_True; - bIsHyphAuto = sal_False; - nHyphMinLeading = - nHyphMinTrailing = 2; - nHyphMinWordLength = 0; - - nDataFilesChangedCheckValue = 0; - - //grammar options - bIsGrammarAuto = sal_False, - bIsGrammarInteractive = sal_False; - -} - - -////////////////////////////////////////////////////////////////////// - - -class SvtLinguConfigItem : public utl::ConfigItem -{ - SvtLinguOptions aOpt; - - // disallow copy-constructor and assignment-operator for now - SvtLinguConfigItem( const SvtLinguConfigItem & ); - SvtLinguConfigItem & operator = ( const SvtLinguConfigItem & ); - - static sal_Bool GetHdlByName( sal_Int32 &rnHdl, const OUString &rPropertyName, sal_Bool bFullPropName = sal_False ); - static const uno::Sequence< OUString > GetPropertyNames(); - sal_Bool LoadOptions( const uno::Sequence< OUString > &rProperyNames ); - sal_Bool SaveOptions( const uno::Sequence< OUString > &rProperyNames ); - -public: - SvtLinguConfigItem(); - virtual ~SvtLinguConfigItem(); - - // utl::ConfigItem - virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString > &rPropertyNames ); - virtual void Commit(); - - // make some protected functions of utl::ConfigItem public - using utl::ConfigItem::GetNodeNames; - using utl::ConfigItem::GetProperties; - //using utl::ConfigItem::PutProperties; - //using utl::ConfigItem::SetSetProperties; - using utl::ConfigItem::ReplaceSetProperties; - //using utl::ConfigItem::GetReadOnlyStates; - - - com::sun::star::uno::Any - GetProperty( const rtl::OUString &rPropertyName ) const; - com::sun::star::uno::Any - GetProperty( sal_Int32 nPropertyHandle ) const; - - sal_Bool SetProperty( const rtl::OUString &rPropertyName, - const com::sun::star::uno::Any &rValue ); - sal_Bool SetProperty( sal_Int32 nPropertyHandle, - const com::sun::star::uno::Any &rValue ); - - sal_Bool GetOptions( SvtLinguOptions &rOptions ) const; - sal_Bool SetOptions( const SvtLinguOptions &rOptions ); - - sal_Bool IsReadOnly( const rtl::OUString &rPropertyName ) const; - sal_Bool IsReadOnly( sal_Int32 nPropertyHandle ) const; -}; - - -SvtLinguConfigItem::SvtLinguConfigItem() : - utl::ConfigItem( String::CreateFromAscii( "Office.Linguistic" ) ) -{ - const uno::Sequence< OUString > &rPropertyNames = GetPropertyNames(); - LoadOptions( rPropertyNames ); - ClearModified(); - - // request notify events when properties change - EnableNotification( rPropertyNames ); -} - - -SvtLinguConfigItem::~SvtLinguConfigItem() -{ - //! Commit (SaveOptions) will be called by the d-tor of the base called ! -} - - -void SvtLinguConfigItem::Notify( const uno::Sequence< OUString > &rPropertyNames ) -{ - LoadOptions( rPropertyNames ); - NotifyListeners(0); -} - - -void SvtLinguConfigItem::Commit() -{ - SaveOptions( GetPropertyNames() ); -} - - -static struct NamesToHdl -{ - const char *pFullPropName; // full qualified name as used in configuration - const char *pPropName; // property name only (atom) of above - sal_Int32 nHdl; // numeric handle representing the property -}aNamesToHdl[] = -{ -{/* 0 */ "General/DefaultLocale", UPN_DEFAULT_LOCALE, UPH_DEFAULT_LOCALE}, -{/* 1 */ "General/DictionaryList/ActiveDictionaries", UPN_ACTIVE_DICTIONARIES, UPH_ACTIVE_DICTIONARIES}, -{/* 2 */ "General/DictionaryList/IsUseDictionaryList", UPN_IS_USE_DICTIONARY_LIST, UPH_IS_USE_DICTIONARY_LIST}, -{/* 3 */ "General/IsIgnoreControlCharacters", UPN_IS_IGNORE_CONTROL_CHARACTERS, UPH_IS_IGNORE_CONTROL_CHARACTERS}, -{/* 5 */ "General/DefaultLocale_CJK", UPN_DEFAULT_LOCALE_CJK, UPH_DEFAULT_LOCALE_CJK}, -{/* 6 */ "General/DefaultLocale_CTL", UPN_DEFAULT_LOCALE_CTL, UPH_DEFAULT_LOCALE_CTL}, - -{/* 7 */ "SpellChecking/IsSpellUpperCase", UPN_IS_SPELL_UPPER_CASE, UPH_IS_SPELL_UPPER_CASE}, -{/* 8 */ "SpellChecking/IsSpellWithDigits", UPN_IS_SPELL_WITH_DIGITS, UPH_IS_SPELL_WITH_DIGITS}, -{/* 9 */ "SpellChecking/IsSpellCapitalization", UPN_IS_SPELL_CAPITALIZATION, UPH_IS_SPELL_CAPITALIZATION}, -{/* 10 */ "SpellChecking/IsSpellAuto", UPN_IS_SPELL_AUTO, UPH_IS_SPELL_AUTO}, -{/* 11 */ "SpellChecking/IsSpellSpecial", UPN_IS_SPELL_SPECIAL, UPH_IS_SPELL_SPECIAL}, -{/* 14 */ "SpellChecking/IsReverseDirection", UPN_IS_WRAP_REVERSE, UPH_IS_WRAP_REVERSE}, - -{/* 15 */ "Hyphenation/MinLeading", UPN_HYPH_MIN_LEADING, UPH_HYPH_MIN_LEADING}, -{/* 16 */ "Hyphenation/MinTrailing", UPN_HYPH_MIN_TRAILING, UPH_HYPH_MIN_TRAILING}, -{/* 17 */ "Hyphenation/MinWordLength", UPN_HYPH_MIN_WORD_LENGTH, UPH_HYPH_MIN_WORD_LENGTH}, -{/* 18 */ "Hyphenation/IsHyphSpecial", UPN_IS_HYPH_SPECIAL, UPH_IS_HYPH_SPECIAL}, -{/* 19 */ "Hyphenation/IsHyphAuto", UPN_IS_HYPH_AUTO, UPH_IS_HYPH_AUTO}, - -{/* 20 */ "TextConversion/ActiveConversionDictionaries", UPN_ACTIVE_CONVERSION_DICTIONARIES, UPH_ACTIVE_CONVERSION_DICTIONARIES}, -{/* 21 */ "TextConversion/IsIgnorePostPositionalWord", UPN_IS_IGNORE_POST_POSITIONAL_WORD, UPH_IS_IGNORE_POST_POSITIONAL_WORD}, -{/* 22 */ "TextConversion/IsAutoCloseDialog", UPN_IS_AUTO_CLOSE_DIALOG, UPH_IS_AUTO_CLOSE_DIALOG}, -{/* 23 */ "TextConversion/IsShowEntriesRecentlyUsedFirst", UPN_IS_SHOW_ENTRIES_RECENTLY_USED_FIRST, UPH_IS_SHOW_ENTRIES_RECENTLY_USED_FIRST}, -{/* 24 */ "TextConversion/IsAutoReplaceUniqueEntries", UPN_IS_AUTO_REPLACE_UNIQUE_ENTRIES, UPH_IS_AUTO_REPLACE_UNIQUE_ENTRIES}, -{/* 25 */ "TextConversion/IsDirectionToSimplified", UPN_IS_DIRECTION_TO_SIMPLIFIED, UPH_IS_DIRECTION_TO_SIMPLIFIED}, -{/* 26 */ "TextConversion/IsUseCharacterVariants", UPN_IS_USE_CHARACTER_VARIANTS, UPH_IS_USE_CHARACTER_VARIANTS}, -{/* 27 */ "TextConversion/IsTranslateCommonTerms", UPN_IS_TRANSLATE_COMMON_TERMS, UPH_IS_TRANSLATE_COMMON_TERMS}, -{/* 28 */ "TextConversion/IsReverseMapping", UPN_IS_REVERSE_MAPPING, UPH_IS_REVERSE_MAPPING}, - -{/* 29 */ "ServiceManager/DataFilesChangedCheckValue", UPN_DATA_FILES_CHANGED_CHECK_VALUE, UPH_DATA_FILES_CHANGED_CHECK_VALUE}, - -{/* 30 */ "GrammarChecking/IsAutoCheck", UPN_IS_GRAMMAR_AUTO, UPH_IS_GRAMMAR_AUTO}, -{/* 31 */ "GrammarChecking/IsInteractiveCheck", UPN_IS_GRAMMAR_INTERACTIVE, UPH_IS_GRAMMAR_INTERACTIVE}, - - /* similar to entry 0 (thus no own configuration entry) but with different property name and type */ -{ NULL, UPN_DEFAULT_LANGUAGE, UPH_DEFAULT_LANGUAGE}, - -{ NULL, NULL, -1} -}; - - -const uno::Sequence< OUString > SvtLinguConfigItem::GetPropertyNames() -{ - uno::Sequence< OUString > aNames; - - sal_Int32 nMax = SAL_N_ELEMENTS(aNamesToHdl); - - aNames.realloc( nMax ); - OUString *pNames = aNames.getArray(); - sal_Int32 nIdx = 0; - for (sal_Int32 i = 0; i < nMax; ++i) - { - const sal_Char *pFullPropName = aNamesToHdl[i].pFullPropName; - if (pFullPropName) - pNames[ nIdx++ ] = ::rtl::OUString::createFromAscii( pFullPropName ); - } - aNames.realloc( nIdx ); - - return aNames; -} - -sal_Bool SvtLinguConfigItem::GetHdlByName( - sal_Int32 &rnHdl, - const OUString &rPropertyName, - sal_Bool bFullPropName ) -{ - NamesToHdl *pEntry = &aNamesToHdl[0]; - - if (bFullPropName) - { - while (pEntry && pEntry->pFullPropName != NULL) - { - if (0 == rPropertyName.compareToAscii( pEntry->pFullPropName )) - { - rnHdl = pEntry->nHdl; - break; - } - ++pEntry; - } - return pEntry && pEntry->pFullPropName != NULL; - } - else - { - while (pEntry && pEntry->pPropName != NULL) - { - if (0 == rPropertyName.compareToAscii( pEntry->pPropName )) - { - rnHdl = pEntry->nHdl; - break; - } - ++pEntry; - } - return pEntry && pEntry->pPropName != NULL; - } -} - - -uno::Any SvtLinguConfigItem::GetProperty( const OUString &rPropertyName ) const -{ - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - sal_Int32 nHdl; - return GetHdlByName( nHdl, rPropertyName ) ? GetProperty( nHdl ) : uno::Any(); -} - - -uno::Any SvtLinguConfigItem::GetProperty( sal_Int32 nPropertyHandle ) const -{ - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - uno::Any aRes; - - const sal_Int16 *pnVal = 0; - const sal_Bool *pbVal = 0; - const sal_Int32 *pnInt32Val = 0; - - const SvtLinguOptions &rOpt = const_cast< SvtLinguConfigItem * >(this)->aOpt; - switch (nPropertyHandle) - { - case UPH_IS_USE_DICTIONARY_LIST : pbVal = &rOpt.bIsUseDictionaryList; break; - case UPH_IS_IGNORE_CONTROL_CHARACTERS : pbVal = &rOpt.bIsIgnoreControlCharacters; break; - case UPH_IS_HYPH_AUTO : pbVal = &rOpt.bIsHyphAuto; break; - case UPH_IS_HYPH_SPECIAL : pbVal = &rOpt.bIsHyphSpecial; break; - case UPH_IS_SPELL_AUTO : pbVal = &rOpt.bIsSpellAuto; break; - case UPH_IS_SPELL_SPECIAL : pbVal = &rOpt.bIsSpellSpecial; break; - case UPH_IS_WRAP_REVERSE : pbVal = &rOpt.bIsSpellReverse; break; - case UPH_DEFAULT_LANGUAGE : pnVal = &rOpt.nDefaultLanguage; break; - case UPH_IS_SPELL_CAPITALIZATION : pbVal = &rOpt.bIsSpellCapitalization; break; - case UPH_IS_SPELL_WITH_DIGITS : pbVal = &rOpt.bIsSpellWithDigits; break; - case UPH_IS_SPELL_UPPER_CASE : pbVal = &rOpt.bIsSpellUpperCase; break; - case UPH_HYPH_MIN_LEADING : pnVal = &rOpt.nHyphMinLeading; break; - case UPH_HYPH_MIN_TRAILING : pnVal = &rOpt.nHyphMinTrailing; break; - case UPH_HYPH_MIN_WORD_LENGTH : pnVal = &rOpt.nHyphMinWordLength; break; - case UPH_ACTIVE_DICTIONARIES : - { - aRes <<= rOpt.aActiveDics; - break; - } - case UPH_ACTIVE_CONVERSION_DICTIONARIES : - { - aRes <<= rOpt.aActiveConvDics; - break; - } - case UPH_DEFAULT_LOCALE : - { - lang::Locale aLocale( MsLangId::convertLanguageToLocale( rOpt.nDefaultLanguage, false ) ); - aRes.setValue( &aLocale, ::getCppuType((lang::Locale*)0 )); - break; - } - case UPH_DEFAULT_LOCALE_CJK : - { - lang::Locale aLocale( MsLangId::convertLanguageToLocale( rOpt.nDefaultLanguage_CJK, false ) ); - aRes.setValue( &aLocale, ::getCppuType((lang::Locale*)0 )); - break; - } - case UPH_DEFAULT_LOCALE_CTL : - { - lang::Locale aLocale( MsLangId::convertLanguageToLocale( rOpt.nDefaultLanguage_CTL, false ) ); - aRes.setValue( &aLocale, ::getCppuType((lang::Locale*)0 )); - break; - } - case UPH_IS_IGNORE_POST_POSITIONAL_WORD : pbVal = &rOpt.bIsIgnorePostPositionalWord; break; - case UPH_IS_AUTO_CLOSE_DIALOG : pbVal = &rOpt.bIsAutoCloseDialog; break; - case UPH_IS_SHOW_ENTRIES_RECENTLY_USED_FIRST : pbVal = &rOpt.bIsShowEntriesRecentlyUsedFirst; break; - case UPH_IS_AUTO_REPLACE_UNIQUE_ENTRIES : pbVal = &rOpt.bIsAutoReplaceUniqueEntries; break; - - case UPH_IS_DIRECTION_TO_SIMPLIFIED: pbVal = &rOpt.bIsDirectionToSimplified; break; - case UPH_IS_USE_CHARACTER_VARIANTS : pbVal = &rOpt.bIsUseCharacterVariants; break; - case UPH_IS_TRANSLATE_COMMON_TERMS : pbVal = &rOpt.bIsTranslateCommonTerms; break; - case UPH_IS_REVERSE_MAPPING : pbVal = &rOpt.bIsReverseMapping; break; - - case UPH_DATA_FILES_CHANGED_CHECK_VALUE : pnInt32Val = &rOpt.nDataFilesChangedCheckValue; break; - case UPH_IS_GRAMMAR_AUTO: pbVal = &rOpt.bIsGrammarAuto; break; - case UPH_IS_GRAMMAR_INTERACTIVE: pbVal = &rOpt.bIsGrammarInteractive; break; - default : - DBG_ASSERT( 0, "unexpected property handle" ); - } - - if (pbVal) - aRes <<= *pbVal; - else if (pnVal) - aRes <<= *pnVal; - else if (pnInt32Val) - aRes <<= *pnInt32Val; - - return aRes; -} - - -sal_Bool SvtLinguConfigItem::SetProperty( const OUString &rPropertyName, const uno::Any &rValue ) -{ - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - sal_Bool bSucc = sal_False; - sal_Int32 nHdl; - if (GetHdlByName( nHdl, rPropertyName )) - bSucc = SetProperty( nHdl, rValue ); - return bSucc; -} - - -sal_Bool SvtLinguConfigItem::SetProperty( sal_Int32 nPropertyHandle, const uno::Any &rValue ) -{ - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - sal_Bool bSucc = sal_False; - if (!rValue.hasValue()) - return bSucc; - - sal_Bool bMod = sal_False; - - sal_Int16 *pnVal = 0; - sal_Bool *pbVal = 0; - sal_Int32 *pnInt32Val = 0; - - SvtLinguOptions &rOpt = aOpt; - switch (nPropertyHandle) - { - case UPH_IS_USE_DICTIONARY_LIST : pbVal = &rOpt.bIsUseDictionaryList; break; - case UPH_IS_IGNORE_CONTROL_CHARACTERS : pbVal = &rOpt.bIsIgnoreControlCharacters; break; - case UPH_IS_HYPH_AUTO : pbVal = &rOpt.bIsHyphAuto; break; - case UPH_IS_HYPH_SPECIAL : pbVal = &rOpt.bIsHyphSpecial; break; - case UPH_IS_SPELL_AUTO : pbVal = &rOpt.bIsSpellAuto; break; - case UPH_IS_SPELL_SPECIAL : pbVal = &rOpt.bIsSpellSpecial; break; - case UPH_IS_WRAP_REVERSE : pbVal = &rOpt.bIsSpellReverse; break; - case UPH_DEFAULT_LANGUAGE : pnVal = &rOpt.nDefaultLanguage; break; - case UPH_IS_SPELL_CAPITALIZATION : pbVal = &rOpt.bIsSpellCapitalization; break; - case UPH_IS_SPELL_WITH_DIGITS : pbVal = &rOpt.bIsSpellWithDigits; break; - case UPH_IS_SPELL_UPPER_CASE : pbVal = &rOpt.bIsSpellUpperCase; break; - case UPH_HYPH_MIN_LEADING : pnVal = &rOpt.nHyphMinLeading; break; - case UPH_HYPH_MIN_TRAILING : pnVal = &rOpt.nHyphMinTrailing; break; - case UPH_HYPH_MIN_WORD_LENGTH : pnVal = &rOpt.nHyphMinWordLength; break; - case UPH_ACTIVE_DICTIONARIES : - { - rValue >>= rOpt.aActiveDics; - bMod = sal_True; - break; - } - case UPH_ACTIVE_CONVERSION_DICTIONARIES : - { - rValue >>= rOpt.aActiveConvDics; - bMod = sal_True; - break; - } - case UPH_DEFAULT_LOCALE : - { - bSucc = lcl_SetLocale( rOpt.nDefaultLanguage, rValue ); - bMod = bSucc; - break; - } - case UPH_DEFAULT_LOCALE_CJK : - { - bSucc = lcl_SetLocale( rOpt.nDefaultLanguage_CJK, rValue ); - bMod = bSucc; - break; - } - case UPH_DEFAULT_LOCALE_CTL : - { - bSucc = lcl_SetLocale( rOpt.nDefaultLanguage_CTL, rValue ); - bMod = bSucc; - break; - } - case UPH_IS_IGNORE_POST_POSITIONAL_WORD : pbVal = &rOpt.bIsIgnorePostPositionalWord; break; - case UPH_IS_AUTO_CLOSE_DIALOG : pbVal = &rOpt.bIsAutoCloseDialog; break; - case UPH_IS_SHOW_ENTRIES_RECENTLY_USED_FIRST : pbVal = &rOpt.bIsShowEntriesRecentlyUsedFirst; break; - case UPH_IS_AUTO_REPLACE_UNIQUE_ENTRIES : pbVal = &rOpt.bIsAutoReplaceUniqueEntries; break; - - case UPH_IS_DIRECTION_TO_SIMPLIFIED : pbVal = &rOpt.bIsDirectionToSimplified; break; - case UPH_IS_USE_CHARACTER_VARIANTS : pbVal = &rOpt.bIsUseCharacterVariants; break; - case UPH_IS_TRANSLATE_COMMON_TERMS : pbVal = &rOpt.bIsTranslateCommonTerms; break; - case UPH_IS_REVERSE_MAPPING : pbVal = &rOpt.bIsReverseMapping; break; - - case UPH_DATA_FILES_CHANGED_CHECK_VALUE : pnInt32Val = &rOpt.nDataFilesChangedCheckValue; break; - case UPH_IS_GRAMMAR_AUTO: pbVal = &rOpt.bIsGrammarAuto; break; - case UPH_IS_GRAMMAR_INTERACTIVE: pbVal = &rOpt.bIsGrammarInteractive; break; - default : - DBG_ASSERT( 0, "unexpected property handle" ); - } - - if (pbVal) - { - sal_Bool bNew = sal_Bool(); - if (rValue >>= bNew) - { - if (bNew != *pbVal) - { - *pbVal = bNew; - bMod = sal_True; - } - bSucc = sal_True; - } - } - else if (pnVal) - { - sal_Int16 nNew = sal_Int16(); - if (rValue >>= nNew) - { - if (nNew != *pnVal) - { - *pnVal = nNew; - bMod = sal_True; - } - bSucc = sal_True; - } - } - else if (pnInt32Val) - { - sal_Int32 nNew = sal_Int32(); - if (rValue >>= nNew) - { - if (nNew != *pnInt32Val) - { - *pnInt32Val = nNew; - bMod = sal_True; - } - bSucc = sal_True; - } - } - - if (bMod) - SetModified(); - - NotifyListeners(0); - return bSucc; -} - - -sal_Bool SvtLinguConfigItem::GetOptions( SvtLinguOptions &rOptions ) const -{ - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - rOptions = aOpt; - return sal_True; -} - - -sal_Bool SvtLinguConfigItem::SetOptions( const SvtLinguOptions &rOptions ) -{ - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - aOpt = rOptions; - SetModified(); - NotifyListeners(0); - return sal_True; -} - - -sal_Bool SvtLinguConfigItem::LoadOptions( const uno::Sequence< OUString > &rProperyNames ) -{ - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - sal_Bool bRes = sal_False; - - const OUString *pProperyNames = rProperyNames.getConstArray(); - sal_Int32 nProps = rProperyNames.getLength(); - - const uno::Sequence< uno::Any > aValues = GetProperties( rProperyNames ); - const uno::Sequence< sal_Bool > aROStates = GetReadOnlyStates( rProperyNames ); - - if (nProps && aValues.getLength() == nProps && aROStates.getLength() == nProps) - { - SvtLinguOptions &rOpt = aOpt; - - const uno::Any *pValue = aValues.getConstArray(); - const sal_Bool *pROStates = aROStates.getConstArray(); - for (sal_Int32 i = 0; i < nProps; ++i) - { - const uno::Any &rVal = pValue[i]; - sal_Int32 nPropertyHandle; - GetHdlByName( nPropertyHandle, pProperyNames[i], sal_True ); - switch ( nPropertyHandle ) - { - case UPH_DEFAULT_LOCALE : - { rOpt.bRODefaultLanguage = pROStates[i]; rOpt.nDefaultLanguage = lcl_CfgAnyToLanguage( rVal ); } break; - case UPH_ACTIVE_DICTIONARIES : - { rOpt.bROActiveDics = pROStates[i]; rVal >>= rOpt.aActiveDics; } break; - case UPH_IS_USE_DICTIONARY_LIST : - { rOpt.bROIsUseDictionaryList = pROStates[i]; rVal >>= rOpt.bIsUseDictionaryList; } break; - case UPH_IS_IGNORE_CONTROL_CHARACTERS : - { rOpt.bROIsIgnoreControlCharacters = pROStates[i]; rVal >>= rOpt.bIsIgnoreControlCharacters; } break; - case UPH_DEFAULT_LOCALE_CJK : - { rOpt.bRODefaultLanguage_CJK = pROStates[i]; rOpt.nDefaultLanguage_CJK = lcl_CfgAnyToLanguage( rVal ); } break; - case UPH_DEFAULT_LOCALE_CTL : - { rOpt.bRODefaultLanguage_CTL = pROStates[i]; rOpt.nDefaultLanguage_CTL = lcl_CfgAnyToLanguage( rVal ); } break; - - case UPH_IS_SPELL_UPPER_CASE : - { rOpt.bROIsSpellUpperCase = pROStates[i]; rVal >>= rOpt.bIsSpellUpperCase; } break; - case UPH_IS_SPELL_WITH_DIGITS : - { rOpt.bROIsSpellWithDigits = pROStates[i]; rVal >>= rOpt.bIsSpellWithDigits; } break; - case UPH_IS_SPELL_CAPITALIZATION : - { rOpt.bROIsSpellCapitalization = pROStates[i]; rVal >>= rOpt.bIsSpellCapitalization; } break; - case UPH_IS_SPELL_AUTO : - { rOpt.bROIsSpellAuto = pROStates[i]; rVal >>= rOpt.bIsSpellAuto; } break; - case UPH_IS_SPELL_SPECIAL : - { rOpt.bROIsSpellSpecial = pROStates[i]; rVal >>= rOpt.bIsSpellSpecial; } break; - case UPH_IS_WRAP_REVERSE : - { rOpt.bROIsSpellReverse = pROStates[i]; rVal >>= rOpt.bIsSpellReverse; } break; - - case UPH_HYPH_MIN_LEADING : - { rOpt.bROHyphMinLeading = pROStates[i]; rVal >>= rOpt.nHyphMinLeading; } break; - case UPH_HYPH_MIN_TRAILING : - { rOpt.bROHyphMinTrailing = pROStates[i]; rVal >>= rOpt.nHyphMinTrailing; } break; - case UPH_HYPH_MIN_WORD_LENGTH : - { rOpt.bROHyphMinWordLength = pROStates[i]; rVal >>= rOpt.nHyphMinWordLength; } break; - case UPH_IS_HYPH_SPECIAL : - { rOpt.bROIsHyphSpecial = pROStates[i]; rVal >>= rOpt.bIsHyphSpecial; } break; - case UPH_IS_HYPH_AUTO : - { rOpt.bROIsHyphAuto = pROStates[i]; rVal >>= rOpt.bIsHyphAuto; } break; - - case UPH_ACTIVE_CONVERSION_DICTIONARIES : { rOpt.bROActiveConvDics = pROStates[i]; rVal >>= rOpt.aActiveConvDics; } break; - - case UPH_IS_IGNORE_POST_POSITIONAL_WORD : - { rOpt.bROIsIgnorePostPositionalWord = pROStates[i]; rVal >>= rOpt.bIsIgnorePostPositionalWord; } break; - case UPH_IS_AUTO_CLOSE_DIALOG : - { rOpt.bROIsAutoCloseDialog = pROStates[i]; rVal >>= rOpt.bIsAutoCloseDialog; } break; - case UPH_IS_SHOW_ENTRIES_RECENTLY_USED_FIRST : - { rOpt.bROIsShowEntriesRecentlyUsedFirst = pROStates[i]; rVal >>= rOpt.bIsShowEntriesRecentlyUsedFirst; } break; - case UPH_IS_AUTO_REPLACE_UNIQUE_ENTRIES : - { rOpt.bROIsAutoReplaceUniqueEntries = pROStates[i]; rVal >>= rOpt.bIsAutoReplaceUniqueEntries; } break; - - case UPH_IS_DIRECTION_TO_SIMPLIFIED : - { rOpt.bROIsDirectionToSimplified = pROStates[i]; - if( ! (rVal >>= rOpt.bIsDirectionToSimplified) ) - { - //default is locale dependent: - if( rOpt.nDefaultLanguage_CJK == LANGUAGE_CHINESE_HONGKONG - || rOpt.nDefaultLanguage_CJK == LANGUAGE_CHINESE_MACAU - || rOpt.nDefaultLanguage_CJK == LANGUAGE_CHINESE_TRADITIONAL ) - { - rOpt.bIsDirectionToSimplified = sal_False; - } - else - { - rOpt.bIsDirectionToSimplified = sal_True; - } - } - } break; - case UPH_IS_USE_CHARACTER_VARIANTS : - { rOpt.bROIsUseCharacterVariants = pROStates[i]; rVal >>= rOpt.bIsUseCharacterVariants; } break; - case UPH_IS_TRANSLATE_COMMON_TERMS : - { rOpt.bROIsTranslateCommonTerms = pROStates[i]; rVal >>= rOpt.bIsTranslateCommonTerms; } break; - case UPH_IS_REVERSE_MAPPING : - { rOpt.bROIsReverseMapping = pROStates[i]; rVal >>= rOpt.bIsReverseMapping; } break; - - case UPH_DATA_FILES_CHANGED_CHECK_VALUE : - { rOpt.bRODataFilesChangedCheckValue = pROStates[i]; rVal >>= rOpt.nDataFilesChangedCheckValue; } break; - - case UPH_IS_GRAMMAR_AUTO: - { rOpt.bROIsGrammarAuto = pROStates[i]; rVal >>= rOpt.bIsGrammarAuto; } - break; - case UPH_IS_GRAMMAR_INTERACTIVE: - { rOpt.bROIsGrammarInteractive = pROStates[i]; rVal >>= rOpt.bIsGrammarInteractive; } - break; - - default: - DBG_ASSERT( 0, "unexpected case" ); - } - } - - bRes = sal_True; - } - DBG_ASSERT( bRes, "LoadOptions failed" ); - - return bRes; -} - - -sal_Bool SvtLinguConfigItem::SaveOptions( const uno::Sequence< OUString > &rProperyNames ) -{ - if (!IsModified()) - return sal_True; - - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - sal_Bool bRet = sal_False; - const uno::Type &rBOOL = ::getBooleanCppuType(); - const uno::Type &rINT16 = ::getCppuType( (sal_Int16 *) NULL ); - const uno::Type &rINT32 = ::getCppuType( (sal_Int32 *) NULL ); - - sal_Int32 nProps = rProperyNames.getLength(); - uno::Sequence< uno::Any > aValues( nProps ); - uno::Any *pValue = aValues.getArray(); - - if (nProps && aValues.getLength() == nProps) - { - const SvtLinguOptions &rOpt = aOpt; - - OUString aTmp( lcl_LanguageToCfgLocaleStr( rOpt.nDefaultLanguage ) ); - *pValue++ = uno::makeAny( aTmp ); // 0 - *pValue++ = uno::makeAny( rOpt.aActiveDics ); // 1 - pValue++->setValue( &rOpt.bIsUseDictionaryList, rBOOL ); // 2 - pValue++->setValue( &rOpt.bIsIgnoreControlCharacters, rBOOL ); // 3 - aTmp = lcl_LanguageToCfgLocaleStr( rOpt.nDefaultLanguage_CJK ); - *pValue++ = uno::makeAny( aTmp ); // 5 - aTmp = lcl_LanguageToCfgLocaleStr( rOpt.nDefaultLanguage_CTL ); - *pValue++ = uno::makeAny( aTmp ); // 6 - - pValue++->setValue( &rOpt.bIsSpellUpperCase, rBOOL ); // 7 - pValue++->setValue( &rOpt.bIsSpellWithDigits, rBOOL ); // 8 - pValue++->setValue( &rOpt.bIsSpellCapitalization, rBOOL ); // 9 - pValue++->setValue( &rOpt.bIsSpellAuto, rBOOL ); // 10 - pValue++->setValue( &rOpt.bIsSpellSpecial, rBOOL ); // 11 - pValue++->setValue( &rOpt.bIsSpellReverse, rBOOL ); // 14 - - pValue++->setValue( &rOpt.nHyphMinLeading, rINT16 ); // 15 - pValue++->setValue( &rOpt.nHyphMinTrailing, rINT16 ); // 16 - pValue++->setValue( &rOpt.nHyphMinWordLength, rINT16 ); // 17 - pValue++->setValue( &rOpt.bIsHyphSpecial, rBOOL ); // 18 - pValue++->setValue( &rOpt.bIsHyphAuto, rBOOL ); // 19 - - *pValue++ = uno::makeAny( rOpt.aActiveConvDics ); // 20 - - pValue++->setValue( &rOpt.bIsIgnorePostPositionalWord, rBOOL ); // 21 - pValue++->setValue( &rOpt.bIsAutoCloseDialog, rBOOL ); // 22 - pValue++->setValue( &rOpt.bIsShowEntriesRecentlyUsedFirst, rBOOL ); // 23 - pValue++->setValue( &rOpt.bIsAutoReplaceUniqueEntries, rBOOL ); // 24 - - pValue++->setValue( &rOpt.bIsDirectionToSimplified, rBOOL ); // 25 - pValue++->setValue( &rOpt.bIsUseCharacterVariants, rBOOL ); // 26 - pValue++->setValue( &rOpt.bIsTranslateCommonTerms, rBOOL ); // 27 - pValue++->setValue( &rOpt.bIsReverseMapping, rBOOL ); // 28 - - pValue++->setValue( &rOpt.nDataFilesChangedCheckValue, rINT32 ); // 29 - pValue++->setValue( &rOpt.bIsGrammarAuto, rBOOL ); // 30 - pValue++->setValue( &rOpt.bIsGrammarInteractive, rBOOL ); // 31 - - bRet |= PutProperties( rProperyNames, aValues ); - } - - if (bRet) - ClearModified(); - - return bRet; -} - -sal_Bool SvtLinguConfigItem::IsReadOnly( const rtl::OUString &rPropertyName ) const -{ - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - sal_Bool bReadOnly = sal_False; - sal_Int32 nHdl; - if (GetHdlByName( nHdl, rPropertyName )) - bReadOnly = IsReadOnly( nHdl ); - return bReadOnly; -} - -sal_Bool SvtLinguConfigItem::IsReadOnly( sal_Int32 nPropertyHandle ) const -{ - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - sal_Bool bReadOnly = sal_False; - - const SvtLinguOptions &rOpt = const_cast< SvtLinguConfigItem * >(this)->aOpt; - switch(nPropertyHandle) - { - case UPH_IS_USE_DICTIONARY_LIST : bReadOnly = rOpt.bROIsUseDictionaryList ; break; - case UPH_IS_IGNORE_CONTROL_CHARACTERS : bReadOnly = rOpt.bROIsIgnoreControlCharacters; break; - case UPH_IS_HYPH_AUTO : bReadOnly = rOpt.bROIsHyphAuto ; break; - case UPH_IS_HYPH_SPECIAL : bReadOnly = rOpt.bROIsHyphSpecial ; break; - case UPH_IS_SPELL_AUTO : bReadOnly = rOpt.bROIsSpellAuto ; break; - case UPH_IS_SPELL_SPECIAL : bReadOnly = rOpt.bROIsSpellSpecial ; break; - case UPH_IS_WRAP_REVERSE : bReadOnly = rOpt.bROIsSpellReverse ; break; - case UPH_DEFAULT_LANGUAGE : bReadOnly = rOpt.bRODefaultLanguage ; break; - case UPH_IS_SPELL_CAPITALIZATION : bReadOnly = rOpt.bROIsSpellCapitalization ; break; - case UPH_IS_SPELL_WITH_DIGITS : bReadOnly = rOpt.bROIsSpellWithDigits ; break; - case UPH_IS_SPELL_UPPER_CASE : bReadOnly = rOpt.bROIsSpellUpperCase ; break; - case UPH_HYPH_MIN_LEADING : bReadOnly = rOpt.bROHyphMinLeading ; break; - case UPH_HYPH_MIN_TRAILING : bReadOnly = rOpt.bROHyphMinTrailing ; break; - case UPH_HYPH_MIN_WORD_LENGTH : bReadOnly = rOpt.bROHyphMinWordLength ; break; - case UPH_ACTIVE_DICTIONARIES : bReadOnly = rOpt.bROActiveDics ; break; - case UPH_ACTIVE_CONVERSION_DICTIONARIES : bReadOnly = rOpt.bROActiveConvDics ; break; - case UPH_DEFAULT_LOCALE : bReadOnly = rOpt.bRODefaultLanguage ; break; - case UPH_DEFAULT_LOCALE_CJK : bReadOnly = rOpt.bRODefaultLanguage_CJK ; break; - case UPH_DEFAULT_LOCALE_CTL : bReadOnly = rOpt.bRODefaultLanguage_CTL ; break; - case UPH_IS_IGNORE_POST_POSITIONAL_WORD : bReadOnly = rOpt.bROIsIgnorePostPositionalWord; break; - case UPH_IS_AUTO_CLOSE_DIALOG : bReadOnly = rOpt.bROIsAutoCloseDialog; break; - case UPH_IS_SHOW_ENTRIES_RECENTLY_USED_FIRST : bReadOnly = rOpt.bROIsShowEntriesRecentlyUsedFirst; break; - case UPH_IS_AUTO_REPLACE_UNIQUE_ENTRIES : bReadOnly = rOpt.bROIsAutoReplaceUniqueEntries; break; - case UPH_IS_DIRECTION_TO_SIMPLIFIED : bReadOnly = rOpt.bROIsDirectionToSimplified; break; - case UPH_IS_USE_CHARACTER_VARIANTS : bReadOnly = rOpt.bROIsUseCharacterVariants; break; - case UPH_IS_TRANSLATE_COMMON_TERMS : bReadOnly = rOpt.bROIsTranslateCommonTerms; break; - case UPH_IS_REVERSE_MAPPING : bReadOnly = rOpt.bROIsReverseMapping; break; - case UPH_DATA_FILES_CHANGED_CHECK_VALUE : bReadOnly = rOpt.bRODataFilesChangedCheckValue; break; - case UPH_IS_GRAMMAR_AUTO: bReadOnly = rOpt.bROIsGrammarAuto; break; - case UPH_IS_GRAMMAR_INTERACTIVE: bReadOnly = rOpt.bROIsGrammarInteractive; break; - default : - DBG_ASSERT( 0, "unexpected property handle" ); - } - return bReadOnly; -} - -////////////////////////////////////////////////////////////////////// - -static SvtLinguConfigItem *pCfgItem = 0; -static sal_Int32 nCfgItemRefCount = 0; - -static const rtl::OUString aG_SupportedDictionaryFormats(RTL_CONSTASCII_USTRINGPARAM("SupportedDictionaryFormats")); -static const rtl::OUString aG_Dictionaries(RTL_CONSTASCII_USTRINGPARAM("Dictionaries")); -static const rtl::OUString aG_Locations(RTL_CONSTASCII_USTRINGPARAM("Locations")); -static const rtl::OUString aG_Format(RTL_CONSTASCII_USTRINGPARAM("Format")); -static const rtl::OUString aG_Locales(RTL_CONSTASCII_USTRINGPARAM("Locales")); -static const rtl::OUString aG_DisabledDictionaries(RTL_CONSTASCII_USTRINGPARAM("DisabledDictionaries")); -static const rtl::OUString aG_LastActiveDictionaries(RTL_CONSTASCII_USTRINGPARAM("LastActiveDictionaries")); - -SvtLinguConfig::SvtLinguConfig() -{ - // Global access, must be guarded (multithreading) - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - ++nCfgItemRefCount; -} - - -SvtLinguConfig::~SvtLinguConfig() -{ - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - - if (pCfgItem && pCfgItem->IsModified()) - pCfgItem->Commit(); - - if (--nCfgItemRefCount <= 0) - { - if (pCfgItem) - delete pCfgItem; - pCfgItem = 0; - } -} - - -SvtLinguConfigItem & SvtLinguConfig::GetConfigItem() -{ - // Global access, must be guarded (multithreading) - osl::MutexGuard aGuard(theSvtLinguConfigItemMutex::get()); - if (!pCfgItem) - { - pCfgItem = new SvtLinguConfigItem; - ItemHolder1::holdConfigItem(E_LINGUCFG); - } - return *pCfgItem; -} - - -uno::Sequence< OUString > SvtLinguConfig::GetNodeNames( const OUString &rNode ) -{ - return GetConfigItem().GetNodeNames( rNode ); -} - - -uno::Sequence< uno::Any > SvtLinguConfig::GetProperties( const uno::Sequence< OUString > &rNames ) -{ - return GetConfigItem().GetProperties(rNames); -} - - -sal_Bool SvtLinguConfig::ReplaceSetProperties( - const OUString &rNode, uno::Sequence< beans::PropertyValue > rValues ) -{ - return GetConfigItem().ReplaceSetProperties( rNode, rValues ); -} - - -uno::Any SvtLinguConfig::GetProperty( const OUString &rPropertyName ) const -{ - return GetConfigItem().GetProperty( rPropertyName ); -} - - -uno::Any SvtLinguConfig::GetProperty( sal_Int32 nPropertyHandle ) const -{ - return GetConfigItem().GetProperty( nPropertyHandle ); -} - - -sal_Bool SvtLinguConfig::SetProperty( const OUString &rPropertyName, const uno::Any &rValue ) -{ - return GetConfigItem().SetProperty( rPropertyName, rValue ); -} - - -sal_Bool SvtLinguConfig::SetProperty( sal_Int32 nPropertyHandle, const uno::Any &rValue ) -{ - return GetConfigItem().SetProperty( nPropertyHandle, rValue ); -} - - -sal_Bool SvtLinguConfig::GetOptions( SvtLinguOptions &rOptions ) const -{ - return GetConfigItem().GetOptions( rOptions ); -} - - -sal_Bool SvtLinguConfig::SetOptions( const SvtLinguOptions &rOptions ) -{ - return GetConfigItem().SetOptions( rOptions ); -} - - -sal_Bool SvtLinguConfig::IsReadOnly( const rtl::OUString &rPropertyName ) const -{ - return GetConfigItem().IsReadOnly( rPropertyName ); -} - -sal_Bool SvtLinguConfig::IsReadOnly( sal_Int32 nPropertyHandle ) const -{ - return GetConfigItem().IsReadOnly( nPropertyHandle ); -} - -sal_Bool SvtLinguConfig::GetElementNamesFor( - const rtl::OUString &rNodeName, - uno::Sequence< rtl::OUString > &rElementNames ) const -{ - bool bSuccess = false; - try - { - uno::Reference< container::XNameAccess > xNA( GetMainUpdateAccess(), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ServiceManager"))), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( rNodeName ), uno::UNO_QUERY_THROW ); - rElementNames = xNA->getElementNames(); - bSuccess = true; - } - catch (uno::Exception &) - { - } - return bSuccess; -} - -sal_Bool SvtLinguConfig::GetSupportedDictionaryFormatsFor( - const rtl::OUString &rSetName, - const rtl::OUString &rSetEntry, - uno::Sequence< rtl::OUString > &rFormatList ) const -{ - if (rSetName.getLength() == 0 || rSetEntry.getLength() == 0) - return sal_False; - bool bSuccess = false; - try - { - uno::Reference< container::XNameAccess > xNA( GetMainUpdateAccess(), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ServiceManager"))), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( rSetName ), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( rSetEntry ), uno::UNO_QUERY_THROW ); - if (xNA->getByName( aG_SupportedDictionaryFormats ) >>= rFormatList) - bSuccess = true; - DBG_ASSERT( rFormatList.getLength(), "supported dictionary format list is empty" ); - } - catch (uno::Exception &) - { - } - return bSuccess; -} - -static uno::Reference< util::XMacroExpander > lcl_GetMacroExpander() -{ - static uno::WeakReference< util::XMacroExpander > aG_xMacroExpander; - - uno::Reference< util::XMacroExpander > xMacroExpander( aG_xMacroExpander ); - if ( !xMacroExpander.is() ) - { - if ( !xMacroExpander.is() ) - { - uno::Reference< uno::XComponentContext > xContext; - uno::Reference< beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), uno::UNO_QUERY ); - xProps->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext"))) >>= xContext; - if ( xContext.is() ) - { - aG_xMacroExpander = uno::Reference< com::sun::star::util::XMacroExpander >( xContext->getValueByName( - OUString(RTL_CONSTASCII_USTRINGPARAM("/singletons/com.sun.star.util.theMacroExpander"))), - uno::UNO_QUERY ); - xMacroExpander = aG_xMacroExpander; - } - } - } - - return xMacroExpander; -} - - -static bool lcl_GetFileUrlFromOrigin( - OUString /*out*/ &rFileUrl, - const OUString &rOrigin, - uno::Reference< util::XMacroExpander > &rxMacroExpander ) -{ - bool bSuccess = false; - if (rOrigin.getLength() > 0 && rxMacroExpander.is()) - { - rtl::OUString aURL( rOrigin ); - if (( aURL.compareToAscii( RTL_CONSTASCII_STRINGPARAM( EXPAND_PROTOCOL )) == 0 ) && - rxMacroExpander.is() ) - { - // cut protocol - OUString aMacro( aURL.copy( sizeof ( EXPAND_PROTOCOL ) -1 ) ); - // decode uric class chars - aMacro = Uri::decode( aMacro, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 ); - // expand macro string - aURL = rxMacroExpander->expandMacros( aMacro ); - - bool bIsFileUrl = aURL.compareToAscii( RTL_CONSTASCII_STRINGPARAM( FILE_PROTOCOL )) == 0; - if (bIsFileUrl) - { - rFileUrl = aURL; - bSuccess = true; - } - else - { - DBG_ASSERT( bIsFileUrl, "not a file URL"); - } - } - else - { - DBG_ASSERT( 0, "failed to get file URL" ); - } - } - return bSuccess; -} - - -sal_Bool SvtLinguConfig::GetDictionaryEntry( - const rtl::OUString &rNodeName, - SvtLinguConfigDictionaryEntry &rDicEntry ) const -{ - if (rNodeName.getLength() == 0) - return sal_False; - bool bSuccess = false; - try - { - uno::Reference< container::XNameAccess > xNA( GetMainUpdateAccess(), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ServiceManager"))), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( aG_Dictionaries ), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( rNodeName ), uno::UNO_QUERY_THROW ); - - // read group data... - uno::Sequence< rtl::OUString > aLocations; - rtl::OUString aFormatName; - uno::Sequence< rtl::OUString > aLocaleNames; - bSuccess = (xNA->getByName( aG_Locations ) >>= aLocations) && - (xNA->getByName( aG_Format ) >>= aFormatName) && - (xNA->getByName( aG_Locales ) >>= aLocaleNames); - DBG_ASSERT( aLocations.getLength(), "Dictionary locations not set" ); - DBG_ASSERT( aFormatName.getLength(), "Dictionary format name not set" ); - DBG_ASSERT( aLocaleNames.getLength(), "No locales set for the dictionary" ); - - // if sucessful continue - if (bSuccess) - { - // get file URL's for the locations - uno::Reference< util::XMacroExpander > xMacroExpander( lcl_GetMacroExpander() ); - for (sal_Int32 i = 0; i < aLocations.getLength(); ++i) - { - rtl::OUString &rLocation = aLocations[i]; - if (!lcl_GetFileUrlFromOrigin( rLocation, rLocation, xMacroExpander )) - bSuccess = false; - } - - // if everything was fine return the result - if (bSuccess) - { - rDicEntry.aLocations = aLocations; - rDicEntry.aFormatName = aFormatName; - rDicEntry.aLocaleNames = aLocaleNames; - } - } - } - catch (uno::Exception &) - { - } - return bSuccess; -} - -uno::Sequence< rtl::OUString > SvtLinguConfig::GetDisabledDictionaries() const -{ - uno::Sequence< rtl::OUString > aResult; - try - { - uno::Reference< container::XNameAccess > xNA( GetMainUpdateAccess(), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ServiceManager"))), uno::UNO_QUERY_THROW ); - xNA->getByName( aG_DisabledDictionaries ) >>= aResult; - } - catch (uno::Exception &) - { - } - return aResult; -} - -std::vector< SvtLinguConfigDictionaryEntry > SvtLinguConfig::GetActiveDictionariesByFormat( - const rtl::OUString &rFormatName ) -{ - std::vector< SvtLinguConfigDictionaryEntry > aRes; - if (rFormatName.getLength() == 0) - return aRes; - - try - { - uno::Sequence< rtl::OUString > aElementNames; - GetElementNamesFor( aG_Dictionaries, aElementNames ); - sal_Int32 nLen = aElementNames.getLength(); - const rtl::OUString *pElementNames = aElementNames.getConstArray(); - - SvtLinguConfigDictionaryEntry aDicEntry; - for (sal_Int32 i = 0; i < nLen; ++i) - { - // does dictionary match the format we are looking for? - if (GetDictionaryEntry( pElementNames[i], aDicEntry ) && - aDicEntry.aFormatName == rFormatName) - { - // check if it is active or not - bool bDicIsActive = true; - const uno::Sequence< rtl::OUString > aDisabledDics( GetDisabledDictionaries() ); - for (sal_Int32 k = 0; bDicIsActive && k < aDisabledDics.getLength(); ++k) - { - if (aDisabledDics[k] == pElementNames[i]) - bDicIsActive = false; - } - - if (bDicIsActive) - { - DBG_ASSERT( aDicEntry.aFormatName.getLength(), - "FormatName not set" ); - DBG_ASSERT( aDicEntry.aLocations.getLength(), - "Locations not set" ); - DBG_ASSERT( aDicEntry.aLocaleNames.getLength(), - "Locales not set" ); - aRes.push_back( aDicEntry ); - } - } - } - } - catch (uno::Exception &) - { - } - - return aRes; -} - - -uno::Reference< util::XChangesBatch > SvtLinguConfig::GetMainUpdateAccess() const -{ - if (!m_xMainUpdateAccess.is()) - { - try - { - // get configuration provider - uno::Reference< lang::XMultiServiceFactory > xConfigurationProvider; - uno::Reference< lang::XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory(); - if (xMgr.is()) - { - xConfigurationProvider = uno::Reference< lang::XMultiServiceFactory > ( - xMgr->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.configuration.ConfigurationProvider"))), - uno::UNO_QUERY_THROW ) ; - } - - // get configuration update access - beans::PropertyValue aValue; - aValue.Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")); - aValue.Value = uno::makeAny(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Linguistic"))); - uno::Sequence< uno::Any > aProps(1); - aProps[0] <<= aValue; - m_xMainUpdateAccess = uno::Reference< util::XChangesBatch >( - xConfigurationProvider->createInstanceWithArguments( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationUpdateAccess")), aProps), - uno::UNO_QUERY_THROW ); - } - catch (uno::Exception &) - { - } - } - - return m_xMainUpdateAccess; -} - - -rtl::OUString SvtLinguConfig::GetVendorImageUrl_Impl( - const rtl::OUString &rServiceImplName, - const rtl::OUString &rImageName ) const -{ - rtl::OUString aRes; - try - { - uno::Reference< container::XNameAccess > xImagesNA( GetMainUpdateAccess(), uno::UNO_QUERY_THROW ); - xImagesNA.set( xImagesNA->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Images"))), uno::UNO_QUERY_THROW ); - - uno::Reference< container::XNameAccess > xNA( xImagesNA->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ServiceNameEntries"))), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( rServiceImplName ), uno::UNO_QUERY_THROW ); - uno::Any aAny(xNA->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VendorImagesNode")))); - rtl::OUString aVendorImagesNode; - if (aAny >>= aVendorImagesNode) - { - xNA = xImagesNA; - xNA.set( xNA->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VendorImages"))), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( aVendorImagesNode ), uno::UNO_QUERY_THROW ); - aAny = xNA->getByName( rImageName ); - rtl::OUString aTmp; - if (aAny >>= aTmp) - { - uno::Reference< util::XMacroExpander > xMacroExpander( lcl_GetMacroExpander() ); - if (lcl_GetFileUrlFromOrigin( aTmp, aTmp, xMacroExpander )) - aRes = aTmp; - } - } - } - catch (uno::Exception &) - { - DBG_ASSERT( 0, "exception caught. GetVendorImageUrl_Impl failed" ); - } - return aRes; -} - - -rtl::OUString SvtLinguConfig::GetSpellAndGrammarDialogImage( - const rtl::OUString &rServiceImplName -) const -{ - rtl::OUString aRes; - if (rServiceImplName.getLength() > 0) - { - rtl::OUString aImageName( A2OU( "SpellAndGrammarDialogImage" )); - rtl::OUString aPath( GetVendorImageUrl_Impl( rServiceImplName, aImageName ) ); - aRes = aPath; - } - return aRes; -} - - -rtl::OUString SvtLinguConfig::GetSpellAndGrammarContextSuggestionImage( - const rtl::OUString &rServiceImplName -) const -{ - rtl::OUString aRes; - if (rServiceImplName.getLength() > 0) - { - rtl::OUString aImageName( A2OU( "SpellAndGrammarContextMenuSuggestionImage" )); - rtl::OUString aPath( GetVendorImageUrl_Impl( rServiceImplName, aImageName ) ); - aRes = aPath; - } - return aRes; -} - - -rtl::OUString SvtLinguConfig::GetSpellAndGrammarContextDictionaryImage( - const rtl::OUString &rServiceImplName -) const -{ - rtl::OUString aRes; - if (rServiceImplName.getLength() > 0) - { - rtl::OUString aImageName( A2OU( "SpellAndGrammarContextMenuDictionaryImage" )); - rtl::OUString aPath( GetVendorImageUrl_Impl( rServiceImplName, aImageName ) ); - aRes = aPath; - } - return aRes; -} - - -::rtl::OUString SvtLinguConfig::GetThesaurusDialogImage( - const ::rtl::OUString &rServiceImplName -) const -{ - rtl::OUString aRes; - if (rServiceImplName.getLength() > 0) - { - rtl::OUString aImageName( A2OU( "ThesaurusDialogImage" )); - rtl::OUString aPath( GetVendorImageUrl_Impl( rServiceImplName, aImageName ) ); - aRes = aPath; - } - return aRes; -} - - -::rtl::OUString SvtLinguConfig::GetSynonymsContextImage( - const ::rtl::OUString &rServiceImplName -) const -{ - rtl::OUString aRes; - if (rServiceImplName.getLength() > 0) - { - rtl::OUString aImageName( A2OU( "SynonymsContextMenuImage" )); - rtl::OUString aPath( GetVendorImageUrl_Impl( rServiceImplName, aImageName ) ); - aRes = aPath; - } - return aRes; -} - - -bool SvtLinguConfig::HasVendorImages( const char *pImageName ) const -{ - bool bRes = false; - if (pImageName) - { - try - { - uno::Reference< container::XNameAccess > xNA( GetMainUpdateAccess(), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Images")) ), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VendorImages")) ), uno::UNO_QUERY_THROW ); - - uno::Sequence< rtl::OUString > aElementNames( xNA->getElementNames() ); - sal_Int32 nVendors = aElementNames.getLength(); - const rtl::OUString *pVendor = aElementNames.getConstArray(); - for (sal_Int32 i = 0; i < nVendors; ++i) - { - uno::Reference< container::XNameAccess > xNA2( xNA->getByName( pVendor[i] ), uno::UNO_QUERY_THROW ); - uno::Sequence< rtl::OUString > aPropNames( xNA2->getElementNames() ); - sal_Int32 nProps = aPropNames.getLength(); - const rtl::OUString *pPropNames = aPropNames.getConstArray(); - for (sal_Int32 k = 0; k < nProps; ++k) - { - // for a quicker check we ignore the HC image names here - const OUString &rName = pPropNames[k]; - if (rName.equalsAscii( pImageName )) - { - bRes = true; - break; - } - } - } - } - catch (uno::Exception &) - { - DBG_ASSERT( 0, "exception caught. HasVendorImages failed" ); - } - } - return bRes; -} - - -bool SvtLinguConfig::HasGrammarChecker() const -{ - bool bRes = false; - - try - { - uno::Reference< container::XNameAccess > xNA( GetMainUpdateAccess(), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ServiceManager")) ), uno::UNO_QUERY_THROW ); - xNA.set( xNA->getByName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GrammarCheckerList")) ), uno::UNO_QUERY_THROW ); - - uno::Sequence< rtl::OUString > aElementNames( xNA->getElementNames() ); - bRes = aElementNames.getLength() > 0; - } - catch (uno::Exception &) - { - } - - return bRes; -} - -////////////////////////////////////////////////////////////////////// - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/localisationoptions.cxx b/unotools/source/config/localisationoptions.cxx deleted file mode 100644 index 3afc667df5..0000000000 --- a/unotools/source/config/localisationoptions.cxx +++ /dev/null @@ -1,439 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/localisationoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <rtl/logfile.hxx> -#include "itemholder1.hxx" - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_LOCALISATION OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/View/Localisation")) -#define DEFAULT_AUTOMNEMONIC sal_False -#define DEFAULT_DIALOGSCALE 0 - -#define PROPERTYNAME_AUTOMNEMONIC OUString(RTL_CONSTASCII_USTRINGPARAM("AutoMnemonic" )) -#define PROPERTYNAME_DIALOGSCALE OUString(RTL_CONSTASCII_USTRINGPARAM("DialogScale" )) - -#define PROPERTYHANDLE_AUTOMNEMONIC 0 -#define PROPERTYHANDLE_DIALOGSCALE 1 - -#define PROPERTYCOUNT 2 - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -class SvtLocalisationOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtLocalisationOptions_Impl(); - ~SvtLocalisationOptions_Impl(); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @seealso baseclass ConfigItem - - @param "seqPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& seqPropertyNames ); - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short access method to get internal values - @descr These method give us a chance to regulate acces to ouer internal values. - It's not used in the moment - but it's possible for the feature! - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - sal_Bool IsAutoMnemonic ( ) const ; - void SetAutoMnemonic ( sal_Bool bState ) ; - sal_Int32 GetDialogScale ( ) const ; - void SetDialogScale ( sal_Int32 nScale ) ; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return list of key names of ouer configuration management which represent oue module tree - @descr These methods return a static const list of key names. We need it to get needed values from our - configuration management. - - @seealso - - - @param - - @return A list of needed configuration keys is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - static Sequence< OUString > GetPropertyNames(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - sal_Bool m_bAutoMnemonic ; - sal_Int32 m_nDialogScale ; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtLocalisationOptions_Impl::SvtLocalisationOptions_Impl() - // Init baseclasses first - : ConfigItem ( ROOTNODE_LOCALISATION ) - // Init member then. - , m_bAutoMnemonic ( DEFAULT_AUTOMNEMONIC ) - , m_nDialogScale ( DEFAULT_DIALOGSCALE ) -{ - // Use our static list of configuration keys to get his values. - Sequence< OUString > seqNames = GetPropertyNames ( ); - Sequence< Any > seqValues = GetProperties ( seqNames ); - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtLocalisationOptions_Impl::SvtLocalisationOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Copy values from list in right order to our internal member. - sal_Int32 nPropertyCount = seqValues.getLength(); - for( sal_Int32 nProperty=0; nProperty<nPropertyCount; ++nProperty ) - { - if (!seqValues[nProperty].hasValue()) - continue; - switch( nProperty ) - { - case PROPERTYHANDLE_AUTOMNEMONIC : { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtLocalisationOptions_Impl::SvtLocalisationOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Localisation\\AutoMnemonic\"?" ); - seqValues[nProperty] >>= m_bAutoMnemonic; - } - break; - - case PROPERTYHANDLE_DIALOGSCALE : { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtLocalisationOptions_Impl::SvtLocalisationOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Localisation\\DialogScale\"?" ); - seqValues[nProperty] >>= m_nDialogScale; - } - break; - } - } - - // Enable notification mechanism of ouer baseclass. - // We need it to get information about changes outside these class on ouer used configuration keys! - EnableNotification( seqNames ); -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtLocalisationOptions_Impl::~SvtLocalisationOptions_Impl() -{ - // We must save our current values .. if user forget it! - if( IsModified() == sal_True ) - { - Commit(); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtLocalisationOptions_Impl::Notify( const Sequence< OUString >& seqPropertyNames ) -{ - // Use given list of updated properties to get his values from configuration directly! - Sequence< Any > seqValues = GetProperties( seqPropertyNames ); - // Safe impossible cases. - // We need values from ALL notified configuration keys. - DBG_ASSERT( !(seqPropertyNames.getLength()!=seqValues.getLength()), "SvtLocalisationOptions_Impl::Notify()\nI miss some values of configuration keys!\n" ); - // Step over list of property names and get right value from coreesponding value list to set it on internal members! - sal_Int32 nCount = seqPropertyNames.getLength(); - for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty ) - { - if( seqPropertyNames[nProperty] == PROPERTYNAME_AUTOMNEMONIC ) - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtLocalisationOptions_Impl::SvtLocalisationOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Localisation\\AutoMnemonic\"?" ); - seqValues[nProperty] >>= m_bAutoMnemonic; - } - else - if( seqPropertyNames[nProperty] == PROPERTYNAME_DIALOGSCALE ) - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtLocalisationOptions_Impl::SvtLocalisationOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Localisation\\DialogScale\"?" ); - seqValues[nProperty] >>= m_nDialogScale; - } - #if OSL_DEBUG_LEVEL > 1 - else DBG_ASSERT( sal_False, "SvtLocalisationOptions_Impl::Notify()\nUnkown property detected ... I can't handle these!\n" ); - #endif - } - - NotifyListeners(0); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtLocalisationOptions_Impl::Commit() -{ - // Get names of supported properties, create a list for values and copy current values to it. - Sequence< OUString > seqNames = GetPropertyNames (); - sal_Int32 nCount = seqNames.getLength(); - Sequence< Any > seqValues ( nCount ); - for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty ) - { - switch( nProperty ) - { - case PROPERTYHANDLE_AUTOMNEMONIC : { - seqValues[nProperty] <<= m_bAutoMnemonic; - } - break; - - case PROPERTYHANDLE_DIALOGSCALE : { - seqValues[nProperty] <<= m_nDialogScale; - } - break; - } - } - // Set properties in configuration. - PutProperties( seqNames, seqValues ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtLocalisationOptions_Impl::IsAutoMnemonic() const -{ - return m_bAutoMnemonic; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtLocalisationOptions_Impl::SetAutoMnemonic( sal_Bool bState ) -{ - m_bAutoMnemonic = bState; - SetModified(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtLocalisationOptions_Impl::GetDialogScale() const -{ - return m_nDialogScale; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtLocalisationOptions_Impl::SetDialogScale( sal_Int32 nScale ) -{ - m_nDialogScale = nScale; - SetModified(); -} - -Sequence< OUString > SvtLocalisationOptions_Impl::GetPropertyNames() -{ - // Build static list of configuration key names. - const OUString aProperties[] = - { - PROPERTYNAME_AUTOMNEMONIC , - PROPERTYNAME_DIALOGSCALE , - }; - // Initialize return sequence with these list ... - Sequence< OUString > seqPropertyNames(aProperties, PROPERTYCOUNT); - // ... and return it. - return seqPropertyNames; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtLocalisationOptions_Impl* SvtLocalisationOptions::m_pDataContainer = NULL ; -sal_Int32 SvtLocalisationOptions::m_nRefCount = 0 ; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtLocalisationOptions::SvtLocalisationOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already exist! - if( m_pDataContainer == NULL ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtLocalisationOptions_Impl::ctor()"); - m_pDataContainer = new SvtLocalisationOptions_Impl; - - ItemHolder1::holdConfigItem(E_LOCALISATIONOPTIONS); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtLocalisationOptions::~SvtLocalisationOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtLocalisationOptions::IsAutoMnemonic() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsAutoMnemonic(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtLocalisationOptions::SetAutoMnemonic( sal_Bool bState ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetAutoMnemonic( bState ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtLocalisationOptions::GetDialogScale() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetDialogScale(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtLocalisationOptions::SetDialogScale( sal_Int32 nScale ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetDialogScale( nScale ); -} - -namespace -{ - class theLocalisationOptionsMutex : public rtl::Static<osl::Mutex, theLocalisationOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtLocalisationOptions::GetOwnStaticMutex() -{ - return theLocalisationOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/misccfg.cxx b/unotools/source/config/misccfg.cxx deleted file mode 100644 index 4e345e9fb9..0000000000 --- a/unotools/source/config/misccfg.cxx +++ /dev/null @@ -1,277 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/misccfg.hxx> -#include "rtl/instance.hxx" -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <osl/mutex.hxx> -#include <osl/mutex.hxx> -#include <rtl/logfile.hxx> -#include "itemholder1.hxx" - -#define DEFAULT_TAB 2000 - -#define DEF_INCH 2540L -#define DEF_RELTWIP 1440L - -using namespace com::sun::star::uno; - -using ::rtl::OUString; - -namespace utl -{ - -static SfxMiscCfg* pOptions = NULL; -static sal_Int32 nRefCount = 0; - -class SfxMiscCfg : public utl::ConfigItem -{ - sal_Bool bPaperSize; // printer warnings - sal_Bool bPaperOrientation; - sal_Bool bNotFound; - sal_Int32 nYear2000; // two digit year representation - - const com::sun::star::uno::Sequence<rtl::OUString> GetPropertyNames(); - void Load(); - -public: - SfxMiscCfg( ); - ~SfxMiscCfg( ); - - virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames); - virtual void Commit(); - - sal_Bool IsNotFoundWarning() const {return bNotFound;} - void SetNotFoundWarning( sal_Bool bSet); - - sal_Bool IsPaperSizeWarning() const {return bPaperSize;} - void SetPaperSizeWarning(sal_Bool bSet); - - sal_Bool IsPaperOrientationWarning() const {return bPaperOrientation;} - void SetPaperOrientationWarning( sal_Bool bSet); - - // 0 ... 99 - sal_Int32 GetYear2000() const { return nYear2000; } - void SetYear2000( sal_Int32 nSet ); - -}; - -SfxMiscCfg::SfxMiscCfg() : - ConfigItem(OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common")) ), - bPaperSize(sal_False), - bPaperOrientation (sal_False), - bNotFound (sal_False), - nYear2000( 1930 ) -{ - RTL_LOGFILE_CONTEXT(aLog, "svl SfxMiscCfg::SfxMiscCfg()"); - - Load(); -} - -SfxMiscCfg::~SfxMiscCfg() -{ -} - -void SfxMiscCfg::SetNotFoundWarning( sal_Bool bSet) -{ - if(bNotFound != bSet) - SetModified(); - bNotFound = bSet; -} - -void SfxMiscCfg::SetPaperSizeWarning( sal_Bool bSet) -{ - if(bPaperSize != bSet) - SetModified(); - bPaperSize = bSet; -} - -void SfxMiscCfg::SetPaperOrientationWarning( sal_Bool bSet) -{ - if(bPaperOrientation != bSet) - SetModified(); - bPaperOrientation = bSet; -} - -void SfxMiscCfg::SetYear2000( sal_Int32 nSet ) -{ - if(nYear2000 != nSet) - SetModified(); - nYear2000 = nSet; -} - -const Sequence<OUString> SfxMiscCfg::GetPropertyNames() -{ - const OUString pProperties[] = - { - OUString(RTL_CONSTASCII_USTRINGPARAM("Print/Warning/PaperSize")), - OUString(RTL_CONSTASCII_USTRINGPARAM("Print/Warning/PaperOrientation")), - OUString(RTL_CONSTASCII_USTRINGPARAM("Print/Warning/NotFound")), - OUString(RTL_CONSTASCII_USTRINGPARAM("DateFormat/TwoDigitYear")) - }; - const Sequence< OUString > seqPropertyNames( pProperties, 4 ); - return seqPropertyNames; -} - -void SfxMiscCfg::Load() -{ - const Sequence<OUString>& rNames = GetPropertyNames(); - Sequence<Any> aValues = GetProperties(rNames); - EnableNotification(rNames); - const Any* pValues = aValues.getConstArray(); - DBG_ASSERT(aValues.getLength() == rNames.getLength(), "GetProperties failed"); - if(aValues.getLength() == rNames.getLength()) - { - for(int nProp = 0; nProp < rNames.getLength(); nProp++) - { - if(pValues[nProp].hasValue()) - { - switch(nProp) - { - case 0: bPaperSize = *(sal_Bool*)pValues[nProp].getValue(); break; //"Print/Warning/PaperSize", - case 1: bPaperOrientation = *(sal_Bool*)pValues[nProp].getValue(); break; //"Print/Warning/PaperOrientation", - case 2: bNotFound = *(sal_Bool*)pValues[nProp].getValue() ; break; //"Print/Warning/NotFound", - case 3: pValues[nProp] >>= nYear2000;break; //"DateFormat/TwoDigitYear", - } - } - } - } -} - -void SfxMiscCfg::Notify( const com::sun::star::uno::Sequence<rtl::OUString>& ) -{ - Load(); -} - -void SfxMiscCfg::Commit() -{ - const Sequence<OUString>& rNames = GetPropertyNames(); - Sequence<Any> aValues(rNames.getLength()); - Any* pValues = aValues.getArray(); - - const Type& rType = ::getBooleanCppuType(); - for(int nProp = 0; nProp < rNames.getLength(); nProp++) - { - switch(nProp) - { - case 0: pValues[nProp].setValue(&bPaperSize, rType);break; //"Print/Warning/PaperSize", - case 1: pValues[nProp].setValue(&bPaperOrientation, rType);break; //"Print/Warning/PaperOrientation", - case 2: pValues[nProp].setValue(&bNotFound, rType);break; //"Print/Warning/NotFound", - case 3: pValues[nProp] <<= nYear2000;break; //"DateFormat/TwoDigitYear", - } - } - PutProperties(rNames, aValues); -} -// ----------------------------------------------------------------------- -namespace -{ - class LocalSingleton : public rtl::Static< osl::Mutex, LocalSingleton > - { - }; -} - -MiscCfg::MiscCfg( ) -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( LocalSingleton::get() ); - if ( !pOptions ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) SfxMiscCfg::ctor()"); - pOptions = new SfxMiscCfg; - - ItemHolder1::holdConfigItem(E_MISCCFG); - } - - ++nRefCount; - pImpl = pOptions; - pImpl->AddListener(this); -} - -MiscCfg::~MiscCfg( ) -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( LocalSingleton::get() ); - pImpl->RemoveListener(this); - if ( !--nRefCount ) - { - if ( pOptions->IsModified() ) - pOptions->Commit(); - DELETEZ( pOptions ); - } -} - -sal_Bool MiscCfg::IsNotFoundWarning() const -{ - return pImpl->IsNotFoundWarning(); -} - -void MiscCfg::SetNotFoundWarning( sal_Bool bSet) -{ - pImpl->SetNotFoundWarning( bSet ); -} - -sal_Bool MiscCfg::IsPaperSizeWarning() const -{ - return pImpl->IsPaperSizeWarning(); -} - -void MiscCfg::SetPaperSizeWarning(sal_Bool bSet) -{ - pImpl->SetPaperSizeWarning( bSet ); -} - -sal_Bool MiscCfg::IsPaperOrientationWarning() const -{ - return pImpl->IsPaperOrientationWarning(); -} - -void MiscCfg::SetPaperOrientationWarning( sal_Bool bSet) -{ - pImpl->SetPaperOrientationWarning( bSet ); -} - -sal_Int32 MiscCfg::GetYear2000() const -{ - return pImpl->GetYear2000(); -} - -void MiscCfg::SetYear2000( sal_Int32 nSet ) -{ - pImpl->SetYear2000( nSet ); -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/moduleoptions.cxx b/unotools/source/config/moduleoptions.cxx deleted file mode 100644 index d8032bcbfc..0000000000 --- a/unotools/source/config/moduleoptions.cxx +++ /dev/null @@ -1,1542 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/moduleoptions.hxx> -#include <comphelper/sequenceashashmap.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <unotools/processfactory.hxx> -#include <osl/diagnose.h> -#include <rtl/ustrbuf.hxx> - -#include <rtl/logfile.hxx> -#include <rtl/instance.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/document/XTypeDetection.hpp> -#include <com/sun/star/util/XStringSubstitution.hpp> - -#include "itemholder1.hxx" - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -#ifndef css -namespace css = ::com::sun::star; -#endif - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @descr These values are used to define neccessary keys from our configuration management to support - all functionality of these implementation. - It's a fast way to make changes if some keys change his name or location! - - Property handle are neccessary to specify right position in return list of configuration - for asked values. We ask it with a list of properties to get his values. The returned list - has the same order like our given name list! - e.g.: - NAMELIST[ PROPERTYHANDLE_xxx ] => VALUELIST[ PROPERTYHANDLE_xxx ] -*//*-*************************************************************************************************************/ -#define ROOTNODE_FACTORIES ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Setup/Office/Factories" )) -#define PATHSEPERATOR ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/" )) - -// Attention: The property "ooSetupFactoryEmptyDocumentURL" is read from configuration but not used! There is -// special code that uses hard coded strings to return them. -#define PROPERTYNAME_SHORTNAME ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupFactoryShortName" )) -#define PROPERTYNAME_TEMPLATEFILE ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupFactoryTemplateFile" )) -#define PROPERTYNAME_WINDOWATTRIBUTES ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupFactoryWindowAttributes")) -#define PROPERTYNAME_EMPTYDOCUMENTURL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupFactoryEmptyDocumentURL")) -#define PROPERTYNAME_DEFAULTFILTER ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupFactoryDefaultFilter" )) -#define PROPERTYNAME_ICON ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupFactoryIcon" )) - -#define PROPERTYHANDLE_SHORTNAME 0 -#define PROPERTYHANDLE_TEMPLATEFILE 1 -#define PROPERTYHANDLE_WINDOWATTRIBUTES 2 -#define PROPERTYHANDLE_EMPTYDOCUMENTURL 3 -#define PROPERTYHANDLE_DEFAULTFILTER 4 -#define PROPERTYHANDLE_ICON 5 - -#define PROPERTYCOUNT 6 - -#define FACTORYNAME_WRITER ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextDocument" )) -#define FACTORYNAME_WRITERWEB ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.WebDocument" )) -#define FACTORYNAME_WRITERGLOBAL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.GlobalDocument" )) -#define FACTORYNAME_CALC ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.SpreadsheetDocument" )) -#define FACTORYNAME_DRAW ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DrawingDocument" )) -#define FACTORYNAME_IMPRESS ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.PresentationDocument")) -#define FACTORYNAME_MATH ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.formula.FormulaProperties" )) -#define FACTORYNAME_CHART ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.chart2.ChartDocument" )) -#define FACTORYNAME_DATABASE ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.OfficeDatabaseDocument" )) -#define FACTORYNAME_STARTMODULE ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.StartModule" )) - -#define FACTORYCOUNT 10 - -/*-************************************************************************************************************//** - @descr This struct hold information about one factory. We declare a complete array which can hold infos - for all well known factories. Values of enum "EFactory" (see header!) are directly used as index! - So we can support a fast access on these informations. -*//*-*************************************************************************************************************/ -struct FactoryInfo -{ - public: - //--------------------------------------------------------------------------------------------------------- - // initialize empty struct - FactoryInfo() - { - free(); - // @@@ should be supplied from outside! - xSMgr = ::utl::getProcessServiceFactory(); - } - - //--------------------------------------------------------------------------------------------------------- - // easy way to reset struct member! - void free() - { - bInstalled = sal_False ; - sFactory = ::rtl::OUString() ; - sShortName = ::rtl::OUString() ; - sTemplateFile = ::rtl::OUString() ; - sWindowAttributes = ::rtl::OUString() ; - sEmptyDocumentURL = ::rtl::OUString() ; - sDefaultFilter = ::rtl::OUString() ; - nIcon = 0 ; - bChangedTemplateFile = sal_False ; - bChangedWindowAttributes = sal_False ; - bChangedEmptyDocumentURL = sal_False ; - bChangedDefaultFilter = sal_False ; - bChangedIcon = sal_False ; - bDefaultFilterReadonly = sal_False ; - } - - //--------------------------------------------------------------------------------------------------------- - // returns list of properties, which has changed only! - // We use given value of sNodeBase to build full qualified pathes ... - // Last sign of it must be "/". Beacuse we use it directly, without any additional things! - css::uno::Sequence< css::beans::PropertyValue > getChangedProperties( const ::rtl::OUString& sNodeBase ) - { - // a) reserve memory for max. count of changed properties - // b) add names and values of changed ones only and count it - // c) resize return list by using count - css::uno::Sequence< css::beans::PropertyValue > lProperties ( 4 ); - sal_Int8 nRealyChanged = 0 ; - - if( bChangedTemplateFile == sal_True ) - { - lProperties[nRealyChanged].Name = sNodeBase + PROPERTYNAME_TEMPLATEFILE; - - if ( sTemplateFile.getLength() > 0 ) - { - lProperties[nRealyChanged].Value - <<= getStringSubstitution() - ->reSubstituteVariables( sTemplateFile ); - } - else - { - lProperties[nRealyChanged].Value <<= sTemplateFile; - } - - ++nRealyChanged; - } - if( bChangedWindowAttributes == sal_True ) - { - lProperties[nRealyChanged].Name = sNodeBase + PROPERTYNAME_WINDOWATTRIBUTES; - lProperties[nRealyChanged].Value <<= sWindowAttributes; - ++nRealyChanged; - } - if( bChangedEmptyDocumentURL == sal_True ) - { - lProperties[nRealyChanged].Name = sNodeBase + PROPERTYNAME_EMPTYDOCUMENTURL; - lProperties[nRealyChanged].Value <<= sEmptyDocumentURL; - ++nRealyChanged; - } - if( bChangedDefaultFilter == sal_True ) - { - lProperties[nRealyChanged].Name = sNodeBase + PROPERTYNAME_DEFAULTFILTER; - lProperties[nRealyChanged].Value <<= sDefaultFilter; - ++nRealyChanged; - } - if( bChangedIcon == sal_True ) - { - lProperties[nRealyChanged].Name = sNodeBase + PROPERTYNAME_ICON; - lProperties[nRealyChanged].Value <<= nIcon; - ++nRealyChanged; - } - - // Don't forget to reset changed flags! Otherwise we save it again and again and ... - bChangedTemplateFile = sal_False ; - bChangedWindowAttributes = sal_False ; - bChangedEmptyDocumentURL = sal_False ; - bChangedDefaultFilter = sal_False ; - bChangedIcon = sal_False ; - - lProperties.realloc( nRealyChanged ); - return lProperties; - } - - //--------------------------------------------------------------------------------------------------------- - // We must support setting AND marking of changed values. - // That's why we can't make our member public. We must use get/set/init methods - // to control access on it! - sal_Bool getInstalled () const { return bInstalled; }; - ::rtl::OUString getFactory () const { return sFactory; }; - ::rtl::OUString getShortName () const { return sShortName; }; - ::rtl::OUString getTemplateFile () const { return sTemplateFile; }; - ::rtl::OUString getWindowAttributes () const { return sWindowAttributes; }; - ::rtl::OUString getDefaultFilter () const { return sDefaultFilter; }; - sal_Bool isDefaultFilterReadonly() const { return bDefaultFilterReadonly; } - sal_Int32 getIcon () const { return nIcon; }; - - //--------------------------------------------------------------------------------------------------------- - // If you call set-methods - we check for changes of valkues and mark it. - // But if you whish to set it without that ... you must initialize it! - void initInstalled ( sal_Bool bNewInstalled ) { bInstalled = bNewInstalled ; } - void initFactory ( const ::rtl::OUString& sNewFactory ) { sFactory = sNewFactory ; } - void initShortName ( const ::rtl::OUString& sNewShortName ) { sShortName = sNewShortName ; } - void initWindowAttributes ( const ::rtl::OUString& sNewWindowAttributes ) { sWindowAttributes = sNewWindowAttributes ; } - void initEmptyDocumentURL ( const ::rtl::OUString& sNewEmptyDocumentURL ) { sEmptyDocumentURL = sNewEmptyDocumentURL ; } - void initDefaultFilter ( const ::rtl::OUString& sNewDefaultFilter ) { sDefaultFilter = sNewDefaultFilter ; } - void setDefaultFilterReadonly( const sal_Bool bVal){bDefaultFilterReadonly = bVal;} - void initIcon ( sal_Int32 nNewIcon ) { nIcon = nNewIcon ; } - - //--------------------------------------------------------------------------------------------------------- - void initTemplateFile( const ::rtl::OUString& sNewTemplateFile ) - { - if ( sNewTemplateFile.getLength() > 0 ) - { - sTemplateFile - = getStringSubstitution() - ->substituteVariables( sNewTemplateFile, sal_False ); - } - else - { - sTemplateFile = sNewTemplateFile; - } - } - - //--------------------------------------------------------------------------------------------------------- - void setTemplateFile( const ::rtl::OUString& sNewTemplateFile ) - { - if( sTemplateFile != sNewTemplateFile ) - { - sTemplateFile = sNewTemplateFile; - bChangedTemplateFile = sal_True ; - } - }; - - //--------------------------------------------------------------------------------------------------------- - void setWindowAttributes( const ::rtl::OUString& sNewWindowAttributes ) - { - if( sWindowAttributes != sNewWindowAttributes ) - { - sWindowAttributes = sNewWindowAttributes; - bChangedWindowAttributes = sal_True ; - } - }; - - //--------------------------------------------------------------------------------------------------------- - void setDefaultFilter( const ::rtl::OUString& sNewDefaultFilter ) - { - if( sDefaultFilter != sNewDefaultFilter ) - { - sDefaultFilter = sNewDefaultFilter; - bChangedDefaultFilter = sal_True ; - } - }; - - private: - css::uno::Reference< css::util::XStringSubstitution > getStringSubstitution() - { - if ( !xSubstVars.is() ) - { - xSubstVars - = css::uno::Reference< css::util::XStringSubstitution >( - xSMgr->createInstance( - ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.util.PathSubstitution" ) ) ), - css::uno::UNO_QUERY ); - if ( !xSubstVars.is() ) - throw css::uno::RuntimeException( - ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "Cannot instanciate service " - "com.sun.star.util.PathSubstitution" ) ), - css::uno::Reference< css::uno::XInterface >() ); - } - return xSubstVars; - } - - sal_Bool bInstalled ; - ::rtl::OUString sFactory ; - ::rtl::OUString sShortName ; - ::rtl::OUString sTemplateFile ; - ::rtl::OUString sWindowAttributes ; - ::rtl::OUString sEmptyDocumentURL ; - ::rtl::OUString sDefaultFilter ; - sal_Int32 nIcon ; - - sal_Bool bChangedTemplateFile :1 ; - sal_Bool bChangedWindowAttributes :1 ; - sal_Bool bChangedEmptyDocumentURL :1 ; - sal_Bool bChangedDefaultFilter :1 ; - sal_Bool bChangedIcon :1 ; - sal_Bool bDefaultFilterReadonly :1 ; - - css::uno::Reference< css::lang::XMultiServiceFactory > xSMgr; - css::uno::Reference< css::util::XStringSubstitution > xSubstVars; -}; - -typedef FactoryInfo FactoryInfoList[FACTORYCOUNT]; - -/*-************************************************************************************************************//** - @short IMPL data container for wrapper class SvtModulOptions! - @descr These class is used as a static data container of class SvtModuleOptions. The hold it by using - a refcount and make it threadsafe by using an osl mutex. So we don't must do anything for that. - We can implement pure functionality to read/write configuration data only. - - @implements - - @base ConfigItem - - @devstatus ready to use - @threadsafe no -*//*-*************************************************************************************************************/ -class SvtModuleOptions_Impl : public ::utl::ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - public: - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - SvtModuleOptions_Impl(SvtModuleOptions* pOutsideClass); - ~SvtModuleOptions_Impl(); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - virtual void Notify( const css::uno::Sequence< ::rtl::OUString >& lPropertyNames ); - virtual void Commit( ); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - sal_Bool IsModuleInstalled ( SvtModuleOptions::EModule eModule ) const; - ::com::sun::star::uno::Sequence < ::rtl::OUString > GetAllServiceNames(); - ::rtl::OUString GetFactoryName ( SvtModuleOptions::EFactory eFactory ) const; - ::rtl::OUString GetFactoryShortName ( SvtModuleOptions::EFactory eFactory ) const; - ::rtl::OUString GetFactoryStandardTemplate( SvtModuleOptions::EFactory eFactory ) const; - ::rtl::OUString GetFactoryWindowAttributes( SvtModuleOptions::EFactory eFactory ) const; - ::rtl::OUString GetFactoryEmptyDocumentURL( SvtModuleOptions::EFactory eFactory ) const; - ::rtl::OUString GetFactoryDefaultFilter ( SvtModuleOptions::EFactory eFactory ) const; - sal_Bool IsDefaultFilterReadonly( SvtModuleOptions::EFactory eFactory ) const; - sal_Int32 GetFactoryIcon ( SvtModuleOptions::EFactory eFactory ) const; - static sal_Bool ClassifyFactoryByName ( const ::rtl::OUString& sName , - SvtModuleOptions::EFactory& eFactory ); - void SetFactoryStandardTemplate( SvtModuleOptions::EFactory eFactory , - const ::rtl::OUString& sTemplate ); - void SetFactoryWindowAttributes( SvtModuleOptions::EFactory eFactory , - const ::rtl::OUString& sAttributes); - void SetFactoryDefaultFilter ( SvtModuleOptions::EFactory eFactory , - const ::rtl::OUString& sFilter ); - void MakeReadonlyStatesAvailable(); - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - private: - static css::uno::Sequence< ::rtl::OUString > impl_ExpandSetNames ( const css::uno::Sequence< ::rtl::OUString >& lSetNames ); - void impl_Read ( const css::uno::Sequence< ::rtl::OUString >& lSetNames ); - - //------------------------------------------------------------------------------------------------------------- - // private types - //------------------------------------------------------------------------------------------------------------- - private: - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - private: - FactoryInfoList m_lFactories; - sal_Bool m_bReadOnlyStatesWellKnown; - SvtModuleOptions* m_pOutsideClass; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @short default ctor - @descr We open our configuration here and read all neccessary values from it. - These values are cached till everyone call Commit(). Then we write changed ones back to cfg. - - @seealso baseclass ConfigItem - @seealso method impl_Read() - - @param - - @return - - - @onerror - - @threadsafe no -*//*-*************************************************************************************************************/ -SvtModuleOptions_Impl::SvtModuleOptions_Impl(SvtModuleOptions* pOutsideClass) - : ::utl::ConfigItem( ROOTNODE_FACTORIES ) - , m_bReadOnlyStatesWellKnown( sal_False ) - , m_pOutsideClass( pOutsideClass ) -{ - // First initialize list of factory infos! Otherwise we couldnt gurantee right working of these class. - for( sal_Int32 nFactory=0; nFactory<FACTORYCOUNT; ++nFactory ) - m_lFactories[nFactory].free(); - - // Get name list of all existing set node names in configuration to read her properties in impl_Read(). - // These list is a list of long names of our factories. - const css::uno::Sequence< ::rtl::OUString > lFactories = GetNodeNames( ::rtl::OUString() ); - impl_Read( lFactories ); - - // Enable notification for changes by using configuration directly. - // So we can update our internal values immediatly. - EnableNotification( lFactories ); -} - -/*-************************************************************************************************************//** - @short default dtor - @descr If any values of our cache was modified we should write it back to configuration. - - @attention Don't forget to call "SetModified()" method of base class ConfigItem if any interface method - of this class modify internal member list m_lFactories! Otherwise Commit() will never be called!!! - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - @threadsafe no -*//*-*************************************************************************************************************/ -SvtModuleOptions_Impl::~SvtModuleOptions_Impl() -{ - if( IsModified() == sal_True ) - { - Commit(); - } -} - -/*-************************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update our - internal values. - - @attention We are registered for pure set node names only. So we can use our internal method "impl_Read()" to - update our info list. Because - these method expand given name list to full qualified property list - and use it to read the values. These values are filled into our internal member list m_lFactories - at right position. - - @seealso method impl_Read() - - @param "lNames" is the list of set node entries which should be updated. - @return - - - @onerror - - @threadsafe no -*//*-*************************************************************************************************************/ -void SvtModuleOptions_Impl::Notify( const css::uno::Sequence< ::rtl::OUString >& ) -{ - OSL_FAIL( "SvtModuleOptions_Impl::Notify()\nNot implemented yet!\n" ); -} - -/*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @attention We clear complete set in configuration first and write it completly new! So we don't must - distinguish between existing, added or removed elements. Our internal cached values - are the only and right ones. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - @threadsafe no -*//*-*****************************************************************************************************/ -void SvtModuleOptions_Impl::Commit() -{ - // Reserve memory for ALL possible factory properties! - // Step over all factories and get her realy changed values only. - // Build list of these ones and use it for commit. - css::uno::Sequence< css::beans::PropertyValue > lCommitProperties( FACTORYCOUNT*PROPERTYCOUNT ); - FactoryInfo* pInfo = NULL ; - sal_Int32 nRealCount = 0 ; - ::rtl::OUString sBasePath ; - for( sal_Int32 nFactory=0; nFactory<FACTORYCOUNT; ++nFactory ) - { - pInfo = &(m_lFactories[nFactory]); - - // These path is used to build full qualified property names .... - // See pInfo->getChangedProperties() for further informations - sBasePath = PATHSEPERATOR + pInfo->getFactory() + PATHSEPERATOR; - - const css::uno::Sequence< css::beans::PropertyValue > lChangedProperties = pInfo->getChangedProperties ( sBasePath ); - const css::beans::PropertyValue* pChangedProperties = lChangedProperties.getConstArray(); - sal_Int32 nPropertyCount = lChangedProperties.getLength(); - for( sal_Int32 nProperty=0; nProperty<nPropertyCount; ++nProperty ) - { - lCommitProperties[nRealCount] = pChangedProperties[nProperty]; - ++nRealCount; - } - } - // Resize commit list to real size. - // If nothing to do - suppress calling of configuration ... - // It could be to expensive :-) - if( nRealCount > 0 ) - { - lCommitProperties.realloc( nRealCount ); - SetSetProperties( ::rtl::OUString(), lCommitProperties ); - } -} - -/*-****************************************************************************************************//** - @short access method to get internal values - @descr These methods implement easy access to our internal values. - You give us right enum value to specify which module interest you ... we return right information. - - @attention Some poeple use any value as enum ... but we support in header specified values only! - We use it directly as index in our internal list. If enum value isn't right - we crash with an - "index out of range"!!! Please use me right - otherwise there is no guarantee. - - @seealso - - - @param "eModule" , index in list - specify module - @param "eFactory" , index in list - specify factory - @param "sTemplate", set new standard template for these factory - @return Queried information. - - @onerror We return default values. (mostly "not installed"!) - @threadsafe no -*//*-*****************************************************************************************************/ -sal_Bool SvtModuleOptions_Impl::IsModuleInstalled( SvtModuleOptions::EModule eModule ) const -{ - sal_Bool bInstalled = sal_False; - switch( eModule ) - { - case SvtModuleOptions::E_SWRITER : bInstalled = m_lFactories[SvtModuleOptions::E_WRITER].getInstalled(); - break; - case SvtModuleOptions::E_SWEB : bInstalled = m_lFactories[SvtModuleOptions::E_WRITERWEB].getInstalled(); - break; - case SvtModuleOptions::E_SGLOBAL : bInstalled = m_lFactories[SvtModuleOptions::E_WRITERGLOBAL].getInstalled(); - break; - case SvtModuleOptions::E_SCALC : bInstalled = m_lFactories[SvtModuleOptions::E_CALC].getInstalled(); - break; - case SvtModuleOptions::E_SDRAW : bInstalled = m_lFactories[SvtModuleOptions::E_DRAW].getInstalled(); - break; - case SvtModuleOptions::E_SIMPRESS : bInstalled = m_lFactories[SvtModuleOptions::E_IMPRESS].getInstalled(); - break; - case SvtModuleOptions::E_SMATH : bInstalled = m_lFactories[SvtModuleOptions::E_MATH].getInstalled(); - break; - case SvtModuleOptions::E_SCHART : bInstalled = m_lFactories[SvtModuleOptions::E_CHART].getInstalled(); - break; - case SvtModuleOptions::E_SSTARTMODULE : bInstalled = m_lFactories[SvtModuleOptions::E_STARTMODULE].getInstalled(); - break; - case SvtModuleOptions::E_SBASIC : bInstalled = sal_True; // Couldn't be deselected by setup yet! - break; - case SvtModuleOptions::E_SDATABASE : bInstalled = m_lFactories[SvtModuleOptions::E_DATABASE].getInstalled(); - break; - } - - return bInstalled; -} - -::com::sun::star::uno::Sequence < ::rtl::OUString > SvtModuleOptions_Impl::GetAllServiceNames() -{ - sal_uInt32 nCount=0; - if( m_lFactories[SvtModuleOptions::E_WRITER].getInstalled() ) - nCount++; - if ( m_lFactories[SvtModuleOptions::E_WRITERWEB].getInstalled() ) - nCount++; - if ( m_lFactories[SvtModuleOptions::E_WRITERGLOBAL].getInstalled() ) - nCount++; - if( m_lFactories[SvtModuleOptions::E_SCALC].getInstalled() ) - nCount++; - if( m_lFactories[SvtModuleOptions::E_SDRAW].getInstalled() ) - nCount++; - if( m_lFactories[SvtModuleOptions::E_SIMPRESS].getInstalled() ) - nCount++; - if( m_lFactories[SvtModuleOptions::E_SCHART].getInstalled() ) - nCount++; - if( m_lFactories[SvtModuleOptions::E_SMATH].getInstalled() ) - nCount++; - if( m_lFactories[SvtModuleOptions::E_SBASIC].getInstalled() ) - nCount++; - if( m_lFactories[SvtModuleOptions::E_SDATABASE].getInstalled() ) - nCount++; - - css::uno::Sequence < ::rtl::OUString > aRet( nCount ); - sal_Int32 n=0; - if( m_lFactories[SvtModuleOptions::E_WRITER].getInstalled() ) - aRet[n++] = m_lFactories[SvtModuleOptions::E_WRITER].getFactory(); - if ( m_lFactories[SvtModuleOptions::E_WRITERWEB].getInstalled() ) - aRet[n++] = m_lFactories[SvtModuleOptions::E_WRITERWEB].getFactory(); - if ( m_lFactories[SvtModuleOptions::E_WRITERGLOBAL].getInstalled() ) - aRet[n++] = m_lFactories[SvtModuleOptions::E_WRITERGLOBAL].getFactory(); - if( m_lFactories[SvtModuleOptions::E_SCALC].getInstalled() ) - aRet[n++] = m_lFactories[SvtModuleOptions::E_SCALC].getFactory(); - if( m_lFactories[SvtModuleOptions::E_SDRAW].getInstalled() ) - aRet[n++] = m_lFactories[SvtModuleOptions::E_SDRAW].getFactory(); - if( m_lFactories[SvtModuleOptions::E_SIMPRESS].getInstalled() ) - aRet[n++] = m_lFactories[SvtModuleOptions::E_SIMPRESS].getFactory(); - if( m_lFactories[SvtModuleOptions::E_SCHART].getInstalled() ) - aRet[n++] = m_lFactories[SvtModuleOptions::E_SCHART].getFactory(); - if( m_lFactories[SvtModuleOptions::E_SMATH].getInstalled() ) - aRet[n++] = m_lFactories[SvtModuleOptions::E_SMATH].getFactory(); - if( m_lFactories[SvtModuleOptions::E_SBASIC].getInstalled() ) - aRet[n++] = m_lFactories[SvtModuleOptions::E_SBASIC].getFactory(); - if( m_lFactories[SvtModuleOptions::E_SDATABASE].getInstalled() ) - aRet[n++] = m_lFactories[SvtModuleOptions::E_SDATABASE].getFactory(); - - return aRet; -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions_Impl::GetFactoryName( SvtModuleOptions::EFactory eFactory ) const -{ - ::rtl::OUString sName; - - if( eFactory>=0 && eFactory<FACTORYCOUNT ) - { - sName = m_lFactories[eFactory].getFactory(); - } - - return sName; -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions_Impl::GetFactoryShortName( SvtModuleOptions::EFactory eFactory ) const -{ - // Attention: Hard configured yet ... because it's not fine to make changes possible by xml file yet. - // But it's good to plan further possibilities! - - //return m_lFactories[eFactory].sShortName; - - ::rtl::OUString sShortName; - switch( eFactory ) - { - case SvtModuleOptions::E_WRITER : sShortName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("swriter")); - break; - case SvtModuleOptions::E_WRITERWEB : sShortName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("swriter/web")); - break; - case SvtModuleOptions::E_WRITERGLOBAL : sShortName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("swriter/GlobalDocument")); - break; - case SvtModuleOptions::E_CALC : sShortName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("scalc")); - break; - case SvtModuleOptions::E_DRAW : sShortName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sdraw")); - break; - case SvtModuleOptions::E_IMPRESS : sShortName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("simpress")); - break; - case SvtModuleOptions::E_MATH : sShortName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("smath")); - break; - case SvtModuleOptions::E_CHART : sShortName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("schart")); - break; - case SvtModuleOptions::E_BASIC : sShortName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sbasic")); - break; - case SvtModuleOptions::E_DATABASE : sShortName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sdatabase")); - break; - default: - OSL_FAIL( "unknown factory" ); - break; - } - - return sShortName; -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions_Impl::GetFactoryStandardTemplate( SvtModuleOptions::EFactory eFactory ) const -{ - ::rtl::OUString sFile; - - if( eFactory>=0 && eFactory<FACTORYCOUNT ) - { - sFile = m_lFactories[eFactory].getTemplateFile(); - } - - return sFile; -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions_Impl::GetFactoryWindowAttributes( SvtModuleOptions::EFactory eFactory ) const -{ - ::rtl::OUString sAttributes; - - if( eFactory>=0 && eFactory<FACTORYCOUNT ) - { - sAttributes = m_lFactories[eFactory].getWindowAttributes(); - } - - return sAttributes; -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions_Impl::GetFactoryEmptyDocumentURL( SvtModuleOptions::EFactory eFactory ) const -{ - // Attention: Hard configured yet ... because it's not fine to make changes possible by xml file yet. - // But it's good to plan further possibilities! - - //return m_lFactories[eFactory].getEmptyDocumentURL(); - - ::rtl::OUString sURL; - switch( eFactory ) - { - case SvtModuleOptions::E_WRITER : sURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/swriter")); - break; - case SvtModuleOptions::E_WRITERWEB : sURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/swriter/web")); - break; - case SvtModuleOptions::E_WRITERGLOBAL : sURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/swriter/GlobalDocument")); - break; - case SvtModuleOptions::E_CALC : sURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc")); - break; - case SvtModuleOptions::E_DRAW : sURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/sdraw")); - break; - case SvtModuleOptions::E_IMPRESS : sURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/simpress?slot=6686")); - break; - case SvtModuleOptions::E_MATH : sURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/smath")); - break; - case SvtModuleOptions::E_CHART : sURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/schart")); - break; - case SvtModuleOptions::E_BASIC : sURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/sbasic")); - break; - case SvtModuleOptions::E_DATABASE : sURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/sdatabase?Interactive")); - break; - default: - OSL_FAIL( "unknown factory" ); - break; - } - return sURL; -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions_Impl::GetFactoryDefaultFilter( SvtModuleOptions::EFactory eFactory ) const -{ - ::rtl::OUString sDefaultFilter; - - if( eFactory>=0 && eFactory<FACTORYCOUNT ) - { - sDefaultFilter = m_lFactories[eFactory].getDefaultFilter(); - } - return sDefaultFilter; -} -//***************************************************************************************************************** -sal_Bool SvtModuleOptions_Impl::IsDefaultFilterReadonly( SvtModuleOptions::EFactory eFactory ) const -{ - sal_Bool bRet = sal_False; - if( eFactory>=0 && eFactory<FACTORYCOUNT ) - { - bRet = m_lFactories[eFactory].isDefaultFilterReadonly(); - } - return bRet; -} - -//***************************************************************************************************************** -sal_Int32 SvtModuleOptions_Impl::GetFactoryIcon( SvtModuleOptions::EFactory eFactory ) const -{ - sal_Int32 nIcon = 0; - - if( eFactory>=0 && eFactory<FACTORYCOUNT ) - { - nIcon = m_lFactories[eFactory].getIcon(); - } - - return nIcon; -} - -//***************************************************************************************************************** -void SvtModuleOptions_Impl::SetFactoryStandardTemplate( SvtModuleOptions::EFactory eFactory , - const ::rtl::OUString& sTemplate ) -{ - if( eFactory>=0 && eFactory<FACTORYCOUNT ) - { - m_lFactories[eFactory].setTemplateFile( sTemplate ); - SetModified(); - } -} - -//***************************************************************************************************************** -void SvtModuleOptions_Impl::SetFactoryWindowAttributes( SvtModuleOptions::EFactory eFactory , - const ::rtl::OUString& sAttributes) -{ - if( eFactory>=0 && eFactory<FACTORYCOUNT ) - { - m_lFactories[eFactory].setWindowAttributes( sAttributes ); - SetModified(); - } -} - -//***************************************************************************************************************** -void SvtModuleOptions_Impl::SetFactoryDefaultFilter( SvtModuleOptions::EFactory eFactory, - const ::rtl::OUString& sFilter ) -{ - if( eFactory>=0 && eFactory<FACTORYCOUNT ) - { - m_lFactories[eFactory].setDefaultFilter( sFilter ); - SetModified(); - } -} - -/*-************************************************************************************************************//** - @short return list of key names of ouer configuration management which represent our module tree - @descr You give use a list of current existing set node names .. and we expand it for all - well known properties which are neccessary for this implementation. - These full expanded list should be used to get values of this properties. - - @seealso ctor - - @param - - @return List of all relative addressed properties of given set entry names. - - @onerror List will be empty. - @threadsafe no -*//*-*************************************************************************************************************/ -css::uno::Sequence< ::rtl::OUString > SvtModuleOptions_Impl::impl_ExpandSetNames( const css::uno::Sequence< ::rtl::OUString >& lSetNames ) -{ - sal_Int32 nCount = lSetNames.getLength() ; - css::uno::Sequence< ::rtl::OUString > lPropNames ( nCount*PROPERTYCOUNT ); - ::rtl::OUString* pPropNames = lPropNames.getArray() ; - sal_Int32 nPropStart = 0 ; - - for( sal_Int32 nName=0; nName<nCount; ++nName ) - { - pPropNames[nPropStart+PROPERTYHANDLE_SHORTNAME ] = lSetNames[nName] + PATHSEPERATOR + PROPERTYNAME_SHORTNAME ; - pPropNames[nPropStart+PROPERTYHANDLE_TEMPLATEFILE ] = lSetNames[nName] + PATHSEPERATOR + PROPERTYNAME_TEMPLATEFILE ; - pPropNames[nPropStart+PROPERTYHANDLE_WINDOWATTRIBUTES] = lSetNames[nName] + PATHSEPERATOR + PROPERTYNAME_WINDOWATTRIBUTES; - pPropNames[nPropStart+PROPERTYHANDLE_EMPTYDOCUMENTURL] = lSetNames[nName] + PATHSEPERATOR + PROPERTYNAME_EMPTYDOCUMENTURL; - pPropNames[nPropStart+PROPERTYHANDLE_DEFAULTFILTER ] = lSetNames[nName] + PATHSEPERATOR + PROPERTYNAME_DEFAULTFILTER ; - pPropNames[nPropStart+PROPERTYHANDLE_ICON ] = lSetNames[nName] + PATHSEPERATOR + PROPERTYNAME_ICON ; - nPropStart += PROPERTYCOUNT; - } - - return lPropNames; -} - -/*-************************************************************************************************************//** - @short helper to classify given factory by name - @descr Every factory has his own long and short name. So we can match right enum value for internal using. - - @attention We change in/out parameter "eFactory" in every case! But you should use it only, if return value is sal_True! - Algorithm: Set out-parameter to propably value ... and check the longname. - If it match with these factory - break operation and return true AND right set parameter. - Otherwise try next one and so on. If no factory was found return false. Out parameter eFactory - is set to last tried value but shouldn't be used! Because our return value is false! - - @seealso - - - @param "sLongName" , long name of factory, which should be classified - @return "eFactory" , right enum value, which match given long name - and true for successfully classification, false otherwise - - @onerror We return false. - @threadsafe no -*//*-*************************************************************************************************************/ -sal_Bool SvtModuleOptions_Impl::ClassifyFactoryByName( const ::rtl::OUString& sName, SvtModuleOptions::EFactory& eFactory ) -{ - sal_Bool bState; - - eFactory = SvtModuleOptions::E_WRITER ; - bState = ( sName == FACTORYNAME_WRITER ); - - if( bState == sal_False ) - { - eFactory = SvtModuleOptions::E_WRITERWEB ; - bState = ( sName == FACTORYNAME_WRITERWEB ); - } - // no else! - if( bState == sal_False ) - { - eFactory = SvtModuleOptions::E_WRITERGLOBAL ; - bState = ( sName == FACTORYNAME_WRITERGLOBAL ); - } - // no else! - if( bState == sal_False ) - { - eFactory = SvtModuleOptions::E_CALC ; - bState = ( sName == FACTORYNAME_CALC ); - } - // no else! - if( bState == sal_False ) - { - eFactory = SvtModuleOptions::E_DRAW ; - bState = ( sName == FACTORYNAME_DRAW ); - } - // no else! - if( bState == sal_False ) - { - eFactory = SvtModuleOptions::E_IMPRESS ; - bState = ( sName == FACTORYNAME_IMPRESS ); - } - // no else! - if( bState == sal_False ) - { - eFactory = SvtModuleOptions::E_MATH ; - bState = ( sName == FACTORYNAME_MATH ); - } - // no else! - if( bState == sal_False ) - { - eFactory = SvtModuleOptions::E_CHART ; - bState = ( sName == FACTORYNAME_CHART ); - } - // no else! - if( bState == sal_False ) - { - eFactory = SvtModuleOptions::E_DATABASE ; - bState = ( sName == FACTORYNAME_DATABASE ); - } - // no else! - if( bState == sal_False ) - { - eFactory = SvtModuleOptions::E_STARTMODULE ; - bState = ( sName == FACTORYNAME_STARTMODULE); - } - - return bState; -} - -/*-************************************************************************************************************//** - @short read factory configuration - @descr Give us a list of pure factory names (long names!) which can be used as - direct set node names ... and we read her property values and fill internal list. - These method can be used by initial reading at ctor and later updating by "Notify()". - - @seealso ctor - @seealso method Notify() - - @param "lFactories" is the list of set node entries which should be readed. - @return - - - @onerror We do nothing. - @threadsafe no -*//*-*************************************************************************************************************/ -void SvtModuleOptions_Impl::impl_Read( const css::uno::Sequence< ::rtl::OUString >& lFactories ) -{ - // Expand every set node name in lFactories to full qualified pathes to his properties - // and get right values from configuration. - const css::uno::Sequence< ::rtl::OUString > lProperties = impl_ExpandSetNames( lFactories ); - const css::uno::Sequence< css::uno::Any > lValues = GetProperties( lProperties ); - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - OSL_ENSURE( !(lProperties.getLength()!=lValues.getLength()), "SvtModuleOptions_Impl::impl_Read()\nI miss some values of configuration keys!\n" ); - - // Algorithm: We step over all given factory names and classify it. These enum value can be used as direct index - // in our member list m_lFactories! VAriable nPropertyStart marks start position of every factory - // and her properties in expanded property/value list. The defines PROPERTHANDLE_xxx are used as offset values - // added to nPropertyStart. So we can address every property relative in these lists. - // If we found any valid values ... we reset all existing informations for corresponding m_lFactories-entry and - // use a pointer to these struct in memory directly to set new values. - // But we set it only, if bInstalled is true. Otherwise all other values of a factory can be undeclared .. They - // shouldn't be used then. - // Attention: If a propertyset of a factory will be ignored we must step to next start position of next factory infos! - // see "nPropertyStart += PROPERTYCOUNT" ... - - sal_Int32 nPropertyStart = 0 ; - sal_Int32 nNodeCount = lFactories.getLength(); - FactoryInfo* pInfo = NULL ; - SvtModuleOptions::EFactory eFactory ; - - for( sal_Int32 nSetNode=0; nSetNode<nNodeCount; ++nSetNode ) - { - const ::rtl::OUString& sFactoryName = lFactories[nSetNode]; - if( ClassifyFactoryByName( sFactoryName, eFactory ) == sal_True ) - { - ::rtl::OUString sTemp; - sal_Int32 nTemp = 0; - - pInfo = &(m_lFactories[eFactory]); - pInfo->free(); - - pInfo->initInstalled( sal_True ); - pInfo->initFactory ( sFactoryName ); - - if (lValues[nPropertyStart+PROPERTYHANDLE_SHORTNAME] >>= sTemp) - pInfo->initShortName( sTemp ); - if (lValues[nPropertyStart+PROPERTYHANDLE_TEMPLATEFILE] >>= sTemp) - pInfo->initTemplateFile( sTemp ); - if (lValues[nPropertyStart+PROPERTYHANDLE_WINDOWATTRIBUTES] >>= sTemp) - pInfo->initWindowAttributes( sTemp ); - if (lValues[nPropertyStart+PROPERTYHANDLE_EMPTYDOCUMENTURL] >>= sTemp) - pInfo->initEmptyDocumentURL( sTemp ); - if (lValues[nPropertyStart+PROPERTYHANDLE_DEFAULTFILTER ] >>= sTemp) - pInfo->initDefaultFilter( sTemp ); - if (lValues[nPropertyStart+PROPERTYHANDLE_ICON] >>= nTemp) - pInfo->initIcon( nTemp ); - } - nPropertyStart += PROPERTYCOUNT; - } -} - -//***************************************************************************************************************** -void SvtModuleOptions_Impl::MakeReadonlyStatesAvailable() -{ - if (m_bReadOnlyStatesWellKnown) - return; - - css::uno::Sequence< ::rtl::OUString > lFactories = GetNodeNames(::rtl::OUString()); - sal_Int32 c = lFactories.getLength(); - sal_Int32 i = 0; - for (i=0; i<c; ++i) - { - ::rtl::OUStringBuffer sPath(256); - sPath.append(lFactories[i] ); - sPath.append(PATHSEPERATOR ); - sPath.append(PROPERTYNAME_DEFAULTFILTER); - - lFactories[i] = sPath.makeStringAndClear(); - } - - css::uno::Sequence< sal_Bool > lReadonlyStates = GetReadOnlyStates(lFactories); - for (i=0; i<c; ++i) - { - ::rtl::OUString& rFactoryName = lFactories[i]; - SvtModuleOptions::EFactory eFactory ; - - if (!ClassifyFactoryByName(rFactoryName, eFactory)) - continue; - - FactoryInfo& rInfo = m_lFactories[eFactory]; - rInfo.setDefaultFilterReadonly(lReadonlyStates[i]); - } - - m_bReadOnlyStatesWellKnown = sal_True; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtModuleOptions_Impl* SvtModuleOptions::m_pDataContainer = NULL ; -sal_Int32 SvtModuleOptions::m_nRefCount = 0 ; - -/*-************************************************************************************************************//** - @short standard constructor and destructor - @descr This will initialize an instance with default values. We initialize/deinitialize our static data - container and create a static mutex, which is used for threadsafe code in further time of this object. - - @seealso method impl_GetOwnStaticMutex() - - @param - - @return - - - @onerror - - @threadsafe yes -*//*-*************************************************************************************************************/ -SvtModuleOptions::SvtModuleOptions() -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - ++m_nRefCount; - if( m_nRefCount == 1 ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtModuleOptions_Impl::ctor()"); - m_pDataContainer = new SvtModuleOptions_Impl(this); - - ItemHolder1::holdConfigItem(E_MODULEOPTIONS); - } -} - -//***************************************************************************************************************** -SvtModuleOptions::~SvtModuleOptions() -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - --m_nRefCount; - if( m_nRefCount == 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -/*-************************************************************************************************************//** - @short access to configuration data - @descr This methods allow read/write access to configuration values. - They are threadsafe. All calls are forwarded to impl-data-container. See there for further informations! - - @seealso method impl_GetOwnStaticMutex() - - @param - - @return - - - @onerror - - @threadsafe yes -*//*-*************************************************************************************************************/ -sal_Bool SvtModuleOptions::IsModuleInstalled( EModule eModule ) const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsModuleInstalled( eModule ); -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions::GetFactoryName( EFactory eFactory ) const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->GetFactoryName( eFactory ); -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions::GetFactoryShortName( EFactory eFactory ) const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->GetFactoryShortName( eFactory ); -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions::GetFactoryStandardTemplate( EFactory eFactory ) const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->GetFactoryStandardTemplate( eFactory ); -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions::GetFactoryWindowAttributes( EFactory eFactory ) const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->GetFactoryWindowAttributes( eFactory ); -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions::GetFactoryEmptyDocumentURL( EFactory eFactory ) const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->GetFactoryEmptyDocumentURL( eFactory ); -} - -//***************************************************************************************************************** -::rtl::OUString SvtModuleOptions::GetFactoryDefaultFilter( EFactory eFactory ) const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->GetFactoryDefaultFilter( eFactory ); -} -//***************************************************************************************************************** -sal_Bool SvtModuleOptions::IsDefaultFilterReadonly( EFactory eFactory ) const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - m_pDataContainer->MakeReadonlyStatesAvailable(); - return m_pDataContainer->IsDefaultFilterReadonly( eFactory ); -} -//***************************************************************************************************************** -sal_Int32 SvtModuleOptions::GetFactoryIcon( EFactory eFactory ) const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->GetFactoryIcon( eFactory ); -} - -//***************************************************************************************************************** -sal_Bool SvtModuleOptions::ClassifyFactoryByName( const ::rtl::OUString& sName , - EFactory& eFactory ) -{ - // We don't need any mutex here ... because we don't use any member here! - return SvtModuleOptions_Impl::ClassifyFactoryByName( sName, eFactory ); -} - -//***************************************************************************************************************** -void SvtModuleOptions::SetFactoryStandardTemplate( EFactory eFactory , - const ::rtl::OUString& sTemplate ) -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - m_pDataContainer->SetFactoryStandardTemplate( eFactory, sTemplate ); -} - -//***************************************************************************************************************** -void SvtModuleOptions::SetFactoryWindowAttributes( EFactory eFactory , - const ::rtl::OUString& sAttributes) -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - m_pDataContainer->SetFactoryWindowAttributes( eFactory, sAttributes ); -} - -//***************************************************************************************************************** -void SvtModuleOptions::SetFactoryDefaultFilter( EFactory eFactory, - const ::rtl::OUString& sFilter ) -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - m_pDataContainer->SetFactoryDefaultFilter( eFactory, sFilter ); -} - -//***************************************************************************************************************** -sal_Bool SvtModuleOptions::IsMath() const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsModuleInstalled( E_SMATH ); -} - -//***************************************************************************************************************** -sal_Bool SvtModuleOptions::IsChart() const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsModuleInstalled( E_SCHART ); -} - -//***************************************************************************************************************** -sal_Bool SvtModuleOptions::IsCalc() const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsModuleInstalled( E_SCALC ); -} - -//***************************************************************************************************************** -sal_Bool SvtModuleOptions::IsDraw() const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsModuleInstalled( E_SDRAW ); -} - -//***************************************************************************************************************** -sal_Bool SvtModuleOptions::IsWriter() const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsModuleInstalled( E_SWRITER ); -} - -//***************************************************************************************************************** -sal_Bool SvtModuleOptions::IsImpress() const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsModuleInstalled( E_SIMPRESS ); -} - -//***************************************************************************************************************** -sal_Bool SvtModuleOptions::IsBasicIDE() const -{ - return sal_True; -} -//***************************************************************************************************************** -sal_Bool SvtModuleOptions::IsDataBase() const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->IsModuleInstalled( E_SDATABASE ); -} -//***************************************************************************************************************** -sal_uInt32 SvtModuleOptions::GetFeatures() const -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - - sal_uInt32 nFeature = 0; - - if( m_pDataContainer->IsModuleInstalled( E_SWRITER ) == sal_True ) - nFeature |= FEATUREFLAG_WRITER; - if( m_pDataContainer->IsModuleInstalled( E_SCALC ) == sal_True ) - nFeature |= FEATUREFLAG_CALC; - if( m_pDataContainer->IsModuleInstalled( E_SDRAW ) == sal_True ) - nFeature |= FEATUREFLAG_DRAW; - if( m_pDataContainer->IsModuleInstalled( E_SIMPRESS ) == sal_True ) - nFeature |= FEATUREFLAG_IMPRESS; - if( m_pDataContainer->IsModuleInstalled( E_SCHART ) == sal_True ) - nFeature |= FEATUREFLAG_CHART; - if( m_pDataContainer->IsModuleInstalled( E_SMATH ) == sal_True ) - nFeature |= FEATUREFLAG_MATH; - if( m_pDataContainer->IsModuleInstalled( E_SBASIC ) == sal_True ) - nFeature |= FEATUREFLAG_BASICIDE; - if( m_pDataContainer->IsModuleInstalled( E_SDATABASE ) == sal_True ) - nFeature |= FEATUREFLAG_INSIGHT; - - return nFeature; -} - -namespace -{ - class theModuleOptionsMutex : public rtl::Static<osl::Mutex, theModuleOptionsMutex> {}; -} -/*-****************************************************************************************************//** - @short return a reference to a static mutex - @descr These class is threadsafe. - We create a static mutex only for one time and use it to protect our refcount and container - member! - - @seealso - - - @param - - @return A reference to a static mutex member. - - @onerror - - @threadsafe yes -*//*-*****************************************************************************************************/ -::osl::Mutex& SvtModuleOptions::impl_GetOwnStaticMutex() -{ - return theModuleOptionsMutex::get(); -} - -::rtl::OUString SvtModuleOptions::GetModuleName( EModule eModule ) const -{ - switch( eModule ) - { - case SvtModuleOptions::E_SWRITER : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Writer")); } - case SvtModuleOptions::E_SWEB : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Web")); } - case SvtModuleOptions::E_SGLOBAL : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Global")); } - case SvtModuleOptions::E_SCALC : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Calc")); } - case SvtModuleOptions::E_SDRAW : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Draw")); } - case SvtModuleOptions::E_SIMPRESS : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Impress")); } - case SvtModuleOptions::E_SMATH : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Math")); } - case SvtModuleOptions::E_SCHART : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Chart")); } - case SvtModuleOptions::E_SBASIC : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Basic")); } - case SvtModuleOptions::E_SDATABASE : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Database")); } - default: - OSL_FAIL( "unknown module" ); - break; - } - - return ::rtl::OUString(); -} - -::rtl::OUString SvtModuleOptions::GetModuleName( EFactory eFactory ) const -{ - switch( eFactory ) - { - case SvtModuleOptions::E_WRITER : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Writer")); } - case SvtModuleOptions::E_WRITERWEB : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Writer")); } - case SvtModuleOptions::E_WRITERGLOBAL : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Writer")); } - case SvtModuleOptions::E_CALC : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Calc")); } - case SvtModuleOptions::E_DRAW : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Draw")); } - case SvtModuleOptions::E_IMPRESS : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Impress")); } - case SvtModuleOptions::E_MATH : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Math")); } - case SvtModuleOptions::E_CHART : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Chart")); } - case SvtModuleOptions::E_BASIC : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Basic")); } - case SvtModuleOptions::E_DATABASE : { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Database")); } - default: - OSL_FAIL( "unknown factory" ); - break; - } - - return ::rtl::OUString(); -} - -/*----------------------------------------------- - 07.03.2004 15:03 ------------------------------------------------*/ -SvtModuleOptions::EFactory SvtModuleOptions::ClassifyFactoryByShortName(const ::rtl::OUString& sName) -{ - if (sName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("swriter"))) - return E_WRITER; - if (sName.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("swriter/Web"))) // sometimes they are registerd for swriter/web :-( - return E_WRITERWEB; - if (sName.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("swriter/GlobalDocument"))) // sometimes they are registerd for swriter/globaldocument :-( - return E_WRITERGLOBAL; - if (sName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("scalc"))) - return E_CALC; - if (sName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("sdraw"))) - return E_DRAW; - if (sName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("simpress"))) - return E_IMPRESS; - if (sName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("schart"))) - return E_CHART; - if (sName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("smath"))) - return E_MATH; - if (sName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("sbasic"))) - return E_BASIC; - if (sName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("sdatabase"))) - return E_DATABASE; - - return E_UNKNOWN_FACTORY; -} - -/*----------------------------------------------- - 31.07.2003 10:41 ------------------------------------------------*/ -SvtModuleOptions::EFactory SvtModuleOptions::ClassifyFactoryByServiceName(const ::rtl::OUString& sName) -{ - if (sName.equals(FACTORYNAME_WRITERGLOBAL)) - return E_WRITERGLOBAL; - if (sName.equals(FACTORYNAME_WRITERWEB)) - return E_WRITERWEB; - if (sName.equals(FACTORYNAME_WRITER)) - return E_WRITER; - if (sName.equals(FACTORYNAME_CALC)) - return E_CALC; - if (sName.equals(FACTORYNAME_DRAW)) - return E_DRAW; - if (sName.equals(FACTORYNAME_IMPRESS)) - return E_IMPRESS; - if (sName.equals(FACTORYNAME_MATH)) - return E_MATH; - if (sName.equals(FACTORYNAME_CHART)) - return E_CHART; - if (sName.equals(FACTORYNAME_DATABASE)) - return E_DATABASE; - - return E_UNKNOWN_FACTORY; -} - -/*----------------------------------------------- - 31.07.2003 14:39 ------------------------------------------------*/ -SvtModuleOptions::EFactory SvtModuleOptions::ClassifyFactoryByURL(const ::rtl::OUString& sURL , - const css::uno::Sequence< css::beans::PropertyValue >& lMediaDescriptor) -{ - css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR = ::utl::getProcessServiceFactory(); - if (!xSMGR.is()) - return E_UNKNOWN_FACTORY; - - css::uno::Reference< css::container::XNameAccess > xFilterCfg; - css::uno::Reference< css::container::XNameAccess > xTypeCfg ; - try - { - xFilterCfg = css::uno::Reference< css::container::XNameAccess >( - xSMGR->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.FilterFactory"))), css::uno::UNO_QUERY); - xTypeCfg = css::uno::Reference< css::container::XNameAccess >( - xSMGR->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.TypeDetection"))), css::uno::UNO_QUERY); - } - catch(const css::uno::RuntimeException&) - { throw; } - catch(const css::uno::Exception&) - { return E_UNKNOWN_FACTORY; } - - ::comphelper::SequenceAsHashMap stlDesc(lMediaDescriptor); - - // is there already a filter inside the descriptor? - ::rtl::OUString sFilterName = stlDesc.getUnpackedValueOrDefault(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FilterName")), ::rtl::OUString()); - if (sFilterName.getLength()) - { - try - { - ::comphelper::SequenceAsHashMap stlFilterProps (xFilterCfg->getByName(sFilterName)); - ::rtl::OUString sDocumentService = stlFilterProps.getUnpackedValueOrDefault(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentService")), ::rtl::OUString()); - SvtModuleOptions::EFactory eApp = SvtModuleOptions::ClassifyFactoryByServiceName(sDocumentService); - - if (eApp != E_UNKNOWN_FACTORY) - return eApp; - } - catch(const css::uno::RuntimeException&) - { throw; } - catch(const css::uno::Exception&) - { /* do nothing here ... may the following code can help!*/ } - } - - // is there already a type inside the descriptor? - ::rtl::OUString sTypeName = stlDesc.getUnpackedValueOrDefault(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TypeName")), ::rtl::OUString()); - if (!sTypeName.getLength()) - { - // no :-( - // start flat detection of URL - css::uno::Reference< css::document::XTypeDetection > xDetect(xTypeCfg, css::uno::UNO_QUERY); - sTypeName = xDetect->queryTypeByURL(sURL); - } - - if (!sTypeName.getLength()) - return E_UNKNOWN_FACTORY; - - // yes - there is a type info - // Try to find the preferred filter. - try - { - ::comphelper::SequenceAsHashMap stlTypeProps (xTypeCfg->getByName(sTypeName)); - ::rtl::OUString sPreferredFilter = stlTypeProps.getUnpackedValueOrDefault(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PreferredFilter")), ::rtl::OUString()); - ::comphelper::SequenceAsHashMap stlFilterProps (xFilterCfg->getByName(sPreferredFilter)); - ::rtl::OUString sDocumentService = stlFilterProps.getUnpackedValueOrDefault(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentService")), ::rtl::OUString()); - SvtModuleOptions::EFactory eApp = SvtModuleOptions::ClassifyFactoryByServiceName(sDocumentService); - - if (eApp != E_UNKNOWN_FACTORY) - return eApp; - } - catch(const css::uno::RuntimeException&) - { throw; } - catch(const css::uno::Exception&) - { /* do nothing here ... may the following code can help!*/ } - - // no filter/no type/no detection result => no fun :-) - return E_UNKNOWN_FACTORY; -} - -/*----------------------------------------------- - 31.07.2003 10:41 ------------------------------------------------*/ -SvtModuleOptions::EFactory SvtModuleOptions::ClassifyFactoryByModel(const css::uno::Reference< css::frame::XModel >& xModel) -{ - css::uno::Reference< css::lang::XServiceInfo > xInfo(xModel, css::uno::UNO_QUERY); - if (!xInfo.is()) - return E_UNKNOWN_FACTORY; - - const css::uno::Sequence< ::rtl::OUString > lServices = xInfo->getSupportedServiceNames(); - const ::rtl::OUString* pServices = lServices.getConstArray(); - - for (sal_Int32 i=0; i<lServices.getLength() ; ++i) - { - SvtModuleOptions::EFactory eApp = SvtModuleOptions::ClassifyFactoryByServiceName(pServices[i]); - if (eApp != E_UNKNOWN_FACTORY) - return eApp; - } - - return E_UNKNOWN_FACTORY; -} - -::com::sun::star::uno::Sequence < ::rtl::OUString > SvtModuleOptions::GetAllServiceNames() -{ - ::osl::MutexGuard aGuard( impl_GetOwnStaticMutex() ); - return m_pDataContainer->GetAllServiceNames(); -} - -::rtl::OUString SvtModuleOptions::GetDefaultModuleName() -{ - ::rtl::OUString aModule; - if (m_pDataContainer->IsModuleInstalled(SvtModuleOptions::E_SWRITER)) - aModule = m_pDataContainer->GetFactoryShortName(SvtModuleOptions::E_WRITER); - else - if (m_pDataContainer->IsModuleInstalled(SvtModuleOptions::E_SCALC)) - aModule = m_pDataContainer->GetFactoryShortName(SvtModuleOptions::E_CALC); - else - if (m_pDataContainer->IsModuleInstalled(SvtModuleOptions::E_SIMPRESS)) - aModule = m_pDataContainer->GetFactoryShortName(SvtModuleOptions::E_IMPRESS); - else - if (m_pDataContainer->IsModuleInstalled(SvtModuleOptions::E_SDATABASE)) - aModule = m_pDataContainer->GetFactoryShortName(SvtModuleOptions::E_DATABASE); - else - if (m_pDataContainer->IsModuleInstalled(SvtModuleOptions::E_SDRAW)) - aModule = m_pDataContainer->GetFactoryShortName(SvtModuleOptions::E_DRAW); - else - if (m_pDataContainer->IsModuleInstalled(SvtModuleOptions::E_SWEB)) - aModule = m_pDataContainer->GetFactoryShortName(SvtModuleOptions::E_WRITERWEB); - else - if (m_pDataContainer->IsModuleInstalled(SvtModuleOptions::E_SGLOBAL)) - aModule = m_pDataContainer->GetFactoryShortName(SvtModuleOptions::E_WRITERGLOBAL); - else - if (m_pDataContainer->IsModuleInstalled(SvtModuleOptions::E_SMATH)) - aModule = m_pDataContainer->GetFactoryShortName(SvtModuleOptions::E_MATH); - return aModule; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/options.cxx b/unotools/source/config/options.cxx deleted file mode 100644 index 5eee90dd28..0000000000 --- a/unotools/source/config/options.cxx +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include "sal/config.h" -#include <unotools/options.hxx> - -using utl::detail::Options; -using utl::ConfigurationBroadcaster; - -ConfigurationBroadcaster::ConfigurationBroadcaster() -: mpList(0) -, m_nBroadcastBlocked( 0 ) -, m_nBlockedHint( 0 ) -{ -} - -ConfigurationBroadcaster::~ConfigurationBroadcaster() -{ - delete mpList; -} - -void ConfigurationBroadcaster::AddListener( utl::ConfigurationListener* pListener ) -{ - if ( !mpList ) - mpList = new IMPL_ConfigurationListenerList; - mpList->push_back( pListener ); -} - -void ConfigurationBroadcaster::RemoveListener( utl::ConfigurationListener* pListener ) -{ - if ( mpList ) { - for ( IMPL_ConfigurationListenerList::iterator it = mpList->begin(); - it < mpList->end(); - ++it - ) { - if ( *it == pListener ) { - mpList->erase( it ); - break; - } - } - } -} - -void ConfigurationBroadcaster::NotifyListeners( sal_uInt32 nHint ) -{ - if ( m_nBroadcastBlocked ) - m_nBlockedHint |= nHint; - else - { - nHint |= m_nBlockedHint; - m_nBlockedHint = 0; - if ( mpList ) { - for ( size_t n = 0; n < mpList->size(); n++ ) { - (*mpList)[ n ]->ConfigurationChanged( this, nHint ); - } - } - } -} - -void ConfigurationBroadcaster::BlockBroadcasts( bool bBlock ) -{ - if ( bBlock ) - ++m_nBroadcastBlocked; - else if ( m_nBroadcastBlocked ) - { - if ( --m_nBroadcastBlocked == 0 ) - NotifyListeners( 0 ); - } -} - -Options::Options() -{ -} - -Options::~Options() -{ -} - -void Options::ConfigurationChanged( ConfigurationBroadcaster*, sal_uInt32 nHint ) -{ - NotifyListeners( nHint ); -} - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/optionsdlg.cxx b/unotools/source/config/optionsdlg.cxx deleted file mode 100644 index b3f9297fc2..0000000000 --- a/unotools/source/config/optionsdlg.cxx +++ /dev/null @@ -1,287 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/optionsdlg.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <osl/mutex.hxx> -#include <comphelper/stl_types.hxx> - -#include <boost/unordered_map.hpp> -#include "itemholder1.hxx" - -using namespace utl; -using namespace com::sun::star::beans ; -using namespace com::sun::star::uno; - -using ::rtl::OUString; - -#define CFG_FILENAME OUString( RTL_CONSTASCII_USTRINGPARAM( "Office.OptionsDialog" ) ) -#define ROOT_NODE OUString( RTL_CONSTASCII_USTRINGPARAM( "OptionsDialogGroups" ) ) -#define PAGES_NODE OUString( RTL_CONSTASCII_USTRINGPARAM( "Pages" ) ) -#define OPTIONS_NODE OUString( RTL_CONSTASCII_USTRINGPARAM( "Options" ) ) -#define PROPERTY_HIDE OUString( RTL_CONSTASCII_USTRINGPARAM( "Hide" ) ) - -static SvtOptionsDlgOptions_Impl* pOptions = NULL; -static sal_Int32 nRefCount = 0; - -class SvtOptionsDlgOptions_Impl : public utl::ConfigItem -{ -private: - struct OUStringHashCode - { - size_t operator()( const ::rtl::OUString& sString ) const - { - return sString.hashCode(); - } - }; - - typedef boost::unordered_map< OUString, sal_Bool, OUStringHashCode, ::std::equal_to< OUString > > OptionNodeList; - - OUString m_sPathDelimiter; - OptionNodeList m_aOptionNodeList; - - enum NodeType{ NT_Group, NT_Page, NT_Option }; - void ReadNode( const OUString& _rNode, NodeType _eType ); - sal_Bool IsHidden( const OUString& _rPath ) const; - -public: - SvtOptionsDlgOptions_Impl(); - - virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); - virtual void Commit(); - - static ::osl::Mutex & getInitMutex(); - - sal_Bool IsGroupHidden ( const OUString& _rGroup ) const; - sal_Bool IsPageHidden ( const OUString& _rPage, - const OUString& _rGroup ) const; - sal_Bool IsOptionHidden ( const OUString& _rOption, - const OUString& _rPage, - const OUString& _rGroup ) const; -}; - -namespace -{ - class theOptionsDlgOptions_ImplMutex : public rtl::Static<osl::Mutex, theOptionsDlgOptions_ImplMutex>{}; -} - -::osl::Mutex & SvtOptionsDlgOptions_Impl::getInitMutex() -{ - return theOptionsDlgOptions_ImplMutex::get(); -} - -// ----------------------------------------------------------------------- - -SvtOptionsDlgOptions_Impl::SvtOptionsDlgOptions_Impl() - : ConfigItem( OUString( CFG_FILENAME ) ), - - m_sPathDelimiter( RTL_CONSTASCII_USTRINGPARAM( "/" ) ), - m_aOptionNodeList( OptionNodeList() ) - -{ - OUString sRootNode( ROOT_NODE ); - Sequence< OUString > aNodeSeq = GetNodeNames( sRootNode ); - OUString sNode( sRootNode + m_sPathDelimiter ); - sal_uInt32 nCount = aNodeSeq.getLength(); - for ( sal_uInt32 n = 0; n < nCount; n++ ) - { - OUString sSubNode( sNode + aNodeSeq[n] ); - ReadNode( sSubNode, NT_Group ); - } -} - -// ----------------------------------------------------------------------- - -void SvtOptionsDlgOptions_Impl::Commit() -{ - // nothing to commit -} - -// ----------------------------------------------------------------------- - -void SvtOptionsDlgOptions_Impl::Notify( const Sequence< rtl::OUString >& ) -{ - // nothing to notify -} - -void SvtOptionsDlgOptions_Impl::ReadNode( const OUString& _rNode, NodeType _eType ) -{ - OUString sNode( _rNode + m_sPathDelimiter ); - OUString sSet; - sal_Int32 nLen = 0; - switch ( _eType ) - { - case NT_Group : - { - sSet = PAGES_NODE; - nLen = 2; - break; - } - - case NT_Page : - { - sSet = OPTIONS_NODE; - nLen = 2; - break; - } - - case NT_Option : - { - nLen = 1; - break; - } - } - - Sequence< OUString > lResult( nLen ); - lResult[0] = OUString( sNode + PROPERTY_HIDE ); - if ( _eType != NT_Option ) - lResult[1] = OUString( sNode + sSet ); - - Sequence< Any > aValues; - aValues = GetProperties( lResult ); - sal_Bool bHide = sal_False; - if ( aValues[0] >>= bHide ) - m_aOptionNodeList.insert( OptionNodeList::value_type( sNode, bHide ) ); - - if ( _eType != NT_Option ) - { - OUString sNodes( sNode + sSet ); - Sequence< OUString > aNodes = GetNodeNames( sNodes ); - if ( aNodes.getLength() > 0 ) - { - for ( sal_uInt32 n = 0; n < (sal_uInt32)aNodes.getLength(); ++n ) - { - OUString sSubNodeName( sNodes + m_sPathDelimiter + aNodes[n] ); - ReadNode( sSubNodeName, _eType == NT_Group ? NT_Page : NT_Option ); - } - } - } -} - -// ----------------------------------------------------------------------- - -OUString getGroupPath( const OUString& _rGroup ) -{ - return OUString( ROOT_NODE + OUString('/') + _rGroup + OUString('/') ); -} -OUString getPagePath( const OUString& _rPage ) -{ - return OUString( PAGES_NODE + OUString('/') + _rPage + OUString('/') ); -} -OUString getOptionPath( const OUString& _rOption ) -{ - return OUString( OPTIONS_NODE + OUString('/') + _rOption + OUString('/') ); -} - -// ----------------------------------------------------------------------- - -sal_Bool SvtOptionsDlgOptions_Impl::IsHidden( const OUString& _rPath ) const -{ - sal_Bool bRet = sal_False; - OptionNodeList::const_iterator pIter = m_aOptionNodeList.find( _rPath ); - if ( pIter != m_aOptionNodeList.end() ) - bRet = pIter->second; - return bRet; -} - -// ----------------------------------------------------------------------- - -sal_Bool SvtOptionsDlgOptions_Impl::IsGroupHidden( const OUString& _rGroup ) const -{ - return IsHidden( getGroupPath( _rGroup ) ); -} - -// ----------------------------------------------------------------------- - -sal_Bool SvtOptionsDlgOptions_Impl::IsPageHidden( const OUString& _rPage, const OUString& _rGroup ) const -{ - return IsHidden( getGroupPath( _rGroup ) + getPagePath( _rPage ) ); -} - -// ----------------------------------------------------------------------- - -sal_Bool SvtOptionsDlgOptions_Impl::IsOptionHidden( - const OUString& _rOption, const OUString& _rPage, const OUString& _rGroup ) const -{ - return IsHidden( getGroupPath( _rGroup ) + getPagePath( _rPage ) + getOptionPath( _rOption ) ); -} - -// ----------------------------------------------------------------------- - -SvtOptionsDialogOptions::SvtOptionsDialogOptions() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( SvtOptionsDlgOptions_Impl::getInitMutex() ); - ++nRefCount; - if ( !pOptions ) - { - pOptions = new SvtOptionsDlgOptions_Impl; - - ItemHolder1::holdConfigItem( E_OPTIONSDLGOPTIONS ); - } - m_pImp = pOptions; -} - -// ----------------------------------------------------------------------- - -SvtOptionsDialogOptions::~SvtOptionsDialogOptions() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( SvtOptionsDlgOptions_Impl::getInitMutex() ); - if ( !--nRefCount ) - { - if ( pOptions->IsModified() ) - pOptions->Commit(); - DELETEZ( pOptions ); - } -} - -sal_Bool SvtOptionsDialogOptions::IsGroupHidden( const String& _rGroup ) const -{ - return m_pImp->IsGroupHidden( _rGroup ); -} - -sal_Bool SvtOptionsDialogOptions::IsPageHidden( const String& _rPage, const String& _rGroup ) const -{ - return m_pImp->IsPageHidden( _rPage, _rGroup ); -} - -sal_Bool SvtOptionsDialogOptions::IsOptionHidden( - const String& _rOption, const String& _rPage, const String& _rGroup ) const -{ - return m_pImp->IsOptionHidden( _rOption, _rPage, _rGroup ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/pathoptions.cxx b/unotools/source/config/pathoptions.cxx deleted file mode 100644 index 76247f55b4..0000000000 --- a/unotools/source/config/pathoptions.cxx +++ /dev/null @@ -1,1058 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/pathoptions.hxx> -#include <unotools/configitem.hxx> -#include <unotools/configmgr.hxx> -#include <tools/debug.hxx> -#include <tools/resmgr.hxx> -#include <tools/urlobj.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <osl/mutex.hxx> -#include <osl/file.hxx> -#include <unotools/localfilehelper.hxx> -#include <unotools/bootstrap.hxx> - -#include <unotools/ucbhelper.hxx> -#include <comphelper/processfactory.hxx> -#include <comphelper/componentcontext.hxx> -#include <com/sun/star/beans/XFastPropertySet.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/beans/PropertyAttribute.hpp> -#include <com/sun/star/beans/XPropertySetInfo.hpp> -#include <com/sun/star/util/XStringSubstitution.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/util/XMacroExpander.hpp> -#include <rtl/instance.hxx> - -#include <itemholder1.hxx> - -#include <vector> -#include <boost/unordered_map.hpp> - -using namespace osl; -using namespace utl; -using namespace com::sun::star::uno; -using namespace com::sun::star::beans; -using namespace com::sun::star::util; -using namespace com::sun::star::lang; - -using ::rtl::OUString; -using ::rtl::OString; -using ::rtl::OStringToOUString; - -// define ---------------------------------------------------------------- - -#define SEARCHPATH_DELIMITER ';' - -#define ASCII_STR(s) OUString( RTL_CONSTASCII_USTRINGPARAM(s) ) - -#define SIGN_STARTVARIABLE ASCII_STR("$(") -#define SIGN_ENDVARIABLE ASCII_STR(")") - -// Supported variables by the old SvtPathOptions implementation -#define SUBSTITUTE_INST "$(inst)" -#define SUBSTITUTE_PROG "$(prog)" -#define SUBSTITUTE_USER "$(user)" -#define SUBSTITUTE_INSTPATH "$(instpath)" -#define SUBSTITUTE_PROGPATH "$(progpath)" -#define SUBSTITUTE_USERPATH "$(userpath)" -#define SUBSTITUTE_INSTURL "$(insturl)" -#define SUBSTITUTE_PROGURL "$(progurl)" -#define SUBSTITUTE_USERURL "$(userurl)" -#define SUBSTITUTE_PATH "$(path)" -//#define SUBSTITUTE_LANG "$(lang)" -#define SUBSTITUTE_LANGID "$(langid)" -#define SUBSTITUTE_VLANG "$(vlang)" -#define SUBSTITUTE_WORKDIRURL "$(workdirurl)" - -#define STRPOS_NOTFOUND -1 - -struct OUStringHashCode -{ - size_t operator()( const ::rtl::OUString& sString ) const - { - return sString.hashCode(); - } -}; - -enum VarNameProperty -{ - VAR_NEEDS_SYSTEM_PATH, - VAR_NEEDS_FILEURL -}; - -class NameToHandleMap : public ::boost::unordered_map< ::rtl::OUString, sal_Int32, OUStringHashCode, ::std::equal_to< ::rtl::OUString > > -{ - public: - inline void free() { NameToHandleMap().swap( *this ); } -}; - -class EnumToHandleMap : public ::boost::unordered_map< sal_Int32, sal_Int32, boost::hash< sal_Int32 >, std::equal_to< sal_Int32 > > -{ - public: - inline void free() { EnumToHandleMap().swap( *this ); } -}; - -class VarNameToEnumMap : public ::boost::unordered_map< OUString, VarNameProperty, OUStringHashCode, ::std::equal_to< OUString > > -{ - public: - inline void free() { VarNameToEnumMap().swap( *this ); } -}; - - -// class SvtPathOptions_Impl --------------------------------------------- -class SvtPathOptions_Impl -{ - private: - // Local variables to return const references - std::vector< String > m_aPathArray; - Reference< XFastPropertySet > m_xPathSettings; - Reference< XStringSubstitution > m_xSubstVariables; - Reference< XMacroExpander > m_xMacroExpander; - mutable EnumToHandleMap m_aMapEnumToPropHandle; - VarNameToEnumMap m_aMapVarNamesToEnum; - - ::com::sun::star::lang::Locale m_aLocale; - String m_aEmptyString; - mutable ::osl::Mutex m_aMutex; - - public: - SvtPathOptions_Impl(); - - // get the pathes, not const because of using a mutex - const String& GetPath( SvtPathOptions::Pathes ); - const String& GetAddinPath() { return GetPath( SvtPathOptions::PATH_ADDIN ); } - const String& GetAutoCorrectPath() { return GetPath( SvtPathOptions::PATH_AUTOCORRECT ); } - const String& GetAutoTextPath() { return GetPath( SvtPathOptions::PATH_AUTOTEXT ); } - const String& GetBackupPath() { return GetPath( SvtPathOptions::PATH_BACKUP ); } - const String& GetBasicPath() { return GetPath( SvtPathOptions::PATH_BASIC ); } - const String& GetBitmapPath() { return GetPath( SvtPathOptions::PATH_BITMAP ); } - const String& GetConfigPath() { return GetPath( SvtPathOptions::PATH_CONFIG ); } - const String& GetDictionaryPath() { return GetPath( SvtPathOptions::PATH_DICTIONARY ); } - const String& GetFavoritesPath() { return GetPath( SvtPathOptions::PATH_FAVORITES ); } - const String& GetFilterPath() { return GetPath( SvtPathOptions::PATH_FILTER ); } - const String& GetGalleryPath() { return GetPath( SvtPathOptions::PATH_GALLERY ); } - const String& GetGraphicPath() { return GetPath( SvtPathOptions::PATH_GRAPHIC ); } - const String& GetHelpPath() { return GetPath( SvtPathOptions::PATH_HELP ); } - const String& GetLinguisticPath() { return GetPath( SvtPathOptions::PATH_LINGUISTIC ); } - const String& GetModulePath() { return GetPath( SvtPathOptions::PATH_MODULE ); } - const String& GetPalettePath() { return GetPath( SvtPathOptions::PATH_PALETTE ); } - const String& GetPluginPath() { return GetPath( SvtPathOptions::PATH_PLUGIN ); } - const String& GetStoragePath() { return GetPath( SvtPathOptions::PATH_STORAGE ); } - const String& GetTempPath() { return GetPath( SvtPathOptions::PATH_TEMP ); } - const String& GetTemplatePath() { return GetPath( SvtPathOptions::PATH_TEMPLATE ); } - const String& GetUserConfigPath() { return GetPath( SvtPathOptions::PATH_USERCONFIG ); } - const String& GetWorkPath() { return GetPath( SvtPathOptions::PATH_WORK ); } - const String& GetUIConfigPath() { return GetPath( SvtPathOptions::PATH_UICONFIG ); } - const String& GetFingerprintPath() { return GetPath( SvtPathOptions::PATH_FINGERPRINT ); } - - // set the pathes - void SetPath( SvtPathOptions::Pathes, const String& rNewPath ); - void SetAddinPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_ADDIN, rPath ); } - void SetAutoCorrectPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_AUTOCORRECT, rPath ); } - void SetAutoTextPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_AUTOTEXT, rPath ); } - void SetBackupPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_BACKUP, rPath ); } - void SetBasicPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_BASIC, rPath ); } - void SetBitmapPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_BITMAP, rPath ); } - void SetConfigPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_CONFIG, rPath ); } - void SetDictionaryPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_DICTIONARY, rPath ); } - void SetFavoritesPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_FAVORITES, rPath ); } - void SetFilterPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_FILTER, rPath ); } - void SetGalleryPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_GALLERY, rPath ); } - void SetGraphicPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_GRAPHIC, rPath ); } - void SetHelpPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_HELP, rPath ); } - void SetLinguisticPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_LINGUISTIC, rPath ); } - void SetModulePath( const String& rPath ) { SetPath( SvtPathOptions::PATH_MODULE, rPath ); } - void SetPalettePath( const String& rPath ) { SetPath( SvtPathOptions::PATH_PALETTE, rPath ); } - void SetPluginPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_PLUGIN, rPath ); } - void SetStoragePath( const String& rPath ) { SetPath( SvtPathOptions::PATH_STORAGE, rPath ); } - void SetTempPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_TEMP, rPath ); } - void SetTemplatePath( const String& rPath ) { SetPath( SvtPathOptions::PATH_TEMPLATE, rPath ); } - void SetUserConfigPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_USERCONFIG, rPath ); } - void SetWorkPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_WORK, rPath ); } - - rtl::OUString SubstVar( const rtl::OUString& rVar ) const; - rtl::OUString ExpandMacros( const rtl::OUString& rPath ) const; - rtl::OUString UsePathVariables( const rtl::OUString& rPath ) const; - - ::com::sun::star::lang::Locale GetLocale() const { return m_aLocale; } - - sal_Bool IsPathReadonly(SvtPathOptions::Pathes ePath)const; -}; - -// global ---------------------------------------------------------------- - -static SvtPathOptions_Impl* pOptions = NULL; -static sal_Int32 nRefCount = 0; - -// functions ------------------------------------------------------------- -struct PropertyStruct -{ - const char* pPropName; // The ascii name of the Office path - SvtPathOptions::Pathes ePath; // The enum value used by SvtPathOptions -}; - -struct VarNameAttribute -{ - const char* pVarName; // The name of the path variable - VarNameProperty eVarProperty; // Which return value is needed by this path variable -}; - -static PropertyStruct aPropNames[] = -{ - { "Addin", SvtPathOptions::PATH_ADDIN }, - { "AutoCorrect", SvtPathOptions::PATH_AUTOCORRECT }, - { "AutoText", SvtPathOptions::PATH_AUTOTEXT }, - { "Backup", SvtPathOptions::PATH_BACKUP }, - { "Basic", SvtPathOptions::PATH_BASIC }, - { "Bitmap", SvtPathOptions::PATH_BITMAP }, - { "Config", SvtPathOptions::PATH_CONFIG }, - { "Dictionary", SvtPathOptions::PATH_DICTIONARY }, - { "Favorite", SvtPathOptions::PATH_FAVORITES }, - { "Filter", SvtPathOptions::PATH_FILTER }, - { "Gallery", SvtPathOptions::PATH_GALLERY }, - { "Graphic", SvtPathOptions::PATH_GRAPHIC }, - { "Help", SvtPathOptions::PATH_HELP }, - { "Linguistic", SvtPathOptions::PATH_LINGUISTIC }, - { "Module", SvtPathOptions::PATH_MODULE }, - { "Palette", SvtPathOptions::PATH_PALETTE }, - { "Plugin", SvtPathOptions::PATH_PLUGIN }, - { "Storage", SvtPathOptions::PATH_STORAGE }, - { "Temp", SvtPathOptions::PATH_TEMP }, - { "Template", SvtPathOptions::PATH_TEMPLATE }, - { "UserConfig", SvtPathOptions::PATH_USERCONFIG }, - { "Work", SvtPathOptions::PATH_WORK }, - { "UIConfig", SvtPathOptions::PATH_UICONFIG }, - { "Fingerprint", SvtPathOptions::PATH_FINGERPRINT } -}; - -static VarNameAttribute aVarNameAttribute[] = -{ - { SUBSTITUTE_INSTPATH, VAR_NEEDS_SYSTEM_PATH }, // $(instpath) - { SUBSTITUTE_PROGPATH, VAR_NEEDS_SYSTEM_PATH }, // $(progpath) - { SUBSTITUTE_USERPATH, VAR_NEEDS_SYSTEM_PATH }, // $(userpath) - { SUBSTITUTE_PATH, VAR_NEEDS_SYSTEM_PATH }, // $(path) -}; - -// class SvtPathOptions_Impl --------------------------------------------- - -const String& SvtPathOptions_Impl::GetPath( SvtPathOptions::Pathes ePath ) -{ - if ( ePath >= SvtPathOptions::PATH_COUNT ) - return m_aEmptyString; - - ::osl::MutexGuard aGuard( m_aMutex ); - - try - { - OUString aPathValue; - String aResult; - sal_Int32 nHandle = m_aMapEnumToPropHandle[ (sal_Int32)ePath ]; - - // Substitution is done by the service itself using the substition service - Any a = m_xPathSettings->getFastPropertyValue( nHandle ); - a >>= aPathValue; - if( ePath == SvtPathOptions::PATH_ADDIN || - ePath == SvtPathOptions::PATH_FILTER || - ePath == SvtPathOptions::PATH_HELP || - ePath == SvtPathOptions::PATH_MODULE || - ePath == SvtPathOptions::PATH_PLUGIN || - ePath == SvtPathOptions::PATH_STORAGE - ) - { - // These office paths have to be converted to system pathes - utl::LocalFileHelper::ConvertURLToPhysicalName( aPathValue, aResult ); - aPathValue = aResult; - } - - m_aPathArray[ ePath ] = aPathValue; - return m_aPathArray[ ePath ]; - } - catch (UnknownPropertyException &) - { - } - - return m_aEmptyString; -} -// ----------------------------------------------------------------------- -sal_Bool SvtPathOptions_Impl::IsPathReadonly(SvtPathOptions::Pathes ePath)const -{ - ::osl::MutexGuard aGuard( m_aMutex ); - sal_Bool bReadonly = sal_False; - if ( ePath < SvtPathOptions::PATH_COUNT ) - { - Reference<XPropertySet> xPrSet(m_xPathSettings, UNO_QUERY); - if(xPrSet.is()) - { - Reference<XPropertySetInfo> xInfo = xPrSet->getPropertySetInfo(); - const char* pA = aPropNames[ePath].pPropName; - ::rtl::OUString sU = OUString::createFromAscii(pA); - Property aProperty = xInfo->getPropertyByName(sU); - bReadonly = 0 != (aProperty.Attributes & PropertyAttribute::READONLY); - } - } - return bReadonly; -} -// ----------------------------------------------------------------------- - -void SvtPathOptions_Impl::SetPath( SvtPathOptions::Pathes ePath, const String& rNewPath ) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - - if ( ePath < SvtPathOptions::PATH_COUNT ) - { - String aResult; - OUString aNewValue; - Any a; - - switch ( ePath ) - { - case SvtPathOptions::PATH_ADDIN: - case SvtPathOptions::PATH_FILTER: - case SvtPathOptions::PATH_HELP: - case SvtPathOptions::PATH_MODULE: - case SvtPathOptions::PATH_PLUGIN: - case SvtPathOptions::PATH_STORAGE: - { - // These office paths have to be convert back to UCB-URL's - utl::LocalFileHelper::ConvertPhysicalNameToURL( rNewPath, aResult ); - aNewValue = aResult; - } - break; - - default: - aNewValue = rNewPath; - } - - // Resubstitution is done by the service itself using the substition service - a <<= aNewValue; - try - { - m_xPathSettings->setFastPropertyValue( m_aMapEnumToPropHandle[ (sal_Int32)ePath], a ); - } - catch (const Exception&) - { - } - } -} - -//------------------------------------------------------------------------- - -OUString SvtPathOptions_Impl::ExpandMacros( const rtl::OUString& rPath ) const -{ - ::rtl::OUString sExpanded( rPath ); - - const INetURLObject aParser( rPath ); - if ( aParser.GetProtocol() == INET_PROT_VND_SUN_STAR_EXPAND ) - sExpanded = m_xMacroExpander->expandMacros( aParser.GetURLPath( INetURLObject::DECODE_WITH_CHARSET ) ); - - return sExpanded; -} - -//------------------------------------------------------------------------- - -OUString SvtPathOptions_Impl::UsePathVariables( const OUString& rPath ) const -{ - return m_xSubstVariables->reSubstituteVariables( rPath ); -} - -// ----------------------------------------------------------------------- - -OUString SvtPathOptions_Impl::SubstVar( const OUString& rVar ) const -{ - // Don't work at parameter-string directly. Copy it. - OUString aWorkText = rVar; - - // Convert the returned path to system path! - sal_Bool bConvertLocal = sal_False; - - // Search for first occure of "$(...". - sal_Int32 nPosition = aWorkText.indexOf( SIGN_STARTVARIABLE ); // = first position of "$(" in string - sal_Int32 nLength = 0; // = count of letters from "$(" to ")" in string - - // Have we found any variable like "$(...)"? - if ( nPosition != STRPOS_NOTFOUND ) - { - // Yes; Get length of found variable. - // If no ")" was found - nLength is set to 0 by default! see before. - sal_Int32 nEndPosition = aWorkText.indexOf( SIGN_ENDVARIABLE, nPosition ); - if ( nEndPosition != STRPOS_NOTFOUND ) - nLength = nEndPosition - nPosition + 1; - } - - // Is there another path variable? - while ( ( nPosition != STRPOS_NOTFOUND ) && ( nLength > 0 ) ) - { - // YES; Get the next variable for replace. - OUString aReplacement; - OUString aSubString = aWorkText.copy( nPosition, nLength ); - aSubString = aSubString.toAsciiLowerCase(); - - // Look for special variable that needs a system path. - VarNameToEnumMap::const_iterator pIter = m_aMapVarNamesToEnum.find( aSubString ); - if ( pIter != m_aMapVarNamesToEnum.end() ) - bConvertLocal = sal_True; - - nPosition += nLength; - - // We must control index in string before call something at OUString! - // The OUString-implementation don't do it for us :-( but the result is not defined otherwise. - if ( nPosition + 1 > aWorkText.getLength() ) - { - // Position is out of range. Break loop! - nPosition = STRPOS_NOTFOUND; - nLength = 0; - } - else - { - // Else; Position is valid. Search for next variable. - nPosition = aWorkText.indexOf( SIGN_STARTVARIABLE, nPosition ); - // Have we found any variable like "$(...)"? - if ( nPosition != STRPOS_NOTFOUND ) - { - // Yes; Get length of found variable. If no ")" was found - nLength must set to 0! - nLength = 0; - sal_Int32 nEndPosition = aWorkText.indexOf( SIGN_ENDVARIABLE, nPosition ); - if ( nEndPosition != STRPOS_NOTFOUND ) - nLength = nEndPosition - nPosition + 1; - } - } - } - - aWorkText = m_xSubstVariables->substituteVariables( rVar, sal_False ); - - if ( bConvertLocal ) - { - // Convert the URL to a system path for special path variables - String aReturn; - utl::LocalFileHelper::ConvertURLToPhysicalName( aWorkText, aReturn ); - return aReturn; - } - - return aWorkText; -} - -// ----------------------------------------------------------------------- - -SvtPathOptions_Impl::SvtPathOptions_Impl() : - m_aPathArray( (sal_Int32)SvtPathOptions::PATH_COUNT ) -{ - Reference< XMultiServiceFactory > xSMgr = comphelper::getProcessServiceFactory(); - - // Create necessary services - m_xPathSettings = Reference< XFastPropertySet >( xSMgr->createInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.util.PathSettings" ))), - UNO_QUERY ); - if ( !m_xPathSettings.is() ) - { - // #112719#: check for existance - OSL_FAIL( "SvtPathOptions_Impl::SvtPathOptions_Impl(): #112719# happened again!" ); - throw RuntimeException( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Service com.sun.star.util.PathSettings cannot be created" )), - Reference< XInterface >() ); - } - - ::comphelper::ComponentContext aContext( xSMgr ); - m_xSubstVariables.set( aContext.createComponent( "com.sun.star.util.PathSubstitution" ), UNO_QUERY_THROW ); - m_xMacroExpander.set( aContext.getSingleton( "com.sun.star.util.theMacroExpander" ), UNO_QUERY_THROW ); - - // Create temporary hash map to have a mapping between property names and property handles - Reference< XPropertySet > xPropertySet = Reference< XPropertySet >( m_xPathSettings, UNO_QUERY ); - Reference< XPropertySetInfo > xPropSetInfo = xPropertySet->getPropertySetInfo(); - Sequence< Property > aPathPropSeq = xPropSetInfo->getProperties(); - - NameToHandleMap aTempHashMap; - for ( sal_Int32 n = 0; n < aPathPropSeq.getLength(); n++ ) - { - const com::sun::star::beans::Property& aProperty = aPathPropSeq[n]; - aTempHashMap.insert( NameToHandleMap::value_type( aProperty.Name, aProperty.Handle )); - } - - // Create mapping between internal enum (SvtPathOptions::Pathes) and property handle - sal_Int32 nCount = sizeof( aPropNames ) / sizeof( PropertyStruct ); - sal_Int32 i; - for ( i = 0; i < nCount; i++ ) - { - NameToHandleMap::const_iterator pIter = - aTempHashMap.find( rtl::OUString::createFromAscii( aPropNames[i].pPropName )); - - if ( pIter != aTempHashMap.end() ) - { - sal_Int32 nHandle = pIter->second; - sal_Int32 nEnum = aPropNames[i].ePath; - m_aMapEnumToPropHandle.insert( EnumToHandleMap::value_type( nEnum, nHandle )); - } - } - - // Create hash map for path variables that need a system path as a return value! - nCount = sizeof( aVarNameAttribute ) / sizeof( VarNameAttribute ); - for ( i = 0; i < nCount; i++ ) - { - m_aMapVarNamesToEnum.insert( VarNameToEnumMap::value_type( - OUString::createFromAscii( aVarNameAttribute[i].pVarName ), - aVarNameAttribute[i].eVarProperty )); - } - - // Set language type! - Any aLocale = ConfigManager::GetConfigManager().GetDirectConfigProperty( ConfigManager::LOCALE ); - OUString aLocaleStr; - if ( aLocale >>= aLocaleStr ) - { - sal_Int32 nIndex = 0; - m_aLocale.Language = aLocaleStr.getToken(0, '-', nIndex ); - m_aLocale.Country = aLocaleStr.getToken(0, '-', nIndex ); - m_aLocale.Variant = aLocaleStr.getToken(0, '-', nIndex ); - } - else - { - DBG_ASSERT(!aLocale.hasValue(), "wrong any type"); - m_aLocale.Language = OStringToOUString(OString("en"), RTL_TEXTENCODING_UTF8); - m_aLocale.Country = OStringToOUString(OString("US"), RTL_TEXTENCODING_UTF8); - m_aLocale.Variant = OStringToOUString(OString(""), RTL_TEXTENCODING_UTF8); - } -} - -// ----------------------------------------------------------------------- - -// class SvtPathOptions -------------------------------------------------- - -namespace { struct lclMutex : public rtl::Static< ::osl::Mutex, lclMutex > {}; } - -SvtPathOptions::SvtPathOptions() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( lclMutex::get() ); - if ( !pOptions ) - { - pOptions = new SvtPathOptions_Impl; - ItemHolder1::holdConfigItem(E_PATHOPTIONS); - } - ++nRefCount; - pImp = pOptions; -} - -// ----------------------------------------------------------------------- - -SvtPathOptions::~SvtPathOptions() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( lclMutex::get() ); - if ( !--nRefCount ) - { - DELETEZ( pOptions ); - } -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetAddinPath() const -{ - return pImp->GetAddinPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetAutoCorrectPath() const -{ - return pImp->GetAutoCorrectPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetAutoTextPath() const -{ - return pImp->GetAutoTextPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetBackupPath() const -{ - return pImp->GetBackupPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetBasicPath() const -{ - return pImp->GetBasicPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetBitmapPath() const -{ - return pImp->GetBitmapPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetConfigPath() const -{ - return pImp->GetConfigPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetDictionaryPath() const -{ - return pImp->GetDictionaryPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetFavoritesPath() const -{ - return pImp->GetFavoritesPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetFilterPath() const -{ - return pImp->GetFilterPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetGalleryPath() const -{ - return pImp->GetGalleryPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetGraphicPath() const -{ - return pImp->GetGraphicPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetHelpPath() const -{ - return pImp->GetHelpPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetLinguisticPath() const -{ - return pImp->GetLinguisticPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetFingerprintPath() const -{ - return pImp->GetFingerprintPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetModulePath() const -{ - return pImp->GetModulePath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetPalettePath() const -{ - return pImp->GetPalettePath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetPluginPath() const -{ - return pImp->GetPluginPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetStoragePath() const -{ - return pImp->GetStoragePath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetTempPath() const -{ - return pImp->GetTempPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetTemplatePath() const -{ - return pImp->GetTemplatePath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetUserConfigPath() const -{ - return pImp->GetUserConfigPath(); -} - -const String& SvtPathOptions::GetUIConfigPath() const -{ - return pImp->GetUIConfigPath(); -} - -// ----------------------------------------------------------------------- - -const String& SvtPathOptions::GetWorkPath() const -{ - return pImp->GetWorkPath(); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetAddinPath( const String& rPath ) -{ - pImp->SetAddinPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetAutoCorrectPath( const String& rPath ) -{ - pImp->SetAutoCorrectPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetAutoTextPath( const String& rPath ) -{ - pImp->SetAutoTextPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetBackupPath( const String& rPath ) -{ - pImp->SetBackupPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetBasicPath( const String& rPath ) -{ - pImp->SetBasicPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetBitmapPath( const String& rPath ) -{ - pImp->SetBitmapPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetConfigPath( const String& rPath ) -{ - pImp->SetConfigPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetDictionaryPath( const String& rPath ) -{ - pImp->SetDictionaryPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetFavoritesPath( const String& rPath ) -{ - pImp->SetFavoritesPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetFilterPath( const String& rPath ) -{ - pImp->SetFilterPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetGalleryPath( const String& rPath ) -{ - pImp->SetGalleryPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetGraphicPath( const String& rPath ) -{ - pImp->SetGraphicPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetHelpPath( const String& rPath ) -{ - pImp->SetHelpPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetLinguisticPath( const String& rPath ) -{ - pImp->SetLinguisticPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetModulePath( const String& rPath ) -{ - pImp->SetModulePath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetPalettePath( const String& rPath ) -{ - pImp->SetPalettePath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetPluginPath( const String& rPath ) -{ - pImp->SetPluginPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetStoragePath( const String& rPath ) -{ - pImp->SetStoragePath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetTempPath( const String& rPath ) -{ - pImp->SetTempPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetTemplatePath( const String& rPath ) -{ - pImp->SetTemplatePath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetUserConfigPath( const String& rPath ) -{ - pImp->SetUserConfigPath( rPath ); -} - -// ----------------------------------------------------------------------- - -void SvtPathOptions::SetWorkPath( const String& rPath ) -{ - pImp->SetWorkPath( rPath ); -} - -// ----------------------------------------------------------------------- - -String SvtPathOptions::SubstituteVariable( const String& rVar ) const -{ - String aRet = pImp->SubstVar( rVar ); - return aRet; -} - -// ----------------------------------------------------------------------- - -String SvtPathOptions::ExpandMacros( const String& rPath ) const -{ - return pImp->ExpandMacros( rPath ); -} - -// ----------------------------------------------------------------------- - -String SvtPathOptions::UseVariable( const String& rPath ) const -{ - String aRet = pImp->UsePathVariables( rPath ); - return aRet; -} - -// ----------------------------------------------------------------------- - -sal_Bool SvtPathOptions::SearchFile( String& rIniFile, Pathes ePath ) -{ - // check parameter: empty inifile name? - if ( !rIniFile.Len() ) - { - DBG_ERRORFILE( "SvtPathOptions::SearchFile(): invalid parameter" ); - return sal_False; - } - - String aIniFile = pImp->SubstVar( rIniFile ); - sal_Bool bRet = sal_False; - - switch ( ePath ) - { - case PATH_USERCONFIG: - { - // path is a URL - bRet = sal_True; - INetURLObject aObj( GetUserConfigPath() ); - xub_StrLen i, nCount = aIniFile.GetTokenCount( '/' ); - for ( i = 0; i < nCount; ++i ) - aObj.insertName( aIniFile.GetToken( i, '/' ) ); - - if ( !::utl::UCBContentHelper::Exists( aObj.GetMainURL( INetURLObject::NO_DECODE ) ) ) - { - aObj.SetSmartURL( GetConfigPath() ); - aObj.insertName( aIniFile ); - bRet = ::utl::UCBContentHelper::Exists( aObj.GetMainURL( INetURLObject::NO_DECODE ) ); - } - - if ( bRet ) - rIniFile = aObj.GetMainURL( INetURLObject::NO_DECODE ); - - break; - } - - default: - { - String aPath; - switch ( ePath ) - { - case PATH_ADDIN: aPath = GetAddinPath(); break; - case PATH_AUTOCORRECT: aPath = GetAutoCorrectPath(); break; - case PATH_AUTOTEXT: aPath = GetAutoTextPath(); break; - case PATH_BACKUP: aPath = GetBackupPath(); break; - case PATH_BASIC: aPath = GetBasicPath(); break; - case PATH_BITMAP: aPath = GetBitmapPath(); break; - case PATH_CONFIG: aPath = GetConfigPath(); break; - case PATH_DICTIONARY: aPath = GetDictionaryPath(); break; - case PATH_FAVORITES: aPath = GetFavoritesPath(); break; - case PATH_FILTER: aPath = GetFilterPath(); break; - case PATH_GALLERY: aPath = GetGalleryPath(); break; - case PATH_GRAPHIC: aPath = GetGraphicPath(); break; - case PATH_HELP: aPath = GetHelpPath(); break; - case PATH_LINGUISTIC: aPath = GetLinguisticPath(); break; - case PATH_MODULE: aPath = GetModulePath(); break; - case PATH_PALETTE: aPath = GetPalettePath(); break; - case PATH_PLUGIN: aPath = GetPluginPath(); break; - case PATH_STORAGE: aPath = GetStoragePath(); break; - case PATH_TEMP: aPath = GetTempPath(); break; - case PATH_TEMPLATE: aPath = GetTemplatePath(); break; - case PATH_WORK: aPath = GetWorkPath(); break; - case PATH_UICONFIG: aPath = GetUIConfigPath(); break; - case PATH_FINGERPRINT: aPath = GetFingerprintPath(); break; - case PATH_USERCONFIG:/*-Wall???*/ break; - case PATH_COUNT: /*-Wall???*/ break; - } - - sal_uInt16 j, nIdx = 0, nTokenCount = aPath.GetTokenCount( SEARCHPATH_DELIMITER ); - for ( j = 0; j < nTokenCount; ++j ) - { - sal_Bool bIsURL = sal_True; - String aPathToken = aPath.GetToken( 0, SEARCHPATH_DELIMITER, nIdx ); - INetURLObject aObj( aPathToken ); - if ( aObj.HasError() ) - { - bIsURL = sal_False; - String aURL; - if ( LocalFileHelper::ConvertPhysicalNameToURL( aPathToken, aURL ) ) - aObj.SetURL( aURL ); - } - if ( aObj.GetProtocol() == INET_PROT_VND_SUN_STAR_EXPAND ) - { - ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() ); - Reference< XMacroExpander > xMacroExpander( aContext.getSingleton( "com.sun.star.util.theMacroExpander" ), UNO_QUERY ); - OSL_ENSURE( xMacroExpander.is(), "SvtPathOptions::SearchFile: unable to access the MacroExpander singleton!" ); - if ( xMacroExpander.is() ) - { - const ::rtl::OUString sExpandedPath = xMacroExpander->expandMacros( aObj.GetURLPath( INetURLObject::DECODE_WITH_CHARSET ) ); - aObj.SetURL( sExpandedPath ); - } - } - - xub_StrLen i, nCount = aIniFile.GetTokenCount( '/' ); - for ( i = 0; i < nCount; ++i ) - aObj.insertName( aIniFile.GetToken( i, '/' ) ); - bRet = ::utl::UCBContentHelper::Exists( aObj.GetMainURL( INetURLObject::NO_DECODE ) ); - - if ( bRet ) - { - if ( !bIsURL ) - ::utl::LocalFileHelper::ConvertURLToPhysicalName( - aObj.GetMainURL( INetURLObject::NO_DECODE ), rIniFile ); - else - rIniFile = aObj.GetMainURL( INetURLObject::NO_DECODE ); - break; - } - } - } - } - - return bRet; -} - -// ----------------------------------------------------------------------- - -::com::sun::star::lang::Locale SvtPathOptions::GetLocale() const -{ - return pImp->GetLocale(); -} -// ----------------------------------------------------------------------- -sal_Bool SvtPathOptions::IsPathReadonly(Pathes ePath)const -{ - return pImp->IsPathReadonly(ePath); -} -// ----------------------------------------------------------------------- -const String& SvtPathOptions::GetPath(Pathes ePath)const -{ - return pImp->GetPath(ePath); -} -// ----------------------------------------------------------------------- -void SvtPathOptions::SetPath( SvtPathOptions::Pathes ePath, const String& rNewPath ) -{ - pImp->SetPath(ePath, rNewPath); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/printwarningoptions.cxx b/unotools/source/config/printwarningoptions.cxx deleted file mode 100644 index 64cc55dfe0..0000000000 --- a/unotools/source/config/printwarningoptions.cxx +++ /dev/null @@ -1,406 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/printwarningoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <itemholder1.hxx> - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_START OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Print")) - -#define PROPERTYNAME_PAPERSIZE OUString(RTL_CONSTASCII_USTRINGPARAM("Warning/PaperSize")) -#define PROPERTYNAME_PAPERORIENTATION OUString(RTL_CONSTASCII_USTRINGPARAM("Warning/PaperOrientation")) -#define PROPERTYNAME_NOTFOUND OUString(RTL_CONSTASCII_USTRINGPARAM("Warning/NotFound")) -#define PROPERTYNAME_TRANSPARENCY OUString(RTL_CONSTASCII_USTRINGPARAM("Warning/Transparency")) -#define PROPERTYNAME_PRINTINGMODIFIESDOCUMENT OUString(RTL_CONSTASCII_USTRINGPARAM("PrintingModifiesDocument")) - -#define PROPERTYHANDLE_PAPERSIZE 0 -#define PROPERTYHANDLE_PAPERORIENTATION 1 -#define PROPERTYHANDLE_NOTFOUND 2 -#define PROPERTYHANDLE_TRANSPARENCY 3 -#define PROPERTYHDL_PRINTINGMODIFIESDOCUMENT 4 - -#define PROPERTYCOUNT 5 - -class SvtPrintWarningOptions_Impl : public ConfigItem -{ -public: - -//--------------------------------------------------------------------------------------------------------- -// constructor / destructor -//--------------------------------------------------------------------------------------------------------- - - SvtPrintWarningOptions_Impl(); - ~SvtPrintWarningOptions_Impl(); - -//--------------------------------------------------------------------------------------------------------- -// overloaded methods of baseclass -//--------------------------------------------------------------------------------------------------------- - - virtual void Commit(); - virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); - -//--------------------------------------------------------------------------------------------------------- -// public interface -//--------------------------------------------------------------------------------------------------------- - - sal_Bool IsPaperSize() const { return m_bPaperSize; } - sal_Bool IsPaperOrientation() const { return m_bPaperOrientation; } - sal_Bool IsNotFound() const { return m_bNotFound; } - sal_Bool IsTransparency() const { return m_bTransparency; } - sal_Bool IsModifyDocumentOnPrintingAllowed() const { return m_bModifyDocumentOnPrintingAllowed; } - - void SetPaperSize( sal_Bool bState ) { m_bPaperSize = bState; SetModified(); } - void SetPaperOrientation( sal_Bool bState ) { m_bPaperOrientation = bState; SetModified(); } - void SetNotFound( sal_Bool bState ) { m_bNotFound = bState; SetModified(); } - void SetTransparency( sal_Bool bState ) { m_bTransparency = bState; SetModified(); } - void SetModifyDocumentOnPrintingAllowed( sal_Bool bState ) { m_bModifyDocumentOnPrintingAllowed = bState; SetModified(); } - -//------------------------------------------------------------------------------------------------------------- -// private methods -//------------------------------------------------------------------------------------------------------------- - -private: - - static Sequence< OUString > impl_GetPropertyNames(); - -//------------------------------------------------------------------------------------------------------------- -// private member -//------------------------------------------------------------------------------------------------------------- - -private: - - sal_Bool m_bPaperSize; - sal_Bool m_bPaperOrientation; - sal_Bool m_bNotFound; - sal_Bool m_bTransparency; - sal_Bool m_bModifyDocumentOnPrintingAllowed; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtPrintWarningOptions_Impl::SvtPrintWarningOptions_Impl() : - ConfigItem( ROOTNODE_START ), - m_bPaperSize( sal_False ), - m_bPaperOrientation( sal_False ), - m_bNotFound( sal_False ), - m_bTransparency( sal_True ), - m_bModifyDocumentOnPrintingAllowed( sal_True ) -{ - Sequence< OUString > seqNames( impl_GetPropertyNames() ); - Sequence< Any > seqValues( GetProperties( seqNames ) ); - - DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtPrintWarningOptions_Impl::SvtPrintWarningOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Copy values from list in right order to our internal member. - sal_Int32 nPropertyCount = seqValues.getLength(); - sal_Int32 nProperty = 0; - - for( nProperty=0; nProperty<nPropertyCount; ++nProperty ) - { - DBG_ASSERT( !(seqValues[nProperty].hasValue()==sal_False), "SvtPrintWarningOptions_Impl::SvtPrintWarningOptions_Impl()\nInvalid property value for property detected!\n" ); - - switch( nProperty ) - { - case PROPERTYHANDLE_PAPERSIZE: - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "Invalid type" ); - seqValues[nProperty] >>= m_bPaperSize; - } - break; - - case PROPERTYHANDLE_PAPERORIENTATION: - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "Invalid type" ); - seqValues[nProperty] >>= m_bPaperOrientation; - } - break; - - case PROPERTYHANDLE_NOTFOUND: - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "Invalid type" ); - seqValues[nProperty] >>= m_bNotFound; - } - break; - - case PROPERTYHANDLE_TRANSPARENCY: - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "Invalid type" ); - seqValues[nProperty] >>= m_bTransparency; - } - break; - case PROPERTYHDL_PRINTINGMODIFIESDOCUMENT: - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "Invalid type" ); - seqValues[nProperty] >>= m_bModifyDocumentOnPrintingAllowed; - } - break; - - } - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtPrintWarningOptions_Impl::~SvtPrintWarningOptions_Impl() -{ - if( IsModified() ) - Commit(); -} - -//***************************************************************************************************************** -// Commit -//***************************************************************************************************************** -void SvtPrintWarningOptions_Impl::Commit() -{ - Sequence< OUString > aSeqNames( impl_GetPropertyNames() ); - Sequence< Any > aSeqValues( aSeqNames.getLength() ); - - for( sal_Int32 nProperty = 0, nCount = aSeqNames.getLength(); nProperty < nCount; ++nProperty ) - { - switch( nProperty ) - { - case PROPERTYHANDLE_PAPERSIZE: - aSeqValues[nProperty] <<= m_bPaperSize; - break; - - case PROPERTYHANDLE_PAPERORIENTATION: - aSeqValues[nProperty] <<= m_bPaperOrientation; - break; - - case PROPERTYHANDLE_NOTFOUND: - aSeqValues[nProperty] <<= m_bNotFound; - break; - - case PROPERTYHANDLE_TRANSPARENCY: - aSeqValues[nProperty] <<= m_bTransparency; - break; - case PROPERTYHDL_PRINTINGMODIFIESDOCUMENT: - aSeqValues[nProperty] <<= m_bModifyDocumentOnPrintingAllowed; - break; - } - } - - PutProperties( aSeqNames, aSeqValues ); -} - -void SvtPrintWarningOptions_Impl::Notify( const Sequence< rtl::OUString >& ) -{ -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Sequence< OUString > SvtPrintWarningOptions_Impl::impl_GetPropertyNames() -{ - // Build list of configuration key names. - const OUString pProperties[] = - { - PROPERTYNAME_PAPERSIZE, - PROPERTYNAME_PAPERORIENTATION, - PROPERTYNAME_NOTFOUND, - PROPERTYNAME_TRANSPARENCY, - PROPERTYNAME_PRINTINGMODIFIESDOCUMENT - }; - - // Initialize return sequence with these list ... - const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT ); - - return seqPropertyNames; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtPrintWarningOptions_Impl* SvtPrintWarningOptions::m_pDataContainer = NULL; -sal_Int32 SvtPrintWarningOptions::m_nRefCount = 0; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtPrintWarningOptions::SvtPrintWarningOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already! - if( m_pDataContainer == NULL ) - { - m_pDataContainer = new SvtPrintWarningOptions_Impl(); - ItemHolder1::holdConfigItem(E_PRINTWARNINGOPTIONS); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtPrintWarningOptions::~SvtPrintWarningOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtPrintWarningOptions::IsPaperSize() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsPaperSize(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtPrintWarningOptions::IsPaperOrientation() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsPaperOrientation(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtPrintWarningOptions::IsNotFound() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsNotFound(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtPrintWarningOptions::IsTransparency() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsTransparency(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtPrintWarningOptions::SetPaperSize( sal_Bool bState ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetPaperSize( bState ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtPrintWarningOptions::SetPaperOrientation( sal_Bool bState ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetPaperOrientation( bState ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtPrintWarningOptions::SetNotFound( sal_Bool bState ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetNotFound( bState ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtPrintWarningOptions::SetTransparency( sal_Bool bState ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetTransparency( bState ); -} -// ----------------------------------------------------------------------------- - -sal_Bool SvtPrintWarningOptions::IsModifyDocumentOnPrintingAllowed() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsModifyDocumentOnPrintingAllowed(); -} - -// ----------------------------------------------------------------------------- - -void SvtPrintWarningOptions::SetModifyDocumentOnPrintingAllowed( sal_Bool bState ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetModifyDocumentOnPrintingAllowed( bState ) ; -} - -namespace -{ - class thePrintWarningOptionsMutex : public rtl::Static<osl::Mutex, thePrintWarningOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtPrintWarningOptions::GetOwnStaticMutex() -{ - return thePrintWarningOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/regoptions.cxx b/unotools/source/config/regoptions.cxx deleted file mode 100644 index 1d524752de..0000000000 --- a/unotools/source/config/regoptions.cxx +++ /dev/null @@ -1,497 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/regoptions.hxx> -#include <unotools/confignode.hxx> -#include <tools/date.hxx> -#include <comphelper/processfactory.hxx> -#include <osl/mutex.hxx> -#include <unotools/bootstrap.hxx> -#include <rtl/ustring.hxx> -#include <rtl/instance.hxx> - -//........................................................................ -namespace utl -{ -//........................................................................ - - using namespace ::com::sun::star::uno; - - //==================================================================== - //= local helpers - //==================================================================== - //-------------------------------------------------------------------- - /** converts a string representation of a date into a integer representation - <p>No semantic check is made, i.e. if the string describes the 40.12, this is not recognized. In opposite, - the string must have a valid structure (DD.MM.YYYY).</p> - @return - the integer representation of the date which can be used with the Date class, - or 0 if the given string was no valid date representation - */ - static sal_Int32 lcl_convertString2Date( const ::rtl::OUString& _rStringRep ) - { - sal_Int32 nDateIntRep = 0; - if ( _rStringRep.getLength() == 2 + 1 + 2 + 1 + 4 ) // DD.MM.YYYY - { - // validate the string - sal_Bool bValid = sal_True; - - const sal_Unicode* pStringRep = _rStringRep.getStr(); - sal_Int32 nLen = _rStringRep.getLength(); - for ( sal_Int32 nPos = 0; - bValid && ( nPos < nLen ); - ++nPos, ++pStringRep - ) - { - if ( ( 2 == nPos ) || ( 5 == nPos ) ) - bValid = '.' == *pStringRep; // the number separators - else - bValid = ( *pStringRep >= '0' ) && ( *pStringRep <= '9' ); - } - - // passed the test? - if ( bValid ) - { - Date aDate; - aDate.SetDay ( (sal_uInt16)_rStringRep.copy( 0, 2 ).toInt32( ) ); - aDate.SetMonth ( (sal_uInt16)_rStringRep.copy( 3, 2 ).toInt32( ) ); - aDate.SetYear ( (sal_uInt16)_rStringRep.copy( 6, 4 ).toInt32( ) ); - nDateIntRep = aDate.GetDate(); - } - } - - return nDateIntRep; - } - - //-------------------------------------------------------------------- - static const ::rtl::OUString& lcl_fillToken( const sal_Int32 /* [in] */ _nToken, const sal_Int16 /* [in] */ _nDigits, ::rtl::OUString& /* [out] */ _rToken ) - { - // convert into string - ::rtl::OUString sLeanToken = ::rtl::OUString::valueOf( _nToken ); - // check length - if ( sLeanToken.getLength() < _nDigits ) - { // fill - OSL_ENSURE( _nDigits <= 4, "lcl_fillToken: invalid digit number!" ); - _rToken = ::rtl::OUString( "0000", _nDigits - sLeanToken.getLength(), RTL_TEXTENCODING_ASCII_US ); - _rToken += sLeanToken; - } - else - _rToken = sLeanToken; - - return _rToken; - } - - //-------------------------------------------------------------------- - /** converts a integer representation of a date into a string representation - */ - static ::rtl::OUString lcl_ConvertDate2String( const Date& _rDate ) - { - OSL_ENSURE( _rDate.IsValid(), "lcl_ConvertDate2String: invalid integer representation!" ); - - sal_Unicode cSeparator( '.' ); - ::rtl::OUString sSeparator( &cSeparator, 1 ); - - ::rtl::OUString sStringRep; - ::rtl::OUString sToken; - sStringRep += lcl_fillToken( (sal_Int32)_rDate.GetDay(), 2, sToken ); - sStringRep += sSeparator; - sStringRep += lcl_fillToken( (sal_Int32)_rDate.GetMonth(), 2, sToken ); - sStringRep += sSeparator; - sStringRep += lcl_fillToken( (sal_Int32)_rDate.GetYear(), 4, sToken ); - - return sStringRep; - } - - //-------------------------------------------------------------------- - /// checks whether a given trigger date is reached (i.e. is _before_ the current date) - static sal_Bool lcl_reachedTriggerDate( const Date& _rTriggerDate ) - { - return _rTriggerDate <= Date(); - } - - //-------------------------------------------------------------------- - #define DECLARE_STATIC_LAZY_USTRING( name ) \ - static const ::rtl::OUString& lcl_get##name##Name() \ - { \ - static const ::rtl::OUString sName(RTL_CONSTASCII_USTRINGPARAM( #name )); \ - return sName; \ - } - - DECLARE_STATIC_LAZY_USTRING( ReminderDate ); - DECLARE_STATIC_LAZY_USTRING( RequestDialog ); - DECLARE_STATIC_LAZY_USTRING( ShowMenuItem ); - DECLARE_STATIC_LAZY_USTRING( Patch ); - - //==================================================================== - //= RegOptionsImpl - //==================================================================== - class RegOptionsImpl - { - private: - OConfigurationTreeRoot m_aRegistrationNode; // the configuration node we need to access our persistent data - - String m_sRegistrationURL; // the URL to use when doing an online registration - Date m_aReminderDate; // the reminder date as found in the configuration - sal_Int32 m_nDialogCounter; // the dialog counter - see getDialogPermission - sal_Bool m_bShowMenuItem; // the flag indicating if the registration menu item is allowed - - static RegOptionsImpl* s_pSingleInstance; // the one and only instance of this class - static sal_Int32 s_nInstanceCount; // reference counter for the instances - static sal_Bool s_bThisSessionDone; // the flag indicating if for this session, everything beeing relevant has already been done - - private: - RegOptionsImpl( ); - - static ::osl::Mutex& getStaticMutex(); // get the mutex used to protect the static members of this class - - void commit( ); - sal_Int32 getBuildId() const; - - private: - RegOptions::DialogPermission implGetDialogPermission( ) const; - - public: - static RegOptionsImpl* registerClient( ); - static void revokeClient( ); - - inline sal_Bool hasURL( ) const { return ( 0 != m_sRegistrationURL.Len() ); } - inline sal_Bool allowMenu( ) const { return hasURL() && m_bShowMenuItem; } - inline String getRegistrationURL( ) const { return m_sRegistrationURL; } - - RegOptions::DialogPermission getDialogPermission( ) const; - void markSessionDone( ); - void activateReminder( sal_Int32 _nDaysFromNow ); - void removeReminder(); - }; - - //-------------------------------------------------------------------- - RegOptionsImpl* RegOptionsImpl::s_pSingleInstance = NULL; - sal_Bool RegOptionsImpl::s_bThisSessionDone = sal_False; - sal_Int32 RegOptionsImpl::s_nInstanceCount = 0; - - namespace - { - class theRegOptionsImplMutex : public rtl::Static<osl::Mutex, theRegOptionsImplMutex>{}; - } - - //-------------------------------------------------------------------- - ::osl::Mutex& RegOptionsImpl::getStaticMutex() - { - return theRegOptionsImplMutex::get(); - } - - //-------------------------------------------------------------------- - void RegOptionsImpl::commit( ) - { - m_aRegistrationNode.commit( ); - } - - //-------------------------------------------------------------------- - RegOptionsImpl* RegOptionsImpl::registerClient( ) - { - ::osl::MutexGuard aGuard( getStaticMutex() ); - - if ( !s_pSingleInstance ) - s_pSingleInstance = new RegOptionsImpl; - - ++s_nInstanceCount; - return s_pSingleInstance; - } - - //-------------------------------------------------------------------- - void RegOptionsImpl::revokeClient( ) - { - ::osl::MutexGuard aGuard( getStaticMutex() ); - OSL_ENSURE( s_nInstanceCount, "RegOptionsImpl::revokeClient: there are no clients alive!" ); - OSL_ENSURE( s_pSingleInstance || !s_nInstanceCount, "RegOptionsImpl::revokeClient: invalid instance pointer!" ); - - if ( s_nInstanceCount ) - { - if ( s_pSingleInstance ) - // commit the changes done by this client - s_pSingleInstance->commit(); - - if ( 0 == --s_nInstanceCount ) - { - delete s_pSingleInstance; - s_pSingleInstance = NULL; - } - } - } - - //-------------------------------------------------------------------- - RegOptionsImpl::RegOptionsImpl( ) - :m_nDialogCounter ( 0 ) - ,m_bShowMenuItem ( sal_False ) - { - // create the config node for all our registration information - m_aRegistrationNode = OConfigurationTreeRoot::createWithServiceFactory( - ::comphelper::getProcessServiceFactory(), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.Common/Help/Registration")) - ); - - // cache some data - //the URL to use for online registration - ::rtl::OUString sStringValue; - m_aRegistrationNode.getNodeValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("URL")) ) >>= sStringValue; - m_sRegistrationURL = sStringValue; - - // the state of the dialog - m_aRegistrationNode.getNodeValue( lcl_getRequestDialogName() ) >>= m_nDialogCounter; - - // the flag for showing the menu item - sal_Bool bBoolValue = sal_False; - m_aRegistrationNode.getNodeValue( lcl_getShowMenuItemName() ) >>= bBoolValue; - m_bShowMenuItem = bBoolValue; - - // the reminder date (if any) - sal_Int32 nIntDate = 0; - sStringValue = ::rtl::OUString(); - m_aRegistrationNode.getNodeValue( lcl_getReminderDateName() ) >>= sStringValue; - bool bIsPatchDate = ( sStringValue.equals( lcl_getPatchName() ) != sal_False ); - if ( !bIsPatchDate && sStringValue.getLength() ) - nIntDate = lcl_convertString2Date( sStringValue ); - m_aReminderDate.SetDate( nIntDate ); - } - - //-------------------------------------------------------------------- - RegOptions::DialogPermission RegOptionsImpl::implGetDialogPermission( ) const - { - RegOptions::DialogPermission eResult = RegOptions::dpDisabled; - // no URL or a counter already decreased to zero means the dialog is disabled - if ( hasURL() && ( m_nDialogCounter > 0 ) ) - { - // during every session, the counter will be decreased - // If it reaches zero, the dialog shall be executed - if ( 1 == m_nDialogCounter ) - { - if ( m_aReminderDate.IsValid( ) ) - { // valid reminder date - // assume remind later - eResult = RegOptions::dpRemindLater; - // and check if we reached the reminder date - if ( lcl_reachedTriggerDate( m_aReminderDate ) ) - eResult = RegOptions::dpThisSession; - } - else - eResult = RegOptions::dpThisSession; // execute in this session - } - else - eResult = RegOptions::dpNotThisSession; // first trigger session not reached - - // a last check .... - if ( ( s_bThisSessionDone ) // this session is already marked as "done" - && ( RegOptions::dpThisSession == eResult )// but without this, the state would be "now" - ) - eResult = RegOptions::dpDisabled; // -> change state to "disabled" - } - - return eResult; - } - - //-------------------------------------------------------------------- - RegOptions::DialogPermission RegOptionsImpl::getDialogPermission( ) const - { - OSL_ENSURE( !s_bThisSessionDone, "RegOptionsImpl::getDialogPermission: should never be asked in this session, again!" ); - // Somebody already marked this session as "everything relevant happened". So why sombody (else?) asks - // me again? - - return implGetDialogPermission( ); - } - - //-------------------------------------------------------------------- - void RegOptionsImpl::activateReminder( sal_Int32 _nDaysFromNow ) - { - OSL_ENSURE( s_bThisSessionDone || ( implGetDialogPermission( ) != RegOptions::dpDisabled ), "RegOptionsImpl::activateReminder: invalid call!" ); - OSL_ENSURE( _nDaysFromNow > 0, "RegOptionsImpl::activateReminder: invalid argument!" ); - - // calc the reminder - m_aReminderDate = Date() + _nDaysFromNow; // today (default ctor) + days - - // remember the date - m_aRegistrationNode.setNodeValue( - lcl_getReminderDateName(), - makeAny( lcl_ConvertDate2String( m_aReminderDate ) ) - ); - // to be on the save side, write the counter - m_aRegistrationNode.setNodeValue( - lcl_getRequestDialogName(), - makeAny( (sal_Int32)1 ) - ); - - // mark this session as done - if ( !s_bThisSessionDone ) - markSessionDone( ); - } - - //-------------------------------------------------------------------- - void RegOptionsImpl::removeReminder() - { - ::rtl::OUString aDefault; - ::rtl::OUString aReminderValue( lcl_getPatchName() ); - aReminderValue += ::rtl::OUString::valueOf(getBuildId()); - - m_aRegistrationNode.setNodeValue( - lcl_getReminderDateName(), - Any( aReminderValue ) - ); - } - - //-------------------------------------------------------------------- - sal_Int32 RegOptionsImpl::getBuildId() const - { - sal_Int32 nBuildId( 0 ); - ::rtl::OUString aDefault; - ::rtl::OUString aBuildIdData = utl::Bootstrap::getBuildIdData( aDefault ); - sal_Int32 nIndex1 = aBuildIdData.indexOf(':'); - sal_Int32 nIndex2 = aBuildIdData.indexOf(')'); - if (( nIndex1 > 0 ) && ( nIndex2 > 0 ) && ( nIndex2-1 > nIndex1+1 )) - { - ::rtl::OUString aBuildId = aBuildIdData.copy( nIndex1+1, nIndex2-nIndex1-1 ); - nBuildId = aBuildId.toInt32(); - } - - return nBuildId; - } - - //-------------------------------------------------------------------- - void RegOptionsImpl::markSessionDone( ) - { - OSL_ENSURE( !s_bThisSessionDone, "RegOptionsImpl::markSessionDone: already marked!" ); - OSL_ENSURE( implGetDialogPermission( ) != RegOptions::dpDisabled, "RegOptionsImpl::markSessionDone: invalid call!" ); - if ( !s_bThisSessionDone ) - { - RegOptions::DialogPermission eOldPermission = implGetDialogPermission( ); - - s_bThisSessionDone = sal_True; - - if ( RegOptions::dpRemindLater == eOldPermission ) - { // no action required. If we shall remind later, the counter is already at 1, we should not change this, - // as the next smaller number (which is 0 :) means that the dialog would be disabled - OSL_ENSURE( 1 == m_nDialogCounter, "RegOptionsImpl::markSessionDone: invalid session counter (1)!" ); - } - else - { - OSL_ENSURE( m_nDialogCounter > 0, "RegOptionsImpl::markSessionDone: invalid session counter (2)!" ); - --m_nDialogCounter; - - // decrease the session counter - m_aRegistrationNode.setNodeValue( - lcl_getRequestDialogName(), - makeAny( (sal_Int32)m_nDialogCounter ) - ); - - // and clear the reminder date - removeReminder(); - } - } - } - - //==================================================================== - //= RegOptions - //==================================================================== - //-------------------------------------------------------------------- - RegOptions::RegOptions() - :m_pImpl( NULL ) - { - } - - //-------------------------------------------------------------------- - void RegOptions::ensureImpl( ) - { - if ( !m_pImpl ) - m_pImpl = RegOptionsImpl::registerClient(); - } - - //-------------------------------------------------------------------- - RegOptions::~RegOptions() - { - if ( m_pImpl ) - { - RegOptionsImpl::revokeClient(); - m_pImpl = NULL; - } - } - - //-------------------------------------------------------------------- - String RegOptions::getRegistrationURL( ) const - { - const_cast< RegOptions* >( this )->ensureImpl( ); - return m_pImpl->getRegistrationURL(); - } - - //-------------------------------------------------------------------- - RegOptions::DialogPermission RegOptions::getDialogPermission( ) const - { - const_cast< RegOptions* >( this )->ensureImpl( ); - return m_pImpl->getDialogPermission(); - } - - //-------------------------------------------------------------------- - void RegOptions::markSessionDone( ) - { - const_cast< RegOptions* >( this )->ensureImpl( ); - m_pImpl->markSessionDone(); - } - - //-------------------------------------------------------------------- - void RegOptions::activateReminder( sal_Int32 _nDaysFromNow ) - { - const_cast< RegOptions* >( this )->ensureImpl( ); - m_pImpl->activateReminder( _nDaysFromNow ); - } - - //-------------------------------------------------------------------- - sal_Bool RegOptions::allowMenu( ) const - { - /// we cache this setting, 'cause it is needed very often - static sal_Bool bKnowMenuPermission = sal_False; - static sal_Bool bAllowMenu = sal_False; - - if ( !bKnowMenuPermission ) - { - const_cast< RegOptions* >( this )->ensureImpl( ); - bAllowMenu = m_pImpl->allowMenu(); - bKnowMenuPermission = sal_True; - } - return bAllowMenu; - } - - //-------------------------------------------------------------------- - void RegOptions::removeReminder() - { - const_cast< RegOptions* >( this )->ensureImpl( ); - m_pImpl->removeReminder(); - } -//........................................................................ -} // namespace utl -//........................................................................ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/saveopt.cxx b/unotools/source/config/saveopt.cxx deleted file mode 100644 index a511671eee..0000000000 --- a/unotools/source/config/saveopt.cxx +++ /dev/null @@ -1,1090 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/saveopt.hxx> -#include "rtl/instance.hxx" -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <osl/mutex.hxx> -#include <comphelper/configurationhelper.hxx> -#include <unotools/processfactory.hxx> -#include <rtl/logfile.hxx> -#include "itemholder1.hxx" - -using namespace utl; -using namespace com::sun::star::uno; - -using ::rtl::OUString; - -namespace css = ::com::sun::star; - -class SvtSaveOptions_Impl; -class SvtLoadOptions_Impl; - -#define CFG_READONLY_DEFAULT sal_False - -struct SvtLoadSaveOptions_Impl -{ - SvtSaveOptions_Impl* pSaveOpt; - SvtLoadOptions_Impl* pLoadOpt; -}; - -static SvtLoadSaveOptions_Impl* pOptions = NULL; -static sal_Int32 nRefCount = 0; - -class SvtSaveOptions_Impl : public utl::ConfigItem -{ - sal_Int32 nAutoSaveTime; - sal_Bool bUseUserData, - bBackup, - bAutoSave, - bAutoSavePrompt, - bDocInfSave, - bSaveWorkingSet, - bSaveDocView, - bSaveRelINet, - bSaveRelFSys, - bSaveUnpacked, - bDoPrettyPrinting, - bWarnAlienFormat, - bLoadDocPrinter, - bUseSHA1InODF12, - bUseBlowfishInODF12; - - SvtSaveOptions::ODFDefaultVersion eODFDefaultVersion; - - sal_Bool bROAutoSaveTime, - bROUseUserData, - bROBackup, - bROAutoSave, - bROAutoSavePrompt, - bRODocInfSave, - bROSaveWorkingSet, - bROSaveDocView, - bROSaveRelINet, - bROSaveRelFSys, - bROSaveUnpacked, - bROWarnAlienFormat, - bRODoPrettyPrinting, - bROLoadDocPrinter, - bROODFDefaultVersion, - bROUseSHA1InODF12, - bROUseBlowfishInODF12; - -public: - SvtSaveOptions_Impl(); - ~SvtSaveOptions_Impl(); - - virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); - virtual void Commit(); - - sal_Int32 GetAutoSaveTime() const { return nAutoSaveTime; } - sal_Bool IsUseUserData() const { return bUseUserData; } - sal_Bool IsBackup() const { return bBackup; } - sal_Bool IsAutoSave() const { return bAutoSave; } - sal_Bool IsAutoSavePrompt() const { return bAutoSavePrompt; } - sal_Bool IsDocInfoSave() const { return bDocInfSave; } - sal_Bool IsSaveWorkingSet() const { return bSaveWorkingSet; } - sal_Bool IsSaveDocView() const { return bSaveDocView; } - sal_Bool IsSaveRelINet() const { return bSaveRelINet; } - sal_Bool IsSaveRelFSys() const { return bSaveRelFSys; } - sal_Bool IsSaveUnpacked() const { return bSaveUnpacked; } - sal_Bool IsPrettyPrintingEnabled( ) const { return bDoPrettyPrinting; } - sal_Bool IsWarnAlienFormat() const { return bWarnAlienFormat; } - sal_Bool IsLoadDocPrinter() const { return bLoadDocPrinter; } - sal_Bool IsUseSHA1InODF12() const { return bUseSHA1InODF12; } - sal_Bool IsUseBlowfishInODF12() const { return bUseBlowfishInODF12; } - - SvtSaveOptions::ODFDefaultVersion - GetODFDefaultVersion() const { return eODFDefaultVersion; } - - void SetAutoSaveTime( sal_Int32 n ); - void SetUseUserData( sal_Bool b ); - void SetBackup( sal_Bool b ); - void SetAutoSave( sal_Bool b ); - void SetAutoSavePrompt( sal_Bool b ); - void SetDocInfoSave( sal_Bool b ); - void SetSaveWorkingSet( sal_Bool b ); - void SetSaveDocView( sal_Bool b ); - void SetSaveRelINet( sal_Bool b ); - void SetSaveRelFSys( sal_Bool b ); - void SetSaveUnpacked( sal_Bool b ); - void EnablePrettyPrinting( sal_Bool _bDoPP ); - void SetWarnAlienFormat( sal_Bool _bDoPP ); - void SetLoadDocPrinter( sal_Bool bNew ); - void SetUseSHA1InODF12( sal_Bool bUse ); - void SetUseBlowfishInODF12( sal_Bool bUse ); - void SetODFDefaultVersion( SvtSaveOptions::ODFDefaultVersion eNew ); - - sal_Bool IsReadOnly( SvtSaveOptions::EOption eOption ) const; -}; - -void SvtSaveOptions_Impl::SetAutoSaveTime( sal_Int32 n ) -{ - if (!bROAutoSaveTime && nAutoSaveTime!=n) - { - nAutoSaveTime = n; - SetModified(); - Commit(); - } -} - -void SvtSaveOptions_Impl::SetUseUserData( sal_Bool b ) -{ - if (!bROUseUserData && bUseUserData!=b) - { - bUseUserData = b; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetBackup( sal_Bool b ) -{ - if (!bROBackup && bBackup!=b) - { - bBackup = b; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetAutoSave( sal_Bool b ) -{ - if (!bROAutoSave && bAutoSave!=b) - { - bAutoSave = b; - SetModified(); - Commit(); - } -} - -void SvtSaveOptions_Impl::SetAutoSavePrompt( sal_Bool b ) -{ - if (!bROAutoSavePrompt && bAutoSavePrompt!=b) - { - bAutoSavePrompt = b; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetDocInfoSave(sal_Bool b) -{ - if (!bRODocInfSave && bDocInfSave!=b) - { - bDocInfSave = b; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetSaveWorkingSet( sal_Bool b ) -{ - if (!bROSaveWorkingSet && bSaveWorkingSet!=b) - { - bSaveWorkingSet = b; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetSaveDocView( sal_Bool b ) -{ - if (!bROSaveDocView && bSaveDocView!=b) - { - bSaveDocView = b; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetSaveRelINet( sal_Bool b ) -{ - if (!bROSaveRelINet && bSaveRelINet!=b) - { - bSaveRelINet = b; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetSaveRelFSys( sal_Bool b ) -{ - if (!bROSaveRelFSys && bSaveRelFSys!=b) - { - bSaveRelFSys = b; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetSaveUnpacked( sal_Bool b ) -{ - if (!bROSaveUnpacked && bSaveUnpacked!=b) - { - bSaveUnpacked = b; - SetModified(); - } -} - -void SvtSaveOptions_Impl::EnablePrettyPrinting( sal_Bool _bDoPP ) -{ - if (!bRODoPrettyPrinting && bDoPrettyPrinting!=_bDoPP) - { - bDoPrettyPrinting = _bDoPP; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetWarnAlienFormat( sal_Bool _bDoPP ) -{ - if (!bROWarnAlienFormat && bWarnAlienFormat!=_bDoPP) - { - bWarnAlienFormat = _bDoPP; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetLoadDocPrinter( sal_Bool bNew ) -{ - if ( !bROLoadDocPrinter && bLoadDocPrinter != bNew ) - { - bLoadDocPrinter = bNew; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetODFDefaultVersion( SvtSaveOptions::ODFDefaultVersion eNew ) -{ - if ( !bROODFDefaultVersion && eODFDefaultVersion != eNew ) - { - eODFDefaultVersion = eNew; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetUseSHA1InODF12( sal_Bool bUse ) -{ - if ( !bROUseSHA1InODF12 && bUseSHA1InODF12 != bUse ) - { - bUseSHA1InODF12 = bUse; - SetModified(); - } -} - -void SvtSaveOptions_Impl::SetUseBlowfishInODF12( sal_Bool bUse ) -{ - if ( !bROUseBlowfishInODF12 && bUseBlowfishInODF12 != bUse ) - { - bUseBlowfishInODF12 = bUse; - SetModified(); - } -} - -sal_Bool SvtSaveOptions_Impl::IsReadOnly( SvtSaveOptions::EOption eOption ) const -{ - sal_Bool bReadOnly = CFG_READONLY_DEFAULT; - switch(eOption) - { - case SvtSaveOptions::E_AUTOSAVETIME : - bReadOnly = bROAutoSaveTime; - break; - case SvtSaveOptions::E_USEUSERDATA : - bReadOnly = bROUseUserData; - break; - case SvtSaveOptions::E_BACKUP : - bReadOnly = bROBackup; - break; - case SvtSaveOptions::E_AUTOSAVE : - bReadOnly = bROAutoSave; - break; - case SvtSaveOptions::E_AUTOSAVEPROMPT : - bReadOnly = bROAutoSavePrompt; - break; - case SvtSaveOptions::E_DOCINFSAVE : - bReadOnly = bRODocInfSave; - break; - case SvtSaveOptions::E_SAVEWORKINGSET : - bReadOnly = bROSaveWorkingSet; - break; - case SvtSaveOptions::E_SAVEDOCVIEW : - bReadOnly = bROSaveDocView; - break; - case SvtSaveOptions::E_SAVERELINET : - bReadOnly = bROSaveRelINet; - break; - case SvtSaveOptions::E_SAVERELFSYS : - bReadOnly = bROSaveRelFSys; - break; - case SvtSaveOptions::E_SAVEUNPACKED : - bReadOnly = bROSaveUnpacked; - break; - case SvtSaveOptions::E_DOPRETTYPRINTING : - bReadOnly = bRODoPrettyPrinting; - break; - case SvtSaveOptions::E_WARNALIENFORMAT : - bReadOnly = bROWarnAlienFormat; - break; - case SvtSaveOptions::E_LOADDOCPRINTER : - bReadOnly = bROLoadDocPrinter; - break; - case SvtSaveOptions::E_ODFDEFAULTVERSION : - bReadOnly = bROLoadDocPrinter; - break; - case SvtSaveOptions::E_USESHA1INODF12: - bReadOnly = bROUseSHA1InODF12; - break; - case SvtSaveOptions::E_USEBLOWFISHINODF12: - bReadOnly = bROUseBlowfishInODF12; - break; - } - return bReadOnly; -} - -#define FORMAT 0 -#define TIMEINTERVALL 1 -#define USEUSERDATA 2 -#define CREATEBACKUP 3 -#define AUTOSAVE 4 -#define PROMPT 5 -#define EDITPROPERTY 6 -#define SAVEVIEWINFO 7 -#define UNPACKED 8 -#define PRETTYPRINTING 9 -#define WARNALIENFORMAT 10 -#define LOADDOCPRINTER 11 -#define FILESYSTEM 12 -#define INTERNET 13 -#define SAVEWORKINGSET 14 -#define ODFDEFAULTVERSION 15 -#define USESHA1INODF12 16 -#define USEBLOWFISHINODF12 17 - -Sequence< OUString > GetPropertyNames() -{ - static const char* aPropNames[] = - { - "Graphic/Format", - "Document/AutoSaveTimeIntervall", - "Document/UseUserData", - "Document/CreateBackup", - "Document/AutoSave", - "Document/AutoSavePrompt", - "Document/EditProperty", - "Document/ViewInfo", - "Document/Unpacked", - "Document/PrettyPrinting", - "Document/WarnAlienFormat", - "Document/LoadPrinter", - "URL/FileSystem", - "URL/Internet", - "WorkingSet", - "ODF/DefaultVersion", - "ODF/UseSHA1InODF12", - "ODF/UseBlowfishInODF12" - }; - - const int nCount = sizeof( aPropNames ) / sizeof( const char* ); - Sequence< OUString > aNames( nCount ); - OUString* pNames = aNames.getArray(); - for ( int i = 0; i < nCount; i++ ) - pNames[i] = OUString::createFromAscii( aPropNames[i] ); - - return aNames; -} - -// ----------------------------------------------------------------------- - -SvtSaveOptions_Impl::SvtSaveOptions_Impl() - : ConfigItem( OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Save")) ) - , nAutoSaveTime( 0 ) - , bUseUserData( sal_False ) - , bBackup( sal_False ) - , bAutoSave( sal_False ) - , bAutoSavePrompt( sal_False ) - , bDocInfSave( sal_False ) - , bSaveWorkingSet( sal_False ) - , bSaveDocView( sal_False ) - , bSaveRelINet( sal_False ) - , bSaveRelFSys( sal_False ) - , bSaveUnpacked( sal_False ) - , bDoPrettyPrinting( sal_False ) - , bWarnAlienFormat( sal_True ) - , bLoadDocPrinter( sal_True ) - , bUseSHA1InODF12( sal_False ) - , bUseBlowfishInODF12( sal_False ) - , eODFDefaultVersion( SvtSaveOptions::ODFVER_LATEST ) - , bROAutoSaveTime( CFG_READONLY_DEFAULT ) - , bROUseUserData( CFG_READONLY_DEFAULT ) - , bROBackup( CFG_READONLY_DEFAULT ) - , bROAutoSave( CFG_READONLY_DEFAULT ) - , bROAutoSavePrompt( CFG_READONLY_DEFAULT ) - , bRODocInfSave( CFG_READONLY_DEFAULT ) - , bROSaveWorkingSet( CFG_READONLY_DEFAULT ) - , bROSaveDocView( CFG_READONLY_DEFAULT ) - , bROSaveRelINet( CFG_READONLY_DEFAULT ) - , bROSaveRelFSys( CFG_READONLY_DEFAULT ) - , bROSaveUnpacked( CFG_READONLY_DEFAULT ) - , bROWarnAlienFormat( CFG_READONLY_DEFAULT ) - , bRODoPrettyPrinting( CFG_READONLY_DEFAULT ) - , bROLoadDocPrinter( CFG_READONLY_DEFAULT ) - , bROODFDefaultVersion( CFG_READONLY_DEFAULT ) - , bROUseSHA1InODF12( CFG_READONLY_DEFAULT ) - , bROUseBlowfishInODF12( CFG_READONLY_DEFAULT ) -{ - Sequence< OUString > aNames = GetPropertyNames(); - Sequence< Any > aValues = GetProperties( aNames ); - Sequence< sal_Bool > aROStates = GetReadOnlyStates( aNames ); - EnableNotification( aNames ); - const Any* pValues = aValues.getConstArray(); - const sal_Bool* pROStates = aROStates.getConstArray(); - DBG_ASSERT( aValues.getLength() == aNames.getLength(), "GetProperties failed" ); - DBG_ASSERT( aROStates.getLength() == aNames.getLength(), "GetReadOnlyStates failed" ); - if ( aValues.getLength() == aNames.getLength() && aROStates.getLength() == aNames.getLength() ) - { - for ( int nProp = 0; nProp < aNames.getLength(); nProp++ ) - { - if ( pValues[nProp].hasValue() ) - { - sal_Int32 nTemp = 0; - switch ( nProp ) - { - case FORMAT: - // not supported anymore - break; - - case TIMEINTERVALL : - if ( pValues[nProp] >>= nTemp ) - nAutoSaveTime = nTemp; - else { - OSL_FAIL( "Wrong Type!" ); - }; - bROAutoSaveTime = pROStates[nProp]; - break; - - case ODFDEFAULTVERSION : - { - sal_Int16 nTmp = 0; - if ( pValues[nProp] >>= nTmp ) - { - if( nTmp == 3 ) - eODFDefaultVersion = SvtSaveOptions::ODFVER_LATEST; - else - eODFDefaultVersion = SvtSaveOptions::ODFDefaultVersion( nTmp ); - } - else { - DBG_ERRORFILE( "SvtSaveOptions_Impl::SvtSaveOptions_Impl(): Wrong Type!" ); - }; - bROODFDefaultVersion = pROStates[nProp]; - break; - } - - default: - { - sal_Bool bTemp = sal_Bool(); - if ( pValues[nProp] >>= bTemp ) - { - switch ( nProp ) - { - case USEUSERDATA : - bUseUserData = bTemp; - bROUseUserData = pROStates[nProp]; - break; - case CREATEBACKUP : - bBackup = bTemp; - bROBackup = pROStates[nProp]; - break; - case AUTOSAVE : - bAutoSave = bTemp; - bROAutoSave = pROStates[nProp]; - break; - case PROMPT : - bAutoSavePrompt = bTemp; - bROAutoSavePrompt = pROStates[nProp]; - break; - case EDITPROPERTY : - bDocInfSave = bTemp; - bRODocInfSave = pROStates[nProp]; - break; - case SAVEWORKINGSET : - bSaveWorkingSet = bTemp; - bROSaveWorkingSet = pROStates[nProp]; - break; - case SAVEVIEWINFO : - bSaveDocView = bTemp; - bROSaveDocView = pROStates[nProp]; - break; - case FILESYSTEM : - bSaveRelFSys = bTemp; - bROSaveRelFSys = pROStates[nProp]; - break; - case INTERNET : - bSaveRelINet = bTemp; - bROSaveRelINet = pROStates[nProp]; - break; - case UNPACKED : - bSaveUnpacked = bTemp; - bROSaveUnpacked = pROStates[nProp]; - break; - - case PRETTYPRINTING: - bDoPrettyPrinting = bTemp; - bRODoPrettyPrinting = pROStates[nProp]; - break; - - case WARNALIENFORMAT: - bWarnAlienFormat = bTemp; - bROWarnAlienFormat = pROStates[nProp]; - break; - - case LOADDOCPRINTER: - bLoadDocPrinter = bTemp; - bROLoadDocPrinter = pROStates[nProp]; - break; - - case USESHA1INODF12: - bUseSHA1InODF12 = bTemp; - bROUseSHA1InODF12 = pROStates[nProp]; - break; - - case USEBLOWFISHINODF12: - bUseBlowfishInODF12 = bTemp; - bROUseBlowfishInODF12 = pROStates[nProp]; - break; - - default : - DBG_ERRORFILE( "invalid index to load a path" ); - } - } - else - { - OSL_FAIL( "Wrong Type!" ); - } - } - } - } - } - } - - try - { - css::uno::Reference< css::uno::XInterface > xCFG = ::comphelper::ConfigurationHelper::openConfig( - ::utl::getProcessServiceFactory(), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Recovery")), - ::comphelper::ConfigurationHelper::E_READONLY); - - ::comphelper::ConfigurationHelper::readRelativeKey( - xCFG, - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AutoSave")), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Enabled"))) >>= bAutoSave; - - ::comphelper::ConfigurationHelper::readRelativeKey( - xCFG, - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AutoSave")), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TimeIntervall"))) >>= nAutoSaveTime; - } - catch(const css::uno::Exception&) - { OSL_FAIL("Could not find needed informations for AutoSave feature."); } -} - -SvtSaveOptions_Impl::~SvtSaveOptions_Impl() -{} - -void SvtSaveOptions_Impl::Commit() -{ - Sequence< OUString > aOrgNames = GetPropertyNames(); - OUString* pOrgNames = aOrgNames.getArray(); - sal_Int32 nOrgCount = aOrgNames.getLength(); - - Sequence< OUString > aNames( nOrgCount ); - Sequence< Any > aValues( nOrgCount ); - OUString* pNames = aNames.getArray(); - Any* pValues = aValues.getArray(); - sal_Int32 nRealCount = 0; - - for (sal_Int32 i=0; i<nOrgCount; ++i) - { - switch (i) - { - case FORMAT: - // not supported anymore - break; - case TIMEINTERVALL : - if (!bROAutoSaveTime) - { - pValues[nRealCount] <<= nAutoSaveTime; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case USEUSERDATA : - if (!bROUseUserData) - { - pValues[nRealCount] <<= bUseUserData; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case CREATEBACKUP : - if (!bROBackup) - { - pValues[nRealCount] <<= bBackup; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case AUTOSAVE : - if (!bROAutoSave) - { - pValues[nRealCount] <<= bAutoSave; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case PROMPT : - if (!bROAutoSavePrompt) - { - pValues[nRealCount] <<= bAutoSavePrompt; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case EDITPROPERTY : - if (!bRODocInfSave) - { - pValues[nRealCount] <<= bDocInfSave; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case SAVEWORKINGSET : - if (!bROSaveWorkingSet) - { - pValues[nRealCount] <<= bSaveWorkingSet; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case SAVEVIEWINFO : - if (!bROSaveDocView) - { - pValues[nRealCount] <<= bSaveDocView; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case FILESYSTEM : - if (!bROSaveRelFSys) - { - pValues[nRealCount] <<= bSaveRelFSys; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case INTERNET : - if (!bROSaveRelINet) - { - pValues[nRealCount] <<= bSaveRelINet; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case UNPACKED : - if (!bROSaveUnpacked) - { - pValues[nRealCount] <<= bSaveUnpacked; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case PRETTYPRINTING: - if (!bRODoPrettyPrinting) - { - pValues[nRealCount] <<= bDoPrettyPrinting; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case WARNALIENFORMAT: - if (!bROWarnAlienFormat) - { - pValues[nRealCount] <<= bWarnAlienFormat; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case LOADDOCPRINTER: - if (!bROLoadDocPrinter) - { - pValues[nRealCount] <<= bLoadDocPrinter; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case ODFDEFAULTVERSION: - if (!bROODFDefaultVersion) - { - pValues[nRealCount] <<= (eODFDefaultVersion == SvtSaveOptions::ODFVER_LATEST) ? sal_Int16( 3 ) : sal_Int16( eODFDefaultVersion ); - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case USESHA1INODF12: - if (!bROUseSHA1InODF12) - { - pValues[nRealCount] <<= bUseSHA1InODF12; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - case USEBLOWFISHINODF12: - if (!bROUseBlowfishInODF12) - { - pValues[nRealCount] <<= bUseBlowfishInODF12; - pNames[nRealCount] = pOrgNames[i]; - ++nRealCount; - } - break; - - default: - DBG_ERRORFILE( "invalid index to save a path" ); - } - } - - aNames.realloc(nRealCount); - aValues.realloc(nRealCount); - PutProperties( aNames, aValues ); - - css::uno::Reference< css::uno::XInterface > xCFG = ::comphelper::ConfigurationHelper::openConfig( - ::utl::getProcessServiceFactory(), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Recovery")), - ::comphelper::ConfigurationHelper::E_STANDARD); - - ::comphelper::ConfigurationHelper::writeRelativeKey( - xCFG, - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AutoSave")), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TimeIntervall")), - css::uno::makeAny(nAutoSaveTime)); - - ::comphelper::ConfigurationHelper::writeRelativeKey( - xCFG, - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AutoSave")), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Enabled")), - css::uno::makeAny(bAutoSave)); - - ::comphelper::ConfigurationHelper::flush(xCFG); -} - -// ----------------------------------------------------------------------- - -void SvtSaveOptions_Impl::Notify( const Sequence<rtl::OUString>& ) -{ -} - - -class SvtLoadOptions_Impl : public utl::ConfigItem -{ - - sal_Bool bLoadUserDefinedSettings; - -public: - SvtLoadOptions_Impl(); - ~SvtLoadOptions_Impl(); - - virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); - virtual void Commit(); - - void SetLoadUserSettings(sal_Bool b){bLoadUserDefinedSettings = b; SetModified();} - sal_Bool IsLoadUserSettings() const {return bLoadUserDefinedSettings;} -}; -// ----------------------------------------------------------------------- -const sal_Char cUserDefinedSettings[] = "UserDefinedSettings"; - -SvtLoadOptions_Impl::SvtLoadOptions_Impl() - : ConfigItem( OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Load")) ) - , bLoadUserDefinedSettings( sal_False ) -{ - Sequence< OUString > aNames(1); - aNames[0] = OUString::createFromAscii(cUserDefinedSettings); - Sequence< Any > aValues = GetProperties( aNames ); - EnableNotification( aNames ); - const Any* pValues = aValues.getConstArray(); - DBG_ASSERT( aValues.getLength() == aNames.getLength(), "GetProperties failed" ); - if (pValues[0].getValueTypeClass() == ::com::sun::star::uno::TypeClass_BOOLEAN) - bLoadUserDefinedSettings = *(sal_Bool *)pValues[0].getValue(); -} -// ----------------------------------------------------------------------- -SvtLoadOptions_Impl::~SvtLoadOptions_Impl() -{ -} -// ----------------------------------------------------------------------- -void SvtLoadOptions_Impl::Commit() -{ - Sequence< OUString > aNames(1); - aNames[0] = OUString::createFromAscii(cUserDefinedSettings); - Sequence< Any > aValues( 1 ); - aValues[0].setValue(&bLoadUserDefinedSettings, ::getBooleanCppuType()); - PutProperties( aNames, aValues ); -} -// ----------------------------------------------------------------------- -void SvtLoadOptions_Impl::Notify( const Sequence<rtl::OUString>& ) -{ - DBG_ERRORFILE( "properties have been changed" ); -} -// ----------------------------------------------------------------------- - -namespace -{ - class LocalSingleton : public rtl::Static< osl::Mutex, LocalSingleton > - { - }; -} - -// ----------------------------------------------------------------------- -SvtSaveOptions::SvtSaveOptions() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( LocalSingleton::get() ); - if ( !pOptions ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtSaveOptions_Impl::ctor()"); - pOptions = new SvtLoadSaveOptions_Impl; - pOptions->pSaveOpt = new SvtSaveOptions_Impl; - pOptions->pLoadOpt = new SvtLoadOptions_Impl; - - ItemHolder1::holdConfigItem(E_SAVEOPTIONS); - } - ++nRefCount; - pImp = pOptions; -} - -// ----------------------------------------------------------------------- - -SvtSaveOptions::~SvtSaveOptions() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( LocalSingleton::get() ); - if ( !--nRefCount ) - { - if ( pOptions->pSaveOpt->IsModified() ) - pOptions->pSaveOpt->Commit(); - if ( pOptions->pLoadOpt->IsModified() ) - pOptions->pLoadOpt->Commit(); - - DELETEZ( pOptions->pLoadOpt ); - DELETEZ( pOptions->pSaveOpt ); - DELETEZ( pOptions ); - } -} - -void SvtSaveOptions::SetAutoSaveTime( sal_Int32 n ) -{ - pImp->pSaveOpt->SetAutoSaveTime( n ); -} - -sal_Int32 SvtSaveOptions::GetAutoSaveTime() const -{ - return pImp->pSaveOpt->GetAutoSaveTime(); -} - -void SvtSaveOptions::SetUseUserData( sal_Bool b ) -{ - pImp->pSaveOpt->SetUseUserData( b ); -} - -sal_Bool SvtSaveOptions::IsUseUserData() const -{ - return pImp->pSaveOpt->IsUseUserData(); -} - -void SvtSaveOptions::SetBackup( sal_Bool b ) -{ - pImp->pSaveOpt->SetBackup( b ); -} - -sal_Bool SvtSaveOptions::IsBackup() const -{ - return pImp->pSaveOpt->IsBackup(); -} - -void SvtSaveOptions::SetAutoSave( sal_Bool b ) -{ - pImp->pSaveOpt->SetAutoSave( b ); -} - -sal_Bool SvtSaveOptions::IsAutoSave() const -{ - return pImp->pSaveOpt->IsAutoSave(); -} - -void SvtSaveOptions::SetAutoSavePrompt( sal_Bool b ) -{ - pImp->pSaveOpt->SetAutoSavePrompt( b ); -} - -sal_Bool SvtSaveOptions::IsAutoSavePrompt() const -{ - return pImp->pSaveOpt->IsAutoSavePrompt(); -} - -void SvtSaveOptions::SetDocInfoSave(sal_Bool b) -{ - pImp->pSaveOpt->SetDocInfoSave( b ); -} - -sal_Bool SvtSaveOptions::IsDocInfoSave() const -{ - return pImp->pSaveOpt->IsDocInfoSave(); -} - -void SvtSaveOptions::SetSaveWorkingSet( sal_Bool b ) -{ - pImp->pSaveOpt->SetSaveWorkingSet( b ); -} - -sal_Bool SvtSaveOptions::IsSaveWorkingSet() const -{ - return pImp->pSaveOpt->IsSaveWorkingSet(); -} - -void SvtSaveOptions::SetSaveDocView( sal_Bool b ) -{ - pImp->pSaveOpt->SetSaveDocView( b ); -} - -sal_Bool SvtSaveOptions::IsSaveDocView() const -{ - return pImp->pSaveOpt->IsSaveDocView(); -} - -void SvtSaveOptions::SetSaveRelINet( sal_Bool b ) -{ - pImp->pSaveOpt->SetSaveRelINet( b ); -} - -sal_Bool SvtSaveOptions::IsSaveRelINet() const -{ - return pImp->pSaveOpt->IsSaveRelINet(); -} - -void SvtSaveOptions::SetSaveRelFSys( sal_Bool b ) -{ - pImp->pSaveOpt->SetSaveRelFSys( b ); -} - -sal_Bool SvtSaveOptions::IsSaveRelFSys() const -{ - return pImp->pSaveOpt->IsSaveRelFSys(); -} - -void SvtSaveOptions::SetSaveUnpacked( sal_Bool b ) -{ - pImp->pSaveOpt->SetSaveUnpacked( b ); -} - -sal_Bool SvtSaveOptions::IsSaveUnpacked() const -{ - return pImp->pSaveOpt->IsSaveUnpacked(); -} - -void SvtSaveOptions::SetLoadUserSettings(sal_Bool b) -{ - pImp->pLoadOpt->SetLoadUserSettings(b); -} - -sal_Bool SvtSaveOptions::IsLoadUserSettings() const -{ - return pImp->pLoadOpt->IsLoadUserSettings(); -} - -void SvtSaveOptions::SetPrettyPrinting( sal_Bool _bEnable ) -{ - pImp->pSaveOpt->EnablePrettyPrinting( _bEnable ); -} - -sal_Bool SvtSaveOptions::IsPrettyPrinting() const -{ - return pImp->pSaveOpt->IsPrettyPrintingEnabled(); -} - -void SvtSaveOptions::SetWarnAlienFormat( sal_Bool _bEnable ) -{ - pImp->pSaveOpt->SetWarnAlienFormat( _bEnable ); -} - -sal_Bool SvtSaveOptions::IsWarnAlienFormat() const -{ - return pImp->pSaveOpt->IsWarnAlienFormat(); -} - -void SvtSaveOptions::SetLoadDocumentPrinter( sal_Bool _bEnable ) -{ - pImp->pSaveOpt->SetLoadDocPrinter( _bEnable ); -} - -sal_Bool SvtSaveOptions::IsLoadDocumentPrinter() const -{ - return pImp->pSaveOpt->IsLoadDocPrinter(); -} - -void SvtSaveOptions::SetODFDefaultVersion( SvtSaveOptions::ODFDefaultVersion eVersion ) -{ - pImp->pSaveOpt->SetODFDefaultVersion( eVersion ); -} - -SvtSaveOptions::ODFDefaultVersion SvtSaveOptions::GetODFDefaultVersion() const -{ - return pImp->pSaveOpt->GetODFDefaultVersion(); -} - -void SvtSaveOptions::SetUseSHA1InODF12( sal_Bool bUse ) -{ - pImp->pSaveOpt->SetUseSHA1InODF12( bUse ); -} - -sal_Bool SvtSaveOptions::IsUseSHA1InODF12() const -{ - return pImp->pSaveOpt->IsUseSHA1InODF12(); -} - -void SvtSaveOptions::SetUseBlowfishInODF12( sal_Bool bUse ) -{ - pImp->pSaveOpt->SetUseBlowfishInODF12( bUse ); -} - -sal_Bool SvtSaveOptions::IsUseBlowfishInODF12() const -{ - return pImp->pSaveOpt->IsUseBlowfishInODF12(); -} - -sal_Bool SvtSaveOptions::IsReadOnly( SvtSaveOptions::EOption eOption ) const -{ - return pImp->pSaveOpt->IsReadOnly(eOption); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/searchopt.cxx b/unotools/source/config/searchopt.cxx deleted file mode 100644 index 63c5f6e410..0000000000 --- a/unotools/source/config/searchopt.cxx +++ /dev/null @@ -1,640 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/searchopt.hxx> -#include <tools/solar.h> -#include <tools/debug.hxx> -#include <unotools/configitem.hxx> -#include <com/sun/star/i18n/TransliterationModules.hpp> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/uno/Any.h> -#include <rtl/logfile.hxx> -#include <sal/macros.h> - - -using namespace utl; -using namespace com::sun::star::uno; -using namespace com::sun::star::i18n; - -using ::rtl::OUString; - -#define MAX_FLAGS_OFFSET 25 - -////////////////////////////////////////////////////////////////////// - - -class SvtSearchOptions_Impl : public ConfigItem -{ - sal_Int32 nFlags; - sal_Bool bModified; - - // disallow copy-constructor and assignment-operator for now - SvtSearchOptions_Impl( const SvtSearchOptions_Impl & ); - SvtSearchOptions_Impl & operator = ( const SvtSearchOptions_Impl & ); - -protected: - sal_Bool IsModified() const { return bModified; } - using ConfigItem::SetModified; - void SetModified( sal_Bool bVal ); - sal_Bool Load(); - sal_Bool Save(); - - Sequence< OUString > GetPropertyNames() const; - -public: - SvtSearchOptions_Impl(); - virtual ~SvtSearchOptions_Impl(); - - // ConfigItem - virtual void Commit(); - virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); - - sal_Bool GetFlag( sal_uInt16 nOffset ) const; - void SetFlag( sal_uInt16 nOffset, sal_Bool bVal ); -}; - - - -SvtSearchOptions_Impl::SvtSearchOptions_Impl() : - ConfigItem( OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/SearchOptions")) ) -{ - RTL_LOGFILE_CONTEXT(aLog, "unotools SvtSearchOptions_Impl::SvtSearchOptions_Impl()"); - nFlags = 0x0003FFFF; // set all options values to 'true' - Load(); - SetModified( sal_False ); -} - - -SvtSearchOptions_Impl::~SvtSearchOptions_Impl() -{ - Commit(); -} - - -void SvtSearchOptions_Impl::Commit() -{ - if (IsModified()) - Save(); -} - -void SvtSearchOptions_Impl::Notify( const Sequence< rtl::OUString >& ) -{ -} - - -sal_Bool SvtSearchOptions_Impl::GetFlag( sal_uInt16 nOffset ) const -{ - DBG_ASSERT( nOffset <= MAX_FLAGS_OFFSET, "offset out of range"); - return ((nFlags >> nOffset) & 0x01) ? sal_True : sal_False; -} - - -void SvtSearchOptions_Impl::SetFlag( sal_uInt16 nOffset, sal_Bool bVal ) -{ - DBG_ASSERT( nOffset <= MAX_FLAGS_OFFSET, "offset out of range"); - sal_Int32 nOldFlags = nFlags; - sal_Int32 nMask = ((sal_Int32) 1) << nOffset; - if (bVal) - nFlags |= nMask; - else - nFlags &= ~nMask; - if (nFlags != nOldFlags) - SetModified( sal_True ); -} - - -void SvtSearchOptions_Impl::SetModified( sal_Bool bVal ) -{ - bModified = bVal; - if (bModified) - { - ConfigItem::SetModified(); - } -} - - -Sequence< OUString > SvtSearchOptions_Impl::GetPropertyNames() const -{ - static const char* aPropNames[ MAX_FLAGS_OFFSET + 1 ] = - { - "IsWholeWordsOnly", // 0 - "IsBackwards", // 1 - "IsUseRegularExpression", // 2 - //"IsCurrentSelectionOnly", // interactively set or not... - "IsSearchForStyles", // 3 - "IsSimilaritySearch", // 4 - "IsUseAsianOptions", // 5 - "IsMatchCase", // 6 - "Japanese/IsMatchFullHalfWidthForms", // 7 - "Japanese/IsMatchHiraganaKatakana", // 8 - "Japanese/IsMatchContractions", // 9 - "Japanese/IsMatchMinusDashCho-on", // 10 - "Japanese/IsMatchRepeatCharMarks", // 11 - "Japanese/IsMatchVariantFormKanji", // 12 - "Japanese/IsMatchOldKanaForms", // 13 - "Japanese/IsMatch_DiZi_DuZu", // 14 - "Japanese/IsMatch_BaVa_HaFa", // 15 - "Japanese/IsMatch_TsiThiChi_DhiZi", // 16 - "Japanese/IsMatch_HyuIyu_ByuVyu", // 17 - "Japanese/IsMatch_SeShe_ZeJe", // 18 - "Japanese/IsMatch_IaIya", // 19 - "Japanese/IsMatch_KiKu", // 20 - "Japanese/IsIgnorePunctuation", // 21 - "Japanese/IsIgnoreWhitespace", // 22 - "Japanese/IsIgnoreProlongedSoundMark", // 23 - "Japanese/IsIgnoreMiddleDot", // 24 - "IsNotes" // 25 - }; - - const int nCount = SAL_N_ELEMENTS( aPropNames ); - Sequence< OUString > aNames( nCount ); - OUString* pNames = aNames.getArray(); - for (sal_Int32 i = 0; i < nCount; ++i) - pNames[i] = OUString::createFromAscii( aPropNames[i] ); - - return aNames; -} - - -sal_Bool SvtSearchOptions_Impl::Load() -{ - sal_Bool bSucc = sal_False; - - Sequence< OUString > aNames = GetPropertyNames(); - sal_Int32 nProps = aNames.getLength(); - - const Sequence< Any > aValues = GetProperties( aNames ); - DBG_ASSERT( aValues.getLength() == aNames.getLength(), - "GetProperties failed" ); - //EnableNotification( aNames ); - - if (nProps && aValues.getLength() == nProps) - { - bSucc = sal_True; - - const Any* pValues = aValues.getConstArray(); - for (sal_uInt16 i = 0; i < nProps; ++i) - { - const Any &rVal = pValues[i]; - DBG_ASSERT( rVal.hasValue(), "property value missing" ); - if (rVal.hasValue()) - { - sal_Bool bVal = sal_Bool(); - if (rVal >>= bVal) - { - if (i <= MAX_FLAGS_OFFSET) - { - // use index in sequence as flag index - SetFlag( i, bVal ); - } - else { - OSL_FAIL( "unexpected index" ); - } - } - else - { - OSL_FAIL( "unexpected type" ); - bSucc = sal_False; - } - } - else - { - OSL_FAIL( "value missing" ); - bSucc = sal_False; - } - } - } - DBG_ASSERT( bSucc, "LoadConfig failed" ); - - return bSucc; -} - - -sal_Bool SvtSearchOptions_Impl::Save() -{ - sal_Bool bSucc = sal_False; - - const Sequence< OUString > aNames = GetPropertyNames(); - sal_Int32 nProps = aNames.getLength(); - - Sequence< Any > aValues( nProps ); - Any *pValue = aValues.getArray(); - - DBG_ASSERT( nProps == MAX_FLAGS_OFFSET + 1, - "unexpected size of index" ); - if (nProps && nProps == MAX_FLAGS_OFFSET + 1) - { - for (sal_uInt16 i = 0; i < nProps; ++i) - pValue[i] <<= (sal_Bool) GetFlag(i); - bSucc |= PutProperties( aNames, aValues ); - } - - if (bSucc) - SetModified( sal_False ); - - return bSucc; -} - - -////////////////////////////////////////////////////////////////////// - -SvtSearchOptions::SvtSearchOptions() -{ - pImpl = new SvtSearchOptions_Impl; -} - - -SvtSearchOptions::~SvtSearchOptions() -{ - delete pImpl; -} - - -sal_Int32 SvtSearchOptions::GetTransliterationFlags() const -{ - sal_Int32 nRes = 0; - - if (!IsMatchCase()) // 'IsMatchCase' means act case sensitive - nRes |= TransliterationModules_IGNORE_CASE; - if ( IsMatchFullHalfWidthForms()) - nRes |= TransliterationModules_IGNORE_WIDTH; - if ( IsMatchHiraganaKatakana()) - nRes |= TransliterationModules_IGNORE_KANA; - if ( IsMatchContractions()) - nRes |= TransliterationModules_ignoreSize_ja_JP; - if ( IsMatchMinusDashChoon()) - nRes |= TransliterationModules_ignoreMinusSign_ja_JP; - if ( IsMatchRepeatCharMarks()) - nRes |= TransliterationModules_ignoreIterationMark_ja_JP; - if ( IsMatchVariantFormKanji()) - nRes |= TransliterationModules_ignoreTraditionalKanji_ja_JP; - if ( IsMatchOldKanaForms()) - nRes |= TransliterationModules_ignoreTraditionalKana_ja_JP; - if ( IsMatchDiziDuzu()) - nRes |= TransliterationModules_ignoreZiZu_ja_JP; - if ( IsMatchBavaHafa()) - nRes |= TransliterationModules_ignoreBaFa_ja_JP; - if ( IsMatchTsithichiDhizi()) - nRes |= TransliterationModules_ignoreTiJi_ja_JP; - if ( IsMatchHyuiyuByuvyu()) - nRes |= TransliterationModules_ignoreHyuByu_ja_JP; - if ( IsMatchSesheZeje()) - nRes |= TransliterationModules_ignoreSeZe_ja_JP; - if ( IsMatchIaiya()) - nRes |= TransliterationModules_ignoreIandEfollowedByYa_ja_JP; - if ( IsMatchKiku()) - nRes |= TransliterationModules_ignoreKiKuFollowedBySa_ja_JP; - if ( IsIgnorePunctuation()) - nRes |= TransliterationModules_ignoreSeparator_ja_JP; - if ( IsIgnoreWhitespace()) - nRes |= TransliterationModules_ignoreSpace_ja_JP; - if ( IsIgnoreProlongedSoundMark()) - nRes |= TransliterationModules_ignoreProlongedSoundMark_ja_JP; - if ( IsIgnoreMiddleDot()) - nRes |= TransliterationModules_ignoreMiddleDot_ja_JP; - - return nRes; -} - - -sal_Bool SvtSearchOptions::IsWholeWordsOnly() const -{ - return pImpl->GetFlag( 0 ); -} - - -void SvtSearchOptions::SetWholeWordsOnly( sal_Bool bVal ) -{ - pImpl->SetFlag( 0, bVal ); -} - - -sal_Bool SvtSearchOptions::IsBackwards() const -{ - return pImpl->GetFlag( 1 ); -} - - -void SvtSearchOptions::SetBackwards( sal_Bool bVal ) -{ - pImpl->SetFlag( 1, bVal ); -} - - -sal_Bool SvtSearchOptions::IsUseRegularExpression() const -{ - return pImpl->GetFlag( 2 ); -} - - -void SvtSearchOptions::SetUseRegularExpression( sal_Bool bVal ) -{ - pImpl->SetFlag( 2, bVal ); -} - - -sal_Bool SvtSearchOptions::IsSearchForStyles() const -{ - return pImpl->GetFlag( 3 ); -} - - -void SvtSearchOptions::SetSearchForStyles( sal_Bool bVal ) -{ - pImpl->SetFlag( 3, bVal ); -} - - -sal_Bool SvtSearchOptions::IsSimilaritySearch() const -{ - return pImpl->GetFlag( 4 ); -} - - -void SvtSearchOptions::SetSimilaritySearch( sal_Bool bVal ) -{ - pImpl->SetFlag( 4, bVal ); -} - - -sal_Bool SvtSearchOptions::IsUseAsianOptions() const -{ - return pImpl->GetFlag( 5 ); -} - - -void SvtSearchOptions::SetUseAsianOptions( sal_Bool bVal ) -{ - pImpl->SetFlag( 5, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchCase() const -{ - return pImpl->GetFlag( 6 ); -} - - -void SvtSearchOptions::SetMatchCase( sal_Bool bVal ) -{ - pImpl->SetFlag( 6, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchFullHalfWidthForms() const -{ - return pImpl->GetFlag( 7 ); -} - - -void SvtSearchOptions::SetMatchFullHalfWidthForms( sal_Bool bVal ) -{ - pImpl->SetFlag( 7, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchHiraganaKatakana() const -{ - return pImpl->GetFlag( 8 ); -} - - -void SvtSearchOptions::SetMatchHiraganaKatakana( sal_Bool bVal ) -{ - pImpl->SetFlag( 8, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchContractions() const -{ - return pImpl->GetFlag( 9 ); -} - - -void SvtSearchOptions::SetMatchContractions( sal_Bool bVal ) -{ - pImpl->SetFlag( 9, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchMinusDashChoon() const -{ - return pImpl->GetFlag( 10 ); -} - - -void SvtSearchOptions::SetMatchMinusDashChoon( sal_Bool bVal ) -{ - pImpl->SetFlag( 10, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchRepeatCharMarks() const -{ - return pImpl->GetFlag( 11 ); -} - - -void SvtSearchOptions::SetMatchRepeatCharMarks( sal_Bool bVal ) -{ - pImpl->SetFlag( 11, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchVariantFormKanji() const -{ - return pImpl->GetFlag( 12 ); -} - - -void SvtSearchOptions::SetMatchVariantFormKanji( sal_Bool bVal ) -{ - pImpl->SetFlag( 12, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchOldKanaForms() const -{ - return pImpl->GetFlag( 13 ); -} - - -void SvtSearchOptions::SetMatchOldKanaForms( sal_Bool bVal ) -{ - pImpl->SetFlag( 13, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchDiziDuzu() const -{ - return pImpl->GetFlag( 14 ); -} - - -void SvtSearchOptions::SetMatchDiziDuzu( sal_Bool bVal ) -{ - pImpl->SetFlag( 14, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchBavaHafa() const -{ - return pImpl->GetFlag( 15 ); -} - - -void SvtSearchOptions::SetMatchBavaHafa( sal_Bool bVal ) -{ - pImpl->SetFlag( 15, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchTsithichiDhizi() const -{ - return pImpl->GetFlag( 16 ); -} - - -void SvtSearchOptions::SetMatchTsithichiDhizi( sal_Bool bVal ) -{ - pImpl->SetFlag( 16, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchHyuiyuByuvyu() const -{ - return pImpl->GetFlag( 17 ); -} - - -void SvtSearchOptions::SetMatchHyuiyuByuvyu( sal_Bool bVal ) -{ - pImpl->SetFlag( 17, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchSesheZeje() const -{ - return pImpl->GetFlag( 18 ); -} - - -void SvtSearchOptions::SetMatchSesheZeje( sal_Bool bVal ) -{ - pImpl->SetFlag( 18, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchIaiya() const -{ - return pImpl->GetFlag( 19 ); -} - - -void SvtSearchOptions::SetMatchIaiya( sal_Bool bVal ) -{ - pImpl->SetFlag( 19, bVal ); -} - - -sal_Bool SvtSearchOptions::IsMatchKiku() const -{ - return pImpl->GetFlag( 20 ); -} - - -void SvtSearchOptions::SetMatchKiku( sal_Bool bVal ) -{ - pImpl->SetFlag( 20, bVal ); -} - - -sal_Bool SvtSearchOptions::IsIgnorePunctuation() const -{ - return pImpl->GetFlag( 21 ); -} - - -void SvtSearchOptions::SetIgnorePunctuation( sal_Bool bVal ) -{ - pImpl->SetFlag( 21, bVal ); -} - - -sal_Bool SvtSearchOptions::IsIgnoreWhitespace() const -{ - return pImpl->GetFlag( 22 ); -} - - -void SvtSearchOptions::SetIgnoreWhitespace( sal_Bool bVal ) -{ - pImpl->SetFlag( 22, bVal ); -} - - -sal_Bool SvtSearchOptions::IsIgnoreProlongedSoundMark() const -{ - return pImpl->GetFlag( 23 ); -} - - -void SvtSearchOptions::SetIgnoreProlongedSoundMark( sal_Bool bVal ) -{ - pImpl->SetFlag( 23, bVal ); -} - - -sal_Bool SvtSearchOptions::IsIgnoreMiddleDot() const -{ - return pImpl->GetFlag( 24 ); -} - - -void SvtSearchOptions::SetIgnoreMiddleDot( sal_Bool bVal ) -{ - pImpl->SetFlag( 24, bVal ); -} - -sal_Bool SvtSearchOptions::IsNotes() const -{ - return pImpl->GetFlag( 25 ); -} - - -void SvtSearchOptions::SetNotes( sal_Bool bVal ) -{ - pImpl->SetFlag( 25, bVal ); -} - -////////////////////////////////////////////////////////////////////// - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/securityoptions.cxx b/unotools/source/config/securityoptions.cxx deleted file mode 100644 index 1b213ad0eb..0000000000 --- a/unotools/source/config/securityoptions.cxx +++ /dev/null @@ -1,1293 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/securityoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <com/sun/star/beans/PropertyValue.hpp> -#include <tools/urlobj.hxx> -#include <tools/wldcrd.hxx> - -#include <unotools/pathoptions.hxx> - -#include <rtl/logfile.hxx> -#include "itemholder1.hxx" - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_SECURITY OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Security/Scripting")) -#define DEFAULT_SECUREURL Sequence< OUString >() -#define DEFAULT_SECLEVEL 3 -#define DEFAULT_TRUSTEDAUTHORS Sequence< SvtSecurityOptions::Certificate >() - -// xmlsec05 depricated -#define DEFAULT_STAROFFICEBASIC eALWAYS_EXECUTE - -#define CSTR_SECUREURL "SecureURL" -#define CSTR_DOCWARN_SAVEORSEND "WarnSaveOrSendDoc" -#define CSTR_DOCWARN_SIGNING "WarnSignDoc" -#define CSTR_DOCWARN_PRINT "WarnPrintDoc" -#define CSTR_DOCWARN_CREATEPDF "WarnCreatePDF" -#define CSTR_DOCWARN_REMOVEPERSONALINFO "RemovePersonalInfoOnSaving" -#define CSTR_DOCWARN_RECOMMENDPASSWORD "RecommendPasswordProtection" -#define CSTR_CTRLCLICK_HYPERLINK "HyperlinksWithCtrlClick" -#define CSTR_MACRO_SECLEVEL "MacroSecurityLevel" -#define CSTR_MACRO_TRUSTEDAUTHORS "TrustedAuthors" -#define CSTR_MACRO_DISABLE "DisableMacrosExecution" -#define CSTR_TRUSTEDAUTHOR_SUBJECTNAME "SubjectName" -#define CSTR_TRUSTEDAUTHOR_SERIALNUMBER "SerialNumber" -#define CSTR_TRUSTEDAUTHOR_RAWDATA "RawData" - -#define PROPERTYNAME_SECUREURL OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_SECUREURL )) -#define PROPERTYNAME_DOCWARN_SAVEORSEND OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_DOCWARN_SAVEORSEND )) -#define PROPERTYNAME_DOCWARN_SIGNING OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_DOCWARN_SIGNING )) -#define PROPERTYNAME_DOCWARN_PRINT OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_DOCWARN_PRINT )) -#define PROPERTYNAME_DOCWARN_CREATEPDF OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_DOCWARN_CREATEPDF )) -#define PROPERTYNAME_DOCWARN_REMOVEPERSONALINFO OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_DOCWARN_REMOVEPERSONALINFO )) -#define PROPERTYNAME_DOCWARN_RECOMMENDPASSWORD OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_DOCWARN_RECOMMENDPASSWORD )) -#define PROPERTYNAME_CTRLCLICK_HYPERLINK OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_CTRLCLICK_HYPERLINK )) -#define PROPERTYNAME_MACRO_SECLEVEL OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_MACRO_SECLEVEL )) -#define PROPERTYNAME_MACRO_TRUSTEDAUTHORS OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_MACRO_TRUSTEDAUTHORS )) -#define PROPERTYNAME_MACRO_DISABLE OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_MACRO_DISABLE )) -#define PROPERTYNAME_TRUSTEDAUTHOR_SUBJECTNAME OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_TRUSTEDAUTHOR_SUBJECTNAME)) -#define PROPERTYNAME_TRUSTEDAUTHOR_SERIALNUMBER OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_TRUSTEDAUTHOR_SERIALNUMBER)) -#define PROPERTYNAME_TRUSTEDAUTHOR_RAWDATA OUString(RTL_CONSTASCII_USTRINGPARAM(CSTR_TRUSTEDAUTHOR_RAWDATA)) - -// xmlsec05 depricated -#define PROPERTYNAME_STAROFFICEBASIC OUString(RTL_CONSTASCII_USTRINGPARAM("OfficeBasic" )) -#define PROPERTYNAME_EXECUTEPLUGINS OUString(RTL_CONSTASCII_USTRINGPARAM("ExecutePlugins" )) -#define PROPERTYNAME_WARNINGENABLED OUString(RTL_CONSTASCII_USTRINGPARAM("Warning" )) -#define PROPERTYNAME_CONFIRMATIONENABLED OUString(RTL_CONSTASCII_USTRINGPARAM("Confirmation" )) -// xmlsec05 depricated - - -#define PROPERTYHANDLE_SECUREURL 0 - -// xmlsec05 depricated -#define PROPERTYHANDLE_STAROFFICEBASIC 1 -#define PROPERTYHANDLE_EXECUTEPLUGINS 2 -#define PROPERTYHANDLE_WARNINGENABLED 3 -#define PROPERTYHANDLE_CONFIRMATIONENABLED 4 -// xmlsec05 depricated - -#define PROPERTYHANDLE_DOCWARN_SAVEORSEND 5 -#define PROPERTYHANDLE_DOCWARN_SIGNING 6 -#define PROPERTYHANDLE_DOCWARN_PRINT 7 -#define PROPERTYHANDLE_DOCWARN_CREATEPDF 8 -#define PROPERTYHANDLE_DOCWARN_REMOVEPERSONALINFO 9 -#define PROPERTYHANDLE_DOCWARN_RECOMMENDPASSWORD 10 -#define PROPERTYHANDLE_CTRLCLICK_HYPERLINK 11 -#define PROPERTYHANDLE_MACRO_SECLEVEL 12 -#define PROPERTYHANDLE_MACRO_TRUSTEDAUTHORS 13 -#define PROPERTYHANDLE_MACRO_DISABLE 14 - -#define PROPERTYCOUNT 15 -#define PROPERTYHANDLE_INVALID -1 - -#define CFG_READONLY_DEFAULT sal_False - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -class SvtSecurityOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtSecurityOptions_Impl(); - ~SvtSecurityOptions_Impl(); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @seealso baseclass ConfigItem - - @param "seqPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& seqPropertyNames ); - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - - sal_Bool IsReadOnly ( SvtSecurityOptions::EOption eOption ) const ; - - Sequence< OUString > GetSecureURLs ( ) const ; - void SetSecureURLs ( const Sequence< OUString >& seqURLList ) ; - sal_Bool IsSecureURL ( const OUString& sURL, - const OUString& sReferer ) const ; - inline sal_Int32 GetMacroSecurityLevel ( ) const ; - void SetMacroSecurityLevel ( sal_Int32 _nLevel ) ; - - inline sal_Bool IsMacroDisabled ( ) const ; - - Sequence< SvtSecurityOptions::Certificate > GetTrustedAuthors ( ) const ; - void SetTrustedAuthors ( const Sequence< SvtSecurityOptions::Certificate >& rAuthors ) ; - sal_Bool IsTrustedAuthorsEnabled ( ) ; - - sal_Bool IsOptionSet ( SvtSecurityOptions::EOption eOption ) const ; - sal_Bool SetOption ( SvtSecurityOptions::EOption eOption, sal_Bool bValue ) ; - sal_Bool IsOptionEnabled ( SvtSecurityOptions::EOption eOption ) const ; -private: - - /*-****************************************************************************************************//** - @short return list of key names of ouer configuration management which represent our module tree - @descr These methods return a static const list of key names. We need it to get needed values from our - configuration management. - - @seealso - - - @param - - @return A list of needed configuration keys is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - void SetProperty( sal_Int32 nHandle, const Any& rValue, sal_Bool bReadOnly ); - void LoadAuthors( void ); - static sal_Int32 GetHandle( const OUString& rPropertyName ); - bool GetOption( SvtSecurityOptions::EOption eOption, sal_Bool*& rpValue, sal_Bool*& rpRO ); - - static Sequence< OUString > GetPropertyNames(); - - Sequence< OUString > m_seqSecureURLs; - sal_Bool m_bSaveOrSend; - sal_Bool m_bSigning; - sal_Bool m_bPrint; - sal_Bool m_bCreatePDF; - sal_Bool m_bRemoveInfo; - sal_Bool m_bRecommendPwd; - sal_Bool m_bCtrlClickHyperlink; - sal_Int32 m_nSecLevel; - Sequence< SvtSecurityOptions::Certificate > m_seqTrustedAuthors; - sal_Bool m_bDisableMacros; - - sal_Bool m_bROSecureURLs; - sal_Bool m_bROSaveOrSend; - sal_Bool m_bROSigning; - sal_Bool m_bROPrint; - sal_Bool m_bROCreatePDF; - sal_Bool m_bRORemoveInfo; - sal_Bool m_bRORecommendPwd; - sal_Bool m_bROCtrlClickHyperlink; - sal_Bool m_bROSecLevel; - sal_Bool m_bROTrustedAuthors; - sal_Bool m_bRODisableMacros; - - - // xmlsec05 depricated - EBasicSecurityMode m_eBasicMode; - sal_Bool m_bExecutePlugins; - sal_Bool m_bWarning; - sal_Bool m_bConfirmation; - - sal_Bool m_bROConfirmation; - sal_Bool m_bROWarning; - sal_Bool m_bROExecutePlugins; - sal_Bool m_bROBasicMode; - public: - sal_Bool IsWarningEnabled() const; - void SetWarningEnabled( sal_Bool bSet ); - sal_Bool IsConfirmationEnabled() const; - void SetConfirmationEnabled( sal_Bool bSet ); - sal_Bool IsExecutePlugins() const; - void SetExecutePlugins( sal_Bool bSet ); - EBasicSecurityMode GetBasicMode ( ) const ; - void SetBasicMode ( EBasicSecurityMode eMode ) ; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtSecurityOptions_Impl::SvtSecurityOptions_Impl() - :ConfigItem ( ROOTNODE_SECURITY ) - ,m_seqSecureURLs ( DEFAULT_SECUREURL ) - ,m_bSaveOrSend ( sal_True ) - ,m_bSigning ( sal_True ) - ,m_bPrint ( sal_True ) - ,m_bCreatePDF ( sal_True ) - ,m_bRemoveInfo ( sal_True ) - ,m_nSecLevel ( sal_True ) - ,m_seqTrustedAuthors ( DEFAULT_TRUSTEDAUTHORS ) - ,m_bDisableMacros ( sal_False ) - ,m_bROSecureURLs ( CFG_READONLY_DEFAULT ) - ,m_bROSaveOrSend ( CFG_READONLY_DEFAULT ) - ,m_bROSigning ( CFG_READONLY_DEFAULT ) - ,m_bROPrint ( CFG_READONLY_DEFAULT ) - ,m_bROCreatePDF ( CFG_READONLY_DEFAULT ) - ,m_bRORemoveInfo ( CFG_READONLY_DEFAULT ) - ,m_bROSecLevel ( CFG_READONLY_DEFAULT ) - ,m_bROTrustedAuthors ( CFG_READONLY_DEFAULT ) - ,m_bRODisableMacros ( sal_True ) // currently is not intended to be changed - - // xmlsec05 depricated - , m_eBasicMode ( DEFAULT_STAROFFICEBASIC ) - , m_bExecutePlugins ( sal_True ) - , m_bWarning ( sal_True ) - , m_bConfirmation ( sal_True ) - , m_bROConfirmation ( CFG_READONLY_DEFAULT ) - , m_bROWarning ( CFG_READONLY_DEFAULT ) - , m_bROExecutePlugins ( CFG_READONLY_DEFAULT ) - , m_bROBasicMode ( CFG_READONLY_DEFAULT ) - // xmlsec05 depricated - -{ - Sequence< OUString > seqNames = GetPropertyNames ( ); - Sequence< Any > seqValues = GetProperties ( seqNames ); - Sequence< sal_Bool > seqRO = GetReadOnlyStates ( seqNames ); - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtSecurityOptions_Impl::SvtSecurityOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Copy values from list in right order to our internal member. - sal_Int32 nPropertyCount = seqValues.getLength(); - for( sal_Int32 nProperty = 0 ; nProperty < nPropertyCount ; ++nProperty ) - SetProperty( nProperty, seqValues[ nProperty ], seqRO[ nProperty ] ); - - LoadAuthors(); - - // Enable notification mechanism of our baseclass. - // We need it to get information about changes outside these class on our used configuration keys!*/ - - EnableNotification( seqNames ); -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtSecurityOptions_Impl::~SvtSecurityOptions_Impl() -{ - if( IsModified() ) - Commit(); -} - -void SvtSecurityOptions_Impl::SetProperty( sal_Int32 nProperty, const Any& rValue, sal_Bool bRO ) -{ - switch( nProperty ) - { - case PROPERTYHANDLE_SECUREURL: - { - m_seqSecureURLs.realloc( 0 ); - rValue >>= m_seqSecureURLs; - SvtPathOptions aOpt; - sal_uInt32 nCount = m_seqSecureURLs.getLength(); - for( sal_uInt32 nItem = 0 ; nItem < nCount ; ++nItem ) - m_seqSecureURLs[ nItem ] = aOpt.SubstituteVariable( m_seqSecureURLs[ nItem ] ); - m_bROSecureURLs = bRO; - } - break; - - case PROPERTYHANDLE_DOCWARN_SAVEORSEND: - { - rValue >>= m_bSaveOrSend; - m_bROSaveOrSend = bRO; - } - break; - - case PROPERTYHANDLE_DOCWARN_SIGNING: - { - rValue >>= m_bSigning; - m_bROSigning = bRO; - } - break; - - case PROPERTYHANDLE_DOCWARN_PRINT: - { - rValue >>= m_bPrint; - m_bROPrint = bRO; - } - break; - - case PROPERTYHANDLE_DOCWARN_CREATEPDF: - { - rValue >>= m_bCreatePDF; - m_bROCreatePDF = bRO; - } - break; - - case PROPERTYHANDLE_DOCWARN_REMOVEPERSONALINFO: - { - rValue >>= m_bRemoveInfo; - m_bRORemoveInfo = bRO; - } - break; - - case PROPERTYHANDLE_DOCWARN_RECOMMENDPASSWORD: - { - rValue >>= m_bRecommendPwd; - m_bRORecommendPwd = bRO; - } - break; - - case PROPERTYHANDLE_CTRLCLICK_HYPERLINK: - { - rValue >>= m_bCtrlClickHyperlink; - m_bROCtrlClickHyperlink = bRO; - } - break; - - case PROPERTYHANDLE_MACRO_SECLEVEL: - { - rValue >>= m_nSecLevel; - m_bROSecLevel = bRO; - } - break; - - case PROPERTYHANDLE_MACRO_TRUSTEDAUTHORS: - { - // don't care about value here... - m_bROTrustedAuthors = bRO; - } - break; - - case PROPERTYHANDLE_MACRO_DISABLE: - { - rValue >>= m_bDisableMacros; - m_bRODisableMacros = bRO; - } - break; - - - // xmlsec05 depricated - case PROPERTYHANDLE_STAROFFICEBASIC: - { - sal_Int32 nMode = 0; - rValue >>= nMode; - m_eBasicMode = (EBasicSecurityMode)nMode; - m_bROBasicMode = bRO; - } - break; - case PROPERTYHANDLE_EXECUTEPLUGINS: - { - rValue >>= m_bExecutePlugins; - m_bROExecutePlugins = bRO; - } - break; - case PROPERTYHANDLE_WARNINGENABLED: - { - rValue >>= m_bWarning; - m_bROWarning = bRO; - } - break; - case PROPERTYHANDLE_CONFIRMATIONENABLED: - { - rValue >>= m_bConfirmation; - m_bROConfirmation = bRO; - } - break; - // xmlsec05 depricated - - - #if OSL_DEBUG_LEVEL > 1 - default: - DBG_ASSERT( false, "SvtSecurityOptions_Impl::SetProperty()\nUnkown property!\n" ); - #endif - } -} - -void SvtSecurityOptions_Impl::LoadAuthors( void ) -{ - m_seqTrustedAuthors.realloc( 0 ); // first clear - Sequence< OUString > lAuthors = GetNodeNames( PROPERTYNAME_MACRO_TRUSTEDAUTHORS ); - sal_Int32 c1 = lAuthors.getLength(); - if( c1 ) - { - sal_Int32 c2 = c1 * 3; // 3 Properties inside Struct TrustedAuthor - Sequence< OUString > lAllAuthors( c2 ); - - sal_Int32 i1; - sal_Int32 i2; - OUString aSep( RTL_CONSTASCII_USTRINGPARAM( "/" ) ); - for( i1 = 0, i2 = 0 ; i1 < c1 ; ++i1 ) - { - lAllAuthors[ i2 ] = PROPERTYNAME_MACRO_TRUSTEDAUTHORS + aSep + lAuthors[ i1 ] + aSep + PROPERTYNAME_TRUSTEDAUTHOR_SUBJECTNAME; - ++i2; - lAllAuthors[ i2 ] = PROPERTYNAME_MACRO_TRUSTEDAUTHORS + aSep + lAuthors[ i1 ] + aSep + PROPERTYNAME_TRUSTEDAUTHOR_SERIALNUMBER; - ++i2; - lAllAuthors[ i2 ] = PROPERTYNAME_MACRO_TRUSTEDAUTHORS + aSep + lAuthors[ i1 ] + aSep + PROPERTYNAME_TRUSTEDAUTHOR_RAWDATA; - ++i2; - } - - Sequence< Any > lValues = GetProperties( lAllAuthors ); - if( lValues.getLength() == c2 ) - { - m_seqTrustedAuthors.realloc( c1 ); - SvtSecurityOptions::Certificate aCert( 3 ); - for( i1 = 0, i2 = 0 ; i1 < c1 ; ++i1 ) - { - lValues[ i2 ] >>= aCert[ 0 ]; - ++i2; - lValues[ i2 ] >>= aCert[ 1 ]; - ++i2; - lValues[ i2 ] >>= aCert[ 2 ]; - ++i2; - m_seqTrustedAuthors[ i1 ] = aCert; - } - } - } -} - -sal_Int32 SvtSecurityOptions_Impl::GetHandle( const OUString& rName ) -{ - sal_Int32 nHandle; - - if( rName.compareToAscii( CSTR_SECUREURL ) == 0 ) - nHandle = PROPERTYHANDLE_SECUREURL; - else if( rName.compareToAscii( CSTR_DOCWARN_SAVEORSEND ) == 0 ) - nHandle = PROPERTYHANDLE_DOCWARN_SAVEORSEND; - else if( rName.compareToAscii( CSTR_DOCWARN_SIGNING ) == 0 ) - nHandle = PROPERTYHANDLE_DOCWARN_SIGNING; - else if( rName.compareToAscii( CSTR_DOCWARN_PRINT ) == 0 ) - nHandle = PROPERTYHANDLE_DOCWARN_PRINT; - else if( rName.compareToAscii( CSTR_DOCWARN_CREATEPDF ) == 0 ) - nHandle = PROPERTYHANDLE_DOCWARN_CREATEPDF; - else if( rName.compareToAscii( CSTR_DOCWARN_REMOVEPERSONALINFO ) == 0 ) - nHandle = PROPERTYHANDLE_DOCWARN_REMOVEPERSONALINFO; - else if( rName.compareToAscii( CSTR_DOCWARN_RECOMMENDPASSWORD ) == 0 ) - nHandle = PROPERTYHANDLE_DOCWARN_RECOMMENDPASSWORD; - else if( rName.compareToAscii( CSTR_CTRLCLICK_HYPERLINK ) == 0 ) - nHandle = PROPERTYHANDLE_CTRLCLICK_HYPERLINK; - else if( rName.compareToAscii( CSTR_MACRO_SECLEVEL ) == 0 ) - nHandle = PROPERTYHANDLE_MACRO_SECLEVEL; - else if( rName.compareToAscii( CSTR_MACRO_TRUSTEDAUTHORS ) == 0 ) - nHandle = PROPERTYHANDLE_MACRO_TRUSTEDAUTHORS; - else if( rName.compareToAscii( CSTR_MACRO_DISABLE ) == 0 ) - nHandle = PROPERTYHANDLE_MACRO_DISABLE; - - // xmlsec05 depricated - else if( rName == PROPERTYNAME_STAROFFICEBASIC ) - nHandle = PROPERTYHANDLE_STAROFFICEBASIC; - else if( rName == PROPERTYNAME_EXECUTEPLUGINS ) - nHandle = PROPERTYHANDLE_EXECUTEPLUGINS; - else if( rName == PROPERTYNAME_WARNINGENABLED ) - nHandle = PROPERTYHANDLE_WARNINGENABLED; - else if( rName == PROPERTYNAME_CONFIRMATIONENABLED ) - nHandle = PROPERTYHANDLE_CONFIRMATIONENABLED; - // xmlsec05 depricated - - else - nHandle = PROPERTYHANDLE_INVALID; - - return nHandle; -} - -bool SvtSecurityOptions_Impl::GetOption( SvtSecurityOptions::EOption eOption, sal_Bool*& rpValue, sal_Bool*& rpRO ) -{ - switch( eOption ) - { - case SvtSecurityOptions::E_DOCWARN_SAVEORSEND: - rpValue = &m_bSaveOrSend; - rpRO = &m_bROSaveOrSend; - break; - case SvtSecurityOptions::E_DOCWARN_SIGNING: - rpValue = &m_bSigning; - rpRO = &m_bROSigning; - break; - case SvtSecurityOptions::E_DOCWARN_PRINT: - rpValue = &m_bPrint; - rpRO = &m_bROPrint; - break; - case SvtSecurityOptions::E_DOCWARN_CREATEPDF: - rpValue = &m_bCreatePDF; - rpRO = &m_bROCreatePDF; - break; - case SvtSecurityOptions::E_DOCWARN_REMOVEPERSONALINFO: - rpValue = &m_bRemoveInfo; - rpRO = &m_bRORemoveInfo; - break; - case SvtSecurityOptions::E_DOCWARN_RECOMMENDPASSWORD: - rpValue = &m_bRecommendPwd; - rpRO = &m_bRORecommendPwd; - break; - case SvtSecurityOptions::E_CTRLCLICK_HYPERLINK: - rpValue = &m_bCtrlClickHyperlink; - rpRO = &m_bROCtrlClickHyperlink; - break; - default: - rpValue = NULL; - rpRO = NULL; - break; - } - - return rpValue != NULL; -} - -void SvtSecurityOptions_Impl::Notify( const Sequence< OUString >& seqPropertyNames ) -{ - // Use given list of updated properties to get his values from configuration directly! - Sequence< Any > seqValues = GetProperties( seqPropertyNames ); - Sequence< sal_Bool > seqRO = GetReadOnlyStates( seqPropertyNames ); - // Safe impossible cases. - // We need values from ALL notified configuration keys. - DBG_ASSERT( !(seqPropertyNames.getLength()!=seqValues.getLength()), "SvtSecurityOptions_Impl::Notify()\nI miss some values of configuration keys!\n" ); - // Step over list of property names and get right value from coreesponding value list to set it on internal members! - sal_Int32 nCount = seqPropertyNames.getLength(); - for( sal_Int32 nProperty = 0 ; nProperty < nCount ; ++nProperty ) - SetProperty( GetHandle( seqPropertyNames[ nProperty ] ), seqValues[ nProperty ], seqRO[ nProperty ] ); - - // read set of trusted authors separately - LoadAuthors(); -} - -void SvtSecurityOptions_Impl::Commit() -{ - // Get names of supported properties, create a list for values and copy current values to it. - Sequence< OUString > lOrgNames = GetPropertyNames(); - sal_Int32 nOrgCount = lOrgNames.getLength(); - - Sequence< OUString > lNames(nOrgCount); - Sequence< Any > lValues(nOrgCount); - sal_Int32 nRealCount = 0; - bool bDone; - - ClearNodeSet( PROPERTYNAME_MACRO_TRUSTEDAUTHORS ); - - for( sal_Int32 nProperty = 0 ; nProperty < nOrgCount ; ++nProperty ) - { - switch( nProperty ) - { - case PROPERTYHANDLE_SECUREURL: - { - bDone = !m_bROSecureURLs; - if( bDone ) - { - Sequence< OUString > lURLs( m_seqSecureURLs ); - SvtPathOptions aOpt; - sal_Int32 nURLsCnt = lURLs.getLength(); - for( sal_Int32 nItem = 0 ; nItem < nURLsCnt ; ++nItem ) - lURLs[ nItem ] = aOpt.UseVariable( lURLs[ nItem ] ); - lValues[ nRealCount ] <<= lURLs; - } - } - break; - - case PROPERTYHANDLE_DOCWARN_SAVEORSEND: - { - bDone = !m_bROSaveOrSend; - if( bDone ) - lValues[ nRealCount ] <<= m_bSaveOrSend; - } - break; - - case PROPERTYHANDLE_DOCWARN_SIGNING: - { - bDone = !m_bROSigning; - if( bDone ) - lValues[ nRealCount ] <<= m_bSigning; - } - break; - - case PROPERTYHANDLE_DOCWARN_PRINT: - { - bDone = !m_bROPrint; - if( bDone ) - lValues[ nRealCount ] <<= m_bPrint; - } - break; - - case PROPERTYHANDLE_DOCWARN_CREATEPDF: - { - bDone = !m_bROCreatePDF; - if( bDone ) - lValues[ nRealCount ] <<= m_bCreatePDF; - } - break; - - case PROPERTYHANDLE_DOCWARN_REMOVEPERSONALINFO: - { - bDone = !m_bRORemoveInfo; - if( bDone ) - lValues[ nRealCount ] <<= m_bRemoveInfo; - } - break; - - case PROPERTYHANDLE_DOCWARN_RECOMMENDPASSWORD: - { - bDone = !m_bRORecommendPwd; - if( bDone ) - lValues[ nRealCount ] <<= m_bRecommendPwd; - } - break; - - case PROPERTYHANDLE_CTRLCLICK_HYPERLINK: - { - bDone = !m_bROCtrlClickHyperlink; - if( bDone ) - lValues[ nRealCount ] <<= m_bCtrlClickHyperlink; - } - break; - - case PROPERTYHANDLE_MACRO_SECLEVEL: - { - bDone = !m_bROSecLevel; - if( bDone ) - lValues[ nRealCount ] <<= m_nSecLevel; - } - break; - - case PROPERTYHANDLE_MACRO_TRUSTEDAUTHORS: - { - bDone = !m_bROTrustedAuthors; - if( bDone ) - { - sal_Int32 nCnt = m_seqTrustedAuthors.getLength(); - if( nCnt ) - { - String s; - s.AppendAscii( CSTR_MACRO_TRUSTEDAUTHORS ); - s.AppendAscii( "/a" ); - - Sequence< Sequence< com::sun::star::beans::PropertyValue > > lPropertyValuesSeq( nCnt ); - for( sal_Int32 i = 0 ; i < nCnt ; ++i ) - { - String aPrefix( s ); - aPrefix += String::CreateFromInt32( i ); - aPrefix.AppendAscii( "/" ); - Sequence< com::sun::star::beans::PropertyValue > lPropertyValues( 3 ); - lPropertyValues[ 0 ].Name = aPrefix + PROPERTYNAME_TRUSTEDAUTHOR_SUBJECTNAME; - lPropertyValues[ 0 ].Value <<= m_seqTrustedAuthors[ i ][0]; - lPropertyValues[ 1 ].Name = aPrefix + PROPERTYNAME_TRUSTEDAUTHOR_SERIALNUMBER; - lPropertyValues[ 1 ].Value <<= m_seqTrustedAuthors[ i ][1]; - lPropertyValues[ 2 ].Name = aPrefix + PROPERTYNAME_TRUSTEDAUTHOR_RAWDATA; - lPropertyValues[ 2 ].Value <<= m_seqTrustedAuthors[ i ][2]; - - - SetSetProperties( PROPERTYNAME_MACRO_TRUSTEDAUTHORS, lPropertyValues ); - } - - bDone = false; // because we save in loop above! - } - else - bDone = false; - } - } - break; - - case PROPERTYHANDLE_MACRO_DISABLE: - { - bDone = !m_bRODisableMacros; - if( bDone ) - lValues[ nRealCount ] <<= (sal_Bool)m_bDisableMacros; - } - break; - - - // xmlsec05 depricated - case PROPERTYHANDLE_STAROFFICEBASIC: - { - bDone = !m_bROBasicMode; - if( bDone ) - lValues[ nRealCount ] <<= (sal_Int32)m_eBasicMode; - } - break; - case PROPERTYHANDLE_EXECUTEPLUGINS: - { - bDone = !m_bROExecutePlugins; - if( bDone ) - lValues[ nRealCount ] <<= m_bExecutePlugins; - } - break; - case PROPERTYHANDLE_WARNINGENABLED: - { - bDone = !m_bROWarning; - if( bDone ) - lValues[ nRealCount ] <<= m_bWarning; - } - break; - case PROPERTYHANDLE_CONFIRMATIONENABLED: - { - bDone = !m_bROConfirmation; - if( bDone ) - lValues[ nRealCount ] <<= m_bConfirmation; - } - break; - // xmlsec05 depricated - - - default: - bDone = false; - } - - if( bDone ) - { - lNames[ nRealCount ] = lOrgNames[ nProperty ]; - ++nRealCount; - } - } - // Set properties in configuration. - lNames.realloc(nRealCount); - lValues.realloc(nRealCount); - PutProperties( lNames, lValues ); -} - -sal_Bool SvtSecurityOptions_Impl::IsReadOnly( SvtSecurityOptions::EOption eOption ) const -{ - sal_Bool bReadonly; - switch(eOption) - { - case SvtSecurityOptions::E_SECUREURLS : - bReadonly = m_bROSecureURLs; - break; - case SvtSecurityOptions::E_DOCWARN_SAVEORSEND: - bReadonly = m_bROSaveOrSend; - break; - case SvtSecurityOptions::E_DOCWARN_SIGNING: - bReadonly = m_bROSigning; - break; - case SvtSecurityOptions::E_DOCWARN_PRINT: - bReadonly = m_bROPrint; - break; - case SvtSecurityOptions::E_DOCWARN_CREATEPDF: - bReadonly = m_bROCreatePDF; - break; - case SvtSecurityOptions::E_DOCWARN_REMOVEPERSONALINFO: - bReadonly = m_bRORemoveInfo; - break; - case SvtSecurityOptions::E_DOCWARN_RECOMMENDPASSWORD: - bReadonly = m_bRORecommendPwd; - break; - case SvtSecurityOptions::E_MACRO_SECLEVEL: - bReadonly = m_bROSecLevel; - break; - case SvtSecurityOptions::E_MACRO_TRUSTEDAUTHORS: - bReadonly = m_bROTrustedAuthors; - break; - case SvtSecurityOptions::E_MACRO_DISABLE: - bReadonly = m_bRODisableMacros; - break; - case SvtSecurityOptions::E_CTRLCLICK_HYPERLINK: - bReadonly = m_bROCtrlClickHyperlink; - break; - - - // xmlsec05 depricated - case SvtSecurityOptions::E_BASICMODE: - bReadonly = m_bROBasicMode; - break; - case SvtSecurityOptions::E_EXECUTEPLUGINS: - bReadonly = m_bROExecutePlugins; - break; - case SvtSecurityOptions::E_WARNING: - bReadonly = m_bROWarning; - break; - case SvtSecurityOptions::E_CONFIRMATION: - bReadonly = m_bROConfirmation; - break; - // xmlsec05 depricated - - - default: - bReadonly = sal_True; - } - - return bReadonly; -} - -Sequence< OUString > SvtSecurityOptions_Impl::GetSecureURLs() const -{ - return m_seqSecureURLs; -} - -void SvtSecurityOptions_Impl::SetSecureURLs( const Sequence< OUString >& seqURLList ) -{ - DBG_ASSERT(!m_bROSecureURLs, "SvtSecurityOptions_Impl::SetSecureURLs()\nYou tried to write on a readonly value!\n"); - if (!m_bROSecureURLs && m_seqSecureURLs!=seqURLList) - { - m_seqSecureURLs = seqURLList; - SetModified(); - } -} - -sal_Bool SvtSecurityOptions_Impl::IsSecureURL( const OUString& sURL , - const OUString& sReferer) const -{ - sal_Bool bState = sal_False; - - // Check for uncritical protocols first - // All protocols different from "macro..." and "slot..." are secure per definition and must not be checked. - // "macro://#..." means AppBasic macros that are considered safe - INetURLObject aURL ( sURL ); - INetProtocol aProtocol = aURL.GetProtocol(); - - // All other URLs must checked in combination with referer and internal information about security - if ( (aProtocol != INET_PROT_MACRO && aProtocol != INET_PROT_SLOT) || - aURL.GetMainURL( INetURLObject::NO_DECODE ).matchIgnoreAsciiCaseAsciiL( "macro:///", 9 ) == 0) - { - // security check only for "macro" ( without app basic ) or "slot" protocols - bState = sal_True; - } - else - { - // check list of allowed URL patterns - // Trusted referer given? - // NO => bState will be false per default - // YES => search for it in our internal url list - if( sReferer.getLength() > 0 ) - { - // Search in internal list - ::rtl::OUString sRef = sReferer.toAsciiLowerCase(); - sal_uInt32 nCount = m_seqSecureURLs.getLength(); - for( sal_uInt32 nItem=0; nItem<nCount; ++nItem ) - { - OUString sCheckURL = m_seqSecureURLs[nItem].toAsciiLowerCase(); - sCheckURL += OUString(RTL_CONSTASCII_USTRINGPARAM("*")); - if( WildCard( sCheckURL ).Matches( sRef ) == sal_True ) - { - bState = sal_True; - break; - } - } - - if ( !bState ) - bState = sRef.compareToAscii("private:user") == COMPARE_EQUAL; - } - } - - // Return result of operation. - return bState; -} - -inline sal_Int32 SvtSecurityOptions_Impl::GetMacroSecurityLevel() const -{ - return m_nSecLevel; -} - -inline sal_Bool SvtSecurityOptions_Impl::IsMacroDisabled() const -{ - return m_bDisableMacros; -} - -void SvtSecurityOptions_Impl::SetMacroSecurityLevel( sal_Int32 _nLevel ) -{ - if( !m_bROSecLevel ) - { - if( _nLevel > 3 || _nLevel < 0 ) - _nLevel = 3; - - if( m_nSecLevel != _nLevel ) - { - m_nSecLevel = _nLevel; - SetModified(); - } - } -} - -Sequence< SvtSecurityOptions::Certificate > SvtSecurityOptions_Impl::GetTrustedAuthors() const -{ - return m_seqTrustedAuthors; -} - -void SvtSecurityOptions_Impl::SetTrustedAuthors( const Sequence< SvtSecurityOptions::Certificate >& rAuthors ) -{ - DBG_ASSERT(!m_bROTrustedAuthors, "SvtSecurityOptions_Impl::SetTrustedAuthors()\nYou tried to write on a readonly value!\n"); - if( !m_bROTrustedAuthors && rAuthors != m_seqTrustedAuthors ) - { - m_seqTrustedAuthors = rAuthors; - SetModified(); - } -} - -sal_Bool SvtSecurityOptions_Impl::IsTrustedAuthorsEnabled() -{ - return m_bROTrustedAuthors; -} - -sal_Bool SvtSecurityOptions_Impl::IsOptionSet( SvtSecurityOptions::EOption eOption ) const -{ - sal_Bool* pValue; - sal_Bool* pRO; - sal_Bool bRet = sal_False; - - if( ( const_cast< SvtSecurityOptions_Impl* >( this ) )->GetOption( eOption, pValue, pRO ) ) - bRet = *pValue; - - return bRet; -} - -sal_Bool SvtSecurityOptions_Impl::SetOption( SvtSecurityOptions::EOption eOption, sal_Bool bValue ) -{ - sal_Bool* pValue; - sal_Bool* pRO; - sal_Bool bRet = sal_False; - - if( GetOption( eOption, pValue, pRO ) ) - { - if( !*pRO ) - { - bRet = sal_True; - if( *pValue != bValue ) - { - *pValue = bValue; - SetModified(); - } - } - } - - return bRet; -} - -sal_Bool SvtSecurityOptions_Impl::IsOptionEnabled( SvtSecurityOptions::EOption eOption ) const -{ - sal_Bool* pValue; - sal_Bool* pRO; - sal_Bool bRet = sal_False; - - if( ( const_cast< SvtSecurityOptions_Impl* >( this ) )->GetOption( eOption, pValue, pRO ) ) - bRet = !*pRO; - - return bRet; -} - -Sequence< OUString > SvtSecurityOptions_Impl::GetPropertyNames() -{ - // Build static list of configuration key names. - const OUString pProperties[] = - { - PROPERTYNAME_SECUREURL, - PROPERTYNAME_STAROFFICEBASIC, - PROPERTYNAME_EXECUTEPLUGINS, - PROPERTYNAME_WARNINGENABLED, - PROPERTYNAME_CONFIRMATIONENABLED, - PROPERTYNAME_DOCWARN_SAVEORSEND, - PROPERTYNAME_DOCWARN_SIGNING, - PROPERTYNAME_DOCWARN_PRINT, - PROPERTYNAME_DOCWARN_CREATEPDF, - PROPERTYNAME_DOCWARN_REMOVEPERSONALINFO, - PROPERTYNAME_DOCWARN_RECOMMENDPASSWORD, - PROPERTYNAME_CTRLCLICK_HYPERLINK, - PROPERTYNAME_MACRO_SECLEVEL, - PROPERTYNAME_MACRO_TRUSTEDAUTHORS, - PROPERTYNAME_MACRO_DISABLE - }; - // Initialize return sequence with these list ... - const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT ); - // ... and return it. - return seqPropertyNames; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtSecurityOptions_Impl* SvtSecurityOptions::m_pDataContainer = NULL ; -sal_Int32 SvtSecurityOptions::m_nRefCount = 0 ; - -SvtSecurityOptions::SvtSecurityOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetInitMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already exist! - if( m_pDataContainer == NULL ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtSecurityOptions_Impl::ctor()"); - m_pDataContainer = new SvtSecurityOptions_Impl; - - ItemHolder1::holdConfigItem(E_SECURITYOPTIONS); - } -} - -SvtSecurityOptions::~SvtSecurityOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetInitMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -sal_Bool SvtSecurityOptions::IsReadOnly( EOption eOption ) const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->IsReadOnly(eOption); -} - -Sequence< OUString > SvtSecurityOptions::GetSecureURLs() const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->GetSecureURLs(); -} - -void SvtSecurityOptions::SetSecureURLs( const Sequence< OUString >& seqURLList ) -{ - MutexGuard aGuard( GetInitMutex() ); - m_pDataContainer->SetSecureURLs( seqURLList ); -} - -sal_Bool SvtSecurityOptions::IsSecureURL( const OUString& sURL , - const OUString& sReferer ) const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->IsSecureURL( sURL, sReferer ); -} - -sal_Int32 SvtSecurityOptions::GetMacroSecurityLevel() const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->GetMacroSecurityLevel(); -} - -void SvtSecurityOptions::SetMacroSecurityLevel( sal_Int32 _nLevel ) -{ - MutexGuard aGuard( GetInitMutex() ); - m_pDataContainer->SetMacroSecurityLevel( _nLevel ); -} - -sal_Bool SvtSecurityOptions::IsMacroDisabled() const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->IsMacroDisabled(); -} - -Sequence< SvtSecurityOptions::Certificate > SvtSecurityOptions::GetTrustedAuthors() const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->GetTrustedAuthors(); -} - -void SvtSecurityOptions::SetTrustedAuthors( const Sequence< Certificate >& rAuthors ) -{ - MutexGuard aGuard( GetInitMutex() ); - m_pDataContainer->SetTrustedAuthors( rAuthors ); -} - -sal_Bool SvtSecurityOptions::IsTrustedAuthorsEnabled() -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->IsTrustedAuthorsEnabled(); -} - -bool SvtSecurityOptions::IsOptionSet( EOption eOption ) const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->IsOptionSet( eOption ); -} - -bool SvtSecurityOptions::SetOption( EOption eOption, bool bValue ) -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->SetOption( eOption, bValue ); -} - -bool SvtSecurityOptions::IsOptionEnabled( EOption eOption ) const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->IsOptionEnabled( eOption ); -} - -namespace -{ - class theSecurityOptionsMutex : public rtl::Static<osl::Mutex, theSecurityOptionsMutex>{}; -} - -Mutex& SvtSecurityOptions::GetInitMutex() -{ - return theSecurityOptionsMutex::get(); -} - - - - -// xmlsec05 depricated - -EBasicSecurityMode SvtSecurityOptions_Impl::GetBasicMode() const -{ - return m_eBasicMode; -} - -void SvtSecurityOptions_Impl::SetBasicMode( EBasicSecurityMode eMode ) -{ - DBG_ASSERT(!m_bROBasicMode, "SvtSecurityOptions_Impl::SetBasicMode()\nYou tried to write on a readonly value!\n"); - if (!m_bROBasicMode && m_eBasicMode!=eMode) - { - m_eBasicMode = eMode; - SetModified(); - } -} - -sal_Bool SvtSecurityOptions_Impl::IsExecutePlugins() const -{ - return m_bExecutePlugins; -} - -void SvtSecurityOptions_Impl::SetExecutePlugins( sal_Bool bSet ) -{ - DBG_ASSERT(!m_bROExecutePlugins, "SvtSecurityOptions_Impl::SetExecutePlugins()\nYou tried to write on a readonly value!\n"); - if (!m_bROExecutePlugins && m_bExecutePlugins!=bSet) - { - m_bExecutePlugins = bSet; - SetModified(); - } -} - -sal_Bool SvtSecurityOptions_Impl::IsWarningEnabled() const -{ - return m_bWarning; -} - -void SvtSecurityOptions_Impl::SetWarningEnabled( sal_Bool bSet ) -{ - DBG_ASSERT(!m_bROWarning, "SvtSecurityOptions_Impl::SetWarningEnabled()\nYou tried to write on a readonly value!\n"); - if (!m_bROWarning && m_bWarning!=bSet) - { - m_bWarning = bSet; - SetModified(); - } -} - -sal_Bool SvtSecurityOptions_Impl::IsConfirmationEnabled() const -{ - return m_bConfirmation; -} - -void SvtSecurityOptions_Impl::SetConfirmationEnabled( sal_Bool bSet ) -{ - DBG_ASSERT(!m_bROConfirmation, "SvtSecurityOptions_Impl::SetConfirmationEnabled()\nYou tried to write on a readonly value!\n"); - if (!m_bROConfirmation && m_bConfirmation!=bSet) - { - m_bConfirmation = bSet; - SetModified(); - } -} - - -sal_Bool SvtSecurityOptions::IsExecutePlugins() const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->IsExecutePlugins(); -} - -void SvtSecurityOptions::SetExecutePlugins( sal_Bool bSet ) -{ - MutexGuard aGuard( GetInitMutex() ); - m_pDataContainer->SetExecutePlugins( bSet ); -} - -sal_Bool SvtSecurityOptions::IsWarningEnabled() const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->IsWarningEnabled(); -} - -void SvtSecurityOptions::SetWarningEnabled( sal_Bool bSet ) -{ - MutexGuard aGuard( GetInitMutex() ); - m_pDataContainer->SetWarningEnabled( bSet ); -} - -sal_Bool SvtSecurityOptions::IsConfirmationEnabled() const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->IsConfirmationEnabled(); -} - -void SvtSecurityOptions::SetConfirmationEnabled( sal_Bool bSet ) -{ - MutexGuard aGuard( GetInitMutex() ); - m_pDataContainer->SetConfirmationEnabled( bSet ); -} - -void SvtSecurityOptions::SetBasicMode( EBasicSecurityMode eMode ) -{ - MutexGuard aGuard( GetInitMutex() ); - m_pDataContainer->SetBasicMode( eMode ); -} - -EBasicSecurityMode SvtSecurityOptions::GetBasicMode() const -{ - MutexGuard aGuard( GetInitMutex() ); - return m_pDataContainer->GetBasicMode(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/sourceviewconfig.cxx b/unotools/source/config/sourceviewconfig.cxx deleted file mode 100644 index 3d47a08e14..0000000000 --- a/unotools/source/config/sourceviewconfig.cxx +++ /dev/null @@ -1,244 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/sourceviewconfig.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <rtl/instance.hxx> - -#include <itemholder1.hxx> - -using namespace utl; -using namespace com::sun::star::uno; - -using ::rtl::OUString; - -namespace utl -{ -class SourceViewConfig_Impl : public utl::ConfigItem -{ -private: - OUString m_sFontName; - sal_Int16 m_nFontHeight; - sal_Bool m_bProportionalFontOnly; - - void Load(); - - static Sequence< OUString > GetPropertyNames(); - -public: - SourceViewConfig_Impl(); - ~SourceViewConfig_Impl(); - - virtual void Notify( const Sequence< rtl::OUString >& aPropertyNames ); - virtual void Commit(); - - const rtl::OUString& GetFontName() const - {return m_sFontName;} - void SetFontName(const rtl::OUString& rName) - { - if(rName != m_sFontName) - { - m_sFontName = rName; - SetModified(); - } - } - - sal_Int16 GetFontHeight() const - {return m_nFontHeight;} - void SetFontHeight(sal_Int16 nHeight) - { - if(m_nFontHeight != nHeight) - { - m_nFontHeight = nHeight; - SetModified(); - } - } - - sal_Bool IsShowProportionalFontsOnly() const - {return m_bProportionalFontOnly;} - void SetShowProportionalFontsOnly(sal_Bool bSet) - { - if(m_bProportionalFontOnly != bSet) - { - m_bProportionalFontOnly = bSet; - SetModified(); - } - } -}; -// initialization of static members -------------------------------------- -SourceViewConfig_Impl* SourceViewConfig::m_pImplConfig = 0; -sal_Int32 SourceViewConfig::m_nRefCount = 0; -namespace { struct lclMutex : public rtl::Static< ::osl::Mutex, lclMutex > {}; } - -SourceViewConfig_Impl::SourceViewConfig_Impl() : - ConfigItem(OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Font/SourceViewFont"))), - m_nFontHeight(12), - m_bProportionalFontOnly(sal_False) -{ - Load(); -} - -SourceViewConfig_Impl::~SourceViewConfig_Impl() -{ -} - -Sequence< OUString > SourceViewConfig_Impl::GetPropertyNames() -{ - //this list needs exactly to mach the enum PropertyNameIndex - static const char* aPropNames[] = - { - "FontName" // 0 - ,"FontHeight" // 1 - ,"NonProportionalFontsOnly" // 2 - }; - const int nCount = sizeof( aPropNames ) / sizeof( const char* ); - Sequence< OUString > aNames( nCount ); - OUString* pNames = aNames.getArray(); - for ( int i = 0; i < nCount; i++ ) - pNames[i] = OUString::createFromAscii( aPropNames[i] ); - - return aNames; -} - -void SourceViewConfig_Impl::Load() -{ - Sequence< OUString > aNames = GetPropertyNames(); - Sequence< Any > aValues = GetProperties( aNames ); - EnableNotification( aNames ); - const Any* pValues = aValues.getConstArray(); - DBG_ASSERT( aValues.getLength() == aNames.getLength(), "GetProperties failed" ); - if ( aValues.getLength() == aNames.getLength() ) - { - for ( int nProp = 0; nProp < aNames.getLength(); nProp++ ) - { - if ( pValues[nProp].hasValue() ) - { - switch( nProp ) - { - case 0: pValues[nProp] >>= m_sFontName; break; - case 1: pValues[nProp] >>= m_nFontHeight; break; - case 2: pValues[nProp] >>= m_bProportionalFontOnly; break; - } - } - } - } -} - -void SourceViewConfig_Impl::Notify( const Sequence< OUString >& ) -{ - Load(); -} - -void SourceViewConfig_Impl::Commit() -{ - ClearModified(); - Sequence< OUString > aNames = GetPropertyNames(); - Sequence< Any > aValues( aNames.getLength() ); - Any* pValues = aValues.getArray(); - for ( int nProp = 0; nProp < aNames.getLength(); nProp++ ) - { - switch( nProp ) - { - case 0: pValues[nProp] <<= m_sFontName; break; - case 1: pValues[nProp] <<= m_nFontHeight; break; - case 2: pValues[nProp] <<= m_bProportionalFontOnly; break; - default: - DBG_ERRORFILE( "invalid index to save a user token" ); - } - } - PutProperties( aNames, aValues ); - - NotifyListeners(0); -} - -SourceViewConfig::SourceViewConfig() -{ - { - ::osl::MutexGuard aGuard( lclMutex::get() ); - if(!m_pImplConfig) - { - m_pImplConfig = new SourceViewConfig_Impl; - ItemHolder1::holdConfigItem(E_SOURCEVIEWCONFIG); - } - - ++m_nRefCount; - } - - m_pImplConfig->AddListener( this ); -} - -SourceViewConfig::~SourceViewConfig() -{ - m_pImplConfig->RemoveListener( this ); - ::osl::MutexGuard aGuard( lclMutex::get() ); - if( !--m_nRefCount ) - { - if( m_pImplConfig->IsModified() ) - m_pImplConfig->Commit(); - DELETEZ( m_pImplConfig ); - } -} - -const OUString& SourceViewConfig::GetFontName() const -{ - return m_pImplConfig->GetFontName(); -} - -void SourceViewConfig::SetFontName(const OUString& rName) -{ - m_pImplConfig->SetFontName(rName); -} - -sal_Int16 SourceViewConfig::GetFontHeight() const -{ - return m_pImplConfig->GetFontHeight(); -} - -void SourceViewConfig::SetFontHeight(sal_Int16 nHeight) -{ - m_pImplConfig->SetFontHeight(nHeight); -} - -sal_Bool SourceViewConfig::IsShowProportionalFontsOnly() const -{ - return m_pImplConfig->IsShowProportionalFontsOnly(); -} - -void SourceViewConfig::SetShowProportionalFontsOnly(sal_Bool bSet) -{ - m_pImplConfig->SetShowProportionalFontsOnly(bSet); -} -} -// namespace utl - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/startoptions.cxx b/unotools/source/config/startoptions.cxx deleted file mode 100644 index 881771295f..0000000000 --- a/unotools/source/config/startoptions.cxx +++ /dev/null @@ -1,443 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/startoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <rtl/logfile.hxx> -#include "itemholder1.hxx" -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define DEFAULT_SHOWINTRO sal_True -#define DEFAULT_CONNECTIONURL OUString() - -#define ROOTNODE_START OUString(RTL_CONSTASCII_USTRINGPARAM("Setup/Office" )) -#define PROPERTYNAME_SHOWINTRO OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupShowIntro" )) -#define PROPERTYNAME_CONNECTIONURL OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupConnectionURL" )) - -#define PROPERTYHANDLE_SHOWINTRO 0 -#define PROPERTYHANDLE_CONNECTIONURL 1 - -#define PROPERTYCOUNT 2 - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -class SvtStartOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtStartOptions_Impl(); - ~SvtStartOptions_Impl(); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @ATTENTION We don't implement these method - because we support readonly values at runtime only! - - @seealso baseclass ConfigItem - - @param "seqPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& seqPropertyNames ); - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @ATTENTION We don't implement these method - because we support readonly values at runtime only! - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short access method to get internal values - @descr These method give us a chance to regulate acces to ouer internal values. - It's not used in the moment - but it's possible for the feature! - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - sal_Bool IsIntroEnabled ( ) const ; - void EnableIntro ( sal_Bool bState ) ; - OUString GetConnectionURL( ) const ; - void SetConnectionURL( const OUString& sURL ) ; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return list of fix key names of ouer configuration management which represent oue module tree - @descr These methods return a static const list of key names. We need it to get needed values from our - configuration management. We return well known key names only - because the "UserData" node - is handled in a special way! - - @seealso - - - @param - - @return A list of needed configuration keys is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - static Sequence< OUString > impl_GetPropertyNames(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - sal_Bool m_bShowIntro ; /// cache "ShowIntro" of Start section - OUString m_sConnectionURL ; /// cache "Connection" of Start section -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtStartOptions_Impl::SvtStartOptions_Impl() - // Init baseclasses first - : ConfigItem ( ROOTNODE_START ) - // Init member then. - , m_bShowIntro ( DEFAULT_SHOWINTRO ) -{ - // Use our static list of configuration keys to get his values. - Sequence< OUString > seqNames = impl_GetPropertyNames(); - Sequence< Any > seqValues = GetProperties( seqNames ) ; - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtStartOptions_Impl::SvtStartOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Copy values from list in right order to ouer internal member. - sal_Int32 nPropertyCount = seqValues.getLength() ; - sal_Int32 nProperty = 0 ; - for( nProperty=0; nProperty<nPropertyCount; ++nProperty ) - { - // Safe impossible cases. - // Check any for valid value. - DBG_ASSERT( !(seqValues[nProperty].hasValue()==sal_False), "SvtStartOptions_Impl::SvtStartOptions_Impl()\nInvalid property value for property detected!\n" ); - switch( nProperty ) - { - case PROPERTYHANDLE_SHOWINTRO : { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtStartOptions_Impl::SvtStartOptions_Impl()\nWho has changed the value type of \"Office.Common\\Start\\ShowIntro\"?" ); - seqValues[nProperty] >>= m_bShowIntro; - } - break; - - case PROPERTYHANDLE_CONNECTIONURL : { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_STRING), "SvtStartOptions_Impl::SvtStartOptions_Impl()\nWho has changed the value type of \"Office.Common\\Start\\Connection\"?" ); - seqValues[nProperty] >>= m_sConnectionURL; - } - break; - } - } - - // Don't enable notification mechanism of ouer baseclass! - // We support readonly variables in the moment. -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtStartOptions_Impl::~SvtStartOptions_Impl() -{ - // We must save our current values .. if user forget it! - if( IsModified() == sal_True ) - { - Commit(); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtStartOptions_Impl::Notify( const Sequence< OUString >& seqPropertyNames ) -{ - // Use given list of updated properties to get his values from configuration directly! - Sequence< Any > seqValues = GetProperties( seqPropertyNames ); - // Safe impossible cases. - // We need values from ALL notified configuration keys. - DBG_ASSERT( !(seqPropertyNames.getLength()!=seqValues.getLength()), "SvtStartOptions_Impl::Notify()\nI miss some values of configuration keys!\n" ); - // Step over list of property names and get right value from coreesponding value list to set it on internal members! - sal_Int32 nCount = seqPropertyNames.getLength(); - for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty ) - { - if( seqPropertyNames[nProperty] == PROPERTYNAME_SHOWINTRO ) - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtStartOptions_Impl::Notify()\nWho has changed the value type of \"Office.Common\\Start\\ShowIntro\"?" ); - seqValues[nProperty] >>= m_bShowIntro; - } - else - if( seqPropertyNames[nProperty] == PROPERTYNAME_CONNECTIONURL ) - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_STRING), "SvtStartOptions_Impl::Notify()\nWho has changed the value type of \"Office.Common\\Start\\Connection\"?" ); - seqValues[nProperty] >>= m_sConnectionURL; - } - #if OSL_DEBUG_LEVEL > 1 - else DBG_ASSERT( sal_False, "SvtStartOptions_Impl::Notify()\nUnkown property detected ... I can't handle these!\n" ); - #endif - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtStartOptions_Impl::Commit() -{ - // Get names of supported properties, create a list for values and copy current values to it. - Sequence< OUString > seqNames = impl_GetPropertyNames(); - sal_Int32 nCount = seqNames.getLength(); - Sequence< Any > seqValues ( nCount ); - for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty ) - { - switch( nProperty ) - { - case PROPERTYHANDLE_SHOWINTRO : { - seqValues[nProperty] <<= m_bShowIntro; - } - break; - case PROPERTYHANDLE_CONNECTIONURL : { - seqValues[nProperty] <<= m_sConnectionURL; - } - break; - } - } - // Set properties in configuration. - PutProperties( seqNames, seqValues ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtStartOptions_Impl::IsIntroEnabled() const -{ - return m_bShowIntro; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtStartOptions_Impl::EnableIntro( sal_Bool bState ) -{ - m_bShowIntro = bState; - SetModified(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -OUString SvtStartOptions_Impl::GetConnectionURL() const -{ - return m_sConnectionURL; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtStartOptions_Impl::SetConnectionURL( const OUString& sURL ) -{ - m_sConnectionURL = sURL; - SetModified(); -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Sequence< OUString > SvtStartOptions_Impl::impl_GetPropertyNames() -{ - // Build list of configuration key names. - const OUString pProperties[] = - { - PROPERTYNAME_SHOWINTRO , - PROPERTYNAME_CONNECTIONURL , - }; - // Initialize return sequence with these list ... - const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT ); - // ... and return it. - return seqPropertyNames; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtStartOptions_Impl* SvtStartOptions::m_pDataContainer = NULL ; -sal_Int32 SvtStartOptions::m_nRefCount = 0 ; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtStartOptions::SvtStartOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already! - if( m_pDataContainer == NULL ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtStartOptions_Impl::ctor()"); - m_pDataContainer = new SvtStartOptions_Impl(); - - ItemHolder1::holdConfigItem(E_STARTOPTIONS); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtStartOptions::~SvtStartOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtStartOptions::IsIntroEnabled() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsIntroEnabled(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtStartOptions::EnableIntro( sal_Bool bState ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->EnableIntro( bState ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -OUString SvtStartOptions::GetConnectionURL() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetConnectionURL(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtStartOptions::SetConnectionURL( const OUString& sURL ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetConnectionURL( sURL ); -} - -namespace -{ - class theStartOptionsMutex : public rtl::Static<osl::Mutex, theStartOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtStartOptions::GetOwnStaticMutex() -{ - return theStartOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/syslocaleoptions.cxx b/unotools/source/config/syslocaleoptions.cxx deleted file mode 100644 index 5abeca2b33..0000000000 --- a/unotools/source/config/syslocaleoptions.cxx +++ /dev/null @@ -1,691 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <com/sun/star/uno/Sequence.hxx> -#include <rtl/ustrbuf.hxx> -#include <rtl/instance.hxx> -#include <rtl/logfile.hxx> -#include <i18npool/mslangid.hxx> -#include <tools/string.hxx> -#include <tools/debug.hxx> -#include <unotools/syslocaleoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <com/sun/star/uno/Any.hxx> - -#include "itemholder1.hxx" - -#define CFG_READONLY_DEFAULT sal_False - -using namespace osl; -using namespace utl; -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; - -using ::rtl::OUString; - -SvtSysLocaleOptions_Impl* SvtSysLocaleOptions::pOptions = NULL; -sal_Int32 SvtSysLocaleOptions::nRefCount = 0; -namespace -{ - struct CurrencyChangeLink - : public rtl::Static<Link, CurrencyChangeLink> {}; -} - -com::sun::star::lang::Locale lcl_str_to_locale( const ::rtl::OUString rStr ) -{ - com::sun::star::lang::Locale aRet; - if ( rStr.getLength() ) - { - aRet = com::sun::star::lang::Locale(); - sal_Int32 nSep = rStr.indexOf('-'); - if (nSep < 0) - aRet.Language = rStr; - else - { - aRet.Language = rStr.copy(0, nSep); - if (nSep < rStr.getLength()) - aRet.Country = rStr.copy(nSep+1, rStr.getLength() - (nSep+1)); - } - } - - return aRet; -} - -class SvtSysLocaleOptions_Impl : public utl::ConfigItem -{ - Locale m_aRealLocale; - Locale m_aRealUILocale; - LanguageType m_eRealLanguage; - LanguageType m_eRealUILanguage; - OUString m_aLocaleString; // en-US or de-DE or empty for SYSTEM - OUString m_aUILocaleString; // en-US or de-DE or empty for SYSTEM - OUString m_aCurrencyString; // USD-en-US or EUR-de-DE - sal_uLong m_nBlockedHint; // pending hints - sal_Bool m_bDecimalSeparator; //use decimal separator same as locale - - sal_Bool m_bROLocale; - sal_Bool m_bROUILocale; - sal_Bool m_bROCurrency; - sal_Bool m_bRODecimalSeparator; - - static const Sequence< /* const */ OUString > GetPropertyNames(); - void MakeRealLocale(); - void MakeRealUILocale(); - -public: - SvtSysLocaleOptions_Impl(); - virtual ~SvtSysLocaleOptions_Impl(); - - virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); - virtual void Commit(); - - const OUString& GetLocaleString() const - { return m_aLocaleString; } - void SetLocaleString( const OUString& rStr ); - - const OUString& GetUILocaleString() const - { return m_aUILocaleString; } - void SetUILocaleString( const OUString& rStr ); - - const OUString& GetCurrencyString() const - { return m_aCurrencyString; } - void SetCurrencyString( const OUString& rStr ); - - sal_Bool IsDecimalSeparatorAsLocale() const { return m_bDecimalSeparator;} - void SetDecimalSeparatorAsLocale( sal_Bool bSet); - - sal_Bool IsReadOnly( SvtSysLocaleOptions::EOption eOption ) const; - const Locale& GetRealLocale() { return m_aRealLocale; } - const Locale& GetRealUILocale() { return m_aRealUILocale; } - LanguageType GetRealLanguage() { return m_eRealLanguage; } - LanguageType GetRealUILanguage() { return m_eRealUILanguage; } -}; - - -#define ROOTNODE_SYSLOCALE OUString(RTL_CONSTASCII_USTRINGPARAM("Setup/L10N")) - -#define PROPERTYNAME_LOCALE OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupSystemLocale")) -#define PROPERTYNAME_UILOCALE OUString(RTL_CONSTASCII_USTRINGPARAM("ooLocale")) -#define PROPERTYNAME_CURRENCY OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupCurrency")) -#define PROPERTYNAME_DECIMALSEPARATOR OUString(RTL_CONSTASCII_USTRINGPARAM("DecimalSeparatorAsLocale")) - -#define PROPERTYHANDLE_LOCALE 0 -#define PROPERTYHANDLE_UILOCALE 1 -#define PROPERTYHANDLE_CURRENCY 2 -#define PROPERTYHANDLE_DECIMALSEPARATOR 3 - -#define PROPERTYCOUNT 4 - -const Sequence< OUString > SvtSysLocaleOptions_Impl::GetPropertyNames() -{ - const OUString pProperties[] = - { - PROPERTYNAME_LOCALE, - PROPERTYNAME_UILOCALE, - PROPERTYNAME_CURRENCY, - PROPERTYNAME_DECIMALSEPARATOR - }; - const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT ); - return seqPropertyNames; -} - -// ----------------------------------------------------------------------- - -SvtSysLocaleOptions_Impl::SvtSysLocaleOptions_Impl() - : ConfigItem( ROOTNODE_SYSLOCALE ) - , m_nBlockedHint( 0 ) - , m_bDecimalSeparator( sal_True ) - , m_bROLocale(CFG_READONLY_DEFAULT) - , m_bROUILocale(CFG_READONLY_DEFAULT) - , m_bROCurrency(CFG_READONLY_DEFAULT) - , m_bRODecimalSeparator(sal_False) - -{ - if ( IsValidConfigMgr() ) - { - const Sequence< OUString > aNames = GetPropertyNames(); - Sequence< Any > aValues = GetProperties( aNames ); - Sequence< sal_Bool > aROStates = GetReadOnlyStates( aNames ); - const Any* pValues = aValues.getConstArray(); - const sal_Bool* pROStates = aROStates.getConstArray(); - DBG_ASSERT( aValues.getLength() == aNames.getLength(), "GetProperties failed" ); - DBG_ASSERT( aROStates.getLength() == aNames.getLength(), "GetReadOnlyStates failed" ); - if ( aValues.getLength() == aNames.getLength() && aROStates.getLength() == aNames.getLength() ) - { - for ( sal_Int32 nProp = 0; nProp < aNames.getLength(); nProp++ ) - { - if ( pValues[nProp].hasValue() ) - { - switch ( nProp ) - { - case PROPERTYHANDLE_LOCALE : - { - OUString aStr; - if ( pValues[nProp] >>= aStr ) - m_aLocaleString = aStr; - else - { - DBG_ERRORFILE( "Wrong property type!" ); - } - m_bROLocale = pROStates[nProp]; - } - break; - case PROPERTYHANDLE_UILOCALE : - { - OUString aStr; - if ( pValues[nProp] >>= aStr ) - m_aUILocaleString = aStr; - else - { - DBG_ERRORFILE( "Wrong property type!" ); - } - m_bROUILocale = pROStates[nProp]; - } - break; - case PROPERTYHANDLE_CURRENCY : - { - OUString aStr; - if ( pValues[nProp] >>= aStr ) - m_aCurrencyString = aStr; - else - { - DBG_ERRORFILE( "Wrong property type!" ); - } - m_bROCurrency = pROStates[nProp]; - } - break; - case PROPERTYHANDLE_DECIMALSEPARATOR: - { - sal_Bool bValue = sal_Bool(); - if ( pValues[nProp] >>= bValue ) - m_bDecimalSeparator = bValue; - else - { - DBG_ERRORFILE( "Wrong property type!" ); - } - m_bRODecimalSeparator = pROStates[nProp]; - } - break; - default: - DBG_ERRORFILE( "Wrong property type!" ); - } - } - } - } - EnableNotification( aNames ); - } - - MakeRealLocale(); - MakeRealUILocale(); -} - - -SvtSysLocaleOptions_Impl::~SvtSysLocaleOptions_Impl() -{ - if ( IsModified() ) - Commit(); -} - -void SvtSysLocaleOptions_Impl::MakeRealLocale() -{ - m_aRealLocale = lcl_str_to_locale( m_aLocaleString ); - if ( m_aRealLocale.Language.getLength() ) - { - m_eRealLanguage = MsLangId::convertLocaleToLanguage( m_aRealLocale ); - } - else - { - m_eRealLanguage = MsLangId::getSystemLanguage(); - MsLangId::convertLanguageToLocale( m_eRealLanguage, m_aRealLocale ); - } -} - -void SvtSysLocaleOptions_Impl::MakeRealUILocale() -{ - // as we can't switch UILocale at runtime, we only store changes in the configuration - m_aRealUILocale = lcl_str_to_locale( m_aUILocaleString ); - if ( m_aRealUILocale.Language.getLength() ) - { - m_eRealUILanguage = MsLangId::convertLocaleToLanguage( m_aRealUILocale ); - } - else - { - m_eRealUILanguage = MsLangId::getSystemUILanguage(); - MsLangId::convertLanguageToLocale( m_eRealUILanguage, m_aRealUILocale ); - } -} - -sal_Bool SvtSysLocaleOptions_Impl::IsReadOnly( SvtSysLocaleOptions::EOption eOption ) const -{ - sal_Bool bReadOnly = CFG_READONLY_DEFAULT; - switch(eOption) - { - case SvtSysLocaleOptions::E_LOCALE : - { - bReadOnly = m_bROLocale; - break; - } - case SvtSysLocaleOptions::E_UILOCALE : - { - bReadOnly = m_bROUILocale; - break; - } - case SvtSysLocaleOptions::E_CURRENCY : - { - bReadOnly = m_bROCurrency; - break; - } - } - return bReadOnly; -} - - -void SvtSysLocaleOptions_Impl::Commit() -{ - const Sequence< OUString > aOrgNames = GetPropertyNames(); - sal_Int32 nOrgCount = aOrgNames.getLength(); - - Sequence< OUString > aNames( nOrgCount ); - Sequence< Any > aValues( nOrgCount ); - - OUString* pNames = aNames.getArray(); - Any* pValues = aValues.getArray(); - sal_Int32 nRealCount = 0; - - for ( sal_Int32 nProp = 0; nProp < nOrgCount; nProp++ ) - { - switch ( nProp ) - { - case PROPERTYHANDLE_LOCALE : - { - if (!m_bROLocale) - { - pNames[nRealCount] = aOrgNames[nProp]; - pValues[nRealCount] <<= m_aLocaleString; - ++nRealCount; - } - } - break; - case PROPERTYHANDLE_UILOCALE : - { - if (!m_bROUILocale) - { - pNames[nRealCount] = aOrgNames[nProp]; - pValues[nRealCount] <<= m_aUILocaleString; - ++nRealCount; - } - } - break; - case PROPERTYHANDLE_CURRENCY : - { - if (!m_bROCurrency) - { - pNames[nRealCount] = aOrgNames[nProp]; - pValues[nRealCount] <<= m_aCurrencyString; - ++nRealCount; - } - } - break; - case PROPERTYHANDLE_DECIMALSEPARATOR: - if( !m_bRODecimalSeparator ) - { - pNames[nRealCount] = aOrgNames[nProp]; - pValues[nRealCount] <<= m_bDecimalSeparator; - ++nRealCount; - } - break; - default: - DBG_ERRORFILE( "invalid index to save a path" ); - } - } - aNames.realloc(nRealCount); - aValues.realloc(nRealCount); - PutProperties( aNames, aValues ); - ClearModified(); -} - - -void SvtSysLocaleOptions_Impl::SetLocaleString( const OUString& rStr ) -{ - if (!m_bROLocale && rStr != m_aLocaleString ) - { - m_aLocaleString = rStr; - MakeRealLocale(); - MsLangId::setConfiguredSystemLanguage( m_eRealLanguage ); - SetModified(); - sal_uLong nHint = SYSLOCALEOPTIONS_HINT_LOCALE; - if ( !m_aCurrencyString.getLength() ) - nHint |= SYSLOCALEOPTIONS_HINT_CURRENCY; - NotifyListeners( nHint ); - } -} - -void SvtSysLocaleOptions_Impl::SetUILocaleString( const OUString& rStr ) -{ - if (!m_bROUILocale && rStr != m_aUILocaleString ) - { - m_aUILocaleString = rStr; - - // as we can't switch UILocale at runtime, we only store changes in the configuration - MakeRealUILocale(); - MsLangId::setConfiguredSystemLanguage( m_eRealUILanguage ); - SetModified(); - NotifyListeners( SYSLOCALEOPTIONS_HINT_UILOCALE ); - } -} - -void SvtSysLocaleOptions_Impl::SetCurrencyString( const OUString& rStr ) -{ - if (!m_bROCurrency && rStr != m_aCurrencyString ) - { - m_aCurrencyString = rStr; - SetModified(); - NotifyListeners( SYSLOCALEOPTIONS_HINT_CURRENCY ); - } -} - -void SvtSysLocaleOptions_Impl::SetDecimalSeparatorAsLocale( sal_Bool bSet) -{ - if(bSet != m_bDecimalSeparator) - { - m_bDecimalSeparator = bSet; - SetModified(); - NotifyListeners( SYSLOCALEOPTIONS_HINT_DECSEP ); - } -} - -void SvtSysLocaleOptions_Impl::Notify( const Sequence< rtl::OUString >& seqPropertyNames ) -{ - sal_uLong nHint = 0; - Sequence< Any > seqValues = GetProperties( seqPropertyNames ); - Sequence< sal_Bool > seqROStates = GetReadOnlyStates( seqPropertyNames ); - sal_Int32 nCount = seqPropertyNames.getLength(); - for( sal_Int32 nProp = 0; nProp < nCount; ++nProp ) - { - if( seqPropertyNames[nProp] == PROPERTYNAME_LOCALE ) - { - DBG_ASSERT( seqValues[nProp].getValueTypeClass() == TypeClass_STRING, "Locale property type" ); - seqValues[nProp] >>= m_aLocaleString; - m_bROLocale = seqROStates[nProp]; - nHint |= SYSLOCALEOPTIONS_HINT_LOCALE; - if ( !m_aCurrencyString.getLength() ) - nHint |= SYSLOCALEOPTIONS_HINT_CURRENCY; - MakeRealLocale(); - } - if( seqPropertyNames[nProp] == PROPERTYNAME_UILOCALE ) - { - DBG_ASSERT( seqValues[nProp].getValueTypeClass() == TypeClass_STRING, "Locale property type" ); - seqValues[nProp] >>= m_aUILocaleString; - m_bROUILocale = seqROStates[nProp]; - nHint |= SYSLOCALEOPTIONS_HINT_UILOCALE; - MakeRealUILocale(); - } - else if( seqPropertyNames[nProp] == PROPERTYNAME_CURRENCY ) - { - DBG_ASSERT( seqValues[nProp].getValueTypeClass() == TypeClass_STRING, "Currency property type" ); - seqValues[nProp] >>= m_aCurrencyString; - m_bROCurrency = seqROStates[nProp]; - nHint |= SYSLOCALEOPTIONS_HINT_CURRENCY; - } - else if( seqPropertyNames[nProp] == PROPERTYNAME_DECIMALSEPARATOR ) - { - seqValues[nProp] >>= m_bDecimalSeparator; - m_bRODecimalSeparator = seqROStates[nProp]; - } - } - if ( nHint ) - NotifyListeners( nHint ); -} - -// ==================================================================== - -SvtSysLocaleOptions::SvtSysLocaleOptions() -{ - MutexGuard aGuard( GetMutex() ); - if ( !pOptions ) - { - RTL_LOGFILE_CONTEXT(aLog, "svl ( ??? ) ::SvtSysLocaleOptions_Impl::ctor()"); - pOptions = new SvtSysLocaleOptions_Impl; - - ItemHolder1::holdConfigItem(E_SYSLOCALEOPTIONS); - } - ++nRefCount; - pOptions->AddListener(this); -} - - -SvtSysLocaleOptions::~SvtSysLocaleOptions() -{ - MutexGuard aGuard( GetMutex() ); - pOptions->RemoveListener(this); - if ( !--nRefCount ) - { - delete pOptions; - pOptions = NULL; - } -} - - -// static -Mutex& SvtSysLocaleOptions::GetMutex() -{ - static Mutex* pMutex = NULL; - if( !pMutex ) - { - MutexGuard aGuard( Mutex::getGlobalMutex() ); - if( !pMutex ) - { - // #i77768# Due to a static reference in the toolkit lib - // we need a mutex that lives longer than the svl library. - // Otherwise the dtor would use a destructed mutex!! - pMutex = new Mutex; - } - } - return *pMutex; -} - - -sal_Bool SvtSysLocaleOptions::IsModified() -{ - MutexGuard aGuard( GetMutex() ); - return pOptions->IsModified(); -} - - -void SvtSysLocaleOptions::Commit() -{ - MutexGuard aGuard( GetMutex() ); - pOptions->Commit(); -} - - -void SvtSysLocaleOptions::BlockBroadcasts( bool bBlock ) -{ - MutexGuard aGuard( GetMutex() ); - pOptions->BlockBroadcasts( bBlock ); -} - - -const OUString& SvtSysLocaleOptions::GetLocaleConfigString() const -{ - MutexGuard aGuard( GetMutex() ); - return pOptions->GetLocaleString(); -} - -void SvtSysLocaleOptions::SetLocaleConfigString( const OUString& rStr ) -{ - MutexGuard aGuard( GetMutex() ); - pOptions->SetLocaleString( rStr ); -} - -const OUString& SvtSysLocaleOptions::GetUILocaleConfigString() const -{ - MutexGuard aGuard( GetMutex() ); - return pOptions->GetUILocaleString(); -} - -void SvtSysLocaleOptions::SetUILocaleConfigString( const OUString& rStr ) -{ - MutexGuard aGuard( GetMutex() ); - pOptions->SetUILocaleString( rStr ); -} - -const OUString& SvtSysLocaleOptions::GetCurrencyConfigString() const -{ - MutexGuard aGuard( GetMutex() ); - return pOptions->GetCurrencyString(); -} - - -void SvtSysLocaleOptions::SetCurrencyConfigString( const OUString& rStr ) -{ - MutexGuard aGuard( GetMutex() ); - pOptions->SetCurrencyString( rStr ); -} - -sal_Bool SvtSysLocaleOptions::IsDecimalSeparatorAsLocale() const -{ - MutexGuard aGuard( GetMutex() ); - return pOptions->IsDecimalSeparatorAsLocale(); -} - -void SvtSysLocaleOptions::SetDecimalSeparatorAsLocale( sal_Bool bSet) -{ - MutexGuard aGuard( GetMutex() ); - pOptions->SetDecimalSeparatorAsLocale(bSet); -} - - -sal_Bool SvtSysLocaleOptions::IsReadOnly( EOption eOption ) const -{ - MutexGuard aGuard( GetMutex() ); - return pOptions->IsReadOnly( eOption ); -} - -// static -void SvtSysLocaleOptions::GetCurrencyAbbrevAndLanguage( String& rAbbrev, - LanguageType& eLang, const ::rtl::OUString& rConfigString ) -{ - sal_Int32 nDelim = rConfigString.indexOf( '-' ); - if ( nDelim >= 0 ) - { - rAbbrev = rConfigString.copy( 0, nDelim ); - String aIsoStr( rConfigString.copy( nDelim+1 ) ); - eLang = MsLangId::convertIsoStringToLanguage( aIsoStr ); - } - else - { - rAbbrev = rConfigString; - eLang = (rAbbrev.Len() ? LANGUAGE_NONE : LANGUAGE_SYSTEM); - } -} - - -// static -::rtl::OUString SvtSysLocaleOptions::CreateCurrencyConfigString( - const String& rAbbrev, LanguageType eLang ) -{ - String aIsoStr( MsLangId::convertLanguageToIsoString( eLang ) ); - if ( aIsoStr.Len() ) - { - ::rtl::OUStringBuffer aStr( rAbbrev.Len() + 1 + aIsoStr.Len() ); - aStr.append( rAbbrev.GetBuffer(), rAbbrev.Len() ); - aStr.append( sal_Unicode('-') ); - aStr.append( aIsoStr.GetBuffer(), aIsoStr.Len() ); - return aStr.makeStringAndClear(); - } - else - return rAbbrev; -} - - -// static -void SvtSysLocaleOptions::SetCurrencyChangeLink( const Link& rLink ) -{ - MutexGuard aGuard( GetMutex() ); - DBG_ASSERT( !CurrencyChangeLink::get().IsSet(), "SvtSysLocaleOptions::SetCurrencyChangeLink: already set" ); - CurrencyChangeLink::get() = rLink; -} - - -// static -const Link& SvtSysLocaleOptions::GetCurrencyChangeLink() -{ - MutexGuard aGuard( GetMutex() ); - return CurrencyChangeLink::get(); -} - - -void SvtSysLocaleOptions::ConfigurationChanged( utl::ConfigurationBroadcaster* p, sal_uInt32 nHint ) -{ - if ( nHint & SYSLOCALEOPTIONS_HINT_CURRENCY ) - { - const Link& rLink = GetCurrencyChangeLink(); - if ( rLink.IsSet() ) - rLink.Call( NULL ); - } - - ::utl::detail::Options::ConfigurationChanged( p, nHint ); -} - -com::sun::star::lang::Locale SvtSysLocaleOptions::GetLocale() const -{ - return lcl_str_to_locale( GetLocaleConfigString() ); -} - -com::sun::star::lang::Locale SvtSysLocaleOptions::GetUILocale() const -{ - return lcl_str_to_locale( GetUILocaleConfigString() ); -} - -com::sun::star::lang::Locale SvtSysLocaleOptions::GetRealLocale() const -{ - return pOptions->GetRealLocale(); -} - -com::sun::star::lang::Locale SvtSysLocaleOptions::GetRealUILocale() const -{ - return pOptions->GetRealUILocale(); -} - -LanguageType SvtSysLocaleOptions::GetRealLanguage() const -{ - return pOptions->GetRealLanguage(); -} - -LanguageType SvtSysLocaleOptions::GetRealUILanguage() const -{ - return pOptions->GetRealUILanguage(); -} - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/undoopt.cxx b/unotools/source/config/undoopt.cxx deleted file mode 100644 index 884c09369f..0000000000 --- a/unotools/source/config/undoopt.cxx +++ /dev/null @@ -1,203 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/undoopt.hxx> -#include "rtl/instance.hxx" -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <osl/mutex.hxx> -#include <osl/mutex.hxx> -#include <rtl/logfile.hxx> -#include "itemholder1.hxx" - -using namespace utl; -using namespace com::sun::star::uno; -using ::rtl::OUString; - -static SvtUndoOptions_Impl* pOptions = NULL; -static sal_Int32 nRefCount = 0; - -#define STEPS 0 - -class SvtUndoOptions_Impl : public utl::ConfigItem -{ - sal_Int32 nUndoCount; - Sequence< rtl::OUString > m_aPropertyNames; - -public: - SvtUndoOptions_Impl(); - - virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); - virtual void Commit(); - void Load(); - - void SetUndoCount( sal_Int32 n ) { nUndoCount = n; SetModified(); } - sal_Int32 GetUndoCount() const { return nUndoCount; } -}; - -// ----------------------------------------------------------------------- - -SvtUndoOptions_Impl::SvtUndoOptions_Impl() - : ConfigItem( OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Undo")) ) - , nUndoCount( 20 ) -{ - Load(); -} - -void SvtUndoOptions_Impl::Commit() -{ - Sequence< Any > aValues( m_aPropertyNames.getLength() ); - Any* pValues = aValues.getArray(); - for ( int nProp = 0; nProp < m_aPropertyNames.getLength(); nProp++ ) - { - switch ( nProp ) - { - case STEPS : - pValues[nProp] <<= nUndoCount; - break; - default: - DBG_ERRORFILE( "invalid index to save a path" ); - } - } - - PutProperties( m_aPropertyNames, aValues ); - NotifyListeners(0); -} - -// ----------------------------------------------------------------------- -void SvtUndoOptions_Impl::Load() -{ - if(!m_aPropertyNames.getLength()) - { - static const char* aPropNames[] = - { - "Steps", - }; - - const int nCount = sizeof( aPropNames ) / sizeof( const char* ); - m_aPropertyNames.realloc(nCount); - OUString* pNames = m_aPropertyNames.getArray(); - for ( int i = 0; i < nCount; i++ ) - pNames[i] = OUString::createFromAscii( aPropNames[i] ); - EnableNotification( m_aPropertyNames ); - } - - Sequence< Any > aValues = GetProperties( m_aPropertyNames ); - const Any* pValues = aValues.getConstArray(); - DBG_ASSERT( aValues.getLength() == m_aPropertyNames.getLength(), "GetProperties failed" ); - if ( aValues.getLength() == m_aPropertyNames.getLength() ) - { - for ( int nProp = 0; nProp < m_aPropertyNames.getLength(); nProp++ ) - { - if ( pValues[nProp].hasValue() ) - { - switch ( nProp ) - { - case STEPS : - { - sal_Int32 nTemp = 0; - if ( pValues[nProp] >>= nTemp ) - nUndoCount = nTemp; - else - { - OSL_FAIL( "Wrong Type!" ); - } - break; - } - - default: - OSL_FAIL( "Wrong Type!" ); - break; - } - } - } - } -} -// ----------------------------------------------------------------------- -void SvtUndoOptions_Impl::Notify( const Sequence<rtl::OUString>& ) -{ - Load(); -} - -// ----------------------------------------------------------------------- -namespace -{ - class LocalSingleton : public rtl::Static< osl::Mutex, LocalSingleton > - { - }; -} - -// ----------------------------------------------------------------------- -SvtUndoOptions::SvtUndoOptions() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( LocalSingleton::get() ); - if ( !pOptions ) - { - RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtUndoOptions_Impl::ctor()"); - pOptions = new SvtUndoOptions_Impl; - - ItemHolder1::holdConfigItem(E_UNDOOPTIONS); - } - ++nRefCount; - pImp = pOptions; - pImp->AddListener(this); -} - -// ----------------------------------------------------------------------- - -SvtUndoOptions::~SvtUndoOptions() -{ - // Global access, must be guarded (multithreading) - ::osl::MutexGuard aGuard( LocalSingleton::get() ); - pImp->RemoveListener(this); - if ( !--nRefCount ) - { - if ( pOptions->IsModified() ) - pOptions->Commit(); - DELETEZ( pOptions ); - } -} - -void SvtUndoOptions::SetUndoCount( sal_Int32 n ) -{ - pImp->SetUndoCount( n ); -} - -sal_Int32 SvtUndoOptions::GetUndoCount() const -{ - return pImp->GetUndoCount(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/useroptions.cxx b/unotools/source/config/useroptions.cxx deleted file mode 100644 index 5ba1596ddb..0000000000 --- a/unotools/source/config/useroptions.cxx +++ /dev/null @@ -1,1314 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// 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 <osl/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 com::sun::star; -using namespace com::sun::star::uno; -using ::rtl::OUString; - -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( sal_uInt16 nToken ) const; - ::rtl::OUString GetToken(sal_uInt16 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 - -SvtUserConfigChangeListener_Impl::SvtUserConfigChangeListener_Impl(SvtUserOptions_Impl& rParent) : - m_rParent( rParent ) -{ -} - -SvtUserConfigChangeListener_Impl::~SvtUserConfigChangeListener_Impl() -{ -} - -void SvtUserConfigChangeListener_Impl::changesOccurred( const util::ChangesEvent& rEvent ) throw(RuntimeException) -{ - if(rEvent.Changes.getLength()) - m_rParent.Notify(); -} - -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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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 - { - if (m_xData.is()) - 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(RTL_CONSTASCII_USTRINGPARAM(" ")); - sFullName += GetLastName(); - sFullName.trim(); - - return sFullName; -} - -// ----------------------------------------------------------------------- - -void SvtUserOptions_Impl::Notify() -{ - NotifyListeners(0); -} - -// ----------------------------------------------------------------------- - -sal_Bool SvtUserOptions_Impl::IsTokenReadonly( sal_uInt16 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(sal_uInt16 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 ); - } -} - -// ----------------------------------------------------------------------- - -namespace -{ - class theUserOptionsMutex : public rtl::Static<osl::Mutex, theUserOptionsMutex>{}; -} - -::osl::Mutex& SvtUserOptions::GetInitMutex() -{ - return theUserOptionsMutex::get(); -} - -// ----------------------------------------------------------------------- - -::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( sal_uInt16 nToken ) const -{ - ::osl::MutexGuard aGuard( GetInitMutex() ); - return pImp->IsTokenReadonly( nToken ); -} -//------------------------------------------------------------------------ -::rtl::OUString SvtUserOptions::GetToken(sal_uInt16 nToken) const -{ - ::osl::MutexGuard aGuard( GetInitMutex() ); - return pImp->GetToken( nToken ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/viewoptions.cxx b/unotools/source/config/viewoptions.cxx deleted file mode 100644 index f404e66973..0000000000 --- a/unotools/source/config/viewoptions.cxx +++ /dev/null @@ -1,1291 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include <unotools/viewoptions.hxx> -#include <com/sun/star/uno/Any.hxx> - -#include <boost/unordered_map.hpp> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <com/sun/star/container/XNameContainer.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <rtl/ustrbuf.hxx> -#include <unotools/configpathes.hxx> -#include <comphelper/configurationhelper.hxx> -#include <unotools/processfactory.hxx> - -#include <itemholder1.hxx> - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -namespace css = ::com::sun::star; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#ifdef CONST_ASCII - #error "Who define CONST_ASCII before! I use it to create const ascii strings ..." -#else - #define CONST_ASCII(SASCIIVALUE) ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SASCIIVALUE)) -#endif - -#define PATHSEPERATOR CONST_ASCII("/") - -#define PACKAGE_VIEWS CONST_ASCII("org.openoffice.Office.Views") - -#define LIST_DIALOGS CONST_ASCII("Dialogs" ) -#define LIST_TABDIALOGS CONST_ASCII("TabDialogs") -#define LIST_TABPAGES CONST_ASCII("TabPages" ) -#define LIST_WINDOWS CONST_ASCII("Windows" ) - -#define PROPERTY_WINDOWSTATE CONST_ASCII("WindowState") -#define PROPERTY_PAGEID CONST_ASCII("PageID" ) -#define PROPERTY_VISIBLE CONST_ASCII("Visible" ) -#define PROPERTY_USERDATA CONST_ASCII("UserData" ) - -#define PROPCOUNT_DIALOGS 1 -#define PROPCOUNT_TABDIALOGS 2 -#define PROPCOUNT_TABPAGES 1 -#define PROPCOUNT_WINDOWS 2 - -#define DEFAULT_WINDOWSTATE ::rtl::OUString() -#define DEFAULT_USERDATA css::uno::Sequence< css::beans::NamedValue >() -#define DEFAULT_PAGEID 0 -#define DEFAULT_VISIBLE sal_False - -//#define DEBUG_VIEWOPTIONS - -#ifdef DEBUG_VIEWOPTIONS - #define _LOG_COUNTER_( _SVIEW_, _NREAD_, _NWRITE_ ) \ - { \ - FILE* pFile = fopen( "viewdbg.txt", "a" ); \ - fprintf( pFile, "%s[%d, %d]\n", ::rtl::OUStringToOString(_SVIEW_, RTL_TEXTENCODING_UTF8).getStr(), _NREAD_, _NWRITE_ ); \ - fclose( pFile ); \ - } -#endif // DEBUG_VIEWOPTIONS - -#define SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION_PARAM_EXCEPTION) \ - { \ - ::rtl::OUStringBuffer sMsg(256); \ - sMsg.appendAscii("Unexpected exception catched. Original message was:\n\"" ); \ - sMsg.append (SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION_PARAM_EXCEPTION.Message); \ - sMsg.appendAscii("\"" ); \ - } - -//_________________________________________________________________________________________________________________ -// initialization! -//_________________________________________________________________________________________________________________ - -SvtViewOptionsBase_Impl* SvtViewOptions::m_pDataContainer_Dialogs = NULL ; -sal_Int32 SvtViewOptions::m_nRefCount_Dialogs = 0 ; -SvtViewOptionsBase_Impl* SvtViewOptions::m_pDataContainer_TabDialogs = NULL ; -sal_Int32 SvtViewOptions::m_nRefCount_TabDialogs = 0 ; -SvtViewOptionsBase_Impl* SvtViewOptions::m_pDataContainer_TabPages = NULL ; -sal_Int32 SvtViewOptions::m_nRefCount_TabPages = 0 ; -SvtViewOptionsBase_Impl* SvtViewOptions::m_pDataContainer_Windows = NULL ; -sal_Int32 SvtViewOptions::m_nRefCount_Windows = 0 ; - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -/*-************************************************************************************************************//** - @descr declare one configuration item - These struct hold information about one view item. But not all member are used for all entries! - User must decide which information are usefull and which not. We are a container iztem only and doesnt - know anything about the context. - But; we support a feature: - decision between items with default values (should not realy exist in configuration!) - and items with real values - changed by user. So user can suppress saving of realy unused items - to disk - because; defaulted items could be restored on runtime without reading from disk!!! - And if only items with valid information was written to cfg - we mustn't read so much and save time. - So we start with an member m_bDefault=True and reset it to False after first set-call. - Deficiencies of these solution - we cant allow direct read/write access to our member. We must - support it by set/get-methods ... -*//*-*************************************************************************************************************/ -class IMPL_TViewData -{ - public: - //--------------------------------------------------------------------------------------------------------- - // create "default" item - IMPL_TViewData() - { - m_sWindowState = DEFAULT_WINDOWSTATE ; - m_lUserData = DEFAULT_USERDATA ; - m_nPageID = DEFAULT_PAGEID ; - m_bVisible = DEFAULT_VISIBLE ; - - m_bDefault = sal_True ; - } - - //--------------------------------------------------------------------------------------------------------- - // write access - with reseting of default state - void setWindowState( const ::rtl::OUString& sValue ) - { - m_bDefault = ( - ( m_bDefault == sal_True ) && - ( sValue == DEFAULT_WINDOWSTATE ) - ); - m_sWindowState = sValue; - } - - //--------------------------------------------------------------------------------------------------------- - void setUserData( const css::uno::Sequence< css::beans::NamedValue >& lValue ) - { - m_bDefault = ( - ( m_bDefault == sal_True ) && - ( lValue == DEFAULT_USERDATA ) - ); - m_lUserData = lValue; - } - - //--------------------------------------------------------------------------------------------------------- - void setPageID( sal_Int32 nValue ) - { - m_bDefault = ( - ( m_bDefault == sal_True ) && - ( nValue == DEFAULT_PAGEID ) - ); - m_nPageID = nValue; - } - - //--------------------------------------------------------------------------------------------------------- - void setVisible( sal_Bool bValue ) - { - m_bDefault = ( - ( m_bDefault == sal_True ) && - ( bValue == DEFAULT_VISIBLE ) - ); - m_bVisible = bValue; - } - - //--------------------------------------------------------------------------------------------------------- - // read access - ::rtl::OUString getWindowState() { return m_sWindowState; } - css::uno::Sequence< css::beans::NamedValue > getUserData () { return m_lUserData ; } - sal_Int32 getPageID () { return m_nPageID ; } - sal_Bool getVisible () { return m_bVisible ; } - - //--------------------------------------------------------------------------------------------------------- - // special operation for easy access on user data - void setUserItem( const ::rtl::OUString& sName , - const css::uno::Any& aValue ) - { - // we change UserData in every case! - // a) we change already existing item - // or b) we add a new one - m_bDefault = sal_False; - - sal_Bool bExist = sal_False; - sal_Int32 nCount = m_lUserData.getLength(); - - // change it, if it already exist ... - for( sal_Int32 nStep=0; nStep<nCount; ++nStep ) - { - if( m_lUserData[nStep].Name == sName ) - { - m_lUserData[nStep].Value = aValue ; - bExist = sal_True; - break; - } - } - - // ... or create new list item - if( bExist == sal_False ) - { - m_lUserData.realloc( nCount+1 ); - m_lUserData[nCount].Name = sName ; - m_lUserData[nCount].Value = aValue ; - } - } - - //--------------------------------------------------------------------------------------------------------- - css::uno::Any getUserItem( const ::rtl::OUString& sName ) - { - // default value - if item not exist! - css::uno::Any aValue; - - sal_Int32 nCount = m_lUserData.getLength(); - for( sal_Int32 nStep=0; nStep<nCount; ++nStep ) - { - if( m_lUserData[nStep].Name == sName ) - { - aValue = m_lUserData[nStep].Value; - break; - } - } - return aValue; - } - - //--------------------------------------------------------------------------------------------------------- - // check for default items - sal_Bool isDefault() { return m_bDefault; } - - private: - ::rtl::OUString m_sWindowState ; - css::uno::Sequence< css::beans::NamedValue > m_lUserData ; - sal_Int32 m_nPageID ; - sal_Bool m_bVisible ; - - sal_Bool m_bDefault ; -}; - -struct IMPL_TStringHashCode -{ - size_t operator()(const ::rtl::OUString& sString) const - { - return sString.hashCode(); - } -}; - -typedef ::boost::unordered_map< ::rtl::OUString , - IMPL_TViewData , - IMPL_TStringHashCode , - ::std::equal_to< ::rtl::OUString > > IMPL_TViewHash; - -/*-************************************************************************************************************//** - @descr Implement base data container for view options elements. - Every item support ALL possible configuration informations. - But not every superclass should use them! Because some view types don't - have it realy. - - @attention We implement a write-througt-cache! We use it for reading - but write all changes directly to - configuration. (changes are made on internal cache too!). So it's easier to distinguish - between added/changed/removed elements without any complex mask or bool flag informations. - Caches from configuration and our own one are synchronized every time - if we do so. -*//*-*************************************************************************************************************/ -class SvtViewOptionsBase_Impl -{ - //------------------------------------------------------------------------------------------------------------- - public: - SvtViewOptionsBase_Impl ( const ::rtl::OUString& sList ); - virtual ~SvtViewOptionsBase_Impl ( ); - sal_Bool Exists ( const ::rtl::OUString& sName ); - sal_Bool Delete ( const ::rtl::OUString& sName ); - ::rtl::OUString GetWindowState ( const ::rtl::OUString& sName ); - void SetWindowState ( const ::rtl::OUString& sName , - const ::rtl::OUString& sState ); - css::uno::Sequence< css::beans::NamedValue > GetUserData ( const ::rtl::OUString& sName ); - void SetUserData ( const ::rtl::OUString& sName , - const css::uno::Sequence< css::beans::NamedValue >& lData ); - sal_Int32 GetPageID ( const ::rtl::OUString& sName ); - void SetPageID ( const ::rtl::OUString& sName , - sal_Int32 nID ); - sal_Bool GetVisible ( const ::rtl::OUString& sName ); - void SetVisible ( const ::rtl::OUString& sName , - sal_Bool bVisible ); - css::uno::Any GetUserItem ( const ::rtl::OUString& sName , - const ::rtl::OUString& sItem ); - void SetUserItem ( const ::rtl::OUString& sName , - const ::rtl::OUString& sItem , - const css::uno::Any& aValue ); - - //------------------------------------------------------------------------------------------------------------- - private: - css::uno::Reference< css::uno::XInterface > impl_getSetNode( const ::rtl::OUString& sNode , - sal_Bool bCreateIfMissing); - - //------------------------------------------------------------------------------------------------------------- - private: - ::rtl::OUString m_sListName; - css::uno::Reference< css::container::XNameAccess > m_xRoot; - css::uno::Reference< css::container::XNameAccess > m_xSet; - - #ifdef DEBUG_VIEWOPTIONS - sal_Int32 m_nReadCount ; - sal_Int32 m_nWriteCount ; - #endif -}; - -/*-************************************************************************************************************//** - @descr Implement the base data container. -*//*-*************************************************************************************************************/ - -/*-************************************************************************************************************//** - @short ctor - @descr We use it to open right configuration file and let configuration objects fill her caches. - Then we read all existing entries from right list and cached it inside our object too. - Normaly we should enable notifications for changes on these values too ... but these feature - isn't full implemented in the moment. - - @seealso baseclass ::utl::ConfigItem - @seealso method Notify() - - @param - - @return - - - @last change 19.10.2001 07:54 -*//*-*************************************************************************************************************/ -SvtViewOptionsBase_Impl::SvtViewOptionsBase_Impl( const ::rtl::OUString& sList ) - : m_sListName ( sList ) // we must know, which view type we must support - #ifdef DEBUG_VIEWOPTIONS - , m_nReadCount ( 0 ) - , m_nWriteCount( 0 ) - #endif -{ - try - { - m_xRoot = css::uno::Reference< css::container::XNameAccess >( - ::comphelper::ConfigurationHelper::openConfig( - ::utl::getProcessServiceFactory(), - PACKAGE_VIEWS, - ::comphelper::ConfigurationHelper::E_STANDARD), - css::uno::UNO_QUERY); - if (m_xRoot.is()) - m_xRoot->getByName(sList) >>= m_xSet; - } - catch(const css::uno::Exception& ex) - { - m_xRoot.clear(); - m_xSet.clear(); - - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } -} - -/*-************************************************************************************************************//** - @short dtor - @descr clean up something - - @attention We implement a write through cache! So we mustn't do it realy. All changes was written to cfg directly. - Commit isn't neccessary then. - - @seealso baseclass ::utl::ConfigItem - @seealso method IsModified() - @seealso method SetModified() - @seealso method Commit() - - @param - - @return - - - @last change 19.10.2001 08:02 -*//*-*************************************************************************************************************/ -SvtViewOptionsBase_Impl::~SvtViewOptionsBase_Impl() -{ - // dont flush configuration changes here to m_xRoot. - // That must be done inside every SetXXX() method already ! - // Here its to late - DisposedExceptions from used configuration access can occure otherwise. - - m_xRoot.clear(); - m_xSet.clear(); - - #ifdef DEBUG_VIEWOPTIONS - _LOG_COUNTER_( m_sListName, m_nReadCount, m_nWriteCount ) - #endif // DEBUG_VIEWOPTIONS -} - -/*-************************************************************************************************************//** - @short checks for already existing entries - @descr If user don't know, if an entry already exist - he can get this information by calling this method. - - @seealso member m_aList - - @param "sName", name of entry to check exist state - @return true , if item exist - false, otherwise -*//*-*************************************************************************************************************/ -sal_Bool SvtViewOptionsBase_Impl::Exists( const ::rtl::OUString& sName ) -{ - sal_Bool bExists = sal_False; - - try - { - if (m_xSet.is()) - bExists = m_xSet->hasByName(sName); - } - catch(const css::uno::Exception& ex) - { - bExists = sal_False; - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } - - return bExists; -} - -/*-************************************************************************************************************//** - @short delete entry - @descr Use it to delete set entry by given name. - - @seealso member m_aList - - @param "sName", name of entry to delete it - @return true , if item not exist(!) or could be deleted (should be the same!) - false, otherwise -*//*-*************************************************************************************************************/ -sal_Bool SvtViewOptionsBase_Impl::Delete( const ::rtl::OUString& sName ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nWriteCount; - #endif - - sal_Bool bDeleted = sal_False; - try - { - css::uno::Reference< css::container::XNameContainer > xSet(m_xSet, css::uno::UNO_QUERY_THROW); - xSet->removeByName(sName); - bDeleted = sal_True; - ::comphelper::ConfigurationHelper::flush(m_xRoot); - } - catch(const css::container::NoSuchElementException&) - { bDeleted = sal_True; } - catch(const css::uno::Exception& ex) - { - bDeleted = sal_False; - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } - - return bDeleted; -} - -/*-************************************************************************************************************//** - @short read/write access to cache view items and her properties - @descr Follow methods support read/write access to all cache view items. - - @seealso member m_sList - - @param - - @return - -*//*-*************************************************************************************************************/ -::rtl::OUString SvtViewOptionsBase_Impl::GetWindowState( const ::rtl::OUString& sName ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nReadCount; - #endif - - ::rtl::OUString sWindowState; - try - { - css::uno::Reference< css::beans::XPropertySet > xNode( - impl_getSetNode(sName, sal_False), - css::uno::UNO_QUERY); - if (xNode.is()) - xNode->getPropertyValue(PROPERTY_WINDOWSTATE) >>= sWindowState; - } - catch(const css::uno::Exception& ex) - { - sWindowState = ::rtl::OUString(); - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } - - return sWindowState; -} - -//***************************************************************************************************************** -void SvtViewOptionsBase_Impl::SetWindowState( const ::rtl::OUString& sName , - const ::rtl::OUString& sState ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nWriteCount; - #endif - - try - { - css::uno::Reference< css::beans::XPropertySet > xNode( - impl_getSetNode(sName, sal_True), - css::uno::UNO_QUERY_THROW); - xNode->setPropertyValue(PROPERTY_WINDOWSTATE, css::uno::makeAny(sState)); - ::comphelper::ConfigurationHelper::flush(m_xRoot); - } - catch(const css::uno::Exception& ex) - { - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } -} - -//***************************************************************************************************************** -css::uno::Sequence< css::beans::NamedValue > SvtViewOptionsBase_Impl::GetUserData( const ::rtl::OUString& sName ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nReadCount; - #endif - - try - { - css::uno::Reference< css::container::XNameAccess > xNode( - impl_getSetNode(sName, sal_False), - css::uno::UNO_QUERY); // no _THROW ! because we dont create missing items here. So we have to live with zero references .-) - css::uno::Reference< css::container::XNameAccess > xUserData; - if (xNode.is()) - xNode->getByName(PROPERTY_USERDATA) >>= xUserData; - if (xUserData.is()) - { - const css::uno::Sequence< ::rtl::OUString > lNames = xUserData->getElementNames(); - const ::rtl::OUString* pNames = lNames.getConstArray(); - sal_Int32 c = lNames.getLength(); - sal_Int32 i = 0; - css::uno::Sequence< css::beans::NamedValue > lUserData(c); - - for (i=0; i<c; ++i) - { - lUserData[i].Name = pNames[i]; - lUserData[i].Value = xUserData->getByName(pNames[i]); - } - - return lUserData; - } - } - catch(const css::uno::Exception& ex) - { - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } - - return css::uno::Sequence< css::beans::NamedValue >(); -} - -//***************************************************************************************************************** -void SvtViewOptionsBase_Impl::SetUserData( const ::rtl::OUString& sName , - const css::uno::Sequence< css::beans::NamedValue >& lData ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nWriteCount; - #endif - - try - { - css::uno::Reference< css::container::XNameAccess > xNode( - impl_getSetNode(sName, sal_True), - css::uno::UNO_QUERY_THROW); - css::uno::Reference< css::container::XNameContainer > xUserData; - xNode->getByName(PROPERTY_USERDATA) >>= xUserData; - if (xUserData.is()) - { - const css::beans::NamedValue* pData = lData.getConstArray(); - sal_Int32 c = lData.getLength(); - sal_Int32 i = 0; - for (i=0; i<c; ++i) - { - if (xUserData->hasByName(pData[i].Name)) - xUserData->replaceByName(pData[i].Name, pData[i].Value); - else - xUserData->insertByName(pData[i].Name, pData[i].Value); - } - } - ::comphelper::ConfigurationHelper::flush(m_xRoot); - } - catch(const css::uno::Exception& ex) - { - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } -} - -//***************************************************************************************************************** -css::uno::Any SvtViewOptionsBase_Impl::GetUserItem( const ::rtl::OUString& sName , - const ::rtl::OUString& sItem ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nReadCount; - #endif - - css::uno::Any aItem; - try - { - css::uno::Reference< css::container::XNameAccess > xNode( - impl_getSetNode(sName, sal_False), - css::uno::UNO_QUERY); - css::uno::Reference< css::container::XNameAccess > xUserData; - if (xNode.is()) - xNode->getByName(PROPERTY_USERDATA) >>= xUserData; - if (xUserData.is()) - aItem = xUserData->getByName(sItem); - } - catch(const css::container::NoSuchElementException&) - { aItem.clear(); } - catch(const css::uno::Exception& ex) - { - aItem.clear(); - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } - - return aItem; -} - -//***************************************************************************************************************** -void SvtViewOptionsBase_Impl::SetUserItem( const ::rtl::OUString& sName , - const ::rtl::OUString& sItem , - const css::uno::Any& aValue ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nWriteCount; - #endif - - try - { - css::uno::Reference< css::container::XNameAccess > xNode( - impl_getSetNode(sName, sal_True), - css::uno::UNO_QUERY_THROW); - css::uno::Reference< css::container::XNameContainer > xUserData; - xNode->getByName(PROPERTY_USERDATA) >>= xUserData; - if (xUserData.is()) - { - if (xUserData->hasByName(sItem)) - xUserData->replaceByName(sItem, aValue); - else - xUserData->insertByName(sItem, aValue); - } - ::comphelper::ConfigurationHelper::flush(m_xRoot); - } - catch(const css::uno::Exception& ex) - { - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } -} - -//***************************************************************************************************************** -sal_Int32 SvtViewOptionsBase_Impl::GetPageID( const ::rtl::OUString& sName ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nReadCount; - #endif - - sal_Int32 nID = 0; - try - { - css::uno::Reference< css::beans::XPropertySet > xNode( - impl_getSetNode(sName, sal_False), - css::uno::UNO_QUERY); - if (xNode.is()) - xNode->getPropertyValue(PROPERTY_PAGEID) >>= nID; - } - catch(const css::uno::Exception& ex) - { - nID = 0; - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } - - return nID; -} - -//***************************************************************************************************************** -void SvtViewOptionsBase_Impl::SetPageID( const ::rtl::OUString& sName , - sal_Int32 nID ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nWriteCount; - #endif - - try - { - css::uno::Reference< css::beans::XPropertySet > xNode( - impl_getSetNode(sName, sal_True), - css::uno::UNO_QUERY_THROW); - xNode->setPropertyValue(PROPERTY_PAGEID, css::uno::makeAny(nID)); - ::comphelper::ConfigurationHelper::flush(m_xRoot); - } - catch(const css::uno::Exception& ex) - { - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } -} - -//***************************************************************************************************************** -sal_Bool SvtViewOptionsBase_Impl::GetVisible( const ::rtl::OUString& sName ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nReadCount; - #endif - - sal_Bool bVisible = sal_False; - try - { - css::uno::Reference< css::beans::XPropertySet > xNode( - impl_getSetNode(sName, sal_False), - css::uno::UNO_QUERY); - if (xNode.is()) - xNode->getPropertyValue(PROPERTY_VISIBLE) >>= bVisible; - } - catch(const css::uno::Exception& ex) - { - bVisible = sal_False; - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } - - return bVisible; -} - -//***************************************************************************************************************** -void SvtViewOptionsBase_Impl::SetVisible( const ::rtl::OUString& sName , - sal_Bool bVisible ) -{ - #ifdef DEBUG_VIEWOPTIONS - ++m_nWriteCount; - #endif - - try - { - css::uno::Reference< css::beans::XPropertySet > xNode( - impl_getSetNode(sName, sal_True), - css::uno::UNO_QUERY_THROW); - xNode->setPropertyValue(PROPERTY_VISIBLE, css::uno::makeAny(bVisible)); - ::comphelper::ConfigurationHelper::flush(m_xRoot); - } - catch(const css::uno::Exception& ex) - { - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } -} - -/*-************************************************************************************************************//** - @short create new set node with default values on disk - @descr To create a new UserData item - the super node of these property must already exist! - You can call this method to create these new entry with default values and change UserData then. - - @seealso method impl_writeDirectProp() - - @param "sNode", name of new entry - @return - - - @last change 19.10.2001 08:42 -*//*-*************************************************************************************************************/ -css::uno::Reference< css::uno::XInterface > SvtViewOptionsBase_Impl::impl_getSetNode( const ::rtl::OUString& sNode , - sal_Bool bCreateIfMissing) -{ - css::uno::Reference< css::uno::XInterface > xNode; - - try - { - if (bCreateIfMissing) - xNode = ::comphelper::ConfigurationHelper::makeSureSetNodeExists(m_xRoot, m_sListName, sNode); - else - { - if (m_xSet.is() && m_xSet->hasByName(sNode) ) - m_xSet->getByName(sNode) >>= xNode; - } - } - catch(const css::container::NoSuchElementException&) - { xNode.clear(); } - catch(const css::uno::Exception& ex) - { - xNode.clear(); - SVTVIEWOPTIONS_LOG_UNEXPECTED_EXCEPTION(ex) - } - - return xNode; -} - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtViewOptions::SvtViewOptions( EViewType eType , - const ::rtl::OUString& sViewName ) - : m_eViewType ( eType ) - , m_sViewName ( sViewName ) -{ - // Global access, must be guarded (multithreading!) - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - // Search for right dat container for this view type and initialize right data container or set right ref count! - switch( eType ) - { - case E_DIALOG : { - // Increase ref count for dialog data container first. - ++m_nRefCount_Dialogs; - // If these instance the first user of the dialog data container - create these impl static container! - if( m_nRefCount_Dialogs == 1 ) - { - //m_pDataContainer_Dialogs = new SvtViewDialogOptions_Impl( LIST_DIALOGS ); - m_pDataContainer_Dialogs = new SvtViewOptionsBase_Impl( LIST_DIALOGS ); - ItemHolder1::holdConfigItem(E_VIEWOPTIONS_DIALOG); - } - } - break; - case E_TABDIALOG : { - // Increase ref count for tab-dialog data container first. - ++m_nRefCount_TabDialogs; - // If these instance the first user of the tab-dialog data container - create these impl static container! - if( m_nRefCount_TabDialogs == 1 ) - { - m_pDataContainer_TabDialogs = new SvtViewOptionsBase_Impl( LIST_TABDIALOGS ); - ItemHolder1::holdConfigItem(E_VIEWOPTIONS_TABDIALOG); - } - } - break; - case E_TABPAGE : { - // Increase ref count for tab-page data container first. - ++m_nRefCount_TabPages; - // If these instance the first user of the tab-page data container - create these impl static container! - if( m_nRefCount_TabPages == 1 ) - { - m_pDataContainer_TabPages = new SvtViewOptionsBase_Impl( LIST_TABPAGES ); - ItemHolder1::holdConfigItem(E_VIEWOPTIONS_TABPAGE); - } - } - break; - case E_WINDOW : { - // Increase ref count for window data container first. - ++m_nRefCount_Windows; - // If these instance the first user of the window data container - create these impl static container! - if( m_nRefCount_Windows == 1 ) - { - m_pDataContainer_Windows = new SvtViewOptionsBase_Impl( LIST_WINDOWS ); - ItemHolder1::holdConfigItem(E_VIEWOPTIONS_WINDOW); - } - } - break; - default : OSL_FAIL( "SvtViewOptions::SvtViewOptions()\nThese view type is unknown! All following calls at these instance will do nothing!\n" ); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtViewOptions::~SvtViewOptions() -{ - // Global access, must be guarded (multithreading!) - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - // Search for right dat container for this view type and deinitialize right data container or set right ref count! - switch( m_eViewType ) - { - case E_DIALOG : { - // Decrease ref count for dialog data container first. - --m_nRefCount_Dialogs; - // If these instance the last user of the dialog data container - delete these impl static container! - if( m_nRefCount_Dialogs == 0 ) - { - delete m_pDataContainer_Dialogs; - m_pDataContainer_Dialogs = NULL; - } - } - break; - case E_TABDIALOG : { - // Decrease ref count for tab-dialog data container first. - --m_nRefCount_TabDialogs; - // If these instance the last user of the tab-dialog data container - delete these impl static container! - if( m_nRefCount_TabDialogs == 0 ) - { - delete m_pDataContainer_TabDialogs; - m_pDataContainer_TabDialogs = NULL; - } - } - break; - case E_TABPAGE : { - // Decrease ref count for tab-page data container first. - --m_nRefCount_TabPages; - // If these instance the last user of the tab-page data container - delete these impl static container! - if( m_nRefCount_TabPages == 0 ) - { - delete m_pDataContainer_TabPages; - m_pDataContainer_TabPages = NULL; - } - } - break; - case E_WINDOW : { - // Decrease ref count for window data container first. - --m_nRefCount_Windows; - // If these instance the last user of the window data container - delete these impl static container! - if( m_nRefCount_Windows == 0 ) - { - delete m_pDataContainer_Windows; - m_pDataContainer_Windows = NULL; - } - } - break; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtViewOptions::Exists() const -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - sal_Bool bExists = sal_False; - switch( m_eViewType ) - { - case E_DIALOG : { - bExists = m_pDataContainer_Dialogs->Exists( m_sViewName ); - } - break; - case E_TABDIALOG : { - bExists = m_pDataContainer_TabDialogs->Exists( m_sViewName ); - } - break; - case E_TABPAGE : { - bExists = m_pDataContainer_TabPages->Exists( m_sViewName ); - } - break; - case E_WINDOW : { - bExists = m_pDataContainer_Windows->Exists( m_sViewName ); - } - break; - } - return bExists; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtViewOptions::Delete() -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - sal_Bool bState = sal_False; - switch( m_eViewType ) - { - case E_DIALOG : { - bState = m_pDataContainer_Dialogs->Delete( m_sViewName ); - } - break; - case E_TABDIALOG : { - bState = m_pDataContainer_TabDialogs->Delete( m_sViewName ); - } - break; - case E_TABPAGE : { - bState = m_pDataContainer_TabPages->Delete( m_sViewName ); - } - break; - case E_WINDOW : { - bState = m_pDataContainer_Windows->Delete( m_sViewName ); - } - break; - } - return bState; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -::rtl::OUString SvtViewOptions::GetWindowState() const -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - ::rtl::OUString sState; - switch( m_eViewType ) - { - case E_DIALOG : { - sState = m_pDataContainer_Dialogs->GetWindowState( m_sViewName ); - } - break; - case E_TABDIALOG : { - sState = m_pDataContainer_TabDialogs->GetWindowState( m_sViewName ); - } - break; - case E_TABPAGE : { - sState = m_pDataContainer_TabPages->GetWindowState( m_sViewName ); - } - break; - case E_WINDOW : { - sState = m_pDataContainer_Windows->GetWindowState( m_sViewName ); - } - break; - } - return sState; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtViewOptions::SetWindowState( const ::rtl::OUString& sState ) -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - switch( m_eViewType ) - { - case E_DIALOG : { - m_pDataContainer_Dialogs->SetWindowState( m_sViewName, sState ); - } - break; - case E_TABDIALOG : { - m_pDataContainer_TabDialogs->SetWindowState( m_sViewName, sState ); - } - break; - case E_TABPAGE : { - m_pDataContainer_TabPages->SetWindowState( m_sViewName, sState ); - } - break; - case E_WINDOW : { - m_pDataContainer_Windows->SetWindowState( m_sViewName, sState ); - } - break; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Int32 SvtViewOptions::GetPageID() const -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - // Safe impossible cases. - // These call isn't allowed for dialogs, tab-pages or windows! - OSL_ENSURE( !(m_eViewType==E_DIALOG||m_eViewType==E_TABPAGE||m_eViewType==E_WINDOW), "SvtViewOptions::GetPageID()\nCall not allowed for Dialogs, TabPages or Windows! I do nothing!\n" ); - - sal_Int32 nID = 0; - if( m_eViewType == E_TABDIALOG ) - nID = m_pDataContainer_TabDialogs->GetPageID( m_sViewName ); - return nID; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtViewOptions::SetPageID( sal_Int32 nID ) -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - // Safe impossible cases. - // These call isn't allowed for dialogs, tab-pages or windows! - OSL_ENSURE( !(m_eViewType==E_DIALOG||m_eViewType==E_TABPAGE||m_eViewType==E_WINDOW), "SvtViewOptions::SetPageID()\nCall not allowed for Dialogs, TabPages or Windows! I do nothing!\n" ); - - if( m_eViewType == E_TABDIALOG ) - m_pDataContainer_TabDialogs->SetPageID( m_sViewName, nID ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -sal_Bool SvtViewOptions::IsVisible() const -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - // Safe impossible cases. - // These call isn't allowed for dialogs, tab-dialogs or tab-pages! - OSL_ENSURE( !(m_eViewType==E_DIALOG||m_eViewType==E_TABDIALOG||m_eViewType==E_TABPAGE), "SvtViewOptions::IsVisible()\nCall not allowed for Dialogs, TabDialogs or TabPages! I do nothing!\n" ); - - sal_Bool bState = sal_False; - if( m_eViewType == E_WINDOW ) - bState = m_pDataContainer_Windows->GetVisible( m_sViewName ); - - return bState; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtViewOptions::SetVisible( sal_Bool bState ) -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - // Safe impossible cases. - // These call isn't allowed for dialogs, tab-dialogs or tab-pages! - OSL_ENSURE( !(m_eViewType==E_DIALOG||m_eViewType==E_TABDIALOG||m_eViewType==E_TABPAGE), "SvtViewOptions::SetVisible()\nCall not allowed for Dialogs, TabDialogs or TabPages! I do nothing!\n" ); - - if( m_eViewType == E_WINDOW ) - m_pDataContainer_Windows->SetVisible( m_sViewName, bState ); -} - -//***************************************************************************************************************** -css::uno::Sequence< css::beans::NamedValue > SvtViewOptions::GetUserData() const -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - css::uno::Sequence< css::beans::NamedValue > lData; - switch( m_eViewType ) - { - case E_DIALOG : { - lData = m_pDataContainer_Dialogs->GetUserData( m_sViewName ); - } - break; - case E_TABDIALOG : { - lData = m_pDataContainer_TabDialogs->GetUserData( m_sViewName ); - } - break; - case E_TABPAGE : { - lData = m_pDataContainer_TabPages->GetUserData( m_sViewName ); - } - break; - case E_WINDOW : { - lData = m_pDataContainer_Windows->GetUserData( m_sViewName ); - } - break; - } - return lData; -} - -//***************************************************************************************************************** -void SvtViewOptions::SetUserData( const css::uno::Sequence< css::beans::NamedValue >& lData ) -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - switch( m_eViewType ) - { - case E_DIALOG : { - m_pDataContainer_Dialogs->SetUserData( m_sViewName, lData ); - } - break; - case E_TABDIALOG : { - m_pDataContainer_TabDialogs->SetUserData( m_sViewName, lData ); - } - break; - case E_TABPAGE : { - m_pDataContainer_TabPages->SetUserData( m_sViewName, lData ); - } - break; - case E_WINDOW : { - m_pDataContainer_Windows->SetUserData( m_sViewName, lData ); - } - break; - } -} - -//***************************************************************************************************************** -css::uno::Any SvtViewOptions::GetUserItem( const ::rtl::OUString& sName ) const -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - css::uno::Any aItem; - switch( m_eViewType ) - { - case E_DIALOG : { - aItem = m_pDataContainer_Dialogs->GetUserItem( m_sViewName, sName ); - } - break; - case E_TABDIALOG : { - aItem = m_pDataContainer_TabDialogs->GetUserItem( m_sViewName, sName ); - } - break; - case E_TABPAGE : { - aItem = m_pDataContainer_TabPages->GetUserItem( m_sViewName, sName ); - } - break; - case E_WINDOW : { - aItem = m_pDataContainer_Windows->GetUserItem( m_sViewName, sName ); - } - break; - } - return aItem; -} - -//***************************************************************************************************************** -void SvtViewOptions::SetUserItem( const ::rtl::OUString& sName , - const css::uno::Any& aValue ) -{ - // Ready for multithreading - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - - switch( m_eViewType ) - { - case E_DIALOG : { - m_pDataContainer_Dialogs->SetUserItem( m_sViewName, sName, aValue ); - } - break; - case E_TABDIALOG : { - m_pDataContainer_TabDialogs->SetUserItem( m_sViewName, sName, aValue ); - } - break; - case E_TABPAGE : { - m_pDataContainer_TabPages->SetUserItem( m_sViewName, sName, aValue ); - } - break; - case E_WINDOW : { - m_pDataContainer_Windows->SetUserItem( m_sViewName, sName, aValue ); - } - break; - } -} - -namespace -{ - class theViewOptionsMutex : public rtl::Static<osl::Mutex, theViewOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -::osl::Mutex& SvtViewOptions::GetOwnStaticMutex() -{ - return theViewOptionsMutex::get(); -} - -void SvtViewOptions::AcquireOptions() -{ - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - if( ++m_nRefCount_Dialogs == 1 ) - { - m_pDataContainer_Dialogs = new SvtViewOptionsBase_Impl( LIST_DIALOGS ); - ItemHolder1::holdConfigItem(E_VIEWOPTIONS_DIALOG); - } - if( ++m_nRefCount_TabDialogs == 1 ) - { - m_pDataContainer_TabDialogs = new SvtViewOptionsBase_Impl( LIST_TABDIALOGS ); - ItemHolder1::holdConfigItem(E_VIEWOPTIONS_TABDIALOG); - } - if( ++m_nRefCount_TabPages == 1 ) - { - m_pDataContainer_TabPages = new SvtViewOptionsBase_Impl( LIST_TABPAGES ); - ItemHolder1::holdConfigItem(E_VIEWOPTIONS_TABPAGE); - } - if( ++m_nRefCount_Windows == 1 ) - { - m_pDataContainer_Windows = new SvtViewOptionsBase_Impl( LIST_WINDOWS ); - ItemHolder1::holdConfigItem(E_VIEWOPTIONS_WINDOW); - } -} - -void SvtViewOptions::ReleaseOptions() -{ - ::osl::MutexGuard aGuard( GetOwnStaticMutex() ); - if( --m_nRefCount_Dialogs == 0 ) - { - delete m_pDataContainer_Dialogs; - m_pDataContainer_Dialogs = NULL; - } - if( --m_nRefCount_TabDialogs == 0 ) - { - delete m_pDataContainer_TabDialogs; - m_pDataContainer_TabDialogs = NULL; - } - if( --m_nRefCount_TabPages == 0 ) - { - delete m_pDataContainer_TabPages; - m_pDataContainer_TabPages = NULL; - } - if( --m_nRefCount_Windows == 0 ) - { - delete m_pDataContainer_Windows; - m_pDataContainer_Windows = NULL; - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/workingsetoptions.cxx b/unotools/source/config/workingsetoptions.cxx deleted file mode 100644 index d90d413dc6..0000000000 --- a/unotools/source/config/workingsetoptions.cxx +++ /dev/null @@ -1,378 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/workingsetoptions.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <itemholder1.hxx> - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::utl ; -using namespace ::rtl ; -using namespace ::osl ; -using namespace ::com::sun::star::uno ; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_WORKINGSET OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/WorkingSet")) -#define DEFAULT_WINDOWLIST Sequence< OUString >() - -#define PROPERTYNAME_WINDOWLIST OUString(RTL_CONSTASCII_USTRINGPARAM("WindowList" )) - -#define PROPERTYHANDLE_WINDOWLIST 0 - -#define PROPERTYCOUNT 1 - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -class SvtWorkingSetOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtWorkingSetOptions_Impl(); - ~SvtWorkingSetOptions_Impl(); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @seealso baseclass ConfigItem - - @param "seqPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& seqPropertyNames ); - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // public interface - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short access method to get internal values - @descr These method give us a chance to regulate acces to ouer internal values. - It's not used in the moment - but it's possible for the feature! - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - Sequence< OUString > GetWindowList( ) const ; - void SetWindowList( const Sequence< OUString >& seqWindowList ) ; - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return list of key names of ouer configuration management which represent oue module tree - @descr These methods return a static const list of key names. We need it to get needed values from our - configuration management. - - @seealso - - - @param - - @return A list of needed configuration keys is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - static Sequence< OUString > GetPropertyNames(); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - Sequence< OUString > m_seqWindowList ; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtWorkingSetOptions_Impl::SvtWorkingSetOptions_Impl() - // Init baseclasses first - : ConfigItem ( ROOTNODE_WORKINGSET ) - // Init member then. - , m_seqWindowList ( DEFAULT_WINDOWLIST ) -{ - // Use our static list of configuration keys to get his values. - Sequence< OUString > seqNames = GetPropertyNames ( ); - Sequence< Any > seqValues = GetProperties ( seqNames ); - - // Safe impossible cases. - // We need values from ALL configuration keys. - // Follow assignment use order of values in relation to our list of key names! - DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtWorkingSetOptions_Impl::SvtWorkingSetOptions_Impl()\nI miss some values of configuration keys!\n" ); - - // Copy values from list in right order to ouer internal member. - sal_Int32 nPropertyCount = seqValues.getLength(); - for( sal_Int32 nProperty=0; nProperty<nPropertyCount; ++nProperty ) - { - // Safe impossible cases. - // Check any for valid value. - DBG_ASSERT( !(seqValues[nProperty].hasValue()==sal_False), "SvtWorkingSetOptions_Impl::SvtWorkingSetOptions_Impl()\nInvalid property value detected!\n" ); - switch( nProperty ) - { - case PROPERTYHANDLE_WINDOWLIST : { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_SEQUENCE), "SvtWorkingSetOptions_Impl::SvtWorkingSetOptions_Impl()\nWho has changed the value type of \"Office.Common\\WorkingSet\\WindowList\"?" ); - seqValues[nProperty] >>= m_seqWindowList; - } - break; - } - } - - // Enable notification mechanism of ouer baseclass. - // We need it to get information about changes outside these class on ouer used configuration keys! - EnableNotification( seqNames ); -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtWorkingSetOptions_Impl::~SvtWorkingSetOptions_Impl() -{ - // We must save our current values .. if user forget it! - if( IsModified() == sal_True ) - { - Commit(); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtWorkingSetOptions_Impl::Notify( const Sequence< OUString >& seqPropertyNames ) -{ - // Use given list of updated properties to get his values from configuration directly! - Sequence< Any > seqValues = GetProperties( seqPropertyNames ); - // Safe impossible cases. - // We need values from ALL notified configuration keys. - DBG_ASSERT( !(seqPropertyNames.getLength()!=seqValues.getLength()), "SvtWorkingSetOptions_Impl::Notify()\nI miss some values of configuration keys!\n" ); - // Step over list of property names and get right value from coreesponding value list to set it on internal members! - sal_Int32 nCount = seqPropertyNames.getLength(); - for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty ) - { - if( seqPropertyNames[nProperty] == PROPERTYNAME_WINDOWLIST ) - { - DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_SEQUENCE), "SvtWorkingSetOptions_Impl::Notify()\nWho has changed the value type of \"Office.Common\\WorkingSet\\WindowList\"?" ); - seqValues[nProperty] >>= m_seqWindowList; - } - #if OSL_DEBUG_LEVEL > 1 - else DBG_ASSERT( sal_False, "SvtWorkingSetOptions_Impl::Notify()\nUnkown property detected ... I can't handle these!\n" ); - #endif - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtWorkingSetOptions_Impl::Commit() -{ - // Get names of supported properties, create a list for values and copy current values to it. - Sequence< OUString > seqNames = GetPropertyNames (); - sal_Int32 nCount = seqNames.getLength(); - Sequence< Any > seqValues ( nCount ); - for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty ) - { - switch( nProperty ) - { - case PROPERTYHANDLE_WINDOWLIST : { - seqValues[nProperty] <<= m_seqWindowList; - } - break; - } - } - // Set properties in configuration. - PutProperties( seqNames, seqValues ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< OUString > SvtWorkingSetOptions_Impl::GetWindowList() const -{ - return m_seqWindowList; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtWorkingSetOptions_Impl::SetWindowList( const Sequence< OUString >& seqWindowList ) -{ - m_seqWindowList = seqWindowList; - SetModified(); -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Sequence< OUString > SvtWorkingSetOptions_Impl::GetPropertyNames() -{ - // Build list of configuration key names. - const OUString pProperties[] = - { - PROPERTYNAME_WINDOWLIST , - }; - // Initialize return sequence with these list ... - const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT ); - // ... and return it. - return seqPropertyNames; -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtWorkingSetOptions_Impl* SvtWorkingSetOptions::m_pDataContainer = NULL ; -sal_Int32 SvtWorkingSetOptions::m_nRefCount = 0 ; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtWorkingSetOptions::SvtWorkingSetOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already exist! - if( m_pDataContainer == NULL ) - { - m_pDataContainer = new SvtWorkingSetOptions_Impl; - ItemHolder1::holdConfigItem(E_WORKINGSETOPTIONS); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtWorkingSetOptions::~SvtWorkingSetOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< OUString > SvtWorkingSetOptions::GetWindowList() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetWindowList(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtWorkingSetOptions::SetWindowList( const Sequence< OUString >& seqWindowList ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetWindowList( seqWindowList ); -} - -namespace -{ - class theWorkingSetOptionsMutex : public rtl::Static<osl::Mutex, theWorkingSetOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtWorkingSetOptions::GetOwnStaticMutex() -{ - return theWorkingSetOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/xmlaccelcfg.cxx b/unotools/source/config/xmlaccelcfg.cxx deleted file mode 100644 index f9b0a6c6e9..0000000000 --- a/unotools/source/config/xmlaccelcfg.cxx +++ /dev/null @@ -1,419 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/xmlaccelcfg.hxx> - -#include <vector> -#include <com/sun/star/xml/sax/XAttributeList.hpp> -#include <cppuhelper/implbase1.hxx> - -using namespace com::sun::star::uno; -using namespace com::sun::star::xml::sax; - -using ::rtl::OUString; - -#define ELEMENT_ACCELERATORLIST "acceleratorlist" -#define ELEMENT_ACCELERATORITEM "item" - -#define ATTRIBUTE_KEYCODE "code" -#define ATTRIBUTE_MODIFIER "modifier" -#define ATTRIBUTE_URL "url" - -#define ATTRIBUTE_TYPE_CDATA "CDATA" - -// ------------------------------------------------------------------ - -struct AttributeListImpl_impl; -class AttributeListImpl : public ::cppu::WeakImplHelper1< ::com::sun::star::xml::sax::XAttributeList > -{ -protected: - ~AttributeListImpl(); - -public: - AttributeListImpl(); - AttributeListImpl( const AttributeListImpl & ); - -public: - virtual sal_Int16 SAL_CALL getLength(void) throw (::com::sun::star::uno::RuntimeException); - virtual ::rtl::OUString SAL_CALL getNameByIndex(sal_Int16 i) throw (::com::sun::star::uno::RuntimeException); - virtual ::rtl::OUString SAL_CALL getTypeByIndex(sal_Int16 i) throw (::com::sun::star::uno::RuntimeException); - virtual ::rtl::OUString SAL_CALL getTypeByName(const ::rtl::OUString& aName) throw (::com::sun::star::uno::RuntimeException); - virtual ::rtl::OUString SAL_CALL getValueByIndex(sal_Int16 i) throw (::com::sun::star::uno::RuntimeException); - virtual ::rtl::OUString SAL_CALL getValueByName(const ::rtl::OUString& aName) throw (::com::sun::star::uno::RuntimeException); - -public: - void addAttribute( const ::rtl::OUString &sName , const ::rtl::OUString &sType , const ::rtl::OUString &sValue ); - void clear(); - -private: - struct AttributeListImpl_impl *m_pImpl; -}; - -struct TagAttribute -{ - TagAttribute(){} - TagAttribute( const OUString &aName, const OUString &aType , const OUString &aValue ) - { - sName = aName; - sType = aType; - sValue = aValue; - } - - OUString sName; - OUString sType; - OUString sValue; -}; - -struct AttributeListImpl_impl -{ - AttributeListImpl_impl() - { - // performance improvement during adding - vecAttribute.reserve(20); - } - ::std::vector<struct TagAttribute> vecAttribute; -}; - - - -sal_Int16 SAL_CALL AttributeListImpl::getLength(void) throw (RuntimeException) -{ - return sal::static_int_cast< sal_Int16 >(m_pImpl->vecAttribute.size()); -} - - -AttributeListImpl::AttributeListImpl( const AttributeListImpl &r ) : - cppu::WeakImplHelper1<com::sun::star::xml::sax::XAttributeList>(r) -{ - m_pImpl = new AttributeListImpl_impl; - *m_pImpl = *(r.m_pImpl); -} - -OUString AttributeListImpl::getNameByIndex(sal_Int16 i) throw (RuntimeException) -{ - if( i < sal::static_int_cast<sal_Int16>(m_pImpl->vecAttribute.size()) ) { - return m_pImpl->vecAttribute[i].sName; - } - return OUString(); -} - - -OUString AttributeListImpl::getTypeByIndex(sal_Int16 i) throw (RuntimeException) -{ - if( i < sal::static_int_cast<sal_Int16>(m_pImpl->vecAttribute.size()) ) { - return m_pImpl->vecAttribute[i].sType; - } - return OUString(); -} - -OUString AttributeListImpl::getValueByIndex(sal_Int16 i) throw (RuntimeException) -{ - if( i < sal::static_int_cast<sal_Int16>(m_pImpl->vecAttribute.size()) ) { - return m_pImpl->vecAttribute[i].sValue; - } - return OUString(); - -} - -OUString AttributeListImpl::getTypeByName( const OUString& sName ) throw (RuntimeException) -{ - ::std::vector<struct TagAttribute>::iterator ii = m_pImpl->vecAttribute.begin(); - - for( ; ii != m_pImpl->vecAttribute.end() ; ii ++ ) { - if( (*ii).sName == sName ) { - return (*ii).sType; - } - } - return OUString(); -} - -OUString AttributeListImpl::getValueByName(const OUString& sName) throw (RuntimeException) -{ - ::std::vector<struct TagAttribute>::iterator ii = m_pImpl->vecAttribute.begin(); - - for( ; ii != m_pImpl->vecAttribute.end() ; ii ++ ) { - if( (*ii).sName == sName ) { - return (*ii).sValue; - } - } - return OUString(); -} - - -AttributeListImpl::AttributeListImpl() -{ - m_pImpl = new AttributeListImpl_impl; -} - - - -AttributeListImpl::~AttributeListImpl() -{ - delete m_pImpl; -} - - -void AttributeListImpl::addAttribute( const OUString &sName , - const OUString &sType , - const OUString &sValue ) -{ - m_pImpl->vecAttribute.push_back( TagAttribute( sName , sType , sValue ) ); -} - -void AttributeListImpl::clear() -{ - ::std::vector<struct TagAttribute> dummy; - m_pImpl->vecAttribute.swap( dummy ); - - OSL_ASSERT( ! getLength() ); -} - -// ------------------------------------------------------------------ - -Any SAL_CALL OReadAccelatorDocumentHandler::queryInterface( const Type & rType ) throw( RuntimeException ) -{ - Any a = ::cppu::queryInterface( rType ,SAL_STATIC_CAST( XDocumentHandler*, this )); - if ( a.hasValue() ) - return a; - else - return OWeakObject::queryInterface( rType ); -} - -void SAL_CALL OReadAccelatorDocumentHandler::ignorableWhitespace( - const OUString& ) -throw( SAXException, RuntimeException ) -{ -} - -void SAL_CALL OReadAccelatorDocumentHandler::processingInstruction( - const OUString&, const OUString& ) -throw( SAXException, RuntimeException ) -{ -} - -void SAL_CALL OReadAccelatorDocumentHandler::setDocumentLocator( - const Reference< XLocator > &xLocator) -throw( SAXException, RuntimeException ) -{ - m_xLocator = xLocator; -} - -::rtl::OUString OReadAccelatorDocumentHandler::getErrorLineString() -{ - char buffer[32]; - - if ( m_xLocator.is() ) - { - return OUString::createFromAscii( buffer ); - } - else - return OUString(); -} - -void SAL_CALL OReadAccelatorDocumentHandler::startDocument(void) - throw ( SAXException, RuntimeException ) -{ -} - -void SAL_CALL OReadAccelatorDocumentHandler::endDocument(void) - throw( SAXException, RuntimeException ) -{ - if ( m_nElementDepth > 0 ) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "A closing element is missing!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } -} - - -void SAL_CALL OReadAccelatorDocumentHandler::startElement( - const OUString& aElementName, const Reference< XAttributeList > &xAttrList ) -throw( SAXException, RuntimeException ) -{ - m_nElementDepth++; - - if ( aElementName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_ACCELERATORLIST ))) - { - // acceleratorlist - if ( m_bAcceleratorMode ) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "Accelerator list used twice!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - else - m_bAcceleratorMode = sal_True; - } - else if ( aElementName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_ACCELERATORITEM ))) - { - // accelerator item - if ( !m_bAcceleratorMode ) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "Accelerator list element has to be used before!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - else - { - // read accelerator item - m_bItemCloseExpected = sal_True; - - SvtAcceleratorConfigItem aItem; - - // read attributes for accelerator - for ( sal_Int16 i=0; i< xAttrList->getLength(); i++ ) - { - OUString aName = xAttrList->getNameByIndex( i ); - OUString aValue = xAttrList->getValueByIndex( i ); - - if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_URL ))) - aItem.aCommand = aValue; - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_MODIFIER ))) - aItem.nModifier = (sal_uInt16)aValue.toInt32(); - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_KEYCODE ))) - aItem.nCode = (sal_uInt16)aValue.toInt32(); - } - - m_aReadAcceleratorList.push_back( aItem ); - } - } - else - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "Unknown element found!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } -} - - -void SAL_CALL OReadAccelatorDocumentHandler::characters(const rtl::OUString&) -throw( SAXException, RuntimeException ) -{ -} - - -void SAL_CALL OReadAccelatorDocumentHandler::endElement( const OUString& aName ) - throw( SAXException, RuntimeException ) -{ - m_nElementDepth--; - - if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_ACCELERATORLIST ))) - { - // acceleratorlist - if ( !m_bAcceleratorMode ) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "Accelerator list used twice!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - } - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_ACCELERATORITEM ))) - { - if ( !m_bItemCloseExpected ) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "Closing accelerator item element expected!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - } - else - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "Unknown closing element found!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } -} - -// ------------------------------------------------------------------ - -OWriteAccelatorDocumentHandler::OWriteAccelatorDocumentHandler( - const SvtAcceleratorItemList& aWriteAcceleratorList, Reference< XDocumentHandler > xDocumentHandler ) : - m_xWriteDocumentHandler( xDocumentHandler ), - m_aWriteAcceleratorList( aWriteAcceleratorList ) -{ - m_aAttributeType = OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_TYPE_CDATA )); -} - -OWriteAccelatorDocumentHandler::~OWriteAccelatorDocumentHandler() -{ -} - -void OWriteAccelatorDocumentHandler::WriteAcceleratorDocument() - throw ( SAXException, RuntimeException ) -{ - AttributeListImpl* pList = new AttributeListImpl; - Reference< XAttributeList > rList( (XAttributeList *)pList , UNO_QUERY ); - - m_xWriteDocumentHandler->startDocument(); - m_xWriteDocumentHandler->startElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_ACCELERATORLIST )), rList ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - - std::list< SvtAcceleratorConfigItem>::const_iterator p; - for ( p = m_aWriteAcceleratorList.begin(); p != m_aWriteAcceleratorList.end(); ++p ) - WriteAcceleratorItem( *p ); - - m_xWriteDocumentHandler->endElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_ACCELERATORLIST )) ); - m_xWriteDocumentHandler->endDocument(); -} - -void OWriteAccelatorDocumentHandler::WriteAcceleratorItem( - const SvtAcceleratorConfigItem& aAcceleratorItem ) - throw( SAXException, RuntimeException ) -{ - AttributeListImpl* pAcceleratorAttributes = new AttributeListImpl; - Reference< XAttributeList > xAcceleratorAttrList( (XAttributeList *)pAcceleratorAttributes , UNO_QUERY ); - - // set attributes - pAcceleratorAttributes->addAttribute( - OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_KEYCODE )), - m_aAttributeType, - OUString::valueOf( aAcceleratorItem.nCode )); - - pAcceleratorAttributes->addAttribute( - OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_MODIFIER )), - m_aAttributeType, - OUString::valueOf( aAcceleratorItem.nModifier )); - - pAcceleratorAttributes->addAttribute( - OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_URL )), - m_aAttributeType, - aAcceleratorItem.aCommand ); - - // write start element - m_xWriteDocumentHandler->startElement( - OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_ACCELERATORITEM )), - xAcceleratorAttrList ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->endElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_ACCELERATORITEM )) ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/calendarwrapper.cxx b/unotools/source/i18n/calendarwrapper.cxx deleted file mode 100644 index da520b9dc9..0000000000 --- a/unotools/source/i18n/calendarwrapper.cxx +++ /dev/null @@ -1,680 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/calendarwrapper.hxx> -#include <tools/string.hxx> -#include <tools/debug.hxx> - -#include <comphelper/componentfactory.hxx> -#include <com/sun/star/i18n/CalendarFieldIndex.hpp> -#include <com/sun/star/i18n/XExtendedCalendar.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> - -#define CALENDAR_LIBRARYNAME "i18n" -#define CALENDAR_SERVICENAME "com.sun.star.i18n.LocaleCalendar" - - -using namespace ::com::sun::star; -using namespace ::com::sun::star::i18n; -using namespace ::com::sun::star::uno; - - -const double MILLISECONDS_PER_DAY = 1000.0 * 60.0 * 60.0 * 24.0; - - -CalendarWrapper::CalendarWrapper( - const Reference< lang::XMultiServiceFactory > & xSF - ) - : - xSMgr( xSF ), - aEpochStart( Date( 1, 1, 1970 ) ) -{ - if ( xSMgr.is() ) - { - try - { - xC = Reference< XExtendedCalendar > ( xSMgr->createInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CALENDAR_SERVICENAME ) ) ), - uno::UNO_QUERY ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "CalendarWrapper ctor: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - } - else - { // try to get an instance somehow - DBG_ERRORFILE( "CalendarWrapper: no service manager, trying own" ); - try - { - Reference< XInterface > xI = ::comphelper::getComponentInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LLCF_LIBNAME( CALENDAR_LIBRARYNAME ) ) ), - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CALENDAR_SERVICENAME ) ) ); - if ( xI.is() ) - { - Any x = xI->queryInterface( ::getCppuType((const Reference< XExtendedCalendar >*)0) ); - x >>= xC; - } - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getComponentInstance: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - } -} - - -CalendarWrapper::~CalendarWrapper() -{ -} - - -void CalendarWrapper::loadDefaultCalendar( const ::com::sun::star::lang::Locale& rLocale ) -{ - try - { - if ( xC.is() ) - xC->loadDefaultCalendar( rLocale ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "loadDefaultCalendar: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } -} - - -void CalendarWrapper::loadCalendar( const ::rtl::OUString& rUniqueID, const ::com::sun::star::lang::Locale& rLocale ) -{ - try - { - if ( xC.is() ) - xC->loadCalendar( rUniqueID, rLocale ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "loadCalendar: Exception caught\nrequested: " ); - aMsg += ByteString( String( rUniqueID ), RTL_TEXTENCODING_UTF8 ); - aMsg += " Locale: "; - aMsg += ByteString( String( rLocale.Language ), RTL_TEXTENCODING_UTF8 ); - aMsg += '_'; - aMsg += ByteString( String( rLocale.Country ), RTL_TEXTENCODING_UTF8 ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } -} - - -::com::sun::star::i18n::Calendar CalendarWrapper::getLoadedCalendar() const -{ - try - { - if ( xC.is() ) - return xC->getLoadedCalendar(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getLoadedCalendar: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::i18n::Calendar(); -} - - -::com::sun::star::uno::Sequence< ::rtl::OUString > CalendarWrapper::getAllCalendars( const ::com::sun::star::lang::Locale& rLocale ) const -{ - try - { - if ( xC.is() ) - return xC->getAllCalendars( rLocale ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getAllCalendars: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::uno::Sequence< ::rtl::OUString > (0); -} - - -::rtl::OUString CalendarWrapper::getUniqueID() const -{ - try - { - if ( xC.is() ) - return xC->getUniqueID(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getUniqueID: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::rtl::OUString(); -} - - -void CalendarWrapper::setDateTime( double nTimeInDays ) -{ - try - { - if ( xC.is() ) - xC->setDateTime( nTimeInDays ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "setDateTime: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } -} - - -double CalendarWrapper::getDateTime() const -{ - try - { - if ( xC.is() ) - return xC->getDateTime(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getDateTime: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return 0.0; -} - - -sal_Int32 CalendarWrapper::getCombinedOffsetInMillis( - sal_Int16 nParentFieldIndex, sal_Int16 nChildFieldIndex ) const -{ - sal_Int32 nOffset = 0; - try - { - if ( xC.is() ) - { - nOffset = static_cast<sal_Int32>( xC->getValue( nParentFieldIndex )) * 60000; - sal_Int16 nSecondMillis = xC->getValue( nChildFieldIndex ); - if (nOffset < 0) - nOffset -= static_cast<sal_uInt16>( nSecondMillis); - else - nOffset += static_cast<sal_uInt16>( nSecondMillis); - } - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "setLocalDateTime: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return nOffset; -} - - -sal_Int32 CalendarWrapper::getZoneOffsetInMillis() const -{ - return getCombinedOffsetInMillis( CalendarFieldIndex::ZONE_OFFSET, - CalendarFieldIndex::ZONE_OFFSET_SECOND_MILLIS); -} - - -sal_Int32 CalendarWrapper::getDSTOffsetInMillis() const -{ - return getCombinedOffsetInMillis( CalendarFieldIndex::DST_OFFSET, - CalendarFieldIndex::DST_OFFSET_SECOND_MILLIS); -} - - -void CalendarWrapper::setLocalDateTime( double nTimeInDays ) -{ - try - { - if ( xC.is() ) - { - // First set a nearby value to obtain the timezone and DST offset. - // This is necessary to let ICU choose the corresponding - // OlsonTimeZone transitions. Since ICU incorporates also - // historical data even the timezone may differ for different - // dates! (Which was the cause for #i76623# when the timezone of a - // previously set date was used.) Timezone may also include - // seconds, so use milliseconds field as well. - xC->setDateTime( nTimeInDays ); - sal_Int32 nZone1 = getZoneOffsetInMillis(); - sal_Int32 nDST1 = getDSTOffsetInMillis(); - double nLoc = nTimeInDays - (double)(nZone1 + nDST1) / MILLISECONDS_PER_DAY; - xC->setDateTime( nLoc ); - sal_Int32 nZone2 = getZoneOffsetInMillis(); - sal_Int32 nDST2 = getDSTOffsetInMillis(); - // If DSTs differ after calculation, we crossed boundaries. Do it - // again, this time using the DST corrected initial value for the - // real local time. - // See also localtime/gmtime conversion pitfalls at - // http://www.erack.de/download/timetest.c - if ( nDST1 != nDST2 ) - { - nLoc = nTimeInDays - (double)(nZone2 + nDST2) / MILLISECONDS_PER_DAY; - xC->setDateTime( nLoc ); - // #i17222# If the DST onset rule says to switch from 00:00 to - // 01:00 and we tried to set onsetDay 00:00 with DST, the - // result was onsetDay-1 23:00 and no DST, which is not what we - // want. So once again without DST, resulting in onsetDay - // 01:00 and DST. Yes, this seems to be weird, but logically - // correct. - sal_Int32 nDST3 = getDSTOffsetInMillis(); - if ( nDST2 != nDST3 && !nDST3 ) - { - nLoc = nTimeInDays - (double)(nZone2 + nDST3) / MILLISECONDS_PER_DAY; - xC->setDateTime( nLoc ); - } - } - } - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "setLocalDateTime: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } -} - - -double CalendarWrapper::getLocalDateTime() const -{ - try - { - if ( xC.is() ) - { - double nTimeInDays = xC->getDateTime(); - sal_Int32 nZone = getZoneOffsetInMillis(); - sal_Int32 nDST = getDSTOffsetInMillis(); - nTimeInDays += (double)(nZone + nDST) / MILLISECONDS_PER_DAY; - return nTimeInDays; - } - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getLocalDateTime: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return 0.0; -} - - -void CalendarWrapper::setValue( sal_Int16 nFieldIndex, sal_Int16 nValue ) -{ - try - { - if ( xC.is() ) - xC->setValue( nFieldIndex, nValue ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "setValue: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } -} - - -sal_Bool CalendarWrapper::isValid() const -{ - try - { - if ( xC.is() ) - return xC->isValid(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "isValid: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return sal_False; -} - - -sal_Int16 CalendarWrapper::getValue( sal_Int16 nFieldIndex ) const -{ - try - { - if ( xC.is() ) - return xC->getValue( nFieldIndex ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getValue: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return 0; -} - - -void CalendarWrapper::addValue( sal_Int16 nFieldIndex, sal_Int32 nAmount ) -{ - try - { - if ( xC.is() ) - xC->addValue( nFieldIndex, nAmount ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "addValue: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } -} - - -sal_Int16 CalendarWrapper::getFirstDayOfWeek() const -{ - try - { - if ( xC.is() ) - return xC->getFirstDayOfWeek(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getFirstDayOfWeek: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return 0; -} - - -void CalendarWrapper::setFirstDayOfWeek( sal_Int16 nDay ) -{ - try - { - if ( xC.is() ) - xC->setFirstDayOfWeek( nDay ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "setFirstDayOfWeek: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } -} - - -void CalendarWrapper::setMinimumNumberOfDaysForFirstWeek( sal_Int16 nDays ) -{ - try - { - if ( xC.is() ) - xC->setMinimumNumberOfDaysForFirstWeek( nDays ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "setMinimumNumberOfDaysForFirstWeek: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } -} - - -sal_Int16 CalendarWrapper::getMinimumNumberOfDaysForFirstWeek() const -{ - try - { - if ( xC.is() ) - return xC->getMinimumNumberOfDaysForFirstWeek(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getMinimumNumberOfDaysForFirstWeek: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return 0; -} - - -sal_Int16 CalendarWrapper::getNumberOfMonthsInYear() const -{ - try - { - if ( xC.is() ) - return xC->getNumberOfMonthsInYear(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getNumberOfMonthsInYear: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return 0; -} - - -sal_Int16 CalendarWrapper::getNumberOfDaysInWeek() const -{ - try - { - if ( xC.is() ) - return xC->getNumberOfDaysInWeek(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getNumberOfDaysInWeek: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return 0; -} - - -::com::sun::star::uno::Sequence< ::com::sun::star::i18n::CalendarItem > CalendarWrapper::getMonths() const -{ - try - { - if ( xC.is() ) - return xC->getMonths(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getMonths: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::CalendarItem > (0); -} - - -::com::sun::star::uno::Sequence< ::com::sun::star::i18n::CalendarItem > CalendarWrapper::getDays() const -{ - try - { - if ( xC.is() ) - return xC->getDays(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getDays: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::CalendarItem > (0); -} - - -String CalendarWrapper::getDisplayName( sal_Int16 nCalendarDisplayIndex, sal_Int16 nIdx, sal_Int16 nNameType ) const -{ - try - { - if ( xC.is() ) - return xC->getDisplayName( nCalendarDisplayIndex, nIdx, nNameType ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getDisplayName: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return String(); -} - - -// --- XExtendedCalendar ----------------------------------------------------- - -String CalendarWrapper::getDisplayString( sal_Int32 nCalendarDisplayCode, sal_Int16 nNativeNumberMode ) const -{ - try - { - if ( xC.is() ) - return xC->getDisplayString( nCalendarDisplayCode, nNativeNumberMode ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getDisplayString: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return String(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/caserotate.cxx b/unotools/source/i18n/caserotate.cxx deleted file mode 100644 index 85d820212e..0000000000 --- a/unotools/source/i18n/caserotate.cxx +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Version: MPL 1.1 / GPLv3+ / LGPLv3+ - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Initial Developer of the Original Code is - * Caolán McNamara <caolanm@redhat.com> - * - * Contributor(s): - * Caolán McNamara <caolanm@redhat.com> - * Dózsa Bálint <dozsa@linux-dugf.site> - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 3 or later (the "GPLv3+"), or - * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), - * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable - * instead of those above. - */ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include "unotools/caserotate.hxx" -#include <com/sun/star/i18n/TransliterationModules.hpp> -#include <com/sun/star/i18n/TransliterationModulesExtra.hpp> - -//TODO Use XCharacterClassification::getStringType to determine the current -//(possibly mixed) case type and rotate to the next one - -sal_uInt32 RotateTransliteration::getNextMode() -{ - using namespace ::com::sun::star::i18n; - - sal_uInt32 nMode = 0; - - switch (nF3ShiftCounter) - { - case 0: - nMode = TransliterationModulesExtra::TITLE_CASE; - break; - case 1: - nMode = TransliterationModules_LOWERCASE_UPPERCASE; - break; - default: - case 2: - nMode = TransliterationModules_UPPERCASE_LOWERCASE; - nF3ShiftCounter = -1; - break; - } - - nF3ShiftCounter++; - - return nMode; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/charclass.cxx b/unotools/source/i18n/charclass.cxx deleted file mode 100644 index c561c227b4..0000000000 --- a/unotools/source/i18n/charclass.cxx +++ /dev/null @@ -1,582 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/charclass.hxx> -#include <tools/string.hxx> -#include <tools/debug.hxx> - -#include <comphelper/componentfactory.hxx> -#include <com/sun/star/uno/XInterface.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> - -#define CHARCLASS_LIBRARYNAME "i18n" -#define CHARCLASS_SERVICENAME "com.sun.star.i18n.CharacterClassification" - -using namespace ::com::sun::star; -using namespace ::com::sun::star::i18n; -using namespace ::com::sun::star::uno; - - -CharClass::CharClass( - const Reference< lang::XMultiServiceFactory > & xSF, - const lang::Locale& rLocale - ) - : - xSMgr( xSF ) -{ - setLocale( rLocale ); - if ( xSMgr.is() ) - { - try - { - xCC = Reference< XCharacterClassification > ( xSMgr->createInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CHARCLASS_SERVICENAME ) ) ), - uno::UNO_QUERY ); - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "CharClass ctor: Exception caught!" ); - } - } - else - { // try to get an instance somehow - getComponentInstance(); - } -} - - -CharClass::CharClass( - const ::com::sun::star::lang::Locale& rLocale ) -{ - setLocale( rLocale ); - getComponentInstance(); -} - - -CharClass::~CharClass() -{ -} - - -void CharClass::getComponentInstance() -{ - try - { - // CharClass may be needed by "small tools" like the Setup - // => maybe no service manager => loadLibComponentFactory - Reference < XInterface > xI = ::comphelper::getComponentInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LLCF_LIBNAME( CHARCLASS_LIBRARYNAME ) ) ), - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CHARCLASS_SERVICENAME ) ) ); - if ( xI.is() ) - { - Any x = xI->queryInterface( ::getCppuType((const Reference< XCharacterClassification >*)0) ); - x >>= xCC; - } - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "getComponentInstance: Exception caught!" ); - } -} - - -void CharClass::setLocale( const ::com::sun::star::lang::Locale& rLocale ) -{ - ::osl::MutexGuard aGuard( aMutex ); - aLocale.Language = rLocale.Language; - aLocale.Country = rLocale.Country; - aLocale.Variant = rLocale.Variant; -} - - -const ::com::sun::star::lang::Locale& CharClass::getLocale() const -{ - ::osl::MutexGuard aGuard( aMutex ); - return aLocale; -} - - -// static -sal_Bool CharClass::isAsciiNumeric( const String& rStr ) -{ - if ( !rStr.Len() ) - return sal_False; - register const sal_Unicode* p = rStr.GetBuffer(); - register const sal_Unicode* const pStop = p + rStr.Len(); - do - { - if ( !isAsciiDigit( *p ) ) - return sal_False; - } while ( ++p < pStop ); - return sal_True; -} - - -// static -sal_Bool CharClass::isAsciiAlpha( const String& rStr ) -{ - if ( !rStr.Len() ) - return sal_False; - register const sal_Unicode* p = rStr.GetBuffer(); - register const sal_Unicode* const pStop = p + rStr.Len(); - do - { - if ( !isAsciiAlpha( *p ) ) - return sal_False; - } while ( ++p < pStop ); - return sal_True; -} - - -// static -sal_Bool CharClass::isAsciiAlphaNumeric( const String& rStr ) -{ - if ( !rStr.Len() ) - return sal_False; - register const sal_Unicode* p = rStr.GetBuffer(); - register const sal_Unicode* const pStop = p + rStr.Len(); - do - { - if ( !isAsciiAlphaNumeric( *p ) ) - return sal_False; - } while ( ++p < pStop ); - return sal_True; -} - - -sal_Bool CharClass::isAlpha( const String& rStr, xub_StrLen nPos ) const -{ - sal_Unicode c = rStr.GetChar( nPos ); - if ( c < 128 ) - return isAsciiAlpha( c ); - - try - { - if ( xCC.is() ) - return (xCC->getCharacterType( rStr, nPos, getLocale() ) & - nCharClassAlphaType) != 0; - else - return sal_False; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "isAlpha: Exception caught!" ); - return sal_False; - } -} - - -sal_Bool CharClass::isAlpha( const String& rStr ) const -{ - try - { - if ( xCC.is() ) - return isAlphaType( xCC->getStringType( rStr, 0, rStr.Len(), getLocale() ) ); - else - return sal_False; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "isAlpha: Exception caught!" ); - return sal_False; - } -} - - -sal_Bool CharClass::isLetter( const String& rStr, xub_StrLen nPos ) const -{ - sal_Unicode c = rStr.GetChar( nPos ); - if ( c < 128 ) - return isAsciiAlpha( c ); - - try - { - if ( xCC.is() ) - return (xCC->getCharacterType( rStr, nPos, getLocale() ) & - nCharClassLetterType) != 0; - else - return sal_False; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "isLetter: Exception caught!" ); - return sal_False; - } -} - - -sal_Bool CharClass::isLetter( const String& rStr ) const -{ - try - { - if ( xCC.is() ) - return isLetterType( xCC->getStringType( rStr, 0, rStr.Len(), getLocale() ) ); - else - return sal_False; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "isLetter: Exception caught!" ); - return sal_False; - } -} - - -sal_Bool CharClass::isDigit( const String& rStr, xub_StrLen nPos ) const -{ - sal_Unicode c = rStr.GetChar( nPos ); - if ( c < 128 ) - return isAsciiDigit( c ); - - try - { - if ( xCC.is() ) - return (xCC->getCharacterType( rStr, nPos, getLocale() ) & - KCharacterType::DIGIT) != 0; - else - return sal_False; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "isDigit: Exception caught!" ); - return sal_False; - } -} - - -sal_Bool CharClass::isNumeric( const String& rStr ) const -{ - try - { - if ( xCC.is() ) - return isNumericType( xCC->getStringType( rStr, 0, rStr.Len(), getLocale() ) ); - else - return sal_False; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "isNumeric: Exception caught!" ); - return sal_False; - } -} - - -sal_Bool CharClass::isAlphaNumeric( const String& rStr, xub_StrLen nPos ) const -{ - sal_Unicode c = rStr.GetChar( nPos ); - if ( c < 128 ) - return isAsciiAlphaNumeric( c ); - - try - { - if ( xCC.is() ) - return (xCC->getCharacterType( rStr, nPos, getLocale() ) & - (nCharClassAlphaType | KCharacterType::DIGIT)) != 0; - else - return sal_False; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "isAlphaNumeric: Exception caught!" ); - return sal_False; - } -} - - -sal_Bool CharClass::isAlphaNumeric( const String& rStr ) const -{ - try - { - if ( xCC.is() ) - return isAlphaNumericType( xCC->getStringType( rStr, 0, rStr.Len(), getLocale() ) ); - else - return sal_False; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "isAlphaNumeric: Exception caught!" ); - return sal_False; - } -} - - -sal_Bool CharClass::isLetterNumeric( const String& rStr, xub_StrLen nPos ) const -{ - sal_Unicode c = rStr.GetChar( nPos ); - if ( c < 128 ) - return isAsciiAlphaNumeric( c ); - - try - { - if ( xCC.is() ) - return (xCC->getCharacterType( rStr, nPos, getLocale() ) & - (nCharClassLetterType | KCharacterType::DIGIT)) != 0; - else - return sal_False; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "isLetterNumeric: Exception caught!" ); - return sal_False; - } -} - - -sal_Bool CharClass::isLetterNumeric( const String& rStr ) const -{ - try - { - if ( xCC.is() ) - return isLetterNumericType( xCC->getStringType( rStr, 0, rStr.Len(), getLocale() ) ); - else - return sal_False; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "isLetterNumeric: Exception caught!" ); - return sal_False; - } -} - - -String CharClass::toUpper( const String& rStr, xub_StrLen nPos, xub_StrLen nCount ) const -{ - return toUpper_rtl(rStr, nPos, nCount); -} - - -String CharClass::toLower( const String& rStr, xub_StrLen nPos, xub_StrLen nCount ) const -{ - return toLower_rtl(::rtl::OUString(rStr), nPos, nCount); -} - - -String CharClass::toTitle( const String& rStr, xub_StrLen nPos, xub_StrLen nCount ) const -{ - try - { - if ( xCC.is() ) - return xCC->toTitle( rStr, nPos, nCount, getLocale() ); - else - return rStr.Copy( nPos, nCount ); - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "toTitle: Exception caught!" ); - return rStr.Copy( nPos, nCount ); - } -} - - -::rtl::OUString CharClass::toUpper_rtl( const ::rtl::OUString& rStr, sal_Int32 nPos, sal_Int32 nCount ) const -{ - try - { - if ( xCC.is() ) - return xCC->toUpper( rStr, nPos, nCount, getLocale() ); - else - return rStr.copy( nPos, nCount ); - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "toUpper: Exception caught!" ); - return rStr.copy( nPos, nCount ); - } -} - - -::rtl::OUString CharClass::toLower_rtl( const ::rtl::OUString& rStr, sal_Int32 nPos, sal_Int32 nCount ) const -{ - try - { - if ( xCC.is() ) - return xCC->toLower( rStr, nPos, nCount, getLocale() ); - else - return rStr.copy( nPos, nCount ); - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "toLower: Exception caught!" ); - return rStr.copy( nPos, nCount ); - } -} - - -sal_Int16 CharClass::getType( const String& rStr, xub_StrLen nPos ) const -{ - try - { - if ( xCC.is() ) - return xCC->getType( rStr, nPos ); - else - return 0; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "getType: Exception caught!" ); - return 0; - } -} - - -sal_Int16 CharClass::getCharacterDirection( const String& rStr, xub_StrLen nPos ) const -{ - try - { - if ( xCC.is() ) - return xCC->getCharacterDirection( rStr, nPos ); - else - return 0; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "getCharacterDirection: Exception caught!" ); - return 0; - } -} - - -sal_Int16 CharClass::getScript( const String& rStr, xub_StrLen nPos ) const -{ - try - { - if ( xCC.is() ) - return xCC->getScript( rStr, nPos ); - else - return 0; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "getScript: Exception caught!" ); - return 0; - } -} - - -sal_Int32 CharClass::getCharacterType( const String& rStr, xub_StrLen nPos ) const -{ - try - { - if ( xCC.is() ) - return xCC->getCharacterType( rStr, nPos, getLocale() ); - else - return 0; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "getCharacterType: Exception caught!" ); - return 0; - } -} - - -sal_Int32 CharClass::getStringType( const String& rStr, xub_StrLen nPos, xub_StrLen nCount ) const -{ - try - { - if ( xCC.is() ) - return xCC->getStringType( rStr, nPos, nCount, getLocale() ); - else - return 0; - } - catch ( const Exception& ) - { - DBG_ERRORFILE( "getStringType: Exception caught!" ); - return 0; - } -} - - -::com::sun::star::i18n::ParseResult CharClass::parseAnyToken( - const String& rStr, - sal_Int32 nPos, - sal_Int32 nStartCharFlags, - const String& userDefinedCharactersStart, - sal_Int32 nContCharFlags, - const String& userDefinedCharactersCont ) const -{ - try - { - if ( xCC.is() ) - return xCC->parseAnyToken( rStr, nPos, getLocale(), - nStartCharFlags, userDefinedCharactersStart, - nContCharFlags, userDefinedCharactersCont ); - else - return ParseResult(); - } - catch ( const Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "parseAnyToken: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - return ParseResult(); - } -} - - -::com::sun::star::i18n::ParseResult CharClass::parsePredefinedToken( - sal_Int32 nTokenType, - const String& rStr, - sal_Int32 nPos, - sal_Int32 nStartCharFlags, - const String& userDefinedCharactersStart, - sal_Int32 nContCharFlags, - const String& userDefinedCharactersCont ) const -{ - try - { - if ( xCC.is() ) - return xCC->parsePredefinedToken( nTokenType, rStr, nPos, getLocale(), - nStartCharFlags, userDefinedCharactersStart, - nContCharFlags, userDefinedCharactersCont ); - else - return ParseResult(); - } - catch ( const Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "parsePredefinedToken: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - return ParseResult(); - } -} - - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/collatorwrapper.cxx b/unotools/source/i18n/collatorwrapper.cxx deleted file mode 100644 index ea0d49bc80..0000000000 --- a/unotools/source/i18n/collatorwrapper.cxx +++ /dev/null @@ -1,215 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/collatorwrapper.hxx> -#include <tools/debug.hxx> - -#include <comphelper/componentfactory.hxx> -#include <com/sun/star/uno/XInterface.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> - -using namespace ::com::sun::star; - -CollatorWrapper::CollatorWrapper ( - const uno::Reference< lang::XMultiServiceFactory > &xServiceFactory) - : mxServiceFactory (xServiceFactory) -{ - ::rtl::OUString aService (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.i18n.Collator")); - - if (mxServiceFactory.is()) - { - try - { - mxInternationalCollator = uno::Reference< i18n::XCollator > ( - mxServiceFactory->createInstance(aService), uno::UNO_QUERY); - } - catch (uno::Exception& rException) - { - (void)rException; - DBG_ERRORFILE ("CollatorWrapper: failed to create instance"); - } - } - else - { - ::rtl::OUString aLibrary (RTL_CONSTASCII_USTRINGPARAM(LLCF_LIBNAME("i18n"))); - - try - { - uno::Reference< uno::XInterface > xInstance = - ::comphelper::getComponentInstance (aLibrary, aService); - - if (xInstance.is()) - { - uno::Any xInterface = xInstance->queryInterface ( - ::getCppuType((const uno::Reference< i18n::XCollator >*)0) ); - xInterface >>= mxInternationalCollator; - } - } - catch (uno::Exception& rException) - { - (void)rException; - DBG_ERRORFILE ("CollatorWrapper: failed to get component instance!"); - } - } - - DBG_ASSERT (mxInternationalCollator.is(), "CollatorWrapper: no i18n collator"); -} - -CollatorWrapper::~CollatorWrapper() -{ -} - -sal_Int32 -CollatorWrapper::compareSubstring ( - const ::rtl::OUString& s1, sal_Int32 off1, sal_Int32 len1, - const ::rtl::OUString& s2, sal_Int32 off2, sal_Int32 len2) const -{ - try - { - if (mxInternationalCollator.is()) - return mxInternationalCollator->compareSubstring ( - s1, off1, len1, s2, off2, len2); - } - catch (uno::RuntimeException& rRuntimeException) - { - (void)rRuntimeException; - DBG_ERRORFILE ("CollatorWrapper: compareSubstring failed"); - } - - return 0; -} - -sal_Int32 -CollatorWrapper::compareString (const ::rtl::OUString& s1, const ::rtl::OUString& s2) const -{ - try - { - if (mxInternationalCollator.is()) - return mxInternationalCollator->compareString (s1, s2); - } - catch (uno::RuntimeException& rRuntimeException) - { - (void)rRuntimeException; - DBG_ERRORFILE ("CollatorWrapper: compareString failed"); - } - - return 0; -} - -uno::Sequence< ::rtl::OUString > -CollatorWrapper::listCollatorAlgorithms (const lang::Locale& rLocale) const -{ - try - { - if (mxInternationalCollator.is()) - return mxInternationalCollator->listCollatorAlgorithms (rLocale); - } - catch (uno::RuntimeException& rRuntimeException) - { - (void)rRuntimeException; - DBG_ERRORFILE ("CollatorWrapper: listCollatorAlgorithms failed"); - } - - return uno::Sequence< ::rtl::OUString > (); -} - -uno::Sequence< sal_Int32 > -CollatorWrapper::listCollatorOptions (const ::rtl::OUString& rAlgorithm) const -{ - try - { - if (mxInternationalCollator.is()) - return mxInternationalCollator->listCollatorOptions (rAlgorithm); - } - catch (uno::RuntimeException& rRuntimeException) - { - (void)rRuntimeException; - DBG_ERRORFILE ("CollatorWrapper: listCollatorOptions failed"); - } - - return uno::Sequence< sal_Int32 > (); -} - -sal_Int32 -CollatorWrapper::loadDefaultCollator (const lang::Locale& rLocale, sal_Int32 nOptions) -{ - try - { - if (mxInternationalCollator.is()) - return mxInternationalCollator->loadDefaultCollator (rLocale, nOptions); - } - catch (uno::RuntimeException& rRuntimeException) - { - (void)rRuntimeException; - DBG_ERRORFILE ("CollatorWrapper: loadDefaultCollator failed"); - } - - return 0; -} - -sal_Int32 -CollatorWrapper::loadCollatorAlgorithm (const ::rtl::OUString& rAlgorithm, - const lang::Locale& rLocale, sal_Int32 nOptions) -{ - try - { - if (mxInternationalCollator.is()) - return mxInternationalCollator->loadCollatorAlgorithm ( - rAlgorithm, rLocale, nOptions); - } - catch (uno::RuntimeException& rRuntimeException) - { - (void)rRuntimeException; - DBG_ERRORFILE ("CollatorWrapper: loadCollatorAlgorithm failed"); - } - - return 0; - -} - -void -CollatorWrapper::loadCollatorAlgorithmWithEndUserOption ( - const ::rtl::OUString& rAlgorithm, - const lang::Locale& rLocale, const uno::Sequence< sal_Int32 >& rOption) -{ - try - { - if (mxInternationalCollator.is()) - mxInternationalCollator->loadCollatorAlgorithmWithEndUserOption ( - rAlgorithm, rLocale, rOption); - } - catch (uno::RuntimeException& rRuntimeException) - { - (void)rRuntimeException; - DBG_ERRORFILE ("CollatorWrapper: loadCollatorAlgorithmWithEndUserOption failed"); - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/intlwrapper.cxx b/unotools/source/i18n/intlwrapper.cxx deleted file mode 100644 index 117032f4ff..0000000000 --- a/unotools/source/i18n/intlwrapper.cxx +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include "unotools/intlwrapper.hxx" -#include <com/sun/star/i18n/CollatorOptions.hpp> -#include <i18npool/mslangid.hxx> - -IntlWrapper::IntlWrapper( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF, - const ::com::sun::star::lang::Locale& rLocale ) - : - aLocale( rLocale ), - xSMgr( xSF ), - pCharClass( NULL ), - pLocaleData( NULL ), - pCalendar( NULL ), - pCollator( NULL ), - pCaseCollator( NULL ) -{ - eLanguage = MsLangId::convertLocaleToLanguage( aLocale ); -} - - -IntlWrapper::IntlWrapper( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF, - LanguageType eLang ) - : - xSMgr( xSF ), - pCharClass( NULL ), - pLocaleData( NULL ), - pCalendar( NULL ), - pCollator( NULL ), - pCaseCollator( NULL ), - eLanguage( eLang ) -{ - MsLangId::convertLanguageToLocale( eLanguage, aLocale ); -} - - -IntlWrapper::~IntlWrapper() -{ - delete pCharClass; - delete pLocaleData; - delete pCalendar; - delete pCollator; - delete pCaseCollator; -} - - -void IntlWrapper::ImplNewCharClass() const -{ - ((IntlWrapper*)this)->pCharClass = new CharClass( xSMgr, aLocale ); -} - - -void IntlWrapper::ImplNewLocaleData() const -{ - ((IntlWrapper*)this)->pLocaleData = new LocaleDataWrapper( xSMgr, aLocale ); -} - - -void IntlWrapper::ImplNewCalendar() const -{ - CalendarWrapper* p = new CalendarWrapper( xSMgr ); - p->loadDefaultCalendar( aLocale ); - ((IntlWrapper*)this)->pCalendar = p; -} - - -void IntlWrapper::ImplNewCollator( sal_Bool bCaseSensitive ) const -{ - CollatorWrapper* p = new CollatorWrapper( xSMgr ); - if ( bCaseSensitive ) - { - p->loadDefaultCollator( aLocale, 0 ); - ((IntlWrapper*)this)->pCaseCollator = p; - } - else - { - p->loadDefaultCollator( aLocale, ::com::sun::star::i18n::CollatorOptions::CollatorOptions_IGNORE_CASE ); - ((IntlWrapper*)this)->pCollator = p; - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/localedatawrapper.cxx b/unotools/source/i18n/localedatawrapper.cxx deleted file mode 100644 index c6367bf905..0000000000 --- a/unotools/source/i18n/localedatawrapper.cxx +++ /dev/null @@ -1,2000 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <string.h> // memcpy() -#include <stdio.h> // fprintf(), stderr - -#include <unotools/localedatawrapper.hxx> -#include <unotools/numberformatcodewrapper.hxx> -#include <unotools/calendarwrapper.hxx> -#include <unotools/digitgroupingiterator.hxx> -#include <tools/string.hxx> -#include <tools/debug.hxx> -#include <i18npool/mslangid.hxx> - -#include <comphelper/componentfactory.hxx> -#include <unotools/processfactory.hxx> -#include <com/sun/star/uno/XInterface.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/i18n/KNumberFormatUsage.hpp> -#include <com/sun/star/i18n/KNumberFormatType.hpp> -#include <com/sun/star/i18n/CalendarFieldIndex.hpp> -#include <com/sun/star/i18n/CalendarDisplayIndex.hpp> - -#include <com/sun/star/i18n/NumberFormatIndex.hdl> -#include <rtl/instance.hxx> -#include <rtl/ustrbuf.hxx> -#include <sal/macros.h> - -#define LOCALEDATA_LIBRARYNAME "i18npool" -#define LOCALEDATA_SERVICENAME "com.sun.star.i18n.LocaleData" - -static const int nDateFormatInvalid = -1; -static const sal_uInt16 nCurrFormatInvalid = 0xffff; -static const sal_uInt16 nCurrFormatDefault = 0; - -using namespace ::com::sun::star; -using namespace ::com::sun::star::i18n; -using namespace ::com::sun::star::uno; - -namespace -{ - struct InstalledLocales - : public rtl::Static< - uno::Sequence< lang::Locale >, InstalledLocales > - {}; - - struct InstalledLanguageTypes - : public rtl::Static< - uno::Sequence< sal_uInt16 >, InstalledLanguageTypes > - {}; -} - -sal_uInt8 LocaleDataWrapper::nLocaleDataChecking = 0; - -LocaleDataWrapper::LocaleDataWrapper( - const Reference< lang::XMultiServiceFactory > & xSF, - const lang::Locale& rLocale - ) - : - xSMgr( xSF ), - bLocaleDataItemValid( sal_False ), - bReservedWordValid( sal_False ) -{ - setLocale( rLocale ); - if ( xSMgr.is() ) - { - try - { - xLD = Reference< XLocaleData2 > ( xSMgr->createInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LOCALEDATA_SERVICENAME ) ) ), - uno::UNO_QUERY ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "LocaleDataWrapper ctor: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - } - else - { // try to get an instance somehow - DBG_ERRORFILE( "LocaleDataWrapper: no service manager, trying own" ); - try - { - Reference< XInterface > xI = ::comphelper::getComponentInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LLCF_LIBNAME( LOCALEDATA_LIBRARYNAME ) ) ), - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LOCALEDATA_SERVICENAME ) ) ); - if ( xI.is() ) - { - Any x = xI->queryInterface( ::getCppuType((const Reference< XLocaleData2 >*)0) ); - x >>= xLD; - } - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getComponentInstance: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - } -} - - -LocaleDataWrapper::~LocaleDataWrapper() -{ -} - - -void LocaleDataWrapper::setLocale( const ::com::sun::star::lang::Locale& rLocale ) -{ - ::utl::ReadWriteGuard aGuard( aMutex, ::utl::ReadWriteGuardMode::nCriticalChange ); - aLocale = rLocale; - invalidateData(); -} - - -const ::com::sun::star::lang::Locale& LocaleDataWrapper::getLocale() const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - return aLocale; -} - - -void LocaleDataWrapper::invalidateData() -{ - aCurrSymbol.Erase(); - aCurrBankSymbol.Erase(); - nDateFormat = nLongDateFormat = nDateFormatInvalid; - nCurrPositiveFormat = nCurrNegativeFormat = nCurrDigits = nCurrFormatInvalid; - if ( bLocaleDataItemValid ) - { - for ( sal_Int32 j=0; j<LocaleItem::COUNT; j++ ) - { - aLocaleItem[j].Erase(); - } - bLocaleDataItemValid = sal_False; - } - if ( bReservedWordValid ) - { - for ( sal_Int16 j=0; j<reservedWords::COUNT; j++ ) - { - aReservedWord[j].Erase(); - } - bReservedWordValid = sal_False; - } - xDefaultCalendar.reset(); - if (aGrouping.getLength()) - aGrouping[0] = 0; - // dummies - cCurrZeroChar = '0'; -} - - -::com::sun::star::i18n::LanguageCountryInfo LocaleDataWrapper::getLanguageCountryInfo() const -{ - try - { - if ( xLD.is() ) - return xLD->getLanguageCountryInfo( getLocale() ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getLanguageCountryInfo: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::i18n::LanguageCountryInfo(); -} - - -::com::sun::star::i18n::LocaleDataItem LocaleDataWrapper::getLocaleItem() const -{ - try - { - if ( xLD.is() ) - return xLD->getLocaleItem( getLocale() ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getLocaleItem: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::i18n::LocaleDataItem(); -} - - -::com::sun::star::uno::Sequence< ::com::sun::star::i18n::Calendar > LocaleDataWrapper::getAllCalendars() const -{ - try - { - if ( xLD.is() ) - return xLD->getAllCalendars( getLocale() ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getAllCalendars: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::Calendar >(0); -} - - -::com::sun::star::uno::Sequence< ::com::sun::star::i18n::Currency2 > LocaleDataWrapper::getAllCurrencies() const -{ - try - { - if ( xLD.is() ) - return xLD->getAllCurrencies2( getLocale() ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getAllCurrencies: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::Currency2 >(0); -} - - -::com::sun::star::uno::Sequence< ::com::sun::star::i18n::FormatElement > LocaleDataWrapper::getAllFormats() const -{ - try - { - if ( xLD.is() ) - return xLD->getAllFormats( getLocale() ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getAllFormats: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::FormatElement >(0); -} - - -::com::sun::star::uno::Sequence< ::com::sun::star::i18n::Implementation > LocaleDataWrapper::getCollatorImplementations() const -{ - try - { - if ( xLD.is() ) - return xLD->getCollatorImplementations( getLocale() ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getCollatorImplementations: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::Implementation >(0); -} - - -::com::sun::star::uno::Sequence< ::rtl::OUString > LocaleDataWrapper::getTransliterations() const -{ - try - { - if ( xLD.is() ) - return xLD->getTransliterations( getLocale() ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getTransliterations: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::uno::Sequence< ::rtl::OUString >(0); -} - - -::com::sun::star::i18n::ForbiddenCharacters LocaleDataWrapper::getForbiddenCharacters() const -{ - try - { - if ( xLD.is() ) - return xLD->getForbiddenCharacters( getLocale() ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getForbiddenCharacters: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::i18n::ForbiddenCharacters(); -} - - -::com::sun::star::uno::Sequence< ::rtl::OUString > LocaleDataWrapper::getReservedWord() const -{ - try - { - if ( xLD.is() ) - return xLD->getReservedWord( getLocale() ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getReservedWord: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return ::com::sun::star::uno::Sequence< ::rtl::OUString >(0); -} - - -::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > LocaleDataWrapper::getAllInstalledLocaleNames() const -{ - uno::Sequence< lang::Locale > &rInstalledLocales = InstalledLocales::get(); - - if ( rInstalledLocales.getLength() ) - return rInstalledLocales; - - try - { - if ( xLD.is() ) - rInstalledLocales = xLD->getAllInstalledLocaleNames(); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "getAllInstalledLocaleNames: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return rInstalledLocales; -} - - -// --- Impl and helpers ---------------------------------------------------- - -// static -::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > LocaleDataWrapper::getInstalledLocaleNames() -{ - const uno::Sequence< lang::Locale > &rInstalledLocales = - InstalledLocales::get(); - - if ( !rInstalledLocales.getLength() ) - { - LocaleDataWrapper aLDW( ::comphelper::getProcessServiceFactory(), lang::Locale() ); - aLDW.getAllInstalledLocaleNames(); - } - return rInstalledLocales; -} - -// static -::com::sun::star::uno::Sequence< sal_uInt16 > LocaleDataWrapper::getInstalledLanguageTypes() -{ - uno::Sequence< sal_uInt16 > &rInstalledLanguageTypes = - InstalledLanguageTypes::get(); - - if ( rInstalledLanguageTypes.getLength() ) - return rInstalledLanguageTypes; - - ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > xLoc = - getInstalledLocaleNames(); - sal_Int32 nCount = xLoc.getLength(); - ::com::sun::star::uno::Sequence< sal_uInt16 > xLang( nCount ); - sal_Int32 nLanguages = 0; - for ( sal_Int32 i=0; i<nCount; i++ ) - { - String aDebugLocale; - if (areChecksEnabled()) - { - aDebugLocale = xLoc[i].Language; - if ( xLoc[i].Country.getLength() ) - { - aDebugLocale += '_'; - aDebugLocale += String( xLoc[i].Country); - if ( xLoc[i].Variant.getLength() ) - { - aDebugLocale += '_'; - aDebugLocale += String( xLoc[i].Variant); - } - } - } - - if ( xLoc[i].Variant.getLength() ) - { - if (areChecksEnabled()) - { - String aMsg( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::getInstalledLanguageTypes: Variants not supported, locale\n")); - aMsg += aDebugLocale; - outputCheckMessage( aMsg ); - } - continue; - } - LanguageType eLang = MsLangId::convertLocaleToLanguage( xLoc[i] ); - - // In checks, exclude known problems because no MS-LCID defined. - if (areChecksEnabled() && eLang == LANGUAGE_DONTKNOW -// && !aDebugLocale.EqualsAscii( "br_AE" ) // ?!? Breton in United Arabic Emirates - ) - { - String aMsg( RTL_CONSTASCII_USTRINGPARAM( - "ConvertIsoNamesToLanguage: unknown MS-LCID for locale\n")); - aMsg += aDebugLocale; - outputCheckMessage( aMsg ); - } - - switch ( eLang ) - { - case LANGUAGE_NORWEGIAN : // no_NO, not Bokmal (nb_NO), not Nynorsk (nn_NO) - eLang = LANGUAGE_DONTKNOW; // don't offer "Unknown" language - break; - } - if ( eLang != LANGUAGE_DONTKNOW ) - { - rtl::OUString aLanguage, aCountry; - MsLangId::convertLanguageToIsoNames( eLang, aLanguage, aCountry ); - if ( xLoc[i].Language != aLanguage || - xLoc[i].Country != aCountry ) - { - // In checks, exclude known problems because no MS-LCID defined - // and default for Language found. - if ( areChecksEnabled() - && !aDebugLocale.EqualsAscii( "ar_SD" ) // Sudan/ar - && !aDebugLocale.EqualsAscii( "en_CB" ) // Carribean is not a country -// && !aDebugLocale.EqualsAscii( "en_BG" ) // ?!? Bulgaria/en -// && !aDebugLocale.EqualsAscii( "es_BR" ) // ?!? Brazil/es - ) - { - String aMsg( RTL_CONSTASCII_USTRINGPARAM( - "ConvertIsoNamesToLanguage/ConvertLanguageToIsoNames: ambiguous locale (MS-LCID?)\n")); - aMsg += aDebugLocale; - aMsg.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " -> 0x" ) ); - aMsg += String::CreateFromInt32( eLang, 16 ); - aMsg.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " -> " ) ); - aMsg += String( aLanguage); - if ( aCountry.getLength() ) - { - aMsg += '_'; - aMsg += String( aCountry); - } - outputCheckMessage( aMsg ); - } - eLang = LANGUAGE_DONTKNOW; - } - } - if ( eLang != LANGUAGE_DONTKNOW ) - xLang[ nLanguages++ ] = eLang; - } - if ( nLanguages < nCount ) - xLang.realloc( nLanguages ); - rInstalledLanguageTypes = xLang; - - return rInstalledLanguageTypes; -} - -const String& LocaleDataWrapper::getOneLocaleItem( sal_Int16 nItem ) const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if ( nItem >= LocaleItem::COUNT ) - { - DBG_ERRORFILE( "getOneLocaleItem: bounds" ); - return aLocaleItem[0]; - } - if ( aLocaleItem[nItem].Len() == 0 ) - { // no cached content - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getOneLocaleItemImpl( nItem ); - } - return aLocaleItem[nItem]; -} - - -void LocaleDataWrapper::getOneLocaleItemImpl( sal_Int16 nItem ) -{ - if ( !bLocaleDataItemValid ) - { - aLocaleDataItem = getLocaleItem(); - bLocaleDataItemValid = sal_True; - } - switch ( nItem ) - { - case LocaleItem::DATE_SEPARATOR : - aLocaleItem[nItem] = aLocaleDataItem.dateSeparator; - break; - case LocaleItem::THOUSAND_SEPARATOR : - aLocaleItem[nItem] = aLocaleDataItem.thousandSeparator; - break; - case LocaleItem::DECIMAL_SEPARATOR : - aLocaleItem[nItem] = aLocaleDataItem.decimalSeparator; - break; - case LocaleItem::TIME_SEPARATOR : - aLocaleItem[nItem] = aLocaleDataItem.timeSeparator; - break; - case LocaleItem::TIME_100SEC_SEPARATOR : - aLocaleItem[nItem] = aLocaleDataItem.time100SecSeparator; - break; - case LocaleItem::LIST_SEPARATOR : - aLocaleItem[nItem] = aLocaleDataItem.listSeparator; - break; - case LocaleItem::SINGLE_QUOTATION_START : - aLocaleItem[nItem] = aLocaleDataItem.quotationStart; - break; - case LocaleItem::SINGLE_QUOTATION_END : - aLocaleItem[nItem] = aLocaleDataItem.quotationEnd; - break; - case LocaleItem::DOUBLE_QUOTATION_START : - aLocaleItem[nItem] = aLocaleDataItem.doubleQuotationStart; - break; - case LocaleItem::DOUBLE_QUOTATION_END : - aLocaleItem[nItem] = aLocaleDataItem.doubleQuotationEnd; - break; - case LocaleItem::MEASUREMENT_SYSTEM : - aLocaleItem[nItem] = aLocaleDataItem.measurementSystem; - break; - case LocaleItem::TIME_AM : - aLocaleItem[nItem] = aLocaleDataItem.timeAM; - break; - case LocaleItem::TIME_PM : - aLocaleItem[nItem] = aLocaleDataItem.timePM; - break; - case LocaleItem::LONG_DATE_DAY_OF_WEEK_SEPARATOR : - aLocaleItem[nItem] = aLocaleDataItem.LongDateDayOfWeekSeparator; - break; - case LocaleItem::LONG_DATE_DAY_SEPARATOR : - aLocaleItem[nItem] = aLocaleDataItem.LongDateDaySeparator; - break; - case LocaleItem::LONG_DATE_MONTH_SEPARATOR : - aLocaleItem[nItem] = aLocaleDataItem.LongDateMonthSeparator; - break; - case LocaleItem::LONG_DATE_YEAR_SEPARATOR : - aLocaleItem[nItem] = aLocaleDataItem.LongDateYearSeparator; - break; - default: - DBG_ERRORFILE( "getOneLocaleItemImpl: which one?" ); - } -} - - -void LocaleDataWrapper::getOneReservedWordImpl( sal_Int16 nWord ) -{ - if ( !bReservedWordValid ) - { - aReservedWordSeq = getReservedWord(); - bReservedWordValid = sal_True; - } - DBG_ASSERT( nWord < aReservedWordSeq.getLength(), "getOneReservedWordImpl: which one?" ); - if ( nWord < aReservedWordSeq.getLength() ) - aReservedWord[nWord] = aReservedWordSeq[nWord]; -} - - -const String& LocaleDataWrapper::getOneReservedWord( sal_Int16 nWord ) const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if ( nWord < 0 || nWord >= reservedWords::COUNT ) - { - DBG_ERRORFILE( "getOneReservedWord: bounds" ); - nWord = reservedWords::FALSE_WORD; - } - if ( aReservedWord[nWord].Len() == 0 ) - { // no cached content - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getOneReservedWordImpl( nWord ); - } - return aReservedWord[nWord]; -} - - -MeasurementSystem LocaleDataWrapper::mapMeasurementStringToEnum( const String& rMS ) const -{ -//! TODO: could be cached too - if ( rMS.EqualsIgnoreCaseAscii( "metric" ) ) - return MEASURE_METRIC; -//! TODO: other measurement systems? => extend enum MeasurementSystem - return MEASURE_US; -} - - -void LocaleDataWrapper::getDefaultCalendarImpl() -{ - if (!xDefaultCalendar) - { - Sequence< Calendar > xCals = getAllCalendars(); - sal_Int32 nCount = xCals.getLength(); - sal_Int32 nDef = 0; - if (nCount > 1) - { - const Calendar* pArr = xCals.getArray(); - for (sal_Int32 i=0; i<nCount; ++i) - { - if (pArr[i].Default) - { - nDef = i; - break; - } - } - } - xDefaultCalendar.reset( new Calendar( xCals[nDef])); - } -} - - -const ::boost::shared_ptr< ::com::sun::star::i18n::Calendar > LocaleDataWrapper::getDefaultCalendar() const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if (!xDefaultCalendar) - { // no cached content - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getDefaultCalendarImpl(); - } - return xDefaultCalendar; -} - - -const ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::CalendarItem > LocaleDataWrapper::getDefaultCalendarDays() const -{ - return getDefaultCalendar()->Days; -} - - -const ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::CalendarItem > LocaleDataWrapper::getDefaultCalendarMonths() const -{ - return getDefaultCalendar()->Months; -} - - -// --- currencies ----------------------------------------------------- - -const String& LocaleDataWrapper::getCurrSymbol() const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if ( !aCurrSymbol.Len() ) - { - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getCurrSymbolsImpl(); - } - return aCurrSymbol; -} - - -const String& LocaleDataWrapper::getCurrBankSymbol() const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if ( !aCurrBankSymbol.Len() ) - { - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getCurrSymbolsImpl(); - } - return aCurrBankSymbol; -} - - -sal_uInt16 LocaleDataWrapper::getCurrPositiveFormat() const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if ( nCurrPositiveFormat == nCurrFormatInvalid ) - { - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getCurrFormatsImpl(); - } - return nCurrPositiveFormat; -} - - -sal_uInt16 LocaleDataWrapper::getCurrNegativeFormat() const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if ( nCurrNegativeFormat == nCurrFormatInvalid ) - { - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getCurrFormatsImpl(); - } - return nCurrNegativeFormat; -} - - -sal_uInt16 LocaleDataWrapper::getCurrDigits() const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if ( nCurrDigits == nCurrFormatInvalid ) - { - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getCurrSymbolsImpl(); - } - return nCurrDigits; -} - - -void LocaleDataWrapper::getCurrSymbolsImpl() -{ - Sequence< Currency2 > aCurrSeq = getAllCurrencies(); - sal_Int32 nCnt = aCurrSeq.getLength(); - Currency2 const * const pCurrArr = aCurrSeq.getArray(); - sal_Int32 nElem; - for ( nElem = 0; nElem < nCnt; nElem++ ) - { - if ( pCurrArr[nElem].Default ) - break; - } - if ( nElem >= nCnt ) - { - if (areChecksEnabled()) - { - rtl::OUString aMsg( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::getCurrSymbolsImpl: no default currency")); - outputCheckMessage( appendLocaleInfo( aMsg ) ); - } - nElem = 0; - if ( nElem >= nCnt ) - { - if (areChecksEnabled()) - outputCheckMessage( String( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::getCurrSymbolsImpl: no currency at all, using ShellsAndPebbles"))); - aCurrSymbol.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "ShellsAndPebbles" ) ); - aCurrBankSymbol = aCurrSymbol; - nCurrPositiveFormat = nCurrNegativeFormat = nCurrFormatDefault; - nCurrDigits = 2; - return ; - } - } - aCurrSymbol = pCurrArr[nElem].Symbol; - aCurrBankSymbol = pCurrArr[nElem].BankSymbol; - nCurrDigits = pCurrArr[nElem].DecimalPlaces; -} - - -void LocaleDataWrapper::scanCurrFormatImpl( const String& rCode, - xub_StrLen nStart, xub_StrLen& nSign, xub_StrLen& nPar, - xub_StrLen& nNum, xub_StrLen& nBlank, xub_StrLen& nSym ) -{ - nSign = nPar = nNum = nBlank = nSym = STRING_NOTFOUND; - const sal_Unicode* const pStr = rCode.GetBuffer(); - const sal_Unicode* const pStop = pStr + rCode.Len(); - const sal_Unicode* p = pStr + nStart; - int nInSection = 0; - sal_Bool bQuote = sal_False; - while ( p < pStop ) - { - if ( bQuote ) - { - if ( *p == '"' && *(p-1) != '\\' ) - bQuote = sal_False; - } - else - { - switch ( *p ) - { - case '"' : - if ( pStr == p || *(p-1) != '\\' ) - bQuote = sal_True; - break; - case '-' : - if ( !nInSection && nSign == STRING_NOTFOUND ) - nSign = (xub_StrLen)(p - pStr); - break; - case '(' : - if ( !nInSection && nPar == STRING_NOTFOUND ) - nPar = (xub_StrLen)(p - pStr); - break; - case '0' : - case '#' : - if ( !nInSection && nNum == STRING_NOTFOUND ) - nNum = (xub_StrLen)(p - pStr); - break; - case '[' : - nInSection++; - break; - case ']' : - if ( nInSection ) - { - nInSection--; - if ( !nInSection && nBlank == STRING_NOTFOUND - && nSym != STRING_NOTFOUND && p < pStop-1 && *(p+1) == ' ' ) - nBlank = (xub_StrLen)(p - pStr + 1); - } - break; - case '$' : - if ( nSym == STRING_NOTFOUND && nInSection && *(p-1) == '[' ) - { - nSym = (xub_StrLen)(p - pStr + 1); - if ( nNum != STRING_NOTFOUND && *(p-2) == ' ' ) - nBlank = (xub_StrLen)(p - pStr - 2); - } - break; - case ';' : - if ( !nInSection ) - p = pStop; - break; - default: - if ( !nInSection && nSym == STRING_NOTFOUND && rCode.Equals( aCurrSymbol, (xub_StrLen)(p-pStr), aCurrSymbol.Len() ) ) - { // currency symbol not surrounded by [$...] - nSym = (xub_StrLen)(p - pStr); - if ( nBlank == STRING_NOTFOUND && pStr < p && *(p-1) == ' ' ) - nBlank = (xub_StrLen)(p - pStr - 1); - p += aCurrSymbol.Len() - 1; - if ( nBlank == STRING_NOTFOUND && p < pStop-2 && *(p+2) == ' ' ) - nBlank = (xub_StrLen)(p - pStr + 2); - } - } - } - p++; - } -} - - -void LocaleDataWrapper::getCurrFormatsImpl() -{ - NumberFormatCodeWrapper aNumberFormatCode( xSMgr, getLocale() ); - uno::Sequence< NumberFormatCode > aFormatSeq - = aNumberFormatCode.getAllFormatCode( KNumberFormatUsage::CURRENCY ); - sal_Int32 nCnt = aFormatSeq.getLength(); - if ( !nCnt ) - { // bad luck - if (areChecksEnabled()) - { - rtl::OUString aMsg( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::getCurrFormatsImpl: no currency formats")); - outputCheckMessage( appendLocaleInfo( aMsg ) ); - } - nCurrPositiveFormat = nCurrNegativeFormat = nCurrFormatDefault; - return ; - } - // find a negative code (medium preferred) and a default (medium preferred) (not necessarily the same) - NumberFormatCode const * const pFormatArr = aFormatSeq.getArray(); - sal_Int32 nElem, nDef, nNeg, nMedium; - nDef = nNeg = nMedium = -1; - for ( nElem = 0; nElem < nCnt; nElem++ ) - { - if ( pFormatArr[nElem].Type == KNumberFormatType::MEDIUM ) - { - if ( pFormatArr[nElem].Default ) - { - nDef = nElem; - nMedium = nElem; - if ( pFormatArr[nElem].Code.indexOf( ';' ) >= 0 ) - nNeg = nElem; - } - else - { - if ( (nNeg == -1 || nMedium == -1) && pFormatArr[nElem].Code.indexOf( ';' ) >= 0 ) - nNeg = nElem; - if ( nMedium == -1 ) - nMedium = nElem; - } - } - else - { - if ( nDef == -1 && pFormatArr[nElem].Default ) - nDef = nElem; - if ( nNeg == -1 && pFormatArr[nElem].Code.indexOf( ';' ) >= 0 ) - nNeg = nElem; - } - } - - // make sure it's loaded - getCurrSymbol(); - - xub_StrLen nSign, nPar, nNum, nBlank, nSym; - - // positive format - nElem = (nDef >= 0 ? nDef : (nNeg >= 0 ? nNeg : 0)); - scanCurrFormatImpl( pFormatArr[nElem].Code, 0, nSign, nPar, nNum, nBlank, nSym ); - if (areChecksEnabled() && (nNum == STRING_NOTFOUND || nSym == STRING_NOTFOUND)) - { - rtl::OUString aMsg( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::getCurrFormatsImpl: CurrPositiveFormat?")); - outputCheckMessage( appendLocaleInfo( aMsg ) ); - } - if ( nBlank == STRING_NOTFOUND ) - { - if ( nSym < nNum ) - nCurrPositiveFormat = 0; // $1 - else - nCurrPositiveFormat = 1; // 1$ - } - else - { - if ( nSym < nNum ) - nCurrPositiveFormat = 2; // $ 1 - else - nCurrPositiveFormat = 3; // 1 $ - } - - // negative format - if ( nNeg < 0 ) - nCurrNegativeFormat = nCurrFormatDefault; - else - { - const ::rtl::OUString& rCode = pFormatArr[nNeg].Code; - xub_StrLen nDelim = (xub_StrLen)rCode.indexOf( ';' ); - scanCurrFormatImpl( rCode, nDelim+1, nSign, nPar, nNum, nBlank, nSym ); - if (areChecksEnabled() && (nNum == STRING_NOTFOUND || - nSym == STRING_NOTFOUND || (nPar == STRING_NOTFOUND && - nSign == STRING_NOTFOUND))) - { - rtl::OUString aMsg( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::getCurrFormatsImpl: CurrNegativeFormat?")); - outputCheckMessage( appendLocaleInfo( aMsg ) ); - } - if ( nBlank == STRING_NOTFOUND ) - { - if ( nSym < nNum ) - { - if ( nPar < nSym ) - nCurrNegativeFormat = 0; // ($1) - else if ( nSign < nSym ) - nCurrNegativeFormat = 1; // -$1 - else if ( nNum < nSign ) - nCurrNegativeFormat = 3; // $1- - else - nCurrNegativeFormat = 2; // $-1 - } - else - { - if ( nPar < nNum ) - nCurrNegativeFormat = 4; // (1$) - else if ( nSign < nNum ) - nCurrNegativeFormat = 5; // -1$ - else if ( nSym < nSign ) - nCurrNegativeFormat = 7; // 1$- - else - nCurrNegativeFormat = 6; // 1-$ - } - } - else - { - if ( nSym < nNum ) - { - if ( nPar < nSym ) - nCurrNegativeFormat = 14; // ($ 1) - else if ( nSign < nSym ) - nCurrNegativeFormat = 9; // -$ 1 - else if ( nNum < nSign ) - nCurrNegativeFormat = 12; // $ 1- - else - nCurrNegativeFormat = 11; // $ -1 - } - else - { - if ( nPar < nNum ) - nCurrNegativeFormat = 15; // (1 $) - else if ( nSign < nNum ) - nCurrNegativeFormat = 8; // -1 $ - else if ( nSym < nSign ) - nCurrNegativeFormat = 10; // 1 $- - else - nCurrNegativeFormat = 13; // 1- $ - } - } - } -} - - -// --- date ----------------------------------------------------------- - -DateFormat LocaleDataWrapper::getDateFormat() const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if ( nDateFormat == nDateFormatInvalid ) - { - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getDateFormatsImpl(); - } - return (DateFormat) nDateFormat; -} - - -DateFormat LocaleDataWrapper::getLongDateFormat() const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if ( nLongDateFormat == nDateFormatInvalid ) - { - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getDateFormatsImpl(); - } - return (DateFormat) nLongDateFormat; -} - - -DateFormat LocaleDataWrapper::scanDateFormatImpl( const String& rCode ) -{ - // Only some european versions were translated, the ones with different - // keyword combinations are: - // English DMY, German TMJ, Spanish DMA, French JMA, Italian GMA, - // Dutch DMJ, Finnish PKV - - // default is English keywords for every other language - xub_StrLen nDay = rCode.Search( 'D' ); - xub_StrLen nMonth = rCode.Search( 'M' ); - xub_StrLen nYear = rCode.Search( 'Y' ); - if ( nDay == STRING_NOTFOUND || nMonth == STRING_NOTFOUND || nYear == STRING_NOTFOUND ) - { // This algorithm assumes that all three parts (DMY) are present - if ( nMonth == STRING_NOTFOUND ) - { // only Finnish has something else than 'M' for month - nMonth = rCode.Search( 'K' ); - if ( nMonth != STRING_NOTFOUND ) - { - nDay = rCode.Search( 'P' ); - nYear = rCode.Search( 'V' ); - } - } - else if ( nDay == STRING_NOTFOUND ) - { // We have a month 'M' if we reach this branch. - // Possible languages containing 'M' but no 'D': - // German, French, Italian - nDay = rCode.Search( 'T' ); // German - if ( nDay != STRING_NOTFOUND ) - nYear = rCode.Search( 'J' ); - else - { - nYear = rCode.Search( 'A' ); // French, Italian - if ( nYear != STRING_NOTFOUND ) - { - nDay = rCode.Search( 'J' ); // French - if ( nDay == STRING_NOTFOUND ) - nDay = rCode.Search( 'G' ); // Italian - } - } - } - else - { // We have a month 'M' and a day 'D'. - // Possible languages containing 'D' and 'M' but not 'Y': - // Spanish, Dutch - nYear = rCode.Search( 'A' ); // Spanish - if ( nYear == STRING_NOTFOUND ) - nYear = rCode.Search( 'J' ); // Dutch - } - if ( nDay == STRING_NOTFOUND || nMonth == STRING_NOTFOUND || nYear == STRING_NOTFOUND ) - { - if (areChecksEnabled()) - { - rtl::OUString aMsg( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::scanDateFormat: not all DMY present")); - outputCheckMessage( appendLocaleInfo( aMsg ) ); - } - if ( nDay == STRING_NOTFOUND ) - nDay = rCode.Len(); - if ( nMonth == STRING_NOTFOUND ) - nMonth = rCode.Len(); - if ( nYear == STRING_NOTFOUND ) - nYear = rCode.Len(); - } - } - // compare with <= because each position may equal rCode.Len() - if ( nDay <= nMonth && nMonth <= nYear ) - return DMY; // also if every position equals rCode.Len() - else if ( nMonth <= nDay && nDay <= nYear ) - return MDY; - else if ( nYear <= nMonth && nMonth <= nDay ) - return YMD; - else - { - if (areChecksEnabled()) - { - rtl::OUString aMsg( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::scanDateFormat: no magic applyable")); - outputCheckMessage( appendLocaleInfo( aMsg ) ); - } - return DMY; - } -} - - -void LocaleDataWrapper::getDateFormatsImpl() -{ - NumberFormatCodeWrapper aNumberFormatCode( xSMgr, getLocale() ); - uno::Sequence< NumberFormatCode > aFormatSeq - = aNumberFormatCode.getAllFormatCode( KNumberFormatUsage::DATE ); - sal_Int32 nCnt = aFormatSeq.getLength(); - if ( !nCnt ) - { // bad luck - if (areChecksEnabled()) - { - rtl::OUString aMsg( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::getDateFormatsImpl: no date formats")); - outputCheckMessage( appendLocaleInfo( aMsg ) ); - } - nDateFormat = nLongDateFormat = DMY; - return ; - } - // find the edit (21), a default (medium preferred), - // a medium (default preferred), and a long (default preferred) - NumberFormatCode const * const pFormatArr = aFormatSeq.getArray(); - sal_Int32 nElem, nEdit, nDef, nMedium, nLong; - nEdit = nDef = nMedium = nLong = -1; - for ( nElem = 0; nElem < nCnt; nElem++ ) - { - if ( nEdit == -1 && pFormatArr[nElem].Index == NumberFormatIndex::DATE_SYS_DDMMYYYY ) - nEdit = nElem; - if ( nDef == -1 && pFormatArr[nElem].Default ) - nDef = nElem; - switch ( pFormatArr[nElem].Type ) - { - case KNumberFormatType::MEDIUM : - { - if ( pFormatArr[nElem].Default ) - { - nDef = nElem; - nMedium = nElem; - } - else if ( nMedium == -1 ) - nMedium = nElem; - } - break; - case KNumberFormatType::LONG : - { - if ( pFormatArr[nElem].Default ) - nLong = nElem; - else if ( nLong == -1 ) - nLong = nElem; - } - break; - } - } - if ( nEdit == -1 ) - { - if (areChecksEnabled()) - { - rtl::OUString aMsg( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::getDateFormatsImpl: no edit")); - outputCheckMessage( appendLocaleInfo( aMsg ) ); - } - if ( nDef == -1 ) - { - if (areChecksEnabled()) - { - rtl::OUString aMsg( RTL_CONSTASCII_USTRINGPARAM( - "LocaleDataWrapper::getDateFormatsImpl: no default")); - outputCheckMessage( appendLocaleInfo( aMsg ) ); - } - if ( nMedium != -1 ) - nDef = nMedium; - else if ( nLong != -1 ) - nDef = nLong; - else - nDef = 0; - } - nEdit = nDef; - } - DateFormat nDF = scanDateFormatImpl( pFormatArr[nEdit].Code ); - if ( pFormatArr[nEdit].Type == KNumberFormatType::LONG ) - { // normally this is not the case - nLongDateFormat = nDateFormat = nDF; - } - else - { - nDateFormat = nDF; - if ( nLong == -1 ) - nLongDateFormat = nDF; - else - nLongDateFormat = scanDateFormatImpl( pFormatArr[nLong].Code ); - } -} - - -// --- digit grouping ------------------------------------------------- - -void LocaleDataWrapper::getDigitGroupingImpl() -{ - /* TODO: This is a very simplified grouping setup that only serves its - * current purpose for Indian locales. A free-form flexible one would - * obtain grouping from locale data where it could be specified using, for - * example, codes like #,### and #,##,### that would generate the integer - * sequence. Needed additional API and a locale data element. - */ - - if (!aGrouping.getLength()) - { - aGrouping.realloc(3); // room for {3,2,0} - aGrouping[0] = 0; // invalidate - } - if (!aGrouping[0]) - { - i18n::LanguageCountryInfo aLCInfo( getLanguageCountryInfo()); - if (aLCInfo.Country.equalsIgnoreAsciiCaseAscii( "IN") || // India - aLCInfo.Country.equalsIgnoreAsciiCaseAscii( "BT")) // Bhutan - { - aGrouping[0] = 3; - aGrouping[1] = 2; - aGrouping[2] = 0; - } - else - { - aGrouping[0] = 3; - aGrouping[1] = 0; - } - } -} - - -const ::com::sun::star::uno::Sequence< sal_Int32 > LocaleDataWrapper::getDigitGrouping() const -{ - ::utl::ReadWriteGuard aGuard( aMutex ); - if (!aGrouping.getLength() || aGrouping[0] == 0) - { // no cached content - aGuard.changeReadToWrite(); - ((LocaleDataWrapper*)this)->getDigitGroupingImpl(); - } - return aGrouping; -} - - -// --- simple number formatting helpers ------------------------------- - -// The ImplAdd... methods are taken from class International and modified to -// suit the needs. - -static sal_Unicode* ImplAddUNum( sal_Unicode* pBuf, sal_uInt64 nNumber ) -{ - // fill temp buffer with digits - sal_Unicode aTempBuf[64]; - sal_Unicode* pTempBuf = aTempBuf; - do - { - *pTempBuf = (sal_Unicode)(nNumber % 10) + '0'; - pTempBuf++; - nNumber /= 10; - } - while ( nNumber ); - - // copy temp buffer to buffer passed - do - { - pTempBuf--; - *pBuf = *pTempBuf; - pBuf++; - } - while ( pTempBuf != aTempBuf ); - - return pBuf; -} - - -static sal_Unicode* ImplAddUNum( sal_Unicode* pBuf, sal_uInt64 nNumber, int nMinLen ) -{ - // fill temp buffer with digits - sal_Unicode aTempBuf[64]; - sal_Unicode* pTempBuf = aTempBuf; - do - { - *pTempBuf = (sal_Unicode)(nNumber % 10) + '0'; - pTempBuf++; - nNumber /= 10; - nMinLen--; - } - while ( nNumber ); - - // fill with zeros up to the minimal length - while ( nMinLen > 0 ) - { - *pBuf = '0'; - pBuf++; - nMinLen--; - } - - // copy temp buffer to real buffer - do - { - pTempBuf--; - *pBuf = *pTempBuf; - pBuf++; - } - while ( pTempBuf != aTempBuf ); - - return pBuf; -} - - -static sal_Unicode* ImplAdd2UNum( sal_Unicode* pBuf, sal_uInt16 nNumber, int bLeading ) -{ - DBG_ASSERT( nNumber < 100, "ImplAdd2UNum() - Number >= 100" ); - - if ( nNumber < 10 ) - { - if ( bLeading ) - { - *pBuf = '0'; - pBuf++; - } - *pBuf = nNumber + '0'; - } - else - { - sal_uInt16 nTemp = nNumber % 10; - nNumber /= 10; - *pBuf = nNumber + '0'; - pBuf++; - *pBuf = nTemp + '0'; - } - - pBuf++; - return pBuf; -} - - -inline sal_Unicode* ImplAddString( sal_Unicode* pBuf, const String& rStr ) -{ - if ( rStr.Len() == 1 ) - *pBuf++ = rStr.GetChar(0); - else if ( rStr.Len() == 0 ) - ; - else - { - memcpy( pBuf, rStr.GetBuffer(), rStr.Len() * sizeof(sal_Unicode) ); - pBuf += rStr.Len(); - } - return pBuf; -} - - -inline sal_Unicode* ImplAddString( sal_Unicode* pBuf, sal_Unicode c ) -{ - *pBuf = c; - pBuf++; - return pBuf; -} - - -inline sal_Unicode* ImplAddString( sal_Unicode* pBuf, const sal_Unicode* pCopyBuf, xub_StrLen nLen ) -{ - memcpy( pBuf, pCopyBuf, nLen * sizeof(sal_Unicode) ); - return pBuf + nLen; -} - - -sal_Unicode* LocaleDataWrapper::ImplAddFormatNum( sal_Unicode* pBuf, - sal_Int64 nNumber, sal_uInt16 nDecimals, sal_Bool bUseThousandSep, - sal_Bool bTrailingZeros ) const -{ - sal_Unicode aNumBuf[64]; - sal_Unicode* pNumBuf; - sal_uInt16 nNumLen; - sal_uInt16 i = 0; - - // negative number - if ( nNumber < 0 ) - { - nNumber *= -1; - *pBuf = '-'; - pBuf++; - } - - // convert number - pNumBuf = ImplAddUNum( aNumBuf, (sal_uInt64)nNumber ); - nNumLen = (sal_uInt16)(sal_uLong)(pNumBuf-aNumBuf); - pNumBuf = aNumBuf; - - if ( nNumLen <= nDecimals ) - { - // strip .0 in decimals? - if ( !nNumber && !bTrailingZeros ) - { - *pBuf = '0'; - pBuf++; - } - else - { - // LeadingZero, insert 0 - if ( isNumLeadingZero() ) - { - *pBuf = '0'; - pBuf++; - } - - // append decimal separator - pBuf = ImplAddString( pBuf, getNumDecimalSep() ); - - // fill with zeros - while ( i < (nDecimals-nNumLen) ) - { - *pBuf = '0'; - pBuf++; - i++; - } - - // append decimals - while ( nNumLen ) - { - *pBuf = *pNumBuf; - pBuf++; - pNumBuf++; - nNumLen--; - } - } - } - else - { - const String& rThoSep = getNumThousandSep(); - - // copy number to buffer (excluding decimals) - sal_uInt16 nNumLen2 = nNumLen-nDecimals; - uno::Sequence< sal_Bool > aGroupPos; - if (bUseThousandSep) - aGroupPos = utl::DigitGroupingIterator::createForwardSequence( - nNumLen2, getDigitGrouping()); - for ( ; i < nNumLen2; ++i ) - { - *pBuf = *pNumBuf; - pBuf++; - pNumBuf++; - - // add thousand separator? - if ( bUseThousandSep && aGroupPos[i] ) - pBuf = ImplAddString( pBuf, rThoSep ); - } - - // append decimals - if ( nDecimals ) - { - pBuf = ImplAddString( pBuf, getNumDecimalSep() ); - - sal_Bool bNullEnd = sal_True; - while ( i < nNumLen ) - { - if ( *pNumBuf != '0' ) - bNullEnd = sal_False; - - *pBuf = *pNumBuf; - pBuf++; - pNumBuf++; - i++; - } - - // strip .0 in decimals? - if ( bNullEnd && !bTrailingZeros ) - pBuf -= nDecimals+1; - } - } - - return pBuf; -} - - -// --- simple date and time formatting -------------------------------- - -String LocaleDataWrapper::getDate( const Date& rDate ) const -{ - ::utl::ReadWriteGuard aGuard( aMutex, ::utl::ReadWriteGuardMode::nBlockCritical ); -//!TODO: leading zeros et al - sal_Unicode aBuf[128]; - sal_Unicode* pBuf = aBuf; - sal_uInt16 nDay = rDate.GetDay(); - sal_uInt16 nMonth = rDate.GetMonth(); - sal_uInt16 nYear = rDate.GetYear(); - sal_uInt16 nYearLen; - - if ( sal_True /* IsDateCentury() */ ) - nYearLen = 4; - else - { - nYearLen = 2; - nYear %= 100; - } - - switch ( getDateFormat() ) - { - case DMY : - pBuf = ImplAdd2UNum( pBuf, nDay, sal_True /* IsDateDayLeadingZero() */ ); - pBuf = ImplAddString( pBuf, getDateSep() ); - pBuf = ImplAdd2UNum( pBuf, nMonth, sal_True /* IsDateMonthLeadingZero() */ ); - pBuf = ImplAddString( pBuf, getDateSep() ); - pBuf = ImplAddUNum( pBuf, nYear, nYearLen ); - break; - case MDY : - pBuf = ImplAdd2UNum( pBuf, nMonth, sal_True /* IsDateMonthLeadingZero() */ ); - pBuf = ImplAddString( pBuf, getDateSep() ); - pBuf = ImplAdd2UNum( pBuf, nDay, sal_True /* IsDateDayLeadingZero() */ ); - pBuf = ImplAddString( pBuf, getDateSep() ); - pBuf = ImplAddUNum( pBuf, nYear, nYearLen ); - break; - default: - pBuf = ImplAddUNum( pBuf, nYear, nYearLen ); - pBuf = ImplAddString( pBuf, getDateSep() ); - pBuf = ImplAdd2UNum( pBuf, nMonth, sal_True /* IsDateMonthLeadingZero() */ ); - pBuf = ImplAddString( pBuf, getDateSep() ); - pBuf = ImplAdd2UNum( pBuf, nDay, sal_True /* IsDateDayLeadingZero() */ ); - } - - return String( aBuf, (xub_StrLen)(sal_uLong)(pBuf-aBuf) ); -} - - -String LocaleDataWrapper::getTime( const Time& rTime, sal_Bool bSec, sal_Bool b100Sec ) const -{ - ::utl::ReadWriteGuard aGuard( aMutex, ::utl::ReadWriteGuardMode::nBlockCritical ); -//!TODO: leading zeros et al - sal_Unicode aBuf[128]; - sal_Unicode* pBuf = aBuf; - sal_uInt16 nHour = rTime.GetHour(); - sal_Bool bHour12 = sal_False; //!TODO: AM/PM from default time format code - - if ( bHour12 ) - { - nHour %= 12; - // 0:00 -> 12:00 - if ( !nHour ) - nHour = 12; - } - else - nHour %= 24; - - pBuf = ImplAdd2UNum( pBuf, nHour, sal_True /* IsTimeLeadingZero() */ ); - pBuf = ImplAddString( pBuf, getTimeSep() ); - pBuf = ImplAdd2UNum( pBuf, rTime.GetMin(), sal_True ); - if ( bSec ) - { - pBuf = ImplAddString( pBuf, getTimeSep() ); - pBuf = ImplAdd2UNum( pBuf, rTime.GetSec(), sal_True ); - - if ( b100Sec ) - { - pBuf = ImplAddString( pBuf, getTime100SecSep() ); - pBuf = ImplAdd2UNum( pBuf, rTime.Get100Sec(), sal_True ); - } - } - - String aStr( aBuf, (xub_StrLen)(sal_uLong)(pBuf-aBuf) ); - - if ( bHour12 ) - { - if ( (rTime.GetHour() % 24) >= 12 ) - aStr += getTimePM(); - else - aStr += getTimeAM(); - } - - return aStr; -} - - -String LocaleDataWrapper::getLongDate( const Date& rDate, CalendarWrapper& rCal, - sal_Int16 nDisplayDayOfWeek, sal_Bool bDayOfMonthWithLeadingZero, - sal_Int16 nDisplayMonth, sal_Bool bTwoDigitYear ) const -{ - ::utl::ReadWriteGuard aGuard( aMutex, ::utl::ReadWriteGuardMode::nBlockCritical ); - using namespace ::com::sun::star::i18n; - sal_Unicode aBuf[20]; - sal_Unicode* pBuf; - String aStr; - sal_Int16 nVal; - rCal.setGregorianDateTime( rDate ); - // day of week - nVal = rCal.getValue( CalendarFieldIndex::DAY_OF_WEEK ); - aStr += rCal.getDisplayName( CalendarDisplayIndex::DAY, nVal, nDisplayDayOfWeek ); - aStr += getLongDateDayOfWeekSep(); - // day of month - nVal = rCal.getValue( CalendarFieldIndex::DAY_OF_MONTH ); - pBuf = ImplAdd2UNum( aBuf, nVal, bDayOfMonthWithLeadingZero ); - String aDay( aBuf, (xub_StrLen)(sal_uLong)(pBuf-aBuf) ); - // month of year - nVal = rCal.getValue( CalendarFieldIndex::MONTH ); - String aMonth( rCal.getDisplayName( CalendarDisplayIndex::MONTH, nVal, nDisplayMonth ) ); - // year - nVal = rCal.getValue( CalendarFieldIndex::YEAR ); - if ( bTwoDigitYear ) - pBuf = ImplAddUNum( aBuf, nVal % 100, 2 ); - else - pBuf = ImplAddUNum( aBuf, nVal ); - String aYear( aBuf, (xub_StrLen)(sal_uLong)(pBuf-aBuf) ); - // concatenate - switch ( getLongDateFormat() ) - { - case DMY : - aStr += aDay; - aStr += getLongDateDaySep(); - aStr += aMonth; - aStr += getLongDateMonthSep(); - aStr += aYear; - break; - case MDY : - aStr += aMonth; - aStr += getLongDateMonthSep(); - aStr += aDay; - aStr += getLongDateDaySep(); - aStr += aYear; - break; - default: // YMD - aStr += aYear; - aStr += getLongDateYearSep(); - aStr += aMonth; - aStr += getLongDateMonthSep(); - aStr += aDay; - } - return aStr; -} - - -String LocaleDataWrapper::getDuration( const Time& rTime, sal_Bool bSec, sal_Bool b100Sec ) const -{ - ::utl::ReadWriteGuard aGuard( aMutex, ::utl::ReadWriteGuardMode::nBlockCritical ); - sal_Unicode aBuf[128]; - sal_Unicode* pBuf = aBuf; - - if ( rTime < Time( 0 ) ) - pBuf = ImplAddString( pBuf, ' ' ); - - if ( sal_True /* IsTimeLeadingZero() */ ) - pBuf = ImplAddUNum( pBuf, rTime.GetHour(), 2 ); - else - pBuf = ImplAddUNum( pBuf, rTime.GetHour() ); - pBuf = ImplAddString( pBuf, getTimeSep() ); - pBuf = ImplAdd2UNum( pBuf, rTime.GetMin(), sal_True ); - if ( bSec ) - { - pBuf = ImplAddString( pBuf, getTimeSep() ); - pBuf = ImplAdd2UNum( pBuf, rTime.GetSec(), sal_True ); - - if ( b100Sec ) - { - pBuf = ImplAddString( pBuf, getTime100SecSep() ); - pBuf = ImplAdd2UNum( pBuf, rTime.Get100Sec(), sal_True ); - } - } - - return String( aBuf, (xub_StrLen)(sal_uLong)(pBuf-aBuf) ); -} - - -// --- simple number formatting --------------------------------------- - -inline size_t ImplGetNumberStringLengthGuess( const LocaleDataWrapper& rLoc, sal_uInt16 nDecimals ) -{ - // approximately 3.2 bits per digit - const size_t nDig = ((sizeof(sal_Int64) * 8) / 3) + 1; - // digits, separators (pessimized for insane "every digit may be grouped"), leading zero, sign - size_t nGuess = ((nDecimals < nDig) ? - (((nDig - nDecimals) * rLoc.getNumThousandSep().Len()) + nDig) : - nDecimals) + rLoc.getNumDecimalSep().Len() + 3; - return nGuess; -} - - -String LocaleDataWrapper::getNum( sal_Int64 nNumber, sal_uInt16 nDecimals, - sal_Bool bUseThousandSep, sal_Bool bTrailingZeros ) const -{ - ::utl::ReadWriteGuard aGuard( aMutex, ::utl::ReadWriteGuardMode::nBlockCritical ); - sal_Unicode aBuf[128]; // big enough for 64-bit long and crazy grouping - // check if digits and separators will fit into fixed buffer or allocate - size_t nGuess = ImplGetNumberStringLengthGuess( *this, nDecimals ); - sal_Unicode* const pBuffer = (nGuess < 118 ? aBuf : - new sal_Unicode[nGuess + 16]); - - sal_Unicode* pBuf = ImplAddFormatNum( pBuffer, nNumber, nDecimals, - bUseThousandSep, bTrailingZeros ); - String aStr( pBuffer, (xub_StrLen)(sal_uLong)(pBuf-pBuffer) ); - - if ( pBuffer != aBuf ) - delete [] pBuffer; - return aStr; -} - - -String LocaleDataWrapper::getCurr( sal_Int64 nNumber, sal_uInt16 nDecimals, - const String& rCurrencySymbol, sal_Bool bUseThousandSep ) const -{ - ::utl::ReadWriteGuard aGuard( aMutex, ::utl::ReadWriteGuardMode::nBlockCritical ); - sal_Unicode aBuf[192]; - sal_Unicode aNumBuf[128]; // big enough for 64-bit long and crazy grouping - sal_Unicode cZeroChar = getCurrZeroChar(); - - // check if digits and separators will fit into fixed buffer or allocate - size_t nGuess = ImplGetNumberStringLengthGuess( *this, nDecimals ); - sal_Unicode* const pNumBuffer = (nGuess < 118 ? aNumBuf : - new sal_Unicode[nGuess + 16]); - - sal_Unicode* const pBuffer = - ((size_t(rCurrencySymbol.Len()) + nGuess + 20) < SAL_N_ELEMENTS(aBuf) ? aBuf : - new sal_Unicode[ rCurrencySymbol.Len() + nGuess + 20 ]); - sal_Unicode* pBuf = pBuffer; - - sal_Bool bNeg; - if ( nNumber < 0 ) - { - bNeg = sal_True; - nNumber *= -1; - } - else - bNeg = sal_False; - - // convert number - sal_Unicode* pEndNumBuf = ImplAddFormatNum( pNumBuffer, nNumber, nDecimals, - bUseThousandSep, sal_True ); - xub_StrLen nNumLen = (xub_StrLen)(sal_uLong)(pEndNumBuf-pNumBuffer); - - // replace zeros with zero character - if ( (cZeroChar != '0') && nDecimals /* && IsNumTrailingZeros() */ ) - { - sal_Unicode* pTempBuf; - sal_uInt16 i; - sal_Bool bZero = sal_True; - - pTempBuf = pNumBuffer+nNumLen-nDecimals; - i = 0; - do - { - if ( *pTempBuf != '0' ) - { - bZero = sal_False; - break; - } - - pTempBuf++; - i++; - } - while ( i < nDecimals ); - - if ( bZero ) - { - pTempBuf = pNumBuffer+nNumLen-nDecimals; - i = 0; - do - { - *pTempBuf = cZeroChar; - pTempBuf++; - i++; - } - while ( i < nDecimals ); - } - } - - if ( !bNeg ) - { - switch( getCurrPositiveFormat() ) - { - case 0: - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - break; - case 1: - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - break; - case 2: - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, ' ' ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - break; - case 3: - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, ' ' ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - break; - } - } - else - { - switch( getCurrNegativeFormat() ) - { - case 0: - pBuf = ImplAddString( pBuf, '(' ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, ')' ); - break; - case 1: - pBuf = ImplAddString( pBuf, '-' ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - break; - case 2: - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, '-' ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - break; - case 3: - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, '-' ); - break; - case 4: - pBuf = ImplAddString( pBuf, '(' ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, ')' ); - break; - case 5: - pBuf = ImplAddString( pBuf, '-' ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - break; - case 6: - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, '-' ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - break; - case 7: - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, '-' ); - break; - case 8: - pBuf = ImplAddString( pBuf, '-' ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, ' ' ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - break; - case 9: - pBuf = ImplAddString( pBuf, '-' ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, ' ' ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - break; - case 10: - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, ' ' ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, '-' ); - break; - case 11: - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, ' ' ); - pBuf = ImplAddString( pBuf, '-' ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - break; - case 12: - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, ' ' ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, '-' ); - break; - case 13: - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, '-' ); - pBuf = ImplAddString( pBuf, ' ' ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - break; - case 14: - pBuf = ImplAddString( pBuf, '(' ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, ' ' ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, ')' ); - break; - case 15: - pBuf = ImplAddString( pBuf, '(' ); - pBuf = ImplAddString( pBuf, pNumBuffer, nNumLen ); - pBuf = ImplAddString( pBuf, ' ' ); - pBuf = ImplAddString( pBuf, rCurrencySymbol ); - pBuf = ImplAddString( pBuf, ')' ); - break; - } - } - - String aNumber( pBuffer, (xub_StrLen)(sal_uLong)(pBuf-pBuffer) ); - - if ( pBuffer != aBuf ) - delete [] pBuffer; - if ( pNumBuffer != aNumBuf ) - delete [] pNumBuffer; - - return aNumber; -} - - -// --- mixed ---------------------------------------------------------- - -::com::sun::star::lang::Locale LocaleDataWrapper::getLoadedLocale() const -{ - LanguageCountryInfo aLCInfo = getLanguageCountryInfo(); - return lang::Locale( aLCInfo.Language, aLCInfo.Country, aLCInfo.Variant ); -} - - -rtl::OUString LocaleDataWrapper::appendLocaleInfo(const rtl::OUString& rDebugMsg) const -{ - ::utl::ReadWriteGuard aGuard( aMutex, ::utl::ReadWriteGuardMode::nBlockCritical ); - rtl::OUStringBuffer aDebugMsg(rDebugMsg); - aDebugMsg.append(static_cast<sal_Unicode>('\n')); - aDebugMsg.append(aLocale.Language); - aDebugMsg.append(static_cast<sal_Unicode>('_')); - aDebugMsg.append(aLocale.Country); - aDebugMsg.appendAscii(RTL_CONSTASCII_STRINGPARAM(" requested\n")); - lang::Locale aLoaded = getLoadedLocale(); - aDebugMsg.append(aLoaded.Language); - aDebugMsg.append(static_cast<sal_Unicode>('_')); - aDebugMsg.append(aLoaded.Country); - aDebugMsg.appendAscii(RTL_CONSTASCII_STRINGPARAM(" loaded")); - return aDebugMsg.makeStringAndClear(); -} - - -// static -void LocaleDataWrapper::outputCheckMessage( const String& rMsg ) -{ - outputCheckMessage( ByteString( rMsg, RTL_TEXTENCODING_UTF8).GetBuffer()); -} - - -// static -void LocaleDataWrapper::outputCheckMessage( const char* pStr ) -{ - fprintf( stderr, "\n%s\n", pStr); - fflush( stderr); - OSL_TRACE("%s", pStr); -} - - -// static -void LocaleDataWrapper::evaluateLocaleDataChecking() -{ - // Using the rtl_Instance template here wouldn't solve all threaded write - // accesses, since we want to assign the result to the static member - // variable and would need to dereference the pointer returned and assign - // the value unguarded. This is the same pattern manually coded. - sal_uInt8 nCheck = nLocaleDataChecking; - if (!nCheck) - { - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex()); - nCheck = nLocaleDataChecking; - if (!nCheck) - { -#ifdef DBG_UTIL - nCheck = 1; -#else - const char* pEnv = getenv( "OOO_ENABLE_LOCALE_DATA_CHECKS"); - if (pEnv && (pEnv[0] == 'Y' || pEnv[0] == 'y' || pEnv[0] == '1')) - nCheck = 1; - else - nCheck = 2; -#endif - OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER(); - nLocaleDataChecking = nCheck; - } - } - else { - OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER(); - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/nativenumberwrapper.cxx b/unotools/source/i18n/nativenumberwrapper.cxx deleted file mode 100644 index 152128c552..0000000000 --- a/unotools/source/i18n/nativenumberwrapper.cxx +++ /dev/null @@ -1,170 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/nativenumberwrapper.hxx> -#include <tools/debug.hxx> - -#include <comphelper/componentfactory.hxx> -#include <com/sun/star/uno/XInterface.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> - -#define LOCALEDATA_LIBRARYNAME "i18npool" -#define LOCALEDATA_SERVICENAME "com.sun.star.i18n.NativeNumberSupplier" - -using namespace ::com::sun::star; - - -NativeNumberWrapper::NativeNumberWrapper( - const uno::Reference< lang::XMultiServiceFactory > & xSF - ) - : - xSMgr( xSF ) -{ - if ( xSMgr.is() ) - { - try - { - xNNS = uno::Reference< i18n::XNativeNumberSupplier > ( xSMgr->createInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LOCALEDATA_SERVICENAME ) ) ), - uno::UNO_QUERY ); - } - catch ( uno::Exception& e ) - { - (void)e; - DBG_ERRORFILE( "NativeNumberWrapper ctor: Exception caught!" ); - } - } - else - { // try to get an instance somehow - DBG_ERRORFILE( "NativeNumberWrapper: no service manager, trying own" ); - try - { - uno::Reference< uno::XInterface > xI = ::comphelper::getComponentInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LLCF_LIBNAME( LOCALEDATA_LIBRARYNAME ) ) ), - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LOCALEDATA_SERVICENAME ) ) ); - if ( xI.is() ) - { - uno::Any x = xI->queryInterface( ::getCppuType((const uno::Reference< i18n::XNativeNumberSupplier >*)0) ); - x >>= xNNS; - } - } - catch ( uno::Exception& e ) - { - (void)e; - DBG_ERRORFILE( "getComponentInstance: Exception caught!" ); - } - } - DBG_ASSERT( xNNS.is(), "NativeNumberWrapper: no NativeNumberSupplier" ); -} - - -NativeNumberWrapper::~NativeNumberWrapper() -{ -} - - -::rtl::OUString -NativeNumberWrapper::getNativeNumberString( - const ::rtl::OUString& rNumberString, - const ::com::sun::star::lang::Locale& rLocale, - sal_Int16 nNativeNumberMode ) const -{ - try - { - if ( xNNS.is() ) - return xNNS->getNativeNumberString( rNumberString, rLocale, nNativeNumberMode ); - } - catch ( uno::Exception& e ) - { - (void)e; - DBG_ERRORFILE( "getNativeNumberString: Exception caught!" ); - } - return ::rtl::OUString(); -} - - -sal_Bool -NativeNumberWrapper::isValidNatNum( - const ::com::sun::star::lang::Locale& rLocale, - sal_Int16 nNativeNumberMode ) const -{ - try - { - if ( xNNS.is() ) - return xNNS->isValidNatNum( rLocale, nNativeNumberMode ); - } - catch ( uno::Exception& e ) - { - (void)e; - DBG_ERRORFILE( "isValidNatNum: Exception caught!" ); - } - return sal_False; -} - - -i18n::NativeNumberXmlAttributes -NativeNumberWrapper::convertToXmlAttributes( - const ::com::sun::star::lang::Locale& rLocale, - sal_Int16 nNativeNumberMode ) const -{ - try - { - if ( xNNS.is() ) - return xNNS->convertToXmlAttributes( rLocale, nNativeNumberMode ); - } - catch ( uno::Exception& e ) - { - (void)e; - DBG_ERRORFILE( "convertToXmlAttributes: Exception caught!" ); - } - return i18n::NativeNumberXmlAttributes(); -} - - -sal_Int16 -NativeNumberWrapper::convertFromXmlAttributes( - const i18n::NativeNumberXmlAttributes& rAttr ) const -{ - try - { - if ( xNNS.is() ) - return xNNS->convertFromXmlAttributes( rAttr ); - } - catch ( uno::Exception& e ) - { - (void)e; - DBG_ERRORFILE( "convertFromXmlAttributes: Exception caught!" ); - } - return 0; -} - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/numberformatcodewrapper.cxx b/unotools/source/i18n/numberformatcodewrapper.cxx deleted file mode 100644 index eb76c1080e..0000000000 --- a/unotools/source/i18n/numberformatcodewrapper.cxx +++ /dev/null @@ -1,171 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/numberformatcodewrapper.hxx> -#include <tools/debug.hxx> - -#include <comphelper/componentfactory.hxx> -#include <com/sun/star/uno/XInterface.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> - -#define LOCALEDATA_LIBRARYNAME "i18npool" -#define LOCALEDATA_SERVICENAME "com.sun.star.i18n.NumberFormatMapper" - -using namespace ::com::sun::star; -using namespace ::com::sun::star::i18n; -using namespace ::com::sun::star::uno; - - -NumberFormatCodeWrapper::NumberFormatCodeWrapper( - const Reference< lang::XMultiServiceFactory > & xSF, - const lang::Locale& rLocale - ) - : - xSMgr( xSF ) -{ - setLocale( rLocale ); - if ( xSMgr.is() ) - { - try - { - xNFC = Reference< XNumberFormatCode > ( xSMgr->createInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LOCALEDATA_SERVICENAME ) ) ), - uno::UNO_QUERY ); - } - catch ( Exception& e ) - { - (void)e; - DBG_ERRORFILE( "NumberFormatCodeWrapper ctor: Exception caught!" ); - } - } - else - { // try to get an instance somehow - DBG_ERRORFILE( "NumberFormatCodeWrapper: no service manager, trying own" ); - try - { - Reference< XInterface > xI = ::comphelper::getComponentInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LLCF_LIBNAME( LOCALEDATA_LIBRARYNAME ) ) ), - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LOCALEDATA_SERVICENAME ) ) ); - if ( xI.is() ) - { - Any x = xI->queryInterface( ::getCppuType((const Reference< XNumberFormatCode >*)0) ); - x >>= xNFC; - } - } - catch ( Exception& e ) - { - (void)e; - DBG_ERRORFILE( "getComponentInstance: Exception caught!" ); - } - } - DBG_ASSERT( xNFC.is(), "NumberFormatCodeWrapper: no NumberFormatMapper" ); -} - - -NumberFormatCodeWrapper::~NumberFormatCodeWrapper() -{ -} - - -void NumberFormatCodeWrapper::setLocale( const ::com::sun::star::lang::Locale& rLocale ) -{ - aLocale = rLocale; -} - - -::com::sun::star::i18n::NumberFormatCode -NumberFormatCodeWrapper::getDefault( sal_Int16 formatType, sal_Int16 formatUsage ) const -{ - try - { - if ( xNFC.is() ) - return xNFC->getDefault( formatType, formatUsage, aLocale ); - } - catch ( Exception& e ) - { - (void)e; - DBG_ERRORFILE( "getDefault: Exception caught!" ); - } - return ::com::sun::star::i18n::NumberFormatCode(); -} - - -::com::sun::star::i18n::NumberFormatCode -NumberFormatCodeWrapper::getFormatCode( sal_Int16 formatIndex ) const -{ - try - { - if ( xNFC.is() ) - return xNFC->getFormatCode( formatIndex, aLocale ); - } - catch ( Exception& e ) - { - (void)e; - DBG_ERRORFILE( "getFormatCode: Exception caught!" ); - } - return ::com::sun::star::i18n::NumberFormatCode(); -} - - -::com::sun::star::uno::Sequence< ::com::sun::star::i18n::NumberFormatCode > -NumberFormatCodeWrapper::getAllFormatCode( sal_Int16 formatUsage ) const -{ - try - { - if ( xNFC.is() ) - return xNFC->getAllFormatCode( formatUsage, aLocale ); - } - catch ( Exception& e ) - { - (void)e; - DBG_ERRORFILE( "getAllFormatCode: Exception caught!" ); - } - return ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::NumberFormatCode > (0); -} - - -::com::sun::star::uno::Sequence< ::com::sun::star::i18n::NumberFormatCode > -NumberFormatCodeWrapper::getAllFormatCodes() const -{ - try - { - if ( xNFC.is() ) - return xNFC->getAllFormatCodes( aLocale ); - } - catch ( Exception& e ) - { - (void)e; - DBG_ERRORFILE( "getAllFormatCodes: Exception caught!" ); - } - return ::com::sun::star::uno::Sequence< ::com::sun::star::i18n::NumberFormatCode > (0); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/readwritemutexguard.cxx b/unotools/source/i18n/readwritemutexguard.cxx deleted file mode 100644 index da97a11074..0000000000 --- a/unotools/source/i18n/readwritemutexguard.cxx +++ /dev/null @@ -1,123 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include "unotools/readwritemutexguard.hxx" -#include <tools/debug.hxx> - - -namespace utl { - -ReadWriteGuard::ReadWriteGuard( ReadWriteMutex& rMutexP, - sal_Int32 nRequestMode ) - : rMutex( rMutexP ) -{ - // don't do anything until a pending write completed (or another - // ReadWriteGuard leaves the ctor phase) - ::osl::MutexGuard aGuard( rMutex.pWriteMutex ); - nMode = nRequestMode; - if ( nMode & ReadWriteGuardMode::nWrite ) - { - rMutex.pWriteMutex->acquire(); - // wait for any read to complete -// TODO: set up a waiting thread instead of a loop - sal_Bool bWait = sal_True; - do - { - rMutex.pMutex->acquire(); - bWait = (rMutex.nReadCount != 0); - if ( nMode & ReadWriteGuardMode::nCriticalChange ) - bWait |= (rMutex.nBlockCriticalCount != 0); - rMutex.pMutex->release(); - } while ( bWait ); - } - else if ( nMode & ReadWriteGuardMode::nBlockCritical ) - { - rMutex.pMutex->acquire(); - ++rMutex.nBlockCriticalCount; - rMutex.pMutex->release(); - } - else - { - rMutex.pMutex->acquire(); - ++rMutex.nReadCount; - rMutex.pMutex->release(); - } -} - - -ReadWriteGuard::~ReadWriteGuard() -{ - if ( nMode & ReadWriteGuardMode::nWrite ) - rMutex.pWriteMutex->release(); - else if ( nMode & ReadWriteGuardMode::nBlockCritical ) - { - rMutex.pMutex->acquire(); - --rMutex.nBlockCriticalCount; - rMutex.pMutex->release(); - } - else - { - rMutex.pMutex->acquire(); - --rMutex.nReadCount; - rMutex.pMutex->release(); - } -} - - -void ReadWriteGuard::changeReadToWrite() -{ - sal_Bool bOk = !(nMode & (ReadWriteGuardMode::nWrite | ReadWriteGuardMode::nBlockCritical)); - DBG_ASSERT( bOk, "ReadWriteGuard::changeReadToWrite: can't" ); - if ( bOk ) - { - // MUST release read before acquiring write mutex or dead lock would - // occur if there was a write in another thread waiting for this read - // to complete. - rMutex.pMutex->acquire(); - --rMutex.nReadCount; - rMutex.pMutex->release(); - - rMutex.pWriteMutex->acquire(); - nMode |= ReadWriteGuardMode::nWrite; - // wait for any other read to complete -// TODO: set up a waiting thread instead of a loop - sal_Bool bWait = sal_True; - do - { - rMutex.pMutex->acquire(); - bWait = (rMutex.nReadCount != 0); - rMutex.pMutex->release(); - } while ( bWait ); - } -} - -} // namespace utl - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/textsearch.cxx b/unotools/source/i18n/textsearch.cxx deleted file mode 100644 index 7ad5db7049..0000000000 --- a/unotools/source/i18n/textsearch.cxx +++ /dev/null @@ -1,404 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <i18npool/mslangid.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/util/SearchFlags.hdl> -#include <com/sun/star/i18n/TransliterationModules.hpp> -#include <unotools/charclass.hxx> -#include <comphelper/processfactory.hxx> -#include <unotools/textsearch.hxx> -#include <rtl/instance.hxx> - -using namespace ::com::sun::star::util; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::lang; - -// ............................................................................ -namespace utl -{ -// ............................................................................ - -SearchParam::SearchParam( const String &rText, - SearchType eType, - sal_Bool bCaseSensitive, - sal_Bool bWrdOnly, - sal_Bool bSearchInSel ) -{ - sSrchStr = rText; - eSrchType = eType; - - bWordOnly = bWrdOnly; - bSrchInSel = bSearchInSel; - bCaseSense = bCaseSensitive; - - nTransliterationFlags = 0; - - // Werte fuer "Gewichtete Levenshtein-Distanz" - bLEV_Relaxed = sal_True; - nLEV_OtherX = 2; - nLEV_ShorterY = 1; - nLEV_LongerZ = 3; -} - -SearchParam::SearchParam( const SearchParam& rParam ) -{ - sSrchStr = rParam.sSrchStr; - sReplaceStr = rParam.sReplaceStr; - eSrchType = rParam.eSrchType; - - bWordOnly = rParam.bWordOnly; - bSrchInSel = rParam.bSrchInSel; - bCaseSense = rParam.bCaseSense; - - bLEV_Relaxed = rParam.bLEV_Relaxed; - nLEV_OtherX = rParam.nLEV_OtherX; - nLEV_ShorterY = rParam.nLEV_ShorterY; - nLEV_LongerZ = rParam.nLEV_LongerZ; - - nTransliterationFlags = rParam.nTransliterationFlags; -} - -static bool lcl_Equals( const SearchOptions& rSO1, const SearchOptions& rSO2 ) -{ - return rSO1.algorithmType == rSO2.algorithmType && - rSO1.searchFlag == rSO2.searchFlag && - rSO1.searchString.equals(rSO2.searchString) && - rSO1.replaceString.equals(rSO2.replaceString) && - rSO1.changedChars == rSO2.changedChars && - rSO1.deletedChars == rSO2.deletedChars && - rSO1.insertedChars == rSO2.insertedChars && - rSO1.Locale.Language == rSO2.Locale.Language && - rSO1.Locale.Country == rSO2.Locale.Country && - rSO1.Locale.Variant == rSO2.Locale.Variant && - rSO1.transliterateFlags == rSO2.transliterateFlags; -} - -namespace -{ - struct CachedTextSearch - { - ::osl::Mutex mutex; - ::com::sun::star::util::SearchOptions Options; - ::com::sun::star::uno::Reference< ::com::sun::star::util::XTextSearch > xTextSearch; - }; - - struct theCachedTextSearch - : public rtl::Static< CachedTextSearch, theCachedTextSearch > {}; -} - -Reference<XTextSearch> TextSearch::getXTextSearch( const SearchOptions& rPara ) -{ - CachedTextSearch &rCache = theCachedTextSearch::get(); - - osl::MutexGuard aGuard(rCache.mutex); - - if ( lcl_Equals(rCache.Options, rPara) ) - return rCache.xTextSearch; - - try - { - Reference< XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory(); - rCache.xTextSearch.set( xMSF->createInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.util.TextSearch" ) ) ), UNO_QUERY_THROW ); - rCache.xTextSearch->setOptions( rPara ); - rCache.Options = rPara; - } - catch ( Exception& ) - { - DBG_ERRORFILE( "TextSearch ctor: Exception caught!" ); - } - return rCache.xTextSearch; -} - -TextSearch::TextSearch(const SearchParam & rParam, LanguageType eLang ) -{ - if( LANGUAGE_NONE == eLang ) - eLang = LANGUAGE_SYSTEM; - ::com::sun::star::lang::Locale aLocale( - MsLangId::convertLanguageToLocale( LanguageType(eLang))); - - Init( rParam, aLocale); -} - -TextSearch::TextSearch(const SearchParam & rParam, const CharClass& rCClass ) -{ - Init( rParam, rCClass.getLocale() ); -} - -TextSearch::TextSearch( const SearchOptions& rPara ) -{ - xTextSearch = getXTextSearch( rPara ); -} - -void TextSearch::Init( const SearchParam & rParam, - const ::com::sun::star::lang::Locale& rLocale ) -{ - // convert SearchParam to the UNO SearchOptions - SearchOptions aSOpt; - - switch( rParam.GetSrchType() ) - { - case SearchParam::SRCH_REGEXP: - aSOpt.algorithmType = SearchAlgorithms_REGEXP; - if( rParam.IsSrchInSelection() ) - aSOpt.searchFlag |= SearchFlags::REG_NOT_BEGINOFLINE | - SearchFlags::REG_NOT_ENDOFLINE; - break; - - case SearchParam::SRCH_LEVDIST: - aSOpt.algorithmType = SearchAlgorithms_APPROXIMATE; - aSOpt.changedChars = rParam.GetLEVOther(); - aSOpt.deletedChars = rParam.GetLEVLonger(); - aSOpt.insertedChars = rParam.GetLEVShorter(); - if( rParam.IsSrchRelaxed() ) - aSOpt.searchFlag |= SearchFlags::LEV_RELAXED; - break; - -// case SearchParam::SRCH_NORMAL: - default: - aSOpt.algorithmType = SearchAlgorithms_ABSOLUTE; - if( rParam.IsSrchWordOnly() ) - aSOpt.searchFlag |= SearchFlags::NORM_WORD_ONLY; - break; - } - aSOpt.searchString = rParam.GetSrchStr(); - aSOpt.replaceString = rParam.GetReplaceStr(); - aSOpt.Locale = rLocale; - aSOpt.transliterateFlags = rParam.GetTransliterationFlags(); - if( !rParam.IsCaseSensitive() ) - { - aSOpt.searchFlag |= SearchFlags::ALL_IGNORE_CASE; - aSOpt.transliterateFlags |= ::com::sun::star::i18n::TransliterationModules_IGNORE_CASE; - } - - xTextSearch = getXTextSearch( aSOpt ); -} - -void TextSearch::SetLocale( const ::com::sun::star::util::SearchOptions& rOptions, - const ::com::sun::star::lang::Locale& rLocale ) -{ - // convert SearchParam to the UNO SearchOptions - SearchOptions aSOpt( rOptions ); - aSOpt.Locale = rLocale; - - xTextSearch = getXTextSearch( aSOpt ); -} - - -TextSearch::~TextSearch() -{ -} - -/* - * Die allgemeinen Methoden zu Suchen. Diese rufen dann die entpsrecheden - * Methoden fuer die normale Suche oder der Suche nach Regular-Expressions - * ueber die MethodenPointer auf. - */ -#if defined _MSC_VER -#pragma optimize("", off) -#pragma warning(push) -#pragma warning(disable: 4748) -#endif -int TextSearch::SearchFrwrd( const String & rStr, xub_StrLen* pStart, - xub_StrLen* pEnde, SearchResult* pRes ) -{ - int nRet = 0; - try - { - if( xTextSearch.is() ) - { - SearchResult aRet( xTextSearch->searchForward( - rStr, *pStart, *pEnde )); - if( aRet.subRegExpressions > 0 ) - { - nRet = 1; - // the XTextsearch returns in startOffset the higher position - // and the endposition is allways exclusive. - // The caller of this function will have in startPos the - // lower pos. and end - *pStart = (xub_StrLen)aRet.startOffset[ 0 ]; - *pEnde = (xub_StrLen)aRet.endOffset[ 0 ]; - if( pRes ) - *pRes = aRet; - } - } - } - catch ( Exception& ) - { - DBG_ERRORFILE( "SearchForward: Exception caught!" ); - } - return nRet; -} - -int TextSearch::SearchBkwrd( const String & rStr, xub_StrLen* pStart, - xub_StrLen* pEnde, SearchResult* pRes ) -{ - int nRet = 0; - try - { - if( xTextSearch.is() ) - { - SearchResult aRet( xTextSearch->searchBackward( - rStr, *pStart, *pEnde )); - if( aRet.subRegExpressions ) - { - nRet = 1; - // the XTextsearch returns in startOffset the higher position - // and the endposition is allways exclusive. - // The caller of this function will have in startPos the - // lower pos. and end - *pEnde = (xub_StrLen)aRet.startOffset[ 0 ]; - *pStart = (xub_StrLen)aRet.endOffset[ 0 ]; - if( pRes ) - *pRes = aRet; - } - } - } - catch ( Exception& ) - { - DBG_ERRORFILE( "SearchBackward: Exception caught!" ); - } - return nRet; -} - -void TextSearch::ReplaceBackReferences( String& rReplaceStr, const String &rStr, const SearchResult& rResult ) -{ - if( rResult.subRegExpressions > 0 ) - { - String sTab( '\t' ); - sal_Unicode sSrchChrs[] = {'\\', '&', '$', 0}; - String sTmp; - xub_StrLen nPos = 0; - sal_Unicode sFndChar; - while( STRING_NOTFOUND != ( nPos = rReplaceStr.SearchChar( sSrchChrs, nPos )) ) - { - if( rReplaceStr.GetChar( nPos ) == '&') - { - sal_uInt16 nStart = (sal_uInt16)(rResult.startOffset[0]); - sal_uInt16 nLength = (sal_uInt16)(rResult.endOffset[0] - rResult.startOffset[0]); - rReplaceStr.Erase( nPos, 1 ); // delete ampersand - // replace by found string - rReplaceStr.Insert( rStr, nStart, nLength, nPos ); - // jump over - nPos = nPos + nLength; - } - else if( rReplaceStr.GetChar( nPos ) == '$') - { - if( nPos + 1 < rReplaceStr.Len()) - { - sFndChar = rReplaceStr.GetChar( nPos + 1 ); - switch(sFndChar) - { // placeholder for a backward reference? - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - rReplaceStr.Erase( nPos, 2 ); // delete both - int i = sFndChar - '0'; // index - if(i < rResult.subRegExpressions) - { - sal_uInt16 nSttReg = (sal_uInt16)(rResult.startOffset[i]); - sal_uInt16 nRegLen = (sal_uInt16)(rResult.endOffset[i]); - if( nRegLen > nSttReg ) - nRegLen = nRegLen - nSttReg; - else - { - nRegLen = nSttReg - nRegLen; - nSttReg = (sal_uInt16)(rResult.endOffset[i]); - } - // Copy reference from found string - sTmp = rStr.Copy((sal_uInt16)nSttReg, (sal_uInt16)nRegLen); - // insert - rReplaceStr.Insert( sTmp, nPos ); - // and step over - nPos = nPos + sTmp.Len(); - } - } - break; - default: - nPos += 2; // leave both chars unchanged - break; - } - } - else - ++nPos; - } - else - { - // at least another character? - if( nPos + 1 < rReplaceStr.Len()) - { - sFndChar = rReplaceStr.GetChar( nPos + 1 ); - switch(sFndChar) - { - case '\\': - case '&': - case '$': - rReplaceStr.Erase( nPos, 1 ); - nPos++; - break; - case 't': - rReplaceStr.Erase( nPos, 2 ); // delete both - rReplaceStr.Insert( sTab, nPos ); // insert tabulator - nPos++; // step over - break; - default: - nPos += 2; // ignore both characters - break; - } - } - else - ++nPos; - } - } - } -} - - -#if defined _MSC_VER -#pragma optimize("", on) -#pragma warning(pop) -#endif - -// ............................................................................ -} // namespace utl -// ............................................................................ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/i18n/transliterationwrapper.cxx b/unotools/source/i18n/transliterationwrapper.cxx deleted file mode 100644 index 5570683527..0000000000 --- a/unotools/source/i18n/transliterationwrapper.cxx +++ /dev/null @@ -1,348 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/transliterationwrapper.hxx> -#include <tools/debug.hxx> -#include <i18npool/mslangid.hxx> -#include <comphelper/componentfactory.hxx> - -#include <com/sun/star/uno/XInterface.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/i18n/TransliterationModulesExtra.hpp> - -#define TRANSLIT_LIBRARYNAME "i18n" -#define TRANSLIT_SERVICENAME "com.sun.star.i18n.Transliteration" - -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::i18n; -using namespace ::com::sun::star::uno; -using namespace ::utl; - -TransliterationWrapper::TransliterationWrapper( - const Reference< XMultiServiceFactory > & xSF, - sal_uInt32 nTyp ) - : xSMgr( xSF ), nType( nTyp ), nLanguage( 0 ), bFirstCall( sal_True ) -{ - if( xSMgr.is() ) - { - try { - xTrans = Reference< XExtendedTransliteration > ( - xSMgr->createInstance( ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - TRANSLIT_SERVICENAME))), UNO_QUERY ); - } - catch ( Exception& ) - { - DBG_ERRORFILE( "TransliterationWrapper: Exception caught!" ); - } - } - else - { // try to get an instance somehow - DBG_ERRORFILE( "TransliterationWrapper: no service manager, trying own" ); - try - { - Reference< XInterface > xI = ::comphelper::getComponentInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( LLCF_LIBNAME( - TRANSLIT_LIBRARYNAME ))), - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - TRANSLIT_SERVICENAME))); - if ( xI.is() ) - { - Any x = xI->queryInterface( - ::getCppuType((const Reference< XExtendedTransliteration>*)0) ); - x >>= xTrans ; - } - } - catch ( Exception& ) - { - DBG_ERRORFILE( "getComponentInstance: Exception caught!" ); - } - } - DBG_ASSERT( xTrans.is(), "TransliterationWrapper: no Transliteraion available" ); -} - - -TransliterationWrapper::~TransliterationWrapper() -{ -} - - -String TransliterationWrapper::transliterate( - const String& rStr, sal_uInt16 nLang, - xub_StrLen nStart, xub_StrLen nLen, - Sequence <sal_Int32>* pOffset ) -{ - String sRet; - if( xTrans.is() ) - { - try - { - loadModuleIfNeeded( nLang ); - - if ( pOffset ) - sRet = xTrans->transliterate( rStr, nStart, nLen, *pOffset ); - else - sRet = xTrans->transliterateString2String( rStr, nStart, nLen); - } - catch( Exception& ) - { - DBG_ERRORFILE( "transliterate: Exception caught!" ); - } - } - return sRet; -} - - -String TransliterationWrapper::transliterate( - const String& rStr, - xub_StrLen nStart, xub_StrLen nLen, - Sequence <sal_Int32>* pOffset ) const -{ - String sRet( rStr ); - if( xTrans.is() ) - { - try - { - if ( pOffset ) - sRet = xTrans->transliterate( rStr, nStart, nLen, *pOffset ); - else - sRet = xTrans->transliterateString2String( rStr, nStart, nLen); - } - catch( Exception& ) - { - DBG_ERRORFILE( "transliterate: Exception caught!" ); - } - } - return sRet; -} - -sal_Bool TransliterationWrapper::needLanguageForTheMode() const -{ - return TransliterationModules_UPPERCASE_LOWERCASE == nType || - TransliterationModules_LOWERCASE_UPPERCASE == nType || - TransliterationModules_IGNORE_CASE == nType || - (sal_uInt32) TransliterationModulesExtra::SENTENCE_CASE == (sal_uInt32) nType || - (sal_uInt32) TransliterationModulesExtra::TITLE_CASE == (sal_uInt32) nType || - (sal_uInt32) TransliterationModulesExtra::TOGGLE_CASE == (sal_uInt32) nType; -} - - -void TransliterationWrapper::setLanguageLocaleImpl( sal_uInt16 nLang ) -{ - nLanguage = nLang; - if( LANGUAGE_NONE == nLanguage ) - nLanguage = LANGUAGE_SYSTEM; - MsLangId::convertLanguageToLocale( nLanguage, aLocale); -} - - -void TransliterationWrapper::loadModuleIfNeeded( sal_uInt16 nLang ) -{ - sal_Bool bLoad = bFirstCall; - bFirstCall = sal_False; - - if( static_cast< sal_Int32 >(nType) == TransliterationModulesExtra::SENTENCE_CASE ) - { - if( bLoad ) - loadModuleByImplName(String::CreateFromAscii("SENTENCE_CASE"), nLang); - } - else if( static_cast< sal_Int32 >(nType) == TransliterationModulesExtra::TITLE_CASE ) - { - if( bLoad ) - loadModuleByImplName(String::CreateFromAscii("TITLE_CASE"), nLang); - } - else if( static_cast< sal_Int32 >(nType) == TransliterationModulesExtra::TOGGLE_CASE ) - { - if( bLoad ) - loadModuleByImplName(String::CreateFromAscii("TOGGLE_CASE"), nLang); - } - else - { - if( nLanguage != nLang ) - { - setLanguageLocaleImpl( nLang ); - if( !bLoad ) - bLoad = needLanguageForTheMode(); - } - if( bLoad ) - loadModuleImpl(); - } -} - - -void TransliterationWrapper::loadModuleImpl() const -{ - if ( bFirstCall ) - ((TransliterationWrapper*)this)->setLanguageLocaleImpl( LANGUAGE_SYSTEM ); - - try - { - if ( xTrans.is() ) - xTrans->loadModule( (TransliterationModules)nType, aLocale ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "loadModuleImpl: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - - bFirstCall = sal_False; -} - - -void TransliterationWrapper::loadModuleByImplName( - const String& rModuleName, sal_uInt16 nLang ) -{ - try - { - setLanguageLocaleImpl( nLang ); - // Reset LanguageType, so the next call to loadModuleIfNeeded() forces - // new settings. - nLanguage = LANGUAGE_DONTKNOW; - if ( xTrans.is() ) - xTrans->loadModuleByImplName( rModuleName, aLocale ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "loadModuleByImplName: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - - bFirstCall = sal_False; -} - - -sal_Bool TransliterationWrapper::equals( - const String& rStr1, sal_Int32 nPos1, sal_Int32 nCount1, sal_Int32& nMatch1, - const String& rStr2, sal_Int32 nPos2, sal_Int32 nCount2, sal_Int32& nMatch2 ) const -{ - try - { - if( bFirstCall ) - loadModuleImpl(); - if ( xTrans.is() ) - return xTrans->equals( rStr1, nPos1, nCount1, nMatch1, rStr2, nPos2, nCount2, nMatch2 ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "equals: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return sal_False; -} - - -sal_Int32 TransliterationWrapper::compareSubstring( - const String& rStr1, sal_Int32 nOff1, sal_Int32 nLen1, - const String& rStr2, sal_Int32 nOff2, sal_Int32 nLen2 ) const -{ - try - { - if( bFirstCall ) - loadModuleImpl(); - if ( xTrans.is() ) - return xTrans->compareSubstring( rStr1, nOff1, nLen1, rStr2, nOff2, nLen2 ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "compareSubstring: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return 0; -} - - -sal_Int32 TransliterationWrapper::compareString( const String& rStr1, const String& rStr2 ) const -{ - try - { - if( bFirstCall ) - loadModuleImpl(); - if ( xTrans.is() ) - return xTrans->compareString( rStr1, rStr2 ); - } - catch ( Exception& e ) - { -#ifdef DBG_UTIL - ByteString aMsg( "compareString: Exception caught\n" ); - aMsg += ByteString( String( e.Message ), RTL_TEXTENCODING_UTF8 ); - DBG_ERRORFILE( aMsg.GetBuffer() ); -#else - (void)e; -#endif - } - return 0; -} - - -// --- helpers -------------------------------------------------------- - -sal_Bool TransliterationWrapper::isEqual( const String& rStr1, const String& rStr2 ) const -{ - sal_Int32 nMatch1, nMatch2; - sal_Bool bMatch = equals( - rStr1, 0, rStr1.Len(), nMatch1, - rStr2, 0, rStr2.Len(), nMatch2 ); - return bMatch; -} - - -sal_Bool TransliterationWrapper::isMatch( const String& rStr1, const String& rStr2 ) const -{ - sal_Int32 nMatch1, nMatch2; - equals( - rStr1, 0, rStr1.Len(), nMatch1, - rStr2, 0, rStr2.Len(), nMatch2 ); - return (nMatch1 <= nMatch2) && (nMatch1 == rStr1.Len()); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/misc/atom.cxx b/unotools/source/misc/atom.cxx deleted file mode 100644 index e1e52ab6c7..0000000000 --- a/unotools/source/misc/atom.cxx +++ /dev/null @@ -1,386 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/atom.hxx> - -using namespace utl; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::util; -#define NMSP_UTIL ::com::sun::star::util - -AtomProvider::AtomProvider() -{ - m_nAtoms = 1; -} - -AtomProvider::~AtomProvider() -{ -} - -int AtomProvider::getAtom( const ::rtl::OUString& rString, sal_Bool bCreate ) -{ - ::boost::unordered_map< ::rtl::OUString, int, ::rtl::OUStringHash >::iterator it = m_aAtomMap.find( rString ); - if( it != m_aAtomMap.end() ) - return it->second; - if( ! bCreate ) - return INVALID_ATOM; - m_aAtomMap[ rString ] = m_nAtoms; - m_aStringMap[ m_nAtoms ] = rString; - m_nAtoms++; - return m_nAtoms-1; -} - -void AtomProvider::getAll( ::std::list< ::utl::AtomDescription >& atoms ) -{ - atoms.clear(); - ::boost::unordered_map< ::rtl::OUString, int, ::rtl::OUStringHash >::const_iterator it = m_aAtomMap.begin(); - - ::utl::AtomDescription aDesc; - while( it != m_aAtomMap.end() ) - { - aDesc.atom = it->second; - aDesc.description = it->first; - atoms.push_back( aDesc ); - ++it; - } -} - -void AtomProvider::getRecent( int atom, ::std::list< ::utl::AtomDescription >& atoms ) -{ - atoms.clear(); - - ::boost::unordered_map< ::rtl::OUString, int, ::rtl::OUStringHash >::const_iterator it = m_aAtomMap.begin(); - - ::utl::AtomDescription aDesc; - while( it != m_aAtomMap.end() ) - { - if( it->second > atom ) - { - aDesc.atom = it->second; - aDesc.description = it->first; - atoms.push_back( aDesc ); - } - ++it; - } -} - -const ::rtl::OUString& AtomProvider::getString( int nAtom ) const -{ - static ::rtl::OUString aEmpty; - ::boost::unordered_map< int, ::rtl::OUString, ::boost::hash< int > >::const_iterator it = m_aStringMap.find( nAtom ); - - return it == m_aStringMap.end() ? aEmpty : it->second; -} - -void AtomProvider::overrideAtom( int atom, const ::rtl::OUString& description ) -{ - m_aAtomMap[ description ] = atom; - m_aStringMap[ atom ] = description; - if( m_nAtoms <= atom ) - m_nAtoms=atom+1; -} - -sal_Bool AtomProvider::hasAtom( int atom ) const -{ - return m_aStringMap.find( atom ) != m_aStringMap.end() ? sal_True : sal_False; -} - -// ----------------------------------------------------------------------- - -MultiAtomProvider::MultiAtomProvider() -{ -} - -MultiAtomProvider::~MultiAtomProvider() -{ - for( ::boost::unordered_map< int, AtomProvider*, ::boost::hash< int > >::iterator it = m_aAtomLists.begin(); it != m_aAtomLists.end(); ++it ) - delete it->second; -} - - -sal_Bool MultiAtomProvider::insertAtomClass( int atomClass ) -{ - ::boost::unordered_map< int, AtomProvider*, ::boost::hash< int > >::iterator it = - m_aAtomLists.find( atomClass ); - if( it != m_aAtomLists.end() ) - return sal_False; - m_aAtomLists[ atomClass ] = new AtomProvider(); - return sal_True; -} - -int MultiAtomProvider::getAtom( int atomClass, const ::rtl::OUString& rString, sal_Bool bCreate ) -{ - ::boost::unordered_map< int, AtomProvider*, ::boost::hash< int > >::iterator it = - m_aAtomLists.find( atomClass ); - if( it != m_aAtomLists.end() ) - return it->second->getAtom( rString, bCreate ); - - if( bCreate ) - { - AtomProvider* pNewClass; - m_aAtomLists[ atomClass ] = pNewClass = new AtomProvider(); - return pNewClass->getAtom( rString, bCreate ); - } - return INVALID_ATOM; -} - -int MultiAtomProvider::getLastAtom( int atomClass ) const -{ - ::boost::unordered_map< int, AtomProvider*, ::boost::hash< int > >::const_iterator it = - m_aAtomLists.find( atomClass ); - - return it != m_aAtomLists.end() ? it->second->getLastAtom() : INVALID_ATOM; -} - -void MultiAtomProvider::getRecent( int atomClass, int atom, ::std::list< ::utl::AtomDescription >& atoms ) -{ - ::boost::unordered_map< int, AtomProvider*, ::boost::hash< int > >::const_iterator it = - m_aAtomLists.find( atomClass ); - if( it != m_aAtomLists.end() ) - it->second->getRecent( atom, atoms ); - else - atoms.clear(); -} - -const ::rtl::OUString& MultiAtomProvider::getString( int atomClass, int atom ) const -{ - ::boost::unordered_map< int, AtomProvider*, ::boost::hash< int > >::const_iterator it = - m_aAtomLists.find( atomClass ); - if( it != m_aAtomLists.end() ) - return it->second->getString( atom ); - - static ::rtl::OUString aEmpty; - return aEmpty; -} - -sal_Bool MultiAtomProvider::hasAtom( int atomClass, int atom ) const -{ - ::boost::unordered_map< int, AtomProvider*, ::boost::hash< int > >::const_iterator it = m_aAtomLists.find( atomClass ); - return it != m_aAtomLists.end() ? it->second->hasAtom( atom ) : sal_False; -} - -void MultiAtomProvider::getClass( int atomClass, ::std::list< ::utl::AtomDescription >& atoms) const -{ - ::boost::unordered_map< int, AtomProvider*, ::boost::hash< int > >::const_iterator it = m_aAtomLists.find( atomClass ); - - if( it != m_aAtomLists.end() ) - it->second->getAll( atoms ); - else - atoms.clear(); -} - -void MultiAtomProvider::overrideAtom( int atomClass, int atom, const ::rtl::OUString& description ) -{ - ::boost::unordered_map< int, AtomProvider*, ::boost::hash< int > >::const_iterator it = m_aAtomLists.find( atomClass ); - if( it == m_aAtomLists.end() ) - m_aAtomLists[ atomClass ] = new AtomProvider(); - m_aAtomLists[ atomClass ]->overrideAtom( atom, description ); -} - -// ----------------------------------------------------------------------- - -AtomServer::AtomServer() -{ -} - -AtomServer::~AtomServer() -{ -} - -sal_Int32 AtomServer::getAtom( sal_Int32 atomClass, const ::rtl::OUString& description, sal_Bool create ) throw() -{ - ::osl::Guard< ::osl::Mutex > guard( m_aMutex ); - - return m_aProvider.getAtom( atomClass, description, create ); -} - -Sequence< Sequence< NMSP_UTIL::AtomDescription > > AtomServer::getClasses( const Sequence< sal_Int32 >& atomClasses ) throw() -{ - ::osl::Guard< ::osl::Mutex > guard( m_aMutex ); - - Sequence< Sequence< NMSP_UTIL::AtomDescription > > aRet( atomClasses.getLength() ); - for( int i = 0; i < atomClasses.getLength(); i++ ) - { - aRet.getArray()[i] = getClass( atomClasses.getConstArray()[i] ); - } - return aRet; -} - -Sequence< NMSP_UTIL::AtomDescription > AtomServer::getClass( sal_Int32 atomClass ) throw() -{ - ::osl::Guard< ::osl::Mutex > guard( m_aMutex ); - - ::std::list< ::utl::AtomDescription > atoms; - m_aProvider.getClass( atomClass, atoms ); - - Sequence< NMSP_UTIL::AtomDescription > aRet( atoms.size() ); - for( int i = aRet.getLength()-1; i >= 0; i-- ) - { - aRet.getArray()[i].atom = atoms.back().atom; - aRet.getArray()[i].description = atoms.back().description; - atoms.pop_back(); - } - - return aRet; -} - -Sequence< NMSP_UTIL::AtomDescription > AtomServer::getRecentAtoms( sal_Int32 atomClass, sal_Int32 atom ) throw() -{ - ::osl::Guard< ::osl::Mutex > guard( m_aMutex ); - - ::std::list< ::utl::AtomDescription > atoms; - m_aProvider.getRecent( atomClass, atom, atoms ); - - Sequence< NMSP_UTIL::AtomDescription > aRet( atoms.size() ); - for( int i = aRet.getLength()-1; i >= 0; i-- ) - { - aRet.getArray()[i].atom = atoms.back().atom; - aRet.getArray()[i].description = atoms.back().description; - atoms.pop_back(); - } - - return aRet; -} - -Sequence< ::rtl::OUString > AtomServer::getAtomDescriptions( const Sequence< AtomClassRequest >& atoms ) throw() -{ - ::osl::Guard< ::osl::Mutex > guard( m_aMutex ); - - int nStrings = 0, i; - for( i = 0; i < atoms.getLength(); i++ ) - nStrings += atoms.getConstArray()[ i ].atoms.getLength(); - Sequence< ::rtl::OUString > aRet( nStrings ); - for( i = 0, nStrings = 0; i < atoms.getLength(); i++ ) - { - const AtomClassRequest& rRequest = atoms.getConstArray()[i]; - for( int n = 0; n < rRequest.atoms.getLength(); n++ ) - aRet.getArray()[ nStrings++ ] = m_aProvider.getString( rRequest.atomClass, rRequest.atoms.getConstArray()[ n ] ); - } - return aRet; -} - -// ----------------------------------------------------------------------- - -AtomClient::AtomClient( const Reference< XAtomServer >& xServer ) : - m_xServer( xServer ) -{ -} - -AtomClient::~AtomClient() -{ -} - -int AtomClient::getAtom( int atomClass, const ::rtl::OUString& description, sal_Bool bCreate ) -{ - int nAtom = m_aProvider.getAtom( atomClass, description, sal_False ); - if( nAtom == INVALID_ATOM && bCreate ) - { - try - { - nAtom = m_xServer->getAtom( atomClass, description, bCreate ); - } - catch( RuntimeException& ) - { - return INVALID_ATOM; - } - if( nAtom != INVALID_ATOM ) - m_aProvider.overrideAtom( atomClass, nAtom, description ); - } - return nAtom; -} - -const ::rtl::OUString& AtomClient::getString( int atomClass, int atom ) -{ - static ::rtl::OUString aEmpty; - - if( ! m_aProvider.hasAtom( atomClass, atom ) ) - { - Sequence< NMSP_UTIL::AtomDescription > aSeq; - try - { - aSeq = m_xServer->getRecentAtoms( atomClass, m_aProvider.getLastAtom( atomClass ) ); - } - catch( RuntimeException& ) - { - return aEmpty; - } - const NMSP_UTIL::AtomDescription* pDescriptions = aSeq.getConstArray(); - for( int i = 0; i < aSeq.getLength(); i++ ) - m_aProvider.overrideAtom( atomClass, - pDescriptions[i].atom, - pDescriptions[i].description - ); - - if( ! m_aProvider.hasAtom( atomClass, atom ) ) - { - // holes may occur by the above procedure! - Sequence< AtomClassRequest > aReq( 1 ); - aReq.getArray()[0].atomClass = atomClass; - aReq.getArray()[0].atoms.realloc( 1 ); - aReq.getArray()[0].atoms.getArray()[0] = atom; - Sequence< ::rtl::OUString > aRet; - try - { - aRet = m_xServer->getAtomDescriptions( aReq ); - } - catch( RuntimeException& ) - { - return aEmpty; - } - if( aRet.getLength() == 1 ) - m_aProvider.overrideAtom( atomClass, atom, aRet.getConstArray()[0] ); - } - } - return m_aProvider.getString( atomClass, atom ); -} - -void AtomClient::updateAtomClasses( const Sequence< sal_Int32 >& atomClasses ) -{ - Sequence< Sequence< NMSP_UTIL::AtomDescription > > aUpdate; - try - { - aUpdate = m_xServer->getClasses( atomClasses ); - } - catch( RuntimeException& ) - { - return; - } - for( int i = 0; i < atomClasses.getLength(); i++ ) - { - int nClass = atomClasses.getConstArray()[i]; - const Sequence< NMSP_UTIL::AtomDescription >& rClass = aUpdate.getConstArray()[i]; - const NMSP_UTIL::AtomDescription* pDesc = rClass.getConstArray(); - for( int n = 0; n < rClass.getLength(); n++, pDesc++ ) - m_aProvider.overrideAtom( nClass, pDesc->atom, pDesc->description ); - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/misc/componentresmodule.cxx b/unotools/source/misc/componentresmodule.cxx deleted file mode 100644 index 9f578c44d4..0000000000 --- a/unotools/source/misc/componentresmodule.cxx +++ /dev/null @@ -1,149 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/componentresmodule.hxx> - -/** === begin UNO includes === **/ -/** === end UNO includes === **/ -#include <tools/resmgr.hxx> -#include <osl/diagnose.h> - -//........................................................................ -namespace utl -{ -//........................................................................ - - //==================================================================== - //= OComponentResModuleImpl - //==================================================================== - /** PIMPL-class for OComponentResourceModule - - not threadsafe! - */ - class OComponentResModuleImpl - { - private: - ResMgr* m_pRessources; - bool m_bInitialized; - ::rtl::OString m_sResFilePrefix; - - public: - OComponentResModuleImpl( const ::rtl::OString& _rResFilePrefix ) - :m_pRessources( NULL ) - ,m_bInitialized( false ) - ,m_sResFilePrefix( _rResFilePrefix ) - { - } - - ~OComponentResModuleImpl() - { - freeResManager(); - } - - /** releases our resource manager - */ - void freeResManager(); - - /** retrieves our resource manager - */ - ResMgr* getResManager(); - - private: - OComponentResModuleImpl(); // never implemented - OComponentResModuleImpl( const OComponentResModuleImpl& ); // never implemented - OComponentResModuleImpl& operator=( const OComponentResModuleImpl& ); // never implemented - }; - - //-------------------------------------------------------------------- - void OComponentResModuleImpl::freeResManager() - { - delete m_pRessources, m_pRessources = NULL; - m_bInitialized = false; - } - - //-------------------------------------------------------------------- - ResMgr* OComponentResModuleImpl::getResManager() - { - if ( !m_pRessources && !m_bInitialized ) - { - // create a manager with a fixed prefix - ByteString aMgrName = m_sResFilePrefix; - - m_pRessources = ResMgr::CreateResMgr( aMgrName.GetBuffer() ); - OSL_ENSURE( m_pRessources, - ( ByteString( "OModuleImpl::getResManager: could not create the resource manager (file name: " ) - += aMgrName - += ByteString( ")!" ) ).GetBuffer() ); - - m_bInitialized = sal_True; - } - return m_pRessources; - } - - //==================================================================== - //= OComponentResourceModule - //==================================================================== - //-------------------------------------------------------------------- - OComponentResourceModule::OComponentResourceModule( const ::rtl::OString& _rResFilePrefix ) - :BaseClass() - ,m_pImpl( new OComponentResModuleImpl( _rResFilePrefix ) ) - { - } - - //-------------------------------------------------------------------- - OComponentResourceModule::~OComponentResourceModule() - { - } - - //------------------------------------------------------------------------- - ResMgr* OComponentResourceModule::getResManager() - { - ::osl::MutexGuard aGuard( m_aMutex ); - return m_pImpl->getResManager(); - } - - //-------------------------------------------------------------------------- - void OComponentResourceModule::onFirstClient() - { - BaseClass::onFirstClient(); - } - - //-------------------------------------------------------------------------- - void OComponentResourceModule::onLastClient() - { - m_pImpl->freeResManager(); - BaseClass::onLastClient(); - } - -//........................................................................ -} // namespace utl -//........................................................................ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/misc/datetime.cxx b/unotools/source/misc/datetime.cxx deleted file mode 100644 index a39253e1d9..0000000000 --- a/unotools/source/misc/datetime.cxx +++ /dev/null @@ -1,123 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/datetime.hxx> -#include <tools/date.hxx> -#include <tools/time.hxx> -#include <tools/datetime.hxx> - -//......................................................................... -namespace utl -{ -//......................................................................... - -//------------------------------------------------------------------ -void typeConvert(const Time& _rTime, starutil::Time& _rOut) -{ - _rOut.Hours = _rTime.GetHour(); - _rOut.Minutes = _rTime.GetMin(); - _rOut.Seconds = _rTime.GetSec(); - _rOut.HundredthSeconds = _rTime.Get100Sec(); -} - -//------------------------------------------------------------------ -void typeConvert(const starutil::Time& _rTime, Time& _rOut) -{ - _rOut = Time(_rTime.Hours, _rTime.Minutes, _rTime.Seconds, _rTime.HundredthSeconds); -} - -//------------------------------------------------------------------ -void typeConvert(const Date& _rDate, starutil::Date& _rOut) -{ - _rOut.Day = _rDate.GetDay(); - _rOut.Month = _rDate.GetMonth(); - _rOut.Year = _rDate.GetYear(); -} - -//------------------------------------------------------------------ -void typeConvert(const starutil::Date& _rDate, Date& _rOut) -{ - _rOut = Date(_rDate.Day, _rDate.Month, _rDate.Year); -} - -//------------------------------------------------------------------ -void typeConvert(const DateTime& _rDateTime, starutil::DateTime& _rOut) -{ - _rOut.Year = _rDateTime.GetYear(); - _rOut.Month = _rDateTime.GetMonth(); - _rOut.Day = _rDateTime.GetDay(); - _rOut.Hours = _rDateTime.GetHour(); - _rOut.Minutes = _rDateTime.GetMin(); - _rOut.Seconds = _rDateTime.GetSec(); - _rOut.HundredthSeconds = _rDateTime.Get100Sec(); -} - -//------------------------------------------------------------------ -void typeConvert(const starutil::DateTime& _rDateTime, DateTime& _rOut) -{ - Date aDate(_rDateTime.Day, _rDateTime.Month, _rDateTime.Year); - Time aTime(_rDateTime.Hours, _rDateTime.Minutes, _rDateTime.Seconds, _rDateTime.HundredthSeconds); - _rOut = DateTime(aDate, aTime); -} - -//------------------------------------------------------------------------- -sal_Bool operator ==(const starutil::DateTime& _rLeft, const starutil::DateTime& _rRight) -{ - return ( _rLeft.HundredthSeconds == _rRight.HundredthSeconds) && - ( _rLeft.Seconds == _rRight.Seconds) && - ( _rLeft.Minutes == _rRight.Minutes) && - ( _rLeft.Hours == _rRight.Hours) && - ( _rLeft.Day == _rRight.Day) && - ( _rLeft.Month == _rRight.Month) && - ( _rLeft.Year == _rRight.Year) ; -} - -//------------------------------------------------------------------------- -sal_Bool operator ==(const starutil::Date& _rLeft, const starutil::Date& _rRight) -{ - return ( _rLeft.Day == _rRight.Day) && - ( _rLeft.Month == _rRight.Month) && - ( _rLeft.Year == _rRight.Year) ; -} - -//------------------------------------------------------------------------- -sal_Bool operator ==(const starutil::Time& _rLeft, const starutil::Time& _rRight) -{ - return ( _rLeft.HundredthSeconds == _rRight.HundredthSeconds) && - ( _rLeft.Seconds == _rRight.Seconds) && - ( _rLeft.Minutes == _rRight.Minutes) && - ( _rLeft.Hours == _rRight.Hours) ; -} - -//......................................................................... -} // namespace utl -//......................................................................... - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/misc/desktopterminationobserver.cxx b/unotools/source/misc/desktopterminationobserver.cxx deleted file mode 100644 index ff05c3bec7..0000000000 --- a/unotools/source/misc/desktopterminationobserver.cxx +++ /dev/null @@ -1,233 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/desktopterminationobserver.hxx> - -/** === begin UNO includes === **/ -#include <com/sun/star/frame/XTerminateListener.hpp> -#include <com/sun/star/frame/XDesktop.hpp> -/** === end UNO includes === **/ -#include <cppuhelper/implbase1.hxx> -#include <comphelper/processfactory.hxx> - -#include <list> - -//........................................................................ -namespace utl -{ -//........................................................................ - - using namespace ::com::sun::star::uno; - using namespace ::com::sun::star::lang; - using namespace ::com::sun::star::frame; - - namespace - { - //................................................................ - typedef ::std::list< ITerminationListener* > Listeners; - - struct ListenerAdminData - { - Listeners aListeners; - bool bAlreadyTerminated; - bool bCreatedAdapter; - - ListenerAdminData() : bAlreadyTerminated( false ), bCreatedAdapter( false ) { } - }; - - //................................................................ - ListenerAdminData& getListenerAdminData() - { - static ListenerAdminData s_aData; - return s_aData; - } - - //================================================================ - //= OObserverImpl - //================================================================ - class OObserverImpl : public ::cppu::WeakImplHelper1< XTerminateListener > - { - public: - static void ensureObservation(); - - protected: - OObserverImpl(); - ~OObserverImpl(); - - private: - // XTerminateListener - virtual void SAL_CALL queryTermination( const EventObject& Event ) throw (TerminationVetoException, RuntimeException); - virtual void SAL_CALL notifyTermination( const EventObject& Event ) throw (RuntimeException); - - // XEventListener - virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException); - }; - - //-------------------------------------------------------------------- - OObserverImpl::OObserverImpl() - { - } - - //-------------------------------------------------------------------- - OObserverImpl::~OObserverImpl() - { - } - - //-------------------------------------------------------------------- - void OObserverImpl::ensureObservation() - { - { - if ( getListenerAdminData().bCreatedAdapter ) - return; - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - if ( getListenerAdminData().bCreatedAdapter ) - return; - - getListenerAdminData().bCreatedAdapter = true; - } - - try - { - Reference< XDesktop > xDesktop; - xDesktop = xDesktop.query( ::comphelper::getProcessServiceFactory()->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ) ) ); - OSL_ENSURE( xDesktop.is(), "OObserverImpl::ensureObservation: could not ensureObservation the desktop!" ); - if ( xDesktop.is() ) - xDesktop->addTerminateListener( new OObserverImpl ); - } - catch( const Exception& ) - { - OSL_FAIL( "OObserverImpl::ensureObservation: caught an exception!" ); - } - } - - //-------------------------------------------------------------------- - void SAL_CALL OObserverImpl::queryTermination( const EventObject& /*Event*/ ) throw (TerminationVetoException, RuntimeException) - { - Listeners aToNotify; - { - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - aToNotify = getListenerAdminData().aListeners; - } - - for ( Listeners::const_iterator listener = aToNotify.begin(); - listener != aToNotify.end(); - ++listener - ) - { - if ( !(*listener)->queryTermination() ) - throw TerminationVetoException(); - } - } - - //-------------------------------------------------------------------- - void SAL_CALL OObserverImpl::notifyTermination( const EventObject& /*Event*/ ) throw (RuntimeException) - { - // get the listeners - Listeners aToNotify; - { - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - OSL_ENSURE( !getListenerAdminData().bAlreadyTerminated, "OObserverImpl::notifyTermination: terminated twice?" ); - aToNotify = getListenerAdminData().aListeners; - getListenerAdminData().bAlreadyTerminated = true; - } - - // notify the listeners - for ( Listeners::const_iterator listener = aToNotify.begin(); - listener != aToNotify.end(); - ++listener - ) - { - (*listener)->notifyTermination(); - } - - // clear the listener container - { - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - getListenerAdminData().aListeners.clear(); - } - } - - //-------------------------------------------------------------------- - void SAL_CALL OObserverImpl::disposing( const EventObject& /*Event*/ ) throw (RuntimeException) - { -#if OSL_DEBUG_LEVEL > 0 - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - OSL_ENSURE( getListenerAdminData().bAlreadyTerminated, "OObserverImpl::disposing: disposing without terminated?" ); -#endif - // not interested in - } - } - - //==================================================================== - //= DesktopTerminationObserver - //==================================================================== - //-------------------------------------------------------------------- - void DesktopTerminationObserver::registerTerminationListener( ITerminationListener* _pListener ) - { - if ( !_pListener ) - return; - - { - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - if ( getListenerAdminData().bAlreadyTerminated ) - { - _pListener->notifyTermination(); - return; - } - - getListenerAdminData().aListeners.push_back( _pListener ); - } - - OObserverImpl::ensureObservation(); - } - - //-------------------------------------------------------------------- - void DesktopTerminationObserver::revokeTerminationListener( ITerminationListener* _pListener ) - { - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - Listeners& rListeners = getListenerAdminData().aListeners; - for ( Listeners::iterator lookup = rListeners.begin(); - lookup != rListeners.end(); - ++lookup - ) - { - if ( *lookup == _pListener ) - { - rListeners.erase( lookup ); - break; - } - } - } - -//........................................................................ -} // namespace utl -//........................................................................ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/misc/eventlisteneradapter.cxx b/unotools/source/misc/eventlisteneradapter.cxx deleted file mode 100644 index 6a2261291f..0000000000 --- a/unotools/source/misc/eventlisteneradapter.cxx +++ /dev/null @@ -1,185 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/eventlisteneradapter.hxx> -#include <osl/diagnose.h> -#include <cppuhelper/implbase1.hxx> -#include <comphelper/stl_types.hxx> - -//......................................................................... -namespace utl -{ -//......................................................................... - - using namespace ::com::sun::star::uno; - using namespace ::com::sun::star::lang; - - //===================================================================== - //= OEventListenerImpl - //===================================================================== - class OEventListenerImpl : public ::cppu::WeakImplHelper1< XEventListener > - { - protected: - OEventListenerAdapter* m_pAdapter; - Reference< XEventListener > m_xKeepMeAlive; - // imagine an implementation of XComponent which holds it's listeners with a weak reference ... - // would be very bad if we don't hold ourself - Reference< XComponent > m_xComponent; - - public: - OEventListenerImpl( OEventListenerAdapter* _pAdapter, const Reference< XComponent >& _rxComp ); - - void dispose(); - const Reference< XComponent >& getComponent() const { return m_xComponent; } - - protected: - virtual void SAL_CALL disposing( const EventObject& _rSource ) throw (RuntimeException); - }; - - //--------------------------------------------------------------------- - OEventListenerImpl::OEventListenerImpl( OEventListenerAdapter* _pAdapter, const Reference< XComponent >& _rxComp ) - :m_pAdapter(_pAdapter) - { - OSL_ENSURE(m_pAdapter, "OEventListenerImpl::OEventListenerImpl: invalid adapter!"); - // no checks of _rxComp !! - // (OEventListenerAdapter is responsible for this) - - // just in case addEventListener throws an exception ... don't initialize m_xKeepMeAlive before this - // is done - Reference< XEventListener > xMeMyselfAndI = this; - _rxComp->addEventListener(xMeMyselfAndI); - - m_xComponent = _rxComp; - m_xKeepMeAlive = xMeMyselfAndI; - } - - //--------------------------------------------------------------------- - void OEventListenerImpl::dispose() - { - if (m_xComponent.is()) - { - m_xComponent->removeEventListener(m_xKeepMeAlive); - m_xComponent.clear(); - m_xKeepMeAlive.clear(); - } - } - - //--------------------------------------------------------------------- - void SAL_CALL OEventListenerImpl::disposing( const EventObject& _rSource ) throw (RuntimeException) - { - Reference< XEventListener > xDeleteUponLeaving = m_xKeepMeAlive; - m_xKeepMeAlive.clear(); - m_xComponent.clear(); - - m_pAdapter->_disposing(_rSource); - } - - //===================================================================== - //= OEventListenerAdapterImpl - //===================================================================== - struct OEventListenerAdapterImpl - { - public: - ::std::vector< void* > aListeners; - }; - - //===================================================================== - //= OEventListenerAdapter - //===================================================================== - //--------------------------------------------------------------------- - OEventListenerAdapter::OEventListenerAdapter() - :m_pImpl(new OEventListenerAdapterImpl) - { - } - - //--------------------------------------------------------------------- - OEventListenerAdapter::~OEventListenerAdapter() - { - stopAllComponentListening( ); - delete m_pImpl; - m_pImpl = NULL; - } - - //--------------------------------------------------------------------- - void OEventListenerAdapter::stopComponentListening( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& _rxComp ) - { - if ( m_pImpl->aListeners.empty() ) - return; - - ::std::vector< void* >::iterator dispose = m_pImpl->aListeners.begin(); - do - { - OEventListenerImpl* pListenerImpl = static_cast< OEventListenerImpl* >( *dispose ); - if ( pListenerImpl->getComponent().get() == _rxComp.get() ) - { - pListenerImpl->dispose(); - pListenerImpl->release(); - dispose = m_pImpl->aListeners.erase( dispose ); - } - else - ++dispose; - } - while ( dispose != m_pImpl->aListeners.end() ); - } - - //--------------------------------------------------------------------- - void OEventListenerAdapter::stopAllComponentListening( ) - { - for ( ::std::vector< void* >::const_iterator aDisposeLoop = m_pImpl->aListeners.begin(); - aDisposeLoop != m_pImpl->aListeners.end(); - ++aDisposeLoop - ) - { - OEventListenerImpl* pListenerImpl = static_cast< OEventListenerImpl* >(*aDisposeLoop); - pListenerImpl->dispose(); - pListenerImpl->release(); - } - m_pImpl->aListeners.clear(); - } - - //--------------------------------------------------------------------- - void OEventListenerAdapter::startComponentListening( const Reference< XComponent >& _rxComp ) - { - if (!_rxComp.is()) - { - OSL_FAIL("OEventListenerAdapter::startComponentListening: invalid component!"); - return; - } - - OEventListenerImpl* pListenerImpl = new OEventListenerImpl(this, _rxComp); - pListenerImpl->acquire(); - m_pImpl->aListeners.push_back(pListenerImpl); - } - -//......................................................................... -} // namespace utl -//......................................................................... - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/misc/fontcvt.cxx b/unotools/source/misc/fontcvt.cxx deleted file mode 100644 index ccdbf31f50..0000000000 --- a/unotools/source/misc/fontcvt.cxx +++ /dev/null @@ -1,1523 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/fontcvt.hxx> -#include <unotools/fontdefs.hxx> -#include <sal/macros.h> - -#ifndef _STLP_MAP -#include <map> -#endif -#ifndef _STLP_VECTOR -#include <vector> -#endif -#ifndef _STLP_ALGORITHM -#include <algorithm> -#endif -#ifndef _STLP_FUNCTIONAL -#include <functional> -#endif - -//======================================================================= -// note: the character mappings that are only approximations -// are marked (with an empty comment) - -static const sal_Unicode aStarBatsTab[224] = -{ - // F020 - 0x0020, 0x263a, 0x25cf, 0x274d, - 0x25a0, 0x25a1, 0xE000, 0x2751, - 0x2752, 0xE001, 0xE002, 0xE003, - 0x2756, 0xE004, 0xE005, 0x27a2, - // F030 - 0xE006, 0x2794, 0x2713, 0x2612, - 0x2611, 0x27b2, 0x261b, 0x270d, - 0x270e, 0xE007, 0x2714, 0xE008, - 0xE009, 0xE00A, 0x274f, 0x2750, - // F040 - 0xE00B, 0xE00C, 0xE00D, 0xE00E, - 0x2722, 0x2723, 0x2724, 0x2725, - 0x2733, 0x2734, 0x2735, 0x2736, - 0x2737, 0x2738, 0x2739, 0x2717, - // F050 - 0x2718, 0x2719, 0x271a, 0x271b, - 0x271c, 0x272b, 0x272c, 0x272d, - 0x272e, 0x272f, 0x2730, 0, - 0xE00F, 0x278a, 0x278b, 0x278c, - // F060 - 0x278d, 0x278e, 0x278f, 0x2790, - 0x2791, 0x2792, 0x2793, 0xE010, - 0x2780, 0x2781, 0x2782, 0x2783, - 0x2784, 0x2785, 0x2786, 0x2787, - // F070 - 0x2788, 0x2789, 0xE011, 0xE012, - 0x260e, 0xE013, 0xE014, 0xE015, - 0xE016, 0xE017, 0xE018, 0xE019, - 0xE01A, 0x261e, 0xE01B, 0, - // F080 - 0x20ac, 0, 0x201a, 0x0192, - 0x201e, 0x2026, 0x2020, 0x2021, - 0xE01c, 0x2030, 0x0160, 0x2039, - 0x0152, 0, 0x017d, 0, - // F090 - 0, 0x2018, 0x2019, 0x201c, - 0x201d, 0x2022, 0x2013, 0x2014, - 0xE01d, 0x2122, 0x0161, 0x203a, - 0x0153, 0, 0x017e, 0x0178, - // F0A0 - 0, 0x21e7, 0x21e8, 0x21e9, - 0x21e6, 0xE01e, 0xE01f, 0x00a7, - 0xE020, 0xE021, 0xE022, 0x00ab, - 0xE023, 0x2639, 0xE024, 0xE025, - // F0B0 - 0xE026, 0xE027, 0xE028, 0x21e5, - 0x21e4, 0x2192, 0x2193, 0x2190, - 0x2191, 0xE029, 0xE02a, 0x00bb, - 0xE02b, 0xE02c, 0xE02d, 0xE02e, - // F0C0 - 0xE02f, 0xE030, 0xE031, 0xE032, - 0x25be, 0x25b4, 0x25bf, 0x25b5, - 0xE033, 0xE034, 0xE035, 0x2702, - 0x2708, 0x2721, 0x273f, 0x2744, - // F0D0 - 0x25d7, 0x2759, 0xE036, 0xE037, - 0x2762, 0x2663, 0x2665, 0x2660, - 0x2194, 0x2195, 0x2798, 0x279a, - 0x27b8, 0, 0x00b6, 0, - // F0E0 - 0x00a2, 0x00a4, 0x00a5, 0xE038, - 0x20a1, 0x20a2, 0x20a3, 0x20a4, - 0x20a9, 0x20ab, 0x20a8, 0xE039, - 0, 0, 0, 0, - // F0F0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0xE03a -}; - -// ----------------------------------------------------------------------- - -static const sal_Unicode aStarMathTab[224] = -{ - // F020 - 0x0020, 0x0021, 0x0022, 0x0023, - 0xE080, 0x0025, 0x0026, 0x221e, - 0x0028, 0x0029, 0x002a, 0x002b, - 0x002c, 0x002d, 0x002e, 0x002f, - // F030 - 0x2224, 0x21d2, 0x21d0, 0x21d4, - 0xE081, 0xE082, 0x00b0, 0, - 0, 0, 0x003a, 0x003b, - 0x003c, 0x003d, 0x003e, 0x00bf, - // F040 - 0x2260, 0xE083, 0x2212, 0x2217, - 0x00d7, 0x22c5, 0x00f7, 0x00b1, - 0x2213, 0x2295, 0x2296, 0x2297, - 0x2298, 0x2299, 0x222a, 0x2229, - // F050 - 0xE084, 0xE085, 0x2264, 0x2265, - 0xE086, 0xE087, 0x226a, 0x226b, - 0x007e, 0x2243, 0x2248, 0x225d, - 0x2261, 0x221d, 0x2202, 0x2282, - // F060 - 0x2283, 0x2286, 0x2287, 0x2284, - 0x2285, 0x2288, 0x2289, 0x2208, - 0x2209, 0xE089, 0x2203, 0x220d, - 0x2135, 0x2111, 0x211c, 0x2118, - // F070 - 0xE08a, 0x2221, 0x2222, 0x2223, - 0x2225, 0x22a5, 0xE08b, 0x22ef, - 0x22ee, 0x22f0, 0x22f1, 0x22b6, - 0x22b7, 0xE08c, 0x2216, 0x00ac, - // F080 - 0x222b, 0x222c, 0x222d, 0x222e, - 0x222f, 0x2230, 0x221a, 0xE08d, - 0xE08e, 0xE08f, 0x2210, 0x220f, - 0x2211, 0x2207, 0x2200, 0xE090, - // F090 - 0xE091, 0xE092, 0xE093, 0xE094, - 0xE095, 0xE096, 0xE097, 0xE098, - 0x02d9, 0x00a8, 0xE09b, 0x02da, - 0x2227, 0x2228, 0x220b, 0x2205, - // F0A0 - 0x007b, 0x007d, 0xe09e, 0xe09f, - 0x2329, 0x232a, 0x005b, 0x005d, - 0xE0a0, 0x22be, 0xE0a1, 0x2259, - 0x2254, 0x2255, 0x21b3, 0x2197, - // F0B0 - 0x2198, 0x2245, 0x301a, 0x301b, - 0x2373, 0xE0a5, 0xE0a6, 0x22a4, - 0x2112, 0x2130, 0x2131, 0, - 0xE0a7, 0xE0a8, 0xE0a9, 0xE0aa, - // F0C0 - 0x2308, 0x230a, 0x2309, 0x230b, - 0, 0xe0ab, 0xe0ac, 0xe0ad, - 0xe0ae, 0xe0af, 0xe0b0, 0xe0b1, - 0xe0b2, 0xe0b3, 0xe0b4, 0xe0b5, - // F0D0 - 0xe0b6, 0xe0b7, 0xe0b8, 0xe0b9, - 0xe0ba, 0xe0bb, 0xe0bc, 0xe0bd, - 0xe0be, 0xe0bf, 0xe0c0, 0xe0c1, - 0xe0c2, 0xe0c3, 0xe0c4, 0xe0c5, - // F0E0 - 0xe0c6, 0xe0c7, 0xe0c8, 0xe0c9, - 0xe0ca, 0xe0cb, 0xe0cc, 0xe0cd, - 0xe0ce, 0xe0cf, 0xe0d0, 0xe0d1, - 0x03f1, 0xe0d3, 0xe0d4, 0xe0d5, - // F0F0 - 0x2113, 0xe0d6, 0x2107, 0x2127, - 0x210a, 0xe0d9, 0x210f, 0x019b, - 0xe0db, 0xe0dc, 0xe0dd, 0x2115, - 0x2124, 0x211a, 0x211d, 0x2102 -}; - -// ----------------------------------------------------------------------- - -static const sal_Unicode aWingDingsTab[224] = -{ - // F020 - 0x0020, 0xe400, 0xe401, 0xe402, - 0xe403, 0xe404, 0xe405, 0xe406, - 0xe407, 0xe408, 0xe409, 0xe40a, - 0xe40b, 0xe40c, 0xe40d, 0xe40e, - // F030 - 0xe40f, 0xe410, 0xe411, 0xe412, - 0xe413, 0xe414, 0xe415, 0xe416, - 0xe417, 0xe418, 0xe419, 0xe41a, - 0xe41b, 0xe41c, 0x2707, 0xe41d, - // F040 - 0xe41e, 0xe41f, 0xe420, 0xe421, - 0x261c, 0xe423, 0x261d, 0x261f, - 0x261f, 0xe424, 0xe425, 0xe426, - 0xe427, 0xe428, 0xe429, 0xe42a, - // F050 - 0xe42b, 0xe42c, 0x263c, 0xe42d, - 0xe42e, 0xe42f, 0xe430, 0xe431, - 0xe432, 0xe433, 0x262a, 0x262f, - 0x0950, 0xe434, 0x2648, 0x2649, - // F060 - 0x264a, 0x264b, 0x264c, 0x264d, - 0x264e, 0x264f, 0x2650, 0x2651, - 0x2652, 0x2653, 0xe435, 0xe436, - 0xe437, 0xe438, 0xe439, 0xe43a, - // F070 - 0xe43b, 0xe43c, 0xe43d, 0xe43e, - 0xe43f, 0xe440, 0xe441, 0xe442, - 0xe443, 0x2353, 0x2318, 0xe444, - 0xe445, 0xe446, 0xe447, 0, - // F080 - 0xe448, 0xe449, 0xe44a, 0xe44b, - 0xe44c, 0xe44d, 0xe44e, 0xe44f, - 0xe450, 0xe451, 0xe452, 0xe453, - 0xe454, 0xe455, 0xe456, 0xe457, - // F090 - 0xe458, 0xe459, 0xe45a, 0xe45b, - 0xe45c, 0xe45d, 0xe45e, 0xe45f, - 0xe460, 0xe461, 0xe462, 0xe463, - 0xe464, 0xe465, 0xe466, 0xe467, - // F0a0 - 0xe468, 0xe469, 0xe46a, 0xe46b, - 0xe46c, 0xe46d, 0xe46e, 0xe46f, - 0xe470, 0xe471, 0xe472, 0xe473, - 0xe474, 0xe475, 0xe476, 0xe477, - // F0b0 - 0xe478, 0xe479, 0xe47a, 0xe47b, - 0xe47c, 0xe47d, 0xe47e, 0xe47f, - 0xe480, 0xe481, 0xe482, 0xe483, - 0xe484, 0xe485, 0xe486, 0xe487, - // F0c0 - 0xe488, 0xe489, 0xe48a, 0xe48b, - 0xe48c, 0xe48d, 0xe48e, 0xe48f, - 0xe490, 0xe491, 0xe492, 0xe493, - 0xe494, 0xe495, 0xe496, 0xe497, - // F0d0 - 0xe498, 0xe499, 0xe49a, 0xe49b, - 0xe49c, 0x232b, 0x2326, 0xe49d, - 0xe49e, 0xe49f, 0xe4a0, 0xe4a1, - 0xe4a2, 0xe4a3, 0xe4a4, 0xe4a5, - // F0e0 - 0xe4a6, 0xe4a7, 0xe4a8, 0xe4a9, - 0xe4aa, 0xe4ab, 0xe4ac, 0xe4ad, - 0xe4ae, 0xe4af, 0xe4b0, 0xe4b1, - 0xe4b2, 0xe4b3, 0xe4b4, 0xe4b5, - // F0f0 - 0xe4b6, 0xe4b7, 0xe4b8, 0xe4b9, - 0xe4ba, 0xe4bb, 0xe4bc, 0xe4bd, - 0xe4be, 0xe4bf, 0xe4c0, 0xe4c1, - 0xe4c2, 0xe4c3, 0xe4c4, 0xe4c5 -}; - -// ----------------------------------------------------------------------- - -static const sal_Unicode aWingDings2Tab[224] = -{ - // F020 - 0x0020, 0xe500, 0xe501, 0xe502, - 0xe503, 0xe504, 0xe505, 0xe506, - 0xe507, 0xe508, 0xe509, 0xe50a, - 0xe50b, 0xe50c, 0xe50d, 0xe50e, - // F030 - 0xe50f, 0xe510, 0xe511, 0xe512, - 0xe513, 0xe514, 0xe515, 0xe516, - 0xe517, 0xe518, 0xe519, 0xe51a, - 0xe51b, 0xe51c, 0xe51d, 0xe51e, - // F040 - 0xe51f, 0xe520, 0xe521, 0xe522, - 0xe523, 0xe524, 0xe525, 0xe526, - 0xe527, 0xe528, 0xe529, 0xe52a, - 0xe52b, 0xe52c, 0xe52d, 0xe52e, - // F050 - 0xe52f, 0xe530, 0xe531, 0xe532, - 0xe533, 0xe534, 0xe535, 0xe536, - 0xe537, 0x203D, 0x203D, 0x203D, - 0xe53b, 0xe53c, 0xe53d, 0xe53e, - // F060 - 0xe53f, 0xe540, 0xe541, 0xe542, - 0xe543, 0xe544, 0xe545, 0xe546, - 0xe547, 0x24EA, 0x2460, 0x2461, - 0x2462, 0x2463, 0x2464, 0x2465, - // F070 - 0x2466, 0x2467, 0x2468, 0x2469, - 0xE453, 0x278A, 0x278B, 0x278C, - 0x278D, 0x278E, 0x278F, 0x2790, - 0x2791, 0x2792, 0x2793, 0, - // F080 - 0x2609, 0x25cb, 0x263d, 0x263e, - 0xe55d, 0xe55e, 0xe55f, 0xe560, - 0xe561, 0xe562, 0xe563, 0xe564, - 0xe565, 0xe566, 0xe567, 0xe568, - // F090 - 0xe569, 0xe56a, 0xe56b, 0xe56c, - 0xe56d, 0xe56e, 0xe56f, 0xe570, - 0xe571, 0xe572, 0xe573, 0xe574, - 0xe575, 0xe576, 0xe577, 0xe578, - // F0a0 - 0xe579, 0xe57a, 0xe57b, 0xe57c, - 0xe57d, 0xe57e, 0xe57f, 0xe580, - 0xe581, 0xe582, 0xe583, 0xe584, - 0xe585, 0xe586, 0xe587, 0xe588, - // F0b0 - 0xe589, 0xe58a, 0xe58b, 0xe58c, - 0xe58d, 0xe58e, 0xe58f, 0xe590, - 0xe591, 0xe592, 0xe593, 0xe594, - 0xe595, 0xe596, 0xe597, 0xe598, - // F0c0 - 0xe599, 0xe59a, 0xe59b, 0xe59c, - 0xe59d, 0xe59e, 0xe59f, 0xe5a0, - 0xe5a1, 0xe5a2, 0xe5a3, 0xe5a4, - 0xe5a5, 0xe5a6, 0xe5a7, 0xe5a8, - // F0d0 - 0xe5a9, 0xe5aa, 0xe5ab, 0xe5ac, - 0xe5ad, 0xe5ae, 0xe5af, 0xe5b0, - 0xe5b1, 0xe5b2, 0xe5b3, 0xe5b4, - 0xe5b5, 0xe5b6, 0xe5b7, 0xe5b8, - // F0e0 - 0xe5b9, 0xe5ba, 0xe5bb, 0xe5bc, - 0xe5bd, 0xe5be, 0xe5bf, 0xe5c0, - 0xe5c1, 0xe5c2, 0xe5c3, 0xe5c4, - 0xe5c5, 0xe5c6, 0xe5c7, 0xe5c8, - // F0f0 - 0xe5c9, 0, 0xe5cb, 0xe5cc, - 0xe5cd, 0xe5ce, 0xe5cf, 0xe5d0, - 0x203b, 0x2042, 0, 0, - 0, 0, 0, 0 -}; - -// ----------------------------------------------------------------------- - -static const sal_Unicode aWingDings3Tab[224] = -{ - // F020 - 0x0020, 0xe600, 0xe601, 0xe602, - 0xe603, 0x2196, 0xe604, 0x2199, - 0xe605, 0xe606, 0xe607, 0xe608, - 0xe609, 0xe60a, 0xe60b, 0x21de, - // F030 - 0x21df, 0xe60c, 0xe60d, 0xe60e, - 0x21e2, 0x21e1, 0x21e3, 0x21af, - 0x21b5, 0xe60f, 0xe610, 0xe611, - 0xe612, 0xe613, 0xe614, 0xe615, - // F040 - 0xe616, 0xe617, 0xe618, 0xe619, - 0x21c4, 0x21c5, 0xe61a, 0xe61b, - 0x21c7, 0x21c9, 0x21c8, 0x21ca, - 0x21b6, 0x21b7, 0xe61c, 0xe61d, - // F050 - 0x21bb, 0x21ba, 0xe61e, 0x2324, - 0x2303, 0x2325, 0x2334, 0xe61f, - 0x21ea, 0xe620, 0xe621, 0xe622, - 0xe623, 0xe624, 0xe625, 0xe626, - // F060 - 0xe627, 0xe628, 0xe629, 0xe62a, - 0xe62b, 0xe62c, 0xe62d, 0xe62e, - 0xe62f, 0xe630, 0xe631, 0xe632, - 0xe633, 0xe634, 0xe635, 0xe636, - // F070 - 0xe637, 0xe638, 0x25b3, 0x25bd, - 0x25c0, 0x25b6, 0x25c1, 0x25b7, - 0x25e3, 0xe639, 0x25e4, 0x25e5, - 0x25c2, 0x25b8, 0xe63a, 0, - // F080 - 0xe63b, 0xe63c, 0xe63d, 0xe63e, - 0xe63f, 0xe640, 0xe641, 0xe642, - 0xe643, 0xe644, 0xe645, 0xe646, - 0xe647, 0xe648, 0xe649, 0xe64a, - // F090 - 0xe64b, 0xe64c, 0xe64d, 0xe64e, - 0xe64f, 0xe650, 0xe651, 0xe652, - 0xe653, 0xe654, 0xe655, 0xe656, - 0xe657, 0xe658, 0xe659, 0xe65a, - // F0a0 - 0xe65b, 0xe65c, 0xe65d, 0xe65e, - 0xe65f, 0xe660, 0xe661, 0xe662, - 0xe663, 0xe664, 0xe665, 0xe666, - 0xe667, 0xe668, 0xe669, 0xe66a, - // F0b0 - 0xe66b, 0xe66c, 0xe66d, 0xe66e, - 0xe66f, 0xe670, 0xe671, 0xe672, - 0xe673, 0xe674, 0xe675, 0xe676, - 0xe677, 0xe678, 0xe679, 0xe67a, - // F0c0 - 0xe67b, 0xe67c, 0xe67d, 0xe67e, - 0xe67f, 0xe680, 0xe681, 0xe682, - 0xe683, 0xe684, 0xe685, 0xe686, - 0xe687, 0xe688, 0xe689, 0xe68a, - // F0d0 - 0xe68b, 0xe68c, 0xe68d, 0xe68e, - 0xe68f, 0xe690, 0xe691, 0xe692, - 0xe693, 0xe694, 0xe695, 0xe696, - 0xe697, 0xe698, 0xe699, 0xe69a, - // F0e0 - 0xe69b, 0xe69c, 0xe69d, 0xe69e, - 0xe69f, 0xe6a0, 0xe6a1, 0xe6a2, - 0xe6a3, 0xe6a4, 0xe6a5, 0xe6a6, - 0xe6a7, 0xe6a8, 0xe6a9, 0xe6aa, - // F0f0 - 0xe6ab, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0 -}; - -// ----------------------------------------------------------------------- - -static const sal_Unicode aWebDingsTab[224] = -{ - // F020 - 0x0020, 0xe300, 0xe301, 0xe302, - 0xe303, 0xe304, 0xe305, 0xe306, - 0xe307, 0xe308, 0xe309, 0xe30a, - 0xe30b, 0xe30c, 0xe30d, 0xe30e, - // F030 - 0xe30f, 0xe310, 0xe311, 0xe312, - 0xe313, 0xe314, 0xe315, 0xe316, - 0xe317, 0xe318, 0xe319, 0xe31a, - 0xe31b, 0xe31c, 0xe31d, 0xe31e, - // F040 - 0xe31f, 0xe320, 0xe321, 0xe322, - 0xe323, 0xe324, 0xe325, 0xe326, - 0xe327, 0xe328, 0xe329, 0xe32a, - 0xe32b, 0xe32c, 0xe32d, 0xe32e, - // F050 - 0xe32f, 0xe330, 0xe331, 0xe332, - 0xe333, 0xe334, 0xe335, 0xe336, - 0xe337, 0xe338, 0xe339, 0xe33a, - 0xe33b, 0xe33c, 0xe33d, 0xe33e, - // F060 - 0xe33f, 0xe340, 0xe341, 0xe342, - 0xe343, 0xe344, 0xe345, 0xe346, - 0xe347, 0xe348, 0xe349, 0xe34a, - 0xe34b, 0xe34c, 0xe34d, 0xe34e, - // F070 - 0xe34f, 0xe350, 0xe351, 0xe352, - 0xe353, 0xe354, 0xe355, 0xe356, - 0xe357, 0xe358, 0xe359, 0xe35a, - 0xe35b, 0xe35c, 0xe35d, 0, - // F080 - 0xe35e, 0xe35f, 0xe360, 0xe361, - 0xe362, 0xe363, 0xe364, 0xe365, - 0xe366, 0xe367, 0xe368, 0xe369, - 0xe36a, 0xe36b, 0xe36c, 0xe36d, - // F090 - 0xe36e, 0xe36f, 0xe370, 0xe371, - 0xe372, 0xe373, 0xe374, 0xe375, - 0xe376, 0xe377, 0xe378, 0xe379, - 0xe37a, 0xe37b, 0xe37c, 0xe37d, - // F0a0 - 0xe37e, 0xe37f, 0xe380, 0xe381, - 0xe382, 0xe383, 0xe384, 0xe385, - 0xe386, 0xe387, 0xe388, 0xe389, - 0xe38a, 0xe38b, 0xe38c, 0xe38d, - // F0b0 - 0xe38e, 0xe38f, 0xe390, 0xe391, - 0xe392, 0xe393, 0xe394, 0xe395, - 0xe396, 0xe397, 0xe398, 0xe399, - 0xe39a, 0xe39b, 0xe39c, 0xe39d, - // F0c0 - 0xe39e, 0xe39f, 0xe3a0, 0xe3a1, - 0xe3a2, 0xe3a3, 0xe3a4, 0xe3a5, - 0xe3a6, 0xe3a7, 0xe3a8, 0xe3a9, - 0xe3aa, 0xe3ab, 0xe3ac, 0xe3ad, - // F0d0 - 0xe3ae, 0xe3af, 0xe3b0, 0xe3b1, - 0xe3b2, 0xe3b3, 0xe3b4, 0xe3b5, - 0xe3b6, 0xe3b7, 0xe3b8, 0xe3b9, - 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd, - // F0e0 - 0xe3be, 0xe3bf, 0xe3c0, 0xe3c1, - 0xe3c2, 0xe3c3, 0xe3c4, 0xe3c5, - 0xe3c6, 0xe3c7, 0xe3c8, 0xe3c9, - 0xe3ca, 0xe3cb, 0xe3cd, 0xe3ce, - // F0f0 - 0xe3cf, 0xe3d0, 0xe3d1, 0xe3d2, - 0xe3d3, 0xe3d4, 0xe3d5, 0xe3d6, - 0xe3d7, 0xe3d8, 0xe3d9, 0xe3da, - 0xe3db, 0xe3dc, 0xe3dd, 0xe3de -}; - -// ----------------------------------------------------------------------- - -static const sal_Unicode aAdobeSymbolTab[224] = -{ -//TODO: - // F020 - 0x0020, 0xe100, 0xe101, 0xe102, - 0xe103, 0xe104, 0xe16a, 0xe105, - 0xe106, 0xe107, 0xe108, 0xe109, - 0xe10a, 0xe10b, 0xe10c, 0xe10d, - // F030 - 0x0030, 0x0031, 0x0032, 0x0033, - 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0xe10e, 0xe10f, - 0xe110, 0xe111, 0xe112, 0x003f, - // F040 - 0xe113, 0x0391, 0x0392, 0x03a7, - 0x0394, 0x0395, 0x03a6, 0x0393, - 0x0397, 0x0399, 0x03d1, 0x039a, - 0x039b, 0x039c, 0x039d, 0x039f, - // F050 - 0x03a0, 0x0398, 0x03a1, 0x03a3, - 0x03a4, 0x03a5, 0x03c2, 0x03a9, - 0x039e, 0x03a8, 0x0396, 0xe114, - 0x2234, 0xe115, 0xe116, 0x005f, - // F060 - 0x00af, 0x03b1, 0x03b2, 0x03c7, - 0x03b4, 0x03b5, 0x03d5, 0x03b3, - 0x03b7, 0x03b9, 0x03c6, 0x03ba, - 0x03bb, 0x03bc, 0x03bd, 0x03bf, - // F070 - 0x03c0, 0x03b8, 0x03c1, 0x03c3, - 0x03c4, 0x03c5, 0x03d6, 0x03c9, - 0x03be, 0x03c8, 0x03b6, 0xe117, - 0x007c, 0xe118, 0xe119, 0, - // F080 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F090 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0a0 - 0xe11a, 0x03d2, 0x0384, 0xe11b, - 0x2215, 0xe11c, 0xe11d, 0xe11e, - 0x2666, 0xe11f, 0xe120, 0xe121, - 0xe122, 0xe123, 0xe124, 0xe125, - // F0b0 - 0xe126, 0xe127, 0x2033, 0xe128, - 0xe129, 0xe12a, 0xe12b, 0xe12c, - 0xe12d, 0xe12e, 0xe12f, 0xe130, - 0xe131, 0x2502, 0x2500, 0x21b2, - // F0c0 - 0xe132, 0xe133, 0xe134, 0xe135, - 0xe136, 0xe137, 0xe138, 0xe139, - 0xe13a, 0xe13b, 0xe13c, 0xe13d, - 0xe13e, 0xe13f, 0xe140, 0xe141, - // F0d0 - 0x2220, 0xe142, 0x00ae, 0x00a9, - 0xe143, 0xe144, 0xe145, 0xe146, - 0xe147, 0xe148, 0xe149, 0xe14a, - 0xe14b, 0x21d1, 0xe14c, 0x21d3, - // F0e0 - 0x25ca, 0xe14d, 0xe14e, 0xe14f, - 0xe150, 0xe151, 0xe152, 0xe153, - 0xe154, 0xe155, 0xe156, 0xe157, - 0xe158, 0xe159, 0xe15a, 0xe15b, - // F0f0 - 0, 0xe15c, 0xe15d, 0xe15e, - 0xe15f, 0xe160, 0xe161, 0xe162, - 0xe163, 0xe164, 0xe165, 0xe166, - 0xe167, 0xe168, 0xe169, 0, -}; - -// ----------------------------------------------------------------------- - -static const sal_Unicode aMonotypeSortsTab[224] = -{ - // F020 - 0x0020, 0x2701, 0xe200, 0x2703, - 0x2704, 0xe201, 0x2706, 0xe202, - 0xe203, 0xe203, 0xe204, 0xe205, - 0x270c, 0xe206, 0xe207, 0xe208, - // F030 - 0x2710, 0x2711, 0x2712, 0xe209, - 0xe20a, 0x2715, 0x2716, 0xe20b, - 0xe20c, 0xe20d, 0xe20e, 0xe20f, - 0xe210, 0x271d, 0x271e, 0x271f, - // F040 - 0x2720, 0xe211, 0xe212, 0xe213, - 0xe214, 0xe215, 0x2726, 0x2727, - 0x2605, 0x2729, 0x272a, 0xe216, - 0xe217, 0xe218, 0xe219, 0xe21a, - // F050 - 0xe21b, 0xe21c, 0x2732, 0xe21d, - 0xe21e, 0xe21f, 0xe220, 0xe221, - 0xe222, 0xe223, 0x273a, 0x273b, - 0x273c, 0x273d, 0x273e, 0xe224, - // F060 - 0x2740, 0x2741, 0x2742, 0x2743, - 0xe225, 0x2745, 0x2746, 0x2747, - 0x2748, 0x2749, 0x274a, 0x274b, - 0xe226, 0xe227, 0xe228, 0xe229, - // F070 - 0xe22a, 0xe22b, 0xe22c, 0x25b2, - 0x25bc, 0xe22d, 0xe22e, 0xe22f, - 0x2758, 0xe230, 0x275a, 0x275b, - 0x275c, 0x275d, 0x275e, 0, - // F080 - 0xe231, 0xe232, 0xe233, 0xe234, - 0xe235, 0xe236, 0xe237, 0xe238, - 0xe239, 0xe23a, 0xe23b, 0xe23c, - 0xe23d, 0xe23e, 0, 0, - // F090 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0a0 - 0, 0xe23f, 0xe240, 0x2763, - 0x2764, 0x2765, 0x2766, 0x2767, - 0xe241, 0xe242, 0xe243, 0xe244, - 0x2460, 0x2461, 0x2462, 0x2463, - // F0b0 - 0x2464, 0x2465, 0x2466, 0x2467, - 0x2468, 0x2469, 0x2776, 0x2777, - 0x2778, 0x2779, 0x277a, 0x277b, - 0x277c, 0x277d, 0x277e, 0x277f, - // F0c0 - 0xe245, 0xe246, 0xe247, 0xe248, - 0xe249, 0xe24a, 0xe24b, 0xe24c, - 0xe24d, 0xe24e, 0xe24f, 0xe250, - 0xe251, 0xe252, 0xe253, 0xe254, - // F0d0 - 0xe255, 0xe256, 0xe257, 0xe258, - 0xe259, 0xe25a, 0xe25b, 0xe25c, - 0xe25d, 0x2799, 0xe25e, 0x279b, - 0x279c, 0x279d, 0x279e, 0x279f, - // F0e0 - 0x27a0, 0x27a1, 0xe25f, 0x27a3, - 0x27a4, 0x27a5, 0x27a6, 0x27a7, - 0x27a8, 0x27a9, 0x27aa, 0x27ab, - 0x27ac, 0x27ad, 0x27ae, 0x27af, - // F0f0 - 0, 0x27b1, 0xe260, 0x27b3, - 0x27b4, 0x27b5, 0x27b6, 0x27b7, - 0xe261, 0x27b9, 0x27ba, 0x27bb, - 0x27bc, 0x27bd, 0x27be, 0, -}; - -// ----------------------------------------------------------------------- - -/* -static const sal_Unicode aMonotypeSorts2Tab[224] = -{ -//TODO: - // F020 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F030 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F040 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F050 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F060 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F070 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F080 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F090 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0a0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0b0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0c0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0d0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0e0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0f0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, -}; -*/ - -static const sal_Unicode aMTExtraTab[224] = -{ - // F020 - 0x0020, 0, 0, 0xE095, - 0xE091, 0xE096, 0x02D9, 0, - 0xE093, 0, 0, 0, - 0, 0, 0, 0, - // F030 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0x25C1, 0, 0x25B7, 0, - // F040 - 0, 0, 0x2210, 0x019b, - 0, 0, 0, 0, - 0, 0x2229, 0, 0xE08B, - 0x22EF, 0x22EE, 0x22F0, 0x22F1, - // F050 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F060 - 0xE095, 0, 0xE25C, 0xE4BA, - 0, 0, 0x210F, 0, - 0, 0, 0, 0, - 0x2113, 0x2213, 0, 0x00B0, - // F070 - 0, 0, 0xE098, 0, - 0, 0xE097, 0, 0, - 0, 0, 0, 0xE081, - 0, 0xE082, 0, 0, - // F080 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F090 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0a0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0b0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0c0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0d0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0e0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - // F0f0 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0 -}; - - -//======================================================================= - -static sal_Unicode ImplStarSymbolToStarBats( sal_Unicode c ) -{ - switch ( c ) - { - case 0x00A2: c = 0xF0E0; break; - case 0x00A4: c = 0xF0E1; break; - case 0x00A5: c = 0xF0E2; break; - case 0x00A7: c = 0xF0A7; break; - case 0x00AB: c = 0xF0AB; break; - case 0x00B6: c = 0xF0DE; break; - case 0x00BB: c = 0xF0BB; break; - - case 0x0152: c = 0xF08C; break; - case 0x0153: c = 0xF09C; break; - case 0x0160: c = 0xF08A; break; - case 0x0161: c = 0xF09A; break; - case 0x0178: c = 0xF09F; break; - case 0x017D: c = 0xF08E; break; - case 0x017E: c = 0xF09E; break; - - case 0x0192: c = 0xF083; break; - case 0x02C6: c = 0xF088; break; - case 0x02DC: c = 0xF098; break; - case 0x2013: c = 0xF096; break; - case 0x2014: c = 0xF097; break; - case 0x2018: c = 0xF091; break; - - case 0x2019: c = 0xF092; break; - case 0x201A: c = 0xF082; break; - case 0x201C: c = 0xF093; break; - case 0x201D: c = 0xF094; break; - case 0x201E: c = 0xF084; break; - case 0x2020: c = 0xF086; break; - - case 0x2021: c = 0xF087; break; - case 0x2022: c = 0xF095; break; - case 0x2026: c = 0xF085; break; - case 0x2030: c = 0xF089; break; - case 0x2039: c = 0xF08B; break; - case 0x203A: c = 0xF09B; break; - - case 0x20A1: c = 0xF0E4; break; - case 0x20A2: c = 0xF0E5; break; - case 0x20A3: c = 0xF0E6; break; - case 0x20A4: c = 0xF0E7; break; - case 0x20A8: c = 0xF0EA; break; - case 0x20A9: c = 0xF0E8; break; - case 0x20AB: c = 0xF0E9; break; - case 0x20AC: c = 0xF080; break; - - case 0x2122: c = 0xF099; break; - case 0x2190: c = 0xF0B7; break; - case 0x2191: c = 0xF0B8; break; - case 0x2192: c = 0xF0B5; break; - case 0x2193: c = 0xF0B6; break; - case 0x2194: c = 0xF0D8; break; - case 0x2195: c = 0xF0D9; break; - - case 0x21E4: c = 0xF0B4; break; - case 0x21E5: c = 0xF0B3; break; - case 0x21E6: c = 0xF0A4; break; - case 0x21E7: c = 0xF0B2; break; - case 0x21E8: c = 0xF0AF; break; - case 0x21E9: c = 0xF0A3; break; - - case 0x25A0: c = 0xF024; break; - case 0x25A1: c = 0xF025; break; - case 0x25B4: c = 0xF0C5; break; - case 0x25B5: c = 0xF0C7; break; - case 0x25BE: c = 0xF0C4; break; - case 0x25BF: c = 0xF0C6; break; - case 0x25C6: c = 0xF043; break; - case 0x25CF: c = 0xF022; break; - case 0x25D7: c = 0xF0D0; break; - - case 0x260E: c = 0xF074; break; - case 0x2611: c = 0xF034; break; - case 0x2612: c = 0xF033; break; - case 0x261B: c = 0xF036; break; - case 0x261E: c = 0xF07D; break; - case 0x2639: c = 0xF0AD; break; - case 0x263A: c = 0xF021; break; - - case 0x2702: c = 0xF0CB; break; - case 0x2708: c = 0xF0CC; break; - case 0x270D: c = 0xF07E; break; - case 0x270E: c = 0xF038; break; - - case 0x2713: c = 0xF039; break; - case 0x2714: c = 0xF03A; break; - case 0x2717: c = 0xF04F; break; - case 0x2718: c = 0xF050; break; - case 0x2719: c = 0xF051; break; - case 0x271A: c = 0xF052; break; - case 0x271B: c = 0xF053; break; - case 0x271C: c = 0xF054; break; - - case 0x2721: c = 0xF0CD; break; - case 0x2722: c = 0xF044; break; - case 0x2723: c = 0xF045; break; - case 0x2724: c = 0xF046; break; - case 0x2725: c = 0xF047; break; - case 0x272B: c = 0xF055; break; - case 0x272C: c = 0xF056; break; - case 0x272D: c = 0xF057; break; - case 0x272E: c = 0xF058; break; - case 0x272F: c = 0xF059; break; - - case 0x2730: c = 0xF05A; break; - case 0x2733: c = 0xF048; break; - case 0x2734: c = 0xF049; break; - case 0x2735: c = 0xF04A; break; - case 0x2736: c = 0xF04B; break; - case 0x2737: c = 0xF04C; break; - case 0x2738: c = 0xF04D; break; - case 0x2739: c = 0xF04E; break; - case 0x273F: c = 0xF0CE; break; - - case 0x2744: c = 0xF0CF; break; - case 0x274D: c = 0xF023; break; - case 0x274F: c = 0xF03E; break; - case 0x2750: c = 0xF03F; break; - case 0x2751: c = 0xF027; break; - case 0x2752: c = 0xF028; break; - case 0x2756: c = 0xF02C; break; - case 0x2759: c = 0xF0D1; break; - case 0x2762: c = 0xF0D4; break; - - case 0x2780: c = 0xF068; break; - case 0x2781: c = 0xF069; break; - case 0x2782: c = 0xF06A; break; - case 0x2783: c = 0xF06B; break; - case 0x2784: c = 0xF06C; break; - case 0x2785: c = 0xF06D; break; - case 0x2786: c = 0xF06E; break; - case 0x2787: c = 0xF06F; break; - case 0x2788: c = 0xF070; break; - case 0x2789: c = 0xF071; break; - case 0x278A: c = 0xF05D; break; - case 0x278B: c = 0xF05E; break; - case 0x278C: c = 0xF05F; break; - case 0x278D: c = 0xF060; break; - case 0x278E: c = 0xF061; break; - case 0x278F: c = 0xF062; break; - - case 0x2790: c = 0xF063; break; - case 0x2791: c = 0xF064; break; - case 0x2792: c = 0xF065; break; - case 0x2793: c = 0xF066; break; - case 0x2794: c = 0xF031; break; - case 0x2798: c = 0xF0DA; break; - case 0x279A: c = 0xF0DB; break; - - case 0x27A2: c = 0xF02F; break; - case 0x27B2: c = 0xF035; break; - case 0x27B8: c = 0xF0DC; break; - - case 0xE000: c = 0xF000+38; break; - case 0xE001: c = 0xF000+41; break; - case 0xE002: c = 0xF000+42; break; - case 0xE003: c = 0xF000+43; break; - case 0xE004: c = 0xF000+45; break; - case 0xE005: c = 0xF000+46; break; - case 0xE006: c = 0xF000+48; break; - case 0xE007: c = 0xF000+57; break; - - case 0xE008: c = 0xF000+59; break; - case 0xE009: c = 0xF000+60; break; - case 0xE00a: c = 0xF000+61; break; - case 0xE00b: c = 0xF000+64; break; - case 0xE00c: c = 0xF000+65; break; - case 0xE00d: c = 0xF000+66; break; - case 0xE00e: c = 0xF000+67; break; - case 0xE00f: c = 0xF000+92; break; - - case 0xE010: c = 0xF000+103; break; - case 0xE011: c = 0xF000+114; break; - case 0xE012: c = 0xF000+115; break; - case 0xE013: c = 0xF000+117; break; - case 0xE014: c = 0xF000+118; break; - case 0xE015: c = 0xF000+119; break; - case 0xE016: c = 0xF000+120; break; - case 0xE017: c = 0xF000+121; break; - - case 0xE018: c = 0xF000+122; break; - case 0xE019: c = 0xF000+123; break; - case 0xE01a: c = 0xF000+124; break; - case 0xE01b: c = 0xF000+126; break; - case 0xE01c: c = 0xF000+136; break; - case 0xE01d: c = 0xF000+155; break; - case 0xE01e: c = 0xF000+165; break; - case 0xE01f: c = 0xF000+166; break; - - case 0xE020: c = 0xF000+168; break; - case 0xE021: c = 0xF000+169; break; - case 0xE022: c = 0xF000+170; break; - case 0xE023: c = 0xF000+172; break; - case 0xE024: c = 0xF000+174; break; - case 0xE025: c = 0xF000+175; break; - case 0xE026: c = 0xF000+176; break; - case 0xE027: c = 0xF000+177; break; - - case 0xE028: c = 0xF000+178; break; - case 0xE029: c = 0xF000+185; break; - case 0xE02a: c = 0xF000+186; break; - case 0xE02b: c = 0xF000+188; break; - case 0xE02c: c = 0xF000+189; break; - case 0xE02d: c = 0xF000+190; break; - case 0xE02e: c = 0xF000+191; break; - case 0xE02f: c = 0xF000+192; break; - - case 0xE030: c = 0xF000+193; break; - case 0xE031: c = 0xF000+194; break; - case 0xE032: c = 0xF000+195; break; - case 0xE033: c = 0xF000+200; break; - case 0xE034: c = 0xF000+201; break; - case 0xE035: c = 0xF000+202; break; - case 0xE036: c = 0xF000+210; break; - case 0xE037: c = 0xF000+211; break; - - case 0xE038: c = 0xF000+227; break; - case 0xE039: c = 0xF000+235; break; - case 0xE03a: c = 0xF000+255; break; - - default: c = 0; break; - } - - return c; -} - -enum SymbolFont -{ - Symbol=1, Wingdings=2, MonotypeSorts=4, Webdings=8, Wingdings2=16, - Wingdings3=32, MTExtra=64, TimesNewRoman=128 -}; - -const char *aSymbolNames[] = -{ - "Symbol", "Wingdings", "Monotype Sorts", "Webdings", "Wingdings 2", - "Wingdings 3", "MT Extra", "Times New Roman" -}; - -struct SymbolEntry -{ - sal_uInt8 cIndex; - enum SymbolFont eFont; -}; - -class StarSymbolToMSMultiFontImpl : public StarSymbolToMSMultiFont -{ -private: - ::std::multimap<sal_Unicode, SymbolEntry> maMagicMap; -public: - StarSymbolToMSMultiFontImpl(bool bPerfectOnly); - String ConvertChar(sal_Unicode &rChar); - String ConvertString(String &rString, xub_StrLen& rIndex); -}; - -struct ExtraTable { sal_Unicode cStar; sal_uInt8 cMS;}; - -ExtraTable aWingDingsExtraTab[] = -{ - {0x25cf, 0x6C}, {0x2714, 0xFC}, {0x2717, 0xFB}, {0x2794, 0xE8}, - {0x27a2, 0xD8}, {0xe000, 0x6F}, {0xe001, 0x73}, {0xe002, 0x74}, - {0xe003, 0x75}, {0xe004, 0x77}, {0xe005, 0xA6}, {0xe006, 0xE0}, - {0xe007, 0xFC}, {0xe008, 0x6C}, {0xe009, 0x6D}, {0xe00a, 0x6E}, - {0xe00b, 0x72}, {0xe00c, 0x75}, {0xe00d, 0x76}, {0xe00e, 0x74}, - {0xe00f, 0x8B}, {0xe010, 0x80}, {0xe011, 0x2B}, {0xe012, 0x3A}, - {0xe013, 0x5D}, {0xe014, 0x29}, {0xe015, 0x3A}, {0xe016, 0x3C}, - {0xe017, 0x38}, {0xe018, 0x3A}, {0xe019, 0x2A}, {0xe01a, 0x2B}, - {0xe01b, 0x3F}, {0xe01c, 0x9F}, {0xe01d, 0x80}, {0xe01e, 0x8B}, - {0xe023, 0x4A}, {0xe025, 0xF0}, {0xe026, 0xF2}, {0xe027, 0xEF}, - {0xe028, 0xF1}, {0xe029, 0x52}, {0xe02a, 0x29}, {0xe02b, 0xE0}, - {0xe02c, 0xE2}, {0xe02d, 0xDF}, {0xe02e, 0xE1}, {0xe02f, 0xAC}, - {0xe030, 0xAD}, {0xe031, 0xAE}, {0xe032, 0x7C}, {0xe033, 0x43}, - {0xe034, 0x4D}, {0xe0aa, 0x71}, {0xe422, 0x44} -}; - -ExtraTable aSymbolExtraTab2[] = -{ - {0x0020, 0x20}, {0x00A0, 0x20}, {0x0021, 0x21}, {0x2200, 0x22}, - {0x0023, 0x23}, {0x2203, 0x24}, {0x0025, 0x25}, {0x0026, 0x26}, - {0x220B, 0x27}, {0x0028, 0x28}, {0x0029, 0x29}, {0x2217, 0x2A}, - {0x002B, 0x2B}, {0x002C, 0x2C}, {0x2212, 0x2D}, {0x002E, 0x2E}, - {0x002F, 0x2F}, {0x003A, 0x3A}, {0x003B, 0x3B}, {0x003C, 0x3C}, - {0x003D, 0x3D}, {0x003E, 0x3E}, {0x2245, 0x40}, {0x2206, 0x44}, - {0x2126, 0x57}, {0x005B, 0x5B}, {0x005D, 0x5D}, {0x22A5, 0x5E}, - {0x03C6, 0x66}, {0x03D5, 0x6A}, {0x00B5, 0x6D}, {0x007B, 0x7B}, - {0x007C, 0x7C}, {0x007D, 0x7D}, {0x223C, 0x7E}, {0x20AC, 0xA0}, - {0x2032, 0xA2}, {0x2264, 0xA3}, {0x2044, 0xA4}, {0x221E, 0xA5}, - {0x0192, 0xA6}, {0x2663, 0xA7}, {0x2665, 0xA9}, {0x2660, 0xAA}, - {0x2194, 0xAB}, {0x2190, 0xAC}, {0x2191, 0xAD}, {0x2192, 0xAE}, - {0x2193, 0xAF}, {0x00B0, 0xB0}, {0x00B1, 0xB1}, {0x2265, 0xB3}, - {0x00D7, 0xB4}, {0x221D, 0xB5}, {0x2202, 0xB6}, {0x2022, 0xB7}, - {0x00F7, 0xB8}, {0x2260, 0xB9}, {0x2261, 0xBA}, {0x2248, 0xBB}, - {0x2026, 0xBC}, {0x21B5, 0xBF}, {0x2135, 0xC0}, {0x2111, 0xC1}, - {0x211C, 0xC2}, {0x2118, 0xC3}, {0x2297, 0xC4}, {0x2295, 0xC5}, - {0x2205, 0xC6}, {0x2229, 0xC7}, {0x222A, 0xC8}, {0x2283, 0xC9}, - {0x2287, 0xCA}, {0x2284, 0xCB}, {0x2282, 0xCC}, {0x2286, 0xCD}, - {0x2208, 0xCE}, {0x2209, 0xCF}, {0x2207, 0xD1}, {0x220F, 0xD5}, - {0x221A, 0xD6}, {0x22C5, 0xD7}, {0x00AC, 0xD8}, {0x2227, 0xD9}, - {0x2228, 0xDA}, {0x21D4, 0xDB}, {0x21D0, 0xDC}, {0x21D2, 0xDE}, - {0x2329, 0xE1}, {0x2211, 0xE5}, {0x232A, 0xF1}, {0x222B, 0xF2}, - {0x2320, 0xF3}, {0x2321, 0xF5}, {0x2013, 0x2D} -}; - -ExtraTable aSymbolExtraTab[] = -{ - {0xe021, 0xD3}, {0xe024, 0xD2}, {0xe035, 0x20}, {0xe036, 0x28}, - {0xe037, 0x29}, {0xe039, 0x20}, {0xe083, 0x2B}, {0xe084, 0x3C}, - {0xe085, 0x3E}, {0xe086, 0xA3}, {0xe087, 0xB3}, {0xe089, 0xCE}, - {0xe08a, 0xA6}, {0xe08c, 0xAE}, {0xe08d, 0xD6}, {0xe08e, 0xD6}, - {0xe08f, 0xD6}, {0xe094, 0xA2}, {0xe09e, 0x28}, {0xe09f, 0x29}, - {0xe0a0, 0xD0}, {0xe0a6, 0xA2}, {0xe0a7, 0x7C}, {0xe0a8, 0x2F}, - {0xe0ab, 0x7C}, {0xe0ac, 0x47}, {0xe0ad, 0x44}, {0xe0ae, 0x51}, - {0xe0af, 0x4C}, {0xe0b0, 0x58}, {0xe0b1, 0x50}, {0xe0b2, 0x53}, - {0xe0b3, 0x55}, {0xe0b4, 0x46}, {0xe0b5, 0x59}, {0xe0b6, 0x57}, - {0xe0b7, 0x61}, {0xe0b8, 0x62}, {0xe0b9, 0x67}, {0xe0ba, 0x64}, - {0xe0bb, 0x65}, {0xe0bc, 0x7A}, {0xe0bd, 0x68}, {0xe0be, 0x71}, - {0xe0bf, 0x69}, {0xe0c0, 0x6B}, {0xe0c1, 0x6C}, {0xe0c2, 0x6D}, - {0xe0c3, 0x6E}, {0xe0c4, 0x78}, {0xe0c5, 0x6F}, {0xe0c6, 0x70}, - {0xe0c7, 0x72}, {0xe0c8, 0x73}, {0xe0c9, 0x74}, {0xe0ca, 0x75}, - {0xe0cb, 0x66}, {0xe0cc, 0x63}, {0xe0cd, 0x79}, {0xe0ce, 0x77}, - {0xe0cf, 0x65}, {0xe0d0, 0x4A}, {0xe0d1, 0x76}, {0xe0d3, 0x56}, - {0xe0d4, 0x6A}, {0xe0d5, 0xB6}, {0xe0d6, 0x69}, {0xe0db, 0xAC}, - {0xe0dc, 0xAD}, {0xe0dd, 0xAF} -}; - -ExtraTable aTNRExtraTab[] = -{ - {0xe021, 0xA9}, - {0xe022, 0x40}, - {0xe024, 0xAE}, - {0xe035, 0x20}, - {0xe036, '('}, - {0xe037, ')'}, - {0xe039, 0x20}, - {0xe03a, 0x80}, - {0xe080, 0x89}, - {0xe083, '+'}, - {0xe084, '<'}, - {0xe085, '>'}, - {0xe0a9, '\\'} -}; - -StarSymbolToMSMultiFontImpl::StarSymbolToMSMultiFontImpl(bool bPerfectOnly) -{ - struct ConvertTable - { - enum SymbolFont meFont; - const sal_Unicode* pTab; - }; - - //In order of preference - const ConvertTable aConservativeTable[] = - { - {Symbol, aAdobeSymbolTab}, - {Wingdings, aWingDingsTab}, - {MonotypeSorts, aMonotypeSortsTab}, - {Webdings, aWebDingsTab}, - {Wingdings2, aWingDings2Tab}, - {Wingdings3, aWingDings3Tab}, - {MTExtra, aMTExtraTab} - }; - - struct ExtendedConvertTable - { - enum SymbolFont meFont; - const ExtraTable *mpTable; - size_t mnSize; - ExtendedConvertTable(SymbolFont eFont, const ExtraTable *pTable, - size_t nSize) - : meFont(eFont), mpTable(pTable), mnSize(nSize) {} - }; - - //Reverse map from a given starsymbol char to exact matches in ms symbol - //fonts. - int nEntries = SAL_N_ELEMENTS(aConservativeTable); - int i; - for (i = 0; i < nEntries; ++i) - { - const ConvertTable& r = aConservativeTable[i]; - SymbolEntry aEntry; - aEntry.eFont = r.meFont; - for (aEntry.cIndex = 0xFF; aEntry.cIndex >= 0x20; --aEntry.cIndex) - { - if (sal_Unicode cChar = r.pTab[aEntry.cIndex-0x20]) - maMagicMap.insert( - ::std::multimap<sal_Unicode, SymbolEntry>::value_type( - cChar, aEntry)); - } - } - - //In order of preference - const ExtendedConvertTable aAgressiveTable[] = - { - ExtendedConvertTable(Symbol, aSymbolExtraTab2, - sizeof(aSymbolExtraTab2)), - ExtendedConvertTable(Symbol, aSymbolExtraTab, - sizeof(aSymbolExtraTab)), - ExtendedConvertTable(Wingdings, aWingDingsExtraTab, - sizeof(aWingDingsExtraTab)), - ExtendedConvertTable(TimesNewRoman, aTNRExtraTab, - sizeof(aTNRExtraTab)) - }; - - //Allow extra conversions that are not perfect, but "good enough" - if (!bPerfectOnly) - nEntries = SAL_N_ELEMENTS(aAgressiveTable); - else - nEntries = 1; - - for (i = 0; i < nEntries; ++i) - { - const ExtendedConvertTable& r = aAgressiveTable[i]; - SymbolEntry aEntry; - aEntry.eFont = r.meFont; - for (int j = r.mnSize / sizeof(r.mpTable[0]); j >=0; --j) - { - aEntry.cIndex = r.mpTable[j].cMS; - maMagicMap.insert( - ::std::multimap<sal_Unicode, SymbolEntry>::value_type( - r.mpTable[j].cStar, aEntry)); - } - } -} - -const char *SymbolFontToString(int nResult) -{ - const char **ppName = aSymbolNames; - int nI = Symbol; - while (nI <= nResult) - { - if (!(nI & nResult)) - nI = nI << 1; - else - break; - ppName++; - } - return *ppName; -} - -String StarSymbolToMSMultiFontImpl::ConvertChar(sal_Unicode &rChar) -{ - String sRet; - - ::std::multimap<sal_Unicode, SymbolEntry>::const_iterator aResult = - maMagicMap.find(rChar); - - if (aResult != maMagicMap.end()) - { - const SymbolEntry &rEntry = (*aResult).second; - sRet.AssignAscii(SymbolFontToString(rEntry.eFont)); - rChar = rEntry.cIndex; - } - - return sRet; -} - -String StarSymbolToMSMultiFontImpl::ConvertString(String &rString, - xub_StrLen& rIndex) -{ - typedef ::std::multimap<sal_Unicode, SymbolEntry>::iterator MI; - typedef ::std::pair<MI, MI> Result; - - String sRet; - - xub_StrLen nLen = rString.Len(); - if (rIndex >= nLen) - return sRet; - - int nTotal = 0, nResult = 0; - ::std::vector<Result> aPossibilities; - aPossibilities.reserve(nLen - rIndex); - xub_StrLen nStart = rIndex; - do - { - Result aResult = maMagicMap.equal_range(rString.GetChar(rIndex)); - int nBitfield = 0; - for (MI aIndex = aResult.first; aIndex != aResult.second; ++aIndex) - nBitfield |= aIndex->second.eFont; - - if (!nTotal) - nTotal = nBitfield; - else - { - if (nTotal != nBitfield) //Allow a series of failures - { - nTotal &= nBitfield; - if (!nTotal) - break; - } - } - nResult = nTotal; - if (nResult) //Don't bother storing a series of failures - aPossibilities.push_back(aResult); - ++rIndex; - }while(rIndex < nLen); - - if (nResult) - { - int nI = Symbol; - while (nI <= nResult) - { - if (!(nI & nResult)) - nI = nI << 1; - else - break; - } - sRet.AssignAscii(SymbolFontToString(nI)); - - xub_StrLen nSize = sal::static_int_cast<xub_StrLen>(aPossibilities.size()); - for(xub_StrLen nPos = 0; nPos < nSize; ++nPos) - { - const Result &rResult = aPossibilities[nPos]; - - for (MI aIndex = rResult.first; aIndex != rResult.second; ++aIndex) - { - if (aIndex->second.eFont == nI) - { - rString.SetChar(nPos+nStart, aIndex->second.cIndex); - break; - } - } - } - } - - return sRet; -} - -StarSymbolToMSMultiFont *CreateStarSymbolToMSMultiFont(bool bPerfectOnly) -{ - return new StarSymbolToMSMultiFontImpl(bPerfectOnly); -} - -//======================================================================= - -sal_Unicode ConvertChar::RecodeChar( sal_Unicode cChar ) const -{ - sal_Unicode cRetVal = 0; - if( mpCvtFunc ) - { - // use a conversion function for recoding - cRetVal = mpCvtFunc( cChar ); - } - else - { - // use a conversion table for recoding - sal_Unicode cIndex = cChar; - // allow symbol aliasing - if( cIndex & 0xFF00 ) - cIndex -= 0xF000; - // recode the symbol - if( cIndex>=0x0020 && cIndex<=0x00FF ) - cRetVal = mpCvtTab[ cIndex - 0x0020 ]; - } - - return cRetVal ? cRetVal : cChar; -} - -// ----------------------------------------------------------------------- - -// recode the string assuming the character codes are symbol codes -// from an traditional symbol font (i.e. U+F020..U+F0FF) -void ConvertChar::RecodeString( String& rStr, xub_StrLen nIndex, xub_StrLen nLen ) const -{ - sal_uLong nLastIndex = (sal_uLong)nIndex + nLen; - if( nLastIndex > rStr.Len() ) - nLastIndex = rStr.Len(); - - for(; nIndex < nLastIndex; ++nIndex ) - { - sal_Unicode cOrig = rStr.GetChar( nIndex ); - // only recode symbols and their U+00xx aliases - if( ((cOrig < 0x0020) || (cOrig > 0x00FF)) - && ((cOrig < 0xF020) || (cOrig > 0xF0FF)) ) - continue; - - // recode a symbol - sal_Unicode cNew = RecodeChar( cOrig ); - if( cOrig != cNew ) - rStr.SetChar( nIndex, cNew ); - } -} - -//======================================================================= - -struct RecodeTable { const char* pOrgName; ConvertChar aCvt;}; - -static RecodeTable aRecodeTable[] = -{ - // the first two entries must be StarMath and StarBats; do not reorder! - // reason: fgrep for FONTTOSUBSFONT_ONLYOLDSOSYMBOLFONTS - {"starbats", {aStarBatsTab, "StarSymbol", NULL}}, - {"starmath", {aStarMathTab, "StarSymbol", NULL}}, - - {"symbol", {aAdobeSymbolTab, "StarSymbol", NULL}}, - {"standardsymbols", {aAdobeSymbolTab, "StarSymbol", NULL}}, - {"standardsymbolsl",{aAdobeSymbolTab, "StarSymbol", NULL}}, - - {"monotypesorts", {aMonotypeSortsTab, "StarSymbol", NULL}}, -// {"monotypesorts2", {aMonotypeSorts2Tab, "StarSymbol", NULL}} - {"zapfdingbats", {aMonotypeSortsTab, "StarSymbol", NULL}}, //ZapfDingbats=MonotypeSorts-X? - {"itczapfdingbats", {aMonotypeSortsTab, "StarSymbol", NULL}}, - {"dingbats", {aMonotypeSortsTab, "StarSymbol", NULL}}, - - {"webdings", {aWebDingsTab, "StarSymbol", NULL}}, - {"wingdings", {aWingDingsTab, "StarSymbol", NULL}}, - {"wingdings2", {aWingDings2Tab, "StarSymbol", NULL}}, - {"wingdings3", {aWingDings3Tab, "StarSymbol", NULL}}, - {"mtextra", {aMTExtraTab, "StarSymbol", NULL}} -}; - -static ConvertChar aImplStarSymbolCvt = { NULL, "StarBats", ImplStarSymbolToStarBats }; - -// ----------------------------------------------------------------------- - -const ConvertChar* ConvertChar::GetRecodeData( const String& rOrgFontName, const String& rMapFontName ) -{ - const ConvertChar* pCvt = NULL; - String aOrgName( rOrgFontName ); - GetEnglishSearchFontName( aOrgName ); - String aMapName( rMapFontName ); - GetEnglishSearchFontName( aMapName ); - - if( aMapName.EqualsAscii( "starsymbol" ) - || aMapName.EqualsAscii( "opensymbol" ) ) - { - int nEntries = SAL_N_ELEMENTS(aRecodeTable); - for( int i = 0; i < nEntries; ++i) - { - RecodeTable& r = aRecodeTable[i]; - if( aOrgName.EqualsAscii( r.pOrgName ) ) - { pCvt = &r.aCvt; break; } - } - } - else if( aMapName.EqualsAscii( "starbats" ) ) - { - if( aOrgName.EqualsAscii( "starsymbol" ) ) - pCvt = &aImplStarSymbolCvt; - else if( aOrgName.EqualsAscii( "opensymbol" ) ) - pCvt = &aImplStarSymbolCvt; - } - - return pCvt; -} - -//======================================================================= - -FontToSubsFontConverter CreateFontToSubsFontConverter( - const String& rOrgName, sal_uLong nFlags ) -{ - const ConvertChar* pCvt = NULL; - - String aName = rOrgName; - GetEnglishSearchFontName( aName ); - - if ( nFlags & FONTTOSUBSFONT_IMPORT ) - { - int nEntries = SAL_N_ELEMENTS(aRecodeTable); - if ( nFlags & FONTTOSUBSFONT_ONLYOLDSOSYMBOLFONTS ) // only StarMath+StarBats - nEntries = 2; - for( int i = 0; i < nEntries; ++i ) - { - RecodeTable& r = aRecodeTable[i]; - if( aName.EqualsAscii( r.pOrgName ) ) - { pCvt = &r.aCvt; break; } - } - } - else - { - // TODO: FONTTOSUBSFONT_ONLYOLDSOSYMBOLFONTS - if( aName.EqualsAscii( "starsymbol" ) ) pCvt = &aImplStarSymbolCvt; - else if( aName.EqualsAscii( "opensymbol" ) ) pCvt = &aImplStarSymbolCvt; - } - - return (FontToSubsFontConverter)pCvt; -} - -// ----------------------------------------------------------------------- - -void DestroyFontToSubsFontConverter( FontToSubsFontConverter ) -{ - // nothing to do for now, because we use static ImplCvtChars -} - -// ----------------------------------------------------------------------- - -sal_Unicode ConvertFontToSubsFontChar( - FontToSubsFontConverter hConverter, sal_Unicode cChar ) -{ - if ( hConverter ) - return ((ConvertChar*)hConverter)->RecodeChar( cChar ); - else - return cChar; -} - -// ----------------------------------------------------------------------- - -String GetFontToSubsFontName( FontToSubsFontConverter hConverter ) -{ - if ( !hConverter ) - return String(); - - const char* pName = ((ConvertChar*)hConverter)->mpSubsFontName; - return String::CreateFromAscii( pName ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/misc/fontdefs.cxx b/unotools/source/misc/fontdefs.cxx deleted file mode 100644 index 186dfbb4ce..0000000000 --- a/unotools/source/misc/fontdefs.cxx +++ /dev/null @@ -1,608 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/fontdefs.hxx> -#include <unotools/fontcfg.hxx> -#include <boost/unordered_map.hpp> - -struct ImplLocalizedFontName -{ - const char* mpEnglishName; - const sal_Unicode* mpLocalizedNames; -}; - -// TODO: where did the 0,0 delimiters come from? A single 0 should suffice... -static sal_Unicode const aBatang[] = { 0xBC14, 0xD0D5, 0, 0 }; -static sal_Unicode const aBatangChe[] = { 0xBC14, 0xD0D5, 0xCCB4, 0, 0 }; -static sal_Unicode const aGungsuh[] = { 0xAD81, 0xC11C, 0, 0 }; -static sal_Unicode const aGungsuhChe[] = { 0xAD81, 0xC11C, 0xCCB4, 0, 0 }; -static sal_Unicode const aGulim[] = { 0xAD74, 0xB9BC, 0, 0 }; -static sal_Unicode const aGulimChe[] = { 0xAD74, 0xB9BC, 0xCCB4, 0, 0 }; -static sal_Unicode const aDotum[] = { 0xB3CB, 0xC6C0, 0, 0 }; -static sal_Unicode const aDotumChe[] = { 0xB3CB, 0xC6C0, 0xCCB4, 0, 0 }; -static sal_Unicode const aSimSun[] = { 0x5B8B, 0x4F53, 0, 0 }; -static sal_Unicode const aNSimSun[] = { 0x65B0, 0x5B8B, 0x4F53, 0, 0 }; -static sal_Unicode const aSimHei[] = { 0x9ED1, 0x4F53, 0, 0 }; -static sal_Unicode const aSimKai[] = { 0x6977, 0x4F53, 0, 0 }; -static sal_Unicode const azycjkSun[] = { 0x4E2D, 0x6613, 0x5B8B, 0x4F53, 0, 0 }; -static sal_Unicode const azycjkHei[] = { 0x4E2D, 0x6613, 0x9ED1, 0x4F53, 0, 0 }; -static sal_Unicode const azycjkKai[] = { 0x4E2D, 0x6613, 0x6977, 0x4F53, 0, 0 }; -static sal_Unicode const aFZHei[] = { 0x65B9, 0x6B63, 0x9ED1, 0x4F53, 0, 0 }; -static sal_Unicode const aFZKai[] = { 0x65B9, 0x6B63, 0x6977, 0x4F53, 0, 0 }; -static sal_Unicode const aFZSongYI[] = { 0x65B9, 0x6B63, 0x5B8B, 0x4E00, 0, 0 }; -static sal_Unicode const aFZShuSong[] = { 0x65B9, 0x6B63, 0x4E66, 0x5B8B, 0, 0 }; -static sal_Unicode const aFZFangSong[] = { 0x65B9, 0x6B63, 0x4EFF, 0x5B8B, 0, 0 }; -// Attention: this fonts includes the wrong encoding vector - so we double the names with correct and wrong encoding -// First one is the GB-Encoding (we think the correct one), second is the big5 encoded name -static sal_Unicode const aMHei[] = { 'm', 0x7B80, 0x9ED1, 0, 'm', 0x6F60, 0x7AAA, 0, 0 }; -static sal_Unicode const aMKai[] = { 'm', 0x7B80, 0x6977, 0x566C, 0, 'm', 0x6F60, 0x7FF1, 0x628E, 0, 0 }; -static sal_Unicode const aMSong[] = { 'm', 0x7B80, 0x5B8B, 0, 'm', 0x6F60, 0x51BC, 0, 0 }; -static sal_Unicode const aCFangSong[] = { 'm', 0x7B80, 0x592B, 0x5B8B, 0, 'm', 0x6F60, 0x6E98, 0x51BC, 0, 0 }; -static sal_Unicode const aMingLiU[] = { 0x7D30, 0x660E, 0x9AD4, 0, 0 }; -static sal_Unicode const aPMingLiU[] = { 0x65B0, 0x7D30, 0x660E, 0x9AD4, 0, 0 }; -static sal_Unicode const aHei[] = { 0x6865, 0, 0 }; -static sal_Unicode const aKai[] = { 0x6B61, 0, 0 }; -static sal_Unicode const aMing[] = { 0x6D69, 0x6E67, 0, 0 }; -static sal_Unicode const aMSGothic[] = { 'm','s', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 }; -static sal_Unicode const aMSPGothic[] = { 'm','s','p', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 }; -static sal_Unicode const aMSMincho[] = { 'm', 's', 0x660E, 0x671D, 0 }; -static sal_Unicode const aMSPMincho[] = { 'm','s','p', 0x660E, 0x671D, 0 }; -static sal_Unicode const aMSYaHei[] = { 0x5FAE, 0x8F6F, 0x96C5, 0x9ED1, 0 }; -static sal_Unicode const aMSJhengHei[] = { 0x5FAE, 0x8EDF, 0x6B63, 0x9ED1, 0x9AD4, 0 }; -static sal_Unicode const aMeiryo[] = { 0x30e1, 0x30a4, 0x30ea, 0x30aa, 0 }; -static sal_Unicode const aHGMinchoL[] = { 'h','g', 0x660E, 0x671D, 'l', 0, 0 }; -static sal_Unicode const aHGGothicB[] = { 'h','g', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 'b', 0 }; -static sal_Unicode const aHGPMinchoL[] = { 'h','g','p', 0x660E, 0x671D, 'l', 0 }; -static sal_Unicode const aHGPGothicB[] = { 'h','g','p', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 'b', 0 }; -static sal_Unicode const aHGMinchoLSun[] = { 'h','g', 0x660E, 0x671D, 'l', 's', 'u', 'n', 0 }; -static sal_Unicode const aHGPMinchoLSun[] = { 'h','g','p', 0x660E, 0x671D, 'l', 's', 'u', 'n', 0 }; -static sal_Unicode const aHGGothicBSun[] = { 'h', 'g', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 'b', 's', 'u', 'n', 0 }; -static sal_Unicode const aHGPGothicBSun[] = { 'h', 'g', 'p', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 'b', 's', 'u', 'n', 0 }; -static sal_Unicode const aHGHeiseiMin[] = { 'h', 'g', 0x5E73, 0x6210, 0x660E, 0x671D, 0x4F53, 0, 'h', 'g', 0x5E73, 0x6210, 0x660E, 0x671D, 0x4F53, 'w', '3', 'x', '1', '2', 0, 0 }; -static sal_Unicode const aIPAMincho[] = { 'i', 'p', 'a', 0x660E, 0x671D, 0 }; -static sal_Unicode const aIPAPMincho[] = { 'i', 'p', 'a', 'p', 0x660E, 0x671D, 0 }; -static sal_Unicode const aIPAGothic[] = { 'i', 'p', 'a', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 }; -static sal_Unicode const aIPAPGothic[] = { 'i', 'p', 'a', 'p', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 }; -static sal_Unicode const aIPAUIGothic[] = { 'i', 'p', 'a', 'u', 'i', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 }; -static sal_Unicode const aTakaoMincho[] = { 't', 'a', 'k', 'a', 'o', 0x660E, 0x671D, 0 }; -static sal_Unicode const aTakaoPMincho[] = { 't', 'a', 'k', 'a', 'o', 'p', 0x660E, 0x671D, 0 }; -static sal_Unicode const aTakaoGothic[] = { 't', 'a', 'k', 'a', 'o', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 }; -static sal_Unicode const aTakaoPGothic[] = { 't', 'a', 'k', 'a', 'o', 'p', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 }; -static sal_Unicode const aSazanamiMincho[] = { 0x3055, 0x3056, 0x306A, 0x307F, 0x660E, 0x671D, 0, 0 }; -static sal_Unicode const aSazanamiGothic[] = { 0x3055, 0x3056, 0x306A, 0x307F, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 }; -static sal_Unicode const aKochiMincho[] = { 0x6771, 0x98A8, 0x660E, 0x671D, 0, 0 }; -static sal_Unicode const aKochiGothic[] = { 0x6771, 0x98A8, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 }; -static sal_Unicode const aSunDotum[] = { 0xC36C, 0xB3CB, 0xC6C0, 0, 0 }; -static sal_Unicode const aSunGulim[] = { 0xC36C, 0xAD74, 0xB9BC, 0, 0 }; -static sal_Unicode const aSunBatang[] = { 0xC36C, 0xBC14, 0xD0D5, 0, 0 }; -static sal_Unicode const aBaekmukDotum[] = { 0xBC31, 0xBB35, 0xB3CB, 0xC6C0, 0, 0 }; -static sal_Unicode const aBaekmukGulim[] = { 0xBC31, 0xBB35, 0xAD74, 0xB9BC, 0, 0 }; -static sal_Unicode const aBaekmukBatang[] = { 0xBC31, 0xBB35, 0xBC14, 0xD0D5, 0, 0 }; -static sal_Unicode const aFzMingTi[] = { 0x65B9, 0x6B63, 0x660E, 0x9AD4, 0, 0 }; -static sal_Unicode const aFzHeiTiTW[]= { 0x65B9, 0x6B63, 0x9ED1, 0x9AD4, 0, 0 }; -static sal_Unicode const aFzKaiTiTW[]= { 0x65B9, 0x6B63, 0x6977, 0x9AD4, 0, 0 }; -static sal_Unicode const aFzHeiTiCN[]= { 0x65B9, 0x6B63, 0x9ED1, 0x4F53, 0, 0 }; -static sal_Unicode const aFzKaiTiCN[]= { 0x65B9, 0x6B63, 0x6977, 0x4F53, 0, 0 }; -static sal_Unicode const aFzSongTi[] = { 0x65B9, 0x6B63, 0x5B8B, 0x4F53, 0, 0 }; -static sal_Unicode const aHYMyeongJoExtra[] = { 'h', 'y', 0xACAC, 0xBA85, 0xC870, 0, 0 }; -static sal_Unicode const aHYSinMyeongJoMedium[] = { 'h', 'y', 0xC2E0, 0xBA85, 0xC870, 0, 0 }; -static sal_Unicode const aHYGothicMedium[] = { 'h', 'y', 0xC911, 0xACE0, 0xB515, 0, 0 }; -static sal_Unicode const aHYGraphicMedium[] = { 'h', 'y', 0xADF8, 0xB798, 0xD53D, 'm', 0, 0 }; -static sal_Unicode const aHYGraphic[] = { 'h', 'y', 0xADF8, 0xB798, 0xD53D, 0, 0 }; -static sal_Unicode const aNewGulim[] = { 0xC0C8, 0xAD74, 0xB9BC, 0, 0 }; -static sal_Unicode const aSunGungseo[] = { 0xC36C, 0xAD81, 0xC11C, 0, 0 }; -static sal_Unicode const aHYGungSoBold[] = { 'h','y', 0xAD81, 0xC11C, 'b', 0, 0 }; -static sal_Unicode const aHYGungSo[] = { 'h','y', 0xAD81, 0xC11C, 0, 0 }; -static sal_Unicode const aSunHeadLine[] = { 0xC36C, 0xD5E4, 0xB4DC, 0xB77C, 0xC778, 0, 0 }; -static sal_Unicode const aHYHeadLineMedium[] = { 'h', 'y', 0xD5E4, 0xB4DC, 0xB77C, 0xC778, 'm', 0, 0 }; -static sal_Unicode const aHYHeadLine[] = { 'h', 'y', 0xD5E4, 0xB4DC, 0xB77C, 0xC778, 0, 0 }; -static sal_Unicode const aYetR[] = { 0xD734, 0xBA3C, 0xC61B, 0xCCB4, 0, 0 }; -static sal_Unicode const aHYGothicExtra[] = { 'h', 'y', 0xACAC, 0xACE0, 0xB515, 0, 0 }; -static sal_Unicode const aSunMokPan[] = { 0xC36C, 0xBAA9, 0xD310, 0, 0 }; -static sal_Unicode const aSunYeopseo[] = { 0xC36C, 0xC5FD, 0xC11C, 0, 0 }; -static sal_Unicode const aSunBaekSong[] = { 0xC36C, 0xBC31, 0xC1A1, 0, 0 }; -static sal_Unicode const aHYPostLight[] = { 'h', 'y', 0xC5FD, 0xC11C, 'l', 0, 0 }; -static sal_Unicode const aHYPost[] = { 'h', 'y', 0xC5FD, 0xC11C, 0, 0 }; -static sal_Unicode const aMagicR[] = { 0xD734, 0xBA3C, 0xB9E4, 0xC9C1, 0xCCB4, 0, 0 }; -static sal_Unicode const aSunCrystal[] = { 0xC36C, 0xD06C, 0xB9AC, 0xC2A4, 0xD0C8, 0, 0 }; -static sal_Unicode const aSunSaemmul[] = { 0xC36C, 0xC0D8, 0xBB3C, 0, 0 }; -static sal_Unicode const aHaansoftBatang[] = { 0xD55C, 0xCEF4, 0xBC14, 0xD0D5, 0, 0 }; -static sal_Unicode const aHaansoftDotum[] = { 0xD55C, 0xCEF4, 0xB3CB, 0xC6C0, 0, 0 }; -static sal_Unicode const aHyhaeseo[] = { 0xD55C, 0xC591, 0xD574, 0xC11C, 0, 0 }; -static sal_Unicode const aMDSol[] = { 'm', 'd', 0xC194, 0xCCB4, 0, 0 }; -static sal_Unicode const aMDGaesung[] = { 'm', 'd', 0xAC1C, 0xC131, 0xCCB4, 0, 0 }; -static sal_Unicode const aMDArt[] = { 'm', 'd', 0xC544, 0xD2B8, 0xCCB4, 0, 0 }; -static sal_Unicode const aMDAlong[] = { 'm', 'd', 0xC544, 0xB871, 0xCCB4, 0, 0 }; -static sal_Unicode const aMDEasop[] = { 'm', 'd', 0xC774, 0xC19D, 0xCCB4, 0, 0 }; -static sal_Unicode const aHYShortSamulMedium[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 'm', 0 }; -static sal_Unicode const aHYShortSamul[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 0 }; -static sal_Unicode const aHGGothicE[] = { 'h','g', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'e', 0 }; -static sal_Unicode const aHGPGothicE[] = { 'h','g','p', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'e', 0 }; -static sal_Unicode const aHGSGothicE[] = { 'h','g','s', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'e', 0 }; -static sal_Unicode const aHGGothicM[] = { 'h','g', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'm', 0 }; -static sal_Unicode const aHGPGothicM[] = { 'h','g','p', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'm', 0 }; -static sal_Unicode const aHGSGothicM[] = { 'h','g','s', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'm', 0 }; -static sal_Unicode const aHGGyoshotai[] = { 'h','g', 0x884C, 0x66F8, 0x4F53, 0 }; -static sal_Unicode const aHGPGyoshotai[] = { 'h','g','p', 0x884C, 0x66F8, 0x4F53, 0 }; -static sal_Unicode const aHGSGyoshotai[] = { 'h','g','s', 0x884C, 0x66F8, 0x4F53, 0 }; -static sal_Unicode const aHGKyokashotai[] = { 'h','g', 0x6559, 0x79D1, 0x66F8, 0x4F53, 0 }; -static sal_Unicode const aHGPKyokashotai[] = { 'h','g','p', 0x6559, 0x79D1, 0x66F8, 0x4F53, 0 }; -static sal_Unicode const aHGSKyokashotai[] = { 'h','g','s', 0x6559, 0x79D1, 0x66F8, 0x4F53, 0 }; -static sal_Unicode const aHGMinchoB[] = { 'h','g', 0x660E, 0x671D, 'b', 0 }; -static sal_Unicode const aHGPMinchoB[] = { 'h','g','p', 0x660E, 0x671D, 'b', 0 }; -static sal_Unicode const aHGSMinchoB[] = { 'h','g','s', 0x660E, 0x671D, 'b', 0 }; -static sal_Unicode const aHGMinchoE[] = { 'h','g', 0x660E, 0x671D, 'e', 0 }; -static sal_Unicode const aHGPMinchoE[] = { 'h','g','p', 0x660E, 0x671D, 'e', 0 }; -static sal_Unicode const aHGSMinchoE[] = { 'h','g','s', 0x660E, 0x671D, 'e', 0 }; -static sal_Unicode const aHGSoeiKakupoptai[] = { 'h','g', 0x5275,0x82F1,0x89D2,0xFF8E, - 0xFF9F,0xFF6F,0xFF8C,0xFF9F,0x4F53,0}; -static sal_Unicode const aHGPSoeiKakupoptai[] = { 'h','g', 'p', 0x5275,0x82F1,0x89D2,0xFF8E, - 0xFF9F,0xFF6F,0xFF8C,0xFF9F,0x4F53,0}; -static sal_Unicode const aHGSSoeiKakupoptai[] = { 'h','g', 's', 0x5275,0x82F1,0x89D2,0xFF8E, - 0xFF9F,0xFF6F,0xFF8C,0xFF9F,0x4F53,0}; -static sal_Unicode const aHGSoeiPresenceEB[] = { 'h','g', 0x5275,0x82F1,0xFF8C,0xFF9F, - 0xFF9A,0xFF7E,0xFF9E,0xFF9D,0xFF7D, 'e','b',0}; -static sal_Unicode const aHGPSoeiPresenceEB[] = { 'h','g','p', 0x5275,0x82F1,0xFF8C,0xFF9F, - 0xFF9A,0xFF7E,0xFF9E,0xFF9D,0xFF7D, 'e','b',0}; -static sal_Unicode const aHGSSoeiPresenceEB[] = { 'h','g','s', 0x5275,0x82F1,0xFF8C,0xFF9F, - 0xFF9A,0xFF7E,0xFF9E,0xFF9D,0xFF7D, 'e','b',0}; -static sal_Unicode const aHGSoeiKakugothicUB[] = { 'h','g', 0x5275,0x82F1,0x89D2,0xFF7A, - 0xFF9E,0xFF7C,0xFF6F,0xFF78,'u','b',0}; -static sal_Unicode const aHGPSoeiKakugothicUB[] = { 'h','g','p', 0x5275,0x82F1,0x89D2,0xFF7A, - 0xFF9E,0xFF7C,0xFF6F,0xFF78,'u','b',0}; -static sal_Unicode const aHGSSoeiKakugothicUB[] = { 'h','g','s', 0x5275,0x82F1,0x89D2,0xFF7A, - 0xFF9E,0xFF7C,0xFF6F,0xFF78,'u','b',0}; -static sal_Unicode const aHGSeikaishotaiPRO[] = { 'h','g', 0x6B63,0x6977,0x66F8,0x4F53, '-','p','r','o',0}; -static sal_Unicode const aHGMaruGothicMPRO[] = { 'h','g', 0x4E38,0xFF7A,0xFF9E,0xFF7C,0xFF6F,0xFF78, '-','p','r','o',0}; -static sal_Unicode const aHiraginoMinchoPro[] = { 0x30D2, 0x30E9, 0x30AE, 0x30CE, 0x660E, 0x671D, 'p','r','o',0}; -static sal_Unicode const aHiraginoMinchoProN[] = { 0x30D2, 0x30E9, 0x30AE, 0x30CE, 0x660E, 0x671D, 'p','r','o','n',0}; -static sal_Unicode const aHiraginoKakuGothicPro[] = { 0x30D2, 0x30E9, 0x30AE, 0x30CE, 0x89D2, 0x30B4, 'p','r','o',0}; -static sal_Unicode const aHiraginoKakuGothicProN[] = { 0x30D2, 0x30E9, 0x30AE, 0x30CE, 0x89D2, 0x30B4, 'p','r','o','n',0}; -static sal_Unicode const aHiraginoMaruGothicPro[] = { 0x30D2, 0x30E9, 0x30AE, 0x30CE, 0x4E38, 0x30B4, 'p','r','o',0}; -static sal_Unicode const aHiraginoMaruGothicProN[] = { 0x30D2, 0x30E9, 0x30AE, 0x30CE, 0x4E38, 0x30B4, 'p','r','o','n',0}; - -static ImplLocalizedFontName aImplLocalizedNamesList[] = -{ -{ "batang", aBatang }, -{ "batangche", aBatangChe }, -{ "gungshu", aGungsuh }, -{ "gungshuche", aGungsuhChe }, -{ "gulim", aGulim }, -{ "gulimche", aGulimChe }, -{ "dotum", aDotum }, -{ "dotumche", aDotumChe }, -{ "simsun", aSimSun }, -{ "nsimsun", aNSimSun }, -{ "simhei", aSimHei }, -{ "simkai", aSimKai }, -{ "zycjksun", azycjkSun }, -{ "zycjkhei", azycjkHei }, -{ "zycjkkai", azycjkKai }, -{ "fzhei", aFZHei }, -{ "fzkai", aFZKai }, -{ "fzsong", aFZSongYI }, -{ "fzshusong", aFZShuSong }, -{ "fzfangsong", aFZFangSong }, -{ "mhei", aMHei }, -{ "mkai", aMKai }, -{ "msong", aMSong }, -{ "cfangsong", aCFangSong }, -{ "mingliu", aMingLiU }, -{ "pmingliu", aPMingLiU }, -{ "hei", aHei }, -{ "kai", aKai }, -{ "ming", aMing }, -{ "msgothic", aMSGothic }, -{ "mspgothic", aMSPGothic }, -{ "msmincho", aMSMincho }, -{ "mspmincho", aMSPMincho }, -{ "microsoftjhenghei", aMSJhengHei }, -{ "microsoftyahei", aMSYaHei }, -{ "meiryo", aMeiryo }, -{ "hgminchol", aHGMinchoL }, -{ "hggothicb", aHGGothicB }, -{ "hgpminchol", aHGPMinchoL }, -{ "hgpgothicb", aHGPGothicB }, -{ "hgmincholsun", aHGMinchoLSun }, -{ "hggothicbsun", aHGGothicBSun }, -{ "hgpmincholsun", aHGPMinchoLSun }, -{ "hgpgothicbsun", aHGPGothicBSun }, -{ "hgheiseimin", aHGHeiseiMin }, -{ "ipamincho", aIPAMincho }, -{ "ipapmincho", aIPAPMincho }, -{ "ipagothic", aIPAGothic }, -{ "ipapgothic", aIPAPGothic }, -{ "ipauigothic", aIPAUIGothic }, -{ "takaomincho", aTakaoMincho }, -{ "takaopmincho", aTakaoPMincho }, -{ "takaogothic", aTakaoGothic }, -{ "takaopgothic", aTakaoPGothic }, -{ "sazanamimincho", aSazanamiMincho }, -{ "sazanamigothic", aSazanamiGothic }, -{ "kochimincho", aKochiMincho }, -{ "kochigothic", aKochiGothic }, -{ "sundotum", aSunDotum }, -{ "sungulim", aSunGulim }, -{ "sunbatang", aSunBatang }, -{ "baekmukdotum", aBaekmukDotum }, -{ "baekmukgulim", aBaekmukGulim }, -{ "baekmukbatang", aBaekmukBatang }, -{ "fzheiti", aFzHeiTiCN }, -{ "fzheiti", aFzHeiTiTW }, -{ "fzkaiti", aFzKaiTiCN }, -{ "fzkaitib", aFzKaiTiTW }, -{ "fzmingtib", aFzMingTi }, -{ "fzsongti", aFzSongTi }, -{ "hymyeongjoextra", aHYMyeongJoExtra }, -{ "hysinmyeongjomedium", aHYSinMyeongJoMedium }, -{ "hygothicmedium", aHYGothicMedium }, -{ "hygraphicmedium", aHYGraphicMedium }, -{ "hygraphic", aHYGraphic }, -{ "newgulim", aNewGulim }, -{ "sungungseo", aSunGungseo }, -{ "hygungsobold", aHYGungSoBold }, -{ "hygungso", aHYGungSo }, -{ "sunheadline", aSunHeadLine }, -{ "hyheadlinemedium", aHYHeadLineMedium }, -{ "hyheadline", aHYHeadLine }, -{ "yetr", aYetR }, -{ "hygothicextra", aHYGothicExtra }, -{ "sunmokpan", aSunMokPan }, -{ "sunyeopseo", aSunYeopseo }, -{ "sunbaeksong", aSunBaekSong }, -{ "hypostlight", aHYPostLight }, -{ "hypost", aHYPost }, -{ "magicr", aMagicR }, -{ "suncrystal", aSunCrystal }, -{ "sunsaemmul", aSunSaemmul }, -{ "hyshortsamulmedium", aHYShortSamulMedium }, -{ "hyshortsamul", aHYShortSamul }, -{ "haansoftbatang", aHaansoftBatang }, -{ "haansoftdotum", aHaansoftDotum }, -{ "hyhaeseo", aHyhaeseo }, -{ "mdsol", aMDSol }, -{ "mdgaesung", aMDGaesung }, -{ "mdart", aMDArt }, -{ "mdalong", aMDAlong }, -{ "mdeasop", aMDEasop }, -{ "hggothice", aHGGothicE }, -{ "hgpgothice", aHGPGothicE }, -{ "hgpothice", aHGSGothicE }, -{ "hggothicm", aHGGothicM }, -{ "hgpgothicm", aHGPGothicM }, -{ "hgpgothicm", aHGSGothicM }, -{ "hggyoshotai", aHGGyoshotai }, -{ "hgpgyoshotai", aHGPGyoshotai }, -{ "hgsgyoshotai", aHGSGyoshotai }, -{ "hgkyokashotai", aHGKyokashotai }, -{ "hgpkyokashotai", aHGPKyokashotai }, -{ "hgskyokashotai", aHGSKyokashotai }, -{ "hgminchob", aHGMinchoB }, -{ "hgpminchob", aHGPMinchoB }, -{ "hgsminchob", aHGSMinchoB }, -{ "hgminchoe", aHGMinchoE }, -{ "hgpminchoe", aHGPMinchoE }, -{ "hgsminchoe", aHGSMinchoE }, -{ "hgsoeikakupoptai", aHGSoeiKakupoptai }, -{ "hgpsoeikakupopta", aHGPSoeiKakupoptai }, -{ "hgssoeikakupopta", aHGSSoeiKakupoptai }, -{ "hgsoeipresenceeb", aHGSoeiPresenceEB }, -{ "hgpsoeipresenceeb", aHGPSoeiPresenceEB }, -{ "hgssoeipresenceeb", aHGSSoeiPresenceEB }, -{ "hgsoeikakugothicub", aHGSoeiKakugothicUB }, -{ "hgpsoeikakugothicub", aHGPSoeiKakugothicUB }, -{ "hgssoeikakugothicub", aHGSSoeiKakugothicUB }, -{ "hgseikaishotaipro", aHGSeikaishotaiPRO }, -{ "hgmarugothicmpro", aHGMaruGothicMPRO }, -{ "hiraginominchopro", aHiraginoMinchoPro }, -{ "hiraginominchopron", aHiraginoMinchoProN }, -{ "hiraginokakugothicpro", aHiraginoKakuGothicPro }, -{ "hiraginokakugothicpron", aHiraginoKakuGothicProN }, -{ "hiraginomarugothicpro", aHiraginoMaruGothicPro }, -{ "hiraginomarugothicpron", aHiraginoMaruGothicProN }, -{ NULL, NULL }, -}; - -// ----------------------------------------------------------------------- - -void GetEnglishSearchFontName( String& rName ) -{ - bool bNeedTranslation = false; - xub_StrLen nLen = rName.Len(); - - // Remove trailing whitespaces - xub_StrLen i = nLen; - while ( i && (rName.GetChar( i-1 ) < 32) ) - i--; - if ( i != nLen ) - rName.Erase( i ); - - // Remove Script at the end - // Scriptname must be the last part of the fontname and - // looks like "fontname (scriptname)". So there can only be a - // script name at the and of the fontname, when the last char is ')' - if ( (nLen >= 3) && rName.GetChar( nLen-1 ) == ')' ) - { - int nOpen = 1; - xub_StrLen nTempLen = nLen-2; - while ( nTempLen ) - { - if ( rName.GetChar( nTempLen ) == '(' ) - { - nOpen--; - if ( !nOpen ) - { - // Remove Space at the end - if ( nTempLen && (rName.GetChar( nTempLen-1 ) == ' ') ) - nTempLen--; - rName.Erase( nTempLen ); - nLen = nTempLen; - break; - } - } - if ( rName.GetChar( nTempLen ) == ')' ) - nOpen++; - nTempLen--; - } - } - - // remove all whitespaces and converts to lower case ASCII - // TODO: better transliteration to ASCII e.g. all digits - i = 0; - while ( i < nLen ) - { - sal_Unicode c = rName.GetChar( i ); - if ( c > 127 ) - { - // Translate to Lowercase-ASCII - // FullWidth-ASCII to half ASCII - if ( (c >= 0xFF00) && (c <= 0xFF5E) ) - { - c -= 0xFF00-0x0020; - // Upper to Lower - if ( (c >= 'A') && (c <= 'Z') ) - c += 'a' - 'A'; - rName.SetChar( i, c ); - } - else - { - // Only Fontnames with None-Ascii-Characters must be translated - bNeedTranslation = true; - } - } - // not lowercase Ascii - else if ( !((c >= 'a') && (c <= 'z')) ) - { - // To Lowercase-Ascii - if ( (c >= 'A') && (c <= 'Z') ) - { - c += 'a' - 'A'; - rName.SetChar( i, c ); - } - else if( ((c < '0') || (c > '9')) && (c != ';') ) // not 0-9 or semicolon - { - // Remove white spaces and special characters - rName.Erase( i, 1 ); - nLen--; - continue; - } - } - - i++; - } - - // translate normalized localized name to its normalized English ASCII name - if( bNeedTranslation ) - { - typedef boost::unordered_map<const String, const char*,FontNameHash> FontNameDictionary; - static FontNameDictionary aDictionary( sizeof(aImplLocalizedNamesList) / sizeof(*aImplLocalizedNamesList) ); - // the font name dictionary needs to be intialized once - if( aDictionary.empty() ) - { - // TODO: check if all dictionary entries are already normalized? - const ImplLocalizedFontName* pList = aImplLocalizedNamesList; - for(; pList->mpEnglishName; ++pList ) - aDictionary[ pList->mpLocalizedNames ] = pList->mpEnglishName; - } - - FontNameDictionary::const_iterator it = aDictionary.find( rName ); - if( it != aDictionary.end() ) - rName.AssignAscii( it->second ); - } -} - -// ----------------------------------------------------------------------- - -String GetNextFontToken( const String& rTokenStr, xub_StrLen& rIndex ) -{ - // check for valid start index - int nStringLen = rTokenStr.Len(); - if( rIndex >= nStringLen ) - { - rIndex = STRING_NOTFOUND; - return String(); - } - - // find the next token delimiter and return the token substring - const sal_Unicode* pStr = rTokenStr.GetBuffer() + rIndex; - const sal_Unicode* pEnd = rTokenStr.GetBuffer() + nStringLen; - for(; pStr < pEnd; ++pStr ) - if( (*pStr == ';') || (*pStr == ',') ) - break; - - xub_StrLen nTokenStart = rIndex; - xub_StrLen nTokenLen; - if( pStr < pEnd ) - { - rIndex = sal::static_int_cast<xub_StrLen>(pStr - rTokenStr.GetBuffer()); - nTokenLen = rIndex - nTokenStart; - ++rIndex; // skip over token separator - } - else - { - // no token delimiter found => handle last token - rIndex = STRING_NOTFOUND; - nTokenLen = STRING_LEN; - - // optimize if the token string consists of just one token - if( !nTokenStart ) - return rTokenStr; - } - - return String( rTokenStr, nTokenStart, nTokenLen ); -} - -// TODO: get rid of this in another incompatible build with SW project. -// SW's WW8 and RTF filters still use this (from fontcvt.hxx) -String GetFontToken( const String& rTokenStr, xub_StrLen nToken, xub_StrLen& rIndex ) -{ - // skip nToken Tokens - for( xub_StrLen i = 0; (i < nToken) && (rIndex != STRING_NOTFOUND); ++i ) - GetNextFontToken( rTokenStr, rIndex ); - - return GetNextFontToken( rTokenStr, rIndex ); -} - -// ======================================================================= - -static bool ImplIsFontToken( const String& rName, const String& rToken ) -{ - String aTempName; - xub_StrLen nIndex = 0; - do - { - aTempName = GetNextFontToken( rName, nIndex ); - if ( rToken == aTempName ) - return true; - } - while ( nIndex != STRING_NOTFOUND ); - - return false; -} - -// ----------------------------------------------------------------------- - -static void ImplAppendFontToken( String& rName, const String& rNewToken ) -{ - if ( rName.Len() ) - { - rName.Append( ';' ); - rName.Append( rNewToken ); - } - else - rName = rNewToken; -} - -void AddTokenFontName( String& rName, const String& rNewToken ) -{ - if ( !ImplIsFontToken( rName, rNewToken ) ) - ImplAppendFontToken( rName, rNewToken ); -} - -// ======================================================================= - -String GetSubsFontName( const String& rName, sal_uLong nFlags ) -{ - String aName; - - xub_StrLen nIndex = 0; - String aOrgName = GetNextFontToken( rName, nIndex ); - GetEnglishSearchFontName( aOrgName ); - - // #93662# do not try to replace StarSymbol with MS only font - if( nFlags == (SUBSFONT_MS|SUBSFONT_ONLYONE) - && ( aOrgName.EqualsAscii( "starsymbol" ) - || aOrgName.EqualsAscii( "opensymbol" ) ) ) - return aName; - - const utl::FontNameAttr* pAttr = utl::FontSubstConfiguration::get().getSubstInfo( aOrgName ); - if ( pAttr ) - { - for( int i = 0; i < 3; i++ ) - { - const ::std::vector< String >* pVector = NULL; - switch( i ) - { - case 0: - if( nFlags & SUBSFONT_MS && pAttr->MSSubstitutions.size() ) - pVector = &pAttr->MSSubstitutions; - break; - case 1: - if( nFlags & SUBSFONT_PS && pAttr->PSSubstitutions.size() ) - pVector = &pAttr->PSSubstitutions; - break; - case 2: - if( nFlags & SUBSFONT_HTML && pAttr->HTMLSubstitutions.size() ) - pVector = &pAttr->HTMLSubstitutions; - break; - } - if( ! pVector ) - continue; - for( ::std::vector< String >::const_iterator it = pVector->begin(); it != pVector->end(); ++it ) - if( ! ImplIsFontToken( rName, *it ) ) - { - ImplAppendFontToken( aName, *it ); - if( nFlags & SUBSFONT_ONLYONE ) - { - i = 4; - break; - } - } - } - } - - return aName; -} - -// ----------------------------------------------------------------------- - -// TODO: use a more generic String hash -int FontNameHash::operator()( const String& rStr ) const -{ - // this simple hash just has to be good enough for font names - int nHash = 0; - const int nLen = rStr.Len(); - const sal_Unicode* p = rStr.GetBuffer(); - switch( nLen ) - { - default: nHash = (p[0]<<16) - (p[1]<<8) + p[2]; - nHash += nLen; - p += nLen - 3; - // fall through - case 3: nHash += (p[2]<<16); // fall through - case 2: nHash += (p[1]<<8); // fall through - case 1: nHash += p[0]; // fall through - case 0: break; - }; - - return nHash; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/misc/sharedunocomponent.cxx b/unotools/source/misc/sharedunocomponent.cxx deleted file mode 100644 index a5e2315ccf..0000000000 --- a/unotools/source/misc/sharedunocomponent.cxx +++ /dev/null @@ -1,249 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/sharedunocomponent.hxx> -#include <com/sun/star/lang/XComponent.hpp> -#include <com/sun/star/util/XCloseable.hpp> -#include <cppuhelper/implbase1.hxx> -#include <tools/debug.hxx> - -//............................................................................ -namespace utl -{ -//............................................................................ - - using ::com::sun::star::uno::XInterface; - using ::com::sun::star::uno::Reference; - using ::com::sun::star::uno::Exception; - using ::com::sun::star::uno::UNO_QUERY; - using ::com::sun::star::uno::RuntimeException; - using ::com::sun::star::lang::XComponent; - using ::com::sun::star::lang::EventObject; - using ::com::sun::star::util::XCloseable; - using ::com::sun::star::util::XCloseListener; - using ::com::sun::star::util::CloseVetoException; - - //======================================================================== - //= DisposableComponent - //======================================================================== - //------------------------------------------------------------------------ - DisposableComponent::DisposableComponent( const Reference< XInterface >& _rxComponent ) - :m_xComponent( _rxComponent, UNO_QUERY ) - { - DBG_ASSERT( m_xComponent.is() || !_rxComponent.is(), "DisposableComponent::DisposableComponent: should be an XComponent!" ); - } - - //------------------------------------------------------------------------ - DisposableComponent::~DisposableComponent() - { - if ( m_xComponent.is() ) - { - try - { - m_xComponent->dispose(); - } - catch( const Exception& ) - { - OSL_FAIL( "DisposableComponent::~DisposableComponent: caught an exception!" ); - } - m_xComponent.clear(); - } - } - - //======================================================================== - //= CloseableComponentImpl - //======================================================================== - DBG_NAME( CloseableComponentImpl ) - typedef ::cppu::WeakImplHelper1 < XCloseListener - > CloseableComponentImpl_Base; - class CloseableComponentImpl : public CloseableComponentImpl_Base - { - private: - Reference< XCloseable > m_xCloseable; - - public: - CloseableComponentImpl( const Reference< XInterface >& _rxComponent ); - - /** closes the component - - @nofail - */ - void nf_closeComponent(); - - protected: - virtual ~CloseableComponentImpl(); - - // XCloseListener overridables - virtual void SAL_CALL queryClosing( const EventObject& Source, ::sal_Bool GetsOwnership ) throw (CloseVetoException, RuntimeException); - virtual void SAL_CALL notifyClosing( const EventObject& Source ) throw (RuntimeException); - - // XEventListener overridables - virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException); - - private: - /** starts or stops being a CloseListener at the component - - Only to be called upon construction of the instance, or when the component - is to be closed. - - @nofail - */ - void impl_nf_switchListening( bool _bListen ); - - - private: - CloseableComponentImpl(); // never implemented - CloseableComponentImpl( const CloseableComponentImpl& ); // never implemented - CloseableComponentImpl& operator=( const CloseableComponentImpl& ); // never implemented - }; - - //------------------------------------------------------------------------ - CloseableComponentImpl::CloseableComponentImpl( const Reference< XInterface >& _rxComponent ) - :m_xCloseable( _rxComponent, UNO_QUERY ) - { - DBG_CTOR( CloseableComponentImpl, NULL ); - DBG_ASSERT( m_xCloseable.is() || !_rxComponent.is(), "CloseableComponentImpl::CloseableComponentImpl: component is not an XCloseable!" ); - impl_nf_switchListening( true ); - } - //------------------------------------------------------------------------ - CloseableComponentImpl::~CloseableComponentImpl() - { - nf_closeComponent(); - DBG_DTOR( CloseableComponentImpl, NULL ); - } - - //------------------------------------------------------------------------ - void CloseableComponentImpl::nf_closeComponent() - { - if ( !m_xCloseable.is() ) - // nothing to do - return; - - // stop listening - impl_nf_switchListening( false ); - - // close - try - { - m_xCloseable->close( sal_True ); - } - catch( const CloseVetoException& ) { /* fine */ } - catch( const Exception& ) - { - OSL_FAIL( "CloseableComponentImpl::nf_closeComponent: caught an unexpected exception!" ); - } - - // reset - m_xCloseable.clear(); - } - - //------------------------------------------------------------------------ - void CloseableComponentImpl::impl_nf_switchListening( bool _bListen ) - { - if ( !m_xCloseable.is() ) - return; - - try - { - if ( _bListen ) - m_xCloseable->addCloseListener( this ); - else - m_xCloseable->removeCloseListener( this ); - } - catch( const Exception& ) - { - OSL_FAIL( "CloseableComponentImpl::impl_nf_switchListening: caught an exception!" ); - } - } - - //-------------------------------------------------------------------- - void SAL_CALL CloseableComponentImpl::queryClosing( const EventObject& - #ifdef DBG_UTIL - Source - #endif - , ::sal_Bool /*GetsOwnership*/ ) throw (CloseVetoException, RuntimeException) - { - // as long as we live, somebody wants to keep the object alive. So, veto the - // closing - DBG_ASSERT( Source.Source == m_xCloseable, "CloseableComponentImpl::queryClosing: where did this come from?" ); - throw CloseVetoException(); - } - - //-------------------------------------------------------------------- - void SAL_CALL CloseableComponentImpl::notifyClosing( const EventObject& - #ifdef DBG_UTIL - Source - #endif - ) throw (RuntimeException) - { - DBG_ASSERT( Source.Source == m_xCloseable, "CloseableComponentImpl::notifyClosing: where did this come from?" ); - - // this should be unreachable: As long as we're a CloseListener, we veto the closing. If we're going - // to close the component ourself, then we revoke ourself as listener *before* the close call. So, - // if this here fires, something went definately wrong. - OSL_FAIL( "CloseableComponentImpl::notifyClosing: unreachable!" ); - } - - //-------------------------------------------------------------------- - void SAL_CALL CloseableComponentImpl::disposing( const EventObject& - #ifdef DBG_UTIL - Source - #endif - ) throw (RuntimeException) - { - DBG_ASSERT( Source.Source == m_xCloseable, "CloseableComponentImpl::disposing: where did this come from?" ); - OSL_FAIL( "CloseableComponentImpl::disposing: unreachable!" ); - // same reasoning for this assertion as in ->notifyClosing - } - - //======================================================================== - //= CloseableComponentImpl - //======================================================================== - DBG_NAME( CloseableComponent ) - //------------------------------------------------------------------------ - CloseableComponent::CloseableComponent( const Reference< XInterface >& _rxComponent ) - :m_pImpl( new CloseableComponentImpl( _rxComponent ) ) - { - DBG_CTOR( CloseableComponent, NULL ); - } - - //------------------------------------------------------------------------ - CloseableComponent::~CloseableComponent() - { - // close the component, deliver ownership to anybody who wants to veto the close - m_pImpl->nf_closeComponent(); - DBG_DTOR( CloseableComponent, NULL ); - } - -//............................................................................ -} // namespace utl -//............................................................................ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/misc/syslocale.cxx b/unotools/source/misc/syslocale.cxx deleted file mode 100644 index 06294336e6..0000000000 --- a/unotools/source/misc/syslocale.cxx +++ /dev/null @@ -1,214 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/syslocale.hxx> -#include <tools/string.hxx> -#include <unotools/syslocaleoptions.hxx> -#include <unotools/localedatawrapper.hxx> -#include <comphelper/processfactory.hxx> -#include <i18npool/mslangid.hxx> -#include <rtl/tencinfo.h> -#include <rtl/locale.h> -#include <osl/nlsupport.h> - -using namespace osl; -using namespace com::sun::star; - - -SvtSysLocale_Impl* SvtSysLocale::pImpl = NULL; -sal_Int32 SvtSysLocale::nRefCount = 0; - - -class SvtSysLocale_Impl : public utl::ConfigurationListener -{ -public: - SvtSysLocaleOptions aSysLocaleOptions; - LocaleDataWrapper* pLocaleData; - CharClass* pCharClass; - - SvtSysLocale_Impl(); - virtual ~SvtSysLocale_Impl(); - - CharClass* GetCharClass(); - virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 ); -}; - -// ----------------------------------------------------------------------- - -SvtSysLocale_Impl::SvtSysLocale_Impl() : pCharClass(NULL) -{ - pLocaleData = new LocaleDataWrapper( ::comphelper::getProcessServiceFactory(), aSysLocaleOptions.GetRealLocale() ); - - // listen for further changes - aSysLocaleOptions.AddListener( this ); -} - - -SvtSysLocale_Impl::~SvtSysLocale_Impl() -{ - aSysLocaleOptions.RemoveListener( this ); - delete pCharClass; - delete pLocaleData; -} - -CharClass* SvtSysLocale_Impl::GetCharClass() -{ - if ( !pCharClass ) - pCharClass = new CharClass(::comphelper::getProcessServiceFactory(), aSysLocaleOptions.GetRealLocale() ); - return pCharClass; -} - -void SvtSysLocale_Impl::ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 nHint ) -{ - MutexGuard aGuard( SvtSysLocale::GetMutex() ); - if ( nHint & SYSLOCALEOPTIONS_HINT_LOCALE ) - { - com::sun::star::lang::Locale aLocale( aSysLocaleOptions.GetRealLocale() ); - pLocaleData->setLocale( aLocale ); - GetCharClass()->setLocale( aLocale ); - } -} - -// ==================================================================== - -SvtSysLocale::SvtSysLocale() -{ - MutexGuard aGuard( GetMutex() ); - if ( !pImpl ) - pImpl = new SvtSysLocale_Impl; - ++nRefCount; -} - - -SvtSysLocale::~SvtSysLocale() -{ - MutexGuard aGuard( GetMutex() ); - if ( !--nRefCount ) - { - delete pImpl; - pImpl = NULL; - } -} - - -// static -Mutex& SvtSysLocale::GetMutex() -{ - static Mutex* pMutex = NULL; - if( !pMutex ) - { - MutexGuard aGuard( Mutex::getGlobalMutex() ); - if( !pMutex ) - { - // #i77768# Due to a static reference in the toolkit lib - // we need a mutex that lives longer than the svl library. - // Otherwise the dtor would use a destructed mutex!! - pMutex = new Mutex; - } - } - return *pMutex; -} - - -const LocaleDataWrapper& SvtSysLocale::GetLocaleData() const -{ - return *(pImpl->pLocaleData); -} - - -const LocaleDataWrapper* SvtSysLocale::GetLocaleDataPtr() const -{ - return pImpl->pLocaleData; -} - - -const CharClass& SvtSysLocale::GetCharClass() const -{ - return *(pImpl->GetCharClass()); -} - - -const CharClass* SvtSysLocale::GetCharClassPtr() const -{ - return pImpl->GetCharClass(); -} - -SvtSysLocaleOptions& SvtSysLocale::GetOptions() const -{ - return pImpl->aSysLocaleOptions; -} - -com::sun::star::lang::Locale SvtSysLocale::GetLocale() const -{ - return pImpl->aSysLocaleOptions.GetRealLocale(); -} - -LanguageType SvtSysLocale::GetLanguage() const -{ - return pImpl->aSysLocaleOptions.GetRealLanguage(); -} - -com::sun::star::lang::Locale SvtSysLocale::GetUILocale() const -{ - return pImpl->aSysLocaleOptions.GetRealUILocale(); -} - -LanguageType SvtSysLocale::GetUILanguage() const -{ - return pImpl->aSysLocaleOptions.GetRealUILanguage(); -} - -//------------------------------------------------------------------------ - -// static -rtl_TextEncoding SvtSysLocale::GetBestMimeEncoding() -{ - const sal_Char* pCharSet = rtl_getBestMimeCharsetFromTextEncoding( - gsl_getSystemTextEncoding() ); - if ( !pCharSet ) - { - // If the system locale is unknown to us, e.g. LC_ALL=xx, match the UI - // language if possible. - ::com::sun::star::lang::Locale aLocale( SvtSysLocale().GetUILocale() ); - rtl_Locale * pLocale = rtl_locale_register( aLocale.Language.getStr(), - aLocale.Country.getStr(), aLocale.Variant.getStr() ); - rtl_TextEncoding nEnc = osl_getTextEncodingFromLocale( pLocale ); - pCharSet = rtl_getBestMimeCharsetFromTextEncoding( nEnc ); - } - rtl_TextEncoding nRet; - if ( pCharSet ) - nRet = rtl_getTextEncodingFromMimeCharset( pCharSet ); - else - nRet = RTL_TEXTENCODING_UTF8; - return nRet; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/processfactory/processfactory.cxx b/unotools/source/processfactory/processfactory.cxx deleted file mode 100644 index 1cd3ee1836..0000000000 --- a/unotools/source/processfactory/processfactory.cxx +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <osl/mutex.hxx> -#include <unotools/processfactory.hxx> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> - -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; -using namespace osl; - -namespace utl -{ - // just use the comphelper versions of both functions. The versions here in unotools will become obsolete - // from SRC610 on. - - void setProcessServiceFactory(const Reference< XMultiServiceFactory >& xSMgr) - { - ::comphelper::setProcessServiceFactory(xSMgr); - } - - Reference< XMultiServiceFactory > getProcessServiceFactory() - { - return ::comphelper::getProcessServiceFactory(); - } - -} // namesapce utl - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/property/propertysethelper.cxx b/unotools/source/property/propertysethelper.cxx deleted file mode 100644 index 37bfcc071c..0000000000 --- a/unotools/source/property/propertysethelper.cxx +++ /dev/null @@ -1,304 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <tools/debug.hxx> - -#include "unotools/propertysetinfo.hxx" -#include "unotools/propertysethelper.hxx" - -/////////////////////////////////////////////////////////////////////// - -using namespace ::utl; -using namespace ::rtl; -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::beans; -using namespace ::com::sun::star::lang; - -namespace utl -{ -class PropertySetHelperImpl -{ -public: - PropertyMapEntry* find( const OUString& aName ) const throw(); - - PropertySetInfo* mpInfo; -}; -} - -PropertyMapEntry* PropertySetHelperImpl::find( const OUString& aName ) const throw() -{ - PropertyMap::const_iterator aIter = mpInfo->getPropertyMap()->find( aName ); - - if( mpInfo->getPropertyMap()->end() != aIter ) - { - return (*aIter).second; - } - else - { - return NULL; - } -} - -/////////////////////////////////////////////////////////////////////// - -PropertySetHelper::PropertySetHelper( utl::PropertySetInfo* pInfo ) throw() -{ - mp = new PropertySetHelperImpl; - mp->mpInfo = pInfo; - pInfo->acquire(); -} - -PropertySetHelper::~PropertySetHelper() throw() -{ - mp->mpInfo->release(); - delete mp; -} - -// XPropertySet -Reference< XPropertySetInfo > SAL_CALL PropertySetHelper::getPropertySetInfo( ) throw(RuntimeException) -{ - return mp->mpInfo; -} - -void SAL_CALL PropertySetHelper::setPropertyValue( const ::rtl::OUString& aPropertyName, const Any& aValue ) throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException) -{ - PropertyMapEntry* aEntries[2]; - aEntries[0] = mp->find( aPropertyName ); - - if( NULL == aEntries[0] ) - throw UnknownPropertyException(); - - aEntries[1] = NULL; - - _setPropertyValues( (const PropertyMapEntry**)aEntries, &aValue ); -} - -Any SAL_CALL PropertySetHelper::getPropertyValue( const ::rtl::OUString& PropertyName ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - PropertyMapEntry* aEntries[2]; - aEntries[0] = mp->find( PropertyName ); - - if( NULL == aEntries[0] ) - throw UnknownPropertyException(); - - aEntries[1] = NULL; - - Any aAny; - _getPropertyValues( (const PropertyMapEntry**)aEntries, &aAny ); - - return aAny; -} - -void SAL_CALL PropertySetHelper::addPropertyChangeListener( const ::rtl::OUString& /*aPropertyName*/, const Reference< XPropertyChangeListener >& /*xListener*/ ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - // todo -} - -void SAL_CALL PropertySetHelper::removePropertyChangeListener( const ::rtl::OUString& /*aPropertyName*/, const Reference< XPropertyChangeListener >& /*aListener*/ ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - // todo -} - -void SAL_CALL PropertySetHelper::addVetoableChangeListener( const ::rtl::OUString& /*PropertyName*/, const Reference< XVetoableChangeListener >& /*aListener*/ ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - // todo -} - -void SAL_CALL PropertySetHelper::removeVetoableChangeListener( const ::rtl::OUString& /*PropertyName*/, const Reference< XVetoableChangeListener >& /*aListener*/ ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - // todo -} - -// XMultiPropertySet -void SAL_CALL PropertySetHelper::setPropertyValues( const Sequence< ::rtl::OUString >& aPropertyNames, const Sequence< Any >& aValues ) throw(PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException) -{ - const sal_Int32 nCount = aPropertyNames.getLength(); - - if( nCount != aValues.getLength() ) - throw IllegalArgumentException(); - - if( nCount ) - { - PropertyMapEntry** pEntries = new PropertyMapEntry*[nCount+1]; - const OUString* pNames = aPropertyNames.getConstArray(); - - sal_Bool bUnknown = sal_False; - sal_Int32 n; - for( n = 0; !bUnknown && ( n < nCount ); n++, pNames++ ) - { - pEntries[n] = mp->find( *pNames ); - bUnknown = NULL == pEntries[n]; - } - - if( !bUnknown ) - _setPropertyValues( (const PropertyMapEntry**)pEntries, aValues.getConstArray() ); - - delete [] pEntries; - - if( bUnknown ) - throw UnknownPropertyException(); - } -} - -Sequence< Any > SAL_CALL PropertySetHelper::getPropertyValues( const Sequence< ::rtl::OUString >& aPropertyNames ) throw(RuntimeException) -{ - const sal_Int32 nCount = aPropertyNames.getLength(); - - Sequence< Any > aValues; - if( nCount ) - { - PropertyMapEntry** pEntries = new PropertyMapEntry*[nCount+1]; - const OUString* pNames = aPropertyNames.getConstArray(); - - sal_Bool bUnknown = sal_False; - sal_Int32 n; - for( n = 0; !bUnknown && ( n < nCount ); n++, pNames++ ) - { - pEntries[n] = mp->find( *pNames ); - bUnknown = NULL == pEntries[n]; - } - - if( !bUnknown ) - _getPropertyValues( (const PropertyMapEntry**)pEntries, aValues.getArray() ); - - delete [] pEntries; - - if( bUnknown ) - throw UnknownPropertyException(); - } - - return aValues; -} - -void SAL_CALL PropertySetHelper::addPropertiesChangeListener( const Sequence< ::rtl::OUString >& /*aPropertyNames*/, const Reference< XPropertiesChangeListener >& /*xListener*/ ) throw(RuntimeException) -{ - // todo -} - -void SAL_CALL PropertySetHelper::removePropertiesChangeListener( const Reference< XPropertiesChangeListener >& /*xListener*/ ) throw(RuntimeException) -{ - // todo -} - -void SAL_CALL PropertySetHelper::firePropertiesChangeEvent( const Sequence< ::rtl::OUString >& /*aPropertyNames*/, const Reference< XPropertiesChangeListener >& /*xListener*/ ) throw(RuntimeException) -{ - // todo -} - -// XPropertyState -PropertyState SAL_CALL PropertySetHelper::getPropertyState( const ::rtl::OUString& PropertyName ) throw(UnknownPropertyException, RuntimeException) -{ - PropertyMapEntry* aEntries[2]; - - aEntries[0] = mp->find( PropertyName ); - if( aEntries[0] == NULL ) - throw UnknownPropertyException(); - - aEntries[1] = NULL; - - PropertyState aState; - _getPropertyStates( (const PropertyMapEntry**)aEntries, &aState ); - - return aState; -} - -Sequence< PropertyState > SAL_CALL PropertySetHelper::getPropertyStates( const Sequence< ::rtl::OUString >& aPropertyName ) throw(UnknownPropertyException, RuntimeException) -{ - const sal_Int32 nCount = aPropertyName.getLength(); - - Sequence< PropertyState > aStates( nCount ); - - if( nCount ) - { - const OUString* pNames = aPropertyName.getConstArray(); - - sal_Bool bUnknown = sal_False; - - PropertyMapEntry** pEntries = new PropertyMapEntry*[nCount+1]; - - sal_Int32 n; - for( n = 0; !bUnknown && (n < nCount); n++, pNames++ ) - { - pEntries[n] = mp->find( *pNames ); - bUnknown = NULL == pEntries[n]; - } - - pEntries[nCount] = NULL; - - if( !bUnknown ) - _getPropertyStates( (const PropertyMapEntry**)pEntries, aStates.getArray() ); - - delete [] pEntries; - - if( bUnknown ) - throw UnknownPropertyException(); - } - - return aStates; -} - -void SAL_CALL PropertySetHelper::setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(UnknownPropertyException, RuntimeException) -{ - PropertyMapEntry *pEntry = mp->find( PropertyName ); - if( NULL == pEntry ) - throw UnknownPropertyException(); - - _setPropertyToDefault( pEntry ); -} - -Any SAL_CALL PropertySetHelper::getPropertyDefault( const ::rtl::OUString& aPropertyName ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - PropertyMapEntry* pEntry = mp->find( aPropertyName ); - if( NULL == pEntry ) - throw UnknownPropertyException(); - - return _getPropertyDefault( pEntry ); -} - -void PropertySetHelper::_getPropertyStates( const utl::PropertyMapEntry** /*ppEntries*/, PropertyState* /*pStates*/ ) throw(UnknownPropertyException ) -{ - OSL_FAIL( "you have to implement this yourself!" ); -} - -void PropertySetHelper::_setPropertyToDefault( const utl::PropertyMapEntry* /*pEntry*/ ) throw(UnknownPropertyException ) -{ - OSL_FAIL( "you have to implement this yourself!" ); -} - -Any PropertySetHelper::_getPropertyDefault( const utl::PropertyMapEntry* /*pEntry*/ ) throw(UnknownPropertyException, WrappedTargetException ) -{ - OSL_FAIL( "you have to implement this yourself!" ); - - Any aAny; - return aAny; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/property/propertysetinfo.cxx b/unotools/source/property/propertysetinfo.cxx deleted file mode 100644 index 91ca6ad0e6..0000000000 --- a/unotools/source/property/propertysetinfo.cxx +++ /dev/null @@ -1,202 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <tools/debug.hxx> - -#include "unotools/propertysetinfo.hxx" - -using namespace ::utl; -using namespace ::rtl; -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::beans; -using namespace ::com::sun::star::lang; - -namespace utl -{ -class PropertyMapImpl -{ -public: - PropertyMapImpl() throw(); - virtual ~PropertyMapImpl() throw(); - - void add( PropertyMapEntry* pMap ) throw(); - void remove( const OUString& aName ) throw(); - - Sequence< Property > getProperties() throw(); - - const PropertyMap* getPropertyMap() const throw(); - - Property getPropertyByName( const OUString& aName ) throw( UnknownPropertyException ); - sal_Bool hasPropertyByName( const OUString& aName ) throw(); - -private: - PropertyMap maPropertyMap; - Sequence< Property > maProperties; -}; -} - -PropertyMapImpl::PropertyMapImpl() throw() -{ -} - -PropertyMapImpl::~PropertyMapImpl() throw() -{ -} - -void PropertyMapImpl::add( PropertyMapEntry* pMap ) throw() -{ - while( pMap->mpName ) - { - OUString aName( pMap->mpName, pMap->mnNameLen, RTL_TEXTENCODING_ASCII_US ); - -#ifdef DBG_UTIL - PropertyMap::iterator aIter = maPropertyMap.find( aName ); - if( aIter != maPropertyMap.end() ) - { - OSL_FAIL( "Warning: PropertyMapEntry added twice, possible error!" ); - } -#endif - if( NULL == pMap->mpType ) - { - OSL_FAIL( "No type in PropertyMapEntry!" ); - pMap->mpType = &::getCppuType((const sal_Int32*)0); - } - - maPropertyMap[aName] = pMap; - - if( maProperties.getLength() ) - maProperties.realloc( 0 ); - - pMap = &pMap[1]; - } -} - -void PropertyMapImpl::remove( const OUString& aName ) throw() -{ - maPropertyMap.erase( aName ); - - if( maProperties.getLength() ) - maProperties.realloc( 0 ); -} - -Sequence< Property > PropertyMapImpl::getProperties() throw() -{ - // maybe we have to generate the properties after - // a change in the property map or at first call - // to getProperties - if( maProperties.getLength() != (sal_Int32)maPropertyMap.size() ) - { - maProperties = Sequence< Property >( maPropertyMap.size() ); - Property* pProperties = maProperties.getArray(); - - PropertyMap::iterator aIter = maPropertyMap.begin(); - const PropertyMap::iterator aEnd = maPropertyMap.end(); - while( aIter != aEnd ) - { - PropertyMapEntry* pEntry = (*aIter).second; - - pProperties->Name = OUString( pEntry->mpName, pEntry->mnNameLen, RTL_TEXTENCODING_ASCII_US ); - pProperties->Handle = pEntry->mnWhich; - pProperties->Type = *pEntry->mpType; - pProperties->Attributes = pEntry->mnFlags; - ++pProperties; - ++aIter; - } - } - - return maProperties; -} - -const PropertyMap* PropertyMapImpl::getPropertyMap() const throw() -{ - return &maPropertyMap; -} - -Property PropertyMapImpl::getPropertyByName( const OUString& aName ) throw( UnknownPropertyException ) -{ - PropertyMap::iterator aIter = maPropertyMap.find( aName ); - - if( maPropertyMap.end() == aIter ) - throw UnknownPropertyException(); - - PropertyMapEntry* pEntry = (*aIter).second; - - return Property( aName, pEntry->mnWhich, *pEntry->mpType, pEntry->mnFlags ); -} - -sal_Bool PropertyMapImpl::hasPropertyByName( const OUString& aName ) throw() -{ - return maPropertyMap.find( aName ) != maPropertyMap.end(); -} - -/////////////////////////////////////////////////////////////////////// - -PropertySetInfo::PropertySetInfo() throw() -{ - mpMap = new PropertyMapImpl(); -} - -PropertySetInfo::~PropertySetInfo() throw() -{ - delete mpMap; -} - -void PropertySetInfo::add( PropertyMapEntry* pMap ) throw() -{ - mpMap->add( pMap ); -} - -void PropertySetInfo::remove( const rtl::OUString& aName ) throw() -{ - mpMap->remove( aName ); -} - -Sequence< ::com::sun::star::beans::Property > SAL_CALL PropertySetInfo::getProperties() throw(::com::sun::star::uno::RuntimeException) -{ - return mpMap->getProperties(); -} - -Property SAL_CALL PropertySetInfo::getPropertyByName( const ::rtl::OUString& aName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException) -{ - return mpMap->getPropertyByName( aName ); -} - -sal_Bool SAL_CALL PropertySetInfo::hasPropertyByName( const ::rtl::OUString& Name ) throw(::com::sun::star::uno::RuntimeException) -{ - return mpMap->hasPropertyByName( Name ); -} - -const PropertyMap* PropertySetInfo::getPropertyMap() const throw() -{ - return mpMap->getPropertyMap(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/streaming/streamhelper.cxx b/unotools/source/streaming/streamhelper.cxx deleted file mode 100644 index ebb803be82..0000000000 --- a/unotools/source/streaming/streamhelper.cxx +++ /dev/null @@ -1,206 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/streamhelper.hxx> -#include <tools/debug.hxx> - -namespace utl -{ - -//------------------------------------------------------------------------------ -void SAL_CALL OInputStreamHelper::acquire() throw () -{ - InputStreamHelper_Base::acquire(); -} - -//------------------------------------------------------------------------------ -void SAL_CALL OInputStreamHelper::release() throw () -{ - InputStreamHelper_Base::release(); -} - -//------------------------------------------------------------------------------ -sal_Int32 SAL_CALL OInputStreamHelper::readBytes(staruno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead) - throw(stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException) -{ - if (!m_xLockBytes.Is()) - throw stario::NotConnectedException(::rtl::OUString(), static_cast<staruno::XWeak*>(this)); - - if (nBytesToRead < 0) - throw stario::BufferSizeExceededException(::rtl::OUString(), static_cast<staruno::XWeak*>(this)); - - ::osl::MutexGuard aGuard( m_aMutex ); - aData.realloc(nBytesToRead); - - sal_Size nRead; - ErrCode nError = m_xLockBytes->ReadAt(m_nActPos, (void*)aData.getArray(), nBytesToRead, &nRead); - // FIXME nRead could be truncated on 64-bit arches - m_nActPos += (sal_uInt32)nRead; - - if (nError != ERRCODE_NONE) - throw stario::IOException(::rtl::OUString(), static_cast<staruno::XWeak*>(this)); - - // adjust sequence if data read is lower than the desired data - if (nRead < (sal_uInt32)nBytesToRead) - aData.realloc( nRead ); - - return nRead; -} - -void SAL_CALL OInputStreamHelper::seek( sal_Int64 location ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - // cast is truncating, but position would be truncated as soon as - // put into SvLockBytes anyway - m_nActPos = sal::static_int_cast<sal_uInt32>(location); -} - -sal_Int64 SAL_CALL OInputStreamHelper::getPosition( ) throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException) -{ - return m_nActPos; -} - -sal_Int64 SAL_CALL OInputStreamHelper::getLength( ) throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException) -{ - if (!m_xLockBytes.Is()) - return 0; - - ::osl::MutexGuard aGuard( m_aMutex ); - SvLockBytesStat aStat; - m_xLockBytes->Stat( &aStat, SVSTATFLAG_DEFAULT ); - return aStat.nSize; -} - -//------------------------------------------------------------------------------ -sal_Int32 SAL_CALL OInputStreamHelper::readSomeBytes(staruno::Sequence< sal_Int8 >& aData, - sal_Int32 nMaxBytesToRead) - throw (stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException) -{ - // read all data desired - return readBytes(aData, nMaxBytesToRead); -} - -//------------------------------------------------------------------------------ -void SAL_CALL OInputStreamHelper::skipBytes(sal_Int32 nBytesToSkip) - throw (stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - if (!m_xLockBytes.Is()) - throw stario::NotConnectedException(::rtl::OUString(), static_cast<staruno::XWeak*>(this)); - - if (nBytesToSkip < 0) - throw stario::BufferSizeExceededException(::rtl::OUString(), static_cast<staruno::XWeak*>(this)); - - m_nActPos += nBytesToSkip; -} - -//------------------------------------------------------------------------------ -sal_Int32 SAL_CALL OInputStreamHelper::available() - throw (stario::NotConnectedException, stario::IOException, staruno::RuntimeException) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - if (!m_xLockBytes.Is()) - throw stario::NotConnectedException(::rtl::OUString(), static_cast<staruno::XWeak*>(this)); - - return m_nAvailable; -} - -//------------------------------------------------------------------------------ -void SAL_CALL OInputStreamHelper::closeInput() - throw (stario::NotConnectedException, stario::IOException, staruno::RuntimeException) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - if (!m_xLockBytes.Is()) - throw stario::NotConnectedException(::rtl::OUString(), static_cast<staruno::XWeak*>(this)); - - m_xLockBytes = NULL; -} - -/*************************************************************************/ -//------------------------------------------------------------------------------ -void SAL_CALL OOutputStreamHelper::acquire() throw () -{ - OutputStreamHelper_Base::acquire(); -} - -//------------------------------------------------------------------------------ -void SAL_CALL OOutputStreamHelper::release() throw () -{ - OutputStreamHelper_Base::release(); -} -// stario::XOutputStream -//------------------------------------------------------------------------------ -void SAL_CALL OOutputStreamHelper::writeBytes(const staruno::Sequence< sal_Int8 >& aData) - throw (stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - if (!m_xLockBytes.Is()) - throw stario::NotConnectedException(::rtl::OUString(), static_cast<staruno::XWeak*>(this)); - - sal_Size nWritten; - ErrCode nError = m_xLockBytes->WriteAt( m_nActPos, aData.getConstArray(), aData.getLength(), &nWritten ); - // FIXME nWritten could be truncated on 64-bit arches - m_nActPos += (sal_uInt32)nWritten; - - if (nError != ERRCODE_NONE || - sal::static_int_cast<sal_Int32>(nWritten) != aData.getLength()) - { - throw stario::IOException(::rtl::OUString(),static_cast<staruno::XWeak*>(this)); - } -} - -//------------------------------------------------------------------ -void SAL_CALL OOutputStreamHelper::flush() - throw (stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - if (!m_xLockBytes.Is()) - throw stario::NotConnectedException(::rtl::OUString(), static_cast<staruno::XWeak*>(this)); - - ErrCode nError = m_xLockBytes->Flush(); - if (nError != ERRCODE_NONE) - throw stario::IOException(::rtl::OUString(),static_cast<staruno::XWeak*>(this)); -} - -//------------------------------------------------------------------ -void SAL_CALL OOutputStreamHelper::closeOutput( ) - throw(stario::NotConnectedException, stario::BufferSizeExceededException, stario::IOException, staruno::RuntimeException) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - if (!m_xLockBytes.Is()) - throw stario::NotConnectedException(::rtl::OUString(), static_cast<staruno::XWeak*>(this)); - - m_xLockBytes = NULL; -} - -} // namespace utl - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/streaming/streamwrap.cxx b/unotools/source/streaming/streamwrap.cxx deleted file mode 100644 index 8a14e8c13b..0000000000 --- a/unotools/source/streaming/streamwrap.cxx +++ /dev/null @@ -1,373 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/streamwrap.hxx> -#include <tools/stream.hxx> -#include <tools/debug.hxx> - -namespace utl -{ - -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::io; -using namespace ::com::sun::star::lang; - -//================================================================== -//= OInputStreamWrapper -//================================================================== -DBG_NAME(OInputStreamWrapper) -//------------------------------------------------------------------ -OInputStreamWrapper::OInputStreamWrapper( SvStream& _rStream ) - :m_pSvStream(&_rStream) - ,m_bSvStreamOwner(sal_False) -{ - DBG_CTOR(OInputStreamWrapper,NULL); - -} - -//------------------------------------------------------------------ -OInputStreamWrapper::OInputStreamWrapper( SvStream* pStream, sal_Bool bOwner ) - :m_pSvStream( pStream ) - ,m_bSvStreamOwner( bOwner ) -{ - DBG_CTOR(OInputStreamWrapper,NULL); - -} - -//------------------------------------------------------------------ -OInputStreamWrapper::~OInputStreamWrapper() -{ - if( m_bSvStreamOwner ) - delete m_pSvStream; - - DBG_DTOR(OInputStreamWrapper,NULL); -} - -//------------------------------------------------------------------------------ -sal_Int32 SAL_CALL OInputStreamWrapper::readBytes(staruno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead) - throw( stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException ) -{ - checkConnected(); - - if (nBytesToRead < 0) - throw stario::BufferSizeExceededException(::rtl::OUString(),static_cast<staruno::XWeak*>(this)); - - ::osl::MutexGuard aGuard( m_aMutex ); - - aData.realloc(nBytesToRead); - - sal_uInt32 nRead = m_pSvStream->Read((void*)aData.getArray(), nBytesToRead); - checkError(); - - // Wenn gelesene Zeichen < MaxLength, staruno::Sequence anpassen - if (nRead < (sal_uInt32)nBytesToRead) - aData.realloc( nRead ); - - return nRead; -} - -//------------------------------------------------------------------------------ -sal_Int32 SAL_CALL OInputStreamWrapper::readSomeBytes(staruno::Sequence< sal_Int8 >& aData, sal_Int32 nMaxBytesToRead) throw( stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException ) -{ - checkError(); - - if (nMaxBytesToRead < 0) - throw stario::BufferSizeExceededException(::rtl::OUString(),static_cast<staruno::XWeak*>(this)); - - if (m_pSvStream->IsEof()) - { - aData.realloc(0); - return 0; - } - else - return readBytes(aData, nMaxBytesToRead); -} - -//------------------------------------------------------------------------------ -void SAL_CALL OInputStreamWrapper::skipBytes(sal_Int32 nBytesToSkip) throw( stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - checkError(); - - m_pSvStream->SeekRel(nBytesToSkip); - checkError(); -} - -//------------------------------------------------------------------------------ -sal_Int32 SAL_CALL OInputStreamWrapper::available() throw( stario::NotConnectedException, staruno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - checkConnected(); - - sal_uInt32 nPos = m_pSvStream->Tell(); - checkError(); - - m_pSvStream->Seek(STREAM_SEEK_TO_END); - checkError(); - - sal_Int32 nAvailable = (sal_Int32)m_pSvStream->Tell() - nPos; - m_pSvStream->Seek(nPos); - checkError(); - - return nAvailable; -} - -//------------------------------------------------------------------------------ -void SAL_CALL OInputStreamWrapper::closeInput() throw( stario::NotConnectedException, staruno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - checkConnected(); - - if (m_bSvStreamOwner) - delete m_pSvStream; - - m_pSvStream = NULL; -} - -//------------------------------------------------------------------------------ -void OInputStreamWrapper::checkConnected() const -{ - if (!m_pSvStream) - throw stario::NotConnectedException(::rtl::OUString(), const_cast<staruno::XWeak*>(static_cast<const staruno::XWeak*>(this))); -} - -//------------------------------------------------------------------------------ -void OInputStreamWrapper::checkError() const -{ - checkConnected(); - - if (m_pSvStream->SvStream::GetError() != ERRCODE_NONE) - // TODO: really evaluate the error - throw stario::NotConnectedException(::rtl::OUString(), const_cast<staruno::XWeak*>(static_cast<const staruno::XWeak*>(this))); -} - -//================================================================== -//= OSeekableInputStreamWrapper -//================================================================== -//------------------------------------------------------------------------------ -OSeekableInputStreamWrapper::OSeekableInputStreamWrapper(SvStream& _rStream) -{ - SetStream( &_rStream, sal_False ); -} - -//------------------------------------------------------------------------------ -OSeekableInputStreamWrapper::OSeekableInputStreamWrapper(SvStream* _pStream, sal_Bool _bOwner) -{ - SetStream( _pStream, _bOwner ); -} - -//------------------------------------------------------------------------------ -void SAL_CALL OSeekableInputStreamWrapper::seek( sal_Int64 _nLocation ) throw (IllegalArgumentException, IOException, RuntimeException) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - checkConnected(); - - m_pSvStream->Seek((sal_uInt32)_nLocation); - checkError(); -} - -//------------------------------------------------------------------------------ -sal_Int64 SAL_CALL OSeekableInputStreamWrapper::getPosition( ) throw (IOException, RuntimeException) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - checkConnected(); - - sal_uInt32 nPos = m_pSvStream->Tell(); - checkError(); - return (sal_Int64)nPos; -} - -//------------------------------------------------------------------------------ -sal_Int64 SAL_CALL OSeekableInputStreamWrapper::getLength( ) throw (IOException, RuntimeException) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - checkConnected(); - - sal_uInt32 nCurrentPos = m_pSvStream->Tell(); - checkError(); - - m_pSvStream->Seek(STREAM_SEEK_TO_END); - sal_uInt32 nEndPos = m_pSvStream->Tell(); - m_pSvStream->Seek(nCurrentPos); - - checkError(); - - return (sal_Int64)nEndPos; -} - -//================================================================== -//= OOutputStreamWrapper -//================================================================== -//------------------------------------------------------------------------------ -void SAL_CALL OOutputStreamWrapper::writeBytes(const staruno::Sequence< sal_Int8 >& aData) throw( stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException ) -{ - sal_uInt32 nWritten = rStream.Write(aData.getConstArray(),aData.getLength()); - ErrCode err = rStream.GetError(); - if ( (ERRCODE_NONE != err) - || (nWritten != (sal_uInt32)aData.getLength()) - ) - { - throw stario::BufferSizeExceededException(::rtl::OUString(),static_cast<staruno::XWeak*>(this)); - } -} - -//------------------------------------------------------------------ -void SAL_CALL OOutputStreamWrapper::flush() throw( stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException ) -{ - rStream.Flush(); - checkError(); -} - -//------------------------------------------------------------------ -void SAL_CALL OOutputStreamWrapper::closeOutput() throw( stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException ) -{ -} - -//------------------------------------------------------------------------------ -void OOutputStreamWrapper::checkError() const -{ - if (rStream.GetError() != ERRCODE_NONE) - // TODO: really evaluate the error - throw stario::NotConnectedException(::rtl::OUString(), const_cast<staruno::XWeak*>(static_cast<const staruno::XWeak*>(this))); -} - -//================================================================== -//= OSeekableOutputStreamWrapper -//================================================================== -//------------------------------------------------------------------------------ -OSeekableOutputStreamWrapper::OSeekableOutputStreamWrapper(SvStream& _rStream) - :OOutputStreamWrapper(_rStream) -{ -} - -//------------------------------------------------------------------------------ -Any SAL_CALL OSeekableOutputStreamWrapper::queryInterface( const Type& _rType ) throw (RuntimeException) -{ - Any aReturn = OOutputStreamWrapper::queryInterface(_rType); - if (!aReturn.hasValue()) - aReturn = OSeekableOutputStreamWrapper_Base::queryInterface(_rType); - return aReturn; -} - -//------------------------------------------------------------------------------ -void SAL_CALL OSeekableOutputStreamWrapper::acquire( ) throw () -{ - OOutputStreamWrapper::acquire(); -} - -//------------------------------------------------------------------------------ -void SAL_CALL OSeekableOutputStreamWrapper::release( ) throw () -{ - OOutputStreamWrapper::release(); -} - -//------------------------------------------------------------------------------ -void SAL_CALL OSeekableOutputStreamWrapper::seek( sal_Int64 _nLocation ) throw (IllegalArgumentException, IOException, RuntimeException) -{ - rStream.Seek((sal_uInt32)_nLocation); - checkError(); -} - -//------------------------------------------------------------------------------ -sal_Int64 SAL_CALL OSeekableOutputStreamWrapper::getPosition( ) throw (IOException, RuntimeException) -{ - sal_uInt32 nPos = rStream.Tell(); - checkError(); - return (sal_Int64)nPos; -} - -//------------------------------------------------------------------------------ -sal_Int64 SAL_CALL OSeekableOutputStreamWrapper::getLength( ) throw (IOException, RuntimeException) -{ - sal_uInt32 nCurrentPos = rStream.Tell(); - checkError(); - - rStream.Seek(STREAM_SEEK_TO_END); - sal_uInt32 nEndPos = rStream.Tell(); - rStream.Seek(nCurrentPos); - - checkError(); - - return (sal_Int64)nEndPos; -} - -//------------------------------------------------------------------------------ -OStreamWrapper::OStreamWrapper(SvStream& _rStream) -{ - SetStream( &_rStream, sal_False ); -} - -//------------------------------------------------------------------------------ -::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL OStreamWrapper::getInputStream( ) throw (::com::sun::star::uno::RuntimeException) -{ - return this; -} - -//------------------------------------------------------------------------------ -::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > SAL_CALL OStreamWrapper::getOutputStream( ) throw (::com::sun::star::uno::RuntimeException) -{ - return this; -} - -//------------------------------------------------------------------------------ -void SAL_CALL OStreamWrapper::writeBytes(const staruno::Sequence< sal_Int8 >& aData) throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException) -{ - sal_uInt32 nWritten = m_pSvStream->Write(aData.getConstArray(),aData.getLength()); - ErrCode err = m_pSvStream->GetError(); - if ( (ERRCODE_NONE != err) - || (nWritten != (sal_uInt32)aData.getLength()) - ) - { - throw stario::BufferSizeExceededException(::rtl::OUString(),static_cast<staruno::XWeak*>(this)); - } -} - -//------------------------------------------------------------------------------ -void SAL_CALL OStreamWrapper::flush() throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException) -{ - m_pSvStream->Flush(); - if (m_pSvStream->GetError() != ERRCODE_NONE) - throw stario::NotConnectedException(::rtl::OUString(),static_cast<staruno::XWeak*>(this)); -} - -//------------------------------------------------------------------------------ -void SAL_CALL OStreamWrapper::closeOutput() throw(stario::NotConnectedException, stario::BufferSizeExceededException, staruno::RuntimeException) -{ -} - -//------------------------------------------------------------------------------ -void SAL_CALL OStreamWrapper::truncate() throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException) -{ - m_pSvStream->SetStreamSize(0); -} - -} // namespace utl - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/ucbhelper/XTempFile.hxx b/unotools/source/ucbhelper/XTempFile.hxx deleted file mode 100644 index fcadd2871e..0000000000 --- a/unotools/source/ucbhelper/XTempFile.hxx +++ /dev/null @@ -1,154 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ -#ifndef _XTEMPFILE_HXX_ -#define _XTEMPFILE_HXX_ - -#include <com/sun/star/io/XInputStream.hpp> -#include <com/sun/star/io/XOutputStream.hpp> -#include <com/sun/star/io/XSeekable.hpp> -#include <com/sun/star/io/XStream.hpp> -#include <com/sun/star/io/XTempFile.hpp> -#include <com/sun/star/io/XTruncate.hpp> -#include <com/sun/star/lang/XSingleComponentFactory.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <cppuhelper/implbase5.hxx> -#include <cppuhelper/propertysetmixin.hxx> -#include <osl/mutex.hxx> - -class SvStream; -namespace utl { class TempFile; } - -typedef ::cppu::WeakImplHelper5< ::com::sun::star::io::XTempFile - , ::com::sun::star::io::XInputStream - , ::com::sun::star::io::XOutputStream - , ::com::sun::star::io::XTruncate - , ::com::sun::star::lang::XServiceInfo - > - OTempFileBase; - -class OTempFileService : - public OTempFileBase, - public ::cppu::PropertySetMixin< ::com::sun::star::io::XTempFile > -{ -protected: - ::utl::TempFile* mpTempFile; - ::osl::Mutex maMutex; - SvStream* mpStream; - sal_Bool mbRemoveFile; - sal_Bool mbInClosed; - sal_Bool mbOutClosed; - - sal_Int64 mnCachedPos; - sal_Bool mbHasCachedPos; - - void checkError () const; - void checkConnected (); - -public: - OTempFileService (::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > const & context); - - //Methods - // XInterface - virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) - throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL acquire( ) - throw (); - virtual void SAL_CALL release( ) - throw (); - // XTypeProvider - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) - throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL getImplementationId( ) - throw (::com::sun::star::uno::RuntimeException); - - // XTempFile - virtual ::sal_Bool SAL_CALL getRemoveFile() - throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setRemoveFile( ::sal_Bool _removefile ) - throw (::com::sun::star::uno::RuntimeException); - virtual ::rtl::OUString SAL_CALL getUri() - throw (::com::sun::star::uno::RuntimeException); - virtual ::rtl::OUString SAL_CALL getResourceName() - throw (::com::sun::star::uno::RuntimeException); - - // XInputStream - virtual ::sal_Int32 SAL_CALL readBytes( ::com::sun::star::uno::Sequence< ::sal_Int8 >& aData, ::sal_Int32 nBytesToRead ) - throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual ::sal_Int32 SAL_CALL readSomeBytes( ::com::sun::star::uno::Sequence< ::sal_Int8 >& aData, ::sal_Int32 nMaxBytesToRead ) - throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL skipBytes( ::sal_Int32 nBytesToSkip ) - throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual ::sal_Int32 SAL_CALL available( ) - throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL closeInput( ) - throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - // XOutputStream - virtual void SAL_CALL writeBytes( const ::com::sun::star::uno::Sequence< ::sal_Int8 >& aData ) - throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL flush( ) - throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL closeOutput( ) - throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - // XSeekable - virtual void SAL_CALL seek( sal_Int64 location ) - throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual sal_Int64 SAL_CALL getPosition( ) - throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - virtual sal_Int64 SAL_CALL getLength( ) - throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - // XStream - virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getInputStream( ) - throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > SAL_CALL getOutputStream( ) - throw (::com::sun::star::uno::RuntimeException); - // XTruncate - virtual void SAL_CALL truncate() - throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName() - throw (::com::sun::star::uno::RuntimeException); - virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) - throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() - throw (::com::sun::star::uno::RuntimeException); - - //::com::sun::star::uno::Reference < ::com::sun::star::uno::XInterface > SAL_CALL XTempFile_createInstance( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > const & context); - static ::rtl::OUString getImplementationName_Static (); - static ::com::sun::star::uno::Sequence < ::rtl::OUString > getSupportedServiceNames_Static(); - - static ::com::sun::star::uno::Reference < com::sun::star::lang::XSingleComponentFactory > createServiceFactory_Static( com::sun::star::uno::Reference < com::sun::star::lang::XMultiServiceFactory > const & rServiceFactory ); - -private: - OTempFileService( OTempFileService & ); - virtual ~OTempFileService (); - -}; -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/ucbhelper/localfilehelper.cxx b/unotools/source/ucbhelper/localfilehelper.cxx deleted file mode 100644 index f1026f749f..0000000000 --- a/unotools/source/ucbhelper/localfilehelper.cxx +++ /dev/null @@ -1,245 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <com/sun/star/sdbc/XResultSet.hpp> -#include <com/sun/star/ucb/XContentAccess.hpp> -#include <com/sun/star/ucb/CommandAbortedException.hpp> - -#include <unotools/localfilehelper.hxx> -#include <ucbhelper/fileidentifierconverter.hxx> -#include <ucbhelper/contentbroker.hxx> -#include <rtl/ustring.hxx> -#include <osl/file.hxx> -#include <tools/debug.hxx> -#include <tools/urlobj.hxx> -#include <ucbhelper/content.hxx> -#include <vector> - -using namespace ::osl; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::ucb; - -namespace utl -{ - -sal_Bool LocalFileHelper::ConvertSystemPathToURL( const String& rName, const String& rBaseURL, String& rReturn ) -{ - rReturn = ::rtl::OUString(); - - ::ucbhelper::ContentBroker* pBroker = ::ucbhelper::ContentBroker::get(); - if ( !pBroker ) - { - rtl::OUString aRet; - if ( FileBase::getFileURLFromSystemPath( rName, aRet ) == FileBase::E_None ) - rReturn = aRet; - } - else - { - ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentProviderManager > xManager = - pBroker->getContentProviderManagerInterface(); - try - { - rReturn = ::ucbhelper::getFileURLFromSystemPath( xManager, rBaseURL, rName ); - } - catch ( ::com::sun::star::uno::RuntimeException& ) - { - return sal_False; - } - } - - return ( rReturn.Len() != 0 ); -} - -sal_Bool LocalFileHelper::ConvertURLToSystemPath( const String& rName, String& rReturn ) -{ - rReturn = ::rtl::OUString(); - ::ucbhelper::ContentBroker* pBroker = ::ucbhelper::ContentBroker::get(); - if ( !pBroker ) - { - rtl::OUString aRet; - if( FileBase::getSystemPathFromFileURL( rName, aRet ) == FileBase::E_None ) - rReturn = aRet; - } - else - { - ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentProviderManager > xManager = - pBroker->getContentProviderManagerInterface(); - try - { - rReturn = ::ucbhelper::getSystemPathFromFileURL( xManager, rName ); - } - catch ( ::com::sun::star::uno::RuntimeException& ) - { - } - } - - return ( rReturn.Len() != 0 ); -} - -sal_Bool LocalFileHelper::ConvertPhysicalNameToURL( const String& rName, String& rReturn ) -{ - rReturn = ::rtl::OUString(); - ::ucbhelper::ContentBroker* pBroker = ::ucbhelper::ContentBroker::get(); - if ( !pBroker ) - { - rtl::OUString aRet; - if ( FileBase::getFileURLFromSystemPath( rName, aRet ) == FileBase::E_None ) - rReturn = aRet; - } - else - { - ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentProviderManager > xManager = - pBroker->getContentProviderManagerInterface(); - - try - { - rtl::OUString aBase( ::ucbhelper::getLocalFileURL( xManager ) ); - rReturn = ::ucbhelper::getFileURLFromSystemPath( xManager, aBase, rName ); - } - catch ( ::com::sun::star::uno::RuntimeException& ) - { - } - } - - return ( rReturn.Len() != 0 ); -} - -sal_Bool LocalFileHelper::ConvertURLToPhysicalName( const String& rName, String& rReturn ) -{ - rReturn = ::rtl::OUString(); - ::ucbhelper::ContentBroker* pBroker = ::ucbhelper::ContentBroker::get(); - if ( !pBroker ) - { - ::rtl::OUString aRet; - if ( FileBase::getSystemPathFromFileURL( rName, aRet ) == FileBase::E_None ) - rReturn = aRet; - } - else - { - ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentProviderManager > xManager = - pBroker->getContentProviderManagerInterface(); - try - { - INetURLObject aObj( rName ); - INetURLObject aLocal( ::ucbhelper::getLocalFileURL( xManager ) ); - if ( aObj.GetProtocol() == aLocal.GetProtocol() ) - rReturn = ::ucbhelper::getSystemPathFromFileURL( xManager, rName ); - } - catch ( ::com::sun::star::uno::RuntimeException& ) - { - } - } - - return ( rReturn.Len() != 0 ); -} - -sal_Bool LocalFileHelper::IsLocalFile( const String& rName ) -{ - String aTmp; - return ConvertURLToPhysicalName( rName, aTmp ); -} - -sal_Bool LocalFileHelper::IsFileContent( const String& rName ) -{ - String aTmp; - return ConvertURLToSystemPath( rName, aTmp ); -} - -typedef ::std::vector< ::rtl::OUString* > StringList_Impl; - -::com::sun::star::uno::Sequence < ::rtl::OUString > LocalFileHelper::GetFolderContents( const ::rtl::OUString& rFolder, sal_Bool bFolder ) -{ - StringList_Impl* pFiles = NULL; - try - { - ::ucbhelper::Content aCnt( rFolder, Reference< XCommandEnvironment > () ); - Reference< ::com::sun::star::sdbc::XResultSet > xResultSet; - ::com::sun::star::uno::Sequence< ::rtl::OUString > aProps(1); - ::rtl::OUString* pProps = aProps.getArray(); - pProps[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Url")); - - try - { - ::ucbhelper::ResultSetInclude eInclude = bFolder ? ::ucbhelper::INCLUDE_FOLDERS_AND_DOCUMENTS : ::ucbhelper::INCLUDE_DOCUMENTS_ONLY; - xResultSet = aCnt.createCursor( aProps, eInclude ); - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - } - catch( Exception& ) - { - } - - if ( xResultSet.is() ) - { - pFiles = new StringList_Impl; - Reference< XContentAccess > xContentAccess( xResultSet, UNO_QUERY ); - try - { - while ( xResultSet->next() ) - { - ::rtl::OUString aId = xContentAccess->queryContentIdentifierString(); - ::rtl::OUString* pFile = new ::rtl::OUString( aId ); - pFiles->push_back( pFile ); - } - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - } - catch( Exception& ) - { - } - } - } - catch( Exception& ) - { - } - - if ( pFiles ) - { - size_t nCount = pFiles->size(); - Sequence < ::rtl::OUString > aRet( nCount ); - ::rtl::OUString* pRet = aRet.getArray(); - for ( size_t i = 0; i < nCount; ++i ) - { - ::rtl::OUString* pFile = (*pFiles)[ i ]; - pRet[i] = *( pFile ); - delete pFile; - } - delete pFiles; - return aRet; - } - else - return Sequence < ::rtl::OUString > (); -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/ucbhelper/progresshandlerwrap.cxx b/unotools/source/ucbhelper/progresshandlerwrap.cxx deleted file mode 100644 index 956607b040..0000000000 --- a/unotools/source/ucbhelper/progresshandlerwrap.cxx +++ /dev/null @@ -1,100 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" -#include <unotools/progresshandlerwrap.hxx> - -namespace utl -{ - -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::task; -using namespace ::com::sun::star::ucb; - -ProgressHandlerWrap::ProgressHandlerWrap( ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > xSI ) -: m_xStatusIndicator( xSI ) -{ -} - -sal_Bool getStatusFromAny_Impl( const Any& aAny, ::rtl::OUString& aText, sal_Int32& nNum ) -{ - sal_Bool bNumIsSet = sal_False; - - Sequence< Any > aSetList; - if( ( aAny >>= aSetList ) && aSetList.getLength() ) - for( int ind = 0; ind < aSetList.getLength(); ind++ ) - { - if( !bNumIsSet && ( aSetList[ind] >>= nNum ) ) - bNumIsSet = sal_True; - else - !aText.getLength() && ( aSetList[ind] >>= aText ); - } - - return bNumIsSet; -} - -void SAL_CALL ProgressHandlerWrap::push( const Any& Status ) - throw( RuntimeException ) -{ - if( !m_xStatusIndicator.is() ) - return; - - ::rtl::OUString aText; - sal_Int32 nRange; - - if( getStatusFromAny_Impl( Status, aText, nRange ) ) - m_xStatusIndicator->start( aText, nRange ); -} - -void SAL_CALL ProgressHandlerWrap::update( const Any& Status ) - throw( RuntimeException ) -{ - if( !m_xStatusIndicator.is() ) - return; - - ::rtl::OUString aText; - sal_Int32 nValue; - - if( getStatusFromAny_Impl( Status, aText, nValue ) ) - { - if( aText.getLength() ) m_xStatusIndicator->setText( aText ); - m_xStatusIndicator->setValue( nValue ); - } -} - -void SAL_CALL ProgressHandlerWrap::pop() - throw( RuntimeException ) -{ - if( m_xStatusIndicator.is() ) - m_xStatusIndicator->end(); -} - -} // namespace utl - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/ucbhelper/tempfile.cxx b/unotools/source/ucbhelper/tempfile.cxx deleted file mode 100644 index 4274888b5f..0000000000 --- a/unotools/source/ucbhelper/tempfile.cxx +++ /dev/null @@ -1,489 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/tempfile.hxx> -#include <tools/tempfile.hxx> -#include <unotools/localfilehelper.hxx> -#include <unotools/ucbstreamhelper.hxx> -#include <ucbhelper/fileidentifierconverter.hxx> -#include <ucbhelper/contentbroker.hxx> -#include <rtl/ustring.hxx> -#include <rtl/instance.hxx> -#include <osl/file.hxx> -#include <tools/time.hxx> -#include <tools/debug.hxx> -#include <stdio.h> - -#ifdef UNX -#include <sys/stat.h> -#endif - -using namespace osl; - -namespace -{ - struct TempNameBase_Impl - : public rtl::Static< ::rtl::OUString, TempNameBase_Impl > {}; -} - -namespace utl -{ - -struct TempFile_Impl -{ - String aName; - String aURL; - SvStream* pStream; - sal_Bool bIsDirectory; - - TempFile_Impl() - : pStream(0) - {} -}; - -rtl::OUString getParentName( const rtl::OUString& aFileName ) -{ - sal_Int32 lastIndex = aFileName.lastIndexOf( sal_Unicode('/') ); - rtl::OUString aParent = aFileName.copy( 0,lastIndex ); - - if( aParent[ aParent.getLength()-1] == sal_Unicode(':') && aParent.getLength() == 6 ) - aParent += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")); - - if( 0 == aParent.compareToAscii( "file://" ) ) - aParent = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///")); - - return aParent; -} - -sal_Bool ensuredir( const rtl::OUString& rUnqPath ) -{ - rtl::OUString aPath; - if ( rUnqPath.getLength() < 1 ) - return sal_False; - - // remove trailing slash - if ( rUnqPath[ rUnqPath.getLength() - 1 ] == sal_Unicode( '/' ) ) - aPath = rUnqPath.copy( 0, rUnqPath.getLength() - 1 ); - else - aPath = rUnqPath; - - // HACK: create directory on a mount point with nobrowse option - // returns ENOSYS in any case !! - osl::Directory aDirectory( aPath ); -#ifdef UNX -/* RW permission for the user only! */ - mode_t old_mode = umask(077); -#endif - osl::FileBase::RC nError = aDirectory.open(); -#ifdef UNX -umask(old_mode); -#endif - aDirectory.close(); - if( nError == osl::File::E_None ) - return sal_True; - - // try to create the directory - nError = osl::Directory::create( aPath ); - sal_Bool bSuccess = ( nError == osl::File::E_None || nError == osl::FileBase::E_EXIST ); - if( !bSuccess ) - { - // perhaps parent(s) don't exist - rtl::OUString aParentDir = getParentName( aPath ); - if ( aParentDir != aPath ) - { - bSuccess = ensuredir( getParentName( aPath ) ); - - // After parent directory structure exists try it one's more - if ( bSuccess ) - { - // Parent directory exists, retry creation of directory - nError = osl::Directory::create( aPath ); - bSuccess =( nError == osl::File::E_None || nError == osl::FileBase::E_EXIST ); - } - } - } - - return bSuccess; -} - -#define TMPNAME_SIZE ( 1 + 5 + 5 + 4 + 1 ) -String ConstructTempDir_Impl( const String* pParent ) -{ - String aName; - if ( pParent && pParent->Len() ) - { - ::ucbhelper::ContentBroker* pBroker = ::ucbhelper::ContentBroker::get(); - if ( pBroker ) - { - ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentProviderManager > xManager = - pBroker->getContentProviderManagerInterface(); - - // if parent given try to use it - rtl::OUString aTmp( *pParent ); - - // test for valid filename - rtl::OUString aRet; - ::osl::FileBase::getFileURLFromSystemPath( - ::ucbhelper::getSystemPathFromFileURL( xManager, aTmp ), - aRet ); - if ( aRet.getLength() ) - { - ::osl::DirectoryItem aItem; - sal_Int32 i = aRet.getLength(); - if ( aRet[i-1] == '/' ) - i--; - - if ( DirectoryItem::get( ::rtl::OUString( aRet, i ), aItem ) == FileBase::E_None ) - aName = aRet; - } - } - else - { - DBG_WARNING( "::unotools::TempFile : UCB not present or not initialized!" ); - } - } - - if ( !aName.Len() ) - { - ::rtl::OUString &rTempNameBase_Impl = TempNameBase_Impl::get(); - if (rTempNameBase_Impl.getLength() == 0) - { - ::rtl::OUString ustrTempDirURL; - ::osl::FileBase::RC rc = ::osl::File::getTempDirURL( - ustrTempDirURL ); - if (rc == ::osl::FileBase::E_None) - rTempNameBase_Impl = ustrTempDirURL; - } - // if no parent or invalid parent : use default directory - DBG_ASSERT( rTempNameBase_Impl.getLength(), "No TempDir!" ); - aName = rTempNameBase_Impl; - ensuredir( aName ); - } - - // Make sure that directory ends with a separator - xub_StrLen i = aName.Len(); - if( i>0 && aName.GetChar(i-1) != '/' ) - aName += '/'; - - return aName; -} - -void CreateTempName_Impl( String& rName, sal_Bool bKeep, sal_Bool bDir = sal_True ) -{ - // add a suitable tempname - // 36 ** 6 == 2176782336 - unsigned const nRadix = 36; - unsigned long const nMax = (nRadix*nRadix*nRadix*nRadix*nRadix*nRadix); - String aName( rName ); - aName += String::CreateFromAscii( "lu" ); - - rName.Erase(); - unsigned long nSeed = Time::GetSystemTicks() % nMax; - for ( unsigned long u = nSeed; ++u != nSeed; ) - { - u %= nMax; - String aTmp( aName ); - aTmp += String::CreateFromInt64( static_cast<sal_Int64>(u), nRadix ); - aTmp += String::CreateFromAscii( ".tmp" ); - - if ( bDir ) - { -#ifdef UNX /* RW permission for the user only! */ - mode_t old_mode = umask(077); -#endif - FileBase::RC err = Directory::create( aTmp ); -#ifdef UNX - umask(old_mode); -#endif - if ( err == FileBase::E_None ) - { - // !bKeep: only for creating a name, not a file or directory - if ( bKeep || Directory::remove( aTmp ) == FileBase::E_None ) - rName = aTmp; - break; - } - else if ( err != FileBase::E_EXIST ) - { - // if f.e. name contains invalid chars stop trying to create dirs - break; - } - } - else - { - DBG_ASSERT( bKeep, "Too expensive, use directory for creating name!" ); - File aFile( aTmp ); -#ifdef UNX /* RW permission for the user only! */ - mode_t old_mode = umask(077); -#endif - FileBase::RC err = aFile.open( osl_File_OpenFlag_Create | osl_File_OpenFlag_NoLock ); -#ifdef UNX - umask(old_mode); -#endif - if ( err == FileBase::E_None ) - { - rName = aTmp; - aFile.close(); - break; - } - else if ( err != FileBase::E_EXIST ) - { - // if f.e. name contains invalid chars stop trying to create files - // but if there is a folder with such name proceed further - - DirectoryItem aTmpItem; - FileStatus aTmpStatus( osl_FileStatus_Mask_Type ); - if ( DirectoryItem::get( aTmp, aTmpItem ) != FileBase::E_None - || aTmpItem.getFileStatus( aTmpStatus ) != FileBase::E_None - || aTmpStatus.getFileType() != FileStatus::Directory ) - break; - } - } - } -} - -void lcl_createName(TempFile_Impl& _rImpl,const String& rLeadingChars,sal_Bool _bStartWithZero, const String* pExtension, const String* pParent, sal_Bool bDirectory) -{ - _rImpl.bIsDirectory = bDirectory; - - // get correct directory - String aName = ConstructTempDir_Impl( pParent ); - - sal_Bool bUseNumber = _bStartWithZero; - // now use special naming scheme ( name takes leading chars and an index counting up from zero - aName += rLeadingChars; - for ( sal_Int32 i=0;; i++ ) - { - String aTmp( aName ); - if ( bUseNumber ) - aTmp += String::CreateFromInt32( i ); - bUseNumber = sal_True; - if ( pExtension ) - aTmp += *pExtension; - else - aTmp += String::CreateFromAscii( ".tmp" ); - if ( bDirectory ) - { - FileBase::RC err = Directory::create( aTmp ); - if ( err == FileBase::E_None ) - { - _rImpl.aName = aTmp; - break; - } - else if ( err != FileBase::E_EXIST ) - // if f.e. name contains invalid chars stop trying to create dirs - break; - } - else - { - File aFile( aTmp ); -#ifdef UNX -/* RW permission for the user only! */ - mode_t old_mode = umask(077); -#endif - FileBase::RC err = aFile.open(osl_File_OpenFlag_Create); -#ifdef UNX -umask(old_mode); -#endif - if ( err == FileBase::E_None || err == FileBase::E_NOLCK ) - { - _rImpl.aName = aTmp; - aFile.close(); - break; - } - else if ( err != FileBase::E_EXIST ) - { - // if f.e. name contains invalid chars stop trying to create dirs - // but if there is a folder with such name proceed further - - DirectoryItem aTmpItem; - FileStatus aTmpStatus( osl_FileStatus_Mask_Type ); - if ( DirectoryItem::get( aTmp, aTmpItem ) != FileBase::E_None - || aTmpItem.getFileStatus( aTmpStatus ) != FileBase::E_None - || aTmpStatus.getFileType() != FileStatus::Directory ) - break; - } - } - if ( !_bStartWithZero ) - aTmp += String::CreateFromInt32( i ); - } -} - - -String TempFile::CreateTempName( const String* pParent ) -{ - // get correct directory - String aName = ConstructTempDir_Impl( pParent ); - - // get TempFile name with default naming scheme - CreateTempName_Impl( aName, sal_False ); - - // convert to file URL - rtl::OUString aTmp; - if ( aName.Len() ) - FileBase::getSystemPathFromFileURL( aName, aTmp ); - return aTmp; -} - -TempFile::TempFile( const String* pParent, sal_Bool bDirectory ) - : pImp( new TempFile_Impl ) - , bKillingFileEnabled( sal_False ) -{ - pImp->bIsDirectory = bDirectory; - - // get correct directory - pImp->aName = ConstructTempDir_Impl( pParent ); - - // get TempFile with default naming scheme - CreateTempName_Impl( pImp->aName, sal_True, bDirectory ); -} - -TempFile::TempFile( const String& rLeadingChars, const String* pExtension, const String* pParent, sal_Bool bDirectory) - : pImp( new TempFile_Impl ) - , bKillingFileEnabled( sal_False ) -{ - lcl_createName(*pImp,rLeadingChars,sal_True, pExtension, pParent, bDirectory); -} -TempFile::TempFile( const String& rLeadingChars,sal_Bool _bStartWithZero, const String* pExtension, const String* pParent, sal_Bool bDirectory) - : pImp( new TempFile_Impl ) - , bKillingFileEnabled( sal_False ) -{ - lcl_createName(*pImp,rLeadingChars,_bStartWithZero, pExtension, pParent, bDirectory); -} - -TempFile::~TempFile() -{ - delete pImp->pStream; - if ( bKillingFileEnabled ) - { - if ( pImp->bIsDirectory ) - { - // at the moment no recursiv algorithm present - Directory::remove( pImp->aName ); - } - else - { - File::remove( pImp->aName ); - } - } - - delete pImp; -} - -sal_Bool TempFile::IsValid() const -{ - return pImp->aName.Len() != 0; -} - -String TempFile::GetFileName() const -{ - rtl::OUString aTmp; - FileBase::getSystemPathFromFileURL( pImp->aName, aTmp ); - return aTmp; -} - -String TempFile::GetURL() const -{ - if ( !pImp->aURL.Len() ) - { - String aTmp; - LocalFileHelper::ConvertPhysicalNameToURL( GetFileName(), aTmp ); - pImp->aURL = aTmp; - } - - return pImp->aURL; -} - -SvStream* TempFile::GetStream( StreamMode eMode ) -{ - if ( !pImp->pStream ) - { - if ( GetURL().Len() ) - pImp->pStream = UcbStreamHelper::CreateStream( pImp->aURL, eMode, sal_True /* bFileExists */ ); - else - pImp->pStream = new SvMemoryStream( eMode ); - } - - return pImp->pStream; -} - -void TempFile::CloseStream() -{ - if ( pImp->pStream ) - { - delete pImp->pStream; - pImp->pStream = NULL; - } -} - -String TempFile::SetTempNameBaseDirectory( const String &rBaseName ) -{ - if( !rBaseName.Len() ) - return String(); - - rtl::OUString aUnqPath( rBaseName ); - - // remove trailing slash - if ( rBaseName.GetChar( rBaseName.Len() - 1 ) == sal_Unicode( '/' ) ) - aUnqPath = rBaseName.Copy( 0, rBaseName.Len() - 1 ); - - // try to create the directory - sal_Bool bRet = sal_False; - osl::FileBase::RC err = osl::Directory::create( aUnqPath ); - if ( err != FileBase::E_None && err != FileBase::E_EXIST ) - // perhaps parent(s) don't exist - bRet = ensuredir( aUnqPath ); - else - bRet = sal_True; - - // failure to create base directory means returning an empty string - rtl::OUString aTmp; - if ( bRet ) - { - // append own internal directory - bRet = sal_True; - ::rtl::OUString &rTempNameBase_Impl = TempNameBase_Impl::get(); - rTempNameBase_Impl = rBaseName; - rTempNameBase_Impl += String( '/' ); - - TempFile aBase( NULL, sal_True ); - if ( aBase.IsValid() ) - // use it in case of success - rTempNameBase_Impl = aBase.pImp->aName; - - // return system path of used directory - FileBase::getSystemPathFromFileURL( rTempNameBase_Impl, aTmp ); - } - - return aTmp; -} -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/ucbhelper/ucbhelper.cxx b/unotools/source/ucbhelper/ucbhelper.cxx deleted file mode 100644 index 513a8e0672..0000000000 --- a/unotools/source/ucbhelper/ucbhelper.cxx +++ /dev/null @@ -1,929 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include "unotools/ucbhelper.hxx" -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/sdbc/XResultSet.hpp> -#include <com/sun/star/sdbc/XRow.hpp> -#include <com/sun/star/ucb/XContentIdentifierFactory.hpp> -#include <com/sun/star/ucb/XCommandProcessor.hpp> -#include <com/sun/star/ucb/CommandAbortedException.hpp> -#include <com/sun/star/ucb/IllegalIdentifierException.hpp> -#include <com/sun/star/ucb/NameClashException.hpp> -#include <com/sun/star/ucb/NameClash.hpp> -#include <com/sun/star/ucb/NumberedSortingInfo.hpp> -#include <com/sun/star/ucb/TransferInfo.hpp> -#include <com/sun/star/ucb/XAnyCompareFactory.hpp> -#include <com/sun/star/ucb/XCommandInfo.hpp> -#include <com/sun/star/ucb/XContentAccess.hpp> -#include <com/sun/star/ucb/ContentInfo.hpp> -#include <com/sun/star/ucb/ContentInfoAttribute.hpp> -#include <com/sun/star/ucb/XDynamicResultSet.hpp> -#include <com/sun/star/ucb/XSortedDynamicResultSetFactory.hpp> -#include <com/sun/star/util/DateTime.hpp> -#include <com/sun/star/container/XChild.hpp> -#include <com/sun/star/ucb/InteractiveIOException.hpp> -#include <com/sun/star/task/XInteractionHandler.hpp> -#include <ucbhelper/commandenvironment.hxx> -#include <ucbhelper/content.hxx> -#include <comphelper/processfactory.hxx> -#include <osl/file.hxx> - -#include <tools/wldcrd.hxx> -#include <tools/ref.hxx> -#include <tools/debug.hxx> -#include <tools/urlobj.hxx> -#include <tools/datetime.hxx> -#include <ucbhelper/contentbroker.hxx> - -#include "unotools/localfilehelper.hxx" -#include <vector> - -using namespace ucbhelper; -using namespace com::sun::star; -using namespace com::sun::star::beans; -using namespace com::sun::star::container; -using namespace com::sun::star::lang; -using namespace com::sun::star::sdbc; -using namespace com::sun::star::task; -using namespace com::sun::star::uno; -using namespace com::sun::star::ucb; -using namespace comphelper; -using namespace osl; - -using ::rtl::OUString; - -typedef ::std::vector< OUString* > StringList_Impl; - -#define CONVERT_DATETIME( aUnoDT, aToolsDT ) \ - aToolsDT = DateTime( Date( aUnoDT.Day, aUnoDT.Month, aUnoDT.Year ), \ - Time( aUnoDT.Hours, aUnoDT.Minutes, aUnoDT.Seconds, aUnoDT.HundredthSeconds ) ); - -namespace utl -{ - -sal_Bool UCBContentHelper::Transfer_Impl( const String& rSource, const String& rDest, sal_Bool bMoveData, sal_Int32 nNameClash ) -{ - sal_Bool bRet = sal_True, bKillSource = sal_False; - INetURLObject aSourceObj( rSource ); - DBG_ASSERT( aSourceObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - - INetURLObject aDestObj( rDest ); - DBG_ASSERT( aDestObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - if ( bMoveData && aSourceObj.GetProtocol() != aDestObj.GetProtocol() ) - { - bMoveData = sal_False; - bKillSource = sal_True; - } - String aName = aDestObj.getName(); - aDestObj.removeSegment(); - aDestObj.setFinalSlash(); - - try - { - Content aDestPath( aDestObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () ); - uno::Reference< ::com::sun::star::ucb::XCommandInfo > xInfo = aDestPath.getCommands(); - OUString aTransferName(RTL_CONSTASCII_USTRINGPARAM("transfer")); - if ( xInfo->hasCommandByName( aTransferName ) ) - { - aDestPath.executeCommand( aTransferName, makeAny( - ::com::sun::star::ucb::TransferInfo( bMoveData, aSourceObj.GetMainURL( INetURLObject::NO_DECODE ), aName, nNameClash ) ) ); - } - else - { - DBG_ERRORFILE( "transfer command not available" ); - } - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - bRet = sal_False; - } - catch( ::com::sun::star::uno::Exception& ) - { - bRet = sal_False; - } - - if ( bKillSource ) - UCBContentHelper::Kill( rSource ); - - return bRet; -} - -// ----------------------------------------------------------------------- - -sal_Bool UCBContentHelper::IsDocument( const String& rContent ) -{ - sal_Bool bRet = sal_False; - INetURLObject aObj( rContent ); - DBG_ASSERT( aObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - - try - { - Content aCnt( aObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () ); - bRet = aCnt.isDocument(); - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - DBG_WARNING( "CommandAbortedException" ); - } - catch( ::com::sun::star::ucb::IllegalIdentifierException& ) - { - DBG_WARNING( "IllegalIdentifierException" ); - } - catch( ContentCreationException& ) - { - DBG_WARNING( "IllegalIdentifierException" ); - } - catch( ::com::sun::star::uno::Exception& ) - { - DBG_WARNING( "Any other exception" ); - } - - return bRet; -} - -// ----------------------------------------------------------------------- - -Any UCBContentHelper::GetProperty( const String& rContent, const ::rtl::OUString& rName ) -{ - INetURLObject aObj( rContent ); - DBG_ASSERT( aObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - try - { - Content aCnt( aObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () ); - return aCnt.getPropertyValue( rName ); - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - DBG_WARNING( "CommandAbortedException" ); - } - catch( ::com::sun::star::ucb::IllegalIdentifierException& ) - { - DBG_WARNING( "IllegalIdentifierException" ); - } - catch( ContentCreationException& ) - { - DBG_WARNING( "IllegalIdentifierException" ); - } - catch( ::com::sun::star::uno::Exception& ) - { - DBG_WARNING( "Any other exception" ); - } - - return Any(); -} - -sal_Bool UCBContentHelper::IsFolder( const String& rContent ) -{ - sal_Bool bRet = sal_False; - INetURLObject aObj( rContent ); - DBG_ASSERT( aObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - try - { - Content aCnt( aObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () ); - bRet = aCnt.isFolder(); - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - DBG_WARNING( "CommandAbortedException" ); - } - catch( ::com::sun::star::ucb::IllegalIdentifierException& ) - { - DBG_WARNING( "IllegalIdentifierException" ); - } - catch( ContentCreationException& ) - { - DBG_WARNING( "IllegalIdentifierException" ); - } - catch( ::com::sun::star::uno::Exception& ) - { - DBG_WARNING( "Any other exception" ); - } - - return bRet; -} - -// ----------------------------------------------------------------------- - -sal_Bool UCBContentHelper::GetTitle( const String& rContent, String& rTitle ) -{ - sal_Bool bRet = sal_False; - INetURLObject aObj( rContent ); - DBG_ASSERT( aObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - try - { - Content aCnt( aObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () ); - OUString aTemp; - if ( aCnt.getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("Title")) ) >>= aTemp ) - { - rTitle = String( aTemp ); - bRet = sal_True; - } - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - } - catch( ::com::sun::star::uno::Exception& ) - { - } - return bRet; -} - -// ----------------------------------------------------------------------- - -sal_Bool UCBContentHelper::Kill( const String& rContent ) -{ - sal_Bool bRet = sal_True; - INetURLObject aDeleteObj( rContent ); - DBG_ASSERT( aDeleteObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - - try - { - Content aCnt( aDeleteObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () ); - aCnt.executeCommand( OUString(RTL_CONSTASCII_USTRINGPARAM("delete")), makeAny( sal_Bool( sal_True ) ) ); - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - DBG_WARNING( "CommandAbortedException" ); - bRet = sal_False; - } - catch( ::com::sun::star::uno::Exception& ) - { - DBG_WARNING( "Any other exception" ); - bRet = sal_False; - } - - return bRet; -} - -// ----------------------------------------------------------------------- - -Sequence < OUString > UCBContentHelper::GetFolderContents( const String& rFolder, sal_Bool bFolder, sal_Bool bSorted ) -{ - StringList_Impl* pFiles = NULL; - INetURLObject aFolderObj( rFolder ); - DBG_ASSERT( aFolderObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - try - { - Content aCnt( aFolderObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () ); - uno::Reference< XResultSet > xResultSet; - Sequence< OUString > aProps( bSorted ? 2 : 1 ); - OUString* pProps = aProps.getArray(); - pProps[0] = OUString(RTL_CONSTASCII_USTRINGPARAM("Title")); - if ( bSorted ) - pProps[1] = OUString(RTL_CONSTASCII_USTRINGPARAM("IsFolder")); - - try - { - ResultSetInclude eInclude = bFolder ? INCLUDE_FOLDERS_AND_DOCUMENTS : INCLUDE_DOCUMENTS_ONLY; - if ( !bSorted ) - { - xResultSet = aCnt.createCursor( aProps, eInclude ); - } - else - { - uno::Reference< com::sun::star::ucb::XDynamicResultSet > xDynResultSet; - xDynResultSet = aCnt.createDynamicCursor( aProps, eInclude ); - - uno::Reference < com::sun::star::ucb::XAnyCompareFactory > xFactory; - uno::Reference < XMultiServiceFactory > xMgr = getProcessServiceFactory(); - uno::Reference < com::sun::star::ucb::XSortedDynamicResultSetFactory > xSRSFac( - xMgr->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ucb.SortedDynamicResultSetFactory")) ), UNO_QUERY ); - - Sequence< com::sun::star::ucb::NumberedSortingInfo > aSortInfo( 2 ); - com::sun::star::ucb::NumberedSortingInfo* pInfo = aSortInfo.getArray(); - pInfo[ 0 ].ColumnIndex = 2; - pInfo[ 0 ].Ascending = sal_False; - pInfo[ 1 ].ColumnIndex = 1; - pInfo[ 1 ].Ascending = sal_True; - - uno::Reference< com::sun::star::ucb::XDynamicResultSet > xDynamicResultSet; - xDynamicResultSet = - xSRSFac->createSortedDynamicResultSet( xDynResultSet, aSortInfo, xFactory ); - if ( xDynamicResultSet.is() ) - { - xResultSet = xDynamicResultSet->getStaticResultSet(); - } - } - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - // folder not exists? - } - catch( ::com::sun::star::uno::Exception& ) - { - } - - if ( xResultSet.is() ) - { - pFiles = new StringList_Impl; - uno::Reference< com::sun::star::ucb::XContentAccess > xContentAccess( xResultSet, UNO_QUERY ); - try - { - while ( xResultSet->next() ) - { - OUString aId = xContentAccess->queryContentIdentifierString(); - OUString* pFile = new OUString( aId ); - pFiles->push_back( pFile ); - } - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - } - catch( ::com::sun::star::uno::Exception& ) - { - } - } - } - catch( ::com::sun::star::uno::Exception& ) - { - } - - if ( pFiles ) - { - size_t nCount = pFiles->size(); - Sequence < OUString > aRet( nCount ); - OUString* pRet = aRet.getArray(); - for ( size_t i = 0; i < nCount; ++i ) - { - OUString* pFile = (*pFiles)[ i ]; - pRet[i] = *( pFile ); - delete pFile; - } - delete pFiles; - return aRet; - } - else - return Sequence < OUString > (); -} - -// ----------------------------------------------------------------------- - -Sequence < OUString > UCBContentHelper::GetResultSet( const String& rURL ) -{ - StringList_Impl* pList = NULL; - try - { - Content aCnt( rURL, uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >() ); - uno::Reference< XResultSet > xResultSet; - uno::Reference< com::sun::star::ucb::XDynamicResultSet > xDynResultSet; - Sequence< OUString > aProps(3); - OUString* pProps = aProps.getArray(); - pProps[0] = OUString(RTL_CONSTASCII_USTRINGPARAM("Title")); - pProps[1] = OUString(RTL_CONSTASCII_USTRINGPARAM("ContentType")); - // TODO: can be optimized, property never used: - pProps[2] = OUString(RTL_CONSTASCII_USTRINGPARAM("IsFolder")); - - try - { - xDynResultSet = aCnt.createDynamicCursor( aProps, INCLUDE_FOLDERS_AND_DOCUMENTS ); - if ( xDynResultSet.is() ) - xResultSet = xDynResultSet->getStaticResultSet(); - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - } - catch( ::com::sun::star::uno::Exception& ) - { - } - - if ( xResultSet.is() ) - { - pList = new StringList_Impl; - uno::Reference< com::sun::star::sdbc::XRow > xRow( xResultSet, UNO_QUERY ); - uno::Reference< com::sun::star::ucb::XContentAccess > xContentAccess( xResultSet, UNO_QUERY ); - - try - { - while ( xResultSet->next() ) - { - String aTitle( xRow->getString(1) ); - String aType( xRow->getString(2) ); - String aRow = aTitle; - aRow += '\t'; - aRow += aType; - aRow += '\t'; - aRow += String( xContentAccess->queryContentIdentifierString() ); - OUString* pRow = new OUString( aRow ); - pList->push_back( pRow ); - } - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - } - catch( ::com::sun::star::uno::Exception& ) - { - } - } - } - catch( ::com::sun::star::uno::Exception& ) - { - } - - if ( pList ) - { - size_t nCount = pList->size(); - Sequence < OUString > aRet( nCount ); - OUString* pRet = aRet.getArray(); - for ( size_t i = 0; i < nCount; ++i ) - { - OUString* pEntry = (*pList)[ i ]; - pRet[i] = *( pEntry ); - delete pEntry; - } - delete pList; - return aRet; - } - else - return Sequence < OUString > (); -} - -// ----------------------------------------------------------------------- - -sal_Bool UCBContentHelper::CopyTo( const String& rSource, const String& rDest ) -{ - return Transfer_Impl( rSource, rDest, sal_False, NameClash::ERROR ); -} - -// ----------------------------------------------------------------------- - -sal_Bool UCBContentHelper::MoveTo( const String& rSource, const String& rDest, sal_Int32 nNameClash ) -{ - return Transfer_Impl( rSource, rDest, sal_True, nNameClash ); -} - -// ----------------------------------------------------------------------- - -sal_Bool UCBContentHelper::CanMakeFolder( const String& rFolder ) -{ - try - { - Content aCnt( rFolder, uno::Reference< XCommandEnvironment > () ); - Sequence< ContentInfo > aInfo = aCnt.queryCreatableContentsInfo(); - sal_Int32 nCount = aInfo.getLength(); - if ( nCount == 0 ) - return sal_False; - - for ( sal_Int32 i = 0; i < nCount; ++i ) - { - // Simply look for the first KIND_FOLDER... - const ContentInfo & rCurr = aInfo[i]; - if ( rCurr.Attributes & ContentInfoAttribute::KIND_FOLDER ) - return sal_True; - } - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) {} - catch( RuntimeException& ) {} - catch( Exception& ) {} - - return sal_False; -} - -// ----------------------------------------------------------------------- - -sal_Bool UCBContentHelper::MakeFolder( const String& rFolder, sal_Bool bNewOnly ) -{ - INetURLObject aURL( rFolder ); - DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - String aTitle = aURL.getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET ); - aURL.removeSegment(); - Content aCnt; - Content aNew; - uno::Reference< XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory(); - uno::Reference< XInteractionHandler > xInteractionHandler = uno::Reference< XInteractionHandler > ( - xFactory->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uui.InteractionHandler") ) ), UNO_QUERY ); - if ( Content::create( aURL.GetMainURL( INetURLObject::NO_DECODE ), new CommandEnvironment( xInteractionHandler, uno::Reference< XProgressHandler >() ), aCnt ) ) - return MakeFolder( aCnt, aTitle, aNew, bNewOnly ); - else - return sal_False; -} - -sal_Bool UCBContentHelper::MakeFolder( Content& aCnt, const String& aTitle, Content& rNew, sal_Bool bNewOnly ) -{ - sal_Bool bAlreadyExists = sal_False; - - try - { - Sequence< ContentInfo > aInfo = aCnt.queryCreatableContentsInfo(); - sal_Int32 nCount = aInfo.getLength(); - if ( nCount == 0 ) - return sal_False; - - for ( sal_Int32 i = 0; i < nCount; ++i ) - { - // Simply look for the first KIND_FOLDER... - const ContentInfo & rCurr = aInfo[i]; - if ( rCurr.Attributes & ContentInfoAttribute::KIND_FOLDER ) - { - // Make sure the only required bootstrap property is "Title", - const Sequence< Property > & rProps = rCurr.Properties; - if ( rProps.getLength() != 1 ) - continue; - - if ( !rProps[ 0 ].Name.equalsAsciiL( - RTL_CONSTASCII_STRINGPARAM( "Title" ) ) ) - continue; - - Sequence<OUString> aNames(1); - OUString* pNames = aNames.getArray(); - pNames[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ); - Sequence<Any> aValues(1); - Any* pValues = aValues.getArray(); - pValues[0] = makeAny( OUString( aTitle ) ); - - if ( !aCnt.insertNewContent( rCurr.Type, aNames, aValues, rNew ) ) - continue; - - return sal_True; - } - } - } - catch ( InteractiveIOException& r ) - { - if ( r.Code == IOErrorCode_ALREADY_EXISTING ) - { - bAlreadyExists = sal_True; - } - } - catch ( NameClashException& ) - { - bAlreadyExists = sal_True; - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - } - catch( RuntimeException& ) - { - } - catch( Exception& ) - { - } - - if( bAlreadyExists && !bNewOnly ) - { - INetURLObject aObj( aCnt.getURL() ); - aObj.Append( aTitle ); - rNew = Content( aObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference < XCommandEnvironment >() ); - return sal_True; - } - - return sal_False; -} - -// ----------------------------------------------------------------------- - -sal_Bool UCBContentHelper::HasParentFolder( const String& rFolder ) -{ - sal_Bool bRet = sal_False; - try - { - Content aCnt( rFolder, uno::Reference< XCommandEnvironment > () ); - uno::Reference< XChild > xChild( aCnt.get(), UNO_QUERY ); - if ( xChild.is() ) - { - uno::Reference< XContent > xParent( xChild->getParent(), UNO_QUERY ); - if ( xParent.is() ) - { - String aParentURL = String( xParent->getIdentifier()->getContentIdentifier() ); - bRet = ( aParentURL.Len() > 0 && aParentURL != rFolder ); - } - } - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - } - catch( ::com::sun::star::uno::Exception& ) - { - } - - return bRet; -} - -// ----------------------------------------------------------------------- - -sal_uLong UCBContentHelper::GetSize( const String& rContent ) -{ - sal_uLong nSize = 0; - sal_Int64 nTemp = 0; - INetURLObject aObj( rContent ); - DBG_ASSERT( aObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - try - { - Content aCnt( aObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () ); - aCnt.getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("Size")) ) >>= nTemp; - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - } - catch( ::com::sun::star::uno::Exception& ) - { - } - nSize = (sal_uInt32)nTemp; - return nSize; -} - -// ----------------------------------------------------------------------- - -sal_Bool UCBContentHelper::IsYounger( const String& rIsYoung, const String& rIsOlder ) -{ - DateTime aYoungDate, aOlderDate; - INetURLObject aYoungObj( rIsYoung ); - DBG_ASSERT( aYoungObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - INetURLObject aOlderObj( rIsOlder ); - DBG_ASSERT( aOlderObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" ); - try - { - uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > aCmdEnv; - Content aYoung( aYoungObj.GetMainURL( INetURLObject::NO_DECODE ), aCmdEnv ); - ::com::sun::star::util::DateTime aTempYoungDate; - aYoung.getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("DateModified")) ) >>= aTempYoungDate; - CONVERT_DATETIME( aTempYoungDate, aYoungDate ); - Content aOlder( aOlderObj.GetMainURL( INetURLObject::NO_DECODE ), aCmdEnv ); - ::com::sun::star::util::DateTime aTempOlderDate; - aOlder.getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("DateModified")) ) >>= aTempOlderDate; - CONVERT_DATETIME( aTempOlderDate, aOlderDate ); - } - catch( ::com::sun::star::ucb::CommandAbortedException& ) - { - } - catch( ::com::sun::star::uno::Exception& ) - { - } - - return ( aYoungDate > aOlderDate ); -} - -// ----------------------------------------------------------------------- -sal_Bool UCBContentHelper::Find( const String& rFolder, const String& rName, String& rFile, sal_Bool bAllowWildCards ) -{ - sal_Bool bWild = bAllowWildCards && ( rName.Search( '*' ) != STRING_NOTFOUND || rName.Search( '?' ) != STRING_NOTFOUND ); - - sal_Bool bRet = sal_False; - - // get a list of URLs for all children of rFolder - Sequence< ::rtl::OUString > aFiles = GetFolderContents( rFolder, sal_False ); - - const ::rtl::OUString* pFiles = aFiles.getConstArray(); - sal_uInt32 i, nCount = aFiles.getLength(); - for ( i = 0; i < nCount; ++i ) - { - // get the last name of the URLs and compare it with rName - INetURLObject aFileObject( pFiles[i] ); - String aFile = aFileObject.getName( - INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET ).toAsciiLowerCase(); - if ( (bWild && WildCard( rName ).Matches( aFile )) || aFile == rName ) - { - // names match - rFile = aFileObject.GetMainURL( INetURLObject::NO_DECODE ); - bRet = sal_True; - break; - } - } - - return bRet; -} - -// ----------------------------------------------------------------------- -sal_Bool UCBContentHelper::Exists( const String& rURL ) -{ - - String sObjectPhysicalName; - sal_Bool bIsLocalFile = ::utl::LocalFileHelper::ConvertURLToPhysicalName( rURL, sObjectPhysicalName ); - // try to create a directory entry for the URL given - if ( bIsLocalFile ) - { - ::rtl::OUString sIn( sObjectPhysicalName ), sOut; - if ( osl_File_E_None == osl_getFileURLFromSystemPath( sIn.pData, &sOut.pData ) ) - { - // #106526 osl_getDirectoryItem is an existence check - // no further osl_getFileStatus call necessary - DirectoryItem aItem; - return (FileBase::E_None == DirectoryItem::get(sOut, aItem)); - } - return sal_False; - } - - // divide URL into folder and name part - sal_Bool bRet = sal_False; - INetURLObject aObj( rURL ); - ::rtl::OUString aFileName = aObj.getName( - INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET ).toAsciiLowerCase(); - aObj.removeSegment(); - aObj.removeFinalSlash(); - - // get a list of URLs for all children of rFolder - Sequence< ::rtl::OUString > aFiles = GetFolderContents( aObj.GetMainURL( INetURLObject::NO_DECODE ), sal_True, sal_False ); - - const ::rtl::OUString* pFiles = aFiles.getConstArray(); - sal_uInt32 i, nCount = aFiles.getLength(); - for ( i = 0; i < nCount; ++i ) - { - // get the last name of the URLs and compare it with rName - INetURLObject aFileObject( pFiles[i] ); - ::rtl::OUString aFile = aFileObject.getName( - INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET ).toAsciiLowerCase(); - if ( aFile == aFileName ) - { - // names match - bRet = sal_True; - break; - } - } - - return bRet; -} - -// ----------------------------------------------------------------------- -sal_Bool UCBContentHelper::FindInPath( const String& rPath, const String& rName, String& rFile, char cDelim, sal_Bool bAllowWildCards ) -{ - // extract the single folder names from the path variable and try to find the file in one of these folders - sal_uInt16 nTokenCount = rPath.GetTokenCount( cDelim ); - for ( sal_uInt16 nToken = 0; nToken < nTokenCount; ++nToken ) - { - String aPath = rPath.GetToken( nToken, cDelim ); - if ( Find( aPath, rName, rFile, bAllowWildCards ) ) - return sal_True; - } - - return sal_False; -} - -// ----------------------------------------------------------------------- -sal_Bool UCBContentHelper::IsSubPath( const ::rtl::OUString& rPath, const ::rtl::OUString& rSubfolderCandidate, const uno::Reference< ::com::sun::star::ucb::XContentProvider >& xProv ) -{ - sal_Bool bResult = sal_False; - - uno::Reference< ::com::sun::star::ucb::XContentProvider > xContentProvider = xProv; - - // the comparing is done in the following way: - // - first compare in case sensitive way - // - if name are different try a fallback comparing inf case insensitive way - // - if the last comparing succeeded get casepreserving normalized names for the files and compare them - // ( the second step is required because retrieving of the normalized names might be very expensive in some cases ) - - INetURLObject aCandidate( rSubfolderCandidate ); - INetURLObject aCandidateLowCase( rSubfolderCandidate.toAsciiLowerCase() ); // will be used for case insensitive comparing - INetURLObject aParentFolder( rPath ); - INetURLObject aParentFolderLowCase( rPath.toAsciiLowerCase() ); // will be used for case insensitive comparing - - if ( aCandidate.GetProtocol() == aParentFolder.GetProtocol() ) - { - if ( !xContentProvider.is() ) - { - ::ucbhelper::ContentBroker* pBroker = NULL; - if ( aCandidate.GetProtocol() == INET_PROT_FILE ) - { - pBroker = ::ucbhelper::ContentBroker::get(); - if ( pBroker ) - xContentProvider = pBroker->getContentProviderInterface(); - } - } - - INetURLObject aLastTmpObj; - do - { - if ( aParentFolder == aCandidate ) - { - // if case sensitive comparing succeeded there is no need for additional checks - bResult = sal_True; - } - else if ( xContentProvider.is() && aParentFolderLowCase == aCandidateLowCase ) - { - // the comparing was done using caseinsensitive way - // the case sensitive comparing have failed already - // the normalized urls must be retrieved - try - { - uno::Reference< ::com::sun::star::ucb::XContent > xSecCont = - xContentProvider->queryContent( - uno::Reference< ::com::sun::star::ucb::XContentIdentifierFactory >( - xContentProvider, ::com::sun::star::uno::UNO_QUERY_THROW )->createContentIdentifier( - aParentFolder.GetMainURL( INetURLObject::NO_DECODE ) ) ); - - uno::Reference< ::com::sun::star::ucb::XContent > xLocCont = - xContentProvider->queryContent( - uno::Reference< ::com::sun::star::ucb::XContentIdentifierFactory >( - xContentProvider, ::com::sun::star::uno::UNO_QUERY_THROW )->createContentIdentifier( - aCandidate.GetMainURL( INetURLObject::NO_DECODE ) ) ); - - if ( !xSecCont.is() || !xLocCont.is() ) - throw ::com::sun::star::uno::RuntimeException(); - - ::rtl::OUString aSecNormStr; - ::rtl::OUString aLocNormStr; - - bResult = - ( ( uno::Reference< ::com::sun::star::ucb::XCommandProcessor >( - xSecCont, ::com::sun::star::uno::UNO_QUERY_THROW )->execute( - ::com::sun::star::ucb::Command( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getCasePreservingURL" ) ), - -1, - ::com::sun::star::uno::Any() ), - 0, - uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >() ) - >>= aSecNormStr ) - && ( uno::Reference< ::com::sun::star::ucb::XCommandProcessor >( - xLocCont, ::com::sun::star::uno::UNO_QUERY_THROW )->execute( - ::com::sun::star::ucb::Command( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getCasePreservingURL" ) ), - -1, - ::com::sun::star::uno::Any() ), - 0, - uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >() ) - >>= aLocNormStr ) - && aLocNormStr.equals( aSecNormStr ) ); - } - catch( ::com::sun::star::uno::Exception& ) - {} - } - - // INetURLObject::removeSegment sometimes return true without exchanging URL, - // for example in case of "file:///" - aLastTmpObj = aCandidate; - - } while( aCandidate.removeSegment() && aCandidateLowCase.removeSegment() && aCandidate != aLastTmpObj && !bResult ); - } - - return bResult; -} - -// ----------------------------------------------------------------------- -sal_Bool UCBContentHelper::EqualURLs( const ::rtl::OUString& aFirstURL, const ::rtl::OUString& aSecondURL ) -{ - sal_Bool bResult = sal_False; - - if ( aFirstURL.getLength() && aSecondURL.getLength() ) - { - INetURLObject aFirst( aFirstURL ); - INetURLObject aSecond( aSecondURL ); - - if ( aFirst.GetProtocol() != INET_PROT_NOT_VALID && aSecond.GetProtocol() != INET_PROT_NOT_VALID ) - { - try - { - ::ucbhelper::ContentBroker* pBroker = ::ucbhelper::ContentBroker::get(); - if ( !pBroker ) - throw uno::RuntimeException(); - - uno::Reference< ::com::sun::star::ucb::XContentIdentifierFactory > xIdFac - = pBroker->getContentIdentifierFactoryInterface(); - if ( !xIdFac.is() ) - throw uno::RuntimeException(); - - uno::Reference< ::com::sun::star::ucb::XContentIdentifier > xIdFirst - = xIdFac->createContentIdentifier( aFirst.GetMainURL( INetURLObject::NO_DECODE ) ); - uno::Reference< ::com::sun::star::ucb::XContentIdentifier > xIdSecond - = xIdFac->createContentIdentifier( aSecond.GetMainURL( INetURLObject::NO_DECODE ) ); - - if ( xIdFirst.is() && xIdSecond.is() ) - { - uno::Reference< ::com::sun::star::ucb::XContentProvider > xProvider = - pBroker->getContentProviderInterface(); - if ( !xProvider.is() ) - throw uno::RuntimeException(); - bResult = !xProvider->compareContentIds( xIdFirst, xIdSecond ); - } - } - catch( uno::Exception& ) - { - OSL_FAIL( "Can't compare URL's, treat as different!\n" ); - } - } - } - - return bResult; -} - - - -} // namespace utl - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/ucbhelper/ucblockbytes.cxx b/unotools/source/ucbhelper/ucblockbytes.cxx deleted file mode 100644 index 20a22f3087..0000000000 --- a/unotools/source/ucbhelper/ucblockbytes.cxx +++ /dev/null @@ -1,1728 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <sal/macros.h> -#include <unotools/ucblockbytes.hxx> -#include <comphelper/processfactory.hxx> -#include <salhelper/condition.hxx> -#include <osl/thread.hxx> -#include <tools/urlobj.hxx> -#include <ucbhelper/interactionrequest.hxx> -#include <com/sun/star/task/XInteractionAbort.hpp> -#include <com/sun/star/ucb/InteractiveNetworkConnectException.hpp> -#include <com/sun/star/ucb/CommandFailedException.hpp> -#include <com/sun/star/ucb/UnsupportedDataSinkException.hpp> -#include <com/sun/star/ucb/InteractiveIOException.hpp> -#include <com/sun/star/io/XActiveDataStreamer.hpp> -#include <com/sun/star/ucb/DocumentHeaderField.hpp> -#include <com/sun/star/ucb/XCommandInfo.hpp> -#include <com/sun/star/ucb/XCommandProcessor.hpp> -#include <com/sun/star/task/XInteractionHandler.hpp> -#include <com/sun/star/ucb/OpenCommandArgument2.hpp> -#include <com/sun/star/ucb/PostCommandArgument2.hpp> -#include <com/sun/star/ucb/OpenMode.hpp> -#include <com/sun/star/beans/Property.hpp> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <com/sun/star/beans/XPropertiesChangeNotifier.hpp> -#include <com/sun/star/beans/XPropertiesChangeListener.hpp> -#include <com/sun/star/sdbc/XRow.hpp> -#include <com/sun/star/io/XActiveDataSink.hpp> -#include <com/sun/star/io/XActiveDataControl.hpp> -#include <com/sun/star/io/XSeekable.hpp> -#include <cppuhelper/implbase1.hxx> -#include <cppuhelper/implbase2.hxx> -#include <tools/inetmsg.hxx> -#include <com/sun/star/io/XTruncate.hpp> -#include <com/sun/star/lang/IllegalArgumentException.hpp> - -#include <comphelper/storagehelper.hxx> - -#include <ucbhelper/contentbroker.hxx> -#include <ucbhelper/content.hxx> - -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::io; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::ucb; -using namespace ::com::sun::star::task; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::beans; - - -namespace utl -{ - -/** - Helper class for getting a XInputStream when opening a content - */ -class UcbDataSink_Impl : public ::cppu::WeakImplHelper2< XActiveDataControl, XActiveDataSink > -{ - UcbLockBytesRef m_xLockBytes; - -public: - UcbDataSink_Impl( UcbLockBytes* pLockBytes ) - : m_xLockBytes( pLockBytes ) - {} - - SvLockBytes* getLockBytes (void) - { return m_xLockBytes; } - - // XActiveDataControl. - virtual void SAL_CALL addListener ( const Reference<XStreamListener> &/*rxListener*/) throw(RuntimeException) {} - virtual void SAL_CALL removeListener ( const Reference<XStreamListener> &/*rxListener*/) throw(RuntimeException) {} - virtual void SAL_CALL start (void) throw(RuntimeException) {} - virtual void SAL_CALL terminate (void) throw(RuntimeException) - { m_xLockBytes->terminate_Impl(); } - - // XActiveDataSink. - virtual void SAL_CALL setInputStream ( const Reference<XInputStream> &rxInputStream) throw(RuntimeException) - { m_xLockBytes->setInputStream_Impl (rxInputStream); } - virtual Reference<XInputStream> SAL_CALL getInputStream (void) throw(RuntimeException) - { return m_xLockBytes->getInputStream_Impl(); } -}; - -/** - Helper class for getting a XStream when opening a content - */ -class UcbStreamer_Impl : public ::cppu::WeakImplHelper2< XActiveDataStreamer, XActiveDataControl > -{ - Reference < XStream > m_xStream; - UcbLockBytesRef m_xLockBytes; - -public: - UcbStreamer_Impl( UcbLockBytes* pLockBytes ) - : m_xLockBytes( pLockBytes ) - {} - - // XActiveDataControl. - virtual void SAL_CALL addListener ( const Reference<XStreamListener> &/*rxListener*/) throw(RuntimeException) {} - virtual void SAL_CALL removeListener ( const Reference<XStreamListener> &/*rxListener*/) throw(RuntimeException) {} - virtual void SAL_CALL start (void) throw(RuntimeException) {} - virtual void SAL_CALL terminate (void) throw(RuntimeException) - { m_xLockBytes->terminate_Impl(); } - - // XActiveDataStreamer - virtual void SAL_CALL setStream( const Reference< XStream >& aStream ) throw(RuntimeException) - { m_xStream = aStream; m_xLockBytes->setStream_Impl( aStream ); } - virtual Reference< XStream > SAL_CALL getStream() throw(RuntimeException) - { return m_xStream; } -}; - -/** - Helper class for progress handling while executing UCB commands - */ -class ProgressHandler_Impl: public ::cppu::WeakImplHelper1< XProgressHandler > -{ - Link m_aProgress; - -public: - ProgressHandler_Impl( const Link& rLink ) - : m_aProgress( rLink ) - {} - // XProgressHandler - virtual void SAL_CALL push(const Any & /*rStatus*/) throw (RuntimeException) {} - virtual void SAL_CALL pop() throw (RuntimeException) {} - virtual void SAL_CALL update(const Any & /*rStatus*/) throw (RuntimeException) - { if ( m_aProgress.IsSet() ) m_aProgress.Call( 0 ); } -}; - -/** - Helper class for managing interactions and progress when executing UCB commands - */ -class UcbTaskEnvironment : public ::cppu::WeakImplHelper1< XCommandEnvironment > -{ - Reference< XInteractionHandler > m_xInteractionHandler; - Reference< XProgressHandler > m_xProgressHandler; - -public: - UcbTaskEnvironment( const Reference< XInteractionHandler>& rxInteractionHandler, - const Reference< XProgressHandler>& rxProgressHandler ) - : m_xInteractionHandler( rxInteractionHandler ) - , m_xProgressHandler( rxProgressHandler ) - {} - - virtual Reference<XInteractionHandler> SAL_CALL getInteractionHandler() throw (RuntimeException) - { return m_xInteractionHandler; } - - virtual Reference<XProgressHandler> SAL_CALL getProgressHandler() throw (RuntimeException) - { return m_xProgressHandler; } -}; - - -/** - Helper class for property change notifies when executing UCB commands -*/ -class UcbPropertiesChangeListener_Impl : public ::cppu::WeakImplHelper1< XPropertiesChangeListener > -{ -public: - UcbLockBytesRef m_xLockBytes; - - UcbPropertiesChangeListener_Impl( UcbLockBytesRef rRef ) - : m_xLockBytes( rRef ) - {} - - virtual void SAL_CALL disposing ( const EventObject &/*rEvent*/) throw(RuntimeException) {} - virtual void SAL_CALL propertiesChange ( const Sequence<PropertyChangeEvent> &rEvent) throw(RuntimeException); -}; - -void SAL_CALL UcbPropertiesChangeListener_Impl::propertiesChange ( const Sequence<PropertyChangeEvent> &rEvent) throw(RuntimeException) -{ - sal_Int32 i, n = rEvent.getLength(); - for (i = 0; i < n; i++) - { - PropertyChangeEvent evt (rEvent[i]); - if (evt.PropertyName == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM ("DocumentHeader"))) - { - Sequence<DocumentHeaderField> aHead; - if (evt.NewValue >>= aHead) - { - sal_Int32 k, m = aHead.getLength(); - for (k = 0; k < m; k++) - { - String aName( aHead[k].Name ); - String aValue( aHead[k].Value ); - - if (aName.CompareIgnoreCaseToAscii("Expires") == COMPARE_EQUAL) - { - DateTime aExpires (0, 0); - if (INetRFC822Message::ParseDateField (aValue, aExpires)) - { - aExpires.ConvertToLocalTime(); - m_xLockBytes->SetExpireDate_Impl( aExpires ); - } - } - } - } - - m_xLockBytes->SetStreamValid_Impl(); - } - else if (evt.PropertyName == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM ("PresentationURL"))) - { - ::rtl::OUString aUrl; - if (evt.NewValue >>= aUrl) - { - ::rtl::OUString aBad (RTL_CONSTASCII_USTRINGPARAM ("private:")); - if (!(aUrl.compareTo (aBad, aBad.getLength()) == 0)) - { - // URL changed (Redirection). - m_xLockBytes->SetRealURL_Impl( aUrl ); - } - } - } - else if (evt.PropertyName == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM ("MediaType"))) - { - ::rtl::OUString aContentType; - if (evt.NewValue >>= aContentType) - m_xLockBytes->SetContentType_Impl( aContentType ); - } - } -} - - - -class Moderator - : public osl::Thread -{ - // usage restriction: - // It might be possible, that the call to the interactionhandler and/or - // progresshandler is done asynchrounsly, while the 'execute' simply - // returns. This would imply that these class must be refcounted !!! - -public: - Moderator( - Reference < XContent >& xContent, - Reference < XInteractionHandler >& xInteract, - Reference < XProgressHandler >& xProgress, - const Command& rArg - ) - throw( - ContentCreationException, - RuntimeException - ); - - ~Moderator(); - - - enum ResultType { - NORESULT, - - INTERACTIONREQUEST, // reply expected - - PROGRESSPUSH, - PROGRESSUPDATE, - PROGRESSPOP, - - INPUTSTREAM, - STREAM, - - RESULT, - TIMEDOUT, - COMMANDABORTED, - COMMANDFAILED, - INTERACTIVEIO, - UNSUPPORTED, - GENERAL - }; - - - class ConditionRes - : public salhelper::Condition - { - public: - ConditionRes(osl::Mutex& aMutex,Moderator& aModerator) - : salhelper::Condition(aMutex), - m_aModerator(aModerator) - { - } - - protected: - bool applies() const { - return m_aModerator.m_aResultType != NORESULT; - } - - private: - Moderator& m_aModerator; - }; - - - struct Result { - ResultType type; - Any result; - sal_Int32 ioErrorCode; - }; - - Result getResult(const sal_uInt32 milliSec); - - enum ReplyType { - NOREPLY, - EXIT, - RETRY, - REQUESTHANDLED - }; - - class ConditionRep - : public salhelper::Condition - { - public: - ConditionRep(osl::Mutex& aMutex,Moderator& aModerator) - : salhelper::Condition(aMutex), - m_aModerator(aModerator) - { - } - - protected: - bool applies() const { - return m_aModerator.m_aReplyType != NOREPLY; - } - - private: - Moderator& m_aModerator; - }; - - void setReply(ReplyType); - - void handle( const Reference<XInteractionRequest >& Request ); - void push( const Any& Status ); - void update( const Any& Status ); - void pop( ); - - void setStream(const Reference< XStream >& aStream); - void setInputStream(const Reference<XInputStream> &rxInputStream); - - -protected: - virtual void SAL_CALL run(); - virtual void SAL_CALL onTerminated(); - -private: - osl::Mutex m_aMutex; - - friend class ConditionRes; - - ConditionRes m_aRes; - ResultType m_aResultType; - sal_Int32 m_nIOErrorCode; - Any m_aResult; - - friend class ConditionRep; - - ConditionRep m_aRep; - ReplyType m_aReplyType; - - Command m_aArg; - ::ucbhelper::Content m_aContent; -}; - - -class ModeratorsActiveDataStreamer - : public ::cppu::WeakImplHelper1<XActiveDataStreamer> -{ -public: - - ModeratorsActiveDataStreamer(Moderator &theModerator); - - ~ModeratorsActiveDataStreamer(); - - // XActiveDataStreamer - virtual void SAL_CALL - setStream( - const Reference< XStream >& aStream - ) - throw( - RuntimeException - ); - - virtual Reference<XStream> SAL_CALL - getStream ( - void - ) throw( - RuntimeException - ) - { - osl::MutexGuard aGuard(m_aMutex); - return m_xStream; - } - - -private: - Moderator& m_aModerator; - - osl::Mutex m_aMutex; - Reference<XStream> m_xStream; -}; - - -class ModeratorsActiveDataSink - : public ::cppu::WeakImplHelper1<XActiveDataSink> -{ -public: - - ModeratorsActiveDataSink(Moderator &theModerator); - - ~ModeratorsActiveDataSink(); - - // XActiveDataSink. - virtual void SAL_CALL - setInputStream ( - const Reference<XInputStream> &rxInputStream - ) - throw( - RuntimeException - ); - - virtual Reference<XInputStream> SAL_CALL - getInputStream ( - void - ) throw( - RuntimeException - ) - { - osl::MutexGuard aGuard(m_aMutex); - return m_xStream; - } - - -private: - Moderator& m_aModerator; - osl::Mutex m_aMutex; - Reference<XInputStream> m_xStream; -}; - - - -ModeratorsActiveDataSink::ModeratorsActiveDataSink(Moderator &theModerator) - : m_aModerator(theModerator) -{ -} - - -ModeratorsActiveDataSink::~ModeratorsActiveDataSink() -{ -} - -// XActiveDataSink. -void SAL_CALL -ModeratorsActiveDataSink::setInputStream ( - const Reference<XInputStream> &rxInputStream -) - throw( - RuntimeException - ) -{ - m_aModerator.setInputStream(rxInputStream); - osl::MutexGuard aGuard(m_aMutex); - m_xStream = rxInputStream; -} - - -ModeratorsActiveDataStreamer::ModeratorsActiveDataStreamer( - Moderator &theModerator -) - : m_aModerator(theModerator) -{ -} - - -ModeratorsActiveDataStreamer::~ModeratorsActiveDataStreamer() -{ -} - -// XActiveDataStreamer. -void SAL_CALL -ModeratorsActiveDataStreamer::setStream ( - const Reference<XStream> &rxStream -) - throw( - RuntimeException - ) -{ - m_aModerator.setStream(rxStream); - osl::MutexGuard aGuard(m_aMutex); - m_xStream = rxStream; -} - - - -class ModeratorsInteractionHandler - : public ::cppu::WeakImplHelper1<XInteractionHandler> -{ -public: - - ModeratorsInteractionHandler(Moderator &theModerator); - - ~ModeratorsInteractionHandler(); - - virtual void SAL_CALL - handle( const Reference<XInteractionRequest >& Request ) - throw (RuntimeException); - -private: - - Moderator& m_aModerator; -}; - - -class ModeratorsProgressHandler - : public ::cppu::WeakImplHelper1<XProgressHandler> -{ -public: - ModeratorsProgressHandler(Moderator &theModerator); - - ~ModeratorsProgressHandler(); - - virtual void SAL_CALL push( const Any& Status ) - throw ( - RuntimeException); - - virtual void SAL_CALL update( const Any& Status ) - throw (RuntimeException); - - virtual void SAL_CALL pop( ) - throw (RuntimeException); - - -private: - Moderator& m_aModerator; -}; - - -ModeratorsProgressHandler::ModeratorsProgressHandler(Moderator &theModerator) - : m_aModerator(theModerator) -{ -} - -ModeratorsProgressHandler::~ModeratorsProgressHandler() -{ -} - - -void SAL_CALL ModeratorsProgressHandler::push( const Any& Status ) - throw ( - RuntimeException) -{ - m_aModerator.push(Status); -} - - -void SAL_CALL ModeratorsProgressHandler::update( const Any& Status ) - throw (RuntimeException) -{ - m_aModerator.update(Status); -} - - -void SAL_CALL ModeratorsProgressHandler::pop( ) - throw (RuntimeException) -{ - m_aModerator.pop(); -} - - -ModeratorsInteractionHandler::ModeratorsInteractionHandler( - Moderator &aModerator) - : m_aModerator(aModerator) -{ -} - - -ModeratorsInteractionHandler::~ModeratorsInteractionHandler() -{ -} - - -void SAL_CALL -ModeratorsInteractionHandler::handle( - const Reference<XInteractionRequest >& Request -) - throw ( - RuntimeException - ) -{ - // wakes up the mainthread - m_aModerator.handle(Request); -} - - - - -Moderator::Moderator( - Reference < XContent >& xContent, - Reference < XInteractionHandler >& xInteract, - Reference < XProgressHandler >& xProgress, - const Command& rArg -) - throw( - ::com::sun::star::ucb::ContentCreationException, - ::com::sun::star::uno::RuntimeException - ) - : m_aMutex(), - - m_aRes(m_aMutex,*this), - m_aResultType(NORESULT), - m_nIOErrorCode(0), - m_aResult(), - - m_aRep(m_aMutex,*this), - m_aReplyType(NOREPLY), - - m_aArg(rArg), - m_aContent( - xContent, - new UcbTaskEnvironment( - xInteract.is() ? new ModeratorsInteractionHandler(*this) : 0, - xProgress.is() ? new ModeratorsProgressHandler(*this) : 0 - )) -{ - // now exchange the whole data sink stuff - // with a thread safe version - - Reference<XInterface> *pxSink = NULL; - - PostCommandArgument2 aPostArg; - OpenCommandArgument2 aOpenArg; - - int dec(2); - if(m_aArg.Argument >>= aPostArg) { - pxSink = &aPostArg.Sink; - dec = 0; - } - else if(m_aArg.Argument >>= aOpenArg) { - pxSink = &aOpenArg.Sink; - dec = 1; - } - - if(dec ==2) - throw ContentCreationException(); - - Reference < XActiveDataSink > xActiveSink(*pxSink,UNO_QUERY); - if(xActiveSink.is()) - *pxSink = Reference<XInterface>( - (cppu::OWeakObject*)new ModeratorsActiveDataSink(*this)); - - Reference<XActiveDataStreamer> xStreamer( *pxSink, UNO_QUERY ); - if ( xStreamer.is() ) - *pxSink = Reference<XInterface>( - (cppu::OWeakObject*)new ModeratorsActiveDataStreamer(*this)); - - if(dec == 0) - m_aArg.Argument <<= aPostArg; - else if(dec == 1) - m_aArg.Argument <<= aOpenArg; -} - - -Moderator::~Moderator() -{ -} - - -Moderator::Result Moderator::getResult(const sal_uInt32 milliSec) -{ - Result ret; - try { - salhelper::ConditionWaiter aWaiter(m_aRes,milliSec); - ret.type = m_aResultType; - ret.result = m_aResult; - ret.ioErrorCode = m_nIOErrorCode; - - // reset - m_aResultType = NORESULT; - } - catch (const salhelper::ConditionWaiter::timedout&) - { - ret.type = TIMEDOUT; - } - - return ret; -} - - -void Moderator::setReply(ReplyType aReplyType ) -{ - salhelper::ConditionModifier aMod(m_aRep); - m_aReplyType = aReplyType; -} - - -void Moderator::handle( const Reference<XInteractionRequest >& Request ) -{ - ReplyType aReplyType; - - do { - { - salhelper::ConditionModifier aMod(m_aRes); - m_aResultType = INTERACTIONREQUEST; - m_aResult <<= Request; - } - - { - salhelper::ConditionWaiter aWait(m_aRep); - aReplyType = m_aReplyType; - - // reset - m_aReplyType = NOREPLY; - } - - if(aReplyType == EXIT) { - Sequence<Reference<XInteractionContinuation> > aSeq( - Request->getContinuations()); - for(sal_Int32 i = 0; i < aSeq.getLength(); ++i) { - Reference<XInteractionAbort> aRef(aSeq[i],UNO_QUERY); - if(aRef.is()) { - aRef->select(); - } - } - - // resignal the exitcondition - setReply(EXIT); - break; - } - } while(aReplyType != REQUESTHANDLED); -} - - -void Moderator::push( const Any& Status ) -{ - { - salhelper::ConditionModifier aMod(m_aRes); - m_aResultType = PROGRESSPUSH; - m_aResult = Status; - } - ReplyType aReplyType; - { - salhelper::ConditionWaiter aWait(m_aRep); - aReplyType = m_aReplyType; - m_aReplyType = NOREPLY; - } - if(aReplyType == EXIT) - setReply(EXIT); -} - - -void Moderator::update( const Any& Status ) -{ - { - salhelper::ConditionModifier aMod(m_aRes); - m_aResultType = PROGRESSUPDATE; - m_aResult = Status; - } - ReplyType aReplyType; - { - salhelper::ConditionWaiter aWait(m_aRep); - aReplyType = m_aReplyType; - m_aReplyType = NOREPLY; - } - if(aReplyType == EXIT) - setReply(EXIT); -} - - -void Moderator::pop( ) -{ - { - salhelper::ConditionModifier aMod(m_aRes); - m_aResultType = PROGRESSPOP; - } - ReplyType aReplyType; - { - salhelper::ConditionWaiter aWait(m_aRep); - aReplyType = m_aReplyType; - m_aReplyType = NOREPLY; - } - if(aReplyType == EXIT) - setReply(EXIT); -} - - -void Moderator::setStream(const Reference< XStream >& aStream) -{ - { - salhelper::ConditionModifier aMod(m_aRes); - m_aResultType = STREAM; - m_aResult <<= aStream; - } - ReplyType aReplyType; - { - salhelper::ConditionWaiter aWait(m_aRep); - aReplyType = m_aReplyType; - m_aReplyType = NOREPLY; - } - if(aReplyType == EXIT) - setReply(EXIT); -} - - -void Moderator::setInputStream(const Reference<XInputStream> &rxInputStream) -{ - { - salhelper::ConditionModifier aMod(m_aRes); - m_aResultType = INPUTSTREAM; - m_aResult <<= rxInputStream; - } - ReplyType aReplyType; - { - salhelper::ConditionWaiter aWait(m_aRep); - aReplyType = m_aReplyType; - m_aReplyType = NOREPLY; - } - if(aReplyType == EXIT) - setReply(EXIT); -} - - -void SAL_CALL Moderator::run() -{ - ResultType aResultType; - Any aResult; - sal_Int32 nIOErrorCode = 0; - - try - { - aResult = m_aContent.executeCommand(m_aArg.Name,m_aArg.Argument); - aResultType = RESULT; - } - catch (const CommandAbortedException&) - { - aResultType = COMMANDABORTED; - } - catch (const CommandFailedException&) - { - aResultType = COMMANDFAILED; - } - catch (const InteractiveIOException& r) - { - nIOErrorCode = r.Code; - aResultType = INTERACTIVEIO; - } - catch (const UnsupportedDataSinkException ) - { - aResultType = UNSUPPORTED; - } - catch (const Exception&) - { - aResultType = GENERAL; - } - - { - salhelper::ConditionModifier aMod(m_aRes); - m_aResultType = aResultType; - m_aResult = aResult; - m_nIOErrorCode = nIOErrorCode; - } -} - -void SAL_CALL Moderator::onTerminated() -{ - { - salhelper::ConditionWaiter aWaiter(m_aRep); - } - delete this; -} - -/** - Function for opening UCB contents synchronously, - but with handled timeout; -*/ -static sal_Bool _UCBOpenContentSync( - UcbLockBytesRef xLockBytes, - Reference < XContent > xContent, - const Command& rArg, - Reference < XInterface > xSink, - Reference < XInteractionHandler > xInteract, - Reference < XProgressHandler > xProgress, - UcbLockBytesHandlerRef xHandler ); - - -static sal_Bool UCBOpenContentSync( - UcbLockBytesRef xLockBytes, - Reference < XContent > xContent, - const Command& rArg, - Reference < XInterface > xSink, - Reference < XInteractionHandler > xInteract, - Reference < XProgressHandler > xProgress, - UcbLockBytesHandlerRef xHandler ) -{ - // http protocol must be handled in a special way: - // during the opening process the input stream may change - // only the last inputstream after notifying the document - // headers is valid - - Reference<XContentIdentifier> xContId( - xContent.is() ? xContent->getIdentifier() : 0 ); - - rtl::OUString aScheme; - if(xContId.is()) - aScheme = xContId->getContentProviderScheme(); - - // now determine wether we use a timeout or not; - if( ! aScheme.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("http")) && - ! aScheme.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("https")) && - ! aScheme.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.webdav")) && - ! aScheme.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("ftp"))) - return _UCBOpenContentSync( - xLockBytes,xContent,rArg,xSink,xInteract,xProgress,xHandler); - - if ( (aScheme.compareToAscii( "http" ) != COMPARE_EQUAL) || - (aScheme.compareToAscii( "https" ) != COMPARE_EQUAL) ) - xLockBytes->SetStreamValid_Impl(); - - Reference< XPropertiesChangeListener > xListener; - Reference< XPropertiesChangeNotifier > xProps(xContent,UNO_QUERY); - if(xProps.is()) { - xListener = - new UcbPropertiesChangeListener_Impl(xLockBytes); - xProps->addPropertiesChangeListener( - Sequence< ::rtl::OUString >(), - xListener); - } - - Any aResult; - bool bException(false); - bool bAborted(false); - bool bResultAchieved(false); - - Moderator* pMod = 0; - try - { - pMod = new Moderator(xContent,xInteract,xProgress,rArg); - pMod->create(); - } - catch (const ContentCreationException&) - { - bResultAchieved = bException = true; - xLockBytes->SetError( ERRCODE_IO_GENERAL ); - } - - sal_uInt32 nTimeout(5000); // initially 5000 milliSec - while(!bResultAchieved) { - - Moderator::Result res; - // try to get the result for with timeout - res = pMod->getResult(nTimeout); - - switch(res.type) { - case Moderator::PROGRESSPUSH: - { - if(xProgress.is()) - xProgress->push(res.result); - pMod->setReply(Moderator::REQUESTHANDLED); - break; - } - case Moderator::PROGRESSUPDATE: - { - if(xProgress.is()) - xProgress->update(res.result); - pMod->setReply(Moderator::REQUESTHANDLED); - break; - } - case Moderator::PROGRESSPOP: - { - if(xProgress.is()) - xProgress->pop(); - pMod->setReply(Moderator::REQUESTHANDLED); - break; - } - case Moderator::STREAM: - { - Reference<XStream> result; - if(res.result >>= result) { - Reference < XActiveDataStreamer > xStreamer( - xSink, UNO_QUERY - ); - - if(xStreamer.is()) - xStreamer->setStream(result); - } - pMod->setReply(Moderator::REQUESTHANDLED); - break; - } - case Moderator::INPUTSTREAM: - { - Reference<XInputStream> result; - res.result >>= result; - Reference < XActiveDataSink > xActiveSink( - xSink, UNO_QUERY - ); - - if(xActiveSink.is()) - xActiveSink->setInputStream(result); - pMod->setReply(Moderator::REQUESTHANDLED); - break; - } - case Moderator::TIMEDOUT: - { - Reference<XInteractionRetry> xRet; - if(xInteract.is()) { - InteractiveNetworkConnectException aExcep; - INetURLObject aURL( - xContId.is() ? - xContId->getContentIdentifier() : - rtl::OUString() ); - aExcep.Server = aURL.GetHost(); - aExcep.Classification = InteractionClassification_ERROR; - aExcep.Message = - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "server not responding after five seconds")); - Any request; - request <<= aExcep; - ucbhelper::InteractionRequest *ir = - new ucbhelper::InteractionRequest(request); - Reference<XInteractionRequest> xIR(ir); - Sequence<Reference<XInteractionContinuation> > aSeq(2); - ucbhelper::InteractionRetry *retryP = - new ucbhelper::InteractionRetry(ir); - aSeq[0] = retryP; - ucbhelper::InteractionAbort *abortP = - new ucbhelper::InteractionAbort(ir); - aSeq[1] = abortP; - - ir->setContinuations(aSeq); - xInteract->handle(xIR); - rtl::Reference< ucbhelper::InteractionContinuation > ref - = ir->getSelection(); - if(ref.is()) { - Reference<XInterface> xInt(ref.get()); - xRet = Reference<XInteractionRetry>(xInt,UNO_QUERY); - } - } - - if(!xRet.is()) { - bAborted = true; - xLockBytes->SetError(ERRCODE_ABORT); - } - - break; - } - case Moderator::INTERACTIONREQUEST: - { - Reference<XInteractionRequest> Request; - res.result >>= Request; - xInteract->handle(Request); - pMod->setReply(Moderator::REQUESTHANDLED); - break; - } - case Moderator::RESULT: - { - bResultAchieved = true; - aResult = res.result; - break; - } - case Moderator::COMMANDABORTED: - { - bAborted = true; - xLockBytes->SetError( ERRCODE_ABORT ); - break; - } - case Moderator::COMMANDFAILED: - { - bAborted = true; - xLockBytes->SetError( ERRCODE_ABORT ); - break; - } - case Moderator::INTERACTIVEIO: - { - bException = true; - if ( res.ioErrorCode == IOErrorCode_ACCESS_DENIED || - res.ioErrorCode == IOErrorCode_LOCKING_VIOLATION ) - xLockBytes->SetError( ERRCODE_IO_ACCESSDENIED ); - else if ( res.ioErrorCode == IOErrorCode_NOT_EXISTING ) - xLockBytes->SetError( ERRCODE_IO_NOTEXISTS ); - else if ( res.ioErrorCode == IOErrorCode_CANT_READ ) - xLockBytes->SetError( ERRCODE_IO_CANTREAD ); - else - xLockBytes->SetError( ERRCODE_IO_GENERAL ); - break; - } - case Moderator::UNSUPPORTED: - { - bException = true; - xLockBytes->SetError( ERRCODE_IO_NOTSUPPORTED ); - break; - } - default: - { - bException = true; - xLockBytes->SetError( ERRCODE_IO_GENERAL ); - break; - } - } - - bResultAchieved |= bException; - bResultAchieved |= bAborted; - if(nTimeout == 5000) nTimeout *= 2; - } - - if(pMod) pMod->setReply(Moderator::EXIT); - - if ( bAborted || bException ) - { - if( xHandler.Is() ) - xHandler->Handle( UcbLockBytesHandler::CANCEL, xLockBytes ); - - Reference < XActiveDataSink > xActiveSink( xSink, UNO_QUERY ); - if ( xActiveSink.is() ) - xActiveSink->setInputStream( Reference < XInputStream >() ); - - Reference < XActiveDataStreamer > xStreamer( xSink, UNO_QUERY ); - if ( xStreamer.is() ) - xStreamer->setStream( Reference < XStream >() ); - } - - Reference < XActiveDataControl > xControl( xSink, UNO_QUERY ); - if ( xControl.is() ) - xControl->terminate(); - - if ( xProps.is() ) - xProps->removePropertiesChangeListener( - Sequence< ::rtl::OUString >(), - xListener ); - - return ( bAborted || bException ); -} - -/** - Function for opening UCB contents synchronously - */ -static sal_Bool _UCBOpenContentSync( - UcbLockBytesRef xLockBytes, - Reference < XContent > xContent, - const Command& rArg, - Reference < XInterface > xSink, - Reference < XInteractionHandler > xInteract, - Reference < XProgressHandler > xProgress, - UcbLockBytesHandlerRef xHandler ) -{ - ::ucbhelper::Content aContent( xContent, new UcbTaskEnvironment( xInteract, xProgress ) ); - Reference < XContentIdentifier > xIdent = xContent->getIdentifier(); - ::rtl::OUString aScheme = xIdent->getContentProviderScheme(); - - // http protocol must be handled in a special way: during the opening process the input stream may change - // only the last inputstream after notifying the document headers is valid - if ( aScheme.compareToAscii("http") != COMPARE_EQUAL ) - xLockBytes->SetStreamValid_Impl(); - - Reference< XPropertiesChangeListener > xListener = new UcbPropertiesChangeListener_Impl( xLockBytes ); - Reference< XPropertiesChangeNotifier > xProps ( xContent, UNO_QUERY ); - if ( xProps.is() ) - xProps->addPropertiesChangeListener( Sequence< ::rtl::OUString >(), xListener ); - - Any aResult; - bool bException = false; - bool bAborted = false; - - try - { - aResult = aContent.executeCommand( rArg.Name, rArg.Argument ); - } - catch (const CommandAbortedException&) - { - bAborted = true; - xLockBytes->SetError( ERRCODE_ABORT ); - } - catch (const CommandFailedException&) - { - bAborted = true; - xLockBytes->SetError( ERRCODE_ABORT ); - } - catch (const InteractiveIOException& r) - { - bException = true; - if ( r.Code == IOErrorCode_ACCESS_DENIED || r.Code == IOErrorCode_LOCKING_VIOLATION ) - xLockBytes->SetError( ERRCODE_IO_ACCESSDENIED ); - else if ( r.Code == IOErrorCode_NOT_EXISTING ) - xLockBytes->SetError( ERRCODE_IO_NOTEXISTS ); - else if ( r.Code == IOErrorCode_CANT_READ ) - xLockBytes->SetError( ERRCODE_IO_CANTREAD ); - else - xLockBytes->SetError( ERRCODE_IO_GENERAL ); - } - catch (const UnsupportedDataSinkException&) - { - bException = true; - xLockBytes->SetError( ERRCODE_IO_NOTSUPPORTED ); - } - catch (const Exception&) - { - bException = true; - xLockBytes->SetError( ERRCODE_IO_GENERAL ); - } - - if ( bAborted || bException ) - { - if( xHandler.Is() ) - xHandler->Handle( UcbLockBytesHandler::CANCEL, xLockBytes ); - - Reference < XActiveDataSink > xActiveSink( xSink, UNO_QUERY ); - if ( xActiveSink.is() ) - xActiveSink->setInputStream( Reference < XInputStream >() ); - - Reference < XActiveDataStreamer > xStreamer( xSink, UNO_QUERY ); - if ( xStreamer.is() ) - xStreamer->setStream( Reference < XStream >() ); - } - - Reference < XActiveDataControl > xControl( xSink, UNO_QUERY ); - if ( xControl.is() ) - xControl->terminate(); - - - if ( xProps.is() ) - xProps->removePropertiesChangeListener( Sequence< ::rtl::OUString >(), xListener ); - - return ( bAborted || bException ); -} - -//---------------------------------------------------------------------------- -UcbLockBytes::UcbLockBytes( UcbLockBytesHandler* pHandler ) - : m_xInputStream (NULL) - , m_pCommandThread( NULL ) - , m_xHandler( pHandler ) - , m_nError( ERRCODE_NONE ) - , m_bTerminated (sal_False) - , m_bDontClose( sal_False ) - , m_bStreamValid (sal_False) -{ - SetSynchronMode( sal_True ); -} - -//---------------------------------------------------------------------------- -UcbLockBytes::~UcbLockBytes() -{ - if ( !m_bDontClose ) - { - if ( m_xInputStream.is() ) - { - try - { - m_xInputStream->closeInput(); - } - catch (const RuntimeException&) - { - } - catch (const IOException&) - { - } - } - } - - if ( !m_xInputStream.is() && m_xOutputStream.is() ) - { - try - { - m_xOutputStream->closeOutput(); - } - catch (const RuntimeException&) - { - } - catch (const IOException&) - { - } - } -} - -Reference < XInputStream > UcbLockBytes::getInputStream() -{ - osl::MutexGuard aGuard( m_aMutex ); - m_bDontClose = sal_True; - return m_xInputStream; -} - -Reference < XStream > UcbLockBytes::getStream() -{ - osl::MutexGuard aGuard( m_aMutex ); - Reference < XStream > xStream( m_xSeekable, UNO_QUERY ); - if ( xStream.is() ) - m_bDontClose = sal_True; - return xStream; -} - -//---------------------------------------------------------------------------- - -sal_Bool UcbLockBytes::setStream_Impl( const Reference<XStream>& aStream ) -{ - osl::MutexGuard aGuard( m_aMutex ); - if ( aStream.is() ) - { - m_xOutputStream = aStream->getOutputStream(); - setInputStream_Impl( aStream->getInputStream(), sal_False ); - m_xSeekable = Reference < XSeekable > ( aStream, UNO_QUERY ); - } - else - { - m_xOutputStream = Reference < XOutputStream >(); - setInputStream_Impl( Reference < XInputStream >() ); - } - - return m_xInputStream.is(); -} - -sal_Bool UcbLockBytes::setInputStream_Impl( const Reference<XInputStream> &rxInputStream, sal_Bool bSetXSeekable ) -{ - sal_Bool bRet = sal_False; - - try - { - osl::MutexGuard aGuard( m_aMutex ); - - if ( !m_bDontClose && m_xInputStream.is() ) - m_xInputStream->closeInput(); - - m_xInputStream = rxInputStream; - - if( bSetXSeekable ) - { - m_xSeekable = Reference < XSeekable > ( rxInputStream, UNO_QUERY ); - if( !m_xSeekable.is() && rxInputStream.is() ) - { - Reference < XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory(); - Reference< XOutputStream > rxTempOut = Reference < XOutputStream > ( - xFactory->createInstance ( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.io.TempFile")) ), - UNO_QUERY ); - - if( rxTempOut.is() ) - { - ::comphelper::OStorageHelper::CopyInputToOutput( rxInputStream, rxTempOut ); - m_xInputStream = Reference< XInputStream >( rxTempOut, UNO_QUERY ); - m_xSeekable = Reference < XSeekable > ( rxTempOut, UNO_QUERY ); - } - } - } - - bRet = m_xInputStream.is(); - } - catch (const Exception&) - { - } - - if ( m_bStreamValid && m_xInputStream.is() ) - m_aInitialized.set(); - - return bRet; -} - -void UcbLockBytes::SetStreamValid_Impl() -{ - m_bStreamValid = sal_True; - if ( m_xInputStream.is() ) - m_aInitialized.set(); -} - -//---------------------------------------------------------------------------- -void UcbLockBytes::terminate_Impl() -{ - m_bTerminated = sal_True; - m_aInitialized.set(); - m_aTerminated.set(); - - if ( GetError() == ERRCODE_NONE && !m_xInputStream.is() ) - { - OSL_FAIL("No InputStream, but no error set!" ); - SetError( ERRCODE_IO_NOTEXISTS ); - } - - if ( m_xHandler.Is() ) - m_xHandler->Handle( UcbLockBytesHandler::DONE, this ); -} - -//---------------------------------------------------------------------------- -void UcbLockBytes::SetSynchronMode (sal_Bool bSynchron) -{ - SvLockBytes::SetSynchronMode (bSynchron); -} - -//---------------------------------------------------------------------------- -ErrCode UcbLockBytes::ReadAt ( sal_uLong nPos, void *pBuffer, sal_uLong nCount, sal_uLong *pRead) const -{ - if ( IsSynchronMode() ) - { - UcbLockBytes* pThis = const_cast < UcbLockBytes* >( this ); - pThis->m_aInitialized.wait(); - } - - Reference <XInputStream> xStream = getInputStream_Impl(); - if ( !xStream.is() ) - { - if ( m_bTerminated ) - return ERRCODE_IO_CANTREAD; - else - return ERRCODE_IO_PENDING; - } - - if ( pRead ) - *pRead = 0; - - Reference <XSeekable> xSeekable = getSeekable_Impl(); - if ( !xSeekable.is() ) - return ERRCODE_IO_CANTREAD; - - try - { - xSeekable->seek( nPos ); - } - catch (const IOException&) - { - return ERRCODE_IO_CANTSEEK; - } - catch (const com::sun::star::lang::IllegalArgumentException&) - { - return ERRCODE_IO_CANTSEEK; - } - - Sequence<sal_Int8> aData; - sal_Int32 nSize; - - nCount = SAL_MIN(nCount, 0x7FFFFFFF); - try - { - if ( !m_bTerminated && !IsSynchronMode() ) - { - sal_uInt64 nLen = xSeekable->getLength(); - if ( nPos + nCount > nLen ) - return ERRCODE_IO_PENDING; - } - - nSize = xStream->readBytes( aData, sal_Int32(nCount) ); - } - catch (const IOException&) - { - return ERRCODE_IO_CANTREAD; - } - - rtl_copyMemory (pBuffer, aData.getConstArray(), nSize); - if (pRead) - *pRead = sal_uLong(nSize); - - return ERRCODE_NONE; -} - -//---------------------------------------------------------------------------- -ErrCode UcbLockBytes::WriteAt ( sal_uLong nPos, const void *pBuffer, sal_uLong nCount, sal_uLong *pWritten) -{ - if ( pWritten ) - *pWritten = 0; - - DBG_ASSERT( IsSynchronMode(), "Writing is only possible in SynchronMode!" ); - DBG_ASSERT( m_aInitialized.check(), "Writing bevor stream is ready!" ); - - Reference <XSeekable> xSeekable = getSeekable_Impl(); - Reference <XOutputStream> xOutputStream = getOutputStream_Impl(); - if ( !xOutputStream.is() || !xSeekable.is() ) - return ERRCODE_IO_CANTWRITE; - - try - { - xSeekable->seek( nPos ); - } - catch (const IOException&) - { - return ERRCODE_IO_CANTSEEK; - } - - sal_Int8* pData = (sal_Int8*) pBuffer; - Sequence<sal_Int8> aData( pData, nCount ); - try - { - xOutputStream->writeBytes( aData ); - if ( pWritten ) - *pWritten = nCount; - } - catch (const Exception&) - { - return ERRCODE_IO_CANTWRITE; - } - - return ERRCODE_NONE; -} - -//---------------------------------------------------------------------------- -ErrCode UcbLockBytes::Flush() const -{ - Reference <XOutputStream > xOutputStream = getOutputStream_Impl(); - if ( !xOutputStream.is() ) - return ERRCODE_IO_CANTWRITE; - - try - { - xOutputStream->flush(); - } - catch (const Exception&) - { - return ERRCODE_IO_CANTWRITE; - } - - return ERRCODE_NONE; -} - -//---------------------------------------------------------------------------- -ErrCode UcbLockBytes::SetSize (sal_uLong nNewSize) -{ - SvLockBytesStat aStat; - Stat( &aStat, (SvLockBytesStatFlag) 0 ); - sal_uLong nSize = aStat.nSize; - - if ( nSize > nNewSize ) - { - Reference < XTruncate > xTrunc( getOutputStream_Impl(), UNO_QUERY ); - if ( xTrunc.is() ) - { - xTrunc->truncate(); - nSize = 0; - } - else { - DBG_WARNING("Not truncatable!"); - } - } - - if ( nSize < nNewSize ) - { - sal_uLong nDiff = nNewSize-nSize, nCount=0; - sal_uInt8* pBuffer = new sal_uInt8[ nDiff ]; - memset(pBuffer, 0, nDiff); // initialize for enhanced security - WriteAt( nSize, pBuffer, nDiff, &nCount ); - delete[] pBuffer; - if ( nCount != nDiff ) - return ERRCODE_IO_CANTWRITE; - } - - return ERRCODE_NONE; -} - -//---------------------------------------------------------------------------- -ErrCode UcbLockBytes::Stat( SvLockBytesStat *pStat, SvLockBytesStatFlag) const -{ - if ( IsSynchronMode() ) - { - UcbLockBytes* pThis = const_cast < UcbLockBytes* >( this ); - pThis->m_aInitialized.wait(); - } - - if (!pStat) - return ERRCODE_IO_INVALIDPARAMETER; - - Reference <XInputStream> xStream = getInputStream_Impl(); - Reference <XSeekable> xSeekable = getSeekable_Impl(); - - if ( !xStream.is() ) - { - if ( m_bTerminated ) - return ERRCODE_IO_INVALIDACCESS; - else - return ERRCODE_IO_PENDING; - } - else if( !xSeekable.is() ) - return ERRCODE_IO_CANTTELL; - - try - { - pStat->nSize = sal_uLong(xSeekable->getLength()); - } - catch (const IOException&) - { - return ERRCODE_IO_CANTTELL; - } - - return ERRCODE_NONE; -} - -//---------------------------------------------------------------------------- -void UcbLockBytes::Cancel() -{ - // is alive only for compatibility reasons - OSL_ENSURE( m_bTerminated, "UcbLockBytes is not thread safe so it can be used only syncronously!\n" ); -} - -//---------------------------------------------------------------------------- -IMPL_LINK( UcbLockBytes, DataAvailHdl, void*, EMPTYARG ) -{ - if ( hasInputStream_Impl() && m_xHandler.Is() ) - m_xHandler->Handle( UcbLockBytesHandler::DATA_AVAILABLE, this ); - - return 0; -} - -UcbLockBytesRef UcbLockBytes::CreateInputLockBytes( const Reference< XInputStream >& xInputStream ) -{ - if( !xInputStream.is() ) - return NULL;; - - UcbLockBytesRef xLockBytes = new UcbLockBytes(); - xLockBytes->setDontClose_Impl(); - xLockBytes->setInputStream_Impl( xInputStream ); - xLockBytes->terminate_Impl(); - return xLockBytes; -} - -UcbLockBytesRef UcbLockBytes::CreateLockBytes( const Reference< XStream >& xStream ) -{ - if( !xStream.is() ) - return NULL;; - - UcbLockBytesRef xLockBytes = new UcbLockBytes(); - xLockBytes->setDontClose_Impl(); - xLockBytes->setStream_Impl( xStream ); - xLockBytes->terminate_Impl(); - return xLockBytes; -} - -UcbLockBytesRef UcbLockBytes::CreateLockBytes( const Reference < XContent >& xContent, const ::rtl::OUString& rReferer, const ::rtl::OUString& rMediaType, - const Reference < XInputStream >& xPostData, const Reference < XInteractionHandler >& xInteractionHandler, UcbLockBytesHandler* pHandler ) -{ - if( !xContent.is() ) - return NULL;; - - UcbLockBytesRef xLockBytes = new UcbLockBytes( pHandler ); - xLockBytes->SetSynchronMode( !pHandler ); - Reference< XActiveDataControl > xSink = (XActiveDataControl*) new UcbDataSink_Impl( xLockBytes ); - - PostCommandArgument2 aArgument; - aArgument.Source = xPostData; - aArgument.Sink = xSink; - aArgument.MediaType = rMediaType; - aArgument.Referer = rReferer; - - Command aCommand; - aCommand.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM ("post")); - aCommand.Argument <<= aArgument; - - Reference< XProgressHandler > xProgressHdl = new ProgressHandler_Impl( LINK( &xLockBytes, UcbLockBytes, DataAvailHdl ) ); - - sal_Bool bError = UCBOpenContentSync( xLockBytes, - xContent, - aCommand, - xSink, - xInteractionHandler, - xProgressHdl, - pHandler ); - - if ( xLockBytes->GetError() == ERRCODE_NONE && ( bError || !xLockBytes->getInputStream().is() ) ) - { - OSL_FAIL("No InputStream, but no error set!" ); - xLockBytes->SetError( ERRCODE_IO_GENERAL ); - } - - return xLockBytes; -} - -UcbLockBytesRef UcbLockBytes::CreateLockBytes( const Reference < XContent >& xContent, const Sequence < PropertyValue >& rProps, - StreamMode eOpenMode, const Reference < XInteractionHandler >& xInteractionHandler, UcbLockBytesHandler* pHandler ) -{ - if( !xContent.is() ) - return NULL;; - - UcbLockBytesRef xLockBytes = new UcbLockBytes( pHandler ); - xLockBytes->SetSynchronMode( !pHandler ); - Reference< XActiveDataControl > xSink; - if ( eOpenMode & STREAM_WRITE ) - xSink = (XActiveDataControl*) new UcbStreamer_Impl( xLockBytes ); - else - xSink = (XActiveDataControl*) new UcbDataSink_Impl( xLockBytes ); - - if ( rProps.getLength() ) - { - Reference < XCommandProcessor > xProcessor( xContent, UNO_QUERY ); - Command aCommand; - aCommand.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("setPropertyValues")); - aCommand.Handle = -1; /* unknown */ - aCommand.Argument <<= rProps; - xProcessor->execute( aCommand, 0, Reference < XCommandEnvironment >() ); - } - - OpenCommandArgument2 aArgument; - aArgument.Sink = xSink; - aArgument.Mode = OpenMode::DOCUMENT; - - Command aCommand; - aCommand.Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("open") ); - aCommand.Argument <<= aArgument; - - Reference< XProgressHandler > xProgressHdl = new ProgressHandler_Impl( LINK( &xLockBytes, UcbLockBytes, DataAvailHdl ) ); - - sal_Bool bError = UCBOpenContentSync( xLockBytes, - xContent, - aCommand, - xSink, - xInteractionHandler, - xProgressHdl, - pHandler ); - - if ( xLockBytes->GetError() == ERRCODE_NONE && ( bError || !xLockBytes->getInputStream().is() ) ) - { - OSL_FAIL("No InputStream, but no error set!" ); - xLockBytes->SetError( ERRCODE_IO_GENERAL ); - } - - return xLockBytes; -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/ucbhelper/ucbstreamhelper.cxx b/unotools/source/ucbhelper/ucbstreamhelper.cxx deleted file mode 100644 index 6d835769da..0000000000 --- a/unotools/source/ucbhelper/ucbstreamhelper.cxx +++ /dev/null @@ -1,249 +0,0 @@ -/* -*- 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -#include <unotools/ucblockbytes.hxx> -#include <unotools/ucbstreamhelper.hxx> -#include <comphelper/processfactory.hxx> -#include <com/sun/star/ucb/CommandAbortedException.hpp> - -#include <com/sun/star/ucb/XCommandEnvironment.hdl> -#include <com/sun/star/ucb/InsertCommandArgument.hpp> -#include <com/sun/star/io/XActiveDataStreamer.hpp> - -#include <ucbhelper/contentbroker.hxx> -#include <ucbhelper/content.hxx> -#include <tools/debug.hxx> -#include <unotools/streamwrap.hxx> - -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::io; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::ucb; -using namespace ::com::sun::star::task; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::beans; - -namespace utl -{ - -static SvStream* lcl_CreateStream( const String& rFileName, StreamMode eOpenMode, - Reference < XInteractionHandler > xInteractionHandler, - UcbLockBytesHandler* pHandler, sal_Bool /*bForceSynchron*/, sal_Bool bEnsureFileExists ) -{ - SvStream* pStream = NULL; - ::ucbhelper::ContentBroker* pBroker = ::ucbhelper::ContentBroker::get(); - if ( pBroker ) - { - UcbLockBytesRef xLockBytes; - if ( eOpenMode & STREAM_WRITE ) - { - sal_Bool bTruncate = ( eOpenMode & STREAM_TRUNC ) != 0; - if ( bTruncate ) - { - try - { - // truncate is implemented with deleting the original file - ::ucbhelper::Content aCnt( rFileName, Reference < XCommandEnvironment >() ); - aCnt.executeCommand( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("delete")), makeAny( sal_Bool( sal_True ) ) ); - } - - catch ( const CommandAbortedException& ) - { - // couldn't truncate/delete - } - catch ( const ContentCreationException& ) - { - } - catch ( const Exception& ) - { - } - } - - if ( bEnsureFileExists || bTruncate ) - { - try - { - // make sure that the desired file exists before trying to open - SvMemoryStream aStream(0,0); - ::utl::OInputStreamWrapper* pInput = new ::utl::OInputStreamWrapper( aStream ); - Reference< XInputStream > xInput( pInput ); - - ::ucbhelper::Content aContent( rFileName, Reference < XCommandEnvironment >() ); - InsertCommandArgument aInsertArg; - aInsertArg.Data = xInput; - - aInsertArg.ReplaceExisting = sal_False; - Any aCmdArg; - aCmdArg <<= aInsertArg; - aContent.executeCommand( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("insert")), aCmdArg ); - } - - // it is NOT an error when the stream already exists and no truncation was desired - catch ( const CommandAbortedException& ) - { - // currently never an error is detected ! - } - catch ( const ContentCreationException& ) - { - } - catch ( const Exception& ) - { - } - } - } - - try - { - // create LockBytes using UCB - ::ucbhelper::Content aContent( rFileName, Reference < XCommandEnvironment >() ); - xLockBytes = UcbLockBytes::CreateLockBytes( aContent.get(), Sequence < PropertyValue >(), - eOpenMode, xInteractionHandler, pHandler ); - if ( xLockBytes.Is() ) - { - pStream = new SvStream( xLockBytes ); - pStream->SetBufferSize( 4096 ); - pStream->SetError( xLockBytes->GetError() ); - } - } - catch ( const CommandAbortedException& ) - { - } - catch ( const ContentCreationException& ) - { - } - catch ( const Exception& ) - { - } - } - else - // if no UCB is present at least conventional file io is supported - pStream = new SvFileStream( rFileName, eOpenMode ); - - return pStream; -} - -//============================================================================ - -SvStream* UcbStreamHelper::CreateStream( const String& rFileName, StreamMode eOpenMode, - UcbLockBytesHandler* pHandler, sal_Bool bForceSynchron ) -{ - return lcl_CreateStream( rFileName, eOpenMode, Reference < XInteractionHandler >(), pHandler, bForceSynchron, sal_True /* bEnsureFileExists */ ); -} - -SvStream* UcbStreamHelper::CreateStream( const String& rFileName, StreamMode eOpenMode, - Reference < XInteractionHandler > xInteractionHandler, - UcbLockBytesHandler* pHandler, sal_Bool bForceSynchron ) -{ - return lcl_CreateStream( rFileName, eOpenMode, xInteractionHandler, pHandler, bForceSynchron, sal_True /* bEnsureFileExists */ ); -} - -SvStream* UcbStreamHelper::CreateStream( const String& rFileName, StreamMode eOpenMode, - sal_Bool bFileExists, - UcbLockBytesHandler* pHandler, sal_Bool bForceSynchron ) -{ - return lcl_CreateStream( rFileName, eOpenMode, Reference < XInteractionHandler >(), pHandler, bForceSynchron, !bFileExists ); -} - -SvStream* UcbStreamHelper::CreateStream( Reference < XInputStream > xStream ) -{ - SvStream* pStream = NULL; - UcbLockBytesRef xLockBytes = UcbLockBytes::CreateInputLockBytes( xStream ); - if ( xLockBytes.Is() ) - { - pStream = new SvStream( xLockBytes ); - pStream->SetBufferSize( 4096 ); - pStream->SetError( xLockBytes->GetError() ); - } - - return pStream; -} - -SvStream* UcbStreamHelper::CreateStream( Reference < XStream > xStream ) -{ - SvStream* pStream = NULL; - if ( xStream->getOutputStream().is() ) - { - UcbLockBytesRef xLockBytes = UcbLockBytes::CreateLockBytes( xStream ); - if ( xLockBytes.Is() ) - { - pStream = new SvStream( xLockBytes ); - pStream->SetBufferSize( 4096 ); - pStream->SetError( xLockBytes->GetError() ); - } - } - else - return CreateStream( xStream->getInputStream() ); - - return pStream; -} - -SvStream* UcbStreamHelper::CreateStream( Reference < XInputStream > xStream, sal_Bool bCloseStream ) -{ - SvStream* pStream = NULL; - UcbLockBytesRef xLockBytes = UcbLockBytes::CreateInputLockBytes( xStream ); - if ( xLockBytes.Is() ) - { - if ( !bCloseStream ) - xLockBytes->setDontClose_Impl(); - - pStream = new SvStream( xLockBytes ); - pStream->SetBufferSize( 4096 ); - pStream->SetError( xLockBytes->GetError() ); - } - - return pStream; -}; - -SvStream* UcbStreamHelper::CreateStream( Reference < XStream > xStream, sal_Bool bCloseStream ) -{ - SvStream* pStream = NULL; - if ( xStream->getOutputStream().is() ) - { - UcbLockBytesRef xLockBytes = UcbLockBytes::CreateLockBytes( xStream ); - if ( xLockBytes.Is() ) - { - if ( !bCloseStream ) - xLockBytes->setDontClose_Impl(); - - pStream = new SvStream( xLockBytes ); - pStream->SetBufferSize( 4096 ); - pStream->SetError( xLockBytes->GetError() ); - } - } - else - return CreateStream( xStream->getInputStream(), bCloseStream ); - - return pStream; -}; - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/ucbhelper/xtempfile.cxx b/unotools/source/ucbhelper/xtempfile.cxx deleted file mode 100644 index 5d75927d48..0000000000 --- a/unotools/source/ucbhelper/xtempfile.cxx +++ /dev/null @@ -1,509 +0,0 @@ -/* -*- 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 "precompiled_unotools.hxx" -#include <XTempFile.hxx> -#include <cppuhelper/factory.hxx> -#include <cppuhelper/typeprovider.hxx> -#include <unotools/tempfile.hxx> -#include <osl/file.hxx> -#include <unotools/configmgr.hxx> -#include <tools/urlobj.hxx> -#include <tools/debug.hxx> - -namespace css = com::sun::star; - -OTempFileService::OTempFileService(::css::uno::Reference< ::css::uno::XComponentContext > const & context) -: ::cppu::PropertySetMixin< ::css::io::XTempFile >( - context - , static_cast< Implements >( IMPLEMENTS_PROPERTY_SET | IMPLEMENTS_FAST_PROPERTY_SET | IMPLEMENTS_PROPERTY_ACCESS ) - , com::sun::star::uno::Sequence< rtl::OUString >() ) -, mpStream( NULL ) -, mbRemoveFile( sal_True ) -, mbInClosed( sal_False ) -, mbOutClosed( sal_False ) -, mnCachedPos( 0 ) -, mbHasCachedPos( sal_False ) - -{ - mpTempFile = new ::utl::TempFile; - mpTempFile->EnableKillingFile ( sal_True ); -} - -OTempFileService::~OTempFileService () -{ - if ( mpTempFile ) - delete mpTempFile; -} - - -// XInterface - -::css::uno::Any SAL_CALL OTempFileService::queryInterface( ::css::uno::Type const & aType ) -throw ( ::css::uno::RuntimeException ) -{ - ::css::uno::Any aResult( OTempFileBase::queryInterface( aType ) ); - if (!aResult.hasValue()) - aResult = cppu::PropertySetMixin< ::css::io::XTempFile >::queryInterface( aType ) ; - return aResult; -}; -void SAL_CALL OTempFileService::acquire( ) -throw () -{ - OTempFileBase::acquire(); -} -void SAL_CALL OTempFileService::release( ) -throw () -{ - OTempFileBase::release(); -} - -// XTypeProvider - -::css::uno::Sequence< ::css::uno::Type > SAL_CALL OTempFileService::getTypes( ) -throw ( ::css::uno::RuntimeException ) -{ - static ::cppu::OTypeCollection* pTypeCollection = NULL; - if ( pTypeCollection == NULL ) - { - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ) ; - - if ( pTypeCollection == NULL ) - { - static ::cppu::OTypeCollection aTypeCollection( - ::getCppuType( ( const ::css::uno::Reference< ::css::beans::XPropertySet >*)NULL ) - ,OTempFileBase::getTypes() ); - pTypeCollection = &aTypeCollection; - } - } - return pTypeCollection->getTypes(); -}; -::css::uno::Sequence< sal_Int8 > SAL_CALL OTempFileService::getImplementationId( ) -throw ( ::css::uno::RuntimeException ) -{ - return OTempFileBase::getImplementationId(); -} - -// XTempFile - -sal_Bool SAL_CALL OTempFileService::getRemoveFile() -throw ( ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - - if ( !mpTempFile ) - { - // the stream is already disconnected - throw ::css::uno::RuntimeException(); - } - - return mbRemoveFile; -}; -void SAL_CALL OTempFileService::setRemoveFile( sal_Bool _removefile ) -throw ( ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - - if ( !mpTempFile ) - { - // the stream is already disconnected - throw ::css::uno::RuntimeException(); - } - - mbRemoveFile = _removefile; - mpTempFile->EnableKillingFile( mbRemoveFile ); -}; -::rtl::OUString SAL_CALL OTempFileService::getUri() -throw ( ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - - if ( !mpTempFile ) - { - throw ::css::uno::RuntimeException(); - } - - return ::rtl::OUString( mpTempFile->GetURL() ); - -}; -::rtl::OUString SAL_CALL OTempFileService::getResourceName() -throw ( ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - - if ( !mpTempFile ) - { - throw ::css::uno::RuntimeException(); -} - - return ::rtl::OUString( mpTempFile->GetFileName() ); -}; - - - -// XInputStream - -sal_Int32 SAL_CALL OTempFileService::readBytes( ::css::uno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead ) -throw (::css::io::NotConnectedException, ::css::io::BufferSizeExceededException, ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - if ( mbInClosed ) - throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast < ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) ); - - checkConnected(); - if (nBytesToRead < 0) - throw ::css::io::BufferSizeExceededException( ::rtl::OUString(), static_cast< ::css::uno::XWeak * >(this)); - - aData.realloc(nBytesToRead); - - sal_uInt32 nRead = mpStream->Read(static_cast < void* > ( aData.getArray() ), nBytesToRead); - checkError(); - - if (nRead < static_cast < sal_uInt32 > ( nBytesToRead ) ) - aData.realloc( nRead ); - - if ( sal::static_int_cast<sal_uInt32>(nBytesToRead) > nRead ) - { - // usually that means that the stream was read till the end - // TODO/LATER: it is better to get rid of this optimization by avoiding using of multiple temporary files ( there should be only one temporary file? ) - mnCachedPos = mpStream->Tell(); - mbHasCachedPos = sal_True; - - mpStream = NULL; - if ( mpTempFile ) - mpTempFile->CloseStream(); - } - - return nRead; -} -sal_Int32 SAL_CALL OTempFileService::readSomeBytes( ::css::uno::Sequence< sal_Int8 >& aData, sal_Int32 nMaxBytesToRead ) -throw ( ::css::io::NotConnectedException, ::css::io::BufferSizeExceededException, ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - if ( mbInClosed ) - throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast < ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) ); - - checkConnected(); - checkError(); - - if (nMaxBytesToRead < 0) - throw ::css::io::BufferSizeExceededException( ::rtl::OUString(), static_cast < ::css::uno::XWeak * >( this ) ); - - if (mpStream->IsEof()) - { - aData.realloc(0); - return 0; - } - else - return readBytes(aData, nMaxBytesToRead); -} -void SAL_CALL OTempFileService::skipBytes( sal_Int32 nBytesToSkip ) -throw ( ::css::io::NotConnectedException, ::css::io::BufferSizeExceededException, ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - if ( mbInClosed ) - throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast < ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) ); - - checkConnected(); - checkError(); - mpStream->SeekRel(nBytesToSkip); - checkError(); -} -sal_Int32 SAL_CALL OTempFileService::available( ) -throw ( ::css::io::NotConnectedException, ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - if ( mbInClosed ) - throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast < ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) ); - - checkConnected(); - - sal_uInt32 nPos = mpStream->Tell(); - checkError(); - - mpStream->Seek(STREAM_SEEK_TO_END); - checkError(); - - sal_Int32 nAvailable = (sal_Int32)mpStream->Tell() - nPos; - mpStream->Seek(nPos); - checkError(); - - return nAvailable; -} -void SAL_CALL OTempFileService::closeInput( ) -throw ( ::css::io::NotConnectedException, ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - if ( mbInClosed ) - throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast < ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) ); - - mbInClosed = sal_True; - - if ( mbOutClosed ) - { - // stream will be deleted by TempFile implementation - mpStream = NULL; - - if ( mpTempFile ) - { - delete mpTempFile; - mpTempFile = NULL; - } - } -} - -// XOutputStream - -void SAL_CALL OTempFileService::writeBytes( const ::css::uno::Sequence< sal_Int8 >& aData ) -throw ( ::css::io::NotConnectedException, ::css::io::BufferSizeExceededException, ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - if ( mbOutClosed ) - throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast < ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) ); - - checkConnected(); - sal_uInt32 nWritten = mpStream->Write(aData.getConstArray(),aData.getLength()); - checkError(); - if ( nWritten != (sal_uInt32)aData.getLength()) - throw ::css::io::BufferSizeExceededException( ::rtl::OUString(),static_cast < ::css::uno::XWeak * > ( this ) ); -} -void SAL_CALL OTempFileService::flush( ) -throw ( ::css::io::NotConnectedException, ::css::io::BufferSizeExceededException, ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - if ( mbOutClosed ) - throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast < ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) ); - - checkConnected(); - mpStream->Flush(); - checkError(); -} -void SAL_CALL OTempFileService::closeOutput( ) -throw ( ::css::io::NotConnectedException, ::css::io::BufferSizeExceededException, ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - if ( mbOutClosed ) - throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast < ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) ); - - mbOutClosed = sal_True; - - // TODO/LATER: it is better to get rid of this optimization by avoiding using of multiple temporary files ( there should be only one temporary file? ) - if ( mpStream ) - { - mnCachedPos = mpStream->Tell(); - mbHasCachedPos = sal_True; - - mpStream = NULL; - if ( mpTempFile ) - mpTempFile->CloseStream(); - } - - if ( mbInClosed ) - { - // stream will be deleted by TempFile implementation - mpStream = NULL; - - if ( mpTempFile ) - { - delete mpTempFile; - mpTempFile = NULL; - } - } -} - - -void OTempFileService::checkError () const -{ - if (!mpStream || mpStream->SvStream::GetError () != ERRCODE_NONE ) - throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast < ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) ); -} -void OTempFileService::checkConnected () -{ - if (!mpStream && mpTempFile) - { - mpStream = mpTempFile->GetStream( STREAM_STD_READWRITE ); - if ( mpStream && mbHasCachedPos ) - { - mpStream->Seek( sal::static_int_cast<sal_Size>(mnCachedPos) ); - if ( mpStream->SvStream::GetError () == ERRCODE_NONE ) - { - mbHasCachedPos = sal_False; - mnCachedPos = 0; - } - else - { - mpStream = NULL; - mpTempFile->CloseStream(); - } - } - } - - if (!mpStream) - throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast < ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) ); -} - -// XSeekable - -void SAL_CALL OTempFileService::seek( sal_Int64 nLocation ) -throw ( ::css::lang::IllegalArgumentException, ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - checkConnected(); - if ( nLocation < 0 || nLocation > getLength() ) - throw ::css::lang::IllegalArgumentException(); - - mpStream->Seek((sal_uInt32) nLocation ); - checkError(); -} -sal_Int64 SAL_CALL OTempFileService::getPosition( ) -throw ( ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - checkConnected(); - - sal_uInt32 nPos = mpStream->Tell(); - checkError(); - return (sal_Int64)nPos; -} -sal_Int64 SAL_CALL OTempFileService::getLength( ) -throw ( ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - checkConnected(); - - sal_uInt32 nCurrentPos = mpStream->Tell(); - checkError(); - - mpStream->Seek(STREAM_SEEK_TO_END); - sal_uInt32 nEndPos = mpStream->Tell(); - mpStream->Seek(nCurrentPos); - - checkError(); - - return (sal_Int64)nEndPos; -} - - -// XStream - -::css::uno::Reference< ::css::io::XInputStream > SAL_CALL OTempFileService::getInputStream() -throw ( ::css::uno::RuntimeException ) - { - return ::css::uno::Reference< ::css::io::XInputStream >( *this, ::css::uno::UNO_QUERY ); -} - -::css::uno::Reference< ::css::io::XOutputStream > SAL_CALL OTempFileService::getOutputStream() -throw ( ::css::uno::RuntimeException ) - { - return ::css::uno::Reference< ::css::io::XOutputStream >( *this, ::css::uno::UNO_QUERY ); - } - -// XTruncate - -void SAL_CALL OTempFileService::truncate() -throw ( ::css::io::IOException, ::css::uno::RuntimeException ) -{ - ::osl::MutexGuard aGuard( maMutex ); - checkConnected(); - // SetStreamSize() call does not change the position - mpStream->Seek( 0 ); - mpStream->SetStreamSize( 0 ); - checkError(); -} - -// XServiceInfo - -::rtl::OUString SAL_CALL OTempFileService::getImplementationName() -throw ( ::css::uno::RuntimeException ) -{ - return getImplementationName_Static(); -} - -sal_Bool SAL_CALL OTempFileService::supportsService( ::rtl::OUString const & rServiceName ) -throw ( ::css::uno::RuntimeException ) -{ - ::css::uno::Sequence< ::rtl::OUString > aServices(getSupportedServiceNames_Static()); - return rServiceName == aServices[0]; -} - -::css::uno::Sequence < ::rtl::OUString > SAL_CALL OTempFileService::getSupportedServiceNames() -throw ( ::css::uno::RuntimeException ) -{ - return getSupportedServiceNames_Static(); -} - - - -::rtl::OUString OTempFileService::getImplementationName_Static () -{ - return ::rtl::OUString ( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.io.comp.TempFile" ) ); -} -::css::uno::Sequence < ::rtl::OUString > OTempFileService::getSupportedServiceNames_Static() -{ - ::css::uno::Sequence < ::rtl::OUString > aNames ( 1 ); - aNames[0] = ::rtl::OUString ( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.io.TempFile" ) ); - return aNames; -} -::css::uno::Reference < ::css::uno::XInterface >SAL_CALL XTempFile_createInstance( - css::uno::Reference< ::css::uno::XComponentContext > const & context) - SAL_THROW( ( css::uno::Exception ) ) -{ - return static_cast< ::cppu::OWeakObject * >( new OTempFileService(context) ); -} - -::css::uno::Reference < ::css::lang::XSingleComponentFactory > OTempFileService::createServiceFactory_Static( ::css::uno::Reference < ::css::lang::XMultiServiceFactory > const & ) -{ - return ::cppu::createSingleComponentFactory( XTempFile_createInstance, getImplementationName_Static(), getSupportedServiceNames_Static() ); -} - -/** - * This function is called to get service factories for an implementation. - * @param pImplName name of implementation - * @param pServiceManager generic uno interface providing a service manager to instantiate components - * @param pRegistryKey registry data key to read and write component persistent data - * @return a component factory (generic uno interface) - */ -extern "C" SAL_DLLPUBLIC_EXPORT void * SAL_CALL utl_component_getFactory( - const sal_Char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ ) -{ - void * pRet = 0; - ::css::uno::Reference< ::css::lang::XMultiServiceFactory > xSMgr( - reinterpret_cast< ::css::lang::XMultiServiceFactory * >( pServiceManager ) ); - ::css::uno::Reference< ::css::lang::XSingleComponentFactory > xFactory; - - if (OTempFileService::getImplementationName_Static().compareToAscii( pImplName ) == 0) - xFactory = OTempFileService::createServiceFactory_Static ( xSMgr ); - - if ( xFactory.is() ) - { - xFactory->acquire(); - pRet = xFactory.get(); - } - return pRet; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/util/utl.component b/unotools/util/utl.component deleted file mode 100644 index ab4b67b61d..0000000000 --- a/unotools/util/utl.component +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--********************************************************************** -* -* 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. -* -**********************************************************************--> - -<component loader="com.sun.star.loader.SharedLibrary" prefix="utl" - xmlns="http://openoffice.org/2010/uno-components"> - <implementation name="com.sun.star.io.comp.TempFile"> - <service name="com.sun.star.io.TempFile"/> - </implementation> -</component> |