/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   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 .
 */
#ifndef __com_sun_star_linguistic2_XConversionDictionaryList_idl__
#define __com_sun_star_linguistic2_XConversionDictionaryList_idl__


#include <com/sun/star/uno/XInterface.idl>
#include <com/sun/star/container/XNameContainer.idl>
#include <com/sun/star/linguistic2/XConversionDictionary.idl>
#include <com/sun/star/lang/IllegalArgumentException.idl>
#include <com/sun/star/lang/NoSupportException.idl>
#include <com/sun/star/container/ElementExistException.idl>



module com { module sun { module star { module linguistic2 {

/** is used to manage and maintain a list of conversion dictionaries.

    <p>The dictionaries added to the list may or may not support the
    com::sun::star::util::XFlushable interface.
    If they do those dictionaries have to be flushed upon termination
    of the dictionary list.</p>

     @since OOo 1.1.2
*/
published interface XConversionDictionaryList : com::sun::star::uno::XInterface
{
    /**
        @returns
            the name container interface to the dictionaries in the list.

        <p>The interface can be used to add, remove or retrieve dictionaries
        from the list by specifying the name of the dictionary, and
        (in case of inserting) the interface to the dictionary as second
        parameter.</p>

        <p>A dictionary to be added must support the
        com::sun::star::linguistic2::XConversionDictionary
        interface.
        The dictionary to be added needs not necessarily be created by
        this service.</p>

        <p>The com::sun::star::container::XNameReplace::replaceByName
        function is implemented empty since renaming of dictionaries
        is not allowed.</p>
    */
    com::sun::star::container::XNameContainer   getDictionaryContainer();

    /** creates a new dictionary and adds it to the dictionary list.

        <p>The dictionary will be empty and active.</p>

        @returns
            an empty dictionary with the given name, locale and
            conversion type.
             `NULL` on failure.

        @param  aName
            is the name of the dictionary (should be unique).

        @param  aLocale
            defines the language of the dictionary.

        @param nConversionDictionaryType
            One of com::sun::star::linguistic2::ConversionDictionaryType values.

        @throws NoSupportException
            when <var>nConversionDictionaryType</var> is not known by the implementation.

        @throws ElementExistException
            when a dictionary with the specified name already exists.
    */
    com::sun::star::linguistic2::XConversionDictionary addNewDictionary(
            [in] string aName,
            [in] com::sun::star::lang::Locale aLocale,
            [in] short nConversionDictionaryType )
        raises( com::sun::star::lang::NoSupportException,
                com::sun::star::container::ElementExistException );

    /** searches for entries that match the given text.

        <p>All active dictionaries with matching locales and conversion
        type will be searched
        for entries matching the given text.</p>

        <p>The exact string to be looked for is the substring from the
        aText parameter that starts at position nStartPos and has the
        length nLength.</p>

        @returns
            the list of entries found. If no entry was found,
            it is empty.

        @param  aText
            the text where the substring to be looked for will be taken from.
        @param  nStartPos
            the starting pos of the substring to be looked for.
        @param  nLength
            the length of the substring to be looked for.


        @param aLocale
            Locale the conversion is referred to.

        @param nConversionDictionaryType
            specifies the type of conversion the dictionary
            can be used for. It is one of
            com::sun::star::linguistic2::ConversionDictionaryType.

        @param eDirection
            specifies the direction of the conversion to look for.
            It is one of
            com::sun::star::linguistic2::ConversionDirection.

        @param nTextConversionOptions
            Combination of com::sun::star::i18n::TextConversionOption
            values.

        @throws com::sun::star::lang::IllegalArgumentException
            if the nTextConversionOptions parameter is invalid for
            the given locale.

        @throws NoSupportException
            when <var>nConversionDictionaryType</var> is not known by the implementation,
            or when the locale is not supported (i.e. there are no dictionaries
            for that locale available).
    */
    sequence< string >    queryConversions(
            [in] string aText,
            [in] long nStartPos,
            [in] long nLength,
            [in] com::sun::star::lang::Locale aLocale,
            [in] short nConversionDictionaryType,
            [in] com::sun::star::linguistic2::ConversionDirection eDirection,
            [in] long nTextConversionOptions )
        raises( com::sun::star::lang::IllegalArgumentException,
                com::sun::star::lang::NoSupportException );

    /** returns the maximum number of characters used as left or right text
        in entries.

        <p>All active dictionaries of the specified locale and type
        will be looked up to get the result.</p>
        <p>The parameter eDirection specifies if only the left text or the
        right text from entries should be considered.</p>

        @param aLocale
            Locale the conversion is referred to.
        @param nConversionDictionaryType
            specifies the type of conversion dictionaries to be looked up.
            It is one of
            com::sun::star::linguistic2::ConversionDictionaryType.
        @param eDirection
            specifies if the left text or the right text of entries will
            be used.

        @see com::sun::star::linguistic2::ConversionDirection
    */
    short queryMaxCharCount(
            [in] com::sun::star::lang::Locale aLocale,
            [in] short nConversionDictionaryType,
            [in] com::sun::star::linguistic2::ConversionDirection eDirection );

};


}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
