1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: PresenterProtocolHandler.cxx,v $
13 * This file is part of OpenOffice.org.
15 * OpenOffice.org is free software: you can redistribute it and/or modify
16 * it under the terms of the GNU Lesser General Public License version 3
17 * only, as published by the Free Software Foundation.
19 * OpenOffice.org is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU Lesser General Public License version 3 for more details
23 * (a copy is included in the LICENSE file that accompanied this code).
25 * You should have received a copy of the GNU Lesser General Public License
26 * version 3 along with OpenOffice.org. If not, see
27 * <http://www.openoffice.org/license.html>
28 * for a copy of the LGPLv3 License.
30 ************************************************************************/
32 // MARKER(update_precomp.py): autogen include statement, do not remove
33 #include "precompiled_sdext.hxx"
35 #include "PresenterProtocolHandler.hxx"
36 #include "PresenterConfigurationAccess.hxx"
37 #include "PresenterController.hxx"
38 #include "PresenterHelper.hxx"
39 #include "PresenterNotesView.hxx"
40 #include "PresenterPaneContainer.hxx"
41 #include "PresenterPaneFactory.hxx"
42 #include "PresenterViewFactory.hxx"
43 #include "PresenterWindowManager.hxx"
44 #include <com/sun/star/frame/XController.hpp>
45 #include <com/sun/star/drawing/SlideSorter.hpp>
46 #include <com/sun/star/drawing/framework/Configuration.hpp>
47 #include <com/sun/star/drawing/framework/XControllerManager.hpp>
48 #include <com/sun/star/drawing/framework/ResourceId.hpp>
49 #include <com/sun/star/drawing/framework/ResourceActivationMode.hpp>
50 #include <com/sun/star/presentation/XSlideShow.hpp>
51 #include <com/sun/star/presentation/XSlideShowView.hpp>
52 #include <com/sun/star/presentation/XPresentationSupplier.hpp>
53 #include <cppuhelper/compbase2.hxx>
54 #include <boost/bind.hpp>
55 #include <tools/debug.hxx>
57 using namespace ::com::sun::star
;
58 using namespace ::com::sun::star::uno
;
59 using namespace ::com::sun::star::drawing::framework
;
60 using ::rtl::OUString
;
62 #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
64 namespace sdext
{ namespace presenter
{
67 const static OUString
gsProtocol (A2S("vnd.com.sun.star.comp.PresenterScreen:"));
72 virtual void Execute (void) = 0;
73 virtual bool IsEnabled (void) const = 0;
74 virtual Any
GetState (void) const = 0;
77 class GotoPreviousSlideCommand
: public Command
80 GotoPreviousSlideCommand (
81 const rtl::Reference
<PresenterController
>& rpPresenterController
);
82 virtual ~GotoPreviousSlideCommand (void) {}
83 virtual void Execute (void);
84 virtual bool IsEnabled (void) const;
85 virtual Any
GetState (void) const;
87 rtl::Reference
<PresenterController
> mpPresenterController
;
90 class GotoNextSlideCommand
: public Command
93 GotoNextSlideCommand (
94 const rtl::Reference
<PresenterController
>& rpPresenterController
);
95 virtual ~GotoNextSlideCommand (void) {}
96 virtual void Execute (void);
97 virtual bool IsEnabled (void) const;
98 virtual Any
GetState (void) const;
100 rtl::Reference
<PresenterController
> mpPresenterController
;
103 class GotoNextEffectCommand
: public Command
106 GotoNextEffectCommand (
107 const rtl::Reference
<PresenterController
>& rpPresenterController
);
108 virtual ~GotoNextEffectCommand (void) {}
109 virtual void Execute (void);
110 virtual bool IsEnabled (void) const;
111 virtual Any
GetState (void) const;
113 rtl::Reference
<PresenterController
> mpPresenterController
;
116 class SetNotesViewCommand
: public Command
119 SetNotesViewCommand (
121 const rtl::Reference
<PresenterController
>& rpPresenterController
);
122 virtual ~SetNotesViewCommand (void) {}
123 virtual void Execute (void);
124 virtual bool IsEnabled (void) const;
125 virtual Any
GetState (void) const;
128 rtl::Reference
<PresenterController
> mpPresenterController
;
129 bool IsActive (const ::rtl::Reference
<PresenterWindowManager
>& rpWindowManager
) const;
132 class SetSlideSorterCommand
: public Command
135 SetSlideSorterCommand (
137 const rtl::Reference
<PresenterController
>& rpPresenterController
);
138 virtual ~SetSlideSorterCommand (void) {}
139 virtual void Execute (void);
140 virtual bool IsEnabled (void) const;
141 virtual Any
GetState (void) const;
144 rtl::Reference
<PresenterController
> mpPresenterController
;
147 class SetHelpViewCommand
: public Command
152 const rtl::Reference
<PresenterController
>& rpPresenterController
);
153 virtual ~SetHelpViewCommand (void) {}
154 virtual void Execute (void);
155 virtual bool IsEnabled (void) const;
156 virtual Any
GetState (void) const;
159 rtl::Reference
<PresenterController
> mpPresenterController
;
162 class NotesFontSizeCommand
: public Command
165 NotesFontSizeCommand(
166 const rtl::Reference
<PresenterController
>& rpPresenterController
,
167 const sal_Int32 nSizeChange
);
168 virtual ~NotesFontSizeCommand (void) {}
169 virtual void Execute (void);
170 virtual bool IsEnabled (void) const;
171 virtual Any
GetState (void) const;
173 ::rtl::Reference
<PresenterNotesView
> GetNotesView (void) const;
175 rtl::Reference
<PresenterController
> mpPresenterController
;
176 const sal_Int32 mnSizeChange
;
179 } // end of anonymous namespace
183 typedef ::cppu::WeakComponentImplHelper2
<
184 css::frame::XDispatch
,
185 css::document::XEventListener
186 > PresenterDispatchInterfaceBase
;
189 class PresenterProtocolHandler::Dispatch
190 : protected ::cppu::BaseMutex
,
191 public PresenterDispatchInterfaceBase
194 typedef void (PresenterProtocolHandler::Dispatch::* Action
)(void);
196 /** Create a new Dispatch object. When the given command name
197 (rsURLPath) is not known then an empty reference is returned.
199 static Reference
<frame::XDispatch
> Create (
200 const OUString
& rsURLPath
,
201 const ::rtl::Reference
<PresenterController
>& rpPresenterController
);
203 void SAL_CALL
disposing (void);
204 static Command
* CreateCommand (
205 const OUString
& rsURLPath
,
206 const ::rtl::Reference
<PresenterController
>& rpPresenterController
);
210 virtual void SAL_CALL
dispatch(
211 const css::util::URL
& aURL
,
212 const css::uno::Sequence
<css::beans::PropertyValue
>& rArguments
)
213 throw(css::uno::RuntimeException
);
215 virtual void SAL_CALL
addStatusListener(
216 const css::uno::Reference
<css::frame::XStatusListener
>& rxListener
,
217 const css::util::URL
& rURL
)
218 throw(css::uno::RuntimeException
);
220 virtual void SAL_CALL
removeStatusListener (
221 const css::uno::Reference
<css::frame::XStatusListener
>& rxListener
,
222 const css::util::URL
& rURL
)
223 throw(css::uno::RuntimeException
);
226 // document::XEventListener
228 virtual void SAL_CALL
notifyEvent (const css::document::EventObject
& rEvent
)
229 throw(css::uno::RuntimeException
);
232 // lang::XEventListener
234 virtual void SAL_CALL
disposing (const css::lang::EventObject
& rEvent
)
235 throw(css::uno::RuntimeException
);
239 ::boost::scoped_ptr
<Command
> mpCommand
;
240 ::rtl::Reference
<PresenterController
> mpPresenterController
;
241 typedef ::std::vector
<Reference
<frame::XStatusListener
> > StatusListenerContainer
;
242 StatusListenerContainer maStatusListenerContainer
;
243 bool mbIsListeningToWindowManager
;
246 const OUString
& rsURLPath
,
247 const ::rtl::Reference
<PresenterController
>& rpPresenterController
);
248 virtual ~Dispatch (void);
250 void ThrowIfDisposed (void) const throw (css::lang::DisposedException
);
256 //----- Service ---------------------------------------------------------------
258 OUString
PresenterProtocolHandler::getImplementationName_static (void)
260 return A2S("vnd.sun.star.sdext.presenter.PresenterProtocolHandler");
266 Sequence
<OUString
> PresenterProtocolHandler::getSupportedServiceNames_static (void)
268 static const ::rtl::OUString
sServiceName(A2S("com.sun.star.frame.ProtocolHandler"));
269 return Sequence
<rtl::OUString
>(&sServiceName
, 1);
275 Reference
<XInterface
> PresenterProtocolHandler::Create (
276 const Reference
<uno::XComponentContext
>& rxContext
)
277 SAL_THROW((Exception
))
279 return Reference
<XInterface
>(static_cast<XWeak
*>(new PresenterProtocolHandler(rxContext
)));
285 //===== PresenterProtocolHandler =========================================================
288 PresenterProtocolHandler::PresenterProtocolHandler (const Reference
<XComponentContext
>& rxContext
)
289 : PresenterProtocolHandlerInterfaceBase(m_aMutex
)
297 PresenterProtocolHandler::~PresenterProtocolHandler (void)
304 void SAL_CALL
PresenterProtocolHandler::disposing (void)
311 //----- XInitialize -----------------------------------------------------------
313 void SAL_CALL
PresenterProtocolHandler::initialize (const Sequence
<Any
>& aArguments
)
314 throw (Exception
, RuntimeException
)
317 if (aArguments
.getLength() > 0)
321 Reference
<frame::XFrame
> xFrame
;
322 if (aArguments
[0] >>= xFrame
)
324 mpPresenterController
= PresenterController::Instance(xFrame
);
327 catch (RuntimeException
&)
337 //----- XDispatchProvider -----------------------------------------------------
339 Reference
<frame::XDispatch
> SAL_CALL
PresenterProtocolHandler::queryDispatch (
340 const css::util::URL
& rURL
,
341 const rtl::OUString
& rsTargetFrameName
,
342 sal_Int32 nSearchFlags
)
343 throw(RuntimeException
)
345 (void)rsTargetFrameName
;
349 Reference
<frame::XDispatch
> xDispatch
;
351 if (rURL
.Protocol
== gsProtocol
)
353 xDispatch
.set(Dispatch::Create(rURL
.Path
, mpPresenterController
));
362 Sequence
<Reference
<frame::XDispatch
> > SAL_CALL
PresenterProtocolHandler::queryDispatches(
363 const Sequence
<frame::DispatchDescriptor
>& rDescriptors
)
364 throw(RuntimeException
)
368 return Sequence
<Reference
<frame::XDispatch
> >();
374 //-----------------------------------------------------------------------------
376 void PresenterProtocolHandler::ThrowIfDisposed (void) const
377 throw (::com::sun::star::lang::DisposedException
)
379 if (rBHelper
.bDisposed
|| rBHelper
.bInDispose
)
381 throw lang::DisposedException (
382 OUString(RTL_CONSTASCII_USTRINGPARAM(
383 "PresenterProtocolHandler object has already been disposed")),
384 const_cast<uno::XWeak
*>(static_cast<const uno::XWeak
*>(this)));
391 //===== PresenterProtocolHandler::Dispatch ====================================
393 Reference
<frame::XDispatch
> PresenterProtocolHandler::Dispatch::Create (
394 const OUString
& rsURLPath
,
395 const ::rtl::Reference
<PresenterController
>& rpPresenterController
)
397 ::rtl::Reference
<Dispatch
> pDispatch (new Dispatch (rsURLPath
, rpPresenterController
));
398 if (pDispatch
->mpCommand
.get() != NULL
)
399 return Reference
<frame::XDispatch
>(pDispatch
.get());
407 PresenterProtocolHandler::Dispatch::Dispatch (
408 const OUString
& rsURLPath
,
409 const ::rtl::Reference
<PresenterController
>& rpPresenterController
)
410 : PresenterDispatchInterfaceBase(m_aMutex
),
411 msURLPath(rsURLPath
),
412 mpCommand(CreateCommand(rsURLPath
, rpPresenterController
)),
413 mpPresenterController(rpPresenterController
),
414 maStatusListenerContainer(),
415 mbIsListeningToWindowManager(false)
417 if (mpCommand
.get() != NULL
)
419 mpPresenterController
->GetWindowManager()->AddLayoutListener(this);
420 mbIsListeningToWindowManager
= true;
427 Command
* PresenterProtocolHandler::Dispatch::CreateCommand (
428 const OUString
& rsURLPath
,
429 const ::rtl::Reference
<PresenterController
>& rpPresenterController
)
431 if (rsURLPath
.getLength() <= 5)
433 switch (rsURLPath
[0])
436 switch (rsURLPath
[5])
439 if (rsURLPath
== A2S("CloseNotes"))
440 return new SetNotesViewCommand(false, rpPresenterController
);
443 if (rsURLPath
== A2S("CloseSlideSorter"))
444 return new SetSlideSorterCommand(false, rpPresenterController
);
447 if (rsURLPath
== A2S("CloseHelp"))
448 return new SetHelpViewCommand(false, rpPresenterController
);
453 if (rsURLPath
== A2S("GrowNotesFont"))
454 return new NotesFontSizeCommand(rpPresenterController
, +1);
458 switch (rsURLPath
[4])
461 if (rsURLPath
== A2S("NextEffect"))
462 return new GotoNextEffectCommand(rpPresenterController
);
464 if (rsURLPath
== A2S("NextSlide"))
465 return new GotoNextSlideCommand(rpPresenterController
);
471 if (rsURLPath
== A2S("PrevSlide"))
472 return new GotoPreviousSlideCommand(rpPresenterController
);
476 switch (rsURLPath
[4])
479 if (rsURLPath
== A2S("ShowNotes"))
480 return new SetNotesViewCommand(true, rpPresenterController
);
484 if (rsURLPath
== A2S("ShowSlideSorter"))
485 return new SetSlideSorterCommand(true, rpPresenterController
);
489 if (rsURLPath
== A2S("ShowHelp"))
490 return new SetHelpViewCommand(true, rpPresenterController
);
494 if (rsURLPath
== A2S("ShrinkNotesFont"))
495 return new NotesFontSizeCommand(rpPresenterController
, -1);
510 PresenterProtocolHandler::Dispatch::~Dispatch (void)
517 void PresenterProtocolHandler::Dispatch::disposing (void)
519 if (mbIsListeningToWindowManager
)
521 if (mpPresenterController
.get() != NULL
)
522 mpPresenterController
->GetWindowManager()->RemoveLayoutListener(this);
523 mbIsListeningToWindowManager
= false;
526 msURLPath
= OUString();
533 //----- XDispatch -------------------------------------------------------------
535 void SAL_CALL
PresenterProtocolHandler::Dispatch::dispatch(
536 const css::util::URL
& rURL
,
537 const css::uno::Sequence
<css::beans::PropertyValue
>& rArguments
)
538 throw(css::uno::RuntimeException
)
543 if (rURL
.Protocol
== gsProtocol
544 && rURL
.Path
== msURLPath
)
546 if (mpCommand
.get() != NULL
)
547 mpCommand
->Execute();
551 // We can not throw an IllegalArgumentException
552 throw RuntimeException();
559 void SAL_CALL
PresenterProtocolHandler::Dispatch::addStatusListener(
560 const css::uno::Reference
<css::frame::XStatusListener
>& rxListener
,
561 const css::util::URL
& rURL
)
562 throw(css::uno::RuntimeException
)
564 if (rURL
.Path
== msURLPath
)
566 maStatusListenerContainer
.push_back(rxListener
);
568 frame::FeatureStateEvent aEvent
;
569 aEvent
.FeatureURL
= rURL
;
570 aEvent
.IsEnabled
= mpCommand
->IsEnabled();
571 aEvent
.Requery
= sal_False
;
572 aEvent
.State
= mpCommand
->GetState();
573 rxListener
->statusChanged(aEvent
);
576 throw RuntimeException();
582 void SAL_CALL
PresenterProtocolHandler::Dispatch::removeStatusListener (
583 const css::uno::Reference
<css::frame::XStatusListener
>& rxListener
,
584 const css::util::URL
& rURL
)
585 throw(css::uno::RuntimeException
)
587 if (rURL
.Path
== msURLPath
)
589 StatusListenerContainer::iterator
iListener (
591 maStatusListenerContainer
.begin(),
592 maStatusListenerContainer
.end(),
594 if (iListener
!= maStatusListenerContainer
.end())
595 maStatusListenerContainer
.erase(iListener
);
598 throw RuntimeException();
604 //-----------------------------------------------------------------------------
606 void PresenterProtocolHandler::Dispatch::ThrowIfDisposed (void) const
607 throw (::com::sun::star::lang::DisposedException
)
609 if (rBHelper
.bDisposed
|| rBHelper
.bInDispose
)
611 throw lang::DisposedException (
612 OUString(RTL_CONSTASCII_USTRINGPARAM(
613 "PresenterProtocolHandler::Dispatch object has already been disposed")),
614 const_cast<uno::XWeak
*>(static_cast<const uno::XWeak
*>(this)));
621 //----- document::XEventListener ----------------------------------------------
623 void SAL_CALL
PresenterProtocolHandler::Dispatch::notifyEvent (
624 const css::document::EventObject
& rEvent
)
625 throw(css::uno::RuntimeException
)
629 mpCommand
->GetState();
635 //----- lang::XEventListener --------------------------------------------------
637 void SAL_CALL
PresenterProtocolHandler::Dispatch::disposing (const css::lang::EventObject
& rEvent
)
638 throw(css::uno::RuntimeException
)
641 mbIsListeningToWindowManager
= false;
648 //===== GotoPreviousSlideCommand ==============================================
650 GotoPreviousSlideCommand::GotoPreviousSlideCommand (
651 const rtl::Reference
<PresenterController
>& rpPresenterController
)
652 : mpPresenterController(rpPresenterController
)
658 void GotoPreviousSlideCommand::Execute (void)
660 if ( ! mpPresenterController
.is())
663 if ( ! mpPresenterController
->GetSlideShowController().is())
666 mpPresenterController
->GetSlideShowController()->gotoPreviousSlide();
672 bool GotoPreviousSlideCommand::IsEnabled (void) const
674 if ( ! mpPresenterController
.is())
677 if ( ! mpPresenterController
->GetSlideShowController().is())
680 return mpPresenterController
->GetSlideShowController()->getCurrentSlideIndex()>0;
686 Any
GotoPreviousSlideCommand::GetState (void) const
688 return Any(sal_False
);
694 //===== GotoNextEffect ========================================================
696 GotoNextEffectCommand::GotoNextEffectCommand (
697 const rtl::Reference
<PresenterController
>& rpPresenterController
)
698 : mpPresenterController(rpPresenterController
)
704 void GotoNextEffectCommand::Execute (void)
706 if ( ! mpPresenterController
.is())
709 if ( ! mpPresenterController
->GetSlideShowController().is())
712 mpPresenterController
->GetSlideShowController()->gotoNextEffect();
718 bool GotoNextEffectCommand::IsEnabled (void) const
720 // The next slide command is always enabled, even when the current slide
721 // is the last slide: from the last slide it goes to the pause slide,
722 // and from there it ends the slide show.
729 Any
GotoNextEffectCommand::GetState (void) const
731 return Any(sal_False
);
737 //===== GotoNextSlide =========================================================
739 GotoNextSlideCommand::GotoNextSlideCommand (
740 const rtl::Reference
<PresenterController
>& rpPresenterController
)
741 : mpPresenterController(rpPresenterController
)
747 void GotoNextSlideCommand::Execute (void)
749 if ( ! mpPresenterController
.is())
752 if ( ! mpPresenterController
->GetSlideShowController().is())
755 mpPresenterController
->GetSlideShowController()->gotoNextSlide();
761 bool GotoNextSlideCommand::IsEnabled (void) const
763 // The next slide command is always enabled, even when the current slide
764 // is the last slide: from the last slide it goes to the pause slide,
765 // and from there it ends the slide show.
772 Any
GotoNextSlideCommand::GetState (void) const
774 return Any(sal_False
);
780 //===== SetNotesViewCommand ===================================================
782 SetNotesViewCommand::SetNotesViewCommand (
784 const rtl::Reference
<PresenterController
>& rpPresenterController
)
786 mpPresenterController(rpPresenterController
)
793 void SetNotesViewCommand::Execute (void)
795 if ( ! mpPresenterController
.is())
798 ::rtl::Reference
<PresenterWindowManager
> pWindowManager (
799 mpPresenterController
->GetWindowManager());
800 if ( ! pWindowManager
.is())
804 pWindowManager
->SetViewMode(PresenterWindowManager::VM_Notes
);
806 pWindowManager
->SetViewMode(PresenterWindowManager::VM_Standard
);
812 bool SetNotesViewCommand::IsEnabled (void) const
820 Any
SetNotesViewCommand::GetState (void) const
822 if ( ! mpPresenterController
.is())
825 ::rtl::Reference
<PresenterWindowManager
> pWindowManager (
826 mpPresenterController
->GetWindowManager());
827 if ( ! pWindowManager
.is())
830 return Any(IsActive(pWindowManager
));
836 bool SetNotesViewCommand::IsActive (
837 const ::rtl::Reference
<PresenterWindowManager
>& rpWindowManager
) const
839 return rpWindowManager
->GetViewMode() == PresenterWindowManager::VM_Notes
;
845 //===== SetSlideSorterCommand =================================================
847 SetSlideSorterCommand::SetSlideSorterCommand (
849 const rtl::Reference
<PresenterController
>& rpPresenterController
)
851 mpPresenterController(rpPresenterController
)
858 void SetSlideSorterCommand::Execute (void)
860 if ( ! mpPresenterController
.is())
863 ::rtl::Reference
<PresenterWindowManager
> pWindowManager (
864 mpPresenterController
->GetWindowManager());
865 if ( ! pWindowManager
.is())
868 pWindowManager
->SetSlideSorterState(mbOn
);
874 bool SetSlideSorterCommand::IsEnabled (void) const
882 Any
SetSlideSorterCommand::GetState (void) const
884 if ( ! mpPresenterController
.is())
887 ::rtl::Reference
<PresenterWindowManager
> pWindowManager (
888 mpPresenterController
->GetWindowManager());
889 if ( ! pWindowManager
.is())
892 return Any(pWindowManager
->GetViewMode()==PresenterWindowManager::VM_SlideOverview
);
898 //===== SetHelpViewCommand ===================================================
900 SetHelpViewCommand::SetHelpViewCommand (
902 const rtl::Reference
<PresenterController
>& rpPresenterController
)
904 mpPresenterController(rpPresenterController
)
911 void SetHelpViewCommand::Execute (void)
913 if ( ! mpPresenterController
.is())
916 ::rtl::Reference
<PresenterWindowManager
> pWindowManager (
917 mpPresenterController
->GetWindowManager());
918 if ( ! pWindowManager
.is())
921 pWindowManager
->SetHelpViewState(mbOn
);
927 bool SetHelpViewCommand::IsEnabled (void) const
935 Any
SetHelpViewCommand::GetState (void) const
937 if ( ! mpPresenterController
.is())
940 ::rtl::Reference
<PresenterWindowManager
> pWindowManager (
941 mpPresenterController
->GetWindowManager());
942 if ( ! pWindowManager
.is())
945 return Any(pWindowManager
->GetViewMode()==PresenterWindowManager::VM_Help
);
951 //===== NotesFontSizeCommand ==================================================
953 NotesFontSizeCommand::NotesFontSizeCommand(
954 const rtl::Reference
<PresenterController
>& rpPresenterController
,
955 const sal_Int32 nSizeChange
)
956 : mpPresenterController(rpPresenterController
),
957 mnSizeChange(nSizeChange
)
964 ::rtl::Reference
<PresenterNotesView
> NotesFontSizeCommand::GetNotesView (void) const
966 if (mpPresenterController
.get() == NULL
)
969 PresenterPaneContainer::SharedPaneDescriptor
pDescriptor (
970 mpPresenterController
->GetPaneContainer()->FindViewURL(
971 PresenterViewFactory::msNotesViewURL
));
972 if (pDescriptor
.get() == NULL
)
975 return dynamic_cast<PresenterNotesView
*>(pDescriptor
->mxView
.get());
981 void NotesFontSizeCommand::Execute (void)
983 ::rtl::Reference
<PresenterNotesView
> pView (GetNotesView());
985 pView
->ChangeFontSize(mnSizeChange
);
991 bool NotesFontSizeCommand::IsEnabled (void) const
999 Any
NotesFontSizeCommand::GetState (void) const
1005 } } // end of namespace ::sdext::presenter