xref: /AOO41X/main/editeng/source/outliner/paralist.hxx (revision 8809db7a87f97847b57a57f4cd2b0104b2b83182)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _PARALIST_HXX
25 #define _PARALIST_HXX
26 
27 class Paragraph;
28 
29 #include <tools/list.hxx>
30 #include <tools/link.hxx>
31 
32 class ParagraphList : private List
33 {
34 private:
35     Link            aVisibleStateChangedHdl;
36 
37 public:
38     void            Clear( sal_Bool bDestroyParagraphs );
39 
40     sal_uLong           GetParagraphCount() const           { return List::Count(); }
41     Paragraph*      GetParagraph( sal_uLong nPos ) const    { return (Paragraph*)List::GetObject( nPos ); }
42 
43     sal_uLong           GetAbsPos( Paragraph* pParent ) const { return List::GetPos( pParent ); }
44     sal_uLong           GetVisPos( Paragraph* pParagraph );
45 
46     void            Insert( Paragraph* pPara, sal_uLong nAbsPos = LIST_APPEND ) { List::Insert( pPara, nAbsPos ); }
47     void            Remove( sal_uLong nPara ) { List::Remove( nPara ); }
48     void            MoveParagraphs( sal_uLong nStart, sal_uLong nDest, sal_uLong nCount );
49 
50     Paragraph*      NextVisible( Paragraph* ) const;
51     Paragraph*      PrevVisible( Paragraph* ) const;
52     Paragraph*      LastVisible() const;
53 
54     Paragraph*      GetParent( Paragraph* pParagraph /*, sal_uInt16& rRelPos */ ) const;
55     sal_Bool            HasChilds( Paragraph* pParagraph ) const;
56     sal_Bool            HasHiddenChilds( Paragraph* pParagraph ) const;
57     sal_Bool            HasVisibleChilds( Paragraph* pParagraph ) const;
58     sal_uLong           GetChildCount( Paragraph* pParagraph ) const;
59 
60     void            Expand( Paragraph* pParent );
61     void            Collapse( Paragraph* pParent );
62 
63     void            SetVisibleStateChangedHdl( const Link& rLink ) { aVisibleStateChangedHdl = rLink; }
64     Link            GetVisibleStateChangedHdl() const { return aVisibleStateChangedHdl; }
65 };
66 
67 #endif
68