Drop support for kitkat; Bump minSdk to 21

This has been dead for a while already, remove the code and bump minSdk to a
version that actually works

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-06-29 18:21:20 +05:30
parent d4df0b4571
commit 77fe8652b7
93 changed files with 205 additions and 1612 deletions

View File

@@ -41,7 +41,7 @@ android {
defaultConfig { defaultConfig {
applicationId "com.aurora.store" applicationId "com.aurora.store"
minSdk 19 minSdk 21
targetSdk 33 targetSdk 33
versionCode 45 versionCode 45

View File

@@ -21,19 +21,10 @@ package com.aurora.extensions
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.os.Build
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
fun AppCompatActivity.close() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
finishAfterTransition()
} else {
finish()
}
}
fun AppCompatActivity.restart() { fun AppCompatActivity.restart() {
val intent = intent val intent = intent
overridePendingTransition(0, 0) overridePendingTransition(0, 0)

View File

@@ -25,10 +25,6 @@ import android.os.Build
import java.util.* import java.util.*
fun isLAndAbove(): Boolean {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
}
fun isMAndAbove(): Boolean { fun isMAndAbove(): Boolean {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
} }

View File

@@ -121,7 +121,7 @@ private fun AppCompatActivity.setLightConfigurationO() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
setLightStatusBar() setLightStatusBar()
setLightNavigationBar() setLightNavigationBar()
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { } else {
window.statusBarColor = ColorUtils.setAlphaComponent(Color.BLACK, 120) window.statusBarColor = ColorUtils.setAlphaComponent(Color.BLACK, 120)
} }
} }

View File

@@ -23,7 +23,6 @@ package com.aurora.store.data.installer
import android.content.Context import android.content.Context
import android.content.pm.PackageInstaller import android.content.pm.PackageInstaller
import android.content.pm.PackageManager import android.content.pm.PackageManager
import com.aurora.extensions.isLAndAbove
import com.aurora.extensions.isOAndAbove import com.aurora.extensions.isOAndAbove
import com.aurora.store.BuildConfig import com.aurora.store.BuildConfig
import com.aurora.store.R import com.aurora.store.R
@@ -112,7 +111,7 @@ open class AppInstaller private constructor(var context: Context) {
val installer = if (hasRootAccess()) { val installer = if (hasRootAccess()) {
RootInstaller(context) RootInstaller(context)
} else { } else {
getDefaultInstaller(context) SessionInstaller(context)
} }
choiceAndInstaller[prefValue] = installer choiceAndInstaller[prefValue] = installer
installer installer
@@ -121,7 +120,7 @@ open class AppInstaller private constructor(var context: Context) {
val installer = if (hasAuroraService(context)) { val installer = if (hasAuroraService(context)) {
ServiceInstaller(context) ServiceInstaller(context)
} else { } else {
getDefaultInstaller(context) SessionInstaller(context)
} }
choiceAndInstaller[prefValue] = installer choiceAndInstaller[prefValue] = installer
installer installer
@@ -130,7 +129,7 @@ open class AppInstaller private constructor(var context: Context) {
val installer = if (hasAppManager(context)) { val installer = if (hasAppManager(context)) {
AMInstaller(context) AMInstaller(context)
} else { } else {
getDefaultInstaller(context) SessionInstaller(context)
} }
choiceAndInstaller[prefValue] = installer choiceAndInstaller[prefValue] = installer
installer installer
@@ -140,27 +139,19 @@ open class AppInstaller private constructor(var context: Context) {
val installer = if (hasShizuku(context) && hasShizukuPerm()) { val installer = if (hasShizuku(context) && hasShizukuPerm()) {
ShizukuInstaller(context) ShizukuInstaller(context)
} else { } else {
getDefaultInstaller(context) SessionInstaller(context)
} }
choiceAndInstaller[prefValue] = installer choiceAndInstaller[prefValue] = installer
installer installer
} else { } else {
getDefaultInstaller(context) SessionInstaller(context)
} }
} }
else -> { else -> {
val installer = getDefaultInstaller(context) val installer = SessionInstaller(context)
choiceAndInstaller[prefValue] = installer choiceAndInstaller[prefValue] = installer
installer installer
} }
} }
} }
}
private fun getDefaultInstaller(context: Context): InstallerBase {
return if (isLAndAbove()) {
SessionInstaller(context)
} else {
NativeInstaller(context)
}
}
}

View File

@@ -22,9 +22,7 @@ package com.aurora.store.data.installer
import android.app.Service import android.app.Service
import android.content.Intent import android.content.Intent
import android.content.pm.PackageInstaller import android.content.pm.PackageInstaller
import android.os.Build
import android.os.IBinder import android.os.IBinder
import androidx.annotation.RequiresApi
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.event.InstallerEvent import com.aurora.store.data.event.InstallerEvent
import com.aurora.store.util.Log import com.aurora.store.util.Log
@@ -32,7 +30,6 @@ import org.greenrobot.eventbus.EventBus
class InstallerService : Service() { class InstallerService : Service() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int { override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
val status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -69) val status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -69)
val packageName = intent.getStringExtra(PackageInstaller.EXTRA_PACKAGE_NAME) val packageName = intent.getStringExtra(PackageInstaller.EXTRA_PACKAGE_NAME)

View File

@@ -20,7 +20,6 @@
package com.aurora.store.data.installer package com.aurora.store.data.installer
import android.content.Context import android.content.Context
import com.aurora.extensions.isLAndAbove
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.event.InstallerEvent import com.aurora.store.data.event.InstallerEvent
import com.aurora.store.util.Log import com.aurora.store.util.Log
@@ -45,10 +44,7 @@ class RootInstaller(context: Context) : InstallerBase(context) {
} }
} }
}.let { }.let {
if (isLAndAbove()) xInstall(packageName, it)
xInstall(packageName, it)
else
xInstallLegacy(packageName, it)
} }
} else { } else {
postError( postError(
@@ -138,14 +134,6 @@ class RootInstaller(context: Context) : InstallerBase(context) {
} }
} }
private fun xInstallLegacy(packageName: String, files: List<File>) {
if (Shell.getShell().isRoot) {
Shell.cmd("pm install -i com.android.vending --user 0 \"${files[0].name}\"").exec()
} else {
removeFromInstallQueue(packageName)
}
}
private fun parseError(result: Shell.Result): String { private fun parseError(result: Shell.Result): String {
return result.err.joinToString(separator = "\n") return result.err.joinToString(separator = "\n")
} }

View File

