#ifndef INTERFAZ_H
#define INTERFAZ_H
#include <QString>
#include <Model/icon.h>
#include <QColor>

/*!
 * \brief The Interfaz class. Represents generic screen.
 */
class Interfaz
{
public:

    /*!
     * \brief Interfaz constructor.
     */
    Interfaz();

    /*!
     * \brief getHeigth Returns the screen height.
     * \return Screen Heigth.
     */
    int getHeight();

    /*!
     * \brief setHeigth Replaces the screen height.
     * \param height Screen height.
     */
    void setHeigth(int height);

    /*!
     * \brief getWidth Returns the screen width.
     * \return Screen width.
     */
    int getWidth();

    /*!
     * \brief setWidth Repalces the screen width.
     * \param width Screen width.
     */
    void setWidth(int width);

    /*!
     * \brief getNumberOfElements Returns the screen number of elements.
     * \return Screen number of elements.
     */
    int getNumberOfElements() const ;

    /*!
     * \brief setNumberOfElements Raplaces the screen number of elements.
     * \param value Screen number of elements.
     */
    void setNumberOfElements(int value);

    /*!
     * \brief getNumberOfRows Returns the screen number of rows.
     * \return Screen number of rows.
     */
    int getNumberOfRows()const  ;

    /*!
     * \brief setNumberOfRows Raplaces the screen number of rows.
     * \param value Screen numbers of rows.
     */
    void setNumberOfRows(int value);

    /*!
     * \brief getNumberOfCols Returns the screen number of columns.
     * \return Screen number of columns.
     */
    int getNumberOfCols() const ;

    /*!
     * \brief setNumberOfCols Replaces the screen number of columns.
     * \param value Screen number of columns.
     */
    void setNumberOfCols(int value);

    /*!
     * \brief getImageBackground Returns the screen background image path.
     * \return Image background path.
     */
    QString getImageBackground() const ;

    /*!
     * \brief setImageBackground Replaces the screen background image path.
     * \param value Image background path.
     */
    void setImageBackground(QString value);

    /*!
     * \brief getColorBackground Returns the screen background color.
     * \return Background color.
     */
    QColor getColorBackground()  ;

    /*!
     * \brief setColorBackground Repalces the screen background color.
     * \param value Background color.
     */
    void setColorBackground( const QColor &value);

    /*!
     * \brief getHasIcons Returns if the interface has icons.
     * \return \c True if the interface has icons, false otherwise.
     */
    bool getHasIcons() const  ;

    /*!
     * \brief setHasIcons Specifies if the interfaces has icons.
     * \param value Wheter the interface has icons.
     */
    void setHasIcons(bool value);

    /*!
     * \brief getHasImageBackground Returns if the interface has an image background.
     * \return \c True if the interface has an image background, \c false otherwise.
     */
    bool getHasImageBackground() const ;

    /*!
     * \brief setHasImageBackground Specifies if the interface has an image background.
     * \param value Whether the interface has image background.
     */
    void setHasImageBackground(bool value);

private:

    /*!
     * \brief numberOfCols Screen number of columns.
     */
    int numberOfCols;

    /*!
     * \brief numberOfRows Screen number of rows.
     */
    int numberOfRows;

    /*!
     * \brief height Screen height
     */
    int height;

    /*!
     * \brief width Screen width
     */
    int width;

    /*!
     * \brief imageBackground Screen image background path.
     */
    QString imageBackground;

    /*!
     * \brief hasImageBackground Screen background option.
     */
    bool hasImageBackground;

    /*!
     * \brief hasIcons Screen icon option.
     */
    bool hasIcons;

    /*!
     * \brief colorBackground Scrren background color.
     */
    QColor colorBackground;


protected:

    /*!
     * \brief numberOfElements Screen number of elements.
     */
    int numberOfElements;

};

#endif // INTERFAZ_H
