diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 805e8eb..e6296b5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -27,7 +27,6 @@
android:exported="true" >
-
diff --git a/app/src/main/java/net/helcel/beendroid/activity/AboutFragment.kt b/app/src/main/java/net/helcel/beendroid/activity/AboutFragment.kt
index 1f9bffd..0001d9c 100644
--- a/app/src/main/java/net/helcel/beendroid/activity/AboutFragment.kt
+++ b/app/src/main/java/net/helcel/beendroid/activity/AboutFragment.kt
@@ -5,7 +5,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
-import net.helcel.beendroid.R
import net.helcel.beendroid.databinding.FragmentAboutBinding
class AboutFragment: Fragment() {
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 44581de..379bbb2 100644
--- a/app/src/main/java/net/helcel/beendroid/activity/FoldingListAdapter.kt
+++ b/app/src/main/java/net/helcel/beendroid/activity/FoldingListAdapter.kt
@@ -4,17 +4,13 @@ import android.content.Context
import android.graphics.Color
import android.graphics.Typeface
import android.graphics.drawable.ColorDrawable
-import android.util.Log
import android.util.TypedValue
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.ImageView
import android.widget.TextView
-import androidx.appcompat.content.res.AppCompatResources.getDrawable
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
-import com.google.android.material.button.MaterialButton
import com.google.android.material.checkbox.MaterialCheckBox
import net.helcel.beendroid.R
import net.helcel.beendroid.countries.GeoLoc
@@ -43,10 +39,7 @@ class FoldingListAdapter(
override fun onBindViewHolder(holder: FoldingListViewHolder, position: Int) {
val el = cg.toList()[position]
- holder.bind(el) {
- notifyItemChanged(position)
- parentLambda()
- }
+ holder.bind(el) { parentLambda() }
holder.addListeners( {
if (!el.first.isEnd) {
@@ -67,25 +60,16 @@ class FoldingListAdapter(
class FoldingListViewHolder(private val ctx: Context, itemView: View,
private val visited: Visited,
) : RecyclerView.ViewHolder(itemView) {
- private val textView: TextView
- //private val expand: MaterialButton
- private val checkBox: MaterialCheckBox
- private val subItemView: View
- private val list: RecyclerView
-
+ private val textView: TextView = itemView.findViewById(R.id.textView)
+ private val checkBox: MaterialCheckBox = itemView.findViewById(R.id.checkBox)
+ private val subItemView: View = itemView.findViewById(R.id.sub_item)
+ private val list: RecyclerView = itemView.findViewById(R.id.list_list)
init {
- textView = itemView.findViewById(R.id.textView)
- //expand = itemView.findViewById(R.id.expand)
- checkBox = itemView.findViewById(R.id.checkBox)
- subItemView = itemView.findViewById(R.id.sub_item)
- list = itemView.findViewById(R.id.list_list)
list.layoutManager = LinearLayoutManager(ctx, RecyclerView.VERTICAL, false)
}
fun bind(el: Pair, parentLambda: () -> Unit) {
- //expand.rotation = if(el.second) 90f else 0f
subItemView.visibility = if (el.second) View.VISIBLE else View.GONE
- //expand.visibility = if(!el.first.isEnd) View.VISIBLE else View.INVISIBLE
textView.text = el.first.fullName
if (el.first.type == LocType.GROUP) {
@@ -95,15 +79,9 @@ class FoldingListAdapter(
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())
- checkBox.visibility = View.INVISIBLE
+ list.adapter = FoldingListAdapter(ctx, el.first.children,visited, parentLambda)
+ textView.parent.parent.requestChildFocus(textView,textView)
- el.first.children.apply {
- val nbCountries = this.size
- val nbVisited = this.map { if (visited.visited(it)) 1 else 0 }.reduce{ a, b -> (a + b) }
- val ratio = nbVisited.toFloat() / nbCountries.toFloat()
- val percentage = (ratio * 100).toInt()
- textView.text = "${textView.text as String} (${percentage}%)"
- }
} else {
val colorBackgroundTyped = TypedValue()
ctx.theme.resolveAttribute(android.R.attr.colorBackground, colorBackgroundTyped, true)
@@ -114,7 +92,6 @@ class FoldingListAdapter(
val layoutParam = checkBox.layoutParams
layoutParam.width = 125
checkBox.layoutParams = layoutParam
-
checkBox.visibility = View.VISIBLE
}
checkBox.checkedState =
@@ -122,19 +99,13 @@ class FoldingListAdapter(
else if (el.first.children.any { visited.visited(it) }) MaterialCheckBox.STATE_INDETERMINATE
else MaterialCheckBox.STATE_UNCHECKED
- textView.parent.parent.requestChildFocus(textView,textView)
- list.adapter = FoldingListAdapter(ctx, el.first.children,visited, parentLambda)
}
fun addListeners(expandLambda: ()->Boolean, visitedLambda: (Boolean)->Unit) {
-
textView.setOnClickListener { expandLambda() }
checkBox.addOnCheckedStateChangedListener { _, e ->
visitedLambda(e == MaterialCheckBox.STATE_CHECKED)
}
-
- //textView.setOnLongClickListener{ checkBox.toggle(); true }
- //expand.setOnClickListener { expandLambda() }
}
}
diff --git a/app/src/main/java/net/helcel/beendroid/activity/LicenseFragment.kt b/app/src/main/java/net/helcel/beendroid/activity/LicenseFragment.kt
index b1ad05f..ee964e9 100644
--- a/app/src/main/java/net/helcel/beendroid/activity/LicenseFragment.kt
+++ b/app/src/main/java/net/helcel/beendroid/activity/LicenseFragment.kt
@@ -2,13 +2,9 @@ package net.helcel.beendroid.activity
import android.os.Bundle
import android.view.LayoutInflater
-import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
-import androidx.appcompat.app.ActionBar
-import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.Fragment
-import com.mikepenz.aboutlibraries.Libs
import net.helcel.beendroid.R
import net.helcel.beendroid.databinding.FragmentLicenseBinding
import com.mikepenz.aboutlibraries.LibsBuilder
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 853cea5..5bb5699 100644
--- a/app/src/main/java/net/helcel/beendroid/activity/MainActivity.kt
+++ b/app/src/main/java/net/helcel/beendroid/activity/MainActivity.kt
@@ -1,13 +1,12 @@
package net.helcel.beendroid.activity
+import kotlinx.coroutines.*
import android.content.Intent
import android.content.SharedPreferences
import android.graphics.Bitmap
import android.graphics.Canvas
-import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
-import android.util.Log
import android.util.TypedValue
import android.view.Menu
import android.view.MenuInflater
@@ -37,6 +36,8 @@ class MainActivity : AppCompatActivity() {
private lateinit var psvg : PSVGWrapper
private lateinit var css : CSSWrapper
+ private var processor: ImageProcessor = ImageProcessor({ refreshMapCompute() },{ refreshMapDisplay(it) })
+
private val bitmap: Bitmap = Bitmap.createBitmap(1200,900, Bitmap.Config.ARGB_8888)
private val canvas = Canvas(bitmap)
@@ -64,6 +65,10 @@ class MainActivity : AppCompatActivity() {
// TODO: Enable editing selected countries
true
}
+ R.id.action_stats -> {
+ // TODO: Write stats activity
+ true
+ }
R.id.action_settings -> {
// Open settings
startActivity(Intent(this@MainActivity, SettingsActivity::class.java))
@@ -89,24 +94,45 @@ class MainActivity : AppCompatActivity() {
setContentView(R.layout.activity_main)
map = findViewById(R.id.map)
map.setImageBitmap(bitmap)
- refreshMap()
+ refreshMapDisplay(refreshMapCompute())
// Populate list below the map
list = findViewById(R.id.list)
list.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
- list.adapter = FoldingListAdapter(this, World.WWW.children, visited) { refreshMap() }
+ list.adapter = FoldingListAdapter(this, World.WWW.children, visited) { processor.process() }
}
- private fun refreshMap(){
+ private fun refreshMapDisplay(css_value: String){
// Set or reset background (replaces canvas.drawColor(0, 0, 0))
val colorBackgroundTyped = TypedValue()
theme.resolveAttribute(android.R.attr.colorBackground, colorBackgroundTyped, true)
canvas.drawColor(colorBackgroundTyped.data)
// Render all countries and visited ones
- psvg.getFill().renderToCanvas(canvas, RenderOptions.create().css(css.get()))
+ psvg.getFill().renderToCanvas(canvas, RenderOptions.create().css(css_value))
// Render all contours in the same color as the background to make them much clearer
psvg.getDraw().renderToCanvas(canvas)
}
+
+ private fun refreshMapCompute() : String {
+ return css.get()
+ }
+
+
+
+ class ImageProcessor(private val refreshMapCompute: ()->String, private val refreshMapDisplay: (String)->Unit) {
+
+ private var currentJob : Job? = null
+ fun process() {
+ currentJob?.cancel()
+ currentJob = CoroutineScope(Dispatchers.Main).launch {
+ try {
+ refreshMapDisplay(refreshMapCompute())
+ } catch (_: CancellationException) {
+ }
+ }
+ }
+ }
+
}
\ No newline at end of file
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 693f6ab..e06fba4 100644
--- a/app/src/main/java/net/helcel/beendroid/activity/SettingsActivity.kt
+++ b/app/src/main/java/net/helcel/beendroid/activity/SettingsActivity.kt
@@ -1,14 +1,10 @@
package net.helcel.beendroid.activity
import android.graphics.drawable.ColorDrawable
-import android.content.Intent
import android.os.Bundle
-import android.os.PersistableBundle
import android.util.TypedValue
import android.view.MenuItem
-import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatActivity
-import androidx.navigation.findNavController
import net.helcel.beendroid.R
class SettingsActivity: AppCompatActivity() {
diff --git a/app/src/main/java/net/helcel/beendroid/activity/SettingsFragment.kt b/app/src/main/java/net/helcel/beendroid/activity/SettingsFragment.kt
index 7746282..6378e15 100644
--- a/app/src/main/java/net/helcel/beendroid/activity/SettingsFragment.kt
+++ b/app/src/main/java/net/helcel/beendroid/activity/SettingsFragment.kt
@@ -1,9 +1,7 @@
package net.helcel.beendroid.activity
import android.content.Context
-import android.graphics.drawable.ColorDrawable
import android.os.Bundle
-import android.util.TypedValue
import androidx.appcompat.app.AppCompatDelegate
import androidx.preference.ListPreference
import androidx.preference.Preference
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 e95e26e..1ad9312 100644
--- a/app/src/main/java/net/helcel/beendroid/svg/CSSWrapper.kt
+++ b/app/src/main/java/net/helcel/beendroid/svg/CSSWrapper.kt
@@ -1,6 +1,5 @@
package net.helcel.beendroid.svg
-import android.util.TypedValue
import net.helcel.beendroid.countries.Visited
import net.helcel.beendroid.countries.World
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 8471add..46bc8ee 100644
--- a/app/src/main/java/net/helcel/beendroid/svg/PSVGWrapper.kt
+++ b/app/src/main/java/net/helcel/beendroid/svg/PSVGWrapper.kt
@@ -1,12 +1,8 @@
package net.helcel.beendroid.svg
import android.content.Context
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.util.Log
import android.util.TypedValue
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
diff --git a/app/src/main/res/layout/item_list.xml b/app/src/main/res/layout/item_list.xml
index b5f2bfa..c370cae 100644
--- a/app/src/main/res/layout/item_list.xml
+++ b/app/src/main/res/layout/item_list.xml
@@ -1,7 +1,6 @@
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index 1bdac49..a4d5745 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -10,10 +10,17 @@
android:visible="false"
android:title="@string/action_edit"
app:showAsAction="ifRoom" />
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/en.xml b/app/src/main/res/values/en.xml
index e82a8ab..3dc5f7d 100644
--- a/app/src/main/res/values/en.xml
+++ b/app/src/main/res/values/en.xml
@@ -3,6 +3,7 @@
BeenDroid
1.0
Settings
+ Stats
Edit
Welcome!
Change language