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

Commit 235be956 authored by Hasib Prince's avatar Hasib Prince
Browse files

Merge branch '5123_installbutton_color_applist' into epic_176-all-refactorAndGplay

parents ac5bf6ef e920275b
Loading
Loading
Loading
Loading
+116 −49
Original line number Diff line number Diff line
@@ -153,49 +153,53 @@ class ApplicationListRVAdapter(
            }
            when (searchApp.status) {
                Status.INSTALLED -> {
                    installButton.apply {
                        isEnabled = true
                        text = context.getString(R.string.open)
                        setTextColor(Color.WHITE)
                        backgroundTintList =
                            ContextCompat.getColorStateList(view.context, R.color.colorAccent)
                        setOnClickListener {
                            context.startActivity(pkgManagerModule.getLaunchIntent(searchApp.package_name))
                    handleInstalled(view, searchApp)
                }
                Status.UPDATABLE -> {
                    handleUpdatable(view, searchApp)
                }
                Status.UNAVAILABLE -> {
                    handleUnavailable(view, searchApp)
                }
                Status.UPDATABLE -> {
                    installButton.apply {
                        text = context.getString(R.string.update)
                        setTextColor(Color.WHITE)
                        backgroundTintList =
                            ContextCompat.getColorStateList(view.context, R.color.colorAccent)
                        setOnClickListener {
                            installApplication(searchApp, appIcon)
                Status.QUEUED, Status.AWAITING, Status.DOWNLOADING -> {
                    handleDownloading(view, searchApp)
                }
                Status.INSTALLING, Status.UNINSTALLING -> {
                    handleInstalling(view)
                }
                Status.BLOCKED -> {
                    handleBlocked(view)
                }
                Status.UNAVAILABLE -> {
                    installButton.apply {
                        text = context.getString(R.string.install)
                        setOnClickListener {
                            installApplication(searchApp, appIcon)
                Status.INSTALLATION_ISSUE -> {
                    handleInstallationIssue(view, searchApp)
                }
            }

            showCalculatedPrivacyScoreData(searchApp, view)
        }
                Status.QUEUED, Status.AWAITING, Status.DOWNLOADING -> {
    }

    private fun ApplicationListItemBinding.handleInstallationIssue(
        view: View,
        searchApp: FusedApp
    ) {
        installButton.apply {
                        text = context.getString(R.string.cancel)
            isEnabled = true
            text = view.context.getString(R.string.retry)
            setTextColor(context.getColor(R.color.colorAccent))
            backgroundTintList =
                ContextCompat.getColorStateList(view.context, android.R.color.transparent)
            strokeColor = ContextCompat.getColorStateList(view.context, R.color.colorAccent)
            setOnClickListener {
                            cancelDownload(searchApp)
                        }
                installApplication(searchApp, appIcon)
            }
        }
                Status.INSTALLING, Status.UNINSTALLING -> {
                    installButton.isEnabled = false
    }
                Status.BLOCKED -> {
                    installButton.setOnClickListener {

    private fun ApplicationListItemBinding.handleBlocked(view: View) {
        installButton.apply {
            isEnabled = true
            setOnClickListener {
                val errorMsg = when (user) {
                    User.ANONYMOUS,
                    User.UNAVAILABLE -> view.context.getString(R.string.install_blocked_anonymous)
@@ -206,18 +210,6 @@ class ApplicationListRVAdapter(
                }
            }
        }
                Status.INSTALLATION_ISSUE -> {
                    installButton.apply {
                        text = view.context.getString(R.string.retry)
                        setOnClickListener {
                            installApplication(searchApp, appIcon)
                        }
                    }
                }
            }

            showCalculatedPrivacyScoreData(searchApp, view)
        }
    }

    private fun ApplicationListItemBinding.showCalculatedPrivacyScoreData(
@@ -270,8 +262,83 @@ class ApplicationListRVAdapter(
        appPrivacyScore.visibility = View.VISIBLE
    }

    private fun ApplicationListItemBinding.handleInstalling(view: View) {
        installButton.apply {
            isEnabled = false
            setTextColor(context.getColor(R.color.light_grey))
            backgroundTintList =
                ContextCompat.getColorStateList(view.context, android.R.color.transparent)
            strokeColor = ContextCompat.getColorStateList(view.context, R.color.light_grey)
        }
    }

    private fun ApplicationListItemBinding.handleDownloading(view: View, searchApp: FusedApp) {
        installButton.apply {
            isEnabled = true
            text = context.getString(R.string.cancel)
            setTextColor(context.getColor(R.color.colorAccent))
            backgroundTintList =
                ContextCompat.getColorStateList(view.context, android.R.color.transparent)
            strokeColor = ContextCompat.getColorStateList(view.context, R.color.colorAccent)
            setOnClickListener {
                cancelDownload(searchApp)
            }
        }
    }

    private fun ApplicationListItemBinding.handleUnavailable(view: View, searchApp: FusedApp) {
        installButton.apply {
            isEnabled = true
            text = context.getString(R.string.install)
            setTextColor(context.getColor(R.color.colorAccent))
            backgroundTintList =
                ContextCompat.getColorStateList(view.context, android.R.color.transparent)
            strokeColor = ContextCompat.getColorStateList(view.context, R.color.colorAccent)
            setOnClickListener {
                installApplication(searchApp, appIcon)
            }
        }
    }

    private fun ApplicationListItemBinding.handleUpdatable(
        view: View,
        searchApp: FusedApp
    ) {
        installButton.apply {
            isEnabled = true
            text = context.getString(R.string.update)
            setTextColor(Color.WHITE)
            backgroundTintList = ContextCompat.getColorStateList(view.context, R.color.colorAccent)
            strokeColor = ContextCompat.getColorStateList(view.context, R.color.colorAccent)
            setOnClickListener {
                installApplication(searchApp, appIcon)
            }
        }
    }

    private fun ApplicationListItemBinding.handleInstalled(
        view: View,
        searchApp: FusedApp
    ) {
        installButton.apply {
            isEnabled = true
            text = context.getString(R.string.open)
            setTextColor(Color.WHITE)
            backgroundTintList = ContextCompat.getColorStateList(view.context, R.color.colorAccent)
            strokeColor = ContextCompat.getColorStateList(view.context, R.color.colorAccent)
            setOnClickListener {
                context.startActivity(pkgManagerModule.getLaunchIntent(searchApp.package_name))
            }
        }
    }

    fun setData(newList: List<FusedApp>) {
        this.submitList(newList)
        currentList.forEach {
            newList.find { item -> item._id == it._id }?.let { foundItem ->
                foundItem.privacyScore = it.privacyScore
            }
        }
        this.submitList(newList.map { it.copy() })
    }

    private fun installApplication(searchApp: FusedApp, appIcon: ImageView) {