Subversion Repositories Scribus

Rev

Rev 415 | Rev 455 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
415 Franz 1
/***************************************************************************
2
 *   Copyright (C) 2004 by Riku Leino                                      *
3
 *   tsoots@welho.com                                                      *
4
 *                                                                         *
5
 *   This program is free software; you can redistribute it and/or modify  *
6
 *   it under the terms of the GNU General Public License as published by  *
7
 *   the Free Software Foundation; either version 2 of the License, or     *
8
 *   (at your option) any later version.                                   *
9
 *                                                                         *
10
 *   This program is distributed in the hope that it will be useful,       *
11
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13
 *   GNU General Public License for more details.                          *
14
 *                                                                         *
15
 *   You should have received a copy of the GNU General Public License     *
16
 *   along with this program; if not, write to the                         *
17
 *   Free Software Foundation, Inc.,                                       *
18
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19
 ***************************************************************************/
20
 
21
#include "prefstable.h"
22
 
23
PrefsTable::PrefsTable(QString tableName)
24
{
25
        name = tableName;
26
        rowCount = 0;
27
        colCount = 0;
28
}
29
 
30
QString PrefsTable::getName()
31
{
32
        return name;
33
}
34
 
35
int PrefsTable::height()
36
{
37
        return rowCount;
38
}
39
 
40
int PrefsTable::getRowCount()
41
{
42
        return rowCount;
43
}
44
 
45
int PrefsTable::width()
46
{
47
        return colCount;
48
}
49
 
50
int PrefsTable::getColCount()
51
{
52
        return colCount;
53
}
54
 
55
QString PrefsTable::get(int row, int col, const QString& defValue)
56
{
57
        checkSize(row, col, defValue);
58
        if ((*table[row])[col] == "__NOT__SET__")
59
                table[row]->insert(table[row]->at(col), defValue);
60
 
61
        return (*table[row])[col];
62
}
63
 
64
void PrefsTable::set(int row, int col, const char* value)
65
{
66
        set(row, col, QString(value));
67
}
68
 
69
void PrefsTable::set(int row, int col, const std::string& value)
70
{
71
        set(row, col, QString(value.c_str()));
72
}
73
 
74
void PrefsTable::set(int row, int col, const QString& value)
75
{
418 Franz 76
        checkSize(row, col, "__NOT__SET__");
415 Franz 77
        table[row]->insert(table[row]->at(col), value);
78
}
79
 
80
int PrefsTable::getInt(int row, int col, int defValue)
81
{
82
        QString stringValue = get(row, col, QString("%1").arg(defValue));
83
        bool ok = false;
84
        int ivalue = stringValue.toInt(&ok);
85
        if (!ok)
86
                ivalue = defValue;
87
        return ivalue;
88
}
89
 
90
void PrefsTable::set(int row, int col, int value)
91
{
92
        set(row, col, QString("%1").arg(value));
93
}
94
 
95
uint PrefsTable::getUInt(int row, int col, uint defValue)
96
{
97
        QString stringValue = get(row, col, QString("%1").arg(defValue));
98
        bool ok = false;
99
        int uivalue = stringValue.toUInt(&ok);
100
        if (!ok)
101
                uivalue = defValue;
102
        return uivalue;
103
}
104
 
105
double PrefsTable::getDouble(int row, int col, double defValue)
106
{
107
        QString stringValue = get(row, col, QString("%1").arg(defValue));
108
        bool ok = false;
109
        double dvalue = stringValue.toDouble(&ok);
110
        if (!ok)
111
                dvalue = defValue;
112
        return dvalue;
113
}
114
 
115
void PrefsTable::set(int row, int col, double value)
116
{
117
        set(row, col, QString("%1").arg(value));
118
}
119
 
120
bool PrefsTable::getBool(int row, int col, bool defValue)
121
{
122
        QString stringValue = get(row, col, QString("%1").arg(defValue));
123
        bool ok = false;
124
        int ivalue = stringValue.toInt(&ok);
125
        if (!ok)
126
                ivalue = defValue;
127
        return ivalue;
128
}
129
 
130
void PrefsTable::set(int row, int col, bool value)
131
{
132
        set(row, col, QString("%1").arg(value));
133
}
134
 
418 Franz 135
int PrefsTable::find(int searchCol, const QString& what)
136
{
137
        if ((searchCol < 0) || (searchCol >= width()))
138
                return -1;
139
 
140
        int rowi = -1;
141
        for (int i = 0; i < height(); ++i)
142
        {
143
                if ((get(i, searchCol, "__NOT__SET__") == what) &&
144
                    (get(i, searchCol, "__NOT__SET__") != "__NOT__SET__"))
145
                {
146
                        rowi = i;
147
                        break;
148
                }
149
        }
150
 
151
        return rowi;
152
}
153
 
154
void PrefsTable::removeRow(int colIndex, const QString& what)
155
{
156
        if ((colIndex < 0) || (colIndex >= width()))
157
                return;
158
 
159
        Table::iterator it = table.begin();
160
        for (int i = 0; i < height(); ++i, ++it)
161
        {
162
                if (get(i, colIndex, "__NOT__SET__") == what)
163
                {
164
                        table.erase(it);
165
                        --rowCount;
166
                }
167
        }
168
}
169
 
415 Franz 170
void PrefsTable::checkSize(int rowIndex, int colIndex, QString defValue)
171
{
172
        checkHeight(rowIndex);
173
        checkWidth(rowIndex, colIndex, defValue);
174
}
175
 
176
void PrefsTable::checkHeight(int rowIndex)
177
{
178
        if (rowCount < (rowIndex + 1))
179
        {
180
                for (int i = 0; i < ((rowIndex + 1) - rowCount); ++i)
181
                        table.push_back(new QStringList());
182
                rowCount = rowIndex + 1;
183
        }
184
}
185
 
186
void PrefsTable::checkWidth(int rowIndex, int colIndex, QString defValue)
187
{
188
        if (static_cast<int>(table[rowIndex]->size()) <= (colIndex + 1))
189
        {
418 Franz 190
                for (int i = 0; i < ((colIndex + 1) - static_cast<int>(table[rowIndex]->size())); ++i)
415 Franz 191
                {
418 Franz 192
                        if (i == colIndex - static_cast<int>(table[rowIndex]->size()))
415 Franz 193
                                table[rowIndex]->push_back(defValue);
194
                        else
195
                                table[rowIndex]->push_back("__NOT__SET__");
196
                }
197
                colCount = colIndex + 1;
198
        }
199
}
200
 
201
PrefsTable::~PrefsTable()
202
{
203
 
204
}