Release for improved document-related functionality

preferencesAboutTextFull
Anatoly Mihalchenko 13 years ago
parent aa106fa128
commit 350fd8ff79
  1. 4
      src/adaptors/UBCFFSubsetAdaptor.cpp
  2. 4
      src/adaptors/UBSvgSubsetAdaptor.cpp
  3. 51
      src/adaptors/UBThumbnailAdaptor.cpp
  4. 13
      src/adaptors/UBThumbnailAdaptor.h
  5. 52
      src/adaptors/publishing/UBDocumentPublisher.cpp
  6. 7
      src/adaptors/publishing/UBDocumentPublisher.h
  7. 2
      src/api/UBWidgetUniboardAPI.cpp
  8. 265
      src/board/UBBoardController.cpp
  9. 29
      src/board/UBBoardController.h
  10. 6
      src/board/UBBoardPaletteManager.cpp
  11. 2
      src/board/UBLibraryController.cpp
  12. 3
      src/core/UBApplicationController.cpp
  13. 4
      src/core/UBPersistenceManager.cpp
  14. 127
      src/document/UBDocumentContainer.cpp
  15. 67
      src/document/UBDocumentContainer.h
  16. 230
      src/document/UBDocumentController.cpp
  17. 15
      src/document/UBDocumentController.h
  18. 6
      src/document/UBDocumentProxy.h
  19. 2
      src/document/document.pri
  20. 3
      src/frameworks/UBFileSystemUtils.cpp
  21. 208
      src/gui/UBDocumentNavigator.cpp
  22. 25
      src/gui/UBDocumentNavigator.h
  23. 9
      src/gui/UBDocumentThumbnailWidget.cpp
  24. 4
      src/gui/UBDocumentTreeWidget.cpp
  25. 23
      src/gui/UBNavigatorPalette.cpp
  26. 2
      src/gui/UBNavigatorPalette.h
  27. 47
      src/gui/UBPageNavigationWidget.cpp
  28. 6
      src/gui/UBPageNavigationWidget.h
  29. 19
      src/gui/UBThumbnailWidget.cpp
  30. 8
      src/gui/UBThumbnailWidget.h

@ -1078,7 +1078,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::persistCurrentScene()
{
if (mCurrentScene != 0 && mCurrentScene->isModified())
{
UBThumbnailAdaptor::persistScene(mProxy->persistencePath(), mCurrentScene, mProxy->pageCount() - 1);
UBThumbnailAdaptor::persistScene(mProxy, mCurrentScene, mProxy->pageCount() - 1);
UBSvgSubsetAdaptor::persistScene(mProxy, mCurrentScene, mProxy->pageCount() - 1);
mCurrentScene->setModified(false);
@ -1102,7 +1102,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::persistScenes()
UBSvgSubsetAdaptor::persistScene(mProxy, mCurrentScene, i);
UBGraphicsScene *tmpScene = UBSvgSubsetAdaptor::loadScene(mProxy, i);
tmpScene->setModified(true);
UBThumbnailAdaptor::persistScene(mProxy->persistencePath(), tmpScene, i);
UBThumbnailAdaptor::persistScene(mProxy, tmpScene, i);
delete tmpScene;
mCurrentScene->setModified(false);

@ -56,6 +56,8 @@
#include "interfaces/IDataStorage.h"
#include "document/UBDocumentContainer.h"
#include "pdf/PDFRenderer.h"
#include "core/memcheck.h"
@ -313,7 +315,7 @@ QString UBSvgSubsetAdaptor::readTeacherGuideNode(int sceneIndex)
{
QString result;
QString fileName = UBApplication::boardController->activeDocument()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", sceneIndex);
QString fileName = UBApplication::boardController->selectedDocument()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", sceneIndex);
QFile file(fileName);
file.open(QIODevice::ReadOnly);
QByteArray fileByteArray=file.readAll();

@ -58,7 +58,7 @@ void UBThumbnailAdaptor::generateMissingThumbnails(UBDocumentProxy* proxy)
if (displayMessage && thumbCount == 1)
UBApplication::showMessage(tr("Generating preview thumbnails ..."));
persistScene(proxy->persistencePath(), scene, iPageNo);
persistScene(proxy, scene, iPageNo);
}
if (displayMessage && thumbCount > 0)
@ -68,10 +68,49 @@ void UBThumbnailAdaptor::generateMissingThumbnails(UBDocumentProxy* proxy)
}
}
const QPixmap* UBThumbnailAdaptor::get(UBDocumentProxy* proxy, int pageIndex)
{
QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
QFile file(fileName);
if (!file.exists())
{
generateMissingThumbnails(proxy);
}
if (file.exists())
{
QPixmap* pix = new QPixmap();
//Warning. Works only with modified Qt
#ifdef Q_WS_X11
pix->load(fileName, 0, Qt::AutoColor);
#else
pix->load(fileName, 0, Qt::AutoColor, false);
#endif
return pix;
}
return NULL;
}
void UBThumbnailAdaptor::load(UBDocumentProxy* proxy, QList<const QPixmap*>& list)
{
generateMissingThumbnails(proxy);
foreach(const QPixmap* pm, list)
delete pm;
list.clear();
for(int i=0; i<proxy->pageCount(); i++)
list.append(get(proxy, i));
}
/*
QList<QPixmap> UBThumbnailAdaptor::load(UBDocumentProxy* proxy)
{
QList<QPixmap> thumbnails;
qDebug() << "Loadinf thumbnails for " << proxy->name();
if (!proxy || proxy->persistencePath().isEmpty())
return thumbnails;
@ -107,6 +146,8 @@ QList<QPixmap> UBThumbnailAdaptor::load(UBDocumentProxy* proxy)
QPixmap UBThumbnailAdaptor::load(UBDocumentProxy* proxy, int index)
{
qDebug() << "Loadinf thumbnails for " << proxy->name();
int existingPageCount = proxy->pageCount();
if (!proxy || proxy->persistencePath().size() == 0 || index < 0 || index > existingPageCount)
@ -131,10 +172,14 @@ QPixmap UBThumbnailAdaptor::load(UBDocumentProxy* proxy, int index)
}
return QPixmap();
}
*/
void UBThumbnailAdaptor::persistScene(const QString& pDocPath, UBGraphicsScene* pScene, int pageIndex, bool overrideModified)
void UBThumbnailAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, int pageIndex, bool overrideModified)
{
QString fileName = pDocPath + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
qDebug() << "Persiste scene on path " << proxy->persistencePath() << ", index " << pageIndex;
QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
QFile thumbFile(fileName);

@ -25,15 +25,18 @@ class UBThumbnailAdaptor //static class
{
Q_DECLARE_TR_FUNCTIONS(UBThumbnailAdaptor)
private: UBThumbnailAdaptor() {}
public:
static void persistScene(const QString& pDocPath, UBGraphicsScene* pScene, int pageIndex, bool overrideModified = false);
static QUrl thumbnailUrl(UBDocumentProxy* proxy, int pageIndex);
static void persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, int pageIndex, bool overrideModified = false);
static const QPixmap* get(UBDocumentProxy* proxy, int index);
static void load(UBDocumentProxy* proxy, QList<const QPixmap*>& list);
private:
static void generateMissingThumbnails(UBDocumentProxy* proxy);
static QList<QPixmap> load(UBDocumentProxy* proxy);
static QPixmap load(UBDocumentProxy* proxy, int index);
static QUrl thumbnailUrl(UBDocumentProxy* proxy, int pageIndex);
UBThumbnailAdaptor() {}
};
#endif // UBTHUMBNAILADAPTOR_H

