File indexing completed on 2024-05-12 04:39:37
0001 /* 0002 SPDX-FileCopyrightText: 2012 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-or-later 0005 */ 0006 0007 #include <KLocalizedString> 0008 #include <QDialog> 0009 #include <QDialogButtonBox> 0010 #include <QVBoxLayout> 0011 #include <QTemporaryDir> 0012 #include <QDir> 0013 #include <QPushButton> 0014 #include <QStandardPaths> 0015 0016 #include <tests/testproject.h> 0017 #include <QApplication> 0018 #include <KAboutData> 0019 #include <QCommandLineParser> 0020 #include <KConfig> 0021 0022 #include "custombuildsystemconfigwidget.h" 0023 #include <debug.h> 0024 0025 static const char description[] = 0026 I18N_NOOP("CustomBuildSystem Config Ui Test App"); 0027 0028 static const char version[] = "0.1"; 0029 0030 class State : public QObject 0031 { 0032 Q_OBJECT 0033 public: 0034 State( QDialogButtonBox* buttonBox, CustomBuildSystemConfigWidget* cfgWidget, KConfig* config, KDevelop::IProject* proj ) 0035 : buttonBox(buttonBox), configWidget(cfgWidget), cfg(config), project(proj) 0036 { 0037 connect(buttonBox, &QDialogButtonBox::clicked, this, &State::buttonClicked); 0038 connect(configWidget, &CustomBuildSystemConfigWidget::changed, this, &State::configChanged); 0039 } 0040 public Q_SLOTS: 0041 void buttonClicked(QAbstractButton* button) 0042 { 0043 if (button == buttonBox->button(QDialogButtonBox::Apply)) { 0044 apply(); 0045 } else if (button == buttonBox->button(QDialogButtonBox::Ok)) { 0046 ok(); 0047 } else if (button == buttonBox->button(QDialogButtonBox::Cancel)) { 0048 qApp->quit(); 0049 } 0050 } 0051 0052 void apply() { 0053 configWidget->saveTo(cfg, project); 0054 buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false); 0055 buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); 0056 } 0057 void ok() { 0058 apply(); 0059 qApp->quit(); 0060 } 0061 void configChanged() { 0062 buttonBox->button(QDialogButtonBox::Apply)->setEnabled(true); 0063 buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); 0064 } 0065 private: 0066 QDialogButtonBox* buttonBox; 0067 CustomBuildSystemConfigWidget* configWidget; 0068 KConfig* cfg; 0069 KDevelop::IProject* project; 0070 }; 0071 0072 int main(int argc, char **argv) 0073 { 0074 QApplication app(argc, argv); 0075 0076 KAboutData aboutData(QStringLiteral("kcm_uitest"), i18n("kcm_uitest"), version, i18n(description), 0077 KAboutLicense::GPL, i18n("(C) 2012 Andreas Pakulat")); 0078 aboutData.addAuthor( i18n("Andreas Pakulat"), QString(), QStringLiteral("apaku@gmx.de") ); 0079 KAboutData::setApplicationData(aboutData); 0080 0081 QCommandLineParser parser; 0082 aboutData.setupCommandLine(&parser); 0083 0084 parser.process(app); 0085 aboutData.processCommandLine(&parser); 0086 0087 QTemporaryDir tempdir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)+"/kdev-custom-uitest"); 0088 0089 qCDebug(CUSTOMBUILDSYSTEM) << "created tempdir:" << tempdir.path(); 0090 0091 KConfig projkcfg( tempdir.path() + "/kdev-custom-uitest.kdev4" ); 0092 0093 QDir projdir(tempdir.path()); 0094 projdir.mkdir(QStringLiteral("includedir")); 0095 projdir.mkdir(QStringLiteral("subtree")); 0096 projdir.mkpath(QStringLiteral("subtree/includedir")); 0097 projdir.mkpath(QStringLiteral("subtree/deeptree")); 0098 projdir.mkpath(QStringLiteral("subtree/deeptree/includedir")); 0099 0100 qCDebug(CUSTOMBUILDSYSTEM) << "project config:" << projkcfg.name(); 0101 0102 QDialog dlg; 0103 0104 QVBoxLayout mainLayout; 0105 dlg.setLayout(&mainLayout); 0106 0107 KDevelop::TestProject proj; 0108 proj.setPath( KDevelop::Path(projkcfg.name())); 0109 0110 CustomBuildSystemConfigWidget widget(nullptr); 0111 widget.loadFrom(&projkcfg); 0112 mainLayout.addWidget(&widget); 0113 0114 dlg.setWindowTitle(QStringLiteral("Ui Test App for Config Widget")); 0115 0116 QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Apply | QDialogButtonBox::Cancel); 0117 buttonBox.button(QDialogButtonBox::Apply)->setEnabled(false); 0118 buttonBox.button(QDialogButtonBox::Ok)->setEnabled(false); 0119 0120 State state(&buttonBox, &widget, &projkcfg, &proj ); 0121 0122 dlg.resize(800, 600); 0123 0124 dlg.show(); 0125 0126 return app.exec(); 0127 0128 } 0129 0130 #include "kcmuitestmain.moc"