File indexing completed on 2024-05-05 04:41:04

0001 /*
0002     SPDX-FileCopyrightText: 2010 Aleix Pol Gonzalez <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "welcomepageplugin.h"
0008 #include "welcomepageview.h"
0009 
0010 #include <KPluginFactory>
0011 
0012 #include <interfaces/icore.h>
0013 #include <interfaces/iuicontroller.h>
0014 #include <sublime/mainwindow.h>
0015 
0016 #include <QDebug>
0017 
0018 K_PLUGIN_FACTORY_WITH_JSON(KDevWelcomePagePluginFactory, "kdevwelcomepage.json", registerPlugin<KDevWelcomePagePlugin>();)
0019 
0020 using namespace KDevelop;
0021 
0022 namespace {
0023 WelcomePageWidget* createWelcomePageWidget()
0024 {
0025     // don't attempt to load any QML if CPU doesn't have SSE2 support (cf. bug 381999)
0026     // Note: Clang 4.0 moved the definition of __cpu_model (used by __builtin_cpu_supporst) into compiler-rt lib it seems -- let's just disable this feature on this compiler
0027 #if defined(Q_OS_LINUX) && defined(Q_PROCESSOR_X86_32) && (defined(Q_CC_GNU) || (defined(Q_CC_CLANG) && __clang_major__ >= 3 && __clang_minor__ >= 7 && __clang_major__ < 4))
0028     if (!__builtin_cpu_supports("sse2")) {
0029         qWarning() << "Welcome Page won't load any QML -- lacking SSE2 support on this processor";
0030         return nullptr;
0031     }
0032 #endif
0033 
0034     return new WelcomePageWidget({});
0035 }
0036 }
0037 
0038 KDevWelcomePagePlugin::KDevWelcomePagePlugin( QObject* parent, const QVariantList& )
0039     : IPlugin(QStringLiteral("kdevwelcomepage"), parent )
0040 {
0041     m_welcomePageWidget = createWelcomePageWidget();
0042     if (m_welcomePageWidget) {
0043         auto mainWindow = qobject_cast<Sublime::MainWindow*>(ICore::self()->uiController()->activeMainWindow());
0044         mainWindow->setBackgroundCentralWidget(m_welcomePageWidget);
0045     }
0046 }
0047 
0048 void KDevWelcomePagePlugin::unload()
0049 {
0050     auto mainWindow = qobject_cast<Sublime::MainWindow*>(ICore::self()->uiController()->activeMainWindow());
0051     if (mainWindow && m_welcomePageWidget) {
0052         mainWindow->setBackgroundCentralWidget(nullptr);
0053     }
0054 }
0055 
0056 #include "welcomepageplugin.moc"
0057 #include "moc_welcomepageplugin.cpp"