@ -33,6 +33,7 @@
#include "gui/UBMainWindow.h"
#include "document/UBDocumentProxy.h"
#include "document/UBDocumentContainer.h"
#include "domain/UBGraphicsWidgetItem.h"
@ -57,7 +58,6 @@ THIRD_PARTY_WARNINGS_ENABLE
UBDocumentPublisher::UBDocumentPublisher(UBDocumentProxy* pDocument, QObject *parent)
: QObject(parent)
, mSourceDocument(pDocument)
, mPublishingDocument(0)
, mUsername("")
, mPassword("")
, bLoginCookieSet(false)
@ -69,10 +69,6 @@ UBDocumentPublisher::UBDocumentPublisher(UBDocumentProxy* pDocument, QObject *pa
UBDocumentPublisher::~UBDocumentPublisher()
{
if(mPublishingDocument){
delete mPublishingDocument;
mPublishingDocument = NULL;
}
}
@ -115,8 +111,8 @@ void UBDocumentPublisher::buildUbwFile()
{
QUuid publishingUuid = QUuid::createUuid();
mPublishingDocument = new UBDocumentProxy(tmpDir);
mPublishingDocument->setPageCount(mSourceDocument->pageCount());
mPublishingPath = tmpDir;
mPublishingSize = mSourceDocument->pageCount();
rasterizeScenes();
@ -124,24 +120,24 @@ void UBDocumentPublisher::buildUbwFile()
UBExportFullPDF pdfExporter;
pdfExporter.setVerbode(false);
pdfExporter.persistsDocument(mSourceDocument, mPublishingDocument->persistencePath() + "/" + UBStringUtils::toCanonicalUuid(publishingUuid) + ".pdf");
pdfExporter.persistsDocument(mSourceDocument, mPublishingPath + "/" + UBStringUtils::toCanonicalUuid(publishingUuid) + ".pdf");
UBExportDocument ubzExporter;
ubzExporter.setVerbode(false);
ubzExporter.persistsDocument(mSourceDocument, mPublishingDocument->persistencePath() + "/" + UBStringUtils::toCanonicalUuid(publishingUuid) + ".ubz");
ubzExporter.persistsDocument(mSourceDocument, mPublishingPath + "/" + UBStringUtils::toCanonicalUuid(publishingUuid) + ".ubz");
// remove all useless files
for (int pageIndex = 0; pageIndex < mPublishingDocument->pageCount(); pageIndex++) {
QString filename = mPublishingDocument->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg",pageIndex);
for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++) {
QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.svg",pageIndex);
QFile::remove(filename);
}
UBFileSystemUtils::deleteDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::imageDirectory);
UBFileSystemUtils::deleteDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::objectDirectory);
UBFileSystemUtils::deleteDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::videoDirectory);
UBFileSystemUtils::deleteDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::audioDirectory);
UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::imageDirectory);
UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::objectDirectory);
UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::videoDirectory);
UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::audioDirectory);
mTmpZipFile = UBFileSystemUtils::defaultTempDirPath() + "/" + UBStringUtils::toCanonicalUuid(QUuid::createUuid()) + ".ubw~";
@ -156,7 +152,7 @@ void UBDocumentPublisher::buildUbwFile()
QuaZipFile outFile(&zip);
if (!UBFileSystemUtils::compressDirInZip(mPublishingDocument->persistencePath(), "", &outFile, true))
if (!UBFileSystemUtils::compressDirInZip(mPublishingPath, "", &outFile, true))
{
qWarning("Export failed. compressDirInZip failed ...");
zip.close();
@ -187,13 +183,14 @@ void UBDocumentPublisher::buildUbwFile()
void UBDocumentPublisher::rasterizeScenes()
{
for (int pageIndex = 0; pageIndex < mPublishingDocument->pageCount(); pageIndex++)
for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++)
{
UBApplication::showMessage(tr("Converting page %1/%2 ...").arg(UBApplication::boardController->pageFromSceneIndex(pageIndex)).arg(mPublishingDocument->pageCount()), true);
UBApplication::showMessage(tr("Converting page %1/%2 ...").arg(UBDocumentContainer::pageFromSceneIndex(pageIndex)).arg(mPublishingSize), true);
UBSvgSubsetRasterizer rasterizer(mPublishingDocument, pageIndex);
UBDocumentProxy publishingDocument(mPublishingPath);
UBSvgSubsetRasterizer rasterizer(&publishingDocument, pageIndex);
QString filename = mPublishingDocument->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.jpg",pageIndex);
QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.jpg",pageIndex);
rasterizer.rasterizeToFile(filename);
@ -203,7 +200,7 @@ void UBDocumentPublisher::rasterizeScenes()
void UBDocumentPublisher::updateGoogleMapApiKey()
{
QDir widgestDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::widgetDirectory);
QDir widgestDir(mPublishingPath + "/" + UBPersistenceManager::widgetDirectory);
QString uniboardWebGoogleMapApiKey = UBSettings::settings()->uniboardWebGoogleMapApiKey->get().toString();
@ -242,9 +239,10 @@ void UBDocumentPublisher::updateGoogleMapApiKey()
void UBDocumentPublisher::upgradeDocumentForPublishing()
{
for (int pageIndex = 0; pageIndex < mPublishingDocument->pageCount(); pageIndex++)
for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++)
{
UBGraphicsScene *scene = UBSvgSubsetAdaptor::loadScene(mPublishingDocument, pageIndex);
UBDocumentProxy publishingDocument(mPublishingPath);
UBGraphicsScene *scene = UBSvgSubsetAdaptor::loadScene(&publishingDocument, pageIndex);
QList<UBGraphicsW3CWidgetItem*> widgets;
@ -252,12 +250,12 @@ void UBDocumentPublisher::upgradeDocumentForPublishing()
UBGraphicsW3CWidgetItem *widgetItem = dynamic_cast<UBGraphicsW3CWidgetItem*>(item);
if(widgetItem){
generateWidgetPropertyScript(widgetItem, UBApplication::boardController->pageFromSceneIndex(pageIndex));
generateWidgetPropertyScript(widgetItem, UBDocumentContainer::pageFromSceneIndex(pageIndex));
widgets << widgetItem;
}
}
QString filename = mPublishingDocument->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.json",pageIndex);
QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.json",pageIndex);
QFile jsonFile(filename);
if (jsonFile.open(QIODevice::WriteOnly | QIODevice::Truncate))
@ -369,7 +367,7 @@ void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *
if (!startFileName.startsWith("http://"))
{
QString startFilePath = mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::widgetDirectory + "/" + widgetItem->uuid().toString() + ".wgt/" + startFileName;
QString startFilePath = mPublishingPath + "/" + UBPersistenceManager::widgetDirectory + "/" + widgetItem->uuid().toString() + ".wgt/" + startFileName;
QFile startFile(startFilePath);
@ -434,7 +432,7 @@ void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *
lines << " widget.preferences.clear = function() {}";
lines << " var uniboard = {};";
lines << " uniboard.pageCount = " + QString("%1").arg(mPublishingDocument->pageCount()) + ";";
lines << " uniboard.pageCount = " + QString("%1").arg(mPublishingSize) + ";";
lines << " uniboard.currentPageNumber = " + QString("%1").arg(pageNumber) + ";";
lines << " uniboard.uuid = '" + UBStringUtils::toCanonicalUuid(widgetItem->uuid()) + "'";
lines << " uniboard.lang = navigator.language;";

@ -106,7 +106,12 @@ private slots:
private:
UBDocumentProxy *mSourceDocument;
UBDocumentProxy *mPublishingDocument;
//UBDocumentProxy *mPublishingDocument;
QString mPublishingPath;
int mPublishingSize;
void init();
void sendUbw(QString username, QString password);
QString getBase64Of(QString stringToEncode);

@ -346,7 +346,7 @@ QString UBWidgetUniboardAPI::pageThumbnail(const int pageNumber)
if (UBApplication::boardController->activeScene() != mScene)
return "";
UBDocumentProxy *doc = UBApplication::boardController->activeDocument();
UBDocumentProxy *doc = UBApplication::boardController->selectedDocument();
if (!doc)
return "";

@ -1,7 +1,7 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
@ -72,9 +72,8 @@
//#include <typeinfo>
UBBoardController::UBBoardController(UBMainWindow* mainWindow)
: QObject(mainWindow->centralWidget())
: UBDocumentContainer(mainWindow->centralWidget())
, mMainWindow(mainWindow)
, mActiveDocument(0)
, mActiveScene(0)
, mActiveSceneIndex(-1)
, mPaletteManager(0)
@ -88,7 +87,6 @@ UBBoardController::UBBoardController(UBMainWindow* mainWindow)
, mIsClosing(false)
, mSystemScaleFactor(1.0)
, mCleanupDone(false)
, mCacheWidgetIsEnabled(false)
{
mZoomFactor = UBSettings::settings()->boardZoomFactor->get().toDouble();
@ -107,17 +105,17 @@ void UBBoardController::init()
setupViews();
setupToolbar();
connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentWillBeDeleted(UBDocumentProxy*))
, this, SLOT(documentWillBeDeleted(UBDocumentProxy*)));
//connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentWillBeDeleted(UBDocumentProxy*))
// , this, SLOT(documentWillBeDeleted(UBDocumentProxy*)));
connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int))
, this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
//connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int))
// , this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneDeleted(UBDocumentProxy*, int))
, this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
//connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneDeleted(UBDocumentProxy*, int))
// , this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneMoved(UBDocumentProxy*, int))
, this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
//connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneMoved(UBDocumentProxy*, int))
// , this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
connect(UBApplication::undoStack, SIGNAL(canUndoChanged(bool))
, this, SLOT(undoRedoStateChange(bool)));
@ -160,20 +158,6 @@ int UBBoardController::currentPage()
return mActiveSceneIndex + 1;
}
int UBBoardController::pageFromSceneIndex(int sceneIndex)
{
if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
return sceneIndex;
return sceneIndex+1;
}
int UBBoardController::sceneIndexFromPage(int page)
{
if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
return page-1;
return page;
}
void UBBoardController::setupViews()
{
mControlContainer = new QWidget(mMainWindow->centralWidget());
@ -400,11 +384,6 @@ void UBBoardController::stopScript()
freezeW3CWidgets(true);
}
bool UBBoardController::cacheIsVisible()
{
return mCacheWidgetIsEnabled;
}
void UBBoardController::initToolbarTexts()
{
QList<QAction*> allToolbarActions;
@ -480,12 +459,12 @@ void UBBoardController::addScene()
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
persistCurrentScene();
UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mActiveDocument, mActiveSceneIndex + 1);
mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBDocumentContainer::addPage(mActiveSceneIndex + 1);
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
setActiveDocumentScene(mActiveDocument, mActiveSceneIndex + 1);
setActiveDocumentScene(mActiveSceneIndex + 1);
QApplication::restoreOverrideCursor();
emit newPageAdded();
}
@ -495,12 +474,12 @@ void UBBoardController::addScene(UBGraphicsScene* scene, bool replaceActiveIfEmp
{
UBGraphicsScene* clone = scene->sceneDeepCopy();
if (scene->document() && (scene->document() != mActiveDocument))
if (scene->document() && (scene->document() != selectedDocument()))
{
foreach(QUrl relativeFile, scene->relativeDependencies())
{
QString source = scene->document()->persistencePath() + "/" + relativeFile.toString();
QString target = mActiveDocument->persistencePath() + "/" + relativeFile.toString();
QString target = selectedDocument()->persistencePath() + "/" + relativeFile.toString();
QFileInfo fi(target);
QDir d = fi.dir();
@ -512,17 +491,16 @@ void UBBoardController::addScene(UBGraphicsScene* scene, bool replaceActiveIfEmp
if (replaceActiveIfEmpty && mActiveScene->isEmpty())
{
UBPersistenceManager::persistenceManager()->persistDocumentScene(mActiveDocument, clone, mActiveSceneIndex);
setActiveDocumentScene(mActiveDocument, mActiveSceneIndex);
setActiveDocumentScene(mActiveSceneIndex);
}
else
{
persistCurrentScene();
UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(mActiveDocument, clone, mActiveSceneIndex + 1);
setActiveDocumentScene(mActiveDocument, mActiveSceneIndex + 1);
UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(selectedDocument(), clone, mActiveSceneIndex + 1);
setActiveDocumentScene(mActiveSceneIndex + 1);
}
mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
}
}
@ -537,22 +515,48 @@ void UBBoardController::addScene(UBDocumentProxy* proxy, int sceneIndex, bool re
}
}
void UBBoardController::duplicateScene(int nIndex)
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
persistCurrentScene();
QList<int> scIndexes;
scIndexes << nIndex;
duplicatePages(scIndexes);
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
setActiveDocumentScene(nIndex + 1);
QApplication::restoreOverrideCursor();
emit pageChanged();
}
void UBBoardController::duplicateScene()
{
if (UBApplication::applicationController->displayMode() != UBApplicationController::Board)
return;
duplicateScene(mActiveSceneIndex);
}
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
persistCurrentScene();
void UBBoardController::deleteScene(int nIndex)
{
if (selectedDocument()->pageCount()>2)
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
persistCurrentScene();
UBPersistenceManager::persistenceManager()->duplicateDocumentScene(mActiveDocument, mActiveSceneIndex);
mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
QList<int> scIndexes;
scIndexes << nIndex;
deletePages(scIndexes);
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
setActiveDocumentScene(mActiveDocument, mActiveSceneIndex + 1);
QApplication::restoreOverrideCursor();
emit pageChanged();
if (nIndex >= pageCount())
nIndex = pageCount()-1;
setActiveDocumentScene(nIndex);
QApplication::restoreOverrideCursor();
}
}
@ -598,7 +602,7 @@ void UBBoardController::clearSceneBackground()
void UBBoardController::showDocumentsDialog()
{
if (mActiveDocument)
if (selectedDocument())
persistCurrentScene();
UBApplication::mainWindow->actionLibrary->setChecked(false);
@ -725,7 +729,7 @@ void UBBoardController::previousScene()
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
persistCurrentScene();
setActiveDocumentScene(mActiveDocument, mActiveSceneIndex - 1);
setActiveDocumentScene(mActiveSceneIndex - 1);
QApplication::restoreOverrideCursor();
}
@ -736,11 +740,11 @@ void UBBoardController::previousScene()
void UBBoardController::nextScene()
{
if (mActiveSceneIndex < mActiveDocument->pageCount() - 1)
if (mActiveSceneIndex < selectedDocument()->pageCount() - 1)
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
persistCurrentScene();
setActiveDocumentScene(mActiveDocument, mActiveSceneIndex + 1);
setActiveDocumentScene(mActiveSceneIndex + 1);
QApplication::restoreOverrideCursor();
}
@ -755,7 +759,7 @@ void UBBoardController::firstScene()
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
persistCurrentScene();
setActiveDocumentScene(mActiveDocument, 0);
setActiveDocumentScene(0);
QApplication::restoreOverrideCursor();
}
@ -766,11 +770,11 @@ void UBBoardController::firstScene()
void UBBoardController::lastScene()
{
if (mActiveSceneIndex < mActiveDocument->pageCount() - 1)
if (mActiveSceneIndex < selectedDocument()->pageCount() - 1)
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
persistCurrentScene();
setActiveDocumentScene(mActiveDocument, mActiveDocument->pageCount() - 1);
setActiveDocumentScene(selectedDocument()->pageCount() - 1);
QApplication::restoreOverrideCursor();
}
@ -855,13 +859,9 @@ void UBBoardController::downloadURL(const QUrl& url, const QPointF& pPos, const
void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground)
{
QGraphicsItem *oldBackgroundObject = NULL;
if (isBackground)
oldBackgroundObject = mActiveScene->backgroundObject();
QString mimeType = pContentTypeHeader;
// In some cases "image/jpeg;charset=" is returned by the drag-n-drop. That is
// In some cases "image/jpeg;charset=" is retourned by the drag-n-drop. That is
// why we will check if an ; exists and take the first part (the standard allows this kind of mimetype)
int position=mimeType.indexOf(";");
if(position != -1)
@ -977,7 +977,7 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
QUuid uuid = QUuid::createUuid();
QUrl url = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
->addVideoFileToDocument(mActiveDocument, sourceUrl, pData, uuid));
->addVideoFileToDocument(selectedDocument(), sourceUrl, pData, uuid));
mediaVideoItem = mActiveScene->addMedia(url, false, pPos);
@ -1006,9 +1006,10 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
QUuid uuid = QUuid::createUuid();
QUrl url = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
->addVideoFileToDocument(mActiveDocument, sourceUrl, pData, uuid));
->addVideoFileToDocument(selectedDocument(), sourceUrl, pData, uuid));
audioMediaItem = mActiveScene->addMedia(url, false, pPos);
audioMediaItem->setSourceUrl(sourceUrl);
audioMediaItem->setUuid(uuid);
}
@ -1079,20 +1080,20 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
int result = 0;
if(!sourceUrl.isEmpty()){
QFile sourceFile(sourceUrl.toLocalFile());
result = UBDocumentManager::documentManager()->addFileToDocument(mActiveDocument, sourceFile);
result = UBDocumentManager::documentManager()->addFileToDocument(selectedDocument(), sourceFile);
}
else if(pData.size()){
QTemporaryFile pdfFile("XXXXXX.pdf");
if (pdfFile.open())
{
pdfFile.write(pData);
result = UBDocumentManager::documentManager()->addFileToDocument(mActiveDocument, pdfFile);
result = UBDocumentManager::documentManager()->addFileToDocument(selectedDocument(), pdfFile);
pdfFile.close();
}
}
if (result){
mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
}
}
else if (mimeType.startsWith("application/vnd.mnemis-uniboard-tool"))
@ -1197,23 +1198,18 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
UBApplication::showMessage(tr("Unknown content type %1").arg(pContentTypeHeader));
qWarning() << "ignoring mime type" << pContentTypeHeader ;
}
if (isBackground && oldBackgroundObject != mActiveScene->backgroundObject())
{
if (mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented
UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, oldBackgroundObject, mActiveScene->backgroundObject());
UBApplication::undoStack->push(uc);
}
}
}
void UBBoardController::setActiveDocumentScene(int pSceneIndex)
{
setActiveDocumentScene(selectedDocument(), pSceneIndex);
}
void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, const int pSceneIndex)
void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, const int pSceneIndex, bool forceReload)
{
saveViewState();
bool documentChange = mActiveDocument != pDocumentProxy;
bool documentChange = selectedDocument() != pDocumentProxy;
int index = pSceneIndex;
int sceneCount = pDocumentProxy->pageCount();
@ -1231,11 +1227,14 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy,
if(sceneChange)
emit activeSceneWillChange();
persistCurrentScene();
ClearUndoStack();
mActiveScene = targetScene;
mActiveDocument = pDocumentProxy;
mActiveSceneIndex = index;
setDocument(pDocumentProxy, forceReload);
updateSystemScaleFactor();
@ -1260,9 +1259,6 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy,
if(documentChange)
{
emit activeDocumentChanged();
// Notify the navigator palette that the document has changed
emit setDocOnPageNavigator(pDocumentProxy);
UBGraphicsTextItem::lastUsedTextColor = QColor();
}
@ -1274,6 +1270,22 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy,
}
}
void UBBoardController::moveSceneToIndex(int source, int target)
{
if (selectedDocument())
{
persistCurrentScene();
UBDocumentContainer::movePageToIndex(source, target);
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBMetadataDcSubsetAdaptor::persist(selectedDocument());
setActiveDocumentScene(target);
}
}
void UBBoardController::ClearUndoStack()
{
QSet<QGraphicsItem*> uniqueItems;
@ -1331,7 +1343,7 @@ void UBBoardController::adjustDisplayViews()
if (UBApplication::applicationController)
{
UBApplication::applicationController->adjustDisplayView();
UBApplication::applicationController->adjustPreviousViews(mActiveSceneIndex, mActiveDocument);
UBApplication::applicationController->adjustPreviousViews(mActiveSceneIndex, selectedDocument());
}
}
@ -1381,7 +1393,7 @@ void UBBoardController::boardViewResized(QResizeEvent* event)
void UBBoardController::documentWillBeDeleted(UBDocumentProxy* pProxy)
{
if (mActiveDocument == pProxy)
if (selectedDocument() == pProxy)
{
if (!mIsClosing)
setActiveDocumentScene(UBPersistenceManager::persistenceManager()->createDocument());
@ -1411,6 +1423,7 @@ void UBBoardController::setDisabled(bool disable)
void UBBoardController::selectionChanged()
{
updateActionStates();
emit pageSelectionChanged(activeSceneIndex());
}
@ -1427,18 +1440,12 @@ void UBBoardController::undoRedoStateChange(bool canUndo)
void UBBoardController::updateActionStates()
{
mMainWindow->actionBack->setEnabled(mActiveDocument && (mActiveSceneIndex > 0));
mMainWindow->actionForward->setEnabled(mActiveDocument && (mActiveSceneIndex < mActiveDocument->pageCount() - 1));
mMainWindow->actionBack->setEnabled(selectedDocument() && (mActiveSceneIndex > 0));
mMainWindow->actionForward->setEnabled(selectedDocument() && (mActiveSceneIndex < selectedDocument()->pageCount() - 1));
mMainWindow->actionErase->setEnabled(mActiveScene && !mActiveScene->isEmpty());
}
UBDocumentProxy* UBBoardController::activeDocument() const
{
return mActiveDocument;
}
UBGraphicsScene* UBBoardController::activeScene() const
{
return mActiveScene;
@ -1455,9 +1462,9 @@ void UBBoardController::documentSceneChanged(UBDocumentProxy* pDocumentProxy, in
{
Q_UNUSED(pIndex);
if(mActiveDocument == pDocumentProxy)
if(selectedDocument() == pDocumentProxy)
{
setActiveDocumentScene(mActiveDocument, mActiveSceneIndex);
setActiveDocumentScene(mActiveSceneIndex);
}
}
@ -1472,9 +1479,9 @@ void UBBoardController::lastWindowClosed()
{
if (!mCleanupDone)
{
if (mActiveDocument->pageCount() == 1 && (!mActiveScene || mActiveScene->isEmpty()))
if (selectedDocument()->pageCount() == 1 && (!mActiveScene || mActiveScene->isEmpty()))
{
UBPersistenceManager::persistenceManager()->deleteDocument(mActiveDocument);
UBPersistenceManager::persistenceManager()->deleteDocument(selectedDocument());
}
else
{
@ -1597,13 +1604,14 @@ void UBBoardController::show()
void UBBoardController::persistCurrentScene()
{
if(UBPersistenceManager::persistenceManager()
&& mActiveDocument && mActiveScene
&& (mActiveSceneIndex >= 0))
&& selectedDocument() && mActiveScene
&& (mActiveSceneIndex >= 0)
&& mActiveScene->isModified())
{
emit activeSceneWillBePersisted();
UBPersistenceManager::persistenceManager()->persistDocumentScene(mActiveDocument, mActiveScene, mActiveSceneIndex);
UBMetadataDcSubsetAdaptor::persist(mActiveDocument);
UBPersistenceManager::persistenceManager()->persistDocumentScene(selectedDocument(), mActiveScene, mActiveSceneIndex);
updatePage(mActiveSceneIndex);
}
}
@ -1688,7 +1696,7 @@ void UBBoardController::setPageSize(QSize newSize)
updateSystemScaleFactor();
updatePageSizeState();
adjustDisplayViews();
mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBSettings::settings()->pageSize->set(newSize);
}
@ -1704,8 +1712,6 @@ void UBBoardController::notifyCache(bool visible)
{
emit cacheDisabled();
}
mCacheWidgetIsEnabled = visible;
}
void UBBoardController::updatePageSizeState()
@ -1811,7 +1817,7 @@ void UBBoardController::grabScene(const QRectF& pSceneRect)
mActiveScene->setRenderingQuality(UBItem::RenderingQualityNormal);
mPaletteManager->addItem(QPixmap::fromImage(image));
mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
}
}
@ -1839,11 +1845,16 @@ UBGraphicsMediaItem* UBBoardController::addVideo(const QUrl& pSourceUrl, bool st
QUuid uuid = QUuid::createUuid();
QUrl concreteUrl = pSourceUrl;
concreteUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
#ifdef Q_WS_X11
concreteUrl = QUrl::fromLocalFile(mActiveDocument->persistencePath() + "/" + UBPersistenceManager::persistenceManager()
->addVideoFileToDocument(mActiveDocument, pSourceUrl.toLocalFile(), uuid));
#else
concreteUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
->addVideoFileToDocument(selectedDocument(), pSourceUrl.toLocalFile(), uuid));
#endif
UBGraphicsMediaItem* vi = mActiveScene->addMedia(concreteUrl, startPlay, pos);
mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
if (vi) {
vi->setUuid(uuid);
@ -1859,11 +1870,16 @@ UBGraphicsMediaItem* UBBoardController::addAudio(const QUrl& pSourceUrl, bool st
QUuid uuid = QUuid::createUuid();
QUrl concreteUrl = pSourceUrl;
concreteUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
#ifdef Q_WS_X11
concreteUrl = QUrl::fromLocalFile(mActiveDocument->persistencePath() + "/" + UBPersistenceManager::persistenceManager()
->addAudioFileToDocument(mActiveDocument, pSourceUrl.toLocalFile(), uuid));
#else
concreteUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
->addAudioFileToDocument(selectedDocument(), pSourceUrl.toLocalFile(), uuid));
#endif
UBGraphicsMediaItem* ai = mActiveScene->addMedia(concreteUrl, startPlay, pos);
mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
if (ai){
ai->setUuid(uuid);
@ -1881,7 +1897,7 @@ UBGraphicsWidgetItem *UBBoardController::addW3cWidget(const QUrl &pUrl, const QP
QUuid uuid = QUuid::createUuid();
QUrl newUrl = pUrl;
newUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()->addGraphicsWidgteToDocument(mActiveDocument, pUrl.toLocalFile(), uuid));
newUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()->addGraphicsWidgteToDocument(selectedDocument(), pUrl.toLocalFile(), uuid));
w3cWidgetItem = mActiveScene->addW3CWidget(newUrl, pos);
@ -1891,14 +1907,15 @@ UBGraphicsWidgetItem *UBBoardController::addW3cWidget(const QUrl &pUrl, const QP
w3cWidgetItem->setSourceUrl(pUrl);
QString struuid = UBStringUtils::toCanonicalUuid(uuid);
QString snapshotPath = mActiveDocument->persistencePath() + "/" + UBPersistenceManager::widgetDirectory + "/" + struuid + ".png";
QString snapshotPath = selectedDocument()->persistencePath() + "/" + UBPersistenceManager::widgetDirectory + "/" + struuid + ".png";
w3cWidgetItem->setSnapshotPath(QUrl::fromLocalFile(snapshotPath));
UBGraphicsWidgetItem *tmpItem = dynamic_cast<UBGraphicsWidgetItem*>(w3cWidgetItem);
if (tmpItem)
tmpItem->widgetWebView()->takeSnapshot().save(snapshotPath, "PNG");
}
return w3cWidgetItem;
return 0;
}
void UBBoardController::cut()
@ -1937,7 +1954,7 @@ void UBBoardController::cut()
mimeGi->setData(UBApplication::mimeTypeUniboardPageItem, QByteArray());
clipboard->setMimeData(mimeGi);
mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
}
//---------------------------------------------------------//
@ -1975,7 +1992,7 @@ void UBBoardController::paste()
QPointF pos(0, 0);
processMimeData(clipboard->mimeData(), pos);
mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
}
@ -1988,15 +2005,15 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
if (mimeData)
{
int previousActiveSceneIndex = activeSceneIndex();
int previousPageCount = activeDocument()->pageCount();
int previousPageCount = selectedDocument()->pageCount();
foreach (UBMimeDataItem sourceItem, mimeData->items())
addScene(sourceItem.documentProxy(), sourceItem.sceneIndex(), true);
if (activeDocument()->pageCount() < previousPageCount + mimeData->items().count())
setActiveDocumentScene(activeDocument(), previousActiveSceneIndex);
if (selectedDocument()->pageCount() < previousPageCount + mimeData->items().count())
setActiveDocumentScene(previousActiveSceneIndex);
else
setActiveDocumentScene(activeDocument(), previousActiveSceneIndex + 1);
setActiveDocumentScene(previousActiveSceneIndex + 1);
return;
}
@ -2031,12 +2048,8 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
if("" != url)
{
downloadURL(url, pPos);
return;
}
else
{
mActiveScene->addTextHtml(qsHtml, pPos);
}
return;
}
if (pMimeData->hasUrls())
@ -2072,11 +2085,11 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
if("" != pMimeData->text()){
// Sometimes, it is possible to have an URL as text. we check here if it is the case
QString qsTmp = pMimeData->text().remove(QRegExp("[\\0]"));
if(qsTmp.startsWith("http://") || qsTmp.startsWith("https://")){
if(qsTmp.startsWith("http")){
downloadURL(QUrl(qsTmp), pPos);
}
else{
mActiveScene->addTextHtml(pMimeData->text(), pPos);
mActiveScene->addTextHtml(pMimeData->html(), pPos);
}
}
else{
@ -2196,11 +2209,11 @@ void UBBoardController::addItem()
void UBBoardController::importPage()
{
int pageCount = mActiveDocument->pageCount();
int pageCount = selectedDocument()->pageCount();
if (UBApplication::documentController->addFileToDocument(mActiveDocument))
if (UBApplication::documentController->addFileToDocument(selectedDocument()))
{
setActiveDocumentScene(mActiveDocument, pageCount);
setActiveDocumentScene(pageCount);
}
}

@ -19,6 +19,7 @@
#include <QtGui>
#include <QObject>
#include "document/UBDocumentContainer.h"
class UBMainWindow;
class UBApplication;
@ -40,7 +41,7 @@ class UBGraphicsWidgetItem;
class UBBoardPaletteManager;
class UBBoardController : public QObject
class UBBoardController : public UBDocumentContainer
{
Q_OBJECT
@ -50,7 +51,7 @@ class UBBoardController : public QObject
void init();
void setupLayout();
UBDocumentProxy* activeDocument() const;
UBGraphicsScene* activeScene() const;
int activeSceneIndex() const;
QSize displayViewport();
@ -60,14 +61,6 @@ class UBBoardController : public QObject
int currentPage();
int pageFromSceneIndex(int sceneIndex);
int sceneIndexFromPage(int page);
UBDocumentProxy* activeDocument()
{
return mActiveDocument;
}
QWidget* controlContainer()
{
return mControlContainer;
@ -158,10 +151,15 @@ class UBBoardController : public QObject
void displayMetaData(QMap<QString, QString> metadatas);
void ClearUndoStack();
void emitScrollSignal() { emit scrollToSelectedPage(); }
void setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, int pSceneIndex = 0, bool forceReload = false);
void setActiveDocumentScene(int pSceneIndex);
void moveSceneToIndex(int source, int target);
void duplicateScene(int index);
void deleteScene(int index);
public slots:
void setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, int pSceneIndex = 0);
void showDocumentsDialog();
void showKeyboard(bool show);
void togglePodcast(bool checked);
@ -222,14 +220,12 @@ class UBBoardController : public QObject
void freezeW3CWidget(QGraphicsItem* item, bool freeze);
void startScript();
void stopScript();
bool cacheIsVisible();
signals:
void newPageAdded();
void activeSceneWillBePersisted();
void activeSceneWillChange();
void activeSceneChanged();
void activeDocumentChanged();
void zoomChanged(qreal pZoomFactor);
void systemScaleFactorChanged(qreal pSystemScaleFactor);
void penColorChanged();
@ -238,10 +234,9 @@ class UBBoardController : public QObject
void cacheEnabled();
void cacheDisabled();
void pageChanged();
void setDocOnPageNavigator(UBDocumentProxy* doc);
void documentReorganized(int index);
void displayMetadata(QMap<QString, QString> metadata);
void scrollToSelectedPage();
void pageSelectionChanged(int index);
protected:
void setupViews();
@ -263,7 +258,6 @@ class UBBoardController : public QObject
void adjustDisplayViews();
UBMainWindow *mMainWindow;
UBDocumentProxy* mActiveDocument;
UBGraphicsScene* mActiveScene;
int mActiveSceneIndex;
UBBoardPaletteManager *mPaletteManager;
@ -283,7 +277,6 @@ class UBBoardController : public QObject
qreal mSystemScaleFactor;
bool mCleanupDone;
QMap<QAction*, QPair<QString, QString> > mActionTexts;
bool mCacheWidgetIsEnabled;
private slots:
void stylusToolDoubleClicked(int tool);

@ -134,8 +134,6 @@ void UBBoardPaletteManager::setupDockPaletteWidgets()
//------------------------------------------------//
// Create the widgets for the dock palettes
mpPageNavigWidget = new UBPageNavigationWidget();
#ifdef USE_WEB_WIDGET
mpLibWidget = new UBLibWidget();
#endif
@ -352,7 +350,7 @@ void UBBoardPaletteManager::pagePaletteButtonReleased()
QList<QAction*>pageActions;
pageActions << UBApplication::mainWindow->actionNewPage;
UBBoardController* boardController = UBApplication::boardController;
if(UBApplication::documentController->pageCanBeDuplicated(boardController->pageFromSceneIndex(boardController->activeSceneIndex())))
if(UBApplication::documentController->pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(boardController->activeSceneIndex())))
pageActions << UBApplication::mainWindow->actionDuplicatePage;
pageActions << UBApplication::mainWindow->actionImportPage;
@ -568,7 +566,7 @@ void UBBoardPaletteManager::activeSceneChanged()
if (mpPageNavigWidget)
{
mpPageNavigWidget->setPageNumber(UBApplication::boardController->pageFromSceneIndex(pageIndex), activeScene->document()->pageCount());
mpPageNavigWidget->setPageNumber(UBDocumentContainer::pageFromSceneIndex(pageIndex), activeScene->document()->pageCount());
}
if (mZoomPalette)

@ -562,7 +562,7 @@ void UBLibraryController::removeBackground()
UBGraphicsScene* UBLibraryController::activeScene()
{
if (mBoardController->activeDocument())
if (mBoardController->selectedDocument())
return mBoardController->activeScene();
return 0;

@ -340,8 +340,7 @@ void UBApplicationController::showBoard()
int selectedSceneIndex = UBApplication::documentController->getSelectedItemIndex();
if (selectedSceneIndex != -1)
{
UBApplication::boardController->setActiveDocumentScene(UBApplication::documentController->getCurrentDocument(), selectedSceneIndex);
UBApplication::boardController->emitScrollSignal();
UBApplication::boardController->setActiveDocumentScene(UBApplication::documentController->selectedDocument(), selectedSceneIndex, true);
}
}

@ -608,10 +608,10 @@ void UBPersistenceManager::persistDocumentScene(UBDocumentProxy* pDocumentProxy,
if (pScene->isModified())
{
UBThumbnailAdaptor::persistScene(pDocumentProxy->persistencePath(), pScene, pSceneIndex);
UBSvgSubsetAdaptor::persistScene(pDocumentProxy, pScene, pSceneIndex);
UBThumbnailAdaptor::persistScene(pDocumentProxy, pScene, pSceneIndex);
pScene->setModified(false);
}

@ -0,0 +1,127 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "UBDocumentContainer.h"
#include "adaptors/UBThumbnailAdaptor.h"
#include "core/UBPersistenceManager.h"
#include "core/memcheck.h"
UBDocumentContainer::UBDocumentContainer(QObject * parent)
:QObject(parent)
,mCurrentDocument(NULL)
{}
UBDocumentContainer::~UBDocumentContainer()
{
foreach(const QPixmap* pm, mDocumentThumbs)
delete pm;
}
void UBDocumentContainer::setDocument(UBDocumentProxy* document, bool forceReload)
{
if (mCurrentDocument != document || forceReload)
{
mCurrentDocument = document;
reloadThumbnails();
emit documentSet(mCurrentDocument);
}
}
void UBDocumentContainer::duplicatePages(QList<int>& pageIndexes)
{
int offset = 0;
foreach(int sceneIndex, pageIndexes)
{
UBPersistenceManager::persistenceManager()->duplicateDocumentScene(mCurrentDocument, sceneIndex + offset);
insertThumbPage(sceneIndex + offset);
offset++;
}
emit documentThumbnailsUpdated(this);
}
void UBDocumentContainer::movePageToIndex(int source, int target)
{
UBPersistenceManager::persistenceManager()->moveSceneToIndex(mCurrentDocument, source, target);
deleteThumbPage(source);
insertThumbPage(target);
emit documentThumbnailsUpdated(this);
}
void UBDocumentContainer::deletePages(QList<int>& pageIndexes)
{
UBPersistenceManager::persistenceManager()->deleteDocumentScenes(mCurrentDocument, pageIndexes);
int offset = 0;
foreach(int index, pageIndexes)
{
deleteThumbPage(index - offset);
offset++;
}
emit documentThumbnailsUpdated(this);
}
void UBDocumentContainer::addPage(int index)
{
UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mCurrentDocument, index);
insertThumbPage(index);
emit documentThumbnailsUpdated(this);
}
void UBDocumentContainer::updatePage(int index)
{
updateThumbPage(index);
emit documentThumbnailsUpdated(this);
}
void UBDocumentContainer::deleteThumbPage(int index)
{
mDocumentThumbs.removeAt(index);
emit documentPageDeleted(index);
}
void UBDocumentContainer::updateThumbPage(int index)
{
mDocumentThumbs[index] = UBThumbnailAdaptor::get(mCurrentDocument, index);
emit documentPageUpdated(index);
}
void UBDocumentContainer::insertThumbPage(int index)
{
mDocumentThumbs.insert(index, UBThumbnailAdaptor::get(mCurrentDocument, index));
emit documentPageAdded(index);
}
void UBDocumentContainer::reloadThumbnails()
{
if (mCurrentDocument)
{
UBThumbnailAdaptor::load(mCurrentDocument, mDocumentThumbs);
emit documentThumbnailsUpdated(this);
}
}
int UBDocumentContainer::pageFromSceneIndex(int sceneIndex)
{
if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
return sceneIndex;
return sceneIndex+1;
}
int UBDocumentContainer::sceneIndexFromPage(int page)
{
if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
return page;
return page-1;
}

@ -0,0 +1,67 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef UBDOCUMENTCONTAINER_H_
#define UBDOCUMENTCONTAINER_H_
#include <QtGui>
#include "UBDocumentProxy.h"
class UBDocumentContainer : public QObject
{
Q_OBJECT
public:
UBDocumentContainer(QObject * parent = 0);
virtual ~UBDocumentContainer();
void setDocument(UBDocumentProxy* document, bool forceReload = false);
UBDocumentProxy* selectedDocument(){return mCurrentDocument;}
int pageCount(){return mDocumentThumbs.size();}
const QPixmap* pageAt(int index){return mDocumentThumbs[index];}
static int pageFromSceneIndex(int sceneIndex);
static int sceneIndexFromPage(int sceneIndex);
void duplicatePages(QList<int>& pageIndexes);
void movePageToIndex(int source, int target);
void deletePages(QList<int>& pageIndexes);
void addPage(int index);
void updatePage(int index);
private:
void deleteThumbPage(int index);
void updateThumbPage(int index);
void insertThumbPage(int index);
UBDocumentProxy* mCurrentDocument;
QList<const QPixmap*> mDocumentThumbs;
protected:
void reloadThumbnails();
signals:
void documentSet(UBDocumentProxy* document);
void documentPageAdded(int index);
void documentPageDeleted(int index);
void documentPageUpdated(int index);
void documentThumbnailsUpdated(UBDocumentContainer* source);
};
#endif /* UBDOCUMENTPROXY_H_ */

@ -58,7 +58,7 @@
#include "core/memcheck.h"
UBDocumentController::UBDocumentController(UBMainWindow* mainWindow)
: QObject(mainWindow->centralWidget())
: UBDocumentContainer(mainWindow->centralWidget())
, mSelectionType(None)
, mParentWidget(mainWindow->centralWidget())
, mBoardController(UBApplication::boardController)
@ -72,15 +72,16 @@ UBDocumentController::UBDocumentController(UBMainWindow* mainWindow)
{
setupViews();
setupToolbar();
this->selectDocument(UBApplication::boardController->activeDocument());
this->selectDocument(UBApplication::boardController->selectedDocument());
connect(this, SIGNAL(exportDone()), mMainWindow, SLOT(onExportDone()));
connect(mMainWindow->actionNewPage, SIGNAL(triggered()), this, SLOT(reloadThumbs()));
//connect(mMainWindow->actionNewPage, SIGNAL(triggered()), this, SLOT(reloadThumbs()));
connect(this, SIGNAL(documentThumbnailsUpdated(UBDocumentContainer*)), this, SLOT(refreshDocumentThumbnailsView(UBDocumentContainer*)));
}
void UBDocumentController::reloadThumbs()
{
mDocumentThumbs = UBThumbnailAdaptor::load(selectedDocumentProxy());
}
//void UBDocumentController::reloadThumbs()
//{
// UBThumbnailAdaptor::load(selectedDocumentProxy(), mDocumentThumbs);
//}
UBDocumentController::~UBDocumentController()
{
@ -154,6 +155,8 @@ void UBDocumentController::selectDocument(UBDocumentProxy* proxy, bool setAsCurr
if (selected)
{
setDocument(proxy);
selected->setSelected(true);
selected->parent()->setExpanded(true);
@ -162,7 +165,7 @@ void UBDocumentController::selectDocument(UBDocumentProxy* proxy, bool setAsCurr
if (setAsCurrentDocument)
{
selected->setIcon(0, QIcon(":/images/currentDocument.png"));
if (proxy != mBoardController->activeDocument())
if (proxy != mBoardController->selectedDocument())
mBoardController->setActiveDocumentScene(proxy);
}
@ -170,9 +173,6 @@ void UBDocumentController::selectDocument(UBDocumentProxy* proxy, bool setAsCurr
mDocumentUI->documentTreeWidget->scrollToItem(selected);
mDocumentThumbs = UBThumbnailAdaptor::load(selectedDocumentProxy());
refreshDocumentThumbnailsView();
mSelectionType = Document;
}
}
@ -253,7 +253,7 @@ UBDocumentGroupTreeItem* UBDocumentController::selectedDocumentGroupTreeItem()
void UBDocumentController::itemSelectionChanged()
{
refreshDocumentThumbnailsView();
reloadThumbnails();
if (selectedDocumentProxy())
mSelectionType = Document;
@ -266,62 +266,6 @@ void UBDocumentController::itemSelectionChanged()
}
void UBDocumentController::refreshDocumentThumbnailsView()
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
QList<QGraphicsItem*> items;
QList<QUrl> itemsPath;
UBDocumentProxy *proxy = selectedDocumentProxy();
QGraphicsPixmapItem *selection = 0;
QStringList labels;
if (proxy)
{
mCurrentDocument = proxy;
for (int i = 0; i < mDocumentThumbs.count(); i++)
{
QPixmap pix = mDocumentThumbs.at(i);
QGraphicsPixmapItem *pixmapItem = new UBSceneThumbnailPixmap(pix, proxy, i); // deleted by the tree widget
if (proxy == mBoardController->activeDocument() && mBoardController->activeSceneIndex() == i)
{
selection = pixmapItem;
}
items << pixmapItem;
labels << tr("Page %1").arg(UBApplication::boardController->pageFromSceneIndex(i));
itemsPath.append(QUrl::fromLocalFile(proxy->persistencePath() + QString("/pages/%1").arg(UBApplication::boardController->pageFromSceneIndex(i))));
}
}
mDocumentUI->thumbnailWidget->setGraphicsItems(items, itemsPath, labels, UBApplication::mimeTypeUniboardPage);
UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
if (proxyTi && (proxyTi->parent() == mTrashTi))
mDocumentUI->thumbnailWidget->setDragEnabled(false);
else
mDocumentUI->thumbnailWidget->setDragEnabled(true);
mDocumentUI->thumbnailWidget->ensureVisible(0, 0, 10, 10);
if (selection) {
disconnect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
UBSceneThumbnailPixmap *currentScene = dynamic_cast<UBSceneThumbnailPixmap*>(selection);
if (currentScene)
mDocumentUI->thumbnailWidget->hightlightItem(currentScene->sceneIndex());
connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
}
emit refreshThumbnails();
QApplication::restoreOverrideCursor();
}
void UBDocumentController::setupViews()
{
@ -485,7 +429,7 @@ void UBDocumentController::setupPalettes()
void UBDocumentController::show()
{
selectDocument(mBoardController->activeDocument());
selectDocument(mBoardController->selectedDocument());
selectionChanged();
@ -559,22 +503,11 @@ void UBDocumentController::duplicateSelectedItem()
}
if (selectedSceneIndexes.count() > 0)
{
UBSceneThumbnailPixmap *thumb = dynamic_cast<UBSceneThumbnailPixmap*>(selectedItems.at(0));
UBDocumentProxy *proxy = thumb->proxy();
int offset = 0;
if (proxy)
{
foreach (int sceneIndex, selectedSceneIndexes)
{
UBPersistenceManager::persistenceManager()->duplicateDocumentScene(proxy, sceneIndex + offset);
mDocumentThumbs.insert(sceneIndex + offset, mDocumentThumbs.at(sceneIndex + offset));
offset++;
}
}
refreshDocumentThumbnailsView();
proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBMetadataDcSubsetAdaptor::persist(proxy);
mDocumentUI->thumbnailWidget->selectItemAt(selectedSceneIndexes.last() + offset);
duplicatePages(selectedSceneIndexes);
selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBMetadataDcSubsetAdaptor::persist(selectedDocument());
mDocumentUI->thumbnailWidget->selectItemAt(selectedSceneIndexes.last() + selectedSceneIndexes.size());
}
}
else
@ -626,7 +559,7 @@ void UBDocumentController::deleteSelectedItem()
if (index >= 0)
{
if (proxyTi->proxy() == mBoardController->activeDocument())
if (proxyTi->proxy() == mBoardController->selectedDocument())
{
selectDocument(((UBDocumentProxyTreeItem*)proxyTi->parent()->child(index))->proxy());
}
@ -635,7 +568,7 @@ void UBDocumentController::deleteSelectedItem()
}
else if (proxyTi->parent()->childCount() > 1)
{
if (proxyTi->proxy() == mBoardController->activeDocument())
if (proxyTi->proxy() == mBoardController->selectedDocument())
{
selectDocument(((UBDocumentProxyTreeItem*)proxyTi->parent()->child(1))->proxy());
}
@ -644,7 +577,7 @@ void UBDocumentController::deleteSelectedItem()
}
else
{
if (proxyTi->proxy() == mBoardController->activeDocument())
if (proxyTi->proxy() == mBoardController->selectedDocument())
{
for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
{
@ -665,7 +598,7 @@ void UBDocumentController::deleteSelectedItem()
UBPersistenceManager::persistenceManager()->deleteDocument(proxyTi->proxy());
refreshDocumentThumbnailsView();
reloadThumbnails();
}
else
{
@ -722,7 +655,7 @@ void UBDocumentController::deleteSelectedItem()
for (int i = 0; i < groupTi->childCount(); i++)
{
UBDocumentProxyTreeItem* proxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
if (proxyTi && proxyTi->proxy() && proxyTi->proxy() == mBoardController->activeDocument())
if (proxyTi && proxyTi->proxy() && proxyTi->proxy() == mBoardController->selectedDocument())
{
changeCurrentDocument = true;
break;
@ -780,7 +713,7 @@ void UBDocumentController::deleteSelectedItem()
}
}
refreshDocumentThumbnailsView();
reloadThumbnails();
QApplication::restoreOverrideCursor();
}
@ -818,19 +751,6 @@ void UBDocumentController::documentZoomSliderValueChanged (int value)
}
UBGraphicsScene* UBDocumentController::activeScene()
{
if (mBoardController->activeDocument())
{
return mBoardController->activeScene();
}
else
{
return 0;
}
}
void UBDocumentController::loadDocumentProxies()
{
QList<QPointer<UBDocumentProxy> > proxies = UBPersistenceManager::persistenceManager()->documentProxies;
@ -890,7 +810,7 @@ void UBDocumentController::loadDocumentProxies()
QTreeWidgetItem* docItem = new UBDocumentProxyTreeItem(docGroupItem, proxy, !isInTrash);
docItem->setText(0, docName);
if (mBoardController->activeDocument() == proxy)
if (mBoardController->selectedDocument() == proxy)
{
mDocumentUI->documentTreeWidget->expandItem(docGroupItem);
mDocumentUI->documentTreeWidget->setCurrentItem(docGroupItem);
@ -1051,8 +971,7 @@ void UBDocumentController::addFolderOfImages()
{
document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBMetadataDcSubsetAdaptor::persist(document);
mDocumentThumbs = UBThumbnailAdaptor::load(selectedDocumentProxy());
refreshDocumentThumbnailsView();
reloadThumbnails();
}
}
}
@ -1066,8 +985,7 @@ void UBDocumentController::addFileToDocument()
if (document)
{
addFileToDocument(document);
mDocumentThumbs = UBThumbnailAdaptor::load(document);
refreshDocumentThumbnailsView();
reloadThumbnails();
}
}
@ -1114,12 +1032,11 @@ bool UBDocumentController::addFileToDocument(UBDocumentProxy* document)
void UBDocumentController::moveSceneToIndex(UBDocumentProxy* proxy, int source, int target)
{
UBPersistenceManager::persistenceManager()->moveSceneToIndex(proxy, source, target);
UBDocumentContainer::movePageToIndex(source, target);
proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBMetadataDcSubsetAdaptor::persist(proxy);
mDocumentThumbs.insert(target, mDocumentThumbs.takeAt(source));
refreshDocumentThumbnailsView();
mDocumentUI->thumbnailWidget->hightlightItem(target);
}
@ -1183,11 +1100,11 @@ void UBDocumentController::selectionChanged()
else if(pageSelected){
QList<QGraphicsItem*> selection = mDocumentUI->thumbnailWidget->selectedItems();
if(pageCount == 1)
mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBApplication::boardController->pageFromSceneIndex(0)));
mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0)));
else{
for(int i = 0; i < selection.count() && !firstSceneSelected; i += 1){
if(dynamic_cast<UBSceneThumbnailPixmap*>(selection.at(i))->sceneIndex() == 0){
mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBApplication::boardController->pageFromSceneIndex(0)));
mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0)));
firstSceneSelected = true;
}
}
@ -1202,7 +1119,7 @@ void UBDocumentController::selectionChanged()
mMainWindow->actionRename->setEnabled((groupSelected || docSelected) && !trashSelected && !defaultGroupSelected);
mMainWindow->actionAddToWorkingDocument->setEnabled(pageSelected
&& !(selectedDocumentProxy() == mBoardController->activeDocument()) && !trashSelected);
&& !(selectedDocumentProxy() == mBoardController->selectedDocument()) && !trashSelected);
bool deleteEnabled = false;
if (trashSelected)
@ -1261,7 +1178,7 @@ void UBDocumentController::documentSceneChanged(UBDocumentProxy* proxy, int pSce
if (proxy == selectedDocumentProxy())
{
refreshDocumentThumbnailsView();
reloadThumbnails();
}
}
@ -1350,11 +1267,11 @@ void UBDocumentController::addToDocument()
mBoardController->addScene(pageInfoList.at(i).first, pageInfoList.at(i).second, true);
}
int newActiveSceneIndex = selectedItems.count() == mBoardController->activeDocument()->pageCount() ? 0 : oldActiveSceneIndex + 1;
int newActiveSceneIndex = selectedItems.count() == mBoardController->selectedDocument()->pageCount() ? 0 : oldActiveSceneIndex + 1;
mDocumentUI->thumbnailWidget->selectItemAt(newActiveSceneIndex, false);
selectDocument(mBoardController->activeDocument());
mBoardController->activeDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBMetadataDcSubsetAdaptor::persist(mBoardController->activeDocument());
selectDocument(mBoardController->selectedDocument());
mBoardController->selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBMetadataDcSubsetAdaptor::persist(mBoardController->selectedDocument());
UBApplication::applicationController->showBoard();
}
@ -1527,8 +1444,7 @@ void UBDocumentController::addImages()
{
document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBMetadataDcSubsetAdaptor::persist(document);
mDocumentThumbs = UBThumbnailAdaptor::load(selectedDocumentProxy());
refreshDocumentThumbnailsView();
reloadThumbnails();
}
}
}
@ -1635,20 +1551,12 @@ void UBDocumentController::deletePages(QList<QGraphicsItem *> itemsToDelete)
if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Page"), tr("Are you sure you want to remove %n page(s) from the selected document '%1'?", "", sceneIndexes.count()).arg(proxy->metaData(UBSettings::documentName).toString())))
{
UBPersistenceManager::persistenceManager()->deleteDocumentScenes(proxy, sceneIndexes);
UBDocumentContainer::deletePages(sceneIndexes);
proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
UBMetadataDcSubsetAdaptor::persist(proxy);
int offset = 0;
foreach(int index, sceneIndexes)
{
mDocumentThumbs.removeAt(index - offset);
offset++;
}
refreshDocumentThumbnailsView();
int minIndex = proxy->pageCount() - 1;
foreach (int i, sceneIndexes)
minIndex = qMin(i, minIndex);
@ -1680,9 +1588,9 @@ bool UBDocumentController::pageCanBeMovedUp(int page)
bool UBDocumentController::pageCanBeMovedDown(int page)
{
if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
return page != 0 && page < mCurrentDocument->pageCount() - 1;
return page != 0 && page < selectedDocument()->pageCount() - 1;
else
return page < mCurrentDocument->pageCount() - 1;
return page < selectedDocument()->pageCount() - 1;
}
bool UBDocumentController::pageCanBeDuplicated(int page)
@ -1695,3 +1603,57 @@ bool UBDocumentController::pageCanBeDeleted(int page)
return page != 0;
}
void UBDocumentController::refreshDocumentThumbnailsView(UBDocumentContainer*)
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
QList<QGraphicsItem*> items;
QList<QUrl> itemsPath;
UBDocumentProxy *proxy = selectedDocumentProxy();
QGraphicsPixmapItem *selection = 0;
QStringList labels;
if (proxy)
{
setDocument(proxy);
for (int i = 0; i < selectedDocument()->pageCount(); i++)
{
const QPixmap* pix = pageAt(i);
QGraphicsPixmapItem *pixmapItem = new UBSceneThumbnailPixmap(*pix, proxy, i); // deleted by the tree widget
if (proxy == mBoardController->selectedDocument() && mBoardController->activeSceneIndex() == i)
{
selection = pixmapItem;
}
items << pixmapItem;
labels << tr("Page %1").arg(pageFromSceneIndex(i));
itemsPath.append(QUrl::fromLocalFile(proxy->persistencePath() + QString("/pages/%1").arg(UBDocumentContainer::pageFromSceneIndex(i))));
}
}
mDocumentUI->thumbnailWidget->setGraphicsItems(items, itemsPath, labels, UBApplication::mimeTypeUniboardPage);
UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
if (proxyTi && (proxyTi->parent() == mTrashTi))
mDocumentUI->thumbnailWidget->setDragEnabled(false);
else
mDocumentUI->thumbnailWidget->setDragEnabled(true);
mDocumentUI->thumbnailWidget->ensureVisible(0, 0, 10, 10);
if (selection) {
disconnect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
UBSceneThumbnailPixmap *currentScene = dynamic_cast<UBSceneThumbnailPixmap*>(selection);
if (currentScene)
mDocumentUI->thumbnailWidget->hightlightItem(currentScene->sceneIndex());
connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
}
//emit refreshThumbnails();
QApplication::restoreOverrideCursor();
}

