Skip to content

Commit aaf262d

Browse files
committed
refactor: Port to QML modules
Signed-off-by: Carl Schwan <[email protected]>
1 parent ed28f4c commit aaf262d

33 files changed

+303
-169
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ if(APPLE)
1010
set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0" CACHE STRING "Minimum OSX deployment version")
1111
endif()
1212

13+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
1314
set(CMAKE_CXX_STANDARD 20)
1415
set(CMAKE_CXX_STANDARD_REQUIRED 20)
1516

resources.qrc

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,7 @@
11
<RCC>
22
<qresource prefix="/qml">
3-
<file>src/gui/UserStatusMessageView.qml</file>
4-
<file>src/gui/UserStatusSelectorPage.qml</file>
5-
<file>src/gui/EmojiPicker.qml</file>
6-
<file>src/gui/UserStatusSelectorButton.qml</file>
7-
<file>src/gui/UserStatusSetStatusView.qml</file>
8-
<file>src/gui/PredefinedStatusButton.qml</file>
9-
<file>src/gui/ErrorBox.qml</file>
10-
<file>src/gui/filedetails/FileActivityView.qml</file>
11-
<file>src/gui/filedetails/FileDetailsPage.qml</file>
12-
<file>src/gui/filedetails/FileDetailsView.qml</file>
13-
<file>src/gui/filedetails/FileDetailsWindow.qml</file>
14-
<file>src/gui/filedetails/FileTag.qml</file>
15-
<file>src/gui/filedetails/NCInputDateField.qml</file>
16-
<file>src/gui/filedetails/NCInputTextArea.qml</file>
17-
<file>src/gui/filedetails/NCInputTextField.qml</file>
18-
<file>src/gui/filedetails/NCTabButton.qml</file>
19-
<file>src/gui/filedetails/ShareeDelegate.qml</file>
20-
<file>src/gui/filedetails/ShareDelegate.qml</file>
21-
<file>src/gui/filedetails/ShareDetailsPage.qml</file>
22-
<file>src/gui/filedetails/ShareeSearchField.qml</file>
23-
<file>src/gui/filedetails/ShareView.qml</file>
24-
<file>src/gui/tray/MainWindow.qml</file>
25-
<file>src/gui/tray/UserLine.qml</file>
26-
<file>src/gui/tray/HeaderButton.qml</file>
27-
<file>src/gui/tray/SyncStatus.qml</file>
28-
<file>src/gui/tray/ActivityItem.qml</file>
29-
<file>src/gui/tray/AutoSizingMenu.qml</file>
30-
<file>src/gui/tray/ActivityList.qml</file>
31-
<file>src/gui/tray/CurrentAccountHeaderButton.qml</file>
32-
<file>src/gui/tray/TrayWindowHeader.qml</file>
33-
<file>src/gui/tray/UnifiedSearchInputContainer.qml</file>
34-
<file>src/gui/tray/UnifiedSearchResultFetchMoreTrigger.qml</file>
35-
<file>src/gui/tray/UnifiedSearchResultItem.qml</file>
36-
<file>src/gui/tray/UnifiedSearchResultItemSkeleton.qml</file>
37-
<file>src/gui/tray/UnifiedSearchResultItemSkeletonContainer.qml</file>
38-
<file>src/gui/tray/UnifiedSearchResultItemSkeletonGradientRectangle.qml</file>
39-
<file>src/gui/tray/UnifiedSearchResultListItem.qml</file>
40-
<file>src/gui/tray/UnifiedSearchResultNothingFound.qml</file>
41-
<file>src/gui/tray/UnifiedSearchPlaceholderView.qml</file>
42-
<file>src/gui/tray/UnifiedSearchResultSectionItem.qml</file>
43-
<file>src/gui/tray/ActivityItemContextMenu.qml</file>
44-
<file>src/gui/tray/ActivityItemActions.qml</file>
45-
<file>src/gui/tray/ActivityItemContent.qml</file>
46-
<file>src/gui/tray/TalkReplyTextField.qml</file>
47-
<file>src/gui/tray/CallNotificationDialog.qml</file>
48-
<file>src/gui/tray/EditFileLocallyLoadingDialog.qml</file>
49-
<file>src/gui/tray/EncryptionTokenDiscoveryDialog.qml</file>
50-
<file>src/gui/tray/NCBusyIndicator.qml</file>
51-
<file>src/gui/tray/NCIconWithBackgroundImage.qml</file>
52-
<file>src/gui/tray/NCProgressBar.qml</file>
53-
<file>src/gui/tray/EnforcedPlainTextLabel.qml</file>
543
<file>theme/Style/Style.qml</file>
554
<file>theme/Style/qmldir</file>
56-
<file>src/gui/tray/ListItemLineAndSubline.qml</file>
57-
<file>src/gui/tray/TrayFoldersMenuButton.qml</file>
58-
<file>src/gui/tray/TrayFolderListItem.qml</file>
59-
<file>src/gui/ResolveConflictsDialog.qml</file>
60-
<file>src/gui/ConflictDelegate.qml</file>
61-
<file>src/gui/ConflictItemFileInfo.qml</file>
625
<file>src/gui/macOS/ui/FileProviderSettings.qml</file>
636
<file>src/gui/macOS/ui/FileProviderFileDelegate.qml</file>
647
</qresource>

