diff --git a/src/plugins/vcsbase/submiteditorfile.cpp b/src/plugins/vcsbase/submiteditorfile.cpp index 1b45212b71345999d1e2ac303a4621042dee4b43..473defa443d086656d75200f448190b190b657a8 100644 --- a/src/plugins/vcsbase/submiteditorfile.cpp +++ b/src/plugins/vcsbase/submiteditorfile.cpp @@ -29,6 +29,12 @@ #include "submiteditorfile.h" +#include "vcsbasesubmiteditor.h" + +#include <utils/fileutils.h> + +#include <QFileInfo> + using namespace VcsBase; using namespace VcsBase::Internal; @@ -39,10 +45,11 @@ using namespace VcsBase::Internal; submit editor files. */ -SubmitEditorFile::SubmitEditorFile(const QString &mimeType, QObject *parent) : +SubmitEditorFile::SubmitEditorFile(const QString &mimeType, VcsBaseSubmitEditor *parent) : Core::IDocument(parent), m_mimeType(mimeType), - m_modified(false) + m_modified(false), + m_editor(parent) { setTemporary(true); } @@ -57,7 +64,16 @@ void SubmitEditorFile::setModified(bool modified) bool SubmitEditorFile::save(QString *errorString, const QString &fileName, bool autoSave) { - emit saveMe(errorString, fileName, autoSave); + const QString fName = fileName.isEmpty() ? filePath() : fileName; + Utils::FileSaver saver(fName, QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); + saver.write(m_editor->fileContents()); + if (!saver.finalize(errorString)) + return false; + if (autoSave) + return true; + const QFileInfo fi(fName); + setFilePath(fi.absoluteFilePath()); + setModified(false); if (!errorString->isEmpty()) return false; emit changed(); diff --git a/src/plugins/vcsbase/submiteditorfile.h b/src/plugins/vcsbase/submiteditorfile.h index ae0b0ab80ddf64174e5a3b77020877b3a6acab55..4b16ff785f14c8acd8bc4c52fe1e30d256394b0e 100644 --- a/src/plugins/vcsbase/submiteditorfile.h +++ b/src/plugins/vcsbase/submiteditorfile.h @@ -33,6 +33,8 @@ #include <coreplugin/idocument.h> namespace VcsBase { +class VcsBaseSubmitEditor; + namespace Internal { class SubmitEditorFile : public Core::IDocument @@ -40,7 +42,7 @@ class SubmitEditorFile : public Core::IDocument Q_OBJECT public: explicit SubmitEditorFile(const QString &mimeType, - QObject *parent = 0); + VcsBaseSubmitEditor *parent = 0); QString defaultPath() const { return QString(); } QString suggestedFileName() const { return QString(); } @@ -54,12 +56,10 @@ public: void setModified(bool modified = true); -signals: - void saveMe(QString *errorString, const QString &fileName, bool autoSave); - private: const QString m_mimeType; bool m_modified; + VcsBaseSubmitEditor *m_editor; }; diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp index 8b4be858e5191cba839fef1ced561f36154b6960..9f482ba6d32097733a59fc76c60e9bd45d56337c 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp @@ -146,7 +146,7 @@ struct VcsBaseSubmitEditorPrivate { VcsBaseSubmitEditorPrivate(const VcsBaseSubmitEditorParameters *parameters, SubmitEditorWidget *editorWidget, - QObject *q); + VcsBaseSubmitEditor *q); SubmitEditorWidget *m_widget; QToolBar *m_toolWidget; @@ -163,7 +163,7 @@ struct VcsBaseSubmitEditorPrivate VcsBaseSubmitEditorPrivate::VcsBaseSubmitEditorPrivate(const VcsBaseSubmitEditorParameters *parameters, SubmitEditorWidget *editorWidget, - QObject *q) : + VcsBaseSubmitEditor *q) : m_widget(editorWidget), m_toolWidget(0), m_parameters(parameters), @@ -194,8 +194,6 @@ VcsBaseSubmitEditor::VcsBaseSubmitEditor(const VcsBaseSubmitEditorParameters *pa d->m_file->setModified(false); // We are always clean to prevent the editor manager from asking to save. - connect(d->m_file, SIGNAL(saveMe(QString*,QString,bool)), - this, SLOT(save(QString*,QString,bool))); connect(d->m_widget, SIGNAL(diffSelected(QList<int>)), this, SLOT(slotDiffSelectedVcsFiles(QList<int>))); connect(d->m_widget->descriptionEdit(), SIGNAL(textChanged()), this, SLOT(slotDescriptionChanged())); @@ -515,21 +513,6 @@ void VcsBaseSubmitEditor::slotDiffSelectedVcsFiles(const QList<int> &rawList) emit diffSelectedFiles(rowsToFiles(rawList)); } -bool VcsBaseSubmitEditor::save(QString *errorString, const QString &fileName, bool autoSave) -{ - const QString fName = fileName.isEmpty() ? d->m_file->filePath() : fileName; - Utils::FileSaver saver(fName, QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); - saver.write(fileContents()); - if (!saver.finalize(errorString)) - return false; - if (autoSave) - return true; - const QFileInfo fi(fName); - d->m_file->setFilePath(fi.absoluteFilePath()); - d->m_file->setModified(false); - return true; -} - QByteArray VcsBaseSubmitEditor::fileContents() const { return d->m_widget->descriptionText().toLocal8Bit(); diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h index 273586ad1c20e0dcb70fe03700d7364aa29759c8..087f2ce98a27eee59512a09ecacc385c06312a12 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.h +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h @@ -44,6 +44,7 @@ QT_END_NAMESPACE namespace VcsBase { namespace Internal { class CommonVcsSettings; + class SubmitEditorFile; } struct VcsBaseSubmitEditorPrivate; class SubmitEditorWidget; @@ -143,7 +144,6 @@ signals: private slots: void slotDiffSelectedVcsFiles(const QList<int> &rawList); - bool save(QString *errorString, const QString &fileName, bool autoSave); void slotDescriptionChanged(); void slotCheckSubmitMessage(); void slotInsertNickName(); @@ -168,6 +168,7 @@ private: QString promptForNickName(); VcsBaseSubmitEditorPrivate *d; + friend class Internal::SubmitEditorFile; // for the file contents }; } // namespace VcsBase