@ -17,6 +17,7 @@
#define UBDOCUMENTCONTROLLER_H_
#include <QtGui>
#include "document/UBDocumentContainer.h"
namespace Ui
{
@ -35,7 +36,7 @@ class UBDocumentProxyTreeItem;
class UBMainWindow;
class UBDocumentToolsPalette;
class UBDocumentController : public QObject
class UBDocumentController : public UBDocumentContainer
{
Q_OBJECT;
@ -47,7 +48,6 @@ class UBDocumentController : public QObject
QWidget* controlView();
UBDocumentProxyTreeItem* findDocument(UBDocumentProxy* proxy);
bool addFileToDocument(UBDocumentProxy* document);
UBDocumentProxy* getCurrentDocument() { return mCurrentDocument; };
void deletePages(QList<QGraphicsItem*> itemsToDelete);
int getSelectedItemIndex();
@ -57,9 +57,9 @@ class UBDocumentController : public QObject
bool pageCanBeDeleted(int page);
signals:
void refreshThumbnails();
//void refreshThumbnails();
void exportDone();
void movedToIndex(int index);
//void movedToIndex(int index);
public slots:
void createNewDocument();
@ -80,14 +80,13 @@ class UBDocumentController : public QObject
void copy();
void paste();
void focusChanged(QWidget *old, QWidget *current);
void reloadThumbs();
//void reloadThumbs();
protected:
virtual void setupViews();
virtual void setupToolbar();
void setupPalettes();
bool isOKToOpenDocument(UBDocumentProxy* proxy);
UBGraphicsScene* activeScene();
UBDocumentProxy* selectedDocumentProxy();
UBDocumentProxyTreeItem* selectedDocumentProxyTreeItem();
UBDocumentGroupTreeItem* selectedDocumentGroupTreeItem();
@ -114,14 +113,11 @@ class UBDocumentController : public QObject
UBDocumentToolsPalette *mToolsPalette;
bool mToolsPalettePositionned;
UBDocumentGroupTreeItem* mTrashTi;
UBDocumentProxy* mCurrentDocument;
QList<QPixmap> mDocumentThumbs;
private slots:
void documentZoomSliderValueChanged (int value);
void loadDocumentProxies();
void itemSelectionChanged();
void refreshDocumentThumbnailsView();
void exportDocument();
void itemChanged(QTreeWidgetItem * item, int column);
void thumbnailViewResized();
@ -138,6 +134,7 @@ class UBDocumentController : public QObject
void addFileToDocument();
void addImages();
void refreshDocumentThumbnailsView(UBDocumentContainer* source);
};

@ -26,7 +26,9 @@ class UBGraphicsScene;
class UBDocumentProxy : public QObject
{
Q_OBJECT;
Q_OBJECT
friend class UBPersistenceManager;
public:
@ -60,6 +62,8 @@ class UBDocumentProxy : public QObject
bool isModified() const;
int pageCount();
protected:
void setPageCount(int pPageCount);
int incPageCount();
int decPageCount();

@ -1,6 +1,8 @@
HEADERS += src/document/UBDocumentController.h \
src/document/UBDocumentContainer.h \
src/document/UBDocumentProxy.h
SOURCES += src/document/UBDocumentController.cpp \
src/document/UBDocumentContainer.cpp \
src/document/UBDocumentProxy.cpp

@ -20,6 +20,7 @@
#include "core/UBApplication.h"
#include "board/UBBoardController.h"
#include "document/UBDocumentContainer.h"
#include "globals/UBGlobals.h"
@ -334,7 +335,7 @@ QString UBFileSystemUtils::normalizeFilePath(const QString& pFilePath)
QString UBFileSystemUtils::digitFileFormat(const QString& s, int digit)
{
int pageDigit = UBApplication::boardController->pageFromSceneIndex(digit);
int pageDigit = UBDocumentContainer::pageFromSceneIndex(digit);
return s.arg(pageDigit, 3, 10, QLatin1Char('0'));
}

@ -1,7 +1,7 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
@ -40,12 +40,9 @@
*/
UBDocumentNavigator::UBDocumentNavigator(QWidget *parent, const char *name):QGraphicsView(parent)
, mScene(NULL)
, mCrntItem(NULL)
, mCrntDoc(NULL)
, mNbColumns(1)
, mThumbnailWidth(0)
, mThumbnailMinWidth(100)
, bNavig(false)
{
setObjectName(name);
mScene = new QGraphicsScene(this);
@ -55,11 +52,9 @@ UBDocumentNavigator::UBDocumentNavigator(QWidget *parent, const char *name):QGra
setFrameShadow(QFrame::Plain);
connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(generateThumbnails()));
connect(UBApplication::boardController, SIGNAL(newPageAdded()), this, SLOT(addNewPage()));
connect(mScene, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()));
connect(UBApplication::boardController, SIGNAL(documentReorganized(int)), this, SLOT(onMovedToIndex(int)));
connect(UBApplication::boardController, SIGNAL(scrollToSelectedPage()), this, SLOT(onScrollToSelectedPage()));
connect(UBApplication::boardController, SIGNAL(documentThumbnailsUpdated(UBDocumentContainer*)), this, SLOT(generateThumbnails(UBDocumentContainer*)));
connect(UBApplication::boardController, SIGNAL(documentPageUpdated(int)), this, SLOT(updateSpecificThumbnail(int)));
connect(UBApplication::boardController, SIGNAL(pageSelectionChanged(int)), this, SLOT(onScrollToSelectedPage(int)));
}
/**
@ -67,12 +62,6 @@ UBDocumentNavigator::UBDocumentNavigator(QWidget *parent, const char *name):QGra
*/
UBDocumentNavigator::~UBDocumentNavigator()
{
if(NULL != mCrntItem)
{
delete mCrntItem;
mCrntItem = NULL;
}
if(NULL != mScene)
{
delete mScene;
@ -80,27 +69,11 @@ UBDocumentNavigator::~UBDocumentNavigator()
}
}
/**
* \brief Set the current document
* @param document as the new document
*/
void UBDocumentNavigator::setDocument(UBDocumentProxy *document)
{
// Here we set a new document to the navigator. We must clear the current
// content and add all the pages of the given document.
if(document)
{
mCrntDoc = document;
}
}
/**
* \brief Generate the thumbnails
*/
void UBDocumentNavigator::generateThumbnails()
void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source)
{
// Get the thumbnails
QList<QPixmap> thumbs = UBThumbnailAdaptor::load(mCrntDoc);
mThumbsWithLabels.clear();
foreach(QGraphicsItem* it, mScene->items())
@ -109,11 +82,11 @@ void UBDocumentNavigator::generateThumbnails()
delete it;
}
for(int i = 0; i < thumbs.count(); i++)
for(int i = 0; i < source->selectedDocument()->pageCount(); i++)
{
QPixmap pix = thumbs.at(i);
QGraphicsPixmapItem* pixmapItem = new UBSceneThumbnailNavigPixmap(pix, mCrntDoc, i);
UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(tr("Page %0").arg(UBApplication::boardController->pageFromSceneIndex(i)));
const QPixmap* pix = source->pageAt(i);
UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i);
UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(tr("Page %0").arg(UBDocumentContainer::pageFromSceneIndex(i)));
UBImgTextThumbnailElement thumbWithText(pixmapItem, labelItem);
thumbWithText.setBorder(border());
@ -125,8 +98,7 @@ void UBDocumentNavigator::generateThumbnails()
// Get the selected item
if(UBApplication::boardController->activeSceneIndex() == i)
{
mCrntItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(pixmapItem);
mCrntItem->setSelected(true);
pixmapItem->setSelected(true);
}
}
@ -134,61 +106,48 @@ void UBDocumentNavigator::generateThumbnails()
refreshScene();
}
/**
* \brief Refresh the given thumbnail
* @param iPage as the given page related thumbnail
*/
void UBDocumentNavigator::updateSpecificThumbnail(int iPage)
void UBDocumentNavigator::onScrollToSelectedPage(int index)
{
// Generate the new thumbnail
UBGraphicsScene* pScene = UBApplication::boardController->activeScene();
if(NULL != pScene)
int c = 0;
foreach(UBImgTextThumbnailElement el, mThumbsWithLabels)
{
// Save the current state of the scene
pScene->setModified(true);
if(UBApplication::boardController)
if (c==index)
{
UBApplication::boardController->persistCurrentScene();
}else
{
UBThumbnailAdaptor::persistScene(mCrntDoc->persistencePath(), pScene, iPage);
el.getThumbnail()->setSelected(true);
centerOn(el.getThumbnail());
}
// Load it
QPixmap pix = UBThumbnailAdaptor::load(mCrntDoc, iPage);
UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(pix, mCrntDoc, iPage);
if(pixmapItem)
else
{
// Get the old thumbnail
QGraphicsItem* pItem = mThumbsWithLabels.at(iPage).getThumbnail();
if(NULL != pItem)
{
mScene->removeItem(pItem);
mScene->addItem(pixmapItem);
mThumbsWithLabels[iPage].setThumbnail(pixmapItem);
delete pItem;
}
el.getThumbnail()->setSelected(false);
}
c++;
}
refreshScene();
}
/**
* \brief Add a new page to the thumbnails list
*
* This method is called automatically by the board controller each time the user
* adds a new page, duplicates a page or imports a document.
* \brief Refresh the given thumbnail
* @param iPage as the given page related thumbnail
*/
void UBDocumentNavigator::addNewPage()
void UBDocumentNavigator::updateSpecificThumbnail(int iPage)
{
if(!bNavig)
// Generate the new thumbnail
//UBGraphicsScene* pScene = UBApplication::boardController->activeScene();
const QPixmap* pix = UBApplication::boardController->pageAt(iPage);
UBSceneThumbnailNavigPixmap* newItem = new UBSceneThumbnailNavigPixmap(*pix,
UBApplication::boardController->selectedDocument(), iPage);
// Get the old thumbnail
UBSceneThumbnailNavigPixmap* oldItem = mThumbsWithLabels.at(iPage).getThumbnail();
if(NULL != oldItem)
{
generateThumbnails();
if(NULL != mCrntItem)
{
mCrntItem->setSelected(true);
}
mScene->removeItem(oldItem);
mScene->addItem(newItem);
mThumbsWithLabels[iPage].setThumbnail(newItem);
delete oldItem;
}
}
/**
@ -277,7 +236,6 @@ void UBDocumentNavigator::mousePressEvent(QMouseEvent *event)
QGraphicsItem* pClickedItem = itemAt(event->pos());
if(NULL != pClickedItem)
{
bNavig = true;
// First, select the clicked item
UBSceneThumbnailNavigPixmap* pCrntItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(pClickedItem);
@ -293,92 +251,24 @@ void UBDocumentNavigator::mousePressEvent(QMouseEvent *event)
const UBImgTextThumbnailElement& el = mThumbsWithLabels.at(i);
if(el.getCaption() == pTextItem)
{
pCrntItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(el.getThumbnail());
pCrntItem = el.getThumbnail();
break;
}
}
}
}
else
{
if(NULL != mCrntItem && mCrntItem != pCrntItem)
{
// Unselect the previous item
mCrntItem->setSelected(false);
int iOldPage = -1;
for(int i = 0; i < mThumbsWithLabels.size(); i++)
if (mThumbsWithLabels.at(i).getThumbnail() == mCrntItem)
{
iOldPage = i;
break;
}
updateSpecificThumbnail(iOldPage);
mCrntItem = pCrntItem;
// Then display the related page
emit changeCurrentPage();
refreshScene();
}
}
bNavig = false;
}
QGraphicsView::mousePressEvent(event);
}
/**
* \brief Get the selected page number
* @return the selected page number
*/
int UBDocumentNavigator::selectedPageNumber()
{
int nbr = NO_PAGESELECTED;
if(NULL != mCrntItem)
{
int index = 0;
for(int i = 0; i < mThumbsWithLabels.size(); i++)
if (mThumbsWithLabels.at(i).getThumbnail() == mCrntItem)
{
nbr = i;
break;
}
}
return nbr;
}
/**
* \brief Get the current document
* @return the current document
*/
UBDocumentProxy* UBDocumentNavigator::currentDoc()
{
return mCrntDoc;
}
/**
* \brief Occurs when the selection changed
*/
void UBDocumentNavigator::onSelectionChanged()
{
// QList<QGraphicsItem*> qlItems = mScene->selectedItems();
// qDebug() << "The number of selected items is " << qlItems.count();
}
/**
* \brief Occurs when a page has been moved to another index in the document
* @param index as the new index
*/
void UBDocumentNavigator::onMovedToIndex(int index)
{
if(index < mThumbsWithLabels.size()){
UBSceneThumbnailNavigPixmap* pItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(mThumbsWithLabels.at(index).getThumbnail());
if(NULL != pItem)
{
if(mCrntItem) mCrntItem->setSelected(false);//deselecting previous one
mCrntItem = pItem;
mCrntItem->setSelected(true);
centerOn(mCrntItem);
if (mThumbsWithLabels.at(i).getThumbnail() == pCrntItem)
{
index = i;
break;
}
}
}
UBApplication::boardController->setActiveDocumentScene(index);
}
QGraphicsView::mousePressEvent(event);
}

