diff --git a/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppAdapterHandlers.kt b/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppAdapterHandlers.kt index 9cf867f..fc4cd76 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppAdapterHandlers.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppAdapterHandlers.kt @@ -1,5 +1,5 @@ /* - * TimeLimit Copyright 2019 - 2022 Jonas Lochmann + * TimeLimit Copyright 2019 - 2024 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 @@ -17,6 +17,7 @@ package io.timelimit.android.ui.manage.category.appsandrules interface AppAdapterHandlers { fun onAppClicked(app: AppAndRuleItem.AppEntry) + fun onRemoveAppClicked(app: AppAndRuleItem.AppEntry) fun onAppLongClicked(app: AppAndRuleItem.AppEntry): Boolean fun onAddAppsClicked() } diff --git a/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppAndRuleAdapter.kt b/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppAndRuleAdapter.kt index f064243..ef048d5 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppAndRuleAdapter.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppAndRuleAdapter.kt @@ -1,5 +1,5 @@ /* - * TimeLimit Copyright 2019 - 2023 Jonas Lochmann + * TimeLimit Copyright 2019 - 2024 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 @@ -142,6 +142,7 @@ class AppAndRuleAdapter: RecyclerView.Adapter() { binding.subtitle = item.specifier.copy(deviceId = null).encode() binding.card.setOnClickListener { handlers?.onAppClicked(item) } binding.card.setOnLongClickListener { handlers?.onAppLongClicked(item) ?: false } + binding.deleteButton.setOnClickListener { handlers?.onRemoveAppClicked(item) } binding.executePendingBindings() binding.icon.setImageDrawable( diff --git a/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppClickedDialogFragment.kt b/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppClickedDialogFragment.kt new file mode 100644 index 0000000..8eaf4e1 --- /dev/null +++ b/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/AppClickedDialogFragment.kt @@ -0,0 +1,39 @@ +/* + * TimeLimit Copyright 2019 - 2024 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.category.appsandrules + +import android.app.Dialog +import android.os.Bundle +import androidx.appcompat.app.AlertDialog +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.FragmentManager +import io.timelimit.android.R +import io.timelimit.android.extensions.showSafe + +class AppClickedDialogFragment: DialogFragment() { + companion object { + private const val TAG = "AppClickedDialogFragment" + + fun newInstance() = AppClickedDialogFragment() + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = AlertDialog.Builder(requireContext(), theme) + .setMessage(R.string.app_clicked_dialog_message) + .setPositiveButton(R.string.generic_ok, null) + .create() + + fun show(fragmentManager: FragmentManager) = showSafe(fragmentManager, TAG) +} \ No newline at end of file diff --git a/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/CategoryAppsAndRulesFragment.kt b/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/CategoryAppsAndRulesFragment.kt index 20b04b5..9b5bbad 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/CategoryAppsAndRulesFragment.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/category/appsandrules/CategoryAppsAndRulesFragment.kt @@ -1,5 +1,5 @@ /* - * TimeLimit Copyright 2019 - 2022 Jonas Lochmann + * TimeLimit Copyright 2019 - 2024 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 @@ -144,6 +144,10 @@ abstract class CategoryAppsAndRulesFragment: Fragment(), Handlers, EditTimeLimit } override fun onAppClicked(app: AppAndRuleItem.AppEntry) { + AppClickedDialogFragment.newInstance().show(childFragmentManager) + } + + override fun onRemoveAppClicked(app: AppAndRuleItem.AppEntry) { if (auth.tryDispatchParentAction( RemoveCategoryAppsAction( categoryId = categoryId, @@ -164,14 +168,15 @@ abstract class CategoryAppsAndRulesFragment: Fragment(), Handlers, EditTimeLimit } override fun onAppLongClicked(app: AppAndRuleItem.AppEntry): Boolean { - return if (auth.requestAuthenticationOrReturnTrue()) { + if (auth.requestAuthenticationOrReturnTrue()) { AssignAppCategoryDialogFragment.newInstance( childId = childId, appPackageName = app.specifier.encode() ).show(parentFragmentManager) + } - true - } else false + // consume the click in any case + return true } override fun onAddAppsClicked() { diff --git a/app/src/main/res/layout/fragment_category_apps_item.xml b/app/src/main/res/layout/fragment_category_apps_item.xml index 8c0be92..da09283 100644 --- a/app/src/main/res/layout/fragment_category_apps_item.xml +++ b/app/src/main/res/layout/fragment_category_apps_item.xml @@ -1,6 +1,6 @@