diff --git a/app/src/main/java/eu/ottop/yamlauncher/BatteryReceiver.kt b/app/src/main/java/eu/ottop/yamlauncher/BatteryReceiver.kt index bdc1c3c..f1f68b2 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/BatteryReceiver.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/BatteryReceiver.kt @@ -5,6 +5,8 @@ import android.content.Context import android.content.Intent import android.content.IntentFilter import android.os.BatteryManager +import androidx.lifecycle.lifecycleScope +import kotlinx.coroutines.launch class BatteryReceiver(private val activity: MainActivity) : BroadcastReceiver() { @@ -14,7 +16,6 @@ class BatteryReceiver(private val activity: MainActivity) : BroadcastReceiver() val scale = it.getIntExtra(BatteryManager.EXTRA_SCALE, -1) val batteryPct = level * 100 / scale.toFloat() activity.modifyDate("${batteryPct.toInt()}%", 3) - } } diff --git a/app/src/main/java/eu/ottop/yamlauncher/GestureAppsFragment.kt b/app/src/main/java/eu/ottop/yamlauncher/GestureAppsFragment.kt index f75c10e..7e09004 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/GestureAppsFragment.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/GestureAppsFragment.kt @@ -2,6 +2,7 @@ package eu.ottop.yamlauncher import android.app.AlertDialog import android.content.Context +import android.content.SharedPreferences import android.content.pm.LauncherActivityInfo import android.content.pm.LauncherApps import android.os.Bundle @@ -24,9 +25,9 @@ import kotlinx.coroutines.withContext class GestureAppsFragment : Fragment(), GestureAppsAdapter.OnItemClickListener { private var adapter: GestureAppsAdapter? = null - private val sharedPreferenceManager = SharedPreferenceManager(requireContext()) + private lateinit var sharedPreferenceManager: SharedPreferenceManager private var stringUtils = StringUtils() - private val appUtils = AppUtils(requireContext()) + private lateinit var appUtils: AppUtils private lateinit var launcherApps: LauncherApps override fun onCreateView( @@ -39,6 +40,8 @@ class GestureAppsFragment : Fragment(), GestureAppsAdapter.OnItemClickListener { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + sharedPreferenceManager = SharedPreferenceManager(requireContext()) + appUtils = AppUtils(requireContext()) lifecycleScope.launch { diff --git a/app/src/main/java/eu/ottop/yamlauncher/GestureUtils.kt b/app/src/main/java/eu/ottop/yamlauncher/GestureUtils.kt index 5db15d7..a409766 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/GestureUtils.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/GestureUtils.kt @@ -5,7 +5,6 @@ import android.accessibilityservice.AccessibilityServiceInfo import android.app.AlertDialog import android.content.Context import android.content.Intent -import android.content.SharedPreferences import android.content.pm.LauncherActivityInfo import android.content.pm.LauncherApps import android.content.pm.ServiceInfo @@ -13,10 +12,12 @@ import android.provider.Settings import android.view.accessibility.AccessibilityManager import androidx.appcompat.app.AppCompatActivity.ACCESSIBILITY_SERVICE -class GestureUtils { +class GestureUtils(private val context: Context) { - fun getSwipeInfo(preferences: SharedPreferences, launcherApps: LauncherApps, direction: String): Pair { - val app = preferences.getString("${direction}SwipeApp", "")?.split("§splitter§") + private val sharedPreferenceManager = SharedPreferenceManager(context) + + fun getSwipeInfo(launcherApps: LauncherApps, direction: String): Pair { + val app = sharedPreferenceManager.getGestureInfo(direction) if (app != null) { if (app.size >= 3) @@ -31,7 +32,7 @@ class GestureUtils { return Pair(null, null) } - fun isAccessibilityServiceEnabled(context: Context, service: Class): Boolean { + fun isAccessibilityServiceEnabled(service: Class): Boolean { val am = context.getSystemService(ACCESSIBILITY_SERVICE) as AccessibilityManager val enabledServices = am.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_ALL_MASK) @@ -47,7 +48,7 @@ class GestureUtils { return false } - fun promptEnableAccessibility(context: Context) { + fun promptEnableAccessibility() { AlertDialog.Builder(context).apply { setTitle("Confirmation") setMessage("To lock with double tap, enable YAM Launcher in accessibility settings.") diff --git a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt index 5f99c88..3c7a6c6 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt @@ -48,7 +48,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh private lateinit var appUtils: AppUtils private val stringUtils = StringUtils() private val uiUtils = UIUtils() - private val gestureUtils = GestureUtils() + private lateinit var gestureUtils: GestureUtils private var appActionMenu = AppActionMenu() private val appMenuLinearLayoutManager = AppMenuLinearLayoutManager(this@MainActivity) @@ -118,7 +118,6 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh } setupApps() - } private fun setMainVariables() { @@ -142,6 +141,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh appUtils = AppUtils(this@MainActivity) sharedPreferenceManager = SharedPreferenceManager(this@MainActivity) + gestureUtils = GestureUtils(this@MainActivity) preferences = PreferenceManager.getDefaultSharedPreferences(this) } @@ -161,8 +161,8 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh uiUtils.setStatusBar(window, preferences) - leftSwipeActivity = gestureUtils.getSwipeInfo(preferences, launcherApps, "left") - rightSwipeActivity = gestureUtils.getSwipeInfo(preferences, launcherApps, "right") + leftSwipeActivity = gestureUtils.getSwipeInfo(launcherApps, "left") + rightSwipeActivity = gestureUtils.getSwipeInfo(launcherApps, "right") } private fun setShortcuts() { @@ -338,11 +338,11 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh } "leftSwipeApp" -> { - leftSwipeActivity = gestureUtils.getSwipeInfo(preferences, launcherApps, "left") + leftSwipeActivity = gestureUtils.getSwipeInfo(launcherApps, "left") } "rightSwipeApp" -> { - rightSwipeActivity = gestureUtils.getSwipeInfo(preferences, launcherApps, "right") + rightSwipeActivity = gestureUtils.getSwipeInfo(launcherApps, "right") } "battery_enabled" -> { @@ -446,7 +446,9 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh } } else { - modifyDate("", 2) + withContext(Dispatchers.Main) { + modifyDate("", 2) + } } } } @@ -742,7 +744,6 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh override fun onDoubleTap(e: MotionEvent): Boolean { if (preferences.getBoolean("doubleTap", false)) { if (gestureUtils.isAccessibilityServiceEnabled( - this@MainActivity, ScreenLockService::class.java ) ) { @@ -750,7 +751,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh intent.action = "LOCK_SCREEN" startService(intent) } else { - gestureUtils.promptEnableAccessibility(this@MainActivity) + gestureUtils.promptEnableAccessibility() } } diff --git a/app/src/main/java/eu/ottop/yamlauncher/SettingsFragment.kt b/app/src/main/java/eu/ottop/yamlauncher/SettingsFragment.kt index 4aa327e..f8b6afc 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/SettingsFragment.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/SettingsFragment.kt @@ -26,8 +26,8 @@ class SettingsFragment : PreferenceFragmentCompat() { val hiddenPref = findPreference("hidden_apps") manualLocationPref?.summary = sharedPreferenceManager.getWeatherRegion() - leftSwipePref?.summary = sharedPreferenceManager.getGestureName(requireContext(), "left") - rightSwipePref?.summary = sharedPreferenceManager.getGestureName(requireContext(), "right") + leftSwipePref?.summary = sharedPreferenceManager.getGestureName("left") + rightSwipePref?.summary = sharedPreferenceManager.getGestureName("right") if (gpsLocationPref != null && manualLocationPref != null) { // Initial setup @@ -71,14 +71,12 @@ class SettingsFragment : PreferenceFragmentCompat() { setFragmentResultListener("request_key") { _, bundle -> clearFragmentResultListener("request_key") val result = bundle.getString("gesture_app") - val appDetails = result?.split("§splitter§") - if (leftSwipePref != null && result != null) { - setPreference("leftSwipeApp", result) - } + sharedPreferenceManager.setGestures( - "left", appDetails?.get(0) + "left", result ) - val appName = appDetails?.get(0) + + val appName = sharedPreferenceManager.getGestureName("left") leftSwipePref?.summary = appName } true } @@ -93,14 +91,12 @@ class SettingsFragment : PreferenceFragmentCompat() { setFragmentResultListener("request_key") { _, bundle -> clearFragmentResultListener("request_key") val result = bundle.getString("gesture_app") - val appDetails = result?.split("§splitter§") - if (rightSwipePref != null && result != null) { - setPreference("rightSwipeApp", result) - } + sharedPreferenceManager.setGestures( - "right", appDetails?.get(0) + "right", result ) - val appName = appDetails?.get(0) + + val appName = sharedPreferenceManager.getGestureName("right") rightSwipePref?.summary = appName } true } @@ -119,15 +115,4 @@ class SettingsFragment : PreferenceFragmentCompat() { super.onResume() manualLocationPref?.summary = sharedPreferenceManager.getWeatherRegion() } - - private fun setPreference(key: String, value: String) { - // Get the SharedPreferences instance - val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()) - - // Edit the SharedPreferences to update the value - with(sharedPreferences.edit()) { - putString(key, value) - apply() - } - } } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt b/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt index 5b3ae26..398f29c 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt @@ -2,7 +2,6 @@ package eu.ottop.yamlauncher import android.content.Context import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.preference.PreferenceManager class SharedPreferenceManager (context: Context) { @@ -81,15 +80,19 @@ class SharedPreferenceManager (context: Context) { fun setGestures(direction: String, appName: String?) { val editor = preferences.edit() - val nameKey = "$direction-name" + val nameKey = "${direction}SwipeApp" editor.putString(nameKey, appName) editor.apply() } + fun getGestureName(direction: String) : String? { + val key = "${direction}SwipeApp" + val name = preferences.getString(key, "")?.split("§splitter§") + return name?.get(0) + } - fun getGestureName(cont: Context, direction: String) : String? { - val key = "$direction-name" - return preferences.getString(key, "") + fun getGestureInfo(direction: String) : List? { + return preferences.getString("${direction}SwipeApp", "")?.split("§splitter§") } } \ No newline at end of file