aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorBlaster4385 <[email protected]>2026-06-24 09:29:38 +0530
committerBlaster4385 <[email protected]>2026-06-24 09:29:38 +0530
commitccfcf0aa811e507245eee0aded08b16ef8b93c28 (patch)
tree09d21c7dfe6243cfea331cb46cec16a730cc8bf9 /app/src/main/java
parent7575f1c5938223386fce5c4b7e626a51f8d99d3e (diff)
feat: added app launcher in settings
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/dev/tablaster/dashpanel/AppLauncherFragment.kt51
-rw-r--r--app/src/main/java/dev/tablaster/dashpanel/SettingsActivity.kt8
-rw-r--r--app/src/main/java/dev/tablaster/dashpanel/SettingsFragment.kt16
3 files changed, 74 insertions, 1 deletions
diff --git a/app/src/main/java/dev/tablaster/dashpanel/AppLauncherFragment.kt b/app/src/main/java/dev/tablaster/dashpanel/AppLauncherFragment.kt
new file mode 100644
index 0000000..f689b36
--- /dev/null
+++ b/app/src/main/java/dev/tablaster/dashpanel/AppLauncherFragment.kt
@@ -0,0 +1,51 @@
+package dev.tablaster.dashpanel
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import androidx.preference.Preference
+import androidx.preference.PreferenceCategory
+import androidx.preference.PreferenceFragmentCompat
+import com.google.android.material.appbar.MaterialToolbar
+
+class AppLauncherFragment : PreferenceFragmentCompat() {
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ requireActivity().findViewById<MaterialToolbar>(R.id.settings_toolbar)?.title = "App Launcher"
+ }
+
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+ val context = preferenceManager.context
+ val screen = preferenceManager.createPreferenceScreen(context)
+
+ val category = PreferenceCategory(context).apply {
+ title = "Installed Applications"
+ }
+ screen.addPreference(category)
+
+ val packageManager = requireContext().packageManager
+ val intent = Intent(Intent.ACTION_MAIN, null).apply {
+ addCategory(Intent.CATEGORY_LAUNCHER)
+ }
+ val appList = packageManager.queryIntentActivities(intent, 0)
+
+ appList.sortedBy { it.loadLabel(packageManager).toString().lowercase() }.forEach { app ->
+ val appPreference = Preference(context).apply {
+ title = app.loadLabel(packageManager)
+ icon = app.loadIcon(packageManager)
+
+ setOnPreferenceClickListener {
+ val launchIntent = packageManager.getLaunchIntentForPackage(app.activityInfo.packageName)
+ launchIntent?.let {
+ startActivity(it)
+ }
+ true
+ }
+ }
+ category.addPreference(appPreference)
+ }
+
+ preferenceScreen = screen
+ }
+} \ No newline at end of file
diff --git a/app/src/main/java/dev/tablaster/dashpanel/SettingsActivity.kt b/app/src/main/java/dev/tablaster/dashpanel/SettingsActivity.kt
index d326cd7..18aacf6 100644
--- a/app/src/main/java/dev/tablaster/dashpanel/SettingsActivity.kt
+++ b/app/src/main/java/dev/tablaster/dashpanel/SettingsActivity.kt
@@ -11,7 +11,13 @@ class SettingsActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
val toolbar : MaterialToolbar = findViewById(R.id.settings_toolbar)
- toolbar.setNavigationOnClickListener{ openMain() }
+ toolbar.setNavigationOnClickListener {
+ if (supportFragmentManager.backStackEntryCount > 0) {
+ supportFragmentManager.popBackStack()
+ } else {
+ openMain()
+ }
+ }
supportFragmentManager
.beginTransaction()
.replace(R.id.settings_container, SettingsFragment())
diff --git a/app/src/main/java/dev/tablaster/dashpanel/SettingsFragment.kt b/app/src/main/java/dev/tablaster/dashpanel/SettingsFragment.kt
index fe86dfe..c93f0e4 100644
--- a/app/src/main/java/dev/tablaster/dashpanel/SettingsFragment.kt
+++ b/app/src/main/java/dev/tablaster/dashpanel/SettingsFragment.kt
@@ -1,19 +1,35 @@
package dev.tablaster.dashpanel
import android.os.Bundle
+import android.view.View
import android.widget.Toast
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.core.content.edit
+import com.google.android.material.appbar.MaterialToolbar
class SettingsFragment : PreferenceFragmentCompat(), SettingsPassCodeFragment.PasscodeListener {
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ requireActivity().findViewById<MaterialToolbar>(R.id.settings_toolbar)?.title = "Settings"
+ }
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences, rootKey)
findPreference<Preference>("settings_passcode")?.setOnPreferenceClickListener {
SettingsPassCodeFragment().show(childFragmentManager, "settingsPasscodeDialog")
true
}
+
+ findPreference<Preference>("app_launcher")?.setOnPreferenceClickListener {
+ parentFragmentManager.beginTransaction()
+ .replace(R.id.settings_container, AppLauncherFragment())
+ .addToBackStack(null)
+ .commit()
+ true
+ }
}
+
override fun onPasscodeSet(passcode: Int) {
preferenceManager.sharedPreferences
?.edit() {