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

Commit d9f73a1a authored by narinder Rana's avatar narinder Rana Committed by Romain Hunault
Browse files

Use system accent color

parent 3ca2170a
Loading
Loading
Loading
Loading
+67 −4
Original line number Diff line number Diff line
@@ -19,15 +19,24 @@ package foundation.e.apps

//import androidx.fragment.app.ListFragment


import android.annotation.SuppressLint
import android.content.*
import android.content.pm.PackageManager
import android.content.res.ColorStateList
import android.graphics.Color
import android.os.Bundle
import android.os.Handler
import android.preference.PreferenceManager
import android.util.TypedValue
import android.view.MenuItem
import android.widget.Toast
import androidx.annotation.ColorInt
import androidx.annotation.ColorRes
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ContextThemeWrapper
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.DrawableCompat
import androidx.fragment.app.Fragment
import com.google.android.material.bottomnavigation.BottomNavigationItemView
import com.google.android.material.bottomnavigation.BottomNavigationMenuView
@@ -60,21 +69,26 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
    private val codeRequestPermissions = 9527
    var doubleBackToExitPressedOnce = false;
    private var isReceiverRegistered = false

    var accentColorOS = 0


    companion object {
        lateinit var mActivity: MainActivity
        var sharedPreferences : SharedPreferences?=null

    }



    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //ThemeColors(this);
        setContentView(R.layout.activity_main)
        mActivity = this
        disableCategoryIfOpenSource()



        bottom_navigation_view.setOnNavigationItemSelectedListener{
            if (selectFragment(it.itemId,it)) {
                disableCategoryIfOpenSource()
@@ -101,6 +115,28 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
        }
        setupLangReceiver()
        applicationManagerServiceConnection.bindService(this)

        getAccentColor();
        bottom_navigation_view_color()
    }

    private fun bottom_navigation_view_color() {
        val iconsColorStates =
                ColorStateList(arrayOf(intArrayOf(-android.R.attr.state_checked),
                        intArrayOf(android.R.attr.state_checked)), intArrayOf(
                        Color.parseColor("#C4CFD9"),
                        accentColorOS
        ))

        val textColorStates = ColorStateList(arrayOf(intArrayOf(-android.R.attr.state_checked), intArrayOf(android.R.attr.state_checked)), intArrayOf(
                Color.parseColor("#C4CFD9"),
                accentColorOS

        ))

        bottom_navigation_view.setItemIconTintList(iconsColorStates)
        bottom_navigation_view.setItemTextColor(textColorStates)

    }

    private fun initialiseUpdatesWorker() {
@@ -115,9 +151,9 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
    }

    private fun initialiseFragments(applicationManager: ApplicationManager) {
        homeFragment.initialise(applicationManager)
        searchFragment.initialise(applicationManager)
        updatesFragment.initialise(applicationManager)
        homeFragment.initialise(applicationManager, accentColorOS)
        searchFragment.initialise(applicationManager, accentColorOS)
        updatesFragment.initialise(applicationManager, accentColorOS)
    }

    override fun onNavigationItemSelected(item: MenuItem): Boolean {
@@ -143,17 +179,28 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
        return "any"
    }

    fun tintMenuIcon(context: Context, item: MenuItem, @ColorRes color: Int) {
        val normalDrawable = item.icon
        val wrapDrawable = DrawableCompat.wrap(normalDrawable)

        DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(context, color))//context.resources.getColor(color))
        item.icon = wrapDrawable
    }

    private fun selectFragment(fragmentId: Int, item: MenuItem?): Boolean {

        when (fragmentId) {

            R.id.menu_home -> {
                item?.setIcon(R.drawable.ic_menu_home)
                showFragment(homeFragment)

                return true
            }
            R.id.menu_categories -> {
                item?.setIcon(R.drawable.ic_menu_categories)
                showFragment(CategoriesFragment())

                return true
            }
            R.id.menu_search -> {
@@ -264,4 +311,20 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
            }
        }, 2000)
    }

    /*
    * get Accent color from OS
    *
    *  */
    private fun getAccentColor() {

        val typedValue = TypedValue()
        val contextThemeWrapper = ContextThemeWrapper(this,
                android.R.style.Theme_DeviceDefault)
        contextThemeWrapper.getTheme().resolveAttribute(android.R.attr.colorAccent,
                typedValue, true)
        @ColorInt val color = typedValue.data
        accentColorOS=color;
    }

}
 No newline at end of file
+22 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.text.SpannableStringBuilder
import android.text.method.LinkMovementMethod
import android.text.style.ForegroundColorSpan
import android.util.DisplayMetrics
import android.util.Log
import android.util.TypedValue
import android.view.Menu
import android.view.MenuItem
@@ -39,8 +40,10 @@ import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.annotation.ColorInt
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ContextThemeWrapper
import androidx.appcompat.widget.Toolbar
import com.google.android.material.snackbar.Snackbar
import foundation.e.apps.MainActivity.Companion.sharedPreferences
@@ -90,7 +93,7 @@ class ApplicationActivity :
    private var imageMargin = 0
    private var defaultElevation = 0f
    private val sharedPrefFile = "kotlinsharedpreference"

    var accentColorOS = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
@@ -113,6 +116,14 @@ class ApplicationActivity :
            this.applicationPackageName = applicationPackageName!!
            applicationManagerServiceConnection.bindService(this)
        }

        getAccentColor()
        app_install.setTextColor(Color.parseColor("#ffffff"))
        app_install.setBackgroundColor(accentColorOS)
        app_category.setTextColor(accentColorOS)
        app_expand_description.setTextColor(accentColorOS)


    }


@@ -749,4 +760,14 @@ class ApplicationActivity :
            applicationManagerServiceConnection.unbindService(this)
        }
    }

    private fun getAccentColor() {
        val typedValue = TypedValue()
        val contextThemeWrapper = ContextThemeWrapper(this,
                android.R.style.Theme_DeviceDefault)
        contextThemeWrapper.getTheme().resolveAttribute(android.R.attr.colorAccent,
                typedValue, true)
        @ColorInt val color = typedValue.data
        accentColorOS=color;
    }
}
+76 −50
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ import kotlinx.android.synthetic.main.application_list_item.view.*
import kotlinx.android.synthetic.main.install_button_layout.view.*


class ApplicationViewHolder(private val activity: Activity, private val view: View) :
class ApplicationViewHolder(private val activity: Activity, private val view: View, accentColorOS: Int) :
        RecyclerView.ViewHolder(view),
        ApplicationStateListener,
        Downloader.DownloadProgressCallback,
@@ -64,7 +64,7 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi
    private var application: Application? = null
    private val applicationViewModel = ApplicationViewModel()
    private var downloader: Downloader? = null

var accentColorOS=accentColorOS;
    init {
        pwa_icon.visibility = View.GONE
        view.setOnClickListener {
@@ -72,6 +72,12 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi
                applicationViewModel.onApplicationClick(view.context, application!!)
            }
        }


        installButton.setTextColor(Color.parseColor("#ffffff"))
        if(0!=this.accentColorOS){
            installButton.setBackgroundColor(this.accentColorOS)
        }
        installButton?.setOnClickListener {
            if (application?.fullData != null &&
                    application!!.fullData!!.getLastVersion() == null) {
@@ -83,8 +89,7 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi

            } else if (application?.searchAppsBasicData != null && application?.searchAppsBasicData!!.is_pwa) {
                application?.pwaInstall(activity)
            }
            else {
            } else {
                application?.buttonClicked(activity, activity)
            }
        }
