Skip to content

Commit 25a65d5

Browse files
feat: added wallpaper alpha slider
1 parent f4e61bf commit 25a65d5

5 files changed

Lines changed: 61 additions & 45 deletions

File tree

core/main/src/main/java/com/rk/settings/Settings.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,10 @@ package com.rk.settings
33
import android.annotation.SuppressLint
44
import android.content.Context
55
import android.content.SharedPreferences
6-
import android.content.res.Configuration
76
import android.os.Build
87
import androidx.appcompat.app.AppCompatDelegate
9-
import androidx.compose.ui.platform.LocalContext
10-
import androidx.core.content.pm.PackageInfoCompat
11-
import com.rk.components.compose.preferences.normal.Preference
128
import com.rk.libcommons.application
139
import com.rk.terminal.ui.screens.settings.WorkingMode
14-
import java.nio.charset.Charset
1510

1611
object Settings {
1712
//Boolean
@@ -42,6 +37,11 @@ object Settings {
4237
var terminal_font_size
4338
get() = Preference.getInt(key = "terminal_font_size", default = 13)
4439
set(value) = Preference.setInt(key = "terminal_font_size",value)
40+
41+
var wallTransparency
42+
get() = Preference.getFloat(key = "wallTransparency", default = 0f)
43+
set(value) = Preference.setFloat(key = "wallTransparency",value)
44+
4545
var working_Mode
4646
get() = Preference.getInt(key = "workingMode", default = WorkingMode.ALPINE)
4747
set(value) = Preference.setInt(key = "workingMode",value)

core/main/src/main/java/com/rk/terminal/ui/activities/terminal/MainActivity.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,18 @@ import androidx.compose.foundation.layout.Box
2222
import androidx.compose.foundation.layout.fillMaxSize
2323
import androidx.compose.material3.Surface
2424
import androidx.compose.runtime.Composable
25+
import androidx.compose.runtime.*
2526
import androidx.compose.ui.Alignment
2627
import androidx.compose.ui.Modifier
28+
import androidx.compose.ui.platform.LocalFocusManager
29+
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
2730
import androidx.core.content.ContextCompat
2831
import androidx.lifecycle.lifecycleScope
32+
import androidx.navigation.compose.currentBackStackEntryAsState
2933
import androidx.navigation.compose.rememberNavController
3034
import com.rk.terminal.service.SessionService
3135
import com.rk.terminal.ui.navHosts.MainActivityNavHost
36+
import com.rk.terminal.ui.routes.MainActivityRoutes
3237
import com.rk.terminal.ui.screens.terminal.TerminalScreen
3338
import com.rk.terminal.ui.screens.terminal.terminalView
3439
import com.rk.terminal.ui.theme.KarbonTheme
@@ -53,6 +58,26 @@ class MainActivity : ComponentActivity() {
5358
Surface {
5459
val navController = rememberNavController()
5560
MainActivityNavHost(navController = navController, mainActivity = this@MainActivity)
61+
62+
val backStackEntry by navController.currentBackStackEntryAsState()
63+
64+
val focusManager = LocalFocusManager.current
65+
val keyboardController = LocalSoftwareKeyboardController.current
66+
67+
LaunchedEffect(backStackEntry?.destination?.route) {
68+
if (backStackEntry?.destination?.route != MainActivityRoutes.MainScreen.route) {
69+
// 1️⃣ Clear Compose focus
70+
focusManager.clearFocus(force = true)
71+
72+
// 2️⃣ Clear Android View focus
73+
terminalView.get()?.clearFocus()
74+
75+
// 3️⃣ Hide IME explicitly
76+
keyboardController?.hide()
77+
}
78+
}
79+
80+
5681
}
5782
}
5883
}

core/main/src/main/java/com/rk/terminal/ui/screens/customization/Customization.kt

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@ import androidx.compose.foundation.layout.Row
1616
import androidx.compose.foundation.layout.fillMaxWidth
1717
import androidx.compose.foundation.layout.padding
1818
import androidx.compose.foundation.layout.size
19-
import androidx.compose.foundation.shape.RoundedCornerShape
2019
import androidx.compose.material.icons.Icons
2120
import androidx.compose.material.icons.outlined.Delete
2221
import androidx.compose.material.icons.outlined.Info
23-
import androidx.compose.material3.Card
2422
import androidx.compose.material3.Icon
2523
import androidx.compose.material3.IconButton
2624
import androidx.compose.material3.MaterialTheme
@@ -48,7 +46,6 @@ import com.rk.libcommons.child
4846
import com.rk.libcommons.createFileIfNot
4947
import com.rk.libcommons.dpToPx
5048
import com.rk.settings.Settings
51-
import com.rk.terminal.ui.components.InfoBlock
5249
import com.rk.terminal.ui.components.SettingsToggle
5350
import com.rk.terminal.ui.navHosts.horizontal_statusBar
5451
import com.rk.terminal.ui.navHosts.showStatusBar
@@ -59,10 +56,14 @@ import com.rk.terminal.ui.screens.terminal.showHorizontalToolbar
5956
import com.rk.terminal.ui.screens.terminal.showToolbar
6057
import com.rk.terminal.ui.screens.terminal.showVirtualKeys
6158
import com.rk.terminal.ui.screens.terminal.terminalView
59+
import com.rk.terminal.ui.screens.terminal.wallAlpha
6260
import kotlinx.coroutines.Dispatchers
6361
import kotlinx.coroutines.launch
6462
import kotlinx.coroutines.withContext
6563
import java.io.File
64+
import java.math.RoundingMode
65+
import java.text.DecimalFormat
66+
import kotlin.math.roundToInt
6667

6768

6869
private const val min_text_size = 10f
@@ -287,6 +288,27 @@ fun Customization(modifier: Modifier = Modifier) {
287288

288289
}
289290

291+
PreferenceGroup {
292+
PreferenceTemplate(title = {
293+
Text("Wallpaper Alpha")
294+
}) { Text(
295+
DecimalFormat("0.##")
296+
.apply { roundingMode = RoundingMode.HALF_UP }
297+
.format(wallAlpha)) }
298+
PreferenceTemplate(title = {}){
299+
Slider(
300+
value = wallAlpha,
301+
onValueChange = {
302+
wallAlpha = it
303+
},
304+
onValueChangeFinished = {
305+
Settings.wallTransparency = wallAlpha
306+
}
307+
)
308+
}
309+
}
310+
311+
290312
PreferenceGroup {
291313
SettingsToggle(label = "Bell", description = "Play bell sound", showSwitch = true, default = Settings.bell, sideEffect = {
292314
Settings.bell = it

core/main/src/main/java/com/rk/terminal/ui/screens/settings/Settings.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ fun Settings(modifier: Modifier = Modifier,navController: NavController,mainActi
136136
PreferenceGroup {
137137
SettingsToggle(
138138
label = "SECCOMP",
139-
description = "fix: \"operation not permitted\" error on some devices",
139+
description = "fix operation not permitted error",
140140
showSwitch = true,
141141
default = Settings.seccomp,
142142
sideEffect = {

core/main/src/main/java/com/rk/terminal/ui/screens/terminal/TerminalScreen.kt

Lines changed: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,16 @@ package com.rk.terminal.ui.screens.terminal
22

33
import android.app.Activity
44
import android.content.res.Configuration
5-
import android.graphics.Bitmap
65
import android.graphics.BitmapFactory
76
import android.graphics.Color
87
import android.graphics.Typeface
9-
import android.os.Build
108
import android.util.TypedValue
119
import android.view.KeyEvent
12-
import android.view.View
13-
import android.view.Window
1410
import android.view.inputmethod.EditorInfo
1511
import android.widget.EditText
1612
import androidx.activity.compose.BackHandler
1713
import androidx.compose.animation.animateColorAsState
1814
import androidx.compose.foundation.Image
19-
import androidx.compose.foundation.gestures.Orientation
2015
import androidx.compose.foundation.isSystemInDarkTheme
2116
import androidx.compose.foundation.layout.Arrangement
2217
import androidx.compose.foundation.layout.Box
@@ -36,15 +31,11 @@ import androidx.compose.foundation.lazy.LazyColumn
3631
import androidx.compose.foundation.lazy.items
3732
import androidx.compose.foundation.pager.HorizontalPager
3833
import androidx.compose.foundation.pager.rememberPagerState
39-
import androidx.compose.foundation.shape.RoundedCornerShape
4034
import androidx.compose.material.icons.Icons
4135
import androidx.compose.material.icons.filled.Add
42-
import androidx.compose.material.icons.filled.Delete
4336
import androidx.compose.material.icons.filled.Menu
44-
import androidx.compose.material.icons.filled.Settings
4537
import androidx.compose.material.icons.outlined.Delete
4638
import androidx.compose.material.icons.outlined.Settings
47-
import androidx.compose.material3.AlertDialog
4839
import androidx.compose.material3.BasicAlertDialog
4940
import androidx.compose.material3.Card
5041
import androidx.compose.material3.CardDefaults
@@ -55,8 +46,6 @@ import androidx.compose.material3.IconButton
5546
import androidx.compose.material3.MaterialTheme
5647
import androidx.compose.material3.ModalDrawerSheet
5748
import androidx.compose.material3.ModalNavigationDrawer
58-
import androidx.compose.material3.RadioButton
59-
import androidx.compose.material3.Surface
6049
import androidx.compose.material3.Text
6150
import androidx.compose.material3.TopAppBar
6251
import androidx.compose.material3.TopAppBarDefaults
@@ -65,74 +54,51 @@ import androidx.compose.runtime.Composable
6554
import androidx.compose.runtime.LaunchedEffect
6655
import androidx.compose.runtime.SideEffect
6756
import androidx.compose.runtime.getValue
57+
import androidx.compose.runtime.mutableFloatStateOf
6858
import androidx.compose.runtime.mutableStateOf
6959
import androidx.compose.runtime.remember
7060
import androidx.compose.runtime.rememberCoroutineScope
7161
import androidx.compose.runtime.saveable.rememberSaveable
7262
import androidx.compose.runtime.setValue
7363
import androidx.compose.ui.Alignment
7464
import androidx.compose.ui.Modifier
75-
import androidx.compose.ui.draw.drawBehind
76-
import androidx.compose.ui.draw.drawWithContent
77-
import androidx.compose.ui.draw.shadow
78-
import androidx.compose.ui.geometry.Offset
79-
import androidx.compose.ui.geometry.Size
80-
import androidx.compose.ui.graphics.BlendMode
65+
import androidx.compose.ui.draw.alpha
8166
import androidx.compose.ui.graphics.ImageBitmap
8267
import androidx.compose.ui.graphics.asImageBitmap
83-
import androidx.compose.ui.graphics.drawscope.clipRect
8468
import androidx.compose.ui.graphics.toArgb
8569
import androidx.compose.ui.layout.ContentScale
86-
import androidx.compose.ui.platform.ComposeView
8770
import androidx.compose.ui.platform.LocalConfiguration
8871
import androidx.compose.ui.platform.LocalContext
8972
import androidx.compose.ui.platform.LocalDensity
9073
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
9174
import androidx.compose.ui.platform.LocalView
92-
import androidx.compose.ui.res.stringResource
93-
import androidx.compose.ui.text.TextStyle
94-
import androidx.compose.ui.text.font.FontWeight
95-
import androidx.compose.ui.unit.LayoutDirection
96-
import androidx.compose.ui.unit.TextUnit
9775
import androidx.compose.ui.unit.dp
98-
import androidx.compose.ui.unit.sp
9976
import androidx.compose.ui.viewinterop.AndroidView
10077
import androidx.compose.ui.zIndex
10178
import androidx.core.view.WindowCompat
102-
import androidx.core.view.WindowInsetsCompat
103-
import androidx.core.view.WindowInsetsControllerCompat
10479
import androidx.core.widget.doOnTextChanged
10580
import androidx.navigation.NavController
106-
import androidx.palette.graphics.Palette
107-
import com.google.accompanist.systemuicontroller.rememberSystemUiController
10881
import com.google.android.material.R
109-
import com.google.android.material.dialog.MaterialAlertDialogBuilder
11082
import com.rk.components.compose.preferences.base.PreferenceGroup
11183
import com.rk.libcommons.application
11284
import com.rk.libcommons.child
11385
import com.rk.libcommons.dpToPx
11486
import com.rk.libcommons.localDir
11587
import com.rk.libcommons.pendingCommand
116-
import com.rk.resources.strings
11788
import com.rk.settings.Settings
11889
import com.rk.terminal.ui.activities.terminal.MainActivity
119-
import com.rk.terminal.ui.components.SettingsToggle
12090
import com.rk.terminal.ui.routes.MainActivityRoutes
12191
import com.rk.terminal.ui.screens.settings.SettingsCard
12292
import com.rk.terminal.ui.screens.settings.WorkingMode
12393
import com.rk.terminal.ui.screens.terminal.virtualkeys.VirtualKeysConstants
12494
import com.rk.terminal.ui.screens.terminal.virtualkeys.VirtualKeysInfo
12595
import com.rk.terminal.ui.screens.terminal.virtualkeys.VirtualKeysListener
12696
import com.rk.terminal.ui.screens.terminal.virtualkeys.VirtualKeysView
127-
import com.rk.terminal.ui.theme.KarbonTheme
12897
import com.termux.terminal.TerminalColors
12998
import com.termux.view.TerminalView
13099
import kotlinx.coroutines.Dispatchers
131-
import kotlinx.coroutines.delay
132-
import kotlinx.coroutines.isActive
133100
import kotlinx.coroutines.launch
134101
import kotlinx.coroutines.withContext
135-
import java.io.File
136102
import java.io.FileInputStream
137103
import java.lang.ref.WeakReference
138104
import java.util.Properties
@@ -660,6 +626,8 @@ fun TerminalScreen(
660626
}
661627
}
662628

629+
var wallAlpha by mutableFloatStateOf(Settings.wallTransparency)
630+
663631
@Composable
664632
fun BackgroundImage() {
665633
bitmap.value?.let {
@@ -669,6 +637,7 @@ fun BackgroundImage() {
669637
contentScale = ContentScale.Crop,
670638
modifier = Modifier
671639
.fillMaxSize()
640+
.alpha(wallAlpha)
672641
.zIndex(-1f)
673642
)
674643
}

0 commit comments

Comments
 (0)