1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 20 #ifndef INCLUDED_UCBHELPER_COMMANDENVIRONMENT_HXX 21 #define INCLUDED_UCBHELPER_COMMANDENVIRONMENT_HXX 22 23 #include <com/sun/star/ucb/XCommandEnvironment.hpp> 24 #include <ucbhelper/ucbhelperdllapi.h> 25 #include <cppuhelper/implbase.hxx> 26 #include <memory> 27 28 namespace ucbhelper 29 { 30 struct CommandEnvironment_Impl; 31 32 // workaround for incremental linking bugs in MSVC2015 33 class SAL_DLLPUBLIC_TEMPLATE CommandEnvironment_Base : public cppu::WeakImplHelper< css::ucb::XCommandEnvironment > {}; 34 35 /** 36 * This class implements the interface 37 * css::ucb::XCommandEnvironment. Instances of this class can 38 * be used to supply environments to commands executed by UCB contents. 39 */ 40 class UCBHELPER_DLLPUBLIC CommandEnvironment final : public CommandEnvironment_Base 41 { 42 std::unique_ptr<CommandEnvironment_Impl> m_pImpl; 43 44 private: 45 CommandEnvironment( const CommandEnvironment& ) = delete; 46 CommandEnvironment& operator=( const CommandEnvironment& ) = delete; 47 48 public: 49 /** 50 * Constructor. 51 * 52 * @param rxInteractionHandler is the implementation of an Interaction 53 * Handler or an empty reference. 54 * @param rxProgressHandler is the implementation of a Progress 55 * Handler or an empty reference. 56 */ 57 CommandEnvironment( const css::uno::Reference< css::task::XInteractionHandler >& rxInteractionHandler, 58 const css::uno::Reference< css::ucb::XProgressHandler >& rxProgressHandler ); 59 /** 60 * Destructor. 61 */ 62 virtual ~CommandEnvironment() override; 63 64 // XCommandEnvironemnt 65 virtual css::uno::Reference< css::task::XInteractionHandler > SAL_CALL getInteractionHandler() override; 66 67 virtual css::uno::Reference< css::ucb::XProgressHandler > SAL_CALL getProgressHandler() override; 68 }; 69 70 } /* namespace ucbhelper */ 71 72 #endif /* ! INCLUDED_UCBHELPER_COMMANDENVIRONMENT_HXX */ 73 74 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 75