From 57d81fb14ded4140638b3098f90484a0b2a4e15f Mon Sep 17 00:00:00 2001
From: str4d <str4d@mail.i2p>
Date: Fri, 9 Aug 2013 23:30:37 +0000
Subject: [PATCH] Migrated home buttons to use Fragment transactions

---
 .../android/router/fragment/MainFragment.java | 63 ++++++++++++++-----
 .../router/fragment/TextResourceFragment.java |  4 +-
 .../android/router/fragment/WebFragment.java  | 11 ++--
 3 files changed, 52 insertions(+), 26 deletions(-)

diff --git a/src/net/i2p/android/router/fragment/MainFragment.java b/src/net/i2p/android/router/fragment/MainFragment.java
index db5477540..461573fa6 100644
--- a/src/net/i2p/android/router/fragment/MainFragment.java
+++ b/src/net/i2p/android/router/fragment/MainFragment.java
@@ -4,7 +4,6 @@ import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.view.LayoutInflater;
@@ -69,8 +68,11 @@ public class MainFragment extends I2PFragmentBase {
         b.setOnClickListener(new View.OnClickListener() {
 
             public void onClick(View view) {
-                Intent intent = new Intent(view.getContext(), NewsFragment.class);
-                startActivity(intent);
+                getActivity().getSupportFragmentManager()
+                             .beginTransaction()
+                             .replace(R.id.main_content, new NewsFragment())
+                             .addToBackStack(null)
+                             .commit();
             }
         });
 
@@ -78,9 +80,15 @@ public class MainFragment extends I2PFragmentBase {
         b.setOnClickListener(new View.OnClickListener() {
 
             public void onClick(View view) {
-                Intent intent = new Intent(view.getContext(), TextResourceFragment.class);
-                intent.putExtra(TextResourceFragment.TEXT_RESOURCE_ID, R.raw.releasenotes_txt);
-                startActivity(intent);
+                TextResourceFragment f = new TextResourceFragment();
+                Bundle args = new Bundle();
+                args.putInt(TextResourceFragment.TEXT_RESOURCE_ID, R.raw.releasenotes_txt);
+                f.setArguments(args);
+                getActivity().getSupportFragmentManager()
+                             .beginTransaction()
+                             .replace(R.id.main_content, f)
+                             .addToBackStack(null)
+                             .commit();
             }
         });
 
@@ -99,10 +107,16 @@ public class MainFragment extends I2PFragmentBase {
         b.setOnClickListener(new View.OnClickListener() {
 
             public void onClick(View view) {
-                Intent intent = new Intent(view.getContext(), WebFragment.class);
                 //intent.setData((new Uri.Builder()).scheme("http").authority("www.i2p2.de").path("/").build());
-                intent.setData(Uri.parse("http://www.i2p2.de/"));
-                startActivity(intent);
+                WebFragment f = new WebFragment();
+                Bundle args = new Bundle();
+                args.putString(WebFragment.HTML_URI, "http://www.i2p2.de/");
+                f.setArguments(args);
+                getActivity().getSupportFragmentManager()
+                             .beginTransaction()
+                             .replace(R.id.main_content, f)
+                             .addToBackStack(null)
+                             .commit();
             }
         });
 
@@ -110,10 +124,16 @@ public class MainFragment extends I2PFragmentBase {
         b.setOnClickListener(new View.OnClickListener() {
 
             public void onClick(View view) {
-                Intent intent = new Intent(view.getContext(), WebFragment.class);
                 //intent.setData((new Uri.Builder()).scheme("http").authority("www.i2p2.de").path("/faq").build());
-                intent.setData(Uri.parse("http://www.i2p2.de/faq"));
-                startActivity(intent);
+                WebFragment f = new WebFragment();
+                Bundle args = new Bundle();
+                args.putString(WebFragment.HTML_URI, "http://www.i2p2.de/faq");
+                f.setArguments(args);
+                getActivity().getSupportFragmentManager()
+                             .beginTransaction()
+                             .replace(R.id.main_content, f)
+                             .addToBackStack(null)
+                             .commit();
             }
         });
 
@@ -121,9 +141,15 @@ public class MainFragment extends I2PFragmentBase {
         b.setOnClickListener(new View.OnClickListener() {
 
             public void onClick(View view) {
-                Intent intent = new Intent(view.getContext(), WebFragment.class);
-                intent.putExtra(WebFragment.HTML_RESOURCE_ID, R.raw.welcome_html);
-                startActivity(intent);
+                WebFragment f = new WebFragment();
+                Bundle args = new Bundle();
+                args.putInt(WebFragment.HTML_RESOURCE_ID, R.raw.welcome_html);
+                f.setArguments(args);
+                getActivity().getSupportFragmentManager()
+                             .beginTransaction()
+                             .replace(R.id.main_content, f)
+                             .addToBackStack(null)
+                             .commit();
             }
         });
 
@@ -159,8 +185,11 @@ public class MainFragment extends I2PFragmentBase {
         b.setOnClickListener(new View.OnClickListener() {
 
             public void onClick(View view) {
-                Intent intent = new Intent(view.getContext(), PeersFragment.class);
-                startActivity(intent);
+                getActivity().getSupportFragmentManager()
+                             .beginTransaction()
+                             .replace(R.id.main_content, new PeersFragment())
+                             .addToBackStack(null)
+                             .commit();
             }
         });
 
diff --git a/src/net/i2p/android/router/fragment/TextResourceFragment.java b/src/net/i2p/android/router/fragment/TextResourceFragment.java
index ad0ba0092..90e1f4bfe 100644
--- a/src/net/i2p/android/router/fragment/TextResourceFragment.java
+++ b/src/net/i2p/android/router/fragment/TextResourceFragment.java
@@ -1,6 +1,5 @@
 package net.i2p.android.router.fragment;
 
-import android.content.Intent;
 import android.content.res.Resources;
 import android.os.Bundle;
 import android.text.method.ScrollingMovementMethod;
@@ -30,8 +29,7 @@ public class TextResourceFragment extends I2PFragmentBase {
         View v = inflater.inflate(R.layout.text_resource, container, false);
         TextView tv = (TextView) v.findViewById(R.id.text_resource_text);
         tv.setMovementMethod(ScrollingMovementMethod.getInstance());
-        Intent intent = getActivity().getIntent();
-        int id = intent.getIntExtra(TEXT_RESOURCE_ID, R.raw.releasenotes_txt);
+        int id = getArguments().getInt(TEXT_RESOURCE_ID, R.raw.releasenotes_txt);
         if (id == R.raw.releasenotes_txt)
             tv.setText("Release Notes for Release " + Util.getOurVersion(getActivity()) + "\n\n" +
                        getResourceAsString(id));
diff --git a/src/net/i2p/android/router/fragment/WebFragment.java b/src/net/i2p/android/router/fragment/WebFragment.java
index bdeaddc5f..5fcfaf030 100644
--- a/src/net/i2p/android/router/fragment/WebFragment.java
+++ b/src/net/i2p/android/router/fragment/WebFragment.java
@@ -1,10 +1,8 @@
 package net.i2p.android.router.fragment;
 
-import android.content.Intent;
 import android.content.res.Resources;
 import android.net.Uri;
 import android.os.Bundle;
-import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
@@ -21,6 +19,7 @@ public class WebFragment extends I2PFragmentBase {
 
     private I2PWebViewClient _wvClient;
 
+    final static String HTML_URI = "html_url";
     final static String HTML_RESOURCE_ID = "html_resource_id";
     private static final String WARNING = "Warning - " +
                "any non-I2P links visited in this window are fetched over the regular internet and are " +
@@ -39,16 +38,16 @@ public class WebFragment extends I2PFragmentBase {
         wv.getSettings().setBuiltInZoomControls(true);
         // http://stackoverflow.com/questions/2369310/webview-double-tap-zoom-not-working-on-a-motorola-droid-a855
         wv.getSettings().setUseWideViewPort(true);
-        Intent intent = getActivity().getIntent();
-        Uri uri = intent.getData();
-        if (uri != null) {
+        String uriStr =  getArguments().getString(HTML_URI);
+        if (uriStr != null) {
+            Uri uri = Uri.parse(uriStr);
             //wv.getSettings().setLoadsImagesAutomatically(true);
             //wv.loadUrl(uri.toString());
             // go thru the client so .i2p will work too
             _wvClient.shouldOverrideUrlLoading(wv, uri.toString());
         } else {
             wv.getSettings().setLoadsImagesAutomatically(false);
-            int id = intent.getIntExtra(HTML_RESOURCE_ID, 0);
+            int id = getArguments().getInt(HTML_RESOURCE_ID, 0);
             // no default, so restart should keep previous view
             if (id != 0)
                 loadResource(wv, id);
-- 
GitLab