@ -22,6 +22,7 @@
#include <QThread>
#include "document/UBDocumentProxy.h"
#include "document/UBDocumentContainer.h"
#include "UBThumbnailWidget.h"
#define NO_PAGESELECTED -1
@ -33,42 +34,30 @@ public:
UBDocumentNavigator(QWidget* parent=0, const char* name="documentNavigator");
~UBDocumentNavigator();
void setDocument(UBDocumentProxy* document);
void setNbColumns(int nbColumns);
int nbColumns();
void setThumbnailMinWidth(int width);
int thumbnailMinWidth();
int selectedPageNumber();
UBDocumentProxy* currentDoc();
signals:
void changeCurrentPage();
public slots:
void onMovedToIndex(int index);
void onScrollToSelectedPage() { centerOn(mCrntItem); }
void onScrollToSelectedPage(int index);// { if (mCrntItem) centerOn(mCrntItem); }
void generateThumbnails(UBDocumentContainer* source);
void updateSpecificThumbnail(int iPage);
protected:
virtual void resizeEvent(QResizeEvent *event);
virtual void mousePressEvent(QMouseEvent *event);
private slots:
void addNewPage();
void onSelectionChanged();
void generateThumbnails();
private:
void refreshScene();
void updateSpecificThumbnail(int iPage);
int border();
/** The scene */
QGraphicsScene* mScene;
/** The current selected item */
UBSceneThumbnailNavigPixmap* mCrntItem;
/** The current document */
UBDocumentProxy* mCrntDoc;
//UBSceneThumbnailNavigPixmap* mCrntItem;
/** The list of current thumbnails with labels*/
QList<UBImgTextThumbnailElement> mThumbsWithLabels;
/** The current number of columns */
@ -77,8 +66,6 @@ private:
int mThumbnailWidth;
/** The current thumbnails minimum width */
int mThumbnailMinWidth;
/** A flag indicating that a thumbnail refresh is in progress */
bool bNavig;
};
#endif // UBDOCUMENTNAVIGATOR_H

