From 5b9203f77dab7b6162c221c5372c38db9690bb4a Mon Sep 17 00:00:00 2001 From: str4d <str4d@mail.i2p> Date: Fri, 16 Aug 2013 21:19:08 +0000 Subject: [PATCH] File framework for I2PTunnel interface Broken: cannot find net.i2p.i2ptunnel.I2PTunnel (but it can when launching the router) --- AndroidManifest.xml.in | 4 ++ res/layout/listitem_i2ptunnel.xml | 7 +++ res/menu/fragment_i2ptunnel_actions.xml | 9 +++ res/values/arrays.xml | 1 + res/values/strings.xml | 2 + .../router/activity/I2PActivityBase.java | 8 ++- .../router/activity/I2PTunnelActivity.java | 19 +++++++ .../router/fragment/I2PTunnelFragment.java | 57 +++++++++++++++++++ 8 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 res/layout/listitem_i2ptunnel.xml create mode 100644 res/menu/fragment_i2ptunnel_actions.xml create mode 100644 src/net/i2p/android/router/activity/I2PTunnelActivity.java create mode 100644 src/net/i2p/android/router/fragment/I2PTunnelFragment.java diff --git a/AndroidManifest.xml.in b/AndroidManifest.xml.in index 4b807300a..62206439d 100644 --- a/AndroidManifest.xml.in +++ b/AndroidManifest.xml.in @@ -65,6 +65,10 @@ <meta-data android:name="android.app.searchable" android:resource="@xml/searchable_addressbook"/> </activity> + <activity android:name=".activity.I2PTunnelActivity" + android:label="I2PTunnel" + android:launchMode="singleTop" > + </activity> <activity android:name=".activity.LogActivity" android:label="I2P Logs" android:parentActivityName=".activity.MainActivity" > diff --git a/res/layout/listitem_i2ptunnel.xml b/res/layout/listitem_i2ptunnel.xml new file mode 100644 index 000000000..7e058a0f9 --- /dev/null +++ b/res/layout/listitem_i2ptunnel.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<TextView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:padding="6dp" + android:textSize="16sp" > +</TextView> diff --git a/res/menu/fragment_i2ptunnel_actions.xml b/res/menu/fragment_i2ptunnel_actions.xml new file mode 100644 index 000000000..c17e84d26 --- /dev/null +++ b/res/menu/fragment_i2ptunnel_actions.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:i2pandroid="http://schemas.android.com/apk/res-auto" > + <item android:id="@+id/action_add_tunnel" + android:title="@string/action_add" + android:icon="@drawable/ic_content_new" + i2pandroid:showAsAction="ifRoom" /> + +</menu> diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 0fdd1d8fd..4dca62433 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -3,6 +3,7 @@ <string-array name="navdrawer_activity_titles"> <item>@string/label_home</item> <item>@string/label_addressbook</item> + <item>@string/label_i2ptunnel</item> <item>@string/label_logs</item> <item>@string/label_error_logs</item> <item>@string/label_licenses</item> diff --git a/res/values/strings.xml b/res/values/strings.xml index adbfdb73b..7859366b4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -11,6 +11,7 @@ <string name="label_main_controls">Main Controls</string> <string name="label_tools">I2P Tools</string> <string name="label_addressbook">Addressbook</string> + <string name="label_i2ptunnel">I2PTunnel</string> <string name="label_logs">Logs</string> <string name="label_error_logs">Error Logs</string> <string name="label_info_and_pages">Information and pages</string> @@ -69,4 +70,5 @@ <string name="settings_label_expl_backupQuantity">Backup quantity</string> <string name="settings_desc_expl_backupQuantity">How many tunnel backups</string> + <string name="i2ptunnel_not_initialized">Tunnels are not initialized yet, please reload in two minutes.</string> </resources> \ No newline at end of file diff --git a/src/net/i2p/android/router/activity/I2PActivityBase.java b/src/net/i2p/android/router/activity/I2PActivityBase.java index 0275f1427..8e396adb8 100644 --- a/src/net/i2p/android/router/activity/I2PActivityBase.java +++ b/src/net/i2p/android/router/activity/I2PActivityBase.java @@ -103,15 +103,19 @@ public class I2PActivityBase extends ActionBarActivity { startActivity(ab); break; case 2: + Intent itb = new Intent(I2PActivityBase.this, I2PTunnelActivity.class); + startActivity(itb); + break; + case 3: Intent log = new Intent(I2PActivityBase.this, LogActivity.class); startActivity(log); break; - case 3: + case 4: Intent err = new Intent(I2PActivityBase.this, LogActivity.class); err.putExtra(LogActivity.ERRORS_ONLY, true); startActivity(err); break; - case 4: + case 5: Intent lic = new Intent(I2PActivityBase.this, LicenseActivity.class); startActivity(lic); break; diff --git a/src/net/i2p/android/router/activity/I2PTunnelActivity.java b/src/net/i2p/android/router/activity/I2PTunnelActivity.java new file mode 100644 index 000000000..567b269d5 --- /dev/null +++ b/src/net/i2p/android/router/activity/I2PTunnelActivity.java @@ -0,0 +1,19 @@ +package net.i2p.android.router.activity; + +import net.i2p.android.router.R; +import net.i2p.android.router.fragment.I2PTunnelFragment; +import android.os.Bundle; + +public class I2PTunnelActivity extends I2PActivityBase { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // Start with the base view + if (savedInstanceState == null) { + I2PTunnelFragment f = new I2PTunnelFragment(); + f.setArguments(getIntent().getExtras()); + getSupportFragmentManager().beginTransaction() + .add(R.id.main_content, f).commit(); + } + } +} diff --git a/src/net/i2p/android/router/fragment/I2PTunnelFragment.java b/src/net/i2p/android/router/fragment/I2PTunnelFragment.java new file mode 100644 index 000000000..a0894a568 --- /dev/null +++ b/src/net/i2p/android/router/fragment/I2PTunnelFragment.java @@ -0,0 +1,57 @@ +package net.i2p.android.router.fragment; + +import net.i2p.android.router.R; +import net.i2p.i2ptunnel.TunnelControllerGroup; +import android.os.Bundle; +import android.support.v4.app.ListFragment; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; + +public class I2PTunnelFragment extends ListFragment { + private TunnelControllerGroup mGroup; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + TunnelControllerGroup tcg; + String error; + try { + tcg = TunnelControllerGroup.getInstance(); + error = tcg == null ? getResources().getString(R.string.i2ptunnel_not_initialized) : null; + } catch (IllegalArgumentException iae) { + tcg = null; + error = iae.toString(); + } + + if (tcg != null) { + mGroup = tcg; + setEmptyText("Win!"); + } else { + setEmptyText(error); + } + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.fragment_i2ptunnel_actions, menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle presses on the action bar items + switch (item.getItemId()) { + case R.id.action_add_tunnel: + return true; + default: + return super.onOptionsItemSelected(item); + } + } +} -- GitLab