From 8c3ea7b556833024f919105d03dfe182dfcd73cf Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 31 Oct 2017 13:37:31 +0300 Subject: offline: implement fullscreen video player for article view --- org.fox.ttrss/src/main/AndroidManifest.xml | 1 + .../fox/ttrss/offline/OfflineArticleFragment.java | 145 ++++++++++++++++++--- .../fox/ttrss/offline/OfflineDetailActivity.java | 8 ++ 3 files changed, 139 insertions(+), 15 deletions(-) diff --git a/org.fox.ttrss/src/main/AndroidManifest.xml b/org.fox.ttrss/src/main/AndroidManifest.xml index a8d91f93..da67d2fa 100755 --- a/org.fox.ttrss/src/main/AndroidManifest.xml +++ b/org.fox.ttrss/src/main/AndroidManifest.xml @@ -78,6 +78,7 @@ = android.os.Build.VERSION_CODES.HONEYCOMB) { - web.setLayerType(View.LAYER_TYPE_SOFTWARE, null); + m_web.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } } String content; String cssOverride = ""; - WebSettings ws = web.getSettings(); + WebSettings ws = m_web.getSettings(); ws.setSupportZoom(false); + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + ws.setJavaScriptEnabled(true); + + m_chromeClient = new FSVideoChromeClient(getView()); + m_web.setWebChromeClient(m_chromeClient); + + ws.setMediaPlaybackRequiresUserGesture(false); + } + // we need to show "insecure" file:// urls if (m_prefs.getBoolean("offline_image_cache_enabled", false)) { ws.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); @@ -372,8 +455,8 @@ public class OfflineArticleFragment extends Fragment { } catch (MalformedURLException e) { // } - - web.loadDataWithBaseURL(baseUrl, content, "text/html", "utf-8", null); + + m_web.loadDataWithBaseURL(baseUrl, content, "text/html", "utf-8", null); } catch (RuntimeException e) { e.printStackTrace(); } @@ -423,13 +506,45 @@ public class OfflineArticleFragment extends Fragment { return view; } + @Override + public void onPause() { + super.onPause(); + + if (m_web != null) m_web.onPause(); + } + + public boolean inCustomView() { + return (m_customView != null); + } + @Override public void onDestroy() { super.onDestroy(); m_cursor.close(); } - + + public void hideCustomView() { + if (m_chromeClient != null) { + m_chromeClient.onHideCustomView(); + } + } + + @Override + public void onResume() { + super.onResume(); + + if (m_web != null) m_web.onResume(); + } + + @Override + public void onStop() { + super.onStop(); + + if (inCustomView()) { + hideCustomView(); + } + } @Override public void onSaveInstanceState (Bundle out) { super.onSaveInstanceState(out); @@ -443,7 +558,7 @@ public class OfflineArticleFragment extends Fragment { m_prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); - m_activity = (OfflineActivity) activity; + m_activity = (OfflineDetailActivity) activity; } } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDetailActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDetailActivity.java index 4b484566..99fb83a4 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDetailActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDetailActivity.java @@ -218,4 +218,12 @@ public class OfflineDetailActivity extends OfflineActivity implements OfflineHea } } + + public void showSidebar(boolean show) { + if (!isSmallScreen() && !isPortrait()) { + findViewById(R.id.headlines_fragment).setVisibility(show ? View.VISIBLE : View.GONE); + invalidateOptionsMenu(); + } + } + } -- cgit v1.2.3