Skip to content

Commit bd26113

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

29 files changed

+290
-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: 47 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,42 @@ 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.nextcloud.tray
508+
com.nextcloud.desktopclient.nextcloud.filedetails
509+
com.nextcloud.desktopclient.nextcloud.macos
510+
QML_FILES
511+
UserStatusMessageView.qml
512+
UserStatusSelectorPage.qml
513+
EmojiPicker.qml
514+
UserStatusSelectorButton.qml
515+
UserStatusSetStatusView.qml
516+
PredefinedStatusButton.qml
517+
ErrorBox.qml
518+
)
550519

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

559542
add_subdirectory(socketapi)
@@ -589,6 +572,9 @@ target_include_directories(nextcloudCore
589572
${CMAKE_CURRENT_SOURCE_DIR}
590573
)
591574

575+
add_subdirectory(tray)
576+
add_subdirectory(filedetails)
577+
592578
if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
593579
if(NOT WIN32)
594580
file(GLOB _icons "${theme_dir}/colored/*-${APPLICATION_ICON_NAME}-icon.png")
@@ -652,7 +638,15 @@ set_target_properties(nextcloud PROPERTIES
652638
RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY}
653639
)
654640

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

657651
if(TARGET PkgConfig::CLOUDPROVIDERS)
658652
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/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.nextcloud.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)

src/gui/filedetails/filedetails.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <QFileSystemWatcher>
1010
#include <QLocale>
1111
#include <QTimer>
12+
#include <qqmlregistration.h>
1213

1314
#include "common/syncjournalfilerecord.h"
1415

@@ -21,6 +22,7 @@ class Folder;
2122
class FileDetails : public QObject
2223
{
2324
Q_OBJECT
25+
QML_ELEMENT
2426
Q_PROPERTY(QString localPath READ localPath WRITE setLocalPath NOTIFY localPathChanged)
2527
Q_PROPERTY(QString name READ name NOTIFY fileChanged)
2628
Q_PROPERTY(QString sizeString READ sizeString NOTIFY fileChanged)

src/gui/filedetails/shareemodel.h

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

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

1112
#include "accountstate.h"
1213
#include "sharee.h"
@@ -19,6 +20,7 @@ namespace OCC {
1920
class ShareeModel : public QAbstractListModel
2021
{
2122
Q_OBJECT
23+
QML_ELEMENT
2224
Q_PROPERTY(AccountState* accountState READ accountState WRITE setAccountState NOTIFY accountStateChanged)
2325
Q_PROPERTY(bool shareItemIsFolder READ shareItemIsFolder WRITE setShareItemIsFolder NOTIFY shareItemIsFolderChanged)
2426
Q_PROPERTY(QString searchString READ searchString WRITE setSearchString NOTIFY searchStringChanged)

0 commit comments

Comments
 (0)