1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
/***************************************************************************
* This file is part of KDevelop *
* Copyright (C) 2011 Martin Heide <martin.heide@gmx.net> *
* Copyright (C) 2011 Julien Desgats <julien.desgats@gmail.com> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Library General Public License as *
* published by the Free Software Foundation; either version 2 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#include "qmakebuilddirchooserdialog.h"
#include <debug.h>
#include "qmakebuilddirchooser.h"
#include "qmakeconfig.h"
#include <QDialogButtonBox>
#include <KLocalizedString>
#include <interfaces/iproject.h>
QMakeBuildDirChooserDialog::QMakeBuildDirChooserDialog(KDevelop::IProject* project, QWidget* parent)
: QDialog(parent)
{
setWindowTitle(i18nc("@title:window", "Configure a Build Directory"));
auto mainWidget = new QWidget(this);
auto mainLayout = new QVBoxLayout;
setLayout(mainLayout);
mainLayout->addWidget(mainWidget);
m_chooserUi = new QMakeBuildDirChooser(project);
connect(m_chooserUi, &QMakeBuildDirChooser::changed, this, &QMakeBuildDirChooserDialog::validate);
mainLayout->addWidget(m_chooserUi);
m_buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
m_buttonBox->button(QDialogButtonBox::Ok)->setDefault(true);
connect(m_buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(m_buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
mainLayout->addWidget(m_buttonBox);
loadConfig();
// save; like this, we can be sure to have a qmake executable and build path set
//(even if user clicks Cancel)
saveConfig();
validate();
}
QMakeBuildDirChooserDialog::~QMakeBuildDirChooserDialog()
{
}
void QMakeBuildDirChooserDialog::loadConfig()
{
m_chooserUi->loadConfig();
}
void QMakeBuildDirChooserDialog::saveConfig()
{
// store this builds config
m_chooserUi->saveConfig();
// also save as current values
KConfigGroup config(m_chooserUi->project()->projectConfiguration(), QMakeConfig::CONFIG_GROUP);
m_chooserUi->saveConfig(config);
config.writeEntry(QMakeConfig::BUILD_FOLDER, buildDir());
}
QString QMakeBuildDirChooserDialog::buildDir() const
{
return m_chooserUi->buildDir();
}
void QMakeBuildDirChooserDialog::accept()
{
if (m_chooserUi->validate()) {
QDialog::accept();
saveConfig();
}
}
void QMakeBuildDirChooserDialog::validate()
{
m_buttonBox->button(QDialogButtonBox::Ok)->setEnabled(m_chooserUi->validate());
}
|