/*
**
** Copyright (C) 2002 Robert JACOLIN
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Library General Public
** License as published by the Free Software Foundation; either
** version 2 of the License, or (at your option) any later version.
**
** This library 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
** Library General Public License for more details.
**
** To receive a copy of the GNU Library General Public License, write to the
** Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
**
*/

#ifndef __CALLIGRA_SHEETS_LATEX_CELL_H__
#define __CALLIGRA_SHEETS_LATEX_CELL_H__

#include <QString>
#include <QTextStream>

#include "config.h"
#include "format.h"
#include "xmlparser.h"

/***********************************************************************/
/* Class: Cell                                                        */
/***********************************************************************/

class Table;

/**
 * This class hold a cell.
 */
class Cell: public Format
{

    /* USEFUL DATA */
    long _row;
    long _col;
    QString _text;
    QString _textDataType;
    QString _result;
    QString _resultDataType;


public:
    /**
     * Constructors
     *
     */

    /**
     * Creates a new instance of Cell.
     */
    Cell();

    Cell(long row, long col) {
        _row = row;
        _col = col;
    }

    /*
     * Destructor
     *
     * The destructor must remove the list of frames.
     */

    ~Cell() override;

    /* ==== getters ==== */

    long     getRow() const {
        return _row;
    }
    long     getCol() const {
        return _col;
    }
    QString  getText() const {
        return _text;
    }
    QString  getTextDataType() const {
        return _textDataType;
    }
    QString  getResult() const {
        return _result;
    }
    QString  getResultDataType() const {
        return _resultDataType;
    }

    /* ==== setters ==== */
    void setRow(int r) {
        _row = r;
    }
    void setCol(int c) {
        _col = c;
    }
    void setText(QString text) {
        _text = text;
    }
    void setTextDataType(QString dt) {
        _textDataType = dt;
    }
    void setResult(QString result) {
        _result = result;
    }
    void setResultDataType(QString dt) {
        _resultDataType = dt;
    }

    /**
     * Helpful functions
     */
    void     analyze(const QDomNode) override;
    void     analyzeText(const QDomNode);
    void     analyzeResult(const QDomNode);
    void     generate(QTextStream&, Table*);

private:

};

#endif /* __CALLIGRA_SHEETS_LATEX_CELL_H__ */

