File indexing completed on 2024-05-05 16:46:16
0001 /* 0002 SPDX-FileCopyrightText: 2011 Martin Heide <martin.heide@gmx.net> 0003 SPDX-FileCopyrightText: 2011 Julien Desgats <julien.desgats@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "qmakebuilddirchooserdialog.h" 0009 0010 #include <debug.h> 0011 #include "qmakebuilddirchooser.h" 0012 #include "qmakeconfig.h" 0013 0014 #include <QDialogButtonBox> 0015 #include <KLocalizedString> 0016 0017 #include <interfaces/iproject.h> 0018 0019 QMakeBuildDirChooserDialog::QMakeBuildDirChooserDialog(KDevelop::IProject* project, QWidget* parent) 0020 : QDialog(parent) 0021 { 0022 setWindowTitle(i18nc("@title:window", "Configure a Build Directory")); 0023 0024 auto mainWidget = new QWidget(this); 0025 auto mainLayout = new QVBoxLayout; 0026 setLayout(mainLayout); 0027 mainLayout->addWidget(mainWidget); 0028 0029 m_chooserUi = new QMakeBuildDirChooser(project); 0030 connect(m_chooserUi, &QMakeBuildDirChooser::changed, this, &QMakeBuildDirChooserDialog::validate); 0031 mainLayout->addWidget(m_chooserUi); 0032 0033 m_buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); 0034 m_buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); 0035 connect(m_buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); 0036 connect(m_buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); 0037 mainLayout->addWidget(m_buttonBox); 0038 0039 loadConfig(); 0040 // save; like this, we can be sure to have a qmake executable and build path set 0041 //(even if user clicks Cancel) 0042 saveConfig(); 0043 0044 validate(); 0045 } 0046 0047 QMakeBuildDirChooserDialog::~QMakeBuildDirChooserDialog() 0048 { 0049 } 0050 0051 void QMakeBuildDirChooserDialog::loadConfig() 0052 { 0053 m_chooserUi->loadConfig(); 0054 } 0055 0056 void QMakeBuildDirChooserDialog::saveConfig() 0057 { 0058 // store this builds config 0059 m_chooserUi->saveConfig(); 0060 0061 // also save as current values 0062 KConfigGroup config(m_chooserUi->project()->projectConfiguration(), QMakeConfig::CONFIG_GROUP); 0063 m_chooserUi->saveConfig(config); 0064 config.writeEntry(QMakeConfig::BUILD_FOLDER, buildDir()); 0065 } 0066 0067 QString QMakeBuildDirChooserDialog::buildDir() const 0068 { 0069 return m_chooserUi->buildDir(); 0070 } 0071 0072 void QMakeBuildDirChooserDialog::accept() 0073 { 0074 if (m_chooserUi->validate()) { 0075 QDialog::accept(); 0076 saveConfig(); 0077 } 0078 } 0079 0080 void QMakeBuildDirChooserDialog::validate() 0081 { 0082 m_buttonBox->button(QDialogButtonBox::Ok)->setEnabled(m_chooserUi->validate()); 0083 } 0084 0085 #include "moc_qmakebuilddirchooserdialog.cpp"