diff options
10 files changed, 474 insertions, 134 deletions
diff --git a/app/src/main/java/org/rssin/android/ArticleActivity.java b/app/src/main/java/org/rssin/android/ArticleActivity.java index 7d9fa2b..a6bf4d8 100755 --- a/app/src/main/java/org/rssin/android/ArticleActivity.java +++ b/app/src/main/java/org/rssin/android/ArticleActivity.java @@ -7,6 +7,7 @@ import android.text.Html; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; +import android.widget.Toast; import org.rssin.rssin.SortedFeedItemContainer; import org.rssin.rss.FeedItem; @@ -71,10 +72,12 @@ public class ArticleActivity extends ActionBarActivity { //noinspection SimplifiableIfStatement if (id == R.id.article_action_dislike) { + Toast.makeText(this, "Feedback saved.", Toast.LENGTH_SHORT).show(); container.feedback(Dislike); return true; } else if(id == R.id.article_action_like) { + Toast.makeText(this, "Feedback saved.", Toast.LENGTH_SHORT).show(); container.feedback(Like); return true; } diff --git a/app/src/main/java/org/rssin/android/HomeScreenActivity.java b/app/src/main/java/org/rssin/android/HomeScreenActivity.java index ebcf180..082d810 100755 --- a/app/src/main/java/org/rssin/android/HomeScreenActivity.java +++ b/app/src/main/java/org/rssin/android/HomeScreenActivity.java @@ -20,6 +20,7 @@ import android.support.v4.widget.DrawerLayout; import com.android.volley.VolleyError;
import org.rssin.listener.FallibleListener;
+import org.rssin.rssin.Feed;
import org.rssin.rssin.Filter;
import org.rssin.rssin.R;
import org.rssin.rssin.SortedFeedItemContainer;
@@ -49,37 +50,29 @@ public class HomeScreenActivity extends ActionBarActivity mNavigationDrawerFragment = (NavigationDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
- mTitle = getTitle();
// Set up the drawer.
mNavigationDrawerFragment.setUp(
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
- }
- @Override
- public void onNavigationDrawerItemSelected(int position) {
- // update the main content by replacing fragments
+ NavigationDrawerAllFeedsFragment initialFragment = NavigationDrawerAllFeedsFragment.newInstance();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
- .replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
+ .replace(R.id.container, initialFragment)
.commit();
+ mTitle = "All feeds";
}
- public void onSectionAttached(int number) {
- switch (number) {
- case 1:
- mTitle = getString(R.string.title_section1);
- break;
- case 2:
- mTitle = getString(R.string.title_section2);
- break;
- case 3:
- mTitle = getString(R.string.title_section3);
- break;
- default:
- mTitle = "ERROR";
- break;
+ @Override
+ public void onNavigationDrawerItemSelected(int position) {
+ // update the main content by replacing fragments
+ if(mNavigationDrawerFragment != null) {
+ FragmentManager fragmentManager = getSupportFragmentManager();
+ fragmentManager.beginTransaction()
+ .replace(R.id.container, mNavigationDrawerFragment.getAdapter().getFragment(position))
+ .commit();
+ mTitle = mNavigationDrawerFragment.getAdapter().getText(position);
}
}
@@ -119,82 +112,4 @@ public class HomeScreenActivity extends ActionBarActivity return super.onOptionsItemSelected(item);
}
- /**
- * A placeholder fragment containing a simple view.
- */
- public static class PlaceholderFragment extends Fragment {
- /**
- * The fragment argument representing the section number for this
- * fragment.
- */
- private static final String ARG_SECTION_NUMBER = "section_number";
-
- /**
- * Returns a new instance of this fragment for the given section
- * number.
- */
- public static PlaceholderFragment newInstance(int sectionNumber) {
- PlaceholderFragment fragment = new PlaceholderFragment();
- Bundle args = new Bundle();
- args.putInt(ARG_SECTION_NUMBER, sectionNumber);
- fragment.setArguments(args);
- return fragment;
- }
-
- public PlaceholderFragment() {
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- final View rootView = inflater.inflate(R.layout.fragment_home_screen, container, false);
- final RecyclerView mRecyclerView = (RecyclerView) rootView.findViewById(R.id.unified_inbox_feeditems);
- final Context context = mRecyclerView.getContext();
- RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context);
- mRecyclerView.setLayoutManager(mLayoutManager);
-
- try {
- FiltersList filtersList = FiltersList.getInstance(context);
-
- for(Filter filter : filtersList.getFilters()) {
- filter.ensureFeedSorter(DefaultStorageProvider.getInstance(context));
- filter.ensureFeeds(DefaultStorageProvider.getInstance(context));
- }
-
- /**
- * @todo Load feeds in separate thread so that the UI is immediately available
- *
- * @todo Now, feed items are only returned after *all* feeds have been loaded. With many
- * filters that may take a while, so it would be preferable to return intermediate
- * results. We could do this for example with {@link org.rssin.listener.RealtimeListener}
- */
- UnifiedFilterLoader loaderAndSorter = new UnifiedFilterLoader(filtersList.getFilters());
- loaderAndSorter.getFilteredFeedItems(new VolleyFetcher(context), new FallibleListener<List<SortedFeedItemContainer>, VolleyError>() {
- @Override
- public void onReceive(List<SortedFeedItemContainer> data) {
- FeedItemAdapter feedItemAdapter = new FeedItemAdapter(data);
- mRecyclerView.setAdapter(feedItemAdapter);
- mRecyclerView.setHasFixedSize(true);
- }
-
- @Override
- public void onError(VolleyError error) {
- Frontend.error(context, R.string.error_net_load);
- }
- });
- } catch (IOException e) {
- Frontend.error(context, R.string.error_load_filters, e);
- }
-
- return rootView;
- }
-
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- ((HomeScreenActivity) activity).onSectionAttached(
- getArguments().getInt(ARG_SECTION_NUMBER));
- }
- }
-
}
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerAdapter.java b/app/src/main/java/org/rssin/android/NavigationDrawerAdapter.java index d2e58ce..f7a1265 100755 --- a/app/src/main/java/org/rssin/android/NavigationDrawerAdapter.java +++ b/app/src/main/java/org/rssin/android/NavigationDrawerAdapter.java @@ -1,34 +1,48 @@ package org.rssin.android;
+import android.content.Context;
import android.database.DataSetObserver;
+import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.TextView;
+import org.rssin.rssin.Feed;
+import org.rssin.rssin.Filter;
import org.rssin.rssin.R;
+import java.io.IOException;
+import java.util.List;
+import java.util.ArrayList;
+
/**
* @author Jos.
*/
class NavigationDrawerAdapter implements ListAdapter {
- private static final int ITEM_VIEW_TYPE_VIDEO = 0;
+ private static final int ITEM_VIEW_TYPE_NORMAL = 0;
private static final int ITEM_VIEW_TYPE_SEPARATOR = 1;
private static final int ITEM_VIEW_TYPE_COUNT = 2;
- private final Object[] menuItems = new Object[] {
- "MAIN",
- new MenuItemHolder("Text 1"),
- "FILTERS",
- new MenuItemHolder("Text 1"),
- "FEEDS",
- new MenuItemHolder("Lorem ipsum"),
- new MenuItemHolder("Dolor sit amet"),
- new MenuItemHolder("Text 1"),
- new MenuItemHolder("Text 1"),
- new MenuItemHolder("Text Text Text"),
- new MenuItemHolder("Even more text"),
- };
+ private final List<MenuItem> menuItems = new ArrayList<>();
+
+ public NavigationDrawerAdapter(Context context) throws IOException {
+ menuItems.add(new MenuSection("START"));
+ menuItems.add(new MenuUnifiedInbox());
+ menuItems.add(new MenuSection("FILTERS"));
+
+ for(Filter f : FiltersList.getInstance(context).getFilters())
+ {
+ menuItems.add(new MenuFilterItem(f));
+ }
+
+ menuItems.add(new MenuSection("FEEDS"));
+
+ for(Feed f : FeedsList.getInstance(context).getFeeds())
+ {
+ menuItems.add(new MenuFeedItem(f));
+ }
+ }
@Override
public boolean areAllItemsEnabled() {
@@ -52,12 +66,17 @@ class NavigationDrawerAdapter implements ListAdapter { @Override
public int getCount() {
- return menuItems.length;
+ return menuItems.size();
}
@Override
public Object getItem(int position) {
- return menuItems[position];
+ return menuItems.get(position);
+ }
+
+ public String getText(int position)
+ {
+ return menuItems.get(position).getText();
}
@Override
@@ -83,10 +102,11 @@ class NavigationDrawerAdapter implements ListAdapter { // We can now fill the list item view with the appropriate data.
if (type == ITEM_VIEW_TYPE_SEPARATOR) {
- ((TextView) convertView.findViewById(R.id.separator_navigation_drawer_text)).setText((String) getItem(position));
+ final MenuSection section = (MenuSection) getItem(position);
+ ((TextView) convertView.findViewById(R.id.separator_navigation_drawer_text)).setText(section.getText());
} else {
- final MenuItemHolder video = (MenuItemHolder) getItem(position);
- ((TextView) convertView.findViewById(R.id.item_navigation_drawer_text)).setText(video.text);
+ final MenuItem video = (MenuItem) getItem(position);
+ ((TextView) convertView.findViewById(R.id.item_navigation_drawer_text)).setText(video.getText());
}
return convertView;
@@ -94,7 +114,7 @@ class NavigationDrawerAdapter implements ListAdapter { @Override
public int getItemViewType(int position) {
- return (menuItems[position] instanceof String) ? ITEM_VIEW_TYPE_SEPARATOR : ITEM_VIEW_TYPE_VIDEO;
+ return menuItems.get(position).getItemViewType();
}
@Override
@@ -107,12 +127,111 @@ class NavigationDrawerAdapter implements ListAdapter { return false;
}
- class MenuItemHolder
+ public Fragment getFragment(int position) {
+ return menuItems.get(position).getFragment();
+ }
+
+ public MenuItem getTypedItem(int position) {
+ return menuItems.get(position);
+ }
+
+ class MenuItem
{
- private String text;
- public MenuItemHolder(String text)
+ protected String text;
+ public MenuItem(String text)
{
this.text = text;
}
+
+ public void invokeActionSettings()
+ {
+
+ }
+
+ public int getItemViewType()
+ {
+ return ITEM_VIEW_TYPE_NORMAL;
+ }
+
+ public Fragment getFragment()
+ {
+ return null;
+ }
+
+ public String getText()
+ {
+ return text;
+ }
+ }
+
+ class MenuUnifiedInbox extends MenuItem
+ {
+ public MenuUnifiedInbox()
+ {
+ super("All feeds");
+ }
+
+ @Override
+ public int getItemViewType() {
+ return ITEM_VIEW_TYPE_NORMAL;
+ }
+
+ @Override
+ public Fragment getFragment() {
+ return NavigationDrawerAllFeedsFragment.newInstance();
+ }
+ }
+
+ class MenuFeedItem extends MenuItem
+ {
+ private Feed feed;
+ public MenuFeedItem(Feed feed)
+ {
+ super(feed.getTitle());
+ this.feed = feed;
+ }
+
+ @Override
+ public int getItemViewType() {
+ return ITEM_VIEW_TYPE_NORMAL;
+ }
+
+ @Override
+ public Fragment getFragment() {
+ return NavigationDrawerFeedFragment.newInstance(feed);
+ }
+ }
+
+ class MenuFilterItem extends MenuItem
+ {
+ private Filter filter;
+ public MenuFilterItem(Filter filter)
+ {
+ super(filter.getTitle());
+ this.filter = filter;
+ }
+
+ @Override
+ public int getItemViewType() {
+ return ITEM_VIEW_TYPE_NORMAL;
+ }
+
+ @Override
+ public Fragment getFragment() {
+ return NavigationDrawerFilterFragment.newInstance(filter);
+ }
+ }
+
+ class MenuSection extends MenuItem
+ {
+ public MenuSection(String text)
+ {
+ super(text);
+ }
+
+ @Override
+ public int getItemViewType() {
+ return ITEM_VIEW_TYPE_SEPARATOR;
+ }
}
}
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerAllFeedsFragment.java b/app/src/main/java/org/rssin/android/NavigationDrawerAllFeedsFragment.java new file mode 100755 index 0000000..15edbed --- /dev/null +++ b/app/src/main/java/org/rssin/android/NavigationDrawerAllFeedsFragment.java @@ -0,0 +1,87 @@ +package org.rssin.android;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.volley.VolleyError;
+
+import org.rssin.listener.FallibleListener;
+import org.rssin.rssin.Filter;
+import org.rssin.rssin.R;
+import org.rssin.rssin.SortedFeedItemContainer;
+import org.rssin.rssin.UnifiedFilterLoader;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author Jos.
+ */
+
+public class NavigationDrawerAllFeedsFragment extends Fragment {
+ /**
+ * Returns a new instance of this fragment for the given section
+ * number.
+ */
+ public static NavigationDrawerAllFeedsFragment newInstance() {
+ NavigationDrawerAllFeedsFragment fragment = new NavigationDrawerAllFeedsFragment();
+ return fragment;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ final View rootView = inflater.inflate(R.layout.fragment_home_screen, container, false);
+ final RecyclerView mRecyclerView = (RecyclerView) rootView.findViewById(R.id.unified_inbox_feeditems);
+ final Context context = mRecyclerView.getContext();
+ RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context);
+ mRecyclerView.setLayoutManager(mLayoutManager);
+
+ try {
+ FiltersList filtersList = FiltersList.getInstance(context);
+
+ for(Filter filter : filtersList.getFilters()) {
+ filter.ensureFeedSorter(DefaultStorageProvider.getInstance(context));
+ filter.ensureFeeds(DefaultStorageProvider.getInstance(context));
+ }
+
+ /**
+ * @todo Load feeds in separate thread so that the UI is immediately available
+ *
+ * @todo Now, feed items are only returned after *all* feeds have been loaded. With many
+ * filters that may take a while, so it would be preferable to return intermediate
+ * results. We could do this for example with {@link org.rssin.listener.RealtimeListener}
+ */
+ UnifiedFilterLoader loaderAndSorter = new UnifiedFilterLoader(filtersList.getFilters());
+ loaderAndSorter.getFilteredFeedItems(new VolleyFetcher(context), new FallibleListener<List<SortedFeedItemContainer>, VolleyError>() {
+ @Override
+ public void onReceive(List<SortedFeedItemContainer> data) {
+ FeedItemAdapter feedItemAdapter = new FeedItemAdapter(data);
+ mRecyclerView.setAdapter(feedItemAdapter);
+ mRecyclerView.setHasFixedSize(true);
+ }
+
+ @Override
+ public void onError(VolleyError error) {
+ Frontend.error(context, R.string.error_net_load);
+ }
+ });
+ } catch (IOException e) {
+ Frontend.error(context, R.string.error_load_filters, e);
+ }
+
+ return rootView;
+ }
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ }
+}
\ No newline at end of file diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerFeedFragment.java b/app/src/main/java/org/rssin/android/NavigationDrawerFeedFragment.java new file mode 100755 index 0000000..fd85fc7 --- /dev/null +++ b/app/src/main/java/org/rssin/android/NavigationDrawerFeedFragment.java @@ -0,0 +1,107 @@ +package org.rssin.android;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.volley.VolleyError;
+
+import org.rssin.listener.FallibleListener;
+import org.rssin.rssin.Feed;
+import org.rssin.rssin.Filter;
+import org.rssin.rssin.R;
+import org.rssin.rssin.SortedFeedItemContainer;
+import org.rssin.rssin.UnifiedFilterLoader;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author Jos.
+ */
+
+public class NavigationDrawerFeedFragment extends Fragment {
+ /**
+ * The fragment argument representing the section number for this
+ * fragment.
+ */
+ private static final String ARG_FEED_NAME = "feed_id";
+
+ private Feed feed;
+
+ /**
+ * Returns a new instance of this fragment for the given section
+ * number.
+ */
+ public static NavigationDrawerFeedFragment newInstance(Feed feed) {
+ NavigationDrawerFeedFragment fragment = new NavigationDrawerFeedFragment();
+ Bundle args = new Bundle();
+ args.putInt(ARG_FEED_NAME, feed.hashCode());
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ public NavigationDrawerFeedFragment() {
+
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState)
+ {
+ final Bundle args = getArguments();
+ final View rootView = inflater.inflate(R.layout.fragment_home_screen, container, false);
+ final RecyclerView mRecyclerView = (RecyclerView) rootView.findViewById(R.id.unified_inbox_feeditems);
+ final Context context = mRecyclerView.getContext();
+ RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context);
+ mRecyclerView.setLayoutManager(mLayoutManager);
+
+ feed = (Feed) args.get(ARG_FEED_NAME);
+
+ try {
+ FiltersList filtersList = FiltersList.getInstance(context);
+
+ for(Filter filter : filtersList.getFilters()) {
+ filter.ensureFeedSorter(DefaultStorageProvider.getInstance(context));
+ filter.ensureFeeds(DefaultStorageProvider.getInstance(context));
+ }
+
+ /**
+ * @todo Load feeds in separate thread so that the UI is immediately available
+ *
+ * @todo Now, feed items are only returned after *all* feeds have been loaded. With many
+ * filters that may take a while, so it would be preferable to return intermediate
+ * results. We could do this for example with {@link org.rssin.listener.RealtimeListener}
+ */
+ UnifiedFilterLoader loaderAndSorter = new UnifiedFilterLoader(filtersList.getFilters());
+ loaderAndSorter.getFilteredFeedItems(new VolleyFetcher(context), new FallibleListener<List<SortedFeedItemContainer>, VolleyError>() {
+ @Override
+ public void onReceive(List<SortedFeedItemContainer> data) {
+ FeedItemAdapter feedItemAdapter = new FeedItemAdapter(data);
+ mRecyclerView.setAdapter(feedItemAdapter);
+ mRecyclerView.setHasFixedSize(true);
+ }
+
+ @Override
+ public void onError(VolleyError error) {
+ Frontend.error(context, R.string.error_net_load);
+ }
+ });
+ } catch (IOException e) {
+ Frontend.error(context, R.string.error_load_filters, e);
+ }
+
+ return rootView;
+ }
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ }
+}
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerFilterFragment.java b/app/src/main/java/org/rssin/android/NavigationDrawerFilterFragment.java new file mode 100755 index 0000000..ab9d458 --- /dev/null +++ b/app/src/main/java/org/rssin/android/NavigationDrawerFilterFragment.java @@ -0,0 +1,100 @@ +package org.rssin.android;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.volley.VolleyError;
+
+import org.rssin.listener.FallibleListener;
+import org.rssin.rssin.FeedLoaderAndSorter;
+import org.rssin.rssin.Filter;
+import org.rssin.rssin.R;
+import org.rssin.rssin.SortedFeedItemContainer;
+import org.rssin.rssin.UnifiedFilterLoader;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author Jos.
+ */
+
+public class NavigationDrawerFilterFragment extends Fragment {
+ /**
+ * The fragment argument representing the section number for this
+ * fragment.
+ */
+ private static final String ARG_FILTER_NAME = "filter_id";
+
+ private Filter filter;
+
+ /**
+ * Returns a new instance of this fragment for the given section
+ * number.
+ */
+ public static NavigationDrawerFilterFragment newInstance(Filter filter) {
+ NavigationDrawerFilterFragment fragment = new NavigationDrawerFilterFragment();
+ Bundle args = new Bundle();
+ args.putInt(ARG_FILTER_NAME, filter.hashCode());
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState)
+ {
+ final Bundle args = getArguments();
+ final View rootView = inflater.inflate(R.layout.fragment_home_screen, container, false);
+ final RecyclerView mRecyclerView = (RecyclerView) rootView.findViewById(R.id.unified_inbox_feeditems);
+ final Context context = mRecyclerView.getContext();
+ RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context);
+ mRecyclerView.setLayoutManager(mLayoutManager);
+
+
+ try {
+ filter = FiltersList.getInstance(mRecyclerView.getContext()).getFilterFromHashCode(args.getInt(ARG_FILTER_NAME));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ filter.ensureFeedSorter(DefaultStorageProvider.getInstance(context));
+ filter.ensureFeeds(DefaultStorageProvider.getInstance(context));
+
+ /**
+ * @todo Load feeds in separate thread so that the UI is immediately available
+ *
+ * @todo Now, feed items are only returned after *all* feeds have been loaded. With many
+ * filters that may take a while, so it would be preferable to return intermediate
+ * results. We could do this for example with {@link org.rssin.listener.RealtimeListener}
+ */
+ FeedLoaderAndSorter loaderAndSorter = new FeedLoaderAndSorter(filter);
+ loaderAndSorter.getFilteredFeedItems(new VolleyFetcher(context), new FallibleListener<List<SortedFeedItemContainer>, VolleyError>() {
+ @Override
+ public void onReceive(List<SortedFeedItemContainer> data) {
+ FeedItemAdapter feedItemAdapter = new FeedItemAdapter(data);
+ mRecyclerView.setAdapter(feedItemAdapter);
+ mRecyclerView.setHasFixedSize(true);
+ }
+
+ @Override
+ public void onError(VolleyError error) {
+ Frontend.error(context, R.string.error_net_load);
+ }
+ });
+
+ return rootView;
+ }
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ }
+}
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerFragment.java b/app/src/main/java/org/rssin/android/NavigationDrawerFragment.java index 8ad0ca9..537e0f8 100755 --- a/app/src/main/java/org/rssin/android/NavigationDrawerFragment.java +++ b/app/src/main/java/org/rssin/android/NavigationDrawerFragment.java @@ -27,6 +27,8 @@ import android.widget.Toast; import org.rssin.rssin.R;
+import java.io.IOException;
+
/**
* Fragment used for managing interactions for and presentation of a navigation drawer.
* See the <a href="https://developer.android.com/design/patterns/navigation-drawer.html#Interaction">
@@ -62,6 +64,7 @@ public class NavigationDrawerFragment extends Fragment { private int mCurrentSelectedPosition = 1;
private boolean mFromSavedInstanceState;
private boolean mUserLearnedDrawer;
+ private NavigationDrawerAdapter adapter;
public NavigationDrawerFragment() {
}
@@ -103,7 +106,13 @@ public class NavigationDrawerFragment extends Fragment { }
});
- mDrawerListView.setAdapter(new NavigationDrawerAdapter());
+ try {
+ adapter = new NavigationDrawerAdapter(mDrawerListView.getContext());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ mDrawerListView.setAdapter(adapter);
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
return mDrawerListView;
}
@@ -245,10 +254,10 @@ public class NavigationDrawerFragment extends Fragment { return true;
}
-// if (item.getItemId() == R.id.action_example) {
-// Toast.makeText(getActivity(), "Example action.", Toast.LENGTH_SHORT).show();
-// return true;
-// }
+ if (item.getItemId() == R.id.action_settings) {
+ adapter.getTypedItem(mCurrentSelectedPosition).invokeActionSettings();
+ return true;
+ }
return super.onOptionsItemSelected(item);
}
@@ -268,6 +277,10 @@ public class NavigationDrawerFragment extends Fragment { return ((ActionBarActivity) getActivity()).getSupportActionBar();
}
+ public NavigationDrawerAdapter getAdapter() {
+ return adapter;
+ }
+
/**
* Callbacks interface that all activities using this fragment must implement.
*/
diff --git a/app/src/main/java/org/rssin/rssin/SortedFeedItemContainer.java b/app/src/main/java/org/rssin/rssin/SortedFeedItemContainer.java index d46cf3b..913a120 100755 --- a/app/src/main/java/org/rssin/rssin/SortedFeedItemContainer.java +++ b/app/src/main/java/org/rssin/rssin/SortedFeedItemContainer.java @@ -53,6 +53,6 @@ public class SortedFeedItemContainer implements Comparable<SortedFeedItemContain @Override
public int compareTo(SortedFeedItemContainer another) {
- return (int)(another.getScore() - this.getScore());
+ return (int)(this.getScore() - another.getScore());
}
}
diff --git a/app/src/main/res/layout/fragment_home_screen.xml b/app/src/main/res/layout/fragment_home_screen.xml index a502805..e33a34e 100755 --- a/app/src/main/res/layout/fragment_home_screen.xml +++ b/app/src/main/res/layout/fragment_home_screen.xml @@ -1,10 +1,8 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
- android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:paddingBottom="@dimen/activity_vertical_margin"
- tools:context="org.rssin.android.HomeScreenActivity$PlaceholderFragment">
+ android:layout_height="match_parent"
+ android:padding="0dp"
+ tools:context="org.rssin.android.HomeScreenActivity.AllFeedsaFragment">
<android.support.v7.widget.RecyclerView
android:id="@+id/unified_inbox_feeditems"
diff --git a/app/src/main/res/menu/home_screen.xml b/app/src/main/res/menu/home_screen.xml index cf4b03a..3358601 100755 --- a/app/src/main/res/menu/home_screen.xml +++ b/app/src/main/res/menu/home_screen.xml @@ -2,8 +2,6 @@ xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="org.rssin.android.HomeScreenActivity">
- <item android:id="@+id/action_example" android:title="@string/action_example"
- app:showAsAction="withText|ifRoom" />
<item android:id="@+id/action_settings" android:title="@string/action_settings"
android:orderInCategory="100" app:showAsAction="never" />
</menu>
|