Commit 3af42770 authored by Claudio Valerio's avatar Claudio Valerio

firsts guid improvements for the teacher guide

parent faef4407
......@@ -347,5 +347,10 @@
<file>images/licenses/ccbyncsa.png</file>
<file>images/licenses/ccbynd.png</file>
<file>images/licenses/ccbysa.png</file>
<file>images/teacherGuide/audio.png</file>
<file>images/teacherGuide/image.png</file>
<file>images/teacherGuide/link.png</file>
<file>images/teacherGuide/movie.png</file>
<file>images/teacherGuide/w3c.png</file>
</qresource>
</RCC>
......@@ -3,7 +3,8 @@ QWidget#documentNavigator,
QWidget#UBLibPathViewer,
QWidget#UBLibNavigatorWidget,
QWidget#UBLibItemProperties,
QWidget#UBDownloadWidget
QWidget#UBDownloadWidget,
QWidget#UBTeacherGuideWidget
{
background: #EEEEEE;
border-radius: 10px;
......@@ -41,9 +42,11 @@ QLabel#DockPaletteWidgetTitle
font-weight:bold;
}
QLineEdit#DockPaletteWidgetLineEdit
QLineEdit#UBTGLineEdit,
QLabel#UBTGMediaDropMeLabel
{
background: white;
border: 1 solid #999999;
border-radius : 10px;
padding: 2px;
}
......@@ -200,4 +203,59 @@ QSlider::groove::horizontal
height:10px;
border-radius:5px;
border:1px solid #555555;
}
\ No newline at end of file
}
QLabel#UBTGEditionDocumentTitle
{
color: black;
font-size : 14px;
font-weight:bold;
}
QLabel#UBTGPresentationDocumentTitle
{
color: black;
font-size : 12px;
font-weight:bold;
}
QLabel#UBTGEditionPageNumberLabel
{
color: black;
font-size : 12px;
font-weight:bold;
}
QLabel#UBTGPresentationPageNumberLabel
{
color: black;
font-size : 12px;
}
UBTGAdaptableText#UBTGEditionPageTitle,
UBTGAdaptableText#UBTGEditionComment
{
color: black;
font-size : 12px;
}
UBTGAdaptableText#UBTGPresentationPageTitle
{
color: black;
font-size:16px;
font-weight:bold;
border : none;
}
UBTGAdaptableText#UBTGPresentationComment
{
color: black;
font-size:12px;
border : none;
}
QFrame#UBTGEditionSeparator,
QFrame#UBTGPresentationSepartor
{
background-color: #cccccc;
}
#include <QApplication>
#include <QStyleOptionButton>
#include <QStyledItemDelegate>
#include <QStyleOptionViewItem>
#include <QPainter>
#include <QModelIndex>
#include "UBTGWidgetTreeDelegate.h"
UBTGWidgetTreeDelegate::UBTGWidgetTreeDelegate(QObject *parent) :
QStyledItemDelegate(parent)
{
//NOOP
}
void UBTGWidgetTreeDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
if(index.data(Qt::UserRole) != eUBTGAddSubItemWidgetType_None){
painter->setBackgroundMode(Qt::OpaqueMode);
painter->setBackground(QBrush(QColor(Qt::red)));
QStyleOptionButton styleButton;
styleButton.text = "pipo";
styleButton.rect = option.rect;
QApplication::style()->drawControl(QStyle::CE_PushButtonLabel,&styleButton,painter);
}
else
QStyledItemDelegate::paint(painter,option,index);
}
QSize UBTGWidgetTreeDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QSize size = QStyledItemDelegate::sizeHint(option,index);
return size;
}
#ifndef UBTGWIDGETTREEDELEGATE_H
#define UBTGWIDGETTREEDELEGATE_H
class QPainter;
class QStyleOptionViewItem;
class QModelIndex;
#include <QStyledItemDelegate>
typedef enum
{
eUBTGAddSubItemWidgetType_None,
eUBTGAddSubItemWidgetType_Action ,
eUBTGAddSubItemWidgetType_Media,
eUBTGAddSubItemWidgetType_Url
}eUBTGAddSubItemWidgetType;
class UBTGWidgetTreeDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
explicit UBTGWidgetTreeDelegate(QObject *parent = 0);
virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
signals:
public slots:
};
#endif // UBTGWIDGETTREEDELEGATE_H
This diff is collapsed.
......@@ -23,7 +23,7 @@ class QVBoxLayout;
class QPushButton;
#include "UBTeacherGuideWidgetsTools.h"
#include "UBTGWidgetTreeDelegate.h"
/***************************************************************************
* class UBTeacherGuideEditionWidget *
......@@ -39,6 +39,8 @@ public:
public slots:
void onAddItemClicked(QTreeWidgetItem* widget, int column);
void onActiveSceneChanged();
void showEvent(QShowEvent* event);
private:
QList<QTreeWidgetItem*> getChildrenList(QTreeWidgetItem* widgetItem);
......@@ -46,13 +48,16 @@ private:
QVBoxLayout* mpLayout;
QLabel* mpDocumentTitle;
QLabel* mpPageNumberLabel;
UBTGAdaptableText* mpPageTitle;
UBTGAdaptableText* mpComment;
QFrame* mpSeparator;
QTreeWidget* mpTreeWidget;
QTreeWidgetItem* mpRootWidgetItem;
UBAddItem* mpAddAnActionItem;
UBAddItem* mpAddAMediaItem;
UBAddItem* mpAddALinkItem;
UBTGWidgetTreeDelegate* mpTreeDelegate;
};
......@@ -67,9 +72,11 @@ public:
explicit UBTeacherGuidePresentationWidget(QWidget* parent, const char* name = "UBTeacherGuidePresentationName");
~UBTeacherGuidePresentationWidget();
void showData(QVector<tUBGEElementNode*>data);
void cleanData();
public slots:
void onAddItemClicked(QTreeWidgetItem* widget, int column);
void onActiveSceneChanged();
private:
void createMediaButtonItem();
......@@ -78,7 +85,9 @@ private:
UBTGAdaptableText* mpComment;
QVBoxLayout* mpLayout;
QHBoxLayout* mpButtonTitleLayout;
QLabel* mpDocumentTile;
QLabel* mpDocumentTitle;
QLabel* mpPageNumberLabel;
QFrame* mpSeparator;
QPushButton* mpModePushButton;
QTreeWidget* mpTreeWidget;
QTreeWidgetItem* mpRootWidgetItem;
......@@ -107,7 +116,7 @@ public slots:
private:
UBTeacherGuideEditionWidget* mpEditionWidget;
UBTeacherGuidePresentationWidget* mpPresentationWidget;
QVector<tUBGEElementNode*>currentData;
QVector<tUBGEElementNode*>mCurrentData;
};
......
......@@ -23,8 +23,10 @@
#include <QWebSettings>
#include <QDomElement>
#include <QDomDocument>
#include <QApplication>
#include "UBTeacherGuideWidgetsTools.h"
#include "UBTGWidgetTreeDelegate.h"
#include "globals/UBGlobals.h"
......@@ -40,6 +42,9 @@ UBAddItem::UBAddItem(const QString &string, int addSubItemWidgetType, QTreeWidge
setText(0,string);
setData(0,Qt::UserRole,QVariant(addSubItemWidgetType));
setData(1,Qt::UserRole,QVariant(addSubItemWidgetType));
setData(0,Qt::BackgroundRole,QVariant(QColor(200,200,200)));
setData(1,Qt::BackgroundRole,QVariant(QColor(200,200,200)));
setData(0,Qt::FontRole,QVariant(QFont(QApplication::font().family(),12)));
}
UBAddItem::~UBAddItem()
......@@ -56,20 +61,21 @@ UBTGActionWidget::UBTGActionWidget(QTreeWidgetItem* widget, QWidget* parent, con
, mpTask(NULL)
{
setObjectName(name);
SET_STYLE_SHEET();
mpLayout = new QVBoxLayout(this);
mpOwner = new QComboBox(this);
mpOwner->setObjectName("DockPaletteWidgetComboBox");
mpOwner->setMinimumHeight(22);
QStringList qslOwner;
qslOwner << tr("Teacher") << tr("Student");
mpOwner->insertItems(0,qslOwner);
mpOwner->setCurrentIndex(0);
connect(mpOwner,SIGNAL(currentIndexChanged(int)),this,SLOT(onOwnerChange(int)));
mpTask = new UBTGAdaptableText(widget,this);
mpTask->setAcceptRichText(true);
mpTask->setTextColor(QColor().green());
mpTask->setObjectName("ActionWidgetTaskTextEdit");
mpLayout->addWidget(mpOwner,0);
mpLayout->addWidget(mpTask,1);
setStyleSheet( "QWidget {background-color: white}");
}
UBTGActionWidget::~UBTGActionWidget()
......@@ -79,20 +85,12 @@ UBTGActionWidget::~UBTGActionWidget()
DELETEPTR(mpLayout);
}
void UBTGActionWidget::onOwnerChange(int ownerId)
{
if(ownerId == 0)
mpTask->setTextColor(QColor().red());
else
mpTask->setTextColor(QColor().green());
}
tUBGEElementNode* UBTGActionWidget::saveData()
{
tUBGEElementNode* result = new tUBGEElementNode();
result->type = "action";
result->attributes.insert("owner",QString(mpOwner->currentIndex()));
result->attributes.insert("task",mpTask->toPlainText());
result->attributes.insert("owner",QString("%0").arg(mpOwner->currentIndex()));
result->attributes.insert("task",mpTask->text());
return result;
}
......@@ -102,17 +100,66 @@ tUBGEElementNode* UBTGActionWidget::saveData()
UBTGAdaptableText::UBTGAdaptableText(QTreeWidgetItem* widget, QWidget* parent, const char* name):QTextEdit(parent)
, mBottomMargin(5)
, mpTreeWidgetItem(widget)
, mMinimumHeight(20)
, mHasPlaceHolder(false)
{
setObjectName(name);
setStyleSheet( "QWidget {background-color: white}");
setStyleSheet( "QWidget {background: white; border:1 solid #999999; border-radius : 10px; padding: 2px;}");
connect(this,SIGNAL(textChanged()),this,SLOT(onTextChanged()));
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setMinimumHeight(mMinimumHeight);
}
void UBTGAdaptableText::setPlaceHolderText(QString text)
{
// the space addition is to make this string unique and check against it to know
// if we are talking about a typed string or the placeholder string
mPlaceHolderText = text + " ";
setTextColor(QColor(Qt::lightGray));
setText(mPlaceHolderText);
onTextChanged();
if(isHidden())
show();
mHasPlaceHolder = true;
}
void UBTGAdaptableText::focusInEvent(QFocusEvent *e)
{
if(mHasPlaceHolder && toPlainText() == mPlaceHolderText){
setText("");
setTextColor(QColor(Qt::black));
}
e->accept();
}
void UBTGAdaptableText::focusOutEvent(QFocusEvent *e)
{
if(mHasPlaceHolder && toPlainText().length() == 0){
setTextColor(QColor(Qt::lightGray));
setText(mPlaceHolderText);
}
e->accept();
}
QString UBTGAdaptableText::text()
{
QString result = toPlainText();
if(mHasPlaceHolder && result == mPlaceHolderText)
return "";
return result;
}
void UBTGAdaptableText::onTextChanged()
{
setFixedHeight(document()->size().height()+mBottomMargin);
if(document()->size().height() < mMinimumHeight)
setFixedHeight(mMinimumHeight);
else
setFixedHeight(document()->size().height()+mBottomMargin);
updateGeometry();
//to trig the widget item to resize it
if(mpTreeWidgetItem){
......@@ -120,7 +167,6 @@ void UBTGAdaptableText::onTextChanged()
mpTreeWidgetItem->setExpanded(true);
setFocus();
}
}
void UBTGAdaptableText::showText(const QString & text)
......@@ -131,6 +177,8 @@ void UBTGAdaptableText::showText(const QString & text)
hide();
setReadOnly(true);
onTextChanged();
if(isHidden())
show();
}
void UBTGAdaptableText::bottomMargin(int newValue)
......@@ -155,8 +203,8 @@ UBTGMediaWidget::UBTGMediaWidget(QTreeWidgetItem* widget, QWidget* parent,const
, mIsPresentationMode(false)
{
setObjectName(name);
setStyleSheet( "QWidget {background-color: white}");
mpDropMeWidget = new QLabel();
mpDropMeWidget->setObjectName("UBTGMediaDropMeLabel");
mpDropMeWidget->setText(tr("drop media here ..."));
mpDropMeWidget->setAlignment(Qt::AlignCenter);
setAcceptDrops(true);
......@@ -176,6 +224,7 @@ UBTGMediaWidget::UBTGMediaWidget(QString relativePath, QTreeWidgetItem* widget,
, mpWebView(NULL)
, mRelativePath(relativePath)
, mIsPresentationMode(true)
, mMediaType("")
{
setObjectName(name);
setAcceptDrops(false);
......@@ -202,8 +251,9 @@ tUBGEElementNode* UBTGMediaWidget::saveData()
return 0;
tUBGEElementNode* result = new tUBGEElementNode();
result->type = "media";
result->attributes.insert("title",mpTitle->toPlainText());
result->attributes.insert("title",mpTitle->text());
result->attributes.insert("relativePath",mRelativePath);
result->attributes.insert("mediaType",mMediaType);
return result;
}
......@@ -218,15 +268,20 @@ void UBTGMediaWidget::createWorkWidget(QString& path)
qDebug() << mimeType;
bool setMedia = true;
if(mimeType.contains("audio") || mimeType.contains("video")){
mMediaType = mimeType.contains("audio")? "audio":"movie";
mpMediaWidget = new UBMediaWidget(mimeType.contains("audio")?eMediaType_Audio:eMediaType_Video);
mpMediaWidget->setFile(path);
}
else if(mimeType.contains("image")){
mMediaType = "image";
mpMediaLabelWidget = new QLabel();
mpMediaLabelWidget->setPixmap(QPixmap(QUrl(path).toLocalFile()));
QPixmap pixmap = QPixmap(QUrl(path).toLocalFile());
pixmap = pixmap.scaledToWidth(mpTreeWidgetItem->treeWidget()->size().width());
mpMediaLabelWidget->setPixmap(pixmap);
mpMediaLabelWidget->setScaledContents(true);
}
else if(mimeType.contains("application")){
mMediaType = "w3c";
mpWebView = new QWebView(0);
mpWebView->setAcceptDrops(false);
mpWebView->settings()->setAttribute(QWebSettings::JavaEnabled, true);
......@@ -258,6 +313,7 @@ void UBTGMediaWidget::createWorkWidget(QString& path)
mpLayout->addWidget(mpMediaLabelWidget);
}
else if (mpMediaWidget){
mpMediaWidget->setMaximumHeight(mpTreeWidgetItem->treeWidget()->size().width());
mpMediaWidget->setParent(mpWorkWidget);
mpLayout->addWidget(mpMediaWidget);
}
......@@ -337,12 +393,14 @@ UBTGUrlWidget::UBTGUrlWidget(QWidget* parent, const char* name ):QWidget(parent)
, mpUrl(NULL)
{
setObjectName(name);
setStyleSheet( "QWidget {background-color: white}");
SET_STYLE_SHEET();
mpLayout = new QVBoxLayout(this);
mpTitle = new QLineEdit("title",this);
mpUrl = new QLineEdit("url",this);
mpTitle = new QLineEdit(this);
mpTitle->setObjectName("UBTGLineEdit");
mpTitle->setPlaceholderText(tr("Insert link title here..."));
mpUrl = new QLineEdit(this);
mpUrl->setObjectName("UBTGLineEdit");
mpUrl->setPlaceholderText("http://");
mpLayout->addWidget(mpTitle);
mpLayout->addWidget(mpUrl);
}
......
......@@ -65,17 +65,18 @@ public slots:
class UBTGActionWidget : public QWidget, public iUBTGSavableData
{
Q_OBJECT
public:
explicit UBTGActionWidget(QTreeWidgetItem* widget, QWidget* parent = 0,const char* name = "UBActionWidget");
explicit UBTGActionWidget(QTreeWidgetItem* widget, QWidget* parent = 0,const char* name = "UBTGActionWidget");
~UBTGActionWidget();
void update();
tUBGEElementNode* saveData();
public slots:
void onOwnerChange(int ownerId);
private:
QVBoxLayout* mpLayout;
QComboBox* mpOwner;
UBTGAdaptableText* mpTask;
protected:
QTreeWidgetItem* mpTreeWidgetItem;
};
......@@ -88,13 +89,21 @@ public:
explicit UBTGAdaptableText(QTreeWidgetItem* widget = 0, QWidget *parent = 0, const char* name = "UBTGAdaptableText");
void showText(const QString & text);
void bottomMargin(int newValue);
signals:
void setPlaceHolderText(QString text);
QString text();
public slots:
void onTextChanged();
protected:
void focusInEvent(QFocusEvent *e);
void focusOutEvent(QFocusEvent *e);
private:
int mBottomMargin;
QTreeWidgetItem* mpTreeWidgetItem;
int mMinimumHeight;
bool mHasPlaceHolder;
QString mPlaceHolderText;
};
......@@ -106,10 +115,12 @@ public:
UBTGMediaWidget(QString relativePath, QTreeWidgetItem* widget = 0, QWidget* parent = 0, const char* name = "UBTGMediaWidget");
~UBTGMediaWidget();
tUBGEElementNode* saveData();
protected:
void dragEnterEvent(QDragEnterEvent* event);
void dropEvent(QDropEvent* event);
void mousePressEvent(QMouseEvent* event);
private:
void parseMimeData(const QMimeData* pMimeData);
void createWorkWidget(QString& path);
......@@ -125,6 +136,7 @@ private:
QWebView* mpWebView;
QString mRelativePath;
bool mIsPresentationMode;
QString mMediaType;
};
class UBTGUrlWidget : public QWidget , public iUBTGSavableData
......
......@@ -50,7 +50,8 @@ HEADERS += src/gui/UBThumbnailView.h \
src/gui/UBDockTeacherGuideWidget.h \
src/gui/UBTeacherGuideWidget.h \
src/gui/UBTeacherGuideWidgetsTools.h \
src/gui/UBTeacherGuideDelegate.h
src/gui/UBTeacherGuideDelegate.h \
src/gui/UBTGWidgetTreeDelegate.h
SOURCES += src/gui/UBThumbnailView.cpp \
src/gui/UBFloatingPalette.cpp \
......@@ -103,7 +104,8 @@ SOURCES += src/gui/UBThumbnailView.cpp \
src/gui/UBDockTeacherGuideWidget.cpp \
src/gui/UBTeacherGuideWidget.cpp \
src/gui/UBTeacherGuideWidgetsTools.cpp \
src/gui/UBTeacherGuideDelegate.cpp
src/gui/UBTeacherGuideDelegate.cpp \
src/gui/UBTGWidgetTreeDelegate.cpp
win32 {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment