From 9439d0ef43c500d1ed62e0fd7463d58eb8ef680a Mon Sep 17 00:00:00 2001 From: sictiru Date: Sat, 21 Nov 2020 13:55:42 -0800 Subject: [PATCH] #1381 Action bars and popup menus --- .../drawable/ic_menu_fullscreen_gray55.png | Bin 389 -> 0 bytes clients/android/NewsBlur/res/menu/reading.xml | 11 ---- .../android/NewsBlur/res/values/strings.xml | 1 - .../android/NewsBlur/res/values/styles.xml | 10 +++ clients/android/NewsBlur/res/values/theme.xml | 7 ++- .../src/com/newsblur/activity/Profile.java | 3 +- .../src/com/newsblur/activity/Reading.java | 32 +--------- .../src/com/newsblur/activity/Settings.java | 1 - .../fragment/ReadingItemFragment.java | 57 +----------------- .../src/com/newsblur/util/ViewUtils.java | 25 -------- 10 files changed, 19 insertions(+), 128 deletions(-) delete mode 100755 clients/android/NewsBlur/res/drawable/ic_menu_fullscreen_gray55.png delete mode 100644 clients/android/NewsBlur/res/menu/reading.xml diff --git a/clients/android/NewsBlur/res/drawable/ic_menu_fullscreen_gray55.png b/clients/android/NewsBlur/res/drawable/ic_menu_fullscreen_gray55.png deleted file mode 100755 index 15f91e4aa6a87fbc603a952c685092a9b220939c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zf+;VD#~HaSW-r_4aNcpM!yb!@)3_ z%KnYz&sda9lCGZFzhte=--S`kK;^i>yH{7)XUvR#`q9;8yItw^=Vu;C9+=O`z}Udx zz@We&z`()4!oY;!*4(uE&9Zube_UyOAM{V-+3Vl{?=K!-JSUAw7nQMK;u%_Jig diff --git a/clients/android/NewsBlur/res/menu/reading.xml b/clients/android/NewsBlur/res/menu/reading.xml deleted file mode 100644 index 724828119..000000000 --- a/clients/android/NewsBlur/res/menu/reading.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/clients/android/NewsBlur/res/values/strings.xml b/clients/android/NewsBlur/res/values/strings.xml index e3eccc599..84265e8ff 100644 --- a/clients/android/NewsBlur/res/values/strings.xml +++ b/clients/android/NewsBlur/res/values/strings.xml @@ -155,7 +155,6 @@ \u21E3 Mark newer as read Mark as read Mark as unread - Full screen Search… Mute feed Unmute feed diff --git a/clients/android/NewsBlur/res/values/styles.xml b/clients/android/NewsBlur/res/values/styles.xml index 21a093751..66728d7ce 100644 --- a/clients/android/NewsBlur/res/values/styles.xml +++ b/clients/android/NewsBlur/res/values/styles.xml @@ -384,4 +384,14 @@ @drawable/mute_black + + + + diff --git a/clients/android/NewsBlur/res/values/theme.xml b/clients/android/NewsBlur/res/values/theme.xml index aadb21e3f..3dddcf388 100644 --- a/clients/android/NewsBlur/res/values/theme.xml +++ b/clients/android/NewsBlur/res/values/theme.xml @@ -5,6 +5,7 @@ @color/primaryDark @color/secondary @style/actionbar + @style/actionBarPopup @color/primary @style/dialogButton @style/dialogButton @@ -54,7 +55,8 @@ @color/primaryDark.dark @color/secondary.dark @style/actionbar.dark - @color/primary.dark + @style/actionBarPopup.dark + @color/gray13 @style/dialogButton.dark @style/dialogButton.dark @style/dialogButton.dark @@ -103,7 +105,8 @@ @color/primaryDark.black @color/secondary.black @style/actionbar.black - @color/primary.black + @style/actionBarPopup.dark + @color/gray13 @style/dialogButton.dark @style/dialogButton.dark @style/dialogButton.dark diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/Profile.java b/clients/android/NewsBlur/src/com/newsblur/activity/Profile.java index 671120465..6620100a7 100644 --- a/clients/android/NewsBlur/src/com/newsblur/activity/Profile.java +++ b/clients/android/NewsBlur/src/com/newsblur/activity/Profile.java @@ -13,6 +13,7 @@ import com.newsblur.domain.UserDetails; import com.newsblur.fragment.ProfileDetailsFragment; import com.newsblur.network.APIManager; import com.newsblur.util.PrefsUtils; +import com.newsblur.util.UIUtils; public class Profile extends NbActivity { @@ -28,7 +29,7 @@ public class Profile extends NbActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_profile); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); + UIUtils.setCustomActionBar(this, R.drawable.logo, getString(R.string.profile), true); apiManager = new APIManager(this); if (savedInstanceState == null) { userId = getIntent().getStringExtra(USER_ID); diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/Reading.java b/clients/android/NewsBlur/src/com/newsblur/activity/Reading.java index db4ceb9bb..9fbeb71ec 100644 --- a/clients/android/NewsBlur/src/com/newsblur/activity/Reading.java +++ b/clients/android/NewsBlur/src/com/newsblur/activity/Reading.java @@ -53,7 +53,6 @@ public abstract class Reading extends NbActivity implements OnPageChangeListener private static final String BUNDLE_POSITION = "position"; private static final String BUNDLE_STARTING_UNREAD = "starting_unread"; private static final String BUNDLE_SELECTED_FEED_VIEW = "selectedFeedView"; - private static final String BUNDLE_IS_FULLSCREEN = "is_fullscreen"; /** special value for starting story hash that jumps to the first unread. */ public static final String FIND_FIRST_UNREAD = "FIND_FIRST_UNREAD"; @@ -143,14 +142,6 @@ public abstract class Reading extends NbActivity implements OnPageChangeListener intelState = PrefsUtils.getStateFilter(this); volumeKeyNavigation = PrefsUtils.getVolumeKeyNavigation(this); - // were we fullscreen before rotation? - if ((savedInstanceBundle != null) && savedInstanceBundle.containsKey(BUNDLE_IS_FULLSCREEN)) { - boolean isFullscreen = savedInstanceBundle.getBoolean(BUNDLE_IS_FULLSCREEN, false); - if (isFullscreen) { - ViewUtils.hideSystemUI(getWindow().getDecorView()); - } - } - // this value is expensive to compute but doesn't change during a single runtime this.overlayRangeTopPx = (float) UIUtils.dp2px(this, OVERLAY_RANGE_TOP_DP); this.overlayRangeBotPx = (float) UIUtils.dp2px(this, OVERLAY_RANGE_BOT_DP); @@ -199,10 +190,6 @@ public abstract class Reading extends NbActivity implements OnPageChangeListener if (startingUnreadCount != 0) { outState.putInt(BUNDLE_STARTING_UNREAD, startingUnreadCount); } - - if (ViewUtils.isSystemUIHidden(getWindow().getDecorView())) { - outState.putBoolean(BUNDLE_IS_FULLSCREEN, true); - } } @Override @@ -375,29 +362,12 @@ public abstract class Reading extends NbActivity implements OnPageChangeListener return result; } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - super.onCreateOptionsMenu(menu); - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.reading, menu); - return true; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - super.onPrepareOptionsMenu(menu); - return true; - } - @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); return true; - } else if (item.getItemId() == R.id.menu_reading_fullscreen) { - ViewUtils.hideSystemUI(getWindow().getDecorView()); - return true; - } else { + } else { return super.onOptionsItemSelected(item); } } diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/Settings.java b/clients/android/NewsBlur/src/com/newsblur/activity/Settings.java index e3c0e1eeb..4b2c3ffde 100644 --- a/clients/android/NewsBlur/src/com/newsblur/activity/Settings.java +++ b/clients/android/NewsBlur/src/com/newsblur/activity/Settings.java @@ -1,7 +1,6 @@ package com.newsblur.activity; import androidx.appcompat.app.AppCompatActivity; -import androidx.fragment.app.FragmentActivity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.MenuItem; diff --git a/clients/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java b/clients/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java index 06d4c4e00..4d8b0014c 100644 --- a/clients/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java +++ b/clients/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java @@ -21,11 +21,9 @@ import androidx.fragment.app.DialogFragment; import android.text.TextUtils; import android.util.Log; import android.view.ContextMenu; -import android.view.GestureDetector; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; -import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -51,7 +49,6 @@ import com.newsblur.util.PrefConstants.ThemeValue; import com.newsblur.util.PrefsUtils; import com.newsblur.util.StoryUtils; import com.newsblur.util.UIUtils; -import com.newsblur.util.ViewUtils; import com.newsblur.view.ReadingScrollView; import java.util.HashMap; @@ -208,8 +205,6 @@ public class ReadingItemFragment extends NbFragment implements PopupMenu.OnMenuI ReadingScrollView scrollView = (ReadingScrollView) view.findViewById(R.id.reading_scrollview); scrollView.registerScrollChangeListener(activity); - setupImmersiveViewGestureDetector(); - return view; } @@ -236,23 +231,6 @@ public class ReadingItemFragment extends NbFragment implements PopupMenu.OnMenuI }); } - private void setupImmersiveViewGestureDetector() { - // Change the system visibility on the decorview from the activity so that the state is maintained as we page through - // fragments - ImmersiveViewHandler immersiveViewHandler = new ImmersiveViewHandler(getActivity().getWindow().getDecorView()); - final GestureDetector gestureDetector = new GestureDetector(getActivity(), immersiveViewHandler); - View.OnTouchListener touchListener = new View.OnTouchListener() { - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - return gestureDetector.onTouchEvent(motionEvent); - } - }; - binding.readingWebview.setOnTouchListener(touchListener); - view.setOnTouchListener(touchListener); - - getActivity().getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(immersiveViewHandler); - } - @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { HitTestResult result = binding.readingWebview.getHitTestResult(); @@ -935,37 +913,4 @@ public class ReadingItemFragment extends NbFragment implements PopupMenu.OnMenuI reloadStoryContent(); } } - - private class ImmersiveViewHandler extends GestureDetector.SimpleOnGestureListener implements View.OnSystemUiVisibilityChangeListener { - private View view; - - public ImmersiveViewHandler(View view) { - this.view = view; - } - - @Override - public boolean onSingleTapUp(MotionEvent e) { - if (binding.readingWebview.wasLinkClicked()) { - // Clicked a link so ignore immersive view - return super.onSingleTapUp(e); - } - - if (ViewUtils.isSystemUIHidden(view)) { - ViewUtils.showSystemUI(view); - } else if (PrefsUtils.enterImmersiveReadingModeOnSingleTap(getActivity())) { - ViewUtils.hideSystemUI(view); - } - - return super.onSingleTapUp(e); - } - - @Override - public void onSystemUiVisibilityChange(int i) { - // If immersive view has been exited via a system gesture we want to ensure that it gets resized - // in the same way as using tap to exit. - if (ViewUtils.immersiveViewExitedViaSystemGesture(view)) { - ViewUtils.showSystemUI(view); - } - } - } -} +} \ No newline at end of file diff --git a/clients/android/NewsBlur/src/com/newsblur/util/ViewUtils.java b/clients/android/NewsBlur/src/com/newsblur/util/ViewUtils.java index 23afb40ca..7beed6474 100644 --- a/clients/android/NewsBlur/src/com/newsblur/util/ViewUtils.java +++ b/clients/android/NewsBlur/src/com/newsblur/util/ViewUtils.java @@ -41,31 +41,6 @@ public class ViewUtils { return image; } - public static void showSystemUI(View view) { - view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); - } - - public static void hideSystemUI(View view) { - view.setSystemUiVisibility( - View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_IMMERSIVE); - } - - public static boolean isSystemUIHidden(View view) { - return (view.getSystemUiVisibility() & View.SYSTEM_UI_FLAG_IMMERSIVE) != 0; - } - - public static boolean immersiveViewExitedViaSystemGesture(View view) { - return view.getSystemUiVisibility() == (View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_IMMERSIVE); - } - /** * see if Power Save mode is enabled on the device and the UI should disable animations * or other extra features.