Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0d0bd6f8 authored by Nihar Thakkar's avatar Nihar Thakkar
Browse files

Show application images in horizontal scrolling list

parent dca03767
Loading
Loading
Loading
Loading
+41 −5
Original line number Diff line number Diff line
@@ -3,10 +3,12 @@ package io.eelo.appinstaller.application
import android.annotation.SuppressLint
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.text.Html
import android.util.DisplayMetrics
import android.view.Menu
import android.view.MenuItem
import android.view.View
@@ -20,10 +22,15 @@ import io.eelo.appinstaller.utils.Constants.APPLICATION_DESCRIPTION_KEY
import io.eelo.appinstaller.utils.Constants.APPLICATION_PACKAGE_NAME_KEY
import io.eelo.appinstaller.utils.Execute
import kotlinx.android.synthetic.main.activity_application.*
import java.text.DecimalFormat
import kotlin.math.roundToInt

class ApplicationActivity : AppCompatActivity(), ApplicationStateListener {
    private lateinit var application: Application
    private val installManagerGetter = InstallManagerGetter()
    private var imageWidth = 0
    private var imageHeight = 0
    private var imageMargin = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
@@ -34,6 +41,8 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener {
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.setDisplayShowTitleEnabled(false)

        initialiseDimensions()

        val applicationPackageName: String? = intent.getStringExtra(APPLICATION_PACKAGE_NAME_KEY)
        if (!applicationPackageName.isNullOrEmpty()) {
            initialise(applicationPackageName!!)
@@ -60,6 +69,17 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener {
        return true
    }

    private fun initialiseDimensions() {
        // Do some math and figure out item width, padding and margin
        val metrics = DisplayMetrics()
        windowManager.defaultDisplay.getMetrics(metrics)
        val logicalDensity = metrics.density

        imageWidth = Math.ceil(120 * logicalDensity.toDouble()).roundToInt()
        imageHeight = Math.ceil(210 * logicalDensity.toDouble()).roundToInt()
        imageMargin = Math.ceil(4 * logicalDensity.toDouble()).roundToInt()
    }

    private fun onApplicationInfoLoaded() {
        val basicData = application.basicData!!
        val fullData = application.fullData!!
@@ -118,14 +138,14 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener {
            startActivity(intent)
        }

        appRating.text = basicData.score.toString()
        val decimalFormat = DecimalFormat("##.0")
        appRating.text = decimalFormat.format(basicData.score).toString()
        appPrivacyScore.text = fullData.privacyScore.toString()
        appEnergyScore.text = fullData.energyScore.toString()

        /*if (application.data.images.isNotEmpty()) {
            // TODO Load app images/screenshots
            appImagesContainer.visibility = View.VISIBLE
        }*/
        basicData.loadImagesAsyncly {
            showImages(it)
        }

        application.addListener(this)
        stateChanged(application.state)
@@ -169,6 +189,22 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener {
        })
    }

    // TODO Handle landscape images better
    private fun showImages(images: List<Bitmap>) {
        val imagesContainer = app_images_container
        imagesContainer.removeAllViews()
        images.forEach {
            val imageView = ImageView(this)
            val layoutParams = LinearLayout.LayoutParams(imageWidth, imageHeight)
            layoutParams.leftMargin = imageMargin
            layoutParams.rightMargin = imageMargin
            imageView.layoutParams = layoutParams
            imageView.setImageBitmap(it)
            imagesContainer.addView(imageView)
        }
        imagesContainer.visibility = View.VISIBLE
    }

    override fun onDestroy() {
        super.onDestroy()
        installManagerGetter.disconnect(this)
+16 −12
Original line number Diff line number Diff line
@@ -27,9 +27,7 @@
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingStart="@dimen/layout_padding_medium"
            android:paddingTop="@dimen/layout_padding_large"
            android:paddingEnd="@dimen/layout_padding_medium"
            android:paddingBottom="@dimen/layout_padding_large">

            <LinearLayout
@@ -37,8 +35,8 @@
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:orientation="horizontal"
                android:paddingStart="@dimen/layout_padding_medium"
                android:paddingEnd="@dimen/layout_padding_medium">
                android:paddingStart="@dimen/layout_padding_large"
                android:paddingEnd="@dimen/layout_padding_large">

                <ImageView
                    android:id="@+id/app_icon"
@@ -94,8 +92,8 @@
                android:layout_marginTop="@dimen/layout_margin_medium"
                android:gravity="center_vertical|end"
                android:orientation="horizontal"
                android:paddingStart="@dimen/layout_padding_medium"
                android:paddingEnd="@dimen/layout_padding_medium">
                android:paddingStart="@dimen/layout_padding_large"
                android:paddingEnd="@dimen/layout_padding_large">

                <TextView
                    android:id="@+id/app_size"
@@ -127,7 +125,9 @@
            <View
                android:layout_width="match_parent"
                android:layout_height="@dimen/default_divider_height"
                android:layout_marginStart="@dimen/layout_margin_medium"
                android:layout_marginTop="@dimen/layout_margin_large"
                android:layout_marginEnd="@dimen/layout_margin_medium"
                android:background="@color/colorDivider" />

            <RelativeLayout
@@ -137,10 +137,7 @@
                android:background="?android:selectableItemBackground"
                android:clickable="true"
                android:focusable="true"
                android:paddingStart="@dimen/layout_padding_medium"
                android:paddingTop="@dimen/layout_padding_large"
                android:paddingEnd="@dimen/layout_padding_medium"
                android:paddingBottom="@dimen/layout_padding_large">
                android:padding="@dimen/layout_padding_large">

                <TextView
                    android:id="@+id/app_description"
@@ -168,6 +165,8 @@
            <View
                android:layout_width="match_parent"
                android:layout_height="@dimen/default_divider_height"
                android:layout_marginStart="@dimen/layout_margin_medium"
                android:layout_marginEnd="@dimen/layout_margin_medium"
                android:background="@color/colorDivider" />

            <LinearLayout
@@ -175,7 +174,8 @@
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/layout_margin_large"
                android:gravity="center"
                android:orientation="horizontal">
                android:orientation="horizontal"
                android:padding="@dimen/layout_padding_large">

                <LinearLayout
                    android:layout_width="wrap_content"
@@ -321,7 +321,9 @@
            <View
                android:layout_width="match_parent"
                android:layout_height="@dimen/default_divider_height"
                android:layout_marginStart="@dimen/layout_margin_medium"
                android:layout_marginTop="@dimen/layout_margin_large"
                android:layout_marginEnd="@dimen/layout_margin_medium"
                android:background="@color/colorDivider" />

            <HorizontalScrollView
@@ -334,7 +336,9 @@
                    android:id="@+id/app_images_container"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal" />
                    android:orientation="horizontal"
                    android:paddingStart="12dp"
                    android:paddingEnd="12dp" />

            </HorizontalScrollView>