diff --git a/core/base/src/main/res/values/strings.xml b/core/base/src/main/res/values/strings.xml
index fb0941f3..8ce71c9e 100644
--- a/core/base/src/main/res/values/strings.xml
+++ b/core/base/src/main/res/values/strings.xml
@@ -167,6 +167,12 @@ Maybe this can be labeled better? Let me know. It should be something that can d
Haptic feedback when clicking keyboard buttons
View source code
Add time zone
+
+
+ Read the article
+
+
+ Need more time zones?
Time zones
Tomorrow
Acre
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/SearchPlaceholder.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchPlaceholder.kt
similarity index 81%
rename from feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/SearchPlaceholder.kt
rename to core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchPlaceholder.kt
index cfa1f11a..aa69ba8f 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/SearchPlaceholder.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchPlaceholder.kt
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.sadellie.unitto.feature.converter.components
+package com.sadellie.unitto.core.ui.common
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -38,7 +38,11 @@ import androidx.compose.ui.unit.dp
import com.sadellie.unitto.core.base.R
@Composable
-internal fun SearchPlaceholder(navigateToSettingsAction: () -> Unit) {
+fun SearchPlaceholder(
+ onButtonClick: () -> Unit,
+ supportText: String,
+ buttonLabel: String
+) {
Column(
modifier = Modifier
.fillMaxWidth()
@@ -46,27 +50,23 @@ internal fun SearchPlaceholder(navigateToSettingsAction: () -> Unit) {
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
- // Big icon in the middle
Icon(
- Icons.Default.SearchOff,
+ imageVector = Icons.Default.SearchOff,
contentDescription = stringResource(R.string.no_results_description),
modifier = Modifier.size(48.dp)
)
- // Primary text
Text(
text = stringResource(R.string.no_results_label),
textAlign = TextAlign.Center,
style = MaterialTheme.typography.bodyLarge
)
- // Secondary text with tips
Text(
- text = stringResource(R.string.converter_no_results_support),
+ text = supportText,
textAlign = TextAlign.Center,
style = MaterialTheme.typography.bodySmall
)
- // Open settings button
- ElevatedButton(onClick = navigateToSettingsAction) {
- Text(text = stringResource(R.string.open_settings_label))
+ ElevatedButton(onClick = onButtonClick) {
+ Text(text = buttonLabel)
}
}
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/LeftSideScreen.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/LeftSideScreen.kt
index ec09e4e1..77e4ce26 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/LeftSideScreen.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/LeftSideScreen.kt
@@ -38,6 +38,7 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.sadellie.unitto.core.base.R
+import com.sadellie.unitto.core.ui.common.SearchPlaceholder
import com.sadellie.unitto.core.ui.common.UnittoEmptyScreen
import com.sadellie.unitto.core.ui.common.UnittoSearchBar
import com.sadellie.unitto.data.model.UnitGroup
@@ -49,7 +50,6 @@ import com.sadellie.unitto.feature.converter.components.BasicUnitListItem
import com.sadellie.unitto.feature.converter.components.ChipsFlexRow
import com.sadellie.unitto.feature.converter.components.ChipsRow
import com.sadellie.unitto.feature.converter.components.FavoritesButton
-import com.sadellie.unitto.feature.converter.components.SearchPlaceholder
import com.sadellie.unitto.feature.converter.components.UnitGroupHeader
import java.math.BigDecimal
@@ -169,7 +169,11 @@ private fun LeftSideScreen(
}
}
- false -> SearchPlaceholder(navigateToSettingsAction = navigateToUnitGroups)
+ false -> SearchPlaceholder(
+ onButtonClick = navigateToUnitGroups,
+ supportText = stringResource(R.string.converter_no_results_support),
+ buttonLabel = stringResource(R.string.open_settings_label)
+ )
}
}
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/RightSideScreen.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/RightSideScreen.kt
index 14f3bc26..6cb49f95 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/RightSideScreen.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/RightSideScreen.kt
@@ -34,6 +34,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.sadellie.unitto.core.base.OutputFormat
import com.sadellie.unitto.core.base.R
+import com.sadellie.unitto.core.ui.common.SearchPlaceholder
import com.sadellie.unitto.core.ui.common.UnittoEmptyScreen
import com.sadellie.unitto.core.ui.common.UnittoSearchBar
import com.sadellie.unitto.core.ui.common.textfield.FormatterSymbols
@@ -48,7 +49,6 @@ import com.sadellie.unitto.data.model.unit.NumberBaseUnit
import com.sadellie.unitto.data.units.MyUnitIDS
import com.sadellie.unitto.feature.converter.components.BasicUnitListItem
import com.sadellie.unitto.feature.converter.components.FavoritesButton
-import com.sadellie.unitto.feature.converter.components.SearchPlaceholder
import com.sadellie.unitto.feature.converter.components.UnitGroupHeader
import java.math.BigDecimal
@@ -142,7 +142,11 @@ private fun RightSideScreen(
}
}
- false -> SearchPlaceholder(navigateToSettingsAction = navigateToUnitGroups)
+ false -> SearchPlaceholder(
+ onButtonClick = navigateToUnitGroups,
+ supportText = stringResource(R.string.converter_no_results_support),
+ buttonLabel = stringResource(R.string.open_settings_label)
+ )
}
}
}
diff --git a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneScreen.kt b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneScreen.kt
index fd3f1262..1ce81369 100644
--- a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneScreen.kt
+++ b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneScreen.kt
@@ -40,15 +40,19 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.Preview
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import com.sadellie.unitto.core.base.R
import com.sadellie.unitto.core.ui.LocalLocale
+import com.sadellie.unitto.core.ui.common.SearchPlaceholder
import com.sadellie.unitto.core.ui.common.UnittoEmptyScreen
import com.sadellie.unitto.core.ui.common.UnittoListItem
import com.sadellie.unitto.core.ui.common.UnittoSearchBar
import com.sadellie.unitto.core.ui.datetime.formatTime
+import com.sadellie.unitto.core.ui.openLink
import com.sadellie.unitto.data.common.displayName
import com.sadellie.unitto.data.common.offset
import com.sadellie.unitto.data.common.regionName
@@ -83,6 +87,7 @@ fun AddTimeZoneScreen(
addToFavorites: (TimeZone) -> Unit,
userTime: ZonedDateTime,
) {
+ val mContext = LocalContext.current
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
val locale = LocalLocale.current
val is24Hour = is24HourFormat(LocalContext.current)
@@ -100,11 +105,15 @@ fun AddTimeZoneScreen(
) { paddingValues ->
Crossfade(
modifier = Modifier.padding(paddingValues),
- targetState = uiState.list.isEmpty(),
+ targetState = uiState.list.isEmpty() and uiState.query.text.isNotEmpty(),
label = "Placeholder"
) { empty ->
if (empty) {
- UnittoEmptyScreen()
+ SearchPlaceholder(
+ onButtonClick = { openLink(mContext, "https://github.com/sadellie/unitto/wiki/Adding-more-time-zones") },
+ supportText = stringResource(R.string.time_zone_no_results_support),
+ buttonLabel = stringResource(R.string.time_zone_no_results_button),
+ )
} else {
LazyColumn(Modifier.fillMaxSize()) {
items(uiState.list, { it.timeZone.id }) {