LibreOffice Module sdext (master) 1
PresenterFrameworkObserver.cxx
Go to the documentation of this file.
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
21#include <com/sun/star/lang/IllegalArgumentException.hpp>
22#include <utility>
23
24using namespace ::com::sun::star;
25using namespace ::com::sun::star::uno;
27
28
29namespace sdext::presenter {
30
32 css::uno::Reference<css::drawing::framework::XConfigurationController> xController,
33 const Action& rAction)
35 mxConfigurationController(std::move(xController)),
36 maAction(rAction)
37{
38 if ( ! mxConfigurationController.is())
39 throw lang::IllegalArgumentException();
40
41 if (mxConfigurationController->hasPendingRequests())
42 {
43 mxConfigurationController->addConfigurationChangeListener(
44 this,
45 "ConfigurationUpdateEnd",
46 Any());
47 }
48 else
49 {
50 rAction(true);
51 }
52}
53
55{
56}
57
59 const css::uno::Reference<css::drawing::framework::XConfigurationController>&rxController,
60 const Action& rAction)
61{
63 rxController,
64 rAction);
65}
66
68{
69 if (maAction)
70 maAction(false);
71 Shutdown();
72}
73
75{
76 maAction = Action();
77 if (mxConfigurationController != nullptr)
78 {
79 mxConfigurationController->removeConfigurationChangeListener(this);
81 }
82}
83
84void SAL_CALL PresenterFrameworkObserver::disposing (const lang::EventObject& rEvent)
85{
86 if ( ! rEvent.Source.is())
87 return;
88
89 if (rEvent.Source == mxConfigurationController)
90 {
92 if (maAction)
93 maAction(false);
94 }
95}
96
98 const ConfigurationChangeEvent& /*rEvent*/)
99{
100 Action aAction(maAction);
101 Shutdown();
102 aAction(true);
103
104 maAction = nullptr;
105 dispose();
106}
107
108} // end of namespace ::sdext::presenter
109
110/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual void SAL_CALL notifyConfigurationChange(const css::drawing::framework::ConfigurationChangeEvent &rEvent) override
static void RunOnUpdateEnd(const css::uno::Reference< css::drawing::framework::XConfigurationController > &rxController, const Action &rAction)
css::uno::Reference< css::drawing::framework::XConfigurationController > mxConfigurationController
PresenterFrameworkObserver(const PresenterFrameworkObserver &)=delete
const Action maAction
std::mutex m_aMutex
::cppu::WeakComponentImplHelper< css::drawing::framework::XConfigurationChangeListener > PresenterFrameworkObserverInterfaceBase
void dispose()
Reference< XController > xController