aboutsummaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
authorCamil Staps2015-05-25 19:44:00 +0200
committerCamil Staps2015-05-25 19:44:00 +0200
commitfb62b5386aeb49455c8b4837577f7274ddf7c070 (patch)
tree9a879d5c7aa2dd6e5de8323cb00d41cdad381e83 /app/src/main
parentAdd feeds (diff)
Delete feeds
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/org/rssin/android/FeedsActivity.java14
-rw-r--r--app/src/main/java/org/rssin/android/InternalStorageProvider.java5
-rw-r--r--app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java33
-rw-r--r--app/src/main/java/org/rssin/rssin/Feed.java4
-rwxr-xr-xapp/src/main/java/org/rssin/rssin/Filter.java4
-rw-r--r--app/src/main/java/org/rssin/storage/FeedStorageProvider.java1
-rw-r--r--app/src/main/java/org/rssin/storage/FilterStorageProvider.java1
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);
}