diff --git a/app/build.gradle b/app/build.gradle
index 6006048..c2d66b2 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,6 +52,7 @@ dependencies {
implementation 'com.caverock:androidsvg-aar:1.4'
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
+ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
implementation 'com.mikepenz:aboutlibraries:10.10.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 41249f9..41fd8c9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -30,6 +30,13 @@
+
+
+
+
+
diff --git a/app/src/main/java/net/helcel/beendroid/activity/EditActivity.kt b/app/src/main/java/net/helcel/beendroid/activity/EditActivity.kt
index 73b8445..bc2b996 100644
--- a/app/src/main/java/net/helcel/beendroid/activity/EditActivity.kt
+++ b/app/src/main/java/net/helcel/beendroid/activity/EditActivity.kt
@@ -6,35 +6,24 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import net.helcel.beendroid.R
-import net.helcel.beendroid.activity.fragment.AboutFragment
-import net.helcel.beendroid.activity.fragment.LicenseFragment
-import net.helcel.beendroid.activity.fragment.SettingsFragment
-import net.helcel.beendroid.countries.Visited
import net.helcel.beendroid.countries.World
-import net.helcel.beendroid.helper.colorPrimary
+import net.helcel.beendroid.helper.createActionBar
+import net.helcel.beendroid.helper.visited
class EditActivity : AppCompatActivity() {
private lateinit var list : RecyclerView
- private lateinit var visited : Visited
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_edit)
-
- // Create action bar
- supportActionBar?.setBackgroundDrawable(colorPrimary(this))
- supportActionBar?.title = getString(R.string.action_edit)
- supportActionBar?.setDisplayHomeAsUpEnabled(true)
-
- visited = Visited(this)
- visited.load()
+ createActionBar(this, getString(R.string.action_edit))
list = findViewById(R.id.list)
list.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
- list.adapter = FoldingListAdapter(this, World.WWW.children, visited) { }
+ list.adapter = FoldingListAdapter(this, World.WWW.children, visited!!)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
diff --git a/app/src/main/java/net/helcel/beendroid/activity/FoldingListAdapter.kt b/app/src/main/java/net/helcel/beendroid/activity/FoldingListAdapter.kt
index 6d9ebae..45878ef 100644
--- a/app/src/main/java/net/helcel/beendroid/activity/FoldingListAdapter.kt
+++ b/app/src/main/java/net/helcel/beendroid/activity/FoldingListAdapter.kt
@@ -1,10 +1,7 @@
package net.helcel.beendroid.activity
import android.content.Context
-import android.graphics.Color
import android.graphics.Typeface
-import android.graphics.drawable.ColorDrawable
-import android.util.TypedValue
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -15,16 +12,17 @@ import com.google.android.material.checkbox.MaterialCheckBox
import net.helcel.beendroid.R
import net.helcel.beendroid.countries.GeoLoc
import net.helcel.beendroid.countries.Visited
+import net.helcel.beendroid.helper.colorBackground
+import net.helcel.beendroid.helper.colorPanelBackground
import java.util.*
class FoldingListAdapter(
private val ctx: Context, l: List,
private val visited: Visited,
- private val parentLambda: () -> Unit,
) : RecyclerView.Adapter() {
- private var cg : MutableMap = l.sortedBy { it.fullName }.fold(LinkedHashMap()) { acc, e ->
+ private val cg : MutableMap = l.sortedBy { it.fullName }.fold(LinkedHashMap()) { acc, e ->
acc[e] = false
acc
}
@@ -38,8 +36,8 @@ class FoldingListAdapter(
override fun onBindViewHolder(holder: FoldingListViewHolder, position: Int) {
val el = cg.toList()[position]
- holder.bind(el) { parentLambda() }
+ holder.bind(el)
holder.addListeners( {
if (!el.first.isEnd) {
cg[el.first] = !el.second
@@ -48,7 +46,6 @@ class FoldingListAdapter(
!el.first.isEnd
}, {
visited.setVisited(el.first, it)
- parentLambda()
})
}
@@ -66,47 +63,32 @@ class FoldingListAdapter(
private val list: RecyclerView = itemView.findViewById(R.id.list_list)
init {
list.layoutManager = LinearLayoutManager(ctx, RecyclerView.VERTICAL, false)
+ list.setItemAnimator(null) //TODO: Fix slow recycler expansion
+ //list.setHasFixedSize(true)
}
- fun bind(el: Pair, parentLambda: () -> Unit) {
+ fun bind(el: Pair) {
subItemView.visibility = if (el.second) View.VISIBLE else View.GONE
textView.text = el.first.fullName
if (el.first.children.isEmpty()) {
- val colorBackgroundTyped = TypedValue()
- ctx.theme.resolveAttribute(
- android.R.attr.colorBackground,
- colorBackgroundTyped,
- true
- )
+
textView.backgroundTintList = null
- textView.background = ColorDrawable(colorBackgroundTyped.data)
+ textView.background = colorBackground(ctx)
textView.isActivated = false
}else {
textView.setTypeface(null, Typeface.BOLD)
- progressView.text = "${(el.first.children.map { visited.visited(it) }.count { it })}/${el.first.children.size}"
+ progressView.text = ctx.getString(R.string.rate,(el.first.children.map { visited.getVisited(it) }.count { it }),el.first.children.size)
- val colorGrayTyped = TypedValue()
- ctx.theme.resolveAttribute(
- android.R.attr.panelColorBackground,
- colorGrayTyped,
- true
- )
- val color = Color.valueOf(colorGrayTyped.data)
- textView.setBackgroundColor(
- Color.valueOf(
- color.red(),
- color.green(),
- color.blue(),
- 0.5f
- ).toArgb()
- )
- list.adapter = FoldingListAdapter(ctx, el.first.children, visited, parentLambda)
+ textView.background = colorPanelBackground(ctx)
+ textView.background.alpha = 128
+
+ list.adapter = FoldingListAdapter(ctx, el.first.children, visited)
textView.parent.parent.requestChildFocus(textView, textView)
}
checkBox.checkedState =
- if (visited.visited(el.first)) MaterialCheckBox.STATE_CHECKED
- else if (el.first.children.any { visited.visited(it) }) MaterialCheckBox.STATE_INDETERMINATE
+ if (visited.getVisited(el.first)) MaterialCheckBox.STATE_CHECKED
+ else if (el.first.children.any { visited.getVisited(it) }) MaterialCheckBox.STATE_INDETERMINATE
else MaterialCheckBox.STATE_UNCHECKED
}
diff --git a/app/src/main/java/net/helcel/beendroid/activity/MainActivity.kt b/app/src/main/java/net/helcel/beendroid/activity/MainActivity.kt
index 3383d05..3e07e32 100644
--- a/app/src/main/java/net/helcel/beendroid/activity/MainActivity.kt
+++ b/app/src/main/java/net/helcel/beendroid/activity/MainActivity.kt
@@ -2,9 +2,9 @@ package net.helcel.beendroid.activity
import android.content.Intent
import android.content.SharedPreferences
-import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.PictureDrawable
import android.os.Bundle
+import android.util.Log
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
@@ -31,7 +31,6 @@ class MainActivity : AppCompatActivity() {
private lateinit var photoView : PhotoView
- private lateinit var visited : Visited
private lateinit var psvg : PSVGWrapper
private lateinit var css : CSSWrapper
@@ -63,11 +62,10 @@ class MainActivity : AppCompatActivity() {
true
}
R.id.action_stats -> {
- // TODO: Write stats activity
+ startActivity(Intent(this@MainActivity, StatActivity::class.java))
true
}
R.id.action_settings -> {
- // Open settings
startActivity(Intent(this@MainActivity, SettingsActivity::class.java))
true
}
@@ -80,11 +78,12 @@ class MainActivity : AppCompatActivity() {
})
// Restore visited countries
- visited = Visited(this)
+ visited = Visited(this).load()
+
// Wrap lists of countries
psvg = PSVGWrapper(this)
- css = CSSWrapper(visited)
+ css = CSSWrapper(visited!!)
// Populate map from list of countries
setContentView(R.layout.activity_main)
@@ -97,12 +96,10 @@ class MainActivity : AppCompatActivity() {
}
private fun refreshMap() {
- visited.load()
val opt : RenderOptions = RenderOptions.create()
CoroutineScope(Dispatchers.IO).launch {
opt.css(css.get())
}
- photoView.setImageLevel(1)
photoView.setImageDrawable(PictureDrawable(psvg.get().renderToPicture(opt)))
}
diff --git a/app/src/main/java/net/helcel/beendroid/activity/SettingsActivity.kt b/app/src/main/java/net/helcel/beendroid/activity/SettingsActivity.kt
index 4cd9ef4..61323c6 100644
--- a/app/src/main/java/net/helcel/beendroid/activity/SettingsActivity.kt
+++ b/app/src/main/java/net/helcel/beendroid/activity/SettingsActivity.kt
@@ -14,13 +14,8 @@ class SettingsActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- // Bind activity to XML layout with fragment view
setContentView(R.layout.activity_settings)
-
- // Create action bar
- supportActionBar?.setBackgroundDrawable(colorPrimary(this))
- supportActionBar?.title = getString(R.string.action_settings)
- supportActionBar?.setDisplayHomeAsUpEnabled(true)
+ createActionBar(this, getString(R.string.action_settings))
// Populate activity with settings fragment
supportFragmentManager.beginTransaction()
diff --git a/app/src/main/java/net/helcel/beendroid/activity/StatActivity.kt b/app/src/main/java/net/helcel/beendroid/activity/StatActivity.kt
new file mode 100644
index 0000000..582a269
--- /dev/null
+++ b/app/src/main/java/net/helcel/beendroid/activity/StatActivity.kt
@@ -0,0 +1,127 @@
+package net.helcel.beendroid.activity
+
+import android.graphics.Color
+import android.os.Bundle
+import android.util.Log
+import android.view.MenuItem
+import androidx.appcompat.app.AppCompatActivity
+import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.PieChart
+import com.github.mikephil.charting.components.Legend
+import com.github.mikephil.charting.data.PieData
+import com.github.mikephil.charting.data.PieDataSet
+import com.github.mikephil.charting.data.PieEntry
+import com.github.mikephil.charting.formatter.PercentFormatter
+import com.github.mikephil.charting.utils.ColorTemplate
+import com.github.mikephil.charting.utils.MPPointF
+import net.helcel.beendroid.R
+import net.helcel.beendroid.countries.World
+import net.helcel.beendroid.helper.createActionBar
+import net.helcel.beendroid.helper.visited
+
+
+class StatActivity : AppCompatActivity() {
+
+ private lateinit var chart : PieChart
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ setContentView(R.layout.activity_stat)
+ createActionBar(this, getString(R.string.action_stat))
+
+
+ chart = findViewById(R.id.chart)
+ chart.setUsePercentValues(true)
+ chart.description.isEnabled = false
+ chart.setExtraOffsets(5F, 10F, 5F, 5F)
+
+ chart.setDragDecelerationFrictionCoef(0.95f)
+
+ chart.centerText = "Country Area"
+
+ chart.isDrawHoleEnabled = true
+ chart.setTransparentCircleColor(Color.TRANSPARENT)
+ chart.setHoleColor(Color.TRANSPARENT)
+ chart.setCenterTextColor(Color.WHITE)
+ chart.setTransparentCircleAlpha(0)
+ chart.holeRadius = 40F
+ chart.transparentCircleRadius = 45F
+ chart.setDrawCenterText(true)
+ chart.setRotationAngle(0F)
+ chart.isRotationEnabled = true
+ chart.isHighlightPerTapEnabled = false
+
+
+
+ // chart.spin(2000, 0, 360);
+ val l: Legend = chart.legend
+ l.verticalAlignment = Legend.LegendVerticalAlignment.TOP
+ l.horizontalAlignment = Legend.LegendHorizontalAlignment.RIGHT
+ l.orientation = Legend.LegendOrientation.VERTICAL
+ l.setDrawInside(false)
+ l.xEntrySpace = 7F
+ l.yEntrySpace = 0F
+ l.yOffset = 0F
+
+ chart.setEntryLabelColor(Color.WHITE)
+ chart.setEntryLabelTextSize(12f)
+
+ bind()
+ }
+
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ finish()
+ return super.onOptionsItemSelected(item)
+ }
+
+
+ private fun bind() {
+ val entries = ArrayList()
+ val VIS_continents = World.WWW.children.groupBy { visited!!.getVisited(it) }.map { Pair(it.key,it.value.map { c-> c.area }.fold(0){acc,i-> acc+i}) }
+ val VIS_country = World.WWW.children.map { it.children }.flatten().groupBy { visited!!.getVisited(it) }.map { Pair(it.key,it.value.map { c-> c.area }.fold(0){acc,i-> acc+i}) }
+ val vis = VIS_country
+ Log.d("VIS",vis.toString())
+ val max = vis.fold(0,) {acc, i -> acc+i.second}
+ vis.forEach {
+ entries.add(PieEntry(it.second.toFloat().div(max.toFloat()),it.first.toString()))
+ }
+ val dataSet = PieDataSet(entries, "GG1")
+
+ dataSet.valueTextColor = Color.BLACK
+ dataSet.sliceSpace = 3f
+ dataSet.iconsOffset = MPPointF(0f, 40f)
+ dataSet.selectionShift = 5f
+
+ // add a lot of colors
+ val colors = ArrayList()
+
+ for (c in ColorTemplate.VORDIPLOM_COLORS) colors.add(c)
+
+ for (c in ColorTemplate.JOYFUL_COLORS) colors.add(c)
+
+ for (c in ColorTemplate.COLORFUL_COLORS) colors.add(c)
+
+ for (c in ColorTemplate.LIBERTY_COLORS) colors.add(c)
+
+ for (c in ColorTemplate.PASTEL_COLORS) colors.add(c)
+
+ colors.add(ColorTemplate.getHoloBlue())
+
+ dataSet.colors = colors
+
+ val data = PieData(dataSet)
+ data.setDrawValues(false)
+ data.setValueFormatter(PercentFormatter())
+ data.setValueTextSize(11f)
+ data.setValueTextColor(Color.BLACK)
+ chart.setEntryLabelColor(Color.BLACK)
+ chart.data = data
+ chart.highlightValues(null)
+ chart.invalidate()
+ }
+
+
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/helcel/beendroid/countries/Visited.kt b/app/src/main/java/net/helcel/beendroid/countries/Visited.kt
index 4436fb4..50c33cd 100644
--- a/app/src/main/java/net/helcel/beendroid/countries/Visited.kt
+++ b/app/src/main/java/net/helcel/beendroid/countries/Visited.kt
@@ -11,8 +11,7 @@ class Visited(ctx: Context) {
private val pref = ctx.getSharedPreferences("Visited", Context.MODE_PRIVATE)
private val editor = pref.edit()
- fun load() {
-
+ fun load(): Visited {
Group.entries.forEach {
locs[it] = pref.getBoolean(it.code, false)
}
@@ -23,9 +22,10 @@ class Visited(ctx: Context) {
locs[it] = pref.getBoolean(it.code, false)
}
editor.apply()
+ return this
}
- fun setVisited(key: GeoLoc, b: Boolean){
+ fun setVisited(key: GeoLoc, b: Boolean) {
locs[key] = b
CoroutineScope(Dispatchers.Main).launch {
editor.putBoolean(key.code, b)
@@ -33,7 +33,7 @@ class Visited(ctx: Context) {
}
}
- fun visited(key: GeoLoc): Boolean {
+ fun getVisited(key: GeoLoc): Boolean {
return locs.getOrDefault(key,false)
}
diff --git a/app/src/main/java/net/helcel/beendroid/helper/Data.kt b/app/src/main/java/net/helcel/beendroid/helper/Data.kt
new file mode 100644
index 0000000..6c5157b
--- /dev/null
+++ b/app/src/main/java/net/helcel/beendroid/helper/Data.kt
@@ -0,0 +1,7 @@
+package net.helcel.beendroid.helper
+
+import net.helcel.beendroid.countries.Visited
+
+
+var visited : Visited? = null
+//= Visited(this)
diff --git a/app/src/main/java/net/helcel/beendroid/helper/Theme.kt b/app/src/main/java/net/helcel/beendroid/helper/Theme.kt
index b836acb..02486ce 100644
--- a/app/src/main/java/net/helcel/beendroid/helper/Theme.kt
+++ b/app/src/main/java/net/helcel/beendroid/helper/Theme.kt
@@ -3,11 +3,28 @@ package net.helcel.beendroid.helper
import android.content.Context
import android.graphics.drawable.ColorDrawable
import android.util.TypedValue
+import androidx.appcompat.app.AppCompatActivity
-
-
-fun colorPrimary(ctx : Context): ColorDrawable {
+fun colorWrapper(ctx : Context, res: Int): ColorDrawable {
val colorPrimaryTyped = TypedValue()
- ctx.theme.resolveAttribute(android.R.attr.colorPrimary, colorPrimaryTyped, true)
+ ctx.theme.resolveAttribute(res, colorPrimaryTyped, true)
return ColorDrawable(colorPrimaryTyped.data)
}
+
+fun colorPrimary(ctx : Context): ColorDrawable {
+ return colorWrapper(ctx, android.R.attr.colorPrimary)
+}
+
+fun colorBackground(ctx : Context): ColorDrawable {
+ return colorWrapper(ctx, android.R.attr.colorBackground)
+}
+
+fun colorPanelBackground(ctx: Context): ColorDrawable {
+ return colorWrapper(ctx, android.R.attr.panelColorBackground)
+}
+
+fun createActionBar(ctx: AppCompatActivity, title: String) {
+ ctx.supportActionBar?.setBackgroundDrawable(colorPrimary(ctx))
+ ctx.supportActionBar?.title = title
+ ctx.supportActionBar?.setDisplayHomeAsUpEnabled(true)
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/helcel/beendroid/svg/CSSWrapper.kt b/app/src/main/java/net/helcel/beendroid/svg/CSSWrapper.kt
index 1ad9312..33e96a8 100644
--- a/app/src/main/java/net/helcel/beendroid/svg/CSSWrapper.kt
+++ b/app/src/main/java/net/helcel/beendroid/svg/CSSWrapper.kt
@@ -9,13 +9,13 @@ class CSSWrapper(private val visited: Visited) {
fun get() : String {
return listOf(World.WWW.children
- .filter { visited.visited(it)}
+ .filter { visited.getVisited(it)}
.map { ".${it.code}{fill:$colorPrimary;}"}
.fold(""){acc, s-> acc + s},
World.WWW.children
- .filter { !visited.visited(it) }
+ .filter { !visited.getVisited(it) }
.map { cg -> cg.children
- .filter { visited.visited(it) }
+ .filter { visited.getVisited(it) }
.map { ".${it.code}{fill:$colorPrimary;}"}
.fold(""){acc, s-> acc + s}
}.fold(""){acc,s->acc+s},
diff --git a/app/src/main/java/net/helcel/beendroid/svg/PSVGWrapper.kt b/app/src/main/java/net/helcel/beendroid/svg/PSVGWrapper.kt
index 5350c27..6ddb8b2 100644
--- a/app/src/main/java/net/helcel/beendroid/svg/PSVGWrapper.kt
+++ b/app/src/main/java/net/helcel/beendroid/svg/PSVGWrapper.kt
@@ -1,30 +1,24 @@
package net.helcel.beendroid.svg
import android.content.Context
-import android.util.TypedValue
+import android.util.Log
import com.caverock.androidsvg.SVG
+import net.helcel.beendroid.R
import net.helcel.beendroid.countries.Country
import net.helcel.beendroid.countries.GeoLoc
import net.helcel.beendroid.countries.World
+import net.helcel.beendroid.helper.colorWrapper
+@OptIn(ExperimentalStdlibApi::class)
class PSVGWrapper(ctx: Context) {
private val cm = HashMap()
private var fm = ""
- private val colorForeground: String
- private val colorBackground: String
+ private val colorForeground: String = colorWrapper(ctx, R.color.darkgray).color.toHexString().substring(2)
+ private val colorBackground: String = colorWrapper(ctx, R.color.black).color.toHexString().substring(2)
init {
- val colorSecondaryTyped = TypedValue()
- ctx.theme.resolveAttribute(android.R.attr.panelColorBackground, colorSecondaryTyped, true)
- colorForeground = "\"#${Integer.toHexString(colorSecondaryTyped.data).subSequence(2, 8)}\""
-
- val colorBackgroundTyped = TypedValue()
- ctx.theme.resolveAttribute(android.R.attr.colorBackground, colorBackgroundTyped, true)
- colorBackground = "\"#${Integer.toHexString(colorBackgroundTyped.data).subSequence(2, 8)}\""
-
-
Country.entries.forEach {
cm[it] = PSVGLoader(ctx, it, Level.ZERO).load()
}
@@ -45,7 +39,7 @@ class PSVGWrapper(ctx: Context) {
}
fun get(): SVG {
- return SVG.getFromString("")
+ return SVG.getFromString("")
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
index c92c40d..756360c 100644
--- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -6,7 +6,7 @@
android:viewportHeight="1600" >
diff --git a/app/src/main/res/drawable/chevron.xml b/app/src/main/res/drawable/chevron.xml
index 6d21775..488b005 100644
--- a/app/src/main/res/drawable/chevron.xml
+++ b/app/src/main/res/drawable/chevron.xml
@@ -4,6 +4,6 @@
android:viewportWidth="320"
android:viewportHeight="512">
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
index 01d1b63..7f86e93 100644
--- a/app/src/main/res/drawable/ic_launcher_background.xml
+++ b/app/src/main/res/drawable/ic_launcher_background.xml
@@ -5,6 +5,6 @@
android:viewportWidth="960"
android:viewportHeight="960">
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index f8d81bb..80305a2 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,6 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index 19bb106..bd65510 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -14,7 +14,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orderInCategory="100"
- android:title="@string/action_stats"
+ android:title="@string/action_stat"
app:showAsAction="never" />
-
- #FFBB86FC
- #FF6200EE
- #FF3700B3
- #FF03AFFF
- #FF0187FF
- #FFFFDD00
#FF000000
- #FF555555
- #FFBBBBBB
+ #FF0C1D2E
+ #FF93A9BE
+ #FF3193F5
#FFFFFFFF
diff --git a/app/src/main/res/values/en.xml b/app/src/main/res/values/en.xml
index 3dc5f7d..e78542a 100644
--- a/app/src/main/res/values/en.xml
+++ b/app/src/main/res/values/en.xml
@@ -3,7 +3,7 @@
BeenDroid
1.0
Settings
- Stats
+ Stats
Edit
Welcome!
Change language
@@ -13,6 +13,7 @@
Dark
Licenses
About
+ %1$d/%2$d
BeenDroid is free and open source software, licensed under the GNU General Public License (version 3 or later)
Project repository: https://git.helcel.net/helcel/beendroid\n Feel free to report issues or contribute to the project.
Free and open source dependencies and licenses
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 377d487..4f86374 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,11 +1,9 @@