summaryrefslogtreecommitdiff
path: root/sd/source/ui/inc/WindowUpdater.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/inc/WindowUpdater.hxx')
-rw-r--r--sd/source/ui/inc/WindowUpdater.hxx152
1 files changed, 152 insertions, 0 deletions
diff --git a/sd/source/ui/inc/WindowUpdater.hxx b/sd/source/ui/inc/WindowUpdater.hxx
new file mode 100644
index 000000000000..9f817de6a6c4
--- /dev/null
+++ b/sd/source/ui/inc/WindowUpdater.hxx
@@ -0,0 +1,152 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef SD_OUTPUT_DEVICE_UPDATER_HXX
+#define SD_OUTPUT_DEVICE_UPDATER_HXX
+
+#include <svl/lstner.hxx>
+#include <svl/ctloptions.hxx>
+#include "sddllapi.h"
+
+#ifndef INCLUDED_VECTOR
+#include <vector>
+#define INCLUDED_VECTOR
+#endif
+
+class Window;
+class OutputDevice;
+class SdDrawDocument;
+
+
+namespace sd {
+
+class ViewShell;
+
+/** The purpose of the <type>WindowUpdater</type> is to update output
+ devices to take care of modified global values. These values are
+ monitored for changes. At the moment this is
+ the digit language that defines the glyphs to use to render digits.
+ Other values may be added in the future.
+
+ <p>The methods of this class have not been included into the
+ <type>ViewShell</type> class in order to not clutter its interface any
+ further. This class accesses some of <type>ViewShell</type> data
+ members directly and thus is declared as its friend.</p>
+
+ <p>Windows that are to be kept up-to-date have to be registered via the
+ <member>RegisterWindow()</member> method. When a document is given then
+ this document is reformatted when the monitored option changes.</p>
+*/
+class SD_DLLPUBLIC WindowUpdater
+ : public utl::ConfigurationListener
+{
+public:
+ explicit WindowUpdater (void);
+ virtual ~WindowUpdater (void) throw();
+
+ /** Add the given device to the list of devices which will be updated
+ when one of the monitored values changes.
+ @param pWindow
+ This device is added to the device list if it is not <null/> and
+ when it is not already a member of that list.
+ */
+ void RegisterWindow (::Window* pWindow);
+
+ /** Remove the given device from the list of devices which will be updated
+ when one of the monitored values changes.
+ @param pWindow
+ This device is removed from the device list when it is a member
+ of that list.
+ */
+ void UnregisterWindow (::Window* pWindow);
+
+ /** Set the view shell whose output devices shall be kept up to date.
+ It is used to clear the master page cache so that a redraw affects
+ the master page content as well.
+ */
+ void SetViewShell (ViewShell& rViewShell);
+
+ /** Set the document so that it is reformatted when one of the monitored
+ values changes.
+ @param pDocument
+ When <null/> is given document reformatting will not take
+ place in the future.
+ */
+ void SetDocument (SdDrawDocument* pDocument);
+
+ /** Update the given output device and update all text objects of the
+ view shell if not told otherwise.
+ @param pWindow
+ The device to update. When the given pointer is NULL then
+ nothing is done.
+ @param pDocument
+ When given a pointer to a document then tell it to reformat all
+ text objects. This refromatting is necessary for the new values
+ to take effect.
+ */
+ void Update (OutputDevice* pDevice, SdDrawDocument* pDocument=0) const;
+
+ /** Callback that waits for notifications of a
+ <type>SvtCTLOptions</type> object.
+ */
+ virtual void ConfigurationChanged ( utl::ConfigurationBroadcaster*, sal_uInt32 nHint);
+
+private:
+ /// Options to monitor for changes.
+ SvtCTLOptions maCTLOptions;
+
+ /// Keep the output devices of this view shell up to date.
+ ViewShell* mpViewShell;
+
+ /// The document rendered in the output devices.
+ SdDrawDocument* mpDocument;
+
+ /// Copy constructor not supported.
+ WindowUpdater (const WindowUpdater& rUpdater);
+
+ /// Assignment operator not supported.
+ WindowUpdater operator= (const WindowUpdater& rUpdater);
+
+ /** Type and data member for a list of devices that have to be kept
+ up-to-date.
+ */
+ typedef ::std::vector< ::Window*> tWindowList;
+ tWindowList maWindowList;
+
+ /** The central method of this class. Update the given output device.
+ It is the task of the caller to initiate a refrormatting of the
+ document that is rendered on this device to reflect the changes.
+ @param pWindow
+ The output device to update. When it is <null/> then the call
+ is ignored.
+ */
+ SD_DLLPRIVATE void UpdateWindow (OutputDevice* pDevice) const;
+};
+
+} // end of namespace sd
+
+#endif