@@ -143,12 +148,19 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi

    override fun stateChanged(state: State) {
        Execute({}, {
            installButton.setBackgroundResource(R.drawable.app_install_border_simple)

           // installButton.setBackgroundResource(R.drawable.app_install_border_simple)
            installButton?.text = activity.getString(state.installButtonTextId)
            when (state) {

                State.NOT_DOWNLOADED -> {
                    if(0!=this.accentColorOS){
                        installButton.setTextColor(this.accentColorOS)
                    }
                    else{

                        installButton.setTextColor(Color.parseColor("#0088ED"))
                    }
                    installButton.setBackgroundResource(R.drawable.app_install_border_simple)
                    installButton.isEnabled = true
                }
@@ -156,15 +168,27 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi
                State.INSTALLED -> {
                    installButton?.isEnabled =
                            Common.appHasLaunchActivity(activity, application!!.packageName)
                    installButton.setTextColor(Color.parseColor("#FAFAFA"))
                    if(0!=this.accentColorOS){
                        installButton!!.setBackgroundColor(this.accentColorOS)
                    }
                    else{
                        installButton!!.setBackgroundResource(R.drawable.app_install_border)
                    }
                    installButton.setTextColor(Color.parseColor("#FAFAFA"))

                }
                State.INSTALLING -> {
                    installButton?.isEnabled = false
                }
                State.NOT_UPDATED -> {
                    installButton.setTextColor(Color.parseColor("#FAFAFA"))
                    //installButton!!.setBackgroundResource(R.drawable.app_install_border)
                    if(0!=this.accentColorOS){
                        installButton!!.setBackgroundColor(this.accentColorOS)
                    }
                    else{
                        installButton!!.setBackgroundResource(R.drawable.app_install_border)
                    }
                    installButton?.isEnabled = true
                }
                else -> {
@@ -172,6 +196,7 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi
                    installButton?.isEnabled = true
                }
            }

        })
    }