@ -68,7 +68,7 @@ void UBDocumentThumbnailWidget::mouseMoveEvent(QMouseEvent *event)
if (sceneItem)
{
int pageIndex = UBApplication::boardController->pageFromSceneIndex(sceneItem->sceneIndex());
int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneItem->sceneIndex());
if(pageIndex != 0){
QDrag *drag = new QDrag(this);
QList<UBMimeDataItem> mimeDataItems;
@ -153,7 +153,7 @@ void UBDocumentThumbnailWidget::dragMoveEvent(QDragMoveEvent *event)
int pageIndex = -1;
if(mClosestDropItem){
pageIndex = UBApplication::boardController->pageFromSceneIndex(mClosestDropItem->sceneIndex());
pageIndex = UBDocumentContainer::pageFromSceneIndex(mClosestDropItem->sceneIndex());
if(pageIndex == 0){
event->acceptProposedAction();
return;
@ -173,7 +173,7 @@ void UBDocumentThumbnailWidget::dragMoveEvent(QDragMoveEvent *event)
{
mClosestDropItem = item;
minDistance = distance;
pageIndex = UBApplication::boardController->pageFromSceneIndex(mClosestDropItem->sceneIndex());
pageIndex = UBDocumentContainer::pageFromSceneIndex(mClosestDropItem->sceneIndex());
}
}
}
@ -221,7 +221,7 @@ void UBDocumentThumbnailWidget::dropEvent(QDropEvent *event)
if (mClosestDropItem)
{
int targetIndex = mDropIsRight ? mGraphicItems.indexOf(mClosestDropItem) + 1 : mGraphicItems.indexOf(mClosestDropItem);
if(UBApplication::boardController->pageFromSceneIndex(targetIndex) == 0){
if(UBDocumentContainer::pageFromSceneIndex(targetIndex) == 0){
event->ignore();
return;
}
@ -279,7 +279,6 @@ void UBDocumentThumbnailWidget::deleteDropCaret()
}
}
void UBDocumentThumbnailWidget::setGraphicsItems(const QList<QGraphicsItem*>& pGraphicsItems,
const QList<QUrl>& pItemPaths, const QStringList pLabels,
const QString& pMimeType)

@ -200,7 +200,9 @@ void UBDocumentTreeWidget::focusInEvent(QFocusEvent *event)
{
Q_UNUSED(event);
itemSelectionChanged();
// Tolik
//itemSelectionChanged();
QTreeWidget::focusInEvent(event);
}

@ -63,7 +63,6 @@ UBNavigatorPalette::UBNavigatorPalette(QWidget *parent, const char *name):
mTimeFormat = mTimeFormat.remove(":s");
mTimerID = startTimer(1000);
connect(mNavigator, SIGNAL(changeCurrentPage()), this, SLOT(changeCurrentPage()));
}
/**
@ -104,34 +103,12 @@ UBNavigatorPalette::~UBNavigatorPalette()
* \brief Set the current document in the navigator
* @param document as the given document
*/
void UBNavigatorPalette::setDocument(UBDocumentProxy *document)
{
if(mNavigator->currentDoc() != document)
{
mNavigator->setDocument(document);
}
}
/**
* \brief Change the current page
*/
void UBNavigatorPalette::changeCurrentPage()
{
// Get the index of the page to display
int iPage = mNavigator->selectedPageNumber();
if(NO_PAGESELECTED != iPage)
{
// Display the selected page
UBApplication::boardController->setActiveDocumentScene(mNavigator->currentDoc(), iPage);
}
}
/**
* \brief Refresh the thumbnails widget
*/
void UBNavigatorPalette::refresh()
{
mNavigator->setDocument(UBApplication::boardController->activeDocument());
}
/**

@ -58,8 +58,6 @@ private:
QString mTimeFormat;
int mTimerID;
private slots:
void changeCurrentPage();
};

@ -17,6 +17,8 @@
#include "board/UBBoardController.h"
#include "document/UBDocumentContainer.h"
#include "globals/UBGlobals.h"
#include "core/memcheck.h"
@ -72,8 +74,8 @@ UBPageNavigationWidget::UBPageNavigationWidget(QWidget *parent, const char *name
mTimeFormat = mTimeFormat.remove(":s");
mTimerID = startTimer(1000);
connect(mNavigator, SIGNAL(changeCurrentPage()), this, SLOT(changeCurrentPage()));
connect(UBApplication::boardController, SIGNAL(setDocOnPageNavigator(UBDocumentProxy*)), this, SLOT(onSetDocOnPageNavigator(UBDocumentProxy*)));
//connect(mNavigator, SIGNAL(changeCurrentPage()), this, SLOT(changeCurrentPage()));
//connect(UBApplication::boardController, SIGNAL(setDocOnPageNavigator(UBDocumentProxy*)), this, SLOT(onSetDocOnPageNavigator(UBDocumentProxy*)));
}
/**
@ -110,41 +112,14 @@ UBPageNavigationWidget::~UBPageNavigationWidget()
}
}
/**
* \brief Set the current document in the navigator
* @param document as the given document
*/
void UBPageNavigationWidget::setDocument(UBDocumentProxy *document)
{
if(mNavigator->currentDoc() != document)
{
mNavigator->setDocument(document);
}
}
/**
* \brief Change the current page
*/
void UBPageNavigationWidget::changeCurrentPage()
{
// Get the index of the page to display
int iPage = mNavigator->selectedPageNumber();
if(NO_PAGESELECTED != iPage)
{
// Display the selected page
UBApplication::boardController->setActiveDocumentScene(mNavigator->currentDoc(), iPage);
// emit here the signal to indicate that page change
UBApplication::boardController->notifyPageChanged();
}
}
/**
* \brief Refresh the thumbnails widget
*/
void UBPageNavigationWidget::refresh()
{
mNavigator->setDocument(UBApplication::boardController->activeDocument());
// TOLIK!!!
// mNavigator->setDocument(UBApplication::boardController->activeDocument());
}
/**
@ -175,7 +150,7 @@ void UBPageNavigationWidget::updateTime()
*/
void UBPageNavigationWidget::setPageNumber(int current, int total)
{
mPageNbr->setText(QString("%1 / %2").arg(current).arg(UBApplication::boardController->sceneIndexFromPage(total)));
mPageNbr->setText(QString("%1 / %2").arg(current).arg(UBDocumentContainer::sceneIndexFromPage(total)));
}
/**
@ -196,11 +171,3 @@ int UBPageNavigationWidget::border()
return 15;
}
/**
* \brief Set the current document
* @param doc as the current document
*/
void UBPageNavigationWidget::onSetDocOnPageNavigator(UBDocumentProxy *doc)
{
setDocument(doc);
}

