#ifndef CONSTANTS_H
#define CONSTANTS_H

#include <QString>

/*!
 * \brief The Constants class.
 */
class Constants
{

public:

    /*!
     * \brief The Settings class.
     */
    class Settings
    {
    public:
        /*!
         * \brief defaultDirKey key for setting folder value.
         */
        static const QString defaultDirKey;

        /*!
         * \brief alwaysAskKey key for setting always ask option.
         */
        static const QString alwaysAskKey;

        /*!
         * \brief settingsName settings' file name.
         */
        static const QString settingsName;

        /*!
         * \brief languageKey key for setting app language.
         */
        static const QString languageKey;

        /*!
         * \brief beforeStartKey key for setting init tips.
         */
        static const QString beforeStartKey;
    };

    /*!
     * \brief The Parser class.
     */
    class Parser
    {
    public:

        /*!
         * \brief The QmlTemplates class.
         */
        class QmlTemplates
        {
        public:

            /*!
             * \brief image QML template path.
             */
            static const QString image;

            /*!
             * \brief color QML template path.
             */
            static const QString color;

            /*!
             * \brief menu QML template path.
             */
            static const QString menu;

            /*!
             * \brief menuElement QML template path.
             */
            static const QString menuElement;

            /*!
             * \brief menuElementSize QML template path.
             */
            static const QString menuElementSize;

            /*!
             * \brief menuElementSizeView QML template path.
             */
            static const QString menuElementSizeView;

            /*!
             * \brief information QML template path.
             */
            static const QString information;

            /*!
             * \brief informationProperty QML template path.
             */
            static const QString informationProperty;

            /*!
             * \brief informationElement QML template path.
             */
            static const QString informationElement;

            /*!
             * \brief informationElementView QML template path.
             */
            static const QString informationElementView;

            /*!
             * \brief informationIcon QML template path.
             */
            static const QString informationIcon;

            /*!
             * \brief ink QML template path.
             */
            static const QString ink;

            /*!
             * \brief inkElement QML template path.
             */
            static const QString inkElement;
        };

        /*!
         * \brief The InkView class.
         */
        class InkView
        {
        public:

            /*!
             * \brief colorOption keyword of ink template.
             */
            static const QString colorOption;

            /*!
             * \brief textOption keyword of ink template.
             */
            static const QString textOption;

        };

        /*!
         * \brief The InformationView class.
         */
        class InformationView
        {
        public:

            /*!
             * \brief iconOption keyword of information template.
             */
            static const QString iconOption;

            /*!
             * \brief titleOption keyword of information template.
             */
            static const QString titleOption;

            /*!
             * \brief id keyword of information template.
             */
            static const QString id;

            /*!
             * \brief rowElements keyword of information template.
             */
            static const QString rowElements;

            /*!
             * \brief colElements keyword of information template.
             */
            static const QString colElements;

            /*!
             * \brief rowElementRol keyword of information template.
             */
            static const QString rowElementRol;

            /*!
             * \brief colElementRol keyword of information template.
             */
            static const QString colElementRol;

            /*!
             * \brief iconResize keyword of information template.
             */
            static const QString iconResize;

        };

        /*!
         * \brief The MenuView class.
         */
        class MenuView
        {
        public:

            /*!
             * \brief marginRight keyword of menu template.
             */
            static const QString marginRight;

            /*!
             * \brief marginLeft keyword of menu template.
             */
            static const QString marginLeft;

            /*!
             * \brief marginBottom keyword of menu template.
             */
            static const QString marginBottom;

            /*!
             * \brief marginTop keyword of menu template.
             */
            static const QString marginTop;

            /*!
             * \brief image keyword of menu template.
             */
            static const QString image;

            /*!
             * \brief name keyword of menu template.
             */
            static const QString name;

        };

};

    /*!
     * \brief The General class.
     */
    class General
    {
    public:

        /*!
         * \brief MAX_SCREEN_WIDTH interfaces width maximum value.
         */
        static const int MAX_SCREEN_WIDTH;

        /*!
         * \brief MAX_SCREEN_HEIGHT interfaces height maximum value.
         */
        static const int MAX_SCREEN_HEIGHT;

        /*!
         * \brief MIN_SCREEN_WIDTH interfaces width minimum value.
         */
        static const int MIN_SCREEN_WIDTH;

        /*!
         * \brief MIN_SCREEN_HEIGHT interfaces width minimum value.
         */
        static const int MIN_SCREEN_HEIGHT;

        /*!
         * \brief MAX_NUM_ELEMENTS interfaces number of elements maximum value.
         */
        static const int MAX_NUM_ELEMENTS;

        /*!
         * \brief MIN_NUM_ELEMENTS interfaces number of elements minimum value.
         */
        static const int MIN_NUM_ELEMENTS;

        /*!
         * \brief MAX_COLS interfaces columns maximum value.
         */
        static const int MAX_COLS;

        /*!
         * \brief MAX_ROWS interfaces rows maximum value.
         */
        static const int MAX_ROWS;

        /*!
         * \brief COLS_LIST number of columns on list option.
         */
        static const int COLS_LIST;

        /*!
         * \brief ROWS_LINE number of rows on line option.
         */
        static const int ROWS_LINE;
    };

};



#endif // CONSTANTS_H
