From 8ab578b11abe73eda2b6ed03a885763728a1057e Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Wed, 6 May 2009 11:55:21 +0200 Subject: [PATCH] Show a nice checkbox in the save dialog for SaveBeforeBuild --- .../coreplugin/dialogs/saveitemsdialog.cpp | 13 +++++++++++++ .../coreplugin/dialogs/saveitemsdialog.h | 3 ++- .../coreplugin/dialogs/saveitemsdialog.ui | 7 +++++++ src/plugins/coreplugin/filemanager.cpp | 18 +++++++++++++++--- src/plugins/coreplugin/filemanager.h | 9 +++++++-- .../projectexplorer/projectexplorer.cpp | 6 +++++- 6 files changed, 49 insertions(+), 7 deletions(-) diff --git a/src/plugins/coreplugin/dialogs/saveitemsdialog.cpp b/src/plugins/coreplugin/dialogs/saveitemsdialog.cpp index 80b15b4c94b..c49ae2dbbe6 100644 --- a/src/plugins/coreplugin/dialogs/saveitemsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/saveitemsdialog.cpp @@ -55,6 +55,8 @@ SaveItemsDialog::SaveItemsDialog(QWidget *parent, m_ui.buttonBox->button(QDialogButtonBox::Save)->setFocus(Qt::TabFocusReason); m_ui.buttonBox->button(QDialogButtonBox::Save)->setMinimumWidth(130); // bad magic number to avoid resizing of button + m_ui.saveBeforeBuildCheckBox->setVisible(false); + foreach (IFile *file, items) { QString visibleName; QString directory; @@ -121,3 +123,14 @@ QList<IFile*> SaveItemsDialog::itemsToSave() const { return m_itemsToSave; } + +void SaveItemsDialog::setAlwaysSaveMessage(const QString &msg) +{ + m_ui.saveBeforeBuildCheckBox->setText(msg); + m_ui.saveBeforeBuildCheckBox->setVisible(true); +} + +bool SaveItemsDialog::alwaysSaveChecked() +{ + return m_ui.saveBeforeBuildCheckBox->isChecked(); +} diff --git a/src/plugins/coreplugin/dialogs/saveitemsdialog.h b/src/plugins/coreplugin/dialogs/saveitemsdialog.h index ff22baa1f66..237db0d752d 100644 --- a/src/plugins/coreplugin/dialogs/saveitemsdialog.h +++ b/src/plugins/coreplugin/dialogs/saveitemsdialog.h @@ -57,7 +57,8 @@ public: QList<Core::IFile *> items); void setMessage(const QString &msg); - + void setAlwaysSaveMessage(const QString &msg); + bool alwaysSaveChecked(); QList<Core::IFile *> itemsToSave() const; private slots: diff --git a/src/plugins/coreplugin/dialogs/saveitemsdialog.ui b/src/plugins/coreplugin/dialogs/saveitemsdialog.ui index 966be8f4f30..6f37a47ddda 100644 --- a/src/plugins/coreplugin/dialogs/saveitemsdialog.ui +++ b/src/plugins/coreplugin/dialogs/saveitemsdialog.ui @@ -56,6 +56,13 @@ </column> </widget> </item> + <item> + <widget class="QCheckBox" name="saveBeforeBuildCheckBox"> + <property name="text"> + <string>Automatically save all Files before building</string> + </property> + </widget> + </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> diff --git a/src/plugins/coreplugin/filemanager.cpp b/src/plugins/coreplugin/filemanager.cpp index 5a9276fd851..b42611b2217 100644 --- a/src/plugins/coreplugin/filemanager.cpp +++ b/src/plugins/coreplugin/filemanager.cpp @@ -292,9 +292,11 @@ QList<IFile *> FileManager::saveModifiedFilesSilently(const QList<IFile *> &file Asks the user whether to save the files listed in \a files . Returns the files that have not been saved. */ QList<IFile *> FileManager::saveModifiedFiles(const QList<IFile *> &files, - bool *cancelled, const QString &message) + bool *cancelled, const QString &message, + const QString &alwaysSaveMessage, + bool *alwaysSave) { - return saveModifiedFiles(files, cancelled, false, message); + return saveModifiedFiles(files, cancelled, false, message, alwaysSaveMessage, alwaysSave); } static QMessageBox::StandardButton skipFailedPrompt(QWidget *parent, const QString &fileName) @@ -307,7 +309,11 @@ static QMessageBox::StandardButton skipFailedPrompt(QWidget *parent, const QStri } QList<IFile *> FileManager::saveModifiedFiles(const QList<IFile *> &files, - bool *cancelled, bool silently, const QString &message) + bool *cancelled, + bool silently, + const QString &message, + const QString &alwaysSaveMessage, + bool *alwaysSave) { if (cancelled) (*cancelled) = false; @@ -338,12 +344,18 @@ QList<IFile *> FileManager::saveModifiedFiles(const QList<IFile *> &files, SaveItemsDialog dia(m_mainWindow, modifiedFiles); if (!message.isEmpty()) dia.setMessage(message); + if (!alwaysSaveMessage.isNull()) + dia.setAlwaysSaveMessage(alwaysSaveMessage); if (dia.exec() != QDialog::Accepted) { if (cancelled) (*cancelled) = true; + if (alwaysSave) + *alwaysSave = dia.alwaysSaveChecked(); notSaved = modifiedFiles; return notSaved; } + if (alwaysSave) + *alwaysSave = dia.alwaysSaveChecked(); filesToSave = dia.itemsToSave(); } diff --git a/src/plugins/coreplugin/filemanager.h b/src/plugins/coreplugin/filemanager.h index 52dafe4ca88..6be80514fd8 100644 --- a/src/plugins/coreplugin/filemanager.h +++ b/src/plugins/coreplugin/filemanager.h @@ -97,7 +97,9 @@ public: QList<IFile *> saveModifiedFilesSilently(const QList<IFile *> &files); QList<IFile *> saveModifiedFiles(const QList<IFile *> &files, bool *cancelled = 0, - const QString &message = QString()); + const QString &message = QString(), + const QString &alwaysSaveMessage = QString::null, + bool *alwaysSave = 0); signals: void currentFileChanged(const QString &filePath); @@ -116,7 +118,10 @@ private: void updateFileInfo(IFile *file); QList<IFile *> saveModifiedFiles(const QList<IFile *> &files, - bool *cancelled, bool silently, const QString &message); + bool *cancelled, bool silently, + const QString &message, + const QString &alwaysSaveMessage = QString::null, + bool *alwaysSave = 0); QMap<IFile*, FileInfo> m_managedFiles; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 4dbf49d7561..eae61dd93b1 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1324,10 +1324,14 @@ bool ProjectExplorerPlugin::saveModifiedFiles(const QList<Project *> & projects) Core::ICore::instance()->fileManager()->saveModifiedFilesSilently(filesToSave); } else { bool cancelled = false; - Core::ICore::instance()->fileManager()->saveModifiedFiles(filesToSave, &cancelled); + bool alwaysSave = false; + Core::ICore::instance()->fileManager()->saveModifiedFiles(filesToSave, &cancelled, QString::null, "Always save files before build", &alwaysSave); if (cancelled) { return false; } + if (alwaysSave) { + m_projectExplorerSettings.saveBeforeBuild = true; + } } } return true; -- GitLab