#ifndef UBTEACHERBARPREVIEWWIDGET_H
#define UBTEACHERBARPREVIEWWIDGET_H

#include <QLabel>
#include <QVBoxLayout>
#include <QPushButton>

#include "core/UBPersistenceManager.h"
#include "customWidgets/UBWidgetList.h"
#include "customWidgets/UBMediaWidget.h"
#include "customWidgets/UBDraggableMedia.h"
#include "customWidgets/UBDraggableLabel.h"
#include "UBTeacherBarDataMgr.h"

class UBTeacherBarPreviewMedia : public QWidget
{
    Q_OBJECT
public:
    UBTeacherBarPreviewMedia(QWidget* parent=0, const char* name="UBTeacherBarPreviewMedia");
    ~UBTeacherBarPreviewMedia();
//    int loadMedia(QStringList pMedias);
    void loadWidgets(QList<QWidget*> pWidgetList, bool isResizable = true);
    void cleanMedia();

private:
    UBWidgetList* mWidget;
    QVBoxLayout mLayout;
    QMap<QWidget*,QString>mWidgetList;
};

class UBActionPreview : public QWidget
{
public:
    UBActionPreview(QWidget* parent=0, const char* name="UBActionPreview");
    ~UBActionPreview();
    void setOwner(int owner);
    void setContent(const QString& content);

private:
    QLabel* mpOwner;
    QTextEdit* mpContent;

    QVBoxLayout mLayout;
    QHBoxLayout mOwnerLayout;
};

class UBTBPreviewContainer : public UBWidgetList
{
public:
    UBTBPreviewContainer(QWidget* parent=0, const char* name="UBTBPreviewContainer");
    ~UBTBPreviewContainer();
};

class UBTeacherBarPreviewWidget : public QWidget
{
    Q_OBJECT
public:
    UBTeacherBarPreviewWidget(UBTeacherBarDataMgr* pDataMgr, QWidget* parent=0, const char* name="UBTeacherBarPreviewWidget");
    ~UBTeacherBarPreviewWidget();
    void updateFields();
    void clearFields();

signals:
    void showEditMode();
    void showDocumentPreview();

protected:
    void showEvent(QShowEvent* ev);

private slots:
    void onEdit();
    void onActiveSceneChanged();
    void onDocumentClicked();

private:
    void generateActions();
    void generateMedias();
    void generateLinks();
    void generateComments();

    QVBoxLayout mLayout;
    QVBoxLayout mContainerLayout;
    QHBoxLayout mEditLayout;
    QPushButton* mpEditButton;
    QPushButton* mpDocumentButton;

    QWidget* mpContainer;

    // Titles
    QVBoxLayout mTitleLayout;
    UBTBSeparator mTitleSeparator;
    QWidget* mpTitleContainer;
    QLabel* mpSessionTitle;
    QLabel* mpTitle;
    QLabel* mpTitleLabel;
    QLabel* mpPageNbrLabel;
    UBTBPreviewContainer* mpContentContainer;

    // Schedule
    QLabel* mpScheduleLabel;

    // License
    UBTBSeparator mLicenseSeparator;
    UBTBLicenseWidget* mpLicenseLabel;


    /** Pointer to the datas */
    UBTeacherBarDataMgr* mpDataMgr;
    /** The list of stored widgets */
    QList<QWidget*> mStoredWidgets;
    /** A temporary action widget */
    UBActionPreview* mpTmpAction;
    /** A temporary media widget */
    UBTeacherBarPreviewMedia* mpTmpMedia;
    /** A temporary link */
    QLabel* mpTmpLink;
    /** A temporary comments field */
    QTextEdit* mpTmpComment;
    /** A temporary media object */
    UBDraggableMedia* mTmpMedia;
    /** A temporary label object */
    UBDraggableLabel* mpTmpLabel;
};

#endif // UBTEACHERBARPREVIEWWIDGET_H
