Use declarative type registration for remaining types

This commit is contained in:
Tobias Fella
2024-04-10 20:47:29 +02:00
parent c344a3ee55
commit 3c4c538de8
41 changed files with 62 additions and 62 deletions

1
.gitignore vendored
View File

@@ -12,3 +12,4 @@ kate.project.ctags.*
.idea/ .idea/
cmake-build-* cmake-build-*
src/res.generated.qrc src/res.generated.qrc
.qmlls.ini

View File

@@ -174,6 +174,7 @@ add_library(neochat STATIC
sharehandler.h sharehandler.h
models/roomtreeitem.cpp models/roomtreeitem.cpp
models/roomtreeitem.h models/roomtreeitem.h
foreigntypes.h
) )
set_source_files_properties(qml/OsmLocationPlugin.qml PROPERTIES set_source_files_properties(qml/OsmLocationPlugin.qml PROPERTIES

View File

@@ -7,8 +7,6 @@ import QtQuick.Layouts
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard as FormCard import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.neochat.config
FormCard.FormCardPage { FormCard.FormCardPage {
id: root id: root

56
src/foreigntypes.h Normal file
View File

@@ -0,0 +1,56 @@
// SPDX-FileCopyrightText: 2024 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
#pragma once
#include <QQmlEngine>
#include <Quotient/accountregistry.h>
#include <Quotient/keyverificationsession.h>
#if __has_include("Quotient/e2ee/sssshandler.h")
#include <Quotient/e2ee/sssshandler.h>
#endif
#include "controller.h"
#include "neochatconfig.h"
struct ForeignConfig {
Q_GADGET
QML_FOREIGN(NeoChatConfig)
QML_NAMED_ELEMENT(Config)
QML_SINGLETON
public:
static NeoChatConfig *create(QQmlEngine *, QJSEngine *)
{
QQmlEngine::setObjectOwnership(NeoChatConfig::self(), QQmlEngine::CppOwnership);
return NeoChatConfig::self();
}
};
struct ForeignAccountRegistry {
Q_GADGET
QML_FOREIGN(Quotient::AccountRegistry)
QML_NAMED_ELEMENT(AccountRegistry)
QML_SINGLETON
public:
static Quotient::AccountRegistry *create(QQmlEngine *, QJSEngine *)
{
QQmlEngine::setObjectOwnership(&Controller::instance().accounts(), QQmlEngine::CppOwnership);
return &Controller::instance().accounts();
}
};
struct ForeignKeyVerificationSession {
Q_GADGET
QML_FOREIGN(Quotient::KeyVerificationSession)
QML_NAMED_ELEMENT(KeyVerificationSession)
QML_UNCREATABLE("")
};
#if __has_include("Quotient/e2ee/sssshandler.h")
struct ForeignSSSSHandler {
Q_GADGET
QML_FOREIGN(Quotient::SSSSHandler)
QML_NAMED_ELEMENT(SSSSHandler)
};
#endif

View File

@@ -10,7 +10,6 @@ import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.settings import org.kde.neochat.settings
import org.kde.neochat.accounts
FormCard.FormCardPage { FormCard.FormCardPage {
id: root id: root

View File

@@ -35,11 +35,6 @@
#include "neochat-version.h" #include "neochat-version.h"
#include <Quotient/accountregistry.h>
#if __has_include("Quotient/e2ee/sssshandler.h")
#include <Quotient/e2ee/sssshandler.h>
#endif
#include <Quotient/keyverificationsession.h>
#include <Quotient/networkaccessmanager.h> #include <Quotient/networkaccessmanager.h>
#include "blurhashimageprovider.h" #include "blurhashimageprovider.h"
@@ -234,13 +229,6 @@ int main(int argc, char *argv[])
Q_IMPORT_QML_PLUGIN(org_kde_neochat_loginPlugin) Q_IMPORT_QML_PLUGIN(org_kde_neochat_loginPlugin)
qml_register_types_org_kde_neochat(); qml_register_types_org_kde_neochat();
qmlRegisterSingletonInstance("org.kde.neochat.config", 1, 0, "Config", NeoChatConfig::self());
qmlRegisterSingletonInstance("org.kde.neochat.accounts", 1, 0, "AccountRegistry", &Controller::instance().accounts());
qmlRegisterUncreatableType<KeyVerificationSession>("com.github.quotient_im.libquotient", 1, 0, "KeyVerificationSession", {});
#if __has_include("Quotient/e2ee/sssshandler.h")
qmlRegisterType<SSSSHandler>("com.github.quotient_im.libquotient", 1, 0, "SSSSHandler");
#endif
QQmlApplicationEngine engine; QQmlApplicationEngine engine;

View File

@@ -10,7 +10,6 @@ import org.kde.kirigami as Kirigami
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.settings import org.kde.neochat.settings
import org.kde.neochat.devtools import org.kde.neochat.devtools
import org.kde.neochat.config
QQC2.Menu { QQC2.Menu {
id: root id: root

View File

@@ -10,7 +10,6 @@ import org.kde.kirigamiaddons.labs.components as KirigamiComponents
import org.kde.kirigamiaddons.delegates as Delegates import org.kde.kirigamiaddons.delegates as Delegates
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.accounts
Kirigami.Dialog { Kirigami.Dialog {
id: root id: root

View File

@@ -9,7 +9,6 @@ import QtQuick.Layouts
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
/** /**
* @brief A component for typing and sending chat messages. * @brief A component for typing and sending chat messages.

View File

@@ -11,7 +11,6 @@ import org.kde.kirigamiaddons.labs.components as KirigamiComponents
import org.kde.kitemmodels import org.kde.kitemmodels
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
QQC2.ItemDelegate { QQC2.ItemDelegate {
id: root id: root

View File

@@ -10,7 +10,6 @@ import org.kde.kirigamiaddons.components as KirigamiComponents
import org.kde.kirigamiaddons.formcard as FormCard import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
/** /**
* @brief The base menu for most message types. * @brief The base menu for most message types.

View File

@@ -5,8 +5,6 @@ import QtQuick
import QtQuick.Controls as QQC2 import QtQuick.Controls as QQC2
import QtQml import QtQml
import com.github.quotient_im.libquotient
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.neochat import org.kde.neochat

View File

@@ -8,7 +8,6 @@ import Qt.labs.platform
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
/** /**
* @brief The menu for media messages. * @brief The menu for media messages.

View File

@@ -9,8 +9,6 @@ import QtQuick.Layouts
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.settings import org.kde.neochat.settings
import org.kde.neochat.config
import org.kde.neochat.accounts
Labs.MenuBar { Labs.MenuBar {
id: root id: root

View File

@@ -7,7 +7,6 @@ import QtQuick.Layouts
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
/** /**
* @brief A component that provides a set of actions when a message is hovered in the timeline. * @brief A component that provides a set of actions when a message is hovered in the timeline.

View File

@@ -6,8 +6,6 @@ import QtQuick.Controls as QQC2
import QtQuick.Layouts import QtQuick.Layouts
import QtQml import QtQml
import com.github.quotient_im.libquotient
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.delegates as Delegates import org.kde.kirigamiaddons.delegates as Delegates
import org.kde.neochat import org.kde.neochat

View File

@@ -10,8 +10,6 @@ import org.kde.kirigami as Kirigami
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.login import org.kde.neochat.login
import org.kde.neochat.settings import org.kde.neochat.settings
import org.kde.neochat.config
import org.kde.neochat.accounts
Kirigami.ApplicationWindow { Kirigami.ApplicationWindow {
id: root id: root

View File

@@ -10,7 +10,6 @@ import org.kde.kirigamiaddons.components as KirigamiComponents
import org.kde.kirigamiaddons.formcard as FormCard import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
/** /**
* @brief The menu for normal messages. * @brief The menu for normal messages.

View File

@@ -10,7 +10,6 @@ import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.labs.components as Components import org.kde.kirigamiaddons.labs.components as Components
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
Components.AlbumMaximizeComponent { Components.AlbumMaximizeComponent {
id: root id: root

View File

@@ -12,7 +12,6 @@ import org.kde.kirigamiaddons.labs.components as Components
import org.kde.kitemmodels import org.kde.kitemmodels
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
Delegates.RoundedItemDelegate { Delegates.RoundedItemDelegate {
id: root id: root

View File

@@ -11,7 +11,6 @@ import org.kde.kitemmodels
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.settings import org.kde.neochat.settings
import org.kde.neochat.config
Kirigami.OverlayDrawer { Kirigami.OverlayDrawer {
id: root id: root

View File

@@ -11,7 +11,6 @@ import org.kde.kirigamiaddons.labs.components as KirigamiComponents
import org.kde.kitemmodels import org.kde.kitemmodels
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
/** /**
* @brief Component for visualising the room information. * @brief Component for visualising the room information.

View File

@@ -13,8 +13,6 @@ import org.kde.kirigamiaddons.components as KirigamiComponents
import org.kde.kirigamiaddons.delegates as Delegates import org.kde.kirigamiaddons.delegates as Delegates
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
import org.kde.neochat.accounts
Kirigami.Page { Kirigami.Page {
id: root id: root

View File

@@ -12,7 +12,6 @@ import org.kde.kirigami as Kirigami
import org.kde.kitemmodels import org.kde.kitemmodels
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
Kirigami.Page { Kirigami.Page {
id: root id: root

View File

@@ -12,7 +12,6 @@ import org.kde.kirigami as Kirigami
import org.kde.kitemmodels import org.kde.kitemmodels
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
import org.kde.neochat.timeline import org.kde.neochat.timeline
QQC2.ScrollView { QQC2.ScrollView {

View File

@@ -9,8 +9,6 @@ import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard as FormCard import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.kirigamiaddons.labs.components as KirigamiComponents import org.kde.kirigamiaddons.labs.components as KirigamiComponents
import com.github.quotient_im.libquotient
import org.kde.neochat import org.kde.neochat
FormCard.FormCardPage { FormCard.FormCardPage {

View File

@@ -10,8 +10,6 @@ import org.kde.kirigamiaddons.delegates as Delegates
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.settings import org.kde.neochat.settings
import org.kde.neochat.config
import org.kde.neochat.accounts
RowLayout { RowLayout {
id: root id: root

View File

@@ -4,8 +4,6 @@
import QtQuick import QtQuick
import QtQml import QtQml
import com.github.quotient_im.libquotient
import org.kde.neochat import org.kde.neochat
Message { Message {

View File

@@ -2,12 +2,8 @@
// SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu> // SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu>
// SPDX-License-Identifier: LGPL-2.0-or-later // SPDX-License-Identifier: LGPL-2.0-or-later
import QtQuick.Layouts
import org.kde.kirigamiaddons.formcard as FormCard import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.neochat
import org.kde.coreaddons
FormCard.AboutPage { FormCard.AboutPage {
title: i18nc("@title:window", "About NeoChat") title: i18nc("@title:window", "About NeoChat")
aboutData: AboutData
} }

View File

@@ -12,7 +12,6 @@ import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.kirigamiaddons.labs.components as KirigamiComponents import org.kde.kirigamiaddons.labs.components as KirigamiComponents
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.accounts
FormCard.FormCardPage { FormCard.FormCardPage {
id: root id: root

View File

@@ -11,7 +11,6 @@ import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.kirigamiaddons.labs.components as KirigamiComponents import org.kde.kirigamiaddons.labs.components as KirigamiComponents
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
FormCard.FormCardPage { FormCard.FormCardPage {
id: root id: root

View File

@@ -7,7 +7,6 @@ import QtQuick.Layouts
import org.kde.kirigamiaddons.formcard as FormCard import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
FormCard.FormComboBoxDelegate { FormCard.FormComboBoxDelegate {
id: root id: root

View File

@@ -10,7 +10,6 @@ import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.devtools import org.kde.neochat.devtools
import org.kde.neochat.config
FormCard.FormCardPage { FormCard.FormCardPage {
title: i18nc("@title:window", "General") title: i18nc("@title:window", "General")

View File

@@ -7,8 +7,6 @@ import QtQuick.Layouts
import org.kde.kirigamiaddons.formcard as FormCard import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.neochat.config
FormCard.FormCardPage { FormCard.FormCardPage {
id: root id: root

View File

@@ -9,7 +9,6 @@ import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard as FormCard import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.kirigamiaddons.delegates as Delegates import org.kde.kirigamiaddons.delegates as Delegates
import org.kde.kirigamiaddons.labs.components as KirigamiComponents import org.kde.kirigamiaddons.labs.components as KirigamiComponents
import org.kde.kitemmodels
import org.kde.neochat import org.kde.neochat

View File

@@ -12,7 +12,6 @@ import org.kde.coreaddons
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
/** /**
* @brief A component to show a file from a message. * @brief A component to show a file from a message.

View File

@@ -10,7 +10,6 @@ import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.components as KirigamiComponents import org.kde.kirigamiaddons.components as KirigamiComponents
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
/** /**
* @brief The base delegate for all messages in the timeline. * @brief The base delegate for all messages in the timeline.

View File

@@ -6,7 +6,8 @@ import QtQuick
import QtQuick.Controls as QQC2 import QtQuick.Controls as QQC2
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.neochat.config
import org.kde.neochat
Flow { Flow {
id: root id: root

View File

@@ -8,7 +8,7 @@ import QtQuick.Layouts
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.neochat.config import org.kde.neochat
QQC2.ItemDelegate { QQC2.ItemDelegate {
id: root id: root

View File

@@ -8,7 +8,7 @@ import QtQuick.Layouts
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.labs.components as KirigamiComponents import org.kde.kirigamiaddons.labs.components as KirigamiComponents
import org.kde.neochat.config import org.kde.neochat
/** /**
* @brief A timeline delegate for visualising an aggregated list of consecutive state events. * @brief A timeline delegate for visualising an aggregated list of consecutive state events.

View File

@@ -6,7 +6,6 @@ import QtQuick
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.neochat import org.kde.neochat
import org.kde.neochat.config
/** /**
* @brief The base Item for all delegates in the timeline. * @brief The base Item for all delegates in the timeline.