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