From 7424e5b70743e1036f1c407c1d5e10e3893090dd Mon Sep 17 00:00:00 2001
From: str4d <str4d@mail.i2p>
Date: Tue, 4 Nov 2014 01:03:59 +0000
Subject: [PATCH] Browser configuration guides for embedded, Orweb, unknown and
 unsupported

---
 .../net/i2p/android/help/BrowserAdapter.java  |  7 +-
 .../i2p/android/help/BrowserListFragment.java |  1 -
 .../net/i2p/android/help/HelpActivity.java    | 69 ++++++++++++++-----
 ...rowser.html => help_embedded_browser.html} |  6 +-
 .../help_info_guardianproject_browser.html    | 11 +++
 app/src/main/res/raw/help_main.html           |  5 ++
 .../main/res/raw/help_unknown_browser.html    |  9 +++
 .../res/raw/help_unsupported_browser.html     |  7 ++
 8 files changed, 86 insertions(+), 29 deletions(-)
 rename app/src/main/res/raw/{help_configure_browser.html => help_embedded_browser.html} (70%)
 create mode 100644 app/src/main/res/raw/help_info_guardianproject_browser.html
 create mode 100644 app/src/main/res/raw/help_unknown_browser.html
 create mode 100644 app/src/main/res/raw/help_unsupported_browser.html

diff --git a/app/src/main/java/net/i2p/android/help/BrowserAdapter.java b/app/src/main/java/net/i2p/android/help/BrowserAdapter.java
index 5054e5095..d142159c8 100644
--- a/app/src/main/java/net/i2p/android/help/BrowserAdapter.java
+++ b/app/src/main/java/net/i2p/android/help/BrowserAdapter.java
@@ -31,7 +31,7 @@ public class BrowserAdapter extends RecyclerView.Adapter<BrowserAdapter.ViewHold
     }
 
     public static interface OnBrowserSelectedListener {
-        public void onBrowserSelected(String packageName, boolean known, boolean supported);
+        public void onBrowserSelected(Browser browser);
     }
 
     public BrowserAdapter(Context ctx, OnBrowserSelectedListener listener) {
@@ -55,8 +55,7 @@ public class BrowserAdapter extends RecyclerView.Adapter<BrowserAdapter.ViewHold
                                                         int viewType) {
         View v = LayoutInflater.from(parent.getContext())
                 .inflate(R.layout.listitem_browser, parent, false);
-        ViewHolder vh = new ViewHolder(v);
-        return vh;
+        return new ViewHolder(v);
     }
 
     // Replace the contents of a view (invoked by the layout manager)
@@ -76,7 +75,7 @@ public class BrowserAdapter extends RecyclerView.Adapter<BrowserAdapter.ViewHold
         holder.itemView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                mListener.onBrowserSelected(browser.packageName, browser.isKnown, browser.isSupported);
+                mListener.onBrowserSelected(browser);
             }
         });
     }
diff --git a/app/src/main/java/net/i2p/android/help/BrowserListFragment.java b/app/src/main/java/net/i2p/android/help/BrowserListFragment.java
index f1ac5a769..6ecf3383b 100644
--- a/app/src/main/java/net/i2p/android/help/BrowserListFragment.java
+++ b/app/src/main/java/net/i2p/android/help/BrowserListFragment.java
@@ -9,7 +9,6 @@ import android.net.Uri;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.LoaderManager;
-import android.support.v4.content.AsyncTaskLoader;
 import android.support.v4.content.Loader;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
diff --git a/app/src/main/java/net/i2p/android/help/HelpActivity.java b/app/src/main/java/net/i2p/android/help/HelpActivity.java
index b3acf940d..da27d253d 100644
--- a/app/src/main/java/net/i2p/android/help/HelpActivity.java
+++ b/app/src/main/java/net/i2p/android/help/HelpActivity.java
@@ -15,7 +15,6 @@ import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.ScrollView;
 import android.widget.Spinner;
-import android.widget.Toast;
 
 import net.i2p.android.router.LicenseActivity;
 import net.i2p.android.router.R;
