MCPcopy Create free account
hub / github.com/KDE/kdevelop / fetchProjectFromUrl

Method fetchProjectFromUrl

kdevplatform/shell/projectcontroller.cpp:900–935  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

898}
899
900bool ProjectController::fetchProjectFromUrl(const QUrl& repoUrl, FetchFlags fetchFlags)
901{
902 Q_D(ProjectController);
903
904 IPlugin* vcsOrProviderPlugin = nullptr;
905
906 // TODO: query also projectprovider plugins, and that before plain vcs plugins
907 // e.g. KDE provider plugin could catch URLs from mirror or pickup kde:repo things
908 auto* pluginController = d->m_core->pluginController();
909 const auto& vcsPlugins = pluginController->allPluginsForExtension(QStringLiteral("org.kdevelop.IBasicVersionControl"));
910
911 for (auto* plugin : vcsPlugins) {
912 auto* iface = plugin->extension<IBasicVersionControl>();
913 if (iface->isValidRemoteRepositoryUrl(repoUrl)) {
914 vcsOrProviderPlugin = plugin;
915 break;
916 }
917 }
918 if (!vcsOrProviderPlugin) {
919 if (fetchFlags.testFlag(FetchShowErrorIfNotSupported)) {
920 const QString messageText =
921 i18n("No enabled plugin supports this repository URL: %1", repoUrl.toDisplayString());
922 auto* message = new Sublime::Message(messageText, Sublime::Message::Error);
923 ICore::self()->uiController()->postMessage(message);
924 }
925 return false;
926 }
927
928 const QUrl url = d->dialog->askProjectConfigLocation(true, QUrl(), repoUrl, vcsOrProviderPlugin);
929
930 if (!url.isEmpty()) {
931 d->importProject(url);
932 }
933
934 return true;
935}
936
937void ProjectController::fetchProject()
938{

Callers 2

dropEventMethod · 0.80
mainFunction · 0.80

Calls 9

pluginControllerMethod · 0.80
uiControllerMethod · 0.80
importProjectMethod · 0.80
QUrlClass · 0.70
postMessageMethod · 0.45
isEmptyMethod · 0.45

Tested by

no test coverage detected