mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
Muting folder should include all feeds in folder.
This commit is contained in:
parent
190ea94dbb
commit
887bc05661
4 changed files with 24 additions and 25 deletions
|
@ -522,14 +522,14 @@ public class BlurDatabaseHelper {
|
|||
}
|
||||
}
|
||||
|
||||
public void setFeedsActive(List<Feed> feeds, boolean active) {
|
||||
public void setFeedsActive(List<String> feedIds, boolean active) {
|
||||
synchronized (RW_MUTEX) {
|
||||
dbRW.beginTransaction();
|
||||
try {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(DatabaseConstants.FEED_ACTIVE, active);
|
||||
for (Feed feed : feeds) {
|
||||
dbRW.update(DatabaseConstants.FEED_TABLE, values, DatabaseConstants.FEED_ID + " = ?", new String[]{feed.feedId});
|
||||
for (String feedId : feedIds) {
|
||||
dbRW.update(DatabaseConstants.FEED_TABLE, values, DatabaseConstants.FEED_ID + " = ?", new String[]{feedId});
|
||||
}
|
||||
dbRW.setTransactionSuccessful();
|
||||
} finally {
|
||||
|
|
|
@ -625,8 +625,10 @@ public class FolderListAdapter extends BaseExpandableListAdapter {
|
|||
return activeFolderChildren.get(convertGroupPositionToActiveFolderIndex(groupPosition)).get(childPosition);
|
||||
}
|
||||
|
||||
public List<Feed> getFeeds(int groupPosition) {
|
||||
return activeFolderChildren.get(convertGroupPositionToActiveFolderIndex(groupPosition));
|
||||
public List<String> getAllFeedsForFolder(int groupPosition) {
|
||||
String flatFolderName = activeFolderNames.get(convertGroupPositionToActiveFolderIndex(groupPosition));
|
||||
Folder folder = flatFolders.get(flatFolderName);
|
||||
return folder.feedIds;
|
||||
}
|
||||
|
||||
/** Get the cached SocialFeed object for the feed at the given list location. */
|
||||
|
|
|
@ -291,17 +291,17 @@ public class FolderListFragment extends NbFragment implements OnCreateContextMen
|
|||
DialogFragment chooseFoldersFragment = ChooseFoldersFragment.newInstance(adapter.getFeed(groupPosition, childPosition));
|
||||
chooseFoldersFragment.show(getFragmentManager(), "dialog");
|
||||
} else if (item.getItemId() == R.id.menu_mute_feed) {
|
||||
List<Feed> feeds = new ArrayList<Feed>();
|
||||
feeds.add(adapter.getFeed(groupPosition, childPosition));
|
||||
FeedUtils.muteFeeds(getActivity(), feeds);
|
||||
List<String> feedIds = new ArrayList<String>();
|
||||
feedIds.add(adapter.getFeed(groupPosition, childPosition).feedId);
|
||||
FeedUtils.muteFeeds(getActivity(), feedIds);
|
||||
} else if (item.getItemId() == R.id.menu_unmute_feed) {
|
||||
List<Feed> feeds = new ArrayList<Feed>();
|
||||
feeds.add(adapter.getFeed(groupPosition, childPosition));
|
||||
FeedUtils.unmuteFeeds(getActivity(), feeds);
|
||||
List<String> feedIds = new ArrayList<String>();
|
||||
feedIds.add(adapter.getFeed(groupPosition, childPosition).feedId);
|
||||
FeedUtils.unmuteFeeds(getActivity(), feedIds);
|
||||
} else if (item.getItemId() == R.id.menu_mute_folder) {
|
||||
FeedUtils.muteFeeds(getActivity(), adapter.getFeeds(groupPosition));
|
||||
FeedUtils.muteFeeds(getActivity(), adapter.getAllFeedsForFolder(groupPosition));
|
||||
} else if (item.getItemId() == R.id.menu_unmute_folder) {
|
||||
FeedUtils.unmuteFeeds(getActivity(), adapter.getFeeds(groupPosition));
|
||||
FeedUtils.unmuteFeeds(getActivity(), adapter.getAllFeedsForFolder(groupPosition));
|
||||
}
|
||||
|
||||
return super.onContextItemSelected(item);
|
||||
|
|
|
@ -288,35 +288,32 @@ public class FeedUtils {
|
|||
}.execute();
|
||||
}
|
||||
|
||||
public static void muteFeeds(final Context context, final List<Feed> feeds) {
|
||||
updateFeedActiveState(context, feeds, false);
|
||||
public static void muteFeeds(final Context context, final List<String> feedIds) {
|
||||
updateFeedActiveState(context, feedIds, false);
|
||||
}
|
||||
|
||||
public static void unmuteFeeds(final Context context, final List<Feed> feeds) {
|
||||
updateFeedActiveState(context, feeds, true);
|
||||
public static void unmuteFeeds(final Context context, final List<String> feedIds) {
|
||||
updateFeedActiveState(context, feedIds, true);
|
||||
}
|
||||
|
||||
private static void updateFeedActiveState(final Context context, final List<Feed> feeds, final boolean active) {
|
||||
private static void updateFeedActiveState(final Context context, final List<String> feedIds, final boolean active) {
|
||||
new AsyncTask<Void, Void, NewsBlurResponse>() {
|
||||
@Override
|
||||
protected NewsBlurResponse doInBackground(Void... arg) {
|
||||
APIManager apiManager = new APIManager(context);
|
||||
Set<String> activeFeeds = dbHelper.getAllActiveFeeds();
|
||||
for (Feed feed : feeds) {
|
||||
for (String feedId : feedIds) {
|
||||
if (active) {
|
||||
activeFeeds.add(feed.feedId);
|
||||
activeFeeds.add(feedId);
|
||||
} else {
|
||||
activeFeeds.remove(feed.feedId);
|
||||
activeFeeds.remove(feedId);
|
||||
}
|
||||
}
|
||||
return apiManager.saveFeedChooser(activeFeeds);
|
||||
}
|
||||
@Override
|
||||
protected void onPostExecute(NewsBlurResponse result) {
|
||||
for (Feed feed : feeds) {
|
||||
feed.active = active;
|
||||
}
|
||||
dbHelper.setFeedsActive(feeds, active);
|
||||
dbHelper.setFeedsActive(feedIds, active);
|
||||
NbActivity.updateAllActivities(NbActivity.UPDATE_METADATA);
|
||||
triggerSync(context);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue