# # # patch "src/monotone/MonotoneUtil.cpp" # from [5c86539c718460b571f9d6ca3516ff82caf7d8c7] # to [072706516496c20dfdee2d8aef7687233415559d] # # patch "src/view/WorkspaceWindow.cpp" # from [0f1c77f16d213fdce885c7b025d8f6112c8da962] # to [ea508344b2cd8067b9ff3b02340462104ac05409] # # patch "src/view/panels/NodeInfo.cpp" # from [4ce3573fa203783d551d2b370cd45e723918cce5] # to [5e145bcc10a2ff58e862a557ea41fac99ef54742] # # patch "src/view/panels/NodeInfo.h" # from [ad838bffdec60eb1afdef99a1de88e753fb38505] # to [d99d10fed6ffaf7817948cac2fda0fa4120326a9] # ============================================================ --- src/monotone/MonotoneUtil.cpp 5c86539c718460b571f9d6ca3516ff82caf7d8c7 +++ src/monotone/MonotoneUtil.cpp 072706516496c20dfdee2d8aef7687233415559d @@ -353,7 +353,7 @@ QStringList MonotoneUtil::getPreviousCon QStringList MonotoneUtil::getPreviousContentMarks(const DatabaseFile & db, const QString & file, const QString & startRev) { QStringList args; - args << "get_content_changed" << file << startRev; + args << "get_content_changed" << startRev << file; MonotoneTask in(args); MonotoneTask out = runSynchronousDatabaseTask(db, in); if (!out.isFinished()) F("task aborted"); ============================================================ --- src/view/WorkspaceWindow.cpp 0f1c77f16d213fdce885c7b025d8f6112c8da962 +++ src/view/WorkspaceWindow.cpp ea508344b2cd8067b9ff3b02340462104ac05409 @@ -343,7 +343,9 @@ void WorkspaceWindow::maybeReadNodeInfo( return; } - nodeInfo->readAndSetInfo(invitem); + nodeInfo->setItem(invitem); + if (nodeInfo->isVisible()) + nodeInfo->readAndSetInfo(); if (invitem->isOldNode() || !invitem->isTracked()) { ============================================================ --- src/view/panels/NodeInfo.cpp 4ce3573fa203783d551d2b370cd45e723918cce5 +++ src/view/panels/NodeInfo.cpp 5e145bcc10a2ff58e862a557ea41fac99ef54742 @@ -22,7 +22,8 @@ #include #include -NodeInfo::NodeInfo(QWidget * parent) : QDockWidget(parent) +NodeInfo::NodeInfo(QWidget * parent) + : QDockWidget(parent), inventoryItem(0) { setVisible(false); @@ -53,9 +54,15 @@ void NodeInfo::setWorkspacePath(const Wo workspacePath = wp; } -void NodeInfo::readAndSetInfo(const InventoryItem * item) +void NodeInfo::setItem(const InventoryItem * item) { - I(item); + inventoryItem = item; +} + +void NodeInfo::readAndSetInfo() +{ + if (inventoryItem == 0) return; + I(!workspacePath.isEmpty()); QString strLastChangeRevision("-"), @@ -63,15 +70,18 @@ void NodeInfo::readAndSetInfo(const Inve strLastChangeDate("-"), strLastChangelog(""); - if (item->isTracked()) + if (inventoryItem->isTracked() && + inventoryItem->hasNotStatus(InventoryItem::Added) && + !inventoryItem->isDirectory()) { DatabaseFile db = MonotoneUtil::getDatabaseFile(workspacePath); QStringList revs = MonotoneUtil::getPreviousContentMarks( db, - item->getPath(), + inventoryItem->getPath(), MonotoneUtil::getBaseWorkspaceRevision(workspacePath) ); - + I(revs.size() > 0); + // FIXME: for now we only handle the first returned content // mark; its not clear if merges would really pop up here if (revs.size() > 1) @@ -92,7 +102,7 @@ void NodeInfo::readAndSetInfo(const Inve if (cert.first == "changelog") strLastChangelog = cert.second; if (cert.first == "date") { - QDateTime dt = QDateTime::fromString(cert.second); + QDateTime dt = QDateTime::fromString(cert.second, "yyyy-MM-ddThh:mm:ss"); strLastChangeDate = dt.toString(Qt::LocaleDate); } } @@ -110,9 +120,9 @@ void NodeInfo::readAndSetInfo(const Inve strFilePermissions("-"), strFileSymlinkTarget("-"); - if (item->getFSType() != InventoryItem::None) + if (inventoryItem->getFSType() != InventoryItem::None) { - QFileInfo fileInfo(workspacePath + "/" + item->getPath()); + QFileInfo fileInfo(workspacePath + "/" + inventoryItem->getPath()); I(fileInfo.exists()); strFileSize = QString("%1 KB").arg(fileInfo.size() / 1024); // FIXME: use Qt::DefaultLocaleShortDate if support for Qt 4.3 is dropped @@ -145,36 +155,34 @@ void NodeInfo::readAndSetInfo(const Inve filePermissions->setText(strFilePermissions); fileSymlinkTarget->setText(strFileSymlinkTarget); - filePath->setText(item->getPath()); - fileStatus->setText(item->getStatusString()); + filePath->setText(inventoryItem->getPath()); + fileStatus->setText(inventoryItem->getStatusString()); - QString renameSource = item->getRenameSource(); + QString renameSource = inventoryItem->getRenameSource(); if (renameSource.isEmpty()) renameSource = "-"; fileOldPath->setText(renameSource); - QString renameTarget = item->getRenameTarget(); + QString renameTarget = inventoryItem->getRenameTarget(); if (renameTarget.isEmpty()) renameTarget = "-"; fileNewPath->setText(renameTarget); - QString birthRev = item->getBirthRevision(); + QString birthRev = inventoryItem->getBirthRevision(); if (!birthRev.isEmpty()) - { fileBirthRev->setText(tr("%2..."). arg(birthRev). arg(birthRev.left(12))); - } else - { fileBirthRev->setText("-"); - } - fileBaseType->setText(InventoryItem::translateFileType(item->getOldType())); - fileNewType->setText(InventoryItem::translateFileType(item->getNewType())); - fileDiskType->setText(InventoryItem::translateFileType(item->getFSType())); + fileBaseType->setText(InventoryItem::translateFileType(inventoryItem->getOldType())); + fileNewType->setText(InventoryItem::translateFileType(inventoryItem->getNewType())); + fileDiskType->setText(InventoryItem::translateFileType(inventoryItem->getFSType())); } void NodeInfo::resetInfo() { + inventoryItem = 0; + lastChangeRevision->setText("-"); lastChangeAuthor->setText("-"); lastChangeDate->setText("-"); @@ -197,3 +205,8 @@ void NodeInfo::resetInfo() fileSymlinkTarget->setText("-"); } +void NodeInfo::showEvent(QShowEvent * ev) +{ + Q_UNUSED(ev); + readAndSetInfo(); +} ============================================================ --- src/view/panels/NodeInfo.h ad838bffdec60eb1afdef99a1de88e753fb38505 +++ src/view/panels/NodeInfo.h d99d10fed6ffaf7817948cac2fda0fa4120326a9 @@ -36,11 +36,14 @@ public slots: void showSelectRevision(const QString &); public slots: - void readAndSetInfo(const InventoryItem *); + void setItem(const InventoryItem *); + void readAndSetInfo(); void resetInfo(); private: + void showEvent(QShowEvent *); WorkspacePath workspacePath; + const InventoryItem * inventoryItem; }; #endif