/* -*- 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_drawing_framework_XConfigurationControllerRequestQueue_idl__
#define __com_sun_star_drawing_framework_XConfigurationControllerRequestQueue_idl__

#include <com/sun/star/uno/XInterface.idl>

module com { module sun { module star { module drawing { module framework {

interface XConfigurationChangeRequest;

/** The request queue of the configuration controller handles requests for
    changes to the current configuration.

    <p>This interface allows callers to add requests to the back of the
    queue and to determine whether the queue is empty.  Using this interface
    should normally not be necessary for anyone else than the
    XConfigurationController.  It may be removed in the future.</p>
*/
interface XConfigurationControllerRequestQueue
{
    /** Return whether there are pending requests for configuration changes.
        @return
            Returns `TRUE` when there is at least one request object in the
            queue that has not yet been processed.  It returns `FALSE` when
            the queue is empty.
    */
    boolean hasPendingRequests ();

    /** Add a request for a configuration change to the request queue.
        <p>This method should not be called from outside the drawing
        framework.  Other sub controllers of the drawing framework are typical
        callers.  They can add change requests that can not be made with the
        requestResourceActivation() and
        requestResourceDeactivation() methods.</p>
        @param xRequest
            The configuration change represented by this request object must only
            be committed to the configuration when the
            com::sun::star::drawing::framework::XConfigurationChangeRequest::execute()
            method of the xRequest object is called.
    */
    void postChangeRequest (
        [in] XConfigurationChangeRequest xRequest);
};

}; }; }; }; }; // ::com::sun::star::drawing::framework

#endif

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