From 64efa8c15ea30db8bbc396c9045869825074ebde Mon Sep 17 00:00:00 2001 From: partisan Date: Wed, 14 May 2025 19:00:25 +0200 Subject: [PATCH] This is so cute --- .../weforge/xyz/pulse/MainFragment.kt | 27 +++++++++++++++---- app/src/main/res/layout/fragment_main.xml | 6 +++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/partisan/weforge/xyz/pulse/MainFragment.kt b/app/src/main/java/partisan/weforge/xyz/pulse/MainFragment.kt index f819ae8..90b53ca 100644 --- a/app/src/main/java/partisan/weforge/xyz/pulse/MainFragment.kt +++ b/app/src/main/java/partisan/weforge/xyz/pulse/MainFragment.kt @@ -1,16 +1,22 @@ package partisan.weforge.xyz.pulse import android.os.Bundle -import android.util.Log +import android.os.SystemClock import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import com.google.android.material.button.MaterialButton +import nl.dionsegijn.konfetti.core.Party +import nl.dionsegijn.konfetti.core.Position +import nl.dionsegijn.konfetti.core.emitter.Emitter +import nl.dionsegijn.konfetti.xml.KonfettiView +import java.util.concurrent.TimeUnit class MainFragment : Fragment() { private lateinit var prefs: Preferences + private var lastConfettiTime = 0L override fun onCreateView( inflater: LayoutInflater, @@ -21,6 +27,8 @@ class MainFragment : Fragment() { prefs = Preferences(requireContext()) val toggle = view.findViewById(R.id.toggle) + val konfetti = view.findViewById(R.id.confettiView) + toggle.isCheckable = true toggle.isChecked = prefs.isServiceEnabledByUser @@ -29,10 +37,19 @@ class MainFragment : Fragment() { val isNowChecked = toggle.isChecked prefs.isServiceEnabledByUser = isNowChecked - // Log.d("ButtonState", """ - // User toggle: $isNowChecked - // Prefs effective state (hasPerms): ${prefs.isEnabled} - // """.trimIndent()) + if (isNowChecked && SystemClock.elapsedRealtime() - lastConfettiTime > 500) { + konfetti.start( + Party( + emitter = Emitter(duration = 100, TimeUnit.MILLISECONDS).perSecond(100), + speed = 30f, + maxSpeed = 40f, + damping = 0.85f, + spread = 360, + position = Position.Relative(0.5, 0.5) + ) + ) + lastConfettiTime = SystemClock.elapsedRealtime() + } toggle.post { toggle.jumpDrawablesToCurrentState() diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 943850b..86b4dee 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -4,6 +4,12 @@ android:layout_height="match_parent" android:gravity="center"> + +