#ifndef CARD_H
#define CARD_H
#include <QStringList>

/*!
 * \brief The card class. Represents the elements in information screens.
 */
class Card
{
public:
    /*!
     * \brief Card constructor.
     */
    Card();

    /*!
     * \brief addProperty Adds card property.
     * \param name \a name of the property.
     * \param value \a value of the property.
     */
    void addProperty(QString name, QString value);

    /*!
     * \brief editProperty Modifies card property.
     * \param index Property \a index.
     * \param name Property \a name.
     * \param value Property \a value.
     */
    void editProperty(int index, QString name, QString value);

    /*!
     * \brief removeProperty Removes card property.
     * \param indexProperty The \a indexProperty to be removed.
     */
    void removeProperty(int indexProperty);

    /*!
     * \brief getProperty Returns the property at the specified position.
     * \param indexProperty Index of the element to return.
     * \return List with property name and property value.
     */
    QStringList getProperty(int indexProperty);

    /*!
     * \brief takeProperty Returns and remove the property at the specified position.
     * \param indexProperty Index of the element to return.
     * \return List with property name and property value.
     */
    QStringList takeProperty(int indexProperty);

    /*!
     * \brief getNumberOfProperties Returns the number of properties.
     * \return Number of properties.
     */
    int getNumberOfProperties();

    /*!
     * \brief getIconImage Returns the image path of the card icon.
     * \return Path of the image.
     */
    QString getIconImage() const;

    /*!
     * \brief setIconImage Replaces the card icon image.
     * \param value Path to the image.
     */
    void setIconImage(const QString &value);

    /*!
     * \brief getTitle Returns the title of the card.
     * \return Title of the card.
     */
    QString getTitle() const;

    /*!
     * \brief setTitle Replaces the title of the card.
     * \param value Title of the card.
     */
    void setTitle(const QString &value);

private:

    /*!
     * \brief iconImage Path to the card icon image.
     */
    QString iconImage;

    /*!
     * \brief title Title of the card.
     */
    QString title;

    /*!
     * \brief propertyNames Names of the properties.
     */
    QStringList propertyNames;

    /*!
     * \brief propertyValues Value of the properties.
     */
    QStringList propertyValues;
};

#endif // CARD_H
