summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/coreplugin/idocument.cpp112
-rw-r--r--src/plugins/coreplugin/idocument.h22
2 files changed, 89 insertions, 45 deletions
diff --git a/src/plugins/coreplugin/idocument.cpp b/src/plugins/coreplugin/idocument.cpp
index 02a90d165f..4bd5484d80 100644
--- a/src/plugins/coreplugin/idocument.cpp
+++ b/src/plugins/coreplugin/idocument.cpp
@@ -62,29 +62,57 @@
namespace Core {
+namespace Internal {
+
+class IDocumentPrivate
+{
+public:
+ IDocumentPrivate() :
+ infoBar(0),
+ temporary(false),
+ hasWriteWarning(false),
+ restored(false)
+ {
+ }
+
+ ~IDocumentPrivate()
+ {
+ delete infoBar;
+ }
+
+ Id id;
+ QString mimeType;
+ QString filePath;
+ QString displayName;
+ QString autoSaveName;
+ InfoBar *infoBar;
+ bool temporary;
+ bool hasWriteWarning;
+ bool restored;
+};
+
+} // namespace Internal
+
IDocument::IDocument(QObject *parent) : QObject(parent),
- m_temporary(false),
- m_infoBar(0),
- m_hasWriteWarning(false),
- m_restored(false)
+ d(new Internal::IDocumentPrivate)
{
}
IDocument::~IDocument()
{
removeAutoSaveFile();
- delete m_infoBar;
+ delete d;
}
void IDocument::setId(Id id)
{
- m_id = id;
+ d->id = id;
}
Id IDocument::id() const
{
- QTC_CHECK(m_id.isValid());
- return m_id;
+ QTC_CHECK(d->id.isValid());
+ return d->id;
}
/*!
@@ -99,6 +127,11 @@ bool IDocument::setContents(const QByteArray &contents)
return false;
}
+QString IDocument::filePath() const
+{
+ return d->filePath;
+}
+
IDocument::ReloadBehavior IDocument::reloadBehavior(ChangeTrigger state, ChangeType type) const
{
if (type == TypePermissions)
@@ -131,7 +164,7 @@ bool IDocument::isFileReadOnly() const
*/
bool IDocument::isTemporary() const
{
- return m_temporary;
+ return d->temporary;
}
/*!
@@ -140,13 +173,18 @@ bool IDocument::isTemporary() const
*/
void IDocument::setTemporary(bool temporary)
{
- m_temporary = temporary;
+ d->temporary = temporary;
+}
+
+QString IDocument::mimeType() const
+{
+ return d->mimeType;
}
void IDocument::setMimeType(const QString &mimeType)
{
- if (m_mimeType != mimeType) {
- m_mimeType = mimeType;
+ if (d->mimeType != mimeType) {
+ d->mimeType = mimeType;
emit mimeTypeChanged();
}
}
@@ -155,7 +193,7 @@ bool IDocument::autoSave(QString *errorString, const QString &fileName)
{
if (!save(errorString, fileName, true))
return false;
- m_autoSaveName = fileName;
+ d->autoSaveName = fileName;
return true;
}
@@ -163,8 +201,8 @@ static const char kRestoredAutoSave[] = "RestoredAutoSave";
void IDocument::setRestoredFrom(const QString &name)
{
- m_autoSaveName = name;
- m_restored = true;
+ d->autoSaveName = name;
+ d->restored = true;
InfoBarEntry info(Id(kRestoredAutoSave),
tr("File was restored from auto-saved copy. "
"Select Save to confirm or Revert to Saved to discard changes."));
@@ -173,21 +211,31 @@ void IDocument::setRestoredFrom(const QString &name)
void IDocument::removeAutoSaveFile()
{
- if (!m_autoSaveName.isEmpty()) {
- QFile::remove(m_autoSaveName);
- m_autoSaveName.clear();
- if (m_restored) {
- m_restored = false;
+ if (!d->autoSaveName.isEmpty()) {
+ QFile::remove(d->autoSaveName);
+ d->autoSaveName.clear();
+ if (d->restored) {
+ d->restored = false;
infoBar()->removeInfo(Id(kRestoredAutoSave));
}
}
}
+bool IDocument::hasWriteWarning() const
+{
+ return d->hasWriteWarning;
+}
+
+void IDocument::setWriteWarning(bool has)
+{
+ d->hasWriteWarning = has;
+}
+
InfoBar *IDocument::infoBar()
{
- if (!m_infoBar)
- m_infoBar = new InfoBar;
- return m_infoBar;
+ if (!d->infoBar)
+ d->infoBar = new InfoBar;
+ return d->infoBar;
}
/*!
@@ -198,11 +246,11 @@ InfoBar *IDocument::infoBar()
*/
void IDocument::setFilePath(const QString &filePath)
{
- if (m_filePath == filePath)
+ if (d->filePath == filePath)
return;
- QString oldName = m_filePath;
- m_filePath = filePath;
- emit filePathChanged(oldName, m_filePath);
+ QString oldName = d->filePath;
+ d->filePath = filePath;
+ emit filePathChanged(oldName, d->filePath);
emit changed();
}
@@ -213,9 +261,9 @@ void IDocument::setFilePath(const QString &filePath)
*/
QString IDocument::displayName() const
{
- if (!m_displayName.isEmpty())
- return m_displayName;
- return QFileInfo(m_filePath).fileName();
+ if (!d->displayName.isEmpty())
+ return d->displayName;
+ return QFileInfo(d->filePath).fileName();
}
/*!
@@ -227,9 +275,9 @@ QString IDocument::displayName() const
*/
void IDocument::setDisplayName(const QString &name)
{
- if (name == m_displayName)
+ if (name == d->displayName)
return;
- m_displayName = name;
+ d->displayName = name;
emit changed();
}
diff --git a/src/plugins/coreplugin/idocument.h b/src/plugins/coreplugin/idocument.h
index 2bb902a7b6..8e88a9cc52 100644
--- a/src/plugins/coreplugin/idocument.h
+++ b/src/plugins/coreplugin/idocument.h
@@ -41,6 +41,10 @@ namespace Core {
class MimeType;
class InfoBar;
+namespace Internal {
+class IDocumentPrivate;
+}
+
class CORE_EXPORT IDocument : public QObject
{
Q_OBJECT
@@ -84,7 +88,7 @@ public:
virtual bool save(QString *errorString, const QString &fileName = QString(), bool autoSave = false) = 0;
virtual bool setContents(const QByteArray &contents);
- QString filePath() const { return m_filePath; }
+ QString filePath() const;
virtual void setFilePath(const QString &filePath);
QString displayName() const;
void setDisplayName(const QString &name);
@@ -96,7 +100,7 @@ public:
virtual QString defaultPath() const = 0;
virtual QString suggestedFileName() const = 0;
- QString mimeType() const { return m_mimeType; }
+ QString mimeType() const;
void setMimeType(const QString &mimeType);
virtual bool shouldAutoSave() const;
@@ -112,8 +116,8 @@ public:
void setRestoredFrom(const QString &name);
void removeAutoSaveFile();
- bool hasWriteWarning() const { return m_hasWriteWarning; }
- void setWriteWarning(bool has) { m_hasWriteWarning = has; }
+ bool hasWriteWarning() const;
+ void setWriteWarning(bool has);
InfoBar *infoBar();
@@ -127,15 +131,7 @@ signals:
void filePathChanged(const QString &oldName, const QString &newName);
private:
- Id m_id;
- QString m_mimeType;
- QString m_filePath;
- QString m_displayName;
- bool m_temporary;
- QString m_autoSaveName;
- InfoBar *m_infoBar;
- bool m_hasWriteWarning;
- bool m_restored;
+ Internal::IDocumentPrivate *d;
};
} // namespace Core