@ -49,16 +49,13 @@
# define UBTG_SEPARATOR_FIXED_HEIGHT 3
typedef enum
{
typedef enum {
eUBTGAddSubItemWidgetType_None ,
eUBTGAddSubItemWidgetType_Action ,
eUBTGAddSubItemWidgetType_Media ,
eUBTGAddSubItemWidgetType_Url
} eUBTGAddSubItemWidgetType ;
/***************************************************************************
* class UBTeacherGuideEditionWidget *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@ -149,7 +146,7 @@ UBTeacherGuideEditionWidget::~UBTeacherGuideEditionWidget()
DELETEPTR ( mpAddAnActionItem ) ;
DELETEPTR ( mpAddAMediaItem ) ;
DELETEPTR ( mpAddALinkItem ) ;
DELETEPTR ( mpTreeWidget )
DELETEPTR ( mpTreeWidget ) ;
DELETEPTR ( mpLayout ) ;
}
@ -172,7 +169,8 @@ void UBTeacherGuideEditionWidget::load(QString element)
QDomDocument doc ( " TeacherGuide " ) ;
doc . setContent ( element ) ;
for ( QDomElement element = doc . documentElement ( ) . firstChildElement ( ) ; ! element . isNull ( ) ; element = element . nextSiblingElement ( ) ) {
for ( QDomElement element = doc . documentElement ( ) . firstChildElement ( ) ;
! element . isNull ( ) ; element = element . nextSiblingElement ( ) ) {
QString tagName = element . tagName ( ) ;
if ( tagName = = " title " )
mpPageTitle - > setInitialText ( element . attribute ( " value " ) ) ;
@ -187,8 +185,6 @@ void UBTeacherGuideEditionWidget::load(QString element)
}
}
QVector < tIDataStorage * > UBTeacherGuideEditionWidget : : save ( int pageIndex )
{
QVector < tIDataStorage * > result ;
@ -204,9 +200,8 @@ QVector<tIDataStorage*> UBTeacherGuideEditionWidget::save(int pageIndex)
data - > name = " title " ;
data - > type = eElementType_UNIQUE ;
data - > attributes . insert ( " value " , mpPageTitle - > text ( ) ) ;
if ( mpPageTitle - > text ( ) . length ( ) ) {
if ( mpPageTitle - > text ( ) . length ( ) )
result < < data ;
}
data = new tIDataStorage ( ) ;
data - > name = " comment " ;
@ -220,13 +215,16 @@ QVector<tIDataStorage*> UBTeacherGuideEditionWidget::save(int pageIndex)
children < < getChildrenList ( mpAddALinkItem ) ;
foreach ( QTreeWidgetItem * widgetItem , children ) {
tUBGEElementNode * node = dynamic_cast < iUBTGSaveData * > ( mpTreeWidget - > itemWidget ( widgetItem , 0 ) ) - > saveData ( ) ;
tUBGEElementNode * node =
dynamic_cast < iUBTGSaveData * > ( mpTreeWidget - > itemWidget (
widgetItem , 0 ) ) - > saveData ( ) ;
if ( node ) {
data = new tIDataStorage ( ) ;
data - > name = node - > name ;
data - > type = eElementType_UNIQUE ;
foreach ( QString currentKey , node - > attributes . keys ( ) )
data - > attributes . insert ( currentKey , node - > attributes . value ( currentKey ) ) ;
data - > attributes . insert ( currentKey ,
node - > attributes . value ( currentKey ) ) ;
result < < data ;
}
}
@ -295,7 +293,9 @@ QVector<tUBGEElementNode*> UBTeacherGuideEditionWidget::getData()
children < < getChildrenList ( mpAddALinkItem ) ;
result < < getPageAndCommentData ( ) ;
foreach ( QTreeWidgetItem * widgetItem , children ) {
tUBGEElementNode * node = dynamic_cast < iUBTGSaveData * > ( mpTreeWidget - > itemWidget ( widgetItem , 0 ) ) - > saveData ( ) ;
tUBGEElementNode * node =
dynamic_cast < iUBTGSaveData * > ( mpTreeWidget - > itemWidget (
widgetItem , 0 ) ) - > saveData ( ) ;
if ( node )
result < < node ;
}
@ -311,23 +311,25 @@ void UBTeacherGuideEditionWidget::onAddItemClicked(QTreeWidgetItem* widget, int
newWidgetItem - > setData ( 1 , Qt : : UserRole , eUBTGAddSubItemWidgetType_None ) ;
newWidgetItem - > setIcon ( 1 , QIcon ( " :images/close.svg " ) ) ;
switch ( addSubItemWidgetType )
{
switch ( addSubItemWidgetType ) {
case eUBTGAddSubItemWidgetType_Action : {
UBTGActionWidget * actionWidget = new UBTGActionWidget ( widget ) ;
if ( element ) actionWidget - > initializeWithDom ( * element ) ;
if ( element )
actionWidget - > initializeWithDom ( * element ) ;
mpTreeWidget - > setItemWidget ( newWidgetItem , 0 , actionWidget ) ;
break ;
}
case eUBTGAddSubItemWidgetType_Media : {
UBTGMediaWidget * mediaWidget = new UBTGMediaWidget ( widget ) ;
if ( element ) mediaWidget - > initializeWithDom ( * element ) ;
if ( element )
mediaWidget - > initializeWithDom ( * element ) ;
mpTreeWidget - > setItemWidget ( newWidgetItem , 0 , mediaWidget ) ;
break ;
}
case eUBTGAddSubItemWidgetType_Url : {
UBTGUrlWidget * urlWidget = new UBTGUrlWidget ( ) ;
if ( element ) urlWidget - > initializeWithDom ( * element ) ;
if ( element )
urlWidget - > initializeWithDom ( * element ) ;
mpTreeWidget - > setItemWidget ( newWidgetItem , 0 , urlWidget ) ;
break ;
}
@ -344,35 +346,46 @@ void UBTeacherGuideEditionWidget::onAddItemClicked(QTreeWidgetItem* widget, int
widget - > setExpanded ( false ) ;
widget - > setExpanded ( true ) ;
}
}
else if ( column = = 1 & & addSubItemWidgetType = = eUBTGAddSubItemWidgetType_None ) {
} else if ( column = = 1
& & addSubItemWidgetType = = eUBTGAddSubItemWidgetType_None ) {
UBTGMediaWidget * media = dynamic_cast < UBTGMediaWidget * > ( mpTreeWidget - > itemWidget ( widget , 0 ) ) ;
if ( media ) media - > removeSource ( ) ;
if ( media )
media - > removeSource ( ) ;
int index = mpTreeWidget - > currentIndex ( ) . row ( ) ;
QTreeWidgetItem * toBeDeletedWidgetItem = widget - > parent ( ) - > takeChild ( index ) ;
QTreeWidgetItem * toBeDeletedWidgetItem = widget - > parent ( ) - > takeChild (
index ) ;
delete toBeDeletedWidgetItem ;
}
}
bool UBTeacherGuideEditionWidget : : isModified ( )
{
bool result = false ;
result | = mpPageTitle - > text ( ) . length ( ) > 0 ;
result | = mpComment - > text ( ) . length ( ) > 0 ;
result | = mpAddAnActionItem - > childCount ( ) > 0 ;
result | = mpAddAMediaItem - > childCount ( ) > 0 ;
result | = mpAddALinkItem - > childCount ( ) > 0 ;
return result ;
}
/***************************************************************************
* class UBTeacherGuidePresentationWidget *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef enum
{
typedef enum {
tUBTGActionAssociateOnClickItem_NONE ,
tUBTGActionAssociateOnClickItem_URL ,
tUBTGActionAssociateOnClickItem_MEDIA ,
tUBTGActionAssociateOnClickItem_EXPAND
} tUBTGActionAssociateOnClickItem ;
typedef enum
{
typedef enum {
tUBTGTreeWidgetItemRole_HasAnAction = Qt : : UserRole ,
tUBTGTreeWidgetItemRole_HasAnUrl
} tUBTGTreeWidgetItemRole ;
UBTeacherGuidePresentationWidget : : UBTeacherGuidePresentationWidget ( QWidget * parent , const char * name ) : QWidget ( parent )
UBTeacherGuidePresentationWidget : : UBTeacherGuidePresentationWidget ( QWidget * parent , const char * name ) :
QWidget ( parent )
, mpPageTitle ( NULL )
, mpComment ( NULL )
, mpLayout ( NULL )
@ -502,7 +515,6 @@ void UBTeacherGuidePresentationWidget::createMediaButtonItem()
}
}
void UBTeacherGuidePresentationWidget : : showData ( QVector < tUBGEElementNode * > data )
{
cleanData ( ) ;
@ -517,7 +529,8 @@ void UBTeacherGuidePresentationWidget::showData(QVector<tUBGEElementNode*> data)
newWidgetItem - > setText ( 0 , element - > attributes . value ( " task " ) ) ;
newWidgetItem - > setFlags ( Qt : : ItemIsEnabled | Qt : : ItemIsSelectable ) ;
QString colorString = element - > attributes . value ( " owner " ) . toInt ( ) = = 0 ? " red " : " green " ;
UBTGAdaptableText * textWidget = new UBTGAdaptableText ( newWidgetItem , 0 ) ;
UBTGAdaptableText * textWidget = new UBTGAdaptableText ( newWidgetItem ,
0 ) ;
textWidget - > bottomMargin ( 14 ) ;
textWidget - > setStyleSheet ( " QWidget {background: #EEEEEE; border:none; color: " + colorString + " ;} " ) ;
textWidget - > showText ( element - > attributes . value ( " task " ) ) ;
@ -565,10 +578,10 @@ void UBTeacherGuidePresentationWidget::showData(QVector<tUBGEElementNode*> data)
void UBTeacherGuidePresentationWidget : : onAddItemClicked ( QTreeWidgetItem * widget , int column )
{
int associateAction = widget - > data ( column , tUBTGTreeWidgetItemRole_HasAnAction ) . toInt ( ) ;
int associateAction = widget - > data ( column ,
tUBTGTreeWidgetItemRole_HasAnAction ) . toInt ( ) ;
if ( column = = 0 & & associateAction ! = tUBTGActionAssociateOnClickItem_NONE ) {
switch ( associateAction )
{
switch ( associateAction ) {
case tUBTGActionAssociateOnClickItem_EXPAND :
widget - > setExpanded ( ! widget - > isExpanded ( ) ) ;
if ( widget - > isExpanded ( ) )
@ -589,11 +602,11 @@ void UBTeacherGuidePresentationWidget::onAddItemClicked(QTreeWidgetItem* widget,
}
}
/***************************************************************************
* class UBTeacherGuidePageZeroEdition Widget *
* class UBTeacherGuidePageZeroWidget *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
UBTeacherGuidePageZeroWidget : : UBTeacherGuidePageZeroWidget ( QWidget * parent , const char * name ) : QWidget ( parent )
UBTeacherGuidePageZeroWidget : : UBTeacherGuidePageZeroWidget ( QWidget * parent , const char * name ) :
QWidget ( parent )
, mpLayout ( NULL )
, mpButtonTitleLayout ( NULL )
, mpModePushButton ( NULL )
@ -771,7 +784,6 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons
mpLayout - > addLayout ( mpLicenceLayout ) ;
mpLayout - > addStretch ( 1 ) ;
connect ( UBApplication : : boardController , SIGNAL ( activeSceneChanged ( ) ) , this , SLOT ( onActiveSceneChanged ( ) ) ) ;
fillComboBoxes ( ) ;
}
@ -849,7 +861,6 @@ void UBTeacherGuidePageZeroWidget::fillComboBoxes()
mpSchoolLevelBox - > addItem ( gradeLevels . at ( i ) . toElement ( ) . attribute ( " label " ) ) ;
}
QDomNodeList types = rootElement . elementsByTagName ( " types " ) . at ( 0 ) . childNodes ( ) ;
for ( int i = 0 ; i < types . count ( ) ; i + = 1 )
mpSchoolTypeBox - > addItem ( types . at ( i ) . toElement ( ) . attribute ( " label " ) ) ;
@ -857,10 +868,18 @@ void UBTeacherGuidePageZeroWidget::fillComboBoxes()
parametersFile . close ( ) ;
QStringList licences ;
licences < < tr ( " Attribution CC BY " ) < < tr ( " Attribution-NoDerivs CC BY-ND " ) < < tr ( " Attribution-ShareAlike CC BY-SA " ) < < tr ( " Attribution-NonCommercial CC BY-NC " ) < < tr ( " Attribution-NonCommercial-NoDerivs CC BY-NC-ND " ) < < tr ( " Attribution-NonCommercial-ShareAlike CC BY-NC-SA " ) < < tr ( " Public domain " ) < < tr ( " Copyright " ) ;
licences < < tr ( " Attribution CC BY " ) < < tr ( " Attribution-NoDerivs CC BY-ND " )
< < tr ( " Attribution-ShareAlike CC BY-SA " )
< < tr ( " Attribution-NonCommercial CC BY-NC " )
< < tr ( " Attribution-NonCommercial-NoDerivs CC BY-NC-ND " )
< < tr ( " Attribution-NonCommercial-ShareAlike CC BY-NC-SA " )
< < tr ( " Public domain " ) < < tr ( " Copyright " ) ;
mpLicenceBox - > addItems ( licences ) ;
QStringList licenceIconList ;
licenceIconList < < " :images/licenses/ccby.png " < < " :images/licenses/ccbynd.png " < < " :images/licenses/ccbysa.png " < < " :images/licenses/ccbync.png " < < " :images/licenses/ccbyncnd.png " < < " :images/licenses/ccbyncsa.png " ;
licenceIconList < < " :images/licenses/ccby.png "
< < " :images/licenses/ccbynd.png " < < " :images/licenses/ccbysa.png "
< < " :images/licenses/ccbync.png " < < " :images/licenses/ccbyncnd.png "
< < " :images/licenses/ccbyncsa.png " ;
for ( int i = 0 ; i < licenceIconList . count ( ) ; i + = 1 )
mpLicenceBox - > setItemData ( i , licenceIconList . at ( i ) ) ;
}
@ -873,8 +892,7 @@ void UBTeacherGuidePageZeroWidget::onSchoolLevelChanged(QString schoolLevel)
mpSchoolSubjectsItemLabel - > setEnabled ( true ) ;
mpSchoolSubjectsBox - > setEnabled ( true ) ;
mpSchoolSubjectsBox - > addItems ( subjects ) ;
}
else {
} else {
mpSchoolSubjectsItemLabel - > setDisabled ( true ) ;
mpSchoolSubjectsBox - > setDisabled ( true ) ;
}
@ -1063,10 +1081,25 @@ QVector<tUBGEElementNode*> UBTeacherGuidePageZeroWidget::getData()
return result ;
}
bool UBTeacherGuidePageZeroWidget : : isModified ( )
{
bool result = false ;
result | = mpSessionTitle - > text ( ) . length ( ) > 0 ;
result | = mpAuthors - > text ( ) . length ( ) > 0 ;
result | = mpObjectives - > text ( ) . length ( ) > 0 ;
result | = mpKeywords - > text ( ) . length ( ) > 0 ;
result | = mpSchoolLevelBox - > currentIndex ( ) > 0 ;
result | = mpSchoolSubjectsBox - > currentIndex ( ) > 0 ;
result | = mpSchoolTypeBox - > currentIndex ( ) > 0 ;
result | = mpLicenceBox - > currentIndex ( ) > 0 ;
return result ;
}
/***************************************************************************
* class UBTeacherGuideWidget *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
UBTeacherGuideWidget : : UBTeacherGuideWidget ( QWidget * parent , const char * name ) : QStackedWidget ( parent )
UBTeacherGuideWidget : : UBTeacherGuideWidget ( QWidget * parent , const char * name ) :
QStackedWidget ( parent )
, mpPageZeroWidget ( NULL )
, mpEditionWidget ( NULL )
, mpPresentationWidget ( NULL )
@ -1083,12 +1116,13 @@ UBTeacherGuideWidget::UBTeacherGuideWidget(QWidget* parent, const char* name): Q
addWidget ( mpPresentationWidget ) ;
}
connect ( UBApplication : : boardController - > controlView ( ) , SIGNAL ( clickOnBoard ( ) ) , this , SLOT ( showPresentationMode ( ) ) ) ;
connect ( UBApplication : : boardController - > controlView ( ) ,
SIGNAL ( clickOnBoard ( ) ) , this , SLOT ( showPresentationMode ( ) ) ) ;
connectToStylusPalette ( ) ;
connect ( UBApplication : : boardController , SIGNAL ( activeSceneChanged ( ) ) , this , SLOT ( onActiveSceneChanged ( ) ) ) ;
connect ( UBApplication : : boardController , SIGNAL ( activeSceneChanged ( ) ) , this ,
SLOT ( onActiveSceneChanged ( ) ) ) ;
}
UBTeacherGuideWidget : : ~ UBTeacherGuideWidget ( )
{
DELETEPTR ( mpPageZeroWidget ) ;
@ -1096,13 +1130,13 @@ UBTeacherGuideWidget::~UBTeacherGuideWidget()
DELETEPTR ( mpPresentationWidget ) ;
}
void UBTeacherGuideWidget : : onActiveSceneChanged ( )
{
if ( UBApplication : : boardController - > currentPage ( ) = = 0 ) {
setCurrentWidget ( mpPageZeroWidget ) ;
mpPageZeroWidget - > switchToMode ( tUBTGZeroPageMode_EDITION ) ;
} else
}
else
setCurrentWidget ( mpEditionWidget ) ;
}
@ -1136,3 +1170,11 @@ void UBTeacherGuideWidget::changeMode()
setCurrentWidget ( mpEditionWidget ) ;
}
bool UBTeacherGuideWidget : : isModified ( )
{
if ( currentWidget ( ) = = mpPageZeroWidget )
return mpPageZeroWidget - > isModified ( ) ;
else
return mpEditionWidget - > isModified ( ) ;
}