mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Merge pull request #457 from dosiecki/master
Android: Refactor Story Loading
This commit is contained in:
commit
77e1228c39
26 changed files with 130 additions and 310 deletions
|
@ -44,8 +44,6 @@ public class AllSharedStoriesItemsList extends ItemsList {
|
|||
listTransaction.add(R.id.activity_itemlist_container, itemListFragment, AllSharedStoriesItemListFragment.class.getName());
|
||||
listTransaction.commit();
|
||||
}
|
||||
|
||||
triggerRefresh(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -51,8 +51,6 @@ public class AllStoriesItemsList extends ItemsList implements MarkAllReadDialogL
|
|||
listTransaction.add(R.id.activity_itemlist_container, itemListFragment, AllStoriesItemListFragment.class.getName());
|
||||
listTransaction.commit();
|
||||
}
|
||||
|
||||
triggerRefresh(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -50,6 +50,7 @@ public class FeedItemsList extends ItemsList {
|
|||
Feed feed = Feed.fromCursor(cursor);
|
||||
setTitle(feed.title);
|
||||
}
|
||||
cursor.close();
|
||||
|
||||
itemListFragment = (FeedItemListFragment) fragmentManager.findFragmentByTag(FeedItemListFragment.class.getName());
|
||||
if (itemListFragment == null) {
|
||||
|
@ -59,8 +60,6 @@ public class FeedItemsList extends ItemsList {
|
|||
listTransaction.add(R.id.activity_itemlist_container, itemListFragment, FeedItemListFragment.class.getName());
|
||||
listTransaction.commit();
|
||||
}
|
||||
|
||||
triggerRefresh(1);
|
||||
}
|
||||
|
||||
public void deleteFeed() {
|
||||
|
|
|
@ -59,8 +59,6 @@ public class FolderItemsList extends ItemsList implements MarkAllReadDialogListe
|
|||
listTransaction.add(R.id.activity_itemlist_container, itemListFragment, FolderItemListFragment.class.getName());
|
||||
listTransaction.commit();
|
||||
}
|
||||
|
||||
triggerRefresh(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -42,7 +42,7 @@ public class FolderReading extends Reading {
|
|||
|
||||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int loaderId, Bundle bundle) {
|
||||
return new CursorLoader(this, FeedProvider.MULTIFEED_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), feedIds, null);
|
||||
return new CursorLoader(this, FeedProvider.MULTIFEED_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), feedIds, DatabaseConstants.getStorySortOrder(PrefsUtils.getStoryOrderForFolder(this, folderName)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -108,19 +108,23 @@ public abstract class ItemsList extends NbFragmentActivity implements ActionComp
|
|||
|
||||
@Override
|
||||
public void storyOrderChanged(StoryOrder newValue) {
|
||||
FeedUtils.clearStories(this);
|
||||
updateStoryOrderPreference(newValue);
|
||||
itemListFragment.setStoryOrder(newValue);
|
||||
itemListFragment.resetPagination();
|
||||
stopLoading = false;
|
||||
triggerRefresh(1);
|
||||
itemListFragment.hasUpdated();
|
||||
}
|
||||
|
||||
public abstract void updateStoryOrderPreference(StoryOrder newValue);
|
||||
|
||||
@Override
|
||||
public void readFilterChanged(ReadFilter newValue) {
|
||||
FeedUtils.clearStories(this);
|
||||
updateReadFilterPreference(newValue);
|
||||
itemListFragment.resetPagination();
|
||||
stopLoading = false;
|
||||
triggerRefresh(1);
|
||||
itemListFragment.hasUpdated();
|
||||
}
|
||||
|
||||
protected abstract void updateReadFilterPreference(ReadFilter newValue);
|
||||
|
|
|
@ -17,6 +17,7 @@ import com.newsblur.fragment.FolderListFragment;
|
|||
import com.newsblur.fragment.LogoutDialogFragment;
|
||||
import com.newsblur.fragment.SyncUpdateFragment;
|
||||
import com.newsblur.service.SyncService;
|
||||
import com.newsblur.util.FeedUtils;
|
||||
import com.newsblur.util.PrefsUtils;
|
||||
import com.newsblur.view.StateToggleButton.StateChangedListener;
|
||||
|
||||
|
@ -65,6 +66,8 @@ public class Main extends NbFragmentActivity implements StateChangedListener, Sy
|
|||
if (PrefsUtils.isTimeToAutoSync(this)) {
|
||||
triggerRefresh();
|
||||
}
|
||||
// clear all stories from the DB, the story activities will load them.
|
||||
FeedUtils.clearStories(this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -144,7 +144,7 @@ public abstract class Reading extends NbFragmentActivity implements OnPageChange
|
|||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<Cursor> loader) {
|
||||
;
|
||||
readingAdapter.swapCursor(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -515,7 +515,6 @@ public abstract class Reading extends NbFragmentActivity implements OnPageChange
|
|||
boolean unreadFound = false;
|
||||
boolean error = false;
|
||||
unreadSearch:while (!unreadFound) {
|
||||
|
||||
Story story = readingAdapter.getStory(candidate);
|
||||
|
||||
if (story == null) {
|
||||
|
|
|
@ -44,8 +44,6 @@ public class SavedStoriesItemsList extends ItemsList {
|
|||
listTransaction.add(R.id.activity_itemlist_container, itemListFragment, SavedStoriesItemListFragment.class.getName());
|
||||
listTransaction.commit();
|
||||
}
|
||||
|
||||
triggerRefresh(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.newsblur.database.FeedProvider;
|
|||
import com.newsblur.database.MixedFeedsReadingAdapter;
|
||||
import com.newsblur.service.SyncService;
|
||||
import com.newsblur.util.FeedUtils;
|
||||
import com.newsblur.util.StoryOrder;
|
||||
|
||||
public class SavedStoriesReading extends Reading {
|
||||
|
||||
|
@ -27,7 +28,7 @@ public class SavedStoriesReading extends Reading {
|
|||
|
||||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int loaderId, Bundle bundle) {
|
||||
return new CursorLoader(this, FeedProvider.STARRED_STORIES_URI, null, null, null, null);
|
||||
return new CursorLoader(this, FeedProvider.STARRED_STORIES_URI, null, null, null, DatabaseConstants.getStorySortOrder(StoryOrder.NEWEST));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -42,8 +42,6 @@ public class SocialFeedItemsList extends ItemsList {
|
|||
listTransaction.add(R.id.activity_itemlist_container, itemListFragment, SocialFeedItemListFragment.class.getName());
|
||||
listTransaction.commit();
|
||||
}
|
||||
|
||||
triggerRefresh(1);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ public class SocialFeedReading extends Reading {
|
|||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int loaderId, Bundle bundle) {
|
||||
Uri storiesURI = FeedProvider.SOCIALFEED_STORIES_URI.buildUpon().appendPath(userId).build();
|
||||
return new CursorLoader(this, storiesURI, null, DatabaseConstants.getStorySelectionFromState(currentState), null, null);
|
||||
return new CursorLoader(this, storiesURI, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySharedSortOrder(PrefsUtils.getStoryOrderForFeed(this, userId)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -17,7 +17,7 @@ import com.newsblur.R;
|
|||
import com.newsblur.domain.Feed;
|
||||
import com.newsblur.domain.Story;
|
||||
|
||||
public class FeedItemsAdapter extends SimpleCursorAdapter implements StoryItemsAdapter {
|
||||
public class FeedItemsAdapter extends StoryItemsAdapter {
|
||||
|
||||
private Cursor cursor;
|
||||
private final Feed feed;
|
||||
|
|
|
@ -378,7 +378,12 @@ public class FeedProvider extends ContentProvider {
|
|||
" FROM " + DatabaseConstants.STARRED_STORIES_TABLE +
|
||||
" INNER JOIN " + DatabaseConstants.FEED_TABLE +
|
||||
" ON " + DatabaseConstants.STARRED_STORIES_TABLE + "." + DatabaseConstants.STORY_FEED_ID + " = " + DatabaseConstants.FEED_TABLE + "." + DatabaseConstants.FEED_ID;
|
||||
return db.rawQuery(savedStoriesQuery, null);
|
||||
StringBuilder q = new StringBuilder();
|
||||
q.append(savedStoriesQuery);
|
||||
if (!TextUtils.isEmpty(sortOrder)) {
|
||||
q.append(" ORDER BY " + sortOrder);
|
||||
}
|
||||
return db.rawQuery(q.toString(), null);
|
||||
|
||||
case STARRED_STORIES_COUNT:
|
||||
return db.query(DatabaseConstants.STARRED_STORY_COUNT_TABLE, projection, selection, selectionArgs, null, null, null);
|
||||
|
|
|
@ -7,7 +7,6 @@ import android.content.Context;
|
|||
import android.database.Cursor;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Typeface;
|
||||
import android.support.v4.widget.SimpleCursorAdapter;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -19,7 +18,7 @@ import com.newsblur.activity.NewsBlurApplication;
|
|||
import com.newsblur.domain.Story;
|
||||
import com.newsblur.util.ImageLoader;
|
||||
|
||||
public class MultipleFeedItemsAdapter extends SimpleCursorAdapter implements StoryItemsAdapter {
|
||||
public class MultipleFeedItemsAdapter extends StoryItemsAdapter {
|
||||
|
||||
private Cursor cursor;
|
||||
private ImageLoader imageLoader;
|
||||
|
|
|
@ -1,13 +1,21 @@
|
|||
package com.newsblur.database;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.support.v4.widget.SimpleCursorAdapter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.newsblur.domain.Story;
|
||||
|
||||
public interface StoryItemsAdapter {
|
||||
public abstract class StoryItemsAdapter extends SimpleCursorAdapter {
|
||||
|
||||
Story getStory(int position);
|
||||
public StoryItemsAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
|
||||
super(context, layout, c, from, to, flags);
|
||||
}
|
||||
|
||||
List<Story> getPreviousStories(int position);
|
||||
public abstract Story getStory(int position);
|
||||
|
||||
public abstract List<Story> getPreviousStories(int position);
|
||||
|
||||
}
|
||||
|
|
|
@ -13,8 +13,6 @@ import android.util.Log;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.AbsListView.OnScrollListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ListView;
|
||||
|
@ -31,14 +29,10 @@ import com.newsblur.util.NetworkUtils;
|
|||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.view.SocialItemViewBinder;
|
||||
|
||||
public class AllSharedStoriesItemListFragment extends ItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener, OnScrollListener {
|
||||
public class AllSharedStoriesItemListFragment extends ItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
|
||||
public int currentState;
|
||||
private boolean doRequest = true;
|
||||
private ContentResolver contentResolver;
|
||||
private SimpleCursorAdapter adapter;
|
||||
private boolean requestedPage;
|
||||
private int currentPage = 0;
|
||||
|
||||
public static int ITEMLIST_LOADER = 0x01;
|
||||
private Cursor countCursor;
|
||||
|
@ -52,9 +46,6 @@ public class AllSharedStoriesItemListFragment extends ItemListFragment implement
|
|||
super.onCreate(savedInstanceState);
|
||||
currentState = getArguments().getInt("currentState");
|
||||
storyOrder = (StoryOrder)getArguments().getSerializable("storyOrder");
|
||||
if (!NetworkUtils.isOnline(getActivity())) {
|
||||
doRequest = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -67,6 +58,10 @@ public class AllSharedStoriesItemListFragment extends ItemListFragment implement
|
|||
|
||||
groupFrom = new String[] { DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_AUTHORS, DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_SHORTDATE, DatabaseConstants.STORY_INTELLIGENCE_AUTHORS, DatabaseConstants.FEED_TITLE };
|
||||
groupTo = new int[] { R.id.row_item_title, R.id.row_item_author, R.id.row_item_title, R.id.row_item_date, R.id.row_item_sidebar, R.id.row_item_feedtitle };
|
||||
Cursor cursor = contentResolver.query(FeedProvider.ALL_SHARED_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
adapter = new MultipleFeedItemsAdapter(getActivity(), R.layout.row_socialitem, cursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
|
||||
adapter.setViewBinder(new SocialItemViewBinder(getActivity()));
|
||||
itemList.setAdapter(adapter);
|
||||
|
||||
getLoaderManager().initLoader(ITEMLIST_LOADER , null, this);
|
||||
|
||||
|
@ -76,20 +71,6 @@ public class AllSharedStoriesItemListFragment extends ItemListFragment implement
|
|||
return v;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
|
||||
if (adapter == null) {
|
||||
adapter = new MultipleFeedItemsAdapter(getActivity(), R.layout.row_socialitem, cursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
|
||||
adapter.setViewBinder(new SocialItemViewBinder(getActivity()));
|
||||
itemList.setAdapter(adapter);
|
||||
}
|
||||
if (cursor != null) {
|
||||
adapter.swapCursor(cursor);
|
||||
}
|
||||
}
|
||||
|
||||
public void hasUpdated() {
|
||||
if (isAdded()) {
|
||||
getLoaderManager().restartLoader(ITEMLIST_LOADER , null, this);
|
||||
|
@ -105,8 +86,7 @@ public class AllSharedStoriesItemListFragment extends ItemListFragment implement
|
|||
@Override
|
||||
public void changeState(int state) {
|
||||
currentState = state;
|
||||
Cursor cursor = contentResolver.query(FeedProvider.ALL_SHARED_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
adapter.swapCursor(cursor);
|
||||
hasUpdated();
|
||||
}
|
||||
|
||||
public static ItemListFragment newInstance(int currentState, StoryOrder storyOrder) {
|
||||
|
@ -119,18 +99,6 @@ public class AllSharedStoriesItemListFragment extends ItemListFragment implement
|
|||
return everythingFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) {
|
||||
if (firstVisible + visibleCount == totalCount && !requestedPage && doRequest) {
|
||||
currentPage += 1;
|
||||
requestedPage = true;
|
||||
((ItemsList) getActivity()).triggerRefresh(currentPage);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView arg0, int arg1) { }
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
Intent i = new Intent(getActivity(), AllSharedStoriesReading.class);
|
||||
|
@ -141,12 +109,12 @@ public class AllSharedStoriesItemListFragment extends ItemListFragment implement
|
|||
|
||||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
|
||||
CursorLoader cursorLoader = new CursorLoader(getActivity(), FeedProvider.ALL_SHARED_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
return cursorLoader;
|
||||
return new CursorLoader(getActivity(), FeedProvider.ALL_SHARED_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStoryOrder(StoryOrder storyOrder) {
|
||||
this.storyOrder = storyOrder;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -11,8 +11,6 @@ import android.support.v4.widget.CursorAdapter;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.AbsListView.OnScrollListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ListView;
|
||||
|
@ -29,14 +27,10 @@ import com.newsblur.util.NetworkUtils;
|
|||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.view.SocialItemViewBinder;
|
||||
|
||||
public class AllStoriesItemListFragment extends StoryItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener, OnScrollListener {
|
||||
public class AllStoriesItemListFragment extends StoryItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
|
||||
public int currentState;
|
||||
private boolean doRequest = true;
|
||||
private ContentResolver contentResolver;
|
||||
private MultipleFeedItemsAdapter adapter;
|
||||
private boolean requestedPage;
|
||||
private int currentPage = 0;
|
||||
|
||||
private StoryOrder storyOrder;
|
||||
|
||||
|
@ -47,10 +41,6 @@ public class AllStoriesItemListFragment extends StoryItemListFragment implements
|
|||
super.onCreate(savedInstanceState);
|
||||
currentState = getArguments().getInt("currentState");
|
||||
storyOrder = (StoryOrder)getArguments().getSerializable("storyOrder");
|
||||
|
||||
if (!NetworkUtils.isOnline(getActivity())) {
|
||||
doRequest = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -60,16 +50,14 @@ public class AllStoriesItemListFragment extends StoryItemListFragment implements
|
|||
|
||||
itemList.setEmptyView(v.findViewById(R.id.empty_view));
|
||||
|
||||
contentResolver = getActivity().getContentResolver();
|
||||
Cursor cursor = contentResolver.query(FeedProvider.ALL_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
|
||||
Cursor cursor = getActivity().getContentResolver().query(FeedProvider.ALL_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
String[] groupFrom = new String[] { DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_AUTHORS, DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_SHORTDATE, DatabaseConstants.STORY_INTELLIGENCE_AUTHORS, DatabaseConstants.FEED_TITLE };
|
||||
int[] groupTo = new int[] { R.id.row_item_title, R.id.row_item_author, R.id.row_item_title, R.id.row_item_date, R.id.row_item_sidebar, R.id.row_item_feedtitle };
|
||||
|
||||
getLoaderManager().initLoader(ITEMLIST_LOADER , null, this);
|
||||
|
||||
adapter = new MultipleFeedItemsAdapter(getActivity(), R.layout.row_socialitem, cursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
|
||||
|
||||
getLoaderManager().initLoader(ITEMLIST_LOADER , null, this);
|
||||
|
||||
itemList.setOnScrollListener(this);
|
||||
|
||||
adapter.setViewBinder(new SocialItemViewBinder(getActivity()));
|
||||
|
@ -80,13 +68,6 @@ public class AllStoriesItemListFragment extends StoryItemListFragment implements
|
|||
return v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
|
||||
if (cursor != null) {
|
||||
adapter.swapCursor(cursor);
|
||||
}
|
||||
}
|
||||
|
||||
public void hasUpdated() {
|
||||
if (isAdded()) {
|
||||
getLoaderManager().restartLoader(ITEMLIST_LOADER , null, this);
|
||||
|
@ -102,16 +83,9 @@ public class AllStoriesItemListFragment extends StoryItemListFragment implements
|
|||
@Override
|
||||
public void changeState(int state) {
|
||||
currentState = state;
|
||||
refreshStories();
|
||||
hasUpdated();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void refreshStories() {
|
||||
final String selection = DatabaseConstants.getStorySelectionFromState(currentState);
|
||||
Cursor cursor = contentResolver.query(FeedProvider.ALL_STORIES_URI, null, selection, null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
adapter.swapCursor(cursor);
|
||||
}
|
||||
|
||||
public static ItemListFragment newInstance(int currentState, StoryOrder storyOrder) {
|
||||
ItemListFragment everythingFragment = new AllStoriesItemListFragment();
|
||||
Bundle arguments = new Bundle();
|
||||
|
@ -122,18 +96,6 @@ public class AllStoriesItemListFragment extends StoryItemListFragment implements
|
|||
return everythingFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) {
|
||||
if (firstVisible + visibleCount == totalCount && !requestedPage && doRequest) {
|
||||
currentPage += 1;
|
||||
requestedPage = true;
|
||||
((ItemsList) getActivity()).triggerRefresh(currentPage);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView arg0, int arg1) { }
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
Intent i = new Intent(getActivity(), AllStoriesReading.class);
|
||||
|
@ -144,8 +106,7 @@ public class AllStoriesItemListFragment extends StoryItemListFragment implements
|
|||
|
||||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
|
||||
CursorLoader cursorLoader = new CursorLoader(getActivity(), FeedProvider.ALL_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
return cursorLoader;
|
||||
return new CursorLoader(getActivity(), FeedProvider.ALL_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -153,8 +114,4 @@ public class AllStoriesItemListFragment extends StoryItemListFragment implements
|
|||
this.storyOrder = storyOrder;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected StoryItemsAdapter getAdapter() {
|
||||
return adapter;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,8 +13,6 @@ import android.util.Log;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.AbsListView.OnScrollListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ListView;
|
||||
|
@ -32,14 +30,10 @@ import com.newsblur.util.NetworkUtils;
|
|||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.view.FeedItemViewBinder;
|
||||
|
||||
public class FeedItemListFragment extends StoryItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener, OnScrollListener {
|
||||
public class FeedItemListFragment extends StoryItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
|
||||
private ContentResolver contentResolver;
|
||||
private String feedId;
|
||||
private FeedItemsAdapter adapter;
|
||||
private int currentState;
|
||||
private int currentPage = 1;
|
||||
private boolean requestedPage = false;
|
||||
|
||||
public static int ITEMLIST_LOADER = 0x01;
|
||||
|
||||
|
@ -72,7 +66,7 @@ public class FeedItemListFragment extends StoryItemListFragment implements Loade
|
|||
|
||||
itemList.setEmptyView(v.findViewById(R.id.empty_view));
|
||||
|
||||
contentResolver = getActivity().getContentResolver();
|
||||
ContentResolver contentResolver = getActivity().getContentResolver();
|
||||
Uri storiesUri = FeedProvider.FEED_STORIES_URI.buildUpon().appendPath(feedId).build();
|
||||
Cursor storiesCursor = contentResolver.query(storiesUri, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
Uri feedUri = FeedProvider.FEEDS_URI.buildUpon().appendPath(feedId).build();
|
||||
|
@ -116,13 +110,6 @@ public class FeedItemListFragment extends StoryItemListFragment implements Loade
|
|||
return cursorLoader;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
|
||||
if (cursor != null) {
|
||||
adapter.swapCursor(cursor);
|
||||
}
|
||||
}
|
||||
|
||||
public void hasUpdated() {
|
||||
if (isAdded()) {
|
||||
getLoaderManager().restartLoader(ITEMLIST_LOADER , null, this);
|
||||
|
@ -146,36 +133,12 @@ public class FeedItemListFragment extends StoryItemListFragment implements Loade
|
|||
|
||||
public void changeState(int state) {
|
||||
currentState = state;
|
||||
refreshStories();
|
||||
hasUpdated();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void refreshStories() {
|
||||
Uri storiesUri = FeedProvider.FEED_STORIES_URI.buildUpon().appendPath(feedId).build();
|
||||
Cursor cursor = contentResolver.query(storiesUri, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
adapter.swapCursor(cursor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) {
|
||||
if (firstVisible + visibleCount == totalCount && !requestedPage) {
|
||||
currentPage += 1;
|
||||
requestedPage = true;
|
||||
((ItemsList) getActivity()).triggerRefresh(currentPage);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) { }
|
||||
|
||||
@Override
|
||||
public void setStoryOrder(StoryOrder storyOrder) {
|
||||
this.storyOrder = storyOrder;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected StoryItemsAdapter getAdapter() {
|
||||
return adapter;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -14,8 +14,6 @@ import android.support.v4.widget.CursorAdapter;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.AbsListView.OnScrollListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ListView;
|
||||
|
@ -33,17 +31,12 @@ import com.newsblur.util.NetworkUtils;
|
|||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.view.FeedItemViewBinder;
|
||||
|
||||
public class FolderItemListFragment extends StoryItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener, OnScrollListener {
|
||||
public class FolderItemListFragment extends StoryItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
|
||||
private ContentResolver contentResolver;
|
||||
private String[] feedIds;
|
||||
private MultipleFeedItemsAdapter adapter;
|
||||
private Uri storiesUri;
|
||||
private int currentState;
|
||||
private int currentPage = 1;
|
||||
private String folderName;
|
||||
private boolean requestedPage = false;
|
||||
private boolean doRequest = true;
|
||||
private Folder folder;
|
||||
|
||||
private StoryOrder storyOrder;
|
||||
|
@ -73,10 +66,6 @@ public class FolderItemListFragment extends StoryItemListFragment implements Loa
|
|||
ArrayList<String> feedIdArrayList = getArguments().getStringArrayList("feedIds");
|
||||
feedIds = new String[feedIdArrayList.size()];
|
||||
feedIdArrayList.toArray(feedIds);
|
||||
|
||||
if (!NetworkUtils.isOnline(getActivity())) {
|
||||
doRequest = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -87,9 +76,8 @@ public class FolderItemListFragment extends StoryItemListFragment implements Loa
|
|||
itemList.setEmptyView(v.findViewById(R.id.empty_view));
|
||||
|
||||
contentResolver = getActivity().getContentResolver();
|
||||
storiesUri = FeedProvider.MULTIFEED_STORIES_URI;
|
||||
|
||||
Cursor cursor = contentResolver.query(storiesUri, null, DatabaseConstants.getStorySelectionFromState(currentState), feedIds, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
Cursor cursor = contentResolver.query(FeedProvider.MULTIFEED_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), feedIds, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
getActivity().startManagingCursor(cursor);
|
||||
|
||||
String[] groupFrom = new String[] { DatabaseConstants.STORY_TITLE, DatabaseConstants.FEED_TITLE, DatabaseConstants.STORY_READ, DatabaseConstants.STORY_SHORTDATE, DatabaseConstants.STORY_INTELLIGENCE_AUTHORS, DatabaseConstants.STORY_AUTHORS };
|
||||
|
@ -112,16 +100,7 @@ public class FolderItemListFragment extends StoryItemListFragment implements Loa
|
|||
|
||||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int loaderId, Bundle bundle) {
|
||||
Uri uri = FeedProvider.MULTIFEED_STORIES_URI;
|
||||
CursorLoader cursorLoader = new CursorLoader(getActivity(), uri, null, DatabaseConstants.getStorySelectionFromState(currentState), feedIds, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
return cursorLoader;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
|
||||
if (cursor != null) {
|
||||
adapter.swapCursor(cursor);
|
||||
}
|
||||
return new CursorLoader(getActivity(), FeedProvider.MULTIFEED_STORIES_URI, null, DatabaseConstants.getStorySelectionFromState(currentState), feedIds, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
}
|
||||
|
||||
public void hasUpdated() {
|
||||
|
@ -148,36 +127,12 @@ public class FolderItemListFragment extends StoryItemListFragment implements Loa
|
|||
|
||||
public void changeState(int state) {
|
||||
currentState = state;
|
||||
refreshStories();
|
||||
hasUpdated();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void refreshStories() {
|
||||
final String selection = DatabaseConstants.getStorySelectionFromState(currentState);
|
||||
Cursor cursor = contentResolver.query(storiesUri, null, selection, feedIds, DatabaseConstants.getStorySortOrder(storyOrder));
|
||||
getActivity().startManagingCursor(cursor);
|
||||
adapter.swapCursor(cursor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) {
|
||||
if (firstVisible + visibleCount == totalCount && !requestedPage && doRequest) {
|
||||
currentPage += 1;
|
||||
requestedPage = true;
|
||||
((ItemsList) getActivity()).triggerRefresh(currentPage);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) { }
|
||||
|
||||
@Override
|
||||
public void setStoryOrder(StoryOrder storyOrder) {
|
||||
this.storyOrder = storyOrder;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected StoryItemsAdapter getAdapter() {
|
||||
return adapter;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,20 +1,35 @@
|
|||
package com.newsblur.fragment;
|
||||
|
||||
import android.database.Cursor;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.AbsListView.OnScrollListener;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.newsblur.R;
|
||||
import com.newsblur.activity.ItemsList;
|
||||
import com.newsblur.database.StoryItemsAdapter;
|
||||
import com.newsblur.util.StoryOrder;
|
||||
|
||||
public abstract class ItemListFragment extends Fragment {
|
||||
public abstract class ItemListFragment extends Fragment implements OnScrollListener {
|
||||
|
||||
protected int currentPage = 0;
|
||||
protected boolean requestedPage;
|
||||
protected StoryItemsAdapter adapter;
|
||||
|
||||
public abstract void hasUpdated();
|
||||
public abstract void changeState(final int state);
|
||||
public abstract void setStoryOrder(StoryOrder storyOrder);
|
||||
|
||||
|
||||
public void resetPagination() {
|
||||
this.currentPage = 0;
|
||||
}
|
||||
|
||||
public void setEmptyListView(int rid) {
|
||||
View v = this.getView();
|
||||
if (v == null) return; // we might have beat construction?
|
||||
|
@ -28,5 +43,33 @@ public abstract class ItemListFragment extends Fragment {
|
|||
TextView emptyView = (TextView) itemList.getEmptyView();
|
||||
emptyView.setText(rid);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public synchronized void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) {
|
||||
if (totalCount != 0 && (firstVisible + visibleCount == totalCount) && !requestedPage) {
|
||||
currentPage += 1;
|
||||
requestedPage = true;
|
||||
triggerRefresh(currentPage);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) { }
|
||||
|
||||
protected void triggerRefresh(int page) {
|
||||
((ItemsList) getActivity()).triggerRefresh(page);
|
||||
}
|
||||
|
||||
// all child classes need this callback, so implement it here
|
||||
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
|
||||
if (cursor != null) {
|
||||
if (cursor.getCount() == 0) {
|
||||
currentPage += 1;
|
||||
requestedPage = true;
|
||||
triggerRefresh(currentPage);
|
||||
}
|
||||
adapter.swapCursor(cursor);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,8 +12,6 @@ import android.support.v4.widget.SimpleCursorAdapter;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.AbsListView.OnScrollListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ListView;
|
||||
|
@ -29,23 +27,15 @@ import com.newsblur.util.NetworkUtils;
|
|||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.view.SocialItemViewBinder;
|
||||
|
||||
public class SavedStoriesItemListFragment extends ItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener, OnScrollListener {
|
||||
public class SavedStoriesItemListFragment extends ItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
|
||||
private boolean doRequest = true;
|
||||
private ContentResolver contentResolver;
|
||||
private SimpleCursorAdapter adapter;
|
||||
private boolean requestedPage;
|
||||
private int currentPage = 0;
|
||||
|
||||
public static int ITEMLIST_LOADER = 0x01;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
if (!NetworkUtils.isOnline(getActivity())) {
|
||||
doRequest = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -56,7 +46,7 @@ public class SavedStoriesItemListFragment extends ItemListFragment implements Lo
|
|||
itemList.setEmptyView(v.findViewById(R.id.empty_view));
|
||||
|
||||
contentResolver = getActivity().getContentResolver();
|
||||
Cursor cursor = contentResolver.query(FeedProvider.STARRED_STORIES_URI, null, null, null, null);
|
||||
Cursor cursor = contentResolver.query(FeedProvider.STARRED_STORIES_URI, null, null, null, DatabaseConstants.getStorySortOrder(StoryOrder.NEWEST));
|
||||
|
||||
String[] groupFrom = new String[] { DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_AUTHORS, DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_SHORTDATE, DatabaseConstants.STORY_INTELLIGENCE_AUTHORS, DatabaseConstants.FEED_TITLE };
|
||||
int[] groupTo = new int[] { R.id.row_item_title, R.id.row_item_author, R.id.row_item_title, R.id.row_item_date, R.id.row_item_sidebar, R.id.row_item_feedtitle };
|
||||
|
@ -74,13 +64,6 @@ public class SavedStoriesItemListFragment extends ItemListFragment implements Lo
|
|||
return v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
|
||||
if (cursor != null) {
|
||||
adapter.swapCursor(cursor);
|
||||
}
|
||||
}
|
||||
|
||||
public void hasUpdated() {
|
||||
if (isAdded()) {
|
||||
getLoaderManager().restartLoader(ITEMLIST_LOADER , null, this);
|
||||
|
@ -103,18 +86,6 @@ public class SavedStoriesItemListFragment extends ItemListFragment implements Lo
|
|||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) {
|
||||
if (firstVisible + visibleCount == totalCount && !requestedPage && doRequest) {
|
||||
currentPage += 1;
|
||||
requestedPage = true;
|
||||
((ItemsList) getActivity()).triggerRefresh(currentPage);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView arg0, int arg1) { }
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
Intent i = new Intent(getActivity(), SavedStoriesReading.class);
|
||||
|
@ -124,8 +95,7 @@ public class SavedStoriesItemListFragment extends ItemListFragment implements Lo
|
|||
|
||||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
|
||||
CursorLoader cursorLoader = new CursorLoader(getActivity(), FeedProvider.STARRED_STORIES_URI, null, null, null, null);
|
||||
return cursorLoader;
|
||||
return new CursorLoader(getActivity(), FeedProvider.STARRED_STORIES_URI, null, null, null, DatabaseConstants.getStorySortOrder(StoryOrder.NEWEST));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -13,8 +13,6 @@ import android.support.v4.widget.SimpleCursorAdapter;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.AbsListView.OnScrollListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ListView;
|
||||
|
@ -30,15 +28,13 @@ import com.newsblur.domain.SocialFeed;
|
|||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.view.SocialItemViewBinder;
|
||||
|
||||
public class SocialFeedItemListFragment extends ItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener, OnScrollListener {
|
||||
public class SocialFeedItemListFragment extends ItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
|
||||
private ContentResolver contentResolver;
|
||||
private String userId, username;
|
||||
private SimpleCursorAdapter adapter;
|
||||
private Uri storiesUri;
|
||||
private SocialFeed socialFeed;
|
||||
private int currentState, currentPage = 1;
|
||||
private boolean requestedPage;
|
||||
private int currentState;
|
||||
|
||||
public static int ITEMLIST_LOADER = 0x01;
|
||||
private Uri socialFeedUri;
|
||||
|
@ -58,10 +54,16 @@ public class SocialFeedItemListFragment extends ItemListFragment implements Load
|
|||
storiesUri = FeedProvider.SOCIALFEED_STORIES_URI.buildUpon().appendPath(userId).build();
|
||||
|
||||
setupSocialFeed();
|
||||
|
||||
Uri uri = FeedProvider.SOCIALFEED_STORIES_URI.buildUpon().appendPath(userId).build();
|
||||
Cursor cursor = getActivity().getContentResolver().query(uri, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySharedSortOrder(storyOrder));
|
||||
|
||||
groupFroms = new String[] { DatabaseConstants.FEED_FAVICON_URL, DatabaseConstants.FEED_TITLE, DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_SHORTDATE, DatabaseConstants.STORY_AUTHORS, DatabaseConstants.STORY_INTELLIGENCE_AUTHORS};
|
||||
groupTos = new int[] { R.id.row_item_feedicon, R.id.row_item_feedtitle, R.id.row_item_title, R.id.row_item_date, R.id.row_item_author, R.id.row_item_sidebar};
|
||||
|
||||
adapter = new MultipleFeedItemsAdapter(getActivity(), R.layout.row_socialitem, cursor, groupFroms, groupTos, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
|
||||
adapter.setViewBinder(new SocialItemViewBinder(getActivity()));
|
||||
|
||||
getLoaderManager().initLoader(ITEMLIST_LOADER , null, this);
|
||||
|
||||
}
|
||||
|
@ -102,19 +104,6 @@ public class SocialFeedItemListFragment extends ItemListFragment implements Load
|
|||
return cursorLoader;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
|
||||
if (adapter == null) {
|
||||
adapter = new MultipleFeedItemsAdapter(getActivity(), R.layout.row_socialitem, cursor, groupFroms, groupTos, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
|
||||
adapter.setViewBinder(new SocialItemViewBinder(getActivity()));
|
||||
itemList.setAdapter(adapter);
|
||||
}
|
||||
|
||||
if (cursor != null) {
|
||||
adapter.swapCursor(cursor);
|
||||
}
|
||||
}
|
||||
|
||||
public void hasUpdated() {
|
||||
setupSocialFeed();
|
||||
requestedPage = false;
|
||||
|
@ -128,17 +117,6 @@ public class SocialFeedItemListFragment extends ItemListFragment implements Load
|
|||
adapter.notifyDataSetInvalidated();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) {
|
||||
if (firstVisible + visibleCount == totalCount) {
|
||||
if (!requestedPage) {
|
||||
currentPage += 1;
|
||||
requestedPage = true;
|
||||
((ItemsList) getActivity()).triggerRefresh(currentPage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
Intent i = new Intent(getActivity(), SocialFeedReading.class);
|
||||
|
@ -151,15 +129,9 @@ public class SocialFeedItemListFragment extends ItemListFragment implements Load
|
|||
|
||||
public void changeState(int state) {
|
||||
currentState = state;
|
||||
final String selection = DatabaseConstants.getStorySelectionFromState(state);
|
||||
Cursor cursor = contentResolver.query(storiesUri, null, selection, null, DatabaseConstants.getStorySharedSortOrder(storyOrder));
|
||||
adapter.swapCursor(cursor);
|
||||
getActivity().startManagingCursor(cursor);
|
||||
hasUpdated();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) { }
|
||||
|
||||
@Override
|
||||
public void setStoryOrder(StoryOrder storyOrder) {
|
||||
this.storyOrder = storyOrder;
|
||||
|
|
|
@ -29,14 +29,13 @@ public abstract class StoryItemListFragment extends ItemListFragment implements
|
|||
@Override
|
||||
public boolean onContextItemSelected(MenuItem item) {
|
||||
final AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
|
||||
StoryItemsAdapter adapter = getAdapter();
|
||||
if (item.getItemId() == R.id.menu_mark_story_as_read) {
|
||||
final Story story = adapter.getStory(menuInfo.position);
|
||||
if(! story.read) {
|
||||
List<Story> storiesToMarkAsRead = new ArrayList<Story>();
|
||||
storiesToMarkAsRead.add(story);
|
||||
FeedUtils.markStoriesAsRead(storiesToMarkAsRead, getActivity());
|
||||
refreshStories();
|
||||
hasUpdated();
|
||||
}
|
||||
} else if (item.getItemId() == R.id.menu_mark_previous_stories_as_read) {
|
||||
final List<Story> previousStories = adapter.getPreviousStories(menuInfo.position);
|
||||
|
@ -47,7 +46,7 @@ public abstract class StoryItemListFragment extends ItemListFragment implements
|
|||
}
|
||||
}
|
||||
FeedUtils.markStoriesAsRead(storiesToMarkAsRead, getActivity());
|
||||
refreshStories();
|
||||
hasUpdated();
|
||||
} else if (item.getItemId() == R.id.menu_shared) {
|
||||
Story story = adapter.getStory(menuInfo.position);
|
||||
FeedUtils.shareStory(story, getActivity());
|
||||
|
@ -55,8 +54,4 @@ public abstract class StoryItemListFragment extends ItemListFragment implements
|
|||
return super.onContextItemSelected(item);
|
||||
}
|
||||
|
||||
protected abstract void refreshStories();
|
||||
|
||||
protected abstract StoryItemsAdapter getAdapter();
|
||||
|
||||
}
|
||||
|
|
|
@ -208,9 +208,6 @@ public class APIManager {
|
|||
Uri storyUri = FeedProvider.FEED_STORIES_URI.buildUpon().appendPath(feedId).build();
|
||||
Uri classifierUri = FeedProvider.CLASSIFIER_URI.buildUpon().appendPath(feedId).build();
|
||||
|
||||
if (pageNumber == 1) {
|
||||
contentResolver.delete(storyUri, null, null);
|
||||
}
|
||||
contentResolver.delete(classifierUri, null, null);
|
||||
|
||||
for (ContentValues classifierValues : storiesResponse.classifiers.getContentValues()) {
|
||||
|
@ -241,11 +238,6 @@ public class APIManager {
|
|||
|
||||
StoriesResponse storiesResponse = (StoriesResponse) response.getResponse(gson, StoriesResponse.class);
|
||||
if (!response.isError()) {
|
||||
if (pageNumber == 1) {
|
||||
Uri storyUri = FeedProvider.ALL_STORIES_URI;
|
||||
contentResolver.delete(storyUri, null, null);
|
||||
}
|
||||
|
||||
for (Story story : storiesResponse.stories) {
|
||||
Uri storyUri = FeedProvider.FEED_STORIES_URI.buildUpon().appendPath(story.feedId).build();
|
||||
contentResolver.insert(storyUri, story.getValues());
|
||||
|
@ -255,7 +247,6 @@ public class APIManager {
|
|||
for (UserProfile user : storiesResponse.users) {
|
||||
contentResolver.insert(FeedProvider.USERS_URI, user.getValues());
|
||||
}
|
||||
|
||||
}
|
||||
return storiesResponse;
|
||||
}
|
||||
|
@ -267,9 +258,6 @@ public class APIManager {
|
|||
|
||||
StoriesResponse storiesResponse = (StoriesResponse) response.getResponse(gson, StoriesResponse.class);
|
||||
if (!response.isError()) {
|
||||
if (pageNumber == 1) {
|
||||
contentResolver.delete(FeedProvider.STARRED_STORIES_URI, null, null);
|
||||
}
|
||||
for (Story story : storiesResponse.stories) {
|
||||
contentResolver.insert(FeedProvider.STARRED_STORIES_URI, story.getValues());
|
||||
insertComments(story);
|
||||
|
@ -294,11 +282,6 @@ public class APIManager {
|
|||
SocialFeedResponse storiesResponse = (SocialFeedResponse) response.getResponse(gson, SocialFeedResponse.class);
|
||||
if (!response.isError()) {
|
||||
|
||||
if (pageNumber == 1) {
|
||||
Uri storyUri = FeedProvider.ALL_STORIES_URI;
|
||||
contentResolver.delete(storyUri, null, null);
|
||||
}
|
||||
|
||||
for (Story story : storiesResponse.stories) {
|
||||
for (String userId : story.sharedUserIds) {
|
||||
Uri storySocialUri = FeedProvider.SOCIALFEED_STORIES_URI.buildUpon().appendPath(userId).build();
|
||||
|
@ -337,15 +320,11 @@ public class APIManager {
|
|||
SocialFeedResponse socialFeedResponse = (SocialFeedResponse) response.getResponse(gson, SocialFeedResponse.class);
|
||||
if (!response.isError()) {
|
||||
|
||||
Uri storySocialUri = FeedProvider.SOCIALFEED_STORIES_URI.buildUpon().appendPath(userId).build();
|
||||
if (pageNumber == 1) {
|
||||
contentResolver.delete(storySocialUri, null, null);
|
||||
}
|
||||
|
||||
for (Story story : socialFeedResponse.stories) {
|
||||
insertComments(story);
|
||||
|
||||
Uri storyUri = FeedProvider.FEED_STORIES_URI.buildUpon().appendPath(story.feedId).build();
|
||||
Uri storySocialUri = FeedProvider.SOCIALFEED_STORIES_URI.buildUpon().appendPath(userId).build();
|
||||
contentResolver.insert(storyUri, story.getValues());
|
||||
contentResolver.insert(storySocialUri, story.getValues());
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ public class FeedUtils {
|
|||
protected void onPostExecute(StoriesResponse result) {
|
||||
handleStoryResponse(context, result, result.stories, receiver);
|
||||
}
|
||||
}.execute();
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
public static void updateFeeds(final Context context, final ActionCompletionListener receiver, final String[] feedIds, final int pageNumber, final StoryOrder order, final ReadFilter filter) {
|
||||
|
@ -62,7 +62,7 @@ public class FeedUtils {
|
|||
protected void onPostExecute(StoriesResponse result) {
|
||||
handleStoryResponse(context, result, result.stories, receiver);
|
||||
}
|
||||
}.execute();
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
public static void updateSocialFeed(final Context context, final ActionCompletionListener receiver, final String feedId, final String socialUsername, final int pageNumber, final StoryOrder order, final ReadFilter filter) {
|
||||
|
@ -76,7 +76,7 @@ public class FeedUtils {
|
|||
protected void onPostExecute(SocialFeedResponse result) {
|
||||
handleStoryResponse(context, result, result.stories, receiver);
|
||||
}
|
||||
}.execute();
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
public static void updateSocialFeeds(final Context context, final ActionCompletionListener receiver, final String[] feedIds, final int pageNumber, final StoryOrder order, final ReadFilter filter) {
|
||||
|
@ -90,7 +90,7 @@ public class FeedUtils {
|
|||
protected void onPostExecute(SocialFeedResponse result) {
|
||||
handleStoryResponse(context, result, result.stories, receiver);
|
||||
}
|
||||
}.execute();
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
public static void updateSavedStories(final Context context, final ActionCompletionListener receiver, final int pageNumber) {
|
||||
|
@ -104,7 +104,17 @@ public class FeedUtils {
|
|||
protected void onPostExecute(StoriesResponse result) {
|
||||
handleStoryResponse(context, result, result.stories, receiver);
|
||||
}
|
||||
}.execute();
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
public static void clearStories(final Context context) {
|
||||
new AsyncTask<Void, Void, Void>() {
|
||||
@Override
|
||||
protected Void doInBackground(Void... arg) {
|
||||
context.getContentResolver().delete(FeedProvider.ALL_STORIES_URI, null, null);
|
||||
return null;
|
||||
}
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
private static void handleStoryResponse(Context context, NewsBlurResponse response, Story[] stories, ActionCompletionListener receiver) {
|
||||
|
|
Loading…
Add table
Reference in a new issue