Subversion Repositories Scribus

Rev

Rev 418 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/***************************************************************************
 *   Copyright (C) 2004 by Riku Leino                                      *
 *   tsoots@welho.com                                                      *
 *                                                                         *
 *   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.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/


#include "prefstable.h"

PrefsTable::PrefsTable(QString tableName)
{
        name = tableName;
        rowCount = 0;
        colCount = 0;
}

QString PrefsTable::getName()
{
        return name;
}

int PrefsTable::height()
{
        return rowCount;
}

int PrefsTable::getRowCount()
{
        return rowCount;
}

int PrefsTable::width()
{
        return colCount;
}

int PrefsTable::getColCount()
{
        return colCount;
}

QString PrefsTable::get(int row, int col, const QString& defValue)
{
        checkSize(row, col, defValue);
        if ((*table[row])[col] == "__NOT__SET__")
                table[row]->insert(table[row]->at(col), defValue);

        return (*table[row])[col];
}

void PrefsTable::set(int row, int col, const char* value)
{
        set(row, col, QString(value));
}

void PrefsTable::set(int row, int col, const std::string& value)
{
        set(row, col, QString(value.c_str()));
}

void PrefsTable::set(int row, int col, const QString& value)
{
        checkSize(row, col, value);
        table[row]->insert(table[row]->at(col), value);
}

int PrefsTable::getInt(int row, int col, int defValue)
{
        QString stringValue = get(row, col, QString("%1").arg(defValue));
        bool ok = false;
        int ivalue = stringValue.toInt(&ok);
        if (!ok)
                ivalue = defValue;
        return ivalue;
}

void PrefsTable::set(int row, int col, int value)
{
        set(row, col, QString("%1").arg(value));
}

uint PrefsTable::getUInt(int row, int col, uint defValue)
{
        QString stringValue = get(row, col, QString("%1").arg(defValue));
        bool ok = false;
        int uivalue = stringValue.toUInt(&ok);
        if (!ok)
                uivalue = defValue;
        return uivalue;
}

double PrefsTable::getDouble(int row, int col, double defValue)
{
        QString stringValue = get(row, col, QString("%1").arg(defValue));
        bool ok = false;
        double dvalue = stringValue.toDouble(&ok);
        if (!ok)
                dvalue = defValue;
        return dvalue;
}

void PrefsTable::set(int row, int col, double value)
{
        set(row, col, QString("%1").arg(value));
}

bool PrefsTable::getBool(int row, int col, bool defValue)
{
        QString stringValue = get(row, col, QString("%1").arg(defValue));
        bool ok = false;
        int ivalue = stringValue.toInt(&ok);
        if (!ok)
                ivalue = defValue;
        return ivalue;
}

void PrefsTable::set(int row, int col, bool value)
{
        set(row, col, QString("%1").arg(value));
}

void PrefsTable::checkSize(int rowIndex, int colIndex, QString defValue)
{
        checkHeight(rowIndex);
        checkWidth(rowIndex, colIndex, defValue);
}

void PrefsTable::checkHeight(int rowIndex)
{
        if (rowCount < (rowIndex + 1))
        {
                for (int i = 0; i < ((rowIndex + 1) - rowCount); ++i)
                        table.push_back(new QStringList());
                rowCount = rowIndex + 1;
        }
}

void PrefsTable::checkWidth(int rowIndex, int colIndex, QString defValue)
{
        if (static_cast<int>(table[rowIndex]->size()) <= (colIndex + 1))
        {
                for (uint i = 0; i < ((colIndex + 1) - table[rowIndex]->size()); ++i)
                {
                        if (i == colIndex - table[rowIndex]->size())
                                table[rowIndex]->push_back(defValue);
                        else
                                table[rowIndex]->push_back("__NOT__SET__");
                }
                colCount = colIndex + 1;
        }
}

PrefsTable::~PrefsTable()
{

}