summaryrefslogtreecommitdiffstats
path: root/kivio/kiviopart/kivio_map.h
blob: 4db3c1c2db7f2c58ec07ae714ad3595a1ff137f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
 * Kivio - Visual Modelling and Flowcharting
 * Copyright (C) 2000-2001 theKompany.com & Dave Marotti
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
#ifndef __kivio_map_h__
#define __kivio_map_h__

class KivioPage;
class KivioMap;
class KivioDoc;

class KoStore;
class KoXmlWriter;
class KoGenStyles;

class QDomElement;
class QDomDocument;
class DCOPObject;

#include <qintdict.h>
#include <qobject.h>
#include <qptrlist.h>
#include <qstringlist.h>

/*
 * A map is a simple container for all pages. Usually a complete map is saved in one file.
 */

class KivioMap : public QObject
{
  public:
    /**
    * Created an empty map.
    */
    KivioMap( KivioDoc* doc, const char* name = 0 );
    /**
    * This deletes all pages contained in this map.
    */
    virtual ~KivioMap();
  
    QDomElement save( QDomDocument& doc );
    void saveOasis(KoStore* store, KoXmlWriter* docWriter, KoGenStyles* styles);
    bool loadXML( const QDomElement& mymap );
  
    /**
    * @param _page becomes added to the map.
    */
    void addPage( KivioPage* );
  
    void takePage( KivioPage* page );
    void insertPage( KivioPage* page );
  
    /**
    * The page named @param _from is being moved to the page @param _to.
    * If @param _before is true @param _from is inserted before (after otherwise)
    * @param _to.
    */
    void movePage( const QString & _from, const QString & _to, bool _before = true );
  
    KivioPage* findPage( const QString& name );
  
    /**
    * Use the @ref #nextPage function to get all the other pages.
    * Attention: Function is not reentrant.
    *
    * @return a pointer to the first page in this map.
    */
    KivioPage* firstPage();

    /**
     * @return a pointer to the last page in this map.
     */
    KivioPage* lastPage();

    /**
    * Call @ref #firstPage first. This will set the list pointer to
    * the first page. Attention: Function is not reentrant.
    *
    * @return a pointer to the next page in this map.
    */
    KivioPage* nextPage();
  
    QPtrList<KivioPage>& pageList() { return m_lstPages; }
    
    /**
    * Returns list of visible pages as stringlist.
    */
    QStringList visiblePages() const;
    
    /**
    * Returns list of hidden pages as stringlist.
    */
    QStringList hiddenPages() const;
  
    /**
    * @return amount of pages in this map.
    */
    int count()const;
  
    void update();
  
    KivioDoc* doc()const;
  
    virtual DCOPObject* dcopObject();

    void clear();

  private:
    QPtrList<KivioPage> m_lstPages;
    QPtrList<KivioPage> m_lstDeletedPages;
  
    KivioDoc* m_pDoc;
    DCOPObject* m_dcop;
};

#endif