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.

It's *NOT* ready yet tough, for two reasons:
it needs also a patch in the cmake file used to deploy
https://github.com/LaurentGomila/qt-android-cmake/pull/8
so it depends on that being merged.

And it's only for Android so far, so this would break the iOS version.
I don't have iDevices so i don't know exactly what should be done, but
the procedure should be similar, building the kirigami repo
separatedly then install it somewhere to then get packaged with the
installed files ending up in the same location where the qt imports
from qt itself end up.

on windows/osx shouldn't be an issue as afaik only the desktop version
is build there

--
Marco Martin
From 114e27857b8f050cbb24365151baf89048e24c56 Mon Sep 17 00:00:00 2001
From: Marco Martin <[email protected]>
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 <[email protected]>
---
 CMakeLists.txt                          |  1 +
 mobile-widgets/qml/mobile-resources.qrc | 44 ---------------------------------
 packaging/android/build.sh              | 13 ++++++++++
 scripts/mobilecomponents.sh             | 30 +++++++++-------------
 4 files changed, 26 insertions(+), 62 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..8d6f11d 100644
--- a/packaging/android/build.sh
+++ b/packaging/android/build.sh
@@ -290,6 +290,18 @@ if [ ! -e $PKG_CONFIG_LIBDIR/libdivecomputer.pc ] ; then
 	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}/ \
+		$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
@@ -337,6 +349,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..e53df43 100755
--- a/scripts/mobilecomponents.sh
+++ b/scripts/mobilecomponents.sh
@@ -47,24 +47,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/
+mkdir -p $PMMC/icons
 
-# 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
-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
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to