You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
228 lines
5.3 KiB
228 lines
5.3 KiB
#ifndef UBTEACHERBARWIDGET_H
|
|
#define UBTEACHERBARWIDGET_H
|
|
|
|
class UBMediaPlayer;
|
|
|
|
#include <QWidget>
|
|
#include <QVBoxLayout>
|
|
#include <QHBoxLayout>
|
|
#include <QLabel>
|
|
#include <QTextEdit>
|
|
#include <QLineEdit>
|
|
#include <QCheckBox>
|
|
#include <QTabWidget>
|
|
#include <QButtonGroup>
|
|
#include <QPushButton>
|
|
#include <QComboBox>
|
|
#include <QStackedWidget>
|
|
|
|
#include "UBDockPaletteWidget.h"
|
|
#include "customWidgets/UBWidgetList.h"
|
|
#include "interfaces/IDropable.h"
|
|
|
|
#define LABEL_MINWIDHT 80
|
|
|
|
typedef enum{
|
|
eDuration_Quarter,
|
|
eDuration_Half,
|
|
eDuration_ThreeQuarter
|
|
}eDuration;
|
|
|
|
typedef enum{
|
|
eActionOwner_Teacher,
|
|
eActionOwner_Student
|
|
}eActionOwner;
|
|
|
|
class UBTeacherStudentAction : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
UBTeacherStudentAction(QWidget* parent=0, const char* name="UBTeacherStudentAction");
|
|
~UBTeacherStudentAction();
|
|
QString comboValue();
|
|
QString text();
|
|
void setComboValue(int value);
|
|
void setText(const QString& text);
|
|
|
|
private:
|
|
QTextEdit* mpText;
|
|
QHBoxLayout* mpLayout;
|
|
QVBoxLayout* mpComboLayout;
|
|
QComboBox* mpCombo;
|
|
};
|
|
|
|
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 UBUrlWidget : public QWidget
|
|
{
|
|
public:
|
|
UBUrlWidget(QWidget* parent=0, const char* name="UBUrlWidget");
|
|
~UBUrlWidget();
|
|
|
|
QString url();
|
|
void setUrl(const QString& url);
|
|
|
|
private:
|
|
QVBoxLayout* mpLayout;
|
|
QHBoxLayout* mpLabelLayout;
|
|
QHBoxLayout* mpTitleLayout;
|
|
QLabel* mpUrlLabel;
|
|
QLineEdit* mpUrl;
|
|
|
|
QLabel* mpTitleLabel;
|
|
QLineEdit* mpTitle;
|
|
};
|
|
|
|
class UBActionPreview : public QWidget
|
|
{
|
|
public:
|
|
UBActionPreview(QWidget* parent=0, const char* name="UBActionPreview");
|
|
~UBActionPreview();
|
|
void setOwner(const QString& owner);
|
|
void setContent(const QString& content);
|
|
|
|
private:
|
|
QLabel* mpOwner;
|
|
QLabel* mpContent;
|
|
|
|
QVBoxLayout mLayout;
|
|
QHBoxLayout mOwnerLayout;
|
|
};
|
|
|
|
class UBTeacherBarPreviewWidget : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
UBTeacherBarPreviewWidget(QWidget* parent=0, const char* name="UBTeacherBarPreviewWidget");
|
|
~UBTeacherBarPreviewWidget();
|
|
UBTeacherBarPreviewMedia* mediaViewer() {return &mMediaViewer;}
|
|
void setTitle(const QString& title);
|
|
void setDuration(eDuration duration);
|
|
void setComments(const QString& comments);
|
|
void setActions(QStringList actions);
|
|
void setLinks(QStringList links);
|
|
void clean();
|
|
QLabel* mediaLabel() { return mpMediaLabel;}
|
|
|
|
signals:
|
|
void showEditMode();
|
|
|
|
private slots:
|
|
void onEdit();
|
|
|
|
private:
|
|
void hideElements();
|
|
|
|
QVBoxLayout mLayout;
|
|
QHBoxLayout mEditLayout;
|
|
QHBoxLayout mTitleDurationLayout;
|
|
UBTeacherBarPreviewMedia mMediaViewer;
|
|
QList<QWidget*> mWidgets;
|
|
|
|
QPushButton* mpEditButton;
|
|
QLabel* mpTitle;
|
|
QLabel* mpDuration;
|
|
QLabel* mpActionsLabel;
|
|
QLabel* mpMediaLabel;
|
|
QLabel* mpCommentsLabel;
|
|
QLabel* mpComments;
|
|
QLabel* mpLinksLabel;
|
|
QLabel* mpTmpLink;
|
|
UBActionPreview* mpTmpAction;
|
|
};
|
|
|
|
class UBTBMediaContainer : public UBWidgetList
|
|
, public IDropable
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
UBTBMediaContainer(QWidget* parent=0, const char* name="UBTBMediaContainer");
|
|
~UBTBMediaContainer();
|
|
QStringList mediaUrls();
|
|
QWidget* generateMediaWidget(const QString& url);
|
|
void cleanMedias();
|
|
|
|
signals:
|
|
void mediaDropped(const QString& url);
|
|
|
|
protected:
|
|
void dropEvent(QDropEvent* pEvent);
|
|
void dragEnterEvent(QDragEnterEvent* pEvent);
|
|
void dragMoveEvent(QDragMoveEvent* pEvent);
|
|
void dragLeaveEvent(QDragLeaveEvent* pEvent);
|
|
|
|
private:
|
|
void addMedia(const QString& mediaPath);
|
|
|
|
QStringList mMediaList;
|
|
};
|
|
|
|
class UBTeacherBarWidget : public UBDockPaletteWidget
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
UBTeacherBarWidget(QWidget* parent=0, const char* name="UBTeacherBarWidget");
|
|
~UBTeacherBarWidget();
|
|
|
|
private slots:
|
|
void saveContent();
|
|
void loadContent();
|
|
void onValueChanged();
|
|
void onTitleTextChanged(const QString& text);
|
|
void onActionButton();
|
|
void onLinkButton();
|
|
void onShowEditMode();
|
|
void onMediaDropped(const QString& url);
|
|
|
|
private:
|
|
void clearWidgetLists();
|
|
bool isEmpty();
|
|
QVBoxLayout* mpLayout;
|
|
QHBoxLayout* mpTitleLayout;
|
|
QHBoxLayout* mpDurationLayout;
|
|
QLabel* mpTitleLabel;
|
|
QLabel* mpDurationLabel;
|
|
QLineEdit* mpTitle;
|
|
QLabel* mpMediaLabel;
|
|
QWidget* mpContainer;
|
|
QVBoxLayout* mpContainerLayout;
|
|
QCheckBox* mpDuration1;
|
|
QCheckBox* mpDuration2;
|
|
QCheckBox* mpDuration3;
|
|
QButtonGroup* mpDurationButtons;
|
|
QLabel* mpActionLabel;
|
|
UBWidgetList* mpActions;
|
|
QPushButton* mpActionButton;
|
|
QHBoxLayout* mpActionLayout;
|
|
QLabel* mpLinkLabel;
|
|
UBWidgetList* mpLinks;
|
|
QPushButton* mpLinkButton;
|
|
QHBoxLayout* mpLinkLayout;
|
|
QLabel* mpCommentLabel;
|
|
QTextEdit* mpComments;
|
|
QStackedWidget* mpStackWidget;
|
|
UBTeacherBarPreviewWidget* mpPreview;
|
|
|
|
QVector<UBTeacherStudentAction*> mActionList;
|
|
QVector<UBUrlWidget*> mUrlList;
|
|
QVector<QWidget*> mMediaList;
|
|
|
|
UBTBMediaContainer* mpMediaContainer;
|
|
};
|
|
|
|
#endif // UBTEACHERBARWIDGET_H
|
|
|