diff options
author | Size43 | 2015-05-28 21:34:36 +0200 |
---|---|---|
committer | Size43 | 2015-05-28 21:34:36 +0200 |
commit | e59f32251ee90757f3b802df45aac8e82d0b75b5 (patch) | |
tree | f06e385e22040a6c6db0a97de0ae96642286d30f /app/src/main/java | |
parent | Merge branch 'app' (diff) |
Unified inbox + fixed adding feeds to filter
Diffstat (limited to 'app/src/main/java')
-rwxr-xr-x | app/src/main/java/org/rssin/android/FeedItemAdapter.java | 59 | ||||
-rwxr-xr-x[-rw-r--r--] | app/src/main/java/org/rssin/android/FilterActivity.java | 87 | ||||
-rwxr-xr-x[-rw-r--r--] | app/src/main/java/org/rssin/android/FilterSettingsActivity.java | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | app/src/main/java/org/rssin/android/UnifiedInboxActivity.java | 52 | ||||
-rwxr-xr-x[-rw-r--r--] | app/src/main/java/org/rssin/rssin/Feed.java | 1 | ||||
-rwxr-xr-x | app/src/main/java/org/rssin/rssin/Filter.java | 6 |
6 files changed, 116 insertions, 90 deletions
diff --git a/app/src/main/java/org/rssin/android/FeedItemAdapter.java b/app/src/main/java/org/rssin/android/FeedItemAdapter.java new file mode 100755 index 0000000..5ecb820 --- /dev/null +++ b/app/src/main/java/org/rssin/android/FeedItemAdapter.java @@ -0,0 +1,59 @@ +package org.rssin.android;
+
+/**
+ * @author Jos.
+ */
+
+import android.support.v7.widget.RecyclerView;
+import android.text.Html;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import org.rssin.rss.FeedItem;
+import org.rssin.rssin.R;
+
+import java.util.List;
+
+public class FeedItemAdapter extends RecyclerView.Adapter<FeedItemAdapter.FeedItemHolder> {
+ List<FeedItem> feedItems;
+
+ public FeedItemAdapter(List<FeedItem> objects) {
+ feedItems = objects;
+ }
+
+ @Override
+ public FeedItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View itemView = LayoutInflater.
+ from(parent.getContext()).
+ inflate(R.layout.item_feeditem, parent, false);
+ return new FeedItemHolder(itemView);
+ }
+
+ @Override
+ public void onBindViewHolder(FeedItemHolder holder, int position) {
+ FeedItem item = feedItems.get(position);
+ holder.title.setText(item.getTitle());
+ holder.summary.setText(Html.fromHtml(item.getDescription()));
+ }
+
+ @Override
+ public int getItemCount() {
+ return feedItems.size();
+ }
+
+ /**
+ * TextViews holder
+ */
+ static class FeedItemHolder extends RecyclerView.ViewHolder {
+ TextView title;
+ TextView summary;
+
+ public FeedItemHolder(View itemView) {
+ super(itemView);
+ title = (TextView) itemView.findViewById(R.id.feeditem_title);
+ summary = (TextView) itemView.findViewById(R.id.feeditem_summary);
+ }
+ }
+}
\ No newline at end of file diff --git a/app/src/main/java/org/rssin/android/FilterActivity.java b/app/src/main/java/org/rssin/android/FilterActivity.java index 6c827d1..252101a 100644..100755 --- a/app/src/main/java/org/rssin/android/FilterActivity.java +++ b/app/src/main/java/org/rssin/android/FilterActivity.java @@ -1,21 +1,13 @@ package org.rssin.android; import android.app.Activity; -import android.content.Context; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.text.Html; -import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ListView; -import android.widget.TextView; import com.android.volley.VolleyError; @@ -34,15 +26,13 @@ public class FilterActivity extends ActionBarActivity { private Filter filter; private RecyclerView mRecyclerView; - private RecyclerView.Adapter mAdapter; - private RecyclerView.LayoutManager mLayoutManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_filter); - mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); - mLayoutManager = new LinearLayoutManager(this); + mRecyclerView = (RecyclerView) findViewById(R.id.filter_feeditems); + RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this); mRecyclerView.setLayoutManager(mLayoutManager); try { @@ -60,7 +50,6 @@ public class FilterActivity extends ActionBarActivity { setTitle(filter.getTitle()); - final Activity activity = this; FeedLoaderAndSorter loaderAndSorter = new FeedLoaderAndSorter(filter); loaderAndSorter.getFilteredFeedItems(new VolleyFetcher(this), new FallibleListener<List<FeedItem>, VolleyError>() { @Override @@ -107,76 +96,4 @@ public class FilterActivity extends ActionBarActivity { Frontend.warning(this, R.string.error_save_feedsorter, e); } } - - /** - * Custom ArrayAdapter to display Keywords - */ - private static class FeedItemAdapter extends RecyclerView.Adapter<FeedItemAdapter.KeywordHolder> { - List<FeedItem> feedItems; - - public FeedItemAdapter(List<FeedItem> objects) { - feedItems = objects; - } - -// @Override -// public View getView(int position, View convertView, ViewGroup parent) { -// View row = convertView; -// KeywordHolder holder = null; -// -// if (row == null) { -// LayoutInflater inflater = ((Activity) context).getLayoutInflater(); -// row = inflater.inflate(layoutResourceId, parent, false); -// -// holder = new KeywordHolder(); -// holder.title = (TextView) row.findViewById(R.id.feeditem_title); -// holder.summary = (TextView) row.findViewById(R.id.feeditem_summary); -// -// row.setTag(holder); -// } else { -// holder = (KeywordHolder) row.getTag(); -// } -// -// FeedItem feedItem = feedItems.get(position); -// holder.title.setText(feedItem.getTitle()); -// holder.summary.setText(Html.fromHtml(feedItem.getDescription())); -// -// return row; -// } - - @Override - public KeywordHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View itemView = LayoutInflater. - from(parent.getContext()). - inflate(R.layout.item_feeditem, parent, false); - return new KeywordHolder(itemView); - } - - @Override - public void onBindViewHolder(KeywordHolder holder, int position) { - FeedItem item = feedItems.get(position); - holder.title.setText(item.getTitle()); - holder.summary.setText(item.getDescription()); - } - - @Override - public int getItemCount() { - return feedItems.size(); - } - - /** - * TextViews holder - */ - static class KeywordHolder extends RecyclerView.ViewHolder { - TextView title; - TextView summary; - - public KeywordHolder(View itemView) { - super(itemView); - title = (TextView) itemView.findViewById(R.id.feeditem_title); - summary = (TextView) itemView.findViewById(R.id.feeditem_summary); - } - } - - - } } diff --git a/app/src/main/java/org/rssin/android/FilterSettingsActivity.java b/app/src/main/java/org/rssin/android/FilterSettingsActivity.java index b896689..ac5538f 100644..100755 --- a/app/src/main/java/org/rssin/android/FilterSettingsActivity.java +++ b/app/src/main/java/org/rssin/android/FilterSettingsActivity.java @@ -258,6 +258,7 @@ public class FilterSettingsActivity extends ActionBarActivity { try { filter.store(DefaultStorageProvider.getInstance()); + feed.store(DefaultStorageProvider.getInstance()); feedAdapter.notifyDataSetChanged(); editText.setText(""); } catch (Exception e) { diff --git a/app/src/main/java/org/rssin/android/UnifiedInboxActivity.java b/app/src/main/java/org/rssin/android/UnifiedInboxActivity.java index d99a1e0..54dab68 100644..100755 --- a/app/src/main/java/org/rssin/android/UnifiedInboxActivity.java +++ b/app/src/main/java/org/rssin/android/UnifiedInboxActivity.java @@ -3,10 +3,22 @@ package org.rssin.android; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import android.view.Menu; import android.view.MenuItem; +import com.android.volley.VolleyError; + +import org.rssin.listener.FallibleListener; +import org.rssin.rss.FeedItem; +import org.rssin.rssin.FeedLoaderAndSorter; +import org.rssin.rssin.Filter; import org.rssin.rssin.R; +import org.rssin.rssin.UnifiedFilterLoader; + +import java.io.IOException; +import java.util.List; /** * Unified view of all filters @@ -14,10 +26,50 @@ import org.rssin.rssin.R; */ public class UnifiedInboxActivity extends ActionBarActivity { + private FiltersList filtersList; + private RecyclerView mRecyclerView; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_unified_inbox); + + mRecyclerView = (RecyclerView) findViewById(R.id.unified_inbox_feeditems); + RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this); + mRecyclerView.setLayoutManager(mLayoutManager); + + try { + filtersList = FiltersList.getInstance(this); + } catch (IOException e) { + Frontend.error(this, R.string.error_load_filters, e); + } + + Intent intent = getIntent(); + int filterHashCode = intent.getIntExtra("filter", -1); + + // @todo Check on -1? Shouldn't happen anyway. + for(Filter filter : filtersList.getFilters()) { + filter.ensureFeedSorter(DefaultStorageProvider.getInstance(this)); + filter.ensureFeeds(DefaultStorageProvider.getInstance(this)); + } + + setTitle("Inbox"); + + UnifiedFilterLoader loaderAndSorter = new UnifiedFilterLoader(filtersList.getFilters()); + loaderAndSorter.getFilteredFeedItems(new VolleyFetcher(this), new FallibleListener<List<FeedItem>, VolleyError>() { + @Override + public void onReceive(List<FeedItem> data) { + + FeedItemAdapter feedItemAdapter = new FeedItemAdapter(data); + mRecyclerView.setAdapter(feedItemAdapter); + mRecyclerView.setHasFixedSize(true); + } + + @Override + public void onError(VolleyError error) { + Frontend.error(getBaseContext(), R.string.error_net_load); + } + }); } @Override diff --git a/app/src/main/java/org/rssin/rssin/Feed.java b/app/src/main/java/org/rssin/rssin/Feed.java index b5c4e2e..ea7e310 100644..100755 --- a/app/src/main/java/org/rssin/rssin/Feed.java +++ b/app/src/main/java/org/rssin/rssin/Feed.java @@ -98,6 +98,7 @@ public class Feed implements Storable, Comparable<Feed> { if (storageKey == null) { storageKey = storageProvider.uniqueKey(); } + storageProvider.store(storageKey, this); } diff --git a/app/src/main/java/org/rssin/rssin/Filter.java b/app/src/main/java/org/rssin/rssin/Filter.java index 8fd9c7b..6d2c11f 100755 --- a/app/src/main/java/org/rssin/rssin/Filter.java +++ b/app/src/main/java/org/rssin/rssin/Filter.java @@ -91,11 +91,7 @@ public class Filter implements Storable, Comparable<Filter> { * @return */ public String getKeywordsAsString() { - Keyword[] keywords = new Keyword[this.keywords.size()]; - int i = 0; - for (Keyword keyword : this.keywords) { - keywords[i++] = keyword; - } + Keyword[] keywords = this.keywords.toArray(new Keyword[this.keywords.size()]); return TextUtils.join(", ", keywords); } |