From 3523b2c1a3833654520187d188dd5fa50d24bb2c Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Wed, 23 Dec 2020 12:23:23 -0600 Subject: [PATCH] Remove BaseMenu --- .../androidbase/activities/BaseActivity.kt | 15 ---- .../isoron/androidbase/activities/BaseMenu.kt | 81 ------------------- .../androidbase/activities/BaseScreen.kt | 13 --- .../habits/list/ListHabitsActivity.kt | 13 +++ .../activities/habits/list/ListHabitsMenu.kt | 17 ++-- .../habits/list/ListHabitsScreen.kt | 2 - 6 files changed, 21 insertions(+), 120 deletions(-) delete mode 100644 android/android-base/src/main/java/org/isoron/androidbase/activities/BaseMenu.kt diff --git a/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseActivity.kt b/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseActivity.kt index efb68c278..617aad65a 100644 --- a/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseActivity.kt +++ b/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseActivity.kt @@ -39,19 +39,8 @@ import org.isoron.androidbase.* * getExceptionHandler. */ abstract class BaseActivity : AppCompatActivity() { - private var baseMenu: BaseMenu? = null private var screen: BaseScreen? = null - override fun onCreateOptionsMenu(menu: Menu?): Boolean { - if (menu != null) baseMenu?.onCreate(menuInflater, menu) - return true - } - - override fun onOptionsItemSelected(item: MenuItem?): Boolean { - if (item == null) return false - return baseMenu?.onItemSelected(item) ?: false - } - fun restartWithFade(cls: Class<*>?) { Handler().postDelayed({ finish() @@ -60,10 +49,6 @@ abstract class BaseActivity : AppCompatActivity() { }, 500) // HACK: Let the menu disappear first } - fun setBaseMenu(baseMenu: BaseMenu?) { - this.baseMenu = baseMenu - } - fun setScreen(screen: BaseScreen?) { this.screen = screen } diff --git a/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseMenu.kt b/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseMenu.kt deleted file mode 100644 index 337b906dc..000000000 --- a/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseMenu.kt +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker 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, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker 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 org.isoron.androidbase.activities - -import android.view.* -import androidx.annotation.* - -/** - * Base class for all the menus in the application. - * - * This class receives from BaseActivity all callbacks related to menus, such as - * menu creation and click events. It also handles some implementation details - * of creating menus in Android, such as inflating the resources. - */ -abstract class BaseMenu(private val activity: BaseActivity) { - - /** - * Declare that the menu has changed, and should be recreated. - */ - fun invalidate() { - activity.invalidateOptionsMenu() - } - - /** - * Called when the menu is first displayed. - * - * The given menu is already inflated and ready to receive items. The - * application should override this method and add items to the menu here. - * - * @param menu the menu that is being created. - */ - open fun onCreate(menu: Menu) {} - - /** - * Called when the menu is first displayed. - * - * This method should not be overridden. The application should override - * the methods onCreate(Menu) and getMenuResourceId instead. - * - * @param inflater a menu inflater, for creating the menu - * @param menu the menu that is being created. - */ - fun onCreate(inflater: MenuInflater, menu: Menu) { - menu.clear() - inflater.inflate(getMenuResourceId(), menu) - onCreate(menu) - } - - /** - * Called whenever an item on the menu is selected. - * - * @param item the item that was selected. - * @return true if the event was consumed, or false otherwise - */ - open fun onItemSelected(item: MenuItem): Boolean = false - - /** - * Returns the id of the resource that should be used to inflate this menu. - * - * @return id of the menu resource. - */ - @MenuRes - protected abstract fun getMenuResourceId(): Int - -} \ No newline at end of file diff --git a/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseScreen.kt b/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseScreen.kt index ab223523d..dd3395671 100644 --- a/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseScreen.kt +++ b/android/android-base/src/main/java/org/isoron/androidbase/activities/BaseScreen.kt @@ -86,19 +86,6 @@ open class BaseScreen(@JvmField protected var activity: BaseActivity) { */ open fun reattachDialogs() {} - /** - * Sets the menu to be shown by this screen. - * - * - * This menu will be visible if when there is no active selection operation. - * If the provided menu is null, then no menu will be shown. - * - * @param menu the menu to be shown. - */ - fun setMenu(menu: BaseMenu?) { - activity.setBaseMenu(menu) - } - /** * Sets the root view for this screen. * diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsActivity.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsActivity.kt index f25cda173..a4f91a864 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsActivity.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsActivity.kt @@ -20,6 +20,7 @@ package org.isoron.uhabits.activities.habits.list import android.os.* +import android.view.* import kotlinx.coroutines.* import org.isoron.uhabits.* import org.isoron.uhabits.activities.* @@ -43,6 +44,8 @@ class ListHabitsActivity : HabitsActivity() { lateinit var syncManager: SyncManager private val scope = CoroutineScope(Dispatchers.Main) + private lateinit var menu: ListHabitsMenu + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) prefs = appComponent.preferences @@ -53,6 +56,7 @@ class ListHabitsActivity : HabitsActivity() { screen = component.listHabitsScreen adapter = component.habitCardListAdapter taskRunner = appComponent.taskRunner + menu = component.listHabitsMenu setScreen(screen) component.listHabitsBehavior.onStartup() @@ -85,4 +89,13 @@ class ListHabitsActivity : HabitsActivity() { } super.onResume() } + + override fun onCreateOptionsMenu(m: Menu): Boolean { + menu.onCreate(menuInflater, m) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return menu.onItemSelected(item) + } } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt index c9d40f1c0..944d1a848 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt @@ -29,23 +29,24 @@ import javax.inject.* @ActivityScope class ListHabitsMenu @Inject constructor( - activity: BaseActivity, + private val activity: BaseActivity, private val preferences: Preferences, private val themeSwitcher: ThemeSwitcher, private val behavior: ListHabitsMenuBehavior -) : BaseMenu(activity){ +) { - override fun onCreate(menu: Menu) { + fun onCreate(inflater: MenuInflater, menu: Menu) { + menu.clear() + inflater.inflate(R.menu.list_habits, menu) val nightModeItem = menu.findItem(R.id.actionToggleNightMode) val hideArchivedItem = menu.findItem(R.id.actionHideArchived) val hideCompletedItem = menu.findItem(R.id.actionHideCompleted) - nightModeItem.isChecked = themeSwitcher.isNightMode hideArchivedItem.isChecked = !preferences.showArchived hideCompletedItem.isChecked = !preferences.showCompleted } - override fun onItemSelected(item: MenuItem): Boolean { + fun onItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.actionToggleNightMode -> { behavior.onToggleNightMode() @@ -74,13 +75,13 @@ class ListHabitsMenu @Inject constructor( R.id.actionHideArchived -> { behavior.onToggleShowArchived() - invalidate() + activity.invalidateOptionsMenu() return true } R.id.actionHideCompleted -> { behavior.onToggleShowCompleted() - invalidate() + activity.invalidateOptionsMenu() return true } @@ -112,6 +113,4 @@ class ListHabitsMenu @Inject constructor( else -> return false } } - - override fun getMenuResourceId() = R.menu.list_habits } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt index b417b9210..9bde84fe8 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt @@ -67,7 +67,6 @@ class ListHabitsScreen private val colorPickerFactory: ColorPickerDialogFactory, private val numberPickerFactory: NumberPickerFactory, private val behavior: Lazy, - private val menu: Lazy, private val selectionMenu: Lazy ) : BaseScreen(activity), CommandRunner.Listener, @@ -80,7 +79,6 @@ class ListHabitsScreen } fun onAttached() { - setMenu(menu.get()) setSelectionMenu(selectionMenu.get()) commandRunner.addListener(this) if(activity.intent.action == "android.intent.action.VIEW") {