Skip to content

Commit d8b93f0

Browse files
TimoPtrjpelgrom
andauthored
Add LicensesFragment using AboutLibraries (#6341)
--------- Co-authored-by: Joris Pelgröm <joris.pelgrom@gmail.com>
1 parent 187dd5d commit d8b93f0

File tree

12 files changed

+166
-28
lines changed

12 files changed

+166
-28
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55
alias(libs.plugins.google.services)
66
alias(libs.plugins.homeassistant.android.dependencies)
77
alias(libs.plugins.kotlin.parcelize)
8+
alias(libs.plugins.aboutlibraries)
89
}
910

1011
android {

app/gradle.lockfile

Lines changed: 31 additions & 14 deletions
Large diffs are not rendered by default.

app/src/main/kotlin/io/homeassistant/companion/android/settings/SettingsFragment.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import io.homeassistant.companion.android.settings.controls.ManageControlsSettin
4040
import io.homeassistant.companion.android.settings.developer.DeveloperSettingsFragment
4141
import io.homeassistant.companion.android.settings.gestures.GesturesFragment
4242
import io.homeassistant.companion.android.settings.language.LanguagesProvider
43+
import io.homeassistant.companion.android.settings.license.LicensesFragment
4344
import io.homeassistant.companion.android.settings.notification.NotificationChannelFragment
4445
import io.homeassistant.companion.android.settings.notification.NotificationHistoryFragment
4546
import io.homeassistant.companion.android.settings.qs.ManageTilesFragment
@@ -360,6 +361,14 @@ class SettingsFragment(private val presenter: SettingsPresenter, private val lan
360361
it.summary = BuildConfig.VERSION_NAME
361362
}
362363

364+
findPreference<Preference>("licenses")?.setOnPreferenceClickListener {
365+
parentFragmentManager.commit {
366+
replace(R.id.content, LicensesFragment::class.java, null)
367+
addToBackStack(getString(commonR.string.licenses))
368+
}
369+
return@setOnPreferenceClickListener true
370+
}
371+
363372
findPreference<ListPreference>("languages")?.let {
364373
lifecycleScope.launch {
365374
val languages = langProvider.getSupportedLanguages(requireContext())
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package io.homeassistant.companion.android.settings.license
2+
3+
import android.os.Bundle
4+
import android.view.LayoutInflater
5+
import android.view.View
6+
import android.view.ViewGroup
7+
import androidx.compose.foundation.layout.fillMaxSize
8+
import androidx.compose.material3.Scaffold
9+
import androidx.compose.runtime.Composable
10+
import androidx.compose.runtime.getValue
11+
import androidx.compose.ui.Modifier
12+
import androidx.compose.ui.platform.ComposeView
13+
import androidx.compose.ui.res.stringResource
14+
import androidx.fragment.app.Fragment
15+
import com.mikepenz.aboutlibraries.ui.compose.DefaultChipColors
16+
import com.mikepenz.aboutlibraries.ui.compose.DefaultLibraryColors
17+
import com.mikepenz.aboutlibraries.ui.compose.android.produceLibraries
18+
import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer
19+
import io.homeassistant.companion.android.common.R as commonR
20+
import io.homeassistant.companion.android.common.compose.theme.HATheme
21+
import io.homeassistant.companion.android.common.compose.theme.LocalHAColorScheme
22+
import io.homeassistant.companion.android.util.safeBottomWindowInsets
23+
24+
class LicensesFragment : Fragment() {
25+
26+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
27+
return ComposeView(requireContext()).apply {
28+
setContent {
29+
HATheme {
30+
LicensesContent()
31+
}
32+
}
33+
}
34+
}
35+
36+
override fun onResume() {
37+
super.onResume()
38+
activity?.title = getString(commonR.string.licenses)
39+
}
40+
}
41+
42+
@Composable
43+
private fun LicensesContent() {
44+
val libraries by produceLibraries()
45+
val colorScheme = LocalHAColorScheme.current
46+
Scaffold(
47+
contentWindowInsets = safeBottomWindowInsets(applyHorizontal = false),
48+
) { contentPadding ->
49+
LibrariesContainer(
50+
libraries = libraries,
51+
modifier = Modifier.fillMaxSize(),
52+
contentPadding = contentPadding,
53+
// Override default value to provide translatable string
54+
licenseDialogConfirmText = stringResource(commonR.string.ok),
55+
colors = DefaultLibraryColors(
56+
libraryBackgroundColor = colorScheme.colorSurfaceDefault,
57+
libraryContentColor = colorScheme.colorTextPrimary,
58+
versionChipColors = DefaultChipColors(
59+
containerColor = colorScheme.colorFillNeutralNormalResting,
60+
contentColor = colorScheme.colorOnNeutralNormal,
61+
),
62+
licenseChipColors = DefaultChipColors(
63+
containerColor = colorScheme.colorFillPrimaryNormalResting,
64+
contentColor = colorScheme.colorOnPrimaryNormal,
65+
),
66+
fundingChipColors = DefaultChipColors(
67+
containerColor = colorScheme.colorFillPrimaryNormalResting,
68+
contentColor = colorScheme.colorOnPrimaryNormal,
69+
),
70+
dialogBackgroundColor = colorScheme.colorSurfaceDefault,
71+
dialogContentColor = colorScheme.colorTextPrimary,
72+
dialogConfirmButtonColor = colorScheme.colorOnPrimaryNormal,
73+
),
74+
)
75+
}
76+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:viewportHeight="960" android:viewportWidth="960" android:width="24dp">
2+
3+
<path android:fillColor="@color/colorAccent" android:pathData="M480,520Q430,520 395,485Q360,450 360,400Q360,350 395,315Q430,280 480,280Q530,280 565,315Q600,350 600,400Q600,450 565,485Q530,520 480,520ZM240,920L240,611Q202,569 181,515Q160,461 160,400Q160,266 253,173Q346,80 480,80Q614,80 707,173Q800,266 800,400Q800,461 779,515Q758,569 720,611L720,920L480,840L240,920ZM480,640Q580,640 650,570Q720,500 720,400Q720,300 650,230Q580,160 480,160Q380,160 310,230Q240,300 240,400Q240,500 310,570Q380,640 480,640ZM320,801L480,760L640,801L640,677Q605,697 564.5,708.5Q524,720 480,720Q436,720 395.5,708.5Q355,697 320,677L320,801ZM480,739L480,739Q480,739 480,739Q480,739 480,739Q480,739 480,739Q480,739 480,739L480,739L480,739Z"/>
4+
5+
</vector>

app/src/main/res/xml/preferences.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,11 @@
245245
android:icon="@drawable/ic_stat_ic_notification_blue"
246246
android:title="@string/application_version"
247247
android:summary="1.0.0 (1)"/>
248+
<Preference
249+
android:key="licenses"
250+
android:icon="@drawable/ic_license"
251+
android:title="@string/licenses"
252+
android:summary="@string/licenses_summary"/>
248253
<Preference
249254
android:key="privacy"
250255
android:icon="@drawable/ic_incognito"

automotive/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ plugins {
44
alias(libs.plugins.google.services)
55
alias(libs.plugins.homeassistant.android.dependencies)
66
alias(libs.plugins.kotlin.parcelize)
7+
alias(libs.plugins.aboutlibraries)
78
}
89

910
android {

0 commit comments

Comments
 (0)