merge the formfield patch from ooo-build
[ooovba.git] / sd / source / core / PageListWatcher.hxx
blob8edee4b2bb5cf09b6b2052bbdd18b5ec458fb039
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: PageListWatcher.hxx,v $
10 * $Revision: 1.4 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef PAGE_LIST_WATCHER_HXX
32 #define PAGE_LIST_WATCHER_HXX
34 #include "pres.hxx"
35 #include <sal/types.h>
36 #include <vector>
38 class SdPage;
39 class SdrModel;
41 /** Maintain a map of page indices to page objects for faster access that
42 remains valid during deletions and insertions of pages (#109538#).
44 class ImpPageListWatcher
46 protected:
47 // typedefs for a vector of SdPages
48 typedef ::std::vector< SdPage* > SdPageVector;
50 const SdrModel& mrModel;
52 SdPageVector maPageVectorStandard;
53 SdPageVector maPageVectorNotes;
54 SdPage* mpHandoutPage;
56 sal_Bool mbPageListValid;
58 void ImpRecreateSortedPageListOnDemand();
59 virtual sal_uInt32 ImpGetPageCount() const = 0;
61 /** Return the page with the given index.
62 @param nIndex
63 When given an invalid index then NULL is returned.
65 virtual SdPage* ImpGetPage (sal_uInt32 nIndex) const = 0;
67 public:
68 ImpPageListWatcher(const SdrModel& rModel);
69 virtual ~ImpPageListWatcher();
71 void Invalidate() { mbPageListValid = sal_False; }
72 SdPage* GetSdPage(PageKind ePgKind, sal_uInt32 nPgNum = 0L);
73 sal_uInt32 GetSdPageCount(PageKind ePgKind);
76 //////////////////////////////////////////////////////////////////////////////
78 class ImpDrawPageListWatcher : public ImpPageListWatcher
80 protected:
81 virtual sal_uInt32 ImpGetPageCount() const;
82 virtual SdPage* ImpGetPage(sal_uInt32 nIndex) const;
84 public:
85 ImpDrawPageListWatcher(const SdrModel& rModel);
86 virtual ~ImpDrawPageListWatcher();
89 //////////////////////////////////////////////////////////////////////////////
91 class ImpMasterPageListWatcher : public ImpPageListWatcher
93 protected:
94 virtual sal_uInt32 ImpGetPageCount() const;
95 virtual SdPage* ImpGetPage(sal_uInt32 nIndex) const;
97 public:
98 ImpMasterPageListWatcher(const SdrModel& rModel);
99 virtual ~ImpMasterPageListWatcher();
102 #endif