From 22d240bb367d369117605e040d0f17cf1077aafe Mon Sep 17 00:00:00 2001 From: Size43 Date: Thu, 4 Jun 2015 14:54:35 +0200 Subject: Added hamburger menu, working filters and unified inbox. Open old UI by going to the settings --- .../java/org/rssin/android/ArticleActivity.java | 3 + .../java/org/rssin/android/HomeScreenActivity.java | 111 ++------------ .../org/rssin/android/NavigationDrawerAdapter.java | 165 ++++++++++++++++++--- .../android/NavigationDrawerAllFeedsFragment.java | 87 +++++++++++ .../android/NavigationDrawerFeedFragment.java | 107 +++++++++++++ .../android/NavigationDrawerFilterFragment.java | 100 +++++++++++++ .../rssin/android/NavigationDrawerFragment.java | 23 ++- .../org/rssin/rssin/SortedFeedItemContainer.java | 2 +- 8 files changed, 471 insertions(+), 127 deletions(-) create mode 100755 app/src/main/java/org/rssin/android/NavigationDrawerAllFeedsFragment.java create mode 100755 app/src/main/java/org/rssin/android/NavigationDrawerFeedFragment.java create mode 100755 app/src/main/java/org/rssin/android/NavigationDrawerFilterFragment.java (limited to 'app/src/main/java') 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, VolleyError>() { - @Override - public void onReceive(List 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 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, VolleyError>() { + @Override + public void onReceive(List 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, VolleyError>() { + @Override + public void onReceive(List 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, VolleyError>() { + @Override + public void onReceive(List 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 @@ -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