From 75b7fd5666609bf17e9bb199d3b3e3329948e7d7 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Wed, 9 May 2012 14:15:30 +0200 Subject: [PATCH] handling the documents without zero page when using a program set to handle zero pages --- src/adaptors/UBThumbnailAdaptor.cpp | 11 +- src/board/UBFeaturesController.h | 222 ++++++++++++++------------ src/core/UBPersistenceManager.cpp | 17 +- src/document/UBDocumentController.cpp | 14 +- 4 files changed, 148 insertions(+), 116 deletions(-) diff --git a/src/adaptors/UBThumbnailAdaptor.cpp b/src/adaptors/UBThumbnailAdaptor.cpp index ebca17ea..69de0876 100644 --- a/src/adaptors/UBThumbnailAdaptor.cpp +++ b/src/adaptors/UBThumbnailAdaptor.cpp @@ -45,7 +45,6 @@ QList UBThumbnailAdaptor::load(UBDocumentProxy* proxy) int existingPageCount = proxy->pageCount(); QString thumbFileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", existingPageCount); - QFile thumbFile(thumbFileName); if (!thumbFile.exists()) @@ -67,6 +66,16 @@ QList UBThumbnailAdaptor::load(UBDocumentProxy* proxy) persistScene(proxy->persistencePath(), scene, i); } + else{ + if(i==0){ + // we are working a document without zero page but on a system that enable it + // we have to create an empty zero scene + scene = new UBGraphicsScene(proxy); + UBSvgSubsetAdaptor::persistScene(proxy,scene,0); + persistScene(proxy->persistencePath(),scene,i); + thumbCount++; + } + } } if (displayMessage && thumbCount > 0) diff --git a/src/board/UBFeaturesController.h b/src/board/UBFeaturesController.h index 1348d289..254514a4 100644 --- a/src/board/UBFeaturesController.h +++ b/src/board/UBFeaturesController.h @@ -12,128 +12,140 @@ #include #include +//#include "UBDockPaletteWidget.h" + enum UBFeatureElementType { FEATURE_CATEGORY, FEATURE_VIRTUALFOLDER, FEATURE_FOLDER, FEATURE_INTERACTIVE, - FEATURE_INTERNAL, + FEATURE_INTERNAL, FEATURE_ITEM, - FEATURE_TRASH, - FEATURE_FAVORITE, - FEATURE_SEARCH + FEATURE_TRASH, + FEATURE_FAVORITE, + FEATURE_SEARCH }; class UBFeature { - public: - UBFeature() {;} - //UBFeature(const UBFeature &f); - UBFeature(const QString &url, const QPixmap &icon, const QString &name, const QString &realPath, UBFeatureElementType type = FEATURE_CATEGORY); - virtual ~UBFeature() {;} - QString getName() const { return mName; } - QPixmap getThumbnail() const {return mThumbnail;} - QString getUrl() const { return virtualPath; } - //QString getPath() const { return mPath; }; - QString getFullPath() const { return mPath; } - QString getVirtualPath() const { return virtualPath + "/" + mName; } - UBFeatureElementType getType() const { return elementType; } - bool isFolder() const; - bool isDeletable() const; - bool operator ==( const UBFeature &f )const; - bool operator !=( const UBFeature &f )const; - private: - QString virtualPath; - QPixmap mThumbnail; - QString mName; - QString mPath; - UBFeatureElementType elementType; +public: + UBFeature() {;} + //UBFeature(const UBFeature &f); + UBFeature(const QString &url, const QPixmap &icon, const QString &name, const QUrl &realPath, UBFeatureElementType type = FEATURE_CATEGORY); + virtual ~UBFeature() {;} + QString getName() const { return mName; } + QPixmap getThumbnail() const {return mThumbnail;} + QString getVirtualPath() const { return virtualPath; } + //QString getPath() const { return mPath; }; + QUrl getFullPath() const { return mPath; } + QString getFullVirtualPath() const { return virtualPath + "/" + mName; } + QString getUrl() const; + UBFeatureElementType getType() const { return elementType; } + + bool isFolder() const; + bool isDeletable() const; + bool operator ==( const UBFeature &f )const; + bool operator !=( const UBFeature &f )const; + const QMap & getMetadata() const { return metadata; } + void setMetadata( const QMap &data ) { metadata = data; } +private: + QString virtualPath; + QPixmap mThumbnail; + QString mName; + QUrl mPath; + UBFeatureElementType elementType; + QMap metadata; }; Q_DECLARE_METATYPE( UBFeature ) class UBFeaturesController : public QObject { - Q_OBJECT - public: - UBFeaturesController(QWidget *parentWidget); - virtual ~UBFeaturesController(); - - QList * getFeatures()const { return featuresList; } - - const QString& getRootPath()const { return rootPath; } - - void addItemToPage(const UBFeature &item); - const UBFeature& getCurrentElement()const { return currentElement; } - void setCurrentElement( const UBFeature &elem ) { currentElement = elem; } - const UBFeature & getTrashElement () const { return trashElement; } - UBFeature moveItemToFolder( const QUrl &url, const UBFeature &destination ); - UBFeature copyItemToFolder( const QUrl &url, const UBFeature &destination ); - void deleteItem( const QUrl &url ); - bool isTrash( const QUrl &url ); - UBFeature newFolder( const QString &name ); - UBFeature addToFavorite( const QUrl &path ); - void removeFromFavorite( const QUrl &path ); - - static QString fileNameFromUrl( const QUrl &url ); - static QPixmap thumbnailForFile( const QString &path ); - static bool isDeletable( const QUrl &url ); - private: - void initDirectoryTree(); - void fileSystemScan(const QString &currPath, const QString & currVirtualPath); - static QPixmap createThumbnail(const QString &path); - //void addImageToCurrentPage( const QString &path ); - void loadFavoriteList(); - void saveFavoriteList(); - UBFeature getDestinationForItem( const QUrl &url ); - - static UBFeatureElementType fileTypeFromUrl( const QString &path ); - - QList *featuresList; - UBFeature *rootElement; - - QString mUserAudioDirectoryPath; - QString mUserVideoDirectoryPath; - QString mUserPicturesDirectoryPath; - QString mUserInteractiveDirectoryPath; - QString mUserAnimationDirectoryPath; - - QString libraryPath; - QString mLibAudioDirectoryPath; - QString mLibVideoDirectoryPath; - QString mLibPicturesDirectoryPath; - QString mLibInteractiveDirectoryPath; - QString mLibAnimationDirectoryPath; - QString mLibApplicationsDirectoryPath; - QString mLibShapesDirectoryPath; - QString trashDirectoryPath; - QString mLibSearchDirectoryPath; - - QString rootPath; - QString audiosPath; - QString moviesPath; - QString picturesPath; - QString appPath; - QString flashPath; - QString shapesPath; - QString interactPath; - QString trashPath; - QString favoritePath; - - int mLastItemOffsetIndex; - UBFeature currentElement; - UBFeature trashElement; - UBFeature favoriteElement; - UBFeature audiosElement; - UBFeature moviesElement; - UBFeature picturesElement; - UBFeature interactElement; - UBFeature flashElement; - UBFeature shapesElement; - UBFeature searchElement; - - QSet *favoriteSet; +Q_OBJECT +public: + UBFeaturesController(QWidget *parentWidget); + virtual ~UBFeaturesController(); + + QList * getFeatures()const { return featuresList; } + + const QString& getRootPath()const { return rootPath; } + + void addItemToPage( const UBFeature &item ); + void addItemAsBackground( const UBFeature &item ); + const UBFeature& getCurrentElement()const { return currentElement; } + void setCurrentElement( const UBFeature &elem ) { currentElement = elem; } + const UBFeature & getTrashElement () const { return trashElement; } + + UBFeature addDownloadedFile( const QUrl &sourceUrl, const QByteArray &pData ); + + UBFeature moveItemToFolder( const QUrl &url, const UBFeature &destination ); + UBFeature copyItemToFolder( const QUrl &url, const UBFeature &destination ); + void deleteItem( const QUrl &url ); + bool isTrash( const QUrl &url ); + UBFeature newFolder( const QString &name ); + UBFeature addToFavorite( const QUrl &path ); + void removeFromFavorite( const QUrl &path ); + UBFeature importImage( const QImage &image, const UBFeature &destination ); + + static QString fileNameFromUrl( const QUrl &url ); + static QPixmap thumbnailForFile( const QString &path ); + static bool isDeletable( const QUrl &url ); +private: + void initDirectoryTree(); + void fileSystemScan(const QUrl &currPath, const QString & currVirtualPath); + static QPixmap createThumbnail(const QString &path); + //void addImageToCurrentPage( const QString &path ); + void loadFavoriteList(); + void saveFavoriteList(); + UBFeature getDestinationForItem( const QUrl &url ); + + static UBFeatureElementType fileTypeFromUrl( const QString &path ); + + QList *featuresList; + UBFeature *rootElement; + + QUrl mUserAudioDirectoryPath; + QUrl mUserVideoDirectoryPath; + QUrl mUserPicturesDirectoryPath; + QUrl mUserInteractiveDirectoryPath; + QUrl mUserAnimationDirectoryPath; + + QString libraryPath; + QUrl mLibAudioDirectoryPath; + QUrl mLibVideoDirectoryPath; + QUrl mLibPicturesDirectoryPath; + QUrl mLibInteractiveDirectoryPath; + QUrl mLibAnimationDirectoryPath; + QUrl mLibApplicationsDirectoryPath; + QUrl mLibShapesDirectoryPath; + QUrl trashDirectoryPath; + QUrl mLibSearchDirectoryPath; + + QString rootPath; + QString audiosPath; + QString moviesPath; + QString picturesPath; + QString appPath; + QString flashPath; + QString shapesPath; + QString interactPath; + QString trashPath; + QString favoritePath; + + int mLastItemOffsetIndex; + UBFeature currentElement; + UBFeature trashElement; + UBFeature favoriteElement; + UBFeature audiosElement; + UBFeature moviesElement; + UBFeature picturesElement; + UBFeature interactElement; + UBFeature flashElement; + UBFeature shapesElement; + UBFeature webSearchElement; + + QSet *favoriteSet; }; diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp index e306f532..84b2d242 100644 --- a/src/core/UBPersistenceManager.cpp +++ b/src/core/UBPersistenceManager.cpp @@ -670,6 +670,7 @@ int UBPersistenceManager::sceneCountInDir(const QString& pPath) { int pageIndex = 0; bool moreToProcess = true; + bool addedMissingZeroPage = false; while (moreToProcess) { @@ -683,10 +684,24 @@ int UBPersistenceManager::sceneCountInDir(const QString& pPath) } else { - moreToProcess = false; + if(UBSettings::settings()->teacherGuidePageZeroActivated && pageIndex == 0){ + // the document has no zero file but doesn't means that it hasn't any file + // at all. Just importing a document without the first page using a configuartion + // that enables zero page. + pageIndex++; + addedMissingZeroPage = true; + } + else + moreToProcess = false; } } + if(pageIndex == 1 && addedMissingZeroPage){ + // increment is done only to check if there are other pages than the missing zero page + // This situation means -> no pages on the document + return 0; + } + return pageIndex; } diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index 22f11c69..d12ae4ea 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -168,7 +168,6 @@ void UBDocumentController::selectDocument(UBDocumentProxy* proxy, bool setAsCurr mDocumentUI->documentTreeWidget->scrollToItem(selected); mDocumentThumbs = UBThumbnailAdaptor::load(selectedDocumentProxy()); - qDebug() << mDocumentThumbs.size(); refreshDocumentThumbnailsView(); mSelectionType = Document; @@ -291,9 +290,9 @@ void UBDocumentController::refreshDocumentThumbnailsView() } items << pixmapItem; - labels << tr("Page %1").arg(i + 1); + labels << tr("Page %1").arg(UBApplication::boardController->pageFromSceneIndex(i)); - itemsPath.append(QUrl::fromLocalFile(proxy->persistencePath() + QString("/pages/%1").arg(i + 1))); + itemsPath.append(QUrl::fromLocalFile(proxy->persistencePath() + QString("/pages/%1").arg(UBApplication::boardController->pageFromSceneIndex(i)))); } } @@ -307,15 +306,12 @@ void UBDocumentController::refreshDocumentThumbnailsView() mDocumentUI->thumbnailWidget->ensureVisible(0, 0, 10, 10); - if (selection) - { - disconnect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), - this, SLOT(pageSelectionChanged())); + if (selection) { + disconnect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged())); UBSceneThumbnailPixmap *currentScene = dynamic_cast(selection); if (currentScene) mDocumentUI->thumbnailWidget->hightlightItem(currentScene->sceneIndex()); - connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), - this, SLOT(pageSelectionChanged())); + connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged())); } emit refreshThumbnails();