diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 2c3cde55..c9020f4d 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1840,6 +1840,10 @@ int UBBoardController::activeSceneIndex() const return mActiveSceneIndex; } +void UBBoardController::setActiveSceneIndex(int i) +{ + mActiveSceneIndex = i; +} void UBBoardController::documentSceneChanged(UBDocumentProxy* pDocumentProxy, int pIndex) { diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h index 40db2d47..1bf04fea 100644 --- a/src/board/UBBoardController.h +++ b/src/board/UBBoardController.h @@ -79,6 +79,7 @@ class UBBoardController : public UBDocumentContainer UBGraphicsScene* activeScene() const; int activeSceneIndex() const; + void setActiveSceneIndex(int i); QSize displayViewport(); QSize controlViewport(); QRectF controlGeometry(); diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index b0b8929d..ba94ccfc 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -456,9 +456,9 @@ QVariant UBDocumentTreeModel::data(const QModelIndex &index, int role) const QDateTime d; if(index.column() == 1){ - d = proxy->metaData(UBSettings::documentDate).toDateTime(); + d = proxy->documentDate(); }else if(index.column() == 2){ - d = proxy->metaData(UBSettings::documentUpdatedAt).toDateTime(); + d = proxy->lastUpdate(); } displayText = d.toString("dd/MM/yyyy hh:mm"); @@ -1571,15 +1571,13 @@ void UBDocumentTreeItemDelegate::processChangedText(const QString &str) const bool UBDocumentTreeItemDelegate::validateString(const QString &str) const { - return QRegExp("[^\\/\\:\\?\\*\\|\\<\\>\\\"]{1,}").exactMatch(str) - && !mExistingFileNames.contains(str); + return !mExistingFileNames.contains(str); } QWidget *UBDocumentTreeItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { Q_UNUSED(option); - //N/C - NNE - 20140407 : Add the test for the index column. if(index.column() == 0){ mExistingFileNames.clear(); @@ -2055,9 +2053,13 @@ void UBDocumentController::sortDocuments(int kind, int order) if(kind == UBDocumentController::CreationDate){ mSortFilterProxyModel->setSortRole(UBDocumentTreeModel::CreationDate); mSortFilterProxyModel->sort(1, sortOrder); + mDocumentUI->documentTreeView->showColumn(1); + mDocumentUI->documentTreeView->hideColumn(2); }else if(kind == UBDocumentController::UpdateDate){ mSortFilterProxyModel->setSortRole(UBDocumentTreeModel::UpdateDate); mSortFilterProxyModel->sort(2, sortOrder); + mDocumentUI->documentTreeView->hideColumn(1); + mDocumentUI->documentTreeView->showColumn(2); }else{ mSortFilterProxyModel->setSortRole(Qt::DisplayRole); mSortFilterProxyModel->sort(0, sortOrder); @@ -2550,9 +2552,16 @@ void UBDocumentController::importFile() QApplication::processEvents(); QFile selectedFile(filePath); - QString groupName = UBPersistenceManager::myDocumentsName; + UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel; - groupName = ""; + QModelIndex selectedIndex = firstSelectedTreeIndex(); + QString groupName = ""; + if (selectedIndex.isValid()) + { + groupName = docModel->isCatalog(selectedIndex) + ? docModel->virtualPathForIndex(selectedIndex) + : docModel->virtualDirForIndex(selectedIndex); + } showMessage(tr("Importing file %1...").arg(fileInfo.baseName()), true); @@ -2800,9 +2809,8 @@ void UBDocumentController::addToDocument() void UBDocumentController::renameSelectedItem() { - QModelIndex selectedIndex = firstSelectedTreeIndex(); - if (selectedIndex.isValid()) { - mDocumentUI->documentTreeView->edit(selectedIndex); + if (mDocumentUI->documentTreeView->currentIndex().isValid()) { + mDocumentUI->documentTreeView->edit(mDocumentUI->documentTreeView->currentIndex()); } } @@ -3159,6 +3167,11 @@ void UBDocumentController::deletePages(QList itemsToDelete) foreach (int i, sceneIndexes) minIndex = qMin(i, minIndex); + if (mBoardController->activeSceneIndex() > minIndex) + { + mBoardController->setActiveSceneIndex(minIndex); + } + mDocumentUI->thumbnailWidget->selectItemAt(minIndex); mBoardController->setActiveDocumentScene(minIndex); @@ -3214,8 +3227,9 @@ UBDocumentController::deletionTypeForSelection(LastSelectedElementType pTypeSele , const QModelIndex &selectedIndex , UBDocumentTreeModel *docModel) const { + if (pTypeSelection == Page) { - if (!firstSceneSelected()) { + if (!firstAndOnlySceneSelected()) { return DeletePage; } } else if (docModel->isConstant(selectedIndex)) { @@ -3234,17 +3248,31 @@ UBDocumentController::deletionTypeForSelection(LastSelectedElementType pTypeSele return NoDeletion; } -bool UBDocumentController::firstSceneSelected() const +bool UBDocumentController::firstAndOnlySceneSelected() const { bool firstSceneSelected = false; QList selection = mDocumentUI->thumbnailWidget->selectedItems(); - for(int i = 0; i < selection.count() && !firstSceneSelected; i += 1){ - if(dynamic_cast(selection.at(i))->sceneIndex() == 0){ - firstSceneSelected = true; + for(int i = 0; i < selection.count() && !firstSceneSelected; i += 1) + { + UBSceneThumbnailPixmap* p = dynamic_cast(selection.at(i)); + if (p) + { + int pageCount = p->proxy()->pageCount(); + if (pageCount > 1) //not the only scene + { + return false; + } + else + { + if (p->sceneIndex() == 0) + { + return true; //the first and only scene + } + } } } - return firstSceneSelected; + return false; } void UBDocumentController::refreshDocumentThumbnailsView(UBDocumentContainer*) diff --git a/src/document/UBDocumentController.h b/src/document/UBDocumentController.h index 4ac86c0e..8647660b 100644 --- a/src/document/UBDocumentController.h +++ b/src/document/UBDocumentController.h @@ -386,7 +386,7 @@ class UBDocumentController : public UBDocumentContainer inline DeletionType deletionTypeForSelection(LastSelectedElementType pTypeSelection , const QModelIndex &selectedIndex , UBDocumentTreeModel *docModel) const; - bool firstSceneSelected() const; + bool firstAndOnlySceneSelected() const; QWidget *mainWidget() const {return mDocumentWidget;} //issue 1629 - NNE - 20131212 diff --git a/src/frameworks/UBStringUtils.cpp b/src/frameworks/UBStringUtils.cpp index 9a12dd8a..dc78f0bb 100644 --- a/src/frameworks/UBStringUtils.cpp +++ b/src/frameworks/UBStringUtils.cpp @@ -122,7 +122,9 @@ QString UBStringUtils::toUtcIsoDateTime(const QDateTime& dateTime) QDateTime UBStringUtils::fromUtcIsoDate(const QString& dateString) { - return QDateTime::fromString(dateString,Qt::ISODate).toLocalTime(); + QDateTime date = QDateTime::fromString(dateString, Qt::ISODate); + date.setTimeSpec(Qt::UTC); + return date.toLocalTime(); }