diff --git a/frontend/app/build.gradle b/frontend/app/build.gradle index 3489f1698ca45ffcc6eefe0d51e7116683a17c0e..6f5e5efac4c80480e985d8571734ddea5fd6fa68 100644 --- a/frontend/app/build.gradle +++ b/frontend/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "space.rethelyi.mosogepsch" minSdk 21 targetSdk 31 - versionCode 11 - versionName "2.5.3" + versionCode 12 + versionName "2.5.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/frontend/app/src/main/AndroidManifest.xml b/frontend/app/src/main/AndroidManifest.xml index 9345a11d8916ef3b87388e395959e97fb75d6744..1189abae8a5da4b9b81bc957ef94fd3585d838d4 100644 --- a/frontend/app/src/main/AndroidManifest.xml +++ b/frontend/app/src/main/AndroidManifest.xml @@ -11,6 +11,12 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.MosogepSCH"> + <activity + android:name=".view.OptionViewActivity" + android:exported="false" + android:label="@string/title_activity_option_view" + android:theme="@style/Theme.MosogepSCH.NoActionBar" /> + <service android:name=".notification.PushNotificationService" android:enabled="true" @@ -23,18 +29,19 @@ <meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/noti_channel" /> + <activity android:name=".view.MachineViewActivity" + android:configChanges="keyboardHidden|orientation|screenSize|screenLayout" android:exported="false" android:label="@string/title_activity_machine_view" - android:theme="@style/Theme.MosogepSCH.NoActionBar" - android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"/> + android:theme="@style/Theme.MosogepSCH.NoActionBar" /> <activity android:name=".MainActivity" + android:configChanges="keyboardHidden|orientation|screenSize|screenLayout" android:exported="true" android:label="@string/app_name" - android:theme="@style/Theme.MosogepSCH.NoActionBar" - android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"> + android:theme="@style/Theme.MosogepSCH.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> diff --git a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineScreen.kt b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineScreen.kt index bd70527fd37474c19195231522520514782c4101..08772de86232f1f2cca708d03b4faa136893ad70 100644 --- a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineScreen.kt +++ b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineScreen.kt @@ -28,8 +28,8 @@ val format = SimpleDateFormat.getDateTimeInstance() @Composable @OptIn(ExperimentalMaterial3Api::class) fun MachineScreen(machine: Machine, lastRequestTime: Date?, onUpdate: (Boolean) -> Unit) { - val modifier = Modifier.fillMaxWidth() val ctx = LocalContext.current + val modifier = Modifier.fillMaxWidth() Scaffold( topBar = { SmallTopAppBar( diff --git a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MainScreen.kt b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MainScreen.kt index 619da5329da73d7c27febd4f9c5af695456a8569..703c63d21776a15262773d27257de97255af1848 100644 --- a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MainScreen.kt +++ b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MainScreen.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.unit.dp import com.google.accompanist.swiperefresh.SwipeRefresh import com.google.accompanist.swiperefresh.SwipeRefreshState import space.rethelyi.mosogepsch.model.LaundryRoom +import space.rethelyi.mosogepsch.view.helpers.AppBar import java.util.* @Composable diff --git a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/OptionViewActivity.kt b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/OptionViewActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..8cf281a835dd5c674c94fd749022995e36fe0bba --- /dev/null +++ b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/OptionViewActivity.kt @@ -0,0 +1,93 @@ +package space.rethelyi.mosogepsch.view + +import android.app.Activity +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.* +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +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 space.rethelyi.mosogepsch.R +import space.rethelyi.mosogepsch.ui.theme.MosogepSCHTheme +import space.rethelyi.mosogepsch.view.helpers.Switch + +class OptionViewActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + MosogepSCHTheme { + // A surface container using the 'background' color from the theme + Surface(color = MaterialTheme.colorScheme.background) { + OptionView() + } + } + } + } +} + +@Composable +@OptIn(ExperimentalMaterial3Api::class) +fun OptionView() { + val ctx = LocalContext.current + val modifier = Modifier.fillMaxWidth() + Scaffold( + topBar = { + SmallTopAppBar( + title = { + Row( + verticalAlignment = Alignment.CenterVertically + ) { + TextButton(onClick = { + (ctx as Activity).finish() + }) { + Icon( + painter = painterResource(R.drawable.back_arrow), + contentDescription = "back" + ) + } + Text( + text = stringResource(R.string.settings) + ) + } + } + ) + } + ) { + Column( + Modifier + .fillMaxSize() + .padding(16.dp) + ) { + Card( + modifier = modifier, + color = MaterialTheme.colorScheme.surfaceVariant + + ) { + Row( + modifier = modifier + .fillMaxWidth() + .padding(8.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + var checkedState by remember { mutableStateOf(false) } + Text( + modifier = Modifier + .padding(8.dp), + text = stringResource(R.string.xiaomi) + ) + Switch( + state = checkedState, + setState = { checkedState = it } + ) + } + } + } + } +} diff --git a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/AppBar.kt b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/helpers/AppBar.kt similarity index 67% rename from frontend/app/src/main/java/space/rethelyi/mosogepsch/view/AppBar.kt rename to frontend/app/src/main/java/space/rethelyi/mosogepsch/view/helpers/AppBar.kt index 4c1a622c00d8e277c19149a9a6533354bb354dd3..b0741f000f3aae8801e52dc247fef083f39a5ef5 100644 --- a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/AppBar.kt +++ b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/helpers/AppBar.kt @@ -1,23 +1,26 @@ -package space.rethelyi.mosogepsch.view +package space.rethelyi.mosogepsch.view.helpers +import android.content.Intent import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.DropdownMenu import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.material3.SmallTopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +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 space.rethelyi.mosogepsch.R +import space.rethelyi.mosogepsch.view.OptionViewActivity @Composable fun AppBar(internet: Boolean) { + val context = LocalContext.current SmallTopAppBar( title = { Row( @@ -38,6 +41,15 @@ fun AppBar(internet: Boolean) { contentDescription = stringResource(R.string.no_internet) ) } + +// IconButton(onClick = { +// val intent = Intent(context, OptionViewActivity::class.java) +// context.startActivity(intent) +// }) { +// Icon(painter = painterResource(R.drawable.settings), +// contentDescription = stringResource(R.string.settings) +// ) +// } }, ) } \ No newline at end of file diff --git a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/helpers/Switch.kt b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/helpers/Switch.kt new file mode 100644 index 0000000000000000000000000000000000000000..d4f654047c0501b22fc3e9126fab463c05119c6a --- /dev/null +++ b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/helpers/Switch.kt @@ -0,0 +1,21 @@ +package space.rethelyi.mosogepsch.view.helpers + +import androidx.compose.material.SwitchDefaults +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable + +@Composable +fun Switch(state: Boolean, setState: (Boolean) -> Unit) { + androidx.compose.material.Switch( + checked = state, + onCheckedChange = setState, + colors = SwitchDefaults.colors( + checkedThumbColor = MaterialTheme.colorScheme.primary, + checkedTrackColor = MaterialTheme.colorScheme.onPrimary, + checkedTrackAlpha = 1f, + uncheckedThumbColor = MaterialTheme.colorScheme.secondary, + uncheckedTrackColor = MaterialTheme.colorScheme.onSecondary, + uncheckedTrackAlpha = 1f, + ) + ) +} \ No newline at end of file diff --git a/frontend/app/src/main/res/drawable/settings.xml b/frontend/app/src/main/res/drawable/settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..41a82ede8b36a4aa8b4aaffbbf4caebdc3f03d11 --- /dev/null +++ b/frontend/app/src/main/res/drawable/settings.xml @@ -0,0 +1,10 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24" + android:tint="?attr/colorControlNormal"> + <path + android:fillColor="@android:color/white" + android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z"/> +</vector> diff --git a/frontend/app/src/main/res/values-hu/strings.xml b/frontend/app/src/main/res/values-hu/strings.xml index 65462b28c3a29c257fb0138f714ae246c8e4633c..8f89c2c8b16157c977f96dad7cd4401f460db28a 100644 --- a/frontend/app/src/main/res/values-hu/strings.xml +++ b/frontend/app/src/main/res/values-hu/strings.xml @@ -18,4 +18,6 @@ <string name="notification_msg">A %1$s. emeleti %2$s %3$s lett.</string> <string name="no_internet">nincs internet kapcsolat</string> <string name="lost_in_space">elveszett (az űrben)</string> + <string name="settings">Beállítások</string> + <string name="xiaomi">Xiaomi MIUI-t használok</string> </resources> \ No newline at end of file diff --git a/frontend/app/src/main/res/values-night/themes.xml b/frontend/app/src/main/res/values-night/themes.xml index 25fb7ea111a121269616e320c00c4d9e9bbfd52e..1d7aba9f890861e5f083ee58fa03cba10400882e 100644 --- a/frontend/app/src/main/res/values-night/themes.xml +++ b/frontend/app/src/main/res/values-night/themes.xml @@ -12,5 +12,6 @@ <!-- Status bar color. --> <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item> <!-- Customize your theme here. --> + <item name="android:forceDarkAllowed" tools:targetApi="q">false</item> </style> </resources> \ No newline at end of file diff --git a/frontend/app/src/main/res/values/strings.xml b/frontend/app/src/main/res/values/strings.xml index 5e73bdbfdce42c9652879ffe9853a278d4e13069..19f96548c715ee67d123260d57457363c2d7eb42 100644 --- a/frontend/app/src/main/res/values/strings.xml +++ b/frontend/app/src/main/res/values/strings.xml @@ -20,4 +20,7 @@ <string name="notification_msg">The %2$s on floor %1$s became %3$s</string> <string name="no_internet">no internet connection</string> <string name="lost_in_space">lost in space</string> + <string name="title_activity_option_view">OptionViewActivity</string> + <string name="settings">Settings</string> + <string name="xiaomi">I use Xiaomi MIUI</string> </resources> \ No newline at end of file diff --git a/frontend/app/src/main/res/values/themes.xml b/frontend/app/src/main/res/values/themes.xml index e5db4d3e5611406f6179486123b357d3cd685b20..6aad08bce623018aa3cc1ba56027524dc2fcc012 100644 --- a/frontend/app/src/main/res/values/themes.xml +++ b/frontend/app/src/main/res/values/themes.xml @@ -12,6 +12,7 @@ <!-- Status bar color. --> <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item> <!-- Customize your theme here. --> + <item name="android:forceDarkAllowed" tools:targetApi="q">false</item> </style> <style name="Theme.MosogepSCH.NoActionBar">