diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d509005..8f87ec6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,6 +24,7 @@
tools:targetApi="34">
>>) {
+ apps = newApps.toMutableList()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt
index fe89754..fc2da3b 100644
--- a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt
+++ b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt
@@ -16,7 +16,6 @@ import android.text.TextWatcher
import android.view.GestureDetector
import android.view.MotionEvent
import android.view.View
-import android.view.WindowManager
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import android.widget.LinearLayout
@@ -65,6 +64,8 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
private val swipeThreshold = 100
private val swipeVelocityThreshold = 100
+ var appUpdate = true
+
@SuppressLint("ClickableViewAccessibility")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -120,9 +121,7 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
startTask()
// Keyboard is sometimes open when going back to the app, so close it.
- val imm =
- getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
- imm.hideSoftInputFromWindow(binding.root.windowToken, 0)
+ closeKeyboard()
}
open inner class GestureListener : GestureDetector.SimpleOnGestureListener() {
@@ -187,10 +186,12 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
val newApps = installedApps.toMutableList()
setupRecyclerView(newApps)
+
+ searchView = findViewById(R.id.searchView)
+ setupSearch()
}
- searchView = findViewById(R.id.searchView)
- setupSearch()
+
}
@@ -284,19 +285,20 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
}
private fun setupSearch() {
- binding.root.addOnLayoutChangeListener { _, _, top, _, bottom, _, oldTop, _, oldBottom ->
+ recyclerView.addOnLayoutChangeListener { _, _, top, _, bottom, _, oldTop, _, oldBottom ->
if (bottom - top > oldBottom - oldTop) {
searchView.clearFocus()
if (searchView.text.isNullOrEmpty()) {
- job?.cancel()
startTask()
+ appUpdate = true
}
}
- else {
+ else if (bottom - top < oldBottom - oldTop) {
job?.cancel()
+ appUpdate = false
}
}
@@ -355,6 +357,7 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
}
private fun startTask() {
+ job?.cancel()
job = CoroutineScope(Dispatchers.Default).launch {
while (true) {
refreshAppMenu()
@@ -371,6 +374,8 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
}
fun backToHome() {
+ closeKeyboard()
+ searchView.setText("")
animations.showHome(binding)
animations.backgroundOut(this@MainActivity, binding)
val handler = Handler(Looper.getMainLooper())
@@ -464,6 +469,12 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
}
+ private fun closeKeyboard() {
+ val imm =
+ getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+ imm.hideSoftInputFromWindow(binding.root.windowToken, 0)
+ }
+
private fun detectChanges(oldList: List>>, newList: List>>): List {
val changes = mutableListOf()
val removalChanges = mutableListOf()
@@ -477,6 +488,12 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
if (oldItem.first.componentName != newList[newIndex].first.componentName) {
changes.add(Change(ChangeType.UPDATE, index))
}
+ if (index != newIndex) {
+ if (appUpdate) {
+ changes.add(Change(ChangeType.MOVE, index))
+ appUpdate = false
+ }
+ }
}
}
@@ -500,6 +517,7 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
return changes
}
+ @SuppressLint("NotifyDataSetChanged")
private fun applyChanges(changes: List, updatedApps: List>>) {
changes.forEach { change ->
when (change.type) {
@@ -516,6 +534,14 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
ChangeType.UPDATE -> {
updateItem(change.position, updatedApps[change.position])
}
+
+ ChangeType.MOVE -> {
+ adapter.updateApps(updatedApps)
+ adapter.notifyDataSetChanged()
+ println("moved")
+ appUpdate = true
+ }
+
}
}
}
@@ -538,10 +564,15 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
adapter.moveApp(position, newPosition)
adapter.notifyItemMoved(position, newPosition)
}
+
+ fun updateInstalledApps() {
+ installedApps = appUtils.getInstalledApps(this@MainActivity)
+ appUpdate = true
+ }
}
data class Change(val type: ChangeType, val position: Int, val newPosition: Int = 0)
enum class ChangeType {
- INSERT, REMOVE, UPDATE
+ INSERT, REMOVE, UPDATE, MOVE
}
\ No newline at end of file
diff --git a/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt
index 894877f..f468bfd 100644
--- a/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt
+++ b/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt
@@ -12,6 +12,5 @@ class SettingsActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root)
- window.statusBarColor = getColor(R.color.settings_bg)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/eu/ottop/yamlauncher/WeatherSystem.kt b/app/src/main/java/eu/ottop/yamlauncher/WeatherSystem.kt
new file mode 100644
index 0000000..8d8e316
--- /dev/null
+++ b/app/src/main/java/eu/ottop/yamlauncher/WeatherSystem.kt
@@ -0,0 +1,4 @@
+package eu.ottop.yamlauncher
+
+class WeatherSystem {
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 4b2a354..4985303 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -5,7 +5,6 @@
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/settings_bg"
android:orientation="vertical"
tools:context=".SettingsActivity">
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index 12bbade..cc40175 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -1,9 +1,4 @@
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/values-v23/themes.xml b/app/src/main/res/values-v23/themes.xml
index 8980861..2a710f3 100644
--- a/app/src/main/res/values-v23/themes.xml
+++ b/app/src/main/res/values-v23/themes.xml
@@ -1,10 +1,3 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 7bfbe2b..42f8435 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -4,9 +4,18 @@
- @android:color/transparent
- @android:color/transparent
- true
+ - @android:color/transparent
+ - @android:color/transparent
+ - ?attr/isLightTheme
+ - true
+ - shortEdges
+
+