Browse Source

:bug: Added confirm dialog to remove all button. Fix #39

Beautus 6 years ago
parent
commit
0f9c52a5cb

+ 1 - 1
app/src/main/java/com/sduduzog/slimlauncher/models/AddAppFragmentViewModel.kt → app/src/main/java/com/sduduzog/slimlauncher/models/AddAppViewModel.kt

@@ -7,7 +7,7 @@ import androidx.lifecycle.Observer
 import com.sduduzog.slimlauncher.data.model.App
 import com.sduduzog.slimlauncher.data.model.HomeApp
 
-class AddAppFragmentViewModel(application: Application) : AndroidViewModel(application) {
+class AddAppViewModel(application: Application) : AndroidViewModel(application) {
     private val repository = Repository(application)
     private var filterQuery = ""
     private val _installedApps = mutableListOf<App>()

+ 28 - 0
app/src/main/java/com/sduduzog/slimlauncher/models/CustomiseAppsViewModel.kt

@@ -0,0 +1,28 @@
+package com.sduduzog.slimlauncher.models
+
+import android.app.Application
+import androidx.lifecycle.AndroidViewModel
+import androidx.lifecycle.LiveData
+import com.sduduzog.slimlauncher.data.model.HomeApp
+
+class CustomiseAppsViewModel(application: Application) : AndroidViewModel(application) {
+
+    private val repository = Repository(application)
+    private var _apps: LiveData<List<HomeApp>>
+
+    init {
+        _apps = repository.apps
+    }
+
+    val apps: LiveData<List<HomeApp>>
+        get() = _apps
+
+    fun update(vararg args: HomeApp) {
+        repository.update(*args)
+    }
+
+    fun reset(homeApp: HomeApp) {}
+    fun remove(vararg app: HomeApp) {
+        repository.remove(*app)
+    }
+}

+ 1 - 3
app/src/main/java/com/sduduzog/slimlauncher/data/MainViewModel.kt → app/src/main/java/com/sduduzog/slimlauncher/models/MainViewModel.kt

@@ -1,4 +1,4 @@
-package com.sduduzog.slimlauncher.data
+package com.sduduzog.slimlauncher.models
 
 import android.app.Application
 import androidx.lifecycle.AndroidViewModel
@@ -21,8 +21,6 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
     val apps: LiveData<List<HomeApp>>
         get() = _apps
 
-    val installedApps = MutableLiveData<List<App>>()
-
     fun add(app: App) {
         val index = _apps.value!!.size
         _baseRepository.add(HomeApp.from(app, index))

+ 1 - 1
app/src/main/java/com/sduduzog/slimlauncher/dialogs/ChangeThemeDialog.kt → app/src/main/java/com/sduduzog/slimlauncher/ui/dialogs/ChangeThemeDialog.kt

@@ -1,4 +1,4 @@
-package com.sduduzog.slimlauncher.dialogs
+package com.sduduzog.slimlauncher.ui.dialogs
 
 import android.app.AlertDialog
 import android.app.Dialog

+ 1 - 1
app/src/main/java/com/sduduzog/slimlauncher/dialogs/ChooseTimeFormatDialog.kt → app/src/main/java/com/sduduzog/slimlauncher/ui/dialogs/ChooseTimeFormatDialog.kt

@@ -1,4 +1,4 @@
-package com.sduduzog.slimlauncher.dialogs
+package com.sduduzog.slimlauncher.ui.dialogs
 
 import android.app.AlertDialog
 import android.app.Dialog

+ 35 - 0
app/src/main/java/com/sduduzog/slimlauncher/ui/dialogs/RemoveAllAppsDialog.kt

@@ -0,0 +1,35 @@
+package com.sduduzog.slimlauncher.ui.dialogs
+
+import android.app.AlertDialog
+import android.app.Dialog
+import android.os.Bundle
+import androidx.fragment.app.DialogFragment
+import com.sduduzog.slimlauncher.R
+import com.sduduzog.slimlauncher.data.model.HomeApp
+import com.sduduzog.slimlauncher.models.CustomiseAppsViewModel
+
+class RemoveAllAppsDialog : DialogFragment(){
+
+    private lateinit var apps: List<HomeApp>
+    private lateinit var model: CustomiseAppsViewModel
+
+
+    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+        val builder = AlertDialog.Builder(context!!)
+        builder.setTitle(R.string.remove_all_apps_dialog_title)
+        builder.setMessage(R.string.remove_all_apps_dialog_message)
+        builder.setPositiveButton("OK") {_, _ ->
+            model.remove(*apps.toTypedArray())
+        }
+        return builder.create()
+    }
+
+    companion object{
+        fun getInstance(apps: List<HomeApp>, model: CustomiseAppsViewModel): RemoveAllAppsDialog{
+            return RemoveAllAppsDialog().apply {
+                this.apps = apps
+                this.model = model
+            }
+        }
+    }
+}

+ 4 - 4
app/src/main/java/com/sduduzog/slimlauncher/dialogs/RenameAppDialog.kt → app/src/main/java/com/sduduzog/slimlauncher/ui/dialogs/RenameAppDialog.kt

@@ -1,4 +1,4 @@
-package com.sduduzog.slimlauncher.dialogs
+package com.sduduzog.slimlauncher.ui.dialogs
 
 import android.app.Dialog
 import android.os.Bundle
@@ -8,14 +8,14 @@ import android.widget.Toast
 import androidx.appcompat.app.AlertDialog
 import androidx.fragment.app.DialogFragment
 import com.sduduzog.slimlauncher.R
-import com.sduduzog.slimlauncher.data.MainViewModel
 import com.sduduzog.slimlauncher.data.model.HomeApp
+import com.sduduzog.slimlauncher.models.CustomiseAppsViewModel
 import kotlinx.android.synthetic.main.customise_apps_fragment.*
 
 class RenameAppDialog : DialogFragment() {
 
     private lateinit var app: HomeApp
-    private lateinit var model: MainViewModel
+    private lateinit var model: CustomiseAppsViewModel
 
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
         val view = LayoutInflater.from(context).inflate(R.layout.rename_dialog_edit_text, customise_apps_fragment, false)
@@ -47,7 +47,7 @@ class RenameAppDialog : DialogFragment() {
     }
 
     companion object {
-        fun getInstance(app: HomeApp, model: MainViewModel): RenameAppDialog {
+        fun getInstance(app: HomeApp, model: CustomiseAppsViewModel): RenameAppDialog {
             return RenameAppDialog().apply {
                 this.model = model
                 this.app = app

+ 1 - 1
app/src/main/java/com/sduduzog/slimlauncher/ui/main/HomeFragment.kt

@@ -12,7 +12,7 @@ import androidx.lifecycle.ViewModelProviders
 import androidx.navigation.Navigation
 import com.sduduzog.slimlauncher.R
 import com.sduduzog.slimlauncher.adapters.HomeAdapter
-import com.sduduzog.slimlauncher.data.MainViewModel
+import com.sduduzog.slimlauncher.models.MainViewModel
 import com.sduduzog.slimlauncher.data.model.HomeApp
 import com.sduduzog.slimlauncher.utils.BaseFragment
 import com.sduduzog.slimlauncher.utils.OnLaunchAppListener

+ 3 - 3
app/src/main/java/com/sduduzog/slimlauncher/ui/options/AddAppFragment.kt

@@ -15,7 +15,7 @@ import com.sduduzog.slimlauncher.BuildConfig
 import com.sduduzog.slimlauncher.R
 import com.sduduzog.slimlauncher.adapters.AddAppAdapter
 import com.sduduzog.slimlauncher.data.model.App
-import com.sduduzog.slimlauncher.models.AddAppFragmentViewModel
+import com.sduduzog.slimlauncher.models.AddAppViewModel
 import com.sduduzog.slimlauncher.utils.BaseFragment
 import com.sduduzog.slimlauncher.utils.OnAppClickedListener
 import kotlinx.android.synthetic.main.add_app_fragment.*
@@ -25,7 +25,7 @@ class AddAppFragment : BaseFragment(), OnAppClickedListener {
 
     override fun getFragmentView(): ViewGroup = add_app_fragment
 
-    private lateinit var viewModel: AddAppFragmentViewModel
+    private lateinit var viewModel: AddAppViewModel
 
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
         return inflater.inflate(R.layout.add_app_fragment, container, false)
@@ -38,7 +38,7 @@ class AddAppFragment : BaseFragment(), OnAppClickedListener {
         add_app_fragment_list.adapter = adapter
 
         activity?.let {
-            viewModel = ViewModelProviders.of(it).get(AddAppFragmentViewModel::class.java)
+            viewModel = ViewModelProviders.of(it).get(AddAppViewModel::class.java)
         } ?: throw Error("How the fuck is this fragment alive while there's no activity?")
         viewModel.apps.observe(this, Observer {
             it?.let { apps ->

+ 9 - 7
app/src/main/java/com/sduduzog/slimlauncher/ui/options/CustomiseAppsFragment.kt

@@ -13,9 +13,10 @@ import androidx.recyclerview.widget.ItemTouchHelper
 import androidx.recyclerview.widget.RecyclerView
 import com.sduduzog.slimlauncher.R
 import com.sduduzog.slimlauncher.adapters.CustomAppsAdapter
-import com.sduduzog.slimlauncher.data.MainViewModel
 import com.sduduzog.slimlauncher.data.model.HomeApp
-import com.sduduzog.slimlauncher.dialogs.RenameAppDialog
+import com.sduduzog.slimlauncher.models.CustomiseAppsViewModel
+import com.sduduzog.slimlauncher.ui.dialogs.RemoveAllAppsDialog
+import com.sduduzog.slimlauncher.ui.dialogs.RenameAppDialog
 import com.sduduzog.slimlauncher.utils.BaseFragment
 import com.sduduzog.slimlauncher.utils.OnItemActionListener
 import com.sduduzog.slimlauncher.utils.OnShitDoneToAppsListener
@@ -26,7 +27,7 @@ class CustomiseAppsFragment : BaseFragment(), OnShitDoneToAppsListener {
 
     override fun getFragmentView(): ViewGroup = customise_apps_fragment
 
-    private lateinit var viewModel: MainViewModel
+    private lateinit var viewModel: CustomiseAppsViewModel
 
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
         return inflater.inflate(R.layout.customise_apps_fragment, container, false)
@@ -37,7 +38,7 @@ class CustomiseAppsFragment : BaseFragment(), OnShitDoneToAppsListener {
 
         val adapter = CustomAppsAdapter(this)
         activity?.let {
-            viewModel = ViewModelProviders.of(it).get(MainViewModel::class.java)
+            viewModel = ViewModelProviders.of(it).get(CustomiseAppsViewModel::class.java)
         } ?: throw Error("Activity null, something here is fucked up")
 
         viewModel.apps.observe(this, Observer {
@@ -54,9 +55,7 @@ class CustomiseAppsFragment : BaseFragment(), OnShitDoneToAppsListener {
             } ?: adapter.setItems(listOf())
         })
         customise_apps_fragment_remove_all.setOnClickListener {
-            viewModel.apps.value?.let {
-                viewModel.remove(*it.toTypedArray())
-            }
+            RemoveAllAppsDialog.getInstance(viewModel.apps.value!!, viewModel).show(fragmentManager, "REMOVE_APPS")
         }
 
         customise_apps_fragment_list.adapter = adapter
@@ -126,6 +125,9 @@ class CustomiseAppsFragment : BaseFragment(), OnShitDoneToAppsListener {
                 R.id.ca_menu_remove -> {
                     viewModel.remove(app)
                 }
+                R.id.ca_menu_reset -> {
+                    viewModel.reset(app)
+                }
             }
             true
         }

+ 2 - 2
app/src/main/java/com/sduduzog/slimlauncher/ui/options/OptionsFragment.kt

@@ -11,8 +11,8 @@ import android.view.ViewGroup
 import androidx.core.content.edit
 import androidx.navigation.Navigation
 import com.sduduzog.slimlauncher.R
-import com.sduduzog.slimlauncher.dialogs.ChangeThemeDialog
-import com.sduduzog.slimlauncher.dialogs.ChooseTimeFormatDialog
+import com.sduduzog.slimlauncher.ui.dialogs.ChangeThemeDialog
+import com.sduduzog.slimlauncher.ui.dialogs.ChooseTimeFormatDialog
 import com.sduduzog.slimlauncher.utils.BaseFragment
 import kotlinx.android.synthetic.main.options_fragment.*
 

+ 3 - 0
app/src/main/res/menu/customise_apps_popup_menu.xml

@@ -7,4 +7,7 @@
     <item
         android:id="@+id/ca_menu_remove"
         android:title="@string/menu_remove" />
+    <item
+        android:id="@+id/ca_menu_reset"
+        android:title="@string/menu_reset"/>
 </menu>

+ 1 - 0
app/src/main/res/values-ru/strings.xml

@@ -16,4 +16,5 @@
     <string name="options_fragment_toggle_status_bar">Вкл\\выкл строку состояния</string>
     <string name="options_fragment_hide_status_bar">Скрыть строку состояния</string>
     <string name="options_fragment_show_status_bar">Показать строку состояния</string>
+    <string name="menu_reset">Сброс</string>
 </resources>

+ 1 - 0
app/src/main/res/values-uk/strings.xml

@@ -16,4 +16,5 @@
     <string name="options_fragment_toggle_status_bar">Вкл\\вимк смужку стану</string>
     <string name="options_fragment_hide_status_bar">Сховати рядок стану</string>
     <string name="options_fragment_show_status_bar">Показати рядок стану</string>
+    <string name="menu_reset">Ясно</string>
 </resources>

+ 4 - 0
app/src/main/res/values/strings.xml

@@ -38,5 +38,9 @@
     <string name="choose_theme_dialog_title">Choose Theme</string>
     <string name="add_apps_fragment_search_apps">Search apps</string>
     <string name="customise_apps_fragment_remove_all">Remove all</string>
+    <string name="menu_reset">Reset</string>
+    <string name="remove_all_apps_dialog_title" translatable="false">Remove All Apps</string>
+    <string name="remove_all_apps_dialog_message" translatable="false">"This action will not uninstall your apps."
+    "It is just to confirm if you're clearing this list on purpose"</string>
 
 </resources>