diff --git a/CMakeLists.txt b/CMakeLists.txt index cc53ccf1452f1..92e18908327c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -93,6 +93,7 @@ include(KDEInstallDirs) include(KDECMakeSettings) include(ECMMarkNonGuiExecutable) include(ECMSetupVersion) +include(ECMQmlModule) #include(KDECompilerSettings NO_POLICY_SCOPE) include(ECMEnableSanitizers) diff --git a/resources.qrc b/resources.qrc index 711cb8dbea766..fd796e2fc20c3 100644 --- a/resources.qrc +++ b/resources.qrc @@ -6,7 +6,6 @@ src/gui/WindowAccountHeader.qml src/gui/ActivitiesWindow.qml src/gui/AssistantWindow.qml - src/gui/search/qml/SearchWindow.qml src/gui/UserStatusWindowStatusRow.qml src/gui/UserStatusWindowPredefinedStatusRow.qml src/gui/UserStatusSelectorPage.qml @@ -38,16 +37,6 @@ src/gui/tray/ActivityList.qml src/gui/tray/CurrentAccountHeaderButton.qml src/gui/tray/TrayWindowHeader.qml - src/gui/search/qml/UnifiedSearchInputContainer.qml - src/gui/search/qml/UnifiedSearchResultFetchMoreTrigger.qml - src/gui/search/qml/UnifiedSearchResultItem.qml - src/gui/search/qml/UnifiedSearchResultItemSkeleton.qml - src/gui/search/qml/UnifiedSearchResultItemSkeletonContainer.qml - src/gui/search/qml/UnifiedSearchResultItemSkeletonGradientRectangle.qml - src/gui/search/qml/UnifiedSearchResultListItem.qml - src/gui/search/qml/UnifiedSearchResultNothingFound.qml - src/gui/search/qml/UnifiedSearchPlaceholderView.qml - src/gui/search/qml/UnifiedSearchResultSectionItem.qml src/gui/tray/ActivityItemContextMenu.qml src/gui/tray/ActivityItemActions.qml src/gui/tray/ActivityItemContent.qml diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index cd90eb3fb2005..a6bf4ec2d829d 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -237,14 +237,10 @@ set(client_SRCS tray/activitydata.cpp tray/activitylistmodel.h tray/activitylistmodel.cpp - search/unifiedsearchresult.h tray/asyncimageresponse.cpp - search/unifiedsearchresult.cpp - search/unifiedsearchresultslistmodel.h tray/trayimageprovider.cpp tray/trayaccountappsmodel.h tray/trayaccountappsmodel.cpp - search/unifiedsearchresultslistmodel.cpp tray/usermodel.h tray/usermodel.cpp tray/notificationhandler.h @@ -292,6 +288,8 @@ IF(BUILD_UPDATER) ) endif() +add_subdirectory(search) + IF( APPLE ) list(APPEND client_SRCS cocoainitializer_mac.mm) list(APPEND client_SRCS systray_mac_common.mm) @@ -579,6 +577,9 @@ target_link_libraries(nextcloudCore Qt::QuickWidgets KF6::Archive KDAB::kdsingleapplication + + nextcloudGuiSearch + nextcloudGuiSearchplugin ) if(KF6GuiAddons_FOUND) diff --git a/src/gui/search/CMakeLists.txt b/src/gui/search/CMakeLists.txt new file mode 100644 index 0000000000000..19894e5589b5c --- /dev/null +++ b/src/gui/search/CMakeLists.txt @@ -0,0 +1,31 @@ +# SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: GPL-2.0-or-later + +add_library(nextcloudGuiSearch STATIC) + +target_sources(nextcloudGuiSearch + PRIVATE + unifiedsearchresult.h + unifiedsearchresult.cpp + unifiedsearchresultslistmodel.h + unifiedsearchresultslistmodel.cpp +) + +ecm_add_qml_module(nextcloudGuiSearch + URI com.nextcloud.desktopclient.search + GENERATE_PLUGIN_SOURCE + QML_FILES + SearchWindow.qml + UnifiedSearchInputContainer.qml + UnifiedSearchResultFetchMoreTrigger.qml + UnifiedSearchResultItem.qml + UnifiedSearchResultItemSkeleton.qml + UnifiedSearchResultItemSkeletonContainer.qml + UnifiedSearchResultItemSkeletonGradientRectangle.qml + UnifiedSearchResultListItem.qml + UnifiedSearchResultNothingFound.qml + UnifiedSearchPlaceholderView.qml + UnifiedSearchResultSectionItem.qml +) + +target_link_libraries(nextcloudGuiSearch PRIVATE nextcloudCore) diff --git a/src/gui/search/qml/SearchWindow.qml b/src/gui/search/SearchWindow.qml similarity index 99% rename from src/gui/search/qml/SearchWindow.qml rename to src/gui/search/SearchWindow.qml index d051c76cca4a4..c953b391081b6 100644 --- a/src/gui/search/qml/SearchWindow.qml +++ b/src/gui/search/SearchWindow.qml @@ -9,7 +9,7 @@ import QtQuick.Layouts import Style import com.nextcloud.desktopclient -import "../.." +import "qrc:/qml/src/gui" WizardStyledWindow { id: root diff --git a/src/gui/search/qml/UnifiedSearchInputContainer.qml b/src/gui/search/UnifiedSearchInputContainer.qml similarity index 98% rename from src/gui/search/qml/UnifiedSearchInputContainer.qml rename to src/gui/search/UnifiedSearchInputContainer.qml index 37a77c6925698..7a1ed241535dc 100644 --- a/src/gui/search/qml/UnifiedSearchInputContainer.qml +++ b/src/gui/search/UnifiedSearchInputContainer.qml @@ -10,7 +10,7 @@ import Qt5Compat.GraphicalEffects import Style import com.nextcloud.desktopclient -import "../../tray" +import "qrc:/qml/src/gui/tray" TextField { id: root diff --git a/src/gui/search/qml/UnifiedSearchPlaceholderView.qml b/src/gui/search/UnifiedSearchPlaceholderView.qml similarity index 96% rename from src/gui/search/qml/UnifiedSearchPlaceholderView.qml rename to src/gui/search/UnifiedSearchPlaceholderView.qml index eaf6803e54105..2df48489197e7 100644 --- a/src/gui/search/qml/UnifiedSearchPlaceholderView.qml +++ b/src/gui/search/UnifiedSearchPlaceholderView.qml @@ -8,7 +8,7 @@ import QtQuick import QtQuick.Controls import QtQuick.Layouts import Style -import "../../tray" +import "qrc:/qml/src/gui/tray" ColumnLayout { id: root diff --git a/src/gui/search/qml/UnifiedSearchResultFetchMoreTrigger.qml b/src/gui/search/UnifiedSearchResultFetchMoreTrigger.qml similarity index 98% rename from src/gui/search/qml/UnifiedSearchResultFetchMoreTrigger.qml rename to src/gui/search/UnifiedSearchResultFetchMoreTrigger.qml index 46de97d8ecf19..c613f4529915a 100644 --- a/src/gui/search/qml/UnifiedSearchResultFetchMoreTrigger.qml +++ b/src/gui/search/UnifiedSearchResultFetchMoreTrigger.qml @@ -8,7 +8,7 @@ import QtQuick import QtQuick.Controls import QtQuick.Layouts import Style -import "../../tray" +import "qrc:/qml/src/gui/tray" ColumnLayout { id: unifiedSearchResultItemFetchMore diff --git a/src/gui/search/qml/UnifiedSearchResultItem.qml b/src/gui/search/UnifiedSearchResultItem.qml similarity index 99% rename from src/gui/search/qml/UnifiedSearchResultItem.qml rename to src/gui/search/UnifiedSearchResultItem.qml index 477f290632e49..fae127653b466 100644 --- a/src/gui/search/qml/UnifiedSearchResultItem.qml +++ b/src/gui/search/UnifiedSearchResultItem.qml @@ -10,7 +10,7 @@ import QtQuick.Layouts import Qt5Compat.GraphicalEffects import Style -import "../../tray" +import "qrc:/qml/src/gui/tray" RowLayout { id: unifiedSearchResultItemDetails diff --git a/src/gui/search/qml/UnifiedSearchResultItemSkeleton.qml b/src/gui/search/UnifiedSearchResultItemSkeleton.qml similarity index 100% rename from src/gui/search/qml/UnifiedSearchResultItemSkeleton.qml rename to src/gui/search/UnifiedSearchResultItemSkeleton.qml diff --git a/src/gui/search/qml/UnifiedSearchResultItemSkeletonContainer.qml b/src/gui/search/UnifiedSearchResultItemSkeletonContainer.qml similarity index 100% rename from src/gui/search/qml/UnifiedSearchResultItemSkeletonContainer.qml rename to src/gui/search/UnifiedSearchResultItemSkeletonContainer.qml diff --git a/src/gui/search/qml/UnifiedSearchResultItemSkeletonGradientRectangle.qml b/src/gui/search/UnifiedSearchResultItemSkeletonGradientRectangle.qml similarity index 100% rename from src/gui/search/qml/UnifiedSearchResultItemSkeletonGradientRectangle.qml rename to src/gui/search/UnifiedSearchResultItemSkeletonGradientRectangle.qml diff --git a/src/gui/search/qml/UnifiedSearchResultListItem.qml b/src/gui/search/UnifiedSearchResultListItem.qml similarity index 100% rename from src/gui/search/qml/UnifiedSearchResultListItem.qml rename to src/gui/search/UnifiedSearchResultListItem.qml diff --git a/src/gui/search/qml/UnifiedSearchResultNothingFound.qml b/src/gui/search/UnifiedSearchResultNothingFound.qml similarity index 98% rename from src/gui/search/qml/UnifiedSearchResultNothingFound.qml rename to src/gui/search/UnifiedSearchResultNothingFound.qml index baf1a26695380..fe61aa1149127 100644 --- a/src/gui/search/qml/UnifiedSearchResultNothingFound.qml +++ b/src/gui/search/UnifiedSearchResultNothingFound.qml @@ -8,7 +8,7 @@ import QtQuick import QtQuick.Controls import QtQuick.Layouts import Style -import "../../tray" +import "qrc:/qml/src/gui/tray" ColumnLayout { id: unifiedSearchResultNothingFoundContainer diff --git a/src/gui/search/qml/UnifiedSearchResultSectionItem.qml b/src/gui/search/UnifiedSearchResultSectionItem.qml similarity index 95% rename from src/gui/search/qml/UnifiedSearchResultSectionItem.qml rename to src/gui/search/UnifiedSearchResultSectionItem.qml index 547d909bf7fd3..ac763ecf2c797 100644 --- a/src/gui/search/qml/UnifiedSearchResultSectionItem.qml +++ b/src/gui/search/UnifiedSearchResultSectionItem.qml @@ -9,7 +9,7 @@ import QtQuick.Controls import QtQuick.Layouts import Style import com.nextcloud.desktopclient -import "../../tray" +import "qrc:/qml/src/gui/tray" EnforcedPlainTextLabel { required property string section diff --git a/src/gui/systray.cpp b/src/gui/systray.cpp index f1ac5d5d3109f..7fc19a3af5b5e 100644 --- a/src/gui/systray.cpp +++ b/src/gui/systray.cpp @@ -46,6 +46,8 @@ #define NOTIFICATIONS_IFACE "org.freedesktop.Notifications" #endif +using namespace Qt::StringLiterals; + namespace OCC { Q_LOGGING_CATEGORY(lcSystray, "nextcloud.gui.systray") @@ -428,7 +430,7 @@ void Systray::showSearchWindow(int userIndex) return; } - QQmlComponent searchWindowComponent(trayEngine(), QStringLiteral("qrc:/qml/src/gui/search/qml/SearchWindow.qml")); + QQmlComponent searchWindowComponent(trayEngine(), "com.nextcloud.desktopclient.search"_L1, "SearchWindow"_L1); if (searchWindowComponent.isError()) { qCWarning(lcSystray) << searchWindowComponent.errorString();