@@ -55,7 +55,6 @@ class ServiceInstaller(context: Context) : InstallerBase(context) {
const val PRIVILEGED_EXTENSION_SERVICE_INTENT = "com.aurora.services.IPrivilegedService" const val PRIVILEGED_EXTENSION_SERVICE_INTENT = "com.aurora.services.IPrivilegedService"
} }
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun install(packageName: String, files: List<Any>) { override fun install(packageName: String, files: List<Any>) {
when { when {
@@ -175,7 +174,6 @@ class ServiceInstaller(context: Context) : InstallerBase(context) {
} }
} }
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
private fun xInstall(packageName: String, uriList: List<Uri>, fileList: List<String>) { private fun xInstall(packageName: String, uriList: List<Uri>, fileList: List<String>) {
executor.execute { executor.execute {
val readyWithAction = AtomicBoolean(false) val readyWithAction = AtomicBoolean(false)

View File

@@ -33,7 +33,6 @@ import com.aurora.store.util.Log
class SessionInstaller(context: Context) : SessionInstallerBase(context) { class SessionInstaller(context: Context) : SessionInstallerBase(context) {
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun install(packageName: String, files: List<Any>) { override fun install(packageName: String, files: List<Any>) {
if (isAlreadyQueued(packageName)) { if (isAlreadyQueued(packageName)) {
Log.i("$packageName already queued") Log.i("$packageName already queued")

View File

@@ -35,7 +35,6 @@ import java.io.File
abstract class SessionInstallerBase(context: Context) : InstallerBase(context) { abstract class SessionInstallerBase(context: Context) : InstallerBase(context) {
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
protected fun xInstall( protected fun xInstall(
sessionId: Int, sessionId: Int,
session: PackageInstaller.Session, session: PackageInstaller.Session,

View File

@@ -1,134 +0,0 @@
/*
* Aurora Store
* Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
*
* Aurora Store is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Aurora Store is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.aurora.store.data.network
import com.aurora.gplayapi.data.models.PlayResponse
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.BuildConfig
import com.aurora.store.util.Log
import com.github.kittinunf.fuel.Fuel
import com.github.kittinunf.fuel.core.*
import java.nio.charset.Charset
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
object FuelClient : IHttpClient {
private val _responseCode = MutableStateFlow(0)
override val responseCode: StateFlow<Int>
get() = _responseCode.asStateFlow()
override fun get(url: String, headers: Map<String, String>): PlayResponse {
return get(url, headers, hashMapOf())
}
override fun get(
url: String,
headers: Map<String, String>,
params: Map<String, String>
): PlayResponse {
val parameters = params
.map { it.key to it.value }
.toList()
val (request, response, _) = Fuel.get(url, parameters)
.header(headers)
.response()
return buildPlayResponse(response, request)
}
override fun getAuth(url: String): PlayResponse {
val (request, response, _) = Fuel.get(url)
.appendHeader(
"User-Agent",
"${BuildConfig.APPLICATION_ID}-${BuildConfig.VERSION_NAME}-${BuildConfig.VERSION_CODE}"
)
.response()
return buildPlayResponse(response, request)
}
override fun get(
url: String,
headers: Map<String, String>,
paramString: String
): PlayResponse {
val (request, response, _) = Fuel.get(url + paramString)
.header(headers)
.response()
return buildPlayResponse(response, request)
}
override fun post(url: String, headers: Map<String, String>, body: ByteArray): PlayResponse {
val (request, response, _) = Fuel.post(url)
.header(headers)
.appendHeader(Headers.CONTENT_TYPE, "application/x-protobuf")
.body(body, Charset.defaultCharset())
.response()
return buildPlayResponse(response, request)
}
override fun post(
url: String,
headers: Map<String, String>,
params: Map<String, String>
): PlayResponse {
val parameters = params
.map { it.key to it.value }
.toList()
val (request, response, _) = Fuel.post(url, parameters)
.header(headers)
.response()
return buildPlayResponse(response, request)
}
override fun postAuth(url: String, body: ByteArray): PlayResponse {
val (request, response, _) = Fuel.post(url)
.appendHeader(
"User-Agent",
"${BuildConfig.APPLICATION_ID}-${BuildConfig.VERSION_NAME}-${BuildConfig.VERSION_CODE}"
)
.body(body)
.response()
return buildPlayResponse(response, request)
}
@JvmStatic
private fun buildPlayResponse(response: Response, request: Request): PlayResponse {
// Reset response code as flow doesn't sends the same value twice
_responseCode.value = 0
return PlayResponse().apply {
isSuccessful = response.isSuccessful
code = response.statusCode
if (response.isSuccessful) {
responseBytes = response.body().toByteArray()
}
if (response.isClientError || response.isServerError) {
errorBytes = response.responseMessage.toByteArray()
errorString = String(errorBytes)
}
}.also {
_responseCode.value = response.statusCode
Log.i("FUEL [${request.method}:${response.statusCode}] ${response.url}")
}
}
}

View File

@@ -19,16 +19,11 @@
package com.aurora.store.data.network package com.aurora.store.data.network
import android.os.Build
import com.aurora.gplayapi.network.IHttpClient import com.aurora.gplayapi.network.IHttpClient
object HttpClient { object HttpClient {
fun getPreferredClient(): IHttpClient { fun getPreferredClient(): IHttpClient {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { return OkHttpClient
OkHttpClient
} else {
FuelClient
}
} }
} }

View File

@@ -71,19 +71,7 @@ class NativeDeviceInfoProvider(context: Context) : ContextWrapper(context) {
//Supported Platforms //Supported Platforms
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setProperty("Platforms", Build.SUPPORTED_ABIS.joinToString(separator = ","))
setProperty("Platforms", Build.SUPPORTED_ABIS.joinToString(separator = ","))
} else {
val platform = mutableListOf<String>()
if (!TextUtils.isEmpty(Build.CPU_ABI)) {
platform.add(Build.CPU_ABI)
}
if (!TextUtils.isEmpty(Build.CPU_ABI2)) {
platform.add(Build.CPU_ABI2)
}
setProperty("Platforms", platform.joinToString(separator = ","))
}
//Supported Features //Supported Features
setProperty("Features", getFeatures().joinToString(separator = ",")) setProperty("Features", getFeatures().joinToString(separator = ","))
//Shared Locales //Shared Locales
@@ -140,13 +128,7 @@ class NativeDeviceInfoProvider(context: Context) : ContextWrapper(context) {
private fun getLocales(): List<String> { private fun getLocales(): List<String> {
val localeList: MutableList<String> = ArrayList() val localeList: MutableList<String> = ArrayList()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { localeList.addAll(listOf(*applicationContext.assets.locales))
localeList.addAll(listOf(*applicationContext.assets.locales))
} else {
for (locale in Locale.getAvailableLocales()) {
localeList.add(locale.toString())
}
}
val locales: MutableList<String> = ArrayList() val locales: MutableList<String> = ArrayList()
for (locale in localeList) { for (locale in localeList) {
if (TextUtils.isEmpty(locale)) { if (TextUtils.isEmpty(locale)) {
@@ -182,4 +164,4 @@ class NativeDeviceInfoProvider(context: Context) : ContextWrapper(context) {
properties["Build.ID"] = "ABC.123" properties["Build.ID"] = "ABC.123"
return properties return properties
} }
} }

View File

@@ -24,7 +24,6 @@ import android.app.*
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Build
import android.os.IBinder import android.os.IBinder
import android.util.ArrayMap import android.util.ArrayMap
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
@@ -32,7 +31,6 @@ import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.getStyledAttributeColor import com.aurora.extensions.getStyledAttributeColor
import com.aurora.extensions.isLAndAbove
import com.aurora.extensions.isMAndAbove import com.aurora.extensions.isMAndAbove
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
@@ -54,7 +52,6 @@ import com.tonyodev.fetch2.*
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import java.lang.reflect.Modifier import java.lang.reflect.Modifier
import java.util.*
class NotificationService : Service() { class NotificationService : Service() {
@@ -272,12 +269,10 @@ class NotificationService : Service() {
} }
} }
if (isLAndAbove()) { when (status) {
when (status) { Status.DOWNLOADING -> builder.setCategory(Notification.CATEGORY_PROGRESS)
Status.DOWNLOADING -> builder.setCategory(Notification.CATEGORY_PROGRESS) Status.FAILED, Status.CANCELLED -> builder.setCategory(Notification.CATEGORY_ERROR)
Status.FAILED, Status.CANCELLED -> builder.setCategory(Notification.CATEGORY_ERROR) else -> builder.setCategory(Notification.CATEGORY_STATUS)
else -> builder.setCategory(Notification.CATEGORY_STATUS)
}
} }
if (NotificationManagerCompat.from(this).areNotificationsEnabled()) { if (NotificationManagerCompat.from(this).areNotificationsEnabled()) {

View File

@@ -24,7 +24,6 @@ import android.content.pm.PackageInfo
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Build import android.os.Build
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import com.aurora.extensions.isLAndAbove
import com.aurora.store.util.PackageUtil.getPackageInfo import com.aurora.store.util.PackageUtil.getPackageInfo
import java.io.File import java.io.File
import java.io.FileOutputStream import java.io.FileOutputStream
@@ -54,16 +53,12 @@ class ApkCopier(private val context: Context, private val packageName: String) {
/*Add base APK*/ /*Add base APK*/
fileList.add(baseApk) fileList.add(baseApk)
if (isLAndAbove()) { val splitSourceDirs = packageInfo.applicationInfo.splitSourceDirs
val splitSourceDirs = packageInfo.applicationInfo.splitSourceDirs if (splitSourceDirs != null && splitSourceDirs.isNotEmpty()) {
if (splitSourceDirs != null && splitSourceDirs.isNotEmpty()) { /*Add Split APKs*/
/*Add Split APKs*/ fileList.addAll(getSplitAPKs(packageInfo))
fileList.addAll(getSplitAPKs(packageInfo))
}
bundleAllAPKs(fileList)
} else {
bundleAllAPKs(fileList)
} }
bundleAllAPKs(fileList)
} }
private fun getBaseApk(packageInfo: PackageInfo?): File? { private fun getBaseApk(packageInfo: PackageInfo?): File? {
@@ -74,7 +69,6 @@ class ApkCopier(private val context: Context, private val packageName: String) {
} }
} }
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
private fun getSplitAPKs(packageInfo: PackageInfo): MutableList<File> { private fun getSplitAPKs(packageInfo: PackageInfo): MutableList<File> {
val fileList: MutableList<File> = ArrayList() val fileList: MutableList<File> = ArrayList()
val splitSourceDirs = packageInfo.applicationInfo.splitSourceDirs val splitSourceDirs = packageInfo.applicationInfo.splitSourceDirs

View File

@@ -137,16 +137,14 @@ object CommonUtil {
} }
fun cleanupInstallationSessions(context: Context) { fun cleanupInstallationSessions(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val packageInstaller = context.packageManager.packageInstaller
val packageInstaller = context.packageManager.packageInstaller for (sessionInfo in packageInstaller.mySessions) {
for (sessionInfo in packageInstaller.mySessions) { try {
try { val sessionId = sessionInfo.sessionId
val sessionId = sessionInfo.sessionId packageInstaller.abandonSession(sessionInfo.sessionId)
packageInstaller.abandonSession(sessionInfo.sessionId) Log.i("Abandoned session id -> %d", sessionId)
Log.i("Abandoned session id -> %d", sessionId) } catch (e: Exception) {
} catch (e: Exception) {
}
} }
} }
} }

View File

@@ -22,7 +22,6 @@ package com.aurora.store.util
import android.app.ActivityOptions import android.app.ActivityOptions
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Build
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.aurora.Constants import com.aurora.Constants
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
@@ -45,12 +44,8 @@ object NavigationUtil {
).apply { ).apply {
putExtra(Constants.STRING_EXTRA, gson.toJson(app)) putExtra(Constants.STRING_EXTRA, gson.toJson(app))
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity)
val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity) context.startActivity(intent, options.toBundle())
context.startActivity(intent, options.toBundle())
} else {
context.startActivity(intent)
}
} }
fun openDevAppsActivity(context: Context, app: App) { fun openDevAppsActivity(context: Context, app: App) {
@@ -60,12 +55,8 @@ object NavigationUtil {
).apply { ).apply {
putExtra(Constants.STRING_APP, gson.toJson(app)) putExtra(Constants.STRING_APP, gson.toJson(app))
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity)
val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity) context.startActivity(intent, options.toBundle())
context.startActivity(intent, options.toBundle())
} else {
context.startActivity(intent)
}
} }
fun openExodusActivity(context: Context, app: App, report: Report) { fun openExodusActivity(context: Context, app: App, report: Report) {
@@ -76,12 +67,8 @@ object NavigationUtil {
putExtra(Constants.STRING_APP, gson.toJson(app)) putExtra(Constants.STRING_APP, gson.toJson(app))
putExtra(Constants.STRING_EXTRA, gson.toJson(report)) putExtra(Constants.STRING_EXTRA, gson.toJson(report))
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity)
val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity) context.startActivity(intent, options.toBundle())
context.startActivity(intent, options.toBundle())
} else {
context.startActivity(intent)
}
} }
fun openSearchActivity(context: Context) { fun openSearchActivity(context: Context) {
@@ -89,11 +76,7 @@ object NavigationUtil {
context, context,
SearchResultsActivity::class.java SearchResultsActivity::class.java
) )
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity)
val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity) context.startActivity(intent, options.toBundle())
context.startActivity(intent, options.toBundle())
} else {
context.startActivity(intent)
}
} }
} }

View File

@@ -89,13 +89,8 @@ object PackageUtil {
} }
fun getLaunchIntent(context: Context, packageName: String?): Intent? { fun getLaunchIntent(context: Context, packageName: String?): Intent? {
val isTv = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && isTv(context) val intent = if (isTv(context)) {
val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { context.packageManager.getLeanbackLaunchIntentForPackage(packageName!!)
if (isTv) {
context.packageManager.getLeanbackLaunchIntentForPackage(packageName!!)
} else {
context.packageManager.getLaunchIntentForPackage(packageName!!)
}
} else { } else {
context.packageManager.getLaunchIntentForPackage(packageName!!) context.packageManager.getLaunchIntentForPackage(packageName!!)
} }
@@ -103,7 +98,7 @@ object PackageUtil {
return if (intent == null) { return if (intent == null) {
null null
} else { } else {
intent.addCategory(if (isTv) Intent.CATEGORY_LEANBACK_LAUNCHER else Intent.CATEGORY_LAUNCHER) intent.addCategory(if (isTv(context)) Intent.CATEGORY_LEANBACK_LAUNCHER else Intent.CATEGORY_LAUNCHER)
intent intent
} }
} }

View File

@@ -21,7 +21,6 @@ package com.aurora.store.util
import android.content.Context import android.content.Context
import android.os.Environment import android.os.Environment
import com.aurora.extensions.isLAndAbove
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.File import com.aurora.gplayapi.data.models.File
import java.util.UUID import java.util.UUID
@@ -33,13 +32,10 @@ fun Context.getInternalBaseDirectory(): String {
object PathUtil { object PathUtil {
private fun getDownloadDirectory(context: Context): String { private fun getDownloadDirectory(context: Context): String {
return if (isLAndAbove()) { return if (context.isExternalStorageEnable()) {
if (context.isExternalStorageEnable())
getExternalPath()
else
context.getInternalBaseDirectory()
} else {
getExternalPath() getExternalPath()
} else {
context.getInternalBaseDirectory()
} }
} }

View File

@@ -51,7 +51,6 @@ class RatingView : RelativeLayout {
) { ) {
} }
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
constructor( constructor(
context: Context?, context: Context?,
attrs: AttributeSet?, attrs: AttributeSet?,
@@ -68,4 +67,4 @@ class RatingView : RelativeLayout {
B.avgRating.max = max B.avgRating.max = max
B.avgRating.progress = rating B.avgRating.progress = rating
} }
} }

View File

@@ -47,7 +47,6 @@ class DevInfoLayout : RelativeLayout {
init(context, attrs) init(context, attrs)
} }
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
constructor( constructor(
context: Context, context: Context,
attrs: AttributeSet?, attrs: AttributeSet?,
@@ -80,4 +79,4 @@ class DevInfoLayout : RelativeLayout {
B.txtSubtitle.text = text B.txtSubtitle.text = text
invalidate() invalidate()
} }
} }

View File

@@ -18,6 +18,7 @@
*/ */
package com.aurora.store.view.custom.layouts package com.aurora.store.view.custom.layouts
import android.annotation.SuppressLint
import android.annotation.TargetApi import android.annotation.TargetApi
import android.content.Context import android.content.Context
import android.content.pm.PackageManager import android.content.pm.PackageManager
@@ -50,7 +51,6 @@ class PermissionGroup : LinearLayout {
init() init()
} }
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super( constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
context, context,
attrs, attrs,
@@ -59,7 +59,6 @@ class PermissionGroup : LinearLayout {
init() init()
} }
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
constructor( constructor(
context: Context?, context: Context?,
attrs: AttributeSet?, attrs: AttributeSet?,

View File

@@ -27,7 +27,6 @@ import android.widget.RelativeLayout
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.aurora.extensions.getString import com.aurora.extensions.getString
import com.aurora.extensions.isLAndAbove
import com.aurora.extensions.runOnUiThread import com.aurora.extensions.runOnUiThread
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.State import com.aurora.store.State
@@ -55,7 +54,6 @@ class ActionButton : RelativeLayout {
init(context, attrs) init(context, attrs)
} }
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
constructor( constructor(
context: Context, context: Context,
attrs: AttributeSet?, attrs: AttributeSet?,
@@ -101,9 +99,7 @@ class ActionButton : RelativeLayout {
B.btn.text = btnTxt B.btn.text = btnTxt
B.btn.setTextColor(stateColor) B.btn.setTextColor(stateColor)
B.img.setImageDrawable(ContextCompat.getDrawable(context, stateIcon)) B.img.setImageDrawable(ContextCompat.getDrawable(context, stateIcon))
if (isLAndAbove()) { B.img.imageTintList = ColorStateList.valueOf(stateColor)
B.img.imageTintList = ColorStateList.valueOf(stateColor)
}
typedArray.recycle() typedArray.recycle()
} }
@@ -146,4 +142,4 @@ class ActionButton : RelativeLayout {
fun addOnClickListener(onClickListener: OnClickListener?) { fun addOnClickListener(onClickListener: OnClickListener?) {
B.btn.setOnClickListener(onClickListener) B.btn.setOnClickListener(onClickListener)
} }
} }

View File

@@ -49,7 +49,6 @@ class StateButton : RelativeLayout {
init(context, attrs) init(context, attrs)
} }
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
constructor( constructor(
context: Context, context: Context,
attrs: AttributeSet?, attrs: AttributeSet?,
@@ -86,4 +85,4 @@ class StateButton : RelativeLayout {
fun addOnClickListener(onClickListener: OnClickListener) { fun addOnClickListener(onClickListener: OnClickListener) {
B.btn.setOnClickListener(onClickListener) B.btn.setOnClickListener(onClickListener)
} }
} }

View File

@@ -50,7 +50,6 @@ class UpdateButton : RelativeLayout {
init(context) init(context)
} }
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
constructor( constructor(
context: Context, context: Context,
attrs: AttributeSet?, attrs: AttributeSet?,

View File

@@ -82,7 +82,6 @@ public class AuroraProgressView extends View {
init(context, attrs, defStyleAttr, R.style.AuroraProgressView); init(context, attrs, defStyleAttr, R.style.AuroraProgressView);
} }
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public AuroraProgressView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { public AuroraProgressView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes); super(context, attrs, defStyleAttr, defStyleRes);
init(context, attrs, defStyleAttr, R.style.AuroraProgressView); init(context, attrs, defStyleAttr, R.style.AuroraProgressView);
@@ -362,7 +361,6 @@ public class AuroraProgressView extends View {
} }
} }
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override @Override
public void drawableHotspotChanged(float x, float y) { public void drawableHotspotChanged(float x, float y) {
super.drawableHotspotChanged(x, y); super.drawableHotspotChanged(x, y);

View File

@@ -71,11 +71,7 @@ class AccentView : RelativeLayout {
context.theme context.theme
) )
} else { } else {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { B.img.backgroundTintList = ColorStateList.valueOf(Color.parseColor(accent.accent))
B.img.backgroundTintList = ColorStateList.valueOf(Color.parseColor(accent.accent))
} else {
B.img.setBackgroundColor(Color.parseColor(accent.accent))
}
} }
} }

View File

@@ -27,7 +27,6 @@ import com.aurora.store.R
import com.aurora.store.data.model.Link import com.aurora.store.data.model.Link
import com.aurora.store.databinding.ActivityAboutBinding import com.aurora.store.databinding.ActivityAboutBinding
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.extensions.close
import com.aurora.extensions.copyToClipBoard import com.aurora.extensions.copyToClipBoard
import com.aurora.extensions.load import com.aurora.extensions.load
import com.aurora.store.view.epoxy.views.preference.LinkViewModel_ import com.aurora.store.view.epoxy.views.preference.LinkViewModel_
@@ -63,7 +62,7 @@ class AboutActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.txtTitle.text = getString(R.string.title_about) B.layoutToolbarAction.txtTitle.text = getString(R.string.title_about)
B.layoutToolbarAction.imgActionPrimary.setOnClickListener { B.layoutToolbarAction.imgActionPrimary.setOnClickListener {
close() finishAfterTransition()
} }
} }
@@ -126,4 +125,4 @@ class AboutActivity : BaseActivity() {
else -> copyToClipBoard(url) else -> copyToClipBoard(url)
} }
} }
} }

View File

@@ -25,7 +25,6 @@ import android.view.View
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.extensions.close
import com.aurora.extensions.getEmptyActivityAnimation import com.aurora.extensions.getEmptyActivityAnimation
import com.aurora.extensions.load import com.aurora.extensions.load
import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.AuthData
@@ -178,7 +177,7 @@ class AccountActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.txtTitle.text = getString(R.string.title_account_manager) B.layoutToolbarAction.txtTitle.text = getString(R.string.title_account_manager)
B.layoutToolbarAction.imgActionPrimary.setOnClickListener { B.layoutToolbarAction.imgActionPrimary.setOnClickListener {
close() finishAfterTransition()
} }
} }

View File

@@ -27,10 +27,7 @@ import android.webkit.WebSettings
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.close
import com.aurora.extensions.isLAndAbove
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.event.BusEvent import com.aurora.store.data.event.BusEvent
import com.aurora.store.databinding.ActivityGoogleBinding import com.aurora.store.databinding.ActivityGoogleBinding
@@ -68,11 +65,9 @@ class GoogleActivity : BaseActivity() {
@SuppressLint("SetJavaScriptEnabled") @SuppressLint("SetJavaScriptEnabled")
private fun setupWebView() { private fun setupWebView() {
if (isLAndAbove()) { cookieManager.removeAllCookies(null)
cookieManager.removeAllCookies(null) cookieManager.acceptThirdPartyCookies(B.webview)
cookieManager.acceptThirdPartyCookies(B.webview) cookieManager.setAcceptThirdPartyCookies(B.webview, true)
cookieManager.setAcceptThirdPartyCookies(B.webview, true)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
B.webview.settings.safeBrowsingEnabled = false B.webview.settings.safeBrowsingEnabled = false
@@ -127,7 +122,7 @@ class GoogleActivity : BaseActivity() {
//Close Activity //Close Activity
setResult(RESULT_OK) setResult(RESULT_OK)
close() finishAfterTransition()
} fail { } fail {
Toast.makeText(this, getString(R.string.toast_aas_token_failed), Toast.LENGTH_LONG) Toast.makeText(this, getString(R.string.toast_aas_token_failed), Toast.LENGTH_LONG)
.show() .show()
@@ -135,7 +130,7 @@ class GoogleActivity : BaseActivity() {
//Close Activity //Close Activity
setResult(RESULT_CANCELED) setResult(RESULT_CANCELED)
close() finishAfterTransition()
} }
} }

View File

@@ -56,88 +56,51 @@ abstract class BaseActivity : AppCompatActivity(), NetworkProvider.NetworkListen
} }
fun openDetailsActivity(app: App) { fun openDetailsActivity(app: App) {
val intent = Intent( val intent = Intent(this, AppDetailsActivity::class.java)
this,
AppDetailsActivity::class.java
)
intent.putExtra(Constants.STRING_EXTRA, gson.toJson(app)) intent.putExtra(Constants.STRING_EXTRA, gson.toJson(app))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val options = ActivityOptions.makeSceneTransitionAnimation(this)
val options = startActivity(intent, options.toBundle())
ActivityOptions.makeSceneTransitionAnimation(this)
startActivity(intent, options.toBundle())
} else {
startActivity(intent)
}
} }
fun openDetailsMoreActivity(app: App) { fun openDetailsMoreActivity(app: App) {
val intent = Intent( val intent = Intent(this, DetailsMoreActivity::class.java)
this,
DetailsMoreActivity::class.java
)
intent.putExtra(Constants.STRING_EXTRA, gson.toJson(app)) intent.putExtra(Constants.STRING_EXTRA, gson.toJson(app))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val options = ActivityOptions.makeSceneTransitionAnimation(this)
val options = startActivity(intent, options.toBundle())
ActivityOptions.makeSceneTransitionAnimation(this)
startActivity(intent, options.toBundle())
} else {
startActivity(intent)
}
} }
fun openDetailsReviewActivity(app: App) { fun openDetailsReviewActivity(app: App) {
val intent = Intent( val intent = Intent(this, DetailsReviewActivity::class.java)
this,
DetailsReviewActivity::class.java
)
intent.putExtra(Constants.STRING_EXTRA, gson.toJson(app)) intent.putExtra(Constants.STRING_EXTRA, gson.toJson(app))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val options = ActivityOptions.makeSceneTransitionAnimation(this)
val options = startActivity(intent, options.toBundle())
ActivityOptions.makeSceneTransitionAnimation(this)
startActivity(intent, options.toBundle())
} else {
startActivity(intent)
}
} }
fun openStreamBrowseActivity(browseUrl: String, title: String = "") { fun openStreamBrowseActivity(browseUrl: String, title: String = "") {
val intent = if (browseUrl.lowercase().contains("expanded")) val intent = if (browseUrl.lowercase().contains("expanded")) {
Intent(this, ExpandedStreamBrowseActivity::class.java) Intent(this, ExpandedStreamBrowseActivity::class.java)
else if (browseUrl.lowercase().contains("developer")) } else if (browseUrl.lowercase().contains("developer")) {
Intent(this, DevProfileActivity::class.java) Intent(this, DevProfileActivity::class.java)
else } else {
Intent(this, StreamBrowseActivity::class.java) Intent(this, StreamBrowseActivity::class.java)
}
intent.putExtra(Constants.BROWSE_EXTRA, browseUrl) intent.putExtra(Constants.BROWSE_EXTRA, browseUrl)
intent.putExtra(Constants.STRING_EXTRA, title) intent.putExtra(Constants.STRING_EXTRA, title)
startActivity( startActivity(intent, getEmptyActivityBundle())
intent,
getEmptyActivityBundle()
)
} }
fun openScreenshotActivity(app: App, position: Int) { fun openScreenshotActivity(app: App, position: Int) {
val intent = Intent( val intent = Intent(this, ScreenshotActivity::class.java).apply {
this,
ScreenshotActivity::class.java
).apply {
putExtra(Constants.STRING_EXTRA, gson.toJson(app.screenshots)) putExtra(Constants.STRING_EXTRA, gson.toJson(app.screenshots))
putExtra(Constants.INT_EXTRA, position) putExtra(Constants.INT_EXTRA, position)
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val options = ActivityOptions.makeSceneTransitionAnimation(this)
val options = startActivity(intent, options.toBundle())
ActivityOptions.makeSceneTransitionAnimation(this)
startActivity(intent, options.toBundle())
} else {
startActivity(intent)
}
} }
fun openGoogleActivity() { fun openGoogleActivity() {
val intent = Intent(this, GoogleActivity::class.java) val intent = Intent(this, GoogleActivity::class.java)
startActivity( startActivity(intent, getEmptyActivityBundle())
intent,
getEmptyActivityBundle()
)
} }
fun askToReadTOS() { fun askToReadTOS() {

View File

@@ -21,7 +21,6 @@ package com.aurora.store.view.ui.commons
import android.app.ActivityOptions import android.app.ActivityOptions
import android.content.Intent import android.content.Intent
import android.os.Build
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.getEmptyActivityBundle import com.aurora.extensions.getEmptyActivityBundle
@@ -42,24 +41,16 @@ open class BaseFragment : Fragment() {
fun openDetailsActivity(app: App) { fun openDetailsActivity(app: App) {
val intent = Intent(context, AppDetailsActivity::class.java) val intent = Intent(context, AppDetailsActivity::class.java)
intent.putExtra(Constants.STRING_EXTRA, Gson().toJson(app)) intent.putExtra(Constants.STRING_EXTRA, Gson().toJson(app))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val options = ActivityOptions.makeSceneTransitionAnimation(requireActivity())
val options = ActivityOptions.makeSceneTransitionAnimation(requireActivity()) startActivity(intent, options.toBundle())
startActivity(intent, options.toBundle())
} else {
startActivity(intent)
}
} }
fun openCategoryBrowseActivity(category: Category) { fun openCategoryBrowseActivity(category: Category) {
val intent = Intent(context, CategoryBrowseActivity::class.java) val intent = Intent(context, CategoryBrowseActivity::class.java)
intent.putExtra(Constants.STRING_EXTRA, category.title) intent.putExtra(Constants.STRING_EXTRA, category.title)
intent.putExtra(Constants.BROWSE_EXTRA, category.browseUrl) intent.putExtra(Constants.BROWSE_EXTRA, category.browseUrl)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val options = ActivityOptions.makeSceneTransitionAnimation(requireActivity())
val options = ActivityOptions.makeSceneTransitionAnimation(requireActivity()) startActivity(intent, options.toBundle())
startActivity(intent, options.toBundle())
} else {
startActivity(intent)
}
} }
fun openStreamBrowseActivity(browseUrl: String, title: String = "") { fun openStreamBrowseActivity(browseUrl: String, title: String = "") {

View File

@@ -25,7 +25,6 @@ import com.aurora.store.R
import com.aurora.store.data.model.Black import com.aurora.store.data.model.Black
import com.aurora.store.data.providers.BlacklistProvider import com.aurora.store.data.providers.BlacklistProvider
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.extensions.close
import com.aurora.store.view.epoxy.views.BlackListViewModel_ import com.aurora.store.view.epoxy.views.BlackListViewModel_
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_ import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
import com.aurora.store.viewmodel.all.BlacklistViewModel import com.aurora.store.viewmodel.all.BlacklistViewModel
@@ -77,7 +76,7 @@ class BlacklistActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.txtTitle.text = getString(R.string.title_blacklist_manager) B.layoutToolbarAction.txtTitle.text = getString(R.string.title_blacklist_manager)
B.layoutToolbarAction.imgActionPrimary.setOnClickListener { B.layoutToolbarAction.imgActionPrimary.setOnClickListener {
close() finishAfterTransition()
} }
} }

View File

@@ -23,7 +23,6 @@ import android.os.Bundle
import android.widget.Toast import android.widget.Toast
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.close
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.StreamBundle import com.aurora.gplayapi.data.models.StreamBundle
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
@@ -88,7 +87,7 @@ class CategoryBrowseActivity : BaseActivity(), GenericCarouselController.Callbac
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.imgActionPrimary.setOnClickListener { B.layoutToolbarAction.imgActionPrimary.setOnClickListener {
close() finishAfterTransition()
} }
} }

View File

@@ -25,7 +25,6 @@ import com.airbnb.epoxy.EpoxyModel
import com.aurora.Constants import com.aurora.Constants
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.extensions.close
import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_ import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_
import com.aurora.store.view.epoxy.views.EditorHeadViewModel_ import com.aurora.store.view.epoxy.views.EditorHeadViewModel_
import com.aurora.store.view.epoxy.views.HorizontalDividerViewModel_ import com.aurora.store.view.epoxy.views.HorizontalDividerViewModel_
@@ -82,7 +81,7 @@ class EditorStreamBrowseActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.imgActionPrimary.setOnClickListener { B.layoutToolbarAction.imgActionPrimary.setOnClickListener {
close() finishAfterTransition()
} }
} }

View File

@@ -25,7 +25,6 @@ import com.airbnb.epoxy.EpoxyModel
import com.aurora.Constants import com.aurora.Constants
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.extensions.close
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_ import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_
import com.aurora.store.view.epoxy.views.AppProgressViewModel_ import com.aurora.store.view.epoxy.views.AppProgressViewModel_
@@ -97,7 +96,7 @@ class ExpandedStreamBrowseActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.imgActionPrimary.setOnClickListener { B.layoutToolbarAction.imgActionPrimary.setOnClickListener {
close() finishAfterTransition()
} }
} }

View File

@@ -24,7 +24,6 @@ import androidx.lifecycle.ViewModelProvider
import com.aurora.Constants import com.aurora.Constants
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.extensions.close
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.views.AppProgressViewModel_ import com.aurora.store.view.epoxy.views.AppProgressViewModel_
import com.aurora.store.view.epoxy.views.app.AppListViewModel_ import com.aurora.store.view.epoxy.views.app.AppListViewModel_
@@ -90,7 +89,7 @@ class StreamBrowseActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.imgActionPrimary.setOnClickListener { B.layoutToolbarAction.imgActionPrimary.setOnClickListener {
close() finishAfterTransition()
} }
} }

