summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/activity
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-07-23 17:05:34 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-07-23 17:05:34 +0200
commitc9197522de26754994c01b5162246ded01413568 (patch)
tree377ed23f392e7e4c36bd4b907aaed77d7b479850 /src/de/danoeh/antennapod/activity
parentd33b959e1197d1f2968530fe5a8d74842cbe118b (diff)
downloadAntennaPod-c9197522de26754994c01b5162246ded01413568.zip
Added chooser activity
Diffstat (limited to 'src/de/danoeh/antennapod/activity')
-rw-r--r--src/de/danoeh/antennapod/activity/MainActivity.java3
-rw-r--r--src/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java95
-rw-r--r--src/de/danoeh/antennapod/activity/OpmlImportActivity.java47
3 files changed, 144 insertions, 1 deletions
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<String> 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<String>(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<String> getTitleList() {
+ List<String> result = new ArrayList<String>();
+ 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<OpmlElement> readElements;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -105,12 +109,53 @@ public class OpmlImportActivity extends SherlockActivity {
@Override
protected void onPostExecute(ArrayList<OpmlElement> 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<OpmlElement> getReadElements() {
+ return readElements;
+ }
+
}