diff --git a/AndroidManifest.xml.in b/AndroidManifest.xml.in index 5216c23751e0885f37679a2b7f5191a5e75e6d44..1c60ece10c58d3110698348884041ea4707b1cb2 100644 --- a/AndroidManifest.xml.in +++ b/AndroidManifest.xml.in @@ -72,6 +72,10 @@ <meta-data android:name="android.app.searchable" android:resource="@xml/searchable_addressbook"/> </activity> + <activity android:name=".activity.AddressbookAddWizardActivity" + android:label="Add new Destination" + android:parentActivityName=".activity.AddressbookActivity" > + </activity> <activity android:name="net.i2p.android.i2ptunnel.activity.TunnelListActivity" android:label="I2PTunnel" android:launchMode="singleTop" > diff --git a/src/net/i2p/android/router/activity/AddressbookAddWizardActivity.java b/src/net/i2p/android/router/activity/AddressbookAddWizardActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..13d60507756293ca1dc8f614e542268958dd330c --- /dev/null +++ b/src/net/i2p/android/router/activity/AddressbookAddWizardActivity.java @@ -0,0 +1,43 @@ +package net.i2p.android.router.activity; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.support.v4.app.DialogFragment; +import net.i2p.android.router.fragment.AddressbookFragment; +import net.i2p.android.wizard.model.AbstractWizardModel; +import net.i2p.android.wizard.ui.AbstractWizardActivity; + +public class AddressbookAddWizardActivity extends AbstractWizardActivity { + @Override + protected AbstractWizardModel onCreateModel() { + return new AddressbookAddWizardModel(this); + } + + @Override + protected DialogFragment onGetFinishWizardDialog() { + return new DialogFragment() { + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + return new AlertDialog.Builder(getActivity()) + .setMessage("Add to private addressbook?") + .setPositiveButton("Add", + new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, int which) { + Intent result = new Intent(); + setResult(Activity.RESULT_OK, result); + result.putExtra(AddressbookFragment.ADD_WIZARD_DATA, mWizardModel.save()); + dialog.dismiss(); + finish(); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .create(); + } + }; + } +} diff --git a/src/net/i2p/android/router/activity/AddressbookAddWizardModel.java b/src/net/i2p/android/router/activity/AddressbookAddWizardModel.java new file mode 100644 index 0000000000000000000000000000000000000000..c3cd99421acb5bfe7649c6e6a46755744b5a775a --- /dev/null +++ b/src/net/i2p/android/router/activity/AddressbookAddWizardModel.java @@ -0,0 +1,29 @@ +package net.i2p.android.router.activity; + +import android.content.Context; +import android.content.res.Resources; +import net.i2p.android.wizard.model.AbstractWizardModel; +import net.i2p.android.wizard.model.PageList; +import net.i2p.android.wizard.model.SingleTextFieldPage; + +public class AddressbookAddWizardModel extends AbstractWizardModel { + public AddressbookAddWizardModel(Context context) { + super(context); + } + + @Override + protected PageList onNewRootPageList() { + Resources res = mContext.getResources(); + + return new PageList( + new SingleTextFieldPage(this, "Name") + .setDescription("The name") + .setRequired(true), + + new SingleTextFieldPage(this, "Destination") + .setDescription("The destination") + .setRequired(true) + ); + } + +} diff --git a/src/net/i2p/android/router/fragment/AddressbookFragment.java b/src/net/i2p/android/router/fragment/AddressbookFragment.java index 700275c36c2c3c0fb4f652147515800f013adca3..8f2dc2ee5fd462c1c4d0ad98298d14201bd38276 100644 --- a/src/net/i2p/android/router/fragment/AddressbookFragment.java +++ b/src/net/i2p/android/router/fragment/AddressbookFragment.java @@ -15,6 +15,7 @@ import android.widget.ListView; import android.widget.TextView; import java.util.List; import net.i2p.android.router.R; +import net.i2p.android.router.activity.AddressbookAddWizardActivity; import net.i2p.android.router.activity.AddressbookSettingsActivity; import net.i2p.android.router.activity.HelpActivity; import net.i2p.android.router.adapter.AddressEntryAdapter; @@ -28,6 +29,9 @@ public class AddressbookFragment extends ListFragment implements public static final String BOOK_NAME = "book_name"; public static final String ROUTER_BOOK = "hosts.txt"; public static final String PRIVATE_BOOK = "privatehosts.txt"; + public static final String ADD_WIZARD_DATA = "add_wizard_data"; + + static final int ADD_WIZARD_REQUEST = 1; private static final int ROUTER_LOADER_ID = 1; private static final int PRIVATE_LOADER_ID = 2; @@ -116,8 +120,10 @@ public class AddressbookFragment extends ListFragment implements // Handle presses on the action bar items switch (item.getItemId()) { - //case R.id.action_add_to_addressbook: - // return true; + case R.id.action_add_to_addressbook: + Intent wi = new Intent(getActivity(), AddressbookAddWizardActivity.class); + startActivityForResult(wi, ADD_WIZARD_REQUEST); + return true; case R.id.action_addressbook_settings: Intent si = new Intent(getActivity(), AddressbookSettingsActivity.class); startActivity(si); @@ -132,6 +138,23 @@ public class AddressbookFragment extends ListFragment implements } } + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == ADD_WIZARD_REQUEST && + resultCode == Activity.RESULT_OK && + PRIVATE_BOOK.equals(mBook)) { + // Save the new entry + Bundle entryData = data.getExtras().getBundle(ADD_WIZARD_DATA); + // Reload the list + if (getRouterContext() != null) { + setListShown(false); + getLoaderManager().restartLoader(PRIVATE_LOADER_ID, null, this); + } else { + // Just add to list + } + } + } + public void filterAddresses(String query) { mCurFilter = !TextUtils.isEmpty(query) ? query : null; setListShown(false);