diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index 5f9d37e028f..bc9750c61be 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -244,6 +245,32 @@ void ClearCasePlugin::updateStatusForFile(const QString &absFile) setStatus(absFile, getFileStatus(absFile), false); } +/// Give warning if a derived object is edited +void ClearCasePlugin::updateEditDerivedObjectWarning(const QString &fileName, + const FileStatus::Status status) +{ + if (!isDynamic()) + return; + + Core::IDocument *curDocument = Core::EditorManager::currentDocument(); + if (!curDocument) + return; + + Core::InfoBar *infoBar = curDocument->infoBar(); + const Core::Id derivedObjectWarning("ClearCase.DerivedObjectWarning"); + + if (status == FileStatus::Derived) { + if (!infoBar->canInfoBeAdded(derivedObjectWarning)) + return; + + infoBar->addInfo(Core::InfoBarEntry(derivedObjectWarning, + tr("Editing Derived Object: %1") + .arg(fileName))); + } else { + infoBar->removeInfo(derivedObjectWarning); + } +} + FileStatus::Status ClearCasePlugin::getFileStatus(const QString &fileName) const { QTC_CHECK(!fileName.isEmpty()); @@ -788,6 +815,8 @@ void ClearCasePlugin::updateStatusActions() checkAndReIndexUnknownFile(absoluteFileName); fileStatus = vcsStatus(absoluteFileName); + updateEditDerivedObjectWarning(absoluteFileName, fileStatus.status); + if (Constants::debug) qDebug() << Q_FUNC_INFO << absoluteFileName << ", status = " << fileStatusToText(fileStatus.status) << "(" << fileStatus.status << ")"; diff --git a/src/plugins/clearcase/clearcaseplugin.h b/src/plugins/clearcase/clearcaseplugin.h index af7af67800b..3f263e67f6c 100644 --- a/src/plugins/clearcase/clearcaseplugin.h +++ b/src/plugins/clearcase/clearcaseplugin.h @@ -264,6 +264,7 @@ private: FileStatus::Status getFileStatus(const QString &fileName) const; void updateStatusForFile(const QString &absFile); + void updateEditDerivedObjectWarning(const QString &fileName, const FileStatus::Status status); ClearCaseSettings m_settings;