aboutsummaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/org/rssin/android/FilterSettingsActivity.java57
-rw-r--r--app/src/main/java/org/rssin/android/FiltersList.java13
-rw-r--r--app/src/main/res/layout/item_filter_settings_feed.xml9
-rw-r--r--app/src/main/res/values/strings.xml1
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>