Mark-unread from context long-press. (#350)

This commit is contained in:
dosiecki 2014-02-26 16:55:10 -08:00
parent 126722b328
commit 952def6542
6 changed files with 62 additions and 63 deletions

View file

@ -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>

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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);
}
}
}

View file

@ -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);
}
}