From 49b301c7cec0ed83eb244675dabc8d795813c67d Mon Sep 17 00:00:00 2001 From: Andrei Date: Sun, 16 Oct 2022 14:22:06 -0700 Subject: [PATCH] Delegate for Main context menu --- clients/android/NewsBlur/res/menu/main.xml | 3 +- .../src/com/newsblur/activity/Main.java | 186 ++--------------- .../delegate/MainContextMenuDelegate.kt | 188 ++++++++++++++++++ 3 files changed, 212 insertions(+), 165 deletions(-) create mode 100644 clients/android/NewsBlur/src/com/newsblur/delegate/MainContextMenuDelegate.kt diff --git a/clients/android/NewsBlur/res/menu/main.xml b/clients/android/NewsBlur/res/menu/main.xml index 9a87a6659..7d06da697 100644 --- a/clients/android/NewsBlur/res/menu/main.xml +++ b/clients/android/NewsBlur/res/menu/main.xml @@ -12,7 +12,8 @@ + app:showAsAction="never" + android:visible="false"/> menu.findItem(R.id.menu_theme_light).isChecked = true + ThemeValue.DARK -> menu.findItem(R.id.menu_theme_dark).isChecked = true + ThemeValue.BLACK -> menu.findItem(R.id.menu_theme_black).isChecked = true + ThemeValue.AUTO -> menu.findItem(R.id.menu_theme_auto).isChecked = true + else -> Unit + } + + val spacingStyle = PrefsUtils.getSpacingStyle(activity) + if (spacingStyle == SpacingStyle.COMFORTABLE) { + menu.findItem(R.id.menu_spacing_comfortable).isChecked = true + } else if (spacingStyle == SpacingStyle.COMPACT) { + menu.findItem(R.id.menu_spacing_compact).isChecked = true + } + + when (fromSize(PrefsUtils.getListTextSize(activity))) { + ListTextSize.XS -> menu.findItem(R.id.menu_text_size_xs).isChecked = true + ListTextSize.S -> menu.findItem(R.id.menu_text_size_s).isChecked = true + ListTextSize.M -> menu.findItem(R.id.menu_text_size_m).isChecked = true + ListTextSize.L -> menu.findItem(R.id.menu_text_size_l).isChecked = true + ListTextSize.XL -> menu.findItem(R.id.menu_text_size_xl).isChecked = true + ListTextSize.XXL -> menu.findItem(R.id.menu_text_size_xxl).isChecked = true + } + + if (WidgetUtils.hasActiveAppWidgets(activity)) { + menu.findItem(R.id.menu_widget).isVisible = true + } + + pm.setOnMenuItemClickListener(listener) + pm.show() + } + + override fun onMenuItemClick(item: MenuItem, fragmentManager: FragmentManager, fragment: FolderListFragment): Boolean = when (item.itemId) { + R.id.menu_logout -> { + val newFragment: DialogFragment = LogoutDialogFragment() + newFragment.show(fragmentManager, "dialog") + true + } + R.id.menu_settings -> { + val settingsIntent = Intent(activity, Settings::class.java) + activity.startActivity(settingsIntent) + true + } + R.id.menu_widget -> { + val widgetIntent = Intent(activity, WidgetConfig::class.java) + activity.startActivity(widgetIntent) + true + } + R.id.menu_feedback_email -> { + PrefsUtils.sendLogEmail(activity, dbHelper) + true + } + R.id.menu_feedback_post -> { + try { + val i = Intent(Intent.ACTION_VIEW) + i.data = Uri.parse(PrefsUtils.createFeedbackLink(activity, dbHelper)) + activity.startActivity(i) + } catch (e: Exception) { + Log.wtf(this.javaClass.name, "device cannot even open URLs to report feedback") + } + true + } + R.id.menu_text_size_xs -> { + fragment.setListTextSize(ListTextSize.XS) + true + } + R.id.menu_text_size_s -> { + fragment.setListTextSize(ListTextSize.S) + true + } + R.id.menu_text_size_m -> { + fragment.setListTextSize(ListTextSize.M) + true + } + R.id.menu_text_size_l -> { + fragment.setListTextSize(ListTextSize.L) + true + } + R.id.menu_text_size_xl -> { + fragment.setListTextSize(ListTextSize.XL) + true + } + R.id.menu_text_size_xxl -> { + fragment.setListTextSize(ListTextSize.XXL) + true + } + R.id.menu_spacing_comfortable -> { + fragment.setSpacingStyle(SpacingStyle.COMFORTABLE) + true + } + R.id.menu_spacing_compact -> { + fragment.setSpacingStyle(SpacingStyle.COMPACT) + true + } + R.id.menu_loginas -> { + val newFragment: DialogFragment = LoginAsDialogFragment() + newFragment.show(fragmentManager, "dialog") + true + } + R.id.menu_theme_auto -> { + PrefsUtils.setSelectedTheme(activity, ThemeValue.AUTO) + UIUtils.restartActivity(activity) + false + } + R.id.menu_theme_light -> { + PrefsUtils.setSelectedTheme(activity, ThemeValue.LIGHT) + UIUtils.restartActivity(activity) + false + } + R.id.menu_theme_dark -> { + PrefsUtils.setSelectedTheme(activity, ThemeValue.DARK) + UIUtils.restartActivity(activity) + false + } + R.id.menu_theme_black -> { + PrefsUtils.setSelectedTheme(activity, ThemeValue.BLACK) + UIUtils.restartActivity(activity) + false + } + R.id.menu_premium_account -> { + val intent = Intent(activity, Premium::class.java) + activity.startActivity(intent) + true + } + R.id.menu_mute_sites -> { + val intent = Intent(activity, MuteConfig::class.java) + activity.startActivity(intent) + true + } + R.id.menu_import_export -> { + val intent = Intent(activity, ImportExportActivity::class.java) + activity.startActivity(intent) + true + } + R.id.menu_notifications -> { + val intent = Intent(activity, NotificationsActivity::class.java) + activity.startActivity(intent) + true + } + else -> false + } +} \ No newline at end of file