mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
Add mark all stories as read menu option to all stories view
This commit is contained in:
parent
0d75d9ecd8
commit
e4cca45e0b
6 changed files with 85 additions and 3 deletions
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.newsblur"
|
||||
android:versionCode="29"
|
||||
android:versionName="1.0.55" >
|
||||
android:versionCode="30"
|
||||
android:versionName="1.0.6" >
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="8"
|
||||
|
|
6
media/android/NewsBlur/res/menu/allstories_itemslist.xml
Normal file
6
media/android/NewsBlur/res/menu/allstories_itemslist.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<item android:id="@+id/menu_mark_all_as_read"
|
||||
android:title="@string/menu_mark_all_as_read"
|
||||
android:showAsAction="never" />
|
||||
</menu>
|
|
@ -137,5 +137,6 @@
|
|||
<string name="let_s_go_">Let&apos;s go!</string>
|
||||
<string name="public_comment_count">%d PUBLIC COMMENTS</string>
|
||||
<string name="friends_comments_count">%d COMMENTS</string>
|
||||
<string name="toast_marked_all_stories_as_read">All stories marked as read</string>
|
||||
|
||||
</resources>
|
|
@ -6,18 +6,26 @@ import android.content.Intent;
|
|||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.actionbarsherlock.view.Menu;
|
||||
import com.actionbarsherlock.view.MenuInflater;
|
||||
import com.newsblur.R;
|
||||
import com.newsblur.database.DatabaseConstants;
|
||||
import com.newsblur.database.FeedProvider;
|
||||
import com.newsblur.domain.Story;
|
||||
import com.newsblur.domain.ValueMultimap;
|
||||
import com.newsblur.fragment.AllStoriesItemListFragment;
|
||||
import com.newsblur.fragment.FeedItemListFragment;
|
||||
import com.newsblur.fragment.SyncUpdateFragment;
|
||||
import com.newsblur.network.APIManager;
|
||||
import com.newsblur.network.MarkAllStoriesAsReadTask;
|
||||
import com.newsblur.service.SyncService;
|
||||
|
||||
public class AllStoriesItemsList extends ItemsList {
|
||||
|
||||
private ArrayList<String> feedIds;
|
||||
private APIManager apiManager;
|
||||
private boolean stopLoading = false;
|
||||
|
||||
@Override
|
||||
|
@ -27,6 +35,7 @@ public class AllStoriesItemsList extends ItemsList {
|
|||
setTitle(getResources().getString(R.string.all_stories));
|
||||
|
||||
feedIds = new ArrayList<String>();
|
||||
apiManager = new APIManager(this);
|
||||
|
||||
Cursor cursor = getContentResolver().query(FeedProvider.FEEDS_URI, null, FeedProvider.getStorySelectionFromState(currentState), null, null);
|
||||
|
||||
|
@ -76,8 +85,37 @@ public class AllStoriesItemsList extends ItemsList {
|
|||
|
||||
|
||||
@Override
|
||||
public void markItemListAsRead() { }
|
||||
public void markItemListAsRead() {
|
||||
Cursor stories = getContentResolver().query(FeedProvider.ALL_STORIES_URI, null, FeedProvider.getStorySelectionFromState(currentState), null, null);
|
||||
ValueMultimap storiesToMarkAsRead = new ValueMultimap();
|
||||
for (int i = 0; i < stories.getCount(); i++) {
|
||||
stories.moveToNext();
|
||||
Story story = Story.fromCursor(stories);
|
||||
storiesToMarkAsRead.put(story.feedId, story.id);
|
||||
}
|
||||
|
||||
new MarkAllStoriesAsReadTask(apiManager) {
|
||||
@Override
|
||||
protected void onPostExecute(Boolean result) {
|
||||
// TODO does main view refresh?
|
||||
if (result) {
|
||||
setResult(RESULT_OK);
|
||||
Toast.makeText(AllStoriesItemsList.this, R.string.toast_marked_all_stories_as_read, Toast.LENGTH_SHORT).show();
|
||||
finish();
|
||||
} else {
|
||||
Toast.makeText(AllStoriesItemsList.this, R.string.toast_error_marking_feed_as_read, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}.execute(storiesToMarkAsRead);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
MenuInflater inflater = getSupportMenuInflater();
|
||||
inflater.inflate(R.menu.allstories_itemslist, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNothingMoreToUpdate() {
|
||||
|
|
|
@ -74,4 +74,7 @@ public class ValueMultimap implements Serializable {
|
|||
return builder.toString();
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return multimap.size();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package com.newsblur.network;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
import com.newsblur.domain.ValueMultimap;
|
||||
|
||||
public abstract class MarkAllStoriesAsReadTask extends AsyncTask<ValueMultimap, Void, Boolean> {
|
||||
List<String> feedIds = new ArrayList<String>();
|
||||
private APIManager apiManager;
|
||||
|
||||
public MarkAllStoriesAsReadTask(final APIManager apiManager) {
|
||||
this.apiManager = apiManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(ValueMultimap... params) {
|
||||
ValueMultimap stories = params[0];
|
||||
if (stories.size() == 0) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(APIConstants.PARAMETER_FEEDS_STORIES, stories.getJsonString());
|
||||
return apiManager.markMultipleStoriesAsRead(values);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected abstract void onPostExecute(Boolean result);
|
||||
}
|
Loading…
Add table
Reference in a new issue