The branch has been merged in master, the attanched patch to subsurface makes it correctly load with kirigami built in static mode
From 2a49e1e5fe7f4525bda6bf26326ea66a4cf3f3eb Mon Sep 17 00:00:00 2001 From: Marco Martin <[email protected]> Date: Wed, 22 Jun 2016 18:17:25 +0200 Subject: [PATCH] use kirigami built in static mode
now kirigami needs to be built from a C++ plugin. in cases of mobile operating systems such as iOS (and in a lesser measuse, Android) having a proper plugin loaded at runtime may be difficult, so statically link it together with all of its qml files compiled as a qresource inside the static library. Signed-off-by: Marco Martin <[email protected]> --- CMakeLists.txt | 4 +++ mobile-widgets/qml/mobile-resources.qrc | 58 ++++++++------------------------- packaging/android/build.sh | 7 ++++ scripts/build.sh | 10 ++++++ scripts/mobilecomponents.sh | 7 ++-- subsurface-mobile-helper.cpp | 5 +++ 6 files changed, 41 insertions(+), 50 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cc7db13..36665f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -235,12 +235,16 @@ if(${SUBSURFACE_TARGET_EXECUTABLE} MATCHES "MobileExecutable") else() add_executable(${SUBSURFACE_TARGET} MACOSX_BUNDLE WIN32 ${SUBSURFACE_PKG} ${MOBILE_SRC} ${SUBSURFACE_RESOURCES} ${MOBILE_RESOURCES}) endif() + ADD_LIBRARY(kirigami_static_library STATIC IMPORTED) + SET_TARGET_PROPERTIES(kirigami_static_library PROPERTIES + IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/mobile-widgets/qml/kirigami/build/src/libkirigamiplugin.a) target_link_libraries( ${SUBSURFACE_TARGET} subsurface_profile subsurface_models subsurface_corelib ${SUBSURFACE_LINK_LIBRARIES} + kirigami_static_library ) elseif(${SUBSURFACE_TARGET_EXECUTABLE} MATCHES "DesktopExecutable") set(SUBSURFACE_APP diff --git a/mobile-widgets/qml/mobile-resources.qrc b/mobile-widgets/qml/mobile-resources.qrc index 6983533..b95ce41 100644 --- a/mobile-widgets/qml/mobile-resources.qrc +++ b/mobile-widgets/qml/mobile-resources.qrc @@ -23,50 +23,18 @@ <file alias="menu-back.png">icons/menu-back.png</file> <file alias="nocloud.svg">icons/nocloud.svg</file> </qresource> - <qresource prefix="/imports"> - <file alias="org/kde/kirigami/qmldir">kirigami/qmldir</file> - <file alias="org/kde/kirigami/Action.qml">kirigami/Action.qml</file> - <file alias="org/kde/kirigami/ApplicationWindow.qml">kirigami/ApplicationWindow.qml</file> - <file alias="org/kde/kirigami/BasicListItem.qml">kirigami/BasicListItem.qml</file> - <file alias="org/kde/kirigami/GlobalDrawer.qml">kirigami/GlobalDrawer.qml</file> - <file alias="org/kde/kirigami/ContextDrawer.qml">kirigami/ContextDrawer.qml</file> - <file alias="org/kde/kirigami/Page.qml">kirigami/Page.qml</file> - <file alias="org/kde/kirigami/ScrollablePage.qml">kirigami/ScrollablePage.qml</file> - <file alias="org/kde/kirigami/Icon.qml">kirigami/Icon.qml</file> - <file alias="org/kde/kirigami/Heading.qml">kirigami/Heading.qml</file> - <file alias="org/kde/kirigami/OverlaySheet.qml">kirigami/OverlaySheet.qml</file> - <file alias="org/kde/kirigami/ApplicationHeader.qml">kirigami/ApplicationHeader.qml</file> - <file alias="org/kde/kirigami/AbstractApplicationHeader.qml">kirigami/AbstractApplicationHeader.qml</file> - <file alias="org/kde/kirigami/AbstractApplicationWindow.qml">kirigami/AbstractApplicationWindow.qml</file> - <file alias="org/kde/kirigami/private/PageRow.qml">kirigami/private/PageRow.qml</file> - <file alias="org/kde/kirigami/Label.qml">kirigami/Label.qml</file> - <file alias="org/kde/kirigami/AbstractListItem.qml">kirigami/AbstractListItem.qml</file> - <file alias="org/kde/kirigami/SwipeListItem.qml">kirigami/SwipeListItem.qml</file> - <file alias="org/kde/kirigami/OverlayDrawer.qml">kirigami/OverlayDrawer.qml</file> - <file alias="org/kde/kirigami/Theme.qml">kirigami/Theme.qml</file> - <file alias="org/kde/kirigami/Units.qml">kirigami/Units.qml</file> - <file alias="org/kde/kirigami/private/AbstractDrawer.qml">kirigami/private/AbstractDrawer.qml</file> - <file alias="org/kde/kirigami/private/ActionButton.qml">kirigami/private/ActionButton.qml</file> - <file alias="org/kde/kirigami/private/BackButton.qml">kirigami/private/BackButton.qml</file> - <file alias="org/kde/kirigami/private/ContextIcon.qml">kirigami/private/ContextIcon.qml</file> - <file alias="org/kde/kirigami/private/CornerShadow.qml">kirigami/private/CornerShadow.qml</file> - <file alias="org/kde/kirigami/private/DefaultListItemBackground.qml">kirigami/private/DefaultListItemBackground.qml</file> - <file alias="org/kde/kirigami/private/EdgeShadow.qml">kirigami/private/EdgeShadow.qml</file> - <file alias="org/kde/kirigami/private/MenuIcon.qml">kirigami/private/MenuIcon.qml</file> - <file alias="org/kde/kirigami/private/PageActionPropertyGroup.qml">kirigami/private/PageActionPropertyGroup.qml</file> - <file alias="org/kde/kirigami/private/PassiveNotification.qml">kirigami/private/PassiveNotification.qml</file> - <file alias="org/kde/kirigami/private/RefreshableScrollView.qml">kirigami/private/RefreshableScrollView.qml</file> - <file alias="org/kde/kirigami/icons/go-next.svg">kirigami/icons/go-next.svg</file> - <file alias="org/kde/kirigami/icons/go-previous.svg">kirigami/icons/go-previous.svg</file> - <file alias="org/kde/kirigami/icons/handle-left.svg">kirigami/icons/handle-left.svg</file> - <file alias="org/kde/kirigami/icons/distribute-horizontal-x.svg">kirigami/icons/distribute-horizontal-x.svg</file> - <file alias="org/kde/kirigami/icons/document-edit.svg">kirigami/icons/document-edit.svg</file> - <file alias="org/kde/kirigami/icons/document-save.svg">kirigami/icons/document-save.svg</file> - <file alias="org/kde/kirigami/icons/view-readermode.svg">kirigami/icons/view-readermode.svg</file> - <file alias="org/kde/kirigami/icons/dialog-cancel.svg">kirigami/icons/dialog-cancel.svg</file> - <file alias="org/kde/kirigami/icons/application-menu.svg">kirigami/icons/application-menu.svg</file> - <file alias="org/kde/kirigami/icons/gps.svg">kirigami/icons/gps.svg</file> - <file alias="org/kde/kirigami/icons/trash-empty.svg">kirigami/icons/trash-empty.svg</file> - <file alias="org/kde/kirigami/icons/list-add.svg">kirigami/icons/list-add.svg</file> + <qresource prefix="/"> + <file alias="icons/go-next.svg">kirigami/icons/go-next.svg</file> + <file alias="icons/go-previous.svg">kirigami/icons/go-previous.svg</file> + <file alias="icons/handle-left.svg">kirigami/icons/handle-left.svg</file> + <file alias="icons/distribute-horizontal-x.svg">kirigami/icons/distribute-horizontal-x.svg</file> + <file alias="icons/document-edit.svg">kirigami/icons/document-edit.svg</file> + <file alias="icons/document-save.svg">kirigami/icons/document-save.svg</file> + <file alias="icons/view-readermode.svg">kirigami/icons/view-readermode.svg</file> + <file alias="icons/dialog-cancel.svg">kirigami/icons/dialog-cancel.svg</file> + <file alias="icons/application-menu.svg">kirigami/icons/application-menu.svg</file> + <file alias="icons/gps.svg">kirigami/icons/gps.svg</file> + <file alias="icons/trash-empty.svg">kirigami/icons/trash-empty.svg</file> + <file alias="icons/list-add.svg">kirigami/icons/list-add.svg</file> </qresource> </RCC> diff --git a/packaging/android/build.sh b/packaging/android/build.sh index 3b796b8..bc727de 100644 --- a/packaging/android/build.sh +++ b/packaging/android/build.sh @@ -312,6 +312,13 @@ if [ "$SUBSURFACE_MOBILE" = "ON" ] ; then pushd $SUBSURFACE_SOURCE bash ./scripts/mobilecomponents.sh popd + + cd $SUBSURFACE_SOURCE/mobile-widgets/qml/kirigami/ + mkdir -p build + cd build + cmake .. -DSTATIC_LIBRARY=ON + make -j4 + make install fi if [ ! -z "$SUBSURFACE_MOBILE" ] ; then diff --git a/scripts/build.sh b/scripts/build.sh index 014d2d3..635f1b1 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -211,6 +211,9 @@ if [ "$BUILDGRANTLEE" = "1" ] ; then make install fi + + + # finally, build Subsurface if [ $PLATFORM = Darwin ] ; then @@ -229,6 +232,13 @@ for (( i=0 ; i < ${#BUILDS[@]} ; i++ )) ; do if [ "$SUBSURFACE_EXECUTABLE" = "MobileExecutable" ] ; then cd $SRC/subsurface bash ./scripts/mobilecomponents.sh + + cd $SRC/subsurface/mobile-widgets/qml/kirigami/ + mkdir -p build + cd build + cmake .. -DSTATIC_LIBRARY=ON + make -j4 + make install fi mkdir -p $SRC/subsurface/$BUILDDIR diff --git a/scripts/mobilecomponents.sh b/scripts/mobilecomponents.sh index ec1e97f..25f1cc1 100755 --- a/scripts/mobilecomponents.sh +++ b/scripts/mobilecomponents.sh @@ -31,6 +31,7 @@ fi if [ "$NOPULL" = "" ] ; then pushd kirigami git pull + git checkout mart/runtimeTheme popd fi if [ ! -d breeze-icons ] ; then @@ -44,16 +45,12 @@ fi # now copy the components and a couple of icons into plae MC=$SRC/subsurface/mobile-widgets/qml/kirigami -PMMC=kirigami/src/qml +PMMC=kirigami BREEZE=breeze-icons rm -rf $MC mkdir -p $MC/icons cp -R $PMMC/* $MC/ -cp $PMMC/../fallbacktheme/*qml $MC/ - -# fix plugin requirement -sed -i -e 's/^plugin kirigamiplugin/# plugin kirigamiplugin/' $MC/qmldir cp $BREEZE/icons/actions/24/dialog-cancel.svg $MC/icons cp $BREEZE/icons/actions/24/distribute-horizontal-x.svg $MC/icons diff --git a/subsurface-mobile-helper.cpp b/subsurface-mobile-helper.cpp index 2093af9..d038336 100644 --- a/subsurface-mobile-helper.cpp +++ b/subsurface-mobile-helper.cpp @@ -21,6 +21,9 @@ #include "qt-models/gpslistmodel.h" #include "mobile-widgets/qmlprofile.h" +#define KIRIGAMI_BUILD_TYPE_STATIC +#include "mobile-widgets/qml/kirigami/src/kirigamiplugin.h" + QObject *qqWindowObject = NULL; void init_ui() @@ -32,7 +35,9 @@ void run_ui() { qmlRegisterType<QMLManager>("org.subsurfacedivelog.mobile", 1, 0, "QMLManager"); qmlRegisterType<QMLProfile>("org.subsurfacedivelog.mobile", 1, 0, "QMLProfile"); + QQmlApplicationEngine engine; + KirigamiPlugin::getInstance().registerTypes(); #if __APPLE__ // when running the QML UI on a Mac the deployment of the QML Components seems // to fail and the search path for the components is rather odd - simply the -- 2.6.2
_______________________________________________ subsurface mailing list [email protected] http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface
