aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org')
-rw-r--r--app/src/main/java/org/rssin/android/FilterSettingsActivity.java57
-rw-r--r--app/src/main/java/org/rssin/android/FiltersList.java13
2 files changed, 52 insertions, 18 deletions
diff --git a/app/src/main/java/org/rssin/android/FilterSettingsActivity.java b/app/src/main/java/org/rssin/android/FilterSettingsActivity.java
index bb7456e..dccad12 100644
--- a/app/src/main/java/org/rssin/android/FilterSettingsActivity.java
+++ b/app/src/main/java/org/rssin/android/FilterSettingsActivity.java
@@ -55,12 +55,7 @@ public class FilterSettingsActivity extends ActionBarActivity {
int filterHashCode = intent.getIntExtra("filter", -1);
// @todo Check on -1? Shouldn't happen anyway.
- for (Filter f : filtersList.getFilters()) {
- if (f.hashCode() == filterHashCode) {
- filter = f;
- break;
- }
- }
+ filter = filtersList.getFilterFromHashCode(filterHashCode);
setTitle();
@@ -132,7 +127,7 @@ public class FilterSettingsActivity extends ActionBarActivity {
public void openFeedsDialog() {
FeedsDialogFragment f = new FeedsDialogFragment();
Bundle bundle = new Bundle();
- bundle.putSerializable("filter", filter);
+ bundle.putInt("filter", filter.hashCode());
f.setArguments(bundle);
f.show(getFragmentManager(), "");
}
@@ -216,23 +211,50 @@ public class FilterSettingsActivity extends ActionBarActivity {
public Dialog onCreateDialog(Bundle savedInstanceState) {
final View view = getActivity().getLayoutInflater().inflate(R.layout.fragment_filter_settings_feeds, null);
- final Filter filter = (Filter) getArguments().getSerializable("filter");
+ final FiltersList filtersList = FiltersList.getInstance();
+ final Filter filter = filtersList.getFilterFromHashCode(getArguments().getInt("filter"));
final FeedAdapter feedAdapter = new FeedAdapter(getActivity(), R.layout.item_filter_settings_feed, filter.getFeeds());
- ((ListView) view.findViewById(R.id.filter_settings_feeds_list)).setAdapter(feedAdapter);
+ ListView feedsListView = (ListView) view.findViewById(R.id.filter_settings_feeds_list);
+ feedsListView.setAdapter(feedAdapter);
+
+ feedsListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
+ @Override
+ public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
+ Feed feed = feedAdapter.getItem(position);
+ filter.getFeeds().remove(feed);
+ try {
+ filtersList.save();
+ feedAdapter.notifyDataSetChanged();
+ return true;
+ } catch (IOException e) {
+ Toast.makeText(getActivity(), getResources().getString(R.string.error_save_filters), Toast.LENGTH_SHORT).show();
+ filter.getFeeds().add(feed);
+ return false;
+ }
+ }
+ });
view.findViewById(R.id.filter_settings_add_feed_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText editText = (EditText) view.findViewById(R.id.filter_settings_add_feed);
- String feed = editText.getText().toString();
+ String value = editText.getText().toString();
try {
- URL url = new URL(feed);
- filter.getFeeds().add(new Feed(
+ URL url = new URL(value);
+ Feed feed = new Feed(
url,
- url.getHost() + " " + feed.substring(feed.lastIndexOf('/') + 1, feed.lastIndexOf('.'))));
- feedAdapter.notifyDataSetChanged();
- editText.setText("");
+ url.getHost() + " " + value.substring(value.lastIndexOf('/') + 1, value.lastIndexOf('.')));
+ filter.getFeeds().add(feed);
+
+ try {
+ filtersList.save();
+ feedAdapter.notifyDataSetChanged();
+ editText.setText("");
+ } catch (IOException e) {
+ Toast.makeText(getActivity(), getResources().getString(R.string.error_save_filters), Toast.LENGTH_SHORT).show();
+ filter.getFeeds().remove(feed);
+ }
} catch (MalformedURLException e) {
Toast.makeText(getActivity(), getResources().getString(R.string.error_invalid_url), Toast.LENGTH_SHORT).show();
}
@@ -241,12 +263,11 @@ public class FilterSettingsActivity extends ActionBarActivity {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.filter_settings_feeds)
- .setPositiveButton(R.string.button_apply, new DialogInterface.OnClickListener() {
+ .setPositiveButton(R.string.button_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// @todo FIRE ZE MISSILES!
}
- })
- .setNegativeButton(R.string.button_cancel, null);
+ });
builder.setView(view);
return builder.create();
diff --git a/app/src/main/java/org/rssin/android/FiltersList.java b/app/src/main/java/org/rssin/android/FiltersList.java
index bae8dc6..608fbc7 100644
--- a/app/src/main/java/org/rssin/android/FiltersList.java
+++ b/app/src/main/java/org/rssin/android/FiltersList.java
@@ -55,6 +55,10 @@ public class FiltersList {
return instance;
}
+ public static FiltersList getInstance() {
+ return instance;
+ }
+
public List<Filter> getFilters() {
return filters;
}
@@ -72,4 +76,13 @@ public class FiltersList {
PreferenceManager.getDefaultSharedPreferences(context).edit().putString(PREF_KEY, string).commit();
}
+ public Filter getFilterFromHashCode(int hashcode) {
+ for (Filter f : filters) {
+ if (f.hashCode() == hashcode) {
+ return f;
+ }
+ }
+ return null;
+ }
+
}