From 2b94b563502eda695c5f8eb09a8dc2b234f38769 Mon Sep 17 00:00:00 2001 From: Daniele Verducci Date: Sun, 10 Nov 2024 11:08:03 +0100 Subject: [PATCH] Sync button, prevented concurrent sync --- .../lunatracker/MainActivity.kt | 14 ++++++++++ app/src/main/res/drawable/ic_sync.xml | 5 ++++ app/src/main/res/layout/activity_main.xml | 28 +++++++++++++++++-- app/src/main/res/values/strings.xml | 1 + 4 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/drawable/ic_sync.xml diff --git a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt index 8613502..3d6df55 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt @@ -35,6 +35,7 @@ class MainActivity : AppCompatActivity() { lateinit var progressIndicator: LinearProgressIndicator lateinit var recyclerView: RecyclerView lateinit var handler: Handler + var savingEvent = false val updateListRunnable: Runnable = Runnable { loadLogbook() handler.postDelayed(updateListRunnable, 1000*60) @@ -92,6 +93,12 @@ class MainActivity : AppCompatActivity() { findViewById(R.id.button_settings).setOnClickListener({ showSettings() }) + findViewById(R.id.button_no_connection_retry).setOnClickListener({ + loadLogbook() + }) + findViewById(R.id.button_sync).setOnClickListener({ + loadLogbook() + }) } fun showSettings() { @@ -167,12 +174,16 @@ class MainActivity : AppCompatActivity() { } fun loadLogbook() { + if (savingEvent) + return + // Load data progressIndicator.visibility = View.VISIBLE logbookRepo.loadLogbook(this, object: LogbookLoadedListener{ override fun onLogbookLoaded(lb: Logbook) { runOnUiThread({ progressIndicator.visibility = View.INVISIBLE + findViewById(R.id.no_connection_screen).visibility = View.GONE logbook = lb showLogbook() }) @@ -192,6 +203,7 @@ class MainActivity : AppCompatActivity() { } fun logEvent(event: LunaEvent) { + savingEvent = true adapter.items.add(0, event) adapter.notifyItemInserted(0) recyclerView.smoothScrollToPosition(0) @@ -205,6 +217,7 @@ class MainActivity : AppCompatActivity() { progressIndicator.visibility = View.INVISIBLE Toast.makeText(this@MainActivity, R.string.toast_event_added, Toast.LENGTH_SHORT).show() + savingEvent = false }) } @@ -216,6 +229,7 @@ class MainActivity : AppCompatActivity() { Toast.makeText(this@MainActivity, R.string.toast_event_add_error, Toast.LENGTH_SHORT).show() adapter.items.remove(event) adapter.notifyDataSetChanged() + savingEvent = false }) } diff --git a/app/src/main/res/drawable/ic_sync.xml b/app/src/main/res/drawable/ic_sync.xml new file mode 100644 index 0000000..a3180f8 --- /dev/null +++ b/app/src/main/res/drawable/ic_sync.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c2faa5c..3aad3af 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -151,10 +151,19 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" - android:layout_gravity="right" + android:layout_gravity="end" android:src="@drawable/ic_settings" app:tint="@color/grey"/> + + +