]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java
Manually handle changes in screen layout. https://redmine.stoutner.com/issues/447
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / activities / MainWebViewActivity.java
index b0cd103a68203752c29cafd546a9341d2ddd3725..fbab8bfb37d977d82e659f28b4ab3fe100d60669 100644 (file)
@@ -504,7 +504,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                     // Create a handler to select the tab.
                     Handler selectTabHandler = new Handler();
 
-                    // Create a runnable select the new tab.
+                    // Create a runnable to select the tab.
                     Runnable selectTabRunnable = () -> {
                         // Get a handle for the tab.
                         TabLayout.Tab tab = tabLayout.getTabAt(position);
@@ -516,8 +516,8 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                         tab.select();
                     };
 
-                    // Select the tab layout after 100 milliseconds, which leaves enough time for a new tab to be created.
-                    selectTabHandler.postDelayed(selectTabRunnable, 100);
+                    // Select the tab layout after 150 milliseconds, which leaves enough time for a new tab to be inflated.
+                    selectTabHandler.postDelayed(selectTabRunnable, 150);
                 }
             }
 
@@ -1900,13 +1900,8 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
 
                 // Update the swipe refresh layout.
                 if (currentWebView.getSwipeToRefresh()) {  // Swipe to refresh is enabled.
-                    if (Build.VERSION.SDK_INT >= 23) {  // For API >= 23, the status of the scroll refresh listener is continuously updated by the on scroll change listener.
-                        // Only enable the swipe refresh layout if the WebView is scrolled to the top.
-                        swipeRefreshLayout.setEnabled(currentWebView.getY() == 0);
-                    } else {  // For API < 23, the swipe refresh layout is always enabled.
-                        // Enable the swipe refresh layout.
-                        swipeRefreshLayout.setEnabled(true);
-                    }
+                    // Only enable the swipe refresh layout if the WebView is scrolled to the top.  It is updated every time the scroll changes.
+                    swipeRefreshLayout.setEnabled(currentWebView.getY() == 0);
                 } else {  // Swipe to refresh is disabled.
                     // Disable the swipe refresh layout.
                     swipeRefreshLayout.setEnabled(false);
@@ -1986,6 +1981,29 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 }, 200);
                 return true;
 
+            case R.id.print:
+                // Get a print manager instance.
+                PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
+
+                // Remove the lint error below that print manager might be null.
+                assert printManager != null;
+
+                // Create a print document adapter from the current WebView.
+                PrintDocumentAdapter printDocumentAdapter = currentWebView.createPrintDocumentAdapter();
+
+                // Print the document.
+                printManager.print(getString(R.string.privacy_browser_web_page), printDocumentAdapter, null);
+                return true;
+
+            case R.id.add_to_homescreen:
+                // Instantiate the create home screen shortcut dialog.
+                DialogFragment createHomeScreenShortcutDialogFragment = CreateHomeScreenShortcutDialog.createDialog(currentWebView.getTitle(), currentWebView.getUrl(),
+                        currentWebView.getFavoriteOrDefaultIcon());
+
+                // Show the create home screen shortcut dialog.
+                createHomeScreenShortcutDialogFragment.show(getSupportFragmentManager(), getString(R.string.create_shortcut));
+                return true;
+
             case R.id.view_source:
                 // Create an intent to launch the view source activity.
                 Intent viewSourceIntent = new Intent(this, ViewSourceActivity.class);
@@ -2011,20 +2029,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 startActivity(Intent.createChooser(shareIntent, getString(R.string.share_url)));
                 return true;
 
-            case R.id.print:
-                // Get a print manager instance.
-                PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
-
-                // Remove the lint error below that print manager might be null.
-                assert printManager != null;
-
-                // Create a print document adapter from the current WebView.
-                PrintDocumentAdapter printDocumentAdapter = currentWebView.createPrintDocumentAdapter();
-
-                // Print the document.
-                printManager.print(getString(R.string.privacy_browser_web_page), printDocumentAdapter, null);
-                return true;
-
             case R.id.open_with_app:
                 openWithApp(currentWebView.getUrl());
                 return true;
@@ -2033,15 +2037,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 openWithBrowser(currentWebView.getUrl());
                 return true;
 
-            case R.id.add_to_homescreen:
-                // Instantiate the create home screen shortcut dialog.
-                DialogFragment createHomeScreenShortcutDialogFragment = CreateHomeScreenShortcutDialog.createDialog(currentWebView.getTitle(), currentWebView.getUrl(),
-                        currentWebView.getFavoriteOrDefaultIcon());
-
-                // Show the create home screen shortcut dialog.
-                createHomeScreenShortcutDialogFragment.show(getSupportFragmentManager(), getString(R.string.create_shortcut));
-                return true;
-
             case R.id.proxy_through_orbot:
                 // Toggle the proxy through Orbot variable.
                 proxyThroughOrbot = !proxyThroughOrbot;
@@ -4283,7 +4278,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
         EditText urlEditText = findViewById(R.id.url_edittext);
         SwipeRefreshLayout swipeRefreshLayout = findViewById(R.id.swiperefreshlayout);
 
-        //Stop the swipe to refresh indicator if it is running
+        // Stop the swipe to refresh indicator if it is running
         swipeRefreshLayout.setRefreshing(false);
 
         // Get the WebView tab fragment.
@@ -4293,19 +4288,14 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
         View fragmentView = webViewTabFragment.getView();
 
         // Set the current WebView if the fragment view is not null.
-        if (fragmentView != null) {
+        if (fragmentView != null) {  // The fragment has been populated.
             // Store the current WebView.
             currentWebView = fragmentView.findViewById(R.id.nestedscroll_webview);
 
             // Update the status of swipe to refresh.
             if (currentWebView.getSwipeToRefresh()) {  // Swipe to refresh is enabled.
-                if (Build.VERSION.SDK_INT >= 23) {  // For API >= 23, swipe refresh layout is continuously updated with an on scroll change listener and only enabled if the WebView is scrolled to the top.
-                    // Enable the swipe refresh layout if the WebView is scrolled all the way to the top.
-                    swipeRefreshLayout.setEnabled(currentWebView.getY() == 0);
-                } else {
-                    // Enable the swipe refresh layout.
-                    swipeRefreshLayout.setEnabled(true);
-                }
+                // Enable the swipe refresh layout if the WebView is scrolled all the way to the top.  It is updated every time the scroll changes.
+                swipeRefreshLayout.setEnabled(currentWebView.getY() == 0);
             } else {  // Swipe to refresh is disabled.
                 // Disable the swipe refresh layout.
                 swipeRefreshLayout.setEnabled(false);
@@ -4369,6 +4359,18 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
             } else {
                 urlRelativeLayout.setBackground(getResources().getDrawable(R.color.transparent));
             }
+        } else {  // The fragment has not been populated.  Try again in 100 milliseconds.
+            // Create a handler to set the current WebView.
+            Handler setCurrentWebViewHandler = new Handler();
+
+            // Create a runnable to set the current WebView.
+            Runnable setCurrentWebWebRunnable = () -> {
+                // Set the current WebView.
+                setCurrentWebView(pageNumber);
+            };
+
+            // Try setting the current WebView again after 100 milliseconds.
+            setCurrentWebViewHandler.postDelayed(setCurrentWebWebRunnable, 100);
         }
     }