diff --git a/build.gradle b/build.gradle
index 0f5de76c..7359422c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -11,10 +11,10 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath "com.android.tools.build:gradle:7.0.2"
+ classpath "com.android.tools.build:gradle:7.0.3"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "io.spring.gradle:dependency-management-plugin:1.0.11.RELEASE"
- classpath "com.google.dagger:hilt-android-gradle-plugin:2.38.1"
+ classpath "com.google.dagger:hilt-android-gradle-plugin:2.40"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index fd0d2c7d..cffefd99 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
diff --git a/lib_theme/src/main/java/no/nordicsemi/android/theme/view/SectionTitle.kt b/lib_theme/src/main/java/no/nordicsemi/android/theme/view/SectionTitle.kt
new file mode 100644
index 00000000..ebde00bb
--- /dev/null
+++ b/lib_theme/src/main/java/no/nordicsemi/android/theme/view/SectionTitle.kt
@@ -0,0 +1,81 @@
+package no.nordicsemi.android.theme.view
+
+import androidx.annotation.DrawableRes
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.*
+import androidx.compose.foundation.shape.CircleShape
+import androidx.compose.material3.Icon
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+
+@Composable
+fun SectionTitle(
+ @DrawableRes resId: Int,
+ title: String,
+ modifier: Modifier = Modifier.fillMaxWidth()
+) {
+ Row(
+ modifier = modifier,
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.Start
+ ) {
+ Image(
+ painter = painterResource(id = resId),
+ contentDescription = null,
+ modifier = Modifier
+ .background(
+ color = MaterialTheme.colorScheme.secondary,
+ shape = CircleShape
+ )
+ .padding(8.dp)
+ )
+ Spacer(modifier = Modifier.padding(8.dp))
+ Text(
+ text = title,
+ textAlign = TextAlign.Center,
+ fontSize = 24.sp,
+ fontWeight = FontWeight.Bold
+ )
+ }
+}
+
+@Composable
+fun SectionTitle(
+ icon: ImageVector,
+ title: String,
+ modifier: Modifier = Modifier.fillMaxWidth()
+) {
+ Row(
+ modifier = modifier,
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.Start
+ ) {
+ Icon(
+ imageVector = icon,
+ contentDescription = null,
+ modifier = Modifier
+ .background(
+ color = MaterialTheme.colorScheme.secondary,
+ shape = CircleShape
+ )
+ .padding(8.dp)
+ )
+ Spacer(modifier = Modifier.padding(8.dp))
+ Text(
+ text = title,
+ textAlign = TextAlign.Center,
+ fontSize = 24.sp,
+ fontWeight = FontWeight.Bold
+ )
+ }
+}
diff --git a/lib_theme/src/main/java/no/nordicsemi/android/theme/view/SensorRecordCard.kt b/lib_theme/src/main/java/no/nordicsemi/android/theme/view/SensorRecordCard.kt
index 89934b6e..df84f35b 100644
--- a/lib_theme/src/main/java/no/nordicsemi/android/theme/view/SensorRecordCard.kt
+++ b/lib_theme/src/main/java/no/nordicsemi/android/theme/view/SensorRecordCard.kt
@@ -1,6 +1,6 @@
package no.nordicsemi.android.theme.view
-import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
@@ -16,7 +16,7 @@ fun ScreenSection(content: @Composable () -> Unit) {
shape = RoundedCornerShape(4.dp),
elevation = 0.dp
) {
- Box(modifier = Modifier.padding(16.dp)) {
+ Column(modifier = Modifier.padding(16.dp)) {
content()
}
}
diff --git a/lib_theme/src/main/res/drawable/ic_records.xml b/lib_theme/src/main/res/drawable/ic_records.xml
new file mode 100644
index 00000000..1b134145
--- /dev/null
+++ b/lib_theme/src/main/res/drawable/ic_records.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/profile_csc/src/main/java/no/nordicsemi/android/csc/view/CSCConnectedView.kt b/profile_csc/src/main/java/no/nordicsemi/android/csc/view/CSCConnectedView.kt
index b8dcb52f..1d928b10 100644
--- a/profile_csc/src/main/java/no/nordicsemi/android/csc/view/CSCConnectedView.kt
+++ b/profile_csc/src/main/java/no/nordicsemi/android/csc/view/CSCConnectedView.kt
@@ -4,8 +4,6 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.material3.Button
-import androidx.compose.material3.ButtonDefaults
-import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
diff --git a/profile_gls/src/main/java/no/nordicsemi/android/gls/view/GLSContentView.kt b/profile_gls/src/main/java/no/nordicsemi/android/gls/view/GLSContentView.kt
index 0a4f2cf9..446d3817 100644
--- a/profile_gls/src/main/java/no/nordicsemi/android/gls/view/GLSContentView.kt
+++ b/profile_gls/src/main/java/no/nordicsemi/android/gls/view/GLSContentView.kt
@@ -1,26 +1,26 @@
package no.nordicsemi.android.gls.view
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.*
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Search
+import androidx.compose.material.icons.filled.Settings
import androidx.compose.material3.Button
import androidx.compose.material3.Text
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.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import no.nordicsemi.android.gls.R
import no.nordicsemi.android.gls.data.GLSData
+import no.nordicsemi.android.gls.data.GLSRecord
import no.nordicsemi.android.gls.viewmodel.DisconnectEvent
import no.nordicsemi.android.gls.viewmodel.GLSScreenViewEvent
import no.nordicsemi.android.gls.viewmodel.OnWorkingModeSelected
import no.nordicsemi.android.theme.view.BatteryLevelView
import no.nordicsemi.android.theme.view.ScreenSection
+import no.nordicsemi.android.theme.view.SectionTitle
@Composable
internal fun GLSContentView(state: GLSData, onEvent: (GLSScreenViewEvent) -> Unit) {
@@ -53,6 +53,10 @@ internal fun GLSContentView(state: GLSData, onEvent: (GLSScreenViewEvent) -> Uni
@Composable
private fun SettingsView(state: GLSData, onEvent: (GLSScreenViewEvent) -> Unit) {
ScreenSection {
+ SectionTitle(icon = Icons.Default.Settings, title = "Request items")
+
+ Spacer(modifier = Modifier.height(16.dp))
+
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceEvenly
@@ -69,10 +73,54 @@ private fun SettingsView(state: GLSData, onEvent: (GLSScreenViewEvent) -> Unit)
@Composable
private fun RecordsView(state: GLSData) {
ScreenSection {
- Column(modifier = Modifier.fillMaxWidth()) {
- state.records.forEach {
- Text(text = String.format("Glucose concentration: ", it.glucoseConcentration))
- }
+ if (state.records.isEmpty()) {
+ RecordsViewWithoutData()
+ } else {
+ RecordsViewWithData(state)
+ }
+
+ }
+}
+
+@Composable
+private fun RecordsViewWithData(state: GLSData) {
+ Column(modifier = Modifier.fillMaxWidth()) {
+ SectionTitle(resId = R.drawable.ic_records, title = "Records")
+
+ Spacer(modifier = Modifier.height(16.dp))
+
+ state.records.forEach {
+ Text(text = String.format("Glucose concentration: %.2d", it.glucoseConcentration))
}
}
}
+
+@Composable
+private fun RecordsViewWithoutData() {
+ Column(
+ modifier = Modifier.fillMaxWidth(),
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ SectionTitle(icon = Icons.Default.Search, title = "No items")
+
+ Spacer(modifier = Modifier.height(16.dp))
+
+ Text(text = stringResource(id = R.string.gls_no_records_info))
+ }
+}
+
+@Preview
+@Composable
+private fun GLSContentView_NoData_Preview() {
+ GLSContentView(GLSData()) { }
+}
+
+@Preview
+@Composable
+private fun GLSContentView_WithData_Preview() {
+ GLSContentView(GLSData(records = listOf(
+ GLSRecord(glucoseConcentration = 10f),
+ GLSRecord(glucoseConcentration = 15f),
+ GLSRecord(glucoseConcentration = 20f),
+ ))) { }
+}
diff --git a/profile_gls/src/main/res/values/strings.xml b/profile_gls/src/main/res/values/strings.xml
index b1eafe68..a7a5aafe 100644
--- a/profile_gls/src/main/res/values/strings.xml
+++ b/profile_gls/src/main/res/values/strings.xml
@@ -1,4 +1,5 @@
GLS
+ There is no data available. This peripheral downloads data only when requested. Please select what kind of data you want to download by clicking one from the above buttons.
diff --git a/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSContentView.kt b/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSContentView.kt
index 0dfd758a..32eb91e1 100644
--- a/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSContentView.kt
+++ b/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSContentView.kt
@@ -1,11 +1,6 @@
package no.nordicsemi.android.hts.view
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
diff --git a/settings.gradle b/settings.gradle
index 647b2681..92330f27 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -12,7 +12,7 @@ dependencyResolutionManagement {
versionCatalogs {
libs {
alias('nordic-theme').to('no.nordicsemi.android.common:theme:1.0.0')
- alias('nordic-ble-common').to('no.nordicsemi.android:ble-common:2.2.0')
+ alias('nordic-ble-common').to('no.nordicsemi.android:ble-common:2.3.1')
alias('nordic-log').to('no.nordicsemi.android:log:2.3.0')
alias('nordic-scanner').to('no.nordicsemi.android.support.v18:scanner:1.5.0')
@@ -78,10 +78,10 @@ include ':lib_service'
include ':lib_theme'
include ':lib_utils'
-if (file('../Android-BLE-Library').exists()) {
- includeBuild('../Android-BLE-Library')
-}
-
-if (file('../Android-Scanner-Compat-Library').exists()) {
- includeBuild('../Android-Scanner-Compat-Library')
-}
+//if (file('../Android-BLE-Library').exists()) {
+// includeBuild('../Android-BLE-Library')
+//}
+//
+//if (file('../Android-Scanner-Compat-Library').exists()) {
+// includeBuild('../Android-Scanner-Compat-Library')
+//}