@@ -23,6 +22,8 @@ import net.i2p.android.router.dialog.TextResourceDialog;
 
 import org.sufficientlysecure.htmltextview.HtmlTextView;
 
+import java.lang.reflect.Field;
+
 public class HelpActivity extends ActionBarActivity implements
         BrowserAdapter.OnBrowserSelectedListener {
     public static final String CATEGORY = "help_category";
@@ -147,21 +148,21 @@ public class HelpActivity extends ActionBarActivity implements
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
-        case R.id.menu_help_licenses:
-            Intent lic = new Intent(HelpActivity.this, LicenseActivity.class);
-            startActivity(lic);
-            return true;
-        case R.id.menu_help_release_notes:
-            TextResourceDialog dialog = new TextResourceDialog();
-            Bundle args = new Bundle();
-            args.putString(TextResourceDialog.TEXT_DIALOG_TITLE,
-                    getResources().getString(R.string.label_release_notes));
-            args.putInt(TextResourceDialog.TEXT_RESOURCE_ID, R.raw.releasenotes_txt);
-            dialog.setArguments(args);
-            dialog.show(getSupportFragmentManager(), "release_notes");
-            return true;
-        default:
-            return super.onOptionsItemSelected(item);
+            case R.id.menu_help_licenses:
+                Intent lic = new Intent(HelpActivity.this, LicenseActivity.class);
+                startActivity(lic);
+                return true;
+            case R.id.menu_help_release_notes:
+                TextResourceDialog dialog = new TextResourceDialog();
+                Bundle args = new Bundle();
+                args.putString(TextResourceDialog.TEXT_DIALOG_TITLE,
+                        getResources().getString(R.string.label_release_notes));
+                args.putInt(TextResourceDialog.TEXT_RESOURCE_ID, R.raw.releasenotes_txt);
+                dialog.setArguments(args);
+                dialog.show(getSupportFragmentManager(), "release_notes");
+                return true;
+            default:
+                return super.onOptionsItemSelected(item);
         }
     }
 
@@ -174,8 +175,38 @@ public class HelpActivity extends ActionBarActivity implements
     // BrowserAdapter.OnBrowserSelected
 
     @Override
-    public void onBrowserSelected(String packageName, boolean known, boolean supported) {
-        // TODO Implement
-        Toast.makeText(this, packageName, Toast.LENGTH_SHORT).show();
+    public void onBrowserSelected(Browser browser) {
+        int file;
+        if (browser.isKnown) {
+            if (browser.isSupported) {
+                // Check for embedded browser
+                if (browser.packageName.startsWith("net.i2p.android"))
+                    file = R.raw.help_embedded_browser;
+                else {
+                    // Load the configuration guide for this browser
+                    try {
+                        String name = "help_" + browser.packageName.replace('.', '_');
+                        Class res = R.raw.class;
+                        Field field = res.getField(name);
+                        file = field.getInt(null);
+                    } catch (Exception e) {
+                        file = R.raw.help_unknown_browser;
+                    }
+                }
+            } else
+                file = R.raw.help_unsupported_browser;
+        } else
+            file = R.raw.help_unknown_browser;
+        HelpHtmlFragment configFrag = HelpHtmlFragment.newInstance(file);
+        if (mTwoPane) {
+            getSupportFragmentManager().beginTransaction()
+                    .replace(R.id.detail_fragment, configFrag)
+                    .commit();
+        } else {
+            getSupportFragmentManager().beginTransaction()
+                    .replace(R.id.main_fragment, configFrag)
+                    .addToBackStack("config" + browser.packageName)
+                    .commit();
+        }
     }
 }
diff --git a/app/src/main/res/raw/help_configure_browser.html b/app/src/main/res/raw/help_embedded_browser.html
similarity index 70%
rename from app/src/main/res/raw/help_configure_browser.html
rename to app/src/main/res/raw/help_embedded_browser.html
index 3cb6a0e7e..3cff9e0b1 100644
--- a/app/src/main/res/raw/help_configure_browser.html
+++ b/app/src/main/res/raw/help_embedded_browser.html
@@ -1,12 +1,8 @@
 <html>
 <head></head>
 <body>
