diff options
| author | Tanuj M <thetanuj@hotmail.com> | 2020-07-14 13:46:54 +0530 |
|---|---|---|
| committer | Tanuj M <thetanuj@hotmail.com> | 2020-07-14 13:46:54 +0530 |
| commit | d24d3794ff6a0cfc2d69b08a67ff907ea7c92213 (patch) | |
| tree | 00fe311b886c5a6035a7d0ea26c12c870d208841 /app | |
| parent | fb321416bfcb6901b240b6ea6fdba0485b2abe7a (diff) | |
| download | SidePhOnelauncher-d24d3794ff6a0cfc2d69b08a67ff907ea7c92213.tar.gz SidePhOnelauncher-d24d3794ff6a0cfc2d69b08a67ff907ea7c92213.tar.bz2 SidePhOnelauncher-d24d3794ff6a0cfc2d69b08a67ff907ea7c92213.zip | |
Refactoring: moved some logic from view to viewmodel
Diffstat (limited to 'app')
| -rw-r--r-- | app/src/main/AndroidManifest.xml | 1 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/AppListFragment.kt | 3 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/MainFragment.kt | 50 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/MainViewModel.kt | 51 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/MyApp.kt | 7 |
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 |
