summaryrefslogtreecommitdiff
path: root/include/svtools
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2019-02-08 11:55:18 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-02-11 07:00:35 +0100
commit7df04009b98165f89c89f1e506ebafd2fecc8f5a (patch)
tree5629b360bd669d458dcfa0e3da7e7ce44c194363 /include/svtools
parenteb5e2dea18835df78872a8b0e3446e604f749645 (diff)
remove ControlDependencyManager
and just use our normal handlers, instead of this weird magic Change-Id: I8245787bec2a755ce6aba31ed681577771537ca1 Reviewed-on: https://gerrit.libreoffice.org/67534 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'include/svtools')
-rw-r--r--include/svtools/dialogcontrolling.hxx265
1 files changed, 0 insertions, 265 deletions
diff --git a/include/svtools/dialogcontrolling.hxx b/include/svtools/dialogcontrolling.hxx
deleted file mode 100644
index a3915a3d40b3..000000000000
--- a/include/svtools/dialogcontrolling.hxx
+++ /dev/null
@@ -1,265 +0,0 @@
-/* -*- 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 INCLUDED_SVTOOLS_DIALOGCONTROLLING_HXX
-#define INCLUDED_SVTOOLS_DIALOGCONTROLLING_HXX
-
-#include <svtools/svtdllapi.h>
-
-#include <tools/link.hxx>
-#include <vcl/button.hxx>
-#include <vcl/vclevent.hxx>
-
-#include <memory>
-
-namespace svt
-{
-
-
- //= IWindowOperator
-
- /** an abstract interface for operating on a ->Window
- */
- class SVT_DLLPUBLIC SAL_NO_VTABLE IWindowOperator
- {
- public:
- /** called when an event happened which should be reacted to
-
- @param _rTrigger
- the event which triggered the call. If the Id of the event is 0, then this is the initial
- call which is made when ->_rOperateOn is added to the responsibility of the DialogController.
- @param _rOperateOn
- the window on which to operate
- */
- virtual void operateOn( const VclWindowEvent& _rTrigger, vcl::Window& _rOperateOn ) const = 0;
-
- virtual ~IWindowOperator();
- };
- typedef std::shared_ptr< IWindowOperator > PWindowOperator;
-
-
- //= IWindowEventFilter
-
- /** an abstract interface for deciding whether a ->VclWindowEvent
- is worth paying attention to
- */
- class SVT_DLLPUBLIC SAL_NO_VTABLE IWindowEventFilter
- {
- public:
- virtual bool payAttentionTo( const VclWindowEvent& _rEvent ) const = 0;
-
- virtual ~IWindowEventFilter();
- };
- typedef std::shared_ptr< IWindowEventFilter > PWindowEventFilter;
-
-
- //= DialogController
-
- struct DialogController_Data;
- /** a class controlling interactions between dialog controls
-
- An instance of this class listens to all events fired by a certain
- ->Control (more precise, a ->Window), the so-called instigator.
-
- Additionally, the ->DialogController maintains a list of windows which
- are affected by changes in the instigator window. Let's call those the
- dependent windows.
-
- Now, by help of an owner-provided ->IWindowEventFilter, the ->DialogController
- decides which events are worth attention. By help of an owner-provided
- ->IWindowOperator, it handles those events for all dependent windows.
- */
- class SVT_DLLPUBLIC DialogController
- {
- private:
- ::std::unique_ptr< DialogController_Data > m_pImpl;
-
- public:
- DialogController( vcl::Window& _rInstigator, const PWindowEventFilter& _pEventFilter, const PWindowOperator& _pOperator );
- virtual ~DialogController();
-
- /** adds a window to the list of dependent windows
-
- @param _rWindow
- The window to add to the list of dependent windows.
-
- The caller is responsible for life-time control: The given window
- must live at least as long as the ->DialogController instance does.
- */
- void addDependentWindow( vcl::Window& _rWindow );
-
- /** resets the controller so that no actions happened anymore.
-
- The instances is disfunctional after this method has been called.
- */
- void reset();
-
- private:
- void impl_update( const VclWindowEvent& _rTriggerEvent, vcl::Window& _rWindow );
-
- DECL_LINK( OnWindowEvent, VclWindowEvent&, void );
-
- private:
- DialogController( const DialogController& ) = delete;
- DialogController& operator=( const DialogController& ) = delete;
- };
-
- //= ControlDependencyManager
-
- struct ControlDependencyManager_Data;
- /** helper class for managing control dependencies
-
- Instances of this class are intended to be held as members of a dialog/tabpage/whatever
- class, with easy administration of inter-control dependencies (such as "Enable
- control X if and only if checkbox Y is checked).
- */
- class SVT_DLLPUBLIC ControlDependencyManager
- {
- private:
- ::std::unique_ptr< ControlDependencyManager_Data > m_pImpl;
-
- public:
- ControlDependencyManager();
- ~ControlDependencyManager();
-
- /** ensures that a given window is enabled or disabled, according to the check state
- of a given radio button
- @param _rRadio
- denotes the radio button whose check state is to observe
- @param _rDependentWindow
- denotes the window which should be enabled when ->_rRadio is checked, and
- disabled when it's unchecked
- */
- void enableOnRadioCheck( RadioButton& _rRadio, vcl::Window& _rDependentWindow );
- void enableOnRadioCheck( RadioButton& _rRadio, vcl::Window& _rDependentWindow1, vcl::Window& _rDependentWindow2 );
- void enableOnRadioCheck( RadioButton& _rRadio, vcl::Window& _rDependentWindow1, vcl::Window& _rDependentWindow2, vcl::Window& _rDependentWindow3 );
- void enableOnRadioCheck( RadioButton& _rRadio, vcl::Window& _rDependentWindow1, vcl::Window& _rDependentWindow2, vcl::Window& _rDependentWindow3, vcl::Window& _rDependentWindow4, vcl::Window& _rDependentWindow5 );
-
- /** adds a non-standard controller whose functionality is not covered by the other methods
-
- @param _pController
- the controller to add to the manager. Must not be <NULL/>.
- */
- void addController( const std::shared_ptr<DialogController>& _pController );
-
- private:
- ControlDependencyManager( const ControlDependencyManager& ) = delete;
- ControlDependencyManager& operator=( const ControlDependencyManager& ) = delete;
- };
-
-
- //= EnableOnCheck
-
- /** a helper class implementing the ->IWindowOperator interface,
- which enables a dependent window depending on the check state of
- an instigator window.
-
- @see DialogController
- */
- template< class CHECKABLE >
- class SVT_DLLPUBLIC EnableOnCheck : public IWindowOperator
- {
- public:
- typedef CHECKABLE SourceType;
-
- private:
- SourceType& m_rCheckable;
-
- public:
- /** constructs the instance
-
- @param _rCheckable
- a ->Window instance which supports a boolean method IsChecked. Usually
- a ->RadioButton or ->CheckBox
- */
- EnableOnCheck( SourceType& _rCheckable )
- :m_rCheckable( _rCheckable )
- {
- }
-
- virtual void operateOn( const VclWindowEvent& /*_rTrigger*/, vcl::Window& _rOperateOn ) const override
- {
- _rOperateOn.Enable( m_rCheckable.IsChecked() );
- }
- };
-
-
- //= FilterForRadioOrCheckToggle
-
- /** a helper class implementing the ->IWindowEventFilter interface,
- which filters for radio buttons or check boxes being toggled.
-
- Technically, the class simply filters for the ->VclEventId::RadiobuttonToggle
- and the ->VclEventId::CheckboxToggle event.
- */
- class SVT_DLLPUBLIC FilterForRadioOrCheckToggle : public IWindowEventFilter
- {
- const vcl::Window& m_rWindow;
- public:
- FilterForRadioOrCheckToggle( const vcl::Window& _rWindow )
- :m_rWindow( _rWindow )
- {
- }
-
- bool payAttentionTo( const VclWindowEvent& _rEvent ) const override
- {
- if ( ( _rEvent.GetWindow() == &m_rWindow )
- && ( ( _rEvent.GetId() == VclEventId::RadiobuttonToggle )
- || ( _rEvent.GetId() == VclEventId::CheckboxToggle )
- )
- )
- return true;
- return false;
- }
- };
-
-
- //= RadioDependentEnabler
-
- /** a ->DialogController derivee which enables or disables its dependent windows,
- depending on the check state of a radio button.
-
- The usage of this class is as simple as
- <code>
- pController = new RadioDependentEnabler( m_aOptionSelectSomething );
- pController->addDependentWindow( m_aLabelSelection );
- pController->addDependentWindow( m_aListSelection );
- </code>
-
- With this, both <code>m_aLabelSelection</code> and <code>m_aListSelection</code> will
- be disabled if and only <code>m_aOptionSelectSomething</code> is checked.
- */
- class SVT_DLLPUBLIC RadioDependentEnabler : public DialogController
- {
- public:
- RadioDependentEnabler( RadioButton& _rButton )
- :DialogController( _rButton,
- PWindowEventFilter( new FilterForRadioOrCheckToggle( _rButton ) ),
- PWindowOperator( new EnableOnCheck< RadioButton >( _rButton ) ) )
- {
- }
- };
-
-
-} // namespace svt
-
-
-#endif // INCLUDED_SVTOOLS_DIALOGCONTROLLING_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */