# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit eutils fdo-mime

DESCRIPTION="XnView MP image viewer/editor/batch converter"
HOMEPAGE="http://www.xnview.com/"

MY_V=${PV/./}
## x86 platform is not supported now for this version
SRC_URI="http://download.xnview.com/old_versions/XnViewMP-${MY_V}-linux-x64.tgz"

SLOT="0"
LICENSE="free-noncomm"
KEYWORDS="~amd64"
# Audio/Video support could be added by installation of "media-plugins/gst-plugins-meta:0.10" with appropriate USE-flags
# and maybe by installation of additional "media-plugins/gst-plugins-*:0.10" that are not part of gst-plugins-meta:0.10.
# The USE-flag "gstreamer" is used to install "media-plugins/gst-plugins-meta:0.10"
IUSE="bundled-libs gstreamer pulseaudio sensors"
REQUIRED_USE="bundled-libs? ( !sensors )"
RESTRICT="strip"

BUNDLED_LIBS="
	libQt5Core.so.5		libQt5Core.so.5.9.3
	libQt5Gui.so.5		libQt5Gui.so.5.9.3
	libQt5XcbQpa.so.5	libQt5XcbQpa.so.5.9.3
	libQt5Multimedia.so.5	libQt5Multimedia.so.5.9.3
	libQt5MultimediaWidgets.so.5	libQt5MultimediaWidgets.so.5.9.3
	libQt5DBus.so.5		libQt5DBus.so.5.9.3
	libQt5Network.so.5	libQt5Network.so.5.9.3
	libQt5PrintSupport.so.5	libQt5PrintSupport.so.5.9.3
	libQt5Svg.so.5		libQt5Svg.so.5.9.3
	libQt5OpenGL.so.5	libQt5OpenGL.so.5.9.3
	libQt5Positioning.so.5	libQt5Positioning.so.5.9.3
	libQt5Qml.so.5		libQt5Qml.so.5.9.3
	libQt5Quick.so.5	libQt5Quick.so.5.9.3
	libQt5Sensors.so.5	libQt5Sensors.so.5.9.3
	libQt5Sql.so.5		libQt5Sql.so.5.9.3
	libQt5WebChannel.so.5	libQt5WebChannel.so.5.9.3
	libQt5WebKit.so.5	libQt5WebKit.so.5.9.0
	libQt5WebKitWidgets.so.5	libQt5WebKitWidgets.so.5.9.0
	libQt5Widgets.so.5	libQt5Widgets.so.5.9.3
	libQt5X11Extras.so.5	libQt5X11Extras.so.5.9.3
	libQt5Xml.so.5		libQt5Xml.so.5.9.3
	libQt5Concurrent.so.5	libQt5Concurrent.so.5.9.3
	libicudata.so	libicudata.so.56	libicudata.so.56.1
	libicui18n.so	libicui18n.so.56	libicui18n.so.56.1
	libicuio.so	libicuio.so.56		libicuio.so.56.1
	libicule.so	libicule.so.56		libicule.so.56.1
	libiculx.so	libiculx.so.56		libiculx.so.56.1
	libicutest.so	libicutest.so.56	libicutest.so.56.1
	libicutu.so	libicutu.so.56		libicutu.so.56.1
	libicuuc.so	libicuuc.so.56		libicuuc.so.56.1
"

BUNDLED_LIBS_DEPEND="dev-qt/qtcore:5
	dev-qt/qtgui:5
	dev-qt/qtmultimedia:5[widgets]
	dev-qt/qtwidgets:5
	dev-qt/qtnetwork:5
	dev-qt/qtprintsupport:5
	sensors? ( dev-qt/qtsensors:5 )
	dev-qt/qtsvg:5
	dev-qt/qtx11extras:5
	dev-qt/qtconcurrent:5
	dev-qt/qtxml:5
	dev-qt/qtopengl:5
	dev-qt/qtsql:5
	dev-qt/qtdbus:5
	dev-qt/qtwebkit:5
	dev-libs/icu"

# With "bundled-libs" USE-flag the "libpulse.so.0" is required to run aplication
# so pulseaudio or apulse have be installed in this case.
# If set USE-flag to "-bundled-libs" then application starts without "libpulse.so.0".
RDEPEND=">=dev-libs/glib-2
	x11-libs/libX11
	x11-libs/libXi
	x11-libs/libXt
	!bundled-libs? ( ${BUNDLED_LIBS_DEPEND} )
	bundled-libs? (
		pulseaudio? ( media-sound/pulseaudio )
		!pulseaudio? ( >=media-sound/apulse-0.1.11 ) )
	gstreamer? ( media-plugins/gst-plugins-meta:0.10 )"

DEPEND=""

S="${WORKDIR}/XnView"

src_prepare() {
	default

	if ! use bundled-libs ; then
		einfo Removing bundled libraries
		for libname in ${BUNDLED_LIBS} ; do
			rm -rv "${S}"/lib/${libname} || die "Failed removing bundled ${libname}"
		done
	fi

	# Remove some libs if gstreamer isn't used
	# to avoid "existing preserved libs" warning message
	if ! use gstreamer; then
		rm -rv "${S}/lib/libqgsttools_p.so.1.0.0"
		rm -rv "${S}/lib/libqgsttools_p.so.1"
		rm -rv "${S}/lib/libqgsttools_p.so"
		rm -rv "${S}/lib/mediaservice"
	fi
}

src_install() {
	declare XNVIEW_HOME=/opt/XnView

	# Install XnView in /opt
	dodir ${XNVIEW_HOME%/*}
	mv "${S}" "${D}"${XNVIEW_HOME} || die "Unable to install XnView folder"

	# Create /opt/bin/xnview
	dodir /opt/bin/
	dosym ${XNVIEW_HOME}/xnview.sh /opt/bin/xnview
	if use bundled-libs && ! use pulseaudio; then
		dosym ../../../usr/lib/apulse/libpulse.so.0 ${XNVIEW_HOME}/lib/libpulse.so.0
		dosym ../../../usr/lib/apulse/libpulse-mainloop-glib.so.0 ${XNVIEW_HOME}/lib/libpulse-mainloop-glib.so.0
	fi

	# Install icon and .desktop for menu entry
	newicon "${D}"${XNVIEW_HOME}/xnview.png ${PN}.png
	make_desktop_entry xnview XnViewMP ${PN} "Graphics" || die "desktop file sed failed"
}

pkg_postinst(){
	fdo-mime_desktop_database_update
	fdo-mime_mime_database_update

	elog "NOTE:"
	elog "You should install appropriate gstreamer plugins"
	elog "(media-plugins/gst-plugins-meta:0.10 OR/AND media-plugins/gst-plugins-*:0.10)"
	elog "if you want to have support of several audio and video formats in xnviewmp."

	einfo "XnView MP is provided as FREEWARE for private or educational use (including non-profit organizations)."
	einfo "If you intend to use XnView for commercial purposes you need to purchase a license."
}