diff options
| author | Blaster4385 <[email protected]> | 2026-06-24 09:29:38 +0530 |
|---|---|---|
| committer | Blaster4385 <[email protected]> | 2026-06-24 09:29:38 +0530 |
| commit | ccfcf0aa811e507245eee0aded08b16ef8b93c28 (patch) | |
| tree | 09d21c7dfe6243cfea331cb46cec16a730cc8bf9 | |
| parent | 7575f1c5938223386fce5c4b7e626a51f8d99d3e (diff) | |
feat: added app launcher in settings
5 files changed, 86 insertions, 1 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7491cfe..fdbde85 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,13 @@ <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> + <queries> + <intent> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent> + </queries> + <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" 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() { diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 0080429..7361bb9 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -127,4 +127,9 @@ app:summary="@string/sensor_battery_summary" app:dependency="mqtt_enabled" /> + <Preference + android:key="app_launcher" + app:title="App Launcher" + app:summary="Launch installed applications" /> + </PreferenceScreen>
\ No newline at end of file |