On Thu, May 5, 2016 at 5:27 PM, Marco Martin <notm...@gmail.com> wrote: > Hi all, > at this point it's being a bit of a problem for me not being able to > add any C++ part in kirigami, since i cannot do a qml plugin (or > subsurface would break) > We included it as qrc resources in the beginning in order to make > something that worked quickly, but in the end it should be a normal > plugin on every platform. > This patch does that for android, it should also make things a bit > simpler, as removes the burden of maintaining the list of resources > updated.
Second version of the patch: it solves a couple of problems it had and now depends from a branch i have in kirigami: mart/runtimeTheme that uses the environment variable QT_QUICK_CONTROLS_STYLE that Qtquickcontrols are using to select the style. It doesn't directly affect subsurface yet as look/behavior (in the futuresome component may get personalized with material/ios look), except that now this patch would be needed in order for subsurface to work with upstream kirigami (that's why i am still waiting in order to merge) the patch now uses two cmake options in kirigami that make it not even search for the optional dependencies, so shouldn't spam with scary $foo not found messages at configure time anymore -- Marco Martin
From 10071df6d39ff6a079fb9cf2880a995c735cf69a Mon Sep 17 00:00:00 2001 From: Marco Martin <notm...@gmail.com> Date: Thu, 5 May 2016 16:27:37 +0200 Subject: [PATCH] Use the proper QML plugin for kirigami As a quick and dirty solution the kirigami components were directly embedded in the application as qrc resources, this made not possible to have a C++ portion of the plugin and caused a breakage every time a qml file was added upstream (not being listed in the qrc) this changes the deployment procedure by using the android-extra-plugins concept in the deploy json file. this deploys the installed kirigami plugin (and icons that were manually added beforehand) in the apk Signed-off-by: Marco Martin <notm...@gmail.com> --- CMakeLists.txt | 1 + mobile-widgets/qml/mobile-resources.qrc | 44 --------------------------------- packaging/android/build.sh | 39 ++++++++++++++++++++++++----- scripts/mobilecomponents.sh | 40 ++++++++++++++++-------------- 4 files changed, 56 insertions(+), 68 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cc7db13..32ac7a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -326,6 +326,7 @@ if(ANDROID) include(${QT_ANDROID_CMAKE}) add_qt_android_apk(${SUBSURFACE_TARGET}.apk ${SUBSURFACE_TARGET} PACKAGE_SOURCES ${CMAKE_BINARY_DIR}/android-mobile + EXTRA_PLUGINS "${CMAKE_INSTALL_PREFIX}/lib/qml" ) elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") set(APP_BUNDLE_DIR "${SUBSURFACE_TARGET}.app") diff --git a/mobile-widgets/qml/mobile-resources.qrc b/mobile-widgets/qml/mobile-resources.qrc index 85b8fbc..0476c1f 100644 --- a/mobile-widgets/qml/mobile-resources.qrc +++ b/mobile-widgets/qml/mobile-resources.qrc @@ -23,48 +23,4 @@ <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/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/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> </RCC> diff --git a/packaging/android/build.sh b/packaging/android/build.sh index 2213780..6447ad5 100644 --- a/packaging/android/build.sh +++ b/packaging/android/build.sh @@ -290,6 +290,38 @@ if [ ! -e $PKG_CONFIG_LIBDIR/libdivecomputer.pc ] ; then popd fi +if [ "$SUBSURFACE_MOBILE" = "ON" ] ; then + pushd $SUBSURFACE_SOURCE + bash ./scripts/mobilecomponents.sh + popd +fi + +if [ ! -e extra-cmake-modules-build-$ARCH ] ; then + mkdir -p extra-cmake-modules-build-$ARCH + pushd extra-cmake-modules-build-$ARCH + cmake -DCMAKE_SYSTEM_NAME=Android \ + -DCMAKE_INSTALL_PREFIX=${PREFIX} \ + -DCMAKE_PREFIX_PATH=${QT5_ANDROID}/android_${QT_ARCH}/ \ + $SUBSURFACE_SOURCE/../extra-cmake-modules/ + make + make install + popd +fi + +if [ ! -e kirigami-build-$ARCH ] ; then + mkdir -p kirigami-build-$ARCH + pushd kirigami-build-$ARCH + cmake -DCMAKE_SYSTEM_NAME=Android \ + -DCMAKE_INSTALL_PREFIX=${PREFIX} \ + -DCMAKE_PREFIX_PATH=${QT5_ANDROID}/android_${QT_ARCH}/ \ + -DPLASMA_ENABLED=OFF \ + -DDESKTOP_ENABLED=OFF \ + $SUBSURFACE_SOURCE/../kirigami/ + make + make install + popd +fi + if [ ! -e qt-android-cmake ] ; then git clone git://github.com/LaurentGomila/qt-android-cmake.git else @@ -306,12 +338,6 @@ else SUBSURFACE_MOBILE="ON" fi -if [ "$SUBSURFACE_MOBILE" = "ON" ] ; then - pushd $SUBSURFACE_SOURCE - bash ./scripts/mobilecomponents.sh - popd -fi - if [ ! -z "$SUBSURFACE_MOBILE" ] ; then mkdir -p subsurface-mobile-build-$ARCH cd subsurface-mobile-build-$ARCH @@ -337,6 +363,7 @@ cmake $MOBILE_CMAKE \ -DPKG_CONFIG_EXECUTABLE=${PKGCONF} \ -DQT_ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT \ -DQT_ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT \ + -DCMAKE_INSTALL_PREFIX=${PREFIX} \ -DCMAKE_TOOLCHAIN_FILE=$BUILDROOT/qt-android-cmake/toolchain/android.toolchain.cmake \ -DQT_ANDROID_CMAKE=$BUILDROOT/qt-android-cmake/AddQtAndroidApk.cmake \ -DFORCE_LIBSSH=ON \ diff --git a/scripts/mobilecomponents.sh b/scripts/mobilecomponents.sh index d406f71..1908457 100755 --- a/scripts/mobilecomponents.sh +++ b/scripts/mobilecomponents.sh @@ -25,6 +25,16 @@ fi # as we get closer to shipping a production version we'll likely check out specific tags # or SHAs from upstream cd $SRC + +if [ ! -d extra-cmake-modules ] ; then + git clone git://github.com/KDE/extra-cmake-modules +fi +if [ "$NOPULL" = "" ] ; then + pushd extra-cmake-modules + git pull + popd +fi + if [ ! -d kirigami ] ; then git clone git://github.com/KDE/kirigami fi @@ -47,24 +57,18 @@ MC=$SRC/subsurface/mobile-widgets/qml/kirigami PMMC=kirigami/src/qml 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 +mkdir -p $PMMC/icons -cp $BREEZE/icons/actions/24/dialog-cancel.svg $MC/icons -cp $BREEZE/icons/actions/24/distribute-horizontal-x.svg $MC/icons -cp $BREEZE/icons/actions/24/document-edit.svg $MC/icons -cp $BREEZE/icons/actions/24/document-save.svg $MC/icons -cp $BREEZE/icons/actions/24/go-next.svg $MC/icons -cp $BREEZE/icons/actions/24/go-previous.svg $MC/icons -cp $BREEZE/icons/actions/16/view-readermode.svg $MC/icons -cp $BREEZE/icons/actions/24/application-menu.svg $MC/icons -cp $BREEZE/icons/actions/22/gps.svg $MC/icons -cp $BREEZE/icons/actions/24/trash-empty.svg $MC/icons -cp $BREEZE/icons/actions/24/list-add.svg $MC/icons +cp $BREEZE/icons/actions/24/dialog-cancel.svg $PMMC/icons +cp $BREEZE/icons/actions/24/distribute-horizontal-x.svg $PMMC/icons +cp $BREEZE/icons/actions/24/document-edit.svg $PMMC/icons +cp $BREEZE/icons/actions/24/document-save.svg $PMMC/icons +cp $BREEZE/icons/actions/24/go-next.svg $PMMC/icons +cp $BREEZE/icons/actions/24/go-previous.svg $PMMC/icons +cp $BREEZE/icons/actions/16/view-readermode.svg $PMMC/icons +cp $BREEZE/icons/actions/24/application-menu.svg $PMMC/icons +cp $BREEZE/icons/actions/22/gps.svg $PMMC/icons +cp $BREEZE/icons/actions/24/trash-empty.svg $PMMC/icons +cp $BREEZE/icons/actions/24/list-add.svg $PMMC/icons echo org.kde.plasma.kirigami synced from upstream -- 2.1.4
_______________________________________________ subsurface mailing list subsurface@subsurface-divelog.org http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface