diff --git a/resources/images/teacher_close.png b/resources/images/teacher_close.png index d81f1de5..bee2ea0d 100644 Binary files a/resources/images/teacher_close.png and b/resources/images/teacher_close.png differ diff --git a/resources/images/teacher_close_disabled.png b/resources/images/teacher_close_disabled.png new file mode 100644 index 00000000..8f3c988c Binary files /dev/null and b/resources/images/teacher_close_disabled.png differ diff --git a/resources/images/teacher_open.png b/resources/images/teacher_open.png index 9ab58769..17469cc7 100644 Binary files a/resources/images/teacher_open.png and b/resources/images/teacher_open.png differ diff --git a/resources/images/teacher_open_disabled.png b/resources/images/teacher_open_disabled.png new file mode 100644 index 00000000..99e78cd9 Binary files /dev/null and b/resources/images/teacher_open_disabled.png differ diff --git a/resources/sankore.qrc b/resources/sankore.qrc index 0fff05c3..4c7162ef 100644 --- a/resources/sankore.qrc +++ b/resources/sankore.qrc @@ -332,5 +332,7 @@ images/moveUpDisabled.svg images/teacher_close.png images/teacher_open.png + images/teacher_close_disabled.png + images/teacher_open_disabled.png diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index fc743c99..e0152975 100755 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -19,6 +19,7 @@ #include "frameworks/UBFileSystemUtils.h" #include "core/UBApplication.h" +#include "core/UBApplicationController.h" #include "core/UBSettings.h" #include "core/UBSetting.h" #include "core/UBDisplayManager.h" @@ -162,21 +163,20 @@ void UBBoardPaletteManager::setupDockPaletteWidgets() mpPageNavigWidget = new UBPageNavigationWidget(); mpPageNavigWidget->registerMode(eUBDockPaletteWidget_BOARD); - connect(this, SIGNAL(signal_changeMode(eUBDockPaletteWidgetMode)), mpPageNavigWidget, SLOT(slot_changeMode(eUBDockPaletteWidgetMode))); - +// connect(this, SIGNAL(signal_changeMode(eUBDockPaletteWidgetMode)), mpPageNavigWidget, SLOT(slot_changeMode(eUBDockPaletteWidgetMode))); + mpLibWidget = new UBLibWidget(); mpLibWidget ->registerMode(eUBDockPaletteWidget_BOARD); mpLibWidget ->registerMode(eUBDockPaletteWidget_DESKTOP); +// connect(this, SIGNAL(signal_changeMode(eUBDockPaletteWidgetMode)), mpLibWidget, SLOT(slot_changeMode(eUBDockPaletteWidgetMode))); - connect(this, SIGNAL(signal_changeMode(eUBDockPaletteWidgetMode)), mpLibWidget, SLOT(slot_changeMode(eUBDockPaletteWidgetMode))); - -// mpCachePropWidget = new UBCachePropertiesWidget(); -// mpCachePropWidget->registerMode(eUBDockPaletteWidget_BOARD); -// connect(this, SIGNAL(signal_changeMode(eUBDockPaletteWidgetMode)), mpCachePropWidget, SLOT(slot_changeMode(eUBDockPaletteWidgetMode))); + mpCachePropWidget = new UBCachePropertiesWidget(); + mpCachePropWidget->registerMode(eUBDockPaletteWidget_BOARD); +// connect(this, SIGNAL(signal_changeMode(eUBDockPaletteWidgetMode)), mpCachePropWidget, SLOT(slot_changeMode(eUBDockPaletteWidgetMode))); - mpTeacherBarWidget = new UBTeacherBarWidget(); - mpTeacherBarWidget->registerMode(eUBDockPaletteWidget_BOARD); - connect(this, SIGNAL(signal_changeMode(eUBDockPaletteWidgetMode)), mpTeacherBarWidget, SLOT(slot_changeMode(eUBDockPaletteWidgetMode))); + mpTeacherBarWidget = new UBTeacherBarWidget(); + mpTeacherBarWidget->registerMode(eUBDockPaletteWidget_BOARD); +// connect(this, SIGNAL(signal_changeMode(eUBDockPaletteWidgetMode)), mpTeacherBarWidget, SLOT(slot_changeMode(eUBDockPaletteWidgetMode))); //------------------------------------------------// // Add the dock palettes @@ -184,7 +184,7 @@ void UBBoardPaletteManager::setupDockPaletteWidgets() // LEFT palette widgets mLeftPalette->registerWidget(mpPageNavigWidget); - mLeftPalette->addTabWidget(mpPageNavigWidget); + mLeftPalette->addTab(mpPageNavigWidget); mLeftPalette->connectSignals(); @@ -194,24 +194,62 @@ void UBBoardPaletteManager::setupDockPaletteWidgets() // RIGHT palette widgets mRightPalette->registerWidget(mpLibWidget); - mRightPalette->addTabWidget(mpLibWidget); + mRightPalette->addTab(mpLibWidget); -// // ??? -// mRightPalette->registerWidget(mpCachePropWidget); -// mRightPalette->addTabWidget(mpCachePropWidget); + // ??? + mRightPalette->registerWidget(mpCachePropWidget); +// mRightPalette->addTab(mpCachePropWidget); -// // ??? - mRightPalette->registerWidget(mpTeacherBarWidget); - mRightPalette->addTabWidget(mpTeacherBarWidget); + // ??? + mRightPalette->registerWidget(mpTeacherBarWidget); + mRightPalette->addTab(mpTeacherBarWidget); mRightPalette->connectSignals(); //------------------------------------------------// - mLeftPalette->showTabWidget(0); - mRightPalette->showTabWidget(0); + changeMode(eUBDockPaletteWidget_BOARD, true); //------------------------------------------------// + +// mLeftPalette->showTabWidget(0); +// mRightPalette->showTabWidget(0); +// +// //------------------------------------------------// +} + +void UBBoardPaletteManager::slot_changeMainMode(UBApplicationController::MainMode mainMode) +{ + switch( mainMode ) + { + case UBApplicationController::Board: + // call changeMode only when switch NOT from desktop mode + if(!UBApplication::applicationController->isShowingDesktop()) + changeMode(eUBDockPaletteWidget_BOARD); + break; + + default: + break; + } +} + +void UBBoardPaletteManager::slot_changeDesktopMode(bool isDesktop) +{ + UBApplicationController::MainMode currMode = UBApplication::applicationController->displayMode(); + if(!isDesktop) + { + switch( currMode ) + { + case UBApplicationController::Board: + changeMode(eUBDockPaletteWidget_BOARD); + break; + + default: + break; + } + } + else + changeMode(eUBDockPaletteWidget_DESKTOP); } void UBBoardPaletteManager::setupPalettes() @@ -444,6 +482,8 @@ void UBBoardPaletteManager::connectPalettes() } + + void UBBoardPaletteManager::containerResized() { int innerMargin = UBSettings::boardMargin; @@ -604,8 +644,39 @@ void UBBoardPaletteManager::addItem(const QUrl& pUrl) } -void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode) +void UBBoardPaletteManager::processPalettersWidget(UBDockPalette *paletter, eUBDockPaletteWidgetMode mode) { + //-------------------------------// + // get full right palette widgets list, parse it, show all widgets for BOARD mode, and hide all other + QVector widgetsList = paletter->GetWidgetsList(); + for(int i = 0; i < widgetsList.size(); i++) + { + UBDockPaletteWidget* pNextWidget = widgetsList.at(i); + if( pNextWidget != NULL ) + { + if( pNextWidget->GetRegisteredModes().contains(mode) ) + { + paletter->addTab(pNextWidget); + } + else + { + paletter->removeTab(pNextWidget->name()); + } + } + } + //-------------------------------// + + if(widgetsList.size() > 0) + paletter->showTabWidget(0); + + paletter->update(); +} + +void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool isInit) +{ + processPalettersWidget(mRightPalette, newMode); + processPalettersWidget(mLeftPalette, newMode); + switch( newMode ) { case eUBDockPaletteWidget_BOARD: @@ -616,7 +687,8 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode) mLeftPalette->setVisible(true); mRightPalette->setVisible(true); - containerResized(); + if( !isInit ) + containerResized(); } break; @@ -628,7 +700,8 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode) mLeftPalette->setVisible(false); mRightPalette->setVisible(true); - UBApplication::applicationController->uninotesController()->TransparentWidgetResized(); + if( !isInit ) + UBApplication::applicationController->uninotesController()->TransparentWidgetResized(); } break; @@ -642,6 +715,9 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode) break; } + if( !isInit ) + UBApplication::boardController->notifyPageChanged(); + emit signal_changeMode(newMode); } @@ -818,3 +894,9 @@ void UBBoardPaletteManager::connectToDocumentController() { emit connectToDocController(); } + +void UBBoardPaletteManager::refreshPalettes() +{ + mRightPalette->update(); + mLeftPalette->update(); +} \ No newline at end of file diff --git a/src/board/UBBoardPaletteManager.h b/src/board/UBBoardPaletteManager.h index 5fab9c5c..5b3ee587 100644 --- a/src/board/UBBoardPaletteManager.h +++ b/src/board/UBBoardPaletteManager.h @@ -27,6 +27,9 @@ #include "gui/UBCachePropertiesWidget.h" #include "gui/UBTeacherBarWidget.h" +#include "core/UBApplicationController.h" + + class UBStylusPalette; class UBClockPalette; class UBPageNumberPalette; @@ -37,6 +40,7 @@ class UBFloatingPalette; class UBServerXMLHttpRequest; class UBKeyboardPalette; class UBMainWindow; +class UBApplicationController; class UBBoardPaletteManager : public QObject { @@ -52,11 +56,14 @@ class UBBoardPaletteManager : public QObject void showVirtualKeyboard(bool show = true); void initPalettesPosAtStartup(); void connectToDocumentController(); + void refreshPalettes(); UBKeyboardPalette *mKeyboardPalette; // UBRightPalette* createDesktopRightPalette(QWidget* parent); - void changeMode(eUBDockPaletteWidgetMode newMode); + void processPalettersWidget(UBDockPalette *paletter, eUBDockPaletteWidgetMode mode); + void changeMode(eUBDockPaletteWidgetMode newMode, bool isInit = false); + signals: void connectToDocController(); @@ -70,6 +77,8 @@ class UBBoardPaletteManager : public QObject void addItem(const QPixmap& pPixmap, const QPointF& p = QPointF(0.0, 0.0), qreal scale = 1.0, const QUrl& sourceUrl = QUrl()); // void slot_changeMode(eUBDockPaletteWidgetMode newMode); + void slot_changeMainMode(UBApplicationController::MainMode); + void slot_changeDesktopMode(bool); private: diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index 381e52dc..be570848 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -244,6 +244,15 @@ int UBApplication::exec(const QString& pFileToImport) applicationController = new UBApplicationController(boardController->controlView(), boardController->displayView(), mainWindow, staticMemoryCleaner); + + connect(applicationController, SIGNAL(mainModeChanged(UBApplicationController::MainMode)), + boardController->paletteManager(), SLOT(slot_changeMainMode(UBApplicationController::MainMode))); + + connect(applicationController, SIGNAL(desktopMode(bool)), + boardController->paletteManager(), SLOT(slot_changeDesktopMode(bool))); + + + connect(mainWindow->actionDesktop, SIGNAL(triggered(bool)), applicationController, SLOT(showDesktop(bool))); #ifndef Q_WS_MAC connect(mainWindow->actionHideApplication, SIGNAL(triggered()), mainWindow, SLOT(showMinimized())); diff --git a/src/core/UBApplicationController.cpp b/src/core/UBApplicationController.cpp index f6b002ee..b3560186 100644 --- a/src/core/UBApplicationController.cpp +++ b/src/core/UBApplicationController.cpp @@ -336,7 +336,6 @@ void UBApplicationController::showBoard() mMainWindow->boardToolBar->show(); mMainMode = Board; - UBApplication::boardController->paletteManager()->changeMode(eUBDockPaletteWidget_BOARD); adaptToolBar(); @@ -353,8 +352,6 @@ void UBApplicationController::showBoard() mUninoteController->hideWindow(); mMainWindow->show(); -// UBApplication::boardController->paletteManager()->changeMode(eUBDockPaletteWidget_BOARD); - emit mainModeChanged(Board); } @@ -368,8 +365,6 @@ void UBApplicationController::showInternet() UBApplication::boardController->hide(); } - UBApplication::boardController->paletteManager()->changeMode(eUBDockPaletteWidget_WEB); - if (UBSettings::settings()->webUseExternalBrowser->get().toBool()) { showDesktop(true); @@ -390,8 +385,6 @@ void UBApplicationController::showInternet() emit mainModeChanged(Internet); } -// UBApplication::boardController->paletteManager()->changeMode(eUBDockPaletteWidget_WEB); - UBApplication::webController->show(UBWebController::WebBrowser); } @@ -404,7 +397,6 @@ void UBApplicationController::showDocument() mMainWindow->documentToolBar->show(); mMainMode = Document; - UBApplication::boardController->paletteManager()->changeMode(eUBDockPaletteWidget_DOCUMENT); adaptToolBar(); @@ -426,8 +418,6 @@ void UBApplicationController::showDocument() mUninoteController->hideWindow(); -// UBApplication::boardController->paletteManager()->changeMode(eUBDockPaletteWidget_DOCUMENT); - emit mainModeChanged(Document); } @@ -439,8 +429,6 @@ void UBApplicationController::showDesktop(bool dontSwitchFrontProcess) UBApplication::boardController->hide(); mMainWindow->hide(); - UBApplication::boardController->paletteManager()->changeMode(eUBDockPaletteWidget_DESKTOP); - mUninoteController->showWindow(); if (mMirror) @@ -456,8 +444,6 @@ void UBApplicationController::showDesktop(bool dontSwitchFrontProcess) UBPlatformUtils::bringPreviousProcessToFront(); } -// UBApplication::boardController->paletteManager()->changeMode(eUBDockPaletteWidget_DESKTOP); - UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); } @@ -627,7 +613,6 @@ void UBApplicationController::hideDesktop() emit desktopMode(false); } - void UBApplicationController::setMirrorSourceWidget(QWidget* pWidget) { if (mMirror) diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp index 3987f615..5e3449f5 100644 --- a/src/core/UBPersistenceManager.cpp +++ b/src/core/UBPersistenceManager.cpp @@ -1059,3 +1059,89 @@ bool UBPersistenceManager::mayHaveWidget(UBDocumentProxy* pDocumentProxy) return widgetDir.exists() && widgetDir.entryInfoList(QDir::Dirs).length() > 0; } +void UBPersistenceManager::persistTeacherBar(UBDocumentProxy* pDocumentProxy, int page, sTeacherBarInfos infos) +{ + if(NULL != pDocumentProxy) + { + QFile f(pDocumentProxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", page + 1)); + if(f.exists()) + { + if(f.open(QIODevice::ReadOnly)) + { + QDomDocument domDoc; + if(domDoc.setContent(f.readAll())) + { + f.close(); + if(f.open(QIODevice::WriteOnly)) + { + QDomElement rootElem = domDoc.documentElement(); + QDomNode teacherBarNode = domDoc.namedItem("teacherBar"); + if(teacherBarNode.isNull()) + { + // Create the element + QDomElement teacherElem = domDoc.createElement("teacherBar"); + rootElem.appendChild(teacherElem); + teacherBarNode = teacherElem; + } + + // Set the element values + QDomElement teacherBarElem = teacherBarNode.toElement(); + teacherBarElem.setAttribute("title", infos.title); + teacherBarElem.setAttribute("phasis", infos.phasis); + teacherBarElem.setAttribute("duration", infos.Duration); + teacherBarElem.setAttribute("equipment", infos.material); + teacherBarElem.setAttribute("activity", infos.activity); + teacherBarElem.setAttribute("action1Teacher", infos.action1Master); + teacherBarElem.setAttribute("action1Student", infos.action1Student); + teacherBarElem.setAttribute("action2Teacher", infos.action2Master); + teacherBarElem.setAttribute("action2Student", infos.action2Student); + teacherBarElem.setAttribute("action3Teacher", infos.action3Master); + teacherBarElem.setAttribute("action3Student", infos.action3Student); + + // Save the file + f.write(domDoc.toString().toAscii()); + f.close(); + } + } + f.close(); + } + } + } +} + +sTeacherBarInfos UBPersistenceManager::getTeacherBarInfos(UBDocumentProxy* pDocumentProxy, int page) +{ + sTeacherBarInfos infos; + + if(NULL != pDocumentProxy) + { + QFile f(pDocumentProxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", page + 1)); + if(f.exists()) + { + if(f.open(QIODevice::ReadWrite)) + { + QDomDocument domDoc; + if(domDoc.setContent(f.readAll())) + { + QDomElement rootElem = domDoc.documentElement(); + QDomNode teacherBarNode = rootElem.namedItem("teacherBar"); + + infos.title = teacherBarNode.toElement().attributeNode("title").value(); + infos.phasis = teacherBarNode.toElement().attributeNode("phasis").value().toInt(); + infos.Duration = teacherBarNode.toElement().attributeNode("duration").value().toInt(); + infos.material = teacherBarNode.toElement().attributeNode("equipment").value(); + infos.activity = teacherBarNode.toElement().attributeNode("activity").value().toInt(); + infos.action1Master = teacherBarNode.toElement().attributeNode("action1Teacher").value(); + infos.action1Student = teacherBarNode.toElement().attributeNode("action1Student").value(); + infos.action2Master = teacherBarNode.toElement().attributeNode("action2Teacher").value(); + infos.action2Student = teacherBarNode.toElement().attributeNode("action2Student").value(); + infos.action3Master = teacherBarNode.toElement().attributeNode("action3Teacher").value(); + infos.action3Student = teacherBarNode.toElement().attributeNode("action3Student").value(); + } + f.close(); + } + } + } + + return infos; +} diff --git a/src/core/UBPersistenceManager.h b/src/core/UBPersistenceManager.h index 9189e38f..3c224f04 100644 --- a/src/core/UBPersistenceManager.h +++ b/src/core/UBPersistenceManager.h @@ -20,6 +20,21 @@ #include "UBSceneCache.h" +struct sTeacherBarInfos +{ + QString title; + int phasis; + int Duration; + QString material; + int activity; + QString action1Master; + QString action1Student; + QString action2Master; + QString action2Student; + QString action3Master; + QString action3Student; +}; + class UBDocument; class UBDocumentProxy; class UBGraphicsScene; @@ -60,6 +75,9 @@ class UBPersistenceManager : public QObject virtual void persistDocumentScene(UBDocumentProxy* pDocumentProxy, UBGraphicsScene* pScene, const int pSceneIndex); + virtual void persistTeacherBar(UBDocumentProxy* pDocumentProxy, int page, sTeacherBarInfos infos); + sTeacherBarInfos getTeacherBarInfos(UBDocumentProxy* pDocumentProxy, int page); + virtual UBGraphicsScene* createDocumentSceneAt(UBDocumentProxy* pDocumentProxy, int index); virtual void insertDocumentSceneAt(UBDocumentProxy* pDocumentProxy, UBGraphicsScene* scene, int index); diff --git a/src/gui/UBCachePropertiesWidget.cpp b/src/gui/UBCachePropertiesWidget.cpp index 65975628..0d415674 100644 --- a/src/gui/UBCachePropertiesWidget.cpp +++ b/src/gui/UBCachePropertiesWidget.cpp @@ -6,6 +6,7 @@ #include "UBCachePropertiesWidget.h" #include "core/UBApplication.h" +#include "core/UBApplicationController.h" #include "board/UBBoardController.h" #include "domain/UBGraphicsScene.h" @@ -269,40 +270,59 @@ void UBCachePropertiesWidget::updateShapeButtons() void UBCachePropertiesWidget::updateCurrentCache() { - // Get the current page cache - QList items = UBApplication::boardController->activeScene()->items(); - foreach(QGraphicsItem* it, items) + bool isBoardMode = false; + // this widget can work only on Board mode + if( UBApplication::applicationController != NULL ) { - if("Cache" == it->data(Qt::UserRole).toString()) - { - setEnabled(true); - emit showTab(name()); - mpCurrentCache = dynamic_cast(it); - if((NULL != mpCurrentCache) && (!mCaches.contains(mpCurrentCache))) - { - mCaches.append(mpCurrentCache); - } + // if app controller is available, and current mode is Board, and no show desktop, than all ok, just process + if( UBApplication::applicationController->displayMode() == UBApplicationController::Board && + !UBApplication::applicationController->isShowingDesktop()) + isBoardMode = true; + } + // if app controller == null, than we do not know what mode now, so just process + else + isBoardMode = true; - // Update the values of the cache properties - mpSizeSlider->setValue(mpCurrentCache->shapeWidth()); - updateCacheColor(mpCurrentCache->maskColor()); - switch(mpCurrentCache->maskshape()) + if(isBoardMode) + { + // Get the current page cache + QList items = UBApplication::boardController->activeScene()->items(); + foreach(QGraphicsItem* it, items) + { + if("Cache" == it->data(Qt::UserRole).toString()) { - case eMaskShape_Circle: - mpCircleButton->setChecked(true); - mpSquareButton->setChecked(false); - break; - case eMaskShap_Rectangle: - mpCircleButton->setChecked(false); - mpSquareButton->setChecked(true); - break; + setEnabled(true); + emit showTab(name()); + mpCurrentCache = dynamic_cast(it); + if((NULL != mpCurrentCache) && (!mCaches.contains(mpCurrentCache))) + { + mCaches.append(mpCurrentCache); + } + + // Update the values of the cache properties + mpSizeSlider->setValue(mpCurrentCache->shapeWidth()); + updateCacheColor(mpCurrentCache->maskColor()); + switch(mpCurrentCache->maskshape()) + { + case eMaskShape_Circle: + mpCircleButton->setChecked(true); + mpSquareButton->setChecked(false); + break; + case eMaskShap_Rectangle: + mpCircleButton->setChecked(false); + mpSquareButton->setChecked(true); + break; + } + + return; } - - return; } } - // If we fall here, that means that this page has no cache + // If we fall here, that means: + // 1 - that this page has no cache + // 2 - we do not on Board page + // 3 - we in board mode, but show desktop (as really - desktop mode) emit hideTab(name()); mpCurrentCache = NULL; setDisabled(true); @@ -320,3 +340,4 @@ void UBCachePropertiesWidget::onCacheEnabled() { emit showTab(name()); } + \ No newline at end of file diff --git a/src/gui/UBDockPalette.cpp b/src/gui/UBDockPalette.cpp index 0882b611..b7b7a6f6 100644 --- a/src/gui/UBDockPalette.cpp +++ b/src/gui/UBDockPalette.cpp @@ -57,15 +57,15 @@ UBDockPalette::UBDockPalette(QWidget *parent, const char *name) if (parent) { - setAttribute(Qt::WA_NoMousePropagation); - setAttribute(Qt::WA_TranslucentBackground); + setAttribute(Qt::WA_NoMousePropagation); + setAttribute(Qt::WA_TranslucentBackground); } else { - // standalone window - setAttribute(Qt::WA_TranslucentBackground); + // standalone window + setAttribute(Qt::WA_TranslucentBackground); - // !!!! Should be included into Windows after QT recompilation + // !!!! Should be included into Windows after QT recompilation #ifdef Q_WS_MAC //setAttribute(Qt::WA_MacNoShadow); #endif @@ -540,36 +540,35 @@ int UBDockPalette::customMargin() * \brief Add the given tab widget * @param widget as the given widget */ -void UBDockPalette::addTabWidget(UBDockPaletteWidget *widget) -{ - if(!mTabWidgets.contains(widget)) - { - widget->setVisible(true); - mTabWidgets.append(widget); - mpStackWidget->addWidget(widget); - mpStackWidget->setCurrentWidget(widget); - update(); - } +void UBDockPalette::addTab(UBDockPaletteWidget *widget) +{ + if(!mTabWidgets.contains(widget)) + { + widget->setVisible(true); + mTabWidgets.append(widget); + mpStackWidget->addWidget(widget); + mpStackWidget->setCurrentWidget(widget); + update(); + } } - /** * \brief Remove the given tab * @param widgetName as the tab widget name */ -void UBDockPalette::removeTab(const QString &widgetName) -{ - for(int i = 0; i < mTabWidgets.size(); i++) - { - UBDockPaletteWidget* pCrntWidget = mTabWidgets.at(i); - if(NULL != pCrntWidget && (pCrntWidget->name() == widgetName)) - { - mpStackWidget->removeWidget(pCrntWidget); - mTabWidgets.remove(i); - pCrntWidget->hide(); - update(); - break; - } - } +void UBDockPalette::removeTab(const QString &widgetName) +{ + for(int i = 0; i < mTabWidgets.size(); i++) + { + UBDockPaletteWidget* pCrntWidget = mTabWidgets.at(i); + if(NULL != pCrntWidget && (pCrntWidget->name() == widgetName)) + { + mpStackWidget->removeWidget(pCrntWidget); + mTabWidgets.remove(i); + pCrntWidget->hide(); + update(); + break; + } + } } /** @@ -601,7 +600,7 @@ void UBDockPalette::onShowTabWidget(const QString &widgetName) UBDockPaletteWidget* pCrntWidget = mRegisteredWidgets.at(i); if(NULL != pCrntWidget && (pCrntWidget->name() == widgetName)) { - addTabWidget(pCrntWidget); + addTab(pCrntWidget); break; } } diff --git a/src/gui/UBDockPalette.h b/src/gui/UBDockPalette.h index b69d0653..7380dcb5 100644 --- a/src/gui/UBDockPalette.h +++ b/src/gui/UBDockPalette.h @@ -72,10 +72,13 @@ public: void setBackgroundBrush(const QBrush& brush); void registerWidget(UBDockPaletteWidget* widget); - void addTabWidget(UBDockPaletteWidget* widget); + void addTab(UBDockPaletteWidget* widget); void removeTab(const QString& widgetName); + void connectSignals(); + QVector GetWidgetsList() { return mRegisteredWidgets; }; + public slots: void onShowTabWidget(const QString& widgetName); void onHideTabWidget(const QString& widgetName); @@ -90,7 +93,7 @@ protected: /** The current dock orientation */ eUBDockOrientation mOrientation; - /** The current baclground brush */ + /** The current background brush */ QBrush mBackgroundBrush; /** The preferred width */ int mPreferredWidth; @@ -123,7 +126,6 @@ protected: /** The current widget */ QVector mRegisteredWidgets; -// QVector mVisibleWidgets; // ??? private slots: void onToolbarPosUpdated(); diff --git a/src/gui/UBDockPaletteWidget.h b/src/gui/UBDockPaletteWidget.h index aa97a029..5c37cfff 100644 --- a/src/gui/UBDockPaletteWidget.h +++ b/src/gui/UBDockPaletteWidget.h @@ -27,9 +27,7 @@ public: void registerMode(eUBDockPaletteWidgetMode mode); - /* The current widget available mode list */ - QVector mRegisteredModes; - + QVector GetRegisteredModes() { return mRegisteredModes; }; signals: @@ -45,6 +43,9 @@ protected: QPixmap mIconToLeft; // arrow like this: < QString mName; + /* The current widget available mode list */ + QVector mRegisteredModes; + }; #endif // UBDOCKPALETTEWIDGET_H diff --git a/src/gui/UBTeacherBarWidget.cpp b/src/gui/UBTeacherBarWidget.cpp index cd99a01e..d5eb6688 100644 --- a/src/gui/UBTeacherBarWidget.cpp +++ b/src/gui/UBTeacherBarWidget.cpp @@ -1,6 +1,13 @@ #include "UBTeacherBarWidget.h" #include "core/UBApplication.h" +#include "core/UBPersistenceManager.h" + +#include "document/UBDocumentController.h" +#include "document/UBDocumentProxy.h" + +#include "board/UBBoardController.h" +#include "board/UBBoardPaletteManager.h" UBTeacherBarWidget::UBTeacherBarWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent) , mpLayout(NULL) @@ -110,6 +117,20 @@ UBTeacherBarWidget::UBTeacherBarWidget(QWidget *parent, const char *name):UBDock mpLayout->addWidget(mpAction3); populateCombos(); + + connect(UBApplication::boardController, SIGNAL(activeSceneWillChange()), this, SLOT(saveContent())); + connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(loadContent())); + connect(mpTitle, SIGNAL(textChanged(QString)), this, SLOT(onValueChanged())); + connect(mpPhasis, SIGNAL(currentIndexChanged(int)), this, SLOT(onValueChanged())); + connect(mpDuration, SIGNAL(currentIndexChanged(int)), this, SLOT(onValueChanged())); + connect(mpEquipment, SIGNAL(textChanged(QString)), this, SLOT(onValueChanged())); + connect(mpActivity, SIGNAL(currentIndexChanged(int)), this, SLOT(onValueChanged())); + connect(mpAction1->teacher(), SIGNAL(textChanged()), this, SLOT(onValueChanged())); + connect(mpAction1->student(), SIGNAL(textChanged()), this, SLOT(onValueChanged())); + connect(mpAction2->teacher(), SIGNAL(textChanged()), this, SLOT(onValueChanged())); + connect(mpAction2->student(), SIGNAL(textChanged()), this, SLOT(onValueChanged())); + connect(mpAction3->teacher(), SIGNAL(textChanged()), this, SLOT(onValueChanged())); + connect(mpAction3->student(), SIGNAL(textChanged()), this, SLOT(onValueChanged())); } UBTeacherBarWidget::~UBTeacherBarWidget() @@ -219,16 +240,78 @@ UBTeacherBarWidget::~UBTeacherBarWidget() void UBTeacherBarWidget::populateCombos() { QStringList qslPhasis; - qslPhasis << tr("I discover") << tr("I experiment") << tr("I train myself") << tr("I play") << tr("I memorize"); + qslPhasis << tr("") << tr("I discover") << tr("I experiment") << tr("I train myself") << tr("I play") << tr("I memorize"); mpPhasis->insertItems(0, qslPhasis); + mpPhasis->setCurrentIndex(0); QStringList qslDuration; - qslDuration << tr("Short") << tr("Middle") << tr("Long"); + qslDuration << tr("") << tr("Short") << tr("Middle") << tr("Long"); mpDuration->insertItems(0, qslDuration); + mpDuration->setCurrentIndex(0); QStringList qslActivity; - qslActivity << tr("Alone") << tr("By Group") << tr("All together"); + qslActivity << tr("") << tr("Alone") << tr("By Group") << tr("All together"); mpActivity->insertItems(0, qslActivity); + mpActivity->setCurrentIndex(0); +} + +void UBTeacherBarWidget::onValueChanged() +{ + if( mpTitle->text() == "" + && mpDuration->currentIndex() == 0 + && mpPhasis->currentIndex() == 0 + && mpEquipment->text() == "" + && mpActivity->currentIndex() == 0 + && mpAction1->teacherText() == "" + && mpAction1->studentText() == "" + && mpAction2->teacherText() == "" + && mpAction2->studentText() == "" + && mpAction3->teacherText() == "" + && mpAction3->studentText() == "") + { + mIconToLeft = QPixmap(":images/teacher_open_disabled.png"); + mIconToRight = QPixmap(":images/teacher_close_disabled.png"); + } + else + { + mIconToLeft = QPixmap(":images/teacher_open.png"); + mIconToRight = QPixmap(":images/teacher_close.png"); + } + + UBApplication::boardController->paletteManager()->refreshPalettes(); +} + +void UBTeacherBarWidget::saveContent() +{ + sTeacherBarInfos infos; + infos.title = mpTitle->text(); + infos.phasis = mpPhasis->currentIndex(); + infos.Duration = mpDuration->currentIndex(); + infos.material = mpEquipment->text(); + infos.activity = mpActivity->currentIndex(); + infos.action1Master = mpAction1->teacherText(); + infos.action1Student = mpAction1->studentText(); + infos.action2Master = mpAction2->teacherText(); + infos.action2Student = mpAction2->studentText(); + infos.action3Master = mpAction3->teacherText(); + infos.action3Student = mpAction3->studentText(); + UBPersistenceManager::persistenceManager()->persistTeacherBar(UBApplication::boardController->activeDocument(), UBApplication::boardController->activeSceneIndex(), infos); +} + +void UBTeacherBarWidget::loadContent() +{ + sTeacherBarInfos nextInfos = UBPersistenceManager::persistenceManager()->getTeacherBarInfos(UBApplication::boardController->activeDocument(), UBApplication::boardController->activeSceneIndex()); + mpTitle->setText(nextInfos.title); + mpPhasis->setCurrentIndex(nextInfos.phasis); + mpDuration->setCurrentIndex(nextInfos.Duration); + mpEquipment->setText(nextInfos.material); + mpActivity->setCurrentIndex(nextInfos.activity); + mpAction1->setTeacherText(nextInfos.action1Master); + mpAction1->setStudentText(nextInfos.action1Student); + mpAction2->setTeacherText(nextInfos.action2Master); + mpAction2->setStudentText(nextInfos.action2Student); + mpAction3->setTeacherText(nextInfos.action3Master); + mpAction3->setStudentText(nextInfos.action3Student); } UBTeacherStudentAction::UBTeacherStudentAction(int actionNumber, QWidget *parent, const char *name):QWidget(parent) @@ -327,3 +410,22 @@ QString UBTeacherStudentAction::studentText() return mpStudent->document()->toPlainText(); } +void UBTeacherStudentAction::setTeacherText(QString text) +{ + mpTeacher->setText(text); +} + +void UBTeacherStudentAction::setStudentText(QString text) +{ + mpStudent->setText(text); +} + +QTextEdit* UBTeacherStudentAction::teacher() +{ + return mpTeacher; +} + +QTextEdit* UBTeacherStudentAction::student() +{ + return mpStudent; +} diff --git a/src/gui/UBTeacherBarWidget.h b/src/gui/UBTeacherBarWidget.h index d6a816ef..555b6ef6 100644 --- a/src/gui/UBTeacherBarWidget.h +++ b/src/gui/UBTeacherBarWidget.h @@ -20,6 +20,10 @@ public: ~UBTeacherStudentAction(); QString teacherText(); QString studentText(); + void setTeacherText(QString text); + void setStudentText(QString text); + QTextEdit* teacher(); + QTextEdit* student(); private: int mActionNumber; @@ -35,10 +39,16 @@ private: class UBTeacherBarWidget : public UBDockPaletteWidget { + Q_OBJECT public: UBTeacherBarWidget(QWidget* parent=0, const char* name="UBTeacherBarWidget"); ~UBTeacherBarWidget(); +private slots: + void saveContent(); + void loadContent(); + void onValueChanged(); + private: void populateCombos();