Skip to content
Snippets Groups Projects
Unverified Commit 43c9f03c authored by mpuchner's avatar mpuchner Committed by GitHub
Browse files

Merge pull request #1132 from mpuchner/issue-1117-crash-on-save-project

Issue 1117 crash on save project
parents 8746dce8 a5de779f
No related branches found
No related tags found
No related merge requests found
......@@ -20,7 +20,7 @@
#include <QPushButton>
#include <QVBoxLayout>
NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirectory,
NewProjectDialog::NewProjectDialog(QWidget* parent, Mode mode, const QString& workingDirectory,
const QString& projectName)
: QDialog(parent)
, m_projectNameEdit(0)
......@@ -34,7 +34,7 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect
{
setMinimumSize(480, 280);
setWindowTitle("New project");
setWindowTitle(mode == CREATE ? "New project" : "Save project");
QLabel* nameLabel = new QLabel("Project name:");
m_projectNameEdit = new QLineEdit;
......@@ -43,7 +43,7 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect
SLOT(checkIfProjectNameIsValid(QString)));
nameLabel->setBuddy(m_projectNameEdit);
QLabel* parentDirLabel = new QLabel("Create in:");
QLabel* parentDirLabel = new QLabel(mode == CREATE ? "Create in:" : "Save in:");
m_workDirEdit = new QLineEdit;
m_workDirEdit->setText(QDir::homePath());
connect(m_workDirEdit, SIGNAL(textEdited(QString)), this,
......@@ -55,7 +55,7 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect
m_warningLabel = new QLabel();
m_createButton = new QPushButton("Create");
m_createButton = new QPushButton(mode == CREATE ? "Create" : "Save");
connect(m_createButton, SIGNAL(clicked()), this, SLOT(createProjectDir()));
m_createButton->setDefault(true);
m_cancelButton = new QPushButton("Cancel");
......
......@@ -24,7 +24,9 @@ class QLabel;
class NewProjectDialog : public QDialog {
Q_OBJECT
public:
NewProjectDialog(QWidget* parent = 0, const QString& workingDirectory = "",
enum Mode { CREATE, SAVE };
NewProjectDialog(QWidget* parent, Mode mode, const QString& workingDirectory = "",
const QString& projectName = "");
QString getWorkingDirectory() const;
......
......@@ -175,12 +175,11 @@ void ProjectManager::newProject() {
if (!closeCurrentProject())
return;
QString projectFileName = acquireProjectFileName();
createNewProject();
if (!projectFileName.isEmpty()) {
createNewProject();
QString projectFileName = acquireProjectFileName(false);
if (!projectFileName.isEmpty())
saveProject(projectFileName);
}
}
//! Processes close current project request. Call save/discard/cancel dialog, if necessary.
......@@ -228,7 +227,7 @@ bool ProjectManager::saveProject(QString projectFileName) {
if (m_project_document->hasValidNameAndPath())
projectFileName = m_project_document->projectFileName();
else
projectFileName = acquireProjectFileName();
projectFileName = acquireProjectFileName(true);
}
if (projectFileName.isEmpty())
......@@ -255,7 +254,7 @@ bool ProjectManager::saveProject(QString projectFileName) {
//! Processes 'save project as' request.
bool ProjectManager::saveProjectAs() {
QString projectFileName = acquireProjectFileName();
QString projectFileName = acquireProjectFileName(true);
if (projectFileName.isEmpty())
return false;
......@@ -269,6 +268,8 @@ void ProjectManager::openProject(QString fileName) {
if (!closeCurrentProject())
return;
createNewProject();
if (fileName.isEmpty()) {
fileName =
QFileDialog::getOpenFileName(m_mainWindow, "Open project file", workingDirectory(),
......@@ -276,7 +277,7 @@ void ProjectManager::openProject(QString fileName) {
if (fileName.isEmpty())
return;
}
createNewProject();
loadProject(fileName);
if (m_project_document->isReady()) {
......@@ -334,10 +335,12 @@ void ProjectManager::loadProject(const QString& projectFileName) {
QApplication::restoreOverrideCursor();
}
//! Returns project file name from dialog.
//! Returns project file name from dialog. Returns empty string if dialog was canceled.
QString ProjectManager::acquireProjectFileName() {
NewProjectDialog dialog(m_mainWindow, workingDirectory(), untitledProjectName());
QString ProjectManager::acquireProjectFileName(bool forSaveAs) {
NewProjectDialog dialog(m_mainWindow,
forSaveAs ? NewProjectDialog::SAVE : NewProjectDialog::CREATE,
workingDirectory(), untitledProjectName());
if (dialog.exec() != QDialog::Accepted)
return "";
......
......@@ -61,7 +61,7 @@ private:
void createNewProject();
void deleteCurrentProject();
void loadProject(const QString& projectFileName);
QString acquireProjectFileName();
QString acquireProjectFileName(bool forSaveAs);
void addToRecentProjects();
QString workingDirectory();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment