Skip to content

Commit

Permalink
Addition of various functions (#79)
Browse files Browse the repository at this point in the history
* Update release.yml

* Update strings.xml

* Update strings.xml

* create build.yml

* Support different languages

* fix error

* add support for the predictive back gesture

* translate
  • Loading branch information
atuy1219 authored Jul 28, 2024
1 parent 4b24a00 commit ed3a44d
Show file tree
Hide file tree
Showing 15 changed files with 99 additions and 37 deletions.
1 change: 1 addition & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: 📦🚀 Build & deploy Android app for an environment

on:
workflow_dispatch:
release:
types:
- published
Expand Down
22 changes: 11 additions & 11 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ if (keystorePropertiesFile.exists()) {

android {
namespace = "org.samo_lego.canta"
compileSdk = 34
compileSdk = 35

defaultConfig {
applicationId = "org.samo_lego.canta"
minSdk = 28 // todo - figure out a way to bypass hidden api methods on android <9
targetSdk = 34
targetSdk = 35
versionCode = project.property("version_code")?.toString()?.toInt() ?: 1
versionName = project.property("version_name")?.toString() ?: "1.0.0"

Expand Down Expand Up @@ -75,28 +75,28 @@ android {

dependencies {
implementation("androidx.core:core-ktx:1.13.1")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.3")
implementation("androidx.activity:activity-compose:1.9.0")
implementation(platform("androidx.compose:compose-bom:2023.08.00"))
implementation(platform("androidx.compose:compose-bom:2024.06.00"))
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-graphics")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.compose.material3:material3-android:1.2.1")
implementation("androidx.navigation:navigation-runtime-ktx:2.7.7")
implementation("androidx.navigation:navigation-compose:2.7.7")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation(platform("androidx.compose:compose-bom:2023.08.00"))
androidTestImplementation("androidx.test.ext:junit:1.2.1")
androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
androidTestImplementation(platform("androidx.compose:compose-bom:2024.06.00"))
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
debugImplementation("androidx.compose.ui:ui-tooling")
debugImplementation("androidx.compose.ui:ui-test-manifest")
implementation("io.coil-kt:coil-compose:2.6.0")
implementation("androidx.compose.material:material-icons-extended:1.6.7")
implementation("io.coil-kt:coil-compose:2.7.0")
implementation("androidx.compose.material:material-icons-extended:1.6.8")


implementation("dev.rikka.shizuku:api:${project.property("shizuku_version")}")
implementation("dev.rikka.shizuku:provider:${project.property("shizuku_version")}")
implementation("dev.rikka.shizuku:api:13.1.5")
implementation("dev.rikka.shizuku:provider:13.1.5")

implementation("org.lsposed.hiddenapibypass:hiddenapibypass:4.3")
}
4 changes: 3 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:localeConfig="@xml/locales_config"
android:theme="@style/Theme.Canta"
tools:targetApi="31">
tools:targetApi="35">
<activity
android:name=".MainActivity"
android:exported="true"
android:enableOnBackInvokedCallback="true"
android:theme="@style/Theme.Canta">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
5 changes: 4 additions & 1 deletion app/src/main/java/org/samo_lego/canta/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
Expand All @@ -29,6 +30,8 @@ const val packageName = "org.samo_lego.canta"
class MainActivity : ComponentActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
window.isNavigationBarContrastEnforced = false
super.onCreate(savedInstanceState)

setContent {
Expand Down Expand Up @@ -123,7 +126,7 @@ class MainActivity : ComponentActivity() {
val packageInstaller = getPackageInstaller()
val packageInfo = packageManager.getInfoForPackage(packageName)

val isSystem = (packageInfo.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM) != 0
val isSystem = (packageInfo.applicationInfo!!.flags and ApplicationInfo.FLAG_SYSTEM) != 0

Log.i(APP_NAME, "Uninstalling '$packageName' [system: $isSystem]")

Expand Down
16 changes: 9 additions & 7 deletions app/src/main/java/org/samo_lego/canta/ui/CantaApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,12 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import org.samo_lego.canta.R
import org.samo_lego.canta.ui.component.AppList
import org.samo_lego.canta.ui.component.CantaTopBar
import org.samo_lego.canta.ui.dialog.ExplainBadgesDialog
Expand Down Expand Up @@ -124,12 +126,12 @@ fun CantaApp(
when (selectedAppsType) {
AppsType.INSTALLED -> Icon(
Icons.Default.Delete,
contentDescription = "Uninstall"
contentDescription = stringResource(R.string.uninstall)
)

AppsType.UNINSTALLED -> Icon(
Icons.Default.InstallMobile,
contentDescription = "ReInstall"
contentDescription = stringResource(R.string.reinstall)
)
}
}
Expand Down Expand Up @@ -219,7 +221,7 @@ fun uninstallOrReinstall(
ShizukuInfo.NOT_INSTALLED -> {
Toast.makeText(
context,
"Please install Shizuku and authorise Canta.",
context.getString(R.string.please_install_shizuku_and_authorise_canta),
Toast.LENGTH_SHORT
).show()
return@launch
Expand All @@ -228,7 +230,7 @@ fun uninstallOrReinstall(
ShizukuInfo.NOT_ACTIVE -> {
Toast.makeText(
context,
"Please start Shizuku.",
context.getString(R.string.please_start_shizuku),
Toast.LENGTH_SHORT
).show()
launchShizuku()
Expand All @@ -243,7 +245,7 @@ fun uninstallOrReinstall(
if (!permission) {
Toast.makeText(
context,
"Please allow Shizuku access for Canta.",
context.getString(R.string.please_allow_shizuku_access_for_canta),
Toast.LENGTH_SHORT
).show()
} else {
Expand Down Expand Up @@ -295,7 +297,7 @@ fun MoreOptionsMenu(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween,
) {
Text("Only system")
Text(stringResource(R.string.only_system))
Checkbox(
checked = appListViewModel.showSystem,
onCheckedChange = {
Expand Down Expand Up @@ -353,7 +355,7 @@ fun MoreOptionsMenu(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween,
) {
Text("Badge info")
Text(stringResource(R.string.badge_info))
}
}
}
Expand Down
8 changes: 5 additions & 3 deletions app/src/main/java/org/samo_lego/canta/ui/component/AppList.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import org.samo_lego.canta.R
import org.samo_lego.canta.extension.add
import org.samo_lego.canta.ui.AppsType
import org.samo_lego.canta.ui.dialog.AppInfoDialog
Expand Down Expand Up @@ -106,7 +108,7 @@ fun AppList(
.fillMaxHeight(),
contentAlignment = Alignment.Center
) {
Text("No apps found")
Text(stringResource(R.string.no_apps_found))
}
}
}
Expand All @@ -127,7 +129,7 @@ fun LoadingBadgesIndicator() {
modifier = Modifier.size(32.dp),
)
Spacer(modifier = Modifier.size(8.dp))
Text("Loading badges ...")
Text(stringResource(R.string.loading_badges))
}
}

Expand All @@ -147,7 +149,7 @@ fun LoadingAppsInfo() {
.align(Alignment.CenterHorizontally),
)
Spacer(modifier = Modifier.size(16.dp))
Text("Loading apps")
Text(stringResource(R.string.loading_apps))
}
}
}
Expand Down
6 changes: 4 additions & 2 deletions app/src/main/java/org/samo_lego/canta/ui/component/AppTile.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage
import coil.request.ImageRequest
import org.samo_lego.canta.R
import org.samo_lego.canta.util.AppInfo
import org.samo_lego.canta.util.BloatData
import org.samo_lego.canta.util.InstallData
Expand Down Expand Up @@ -137,7 +139,7 @@ fun CantaAppTileDemo() {
versionName = "1.0",
bloatData = BloatData(
installData = InstallData.OEM,
description = "Canta is a system app",
description = stringResource(R.string.canta_is_a_system_app),
removal = RemovalRecommendation.RECOMMENDED,
),
),
Expand All @@ -161,7 +163,7 @@ fun LongTileDemo() {
isDisabled = true,
bloatData = BloatData(
installData = InstallData.OEM,
description = "Canta is a system app",
description = stringResource(R.string.canta_is_a_system_app),
removal = RemovalRecommendation.RECOMMENDED,
),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,12 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.DialogProperties
import org.samo_lego.canta.R
import org.samo_lego.canta.ui.component.AppIconImage
import org.samo_lego.canta.util.AppInfo

Expand Down Expand Up @@ -101,7 +103,7 @@ fun AppInfoDialog(
modifier = Modifier
.align(Alignment.CenterVertically)
.size(12.dp),
contentDescription = "Copy package name to clipboard",
contentDescription = stringResource(R.string.copy_package_name_to_clipboard),
)
Spacer(modifier = Modifier.size(4.dp))
Text(
Expand All @@ -117,7 +119,7 @@ fun AppInfoDialog(
Text(text = bloatDescripton, style = MaterialTheme.typography.bodyMedium)
} else {
Text(
text = "No description available",
text = stringResource(R.string.no_description_available),
style = MaterialTheme.typography.bodySmall
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.DialogProperties
import org.samo_lego.canta.R
import org.samo_lego.canta.ui.component.RemovalBadge
import org.samo_lego.canta.util.RemovalRecommendation

Expand Down Expand Up @@ -78,7 +80,7 @@ fun ExplainBadgesDialog(
.padding(8.dp),
onClick = onDismissRequest,
) {
Text("Got it")
Text(stringResource(R.string.got_it))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import org.samo_lego.canta.R

@OptIn(ExperimentalMaterial3Api::class)
@Composable
Expand All @@ -32,18 +34,18 @@ fun UninstallAppsDialog(
modifier = Modifier.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
Text("Are you sure to uninstall $appCount apps?")
Text(stringResource(R.string.are_you_sure_to_uninstall_apps, appCount))
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.End
) {
TextButton(onClick = onAgree) {
Text("Ok")
Text(stringResource(R.string.ok))
}
TextButton(
onClick = onDismiss
) {
Text("Cancel")
Text(stringResource(R.string.cancel))
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/org/samo_lego/canta/util/AppInfo.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ data class AppInfo(
val bloatData = bloatList[packageInfo.packageName]

val isSystemApp =
(packageInfo.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM) != 0
(packageInfo.applicationInfo!!.flags and ApplicationInfo.FLAG_SYSTEM) != 0

val isDisabled = try {
!packageManager.getApplicationInfo(packageInfo.packageName, 0).enabled
Expand All @@ -50,7 +50,7 @@ data class AppInfo(
val versionName = packageInfo.versionName ?: "unknown"

return AppInfo(
appName = packageInfo.applicationInfo.loadLabel(packageManager).toString(),
appName = packageInfo.applicationInfo!!.loadLabel(packageManager).toString(),
packageName = packageInfo.packageName,
versionName = versionName,
versionCode = packageInfo.longVersionCode,
Expand Down
21 changes: 21 additions & 0 deletions app/src/main/res/values-ja/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Canta</string>
<string name="cancel">キャンセル</string>
<string name="ok">OK</string>
<string name="are_you_sure_to_uninstall_apps">%1$s個のアプリをアンインストールしますか?</string>
<string name="copy_package_name_to_clipboard">クリップボードにコピーしました</string>
<string name="no_description_available">説明はありません</string>
<string name="canta_is_a_system_app">Canta is a system app</string>
<string name="uninstall">アンインストール</string>
<string name="reinstall">再インストール</string>
<string name="please_start_shizuku">Shizukuをスタートさせてください</string>
<string name="please_install_shizuku_and_authorise_canta">Shizukuをインストールし、Cantaを承認してください</string>
<string name="please_allow_shizuku_access_for_canta">CantaにShizukuのアクセスを許可してください</string>
<string name="only_system">システムアプリのみ</string>
<string name="no_apps_found">アプリが見つかりません</string>
<string name="loading_apps">アプリを読み込み中</string>
<string name="badge_info">バッジの情報</string>
<string name="got_it">閉じる</string>
<string name="loading_badges">バッジを読み込み中…</string>
</resources>
22 changes: 20 additions & 2 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Canta</string>
</resources>
<string name="app_name" translatable="false">Canta</string>
<string name="cancel">Cancel</string>
<string name="ok">OK</string>
<string name="are_you_sure_to_uninstall_apps">Are you sure to uninstall %1$s apps?</string>
<string name="copy_package_name_to_clipboard">Copy package name to clipboard</string>
<string name="no_description_available">No description available</string>
<string name="canta_is_a_system_app">Canta is a system app</string>
<string name="uninstall">Uninstall</string>
<string name="reinstall">ReInstall</string>
<string name="please_start_shizuku">Please start Shizuku.</string>
<string name="please_install_shizuku_and_authorise_canta">Please install Shizuku and authorise Canta.</string>
<string name="please_allow_shizuku_access_for_canta">Please allow Shizuku access for Canta.</string>
<string name="only_system">Only system</string>
<string name="no_apps_found">No apps found</string>
<string name="loading_apps">Loading apps</string>
<string name="badge_info">Badge info</string>
<string name="got_it">Got it</string>
<string name="loading_badges">Loading badges ...</string>
</resources>
Loading

0 comments on commit ed3a44d

Please sign in to comment.