diff options
Diffstat (limited to 'sdext/source/presenter/PresenterProtocolHandler.cxx')
-rw-r--r-- | sdext/source/presenter/PresenterProtocolHandler.cxx | 1004 |
1 files changed, 1004 insertions, 0 deletions
diff --git a/sdext/source/presenter/PresenterProtocolHandler.cxx b/sdext/source/presenter/PresenterProtocolHandler.cxx new file mode 100644 index 000000000000..7c4829ac81fd --- /dev/null +++ b/sdext/source/presenter/PresenterProtocolHandler.cxx @@ -0,0 +1,1004 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sdext.hxx" + +#include "PresenterProtocolHandler.hxx" +#include "PresenterConfigurationAccess.hxx" +#include "PresenterController.hxx" +#include "PresenterHelper.hxx" +#include "PresenterNotesView.hxx" +#include "PresenterPaneContainer.hxx" +#include "PresenterPaneFactory.hxx" +#include "PresenterViewFactory.hxx" +#include "PresenterWindowManager.hxx" +#include <com/sun/star/frame/XController.hpp> +#include <com/sun/star/drawing/SlideSorter.hpp> +#include <com/sun/star/drawing/framework/Configuration.hpp> +#include <com/sun/star/drawing/framework/XControllerManager.hpp> +#include <com/sun/star/drawing/framework/ResourceId.hpp> +#include <com/sun/star/drawing/framework/ResourceActivationMode.hpp> +#include <com/sun/star/presentation/XSlideShow.hpp> +#include <com/sun/star/presentation/XSlideShowView.hpp> +#include <com/sun/star/presentation/XPresentationSupplier.hpp> +#include <cppuhelper/compbase2.hxx> +#include <boost/bind.hpp> +#include <tools/debug.hxx> + +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::drawing::framework; +using ::rtl::OUString; + +#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString))) + +namespace sdext { namespace presenter { + +namespace { + const static OUString gsProtocol (A2S("vnd.com.sun.star.comp.PresenterScreen:")); + + class Command + { + public: + virtual void Execute (void) = 0; + virtual bool IsEnabled (void) const = 0; + virtual Any GetState (void) const = 0; + }; + + class GotoPreviousSlideCommand : public Command + { + public: + GotoPreviousSlideCommand ( + const rtl::Reference<PresenterController>& rpPresenterController); + virtual ~GotoPreviousSlideCommand (void) {} + virtual void Execute (void); + virtual bool IsEnabled (void) const; + virtual Any GetState (void) const; + private: + rtl::Reference<PresenterController> mpPresenterController; + }; + + class GotoNextSlideCommand : public Command + { + public: + GotoNextSlideCommand ( + const rtl::Reference<PresenterController>& rpPresenterController); + virtual ~GotoNextSlideCommand (void) {} + virtual void Execute (void); + virtual bool IsEnabled (void) const; + virtual Any GetState (void) const; + private: + rtl::Reference<PresenterController> mpPresenterController; + }; + + class GotoNextEffectCommand : public Command + { + public: + GotoNextEffectCommand ( + const rtl::Reference<PresenterController>& rpPresenterController); + virtual ~GotoNextEffectCommand (void) {} + virtual void Execute (void); + virtual bool IsEnabled (void) const; + virtual Any GetState (void) const; + private: + rtl::Reference<PresenterController> mpPresenterController; + }; + + class SetNotesViewCommand : public Command + { + public: + SetNotesViewCommand ( + const bool bOn, + const rtl::Reference<PresenterController>& rpPresenterController); + virtual ~SetNotesViewCommand (void) {} + virtual void Execute (void); + virtual bool IsEnabled (void) const; + virtual Any GetState (void) const; + private: + bool mbOn; + rtl::Reference<PresenterController> mpPresenterController; + bool IsActive (const ::rtl::Reference<PresenterWindowManager>& rpWindowManager) const; + }; + + class SetSlideSorterCommand : public Command + { + public: + SetSlideSorterCommand ( + const bool bOn, + const rtl::Reference<PresenterController>& rpPresenterController); + virtual ~SetSlideSorterCommand (void) {} + virtual void Execute (void); + virtual bool IsEnabled (void) const; + virtual Any GetState (void) const; + private: + bool mbOn; + rtl::Reference<PresenterController> mpPresenterController; + }; + + class SetHelpViewCommand : public Command + { + public: + SetHelpViewCommand ( + const bool bOn, + const rtl::Reference<PresenterController>& rpPresenterController); + virtual ~SetHelpViewCommand (void) {} + virtual void Execute (void); + virtual bool IsEnabled (void) const; + virtual Any GetState (void) const; + private: + bool mbOn; + rtl::Reference<PresenterController> mpPresenterController; + }; + + class NotesFontSizeCommand : public Command + { + public: + NotesFontSizeCommand( + const rtl::Reference<PresenterController>& rpPresenterController, + const sal_Int32 nSizeChange); + virtual ~NotesFontSizeCommand (void) {} + virtual void Execute (void); + virtual bool IsEnabled (void) const; + virtual Any GetState (void) const; + protected: + ::rtl::Reference<PresenterNotesView> GetNotesView (void) const; + private: + rtl::Reference<PresenterController> mpPresenterController; + const sal_Int32 mnSizeChange; + }; + +} // end of anonymous namespace + + +namespace { + typedef ::cppu::WeakComponentImplHelper2 < + css::frame::XDispatch, + css::document::XEventListener + > PresenterDispatchInterfaceBase; +} + +class PresenterProtocolHandler::Dispatch + : protected ::cppu::BaseMutex, + public PresenterDispatchInterfaceBase +{ +public: + typedef void (PresenterProtocolHandler::Dispatch::* Action)(void); + + /** Create a new Dispatch object. When the given command name + (rsURLPath) is not known then an empty reference is returned. + */ + static Reference<frame::XDispatch> Create ( + const OUString& rsURLPath, + const ::rtl::Reference<PresenterController>& rpPresenterController); + + void SAL_CALL disposing (void); + static Command* CreateCommand ( + const OUString& rsURLPath, + const ::rtl::Reference<PresenterController>& rpPresenterController); + + + // XDispatch + virtual void SAL_CALL dispatch( + const css::util::URL& aURL, + const css::uno::Sequence<css::beans::PropertyValue>& rArguments) + throw(css::uno::RuntimeException); + + virtual void SAL_CALL addStatusListener( + const css::uno::Reference<css::frame::XStatusListener>& rxListener, + const css::util::URL& rURL) + throw(css::uno::RuntimeException); + + virtual void SAL_CALL removeStatusListener ( + const css::uno::Reference<css::frame::XStatusListener>& rxListener, + const css::util::URL& rURL) + throw(css::uno::RuntimeException); + + + // document::XEventListener + + virtual void SAL_CALL notifyEvent (const css::document::EventObject& rEvent) + throw(css::uno::RuntimeException); + + + // lang::XEventListener + + virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent) + throw(css::uno::RuntimeException); + +private: + OUString msURLPath; + ::boost::scoped_ptr<Command> mpCommand; + ::rtl::Reference<PresenterController> mpPresenterController; + typedef ::std::vector<Reference<frame::XStatusListener> > StatusListenerContainer; + StatusListenerContainer maStatusListenerContainer; + bool mbIsListeningToWindowManager; + + Dispatch ( + const OUString& rsURLPath, + const ::rtl::Reference<PresenterController>& rpPresenterController); + virtual ~Dispatch (void); + + void ThrowIfDisposed (void) const throw (css::lang::DisposedException); +}; + + + + +//----- Service --------------------------------------------------------------- + +OUString PresenterProtocolHandler::getImplementationName_static (void) +{ + return A2S("vnd.sun.star.sdext.presenter.PresenterProtocolHandler"); +} + + + + +Sequence<OUString> PresenterProtocolHandler::getSupportedServiceNames_static (void) +{ + static const ::rtl::OUString sServiceName(A2S("com.sun.star.frame.ProtocolHandler")); + return Sequence<rtl::OUString>(&sServiceName, 1); +} + + + + +Reference<XInterface> PresenterProtocolHandler::Create ( + const Reference<uno::XComponentContext>& rxContext) + SAL_THROW((Exception)) +{ + return Reference<XInterface>(static_cast<XWeak*>(new PresenterProtocolHandler(rxContext))); +} + + + + +//===== PresenterProtocolHandler ========================================================= + + +PresenterProtocolHandler::PresenterProtocolHandler (const Reference<XComponentContext>& rxContext) + : PresenterProtocolHandlerInterfaceBase(m_aMutex) +{ + (void)rxContext; +} + + + + +PresenterProtocolHandler::~PresenterProtocolHandler (void) +{ +} + + + + +void SAL_CALL PresenterProtocolHandler::disposing (void) +{ +} + + + + +//----- XInitialize ----------------------------------------------------------- + +void SAL_CALL PresenterProtocolHandler::initialize (const Sequence<Any>& aArguments) + throw (Exception, RuntimeException) +{ + ThrowIfDisposed(); + if (aArguments.getLength() > 0) + { + try + { + Reference<frame::XFrame> xFrame; + if (aArguments[0] >>= xFrame) + { + mpPresenterController = PresenterController::Instance(xFrame); + } + } + catch (RuntimeException&) + { + OSL_ASSERT(false); + } + } +} + + + + +//----- XDispatchProvider ----------------------------------------------------- + +Reference<frame::XDispatch> SAL_CALL PresenterProtocolHandler::queryDispatch ( + const css::util::URL& rURL, + const rtl::OUString& rsTargetFrameName, + sal_Int32 nSearchFlags) + throw(RuntimeException) +{ + (void)rsTargetFrameName; + (void)nSearchFlags; + ThrowIfDisposed(); + + Reference<frame::XDispatch> xDispatch; + + if (rURL.Protocol == gsProtocol) + { + xDispatch.set(Dispatch::Create(rURL.Path, mpPresenterController)); + } + + return xDispatch; +} + + + + +Sequence<Reference<frame::XDispatch> > SAL_CALL PresenterProtocolHandler::queryDispatches( + const Sequence<frame::DispatchDescriptor>& rDescriptors) + throw(RuntimeException) +{ + (void)rDescriptors; + ThrowIfDisposed(); + return Sequence<Reference<frame::XDispatch> >(); +} + + + + +//----------------------------------------------------------------------------- + +void PresenterProtocolHandler::ThrowIfDisposed (void) const + throw (::com::sun::star::lang::DisposedException) +{ + if (rBHelper.bDisposed || rBHelper.bInDispose) + { + throw lang::DisposedException ( + OUString(RTL_CONSTASCII_USTRINGPARAM( + "PresenterProtocolHandler object has already been disposed")), + const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this))); + } +} + + + + +//===== PresenterProtocolHandler::Dispatch ==================================== + +Reference<frame::XDispatch> PresenterProtocolHandler::Dispatch::Create ( + const OUString& rsURLPath, + const ::rtl::Reference<PresenterController>& rpPresenterController) +{ + ::rtl::Reference<Dispatch> pDispatch (new Dispatch (rsURLPath, rpPresenterController)); + if (pDispatch->mpCommand.get() != NULL) + return Reference<frame::XDispatch>(pDispatch.get()); + else + return NULL; +} + + + + +PresenterProtocolHandler::Dispatch::Dispatch ( + const OUString& rsURLPath, + const ::rtl::Reference<PresenterController>& rpPresenterController) + : PresenterDispatchInterfaceBase(m_aMutex), + msURLPath(rsURLPath), + mpCommand(CreateCommand(rsURLPath, rpPresenterController)), + mpPresenterController(rpPresenterController), + maStatusListenerContainer(), + mbIsListeningToWindowManager(false) +{ + if (mpCommand.get() != NULL) + { + mpPresenterController->GetWindowManager()->AddLayoutListener(this); + mbIsListeningToWindowManager = true; + } +} + + + + +Command* PresenterProtocolHandler::Dispatch::CreateCommand ( + const OUString& rsURLPath, + const ::rtl::Reference<PresenterController>& rpPresenterController) +{ + if (rsURLPath.getLength() <= 5) + return NULL; + switch (rsURLPath[0]) + { + case sal_Char('C') : + switch (rsURLPath[5]) + { + case sal_Char('N'): + if (rsURLPath == A2S("CloseNotes")) + return new SetNotesViewCommand(false, rpPresenterController); + break; + case sal_Char('S'): + if (rsURLPath == A2S("CloseSlideSorter")) + return new SetSlideSorterCommand(false, rpPresenterController); + break; + case sal_Char('H'): + if (rsURLPath == A2S("CloseHelp")) + return new SetHelpViewCommand(false, rpPresenterController); + break; + } + break; + case sal_Char('G') : + if (rsURLPath == A2S("GrowNotesFont")) + return new NotesFontSizeCommand(rpPresenterController, +1); + break; + + case sal_Char('N') : + switch (rsURLPath[4]) + { + case sal_Char('E'): + if (rsURLPath == A2S("NextEffect")) + return new GotoNextEffectCommand(rpPresenterController); + case sal_Char('S'): + if (rsURLPath == A2S("NextSlide")) + return new GotoNextSlideCommand(rpPresenterController); + break; + } + break; + + case sal_Char('P') : + if (rsURLPath == A2S("PrevSlide")) + return new GotoPreviousSlideCommand(rpPresenterController); + break; + + case sal_Char('S') : + switch (rsURLPath[4]) + { + case sal_Char('N'): + if (rsURLPath == A2S("ShowNotes")) + return new SetNotesViewCommand(true, rpPresenterController); + break; + + case sal_Char('S'): + if (rsURLPath == A2S("ShowSlideSorter")) + return new SetSlideSorterCommand(true, rpPresenterController); + break; + + case sal_Char('H'): + if (rsURLPath == A2S("ShowHelp")) + return new SetHelpViewCommand(true, rpPresenterController); + break; + + case sal_Char('n'): + if (rsURLPath == A2S("ShrinkNotesFont")) + return new NotesFontSizeCommand(rpPresenterController, -1); + break; + } + break; + + default: + break; + } + + return NULL; +} + + + + +PresenterProtocolHandler::Dispatch::~Dispatch (void) +{ +} + + + + +void PresenterProtocolHandler::Dispatch::disposing (void) +{ + if (mbIsListeningToWindowManager) + { + if (mpPresenterController.get() != NULL) + mpPresenterController->GetWindowManager()->RemoveLayoutListener(this); + mbIsListeningToWindowManager = false; + } + + msURLPath = OUString(); + mpCommand.reset(); +} + + + + +//----- XDispatch ------------------------------------------------------------- + +void SAL_CALL PresenterProtocolHandler::Dispatch::dispatch( + const css::util::URL& rURL, + const css::uno::Sequence<css::beans::PropertyValue>& rArguments) + throw(css::uno::RuntimeException) +{ + (void)rArguments; + ThrowIfDisposed(); + + if (rURL.Protocol == gsProtocol + && rURL.Path == msURLPath) + { + if (mpCommand.get() != NULL) + mpCommand->Execute(); + } + else + { + // We can not throw an IllegalArgumentException + throw RuntimeException(); + } +} + + + + +void SAL_CALL PresenterProtocolHandler::Dispatch::addStatusListener( + const css::uno::Reference<css::frame::XStatusListener>& rxListener, + const css::util::URL& rURL) + throw(css::uno::RuntimeException) +{ + if (rURL.Path == msURLPath) + { + maStatusListenerContainer.push_back(rxListener); + + frame::FeatureStateEvent aEvent; + aEvent.FeatureURL = rURL; + aEvent.IsEnabled = mpCommand->IsEnabled(); + aEvent.Requery = sal_False; + aEvent.State = mpCommand->GetState(); + rxListener->statusChanged(aEvent); + } + else + throw RuntimeException(); +} + + + + +void SAL_CALL PresenterProtocolHandler::Dispatch::removeStatusListener ( + const css::uno::Reference<css::frame::XStatusListener>& rxListener, + const css::util::URL& rURL) + throw(css::uno::RuntimeException) +{ + if (rURL.Path == msURLPath) + { + StatusListenerContainer::iterator iListener ( + ::std::find( + maStatusListenerContainer.begin(), + maStatusListenerContainer.end(), + rxListener)); + if (iListener != maStatusListenerContainer.end()) + maStatusListenerContainer.erase(iListener); + } + else + throw RuntimeException(); +} + + + + +//----------------------------------------------------------------------------- + +void PresenterProtocolHandler::Dispatch::ThrowIfDisposed (void) const + throw (::com::sun::star::lang::DisposedException) +{ + if (rBHelper.bDisposed || rBHelper.bInDispose) + { + throw lang::DisposedException ( + OUString(RTL_CONSTASCII_USTRINGPARAM( + "PresenterProtocolHandler::Dispatch object has already been disposed")), + const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this))); + } +} + + + + +//----- document::XEventListener ---------------------------------------------- + +void SAL_CALL PresenterProtocolHandler::Dispatch::notifyEvent ( + const css::document::EventObject& rEvent) + throw(css::uno::RuntimeException) +{ + (void)rEvent; + + mpCommand->GetState(); +} + + + + +//----- lang::XEventListener -------------------------------------------------- + +void SAL_CALL PresenterProtocolHandler::Dispatch::disposing (const css::lang::EventObject& rEvent) + throw(css::uno::RuntimeException) +{ + (void)rEvent; + mbIsListeningToWindowManager = false; +} + + + + + +//===== GotoPreviousSlideCommand ============================================== + +GotoPreviousSlideCommand::GotoPreviousSlideCommand ( + const rtl::Reference<PresenterController>& rpPresenterController) + : mpPresenterController(rpPresenterController) +{ +} + + + +void GotoPreviousSlideCommand::Execute (void) +{ + if ( ! mpPresenterController.is()) + return; + + if ( ! mpPresenterController->GetSlideShowController().is()) + return; + + mpPresenterController->GetSlideShowController()->gotoPreviousSlide(); +} + + + + +bool GotoPreviousSlideCommand::IsEnabled (void) const +{ + if ( ! mpPresenterController.is()) + return false; + + if ( ! mpPresenterController->GetSlideShowController().is()) + return false; + + return mpPresenterController->GetSlideShowController()->getCurrentSlideIndex()>0; +} + + + + +Any GotoPreviousSlideCommand::GetState (void) const +{ + return Any(sal_False); +} + + + + +//===== GotoNextEffect ======================================================== + +GotoNextEffectCommand::GotoNextEffectCommand ( + const rtl::Reference<PresenterController>& rpPresenterController) + : mpPresenterController(rpPresenterController) +{ +} + + + +void GotoNextEffectCommand::Execute (void) +{ + if ( ! mpPresenterController.is()) + return; + + if ( ! mpPresenterController->GetSlideShowController().is()) + return; + + mpPresenterController->GetSlideShowController()->gotoNextEffect(); +} + + + + +bool GotoNextEffectCommand::IsEnabled (void) const +{ + // The next slide command is always enabled, even when the current slide + // is the last slide: from the last slide it goes to the pause slide, + // and from there it ends the slide show. + return true; +} + + + + +Any GotoNextEffectCommand::GetState (void) const +{ + return Any(sal_False); +} + + + + +//===== GotoNextSlide ========================================================= + +GotoNextSlideCommand::GotoNextSlideCommand ( + const rtl::Reference<PresenterController>& rpPresenterController) + : mpPresenterController(rpPresenterController) +{ +} + + + +void GotoNextSlideCommand::Execute (void) +{ + if ( ! mpPresenterController.is()) + return; + + if ( ! mpPresenterController->GetSlideShowController().is()) + return; + + mpPresenterController->GetSlideShowController()->gotoNextSlide(); +} + + + + +bool GotoNextSlideCommand::IsEnabled (void) const +{ + // The next slide command is always enabled, even when the current slide + // is the last slide: from the last slide it goes to the pause slide, + // and from there it ends the slide show. + return true; +} + + + + +Any GotoNextSlideCommand::GetState (void) const +{ + return Any(sal_False); +} + + + + +//===== SetNotesViewCommand =================================================== + +SetNotesViewCommand::SetNotesViewCommand ( + const bool bOn, + const rtl::Reference<PresenterController>& rpPresenterController) + : mbOn(bOn), + mpPresenterController(rpPresenterController) +{ +} + + + + +void SetNotesViewCommand::Execute (void) +{ + if ( ! mpPresenterController.is()) + return; + + ::rtl::Reference<PresenterWindowManager> pWindowManager ( + mpPresenterController->GetWindowManager()); + if ( ! pWindowManager.is()) + return; + + if (mbOn) + pWindowManager->SetViewMode(PresenterWindowManager::VM_Notes); + else + pWindowManager->SetViewMode(PresenterWindowManager::VM_Standard); +} + + + + +bool SetNotesViewCommand::IsEnabled (void) const +{ + return true; +} + + + + +Any SetNotesViewCommand::GetState (void) const +{ + if ( ! mpPresenterController.is()) + return Any(false); + + ::rtl::Reference<PresenterWindowManager> pWindowManager ( + mpPresenterController->GetWindowManager()); + if ( ! pWindowManager.is()) + return Any(false); + + return Any(IsActive(pWindowManager)); +} + + + + +bool SetNotesViewCommand::IsActive ( + const ::rtl::Reference<PresenterWindowManager>& rpWindowManager) const +{ + return rpWindowManager->GetViewMode() == PresenterWindowManager::VM_Notes; +} + + + + +//===== SetSlideSorterCommand ================================================= + +SetSlideSorterCommand::SetSlideSorterCommand ( + const bool bOn, + const rtl::Reference<PresenterController>& rpPresenterController) + : mbOn(bOn), + mpPresenterController(rpPresenterController) +{ +} + + + + +void SetSlideSorterCommand::Execute (void) +{ + if ( ! mpPresenterController.is()) + return; + + ::rtl::Reference<PresenterWindowManager> pWindowManager ( + mpPresenterController->GetWindowManager()); + if ( ! pWindowManager.is()) + return; + + pWindowManager->SetSlideSorterState(mbOn); +} + + + + +bool SetSlideSorterCommand::IsEnabled (void) const +{ + return true; +} + + + + +Any SetSlideSorterCommand::GetState (void) const +{ + if ( ! mpPresenterController.is()) + return Any(false); + + ::rtl::Reference<PresenterWindowManager> pWindowManager ( + mpPresenterController->GetWindowManager()); + if ( ! pWindowManager.is()) + return Any(false); + + return Any(pWindowManager->GetViewMode()==PresenterWindowManager::VM_SlideOverview); +} + + + + +//===== SetHelpViewCommand =================================================== + +SetHelpViewCommand::SetHelpViewCommand ( + const bool bOn, + const rtl::Reference<PresenterController>& rpPresenterController) + : mbOn(bOn), + mpPresenterController(rpPresenterController) +{ +} + + + + +void SetHelpViewCommand::Execute (void) +{ + if ( ! mpPresenterController.is()) + return; + + ::rtl::Reference<PresenterWindowManager> pWindowManager ( + mpPresenterController->GetWindowManager()); + if ( ! pWindowManager.is()) + return; + + pWindowManager->SetHelpViewState(mbOn); +} + + + + +bool SetHelpViewCommand::IsEnabled (void) const +{ + return true; +} + + + + +Any SetHelpViewCommand::GetState (void) const +{ + if ( ! mpPresenterController.is()) + return Any(false); + + ::rtl::Reference<PresenterWindowManager> pWindowManager ( + mpPresenterController->GetWindowManager()); + if ( ! pWindowManager.is()) + return Any(false); + + return Any(pWindowManager->GetViewMode()==PresenterWindowManager::VM_Help); +} + + + + +//===== NotesFontSizeCommand ================================================== + +NotesFontSizeCommand::NotesFontSizeCommand( + const rtl::Reference<PresenterController>& rpPresenterController, + const sal_Int32 nSizeChange) + : mpPresenterController(rpPresenterController), + mnSizeChange(nSizeChange) +{ +} + + + + +::rtl::Reference<PresenterNotesView> NotesFontSizeCommand::GetNotesView (void) const +{ + if (mpPresenterController.get() == NULL) + return NULL; + + PresenterPaneContainer::SharedPaneDescriptor pDescriptor ( + mpPresenterController->GetPaneContainer()->FindViewURL( + PresenterViewFactory::msNotesViewURL)); + if (pDescriptor.get() == NULL) + return NULL; + + return dynamic_cast<PresenterNotesView*>(pDescriptor->mxView.get()); +} + + + + +void NotesFontSizeCommand::Execute (void) +{ + ::rtl::Reference<PresenterNotesView> pView (GetNotesView()); + if (pView.is()) + pView->ChangeFontSize(mnSizeChange); +} + + + + +bool NotesFontSizeCommand::IsEnabled (void) const +{ + return true; +} + + + + +Any NotesFontSizeCommand::GetState (void) const +{ + return Any(); +} + + +} } // end of namespace ::sdext::presenter + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |