summaryrefslogtreecommitdiff
path: root/sdext/source/presenter/PresenterScreen.hxx
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2008-04-03 15:03:26 +0000
committerKurt Zenker <kz@openoffice.org>2008-04-03 15:03:26 +0000
commit7b6a008fb4f09e3c76db637d2d4f2d1bb8a8132f (patch)
tree3215e37bb855684ac949476af0702b4abae39c77 /sdext/source/presenter/PresenterScreen.hxx
parentb553f8a7430ff52df5f6d8ebfb46cbdbbf290ac4 (diff)
INTEGRATION: CWS presenterview (1.1.2); FILE ADDED
2008/02/26 15:29:26 af 1.1.2.7: #i18486# Code cleanup. 2008/01/21 15:06:53 af 1.1.2.6: #i18486# Initialization changed. Uses XJob interface. 2008/01/09 18:36:57 cl 1.1.2.5: #i18486# use new slideshow api 2007/12/12 15:17:50 af 1.1.2.4: #i18486# Code cleanup. 2007/11/19 09:40:54 af 1.1.2.3: #i18486# Deactivating Impress panes explicitly. 2007/10/24 13:12:20 af 1.1.2.2: #i18486# Fixed inital compilation problems. 2007/10/24 12:06:16 af 1.1.2.1: #i18486# Initial revision.
Diffstat (limited to 'sdext/source/presenter/PresenterScreen.hxx')
-rw-r--r--sdext/source/presenter/PresenterScreen.hxx195
1 files changed, 195 insertions, 0 deletions
diff --git a/sdext/source/presenter/PresenterScreen.hxx b/sdext/source/presenter/PresenterScreen.hxx
new file mode 100644
index 000000000000..57f90b3ae0ec
--- /dev/null
+++ b/sdext/source/presenter/PresenterScreen.hxx
@@ -0,0 +1,195 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PresenterScreen.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: kz $ $Date: 2008-04-03 16:03:26 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_SCREEN_HXX
+#define SDEXT_PRESENTER_PRESENTER_SCREEN_HXX
+
+#include "PresenterConfigurationAccess.hxx"
+#include "PresenterPaneContainer.hxx"
+#include <cppuhelper/compbase2.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/frame/XModel2.hpp>
+#include <com/sun/star/task/XJob.hpp>
+#include <com/sun/star/document/XEventListener.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/presentation/XSlideShowController.hpp>
+#include <rtl/ref.hxx>
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/scoped_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterWindowManager;
+class PresenterController;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper2 <
+ css::task::XJob,
+ css::document::XEventListener > PresenterScreenInterfaceBase;
+}
+
+
+/** This is the bootstrap class of the presenter screen. It is registered
+ as drawing framework startup service. That means that every drawing
+ framework instance creates an instance of this class.
+
+ <p>A PresenterScreen object registers itself as listener for drawing
+ framework configuration changes. It waits for the full screen marker (a
+ top level resource) to appear in the current configuration. When that
+ happens the actual presenter screen is initialized. A new
+ PresenterController is created and takes over the task of controlling
+ the presenter screen.</p>
+*/
+class PresenterScreen
+ : private ::boost::noncopyable,
+ private ::cppu::BaseMutex,
+ public PresenterScreenInterfaceBase
+{
+public:
+ void SAL_CALL disposing (void);
+
+ static ::rtl::OUString getImplementationName_static (void);
+ static css::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static (void);
+ static css::uno::Reference<css::uno::XInterface> Create(
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext)
+ SAL_THROW((css::uno::Exception));
+
+
+ // XJob
+
+ virtual css::uno::Any SAL_CALL execute(
+ const css::uno::Sequence<css::beans::NamedValue >& Arguments)
+ throw (css::lang::IllegalArgumentException,
+ css::uno::Exception,
+ css::uno::RuntimeException);
+
+ // document::XEventListener
+
+ virtual void SAL_CALL notifyEvent( const css::document::EventObject& Event ) throw (css::uno::RuntimeException);
+
+ // XEventListener
+
+ virtual void SAL_CALL disposing ( const css::lang::EventObject& rEvent) throw (css::uno::RuntimeException);
+
+private:
+ css::uno::Reference<css::frame::XModel2 > mxModel;
+ css::uno::Reference<css::frame::XController> mxController;
+ css::uno::WeakReference<css::drawing::framework::XConfigurationController>
+ mxConfigurationControllerWeak;
+ css::uno::WeakReference<css::uno::XComponentContext> mxContextWeak;
+ css::uno::WeakReference<css::presentation::XSlideShowController> mxSlideShowControllerWeak;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxSlideShowViewId;
+ css::uno::Reference<css::drawing::framework::XConfiguration> mxSavedConfiguration;
+ ::rtl::Reference<PresenterPaneContainer> mpPaneContainer;
+ sal_Int32 mnComponentIndex;
+ css::uno::Reference<css::drawing::framework::XResourceFactory> mxPaneFactory;
+ css::uno::Reference<css::drawing::framework::XResourceFactory> mxViewFactory;
+
+ PresenterScreen (const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+ virtual ~PresenterScreen (void);
+
+ /** Make the presenter screen visible.
+ */
+ void InitializePresenterScreen (void);
+
+ /** Deactivate the currently active panes to make room for the full
+ screen pane and the presenter panes.
+ */
+ void DeactivatePanes (
+ const css::uno::Reference<css::drawing::framework::XConfigurationController>& rxCC);
+
+ void ShutdownPresenterScreen (void);
+
+ /** Create and initialize the factory for presenter view specific panes.
+ */
+ void SetupPaneFactory (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+
+ /** Create and initialize the factory for presenter view specific views.
+ */
+ void SetupViewFactory (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+
+ /** Read the current layout from the configuration and call
+ ProcessLayout to bring it on to the screen.
+ */
+ void SetupConfiguration (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxAnchorId);
+
+ /** Read one layout from the configuration and make resource activation
+ requests to bring it on to the screen. When one layout references a
+ parent layout then this method calls itself recursively.
+ */
+ void ProcessLayout (
+ PresenterConfigurationAccess& rConfiguration,
+ const ::rtl::OUString& rsLayoutName,
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxAnchorId);
+
+ /** Called by ProcessLayout for a single entry of a Layouts
+ configuration list.
+ */
+ void ProcessComponent (
+ const ::rtl::OUString& rsKey,
+ const ::std::vector<css::uno::Any>& rValues,
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxAnchorId);
+
+ css::uno::Reference<css::drawing::framework::XResourceId> SetupView (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxAnchorId,
+ const ::rtl::OUString& rsPaneURL,
+ const ::rtl::OUString& rsViewURL,
+ const ::rtl::OUString& rsTitle,
+ const PresenterPaneContainer::ViewInitializationFunction& rViewInitialization,
+ const double nLeft,
+ const double nTop,
+ const double nRight,
+ const double nBottom);
+
+ void ThrowIfDisposed (void) const throw (::com::sun::star::lang::DisposedException);
+};
+
+} }
+
+#endif