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

Reply via email to