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

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

Use system accent color

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


//import androidx.fragment.app.ListFragment
//import androidx.fragment.app.ListFragment



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

    var accentColorOS = 0




    companion object {
    companion object {
@@ -70,12 +79,16 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
    }
    }





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




        bottom_navigation_view.setOnNavigationItemSelectedListener{
        bottom_navigation_view.setOnNavigationItemSelectedListener{
            if (selectFragment(it.itemId,it)) {
            if (selectFragment(it.itemId,it)) {
                disableCategoryIfOpenSource()
                disableCategoryIfOpenSource()
@@ -102,6 +115,28 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
        }
        }
        setupLangReceiver()
        setupLangReceiver()
        applicationManagerServiceConnection.bindService(this)
        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() {
    private fun initialiseUpdatesWorker() {
@@ -116,9 +151,9 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
    }
    }


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


    override fun onNavigationItemSelected(item: MenuItem): Boolean {
    override fun onNavigationItemSelected(item: MenuItem): Boolean {
@@ -144,17 +179,28 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
        return "any"
        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 {
    private fun selectFragment(fragmentId: Int, item: MenuItem?): Boolean {

        when (fragmentId) {
        when (fragmentId) {

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

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

                return true
                return true
            }
            }
            R.id.menu_search -> {
            R.id.menu_search -> {
@@ -265,4 +311,20 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
            }
            }
        }, 2000)
        }, 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;
    }

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

    var accentColorOS = 0


    override fun onCreate(savedInstanceState: Bundle?) {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        super.onCreate(savedInstanceState)
@@ -113,6 +116,14 @@ class ApplicationActivity :
            this.applicationPackageName = applicationPackageName!!
            this.applicationPackageName = applicationPackageName!!
            applicationManagerServiceConnection.bindService(this)
            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)
            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 Original line Diff line number Diff line
@@ -48,7 +48,7 @@ import kotlinx.android.synthetic.main.install_button_layout.view.*
import java.lang.Exception
import java.lang.Exception




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),
        RecyclerView.ViewHolder(view),
        ApplicationStateListener,
        ApplicationStateListener,
        Downloader.DownloadProgressCallback,
        Downloader.DownloadProgressCallback,
@@ -67,7 +67,7 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi
    private var application: Application? = null
    private var application: Application? = null
    private val applicationViewModel = ApplicationViewModel()
    private val applicationViewModel = ApplicationViewModel()
    private var downloader: Downloader? = null
    private var downloader: Downloader? = null

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


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


            } else if (application?.searchAppsBasicData != null && application?.searchAppsBasicData!!.is_pwa) {
            } else if (application?.searchAppsBasicData != null && application?.searchAppsBasicData!!.is_pwa) {
                application?.pwaInstall(activity)
                application?.pwaInstall(activity)
            }
            } else {
            else {
                application?.buttonClicked(activity, activity)
                application?.buttonClicked(activity, activity)
            }
            }
        }
        }
@@ -147,13 +152,20 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi


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

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


            when (state) {
            when (state) {


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

                        installButton.setTextColor(Color.parseColor("#0088ED"))
                        installButton.setTextColor(Color.parseColor("#0088ED"))
                    }
                    installButton.setBackgroundResource(R.drawable.app_install_border_simple)
                    installButton.setBackgroundResource(R.drawable.app_install_border_simple)
                    installButton.isEnabled = true
                    installButton.isEnabled = true
                }
                }
@@ -162,15 +174,27 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi


                    installButton?.isEnabled =
                    installButton?.isEnabled =
                            Common.appHasLaunchActivity(activity, application!!.packageName)
                            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!!.setBackgroundResource(R.drawable.app_install_border)
                    }
                    }
                    installButton.setTextColor(Color.parseColor("#FAFAFA"))

                }
                State.INSTALLING -> {
                State.INSTALLING -> {
                    installButton?.isEnabled = false
                    installButton?.isEnabled = false
                }
                }
                State.NOT_UPDATED -> {
                State.NOT_UPDATED -> {
                    installButton.setTextColor(Color.parseColor("#FAFAFA"))
                    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!!.setBackgroundResource(R.drawable.app_install_border)
                    }
                    installButton?.isEnabled = true
                    installButton?.isEnabled = true
                }
                }
                else -> {
                else -> {
@@ -178,6 +202,7 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi
                    installButton?.isEnabled = true
                    installButton?.isEnabled = true
                }
                }
            }
            }

        })
        })
    }
    }


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

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



    private val icon: ImageView = view.app_icon
    private val icon: ImageView = view.app_icon
    private val title: TextView = view.app_title
    private val title: TextView = view.app_title
    private val installButton: Button = view.app_install
    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!!)
                applicationViewModel.onApplicationClick(view.context, application!!)
            }
            }
        }
        }

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

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

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

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


