/****************************************************************************
** This file is part of Sync-my-L2P.
**
** Sync-my-L2P is free software: you can redistribute it and/or modify
** it under the terms of the GNU Lesser General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Sync-my-L2P 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 Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public License
** along with Sync-my-L2P.  If not, see <http://www.gnu.org/licenses/>.
****************************************************************************/

#ifndef STRUKTURELEMENT_H
#define STRUKTURELEMENT_H
#include <QUrl>
#include <QString>
#include <QtGlobal>
#include <QTreeWidgetItem>
#include <QStandardItem>
#include <QStringBuilder>
#include <QClipboard>
#include <QApplication>
#include <QDateTime>

enum MyItemType
{
    semesterItem    = 1000,
    courseItem      = 1001,
    directoryItem   = 1002,
    fileItem        = 1003
};

enum MyItemDataRole
{
    sizeRole            = 32,
    urlRole             = 33,
    dateRole            = 34,
    includeRole         = 35,
    synchronisedRole    = 36
};

enum synchroniseStatus
{
    NOT_SYNCHRONISED = 0,
    SYNCHRONISED     = 1,
    NOW_SYNCHRONISED = 2

};

class Structureelement : public QStandardItem
{
public:
    Structureelement(QString name, QUrl url, MyItemType typeEX);

    int type() const;

    bool operator< (const QStandardItem& other) const;

    void setData(const QVariant &value, int role = Qt::UserRole + 1 );
    QVariant data(int role = Qt::UserRole + 1) const;

protected:
    qint32      size;
    bool        included;
    QUrl        url;
    QDateTime   time;
    MyItemType  typeEX;
    enum synchroniseStatus  synchronised;


};

#endif // STRUKTURELEMENT_H