summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorTanuj M <thetanuj@hotmail.com>2020-07-14 13:46:54 +0530
committerTanuj M <thetanuj@hotmail.com>2020-07-14 13:46:54 +0530
commitd24d3794ff6a0cfc2d69b08a67ff907ea7c92213 (patch)
tree00fe311b886c5a6035a7d0ea26c12c870d208841 /app/src
parentfb321416bfcb6901b240b6ea6fdba0485b2abe7a (diff)
downloadSidePhOnelauncher-d24d3794ff6a0cfc2d69b08a67ff907ea7c92213.tar.gz
SidePhOnelauncher-d24d3794ff6a0cfc2d69b08a67ff907ea7c92213.tar.bz2
SidePhOnelauncher-d24d3794ff6a0cfc2d69b08a67ff907ea7c92213.zip
Refactoring: moved some logic from view to viewmodel
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/AndroidManifest.xml1
-rw-r--r--app/src/main/java/app/olauncher/AppListFragment.kt3
-rw-r--r--app/src/main/java/app/olauncher/MainFragment.kt50
-rw-r--r--app/src/main/java/app/olauncher/MainViewModel.kt51
-rw-r--r--app/src/main/java/app/olauncher/MyApp.kt7
5 files changed, 74 insertions, 38 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2e29c3b..b0a516f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<application
+ android:name=".MyApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
diff --git a/app/src/main/java/app/olauncher/AppListFragment.kt b/app/src/main/java/app/olauncher/AppListFragment.kt
index 08887ae..1efb4b4 100644
--- a/app/src/main/java/app/olauncher/AppListFragment.kt
+++ b/app/src/main/java/app/olauncher/AppListFragment.kt
@@ -12,6 +12,7 @@ import android.view.inputmethod.InputMethodManager
import androidx.appcompat.widget.SearchView
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
+import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.fragment_app.*
@@ -78,11 +79,13 @@ class AppListFragment : Fragment() {
(appModel: AppModel) -> Unit =
{ appModel ->
viewModel.selectedApp(appModel, flag)
+ findNavController().popBackStack()
}
private fun appLongPressListener(): (appModel: AppModel) -> Unit =
{ appModel ->
openAppInfo(appModel.appPackage)
+ findNavController().popBackStack()
}
private fun openAppInfo(packageName: String) {
diff --git a/app/src/main/java/app/olauncher/MainFragment.kt b/app/src/main/java/app/olauncher/MainFragment.kt
index cd4d142..61013ed 100644
--- a/app/src/main/java/app/olauncher/MainFragment.kt
+++ b/app/src/main/java/app/olauncher/MainFragment.kt
@@ -69,39 +69,26 @@ class MainFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
}
private fun initObservers() {
- viewModel.selectedApp.observe(viewLifecycleOwner, Observer<AppModelWithFlag> {
- when (it.flag) {
- Constants.FLAG_LAUNCH_APP -> {
- launchApp(it.appModel.appPackage)
- }
- Constants.FLAG_SET_HOME_APP_1 -> {
- prefs.appName1 = it.appModel.appLabel
- prefs.appPackage1 = it.appModel.appPackage
- }
- Constants.FLAG_SET_HOME_APP_2 -> {
- prefs.appName2 = it.appModel.appLabel
- prefs.appPackage2 = it.appModel.appPackage
- }
- Constants.FLAG_SET_HOME_APP_3 -> {
- prefs.appName3 = it.appModel.appLabel
- prefs.appPackage3 = it.appModel.appPackage
- }
- Constants.FLAG_SET_HOME_APP_4 -> {
- prefs.appName4 = it.appModel.appLabel
- prefs.appPackage4 = it.appModel.appPackage
- }
- }
+ viewModel.refreshHome.observe(viewLifecycleOwner, Observer<Any> {
initUi()
})
}
override fun onClick(view: View) {
when (view.id) {
- R.id.homeApp1 -> if (prefs.appPackage1.isEmpty()) onLongClick(view) else launchApp(prefs.appPackage1)
- R.id.homeApp2 -> if (prefs.appPackage2.isEmpty()) onLongClick(view) else launchApp(prefs.appPackage2)
- R.id.homeApp3 -> if (prefs.appPackage3.isEmpty()) onLongClick(view) else launchApp(prefs.appPackage3)
- R.id.homeApp4 -> if (prefs.appPackage4.isEmpty()) onLongClick(view) else launchApp(prefs.appPackage4)
- R.id.setDefaultLauncher -> openDefaultAppsSetting()
+ R.id.homeApp1 -> if (prefs.appPackage1.isEmpty()) onLongClick(view)
+ else launchAppEvent(prefs.appName1, prefs.appPackage1)
+
+ R.id.homeApp2 -> if (prefs.appPackage2.isEmpty()) onLongClick(view)
+ else launchAppEvent(prefs.appName2, prefs.appPackage2)
+
+ R.id.homeApp3 -> if (prefs.appPackage3.isEmpty()) onLongClick(view)
+ else launchAppEvent(prefs.appName3, prefs.appPackage3)
+
+ R.id.homeApp4 -> if (prefs.appPackage4.isEmpty()) onLongClick(view)
+ else launchAppEvent(prefs.appName4, prefs.appPackage4)
+
+ R.id.setDefaultLauncher -> showLauncherAppChooser()
}
}
@@ -122,11 +109,8 @@ class MainFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
)
}
- private fun launchApp(packageName: String) {
- val pm = context?.packageManager
- val intent: Intent? = pm?.getLaunchIntentForPackage(packageName)
- intent?.addCategory(Intent.CATEGORY_LAUNCHER)
- startActivity(intent)
+ private fun launchAppEvent(appName: String, packageName: String) {
+ viewModel.selectedApp(AppModel(appName, packageName), Constants.FLAG_LAUNCH_APP)
}
// Source: https://stackoverflow.com/a/51132142
@@ -161,7 +145,7 @@ class MainFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
}
}
- private fun openDefaultAppsSetting() {
+ private fun showLauncherAppChooser() {
resetDefaultLauncher(requireContext())
val intent = Intent(Intent.ACTION_MAIN, null)
intent.addCategory(Intent.CATEGORY_HOME)
diff --git a/app/src/main/java/app/olauncher/MainViewModel.kt b/app/src/main/java/app/olauncher/MainViewModel.kt
index b8353c7..badd0af 100644
--- a/app/src/main/java/app/olauncher/MainViewModel.kt
+++ b/app/src/main/java/app/olauncher/MainViewModel.kt
@@ -1,13 +1,54 @@
package app.olauncher
+import android.app.Application
+import android.content.Intent
+import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.MutableLiveData
-import androidx.lifecycle.ViewModel
-class MainViewModel : ViewModel() {
- val selectedApp = MutableLiveData<AppModelWithFlag>()
+class MainViewModel(application: Application) : AndroidViewModel(application) {
+ private val appContext = application.applicationContext
+ private val prefs = Prefs(appContext)
- fun selectedApp(app: AppModel, flag: Int) {
- selectedApp.value = AppModelWithFlag(app, flag)
+ private val selectedApp = MutableLiveData<AppModelWithFlag>()
+ val refreshHome = MutableLiveData<Any>()
+
+ fun selectedApp(appModel: AppModel, flag: Int) {
+ when (flag) {
+ Constants.FLAG_LAUNCH_APP -> {
+ launchApp(appModel.appPackage)
+ }
+ Constants.FLAG_SET_HOME_APP_1 -> {
+ prefs.appName1 = appModel.appLabel
+ prefs.appPackage1 = appModel.appPackage
+ refreshHome(true)
+ }
+ Constants.FLAG_SET_HOME_APP_2 -> {
+ prefs.appName2 = appModel.appLabel
+ prefs.appPackage2 = appModel.appPackage
+ refreshHome(true)
+ }
+ Constants.FLAG_SET_HOME_APP_3 -> {
+ prefs.appName3 = appModel.appLabel
+ prefs.appPackage3 = appModel.appPackage
+ refreshHome(true)
+ }
+ Constants.FLAG_SET_HOME_APP_4 -> {
+ prefs.appName4 = appModel.appLabel
+ prefs.appPackage4 = appModel.appPackage
+ refreshHome(true)
+ }
+ }
+ selectedApp.value = AppModelWithFlag(appModel, flag)
+ }
+
+ private fun refreshHome(value: Any) {
+ refreshHome.value = value
+ }
+
+ private fun launchApp(packageName: String) {
+ val intent: Intent? = appContext.packageManager.getLaunchIntentForPackage(packageName)
+ intent?.addCategory(Intent.CATEGORY_LAUNCHER)
+ appContext.startActivity(intent)
}
}
diff --git a/app/src/main/java/app/olauncher/MyApp.kt b/app/src/main/java/app/olauncher/MyApp.kt
new file mode 100644
index 0000000..a81a5e3
--- /dev/null
+++ b/app/src/main/java/app/olauncher/MyApp.kt
@@ -0,0 +1,7 @@
+package app.olauncher
+
+import android.app.Application
+
+class MyApp : Application() {
+
+} \ No newline at end of file