From c9197522de26754994c01b5162246ded01413568 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Mon, 23 Jul 2012 17:05:34 +0200 Subject: Added chooser activity --- .../danoeh/antennapod/activity/MainActivity.java | 3 + .../activity/OpmlFeedChooserActivity.java | 95 ++++++++++++++++++++++ .../antennapod/activity/OpmlImportActivity.java | 47 ++++++++++- 3 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 src/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java (limited to 'src/de/danoeh/antennapod/activity') diff --git a/src/de/danoeh/antennapod/activity/MainActivity.java b/src/de/danoeh/antennapod/activity/MainActivity.java index b58ac3cd4..3423ddc21 100644 --- a/src/de/danoeh/antennapod/activity/MainActivity.java +++ b/src/de/danoeh/antennapod/activity/MainActivity.java @@ -105,6 +105,9 @@ public class MainActivity extends SherlockFragmentActivity { case R.id.show_player: startActivity(new Intent(this, MediaplayerActivity.class)); return true; + case R.id.opml_import: + startActivity(new Intent(this, OpmlImportActivity.class)); + return true; default: return super.onOptionsItemSelected(item); } diff --git a/src/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java b/src/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java new file mode 100644 index 000000000..44a9cc878 --- /dev/null +++ b/src/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java @@ -0,0 +1,95 @@ +package de.danoeh.antennapod.activity; + +import java.util.ArrayList; +import java.util.List; + +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.util.SparseBooleanArray; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.ListView; + +import com.actionbarsherlock.app.SherlockActivity; + +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.opml.OpmlElement; + +public class OpmlFeedChooserActivity extends SherlockActivity { + private static final String TAG = "OpmlFeedChooserActivity"; + + public static final String EXTRA_SELECTED_ITEMS = "de.danoeh.antennapod.selectedItems"; + + private Button butConfirm; + private Button butCancel; + private ListView feedlist; + private ArrayAdapter listAdapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.opml_selection); + butConfirm = (Button) findViewById(R.id.butConfirm); + butCancel = (Button) findViewById(R.id.butCancel); + feedlist = (ListView) findViewById(R.id.feedlist); + + feedlist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); + listAdapter = new ArrayAdapter(this, + android.R.layout.simple_list_item_multiple_choice, + getTitleList()); + + feedlist.setAdapter(listAdapter); + + butCancel.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + setResult(RESULT_CANCELED); + finish(); + } + }); + + butConfirm.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + Intent intent = new Intent(); + SparseBooleanArray checked = feedlist.getCheckedItemPositions(); + + int checkedCount = 0; + // Get number of checked items + for (int i = 0; i < checked.size(); i++) { + if (checked.valueAt(i)) { + checkedCount++; + } + } + int[] selection = new int[checkedCount]; + for (int i = 0, collected = 0; collected < checkedCount; i++) { + if (checked.valueAt(i)) { + selection[collected] = checked.keyAt(i); + collected++; + } + } + intent.putExtra(EXTRA_SELECTED_ITEMS, selection); + setResult(RESULT_OK, intent); + finish(); + }}); + + } + + private List getTitleList() { + List result = new ArrayList(); + if (OpmlImportActivity.getReadElements() != null) { + for (OpmlElement element : OpmlImportActivity.getReadElements()) { + result.add(element.getText()); + } + + } + return result; + } + + +} diff --git a/src/de/danoeh/antennapod/activity/OpmlImportActivity.java b/src/de/danoeh/antennapod/activity/OpmlImportActivity.java index 3acf96f55..8d58f3e39 100644 --- a/src/de/danoeh/antennapod/activity/OpmlImportActivity.java +++ b/src/de/danoeh/antennapod/activity/OpmlImportActivity.java @@ -3,6 +3,7 @@ package de.danoeh.antennapod.activity; import java.io.File; import java.util.ArrayList; +import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -16,6 +17,7 @@ import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.asynctask.OpmlFeedQueuer; import de.danoeh.antennapod.asynctask.OpmlImportWorker; import de.danoeh.antennapod.opml.OpmlElement; import de.danoeh.antennapod.util.StorageUtils; @@ -31,6 +33,8 @@ public class OpmlImportActivity extends SherlockActivity { private OpmlImportWorker importWorker; + private static ArrayList readElements; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -105,12 +109,53 @@ public class OpmlImportActivity extends SherlockActivity { @Override protected void onPostExecute(ArrayList result) { super.onPostExecute(result); - + if (result != null) { + if (AppConfig.DEBUG) Log.d(TAG, "Parsing was successful"); + readElements = result; + startActivityForResult(new Intent( + OpmlImportActivity.this, + OpmlFeedChooserActivity.class), 0); + } else { + if (AppConfig.DEBUG) Log.d(TAG, "Parser error occured"); + } } }; + importWorker.executeAsync(); } else { Log.e(TAG, "Import directory is empty"); } } } + + + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (AppConfig.DEBUG) Log.d(TAG, "Received result"); + if (resultCode == RESULT_CANCELED) { + if (AppConfig.DEBUG) Log.d(TAG, "Activity was cancelled"); + } else { + int[] selected = data.getIntArrayExtra(OpmlFeedChooserActivity.EXTRA_SELECTED_ITEMS); + if (selected != null && selected.length > 0) { + OpmlFeedQueuer queuer = new OpmlFeedQueuer(this, selected){ + + @Override + protected void onPostExecute(Void result) { + super.onPostExecute(result); + finish(); + } + + }; + queuer.executeAsync(); + } else { + if (AppConfig.DEBUG) Log.d(TAG, "No items were selected"); + } + } + } + + + public static ArrayList getReadElements() { + return readElements; + } + } -- cgit v1.2.3