Skip to content

Commit

Permalink
Add app size & button to open app info settings.
Browse files Browse the repository at this point in the history
  • Loading branch information
samolego committed Jan 27, 2025
1 parent 81a46eb commit 5b3e40f
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 1 deletion.
56 changes: 55 additions & 1 deletion app/src/main/java/org/samo_lego/canta/ui/dialog/AppInfoDialog.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package org.samo_lego.canta.ui.dialog
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS
import android.text.format.Formatter.formatFileSize
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
Expand All @@ -12,11 +14,15 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.text.ClickableText
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ContentCopy
import androidx.compose.material.icons.filled.Settings
import androidx.compose.material3.BasicAlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
Expand All @@ -35,6 +41,7 @@ import androidx.compose.ui.text.withStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.DialogProperties
import java.io.File
import org.samo_lego.canta.R
import org.samo_lego.canta.ui.component.AppIconImage
import org.samo_lego.canta.util.AppInfo
Expand All @@ -59,6 +66,15 @@ fun AppInfoDialog(
null
}

val appSize =
try {
val packageInfo = context.packageManager.getPackageInfo(appInfo.packageName, 0)
val appFile = packageInfo.applicationInfo?.sourceDir?.let { File(it) }
appFile?.let { formatFileSize(context, it.length()) } ?: "? MB"
} catch (e: Exception) {
null
}

BasicAlertDialog(
modifier =
Modifier.fillMaxWidth(0.8f)
Expand Down Expand Up @@ -89,7 +105,17 @@ fun AppInfoDialog(
)
Spacer(modifier = Modifier.size(8.dp))
}
Text(text = appInfo.name, modifier = Modifier.align(Alignment.CenterVertically))

Column(modifier = Modifier.align(Alignment.CenterVertically)) {
Text(text = appInfo.name)
if (appSize != null) {
Text(
text = appSize,
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurfaceVariant
)
}
}
}
Spacer(modifier = Modifier.size(8.dp))
Row(
Expand Down Expand Up @@ -152,6 +178,34 @@ fun AppInfoDialog(
style = MaterialTheme.typography.bodySmall
)
}
if (!appInfo.isUninstalled) {
Row(modifier = Modifier.align(Alignment.End)) {
Button(
onClick = {
val intent =
Intent(ACTION_APPLICATION_DETAILS_SETTINGS).apply {
data = Uri.fromParts("package", appInfo.packageName, null)
}
context.startActivity(intent)
},
colors =
ButtonDefaults.buttonColors(
containerColor =
MaterialTheme.colorScheme.secondaryContainer,
contentColor =
MaterialTheme.colorScheme.onSecondaryContainer
)
) {
Icon(
Icons.Default.Settings,
contentDescription = null,
modifier = Modifier.size(18.dp)
)
Spacer(modifier = Modifier.width(8.dp))
Text(stringResource(R.string.app_settings))
}
}
}
}
}
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,6 @@
<item quantity="other">Clear %d selected</item>
</plurals>
<string name="copy">Copy</string>
<string name="app_settings">App info</string>
<string name="close">Close</string>
</resources>

0 comments on commit 5b3e40f

Please sign in to comment.