-<h2>Pre-configured HTTP proxy</h2>
-<p>The app starts an HTTP proxy at localhost port 4444. To use it, configure your browser's HTTP proxy setting to use localhost:4444.</p>
-<p>The HTTP proxy is tested with the "Orweb" app. It should also work with Firefox 4 Mobile and the ProxyMob Firefox plugin, if you have at least 512 MB of RAM.</p>
-
 <h2>Embedded web browser</h2>
-<p>An embedded web browser is provided for convenience that will open .i2p addresses. However, it is not recommended for general use; users should download the Orweb browser, or Firefox Mobile and the ProxyMob Firefox plugin.</p>
+<p>An embedded web browser is provided for convenience that will open .i2p addresses. However, it is not recommended for general use.</p>
 <p>The browser does not use the outproxy for regular web sites. Javascript is disabled.</p>
 
 <p>The following problems with eepsites are probably not fixable except on Android 3.0 (Honeycomb - i.e. tablets) and higher due to API limitations. The workaround is to use Firefox Mobile 4 and the ProxMob plugin (see below).</p>
diff --git a/app/src/main/res/raw/help_info_guardianproject_browser.html b/app/src/main/res/raw/help_info_guardianproject_browser.html
new file mode 100644
index 000000000..43c0527f2
--- /dev/null
+++ b/app/src/main/res/raw/help_info_guardianproject_browser.html
@@ -0,0 +1,11 @@
+<html>
+<head></head>
+<body>
+<h2>How to configure Orweb:</h2>
+<ol>
+    <li>Open Orweb's settings menu.</li>
+    <li>Change the "Proxy Port" to 4444.</li>
+    <li>Exit Orweb using the back button, then open it again.</li>
+</ol>
+</body>
+</html>
\ No newline at end of file
diff --git a/app/src/main/res/raw/help_main.html b/app/src/main/res/raw/help_main.html
index 28b28c186..0c69bbdc7 100644
--- a/app/src/main/res/raw/help_main.html
+++ b/app/src/main/res/raw/help_main.html
@@ -7,5 +7,10 @@
 <h2>How do I use it?</h2>
 <p>If you want to view I2P sites, see the "Browser configuration" help category.</p>
 <p>With this app installed, other apps that are designed for I2P will use it automatically.</p>
+
+<h2>Pre-configured HTTP proxy</h2>
+<p>The app starts an HTTP proxy at localhost port 4444. To use it, configure your browser's HTTP proxy setting to use localhost:4444.</p>
+<p>The HTTP proxy is tested with the "Orweb" app. It should also work with Firefox 4 Mobile and the ProxyMob Firefox plugin, if you have at least 512 MB of RAM.</p>
+<p>See the "Browser configuration" help page for more info.</p>
 </body>
 </html>
\ No newline at end of file
diff --git a/app/src/main/res/raw/help_unknown_browser.html b/app/src/main/res/raw/help_unknown_browser.html
new file mode 100644
index 000000000..45ecbfa70
--- /dev/null
+++ b/app/src/main/res/raw/help_unknown_browser.html
@@ -0,0 +1,9 @@
+<html>
+<head></head>
+<body>
+<h2>This browser is unknown</h2>
+<p>We have not tested this browser with I2P, so we don't know anything about it.</p>
+<p>But if this browser supports proxies, it will work with I2P.</p>
+<p>Configure this browser's HTTP proxy setting to use <code>localhost:4444</code>.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/app/src/main/res/raw/help_unsupported_browser.html b/app/src/main/res/raw/help_unsupported_browser.html
new file mode 100644
index 000000000..fd826ebc0
--- /dev/null
+++ b/app/src/main/res/raw/help_unsupported_browser.html
@@ -0,0 +1,7 @@
+<html>
+<head></head>
+<body>
+<h2>Sorry, this browser is unsupported</h2>
+<p>This browser does not support HTTP proxies, so it can't be used with I2P.</p>
+</body>
+</html>
\ No newline at end of file
-- 
GitLab