blob: d009ee4f00763b5d3f29bc7f4ee7c1252e58bede [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the 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;
void SetOrCreateSupportedDictionaryFormatsFor( const rtl::OUString &rSetName, const rtl::OUString &rSetEntry, const com::sun::star::uno::Sequence< rtl::OUString > &rFormatList ) const;
//
sal_Bool GetDictionaryEntry( const rtl::OUString &rNodeName, SvtLinguConfigDictionaryEntry &rDicEntry ) const;
void SetOrCreateDictionaryEntry( const rtl::OUString &rNodeName, const SvtLinguConfigDictionaryEntry &rDicEntry ) const;
//
com::sun::star::uno::Sequence< rtl::OUString > GetDisabledDictionaries() const;
void SetDisabledDictionaries( const com::sun::star::uno::Sequence< rtl::OUString > &rDictionaries ) 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, bool bHighContrast = false ) const;
::rtl::OUString GetSpellAndGrammarContextSuggestionImage( const ::rtl::OUString &rServiceImplName, bool bHighContrast = false ) const;
::rtl::OUString GetSpellAndGrammarContextDictionaryImage( const ::rtl::OUString &rServiceImplName, bool bHighContrast = false ) const;
::rtl::OUString GetThesaurusDialogImage( const ::rtl::OUString &rServiceImplName, bool bHighContrast = false ) const;
::rtl::OUString GetSynonymsContextImage( const ::rtl::OUString &rServiceImplName, bool bHighContrast = false ) const;
bool HasVendorImages( const char *pImageName ) const;
bool HasGrammarChecker() const;
};
//////////////////////////////////////////////////////////////////////
#endif