refactor(i18n): final sweep for hardcoded strings and test refactoring
All checks were successful
Update Wiki Documentation / generate-docs (push) Successful in 2m12s
All checks were successful
Update Wiki Documentation / generate-docs (push) Successful in 2m12s
This commit is contained in:
@@ -14,9 +14,15 @@ class AutomatedClickTest {
|
|||||||
@Test
|
@Test
|
||||||
fun clickThroughAllTabs() {
|
fun clickThroughAllTabs() {
|
||||||
Thread.sleep(1000)
|
Thread.sleep(1000)
|
||||||
val tabs = listOf("OŚWIETLENIE", "GNIAZDKA", "MOC", "POGODA", "WSZYSTKO")
|
val tabResIds = listOf(
|
||||||
tabs.forEach { tabName ->
|
R.string.tab_lighting,
|
||||||
onView(withText(tabName)).perform(click())
|
R.string.tab_sockets,
|
||||||
|
R.string.tab_power,
|
||||||
|
R.string.tab_weather,
|
||||||
|
R.string.tab_all
|
||||||
|
)
|
||||||
|
tabResIds.forEach { resId ->
|
||||||
|
onView(withText(resId)).perform(click())
|
||||||
Thread.sleep(500)
|
Thread.sleep(500)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,14 +26,20 @@ class MonkeyStressTest {
|
|||||||
@Test
|
@Test
|
||||||
fun runMonkeyTest() {
|
fun runMonkeyTest() {
|
||||||
val iterations = 50
|
val iterations = 50
|
||||||
val tabs = listOf("WSZYSTKO", "OŚWIETLENIE", "GNIAZDKA", "MOC", "POGODA")
|
val tabResIds = listOf(
|
||||||
|
R.string.tab_all,
|
||||||
|
R.string.tab_lighting,
|
||||||
|
R.string.tab_sockets,
|
||||||
|
R.string.tab_power,
|
||||||
|
R.string.tab_weather
|
||||||
|
)
|
||||||
for (i in 1..iterations) {
|
for (i in 1..iterations) {
|
||||||
val actionType = random.nextInt(3)
|
val actionType = random.nextInt(3)
|
||||||
try {
|
try {
|
||||||
when (actionType) {
|
when (actionType) {
|
||||||
0 -> {
|
0 -> {
|
||||||
val tab = tabs[random.nextInt(tabs.size)]
|
val tabResId = tabResIds[random.nextInt(tabResIds.size)]
|
||||||
onView(withText(tab)).perform(click())
|
onView(withText(tabResId)).perform(click())
|
||||||
}
|
}
|
||||||
1 -> {
|
1 -> {
|
||||||
onView(withId(R.id.gridView)).perform(clickRandomItem())
|
onView(withId(R.id.gridView)).perform(clickRandomItem())
|
||||||
@@ -52,7 +58,7 @@ class MonkeyStressTest {
|
|||||||
private fun clickRandomItem(): ViewAction {
|
private fun clickRandomItem(): ViewAction {
|
||||||
return object : ViewAction {
|
return object : ViewAction {
|
||||||
override fun getConstraints(): Matcher<View> = withId(R.id.gridView)
|
override fun getConstraints(): Matcher<View> = withId(R.id.gridView)
|
||||||
override fun getDescription(): String = "Kliknięcie losowego elementu w GridView"
|
override fun getDescription(): String = "Click random element in GridView"
|
||||||
override fun perform(uiController: UiController, view: View) {
|
override fun perform(uiController: UiController, view: View) {
|
||||||
val gridView = view as GridView
|
val gridView = view as GridView
|
||||||
if (gridView.childCount > 0) {
|
if (gridView.childCount > 0) {
|
||||||
|
|||||||
@@ -49,21 +49,21 @@ class ConnectionSettingsActivity : BaseActivity() {
|
|||||||
Prefs.setSelectedEntities(this@ConnectionSettingsActivity, emptySet())
|
Prefs.setSelectedEntities(this@ConnectionSettingsActivity, emptySet())
|
||||||
HaClient.clearCache()
|
HaClient.clearCache()
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
tvStatus.text = "POŁĄCZONO POMYŚLNIE"
|
tvStatus.text = strings.get(StringKey.STATUS_SUCCESS)
|
||||||
tvStatus.setTextColor(0xFF0056B3.toInt())
|
tvStatus.setTextColor(0xFF0056B3.toInt())
|
||||||
Toast.makeText(this@ConnectionSettingsActivity, "Zapisano i wyczyszczono widżety", Toast.LENGTH_SHORT).show()
|
Toast.makeText(this@ConnectionSettingsActivity, strings.get(StringKey.TOAST_SAVED_CLEARED), Toast.LENGTH_SHORT).show()
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
tvStatus.text = "BŁĄD: ${response.code()}"
|
tvStatus.text = "${strings.get(StringKey.STATUS_ERROR)}: ${response.code()}"
|
||||||
tvStatus.setTextColor(0xFFE23A24.toInt())
|
tvStatus.setTextColor(0xFFE23A24.toInt())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
override fun onFailure(call: Call<List<HaState>>, t: Throwable) {
|
override fun onFailure(call: Call<List<HaState>>, t: Throwable) {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
tvStatus.text = "BŁĄD SIECI: ${t.message}"
|
tvStatus.text = "${strings.get(StringKey.STATUS_ERROR_NETWORK)}: ${t.message}"
|
||||||
tvStatus.setTextColor(0xFFE23A24.toInt())
|
tvStatus.setTextColor(0xFFE23A24.toInt())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,13 +20,14 @@ class EntitySelectionActivity : BaseActivity() {
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_entity_selection)
|
setContentView(R.layout.activity_entity_selection)
|
||||||
|
val strings = com.example.retroha.i18n.AndroidStrings(this)
|
||||||
etSearch = findViewById(R.id.etSearch)
|
etSearch = findViewById(R.id.etSearch)
|
||||||
lvEntities = findViewById(R.id.lvEntities)
|
lvEntities = findViewById(R.id.lvEntities)
|
||||||
val btnSave = findViewById<Button>(R.id.btnSave)
|
val btnSave = findViewById<Button>(R.id.btnSave)
|
||||||
selectedEntities.addAll(Prefs.getSelectedEntities(this))
|
selectedEntities.addAll(Prefs.getSelectedEntities(this))
|
||||||
btnSave.setOnClickListener {
|
btnSave.setOnClickListener {
|
||||||
Prefs.setSelectedEntities(this, selectedEntities)
|
Prefs.setSelectedEntities(this, selectedEntities)
|
||||||
Toast.makeText(this, "Wybrane encje zapisane", Toast.LENGTH_SHORT).show()
|
Toast.makeText(this, strings.get(com.example.retroha.i18n.StringKey.TOAST_ENTITIES_SAVED), Toast.LENGTH_SHORT).show()
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
etSearch.addTextChangedListener(object : TextWatcher {
|
etSearch.addTextChangedListener(object : TextWatcher {
|
||||||
@@ -58,12 +59,14 @@ class EntitySelectionActivity : BaseActivity() {
|
|||||||
allEntities.sortBy { it.entity_id }
|
allEntities.sortBy { it.entity_id }
|
||||||
runOnUiThread { filterEntities(etSearch.text.toString()) }
|
runOnUiThread { filterEntities(etSearch.text.toString()) }
|
||||||
} else {
|
} else {
|
||||||
runOnUiThread { Toast.makeText(this@EntitySelectionActivity, "Błąd HA: ${response.code()}", Toast.LENGTH_SHORT).show() }
|
val strings = com.example.retroha.i18n.AndroidStrings(this@EntitySelectionActivity)
|
||||||
|
runOnUiThread { Toast.makeText(this@EntitySelectionActivity, "${strings.get(com.example.retroha.i18n.StringKey.STATUS_ERROR_HA)}: ${response.code()}", Toast.LENGTH_SHORT).show() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
override fun onFailure(call: Call<List<HaState>>, t: Throwable) {
|
override fun onFailure(call: Call<List<HaState>>, t: Throwable) {
|
||||||
|
val strings = com.example.retroha.i18n.AndroidStrings(this@EntitySelectionActivity)
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
Toast.makeText(this@EntitySelectionActivity, "Błąd: ${t.message}", Toast.LENGTH_LONG).show()
|
Toast.makeText(this@EntitySelectionActivity, "${strings.get(com.example.retroha.i18n.StringKey.STATUS_ERROR_NETWORK)}: ${t.message}", Toast.LENGTH_LONG).show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -29,8 +29,9 @@ class LanguageActivity : BaseActivity() {
|
|||||||
setBackgroundColor(Colors.WHITE)
|
setBackgroundColor(Colors.WHITE)
|
||||||
setPadding(dp(32), dp(32), dp(32), dp(32))
|
setPadding(dp(32), dp(32), dp(32), dp(32))
|
||||||
}
|
}
|
||||||
|
val strings = AndroidStrings(this)
|
||||||
val title = TextView(this).apply {
|
val title = TextView(this).apply {
|
||||||
text = "WYBIERZ JĘZYK\nSELECT LANGUAGE"
|
text = strings.get(StringKey.TITLE_SELECT_LANGUAGE)
|
||||||
typeface = android.graphics.Typeface.MONOSPACE
|
typeface = android.graphics.Typeface.MONOSPACE
|
||||||
textSize = 18f
|
textSize = 18f
|
||||||
setTextColor(Colors.BLACK)
|
setTextColor(Colors.BLACK)
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class MainActivity : BaseActivity() {
|
|||||||
private val allEntities = mutableListOf<WidgetConfig>()
|
private val allEntities = mutableListOf<WidgetConfig>()
|
||||||
private val displayedEntities = mutableListOf<WidgetConfig>()
|
private val displayedEntities = mutableListOf<WidgetConfig>()
|
||||||
private val mainHandler = Handler(Looper.getMainLooper())
|
private val mainHandler = Handler(Looper.getMainLooper())
|
||||||
private var currentCategory = "WSZYSTKO"
|
private var currentCategory = StringKey.TAB_ALL
|
||||||
private lateinit var tvStatusIndicator: TextView
|
private lateinit var tvStatusIndicator: TextView
|
||||||
private lateinit var tabContainer: LinearLayout
|
private lateinit var tabContainer: LinearLayout
|
||||||
private val refreshRunnable = object : Runnable {
|
private val refreshRunnable = object : Runnable {
|
||||||
@@ -78,12 +78,18 @@ class MainActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
findViewById<android.view.View>(R.id.tvTitle).setOnClickListener {
|
findViewById<android.view.View>(R.id.tvTitle).setOnClickListener {
|
||||||
fetchHaStates()
|
fetchHaStates()
|
||||||
Toast.makeText(this, "Odświeżanie...", Toast.LENGTH_SHORT).show()
|
Toast.makeText(this, strings.get(StringKey.STATUS_REFRESHING), Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
setupTabs()
|
setupTabs()
|
||||||
}
|
}
|
||||||
private fun setupTabs() {
|
private fun setupTabs() {
|
||||||
val categories = listOf("WSZYSTKO", "OŚWIETLENIE", "GNIAZDKA", "MOC", "POGODA")
|
val categories = listOf(
|
||||||
|
StringKey.TAB_ALL,
|
||||||
|
StringKey.TAB_LIGHTING,
|
||||||
|
StringKey.TAB_SOCKETS,
|
||||||
|
StringKey.TAB_POWER,
|
||||||
|
StringKey.TAB_WEATHER
|
||||||
|
)
|
||||||
val mainView = findViewById<View>(android.R.id.content)
|
val mainView = findViewById<View>(android.R.id.content)
|
||||||
tabContainer.post {
|
tabContainer.post {
|
||||||
tabContainer.removeAllViews()
|
tabContainer.removeAllViews()
|
||||||
@@ -102,7 +108,7 @@ class MainActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
val tabButton = TextView(this).apply {
|
val tabButton = TextView(this).apply {
|
||||||
layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT)
|
layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT)
|
||||||
text = cat
|
text = strings.get(cat)
|
||||||
typeface = android.graphics.Typeface.MONOSPACE
|
typeface = android.graphics.Typeface.MONOSPACE
|
||||||
textSize = 11f
|
textSize = 11f
|
||||||
setPadding(dp(12), 0, dp(12), 0)
|
setPadding(dp(12), 0, dp(12), 0)
|
||||||
@@ -131,14 +137,14 @@ class MainActivity : BaseActivity() {
|
|||||||
private fun dp(v: Int) = (v * resources.displayMetrics.density + 0.5f).toInt()
|
private fun dp(v: Int) = (v * resources.displayMetrics.density + 0.5f).toInt()
|
||||||
private fun filterEntities() {
|
private fun filterEntities() {
|
||||||
val filtered = when (currentCategory) {
|
val filtered = when (currentCategory) {
|
||||||
"WSZYSTKO" -> allEntities
|
StringKey.TAB_ALL -> allEntities
|
||||||
"OŚWIETLENIE" -> allEntities.filter { it.domain == "light" }
|
StringKey.TAB_LIGHTING -> allEntities.filter { it.domain == "light" }
|
||||||
"GNIAZDKA" -> allEntities.filter {
|
StringKey.TAB_SOCKETS -> allEntities.filter {
|
||||||
it.domain == "switch" || it.domain == "outlet" ||
|
it.domain == "switch" || it.domain == "outlet" ||
|
||||||
it.entityId.contains("socket") || it.entityId.contains("plug")
|
it.entityId.contains("socket") || it.entityId.contains("plug")
|
||||||
}
|
}
|
||||||
"MOC" -> allEntities.filter { it.secondary.contains("W") || it.entityId.contains("power") || it.entityId.contains("energy") || it.entityId.contains("current_consumption") }
|
StringKey.TAB_POWER -> allEntities.filter { it.secondary.contains("W") || it.entityId.contains("power") || it.entityId.contains("energy") || it.entityId.contains("current_consumption") }
|
||||||
"POGODA" -> allEntities.filter { it.domain == "weather" || it.domain == "sensor" && (it.entityId.contains("temp") || it.entityId.contains("hum")) }
|
StringKey.TAB_WEATHER -> allEntities.filter { it.domain == "weather" || it.domain == "sensor" && (it.entityId.contains("temp") || it.entityId.contains("hum")) }
|
||||||
else -> allEntities
|
else -> allEntities
|
||||||
}
|
}
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
@@ -157,7 +163,7 @@ class MainActivity : BaseActivity() {
|
|||||||
private fun fetchHaStates() {
|
private fun fetchHaStates() {
|
||||||
val token = Prefs.getToken(this)
|
val token = Prefs.getToken(this)
|
||||||
if (token.isEmpty()) {
|
if (token.isEmpty()) {
|
||||||
tvStatusIndicator.text = "BRAK TOKENU"
|
tvStatusIndicator.text = strings.get(StringKey.STATUS_NO_TOKEN)
|
||||||
tvStatusIndicator.setTextColor(com.example.retroha.theme.Colors.RED)
|
tvStatusIndicator.setTextColor(com.example.retroha.theme.Colors.RED)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -167,19 +173,19 @@ class MainActivity : BaseActivity() {
|
|||||||
val states = response.body() ?: return
|
val states = response.body() ?: return
|
||||||
updateEntities(states)
|
updateEntities(states)
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
tvStatusIndicator.text = "ONLINE"
|
tvStatusIndicator.text = strings.get(StringKey.STATUS_CONNECTED)
|
||||||
tvStatusIndicator.setTextColor(com.example.retroha.theme.Colors.BLUE)
|
tvStatusIndicator.setTextColor(com.example.retroha.theme.Colors.BLUE)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
tvStatusIndicator.text = "BŁĄD HA: ${response.code()}"
|
tvStatusIndicator.text = "${strings.get(StringKey.STATUS_ERROR_HA)}: ${response.code()}"
|
||||||
tvStatusIndicator.setTextColor(com.example.retroha.theme.Colors.RED)
|
tvStatusIndicator.setTextColor(com.example.retroha.theme.Colors.RED)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
override fun onFailure(call: Call<List<HaState>>, t: Throwable) {
|
override fun onFailure(call: Call<List<HaState>>, t: Throwable) {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
tvStatusIndicator.text = "OFFLINE"
|
tvStatusIndicator.text = strings.get(StringKey.STATUS_OFFLINE)
|
||||||
tvStatusIndicator.setTextColor(com.example.retroha.theme.Colors.RED)
|
tvStatusIndicator.setTextColor(com.example.retroha.theme.Colors.RED)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -254,12 +260,12 @@ class MainActivity : BaseActivity() {
|
|||||||
HaClient.getService(this).toggle(domain, ToggleRequest(cfg.entityId)).enqueue(object : Callback<List<HaState>> {
|
HaClient.getService(this).toggle(domain, ToggleRequest(cfg.entityId)).enqueue(object : Callback<List<HaState>> {
|
||||||
override fun onResponse(call: Call<List<HaState>>, response: Response<List<HaState>>) {
|
override fun onResponse(call: Call<List<HaState>>, response: Response<List<HaState>>) {
|
||||||
if (!response.isSuccessful) {
|
if (!response.isSuccessful) {
|
||||||
runOnUiThread { Toast.makeText(this@MainActivity, "BŁĄD HA: ${response.code()}", Toast.LENGTH_SHORT).show() }
|
runOnUiThread { Toast.makeText(this@MainActivity, "${strings.get(StringKey.STATUS_ERROR_HA)}: ${response.code()}", Toast.LENGTH_SHORT).show() }
|
||||||
}
|
}
|
||||||
fetchHaStates()
|
fetchHaStates()
|
||||||
}
|
}
|
||||||
override fun onFailure(call: Call<List<HaState>>, t: Throwable) {
|
override fun onFailure(call: Call<List<HaState>>, t: Throwable) {
|
||||||
runOnUiThread { Toast.makeText(this@MainActivity, "BŁĄD SIECI: ${t.message}", Toast.LENGTH_SHORT).show() }
|
runOnUiThread { Toast.makeText(this@MainActivity, "${strings.get(StringKey.STATUS_ERROR_NETWORK)}: ${t.message}", Toast.LENGTH_SHORT).show() }
|
||||||
fetchHaStates()
|
fetchHaStates()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -276,12 +282,12 @@ class MainActivity : BaseActivity() {
|
|||||||
HaClient.getService(this).toggle(domain, ToggleRequest(cfg.entityId)).enqueue(object : Callback<List<HaState>> {
|
HaClient.getService(this).toggle(domain, ToggleRequest(cfg.entityId)).enqueue(object : Callback<List<HaState>> {
|
||||||
override fun onResponse(call: Call<List<HaState>>, response: Response<List<HaState>>) {
|
override fun onResponse(call: Call<List<HaState>>, response: Response<List<HaState>>) {
|
||||||
if (!response.isSuccessful) {
|
if (!response.isSuccessful) {
|
||||||
runOnUiThread { Toast.makeText(this@MainActivity, "BŁĄD HA: ${response.code()}", Toast.LENGTH_SHORT).show() }
|
runOnUiThread { Toast.makeText(this@MainActivity, "${strings.get(StringKey.STATUS_ERROR_HA)}: ${response.code()}", Toast.LENGTH_SHORT).show() }
|
||||||
}
|
}
|
||||||
fetchHaStates()
|
fetchHaStates()
|
||||||
}
|
}
|
||||||
override fun onFailure(call: Call<List<HaState>>, t: Throwable) {
|
override fun onFailure(call: Call<List<HaState>>, t: Throwable) {
|
||||||
runOnUiThread { Toast.makeText(this@MainActivity, "BŁĄD SIECI: ${t.message}", Toast.LENGTH_SHORT).show() }
|
runOnUiThread { Toast.makeText(this@MainActivity, "${strings.get(StringKey.STATUS_ERROR_NETWORK)}: ${t.message}", Toast.LENGTH_SHORT).show() }
|
||||||
fetchHaStates()
|
fetchHaStates()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -35,6 +35,12 @@ class AndroidStrings(private val context: Context) : Strings {
|
|||||||
StringKey.STATUS_OFFLINE -> R.string.status_offline
|
StringKey.STATUS_OFFLINE -> R.string.status_offline
|
||||||
StringKey.STATUS_ERROR_HA -> R.string.status_error_ha
|
StringKey.STATUS_ERROR_HA -> R.string.status_error_ha
|
||||||
StringKey.STATUS_NO_TOKEN -> R.string.status_no_token
|
StringKey.STATUS_NO_TOKEN -> R.string.status_no_token
|
||||||
|
StringKey.TITLE_SELECT_LANGUAGE -> R.string.title_select_language
|
||||||
|
StringKey.STATUS_REFRESHING -> R.string.status_refreshing
|
||||||
|
StringKey.STATUS_SUCCESS -> R.string.status_success
|
||||||
|
StringKey.TOAST_SAVED_CLEARED -> R.string.toast_saved_cleared
|
||||||
|
StringKey.STATUS_ERROR -> R.string.status_error
|
||||||
|
StringKey.STATUS_ERROR_NETWORK -> R.string.status_error_network
|
||||||
StringKey.CONFIRM_DELETE_ALL -> R.string.confirm_delete_all
|
StringKey.CONFIRM_DELETE_ALL -> R.string.confirm_delete_all
|
||||||
StringKey.CONFIRM_CHANGE_CONN -> R.string.confirm_change_conn
|
StringKey.CONFIRM_CHANGE_CONN -> R.string.confirm_change_conn
|
||||||
StringKey.DIALOG_BRIGHTNESS -> R.string.dialog_brightness
|
StringKey.DIALOG_BRIGHTNESS -> R.string.dialog_brightness
|
||||||
@@ -44,6 +50,7 @@ class AndroidStrings(private val context: Context) : Strings {
|
|||||||
StringKey.DIALOG_YES_CHANGE -> R.string.dialog_yes_change
|
StringKey.DIALOG_YES_CHANGE -> R.string.dialog_yes_change
|
||||||
StringKey.DIALOG_YES_DELETE -> R.string.dialog_yes_delete
|
StringKey.DIALOG_YES_DELETE -> R.string.dialog_yes_delete
|
||||||
StringKey.TOAST_CLEARED -> R.string.toast_cleared
|
StringKey.TOAST_CLEARED -> R.string.toast_cleared
|
||||||
|
StringKey.TOAST_ENTITIES_SAVED -> R.string.toast_entities_saved
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,52 +1,47 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">RetroHA</string>
|
<string name="app_name">RetroHA</string>
|
||||||
<string name="app_title">HA_PANEL</string>
|
<string name="app_title">HA_PANEL</string>
|
||||||
|
|
||||||
<string name="state_on">ON</string>
|
<string name="state_on">ON</string>
|
||||||
<string name="state_off">OFF</string>
|
<string name="state_off">OFF</string>
|
||||||
<string name="state_unavailable">UNAVAILABLE</string>
|
<string name="state_unavailable">UNAVAILABLE</string>
|
||||||
<string name="state_toggling">…</string>
|
<string name="state_toggling">…</string>
|
||||||
|
|
||||||
<string name="btn_settings">SETTINGS</string>
|
<string name="btn_settings">SETTINGS</string>
|
||||||
<string name="toast_widget_add">Add widget — TODO</string>
|
<string name="toast_widget_add">Add widget — TODO</string>
|
||||||
|
|
||||||
<string name="tab_all">ALL</string>
|
<string name="tab_all">ALL</string>
|
||||||
<string name="tab_lighting">LIGHTING</string>
|
<string name="tab_lighting">LIGHTING</string>
|
||||||
<string name="tab_sockets">SOCKETS</string>
|
<string name="tab_sockets">SOCKETS</string>
|
||||||
<string name="tab_power">POWER</string>
|
<string name="tab_power">POWER</string>
|
||||||
<string name="tab_weather">WEATHER</string>
|
<string name="tab_weather">WEATHER</string>
|
||||||
|
|
||||||
<string name="title_settings">ENTITY SELECTION</string>
|
<string name="title_settings">ENTITY SELECTION</string>
|
||||||
<string name="title_connection">SERVER CONFIGURATION</string>
|
<string name="title_connection">SERVER CONFIGURATION</string>
|
||||||
<string name="title_instructions">USER MANUAL</string>
|
<string name="title_instructions">USER MANUAL</string>
|
||||||
|
|
||||||
<string name="instruction_1">1. CLICK TILE TO TOGGLE (ON/OFF).</string>
|
<string name="instruction_1">1. CLICK TILE TO TOGGLE (ON/OFF).</string>
|
||||||
<string name="instruction_2">2. LONG PRESS LIGHT TILE TO OPEN BRIGHTNESS MENU.</string>
|
<string name="instruction_2">2. LONG PRESS LIGHT TILE TO OPEN BRIGHTNESS MENU.</string>
|
||||||
<string name="instruction_3">3. USE TABS AT TOP TO FILTER DEVICES.</string>
|
<string name="instruction_3">3. USE TABS AT TOP TO FILTER DEVICES.</string>
|
||||||
<string name="instruction_4">4. CLICK \'HA_PANEL\' TITLE TO FORCE REFRESH.</string>
|
<string name="instruction_4">4. CLICK \'HA_PANEL\' TITLE TO FORCE REFRESH.</string>
|
||||||
<string name="instruction_5">5. CONNECTION CHANGE CLEARS WIDGET LIST.</string>
|
<string name="instruction_5">5. CONNECTION CHANGE CLEARS WIDGET LIST.</string>
|
||||||
|
|
||||||
<string name="label_url">URL ADDRESS</string>
|
<string name="label_url">URL ADDRESS</string>
|
||||||
<string name="label_token">ACCESS TOKEN</string>
|
<string name="label_token">ACCESS TOKEN</string>
|
||||||
<string name="label_refresh">REFRESH (SECONDS)</string>
|
<string name="label_refresh">REFRESH (SECONDS)</string>
|
||||||
|
|
||||||
<string name="btn_test_save">TEST AND SAVE</string>
|
<string name="btn_test_save">TEST AND SAVE</string>
|
||||||
<string name="btn_delete_all">DELETE ALL WIDGETS</string>
|
<string name="btn_delete_all">DELETE ALL WIDGETS</string>
|
||||||
<string name="btn_save_selected">SAVE SELECTED</string>
|
<string name="btn_save_selected">SAVE SELECTED</string>
|
||||||
<string name="btn_change_lang">JĘZYK / LANGUAGE</string>
|
<string name="btn_change_lang">LANGUAGE / JĘZYK</string>
|
||||||
<string name="btn_entity_selection">WIDGET SELECTION</string>
|
<string name="btn_entity_selection">WIDGET SELECTION</string>
|
||||||
<string name="btn_instructions">USER MANUAL</string>
|
<string name="btn_instructions">USER MANUAL</string>
|
||||||
|
|
||||||
<string name="status_connecting">CONNECTING...</string>
|
<string name="status_connecting">CONNECTING...</string>
|
||||||
<string name="status_connected">CONNECTED SUCCESSFULLY</string>
|
<string name="status_connected">ONLINE</string>
|
||||||
<string name="status_offline">OFFLINE</string>
|
<string name="status_offline">OFFLINE</string>
|
||||||
<string name="status_error_ha">HA ERROR</string>
|
<string name="status_error_ha">HA ERROR</string>
|
||||||
<string name="status_no_token">NO TOKEN</string>
|
<string name="status_no_token">NO TOKEN</string>
|
||||||
|
<string name="title_select_language">SELECT LANGUAGE\nWYBIERZ JĘZYK</string>
|
||||||
|
<string name="status_refreshing">Refreshing...</string>
|
||||||
|
<string name="status_success">CONNECTED SUCCESSFULLY</string>
|
||||||
|
<string name="toast_saved_cleared">Saved and cleared widgets</string>
|
||||||
|
<string name="status_error">ERROR</string>
|
||||||
|
<string name="status_error_network">NETWORK ERROR</string>
|
||||||
<string name="confirm_delete_all">ARE YOU SURE YOU WANT TO DELETE ALL WIDGETS FROM HOME?</string>
|
<string name="confirm_delete_all">ARE YOU SURE YOU WANT TO DELETE ALL WIDGETS FROM HOME?</string>
|
||||||
<string name="confirm_change_conn">CHANGING ADDRESS OR TOKEN WILL DELETE ALL SELECTED WIDGETS. CONTINUE?</string>
|
<string name="confirm_change_conn">CHANGING ADDRESS OR TOKEN WILL DELETE ALL SELECTED WIDGETS. CONTINUE?</string>
|
||||||
|
|
||||||
<string name="dialog_brightness">BRIGHTNESS</string>
|
<string name="dialog_brightness">BRIGHTNESS</string>
|
||||||
<string name="dialog_set">SET</string>
|
<string name="dialog_set">SET</string>
|
||||||
<string name="dialog_cancel">CANCEL</string>
|
<string name="dialog_cancel">CANCEL</string>
|
||||||
@@ -54,7 +49,7 @@
|
|||||||
<string name="dialog_yes_change">YES, CHANGE</string>
|
<string name="dialog_yes_change">YES, CHANGE</string>
|
||||||
<string name="dialog_yes_delete">YES, DELETE</string>
|
<string name="dialog_yes_delete">YES, DELETE</string>
|
||||||
<string name="toast_cleared">Dashboard cleared</string>
|
<string name="toast_cleared">Dashboard cleared</string>
|
||||||
|
<string name="toast_entities_saved">Selected entities saved</string>
|
||||||
<string name="inst_header_1">BASIC USAGE</string>
|
<string name="inst_header_1">BASIC USAGE</string>
|
||||||
<string name="inst_body_1">- Short click on a tile toggles the device (ON/OFF).\n- Long press on a light tile opens a dedicated brightness slider.\n- Use the tabs at the top (e.g., Lighting, Power) to quickly filter displayed devices.</string>
|
<string name="inst_body_1">- Short click on a tile toggles the device (ON/OFF).\n- Long press on a light tile opens a dedicated brightness slider.\n- Use the tabs at the top (e.g., Lighting, Power) to quickly filter displayed devices.</string>
|
||||||
<string name="inst_header_2">SORTING & VISIBILITY</string>
|
<string name="inst_header_2">SORTING & VISIBILITY</string>
|
||||||
|
|||||||
@@ -1,52 +1,47 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">RetroHA</string>
|
<string name="app_name">RetroHA</string>
|
||||||
<string name="app_title">HA_PANEL</string>
|
<string name="app_title">HA_PANEL</string>
|
||||||
|
|
||||||
<string name="state_on">WŁ.</string>
|
<string name="state_on">WŁ.</string>
|
||||||
<string name="state_off">WYŁ.</string>
|
<string name="state_off">WYŁ.</string>
|
||||||
<string name="state_unavailable">NIEOSIĄGALNE</string>
|
<string name="state_unavailable">NIEOSIĄGALNE</string>
|
||||||
<string name="state_toggling">…</string>
|
<string name="state_toggling">…</string>
|
||||||
|
|
||||||
<string name="btn_settings">USTAWIENIA</string>
|
<string name="btn_settings">USTAWIENIA</string>
|
||||||
<string name="toast_widget_add">Dodaj widget — TODO</string>
|
<string name="toast_widget_add">Dodaj widget — TODO</string>
|
||||||
|
|
||||||
<string name="tab_all">WSZYSTKO</string>
|
<string name="tab_all">WSZYSTKO</string>
|
||||||
<string name="tab_lighting">OŚWIETLENIE</string>
|
<string name="tab_lighting">OŚWIETLENIE</string>
|
||||||
<string name="tab_sockets">GNIAZDKA</string>
|
<string name="tab_sockets">GNIAZDKA</string>
|
||||||
<string name="tab_power">MOC</string>
|
<string name="tab_power">MOC</string>
|
||||||
<string name="tab_weather">POGODA</string>
|
<string name="tab_weather">POGODA</string>
|
||||||
|
|
||||||
<string name="title_settings">WYBÓR ENCJI</string>
|
<string name="title_settings">WYBÓR ENCJI</string>
|
||||||
<string name="title_connection">KONFIGURACJA SERWERA</string>
|
<string name="title_connection">KONFIGURACJA SERWERA</string>
|
||||||
<string name="title_instructions">INSTRUKCJA OBSŁUGI</string>
|
<string name="title_instructions">INSTRUKCJA OBSŁUGI</string>
|
||||||
|
|
||||||
<string name="instruction_1">1. KLIKNIJ KAFELEK, ABY PRZEŁĄCZYĆ (ON/OFF).</string>
|
<string name="instruction_1">1. KLIKNIJ KAFELEK, ABY PRZEŁĄCZYĆ (ON/OFF).</string>
|
||||||
<string name="instruction_2">2. PRZYTRZYMAJ KAFELEK ŚWIATŁA, ABY OTWORZYĆ MENU JASNOŚCI.</string>
|
<string name="instruction_2">2. PRZYTRZYMAJ KAFELEK ŚWIATŁA, ABY OTWORZYĆ MENU JASNOŚCI.</string>
|
||||||
<string name="instruction_3">3. UŻYWAJ ZAKŁADEK NA GÓRZE DO FILTROWANIA URZĄDZEŃ.</string>
|
<string name="instruction_3">3. UŻYWAJ ZAKŁADEK NA GÓRZE DO FILTROWANIA URZĄDZEŃ.</string>
|
||||||
<string name="instruction_4">4. KLIKNIJ TYTUŁ \'HA_PANEL\', ABY WYMUSIĆ ODŚWIEŻENIE.</string>
|
<string name="instruction_4">4. KLIKNIJ TYTUŁ \'HA_PANEL\', ABY WYMUSIĆ ODŚWIEŻENIE.</string>
|
||||||
<string name="instruction_5">5. ZMIANA POŁĄCZENIA CZYŚCI LISTĘ WIDŻETÓW.</string>
|
<string name="instruction_5">5. ZMIANA POŁĄCZENIA CZYŚCI LISTĘ WIDŻETÓW.</string>
|
||||||
|
|
||||||
<string name="label_url">ADRES URL</string>
|
<string name="label_url">ADRES URL</string>
|
||||||
<string name="label_token">TOKEN DOSTĘPU</string>
|
<string name="label_token">TOKEN DOSTĘPU</string>
|
||||||
<string name="label_refresh">ODŚWIEŻANIE (SEKUNDY)</string>
|
<string name="label_refresh">ODŚWIEŻANIE (SEKUNDY)</string>
|
||||||
|
|
||||||
<string name="btn_test_save">TESTUJ I ZAPISZ</string>
|
<string name="btn_test_save">TESTUJ I ZAPISZ</string>
|
||||||
<string name="btn_delete_all">USUŃ WSZYSTKIE WIDŻETY</string>
|
<string name="btn_delete_all">USUŃ WSZYSTKIE WIDŻETY</string>
|
||||||
<string name="btn_save_selected">ZAPISZ WYBRANE</string>
|
<string name="btn_save_selected">ZAPISZ WYBRANE</string>
|
||||||
<string name="btn_change_lang">JĘZYK / LANGUAGE</string>
|
<string name="btn_change_lang">JĘZYK / LANGUAGE</string>
|
||||||
<string name="btn_entity_selection">WYBÓR WIDŻETÓW</string>
|
<string name="btn_entity_selection">WYBÓR WIDŻETÓW</string>
|
||||||
<string name="btn_instructions">INSTRUKCJA OBSŁUGI</string>
|
<string name="btn_instructions">INSTRUKCJA OBSŁUGI</string>
|
||||||
|
|
||||||
<string name="status_connecting">ŁĄCZENIE...</string>
|
<string name="status_connecting">ŁĄCZENIE...</string>
|
||||||
<string name="status_connected">POŁĄCZONO POMYŚLNIE</string>
|
<string name="status_connected">ONLINE</string>
|
||||||
<string name="status_offline">OFFLINE</string>
|
<string name="status_offline">OFFLINE</string>
|
||||||
<string name="status_error_ha">BŁĄD HA</string>
|
<string name="status_error_ha">BŁĄD HA</string>
|
||||||
<string name="status_no_token">BRAK TOKENU</string>
|
<string name="status_no_token">BRAK TOKENU</string>
|
||||||
|
<string name="title_select_language">WYBIERZ JĘZYK\nSELECT LANGUAGE</string>
|
||||||
|
<string name="status_refreshing">Odświeżanie...</string>
|
||||||
|
<string name="status_success">POŁĄCZONO POMYŚLNIE</string>
|
||||||
|
<string name="toast_saved_cleared">Zapisano i wyczyszczono widżety</string>
|
||||||
|
<string name="status_error">BŁĄD</string>
|
||||||
|
<string name="status_error_network">BŁĄD SIECI</string>
|
||||||
<string name="confirm_delete_all">CZY NA PEWNO CHCESZ USUNĄĆ WSZYSTKIE WIDŻETY Z PULPITU?</string>
|
<string name="confirm_delete_all">CZY NA PEWNO CHCESZ USUNĄĆ WSZYSTKIE WIDŻETY Z PULPITU?</string>
|
||||||
<string name="confirm_change_conn">ZMIANA ADRESU LUB TOKENU SPOWODUJE USUNIĘCIE WSZYSTKICH WYBRANYCH WIDŻETÓW. KONTYNUOWAĆ?</string>
|
<string name="confirm_change_conn">ZMIANA ADRESU LUB TOKENU SPOWODUJE USUNIĘCIE WSZYSTKICH WYBRANYCH WIDŻETÓW. KONTYNUOWAĆ?</string>
|
||||||
|
|
||||||
<string name="dialog_brightness">JASNOŚĆ</string>
|
<string name="dialog_brightness">JASNOŚĆ</string>
|
||||||
<string name="dialog_set">USTAW</string>
|
<string name="dialog_set">USTAW</string>
|
||||||
<string name="dialog_cancel">ANULUJ</string>
|
<string name="dialog_cancel">ANULUJ</string>
|
||||||
@@ -54,7 +49,7 @@
|
|||||||
<string name="dialog_yes_change">TAK, ZMIEŃ</string>
|
<string name="dialog_yes_change">TAK, ZMIEŃ</string>
|
||||||
<string name="dialog_yes_delete">TAK, USUŃ</string>
|
<string name="dialog_yes_delete">TAK, USUŃ</string>
|
||||||
<string name="toast_cleared">Wyczyszczono pulpit</string>
|
<string name="toast_cleared">Wyczyszczono pulpit</string>
|
||||||
|
<string name="toast_entities_saved">Wybrane encje zapisane</string>
|
||||||
<string name="inst_header_1">PODSTAWY OBSŁUGI</string>
|
<string name="inst_header_1">PODSTAWY OBSŁUGI</string>
|
||||||
<string name="inst_body_1">- Krótkie kliknięcie kafelka przełącza urządzenie (ON/OFF).\n- Długie przytrzymanie kafelka światła otwiera dedykowany suwak jasności.\n- Zakładki na górze ekranu (np. Oświetlenie, Moc) służą do szybkiego filtrowania wyświetlanych urządzeń.</string>
|
<string name="inst_body_1">- Krótkie kliknięcie kafelka przełącza urządzenie (ON/OFF).\n- Długie przytrzymanie kafelka światła otwiera dedykowany suwak jasności.\n- Zakładki na górze ekranu (np. Oświetlenie, Moc) służą do szybkiego filtrowania wyświetlanych urządzeń.</string>
|
||||||
<string name="inst_header_2">SORTOWANIE I WIDOCZNOŚĆ</string>
|
<string name="inst_header_2">SORTOWANIE I WIDOCZNOŚĆ</string>
|
||||||
|
|||||||
@@ -31,6 +31,12 @@ enum class StringKey {
|
|||||||
STATUS_OFFLINE,
|
STATUS_OFFLINE,
|
||||||
STATUS_ERROR_HA,
|
STATUS_ERROR_HA,
|
||||||
STATUS_NO_TOKEN,
|
STATUS_NO_TOKEN,
|
||||||
|
TITLE_SELECT_LANGUAGE,
|
||||||
|
STATUS_REFRESHING,
|
||||||
|
STATUS_SUCCESS,
|
||||||
|
TOAST_SAVED_CLEARED,
|
||||||
|
STATUS_ERROR,
|
||||||
|
STATUS_ERROR_NETWORK,
|
||||||
CONFIRM_DELETE_ALL,
|
CONFIRM_DELETE_ALL,
|
||||||
CONFIRM_CHANGE_CONN,
|
CONFIRM_CHANGE_CONN,
|
||||||
DIALOG_BRIGHTNESS,
|
DIALOG_BRIGHTNESS,
|
||||||
@@ -39,5 +45,6 @@ enum class StringKey {
|
|||||||
DIALOG_WARNING,
|
DIALOG_WARNING,
|
||||||
DIALOG_YES_CHANGE,
|
DIALOG_YES_CHANGE,
|
||||||
DIALOG_YES_DELETE,
|
DIALOG_YES_DELETE,
|
||||||
TOAST_CLEARED
|
TOAST_CLEARED,
|
||||||
|
TOAST_ENTITIES_SAVED
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user