From f6e8491bf126b12f06f3bb5431c9e12b9889abe8 Mon Sep 17 00:00:00 2001 From: James Graham Date: Sun, 29 Jun 2025 12:43:48 +0100 Subject: [PATCH] Split message content into its own module This is laying some groundwork for the rich text chatbar. --- src/CMakeLists.txt | 1 + src/app/CMakeLists.txt | 4 +- src/app/main.cpp | 7 -- .../AudioComponent.qml | 0 .../AuthorComponent.qml | 0 .../BaseMessageComponentChooser.qml | 0 src/messagecontent/CMakeLists.txt | 107 ++++++++++++++++++ .../ChatBarComponent.qml | 0 .../CodeComponent.qml | 0 .../EncryptedComponent.qml | 0 .../FetchButtonComponent.qml | 0 .../FileComponent.qml | 0 .../FlightReservationComponent.qml | 0 .../FoodReservationComponent.qml | 0 .../HotelReservationComponent.qml | 0 .../ImageComponent.qml | 0 .../ItineraryComponent.qml | 0 .../ItineraryReservationComponent.qml | 0 .../JourneySectionStopDelegateLineSegment.qml | 0 .../LinkPreviewComponent.qml | 0 .../LinkPreviewLoadComponent.qml | 0 .../LiveLocationComponent.qml | 0 .../LoadComponent.qml | 0 .../LocationComponent.qml | 0 .../MessageComponentChooser.qml | 0 .../MimeComponent.qml | 0 .../PdfPreviewComponent.qml | 0 .../PollComponent.qml | 0 .../QuoteComponent.qml | 0 .../ReactionComponent.qml | 0 .../ReplyAuthorComponent.qml | 0 .../ReplyButtonComponent.qml | 0 .../ReplyComponent.qml | 0 .../ReplyMessageComponentChooser.qml | 0 .../StateComponent.qml | 0 .../TextComponent.qml | 0 .../ThreadBodyComponent.qml | 0 .../TrainReservationComponent.qml | 0 .../TransportIcon.qml | 0 .../VideoComponent.qml | 0 .../config-neochat.h.in | 0 .../contentprovider.cpp | 0 .../contentprovider.h | 0 .../images/bike.svg | 0 .../images/bike.svg.license | 0 .../images/bus.svg | 0 .../images/bus.svg.license | 0 .../images/cablecar.svg | 0 .../images/cablecar.svg.license | 0 .../images/car.svg | 0 .../images/car.svg.license | 0 .../images/coach.svg | 0 .../images/coach.svg.license | 0 .../images/couchettecar.svg | 0 .../images/couchettecar.svg.license | 0 .../images/elevator.svg | 0 .../images/elevator.svg.license | 0 .../images/escalator.svg | 0 .../images/escalator.svg.license | 0 .../images/ferry.svg | 0 .../images/ferry.svg.license | 0 .../images/flight.svg | 0 .../images/flight.svg.license | 0 .../images/foodestablishment.svg | 0 .../images/foodestablishment.svg.license | 0 .../images/funicular.svg | 0 .../images/funicular.svg.license | 0 .../images/longdistancetrain.svg | 0 .../images/longdistancetrain.svg.license | 0 .../images/rapidtransit.svg | 0 .../images/rapidtransit.svg.license | 0 .../images/seat.svg | 0 .../images/seat.svg.license | 0 .../images/shuttle.svg | 0 .../images/shuttle.svg.license | 0 .../images/sleepingcar.svg | 0 .../images/sleepingcar.svg.license | 0 .../images/stairs.svg | 0 .../images/stairs.svg.license | 0 .../images/subway.svg | 0 .../images/subway.svg.license | 0 .../images/taxi.svg | 0 .../images/taxi.svg.license | 0 .../images/train.svg | 0 .../images/train.svg.license | 0 .../images/tramway.svg | 0 .../images/tramway.svg.license | 0 .../images/transfer.svg | 0 .../images/transfer.svg.license | 0 .../images/wait.svg | 0 .../images/wait.svg.license | 0 .../images/walk.svg | 0 .../images/walk.svg.license | 0 .../mediasizehelper.cpp | 0 .../mediasizehelper.h | 0 .../models/itinerarymodel.cpp | 0 .../models/itinerarymodel.h | 0 .../models/linemodel.cpp | 0 .../models/linemodel.h | 0 .../models/messagecontentmodel.cpp | 0 .../models/messagecontentmodel.h | 0 .../models/pollanswermodel.cpp | 0 .../models/pollanswermodel.h | 0 .../models/reactionmodel.cpp | 0 .../models/reactionmodel.h | 0 .../models/threadmodel.cpp | 0 .../models/threadmodel.h | 0 .../pollhandler.cpp | 0 .../pollhandler.h | 0 src/roominfo/CMakeLists.txt | 6 + src/{timeline => roominfo}/locationhelper.cpp | 0 src/{timeline => roominfo}/locationhelper.h | 2 +- src/timeline/CMakeLists.txt | 90 +-------------- src/timeline/messageattached.h | 2 +- src/timeline/models/messagemodel.h | 3 - src/timeline/models/readmarkermodel.cpp | 2 +- src/timeline/models/timelinemessagemodel.h | 2 - 117 files changed, 122 insertions(+), 104 deletions(-) rename src/{timeline => messagecontent}/AudioComponent.qml (100%) rename src/{timeline => messagecontent}/AuthorComponent.qml (100%) rename src/{timeline => messagecontent}/BaseMessageComponentChooser.qml (100%) create mode 100644 src/messagecontent/CMakeLists.txt rename src/{timeline => messagecontent}/ChatBarComponent.qml (100%) rename src/{timeline => messagecontent}/CodeComponent.qml (100%) rename src/{timeline => messagecontent}/EncryptedComponent.qml (100%) rename src/{timeline => messagecontent}/FetchButtonComponent.qml (100%) rename src/{timeline => messagecontent}/FileComponent.qml (100%) rename src/{timeline => messagecontent}/FlightReservationComponent.qml (100%) rename src/{timeline => messagecontent}/FoodReservationComponent.qml (100%) rename src/{timeline => messagecontent}/HotelReservationComponent.qml (100%) rename src/{timeline => messagecontent}/ImageComponent.qml (100%) rename src/{timeline => messagecontent}/ItineraryComponent.qml (100%) rename src/{timeline => messagecontent}/ItineraryReservationComponent.qml (100%) rename src/{timeline => messagecontent}/JourneySectionStopDelegateLineSegment.qml (100%) rename src/{timeline => messagecontent}/LinkPreviewComponent.qml (100%) rename src/{timeline => messagecontent}/LinkPreviewLoadComponent.qml (100%) rename src/{timeline => messagecontent}/LiveLocationComponent.qml (100%) rename src/{timeline => messagecontent}/LoadComponent.qml (100%) rename src/{timeline => messagecontent}/LocationComponent.qml (100%) rename src/{timeline => messagecontent}/MessageComponentChooser.qml (100%) rename src/{timeline => messagecontent}/MimeComponent.qml (100%) rename src/{timeline => messagecontent}/PdfPreviewComponent.qml (100%) rename src/{timeline => messagecontent}/PollComponent.qml (100%) rename src/{timeline => messagecontent}/QuoteComponent.qml (100%) rename src/{timeline => messagecontent}/ReactionComponent.qml (100%) rename src/{timeline => messagecontent}/ReplyAuthorComponent.qml (100%) rename src/{timeline => messagecontent}/ReplyButtonComponent.qml (100%) rename src/{timeline => messagecontent}/ReplyComponent.qml (100%) rename src/{timeline => messagecontent}/ReplyMessageComponentChooser.qml (100%) rename src/{timeline => messagecontent}/StateComponent.qml (100%) rename src/{timeline => messagecontent}/TextComponent.qml (100%) rename src/{timeline => messagecontent}/ThreadBodyComponent.qml (100%) rename src/{timeline => messagecontent}/TrainReservationComponent.qml (100%) rename src/{timeline => messagecontent}/TransportIcon.qml (100%) rename src/{timeline => messagecontent}/VideoComponent.qml (100%) rename src/{timeline => messagecontent}/config-neochat.h.in (100%) rename src/{timeline => messagecontent}/contentprovider.cpp (100%) rename src/{timeline => messagecontent}/contentprovider.h (100%) rename src/{timeline => messagecontent}/images/bike.svg (100%) rename src/{timeline => messagecontent}/images/bike.svg.license (100%) rename src/{timeline => messagecontent}/images/bus.svg (100%) rename src/{timeline => messagecontent}/images/bus.svg.license (100%) rename src/{timeline => messagecontent}/images/cablecar.svg (100%) rename src/{timeline => messagecontent}/images/cablecar.svg.license (100%) rename src/{timeline => messagecontent}/images/car.svg (100%) rename src/{timeline => messagecontent}/images/car.svg.license (100%) rename src/{timeline => messagecontent}/images/coach.svg (100%) rename src/{timeline => messagecontent}/images/coach.svg.license (100%) rename src/{timeline => messagecontent}/images/couchettecar.svg (100%) rename src/{timeline => messagecontent}/images/couchettecar.svg.license (100%) rename src/{timeline => messagecontent}/images/elevator.svg (100%) rename src/{timeline => messagecontent}/images/elevator.svg.license (100%) rename src/{timeline => messagecontent}/images/escalator.svg (100%) rename src/{timeline => messagecontent}/images/escalator.svg.license (100%) rename src/{timeline => messagecontent}/images/ferry.svg (100%) rename src/{timeline => messagecontent}/images/ferry.svg.license (100%) rename src/{timeline => messagecontent}/images/flight.svg (100%) rename src/{timeline => messagecontent}/images/flight.svg.license (100%) rename src/{timeline => messagecontent}/images/foodestablishment.svg (100%) rename src/{timeline => messagecontent}/images/foodestablishment.svg.license (100%) rename src/{timeline => messagecontent}/images/funicular.svg (100%) rename src/{timeline => messagecontent}/images/funicular.svg.license (100%) rename src/{timeline => messagecontent}/images/longdistancetrain.svg (100%) rename src/{timeline => messagecontent}/images/longdistancetrain.svg.license (100%) rename src/{timeline => messagecontent}/images/rapidtransit.svg (100%) rename src/{timeline => messagecontent}/images/rapidtransit.svg.license (100%) rename src/{timeline => messagecontent}/images/seat.svg (100%) rename src/{timeline => messagecontent}/images/seat.svg.license (100%) rename src/{timeline => messagecontent}/images/shuttle.svg (100%) rename src/{timeline => messagecontent}/images/shuttle.svg.license (100%) rename src/{timeline => messagecontent}/images/sleepingcar.svg (100%) rename src/{timeline => messagecontent}/images/sleepingcar.svg.license (100%) rename src/{timeline => messagecontent}/images/stairs.svg (100%) rename src/{timeline => messagecontent}/images/stairs.svg.license (100%) rename src/{timeline => messagecontent}/images/subway.svg (100%) rename src/{timeline => messagecontent}/images/subway.svg.license (100%) rename src/{timeline => messagecontent}/images/taxi.svg (100%) rename src/{timeline => messagecontent}/images/taxi.svg.license (100%) rename src/{timeline => messagecontent}/images/train.svg (100%) rename src/{timeline => messagecontent}/images/train.svg.license (100%) rename src/{timeline => messagecontent}/images/tramway.svg (100%) rename src/{timeline => messagecontent}/images/tramway.svg.license (100%) rename src/{timeline => messagecontent}/images/transfer.svg (100%) rename src/{timeline => messagecontent}/images/transfer.svg.license (100%) rename src/{timeline => messagecontent}/images/wait.svg (100%) rename src/{timeline => messagecontent}/images/wait.svg.license (100%) rename src/{timeline => messagecontent}/images/walk.svg (100%) rename src/{timeline => messagecontent}/images/walk.svg.license (100%) rename src/{timeline => messagecontent}/mediasizehelper.cpp (100%) rename src/{timeline => messagecontent}/mediasizehelper.h (100%) rename src/{timeline => messagecontent}/models/itinerarymodel.cpp (100%) rename src/{timeline => messagecontent}/models/itinerarymodel.h (100%) rename src/{timeline => messagecontent}/models/linemodel.cpp (100%) rename src/{timeline => messagecontent}/models/linemodel.h (100%) rename src/{timeline => messagecontent}/models/messagecontentmodel.cpp (100%) rename src/{timeline => messagecontent}/models/messagecontentmodel.h (100%) rename src/{timeline => messagecontent}/models/pollanswermodel.cpp (100%) rename src/{timeline => messagecontent}/models/pollanswermodel.h (100%) rename src/{timeline => messagecontent}/models/reactionmodel.cpp (100%) rename src/{timeline => messagecontent}/models/reactionmodel.h (100%) rename src/{timeline => messagecontent}/models/threadmodel.cpp (100%) rename src/{timeline => messagecontent}/models/threadmodel.h (100%) rename src/{timeline => messagecontent}/pollhandler.cpp (100%) rename src/{timeline => messagecontent}/pollhandler.h (100%) rename src/{timeline => roominfo}/locationhelper.cpp (100%) rename src/{timeline => roominfo}/locationhelper.h (95%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 458e8f585..6e1c97025 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,6 +9,7 @@ add_subdirectory(libneochat) add_subdirectory(login) add_subdirectory(rooms) add_subdirectory(roominfo) +add_subdirectory(messagecontent) add_subdirectory(timeline) add_subdirectory(spaces) add_subdirectory(chatbar) diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index b4add8d59..56e001549 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -108,6 +108,7 @@ ecm_add_qml_module(neochat URI org.kde.neochat GENERATE_PLUGIN_SOURCE org.kde.neochat.libneochat org.kde.neochat.rooms org.kde.neochat.roominfo + org.kde.neochat.messagecontent org.kde.neochat.timeline org.kde.neochat.spaces org.kde.neochat.settings @@ -176,7 +177,7 @@ else() endif() target_include_directories(neochat PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/models) -target_link_libraries(neochat PRIVATE Loginplugin Roomsplugin RoomInfoplugin Timelineplugin Spacesplugin Chatbarplugin Settingsplugin Devtoolsplugin) +target_link_libraries(neochat PRIVATE Loginplugin Roomsplugin RoomInfoplugin MessageContentplugin Timelineplugin Spacesplugin Chatbarplugin Settingsplugin Devtoolsplugin) target_link_libraries(neochat PUBLIC LibNeoChat Timeline @@ -201,6 +202,7 @@ target_link_libraries(neochat PUBLIC QuotientQt6 Login Rooms + MessageContent Spaces ) diff --git a/src/app/main.cpp b/src/app/main.cpp index cc890083c..3165d63fc 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -244,13 +244,6 @@ int main(int argc, char *argv[]) LoginHelper::instance().setAccountManager(accountManager.get()); Registration::instance().setAccountManager(accountManager.get()); - Q_IMPORT_QML_PLUGIN(org_kde_neochat_settingsPlugin) - Q_IMPORT_QML_PLUGIN(org_kde_neochat_roomsPlugin) - Q_IMPORT_QML_PLUGIN(org_kde_neochat_timelinePlugin) - Q_IMPORT_QML_PLUGIN(org_kde_neochat_devtoolsPlugin) - Q_IMPORT_QML_PLUGIN(org_kde_neochat_loginPlugin) - Q_IMPORT_QML_PLUGIN(org_kde_neochat_chatbarPlugin) - qml_register_types_org_kde_neochat(); qmlRegisterUncreatableMetaObject(Quotient::staticMetaObject, "Quotient", 1, 0, "JoinRule", u"Access to JoinRule enum only"_s); diff --git a/src/timeline/AudioComponent.qml b/src/messagecontent/AudioComponent.qml similarity index 100% rename from src/timeline/AudioComponent.qml rename to src/messagecontent/AudioComponent.qml diff --git a/src/timeline/AuthorComponent.qml b/src/messagecontent/AuthorComponent.qml similarity index 100% rename from src/timeline/AuthorComponent.qml rename to src/messagecontent/AuthorComponent.qml diff --git a/src/timeline/BaseMessageComponentChooser.qml b/src/messagecontent/BaseMessageComponentChooser.qml similarity index 100% rename from src/timeline/BaseMessageComponentChooser.qml rename to src/messagecontent/BaseMessageComponentChooser.qml diff --git a/src/messagecontent/CMakeLists.txt b/src/messagecontent/CMakeLists.txt new file mode 100644 index 000000000..bd93c6449 --- /dev/null +++ b/src/messagecontent/CMakeLists.txt @@ -0,0 +1,107 @@ +# SPDX-FileCopyrightText: 2024 James Graham +# SPDX-License-Identifier: BSD-2-Clause + +qt_add_library(MessageContent STATIC) +ecm_add_qml_module(MessageContent GENERATE_PLUGIN_SOURCE + URI org.kde.neochat.messagecontent + OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/src/org/kde/neochat/messagecontent + QML_FILES + BaseMessageComponentChooser.qml + MessageComponentChooser.qml + ReplyMessageComponentChooser.qml + AuthorComponent.qml + AudioComponent.qml + ChatBarComponent.qml + CodeComponent.qml + EncryptedComponent.qml + FetchButtonComponent.qml + FileComponent.qml + ImageComponent.qml + ItineraryComponent.qml + ItineraryReservationComponent.qml + JourneySectionStopDelegateLineSegment.qml + TransportIcon.qml + FoodReservationComponent.qml + TrainReservationComponent.qml + FlightReservationComponent.qml + HotelReservationComponent.qml + LinkPreviewComponent.qml + LinkPreviewLoadComponent.qml + LiveLocationComponent.qml + LoadComponent.qml + LocationComponent.qml + MimeComponent.qml + PdfPreviewComponent.qml + PollComponent.qml + QuoteComponent.qml + ReactionComponent.qml + ReplyAuthorComponent.qml + ReplyButtonComponent.qml + ReplyComponent.qml + StateComponent.qml + TextComponent.qml + ThreadBodyComponent.qml + VideoComponent.qml + SOURCES + contentprovider.cpp + mediasizehelper.cpp + pollhandler.cpp + models/itinerarymodel.cpp + models/linemodel.cpp + models/messagecontentmodel.cpp + models/pollanswermodel.cpp + models/reactionmodel.cpp + models/threadmodel.cpp + RESOURCES + images/bike.svg + images/bus.svg + images/cablecar.svg + images/car.svg + images/coach.svg + images/couchettecar.svg + images/elevator.svg + images/escalator.svg + images/ferry.svg + images/flight.svg + images/foodestablishment.svg + images/funicular.svg + images/longdistancetrain.svg + images/rapidtransit.svg + images/seat.svg + images/shuttle.svg + images/sleepingcar.svg + images/stairs.svg + images/subway.svg + images/taxi.svg + images/train.svg + images/tramway.svg + images/transfer.svg + images/wait.svg + images/walk.svg + DEPENDENCIES + QtQuick +) + +configure_file(config-neochat.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-neochat.h) + +ecm_qt_declare_logging_category(MessageContent + HEADER "messagemodel_logging.h" + IDENTIFIER "Message" + CATEGORY_NAME "org.kde.neochat.messagemodel" + DESCRIPTION "Neochat: messagemodel" + DEFAULT_SEVERITY Info + EXPORT NEOCHAT +) + +target_include_directories(MessageContent PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/models) +target_link_libraries(MessageContent PRIVATE + Qt::Core + Qt::Quick + Qt::QuickControls2 + KF6::Kirigami + LibNeoChat +) + +if(NOT ANDROID) + target_link_libraries(MessageContent PUBLIC KF6::SyntaxHighlighting) +endif() diff --git a/src/timeline/ChatBarComponent.qml b/src/messagecontent/ChatBarComponent.qml similarity index 100% rename from src/timeline/ChatBarComponent.qml rename to src/messagecontent/ChatBarComponent.qml diff --git a/src/timeline/CodeComponent.qml b/src/messagecontent/CodeComponent.qml similarity index 100% rename from src/timeline/CodeComponent.qml rename to src/messagecontent/CodeComponent.qml diff --git a/src/timeline/EncryptedComponent.qml b/src/messagecontent/EncryptedComponent.qml similarity index 100% rename from src/timeline/EncryptedComponent.qml rename to src/messagecontent/EncryptedComponent.qml diff --git a/src/timeline/FetchButtonComponent.qml b/src/messagecontent/FetchButtonComponent.qml similarity index 100% rename from src/timeline/FetchButtonComponent.qml rename to src/messagecontent/FetchButtonComponent.qml diff --git a/src/timeline/FileComponent.qml b/src/messagecontent/FileComponent.qml similarity index 100% rename from src/timeline/FileComponent.qml rename to src/messagecontent/FileComponent.qml diff --git a/src/timeline/FlightReservationComponent.qml b/src/messagecontent/FlightReservationComponent.qml similarity index 100% rename from src/timeline/FlightReservationComponent.qml rename to src/messagecontent/FlightReservationComponent.qml diff --git a/src/timeline/FoodReservationComponent.qml b/src/messagecontent/FoodReservationComponent.qml similarity index 100% rename from src/timeline/FoodReservationComponent.qml rename to src/messagecontent/FoodReservationComponent.qml diff --git a/src/timeline/HotelReservationComponent.qml b/src/messagecontent/HotelReservationComponent.qml similarity index 100% rename from src/timeline/HotelReservationComponent.qml rename to src/messagecontent/HotelReservationComponent.qml diff --git a/src/timeline/ImageComponent.qml b/src/messagecontent/ImageComponent.qml similarity index 100% rename from src/timeline/ImageComponent.qml rename to src/messagecontent/ImageComponent.qml diff --git a/src/timeline/ItineraryComponent.qml b/src/messagecontent/ItineraryComponent.qml similarity index 100% rename from src/timeline/ItineraryComponent.qml rename to src/messagecontent/ItineraryComponent.qml diff --git a/src/timeline/ItineraryReservationComponent.qml b/src/messagecontent/ItineraryReservationComponent.qml similarity index 100% rename from src/timeline/ItineraryReservationComponent.qml rename to src/messagecontent/ItineraryReservationComponent.qml diff --git a/src/timeline/JourneySectionStopDelegateLineSegment.qml b/src/messagecontent/JourneySectionStopDelegateLineSegment.qml similarity index 100% rename from src/timeline/JourneySectionStopDelegateLineSegment.qml rename to src/messagecontent/JourneySectionStopDelegateLineSegment.qml diff --git a/src/timeline/LinkPreviewComponent.qml b/src/messagecontent/LinkPreviewComponent.qml similarity index 100% rename from src/timeline/LinkPreviewComponent.qml rename to src/messagecontent/LinkPreviewComponent.qml diff --git a/src/timeline/LinkPreviewLoadComponent.qml b/src/messagecontent/LinkPreviewLoadComponent.qml similarity index 100% rename from src/timeline/LinkPreviewLoadComponent.qml rename to src/messagecontent/LinkPreviewLoadComponent.qml diff --git a/src/timeline/LiveLocationComponent.qml b/src/messagecontent/LiveLocationComponent.qml similarity index 100% rename from src/timeline/LiveLocationComponent.qml rename to src/messagecontent/LiveLocationComponent.qml diff --git a/src/timeline/LoadComponent.qml b/src/messagecontent/LoadComponent.qml similarity index 100% rename from src/timeline/LoadComponent.qml rename to src/messagecontent/LoadComponent.qml diff --git a/src/timeline/LocationComponent.qml b/src/messagecontent/LocationComponent.qml similarity index 100% rename from src/timeline/LocationComponent.qml rename to src/messagecontent/LocationComponent.qml diff --git a/src/timeline/MessageComponentChooser.qml b/src/messagecontent/MessageComponentChooser.qml similarity index 100% rename from src/timeline/MessageComponentChooser.qml rename to src/messagecontent/MessageComponentChooser.qml diff --git a/src/timeline/MimeComponent.qml b/src/messagecontent/MimeComponent.qml similarity index 100% rename from src/timeline/MimeComponent.qml rename to src/messagecontent/MimeComponent.qml diff --git a/src/timeline/PdfPreviewComponent.qml b/src/messagecontent/PdfPreviewComponent.qml similarity index 100% rename from src/timeline/PdfPreviewComponent.qml rename to src/messagecontent/PdfPreviewComponent.qml diff --git a/src/timeline/PollComponent.qml b/src/messagecontent/PollComponent.qml similarity index 100% rename from src/timeline/PollComponent.qml rename to src/messagecontent/PollComponent.qml diff --git a/src/timeline/QuoteComponent.qml b/src/messagecontent/QuoteComponent.qml similarity index 100% rename from src/timeline/QuoteComponent.qml rename to src/messagecontent/QuoteComponent.qml diff --git a/src/timeline/ReactionComponent.qml b/src/messagecontent/ReactionComponent.qml similarity index 100% rename from src/timeline/ReactionComponent.qml rename to src/messagecontent/ReactionComponent.qml diff --git a/src/timeline/ReplyAuthorComponent.qml b/src/messagecontent/ReplyAuthorComponent.qml similarity index 100% rename from src/timeline/ReplyAuthorComponent.qml rename to src/messagecontent/ReplyAuthorComponent.qml diff --git a/src/timeline/ReplyButtonComponent.qml b/src/messagecontent/ReplyButtonComponent.qml similarity index 100% rename from src/timeline/ReplyButtonComponent.qml rename to src/messagecontent/ReplyButtonComponent.qml diff --git a/src/timeline/ReplyComponent.qml b/src/messagecontent/ReplyComponent.qml similarity index 100% rename from src/timeline/ReplyComponent.qml rename to src/messagecontent/ReplyComponent.qml diff --git a/src/timeline/ReplyMessageComponentChooser.qml b/src/messagecontent/ReplyMessageComponentChooser.qml similarity index 100% rename from src/timeline/ReplyMessageComponentChooser.qml rename to src/messagecontent/ReplyMessageComponentChooser.qml diff --git a/src/timeline/StateComponent.qml b/src/messagecontent/StateComponent.qml similarity index 100% rename from src/timeline/StateComponent.qml rename to src/messagecontent/StateComponent.qml diff --git a/src/timeline/TextComponent.qml b/src/messagecontent/TextComponent.qml similarity index 100% rename from src/timeline/TextComponent.qml rename to src/messagecontent/TextComponent.qml diff --git a/src/timeline/ThreadBodyComponent.qml b/src/messagecontent/ThreadBodyComponent.qml similarity index 100% rename from src/timeline/ThreadBodyComponent.qml rename to src/messagecontent/ThreadBodyComponent.qml diff --git a/src/timeline/TrainReservationComponent.qml b/src/messagecontent/TrainReservationComponent.qml similarity index 100% rename from src/timeline/TrainReservationComponent.qml rename to src/messagecontent/TrainReservationComponent.qml diff --git a/src/timeline/TransportIcon.qml b/src/messagecontent/TransportIcon.qml similarity index 100% rename from src/timeline/TransportIcon.qml rename to src/messagecontent/TransportIcon.qml diff --git a/src/timeline/VideoComponent.qml b/src/messagecontent/VideoComponent.qml similarity index 100% rename from src/timeline/VideoComponent.qml rename to src/messagecontent/VideoComponent.qml diff --git a/src/timeline/config-neochat.h.in b/src/messagecontent/config-neochat.h.in similarity index 100% rename from src/timeline/config-neochat.h.in rename to src/messagecontent/config-neochat.h.in diff --git a/src/timeline/contentprovider.cpp b/src/messagecontent/contentprovider.cpp similarity index 100% rename from src/timeline/contentprovider.cpp rename to src/messagecontent/contentprovider.cpp diff --git a/src/timeline/contentprovider.h b/src/messagecontent/contentprovider.h similarity index 100% rename from src/timeline/contentprovider.h rename to src/messagecontent/contentprovider.h diff --git a/src/timeline/images/bike.svg b/src/messagecontent/images/bike.svg similarity index 100% rename from src/timeline/images/bike.svg rename to src/messagecontent/images/bike.svg diff --git a/src/timeline/images/bike.svg.license b/src/messagecontent/images/bike.svg.license similarity index 100% rename from src/timeline/images/bike.svg.license rename to src/messagecontent/images/bike.svg.license diff --git a/src/timeline/images/bus.svg b/src/messagecontent/images/bus.svg similarity index 100% rename from src/timeline/images/bus.svg rename to src/messagecontent/images/bus.svg diff --git a/src/timeline/images/bus.svg.license b/src/messagecontent/images/bus.svg.license similarity index 100% rename from src/timeline/images/bus.svg.license rename to src/messagecontent/images/bus.svg.license diff --git a/src/timeline/images/cablecar.svg b/src/messagecontent/images/cablecar.svg similarity index 100% rename from src/timeline/images/cablecar.svg rename to src/messagecontent/images/cablecar.svg diff --git a/src/timeline/images/cablecar.svg.license b/src/messagecontent/images/cablecar.svg.license similarity index 100% rename from src/timeline/images/cablecar.svg.license rename to src/messagecontent/images/cablecar.svg.license diff --git a/src/timeline/images/car.svg b/src/messagecontent/images/car.svg similarity index 100% rename from src/timeline/images/car.svg rename to src/messagecontent/images/car.svg diff --git a/src/timeline/images/car.svg.license b/src/messagecontent/images/car.svg.license similarity index 100% rename from src/timeline/images/car.svg.license rename to src/messagecontent/images/car.svg.license diff --git a/src/timeline/images/coach.svg b/src/messagecontent/images/coach.svg similarity index 100% rename from src/timeline/images/coach.svg rename to src/messagecontent/images/coach.svg diff --git a/src/timeline/images/coach.svg.license b/src/messagecontent/images/coach.svg.license similarity index 100% rename from src/timeline/images/coach.svg.license rename to src/messagecontent/images/coach.svg.license diff --git a/src/timeline/images/couchettecar.svg b/src/messagecontent/images/couchettecar.svg similarity index 100% rename from src/timeline/images/couchettecar.svg rename to src/messagecontent/images/couchettecar.svg diff --git a/src/timeline/images/couchettecar.svg.license b/src/messagecontent/images/couchettecar.svg.license similarity index 100% rename from src/timeline/images/couchettecar.svg.license rename to src/messagecontent/images/couchettecar.svg.license diff --git a/src/timeline/images/elevator.svg b/src/messagecontent/images/elevator.svg similarity index 100% rename from src/timeline/images/elevator.svg rename to src/messagecontent/images/elevator.svg diff --git a/src/timeline/images/elevator.svg.license b/src/messagecontent/images/elevator.svg.license similarity index 100% rename from src/timeline/images/elevator.svg.license rename to src/messagecontent/images/elevator.svg.license diff --git a/src/timeline/images/escalator.svg b/src/messagecontent/images/escalator.svg similarity index 100% rename from src/timeline/images/escalator.svg rename to src/messagecontent/images/escalator.svg diff --git a/src/timeline/images/escalator.svg.license b/src/messagecontent/images/escalator.svg.license similarity index 100% rename from src/timeline/images/escalator.svg.license rename to src/messagecontent/images/escalator.svg.license diff --git a/src/timeline/images/ferry.svg b/src/messagecontent/images/ferry.svg similarity index 100% rename from src/timeline/images/ferry.svg rename to src/messagecontent/images/ferry.svg diff --git a/src/timeline/images/ferry.svg.license b/src/messagecontent/images/ferry.svg.license similarity index 100% rename from src/timeline/images/ferry.svg.license rename to src/messagecontent/images/ferry.svg.license diff --git a/src/timeline/images/flight.svg b/src/messagecontent/images/flight.svg similarity index 100% rename from src/timeline/images/flight.svg rename to src/messagecontent/images/flight.svg diff --git a/src/timeline/images/flight.svg.license b/src/messagecontent/images/flight.svg.license similarity index 100% rename from src/timeline/images/flight.svg.license rename to src/messagecontent/images/flight.svg.license diff --git a/src/timeline/images/foodestablishment.svg b/src/messagecontent/images/foodestablishment.svg similarity index 100% rename from src/timeline/images/foodestablishment.svg rename to src/messagecontent/images/foodestablishment.svg diff --git a/src/timeline/images/foodestablishment.svg.license b/src/messagecontent/images/foodestablishment.svg.license similarity index 100% rename from src/timeline/images/foodestablishment.svg.license rename to src/messagecontent/images/foodestablishment.svg.license diff --git a/src/timeline/images/funicular.svg b/src/messagecontent/images/funicular.svg similarity index 100% rename from src/timeline/images/funicular.svg rename to src/messagecontent/images/funicular.svg diff --git a/src/timeline/images/funicular.svg.license b/src/messagecontent/images/funicular.svg.license similarity index 100% rename from src/timeline/images/funicular.svg.license rename to src/messagecontent/images/funicular.svg.license diff --git a/src/timeline/images/longdistancetrain.svg b/src/messagecontent/images/longdistancetrain.svg similarity index 100% rename from src/timeline/images/longdistancetrain.svg rename to src/messagecontent/images/longdistancetrain.svg diff --git a/src/timeline/images/longdistancetrain.svg.license b/src/messagecontent/images/longdistancetrain.svg.license similarity index 100% rename from src/timeline/images/longdistancetrain.svg.license rename to src/messagecontent/images/longdistancetrain.svg.license diff --git a/src/timeline/images/rapidtransit.svg b/src/messagecontent/images/rapidtransit.svg similarity index 100% rename from src/timeline/images/rapidtransit.svg rename to src/messagecontent/images/rapidtransit.svg diff --git a/src/timeline/images/rapidtransit.svg.license b/src/messagecontent/images/rapidtransit.svg.license similarity index 100% rename from src/timeline/images/rapidtransit.svg.license rename to src/messagecontent/images/rapidtransit.svg.license diff --git a/src/timeline/images/seat.svg b/src/messagecontent/images/seat.svg similarity index 100% rename from src/timeline/images/seat.svg rename to src/messagecontent/images/seat.svg diff --git a/src/timeline/images/seat.svg.license b/src/messagecontent/images/seat.svg.license similarity index 100% rename from src/timeline/images/seat.svg.license rename to src/messagecontent/images/seat.svg.license diff --git a/src/timeline/images/shuttle.svg b/src/messagecontent/images/shuttle.svg similarity index 100% rename from src/timeline/images/shuttle.svg rename to src/messagecontent/images/shuttle.svg diff --git a/src/timeline/images/shuttle.svg.license b/src/messagecontent/images/shuttle.svg.license similarity index 100% rename from src/timeline/images/shuttle.svg.license rename to src/messagecontent/images/shuttle.svg.license diff --git a/src/timeline/images/sleepingcar.svg b/src/messagecontent/images/sleepingcar.svg similarity index 100% rename from src/timeline/images/sleepingcar.svg rename to src/messagecontent/images/sleepingcar.svg diff --git a/src/timeline/images/sleepingcar.svg.license b/src/messagecontent/images/sleepingcar.svg.license similarity index 100% rename from src/timeline/images/sleepingcar.svg.license rename to src/messagecontent/images/sleepingcar.svg.license diff --git a/src/timeline/images/stairs.svg b/src/messagecontent/images/stairs.svg similarity index 100% rename from src/timeline/images/stairs.svg rename to src/messagecontent/images/stairs.svg diff --git a/src/timeline/images/stairs.svg.license b/src/messagecontent/images/stairs.svg.license similarity index 100% rename from src/timeline/images/stairs.svg.license rename to src/messagecontent/images/stairs.svg.license diff --git a/src/timeline/images/subway.svg b/src/messagecontent/images/subway.svg similarity index 100% rename from src/timeline/images/subway.svg rename to src/messagecontent/images/subway.svg diff --git a/src/timeline/images/subway.svg.license b/src/messagecontent/images/subway.svg.license similarity index 100% rename from src/timeline/images/subway.svg.license rename to src/messagecontent/images/subway.svg.license diff --git a/src/timeline/images/taxi.svg b/src/messagecontent/images/taxi.svg similarity index 100% rename from src/timeline/images/taxi.svg rename to src/messagecontent/images/taxi.svg diff --git a/src/timeline/images/taxi.svg.license b/src/messagecontent/images/taxi.svg.license similarity index 100% rename from src/timeline/images/taxi.svg.license rename to src/messagecontent/images/taxi.svg.license diff --git a/src/timeline/images/train.svg b/src/messagecontent/images/train.svg similarity index 100% rename from src/timeline/images/train.svg rename to src/messagecontent/images/train.svg diff --git a/src/timeline/images/train.svg.license b/src/messagecontent/images/train.svg.license similarity index 100% rename from src/timeline/images/train.svg.license rename to src/messagecontent/images/train.svg.license diff --git a/src/timeline/images/tramway.svg b/src/messagecontent/images/tramway.svg similarity index 100% rename from src/timeline/images/tramway.svg rename to src/messagecontent/images/tramway.svg diff --git a/src/timeline/images/tramway.svg.license b/src/messagecontent/images/tramway.svg.license similarity index 100% rename from src/timeline/images/tramway.svg.license rename to src/messagecontent/images/tramway.svg.license diff --git a/src/timeline/images/transfer.svg b/src/messagecontent/images/transfer.svg similarity index 100% rename from src/timeline/images/transfer.svg rename to src/messagecontent/images/transfer.svg diff --git a/src/timeline/images/transfer.svg.license b/src/messagecontent/images/transfer.svg.license similarity index 100% rename from src/timeline/images/transfer.svg.license rename to src/messagecontent/images/transfer.svg.license diff --git a/src/timeline/images/wait.svg b/src/messagecontent/images/wait.svg similarity index 100% rename from src/timeline/images/wait.svg rename to src/messagecontent/images/wait.svg diff --git a/src/timeline/images/wait.svg.license b/src/messagecontent/images/wait.svg.license similarity index 100% rename from src/timeline/images/wait.svg.license rename to src/messagecontent/images/wait.svg.license diff --git a/src/timeline/images/walk.svg b/src/messagecontent/images/walk.svg similarity index 100% rename from src/timeline/images/walk.svg rename to src/messagecontent/images/walk.svg diff --git a/src/timeline/images/walk.svg.license b/src/messagecontent/images/walk.svg.license similarity index 100% rename from src/timeline/images/walk.svg.license rename to src/messagecontent/images/walk.svg.license diff --git a/src/timeline/mediasizehelper.cpp b/src/messagecontent/mediasizehelper.cpp similarity index 100% rename from src/timeline/mediasizehelper.cpp rename to src/messagecontent/mediasizehelper.cpp diff --git a/src/timeline/mediasizehelper.h b/src/messagecontent/mediasizehelper.h similarity index 100% rename from src/timeline/mediasizehelper.h rename to src/messagecontent/mediasizehelper.h diff --git a/src/timeline/models/itinerarymodel.cpp b/src/messagecontent/models/itinerarymodel.cpp similarity index 100% rename from src/timeline/models/itinerarymodel.cpp rename to src/messagecontent/models/itinerarymodel.cpp diff --git a/src/timeline/models/itinerarymodel.h b/src/messagecontent/models/itinerarymodel.h similarity index 100% rename from src/timeline/models/itinerarymodel.h rename to src/messagecontent/models/itinerarymodel.h diff --git a/src/timeline/models/linemodel.cpp b/src/messagecontent/models/linemodel.cpp similarity index 100% rename from src/timeline/models/linemodel.cpp rename to src/messagecontent/models/linemodel.cpp diff --git a/src/timeline/models/linemodel.h b/src/messagecontent/models/linemodel.h similarity index 100% rename from src/timeline/models/linemodel.h rename to src/messagecontent/models/linemodel.h diff --git a/src/timeline/models/messagecontentmodel.cpp b/src/messagecontent/models/messagecontentmodel.cpp similarity index 100% rename from src/timeline/models/messagecontentmodel.cpp rename to src/messagecontent/models/messagecontentmodel.cpp diff --git a/src/timeline/models/messagecontentmodel.h b/src/messagecontent/models/messagecontentmodel.h similarity index 100% rename from src/timeline/models/messagecontentmodel.h rename to src/messagecontent/models/messagecontentmodel.h diff --git a/src/timeline/models/pollanswermodel.cpp b/src/messagecontent/models/pollanswermodel.cpp similarity index 100% rename from src/timeline/models/pollanswermodel.cpp rename to src/messagecontent/models/pollanswermodel.cpp diff --git a/src/timeline/models/pollanswermodel.h b/src/messagecontent/models/pollanswermodel.h similarity index 100% rename from src/timeline/models/pollanswermodel.h rename to src/messagecontent/models/pollanswermodel.h diff --git a/src/timeline/models/reactionmodel.cpp b/src/messagecontent/models/reactionmodel.cpp similarity index 100% rename from src/timeline/models/reactionmodel.cpp rename to src/messagecontent/models/reactionmodel.cpp diff --git a/src/timeline/models/reactionmodel.h b/src/messagecontent/models/reactionmodel.h similarity index 100% rename from src/timeline/models/reactionmodel.h rename to src/messagecontent/models/reactionmodel.h diff --git a/src/timeline/models/threadmodel.cpp b/src/messagecontent/models/threadmodel.cpp similarity index 100% rename from src/timeline/models/threadmodel.cpp rename to src/messagecontent/models/threadmodel.cpp diff --git a/src/timeline/models/threadmodel.h b/src/messagecontent/models/threadmodel.h similarity index 100% rename from src/timeline/models/threadmodel.h rename to src/messagecontent/models/threadmodel.h diff --git a/src/timeline/pollhandler.cpp b/src/messagecontent/pollhandler.cpp similarity index 100% rename from src/timeline/pollhandler.cpp rename to src/messagecontent/pollhandler.cpp diff --git a/src/timeline/pollhandler.h b/src/messagecontent/pollhandler.h similarity index 100% rename from src/timeline/pollhandler.h rename to src/messagecontent/pollhandler.h diff --git a/src/roominfo/CMakeLists.txt b/src/roominfo/CMakeLists.txt index 1bba1d72f..8c7db900a 100644 --- a/src/roominfo/CMakeLists.txt +++ b/src/roominfo/CMakeLists.txt @@ -14,4 +14,10 @@ ecm_add_qml_module(RoomInfo GENERATE_PLUGIN_SOURCE LocationsPage.qml RoomPinnedMessagesPage.qml RoomSearchPage.qml + SOURCES + locationhelper.cpp +) + +target_link_libraries(RoomInfo PRIVATE + Qt::Core ) diff --git a/src/timeline/locationhelper.cpp b/src/roominfo/locationhelper.cpp similarity index 100% rename from src/timeline/locationhelper.cpp rename to src/roominfo/locationhelper.cpp diff --git a/src/timeline/locationhelper.h b/src/roominfo/locationhelper.h similarity index 95% rename from src/timeline/locationhelper.h rename to src/roominfo/locationhelper.h index 8c848ad87..e4181e0f4 100644 --- a/src/timeline/locationhelper.h +++ b/src/roominfo/locationhelper.h @@ -15,7 +15,7 @@ class LocationHelper : public QObject QML_SINGLETON public: - /** Unite two rectanlges. */ + /** Unite two rectangles. */ Q_INVOKABLE static QRectF unite(const QRectF &r1, const QRectF &r2); /** Returns the center of @p r. */ Q_INVOKABLE static QPointF center(const QRectF &r); diff --git a/src/timeline/CMakeLists.txt b/src/timeline/CMakeLists.txt index e602cebc2..47cbf4b48 100644 --- a/src/timeline/CMakeLists.txt +++ b/src/timeline/CMakeLists.txt @@ -21,120 +21,34 @@ ecm_add_qml_module(Timeline GENERATE_PLUGIN_SOURCE AvatarFlow.qml QuickActions.qml TypingPane.qml - BaseMessageComponentChooser.qml - MessageComponentChooser.qml - ReplyMessageComponentChooser.qml - AuthorComponent.qml - AudioComponent.qml - ChatBarComponent.qml - CodeComponent.qml - EncryptedComponent.qml - FetchButtonComponent.qml - FileComponent.qml - ImageComponent.qml - ItineraryComponent.qml - ItineraryReservationComponent.qml - JourneySectionStopDelegateLineSegment.qml - TransportIcon.qml - FoodReservationComponent.qml - TrainReservationComponent.qml - FlightReservationComponent.qml - HotelReservationComponent.qml - LinkPreviewComponent.qml - LinkPreviewLoadComponent.qml - LiveLocationComponent.qml - LoadComponent.qml - LocationComponent.qml - MimeComponent.qml - PdfPreviewComponent.qml - PollComponent.qml - QuoteComponent.qml - ReactionComponent.qml - ReplyAuthorComponent.qml - ReplyButtonComponent.qml - ReplyComponent.qml - StateComponent.qml - TextComponent.qml - ThreadBodyComponent.qml - VideoComponent.qml DelegateContextMenu.qml FileDelegateContextMenu.qml MessageDelegateContextMenu.qml SOURCES - contentprovider.cpp - locationhelper.cpp - mediasizehelper.cpp messageattached.cpp messagedelegate.cpp - pollhandler.cpp timelinedelegate.cpp enums/delegatetype.h - models/itinerarymodel.cpp - models/linemodel.cpp models/mediamessagefiltermodel.cpp - models/messagecontentmodel.cpp models/messagecontentfiltermodel.cpp models/messagefiltermodel.cpp models/messagemodel.cpp models/pinnedmessagemodel.cpp - models/pollanswermodel.cpp - models/reactionmodel.cpp models/readmarkermodel.cpp models/searchmodel.cpp models/timelinemessagemodel.cpp models/timelinemodel.cpp - models/threadmodel.cpp models/webshortcutmodel.cpp - RESOURCES - images/bike.svg - images/bus.svg - images/cablecar.svg - images/car.svg - images/coach.svg - images/couchettecar.svg - images/elevator.svg - images/escalator.svg - images/ferry.svg - images/flight.svg - images/foodestablishment.svg - images/funicular.svg - images/longdistancetrain.svg - images/rapidtransit.svg - images/seat.svg - images/shuttle.svg - images/sleepingcar.svg - images/stairs.svg - images/subway.svg - images/taxi.svg - images/train.svg - images/tramway.svg - images/transfer.svg - images/wait.svg - images/walk.svg DEPENDENCIES QtQuick ) -configure_file(config-neochat.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-neochat.h) - -ecm_qt_declare_logging_category(Timeline - HEADER "messagemodel_logging.h" - IDENTIFIER "Message" - CATEGORY_NAME "org.kde.neochat.messagemodel" - DESCRIPTION "Neochat: messagemodel" - DEFAULT_SEVERITY Info - EXPORT NEOCHAT -) - target_include_directories(Timeline PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/enums ${CMAKE_CURRENT_SOURCE_DIR}/models) target_link_libraries(Timeline PRIVATE - LibNeoChat Qt::Core Qt::Quick Qt::QuickControls2 KF6::Kirigami + LibNeoChat + MessageContent ) - -if(NOT ANDROID) - target_link_libraries(Timeline PUBLIC KF6::SyntaxHighlighting) -endif() diff --git a/src/timeline/messageattached.h b/src/timeline/messageattached.h index 4e084d2aa..89fd61cce 100644 --- a/src/timeline/messageattached.h +++ b/src/timeline/messageattached.h @@ -7,7 +7,7 @@ #include #include -#include "messagecontentmodel.h" +#include "models/messagecontentmodel.h" #include "neochatroom.h" class MessageAttached : public QQuickAttachedPropertyPropagator diff --git a/src/timeline/models/messagemodel.h b/src/timeline/models/messagemodel.h index 9912890e9..095101647 100644 --- a/src/timeline/models/messagemodel.h +++ b/src/timeline/models/messagemodel.h @@ -9,9 +9,6 @@ #include "neochatroom.h" #include "readmarkermodel.h" -#include "threadmodel.h" - -class ReactionModel; /** * @class MessageModel diff --git a/src/timeline/models/readmarkermodel.cpp b/src/timeline/models/readmarkermodel.cpp index e9d034a85..75d089a0d 100644 --- a/src/timeline/models/readmarkermodel.cpp +++ b/src/timeline/models/readmarkermodel.cpp @@ -67,7 +67,7 @@ QVariant ReadMarkerModel::data(const QModelIndex &index, int role) const } if (index.row() >= rowCount()) { - qDebug() << "ReactionModel, something's wrong: index.row() >= rowCount()"; + qDebug() << "ReadMarkerModel, something's wrong: index.row() >= rowCount()"; return {}; } diff --git a/src/timeline/models/timelinemessagemodel.h b/src/timeline/models/timelinemessagemodel.h index 50a6ad203..e26d71d38 100644 --- a/src/timeline/models/timelinemessagemodel.h +++ b/src/timeline/models/timelinemessagemodel.h @@ -8,8 +8,6 @@ #include "messagemodel.h" -class ReactionModel; - namespace Quotient { class RoomEvent;