From 6f9a273d39dfec10da9c285192b00a2b1b793a13 Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 18 Mar 2024 18:39:59 +0000 Subject: [PATCH] Timeline Module Move all the timeline QML files into their own QML module. Having them all in the same location is annoying and hard to work with. --- src/CMakeLists.txt | 33 ++-------------- src/main.cpp | 3 ++ src/qml/RoomMedia.qml | 1 + src/qml/RoomSearchPage.qml | 1 + src/qml/TimelineView.qml | 1 + src/{qml => timeline}/AudioComponent.qml | 0 src/{qml => timeline}/AvatarFlow.qml | 0 src/{qml => timeline}/Bubble.qml | 0 src/timeline/CMakeLists.txt | 38 +++++++++++++++++++ src/{qml => timeline}/CodeComponent.qml | 0 src/{qml => timeline}/EncryptedComponent.qml | 0 src/{qml => timeline}/EventDelegate.qml | 0 src/{qml => timeline}/FileComponent.qml | 0 src/{qml => timeline}/ImageComponent.qml | 0 src/{qml => timeline}/ItineraryComponent.qml | 0 .../LinkPreviewComponent.qml | 2 - .../LiveLocationComponent.qml | 0 src/{qml => timeline}/LoadComponent.qml | 0 src/{qml => timeline}/LoadingDelegate.qml | 2 - src/{qml => timeline}/LocationComponent.qml | 0 .../MessageComponentChooser.qml | 0 src/{qml => timeline}/MessageDelegate.qml | 0 .../MessageEditComponent.qml | 0 src/{qml => timeline}/MimeComponent.qml | 0 src/{qml => timeline}/PollComponent.qml | 0 src/{qml => timeline}/QuoteComponent.qml | 0 src/{qml => timeline}/ReactionDelegate.qml | 0 src/{qml => timeline}/ReadMarkerDelegate.qml | 2 - src/{qml => timeline}/ReplyComponent.qml | 0 src/{qml => timeline}/SectionDelegate.qml | 1 - src/{qml => timeline}/StateComponent.qml | 2 - src/{qml => timeline}/StateDelegate.qml | 1 - src/{qml => timeline}/TextComponent.qml | 0 src/{qml => timeline}/TimelineDelegate.qml | 0 src/{qml => timeline}/TimelineEndDelegate.qml | 0 src/{qml => timeline}/VideoComponent.qml | 0 36 files changed, 47 insertions(+), 40 deletions(-) rename src/{qml => timeline}/AudioComponent.qml (100%) rename src/{qml => timeline}/AvatarFlow.qml (100%) rename src/{qml => timeline}/Bubble.qml (100%) create mode 100644 src/timeline/CMakeLists.txt rename src/{qml => timeline}/CodeComponent.qml (100%) rename src/{qml => timeline}/EncryptedComponent.qml (100%) rename src/{qml => timeline}/EventDelegate.qml (100%) rename src/{qml => timeline}/FileComponent.qml (100%) rename src/{qml => timeline}/ImageComponent.qml (100%) rename src/{qml => timeline}/ItineraryComponent.qml (100%) rename src/{qml => timeline}/LinkPreviewComponent.qml (99%) rename src/{qml => timeline}/LiveLocationComponent.qml (100%) rename src/{qml => timeline}/LoadComponent.qml (100%) rename src/{qml => timeline}/LoadingDelegate.qml (93%) rename src/{qml => timeline}/LocationComponent.qml (100%) rename src/{qml => timeline}/MessageComponentChooser.qml (100%) rename src/{qml => timeline}/MessageDelegate.qml (100%) rename src/{qml => timeline}/MessageEditComponent.qml (100%) rename src/{qml => timeline}/MimeComponent.qml (100%) rename src/{qml => timeline}/PollComponent.qml (100%) rename src/{qml => timeline}/QuoteComponent.qml (100%) rename src/{qml => timeline}/ReactionDelegate.qml (100%) rename src/{qml => timeline}/ReadMarkerDelegate.qml (98%) rename src/{qml => timeline}/ReplyComponent.qml (100%) rename src/{qml => timeline}/SectionDelegate.qml (98%) rename src/{qml => timeline}/StateComponent.qml (99%) rename src/{qml => timeline}/StateDelegate.qml (99%) rename src/{qml => timeline}/TextComponent.qml (100%) rename src/{qml => timeline}/TimelineDelegate.qml (100%) rename src/{qml => timeline}/TimelineEndDelegate.qml (100%) rename src/{qml => timeline}/VideoComponent.qml (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c0595499c..40f714448 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -213,19 +213,6 @@ qt_add_qml_module(neochat URI org.kde.neochat NO_PLUGIN qml/RoomData.qml qml/ServerData.qml qml/EmojiPicker.qml - qml/TimelineDelegate.qml - qml/ReplyComponent.qml - qml/StateDelegate.qml - qml/MessageDelegate.qml - qml/Bubble.qml - qml/SectionDelegate.qml - qml/ReactionDelegate.qml - qml/EventDelegate.qml - qml/ReadMarkerDelegate.qml - qml/MimeComponent.qml - qml/StateComponent.qml - qml/MessageEditComponent.qml - qml/AvatarFlow.qml qml/LoginStep.qml qml/Login.qml qml/Homeserver.qml @@ -310,24 +297,10 @@ qt_add_qml_module(neochat URI org.kde.neochat NO_PLUGIN qml/SelectSpacesDialog.qml qml/AttachDialog.qml qml/NotificationsView.qml - qml/LoadingDelegate.qml - qml/TimelineEndDelegate.qml qml/SearchPage.qml qml/ServerComboBox.qml qml/UserSearchPage.qml qml/ManualUserDialog.qml - qml/MessageComponentChooser.qml - qml/TextComponent.qml - qml/ImageComponent.qml - qml/VideoComponent.qml - qml/AudioComponent.qml - qml/EncryptedComponent.qml - qml/FileComponent.qml - qml/LocationComponent.qml - qml/LiveLocationComponent.qml - qml/PollComponent.qml - qml/LinkPreviewComponent.qml - qml/LoadComponent.qml qml/RecommendedSpaceDialog.qml qml/RoomTreeSection.qml qml/DelegateContextMenu.qml @@ -336,14 +309,13 @@ qt_add_qml_module(neochat URI org.kde.neochat NO_PLUGIN qml/IgnoredUsersDialog.qml qml/AccountData.qml qml/StateKeys.qml - qml/CodeComponent.qml - qml/QuoteComponent.qml - qml/ItineraryComponent.qml RESOURCES qml/confetti.png qml/glowdot.png ) +add_subdirectory(timeline) + if(UNIX) qt_target_qml_sources(neochat QML_FILES qml/ShareAction.qml) else() @@ -434,6 +406,7 @@ if (NOT ANDROID AND NOT WIN32 AND NOT APPLE) endif() target_include_directories(neochat PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/models ${CMAKE_CURRENT_SOURCE_DIR}/enums) +target_link_libraries(neochat PRIVATE timelineplugin) target_link_libraries(neochat PUBLIC Qt::Core Qt::Quick diff --git a/src/main.cpp b/src/main.cpp index ef29b6e01..77c4c0efa 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #ifdef Q_OS_ANDROID #include @@ -222,6 +223,8 @@ int main(int argc, char *argv[]) KDBusService service(KDBusService::Unique); #endif + Q_IMPORT_QML_PLUGIN(org_kde_neochat_timelinePlugin) + 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()); diff --git a/src/qml/RoomMedia.qml b/src/qml/RoomMedia.qml index 7a54e1e15..04999c489 100644 --- a/src/qml/RoomMedia.qml +++ b/src/qml/RoomMedia.qml @@ -7,6 +7,7 @@ import QtQuick.Layouts import Qt.labs.qmlmodels import org.kde.neochat +import org.kde.neochat.timeline /** * @brief Component for visualising the loaded media items in the room. diff --git a/src/qml/RoomSearchPage.qml b/src/qml/RoomSearchPage.qml index bd77be7ca..24abc3b08 100644 --- a/src/qml/RoomSearchPage.qml +++ b/src/qml/RoomSearchPage.qml @@ -4,6 +4,7 @@ import QtQuick import org.kde.neochat +import org.kde.neochat.timeline /** * @brief Component for finding messages in a room. diff --git a/src/qml/TimelineView.qml b/src/qml/TimelineView.qml index 90cebd505..c7117db95 100644 --- a/src/qml/TimelineView.qml +++ b/src/qml/TimelineView.qml @@ -13,6 +13,7 @@ import org.kde.kitemmodels import org.kde.neochat import org.kde.neochat.config +import org.kde.neochat.timeline QQC2.ScrollView { id: root diff --git a/src/qml/AudioComponent.qml b/src/timeline/AudioComponent.qml similarity index 100% rename from src/qml/AudioComponent.qml rename to src/timeline/AudioComponent.qml diff --git a/src/qml/AvatarFlow.qml b/src/timeline/AvatarFlow.qml similarity index 100% rename from src/qml/AvatarFlow.qml rename to src/timeline/AvatarFlow.qml diff --git a/src/qml/Bubble.qml b/src/timeline/Bubble.qml similarity index 100% rename from src/qml/Bubble.qml rename to src/timeline/Bubble.qml diff --git a/src/timeline/CMakeLists.txt b/src/timeline/CMakeLists.txt new file mode 100644 index 000000000..f714e0275 --- /dev/null +++ b/src/timeline/CMakeLists.txt @@ -0,0 +1,38 @@ +# SPDX-FileCopyrightText: 2024 James Graham +# SPDX-License-Identifier: BSD-2-Clause + +qt_add_library(timeline STATIC) +qt_add_qml_module(timeline + URI org.kde.neochat.timeline + QML_FILES + EventDelegate.qml + TimelineDelegate.qml + MessageDelegate.qml + LoadingDelegate.qml + ReadMarkerDelegate.qml + StateDelegate.qml + TimelineEndDelegate.qml + Bubble.qml + AvatarFlow.qml + ReactionDelegate.qml + SectionDelegate.qml + MessageComponentChooser.qml + AudioComponent.qml + CodeComponent.qml + EncryptedComponent.qml + FileComponent.qml + ImageComponent.qml + ItineraryComponent.qml + LinkPreviewComponent.qml + LiveLocationComponent.qml + LoadComponent.qml + LocationComponent.qml + MessageEditComponent.qml + MimeComponent.qml + PollComponent.qml + QuoteComponent.qml + ReplyComponent.qml + StateComponent.qml + TextComponent.qml + VideoComponent.qml +) diff --git a/src/qml/CodeComponent.qml b/src/timeline/CodeComponent.qml similarity index 100% rename from src/qml/CodeComponent.qml rename to src/timeline/CodeComponent.qml diff --git a/src/qml/EncryptedComponent.qml b/src/timeline/EncryptedComponent.qml similarity index 100% rename from src/qml/EncryptedComponent.qml rename to src/timeline/EncryptedComponent.qml diff --git a/src/qml/EventDelegate.qml b/src/timeline/EventDelegate.qml similarity index 100% rename from src/qml/EventDelegate.qml rename to src/timeline/EventDelegate.qml diff --git a/src/qml/FileComponent.qml b/src/timeline/FileComponent.qml similarity index 100% rename from src/qml/FileComponent.qml rename to src/timeline/FileComponent.qml diff --git a/src/qml/ImageComponent.qml b/src/timeline/ImageComponent.qml similarity index 100% rename from src/qml/ImageComponent.qml rename to src/timeline/ImageComponent.qml diff --git a/src/qml/ItineraryComponent.qml b/src/timeline/ItineraryComponent.qml similarity index 100% rename from src/qml/ItineraryComponent.qml rename to src/timeline/ItineraryComponent.qml diff --git a/src/qml/LinkPreviewComponent.qml b/src/timeline/LinkPreviewComponent.qml similarity index 99% rename from src/qml/LinkPreviewComponent.qml rename to src/timeline/LinkPreviewComponent.qml index a6971998e..4d1af45d5 100644 --- a/src/qml/LinkPreviewComponent.qml +++ b/src/timeline/LinkPreviewComponent.qml @@ -8,8 +8,6 @@ import QtQuick.Layouts import org.kde.kirigami as Kirigami -import org.kde.neochat - /** * @brief A component to show a link preview from a message. */ diff --git a/src/qml/LiveLocationComponent.qml b/src/timeline/LiveLocationComponent.qml similarity index 100% rename from src/qml/LiveLocationComponent.qml rename to src/timeline/LiveLocationComponent.qml diff --git a/src/qml/LoadComponent.qml b/src/timeline/LoadComponent.qml similarity index 100% rename from src/qml/LoadComponent.qml rename to src/timeline/LoadComponent.qml diff --git a/src/qml/LoadingDelegate.qml b/src/timeline/LoadingDelegate.qml similarity index 93% rename from src/qml/LoadingDelegate.qml rename to src/timeline/LoadingDelegate.qml index 2bb94631a..d8e7f8d17 100644 --- a/src/qml/LoadingDelegate.qml +++ b/src/timeline/LoadingDelegate.qml @@ -5,8 +5,6 @@ import QtQuick import org.kde.kirigami as Kirigami -import org.kde.neochat - TimelineDelegate { id: root contentItem: Kirigami.PlaceholderMessage { diff --git a/src/qml/LocationComponent.qml b/src/timeline/LocationComponent.qml similarity index 100% rename from src/qml/LocationComponent.qml rename to src/timeline/LocationComponent.qml diff --git a/src/qml/MessageComponentChooser.qml b/src/timeline/MessageComponentChooser.qml similarity index 100% rename from src/qml/MessageComponentChooser.qml rename to src/timeline/MessageComponentChooser.qml diff --git a/src/qml/MessageDelegate.qml b/src/timeline/MessageDelegate.qml similarity index 100% rename from src/qml/MessageDelegate.qml rename to src/timeline/MessageDelegate.qml diff --git a/src/qml/MessageEditComponent.qml b/src/timeline/MessageEditComponent.qml similarity index 100% rename from src/qml/MessageEditComponent.qml rename to src/timeline/MessageEditComponent.qml diff --git a/src/qml/MimeComponent.qml b/src/timeline/MimeComponent.qml similarity index 100% rename from src/qml/MimeComponent.qml rename to src/timeline/MimeComponent.qml diff --git a/src/qml/PollComponent.qml b/src/timeline/PollComponent.qml similarity index 100% rename from src/qml/PollComponent.qml rename to src/timeline/PollComponent.qml diff --git a/src/qml/QuoteComponent.qml b/src/timeline/QuoteComponent.qml similarity index 100% rename from src/qml/QuoteComponent.qml rename to src/timeline/QuoteComponent.qml diff --git a/src/qml/ReactionDelegate.qml b/src/timeline/ReactionDelegate.qml similarity index 100% rename from src/qml/ReactionDelegate.qml rename to src/timeline/ReactionDelegate.qml diff --git a/src/qml/ReadMarkerDelegate.qml b/src/timeline/ReadMarkerDelegate.qml similarity index 98% rename from src/qml/ReadMarkerDelegate.qml rename to src/timeline/ReadMarkerDelegate.qml index 26c88bf96..c3c29c008 100644 --- a/src/qml/ReadMarkerDelegate.qml +++ b/src/timeline/ReadMarkerDelegate.qml @@ -8,8 +8,6 @@ import QtQuick.Layouts import Qt.labs.qmlmodels import org.kde.kirigami as Kirigami -import org.kde.neochat - TimelineDelegate { id: root contentItem: QQC2.ItemDelegate { diff --git a/src/qml/ReplyComponent.qml b/src/timeline/ReplyComponent.qml similarity index 100% rename from src/qml/ReplyComponent.qml rename to src/timeline/ReplyComponent.qml diff --git a/src/qml/SectionDelegate.qml b/src/timeline/SectionDelegate.qml similarity index 98% rename from src/qml/SectionDelegate.qml rename to src/timeline/SectionDelegate.qml index bf219ba85..41da284c6 100644 --- a/src/qml/SectionDelegate.qml +++ b/src/timeline/SectionDelegate.qml @@ -8,7 +8,6 @@ import QtQuick.Layouts import org.kde.kirigami as Kirigami -import org.kde.neochat import org.kde.neochat.config QQC2.ItemDelegate { diff --git a/src/qml/StateComponent.qml b/src/timeline/StateComponent.qml similarity index 99% rename from src/qml/StateComponent.qml rename to src/timeline/StateComponent.qml index ccc433b7c..6d285892b 100644 --- a/src/qml/StateComponent.qml +++ b/src/timeline/StateComponent.qml @@ -8,8 +8,6 @@ import QtQuick.Layouts import org.kde.kirigami as Kirigami import org.kde.kirigamiaddons.labs.components as KirigamiComponents -import org.kde.neochat - /** * @brief A component for visualising a single state event */ diff --git a/src/qml/StateDelegate.qml b/src/timeline/StateDelegate.qml similarity index 99% rename from src/qml/StateDelegate.qml rename to src/timeline/StateDelegate.qml index 4d7e37df4..be1be8dd9 100644 --- a/src/qml/StateDelegate.qml +++ b/src/timeline/StateDelegate.qml @@ -8,7 +8,6 @@ import QtQuick.Layouts import org.kde.kirigami as Kirigami import org.kde.kirigamiaddons.labs.components as KirigamiComponents -import org.kde.neochat import org.kde.neochat.config /** diff --git a/src/qml/TextComponent.qml b/src/timeline/TextComponent.qml similarity index 100% rename from src/qml/TextComponent.qml rename to src/timeline/TextComponent.qml diff --git a/src/qml/TimelineDelegate.qml b/src/timeline/TimelineDelegate.qml similarity index 100% rename from src/qml/TimelineDelegate.qml rename to src/timeline/TimelineDelegate.qml diff --git a/src/qml/TimelineEndDelegate.qml b/src/timeline/TimelineEndDelegate.qml similarity index 100% rename from src/qml/TimelineEndDelegate.qml rename to src/timeline/TimelineEndDelegate.qml diff --git a/src/qml/VideoComponent.qml b/src/timeline/VideoComponent.qml similarity index 100% rename from src/qml/VideoComponent.qml rename to src/timeline/VideoComponent.qml