@@ -198,4 +223,5 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi
        downloader?.removeListener(this)
        downloader = null
    }

}
+16 −5
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ class SmallApplicationViewHolder(private val activity: Activity, private val vie
        BasicData.IconLoaderCallback,
        PwasBasicData.IconLoaderCallback{


    private val icon: ImageView = view.app_icon
    private val title: TextView = view.app_title
    private val installButton: Button = view.app_install
@@ -67,6 +68,7 @@ class SmallApplicationViewHolder(private val activity: Activity, private val vie
                applicationViewModel.onApplicationClick(view.context, application!!)
            }
        }

        installButton.setOnClickListener {
            if (application?.fullData != null &&
                    application!!.fullData!!.getLastVersion() == null) {
@@ -82,7 +84,6 @@ class SmallApplicationViewHolder(private val activity: Activity, private val vie
            }
        }
    }

    fun createApplicationView(app: Application) {
        if(app.basicData!=null) {
            this.application?.removeListener(this)
@@ -116,11 +117,14 @@ class SmallApplicationViewHolder(private val activity: Activity, private val vie
            installButton.text = activity.getString(state.installButtonTextId)
            installButton.clearAnimation()
            installButton.clearFocus();
            var color = application?.getAccentColor(activity);
            when (state) {

                State.NOT_DOWNLOADED ->{
                    installButton.setTextColor(Color.parseColor("#0088ED"))
                    installButton.setBackgroundResource(R.drawable.app_install_border_simple)
                    if (color != null) {

                        installButton.setTextColor(color)
                    };
                    installButton.isEnabled = true
                }

@@ -128,7 +132,10 @@ class SmallApplicationViewHolder(private val activity: Activity, private val vie
                    installButton.isEnabled =
                            Common.appHasLaunchActivity(activity, application!!.packageName)
                    installButton.setTextColor(Color.parseColor("#FAFAFA"))
                    installButton!!.setBackgroundResource(R.drawable.app_install_border)
                    if (color != null) {
                        //installButton!!.setBackgroundResource(R.drawable.app_install_border)
                        installButton.setBackgroundColor(color)
                    };
                }
                State.INSTALLING -> {
                    installButton.isEnabled = false
@@ -137,7 +144,11 @@ class SmallApplicationViewHolder(private val activity: Activity, private val vie
                }
                State.NOT_UPDATED -> {
                    installButton.setTextColor(Color.parseColor("#FAFAFA"))
                    installButton!!.setBackgroundResource(R.drawable.app_install_border)
                   // installButton!!.setBackgroundResource(R.drawable.app_install_border)
                    if (color != null) {
                        //installButton!!.setBackgroundResource(R.drawable.app_install_border)
                        installButton.setBackgroundColor(color)
                    };
                    installButton.isEnabled = true
                }
                else -> {
+49 −40
Original line number Diff line number Diff line
@@ -18,11 +18,16 @@
package foundation.e.apps.application.model

import android.Manifest
import android.R
import android.app.Activity
import android.app.DownloadManager
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.util.Log
import android.util.TypedValue
import androidx.annotation.ColorInt
import androidx.appcompat.view.ContextThemeWrapper
import foundation.e.apps.MainActivity.Companion.mActivity
import foundation.e.apps.pwa.PwaInstaller
import foundation.e.apps.XAPK.XAPKFile
@@ -42,8 +47,6 @@ class Application(val packageName: String, private val applicationManager: Appli
        DownloaderInterface, InstallerInterface {




    private val uses = AtomicInteger(0)
    private val info = ApplicationInfo(packageName)
    private val stateManager = StateManager(info, this, applicationManager)
@@ -80,16 +83,13 @@ class Application(val packageName: String, private val applicationManager: Appli
    fun checkForStateUpdate(context: Context) {
        if (basicData != null) {
            stateManager.find(context, basicData!!)
        }
        else if(searchAppsBasicData !=null){
        } else if (searchAppsBasicData != null) {
            if (searchAppsBasicData!!.is_pwa) {
//                stateManager.pwaFind()
            }
            else{
            } else {
                stateManager.searchAppsFind(context, searchAppsBasicData!!)
            }
        }
        else if(pwabasicdata!=null){
        } else if (pwabasicdata != null) {
//              stateManager.pwaFind()
        }
    }
@@ -206,8 +206,7 @@ class Application(val packageName: String, private val applicationManager: Appli
            if (info.isXapk(fullData!!, basicData)) {
                isInstalling = true
                XAPKFile(info.getxApkFile(context, basicData!!), this)
            }
            else {
            } else {
                install(context)
            }
        } else {
@@ -217,8 +216,7 @@ class Application(val packageName: String, private val applicationManager: Appli
            if (basicData != null) {
                info.getApkFile(context, basicData!!).delete()
                applicationManager.stopInstalling(context, this)
            }
            else{
            } else {
                applicationManager.stopInstalling(context, this)
            }
        }
@@ -253,16 +251,12 @@ class Application(val packageName: String, private val applicationManager: Appli
    fun assertFullData(context: Context): Error? {
        if (fullData != null) {
            return null
        }
        else if(pwabasicdata != null){
        } else if (pwabasicdata != null) {
            return findPwaFullData(context)
        }

        else if(searchAppsBasicData!=null){
        } else if (searchAppsBasicData != null) {
            if (searchAppsBasicData!!.is_pwa) {
                return findSearchResultPwaFulldata(context)
            }
            else{
            } else {
                findSearchAppsFullData(context)
            }
        }
@@ -320,6 +314,7 @@ class Application(val packageName: String, private val applicationManager: Appli
        }
        return error
    }

    private fun findSearchAppsFullData(context: Context): Error? {
        if (searchAppsBasicData == null) {
            val error = findBasicData(context)
@@ -409,7 +404,6 @@ class Application(val packageName: String, private val applicationManager: Appli
    }



    fun loadIcon(iconLoaderCallback: BasicData.IconLoaderCallback) {
        basicData?.loadIconAsync(this, iconLoaderCallback)
    }
@@ -451,4 +445,19 @@ class Application(val packageName: String, private val applicationManager: Appli
        Pwaupdate(pwaFullData.pwabasicdata, context)
        pwaFullData.pwabasicdata = pwabasicdata!!
    }

    /*
   * get Accent color from OS
   *
   */
    fun getAccentColor(context: Context): Int {
        val typedValue = TypedValue()
        val contextThemeWrapper = ContextThemeWrapper(context,
                R.style.Theme_DeviceDefault)
        contextThemeWrapper.getTheme().resolveAttribute(android.R.attr.colorAccent,
                typedValue, true)
        @ColorInt val color = typedValue.data
        return color;

    }
}
Loading