@@ -128,7 +132,10 @@ class SmallApplicationViewHolder(private val activity: Activity, private val vie
                    installButton.isEnabled =
                    installButton.isEnabled =
                            Common.appHasLaunchActivity(activity, application!!.packageName)
                            Common.appHasLaunchActivity(activity, application!!.packageName)
                    installButton.setTextColor(Color.parseColor("#FAFAFA"))
                    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 -> {
                State.INSTALLING -> {
                    installButton.isEnabled = false
                    installButton.isEnabled = false
@@ -137,7 +144,11 @@ class SmallApplicationViewHolder(private val activity: Activity, private val vie
                }
                }
                State.NOT_UPDATED -> {
                State.NOT_UPDATED -> {
                    installButton.setTextColor(Color.parseColor("#FAFAFA"))
                    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
                    installButton.isEnabled = true
                }
                }
                else -> {
                else -> {
+44 −34
Original line number Original line Diff line number Diff line
@@ -18,11 +18,16 @@
package foundation.e.apps.application.model
package foundation.e.apps.application.model


import android.Manifest
import android.Manifest
import android.R
import android.app.Activity
import android.app.Activity
import android.app.DownloadManager
import android.app.DownloadManager
import android.content.Context
import android.content.Context
import android.content.Intent
import android.content.Intent
import android.content.pm.PackageManager
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.MainActivity.Companion.mActivity
import foundation.e.apps.pwa.PwaInstaller
import foundation.e.apps.pwa.PwaInstaller
import foundation.e.apps.XAPK.XAPKFile
import foundation.e.apps.XAPK.XAPKFile
@@ -40,8 +45,6 @@ class Application(val packageName: String, private val applicationManager: Appli
        DownloaderInterface, InstallerInterface {
        DownloaderInterface, InstallerInterface {






    private val uses = AtomicInteger(0)
    private val uses = AtomicInteger(0)
    private val info = ApplicationInfo(packageName)
    private val info = ApplicationInfo(packageName)
    private val stateManager = StateManager(info, this, applicationManager)
    private val stateManager = StateManager(info, this, applicationManager)
@@ -79,16 +82,13 @@ class Application(val packageName: String, private val applicationManager: Appli
    fun checkForStateUpdate(context: Context) {
    fun checkForStateUpdate(context: Context) {
        if (basicData != null) {
        if (basicData != null) {
            stateManager.find(context, basicData!!)
            stateManager.find(context, basicData!!)
        }
        } else if (searchAppsBasicData != null) {
        else if(searchAppsBasicData !=null){
            if (searchAppsBasicData!!.is_pwa) {
            if (searchAppsBasicData!!.is_pwa) {
//                stateManager.pwaFind()
//                stateManager.pwaFind()
            }
            } else {
            else{
                stateManager.searchAppsFind(context, searchAppsBasicData!!)
                stateManager.searchAppsFind(context, searchAppsBasicData!!)
            }
            }
        }
        } else if (pwabasicdata != null) {
        else if(pwabasicdata!=null){
//              stateManager.pwaFind()
//              stateManager.pwaFind()
        }
        }
    }
    }
@@ -234,8 +234,7 @@ class Application(val packageName: String, private val applicationManager: Appli
            if (basicData != null) {
            if (basicData != null) {
                info.getApkFile(context, basicData!!).delete()
                info.getApkFile(context, basicData!!).delete()
                applicationManager.stopInstalling(context, this)
                applicationManager.stopInstalling(context, this)
            }
            } else {
            else{
                applicationManager.stopInstalling(context, this)
                applicationManager.stopInstalling(context, this)
            }
            }
        }
        }
@@ -276,16 +275,12 @@ class Application(val packageName: String, private val applicationManager: Appli
    fun assertFullData(context: Context): Error? {
    fun assertFullData(context: Context): Error? {
        if (fullData != null) {
        if (fullData != null) {
            return null
            return null
        }
        } else if (pwabasicdata != null) {
        else if(pwabasicdata != null){
            return findPwaFullData(context)
            return findPwaFullData(context)
        }
        } else if (searchAppsBasicData != null) {

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

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





    fun loadIcon(iconLoaderCallback: BasicData.IconLoaderCallback) {
    fun loadIcon(iconLoaderCallback: BasicData.IconLoaderCallback) {
        basicData?.loadIconAsync(this, iconLoaderCallback)
        basicData?.loadIconAsync(this, iconLoaderCallback)
    }
    }
@@ -478,4 +473,19 @@ class Application(val packageName: String, private val applicationManager: Appli
        Pwaupdate(pwaFullData.pwabasicdata, context)
        Pwaupdate(pwaFullData.pwabasicdata, context)
        pwaFullData.pwabasicdata = pwabasicdata!!
        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