diff options
author | Camil Staps | 2015-05-25 19:44:00 +0200 |
---|---|---|
committer | Camil Staps | 2015-05-25 19:44:00 +0200 |
commit | fb62b5386aeb49455c8b4837577f7274ddf7c070 (patch) | |
tree | 9a879d5c7aa2dd6e5de8323cb00d41cdad381e83 /app/src/main/java | |
parent | Add feeds (diff) |
Delete feeds
Diffstat (limited to 'app/src/main/java')
7 files changed, 62 insertions, 0 deletions
diff --git a/app/src/main/java/org/rssin/android/FeedsActivity.java b/app/src/main/java/org/rssin/android/FeedsActivity.java index fd4ebca..76dafee 100644 --- a/app/src/main/java/org/rssin/android/FeedsActivity.java +++ b/app/src/main/java/org/rssin/android/FeedsActivity.java @@ -14,6 +14,7 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; +import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; @@ -52,6 +53,19 @@ public class FeedsActivity extends ActionBarActivity { feedAdapter = new FeedAdapter(this, R.layout.item_feed, feedsList.getFeeds()); feedsView.setAdapter(feedAdapter); + + feedsView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { + @Override + public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { + Feed feed = feedAdapter.getItem(position); + DefaultStorageProvider + .getInstance(getBaseContext()) + .removeFeed(feed.getStorageKey()); + feedsList.getFeeds().remove(feed); + feedAdapter.notifyDataSetChanged(); + return true; + } + }); } @Override diff --git a/app/src/main/java/org/rssin/android/InternalStorageProvider.java b/app/src/main/java/org/rssin/android/InternalStorageProvider.java index 0868bb6..91534b3 100644 --- a/app/src/main/java/org/rssin/android/InternalStorageProvider.java +++ b/app/src/main/java/org/rssin/android/InternalStorageProvider.java @@ -125,4 +125,9 @@ class InternalStorageProvider implements StorageProvider<String, Storable>, Filt return null; } } + + @Override + public void removeFilter(String key) { + context.deleteFile(getFilename(key, Filter.class)); + } } diff --git a/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java b/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java index 49ddfa8..61bb2e3 100644 --- a/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java +++ b/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java @@ -94,6 +94,13 @@ class SharedPreferencesStorageProvider implements StorageProvider, FilterStorage return (Storable) className.cast(ois.readObject()); } + protected void remove(Object key, Class className) { + context.getSharedPreferences(key.toString(), Context.MODE_PRIVATE) + .edit() + .remove(className.getName()) + .apply(); + } + @Override public Object uniqueKey() { return Long.toString(System.currentTimeMillis()); @@ -121,6 +128,17 @@ class SharedPreferencesStorageProvider implements StorageProvider, FilterStorage } } + @Override + public void removeFilter(Object key) { + SharedPreferences sharedPreferences = context.getSharedPreferences(ADMIN_PREF_KEY, Context.MODE_PRIVATE); + Set<String> names = new HashSet<>(sharedPreferences.getStringSet("filters", new HashSet<String>())); + names.remove(key.toString()); + sharedPreferences + .edit() + .putStringSet("filters", names) + .apply(); + } + /** * Keep track of a new key for a filter in the administration SharedPreferences * @param key @@ -134,6 +152,8 @@ class SharedPreferencesStorageProvider implements StorageProvider, FilterStorage .edit() .putStringSet("filters", names) .apply(); + + remove(key.toString(), Filter.class); } @Override @@ -158,6 +178,19 @@ class SharedPreferencesStorageProvider implements StorageProvider, FilterStorage } } + @Override + public void removeFeed(Object key) { + SharedPreferences sharedPreferences = context.getSharedPreferences(ADMIN_PREF_KEY, Context.MODE_PRIVATE); + Set<String> names = new HashSet<>(sharedPreferences.getStringSet("feeds", new HashSet<String>())); + names.remove(key.toString()); + sharedPreferences + .edit() + .putStringSet("feeds", names) + .apply(); + + remove(key, Feed.class); + } + /** * Keep track of a new key for a filter in the administration SharedPreferences * @param key diff --git a/app/src/main/java/org/rssin/rssin/Feed.java b/app/src/main/java/org/rssin/rssin/Feed.java index 44f3d2e..500feb6 100644 --- a/app/src/main/java/org/rssin/rssin/Feed.java +++ b/app/src/main/java/org/rssin/rssin/Feed.java @@ -64,6 +64,10 @@ public class Feed implements Storable { this.url = new URL(url); } + public Object getStorageKey() { + return storageKey; + } + /** * Cleverly make up a title based on the URL * @todo make it really really clever diff --git a/app/src/main/java/org/rssin/rssin/Filter.java b/app/src/main/java/org/rssin/rssin/Filter.java index a66f955..85a296c 100755 --- a/app/src/main/java/org/rssin/rssin/Filter.java +++ b/app/src/main/java/org/rssin/rssin/Filter.java @@ -84,6 +84,10 @@ public class Filter implements Storable { return feedSorter; } + public Object getStorageKey() { + return storageKey; + } + /** * Ensure that there is a feedSorter linked to this object * Because the feedSorter attribute is transient (if not, serialization for changing settings takes too long), diff --git a/app/src/main/java/org/rssin/storage/FeedStorageProvider.java b/app/src/main/java/org/rssin/storage/FeedStorageProvider.java index 4148308..b299911 100644 --- a/app/src/main/java/org/rssin/storage/FeedStorageProvider.java +++ b/app/src/main/java/org/rssin/storage/FeedStorageProvider.java @@ -11,4 +11,5 @@ import java.util.List; public interface FeedStorageProvider<K> { List<Feed> allFeeds(); Feed getFeed(K key); + void removeFeed(K key); } diff --git a/app/src/main/java/org/rssin/storage/FilterStorageProvider.java b/app/src/main/java/org/rssin/storage/FilterStorageProvider.java index 538562f..44a5fc0 100644 --- a/app/src/main/java/org/rssin/storage/FilterStorageProvider.java +++ b/app/src/main/java/org/rssin/storage/FilterStorageProvider.java @@ -11,4 +11,5 @@ import java.util.List; public interface FilterStorageProvider<K> { List<Filter> allFilters(); Filter getFilter(K key); + void removeFilter(K key); } |