src/3rdparty/kirigami/wheelhandler.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <QQuickItem>
1212
#include <QStyleHints>
1313
#include <QtQml>
14+
#include <qqmlregistration.h>
1415

1516
class QWheelEvent;
1617
class WheelHandler;
@@ -21,6 +22,7 @@ class WheelHandler;
2122
class KirigamiWheelEvent : public QObject
2223
{
2324
Q_OBJECT
25+
QML_NAMED_ELEMENT(WheelEvent)
2426

2527
/**
2628
* x: real

src/gui/CMakeLists.txt

Lines changed: 46 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -183,40 +183,7 @@ set(client_SRCS
183183
emojimodel.cpp
184184
syncconflictsmodel.h
185185
syncconflictsmodel.cpp
186-
fileactivitylistmodel.h
187-
fileactivitylistmodel.cpp
188-
filedetails/datefieldbackend.h
189-
filedetails/datefieldbackend.cpp
190-
filedetails/filedetails.h
191-
filedetails/filedetails.cpp
192-
filedetails/sharemodel.h
193-
filedetails/sharemodel.cpp
194-
filedetails/shareemodel.h
195-
filedetails/shareemodel.cpp
196-
filedetails/sortedsharemodel.h
197-
filedetails/sortedsharemodel.cpp
198-
tray/svgimageprovider.h
199-
tray/svgimageprovider.cpp
200-
tray/syncstatussummary.h
201-
tray/syncstatussummary.cpp
202-
tray/activitydata.h
203-
tray/activitydata.cpp
204-
tray/activitylistmodel.h
205-
tray/activitylistmodel.cpp
206-
tray/unifiedsearchresult.h
207-
tray/asyncimageresponse.cpp
208-
tray/unifiedsearchresult.cpp
209-
tray/unifiedsearchresultslistmodel.h
210-
tray/trayimageprovider.cpp
211-
tray/unifiedsearchresultslistmodel.cpp
212-
tray/usermodel.h
213-
tray/usermodel.cpp
214-
tray/notificationhandler.h
215-
tray/notificationhandler.cpp
216-
tray/sortedactivitylistmodel.h
217-
tray/sortedactivitylistmodel.cpp
218186
creds/credentialsfactory.h
219-
tray/talkreply.cpp
220187
creds/credentialsfactory.cpp
221188
creds/httpcredentialsgui.h
222189
creds/httpcredentialsgui.cpp
@@ -534,26 +501,41 @@ endif()
534501

535502
add_library(nextcloudCore STATIC ${final_src})
536503

537-
target_link_libraries(nextcloudCore
538-
PUBLIC
539-
Nextcloud::sync
540-
Qt::Widgets
541-
Qt::Svg
542-
Qt::Network
543-
Qt::Xml
544-
Qt::Qml
545-
Qt::Quick
546-
Qt::QuickControls2
547-
Qt::QuickWidgets
548-
KF6::Archive
549-
)
504+
qt_add_qml_module(nextcloudCore
505+
URI com.nextcloud.desktopclient
506+
IMPORTS
507+
com.nextcloud.desktopclient.tray
508+
com.nextcloud.desktopclient.filedetails
509+
QML_FILES
510+
UserStatusMessageView.qml
511+
UserStatusSelectorPage.qml
512+
EmojiPicker.qml
513+
UserStatusSelectorButton.qml
514+
UserStatusSetStatusView.qml
515+
PredefinedStatusButton.qml
516+
ErrorBox.qml
517+
)
550518

551-
if(KF6GuiAddons_FOUND)
552-
target_link_libraries(nextcloudCore
553-
PUBLIC
554-
KF6::GuiAddons
555-
)
556-
add_definitions(-DHAVE_KGUIADDONS)
519+
target_link_libraries(nextcloudCore PUBLIC
520+
Nextcloud::sync
521+
Qt::Widgets
522+
Qt::Svg
523+
Qt::Network
524+
Qt::Xml
525+
Qt::Qml
526+
Qt::Quick
527+
Qt::QuickControls2
528+
Qt::QuickWidgets
529+
KF6::Archive
530+
)
531+
532+
target_include_directories(nextcloudCore PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
533+
534+
if(TARGET KF6::GuiAddons)
535+
target_link_libraries(nextcloudCore PUBLIC
536+
KF6::GuiAddons
537+
)
538+
add_definitions(-DHAVE_KGUIADDONS)
557539
endif()
558540

559541
add_subdirectory(socketapi)
@@ -589,6 +571,9 @@ target_include_directories(nextcloudCore
589571
${CMAKE_CURRENT_SOURCE_DIR}
590572
)
591573

574+
add_subdirectory(tray)
575+
add_subdirectory(filedetails)
576+
592577
if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
593578
if(NOT WIN32)
594579
file(GLOB _icons "${theme_dir}/colored/*-${APPLICATION_ICON_NAME}-icon.png")
@@ -652,7 +637,15 @@ set_target_properties(nextcloud PROPERTIES
652637
RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY}
653638
)
654639

655-
target_link_libraries(nextcloud PRIVATE nextcloudCore)
640+
set_target_properties(nextcloud PROPERTIES POSITION_INDEPENDENT_CODE ON)
641+
target_link_libraries(nextcloud PRIVATE
642+
nextcloudTray
643+
nextcloudTrayplugin
644+
nextcloudFileDetails
645+
nextcloudFileDetailsplugin
646+
nextcloudCore
647+
nextcloudCoreplugin
648+
)
656649

657650
if(TARGET PkgConfig::CLOUDPROVIDERS)
658651
message("Building with libcloudproviderssupport")

src/gui/accountstate.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,3 +698,6 @@ QUrl AccountApp::iconUrl() const
698698
/*-------------------------------------------------------------------------------------*/
699699

700700
} // namespace OCC
701+
702+
Q_DECLARE_METATYPE(OCC::AccountState *)
703+
Q_DECLARE_METATYPE(OCC::AccountStatePtr)

