1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef INCLUDED_SLIDESHOW_VIEWEVENTHANDLER_HXX
29 #define INCLUDED_SLIDESHOW_VIEWEVENTHANDLER_HXX
30 
31 #include <boost/shared_ptr.hpp>
32 #include <boost/weak_ptr.hpp>
33 
34 #include "unoview.hxx"
35 
36 
37 /* Definition of ViewEventHandler interface */
38 
39 namespace slideshow
40 {
41     namespace internal
42     {
43 
44         /** Interface for handling view events.
45 
46         	Classes implementing this interface can be added to an
47         	EventMultiplexer object, and are called from there to
48         	handle view events.
49          */
50         class ViewEventHandler
51         {
52         public:
53             virtual ~ViewEventHandler() {}
54 
55             /** Notify new view.
56 
57             	@param rView
58                 The newly added view
59              */
60             virtual void viewAdded( const UnoViewSharedPtr& rView ) = 0;
61 
62             /** Notify removed view.
63 
64             	@param rView
65                 The removed view
66              */
67             virtual void viewRemoved( const UnoViewSharedPtr& rView ) = 0;
68 
69             /** Notify changed view.
70 
71                 Reasons for a viewChanged notification can be
72                 different view size, transformation, or other device
73                 properties (color resolution or profile, etc.)
74 
75             	@param rView
76                 The changed view
77              */
78             virtual void viewChanged( const UnoViewSharedPtr& rView ) = 0;
79 
80             /** Notify that all views changed.
81 
82                 Reasons for a viewChanged notification can be
83                 different view size, transformation, or other device
84                 properties (color resolution or profile, etc.)
85 
86                 Note that this method avoids hidden inefficiencies
87                 (O(n^2) behaviour when viewChanged() needs to perform
88                 linear searches)
89              */
90             virtual void viewsChanged() = 0;
91         };
92 
93         typedef ::boost::shared_ptr< ViewEventHandler > ViewEventHandlerSharedPtr;
94         typedef ::boost::weak_ptr< ViewEventHandler >   ViewEventHandlerWeakPtr;
95 
96     }
97 }
98 
99 #endif /* INCLUDED_SLIDESHOW_VIEWEVENTHANDLER_HXX */
100