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

0001 /*
0002     SPDX-FileCopyrightText: 2011 Aleix Pol Gonzalez <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-only
0005 */
0006 
0007 #include "welcomepageview.h"
0008 
0009 #include "uihelper.h"
0010 #include "sessionsmodel.h"
0011 
0012 #include <KDeclarative/KDeclarative>
0013 #include <KLocalizedContext>
0014 
0015 #include <QQmlContext>
0016 #include <QQmlComponent>
0017 #include <QQmlError>
0018 #include <QDebug>
0019 
0020 #include <shell/core.h>
0021 #include <shell/uicontroller.h>
0022 
0023 #include <sublime/area.h>
0024 #include <sublime/mainwindow.h>
0025 #include <interfaces/iprojectcontroller.h>
0026 
0027 using namespace KDevelop;
0028 
0029 WelcomePageWidget::WelcomePageWidget(const QList<IProject*> & /*projects*/, QWidget* parent)
0030     : QQuickWidget(parent)
0031 {
0032     qRegisterMetaType<QObject*>("KDevelop::IProjectController*");
0033     qRegisterMetaType<QObject*>("KDevelop::IPluginController*");
0034     qRegisterMetaType<QObject*>("PatchReviewPlugin*");
0035     qRegisterMetaType<QAction*>();
0036     qmlRegisterType<SessionsModel>("org.kdevelop.welcomepage", 4, 3, "SessionsModel");
0037 
0038     //setup kdeclarative library
0039     KDeclarative::KDeclarative::setupEngine(engine());
0040     KLocalizedContext *localizedContextObject = new KLocalizedContext(engine());
0041     localizedContextObject->setTranslationDomain(QStringLiteral("kdevwelcomepage"));
0042     engine()->rootContext()->setContextObject(localizedContextObject);
0043 
0044     setResizeMode(QQuickWidget::SizeRootObjectToView);
0045 
0046     auto* helper = new UiHelper(this);
0047     rootContext()->setContextProperty(QStringLiteral("kdev"), helper);
0048     rootContext()->setContextProperty(QStringLiteral("ICore"), KDevelop::ICore::self());
0049     areaChanged(ICore::self()->uiController()->activeArea());
0050 
0051     setSource(QUrl(QStringLiteral("qrc:/qml/main.qml")));
0052     if(!errors().isEmpty()) {
0053         qWarning() << "welcomepage errors:" << errors();
0054     }
0055     connect(Core::self()->uiControllerInternal()->activeSublimeWindow(), &Sublime::MainWindow::areaChanged,
0056         this, &WelcomePageWidget::areaChanged);
0057 }
0058 
0059 void WelcomePageWidget::areaChanged(Sublime::Area* area)
0060 {
0061     rootContext()->setContextProperty(QStringLiteral("area"), area->objectName());
0062 }
0063 
0064 #include "moc_welcomepageview.cpp"