новые иконки в OpenBoard
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.
OpenBoard/src/gui/UBTeacherBarPreviewWidget.cpp

315 lines
9.1 KiB

#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<QWidget*> 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();
}
}