src/gui/accountstate.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,4 @@ class AccountApp : public QObject
284284

285285
}
286286

287-
Q_DECLARE_METATYPE(OCC::AccountState *)
288-
Q_DECLARE_METATYPE(OCC::AccountStatePtr)
289-
290287
#endif //ACCOUNTINFO_H

src/gui/callstatechecker.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <QObject>
99
#include <QTimer>
10+
#include <qqmlregistration.h>
1011

1112
#include "networkjobs.h"
1213
#include "accountstate.h"
@@ -16,6 +17,7 @@ namespace OCC {
1617
class CallStateChecker : public QObject
1718
{
1819
Q_OBJECT
20+
QML_ELEMENT
1921
Q_PROPERTY(QString token READ token WRITE setToken NOTIFY tokenChanged)
2022
Q_PROPERTY(AccountState* accountState READ accountState WRITE setAccountState NOTIFY accountStateChanged)
2123
Q_PROPERTY(bool checking READ checking WRITE setChecking NOTIFY checkingChanged)

src/gui/emojimodel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class EmojiCategoriesModel : public QAbstractListModel
7575
class EmojiModel : public QObject
7676
{
7777
Q_OBJECT
78+
QML_ELEMENT
7879

7980
Q_PROPERTY(QVariantList model READ model NOTIFY modelChanged)
8081
Q_PROPERTY(QAbstractListModel *emojiCategoriesModel READ emojiCategoriesModel CONSTANT)

src/gui/filedetails/CMakeLists.txt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# SPDX-FileCopyrightText: 2025 Nextcloud GmbH
2+
# SPDX-FileContributor: Carl Schwan <[email protected]>
3+
# SPDX-License-Identifier: BSD-3-Clause
4+
5+
add_library(nextcloudFileDetails STATIC)
6+
7+
qt_add_qml_module(nextcloudFileDetails
8+
URI com.nextcloud.desktopclient.filedetails
9+
QML_FILES
10+
FileActivityView.qml
11+
FileDetailsPage.qml
12+
FileDetailsView.qml
13+
FileDetailsWindow.qml
14+
FileTag.qml
15+
NCInputDateField.qml
16+
NCInputTextArea.qml
17+
NCInputTextField.qml
18+
NCTabButton.qml
19+
ShareeDelegate.qml
20+
ShareDelegate.qml
21+
ShareDetailsPage.qml
22+
ShareeSearchField.qml
23+
ShareView.qml
24+
SOURCES
25+
datefieldbackend.h
26+
datefieldbackend.cpp
27+
filedetails.h
28+
filedetails.cpp
29+
sharemodel.h
30+
sharemodel.cpp
31+
shareemodel.h
32+
shareemodel.cpp
33+
sortedsharemodel.h
34+
sortedsharemodel.cpp
35+
)
36+
37+
target_link_libraries(nextcloudFileDetails PRIVATE nextcloudCore)

src/gui/filedetails/datefieldbackend.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <QDate>
99
#include <QObject>
10+
#include <qqmlregistration.h>
1011

1112
class TestDateFieldBackend;
1213

@@ -18,6 +19,7 @@ namespace Quick
1819
class DateFieldBackend : public QObject
1920
{
2021
Q_OBJECT
22+
QML_ELEMENT
2123

2224
Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY dateChanged)
2325
Q_PROPERTY(qint64 dateMsecs READ dateMsecs WRITE setDateMsecs NOTIFY dateMsecsChanged)

0 commit comments

Comments
 (0)