#include "core/UBApplication.h" #include "customWidgets/UBGlobals.h" #include "frameworks/UBFileSystemUtils.h" #include "UBTeacherBarPreviewWidget.h" UBTeacherBarPreviewMedia::UBTeacherBarPreviewMedia(QWidget* parent, const char* name) : QWidget(parent) { setObjectName(name); mWidget = new UBWidgetList(parent); mLayout.addWidget(mWidget); setLayout(&mLayout); mWidgetList.clear(); } UBTeacherBarPreviewMedia::~UBTeacherBarPreviewMedia() { DELETEPTR(mWidget); } void UBTeacherBarPreviewMedia::cleanMedia() { foreach(QWidget* eachWidget, mWidgetList.keys()){ if(QString(eachWidget->metaObject()->className()).contains("UBDraggable")){ mWidget->removeWidget(eachWidget); delete eachWidget; eachWidget = NULL; } else{ mWidget->removeWidget(eachWidget); } } mWidgetList.clear(); } void UBTeacherBarPreviewMedia::loadWidgets(QList pWidgetsList, bool isResizable) { foreach(QWidget*eachWidget, pWidgetsList){ mWidget->addWidget(eachWidget); mWidgetList[eachWidget]="DRAG UNAVAILABLE"; } } int UBTeacherBarPreviewMedia::loadMedia(QStringList pMedias) { int addedMedia = 0; // foreach(QString eachString, pMedias){ // if(!eachString.isEmpty()){ // QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(eachString); // if(mimeType.contains("image")){ // UBDraggableLabel* label = new UBDraggableLabel(); // label->loadImage(eachString); // mWidget->addWidget(label); // mWidgetList[label]=eachString; // addedMedia += 1; // } // else if(mimeType.contains("video") || mimeType.contains("audio")){ // UBDraggableMediaPlayer* mediaPlayer = new UBDraggableMediaPlayer(); // mediaPlayer->setFile(eachString); // mWidget->addWidget(mediaPlayer); // mWidgetList[mediaPlayer] = eachString; // addedMedia += 1; // } // else{ // qWarning() << "pMediaPath" << eachString; // qWarning() << "bad idea to come here"; // } // } // } return addedMedia; } // ----------------------------------------------------------------------------------------------- UBActionPreview::UBActionPreview(QWidget *parent, const char *name):QWidget(parent) , mpOwner(NULL) , mpContent(NULL) { setObjectName(name); setLayout(&mLayout); mpOwner = new QLabel(this); mpOwner->setObjectName("UBActionPreviewOwner"); mOwnerLayout.addWidget(mpOwner, 0); mOwnerLayout.addStretch(1); mLayout.addLayout(&mOwnerLayout); mpContent = new QLabel(this); mpContent->setObjectName("UBActionPreviewContent"); mpContent->setWordWrap(true); mLayout.addWidget(mpContent); setContentsMargins(-9, -9, -9, -9); } UBActionPreview::~UBActionPreview() { if(NULL != mpOwner){ delete mpOwner; mpOwner = NULL; } if(NULL != mpContent){ delete mpContent; mpContent = NULL; } } void UBActionPreview::setOwner(const QString &owner) { if(NULL != mpOwner && NULL != mpContent){ switch(owner.toInt()){ case eActionOwner_Teacher: mpOwner->setText(tr("Teacher")); mpContent->setStyleSheet("background:lightblue; border:lightblue;"); break; case eActionOwner_Student: mpOwner->setText(tr("Student")); mpContent->setStyleSheet("background:lightgreen; border:lightgreen;"); break; } } } void UBActionPreview::setContent(const QString &content) { if(NULL != mpContent){ mpContent->setText(content); } } // ------------------------------------------------------------------------------------------------------------------- UBTBPreviewContainer::UBTBPreviewContainer(QWidget *parent, const char *name):UBWidgetList(parent) { setObjectName(name); } UBTBPreviewContainer::~UBTBPreviewContainer() { } // ------------------------------------------------------------------------------------ UBTeacherBarPreviewWidget::UBTeacherBarPreviewWidget(UBTeacherBarDataMgr* pDataMgr, QWidget *parent, const char *name):QWidget(parent) , mpEditButton(NULL) , mpTitle(NULL) , mpDuration(NULL) , mpActionsLabel(NULL) , mpMediaLabel(NULL) , mpCommentsLabel(NULL) , mpComments(NULL) , mpLinksLabel(NULL) , mpContentContainer(NULL) { setObjectName(name); mpDataMgr = pDataMgr; setLayout(&mLayout); setAttribute(Qt::WA_StyledBackground, true); setStyleSheet(UBApplication::globalStyleSheet()); // Build the Preview widget // Title + duration mpTitle = new QLabel(this); mpTitle->setObjectName("UBTeacherBarPreviewTitle"); mpTitle->setWordWrap(true); mpTitle->setAlignment(Qt::AlignCenter); mpDuration = new QLabel(this); mTitleDurationLayout.addWidget(mpTitle, 0); mTitleDurationLayout.addWidget(mpDuration, 1); mLayout.addLayout(&mTitleDurationLayout, 0); mpContentContainer = new UBTBPreviewContainer(this); mLayout.addWidget(mpContentContainer, 1); //mLayout.addWidget(&mMediaViewer, 1); // The next line is disgusting. This is a quickfix that must be reworked later mMediaViewer.setContentsMargins(-9, -9, -9, -9); hideElements(); // Edit button mpEditButton = new QPushButton(tr("Edit infos"), this); mpEditButton->setObjectName("DockPaletteWidgetButton"); mEditLayout.addStretch(1); mEditLayout.addWidget(mpEditButton, 0); mEditLayout.addStretch(1); mLayout.addLayout(&mEditLayout, 0); connect(mpEditButton, SIGNAL(clicked()), this, SLOT(onEdit())); } UBTeacherBarPreviewWidget::~UBTeacherBarPreviewWidget() { DELETEPTR(mpLinksLabel); DELETEPTR(mpComments); DELETEPTR(mpTitle); DELETEPTR(mpDuration); DELETEPTR(mpActionsLabel); DELETEPTR(mpMediaLabel); DELETEPTR(mpCommentsLabel); DELETEPTR(mpContentContainer); DELETEPTR(mpEditButton); } void UBTeacherBarPreviewWidget::onEdit() { emit showEditMode(); } void UBTeacherBarPreviewWidget::setTitle(const QString &title) { if(NULL != mpTitle){ mpTitle->setText(title); } } void UBTeacherBarPreviewWidget::setComments(const QString &comments) { if("" != comments){ mWidgets.clear(); mpComments->setText(comments); mpComments->setVisible(true); mpCommentsLabel->setVisible(true); mWidgets << mpCommentsLabel; mMediaViewer.loadWidgets(mWidgets, false); mWidgets.clear(); mWidgets << mpComments; mMediaViewer.loadWidgets(mWidgets, true); } } void UBTeacherBarPreviewWidget::clean() { mMediaViewer.cleanMedia(); foreach(QWidget* eachWidget, mStoredWidgets){ delete eachWidget; eachWidget = NULL; } mStoredWidgets.clear(); hideElements(); } void UBTeacherBarPreviewWidget::hideElements() { mpActionsLabel = new QLabel(tr("Actions"), this); mpActionsLabel->setObjectName("UBTeacherBarPreviewSubtitle"); mpMediaLabel = new QLabel(tr("Medias"), this); mpMediaLabel->setObjectName("UBTeacherBarPreviewSubtitle"); mpCommentsLabel = new QLabel(tr("Comments"), this); mpCommentsLabel->setObjectName("UBTeacherBarPreviewSubtitle"); mpComments = new QLabel(this); mpComments->setWordWrap(true); mpComments->setObjectName("UBTeacherBarPreviewComments"); mpLinksLabel = new QLabel(tr("Links"), this); mpLinksLabel->setObjectName("UBTeacherBarPreviewSubtitle"); mpActionsLabel->setVisible(false); mpMediaLabel->setVisible(false); mpCommentsLabel->setVisible(false); mpComments->setVisible(false); mpLinksLabel->setVisible(false); } void UBTeacherBarPreviewWidget::setActions(QStringList actions) { if(!actions.empty()){ mWidgets.clear(); mpActionsLabel->setVisible(true); mWidgets << mpActionsLabel; mediaViewer()->loadWidgets(mWidgets,false); mWidgets.clear(); foreach(QString action, actions){ QStringList desc = action.split(';'); if(2 <= desc.size()){ QString owner = desc.at(0); QString act = desc.at(1); mpTmpAction = new UBActionPreview(this); mpTmpAction->setOwner(owner); mpTmpAction->setContent(act); mWidgets << mpTmpAction; } } mMediaViewer.loadWidgets(mWidgets, true); } } void UBTeacherBarPreviewWidget::setLinks(QStringList links) { if(!links.empty()){ mWidgets.clear(); mpLinksLabel->setVisible(true); mWidgets << mpLinksLabel; mMediaViewer.loadWidgets(mWidgets, false); mWidgets.clear(); foreach(QString link, links){ mpTmpLink = new QLabel(link, this); mpTmpLink->setOpenExternalLinks(true); mWidgets << mpTmpLink; } mMediaViewer.loadWidgets(mWidgets, true); } } void UBTeacherBarPreviewWidget::loadInfos(sTeacherBarInfos *infos) { if(NULL != infos){ setTitle(infos->title); mediaViewer()->loadMedia(infos->medias); // Add the comments //setComments(); } }