1 /*
2 SPDX-FileCopyrightText: 2014 Kevin Funk <kfunk@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
5 */
6
7 #include "noprojectcustomincludepaths.h"
8
9 #include "ui_noprojectcustomincludepaths.h"
10
11 #include <KLocalizedString>
12
13 #include <QFileDialog>
14 #include <QUrl>
15
16
NoProjectCustomIncludePaths(QWidget * parent)17 NoProjectCustomIncludePaths::NoProjectCustomIncludePaths(QWidget* parent)
18 : QDialog(parent),
19 m_ui(new Ui::CustomIncludePaths)
20 {
21 m_ui->setupUi(this);
22 m_ui->storageDirectory->setMode(KFile::Directory);
23
24 setWindowTitle(i18nc("@title:window", "Setup Custom Include Paths"));
25
26 connect(m_ui->directorySelector, &QPushButton::clicked, this, &NoProjectCustomIncludePaths::openAddIncludeDirectoryDialog);
27 }
28
setStorageDirectory(const QString & path)29 void NoProjectCustomIncludePaths::setStorageDirectory(const QString& path)
30 {
31 m_ui->storageDirectory->setUrl(QUrl::fromLocalFile(path));
32 }
33
storageDirectory() const34 QString NoProjectCustomIncludePaths::storageDirectory() const
35 {
36 return m_ui->storageDirectory->url().toLocalFile();
37 }
38
appendCustomIncludePath(const QString & path)39 void NoProjectCustomIncludePaths::appendCustomIncludePath(const QString& path)
40 {
41 m_ui->customIncludePaths->appendPlainText(path);
42 }
43
customIncludePaths() const44 QStringList NoProjectCustomIncludePaths::customIncludePaths() const
45 {
46 const QString pathsText = m_ui->customIncludePaths->document()->toPlainText();
47 #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
48 const QStringList paths = pathsText.split(QLatin1Char('\n'), Qt::SkipEmptyParts);
49 #else
50 const QStringList paths = pathsText.split(QLatin1Char('\n'), QString::SkipEmptyParts);
51 #endif
52 return paths;
53 }
54
setCustomIncludePaths(const QStringList & paths)55 void NoProjectCustomIncludePaths::setCustomIncludePaths(const QStringList& paths)
56 {
57 m_ui->customIncludePaths->setPlainText(paths.join(QLatin1Char('\n')));
58 }
59
openAddIncludeDirectoryDialog()60 void NoProjectCustomIncludePaths::openAddIncludeDirectoryDialog()
61 {
62 const QString dirName = QFileDialog::getExistingDirectory(this, i18nc("@title:window", "Select Directory to Include"));
63 if (dirName.isEmpty())
64 return;
65
66 appendCustomIncludePath(dirName);
67 }
68