Loading app/src/main/java/foundation/e/apps/MainActivity.kt +67 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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() Loading @@ -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() { Loading @@ -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 { Loading @@ -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 -> { Loading Loading @@ -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 app/src/main/java/foundation/e/apps/application/ApplicationActivity.kt +22 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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) Loading @@ -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) } Loading Loading @@ -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; } } app/src/main/java/foundation/e/apps/application/ApplicationViewHolder.kt +76 −50 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 { Loading @@ -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) { Loading @@ -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) } } Loading Loading @@ -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 } Loading @@ -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 -> { Loading @@ -172,6 +196,7 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi installButton?.isEnabled = true } } }) } Loading @@ -198,4 +223,5 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi downloader?.removeListener(this) downloader = null } } app/src/main/java/foundation/e/apps/application/SmallApplicationViewHolder.kt +16 −5 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) { Loading @@ -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) Loading Loading @@ -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 } Loading @@ -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 Loading @@ -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 -> { Loading app/src/main/java/foundation/e/apps/application/model/Application.kt +49 −40 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) Loading Loading @@ -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() } } Loading Loading @@ -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 { Loading @@ -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) } } Loading Loading @@ -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) } } Loading Loading @@ -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) Loading Loading @@ -409,7 +404,6 @@ class Application(val packageName: String, private val applicationManager: Appli } fun loadIcon(iconLoaderCallback: BasicData.IconLoaderCallback) { basicData?.loadIconAsync(this, iconLoaderCallback) } Loading Loading @@ -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
app/src/main/java/foundation/e/apps/MainActivity.kt +67 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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() Loading @@ -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() { Loading @@ -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 { Loading @@ -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 -> { Loading Loading @@ -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
app/src/main/java/foundation/e/apps/application/ApplicationActivity.kt +22 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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) Loading @@ -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) } Loading Loading @@ -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; } }
app/src/main/java/foundation/e/apps/application/ApplicationViewHolder.kt +76 −50 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 { Loading @@ -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) { Loading @@ -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) } } Loading Loading @@ -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 } Loading @@ -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 -> { Loading @@ -172,6 +196,7 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi installButton?.isEnabled = true } } }) } Loading @@ -198,4 +223,5 @@ class ApplicationViewHolder(private val activity: Activity, private val view: Vi downloader?.removeListener(this) downloader = null } }
app/src/main/java/foundation/e/apps/application/SmallApplicationViewHolder.kt +16 −5 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) { Loading @@ -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) Loading Loading @@ -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 } Loading @@ -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 Loading @@ -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 -> { Loading
app/src/main/java/foundation/e/apps/application/model/Application.kt +49 −40 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) Loading Loading @@ -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() } } Loading Loading @@ -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 { Loading @@ -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) } } Loading Loading @@ -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) } } Loading Loading @@ -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) Loading Loading @@ -409,7 +404,6 @@ class Application(val packageName: String, private val applicationManager: Appli } fun loadIcon(iconLoaderCallback: BasicData.IconLoaderCallback) { basicData?.loadIconAsync(this, iconLoaderCallback) } Loading Loading @@ -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; } }