Skip to content

Commit c060e9c

Browse files
Implement AMOLED theme with black background (#549)
* Implement AMOLED theme with black background * Rename "AMOLED" theme to "Black" * Define the color black in colors.xml * Add the new theme to unit tests * Extend SettingsTest.kt to test all themes as well as an invalid ordinal --------- Co-authored-by: VREM Software Development <vremsoftwaredevelopment@gmail.com>
1 parent 7f0dbf2 commit c060e9c

8 files changed

Lines changed: 74 additions & 4 deletions

File tree

app/build.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#Build Properties
2-
#Sat Jul 19 09:27:24 EDT 2025
3-
version_build=14
2+
#Mon Jul 21 18:30:25 CEST 2025
3+
version_build=18
44
version_major=3
55
version_minor=2
66
version_patch=1

app/src/main/kotlin/com/vrem/wifianalyzer/settings/ThemeStyle.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ import com.vrem.wifianalyzer.R
2525
enum class ThemeStyle(@param:StyleRes val theme: Int, @param:StyleRes val themeNoActionBar: Int, @param:ColorInt val colorGraphText: Int) {
2626
DARK(R.style.ThemeDark, R.style.ThemeDarkNoActionBar, Color.WHITE),
2727
LIGHT(R.style.ThemeLight, R.style.ThemeLightNoActionBar, Color.BLACK),
28+
BLACK(R.style.ThemeBlack, R.style.ThemeBlackNoActionBar, Color.WHITE),
2829
SYSTEM(R.style.ThemeSystem, R.style.ThemeSystemNoActionBar, Color.GRAY);
2930
}

app/src/main/res/values/arrays.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,13 @@
100100
<item>0</item>
101101
<item>1</item>
102102
<item>2</item>
103+
<item>3</item>
103104
</string-array>
104105

105106
<string-array name="theme_array">
106107
<item>@string/theme_dark</item>
107108
<item>@string/theme_light</item>
109+
<item>@string/theme_black</item>
108110
<item>@string/theme_system</item>
109111
</string-array>
110112

app/src/main/res/values/colors.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,6 @@
4040
<color name="success">#4CAF50</color>
4141
<!-- background -->
4242
<color name="background">#616161</color>
43+
<!-- black -->
44+
<color name="black">#000000</color>
4345
</resources>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@
148148
<string name="theme_default" translatable="false">"0"</string>
149149
<string name="theme_dark">"Dark"</string>
150150
<string name="theme_light">"Light"</string>
151+
<string name="theme_black">"Black"</string>
151152
<string name="theme_system">"System"</string>
152153

153154
<string name="wifi_off_on_exit_title">"Wi-Fi off on Exit"</string>

app/src/main/res/values/styles.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,19 @@
3838
<item name="windowNoTitle">true</item>
3939
</style>
4040

41+
<style name="ThemeBlack" parent="Theme.AppCompat">
42+
<item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
43+
<item name="android:actionMenuTextColor">@color/selected</item>
44+
<item name="android:windowBackground">@color/black</item>
45+
<item name="colorPrimary">@color/black</item>
46+
47+
</style>
48+
49+
<style name="ThemeBlackNoActionBar" parent="ThemeBlack">
50+
<item name="windowActionBar">false</item>
51+
<item name="windowNoTitle">true</item>
52+
</style>
53+
4154
<style name="ThemeSystem" parent="Theme.AppCompat.DayNight.DarkActionBar">
4255
<item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
4356
<item name="android:actionMenuTextColor">@color/selected</item>

app/src/test/kotlin/com/vrem/wifianalyzer/settings/SettingsTest.kt

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,19 @@ class SettingsTest {
159159
}
160160

161161
@Test
162-
fun themeStyle() {
162+
fun themeStyleDark() {
163+
// setup
164+
doReturn(ThemeStyle.DARK.ordinal)
165+
.whenever(repository).stringAsInteger(R.string.theme_key, ThemeStyle.DARK.ordinal)
166+
// execute
167+
val actual = fixture.themeStyle()
168+
// validate
169+
assertThat(actual).isEqualTo(ThemeStyle.DARK)
170+
verify(repository).stringAsInteger(R.string.theme_key, ThemeStyle.DARK.ordinal)
171+
}
172+
173+
@Test
174+
fun themeStyleLight() {
163175
// setup
164176
doReturn(ThemeStyle.LIGHT.ordinal)
165177
.whenever(repository).stringAsInteger(R.string.theme_key, ThemeStyle.DARK.ordinal)
@@ -170,6 +182,42 @@ class SettingsTest {
170182
verify(repository).stringAsInteger(R.string.theme_key, ThemeStyle.DARK.ordinal)
171183
}
172184

185+
@Test
186+
fun themeStyleBlack() {
187+
// setup
188+
doReturn(ThemeStyle.BLACK.ordinal)
189+
.whenever(repository).stringAsInteger(R.string.theme_key, ThemeStyle.DARK.ordinal)
190+
// execute
191+
val actual = fixture.themeStyle()
192+
// validate
193+
assertThat(actual).isEqualTo(ThemeStyle.BLACK)
194+
verify(repository).stringAsInteger(R.string.theme_key, ThemeStyle.DARK.ordinal)
195+
}
196+
197+
@Test
198+
fun themeStyleSystem() {
199+
// setup
200+
doReturn(ThemeStyle.SYSTEM.ordinal)
201+
.whenever(repository).stringAsInteger(R.string.theme_key, ThemeStyle.DARK.ordinal)
202+
// execute
203+
val actual = fixture.themeStyle()
204+
// validate
205+
assertThat(actual).isEqualTo(ThemeStyle.SYSTEM)
206+
verify(repository).stringAsInteger(R.string.theme_key, ThemeStyle.DARK.ordinal)
207+
}
208+
209+
@Test
210+
fun themeStyleInvalid() {
211+
// setup
212+
doReturn(ThemeStyle.entries.size)
213+
.whenever(repository).stringAsInteger(R.string.theme_key, ThemeStyle.DARK.ordinal)
214+
// execute
215+
val actual = fixture.themeStyle()
216+
// validate
217+
assertThat(actual).isEqualTo(ThemeStyle.DARK)
218+
verify(repository).stringAsInteger(R.string.theme_key, ThemeStyle.DARK.ordinal)
219+
}
220+
173221
@Test
174222
fun channelGraphLegend() {
175223
// setup

app/src/test/kotlin/com/vrem/wifianalyzer/settings/ThemeStyleTest.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,30 @@ import org.junit.Test
2525
class ThemeStyleTest {
2626
@Test
2727
fun themeStyle() {
28-
assertThat(ThemeStyle.entries).hasSize(3)
28+
assertThat(ThemeStyle.entries).hasSize(4)
2929
}
3030

3131
@Test
3232
fun theme() {
3333
assertThat(ThemeStyle.LIGHT.theme).isEqualTo(R.style.ThemeLight)
3434
assertThat(ThemeStyle.DARK.theme).isEqualTo(R.style.ThemeDark)
35+
assertThat(ThemeStyle.BLACK.theme).isEqualTo(R.style.ThemeBlack)
3536
assertThat(ThemeStyle.SYSTEM.theme).isEqualTo(R.style.ThemeSystem)
3637
}
3738

3839
@Test
3940
fun themeNoActionBar() {
4041
assertThat(ThemeStyle.DARK.themeNoActionBar).isEqualTo(R.style.ThemeDarkNoActionBar)
4142
assertThat(ThemeStyle.LIGHT.themeNoActionBar).isEqualTo(R.style.ThemeLightNoActionBar)
43+
assertThat(ThemeStyle.BLACK.themeNoActionBar).isEqualTo(R.style.ThemeBlackNoActionBar)
4244
assertThat(ThemeStyle.SYSTEM.themeNoActionBar).isEqualTo(R.style.ThemeSystemNoActionBar)
4345
}
4446

4547
@Test
4648
fun colorGraphText() {
4749
assertThat(ThemeStyle.DARK.colorGraphText).isEqualTo(Color.WHITE)
4850
assertThat(ThemeStyle.LIGHT.colorGraphText).isEqualTo(Color.BLACK)
51+
assertThat(ThemeStyle.BLACK.colorGraphText).isEqualTo(Color.WHITE)
4952
assertThat(ThemeStyle.SYSTEM.colorGraphText).isEqualTo(Color.GRAY)
5053
}
5154

0 commit comments

Comments
 (0)