launcher settings notification on start

This commit is contained in:
qimiko committed 2024-06-09 23:03:11 -07:00
1 parent b919736ce1
commit 79bed774aa
6 files changed
+154 -1

No files matched your search

@@ -16,11 +16,13 @@ import android.view.WindowManager
import android.widget.FrameLayout import android.widget.FrameLayout
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.compose.ui.platform.ComposeView
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.WindowInsetsControllerCompat
import com.customRobTop.BaseRobTopActivity import com.customRobTop.BaseRobTopActivity
import com.customRobTop.JniToCpp import com.customRobTop.JniToCpp
import com.geode.launcher.main.LaunchNotification
import com.geode.launcher.utils.Constants import com.geode.launcher.utils.Constants
import com.geode.launcher.utils.ConstrainedFrameLayout import com.geode.launcher.utils.ConstrainedFrameLayout
import com.geode.launcher.utils.DownloadUtils import com.geode.launcher.utils.DownloadUtils
@@ -368,6 +370,16 @@ class GeometryDashActivity : AppCompatActivity(), Cocos2dxHelper.Cocos2dxHelperL
this.mGLSurfaceView = glSurfaceView this.mGLSurfaceView = glSurfaceView
frameLayout.addView(this.mGLSurfaceView) frameLayout.addView(this.mGLSurfaceView)
val showNotification = PreferenceUtils.get(this).getBoolean(PreferenceUtils.Key.ENABLE_REDESIGN)
if (showNotification) {
val notificationView = ComposeView(this)
frameLayout.addView(notificationView)
notificationView.setContent {
LaunchNotification()
}
}
glSurfaceView.setEGLContextClientVersion(2) glSurfaceView.setEGLContextClientVersion(2)
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8) glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8)
@@ -385,6 +385,10 @@ fun SettingsScreen(
title = stringResource(R.string.preferences_view_logs), title = stringResource(R.string.preferences_view_logs),
onClick = { onOpenLogs(context) } onClick = { onOpenLogs(context) }
) )
SettingsCard(
title = context.getString(R.string.preference_enable_redesign),
preferenceKey = PreferenceUtils.Key.ENABLE_REDESIGN,
)
} }
Text( Text(
@@ -0,0 +1,115 @@
package com.geode.launcher.main
import android.content.Context
import android.content.Intent
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.MutableTransitionState
import androidx.compose.animation.slideOutHorizontally
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedCard
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.geode.launcher.R
import com.geode.launcher.SettingsActivity
import com.geode.launcher.ui.theme.GeodeLauncherTheme
import com.geode.launcher.ui.theme.LocalTheme
import com.geode.launcher.ui.theme.Theme
import kotlinx.coroutines.delay
fun onSettings(context: Context) {
val launchIntent = Intent(context, SettingsActivity::class.java)
context.startActivity(launchIntent)
}
@Composable
fun LaunchNotification() {
val theme = Theme.DARK
CompositionLocalProvider(LocalTheme provides theme) {
GeodeLauncherTheme(theme = theme, blackBackground = true) {
FadeOutContainer()
}
}
}
@Composable
fun FadeOutContainer() {
val state = remember {
MutableTransitionState(false).apply {
targetState = true
}
}
LaunchedEffect(true) {
delay(3000L)
state.targetState = false
}
AnimatedVisibility(
visibleState = state,
exit = slideOutHorizontally()
) {
Box(modifier = Modifier.padding(8.dp)) {
MainView()
}
}
}
@Composable
fun MainView() {
val context = LocalContext.current
val surfaceColor = MaterialTheme.colorScheme.background.copy(alpha = 0.75f)
OutlinedCard(
colors = CardDefaults.cardColors(
containerColor = surfaceColor
),
onClick = {
onSettings(context)
}
) {
NotificationContent()
}
}
@Composable
fun NotificationContent() {
// surface is not in use, so this is unfortunately not provided
val textColor = MaterialTheme.colorScheme.onSurface
Row(
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(16.dp)
) {
Image(
painter = painterResource(id = R.drawable.geode_monochrome),
colorFilter = ColorFilter.tint(textColor),
contentDescription = null,
modifier = Modifier.size(32.dp, 32.dp)
)
Text(
text = stringResource(id = R.string.launcher_settings_notification_body),
color = textColor,
style = MaterialTheme.typography.titleLarge
)
}
}
@@ -136,7 +136,8 @@ class PreferenceUtils(private val sharedPreferences: SharedPreferences) {
LAUNCH_ARGUMENTS, LAUNCH_ARGUMENTS,
LIMIT_ASPECT_RATIO, LIMIT_ASPECT_RATIO,
DISPLAY_MODE, DISPLAY_MODE,
FORCE_HRR FORCE_HRR,
ENABLE_REDESIGN
} }
private fun defaultValueForBooleanKey(key: Key): Boolean { private fun defaultValueForBooleanKey(key: Key): Boolean {
@@ -168,6 +169,7 @@ class PreferenceUtils(private val sharedPreferences: SharedPreferences) {
Key.LIMIT_ASPECT_RATIO -> "PreferenceLimitAspectRatio" Key.LIMIT_ASPECT_RATIO -> "PreferenceLimitAspectRatio"
Key.DISPLAY_MODE -> "PreferenceDisplayMode" Key.DISPLAY_MODE -> "PreferenceDisplayMode"
Key.FORCE_HRR -> "PreferenceForceHighRefreshRate" Key.FORCE_HRR -> "PreferenceForceHighRefreshRate"
Key.ENABLE_REDESIGN -> "PreferenceEnableRedesign"
} }
} }
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="96dp"
android:height="96dp"
android:viewportWidth="696"
android:viewportHeight="698"
android:tint="?attr/colorControlNormal">
<path
android:pathData="M393.08,24.42L372.88,9C358.19,-2.22 337.81,-2.22 323.12,9L16.94,242.81C3.28,253.24 -2.42,271.09 2.66,287.51L120.41,668.43C125.72,685.61 141.6,697.33 159.58,697.33H536.42C554.4,697.33 570.28,685.61 575.59,668.43L693.34,287.51C698.42,271.09 692.72,253.24 679.06,242.81L650.84,221.26L618.37,323.39L529.2,613.39C525.71,624.72 515.24,632.46 503.39,632.46H190.61C178.76,632.46 168.29,624.72 164.8,613.39L67.2,295.97C63.88,285.19 67.62,273.49 76.56,266.62L330.56,71.62C331.58,70.84 332.64,70.14 333.74,69.52L393.08,24.42Z"
android:fillType="evenOdd"
android:fillColor="@android:color/white">
</path>
<path
android:pathData="M336.61,143.26C344.51,137.21 355.49,137.21 363.39,143.26L552.8,288.49C560.1,294.09 563.14,303.63 560.44,312.42L487.62,548.92C484.78,558.15 476.25,564.45 466.59,564.45H233.41C223.75,564.45 215.22,558.15 212.38,548.92L199.93,508.5H261.68C262.39,508.65 263.13,508.72 263.89,508.72H432.11C436.96,508.72 441.24,505.55 442.64,500.9L495.14,326.98C496.45,322.64 494.96,317.93 491.39,315.14L354.78,208.3C350.8,205.19 345.2,205.19 341.22,208.3L215.93,306.29L152.15,353.31L139.56,312.42C136.86,303.63 139.9,294.09 147.2,288.49L336.61,143.26Z"
android:fillType="evenOdd"
android:fillColor="@android:color/white">
</path>
</vector>
+2
View File
@@ -46,6 +46,7 @@
<string name="launcher_error_export_crash">Share crash</string> <string name="launcher_error_export_crash">Share crash</string>
<string name="launcher_error_export_missing">No crash dump was found!</string> <string name="launcher_error_export_missing">No crash dump was found!</string>
<string name="launcher_error_device_info">Android %2$s, %1$s</string> <string name="launcher_error_device_info">Android %2$s, %1$s</string>
<string name="launcher_settings_notification_body">Launcher Settings</string>
<!-- Updater strings --> <!-- Updater strings -->
<string name="release_fetch_failed">Update failed.\n%1$s</string> <string name="release_fetch_failed">Update failed.\n%1$s</string>
@@ -104,6 +105,7 @@
<string name="preference_theme_dark">Dark</string> <string name="preference_theme_dark">Dark</string>
<string name="preference_black_background_name">Black background in dark theme</string> <string name="preference_black_background_name">Black background in dark theme</string>
<string name="preference_force_hrr">Force maximum refresh rate</string> <string name="preference_force_hrr">Force maximum refresh rate</string>
<string name="preference_enable_redesign">Enable UI redesign</string>
<string name="preference_display_mode_name">Screen scale</string> <string name="preference_display_mode_name">Screen scale</string>
<string name="preference_display_mode_select">Select screen scale</string> <string name="preference_display_mode_select">Select screen scale</string>