View File

@@ -228,7 +228,7 @@ class AppDetailsActivity : BaseDetailsActivity() {
val packageName = intent.data!!.getQueryParameter("id") val packageName = intent.data!!.getQueryParameter("id")
val packageVersion = intent.data!!.getQueryParameter("v") val packageVersion = intent.data!!.getQueryParameter("v")
if (packageName.isNullOrEmpty()) { if (packageName.isNullOrEmpty()) {
close() finishAfterTransition()
} else { } else {
isExternal = true isExternal = true
app = App(packageName) app = App(packageName)
@@ -246,7 +246,7 @@ class AppDetailsActivity : BaseDetailsActivity() {
inflatePartialApp() inflatePartialApp()
fetchCompleteApp() fetchCompleteApp()
} else { } else {
close() finishAfterTransition()
} }
} }
} }

View File

@@ -28,7 +28,6 @@ import com.aurora.store.data.model.Report
import com.aurora.store.data.providers.ExodusDataProvider import com.aurora.store.data.providers.ExodusDataProvider
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.extensions.close
import com.aurora.store.view.epoxy.views.HeaderViewModel_ import com.aurora.store.view.epoxy.views.HeaderViewModel_
import com.aurora.store.view.epoxy.views.details.ExodusViewModel_ import com.aurora.store.view.epoxy.views.details.ExodusViewModel_
import com.aurora.store.view.ui.commons.BaseActivity import com.aurora.store.view.ui.commons.BaseActivity
@@ -78,7 +77,7 @@ class DetailsExodusActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.toolbar.setOnClickListener { B.layoutToolbarAction.toolbar.setOnClickListener {
close() finishAfterTransition()
} }
B.layoutToolbarAction.txtTitle.text = app.displayName B.layoutToolbarAction.txtTitle.text = app.displayName
} }

View File

@@ -28,7 +28,6 @@ import com.aurora.gplayapi.helpers.AppDetailsHelper
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.providers.AuthProvider import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.databinding.ActivityDetailsMoreBinding import com.aurora.store.databinding.ActivityDetailsMoreBinding
import com.aurora.extensions.close
import com.aurora.store.view.epoxy.views.HeaderViewModel_ import com.aurora.store.view.epoxy.views.HeaderViewModel_
import com.aurora.store.view.epoxy.views.app.NoAppAltViewModel_ import com.aurora.store.view.epoxy.views.app.NoAppAltViewModel_
import com.aurora.store.view.epoxy.views.details.AppDependentViewModel_ import com.aurora.store.view.epoxy.views.details.AppDependentViewModel_
@@ -77,7 +76,7 @@ class DetailsMoreActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarActionMore.toolbar.setOnClickListener { B.layoutToolbarActionMore.toolbar.setOnClickListener {
close() finishAfterTransition()
} }
} }

View File

@@ -22,7 +22,6 @@ package com.aurora.store.view.ui.details
import android.os.Bundle import android.os.Bundle
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.close
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Review import com.aurora.gplayapi.data.models.Review
import com.aurora.gplayapi.data.models.ReviewCluster import com.aurora.gplayapi.data.models.ReviewCluster
@@ -91,7 +90,7 @@ class DetailsReviewActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarActionReview.toolbar.setOnClickListener { B.layoutToolbarActionReview.toolbar.setOnClickListener {
close() finishAfterTransition()
} }
B.layoutToolbarActionReview.txtTitle.text = app.displayName B.layoutToolbarActionReview.txtTitle.text = app.displayName
} }

View File

@@ -27,7 +27,6 @@ import com.aurora.Constants
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.SearchBundle import com.aurora.gplayapi.data.models.SearchBundle
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.extensions.close
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.views.app.AppListViewModel_ import com.aurora.store.view.epoxy.views.app.AppListViewModel_
import com.aurora.store.view.epoxy.views.AppProgressViewModel_ import com.aurora.store.view.epoxy.views.AppProgressViewModel_
@@ -87,7 +86,7 @@ class DevAppsActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.toolbar.setOnClickListener { B.layoutToolbarAction.toolbar.setOnClickListener {
close() finishAfterTransition()
} }
B.layoutToolbarAction.txtTitle.text = app.developerName B.layoutToolbarAction.txtTitle.text = app.developerName
} }

View File

@@ -31,7 +31,6 @@ import com.aurora.store.R
import com.aurora.store.data.ViewState import com.aurora.store.data.ViewState
import com.aurora.store.data.providers.AuthProvider import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.databinding.ActivityDevProfileBinding import com.aurora.store.databinding.ActivityDevProfileBinding
import com.aurora.extensions.close
import com.aurora.extensions.load import com.aurora.extensions.load
import com.aurora.store.view.epoxy.controller.DeveloperCarouselController import com.aurora.store.view.epoxy.controller.DeveloperCarouselController
import com.aurora.store.view.epoxy.controller.GenericCarouselController import com.aurora.store.view.epoxy.controller.GenericCarouselController
@@ -100,7 +99,7 @@ class DevProfileActivity : BaseActivity(), GenericCarouselController.Callbacks {
if (intent.scheme != null && (intent.scheme == "http" || intent.scheme == "https")) { if (intent.scheme != null && (intent.scheme == "http" || intent.scheme == "https")) {
val devId = intent.data!!.getQueryParameter("id") val devId = intent.data!!.getQueryParameter("id")
if (devId.isNullOrEmpty()) { if (devId.isNullOrEmpty()) {
close() finishAfterTransition()
} else { } else {
VM.getStreamBundle(devId) VM.getStreamBundle(devId)
} }
@@ -113,13 +112,13 @@ class DevProfileActivity : BaseActivity(), GenericCarouselController.Callbacks {
} }
} }
} else { } else {
close() finishAfterTransition()
} }
} }
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.toolbar.setOnClickListener { B.layoutToolbarAction.toolbar.setOnClickListener {
close() finishAfterTransition()
} }
B.layoutToolbarAction.txtTitle.text = getString(R.string.details_dev_profile) B.layoutToolbarAction.txtTitle.text = getString(R.string.details_dev_profile)
} }

View File

