/* -*- 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_gallery_XGalleryTheme_idl__
#define __com_sun_star_gallery_XGalleryTheme_idl__

#include <com/sun/star/container/XIndexAccess.idl>
#include <com/sun/star/lang/XComponent.idl>
#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
#include <com/sun/star/lang/WrappedTargetException.idl>
#include <com/sun/star/graphic/XGraphic.idl>
#include <com/sun/star/gallery/XGalleryItem.idl>


module com {  module sun {  module star {  module gallery {


/** provides access to the items of a Gallery themes. It also allows
    inserting and removing of single items.

    <p>This interface extends the interface
    com::sun::star::container::XIndexAccess which provides
    access to existing Gallery items collection.</p>

    @see com::sun::star::container::XIndexAccess
    @see com::sun::star::sheet::DataPilotTable
 */
interface XGalleryTheme : com::sun::star::container::XIndexAccess
{
    /** retrieves the name of the Gallery theme

        @returns
            The name of the Gallery theme
     */
    string getName();

    /** updates the theme

        <p>This method iterates over each item of the Gallery theme
        and updates it accordingly. Main purpose is to automatically
        regenerate the thumbnails and to remove invalid items, that is items
        who have got a URL that has become invalid. This method also
        optimizes underlying data structures.</p>
     */
    void update();

    /** inserts an item

        @param URL
            The URL of a graphic or media object, that should
            be added to the collection

        @param Index
            The zero based index of the position where to insert
            the new object inside the collection. If the index is larger than
            or equal to the number of already inserted items, the
            item is inserted at the end of the collection. If the index
            is smaller than 0, the item is inserted at the beginning of
            the collection.

        @returns
            The zero based position at which the object was inserted.
            If the object could not be inserted, -1 is returned.

        @see XGalleryItem
        @see com::sun::star::lang::WrappedTargetException
    */
    long insertURLByIndex( [in] string URL, [in] long Index )
        raises ( com::sun::star::lang::WrappedTargetException );
    /** inserts an item

        @param Graphic
            The com::sun::star::graphic::XGraphic object
            that should be added to the collection

        @param Index
            The zero based index of the position where to insert
            the new object inside the collection. If the index is larger than
            or equal to the number of already inserted items, the
            item is inserted at the end of the collection. If the index
            is smaller than 0, the item is inserted at the beginning of
            the collection.

        @returns
            The zero based position at which the object was inserted.
            If the object could not be inserted, -1 is returned.

        @see com::sun::star::graphic::XGraphic
        @see XGalleryItem
        @see com::sun::star::lang::WrappedTargetException
    */
    long insertGraphicByIndex( [in] com::sun::star::graphic::XGraphic Graphic, [in] long Index )
        raises ( com::sun::star::lang::WrappedTargetException );

    /** inserts an item

        @param Drawing
            A drawing model that should be added to the collection

        @param Index
            The zero based index of the position where to insert
            the new object inside the collection. If the index is larger than
            or equal to the number of already inserted items, the
            item is inserted at the end of the collection. If the index
            is smaller than 0, the item is inserted at the beginning of
            the collection.

        @returns
            The zero based position at which the object was inserted.
            If the object could not be inserted, -1 is returned.

        @see XGalleryItem
        @see com::sun::star::lang::WrappedTargetException
    */
    long insertDrawingByIndex( [in] com::sun::star::lang::XComponent Drawing, [in] long Index )
        raises ( com::sun::star::lang::WrappedTargetException );

    /** deletes an item from the collection

        @param Index
            The position of the item to be removed. The
            position is zero based.

        @see com::sun::star::container::NoSuchElementException
    */
    void removeByIndex( [in] long Index )
        raises ( com::sun::star::lang::IndexOutOfBoundsException );
};


}; }; }; };

#endif

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