xref: /trunk/main/sd/source/ui/view/zoomlist.cxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
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 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_sd.hxx"
30 
31 #include "zoomlist.hxx"
32 
33 #ifndef _SVXIDS_HRC
34 #include <svx/svxids.hrc>
35 #endif
36 #include <sfx2/bindings.hxx>
37 #include <sfx2/viewfrm.hxx>
38 #ifndef _SFXVIEWSHELL_HXX
39 #include <sfx2/viewsh.hxx>
40 #endif
41 
42 
43 #include "ViewShell.hxx"
44 
45 namespace sd {
46 
47 #define MAX_ENTRYS  10
48 
49 /*************************************************************************
50 |*
51 |* Konstruktor
52 |*
53 \************************************************************************/
54 
55 ZoomList::ZoomList(ViewShell* pViewShell)
56 : List()
57 , mpViewShell (pViewShell)
58 , mnCurPos(0)
59 {
60 }
61 
62 
63 /*************************************************************************
64 |*
65 |* Destruktor
66 |*
67 \************************************************************************/
68 
69 ZoomList::~ZoomList()
70 {
71 #if ( defined GCC && defined C272 )
72     for (sal_uLong nObject=0; nObject<List::Count(); nObject++)
73 #else
74     for (sal_uLong nObject=0; nObject<Count(); nObject++)
75 #endif
76     {
77         // Ggf. ZoomRects loeschen
78         delete ((Rectangle*) GetObject(nObject));
79     }
80 }
81 
82 
83 /*************************************************************************
84 |*
85 |* Neues ZoomRect aufnehmen
86 |*
87 \************************************************************************/
88 
89 void ZoomList::InsertZoomRect(const Rectangle& rRect)
90 {
91     sal_uLong nRectCount = Count();
92 
93     if (nRectCount >= MAX_ENTRYS)
94     {
95         delete ((Rectangle*) GetObject(0));
96         Remove((sal_uLong) 0);
97     }
98     else if (nRectCount == 0)
99     {
100         mnCurPos = 0;
101     }
102     else
103     {
104         mnCurPos++;
105     }
106 
107     Rectangle* pRect = new Rectangle(rRect);
108     Insert(pRect, mnCurPos);
109 
110     SfxBindings& rBindings = mpViewShell->GetViewFrame()->GetBindings();
111     rBindings.Invalidate( SID_ZOOM_NEXT );
112     rBindings.Invalidate( SID_ZOOM_PREV );
113 }
114 
115 /*************************************************************************
116 |*
117 |* Naechstes ZoomRect herausgeben
118 |*
119 \************************************************************************/
120 
121 Rectangle ZoomList::GetNextZoomRect()
122 {
123     mnCurPos++;
124     sal_uLong nRectCount = Count();
125 
126     if (nRectCount > 0 && mnCurPos > nRectCount - 1)
127     {
128         mnCurPos = nRectCount - 1;
129     }
130 
131     SfxBindings& rBindings = mpViewShell->GetViewFrame()->GetBindings();
132     rBindings.Invalidate( SID_ZOOM_NEXT );
133     rBindings.Invalidate( SID_ZOOM_PREV );
134 
135     Rectangle aRect(*(Rectangle*) GetObject(mnCurPos));
136     return (aRect);
137 }
138 
139 /*************************************************************************
140 |*
141 |* Letztes ZoomRect herausgeben
142 |*
143 \************************************************************************/
144 
145 Rectangle ZoomList::GetPreviousZoomRect()
146 {
147     if (mnCurPos > 0)
148     {
149         mnCurPos--;
150     }
151 
152     SfxBindings& rBindings = mpViewShell->GetViewFrame()->GetBindings();
153     rBindings.Invalidate( SID_ZOOM_NEXT );
154     rBindings.Invalidate( SID_ZOOM_PREV );
155 
156     Rectangle aRect(*(Rectangle*) GetObject(mnCurPos));
157     return (aRect);
158 }
159 
160 /*************************************************************************
161 |*
162 |* Gibt es ein naechstes ZoomRect?
163 |*
164 \************************************************************************/
165 
166 sal_Bool ZoomList::IsNextPossible() const
167 {
168     sal_Bool bPossible = sal_False;
169     sal_uLong nRectCount = Count();
170 
171     if (nRectCount > 0 && mnCurPos < nRectCount - 1)
172     {
173         bPossible = sal_True;
174     }
175 
176     return (bPossible);
177 }
178 
179 /*************************************************************************
180 |*
181 |* Gibt es ein vorheriges ZoomRect?
182 |*
183 \************************************************************************/
184 
185 sal_Bool ZoomList::IsPreviousPossible() const
186 {
187     sal_Bool bPossible = sal_False;
188 
189     if (mnCurPos > 0)
190     {
191         bPossible = sal_True;
192     }
193 
194     return (bPossible);
195 }
196 
197 } // end of namespace sd
198