Skip to content

Commit

Permalink
Add trackers count in global app menu (#351)
Browse files Browse the repository at this point in the history
  • Loading branch information
Hamza417 committed Jul 8, 2024
1 parent 56e16b5 commit b64b1ea
Show file tree
Hide file tree
Showing 20 changed files with 105 additions and 66 deletions.
1 change: 1 addition & 0 deletions app/src/main/assets/html/changelogs.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ <h4>User Interface</h4>
<li>Addition to <i>Trackers</i> framework to show tracker icon next to app with trackers
throughout the app.
</li>
<li>Added trackers count in global <b>App Menu</b>.</li>
</ul>


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import app.simple.inure.decorations.views.AppIconImageView
import app.simple.inure.glide.modules.GlideApp
import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.InfoStripUtils.setAppInfo
import app.simple.inure.util.RecyclerViewUtils

Expand Down Expand Up @@ -49,7 +49,7 @@ class AdapterDisabled : RecyclerView.Adapter<VerticalListViewHolder>() {
holder.name.text = apps[position].applicationInfo.name
holder.packageId.text = apps[position].packageName

holder.name.setInfoStates(apps[position])
holder.name.setAppVisualStates(apps[position])
holder.date.setAppInfo(apps[position])

holder.container.setOnClickListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import app.simple.inure.decorations.views.AppIconImageView
import app.simple.inure.glide.modules.GlideApp
import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.FileUtils.toFile
import app.simple.inure.util.RecyclerViewUtils

Expand Down Expand Up @@ -49,7 +49,7 @@ class AdapterFOSS : RecyclerView.Adapter<VerticalListViewHolder>() {
holder.icon.loadAppIcon(apps[position].packageName, apps[position].applicationInfo.enabled, apps[position].applicationInfo.sourceDir.toFile())
holder.name.text = apps[position].applicationInfo.name
holder.packageId.text = apps[position].packageName
holder.name.setInfoStates(apps[position])
holder.name.setAppVisualStates(apps[position])
holder.date.text = FOSSParser.getPackageLicense(apps[position]) ?: holder.itemView.context.getString(R.string.not_available)
holder.date.setWarningIcon(FOSSParser.isUserDefinedFOSS(apps[position].packageName))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import app.simple.inure.glide.modules.GlideApp
import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.models.PackageStats
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.RecyclerViewUtils
import java.util.concurrent.TimeUnit.MILLISECONDS

Expand Down Expand Up @@ -48,7 +48,7 @@ class AdapterMostUsed : RecyclerView.Adapter<VerticalListViewHolder>() {
holder.icon.loadAppIcon(apps[position].packageInfo!!.packageName, apps[position].packageInfo!!.applicationInfo.enabled)
holder.name.text = apps[position].packageInfo?.applicationInfo!!.name
holder.packageId.text = apps[position].packageInfo?.packageName
holder.name.setInfoStates(apps[position].packageInfo!!)
holder.name.setAppVisualStates(apps[position].packageInfo!!)

with(apps[position].totalTimeUsed) {
holder.date.apply {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import app.simple.inure.decorations.views.AppIconImageView
import app.simple.inure.glide.modules.GlideApp
import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.InfoStripUtils.setRecentlyInstalledInfo
import app.simple.inure.util.RecyclerViewUtils

Expand Down Expand Up @@ -48,7 +48,7 @@ class AdapterRecentlyInstalled : RecyclerView.Adapter<VerticalListViewHolder>()
holder.icon.loadAppIcon(apps[position].packageName, apps[position].applicationInfo.enabled)
holder.name.text = apps[position].applicationInfo.name
holder.packageId.text = apps[position].packageName
holder.name.setInfoStates(apps[position])
holder.name.setAppVisualStates(apps[position])
holder.date.setRecentlyInstalledInfo(apps[position])

holder.container.setOnClickListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import app.simple.inure.decorations.views.AppIconImageView
import app.simple.inure.glide.modules.GlideApp
import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.InfoStripUtils.setRecentlyUpdatedInfo
import app.simple.inure.util.RecyclerViewUtils

Expand Down Expand Up @@ -48,7 +48,7 @@ class AdapterRecentlyUpdated : RecyclerView.Adapter<VerticalListViewHolder>() {
holder.icon.loadAppIcon(apps[position].packageName, apps[position].applicationInfo.enabled)
holder.name.text = apps[position].applicationInfo.name
holder.packageId.text = apps[position].packageName
holder.name.setInfoStates(apps[position])
holder.name.setAppVisualStates(apps[position])
holder.date.setRecentlyUpdatedInfo(apps[position])

holder.container.setOnClickListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import app.simple.inure.decorations.views.AppIconImageView
import app.simple.inure.glide.modules.GlideApp
import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.FileUtils.toFileOrNull
import app.simple.inure.util.InfoStripUtils.setUninstalledAppInfo
import app.simple.inure.util.RecyclerViewUtils
Expand Down Expand Up @@ -49,7 +49,7 @@ class AdapterUninstalled : RecyclerView.Adapter<VerticalListViewHolder>() {
holder.icon.loadAppIcon(apps[position].packageName, apps[position].applicationInfo.enabled, apps[position].applicationInfo.sourceDir.toFileOrNull())
holder.name.text = apps[position].applicationInfo.name
holder.packageId.text = apps[position].packageName
holder.name.setInfoStates(apps[position])
holder.name.setAppVisualStates(apps[position])

holder.date.setUninstalledAppInfo(apps[position])

Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/app/simple/inure/adapters/ui/AdapterApps.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import app.simple.inure.glide.modules.GlideApp
import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.preferences.AppsPreferences
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.ConditionUtils.invert
import app.simple.inure.util.FileUtils.toFileOrNull
import app.simple.inure.util.InfoStripUtils.setAppInfo
Expand Down Expand Up @@ -68,7 +68,7 @@ class AdapterApps(private val apps: ArrayList<PackageInfo>) : RecyclerView.Adapt
holder.icon.loadAppIcon(apps[position].packageName, false, apps[position].applicationInfo.sourceDir.toFileOrNull())
}

holder.name.setInfoStates(apps[position])
holder.name.setAppVisualStates(apps[position])

holder.info.setAppInfo(apps[position])

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import app.simple.inure.models.BatchPackageInfo
import app.simple.inure.models.Tag
import app.simple.inure.preferences.BatchPreferences
import app.simple.inure.preferences.FormattingPreferences
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.ArrayUtils.move
import app.simple.inure.util.ConditionUtils.invert
import app.simple.inure.util.DateUtils
Expand Down Expand Up @@ -72,7 +72,7 @@ class AdapterBatch(var apps: ArrayList<BatchPackageInfo>, var headerEnabled: Boo
holder.name.text = apps[position].packageInfo.applicationInfo.name
holder.packageId.text = apps[position].packageInfo.packageName

holder.name.setInfoStates(apps[position].packageInfo)
holder.name.setAppVisualStates(apps[position].packageInfo)
holder.checkBox.setChecked(apps[position].isSelected, false)

if (highlight) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.models.BatteryOptimizationModel
import app.simple.inure.preferences.BatteryOptimizationPreferences
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.ConditionUtils.invert
import app.simple.inure.util.LocaleUtils
import app.simple.inure.util.RecyclerViewUtils
Expand Down Expand Up @@ -60,7 +60,7 @@ class AdapterBatteryOptimization(private val apps: ArrayList<BatteryOptimization
holder.name.text = apps[position].packageInfo.applicationInfo.name
holder.packageId.text = apps[position].packageInfo.packageName

holder.name.setInfoStates(apps[position].packageInfo)
holder.name.setAppVisualStates(apps[position].packageInfo)

holder.data.text = with(StringBuilder()) {
append(holder.getString(getAppType(apps[position].type)))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.models.BootManagerModel
import app.simple.inure.preferences.BootManagerPreferences
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.ConditionUtils.invert
import app.simple.inure.util.LocaleUtils
import app.simple.inure.util.RecyclerViewUtils
Expand Down Expand Up @@ -57,7 +57,7 @@ class AdapterBootManager(private val components: ArrayList<BootManagerModel>) :
holder.icon.loadAppIcon(components[position].packageInfo.packageName, components[position].isEnabled)
holder.name.text = components[position].packageInfo.applicationInfo.name
holder.packageId.text = components[position].packageInfo.packageName
holder.name.setInfoStates(components[position].packageInfo)
holder.name.setAppVisualStates(components[position].packageInfo)

holder.data.text = with(StringBuilder()) {
append(holder.context.getString(R.string.total, components[position].enabledComponents.size + components[position].disabledComponents.size))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.models.Search
import app.simple.inure.preferences.SearchPreferences
import app.simple.inure.util.AdapterUtils
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.InfoStripUtils.setAppInfo

class AdapterDeepSearch(private var deepSearchInfo: ArrayList<Search>, private var searchKeyword: String = "") : RecyclerView.Adapter<AdapterDeepSearch.Holder>() {
Expand All @@ -37,7 +37,7 @@ class AdapterDeepSearch(private var deepSearchInfo: ArrayList<Search>, private v
holder.name.text = deepSearchInfo[position].packageInfo.applicationInfo.name
holder.packageId.text = deepSearchInfo[position].packageInfo.packageName

holder.name.setInfoStates(deepSearchInfo[position].packageInfo)
holder.name.setAppVisualStates(deepSearchInfo[position].packageInfo)
holder.info.setAppInfo(deepSearchInfo[position].packageInfo)
holder.setDeepInfo(deepSearchInfo[position])

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.models.NotesPackageInfo
import app.simple.inure.preferences.NotesPreferences
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.DateUtils
import app.simple.inure.util.RecyclerViewUtils

Expand Down Expand Up @@ -64,7 +64,7 @@ class AdapterNotes(var notes: ArrayList<NotesPackageInfo>) : RecyclerView.Adapte
holder.packageId.text = notes[position].packageInfo.packageName
holder.note.text = notes[position].note.subSequence(0, notes[position].note.length.coerceAtMost(1000))

holder.name.setInfoStates(notes[position].packageInfo)
holder.name.setAppVisualStates(notes[position].packageInfo)

if (areNotesExpanded) {
holder.note.maxLines = 60
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.models.Search
import app.simple.inure.preferences.SearchPreferences
import app.simple.inure.util.AdapterUtils
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.FileUtils.toFileOrNull
import app.simple.inure.util.InfoStripUtils.setAppInfo

Expand All @@ -40,7 +40,7 @@ class AdapterSearch(private var apps: ArrayList<Search>, private var searchKeywo
holder.name.text = apps[position].packageInfo.applicationInfo.name
holder.packageId.text = apps[position].packageInfo.packageName

holder.name.setInfoStates(apps[position].packageInfo)
holder.name.setAppVisualStates(apps[position].packageInfo)
holder.info.setAppInfo(apps[position].packageInfo)

holder.container.setOnClickListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.interfaces.adapters.AdapterCallbacks
import app.simple.inure.models.PackageStats
import app.simple.inure.preferences.StatisticsPreferences
import app.simple.inure.util.AdapterUtils.setInfoStates
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.ConditionUtils.invert
import app.simple.inure.util.FileSizeHelper.toSize
import app.simple.inure.util.LocaleUtils
Expand Down Expand Up @@ -76,7 +76,7 @@ class AdapterUsageStats(private val apps: ArrayList<PackageStats>) : RecyclerVie
appendFlag(apps[position].wifiData?.rx?.toSize())
}

holder.name.setInfoStates(apps[position].packageInfo!!)
holder.name.setAppVisualStates(apps[position].packageInfo!!)

with(apps[position].totalTimeUsed) {
holder.time.apply {
Expand Down
25 changes: 23 additions & 2 deletions app/src/main/java/app/simple/inure/dialogs/app/AppMenu.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import app.simple.inure.decorations.views.AppIconImageView
import app.simple.inure.dialogs.action.Send.Companion.showSend
import app.simple.inure.dialogs.foss.MarkFoss.Companion.showMarkFossDialog
import app.simple.inure.extensions.fragments.ScopedDialogFragment
import app.simple.inure.factories.panels.PackageInfoFactory
import app.simple.inure.glide.util.ImageLoader.loadAppIcon
import app.simple.inure.preferences.BehaviourPreferences
import app.simple.inure.preferences.DevelopmentPreferences
Expand All @@ -41,13 +42,15 @@ import app.simple.inure.ui.viewers.Trackers
import app.simple.inure.ui.viewers.UsageStatisticsGraph
import app.simple.inure.ui.viewers.XML
import app.simple.inure.ui.viewers.XMLWebView
import app.simple.inure.util.AdapterUtils.setAppVisualStates
import app.simple.inure.util.ConditionUtils.invert
import app.simple.inure.util.ConditionUtils.isNotZero
import app.simple.inure.util.InfoStripUtils.setAppInfo
import app.simple.inure.util.InfoStripUtils.getAppInfo
import app.simple.inure.util.StatusBarHeight
import app.simple.inure.util.ViewUtils
import app.simple.inure.util.ViewUtils.gone
import app.simple.inure.util.ViewUtils.visibility
import app.simple.inure.viewmodels.panels.AppInfoViewModel
import app.simple.inure.viewmodels.panels.HomeViewModel
import app.simple.inure.viewmodels.panels.QuickAppsViewModel
import kotlinx.coroutines.Dispatchers
Expand Down Expand Up @@ -82,6 +85,7 @@ class AppMenu : ScopedDialogFragment() {

private lateinit var quickAppsViewModel: QuickAppsViewModel
private lateinit var homeViewModel: HomeViewModel
private lateinit var appInfoViewModel: AppInfoViewModel
private var isAlreadyInQuickApp = false

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
Expand Down Expand Up @@ -111,9 +115,10 @@ class AppMenu : ScopedDialogFragment() {
toQuickApp = view.findViewById(R.id.to_quick_app)
markAsFOSS = view.findViewById(R.id.to_foss)

val packageInfoFactory = PackageInfoFactory(packageInfo)
quickAppsViewModel = ViewModelProvider(requireActivity())[QuickAppsViewModel::class.java]
homeViewModel = ViewModelProvider(requireActivity())[HomeViewModel::class.java]
details.setAppInfo(packageInfo)
appInfoViewModel = ViewModelProvider(this, packageInfoFactory)[AppInfoViewModel::class.java]

return view
}
Expand Down Expand Up @@ -154,6 +159,7 @@ class AppMenu : ScopedDialogFragment() {

SearchPreferences.setSearchKeywordMode(requireArguments().getString(BundleConstants.keywords).isNullOrEmpty().invert())
icon.loadAppIcon(packageInfo.packageName, packageInfo.applicationInfo.enabled)
name.setAppVisualStates(packageInfo)
markAsFOSS.visibility(FOSSParser.isEmbeddedFOSS(packageInfo).invert())

name.apply {
Expand Down Expand Up @@ -319,6 +325,21 @@ class AppMenu : ScopedDialogFragment() {
}
}
}

appInfoViewModel.getTrackers().observe(viewLifecycleOwner) {
val details = requireContext().getAppInfo(packageInfo)

if (details.isEmpty()) {
details.append(getString(R.string.trackers_count, it))
} else {
details.append(" | ")
details.append(getString(R.string.trackers_count, it))
}

this.details.alpha = 0F
this.details.text = details
this.details.animate().alpha(1F).start()
}
}

override fun onDestroy() {
Expand Down
Loading

0 comments on commit b64b1ea

Please sign in to comment.