~ubuntu-branches/ubuntu/maverick/scribus-ng/maverick-backports

1 by Oleksandr Moskalenko
Import upstream version 1.3.3.2.dfsg
1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
7
/***************************************************************************
8
 *   Copyright (C) 2004 by Riku Leino                                      *
9
 *   tsoots@gmail.com                                                      *
10
 *                                                                         *
11
 *   This program is free software; you can redistribute it and/or modify  *
12
 *   it under the terms of the GNU General Public License as published by  *
13
 *   the Free Software Foundation; either version 2 of the License, or     *
14
 *   (at your option) any later version.                                   *
15
 *                                                                         *
16
 *   This program is distributed in the hope that it will be useful,       *
17
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
18
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
19
 *   GNU General Public License for more details.                          *
20
 *                                                                         *
21
 *   You should have received a copy of the GNU General Public License     *
22
 *   along with this program; if not, write to the                         *
23
 *   Free Software Foundation, Inc.,                                       *
24
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
25
 ***************************************************************************/
26
27
#include "prefsreader.h"
28
29
PrefsReader::PrefsReader(ContextMap *appContexts, ContextMap *pluginContexts)
30
{
31
	aContexts = appContexts;
32
	pContexts = pluginContexts;
33
	inApp = false;
34
	rowIndex = 0;
35
	colIndex = 0;
36
	inTable = false;
37
}
38
39
bool PrefsReader::startElement(const QString&, const QString&, const QString &name, const QXmlAttributes &attrs)
40
{
41
	if (name == "context")
42
	{
43
		for (int i = 0; i < attrs.count(); ++i)
44
			if (attrs.localName(i) == "name")
45
				currentContext = new PrefsContext(attrs.value(i));
46
	}
47
	else if (name == "level")
48
	{
49
		bool found = false;
50
		for (int i = 0; i < attrs.count(); ++i)
51
			if ((attrs.localName(i) == "name") && (attrs.value(i) == "application"))
52
				found = true;
53
		inApp = found;
54
	}
55
	else if (name == "attribute")
56
	{
57
		QString key = "";
58
		QString value = "";
59
		for (int i = 0; i < attrs.count(); ++i)
60
		{
61
			if (attrs.localName(i) == "key")
62
				key = attrs.value(i);
63
			else if (attrs.localName(i) == "value")
64
				value = attrs.value(i);
65
		}
66
		currentContext->set(key, value);
67
	}
68
	else if (name == "table")
69
	{
70
		for (int i = 0; i < attrs.count(); ++i)
71
		{
72
			if (attrs.localName(i) == "name")
73
				currentTable = currentContext->getTable(attrs.value(i));
74
		}
75
	}
76
	else if (name == "col")
77
		inTable = true;	
78
79
	return true;
80
}
81
82
bool PrefsReader::characters (const QString& ch)
83
{
84
	if (inTable)
85
		currentTable->set(rowIndex, colIndex, ch);
86
	return true;
87
} 
88
89
bool PrefsReader::endElement(const QString&, const QString&, const QString &name)
90
{
91
	if (name == "context")
92
	{
93
		if (inApp)
94
			(*aContexts)[currentContext->getName()] = currentContext;
95
		else
96
			(*pContexts)[currentContext->getName()] = currentContext;
97
	}
98
	else if (name == "row")
99
	{
100
		++rowIndex;
101
		colIndex = 0;
102
	}
103
	else if (name == "col")
104
	{
105
		++colIndex;
106
		inTable = false;
107
	}
108
	else if (name == "table")
109
	{
110
		rowIndex = 0;
111
		colIndex = 0;
112
	}
113
	return true;
114
}
115
116
PrefsReader::~PrefsReader()
117
{
118
119
}