mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Clean up
This commit is contained in:
parent
db17185d37
commit
8e295b1593
@ -272,19 +272,9 @@ object Preferences {
|
||||
override val values: List<DefaultTab>
|
||||
get() = listOf(Explore, Latest, Installed)
|
||||
|
||||
abstract fun getResId(configuration: Configuration): Int
|
||||
|
||||
object Explore : DefaultTab(NavItem.Explore.destination) {
|
||||
override fun getResId(configuration: Configuration): Int = R.id.exploreTab
|
||||
}
|
||||
|
||||
object Latest : DefaultTab(NavItem.Latest.destination) {
|
||||
override fun getResId(configuration: Configuration): Int = R.id.latestTab
|
||||
}
|
||||
|
||||
object Installed : DefaultTab(NavItem.Installed.destination) {
|
||||
override fun getResId(configuration: Configuration): Int = R.id.installedTab
|
||||
}
|
||||
object Explore : DefaultTab(NavItem.Explore.destination)
|
||||
object Latest : DefaultTab(NavItem.Latest.destination)
|
||||
object Installed : DefaultTab(NavItem.Installed.destination)
|
||||
}
|
||||
|
||||
operator fun <T> get(key: Key<T>): T {
|
||||
|
@ -51,9 +51,9 @@ import com.machiav3lli.fdroid.database.entity.Product
|
||||
import com.machiav3lli.fdroid.database.entity.ProductTemp
|
||||
import com.machiav3lli.fdroid.database.entity.asProductTemp
|
||||
import com.machiav3lli.fdroid.entity.Order
|
||||
import com.machiav3lli.fdroid.entity.Request
|
||||
import com.machiav3lli.fdroid.entity.Section
|
||||
import com.machiav3lli.fdroid.entity.UpdateCategory
|
||||
import com.machiav3lli.fdroid.ui.fragments.Request
|
||||
|
||||
@Dao
|
||||
interface ProductDao : BaseDao<Product> {
|
||||
|
@ -1,39 +0,0 @@
|
||||
package com.machiav3lli.fdroid.entity
|
||||
|
||||
import com.machiav3lli.fdroid.R
|
||||
|
||||
sealed class AntiFeatures(val name: String, val string: Int) {
|
||||
object Ads : AntiFeatures("Ads", R.string.has_advertising)
|
||||
object ApplicationDebuggable :
|
||||
AntiFeatures("ApplicationDebuggable", R.string.compiled_for_debugging)
|
||||
|
||||
object DisabledAlgorithm :
|
||||
AntiFeatures("DisabledAlgorithm", R.string.signed_using_unsafe_algorithm)
|
||||
|
||||
object KnownVuln : AntiFeatures("KnownVuln", R.string.has_security_vulnerabilities)
|
||||
object NoSourceSince : AntiFeatures("NoSourceSince", R.string.source_code_no_longer_available)
|
||||
object NonFreeAdd : AntiFeatures("NonFreeAdd", R.string.promotes_non_free_software)
|
||||
object NonFreeAssets : AntiFeatures("NonFreeAssets", R.string.contains_non_free_media)
|
||||
object NonFreeDep : AntiFeatures("NonFreeDep", R.string.has_non_free_dependencies)
|
||||
object NonFreeNet : AntiFeatures("NonFreeNet", R.string.promotes_non_free_network_services)
|
||||
object Tracking : AntiFeatures("Tracking", R.string.tracks_or_reports_your_activity)
|
||||
object UpstreamNonFree :
|
||||
AntiFeatures("UpstreamNonFree", R.string.upstream_source_code_is_not_free)
|
||||
|
||||
object Others : AntiFeatures("Others", R.string.unknown_FORMAT)
|
||||
}
|
||||
|
||||
fun String.toAntiFeatures() = when (this) {
|
||||
AntiFeatures.Ads.name -> AntiFeatures.Ads
|
||||
AntiFeatures.ApplicationDebuggable.name -> AntiFeatures.ApplicationDebuggable
|
||||
AntiFeatures.DisabledAlgorithm.name -> AntiFeatures.Ads
|
||||
AntiFeatures.KnownVuln.name -> AntiFeatures.Ads
|
||||
AntiFeatures.NoSourceSince.name -> AntiFeatures.Ads
|
||||
AntiFeatures.NonFreeAdd.name -> AntiFeatures.Ads
|
||||
AntiFeatures.NonFreeAssets.name -> AntiFeatures.Ads
|
||||
AntiFeatures.NonFreeDep.name -> AntiFeatures.Ads
|
||||
AntiFeatures.NonFreeNet.name -> AntiFeatures.Ads
|
||||
AntiFeatures.Tracking.name -> AntiFeatures.Ads
|
||||
AntiFeatures.UpstreamNonFree.name -> AntiFeatures.Ads
|
||||
else -> AntiFeatures.Others
|
||||
}
|
@ -2,12 +2,17 @@ package com.machiav3lli.fdroid.entity
|
||||
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.annotation.StringRes
|
||||
import com.machiav3lli.fdroid.HELP_CHANGELOG
|
||||
import com.machiav3lli.fdroid.HELP_LICENSE
|
||||
import com.machiav3lli.fdroid.HELP_MATRIX
|
||||
import com.machiav3lli.fdroid.HELP_SOURCECODE
|
||||
import com.machiav3lli.fdroid.HELP_TELEGRAM
|
||||
import com.machiav3lli.fdroid.R
|
||||
|
||||
enum class Order(@StringRes val titleResId: Int, @DrawableRes val iconResId: Int) {
|
||||
NAME(R.string.name,R.drawable.ic_placeholder),
|
||||
DATE_ADDED(R.string.whats_new,R.drawable.ic_placeholder),
|
||||
LAST_UPDATE(R.string.recently_updated,R.drawable.ic_placeholder)
|
||||
NAME(R.string.name, R.drawable.ic_placeholder),
|
||||
DATE_ADDED(R.string.whats_new, R.drawable.ic_placeholder),
|
||||
LAST_UPDATE(R.string.recently_updated, R.drawable.ic_placeholder)
|
||||
}
|
||||
|
||||
enum class UpdateCategory(val id: Int) {
|
||||
@ -21,4 +26,38 @@ enum class InstallState {
|
||||
INSTALLING,
|
||||
INSTALLED,
|
||||
PENDING
|
||||
}
|
||||
}
|
||||
|
||||
enum class Source(val sections: Boolean, val order: Boolean) {
|
||||
AVAILABLE(true, true),
|
||||
INSTALLED(false, true),
|
||||
UPDATES(false, false),
|
||||
UPDATED(false, true),
|
||||
NEW(false, true)
|
||||
}
|
||||
|
||||
enum class LinkRef(
|
||||
@StringRes val titleId: Int,
|
||||
val url: String? = null
|
||||
) {
|
||||
Sourcecode(
|
||||
titleId = R.string.source_code,
|
||||
url = HELP_SOURCECODE
|
||||
),
|
||||
Changelog(
|
||||
titleId = R.string.changelog,
|
||||
url = HELP_CHANGELOG
|
||||
),
|
||||
Telegram(
|
||||
titleId = R.string.group_telegram,
|
||||
url = HELP_TELEGRAM
|
||||
),
|
||||
Matrix(
|
||||
titleId = R.string.group_matrix,
|
||||
url = HELP_MATRIX
|
||||
),
|
||||
License(
|
||||
titleId = R.string.license,
|
||||
url = HELP_LICENSE
|
||||
),
|
||||
}
|
||||
|
@ -18,11 +18,6 @@ import androidx.compose.material.icons.rounded.Launch
|
||||
import androidx.compose.material.icons.rounded.Share
|
||||
import androidx.compose.material.icons.rounded.Tune
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import com.machiav3lli.fdroid.HELP_CHANGELOG
|
||||
import com.machiav3lli.fdroid.HELP_LICENSE
|
||||
import com.machiav3lli.fdroid.HELP_MATRIX
|
||||
import com.machiav3lli.fdroid.HELP_SOURCECODE
|
||||
import com.machiav3lli.fdroid.HELP_TELEGRAM
|
||||
import com.machiav3lli.fdroid.R
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.decodeFromString
|
||||
@ -98,32 +93,6 @@ enum class AntiFeature(val key: String, @StringRes val titleResId: Int) {
|
||||
NSFW("NSFW", R.string.not_safe_for_work)
|
||||
}
|
||||
|
||||
enum class LinkRef(
|
||||
@StringRes val titleId: Int,
|
||||
val url: String? = null
|
||||
) {
|
||||
Sourcecode(
|
||||
titleId = R.string.source_code,
|
||||
url = HELP_SOURCECODE
|
||||
),
|
||||
Changelog(
|
||||
titleId = R.string.changelog,
|
||||
url = HELP_CHANGELOG
|
||||
),
|
||||
Telegram(
|
||||
titleId = R.string.group_telegram,
|
||||
url = HELP_TELEGRAM
|
||||
),
|
||||
Matrix(
|
||||
titleId = R.string.group_matrix,
|
||||
url = HELP_MATRIX
|
||||
),
|
||||
License(
|
||||
titleId = R.string.license,
|
||||
url = HELP_LICENSE
|
||||
),
|
||||
}
|
||||
|
||||
sealed interface ComponentState {
|
||||
val icon: ImageVector
|
||||
val textId: Int
|
||||
@ -194,14 +163,6 @@ class DonateType(donate: Donate, context: Context) : LinkType(
|
||||
}
|
||||
)
|
||||
|
||||
enum class Source(val sections: Boolean, val order: Boolean) {
|
||||
AVAILABLE(true, true),
|
||||
INSTALLED(false, true),
|
||||
UPDATES(false, false),
|
||||
UPDATED(false, true),
|
||||
NEW(false, true)
|
||||
}
|
||||
|
||||
sealed class Request {
|
||||
internal abstract val id: Int
|
||||
internal abstract val installed: Boolean
|
||||
|
@ -76,13 +76,11 @@ class MainActivityX : AppCompatActivity() {
|
||||
get() = (application as MainApplication).db
|
||||
|
||||
private var currentTheme by Delegates.notNull<Int>()
|
||||
private var currentTab by Delegates.notNull<Int>()
|
||||
|
||||
@OptIn(ExperimentalAnimationApi::class, ExperimentalMaterial3Api::class)
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
(application as MainApplication).mActivity = this
|
||||
currentTheme = Preferences[Preferences.Key.Theme].getResId(resources.configuration)
|
||||
currentTab = Preferences[Preferences.Key.DefaultTab].getResId(resources.configuration)
|
||||
setCustomTheme()
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
|
@ -25,7 +25,6 @@ import com.machiav3lli.fdroid.BuildConfig
|
||||
import com.machiav3lli.fdroid.ContextWrapperX
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.NAV_PREFS
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.installer.AppInstaller
|
||||
import com.machiav3lli.fdroid.service.Connection
|
||||
@ -147,7 +146,7 @@ class PrefsActivityX : AppCompatActivity() {
|
||||
|
||||
private fun handleSpecialIntent(specialIntent: SpecialIntent) {
|
||||
when (specialIntent) {
|
||||
is SpecialIntent.Updates -> navController.navigate(R.id.installedTab)
|
||||
is SpecialIntent.Updates -> navController.navigate(NavItem.Installed.destination)
|
||||
is SpecialIntent.Install -> {
|
||||
val packageName = specialIntent.packageName
|
||||
if (!packageName.isNullOrEmpty()) {
|
||||
|
@ -247,7 +247,6 @@ fun EnumPreference(
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@Composable
|
||||
fun IntPreference(
|
||||
modifier: Modifier = Modifier,
|
||||
|
@ -1,14 +0,0 @@
|
||||
package com.machiav3lli.fdroid.ui.fragments
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.Fragment
|
||||
|
||||
abstract class BaseNavFragment : Fragment() {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
setupLayout()
|
||||
}
|
||||
|
||||
abstract fun setupLayout()
|
||||
}
|
@ -8,7 +8,7 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
|
||||
abstract class FullscreenBottomSheetDialogFragment() : BottomSheetDialogFragment() {
|
||||
abstract class FullscreenBottomSheetDialogFragment : BottomSheetDialogFragment() {
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val sheet = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
|
||||
sheet.setOnShowListener {
|
||||
|
@ -1,14 +0,0 @@
|
||||
package com.machiav3lli.fdroid.utility
|
||||
|
||||
sealed interface PreferenceType {
|
||||
data class Switch(val title: String, val description: String, val key: String) : PreferenceType
|
||||
|
||||
data class Slider(
|
||||
val title: String,
|
||||
val value: Float,
|
||||
val range: ClosedFloatingPointRange<Float>,
|
||||
val key: String
|
||||
) : PreferenceType
|
||||
|
||||
data class Data(val title: String, val description: String, val key: String) : PreferenceType
|
||||
}
|
@ -16,7 +16,6 @@ import android.content.pm.PermissionInfo
|
||||
import android.content.pm.Signature
|
||||
import android.content.res.Configuration
|
||||
import android.graphics.Typeface
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.net.Uri
|
||||
import android.provider.Settings
|
||||
import android.text.SpannableStringBuilder
|
||||
@ -61,7 +60,6 @@ import com.machiav3lli.fdroid.ui.navigation.NavItem
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utility.extension.android.singleSignature
|
||||
import com.machiav3lli.fdroid.utility.extension.android.versionCodeCompat
|
||||
import com.machiav3lli.fdroid.utility.extension.resources.getDrawableCompat
|
||||
import com.machiav3lli.fdroid.utility.extension.text.hex
|
||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
||||
import com.topjohnwu.superuser.Shell
|
||||
@ -85,13 +83,6 @@ object Utils {
|
||||
)
|
||||
}
|
||||
|
||||
fun getDefaultApplicationIcon(context: Context): Drawable =
|
||||
context.getDrawableCompat(R.drawable.ic_placeholder)
|
||||
|
||||
fun getToolbarIcon(context: Context, resId: Int): Drawable {
|
||||
return context.getDrawableCompat(resId).mutate()
|
||||
}
|
||||
|
||||
fun calculateHash(signature: Signature): String {
|
||||
return MessageDigest.getInstance("MD5").digest(signature.toCharsString().toByteArray())
|
||||
.hex()
|
||||
@ -234,14 +225,14 @@ val isDarkTheme: Boolean
|
||||
get() = when (Preferences[Preferences.Key.Theme]) {
|
||||
is Preferences.Theme.Light -> false
|
||||
is Preferences.Theme.Dark -> true
|
||||
is Preferences.Theme.Amoled -> true
|
||||
is Preferences.Theme.Black -> true
|
||||
else -> false
|
||||
}
|
||||
|
||||
val isBlackTheme: Boolean
|
||||
get() = when (Preferences[Preferences.Key.Theme]) {
|
||||
is Preferences.Theme.Amoled -> true
|
||||
is Preferences.Theme.AmoledSystem -> true
|
||||
is Preferences.Theme.Black -> true
|
||||
is Preferences.Theme.SystemBlack -> true
|
||||
else -> false
|
||||
}
|
||||
|
||||
|
@ -59,16 +59,4 @@ object Android {
|
||||
get() = (if (sdk(28)) android.content.pm.PackageManager.GET_SIGNING_CERTIFICATES else 0) or
|
||||
@Suppress("DEPRECATION") android.content.pm.PackageManager.GET_SIGNATURES
|
||||
}
|
||||
|
||||
object Device {
|
||||
val isHuaweiEmui: Boolean
|
||||
get() {
|
||||
return try {
|
||||
Class.forName("com.huawei.android.os.BuildEx")
|
||||
true
|
||||
} catch (e: Exception) {
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,12 +5,8 @@ package com.machiav3lli.fdroid.utility.extension.resources
|
||||
import android.content.Context
|
||||
import android.content.res.ColorStateList
|
||||
import android.content.res.Resources
|
||||
import android.graphics.Typeface
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.util.TypedValue
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.AttrRes
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.core.content.ContextCompat
|
||||
@ -18,11 +14,6 @@ import androidx.core.content.res.ResourcesCompat
|
||||
import com.google.android.material.textview.MaterialTextView
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
object TypefaceExtra {
|
||||
val medium = Typeface.create("sans-serif-medium", Typeface.NORMAL)!!
|
||||
val light = Typeface.create("sans-serif-light", Typeface.NORMAL)!!
|
||||
}
|
||||
|
||||
fun Context.getColorFromAttr(@AttrRes attrResId: Int): ColorStateList {
|
||||
val typedArray = obtainStyledAttributes(intArrayOf(attrResId))
|
||||
val (colorStateList, resId) = try {
|
||||
@ -33,16 +24,6 @@ fun Context.getColorFromAttr(@AttrRes attrResId: Int): ColorStateList {
|
||||
return colorStateList ?: ContextCompat.getColorStateList(this, resId)!!
|
||||
}
|
||||
|
||||
fun Context.getDrawableFromAttr(attrResId: Int): Drawable {
|
||||
val typedArray = obtainStyledAttributes(intArrayOf(attrResId))
|
||||
val resId = try {
|
||||
typedArray.getResourceId(0, 0)
|
||||
} finally {
|
||||
typedArray.recycle()
|
||||
}
|
||||
return getDrawableCompat(resId)
|
||||
}
|
||||
|
||||
fun Context.getDrawableCompat(@DrawableRes resId: Int): Drawable =
|
||||
ResourcesCompat.getDrawable(resources, resId, theme) ?: ContextCompat.getDrawable(this, resId)!!
|
||||
|
||||
@ -55,7 +36,3 @@ fun MaterialTextView.setTextSizeScaled(size: Int) {
|
||||
val realSize = (size * resources.displayMetrics.scaledDensity).roundToInt()
|
||||
setTextSize(TypedValue.COMPLEX_UNIT_PX, realSize.toFloat())
|
||||
}
|
||||
|
||||
fun ViewGroup.inflate(layoutResId: Int): View {
|
||||
return LayoutInflater.from(context).inflate(layoutResId, this, false)
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package com.machiav3lli.fdroid.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.KeyEvent
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import com.machiav3lli.fdroid.R
|
||||
|
||||
class FocusSearchView : SearchView {
|
||||
constructor(context: Context) : super(context)
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
|
||||
context,
|
||||
attrs,
|
||||
defStyleAttr
|
||||
)
|
||||
|
||||
var allowFocus = true
|
||||
|
||||
init {
|
||||
maxWidth = Int.MAX_VALUE
|
||||
queryHint = context.getString(R.string.search)
|
||||
}
|
||||
|
||||
override fun dispatchKeyEventPreIme(event: KeyEvent): Boolean {
|
||||
// Always clear focus on back press
|
||||
return if (hasFocus() && event.keyCode == KeyEvent.KEYCODE_BACK) {
|
||||
if (event.action == KeyEvent.ACTION_UP) {
|
||||
clearFocus()
|
||||
}
|
||||
true
|
||||
} else {
|
||||
super.dispatchKeyEventPreIme(event)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setIconified(iconify: Boolean) {
|
||||
super.setIconified(iconify)
|
||||
|
||||
// Don't focus view and raise keyboard unless allowed
|
||||
if (!iconify && !allowFocus) {
|
||||
clearFocus()
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user