@@ -3,7 +3,6 @@ package com.aurora.store.view.ui.details
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.aurora.extensions.close
import com.aurora.store.R import com.aurora.store.R
class EmptyAppDetailsActivity: AppCompatActivity(R.layout.activity_details) { class EmptyAppDetailsActivity: AppCompatActivity(R.layout.activity_details) {
@@ -19,7 +18,7 @@ class EmptyAppDetailsActivity: AppCompatActivity(R.layout.activity_details) {
if (intent != null && validSchemes.any { it == intent.scheme }) { if (intent != null && validSchemes.any { it == intent.scheme }) {
if (intent.data!!.getQueryParameter("id").isNullOrEmpty()) { if (intent.data!!.getQueryParameter("id").isNullOrEmpty()) {
close() finishAfterTransition()
} else { } else {
// Construct a new intent manually to avoid accepting extras from external apps // Construct a new intent manually to avoid accepting extras from external apps
Intent(this, AppDetailsActivity::class.java).also { extIntent -> Intent(this, AppDetailsActivity::class.java).also { extIntent ->

View File

@@ -27,7 +27,6 @@ import androidx.recyclerview.widget.RecyclerView
import com.aurora.Constants import com.aurora.Constants
import com.aurora.gplayapi.data.models.Artwork import com.aurora.gplayapi.data.models.Artwork
import com.aurora.store.databinding.ActivityScreenshotBinding import com.aurora.store.databinding.ActivityScreenshotBinding
import com.aurora.extensions.close
import com.aurora.store.view.epoxy.views.details.LargeScreenshotViewModel_ import com.aurora.store.view.epoxy.views.details.LargeScreenshotViewModel_
import com.aurora.store.view.ui.commons.BaseActivity import com.aurora.store.view.ui.commons.BaseActivity
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
@@ -54,7 +53,7 @@ class ScreenshotActivity : BaseActivity() {
artworks = gson.fromJson(rawArtWorks, object : TypeToken<List<Artwork?>?>() {}.type) artworks = gson.fromJson(rawArtWorks, object : TypeToken<List<Artwork?>?>() {}.type)
updateController(artworks, position) updateController(artworks, position)
} else { } else {
close() finishAfterTransition()
} }
} }

View File

@@ -130,52 +130,50 @@ class AccentFragment : BaseFragment() {
} }
private fun animate(view: View) { private fun animate(view: View) {
if (Build.VERSION.SDK_INT >= 21) { if (B.themeSwitchImage.isVisible()) {
if (B.themeSwitchImage.isVisible()) { return;
return; }
} try {
try { val pos = IntArray(2)
val pos = IntArray(2) view.getLocationInWindow(pos)
view.getLocationInWindow(pos) val w: Int = B.root.measuredWidth
val w: Int = B.root.measuredWidth val h: Int = B.root.measuredHeight
val h: Int = B.root.measuredHeight
val bitmap = Bitmap.createBitmap( val bitmap = Bitmap.createBitmap(
B.root.measuredWidth, B.root.measuredWidth,
B.root.measuredHeight, B.root.measuredHeight,
Bitmap.Config.ARGB_8888 Bitmap.Config.ARGB_8888
) )
val canvas = Canvas(bitmap) val canvas = Canvas(bitmap)
B.root.draw(canvas) B.root.draw(canvas)
B.themeSwitchImage.setImageBitmap(bitmap) B.themeSwitchImage.setImageBitmap(bitmap)
B.themeSwitchImage.show() B.themeSwitchImage.show()
val finalRadius = sqrt( val finalRadius = sqrt(
((w - pos[0]) * (w - pos[0]) + (h - pos[1]) * (h - pos[1])).toDouble() ((w - pos[0]) * (w - pos[0]) + (h - pos[1]) * (h - pos[1])).toDouble()
).coerceAtLeast( ).coerceAtLeast(
sqrt((pos[0] * pos[0] + (h - pos[1]) * (h - pos[1])).toDouble()) sqrt((pos[0] * pos[0] + (h - pos[1]) * (h - pos[1])).toDouble())
).toFloat() ).toFloat()
val anim: Animator = ViewAnimationUtils.createCircularReveal( val anim: Animator = ViewAnimationUtils.createCircularReveal(
B.root, B.root,
pos[0], pos[0],
pos[1], pos[1],
0f, 0f,
finalRadius finalRadius
) )
anim.duration = 450 anim.duration = 450
anim.interpolator = CubicBezierInterpolator.EASE_IN_OUT_QUAD anim.interpolator = CubicBezierInterpolator.EASE_IN_OUT_QUAD
anim.addListener(object : AnimatorListenerAdapter() { anim.addListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator) { override fun onAnimationEnd(animation: Animator) {
B.themeSwitchImage.setImageDrawable(null) B.themeSwitchImage.setImageDrawable(null)
B.themeSwitchImage.hide() B.themeSwitchImage.hide()
} }
}) })
anim.start() anim.start()
} catch (ignore: Throwable) { } catch (ignore: Throwable) {
}
} }
} }

View File

@@ -116,52 +116,50 @@ class ThemeFragment : BaseFragment() {
} }
private fun animate(view: View) { private fun animate(view: View) {
if (Build.VERSION.SDK_INT >= 21) { if (B.themeSwitchImage.isVisible()) {
if (B.themeSwitchImage.isVisible()) { return;
return; }
} try {
try { val pos = IntArray(2)
val pos = IntArray(2) view.getLocationInWindow(pos)
view.getLocationInWindow(pos) val w: Int = B.root.measuredWidth
val w: Int = B.root.measuredWidth val h: Int = B.root.measuredHeight
val h: Int = B.root.measuredHeight
val bitmap = Bitmap.createBitmap( val bitmap = Bitmap.createBitmap(
B.root.measuredWidth, B.root.measuredWidth,
B.root.measuredHeight, B.root.measuredHeight,
Bitmap.Config.ARGB_8888 Bitmap.Config.ARGB_8888
) )
val canvas = Canvas(bitmap) val canvas = Canvas(bitmap)
B.root.draw(canvas) B.root.draw(canvas)
B.themeSwitchImage.setImageBitmap(bitmap) B.themeSwitchImage.setImageBitmap(bitmap)
B.themeSwitchImage.show() B.themeSwitchImage.show()
val finalRadius = sqrt( val finalRadius = sqrt(
((w - pos[0]) * (w - pos[0]) + (h - pos[1]) * (h - pos[1])).toDouble() ((w - pos[0]) * (w - pos[0]) + (h - pos[1]) * (h - pos[1])).toDouble()
).coerceAtLeast( ).coerceAtLeast(
sqrt((pos[0] * pos[0] + (h - pos[1]) * (h - pos[1])).toDouble()) sqrt((pos[0] * pos[0] + (h - pos[1]) * (h - pos[1])).toDouble())
).toFloat() ).toFloat()
val anim: Animator = ViewAnimationUtils.createCircularReveal( val anim: Animator = ViewAnimationUtils.createCircularReveal(
B.root, B.root,
pos[0], pos[0],
pos[1], pos[1],
0f, 0f,
finalRadius finalRadius
) )
anim.duration = 450 anim.duration = 450
anim.interpolator = CubicBezierInterpolator.EASE_IN_OUT_QUAD anim.interpolator = CubicBezierInterpolator.EASE_IN_OUT_QUAD
anim.addListener(object : AnimatorListenerAdapter() { anim.addListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator) { override fun onAnimationEnd(animation: Animator) {
B.themeSwitchImage.setImageDrawable(null) B.themeSwitchImage.setImageDrawable(null)
B.themeSwitchImage.hide() B.themeSwitchImage.hide()
} }
}) })
anim.start() anim.start()
} catch (ignore: Throwable) { } catch (ignore: Throwable) {
}
} }
} }
@@ -177,4 +175,4 @@ class ThemeFragment : BaseFragment() {
object : TypeToken<MutableList<Theme?>?>() {}.type object : TypeToken<MutableList<Theme?>?>() {}.type
) )
} }
} }

View File