@ -33,7 +33,7 @@ class UBPageNavigationWidget : public UBDockPaletteWidget
public:
UBPageNavigationWidget(QWidget* parent=0, const char* name="UBPageNavigationWidget");
~UBPageNavigationWidget();
void setDocument(UBDocumentProxy* document);
//void setDocument(UBDocumentProxy* document);
void refresh();
bool visibleInMode(eUBDockPaletteWidgetMode mode)
@ -50,8 +50,6 @@ public slots:
protected:
virtual void timerEvent(QTimerEvent *event);
private slots:
void onSetDocOnPageNavigator(UBDocumentProxy* doc);
private:
void updateTime();
@ -68,8 +66,6 @@ private:
QString mTimeFormat;
int mTimerID;
private slots:
void changeCurrentPage();
};
#endif // UBPAGENAVIGATIONWIDGET_H

@ -211,7 +211,7 @@ void UBThumbnailWidget::mousePressEvent(QMouseEvent *event)
UBSceneThumbnailPixmap* sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(itemAt(mMousePressPos));
if(sceneItem){
int pageIndex = UBApplication::boardController->pageFromSceneIndex(sceneItem->sceneIndex());
int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneItem->sceneIndex());
if(pageIndex == 0){
event->ignore();
return;
@ -761,7 +761,7 @@ UBSceneThumbnailNavigPixmap::UBSceneThumbnailNavigPixmap(const QPixmap& pix, UBD
, bCanMoveDown(false)
, bCanDuplicate(false)
{
if(0 <= UBApplication::boardController->pageFromSceneIndex(pSceneIndex)){
if(0 <= UBDocumentContainer::pageFromSceneIndex(pSceneIndex)){
setAcceptsHoverEvents(true);
setFlag(QGraphicsItem::ItemIsSelectable, true);
}
@ -839,7 +839,7 @@ void UBSceneThumbnailNavigPixmap::updateButtonsState()
bCanDuplicate = false;
if(proxy()){
int pageIndex = UBApplication::boardController->pageFromSceneIndex(sceneIndex());
int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneIndex());
UBDocumentController* documentController = UBApplication::documentController;
bCanDelete = documentController->pageCanBeDeleted(pageIndex);
bCanMoveUp = documentController->pageCanBeMovedUp(pageIndex);
@ -853,25 +853,24 @@ void UBSceneThumbnailNavigPixmap::updateButtonsState()
void UBSceneThumbnailNavigPixmap::deletePage()
{
QList<QGraphicsItem*> itemsToDelete;
itemsToDelete << this;
UBApplication::documentController->deletePages(itemsToDelete);
UBApplication::boardController->deleteScene(sceneIndex());
}
void UBSceneThumbnailNavigPixmap::duplicatePage()
{
UBApplication::boardController->duplicateScene();
UBApplication::boardController->duplicateScene(sceneIndex());
}
void UBSceneThumbnailNavigPixmap::moveUpPage()
{
UBApplication::documentController->moveSceneToIndex(proxy(), sceneIndex(), sceneIndex() - 1);
if (sceneIndex()!=0)
UBApplication::boardController->moveSceneToIndex(sceneIndex(), sceneIndex() - 1);
}
void UBSceneThumbnailNavigPixmap::moveDownPage()
{
UBApplication::documentController->moveSceneToIndex(proxy(), sceneIndex(), sceneIndex() + 1);
if (sceneIndex() < UBApplication::boardController->selectedDocument()->pageCount()-1)
UBApplication::boardController->moveSceneToIndex(sceneIndex(), sceneIndex() + 1);
}
void UBImgTextThumbnailElement::Place(int row, int col, qreal width, qreal height)

@ -400,19 +400,19 @@ class UBThumbnailTextItem : public QGraphicsTextItem
class UBImgTextThumbnailElement
{
private:
QGraphicsItem* thumbnail;
UBSceneThumbnailNavigPixmap* thumbnail;
UBThumbnailTextItem* caption;
int border;
public:
UBImgTextThumbnailElement(QGraphicsItem* thumb, UBThumbnailTextItem* text): border(0)
UBImgTextThumbnailElement(UBSceneThumbnailNavigPixmap* thumb, UBThumbnailTextItem* text): border(0)
{
this->thumbnail = thumb;
this->caption = text;
}
QGraphicsItem* getThumbnail() const { return this->thumbnail; }
void setThumbnail(QGraphicsItem* newGItem) { this->thumbnail = newGItem; }
UBSceneThumbnailNavigPixmap* getThumbnail() const { return this->thumbnail; }
void setThumbnail(UBSceneThumbnailNavigPixmap* newGItem) { this->thumbnail = newGItem; }
UBThumbnailTextItem* getCaption() const { return this->caption; }
void setCaption(UBThumbnailTextItem* newcaption) { this->caption = newcaption; }

Loading…
Cancel
Save