diff options
Diffstat (limited to 'app/src')
4 files changed, 57 insertions, 23 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; + } + } diff --git a/app/src/main/res/layout/item_filter_settings_feed.xml b/app/src/main/res/layout/item_filter_settings_feed.xml index 65047bf..ed3d596 100644 --- a/app/src/main/res/layout/item_filter_settings_feed.xml +++ b/app/src/main/res/layout/item_filter_settings_feed.xml @@ -3,18 +3,17 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" - android:layout_height="fill_parent"> + android:layout_height="fill_parent" + android:padding="10dp"> <TextView android:id="@+id/filter_settings_feed_item_title" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:textSize="@dimen/font_size_large" - android:padding="10dp"/> + android:textSize="@dimen/font_size_large"/> <TextView android:id="@+id/filter_settings_feed_item_url" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:textSize="@dimen/font_size_normal" - android:padding="10dp"/> + android:textSize="@dimen/font_size_normal"/> </LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7b3dfd7..9b5ffb4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,6 +4,7 @@ <string name="action_settings">Settings</string> <string name="action_filters">Filters</string> + <string name="button_ok">OK</string> <string name="button_apply">Apply</string> <string name="button_cancel">Cancel</string> |