diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d139301..bbd8be8 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -37,6 +37,9 @@
+
diff --git a/res/layout/fragment_network_info.xml b/res/layout/fragment_network_info.xml
new file mode 100644
index 0000000..b2955a2
--- /dev/null
+++ b/res/layout/fragment_network_info.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 48bfe6c..e515a4a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -58,6 +58,12 @@
Browse
Save contact
+ Local Destination:
+ Not set
+ Kademlia Peers:
+ Relay Peers:
+ Banned Peers:
+
General
General settings and default identity settings
Auto-check mail
diff --git a/src/i2p/bote/android/EmailListActivity.java b/src/i2p/bote/android/EmailListActivity.java
index ff49946..d2bcc0a 100644
--- a/src/i2p/bote/android/EmailListActivity.java
+++ b/src/i2p/bote/android/EmailListActivity.java
@@ -164,7 +164,8 @@ public class EmailListActivity extends ActionBarActivity implements
});
mNetworkStatus.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
- // TODO: network status page
+ Intent nii = new Intent(EmailListActivity.this, NetworkInfoActivity.class);
+ startActivity(nii);
}
});
diff --git a/src/i2p/bote/android/NetworkInfoActivity.java b/src/i2p/bote/android/NetworkInfoActivity.java
new file mode 100644
index 0000000..1e8ae58
--- /dev/null
+++ b/src/i2p/bote/android/NetworkInfoActivity.java
@@ -0,0 +1,21 @@
+package i2p.bote.android;
+
+import android.os.Bundle;
+import android.support.v7.app.ActionBarActivity;
+
+public class NetworkInfoActivity extends ActionBarActivity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setTitle(R.string.compose);
+
+ // Enable ActionBar app icon to behave as action to go back
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+ if (savedInstanceState == null) {
+ NetworkInfoFragment f = new NetworkInfoFragment();
+ getSupportFragmentManager().beginTransaction()
+ .add(android.R.id.content, f).commit();
+ }
+ }
+}
diff --git a/src/i2p/bote/android/NetworkInfoFragment.java b/src/i2p/bote/android/NetworkInfoFragment.java
new file mode 100644
index 0000000..feb0362
--- /dev/null
+++ b/src/i2p/bote/android/NetworkInfoFragment.java
@@ -0,0 +1,48 @@
+package i2p.bote.android;
+
+import java.util.Collection;
+import java.util.Set;
+
+import net.i2p.data.Destination;
+import i2p.bote.I2PBote;
+import i2p.bote.Util;
+import i2p.bote.network.BannedPeer;
+import i2p.bote.network.DhtPeerStats;
+import i2p.bote.network.RelayPeer;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+public class NetworkInfoFragment extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment_network_info, container, false);
+ }
+
+ @Override
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+
+ Destination dest = I2PBote.getInstance().getLocalDestination();
+ if (dest != null)
+ ((TextView) view.findViewById(R.id.local_destination)).setText(
+ Util.toBase32(dest));
+
+ DhtPeerStats dhtStats = I2PBote.getInstance().getDhtStats();
+ if (dhtStats != null)
+ ((TextView) view.findViewById(R.id.kademlia_peers)).setText(
+ "" + dhtStats.getData().size());
+
+ Set relayPeers = I2PBote.getInstance().getRelayPeers();
+ ((TextView) view.findViewById(R.id.relay_peers)).setText(
+ "" + relayPeers.size());
+
+ Collection bannedPeers = I2PBote.getInstance().getBannedPeers();
+ ((TextView) view.findViewById(R.id.banned_peers)).setText(
+ "" + bannedPeers.size());
+ }
+}