mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Mark-unread from context long-press. (#350)
This commit is contained in:
parent
126722b328
commit
952def6542
6 changed files with 62 additions and 63 deletions
|
@ -7,8 +7,10 @@
|
|||
<item android:id="@+id/menu_mark_previous_stories_as_read"
|
||||
android:title="@string/menu_mark_previous_stories_as_read" />
|
||||
|
||||
<!-- TODO: Share/Unshare, Save/Unsave, mark unread -->
|
||||
<item android:id="@+id/menu_mark_story_as_unread"
|
||||
android:title="@string/menu_mark_unread" />
|
||||
|
||||
<item android:id="@+id/menu_shared"
|
||||
android:title="@string/menu_share"/>
|
||||
|
||||
</menu>
|
||||
</menu>
|
||||
|
|
|
@ -29,7 +29,7 @@ import com.newsblur.util.DefaultFeedView;
|
|||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.view.SocialItemViewBinder;
|
||||
|
||||
public class AllStoriesItemListFragment extends StoryItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
public class AllStoriesItemListFragment extends ItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
|
||||
private String[] feedIds;
|
||||
private int currentState;
|
||||
|
|
|
@ -29,7 +29,7 @@ import com.newsblur.util.DefaultFeedView;
|
|||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.view.FeedItemViewBinder;
|
||||
|
||||
public class FeedItemListFragment extends StoryItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
public class FeedItemListFragment extends ItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
|
||||
private String feedId;
|
||||
private int currentState;
|
||||
|
|
|
@ -33,7 +33,7 @@ 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 {
|
||||
public class FolderItemListFragment extends ItemListFragment implements LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
|
||||
|
||||
private ContentResolver contentResolver;
|
||||
private String[] feedIds;
|
||||
|
|
|
@ -1,22 +1,33 @@
|
|||
package com.newsblur.fragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.database.Cursor;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.util.Log;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.view.View.OnCreateContextMenuListener;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.AbsListView.OnScrollListener;
|
||||
import android.widget.AdapterView;
|
||||
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.domain.Story;
|
||||
import com.newsblur.util.DefaultFeedView;
|
||||
import com.newsblur.util.FeedUtils;
|
||||
import com.newsblur.util.StoryOrder;
|
||||
|
||||
public abstract class ItemListFragment extends Fragment implements OnScrollListener {
|
||||
public abstract class ItemListFragment extends Fragment implements OnScrollListener, OnCreateContextMenuListener {
|
||||
|
||||
protected int currentPage = 0;
|
||||
protected boolean requestedPage;
|
||||
|
@ -91,4 +102,47 @@ public abstract class ItemListFragment extends Fragment implements OnScrollListe
|
|||
public void setDefaultFeedView(DefaultFeedView value) {
|
||||
this.defaultFeedView = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
||||
MenuInflater inflater = getActivity().getMenuInflater();
|
||||
inflater.inflate(R.menu.context_story, menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onContextItemSelected(MenuItem item) {
|
||||
AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
|
||||
Story story = adapter.getStory(menuInfo.position);
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case R.id.menu_mark_story_as_read:
|
||||
FeedUtils.markStoryAsRead(story, getActivity());
|
||||
hasUpdated();
|
||||
return true;
|
||||
|
||||
case R.id.menu_mark_story_as_unread:
|
||||
FeedUtils.markStoryUnread(story, getActivity());
|
||||
hasUpdated();
|
||||
return true;
|
||||
|
||||
case R.id.menu_mark_previous_stories_as_read:
|
||||
List<Story> previousStories = adapter.getPreviousStories(menuInfo.position);
|
||||
List<Story> storiesToMarkAsRead = new ArrayList<Story>();
|
||||
for(Story s : previousStories) {
|
||||
if(! s.read) {
|
||||
storiesToMarkAsRead.add(s);
|
||||
}
|
||||
}
|
||||
FeedUtils.markStoriesAsRead(storiesToMarkAsRead, getActivity());
|
||||
hasUpdated();
|
||||
return true;
|
||||
|
||||
case R.id.menu_shared:
|
||||
FeedUtils.shareStory(story, getActivity());
|
||||
return true;
|
||||
|
||||
default:
|
||||
return super.onContextItemSelected(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,57 +0,0 @@
|
|||
package com.newsblur.fragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.view.ContextMenu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.view.View.OnCreateContextMenuListener;
|
||||
import android.widget.AdapterView;
|
||||
|
||||
import com.newsblur.R;
|
||||
import com.newsblur.database.StoryItemsAdapter;
|
||||
import com.newsblur.domain.Story;
|
||||
import com.newsblur.util.FeedUtils;
|
||||
|
||||
public abstract class StoryItemListFragment extends ItemListFragment implements OnCreateContextMenuListener {
|
||||
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View v,
|
||||
ContextMenuInfo menuInfo) {
|
||||
MenuInflater inflater = getActivity().getMenuInflater();
|
||||
|
||||
inflater.inflate(R.menu.context_story, menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onContextItemSelected(MenuItem item) {
|
||||
final AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
|
||||
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());
|
||||
hasUpdated();
|
||||
}
|
||||
} else if (item.getItemId() == R.id.menu_mark_previous_stories_as_read) {
|
||||
final List<Story> previousStories = adapter.getPreviousStories(menuInfo.position);
|
||||
List<Story> storiesToMarkAsRead = new ArrayList<Story>();
|
||||
for(Story story: previousStories) {
|
||||
if(! story.read) {
|
||||
storiesToMarkAsRead.add(story);
|
||||
}
|
||||
}
|
||||
FeedUtils.markStoriesAsRead(storiesToMarkAsRead, getActivity());
|
||||
hasUpdated();
|
||||
} else if (item.getItemId() == R.id.menu_shared) {
|
||||
Story story = adapter.getStory(menuInfo.position);
|
||||
FeedUtils.shareStory(story, getActivity());
|
||||
}
|
||||
return super.onContextItemSelected(item);
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue