]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/activities/MainWebView.java
Add `Copy URL` to the URL context menus.
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / activities / MainWebView.java
index 5ac470bbf6727152f00007394ecb52b60344ad23..8e06fc8bab2cd24787a7209ccf912c916e7da5e8 100644 (file)
@@ -22,6 +22,8 @@ package com.stoutner.privacybrowser.activities;
 import android.annotation.SuppressLint;
 import android.app.DialogFragment;
 import android.app.DownloadManager;
+import android.content.ClipData;
+import android.content.ClipboardManager;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -936,7 +938,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
             case R.id.clearFormData:
                 WebViewDatabase mainWebViewDatabase = WebViewDatabase.getInstance(this);
                 mainWebViewDatabase.clearFormData();
-                mainWebView.reload();
+                Snackbar.make(findViewById(R.id.mainWebView), R.string.form_data_deleted, Snackbar.LENGTH_SHORT).show();
                 return true;
 
             case R.id.fontSizeFiftyPercent:
@@ -1108,8 +1110,8 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                 domStorage.deleteAllData();
 
                 // Clear form data.
-                WebViewDatabase formData = WebViewDatabase.getInstance(this);
-                formData.clearFormData();
+                WebViewDatabase webViewDatabase = WebViewDatabase.getInstance(this);
+                webViewDatabase.clearFormData();
 
                 // Clear cache.  The argument of "true" includes disk files.
                 mainWebView.clearCache(true);
@@ -1187,6 +1189,9 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         final String imageUrl;
         final String linkUrl;
 
+        // Get a handle for the `ClipboardManager`.
+        final ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
+
         switch (hitTestResult.getType()) {
             // `SRC_ANCHOR_TYPE` is a link.
             case WebView.HitTestResult.SRC_ANCHOR_TYPE:
@@ -1196,7 +1201,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                 // Set the target URL as the title of the `ContextMenu`.
                 menu.setHeaderTitle(linkUrl);
 
-                // Add a `Load URL` button.
+                // Add a `Load URL` entry.
                 menu.add(R.string.load_url).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1205,7 +1210,20 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Cancel` button, which by default closes the `ContextMenu`.
+                // Add a `Copy URL` entry.
+                menu.add(R.string.copy_url).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+                    @Override
+                    public boolean onMenuItemClick(MenuItem item) {
+                        // Save the link URL in a `ClipData`.
+                        ClipData srcAnchorTypeClipData = ClipData.newPlainText(getResources().getString(R.string.url), linkUrl);
+
+                        // Set the `ClipData` as the clipboard's primary clip.
+                        clipboardManager.setPrimaryClip(srcAnchorTypeClipData);
+                        return false;
+                    }
+                });
+
+                // Add a `Cancel` entry, which by default closes the `ContextMenu`.
                 menu.add(R.string.cancel);
                 break;
 
@@ -1216,7 +1234,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                 // Set the target URL as the title of the `ContextMenu`.
                 menu.setHeaderTitle(linkUrl);
 
-                // Add a `Write Email` button.
+                // Add a `Write Email` entry.
                 menu.add(R.string.write_email).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1235,7 +1253,20 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Cancel` button, which by default closes the `ContextMenu`.
+                // Add a `Copy Email Address` entry.
+                menu.add(R.string.copy_email_address).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+                    @Override
+                    public boolean onMenuItemClick(MenuItem item) {
+                        // Save the email address in a `ClipData`.
+                        ClipData srcEmailTypeClipData = ClipData.newPlainText(getResources().getString(R.string.email_address), linkUrl);
+
+                        // Set the `ClipData` as the clipboard's primary clip.
+                        clipboardManager.setPrimaryClip(srcEmailTypeClipData);
+                        return false;
+                    }
+                });
+
+                // Add a `Cancel` entry, which by default closes the `ContextMenu`.
                 menu.add(R.string.cancel);
                 break;
 
@@ -1247,7 +1278,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                 // Set the image URL as the title of the `ContextMenu`.
                 menu.setHeaderTitle(imageUrl);
 
-                // Add a `View Image` button.
+                // Add a `View Image` entry.
                 menu.add(R.string.view_image).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1256,7 +1287,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Download Image` button.
+                // Add a `Download Image` entry.
                 menu.add(R.string.download_image).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1267,7 +1298,20 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Cancel` button, which by default closes the `ContextMenu`.
+                // Add a `Copy URL` entry.
+                menu.add(R.string.copy_url).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+                    @Override
+                    public boolean onMenuItemClick(MenuItem item) {
+                        // Save the image URL in a `ClipData`.
+                        ClipData srcImageTypeClipData = ClipData.newPlainText(getResources().getString(R.string.url), imageUrl);
+
+                        // Set the `ClipData` as the clipboard's primary clip.
+                        clipboardManager.setPrimaryClip(srcImageTypeClipData);
+                        return false;
+                    }
+                });
+
+                // Add a `Cancel` entry, which by default closes the `ContextMenu`.
                 menu.add(R.string.cancel);
                 break;
 
@@ -1280,7 +1324,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                 // Set the image URL as the title of the `ContextMenu`.
                 menu.setHeaderTitle(imageUrl);
 
-                // Add a `View Image` button.
+                // Add a `View Image` entry.
                 menu.add(R.string.view_image).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1289,7 +1333,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Download Image` button.
+                // Add a `Download Image` entry.
                 menu.add(R.string.download_image).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1300,7 +1344,20 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Cancel` button, which by default closes the `ContextMenu`.
+                // Add a `Copy URL` entry.
+                menu.add(R.string.copy_url).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+                    @Override
+                    public boolean onMenuItemClick(MenuItem item) {
+                        // Save the image URL in a `ClipData`.
+                        ClipData srcImageAnchorTypeClipData = ClipData.newPlainText(getResources().getString(R.string.url), imageUrl);
+
+                        // Set the `ClipData` as the clipboard's primary clip.
+                        clipboardManager.setPrimaryClip(srcImageAnchorTypeClipData);
+                        return false;
+                    }
+                });
+
+                // Add a `Cancel` entry, which by default closes the `ContextMenu`.
                 menu.add(R.string.cancel);
                 break;
         }
@@ -1417,11 +1474,9 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         mainWebView.clearHistory();
     }
 
-    // Override onBackPressed to handle the navigation drawer and mainWebView.
+    // Override `onBackPressed` to handle the navigation drawer and `mainWebView`.
     @Override
     public void onBackPressed() {
-        final WebView mainWebView = (WebView) findViewById(R.id.mainWebView);
-
         // Close the navigation drawer if it is available.  GravityCompat.START is the drawer on the left on Left-to-Right layout text.
         if (drawerLayout.isDrawerVisible(GravityCompat.START)) {
             drawerLayout.closeDrawer(GravityCompat.START);
@@ -1430,7 +1485,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
             if (mainWebView.canGoBack()) {
                 mainWebView.goBack();
             } else {
-                // Pass onBackPressed to the system.
+                // Pass `onBackPressed()` to the system.
                 super.onBackPressed();
             }
         }
@@ -1562,7 +1617,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
 
         // Store the values from `sharedPreferences` in variables.
-        String userAgentString = sharedPreferences.getString("user_agent", "Default user agent");
+        String userAgentString = sharedPreferences.getString("user_agent", "PrivacyBrowser/1.0");
         String customUserAgentString = sharedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0");
         String javaScriptDisabledSearchString = sharedPreferences.getString("javascript_disabled_search", "https://duckduckgo.com/html/?q=");
         String javaScriptDisabledCustomSearchString = sharedPreferences.getString("javascript_disabled_search_custom_url", "");