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
|
/*
SPDX-FileCopyrightText: 2008 Andreas Pakulat <apaku@gmx.de>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef KDEVPLATFORM_OPENPROJECTDIALOG_H
#define KDEVPLATFORM_OPENPROJECTDIALOG_H
#include <QUrl>
#include <KAssistantDialog>
#include <KIO/UDSEntry>
#include <KPluginMetaData>
class KPageWidgetItem;
class QFileDialog;
namespace KIO
{
class Job;
}
namespace KDevelop
{
class ProjectSourcePage;
class OpenProjectPage;
class IPlugin;
class OpenProjectDialog : public KAssistantDialog
{
Q_OBJECT
public:
OpenProjectDialog(bool fetch, const QUrl& startUrl,
const QUrl& repoUrl = QUrl(), IPlugin* vcsOrProviderPlugin = nullptr,
QWidget* parent = nullptr);
/**
* Return a QUrl pointing to the project's .kdev file.
*/
QUrl projectFileUrl() const;
/**
* Return a QUrl pointing to the file, that was selected by the user.
* Unlike projectFileUrl(), this can be a .kdev file, as well
* as build system file (e.g. CMakeLists.txt).
*/
QUrl selectedUrl() const;
QString projectName() const;
QString projectManager() const;
int exec() override;
QStringList projectManagerForFile(const QString& file) const;
private Q_SLOTS:
void validateSourcePage( bool );
void validateOpenUrl( const QUrl& );
void validateProjectName( const QString& );
void validateProjectManager( const QString&, const QString & );
void storeFileList(KIO::Job*, const KIO::UDSEntryList&);
void openPageAccepted();
private:
bool execNativeDialog();
void validateProjectInfo();
QUrl m_url;
QUrl m_selected;
QString m_projectName;
QString m_projectManager;
bool m_urlIsDirectory;
/// Used to select files when we aren't in KDE
QFileDialog* nativeDialog = nullptr;
KPageWidgetItem* sourcePage;
KPageWidgetItem* openPage;
KPageWidgetItem* projectInfoPage;
QStringList m_fileList;
QMap<QString, QStringList> m_projectFilters;
QMap<QString, KPluginMetaData> m_projectPlugins;
QStringList m_genericProjectPlugins;
KDevelop::OpenProjectPage* openPageWidget = nullptr;
KDevelop::ProjectSourcePage* sourcePageWidget = nullptr;
};
}
#endif
|