diff options
Diffstat (limited to 'framework/source/inc/accelerators/presethandler.hxx')
-rw-r--r-- | framework/source/inc/accelerators/presethandler.hxx | 534 |
1 files changed, 0 insertions, 534 deletions
diff --git a/framework/source/inc/accelerators/presethandler.hxx b/framework/source/inc/accelerators/presethandler.hxx deleted file mode 100644 index 2786b7a1ce..0000000000 --- a/framework/source/inc/accelerators/presethandler.hxx +++ /dev/null @@ -1,534 +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 __FRAMEWORK_ACCELERATORS_PRESETHANDLER_HXX_ -#define __FRAMEWORK_ACCELERATORS_PRESETHANDLER_HXX_ - -//__________________________________________ -// own includes - -#include <accelerators/storageholder.hxx> -#include <threadhelp/threadhelpbase.hxx> -#include <general.h> -#include <stdtypes.h> - -//__________________________________________ -// interface includes - -#include <com/sun/star/embed/XStorage.hpp> - -#include <com/sun/star/lang/XMultiServiceFactory.hpp> - -//__________________________________________ -// other includes -#include <comphelper/processfactory.hxx> -#include <salhelper/singletonref.hxx> -#include <comphelper/locale.hxx> - -//__________________________________________ -// definition - -namespace framework -{ - -//__________________________________________ -/** - TODO document me - - <layer>/global/<resourcetype>/<preset>.xml - <layer>/modules/<moduleid>/<resourcetype>/<preset>.xml - - RESOURCETYPE PRESET TARGET - (share) (user) - "accelerator" "default" "current" - "word" - "excel" - - "menubar" "default" "menubar" - - */ -class PresetHandler : private ThreadHelpBase // attention! Must be the first base class to guarentee right initialize lock ... -{ - //------------------------------------------- - // const - - public: - - static ::rtl::OUString PRESET_DEFAULT(); - static ::rtl::OUString TARGET_CURRENT(); - - static ::rtl::OUString RESOURCETYPE_MENUBAR(); - static ::rtl::OUString RESOURCETYPE_TOOLBAR(); - static ::rtl::OUString RESOURCETYPE_ACCELERATOR(); - static ::rtl::OUString RESOURCETYPE_STATUSBAR(); - - //------------------------------------------- - // types - - public: - - //--------------------------------------- - /** @short this handler can provide different - types of configuration. - - @descr Means: a global or a module dependend - or ... configuration. - */ - enum EConfigType - { - E_GLOBAL, - E_MODULES, - E_DOCUMENT - }; - - private: - - //--------------------------------------- - /** @short because a concurrent access to the same storage from different implementations - isnt supported, we have to share it with others. - - @descr This struct makes it possible to use any shared storage - in combination with a SingletonRef<> template ... - - Attention: Because these struct is shared it must be - used within a synchronized section. Thats why this struct - uses a base class ThreadHelpBase and can be locked - from outside doing so! - */ - struct TSharedStorages : public ThreadHelpBase - { - public: - - StorageHolder m_lStoragesShare; - StorageHolder m_lStoragesUser; - - TSharedStorages() - : m_lStoragesShare(::comphelper::getProcessServiceFactory()) - , m_lStoragesUser (::comphelper::getProcessServiceFactory()) - {}; - - virtual ~TSharedStorages() {}; - }; - - //------------------------------------------- - // member - - private: - - //--------------------------------------- - /** @short can be used to create on needed uno resources. */ - css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR; - - //--------------------------------------- - /** @short knows the type of provided configuration. - - @descr e.g. global, modules, ... - */ - EConfigType m_eConfigType; - - //--------------------------------------- - /** @short specify the type of resource, which configuration sets - must be provided here. - - @descr e.g. menubars, toolbars, accelerators - */ - ::rtl::OUString m_sResourceType; - - //--------------------------------------- - /** @short specify the application module for a module - dependend configuration. - - @descr Will be used only, if m_sResourceType is set to - "module". Further it must be a valid module identifier - then ... - */ - ::rtl::OUString m_sModule; - - //--------------------------------------- - /** @short provides access to the: - a) shared root storages - b) shared "inbetween" storages - of the share and user layer. */ - ::salhelper::SingletonRef< TSharedStorages > m_aSharedStorages; - - //--------------------------------------- - /** @short if we run in document mode, we cant use the global root storages! - We have to use a special document storage explicitly. */ - StorageHolder m_lDocumentStorages; - - //--------------------------------------- - /** @short holds the folder storage of the share layer alive, - where the current configuration set exists. - - @descr Note: If this preset handler works in document mode - this member is meaned relative to the document root ... - not to the share layer root! - - Further is defined, that m_xWorkingStorageUser - is equals to m_xWorkingStorageShare then! - */ - css::uno::Reference< css::embed::XStorage > m_xWorkingStorageShare; - - //--------------------------------------- - /** @short global language-independent storage - */ - css::uno::Reference< css::embed::XStorage > m_xWorkingStorageNoLang; - - //--------------------------------------- - /** @short holds the folder storage of the user layer alive, - where the current configuration set exists. - - @descr Note: If this preset handler works in document mode - this member is meaned relative to the document root ... - not to the user layer root! - - Further is defined, that m_xWorkingStorageUser - is equals to m_xWorkingStorageShare then! - */ - css::uno::Reference< css::embed::XStorage > m_xWorkingStorageUser; - - //--------------------------------------- - /** @short knows the names of all presets inside the current - working storage of the share layer. */ - OUStringList m_lPresets; - - //--------------------------------------- - /** @short knows the names of all targets inside the current - working storage of the user layer. */ - OUStringList m_lTargets; - - //--------------------------------------- - /** @short its the current office locale and will be used - to handle localized presets. - - @descr Default is "x-notranslate" which disable any - localized handling inside this class! */ - ::comphelper::Locale m_aLocale; - - //--------------------------------------- - /** @short knows the relative path from the root. */ - ::rtl::OUString m_sRelPathShare; - ::rtl::OUString m_sRelPathNoLang; - ::rtl::OUString m_sRelPathUser; - - //------------------------------------------- - // native interface - - public: - - //--------------------------------------- - /** @short does nothing real. - - @descr Because this class should be useable in combination - with ::salhelper::SingletonRef template this ctor - cant have any special parameters! - - @param xSMGR - points to an uno service manager, which is used internaly - to create own needed uno resources. - */ - PresetHandler(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR); - - //--------------------------------------- - /** @short copy ctor */ - PresetHandler(const PresetHandler& rCopy); - - //--------------------------------------- - /** @short closes all open storages ... if user forgot that .-) */ - virtual ~PresetHandler(); - - //--------------------------------------- - /** @short free all currently cache(!) storages. */ - void forgetCachedStorages(); - - //--------------------------------------- - /** @short return access to the internaly used and cached root storage. - - @descr These root storages are the base of all further opened - presets and targets. They are provided here only, to support - older implementations, which base on them ... - - getOrCreate...() - What does it mean? - Such root storage will be created one times only and - cached then internaly till the last instance of such PresetHandler - dies. - - @return com::sun::star::embed::XStorage - which represent a root storage. - */ - css::uno::Reference< css::embed::XStorage > getOrCreateRootStorageShare(); - css::uno::Reference< css::embed::XStorage > getOrCreateRootStorageUser(); - - //--------------------------------------- - /** @short provides access to the current working storages. - - @descr Working storages are the "lowest" storages, where the - preset and target files exists. - - @return com::sun::star::embed::XStorage - which the current working storage. - */ - css::uno::Reference< css::embed::XStorage > getWorkingStorageShare(); - css::uno::Reference< css::embed::XStorage > getWorkingStorageUser(); - - //--------------------------------------- - /** @short check if there is a parent storage well known for - the specified child storage and return it. - - @param xChild - the child storage where a paranet storage should be searched for. - - @return com::sun::star::embed::XStorage - A valid storage if a paranet exists. NULL otherwise. - */ - css::uno::Reference< css::embed::XStorage > getParentStorageShare(const css::uno::Reference< css::embed::XStorage >& xChild); - css::uno::Reference< css::embed::XStorage > getParentStorageUser (const css::uno::Reference< css::embed::XStorage >& xChild); - - //--------------------------------------- - /** @short free all internal structures and let this handler - work on a new type of configuration sets. - - @param eConfigType - differ between global or module dependend configuration. - - @param sResourceType - differ between menubar/toolbar/accelerator/... configuration. - - @param sModule - if sResourceType is set to a module dependend configuration, - it address the current application module. - - @param xDocumentRoot - if sResourceType is set to E_DOCUMENT, this value points to the - root storage inside the document, where we can save our - configuration files. Note: Thats not the real root of the document ... - its only a sub storage. But we interpret it as our root storage. - - @param aLocale - in case this configuration supports localized entries, - the current locale must be set. - - Localzation will be represented as directory structure - of provided presets. Means: you call us with a preset name "default"; - and we use e.g. "/en-US/default.xml" internaly. - - If no localization exists for this preset set, this class - will work in default mode - means "no locale" - automaticly. - e.g. "/default.xml" - - @throw com::sun::star::uno::RuntimeException(!) - if the specified resource couldn't be located. - */ - void connectToResource( EConfigType eConfigType , - const ::rtl::OUString& sResourceType , - const ::rtl::OUString& sModule , - const css::uno::Reference< css::embed::XStorage >& xDocumentRoot , - const ::comphelper::Locale& aLocale = ::comphelper::Locale(::comphelper::Locale::X_NOTRANSLATE())); - - //--------------------------------------- - /** @short try to copy the specified preset from the share - layer to the user layer and establish it as the - specified target. - - @descr Means: copy share/.../<preset>.xml user/.../<target>.xml - Note: The target will be overwritten completly or - created as new by this operation! - - @param sPreset - the ALIAS name of an existing preset. - - @param sTarget - the ALIAS name of the target. - - @throw com::sun::star::container::NoSuchElementException - if the specified preset does not exists. - - @throw com::sun::star::io::IOException - if copying failed. - */ - void copyPresetToTarget(const ::rtl::OUString& sPreset, - const ::rtl::OUString& sTarget); - - //--------------------------------------- - /** @short open the specified preset as stream object - and return it. - - @descr Note: Because presets resist inside the share - layer, they will be opened readonly everytimes. - - @param sPreset - the ALIAS name of an existing preset. - - @param bNoLangGlobal - access the global language-independent storage instead of the preset storage - - @return The opened preset stream ... or NULL if the preset does not exists. - */ - css::uno::Reference< css::io::XStream > openPreset(const ::rtl::OUString& sPreset, - sal_Bool bUseNoLangGlobal = sal_False); - - //--------------------------------------- - /** @short open the specified target as stream object - and return it. - - @descr Note: Targets resist inside the user - layer. Normaly they are opened in read/write mode. - But it will be opened readonly automaticly if that isnt possible - (may be the file is write protected on the system ...). - - @param sTarget - the ALIAS name of the target. - - @param bCreateIfMissing - create target file, if it does not still exists. - Note: That does not means reseting of an existing file! - - @return The opened target stream ... or NULL if the target does not exists - or couldnt be created as new one. - */ - css::uno::Reference< css::io::XStream > openTarget(const ::rtl::OUString& sTarget , - sal_Bool bCreateIfMissing); - - //--------------------------------------- - /** @short do anything which is neccessary to flush all changes - back to disk. - - @descr We have to call commit on all cached sub storages on the - path from the root storage upside down to the working storage - (which are not realy used, but required to be holded alive!). - */ - void commitUserChanges(); - - //--------------------------------------- - /** TODO */ - void addStorageListener(IStorageListener* pListener); - void removeStorageListener(IStorageListener* pListener); - - //------------------------------------------- - // helper - - private: - - //--------------------------------------- - /** @short open a config path ignoring errors (catching exceptions). - - @descr We catch only normal exceptions here - no runtime exceptions. - - @param sPath - the configuration path, which should be opened. - - @param eMode - the open mode (READ/READWRITE) - - @param bShare - force using of the share layer instead of the user layer. - - @return An opened storage in case method was successfully - null otherwise. - */ - css::uno::Reference< css::embed::XStorage > impl_openPathIgnoringErrors(const ::rtl::OUString& sPath , - sal_Int32 eMode , - sal_Bool bShare); - - //--------------------------------------- - /** @short try to find the specified locale inside list of possible ones. - - @descr The lits of possible locale values was e.g. retrieved from the system - (configuration, directory listing etcpp). The locale normaly represent - the current office locale. This method search for a suitable item by using - different algorithm. - a) exact search - b) search with using fallbacks - - @param lLocalizedValues - list of ISO locale codes - - @param aLocale - [IN ] the current office locale, which should be searched inside lLocalizedValues. - [OUT] in case fallbacks was allowed, it contains afterwards the fallback locale. - - @param bAllowFallbacks - enable/disable using of fallbacks - - @return An iterator, which points directly into lLocalizedValue list. - As a negative result the special iterator lLocalizedValues.end() will be returned. - */ - ::std::vector< ::rtl::OUString >::const_iterator impl_findMatchingLocalizedValue(const ::std::vector< ::rtl::OUString >& lLocalizedValues, - ::comphelper::Locale& aLocale , - sal_Bool bAllowFallbacks ); - - //--------------------------------------- - /** @short open a config path ignoring errors (catching exceptions). - - @descr We catch only normal exceptions here - no runtime exceptions. - Further the path itself is tries in different versions (using locale - specific attributes). - e.g. "path/e-US" => "path/en" => "path/de" - - @param sPath - the configuration path, which should be opened. - Its further used as out parameter too, so we can return the localized - path to the calli! - - @param eMode - the open mode (READ/READWRITE) - - @param bShare - force using of the share layer instead of the user layer. - - @param aLocale - [IN ] contains the start locale for searching localized sub dirs. - [OUT] contains the locale of a found localized sub dir - - @param bAllowFallback - enable/disable fallback handling for locales - - @return An opened storage in case method was successfully - null otherwise. - */ - css::uno::Reference< css::embed::XStorage > impl_openLocalizedPathIgnoringErrors(::rtl::OUString& sPath , - sal_Int32 eMode , - sal_Bool bShare , - ::comphelper::Locale& aLocale , - sal_Bool bAllowFallback); - - //--------------------------------------- - /** @short returns the names of all sub storages of specified storage. - - @param xFolder - the base storage for this operation. - - @return [vector< string >] - a list of folder names. - */ - ::std::vector< ::rtl::OUString > impl_getSubFolderNames(const css::uno::Reference< css::embed::XStorage >& xFolder); -}; - -} // namespace framework - -#endif // __FRAMEWORK_ACCELERATORS_PRESETHANDLER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |