diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsAdapter.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsAdapter.kt index 7dd2d9e..3722681 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsAdapter.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsAdapter.kt @@ -1,5 +1,5 @@ /* - * TimeLimit Copyright 2019 Jonas Lochmann + * TimeLimit Copyright 2019 - 2020 Jonas Lochmann * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,7 +33,6 @@ class ChildAppsAdapter: RecyclerView.Adapter() { private const val TYPE_CATEGORY_HEADER = 0 private const val TYPE_APP = 1 private const val TYPE_EMPTY = 2 - private const val TYPE_ASSIGN_ALL = 3 } var data: List by Delegates.observable(emptyList()) { _, _, _ -> notifyDataSetChanged() } @@ -48,7 +47,6 @@ class ChildAppsAdapter: RecyclerView.Adapter() { is ChildAppsCategoryHeader -> TYPE_CATEGORY_HEADER is ChildAppsApp -> TYPE_APP is ChildAppsEmptyCategory -> TYPE_EMPTY - is ChildAppsAssignAll -> TYPE_ASSIGN_ALL } override fun getItemId(position: Int): Long { @@ -58,7 +56,6 @@ class ChildAppsAdapter: RecyclerView.Adapter() { is ChildAppsCategoryHeader -> (item.categoryId ?: "no category").hashCode().toLong() is ChildAppsApp -> item.app.packageName.hashCode().toLong() is ChildAppsEmptyCategory -> (item.categoryId ?: "no category").hashCode().toLong() - is ChildAppsAssignAll -> "assign all".hashCode().toLong() } } @@ -87,13 +84,6 @@ class ChildAppsAdapter: RecyclerView.Adapter() { executePendingBindings() }.root ) - TYPE_ASSIGN_ALL -> { - AssignAllAppsViewHolder( - Button(parent.context).apply { - setText(R.string.child_apps_assign_all) - } - ) - } else -> throw IllegalArgumentException() } @@ -127,15 +117,6 @@ class ChildAppsAdapter: RecyclerView.Adapter() { // nothing to do } - is ChildAppsAssignAll -> { - holder as AssignAllAppsViewHolder - - holder.itemView.setOnClickListener { - handlers?.onAssignAppsClicked(item.packageNames) - } - - null - } }.let { /* require handling all paths */ } } } @@ -148,5 +129,4 @@ class AssignAllAppsViewHolder(view: View): ChildAppsHolder(view) interface Handlers { fun onAppClicked(app: App) - fun onAssignAppsClicked(packageNames: List) } diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsFragment.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsFragment.kt index 206976d..dca9874 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsFragment.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsFragment.kt @@ -1,5 +1,5 @@ /* - * TimeLimit Copyright 2019 Jonas Lochmann + * TimeLimit Copyright 2019 - 2020 Jonas Lochmann * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +30,6 @@ import io.timelimit.android.databinding.ChildAppsFragmentBinding import io.timelimit.android.ui.main.ActivityViewModel import io.timelimit.android.ui.main.ActivityViewModelHolder import io.timelimit.android.ui.manage.child.ManageChildFragmentArgs -import io.timelimit.android.ui.manage.child.apps.assign.AssignAllAppsCategoryDialogFragment import io.timelimit.android.ui.manage.child.apps.assign.AssignAppCategoryDialogFragment import io.timelimit.android.ui.view.AppFilterView @@ -88,15 +87,6 @@ class ChildAppsFragment : Fragment() { ).show(fragmentManager!!) } } - - override fun onAssignAppsClicked(packageNames: List) { - if (auth.requestAuthenticationOrReturnTrue()) { - AssignAllAppsCategoryDialogFragment.newInstance( - childId = args.childId, - appPackageNames = packageNames - ).show(fragmentManager!!) - } - } } return binding.root diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsModel.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsModel.kt index 3172dfb..a7f4f02 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsModel.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/child/apps/ChildAppsModel.kt @@ -88,12 +88,6 @@ class ChildAppsModel(application: Application): AndroidViewModel(application) { .distinctBy { it.packageName } .sortedBy { it.title.toLowerCase() } - if (categoryId == null) { - result.add(ChildAppsAssignAll( - packageNames = sortedApps.map { it.packageName } - )) - } - result.addAll( sortedApps.map { app -> ChildAppsApp( @@ -152,4 +146,3 @@ sealed class ChildAppsEntry data class ChildAppsCategoryHeader(val title: String, val categoryId: String?): ChildAppsEntry() data class ChildAppsApp(val app: App, val shownCategoryName: String?): ChildAppsEntry() data class ChildAppsEmptyCategory(val categoryId: String?): ChildAppsEntry() -data class ChildAppsAssignAll(val packageNames: List): ChildAppsEntry() diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/apps/assign/AssignAllAppsCategoryDialogFragment.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/apps/assign/AssignAllAppsCategoryDialogFragment.kt deleted file mode 100644 index b7bee35..0000000 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/apps/assign/AssignAllAppsCategoryDialogFragment.kt +++ /dev/null @@ -1,121 +0,0 @@ -/* - * TimeLimit Copyright 2019 Jonas Lochmann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation version 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package io.timelimit.android.ui.manage.child.apps.assign - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.CheckedTextView -import androidx.fragment.app.FragmentManager -import androidx.lifecycle.LiveData -import androidx.lifecycle.Observer -import com.google.android.material.bottomsheet.BottomSheetDialogFragment -import io.timelimit.android.R -import io.timelimit.android.data.Database -import io.timelimit.android.data.model.Category -import io.timelimit.android.data.model.UserType -import io.timelimit.android.databinding.BottomSheetSelectionListBinding -import io.timelimit.android.extensions.showSafe -import io.timelimit.android.logic.AppLogic -import io.timelimit.android.logic.DefaultAppLogic -import io.timelimit.android.sync.actions.AddCategoryAppsAction -import io.timelimit.android.ui.main.ActivityViewModel -import io.timelimit.android.ui.main.ActivityViewModelHolder - -class AssignAllAppsCategoryDialogFragment: BottomSheetDialogFragment() { - companion object { - private const val EXTRA_CHILD_ID = "a" - private const val EXTRA_PACKAGE_NAMES = "b" - private const val TAG = "aaacdf" - - fun newInstance(childId: String, appPackageNames: List) = AssignAllAppsCategoryDialogFragment().apply { - arguments = Bundle().apply { - putString(EXTRA_CHILD_ID, childId) - putStringArray(EXTRA_PACKAGE_NAMES, appPackageNames.toTypedArray()) - } - } - } - - val childId: String by lazy { arguments!!.getString(EXTRA_CHILD_ID)!! } - val appPackageNames: Array by lazy { arguments!!.getStringArray(EXTRA_PACKAGE_NAMES)!! } - - val logic: AppLogic by lazy { DefaultAppLogic.with(context!!) } - val database: Database by lazy { logic.database } - val auth: ActivityViewModel by lazy { (activity as ActivityViewModelHolder).getActivityViewModel() } - - val childCategoryEntries: LiveData> by lazy { - database.category().getCategoriesByChildId(childId) - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - auth.authenticatedUser.observe(this, Observer { - if (it?.second?.type != UserType.Parent) { - dismissAllowingStateLoss() - } - }) - } - - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val binding = BottomSheetSelectionListBinding.inflate(inflater, container, false) - val list = binding.list - - binding.title = resources.getQuantityString(R.plurals.generic_plural_app, appPackageNames.size, appPackageNames.size) - - childCategoryEntries.observe(this, Observer { categories -> - fun buildRow(): CheckedTextView = LayoutInflater.from(context!!).inflate( - android.R.layout.simple_list_item_single_choice, - list, - false - ) as CheckedTextView - - categories.forEach { category -> - buildRow().let { row -> - row.text = category.title - row.setOnClickListener { - auth.tryDispatchParentAction( - AddCategoryAppsAction( - categoryId = category.id, - packageNames = appPackageNames.toList() - ) - ) - - dismiss() - } - - list.addView(row) - } - } - - buildRow().let { row -> - row.setText(R.string.child_apps_unassigned) - row.isChecked = true - row.setOnClickListener { - dismiss() - } - - list.addView(row) - } - }) - - return binding.root - } - - fun show(fragmentManager: FragmentManager) = showSafe(fragmentManager, TAG) -} diff --git a/app/src/main/res/values-de/strings-child-apps.xml b/app/src/main/res/values-de/strings-child-apps.xml index 5b31119..ca4b2e2 100644 --- a/app/src/main/res/values-de/strings-child-apps.xml +++ b/app/src/main/res/values-de/strings-child-apps.xml @@ -1,6 +1,6 @@