]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/Webview.java
Update urlTextBox when the forward or back buttons are pressed.
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / Webview.java
index 3c69aa70b469330ba1d4e46c5a85b0d05196a7d8..ce6fdb88ebb998db6a8f6cd30c59a328e6a802b6 100644 (file)
@@ -4,12 +4,14 @@ import android.app.Activity;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
+import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.app.AppCompatActivity;
 import android.util.Patterns;
 import android.view.KeyEvent;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewTreeObserver;
 import android.view.inputmethod.InputMethodManager;
 import android.webkit.WebChromeClient;
 import android.webkit.WebView;
@@ -26,6 +28,8 @@ public class Webview extends AppCompatActivity {
     static String formattedUrlString;
     static WebView mainWebView;
     static ProgressBar progressBar;
+    static SwipeRefreshLayout swipeToRefresh;
+    static EditText urlTextBox;
     static final String homepage = "https://www.duckduckgo.com";
 
     @Override
@@ -33,15 +37,37 @@ public class Webview extends AppCompatActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_webview);
 
-        final EditText urlTextBox = (EditText) findViewById(R.id.urlTextBox);
+        urlTextBox = (EditText) findViewById(R.id.urlTextBox);
+        swipeToRefresh = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayoutContainer);
         mainWebView = (WebView) findViewById(R.id.mainWebView);
         progressBar = (ProgressBar) findViewById(R.id.progressBar);
 
+        // Implement swipe down to refresh.
+        swipeToRefresh.setColorSchemeColors(0xFF0097FF);
+        swipeToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+            @Override
+            public void onRefresh() {
+                mainWebView.loadUrl(formattedUrlString);
+            }
+        });
+
+        // Only enable swipeToRefresh if is mainWebView is scrolled to the top.
+        mainWebView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
+            @Override
+            public void onScrollChanged() {
+                if (mainWebView.getScrollY() == 0) {
+                    swipeToRefresh.setEnabled(true);
+                } else {
+                    swipeToRefresh.setEnabled(false);
+                }
+            }
+        });
+
         // setWebViewClient makes this WebView the default handler for URLs inside the app, so that links are not kicked out to other apps.
         // Save the URL to formattedUrlString and update urlTextBox before loading mainWebView.
         mainWebView.setWebViewClient(new WebViewClient() {
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
-                formattedUrlString=url;
+                formattedUrlString = url;
                 urlTextBox.setText(formattedUrlString);
                 mainWebView.loadUrl(formattedUrlString);
                 return true;
@@ -56,6 +82,13 @@ public class Webview extends AppCompatActivity {
                     progressBar.setVisibility(View.VISIBLE);
                 } else {
                     progressBar.setVisibility(View.GONE);
+
+                    // Stop the refreshing indicator if it is running.
+                    swipeToRefresh.setRefreshing(false);
+
+                    // Update the URL in urlTextBox.  It is necessary to do this after the page finishes loading to get the final URL, which can change during load.
+                    formattedUrlString = mainWebView.getUrl();
+                    urlTextBox.setText(formattedUrlString);
                 }
             }
         });
@@ -126,13 +159,23 @@ public class Webview extends AppCompatActivity {
         // Sets the commands that relate to the menu entries.
         switch (menuItemId) {
             case R.id.home:
-                mainWebView.loadUrl(homepage);
+                formattedUrlString = homepage;
+                urlTextBox.setText(formattedUrlString);
+                mainWebView.loadUrl(formattedUrlString);
                 break;
             case R.id.back:
                 mainWebView.goBack();
+
+                // Update the URL in urlTextBox with the URL we are intending to load.  Because this can be altered during load, the final URL is loaded after the progress bar reaches 100%
+                formattedUrlString = mainWebView.getOriginalUrl();
+                urlTextBox.setText(formattedUrlString);
                 break;
             case R.id.forward:
                 mainWebView.goForward();
+
+                // Update the URL in urlTextBox with the URL we are intending to load.  Because this can be altered during load, the final URL is loaded after the progress bar reaches 100%
+                formattedUrlString = mainWebView.getOriginalUrl();
+                urlTextBox.setText(formattedUrlString);
                 break;
         }
 
@@ -144,6 +187,10 @@ public class Webview extends AppCompatActivity {
     public void onBackPressed() {
         if (mainWebView.canGoBack()) {
             mainWebView.goBack();
+
+            // Update the URL in urlTextBox with the URL we are intending to load.  Because this can be altered during load, the final URL is loaded after the progress bar reaches 100%
+            formattedUrlString = mainWebView.getOriginalUrl();
+            urlTextBox.setText(formattedUrlString);
         } else {
             super.onBackPressed();
         }