@@ -24,7 +24,6 @@ import androidx.lifecycle.ViewModelProvider
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.extensions.close
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.views.app.AppListViewModel_ import com.aurora.store.view.epoxy.views.app.AppListViewModel_
import com.aurora.store.view.epoxy.views.AppProgressViewModel_ import com.aurora.store.view.epoxy.views.AppProgressViewModel_
@@ -71,7 +70,7 @@ class AppSalesActivity : BaseActivity() {
private fun attachToolbar() { private fun attachToolbar() {
B.layoutToolbarAction.txtTitle.text = getString(R.string.title_apps_sale) B.layoutToolbarAction.txtTitle.text = getString(R.string.title_apps_sale)
B.layoutToolbarAction.imgActionPrimary.setOnClickListener { B.layoutToolbarAction.imgActionPrimary.setOnClickListener {
close() finishAfterTransition()
} }
} }

View File

@@ -34,7 +34,6 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle import androidx.lifecycle.repeatOnLifecycle
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.close
import com.aurora.extensions.open import com.aurora.extensions.open
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.SearchBundle import com.aurora.gplayapi.data.models.SearchBundle
@@ -167,7 +166,7 @@ class SearchResultsActivity : BaseActivity(), OnSharedPreferenceChangeListener {
searchView = B.layoutViewToolbar.inputSearch searchView = B.layoutViewToolbar.inputSearch
B.layoutViewToolbar.imgActionPrimary.setOnClickListener { B.layoutViewToolbar.imgActionPrimary.setOnClickListener {
close() finishAfterTransition()
} }
B.layoutViewToolbar.imgActionSecondary.setOnClickListener { B.layoutViewToolbar.imgActionSecondary.setOnClickListener {
open(DownloadActivity::class.java) open(DownloadActivity::class.java)

View File

@@ -29,7 +29,6 @@ import android.widget.TextView
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.extensions.close
import com.aurora.extensions.getEmptyActivityBundle import com.aurora.extensions.getEmptyActivityBundle
import com.aurora.extensions.open import com.aurora.extensions.open
import com.aurora.extensions.showKeyboard import com.aurora.extensions.showKeyboard
@@ -91,7 +90,7 @@ class SearchSuggestionActivity : BaseActivity() {
searchView = B.layoutToolbarSearch.inputSearch searchView = B.layoutToolbarSearch.inputSearch
B.layoutToolbarSearch.imgActionPrimary.setOnClickListener { B.layoutToolbarSearch.imgActionPrimary.setOnClickListener {
close() finishAfterTransition()
} }
B.layoutToolbarSearch.imgActionSecondary.setOnClickListener { B.layoutToolbarSearch.imgActionSecondary.setOnClickListener {
open(DownloadActivity::class.java) open(DownloadActivity::class.java)

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?android:attr/colorAccent" android:state_selected="true" />
<item android:color="?android:attr/textColorPrimary" />
</selector>

View File

@@ -18,6 +18,6 @@
--> -->
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorAccent" android:state_selected="true" /> <item android:color="?android:attr/colorAccent" android:state_selected="true" />
<item android:color="?android:attr/textColorPrimary" /> <item android:color="?android:attr/textColorPrimary" />
</selector> </selector>

View File

@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
<solid android:color="?colorAccent" />
</shape>
</item>
</layer-list>

View File

@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<padding
android:bottom="@dimen/padding_large"
android:left="@dimen/padding_large"
android:right="@dimen/padding_large"
android:top="@dimen/padding_large" />
<corners android:radius="8dp" />
<stroke
android:width="1.25dp"
android:color="?colorStroke" />
</shape>

View File

@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="15dp" />
<solid android:color="?colorShimmer" />
</shape>

View File

@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="8dp" />
<solid android:color="?colorShimmer" />
</shape>

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1dp"
android:color="?colorPrimary" />
<solid android:color="?android:colorBackground" />
<corners android:radius="8dp" />
</shape>

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="16dp" />
<solid android:color="?android:colorBackground" />
</shape>
</item>
</layer-list>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/colorTransparent" />
<size
android:width="@dimen/margin_small"
android:height="@dimen/margin_small" />
</shape>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/colorTransparent" />
<size
android:width="2dp"
android:height="2dp" />
</shape>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="?colorAccent" />
<size
android:width="1.25dp"
android:height="12dp" />
</shape>

View File

@@ -1,30 +0,0 @@
<!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M12,10.586l4.95,-4.95 1.414,1.414 -4.95,4.95 4.95,4.95 -1.414,1.414 -4.95,-4.95 -4.95,4.95 -1.414,-1.414 4.95,-4.95 -4.95,-4.95L7.05,5.636z"
android:strokeWidth="1"
android:strokeColor="#FFF" />
</vector>

View File

@@ -1,28 +0,0 @@
<!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M12,1l8.217,1.826a1,1 0,0 1,0.783 0.976v9.987a6,6 0,0 1,-2.672 4.992L12,23l-6.328,-4.219A6,6 0,0 1,3 13.79L3,3.802a1,1 0,0 1,0.783 -0.976L12,1zM12,3.049L5,4.604v9.185a4,4 0,0 0,1.781 3.328L12,20.597l5.219,-3.48A4,4 0,0 0,19 13.79L19,4.604L12,3.05zM12,7a2,2 0,0 1,1.001 3.732L13,15h-2v-4.268A2,2 0,0 1,12 7z" />
</vector>

View File

@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:innerRadius="0dp"
android:shape="ring"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@color/colorStroke" />
</shape>
</item>
</layer-list>

View File

@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:gravity="start">
<shape android:shape="rectangle">
<solid android:color="?colorAccent" />
<padding
android:left="0dp"
android:right="@dimen/padding_xlarge" />
<corners android:radius="5dp" />
</shape>
</item>
</layer-list>

View File

@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:innerRadius="0dp"
android:shape="ring"
android:thickness="12dp"
android:useLevel="false">
<solid android:color="?colorAccent" />
</shape>
</item>
</layer-list>

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/tab_selected_onboarding" android:state_selected="true" />
<item android:drawable="@drawable/tab_default_onboarding" />
</selector>

View File

@@ -23,7 +23,7 @@
<corners <corners
android:topLeftRadius="8dp" android:topLeftRadius="8dp"
android:topRightRadius="8dp" /> android:topRightRadius="8dp" />
<solid android:color="@color/colorAccent" /> <solid android:color="?colorAccent" />
</shape> </shape>
</item> </item>
</layer-list> </layer-list>

View File

@@ -29,5 +29,5 @@
<stroke <stroke
android:width="1.25dp" android:width="1.25dp"
android:color="@color/colorStroke" /> android:color="?colorStroke" />
</shape> </shape>

View File

@@ -20,6 +20,6 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<corners android:radius="15dp" /> <corners android:radius="15dp" />
<solid android:color="@color/colorShimmer" /> <solid android:color="?colorShimmer" />
</shape> </shape>

View File

@@ -20,6 +20,6 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<corners android:radius="8dp" /> <corners android:radius="8dp" />
<solid android:color="@color/colorShimmer" /> <solid android:color="?colorShimmer" />
</shape> </shape>

View File

@@ -21,6 +21,7 @@
<item> <item>
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<corners android:radius="16dp" /> <corners android:radius="16dp" />
<solid android:color="?android:colorBackground" />
</shape> </shape>
</item> </item>
</layer-list> </layer-list>

View File

@@ -19,7 +19,8 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid android:color="?colorAccent" />
<size <size
android:width="1dp" android:width="1.25dp"
android:height="12dp" /> android:height="12dp" />
</shape> </shape>

View File

@@ -20,7 +20,7 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:gravity="start"> <item android:gravity="start">
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<solid android:color="@color/colorAccent" /> <solid android:color="?colorAccent" />
<padding <padding
android:left="0dp" android:left="0dp"
android:right="@dimen/padding_xlarge" /> android:right="@dimen/padding_xlarge" />

View File

@@ -24,7 +24,7 @@
android:shape="ring" android:shape="ring"
android:thickness="12dp" android:thickness="12dp"
android:useLevel="false"> android:useLevel="false">
<solid android:color="@color/colorAccent" /> <solid android:color="?colorAccent" />
</shape> </shape>
</item> </item>
</layer-list> </layer-list>

View File

@@ -1,85 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/view_toolbar"
layout="@layout/view_toolbar_main" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/nav_view"
android:layout_below="@+id/view_toolbar"
app:defaultNavHost="true"
app:navGraph="@navigation/mobile_navigation" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:menu="@menu/menu_bottom_nav" />
</RelativeLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/search_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginStart="@dimen/margin_normal"
android:layout_marginTop="@dimen/height_bottom_adj"
android:layout_marginEnd="@dimen/margin_normal"
android:layout_marginBottom="@dimen/height_bottom_adj"
android:contentDescription="@string/action_search"
app:backgroundTint="?colorAccent"
app:srcCompat="@drawable/ic_round_search"
app:tint="@color/colorWhite"
tools:ignore="ContentDescription" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="?android:attr/windowBackground"
android:overScrollMode="never"
app:headerLayout="@layout/layout_nav_header"
app:itemIconTint="?android:attr/colorAccent"
app:itemTextAppearance="@style/TextAppearance.Aurora.Line1"
app:menu="@menu/menu_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>

View File

@@ -1,74 +0,0 @@
<!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingStart="@dimen/padding_normal"
android:paddingEnd="?android:attr/scrollbarSize">
<androidx.appcompat.widget.AppCompatImageView
android:id="@android:id/icon"
android:layout_width="@dimen/icon_size_default"
android:layout_height="@dimen/icon_size_default"
android:layout_gravity="center"
android:layout_marginStart="@dimen/margin_small"
app:tint="?android:attr/colorAccent"
app:tintMode="src_in" />
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="@dimen/margin_xxsmall"
android:layout_marginEnd="@dimen/margin_xxsmall"
android:layout_marginBottom="@dimen/margin_xxsmall"
android:layout_weight="1">
<TextView
android:id="@android:id/title"
style="@style/TextAppearance.Aurora.Line1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:singleLine="true"
android:textSize="16sp" />
<TextView
android:id="@android:id/summary"
style="@style/TextAppearance.Aurora.Line2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@android:id/title"
android:layout_alignStart="@android:id/title"
android:maxLines="4" />
</RelativeLayout>
<LinearLayout
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical" />
</LinearLayout>

View File

@@ -1,162 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/bottomSheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_bottomsheet"
android:divider="@drawable/divider"
android:orientation="vertical"
android:paddingStart="@dimen/padding_small"
android:paddingEnd="@dimen/padding_small"
android:showDividers="middle"
app:behavior_hideable="false"
app:behavior_peekHeight="@dimen/height_peek"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<ViewFlipper
android:id="@+id/view_flipper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateFirstView="true"
android:inAnimation="@anim/fade_in"
android:outAnimation="@anim/fade_out"
tools:ignore="UselessParent">
<com.aurora.store.view.custom.layouts.button.ActionButton
android:id="@+id/btn_download"
android:layout_width="match_parent"
android:layout_height="@dimen/height_button"
android:layout_marginTop="@dimen/margin_xsmall"
android:layout_marginBottom="@dimen/margin_xsmall"
android:text="@string/action_install"
app:btnActionText="@string/action_install" />
<RelativeLayout
android:id="@+id/progress_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/height_button"
android:layout_marginTop="@dimen/margin_xsmall"
android:layout_marginBottom="@dimen/margin_xsmall"
android:gravity="center_vertical"
android:weightSum="4">
<ProgressBar
android:id="@+id/progress_download"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="@dimen/icon_size_small"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/img_cancel"
android:indeterminateTint="@color/colorScrim"
android:progressDrawable="@drawable/progressbar_bg"
tools:progress="40" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toStartOf="@id/img_cancel"
android:gravity="center_vertical"
android:orientation="horizontal"
android:weightSum="3">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_progress_percent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_xsmall"
android:layout_weight="1"
android:paddingStart="@dimen/padding_normal"
android:paddingEnd="@dimen/padding_normal"
android:text="0%"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.Aurora.Title"
android:textColor="@color/colorWhite"
android:textSize="32sp" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/margin_small"
android:layout_weight="2"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_speed"
style="@style/TextAppearance.Aurora.Line1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/download_speed_estimating"
android:textColor="@color/colorWhite" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_eta"
style="@style/TextAppearance.Aurora.Line2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/download_eta_calculating"
android:textColor="@color/colorWhite" />
</LinearLayout>
</LinearLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/img_cancel"
android:layout_width="@dimen/icon_size_small"
android:layout_height="@dimen/icon_size_small"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/margin_small"
android:background="@drawable/bg_cancel"
android:padding="@dimen/padding_medium"
app:srcCompat="@drawable/ic_cancel" />
</RelativeLayout>
</ViewFlipper>
<LinearLayout
android:id="@+id/bottomsheet_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:divider="@drawable/divider"
android:focusable="false"
android:orientation="vertical"
android:paddingBottom="@dimen/padding_normal"
android:showDividers="middle">
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.Aurora.Title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alpha=".75"
android:text="@string/purchase_failed"
android:textAlignment="center" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_purchase_error"
style="@style/TextAppearance.Aurora.Line1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:textColor="@color/colorWhite"
tools:text="@string/purchase_invalid" />
</LinearLayout>
</LinearLayout>

View File

@@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_sheet"
android:orientation="vertical">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>

View File

@@ -1,58 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/img_icon"
android:layout_width="@dimen/icon_size_cluster"
android:layout_height="@dimen/icon_size_cluster"
android:layout_centerHorizontal="true"
android:layout_marginStart="@dimen/padding_xsmall"
android:layout_marginEnd="@dimen/padding_xsmall" />
<TextView
android:id="@+id/txt_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/img_icon"
android:layout_alignStart="@id/img_icon"
android:layout_alignEnd="@id/img_icon"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_small"
android:maxLines="2"
android:textAppearance="@style/TextAppearance.Aurora.Line2"
android:textColor="?android:textColorPrimary"
tools:text="App Name" />
<TextView
android:id="@+id/txt_size"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/txt_name"
android:layout_alignStart="@id/txt_name"
android:layout_alignEnd="@id/txt_name"
android:layout_centerHorizontal="true"
android:maxLines="1"
android:textAppearance="@style/TextAppearance.Aurora.Line3"
tools:text="53 MB" />
</RelativeLayout>

View File

@@ -1,51 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_outlined_padded"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/img"
android:layout_width="@dimen/icon_size_default"
android:layout_height="@dimen/icon_size_default"
android:layout_centerVertical="true"
app:tint="?colorAccent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/line1"
style="@style/AuroraTextStyle.Subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_normal"
android:layout_toEndOf="@id/img" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/line2"
style="@style/AuroraTextStyle.Line1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/line1"
android:layout_alignStart="@id/line1"
android:layout_alignEnd="@id/line1"
android:layout_marginTop="@dimen/margin_xxsmall" />
</RelativeLayout>

View File

@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="@dimen/margin_xxsmall"
android:paddingBottom="@dimen/margin_xxsmall">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:tint="?colorAccent"
tools:src="@drawable/ic_download" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_normal"
android:layout_marginEnd="@dimen/margin_normal"
android:layout_toEndOf="@id/img"
android:textAppearance="@style/TextAppearance.Aurora.Line1"
tools:text="Title" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/txt_title"
android:layout_alignStart="@id/txt_title"
android:layout_alignEnd="@id/txt_title"
android:autoLink="all"
android:linksClickable="true"
android:textAppearance="@style/TextAppearance.Aurora.Line2"
android:textColorLink="?android:attr/textColorSecondary"
android:textIsSelectable="true"
tools:text="Subtitle" />
</RelativeLayout>

View File

@@ -76,9 +76,10 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="start" android:layout_gravity="start"
android:background="?android:attr/colorBackground" android:background="?android:attr/windowBackground"
android:overScrollMode="never" android:overScrollMode="never"
app:headerLayout="@layout/layout_nav_header" app:headerLayout="@layout/layout_nav_header"
app:itemIconTint="?android:attr/colorAccent"
app:itemTextAppearance="@style/TextAppearance.Aurora.Line1" app:itemTextAppearance="@style/TextAppearance.Aurora.Line1"
app:menu="@menu/menu_drawer" /> app:menu="@menu/menu_drawer" />
</androidx.drawerlayout.widget.DrawerLayout> </androidx.drawerlayout.widget.DrawerLayout>

View File

@@ -33,7 +33,7 @@
android:layout_height="@dimen/icon_size_default" android:layout_height="@dimen/icon_size_default"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginStart="@dimen/margin_small" android:layout_marginStart="@dimen/margin_small"
app:tint="@color/colorAccent" app:tint="?android:attr/colorAccent"
app:tintMode="src_in" /> app:tintMode="src_in" />
<RelativeLayout <RelativeLayout

View File

@@ -23,7 +23,7 @@
android:id="@+id/bottomSheet" android:id="@+id/bottomSheet"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?colorAccent" android:background="@drawable/bg_bottomsheet"
android:divider="@drawable/divider" android:divider="@drawable/divider"
android:orientation="vertical" android:orientation="vertical"
android:paddingStart="@dimen/padding_small" android:paddingStart="@dimen/padding_small"
@@ -67,6 +67,7 @@
android:layout_height="@dimen/icon_size_small" android:layout_height="@dimen/icon_size_small"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_toStartOf="@id/img_cancel" android:layout_toStartOf="@id/img_cancel"
android:indeterminateTint="@color/colorScrim"
android:progressDrawable="@drawable/progressbar_bg" android:progressDrawable="@drawable/progressbar_bg"
tools:progress="40" /> tools:progress="40" />

View File

@@ -20,7 +20,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?android:colorBackground" android:background="@drawable/bg_sheet"
android:orientation="vertical"> android:orientation="vertical">
<FrameLayout <FrameLayout

View File

@@ -40,7 +40,6 @@
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_small" android:layout_marginTop="@dimen/margin_small"
android:maxLines="2" android:maxLines="2"
android:scrollHorizontally="true"
android:textAppearance="@style/TextAppearance.Aurora.Line2" android:textAppearance="@style/TextAppearance.Aurora.Line2"
android:textColor="?android:textColorPrimary" android:textColor="?android:textColorPrimary"
tools:text="App Name" /> tools:text="App Name" />

View File

@@ -29,7 +29,7 @@
android:layout_width="@dimen/icon_size_default" android:layout_width="@dimen/icon_size_default"
android:layout_height="@dimen/icon_size_default" android:layout_height="@dimen/icon_size_default"
android:layout_centerVertical="true" android:layout_centerVertical="true"
app:tint="@color/colorAccent" /> app:tint="?colorAccent" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/line1" android:id="@+id/line1"

View File

@@ -30,7 +30,6 @@
android:id="@+id/img" android:id="@+id/img"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_xxsmall"
app:tint="?colorAccent" app:tint="?colorAccent"
tools:src="@drawable/ic_download" /> tools:src="@drawable/ic_download" />

View File

@@ -1,133 +0,0 @@
<!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<resources>
<!-- Title Styles -->
<style name="AuroraTextStyle" parent="Widget.AppCompat.TextView">
<item name="autoSizeTextType">uniform</item>
<item name="autoSizeMinTextSize">12sp</item>
<item name="autoSizeStepGranularity">1sp</item>
<item name="autoSizePresetSizes">@array/auto_size_text_sizes</item>
</style>
<style name="AuroraTextStyle.Title" parent="AuroraTextStyle">
<item name="android:maxLines">1</item>
<item name="android:ellipsize">end</item>
<item name="autoSizeMaxTextSize">20sp</item>
<item name="android:textAppearance">@style/TextAppearance.Aurora.Title</item>
</style>
<style name="AuroraTextStyle.Title.Primary" parent="AuroraTextStyle.Title">
<item name="android:textAppearance">@style/TextAppearance.Aurora.Title.Primary</item>
</style>
<style name="TextAppearance.Aurora.Title" parent="TextAppearance.AppCompat.Medium">
<item name="android:letterSpacing">0.05</item>
<item name="android:maxLines">1</item>
<item name="android:ellipsize">end</item>
<item name="android:textSize">20sp</item>
<item name="android:fontFamily">@font/gilroy_extra_bold</item>
<item name="android:textColor">?android:attr/textColorPrimary</item>
</style>
<style name="TextAppearance.Aurora.Title.Primary" parent="TextAppearance.Aurora.Title">
<item name="android:textSize">20sp</item>
<item name="android:textStyle">normal</item>
<item name="textAllCaps">true</item>
</style>
<!-- Subtitle Styles -->
<style name="AuroraTextStyle.Subtitle" parent="AuroraTextStyle">
<item name="autoSizeMaxTextSize">16sp</item>
<item name="android:textAppearance">@style/TextAppearance.Aurora.SubTitle</item>
</style>
<style name="AuroraTextStyle.Subtitle.Alt" parent="AuroraTextStyle">
<item name="autoSizeMaxTextSize">18sp</item>
<item name="android:textAppearance">@style/TextAppearance.Aurora.SubTitle.Alt</item>
</style>
<style name="AuroraTextStyle.Subtitle.Secondary" parent="AuroraTextStyle">
<item name="autoSizeMaxTextSize">16sp</item>
<item name="android:textAppearance">@style/TextAppearance.Aurora.Line1</item>
</style>
<style name="TextAppearance.Aurora.SubTitle" parent="TextAppearance.Aurora.Title">
<item name="android:letterSpacing">0.025</item>
<item name="android:textSize">16sp</item>
</style>
<style name="TextAppearance.Aurora.SubTitle.Alt" parent="TextAppearance.Aurora.Title">
<item name="android:letterSpacing">0.005</item>
<item name="android:fontFamily">@font/montserrat_regular</item>
<item name="android:textSize">18sp</item>
</style>
<!-- Line Styles -->
<style name="AuroraTextStyle.Line1" parent="AuroraTextStyle">
<item name="android:maxLines">1</item>
<item name="android:ellipsize">end</item>
<item name="autoSizeMaxTextSize">14sp</item>
<item name="android:textAppearance">@style/TextAppearance.Aurora.Line1</item>
</style>
<style name="AuroraTextStyle.Line2" parent="AuroraTextStyle.Line1">
<item name="autoSizeMaxTextSize">12sp</item>
<item name="android:textAppearance">@style/TextAppearance.Aurora.Line2</item>
</style>
<style name="AuroraTextStyle.Line3" parent="AuroraTextStyle.Line1">
<item name="autoSizeMaxTextSize">10sp</item>
<item name="android:textAppearance">@style/TextAppearance.Aurora.Line3</item>
</style>
<style name="TextAppearance.Aurora.Line1" parent="TextAppearance.AppCompat.Medium">
<item name="android:ellipsize">end</item>
<item name="android:maxLines">1</item>
<item name="android:textSize">14sp</item>
<item name="android:textColor">?android:attr/textColorPrimary</item>
</style>
<style name="TextAppearance.Aurora.Line2" parent="TextAppearance.Aurora.Line1">
<item name="android:textSize">12sp</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="TextAppearance.Aurora.Line3" parent="TextAppearance.Aurora.Line2">
<item name="android:textSize">10sp</item>
<item name="android:textColor">?android:attr/textColorTertiary</item>
</style>
<style name="TextAppearance.Aurora.Tab" parent="Widget.AppCompat.Light.ActionBar.TabText">
<item name="android:textSize">14sp</item>
</style>
<style name="TextAppearance.Aurora.Tab.Title" parent="TextAppearance.Aurora.Tab">
<item name="android:letterSpacing">0.075</item>
<item name="textAllCaps">false</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">14sp</item>
</style>
<style name="TextAppearance.Aurora.Chip" parent="TextAppearance.Aurora.SubTitle">
<item name="android:textSize">14sp</item>
</style>
</resources>

View File

@@ -46,6 +46,7 @@
</style> </style>
<style name="TextAppearance.Aurora.Title" parent="TextAppearance.AppCompat.Medium"> <style name="TextAppearance.Aurora.Title" parent="TextAppearance.AppCompat.Medium">
<item name="android:letterSpacing">0.05</item>
<item name="android:maxLines">1</item> <item name="android:maxLines">1</item>
<item name="android:ellipsize">end</item> <item name="android:ellipsize">end</item>
<item name="android:textSize">20sp</item> <item name="android:textSize">20sp</item>
@@ -81,10 +82,12 @@
</style> </style>
<style name="TextAppearance.Aurora.SubTitle" parent="TextAppearance.Aurora.Title"> <style name="TextAppearance.Aurora.SubTitle" parent="TextAppearance.Aurora.Title">
<item name="android:letterSpacing">0.025</item>
<item name="android:textSize">16sp</item> <item name="android:textSize">16sp</item>
</style> </style>
<style name="TextAppearance.Aurora.SubTitle.Alt" parent="TextAppearance.Aurora.Title"> <style name="TextAppearance.Aurora.SubTitle.Alt" parent="TextAppearance.Aurora.Title">
<item name="android:letterSpacing">0.005</item>
<item name="android:fontFamily">@font/montserrat_regular</item> <item name="android:fontFamily">@font/montserrat_regular</item>
<item name="android:textSize">18sp</item> <item name="android:textSize">18sp</item>
</style> </style>
@@ -129,10 +132,13 @@
</style> </style>
<style name="TextAppearance.Aurora.Tab.Title" parent="TextAppearance.Aurora.Tab"> <style name="TextAppearance.Aurora.Tab.Title" parent="TextAppearance.Aurora.Tab">
<item name="android:letterSpacing">0.075</item>
<item name="textAllCaps">false</item> <item name="textAllCaps">false</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">14sp</item>
</style> </style>
<style name="TextAppearance.Aurora.Chip" parent="TextAppearance.Aurora.SubTitle"> <style name="TextAppearance.Aurora.Chip" parent="TextAppearance.Aurora.SubTitle">
<item name="android:textSize">14sp</item> <item name="android:textSize">14sp</item>
</style> </style>
</resources> </resources>