mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
Support mute/unmute long press for folders.
This commit is contained in:
parent
55a6106ad5
commit
190ea94dbb
6 changed files with 54 additions and 17 deletions
|
@ -3,5 +3,11 @@
|
|||
|
||||
<item android:id="@+id/menu_mark_folder_as_read"
|
||||
android:title="@string/menu_mark_folder_as_read" />
|
||||
|
||||
<item android:id="@+id/menu_mute_folder"
|
||||
android:title="@string/menu_mute_folder" />
|
||||
|
||||
<item android:id="@+id/menu_unmute_folder"
|
||||
android:title="@string/menu_unmute_folder" />
|
||||
|
||||
</menu>
|
|
@ -132,6 +132,8 @@
|
|||
<string name="menu_search_stories">Search…</string>
|
||||
<string name="menu_mute_feed">Mute feed</string>
|
||||
<string name="menu_unmute_feed">Unmute feed</string>
|
||||
<string name="menu_mute_folder">Mute folder</string>
|
||||
<string name="menu_unmute_folder">Unmute folder</string>
|
||||
|
||||
<string name="toast_story_unread">Story marked as unread</string>
|
||||
|
||||
|
|
|
@ -522,10 +522,20 @@ public class BlurDatabaseHelper {
|
|||
}
|
||||
}
|
||||
|
||||
public void setFeedActive(String feedId, boolean active) {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(DatabaseConstants.FEED_ACTIVE, active);
|
||||
synchronized (RW_MUTEX) {dbRW.update(DatabaseConstants.FEED_TABLE, values, DatabaseConstants.FEED_ID + " = ?", new String[]{feedId});}
|
||||
public void setFeedsActive(List<Feed> feeds, 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});
|
||||
}
|
||||
dbRW.setTransactionSuccessful();
|
||||
} finally {
|
||||
dbRW.endTransaction();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -625,6 +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));
|
||||
}
|
||||
|
||||
/** Get the cached SocialFeed object for the feed at the given list location. */
|
||||
public SocialFeed getSocialFeed(int groupPosition, int childPosition) {
|
||||
return socialFeedsOrdered.get(childPosition);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.newsblur.fragment;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.app.LoaderManager;
|
||||
import android.content.Loader;
|
||||
|
@ -289,9 +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) {
|
||||
FeedUtils.muteFeed(getActivity(), adapter.getFeed(groupPosition, childPosition));
|
||||
List<Feed> feeds = new ArrayList<Feed>();
|
||||
feeds.add(adapter.getFeed(groupPosition, childPosition));
|
||||
FeedUtils.muteFeeds(getActivity(), feeds);
|
||||
} else if (item.getItemId() == R.id.menu_unmute_feed) {
|
||||
FeedUtils.unmuteFeed(getActivity(), adapter.getFeed(groupPosition, childPosition));
|
||||
List<Feed> feeds = new ArrayList<Feed>();
|
||||
feeds.add(adapter.getFeed(groupPosition, childPosition));
|
||||
FeedUtils.unmuteFeeds(getActivity(), feeds);
|
||||
} else if (item.getItemId() == R.id.menu_mute_folder) {
|
||||
FeedUtils.muteFeeds(getActivity(), adapter.getFeeds(groupPosition));
|
||||
} else if (item.getItemId() == R.id.menu_unmute_folder) {
|
||||
FeedUtils.unmuteFeeds(getActivity(), adapter.getFeeds(groupPosition));
|
||||
}
|
||||
|
||||
return super.onContextItemSelected(item);
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.newsblur.util;
|
|||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import android.content.Context;
|
||||
|
@ -287,31 +288,35 @@ public class FeedUtils {
|
|||
}.execute();
|
||||
}
|
||||
|
||||
public static void muteFeed(final Context context, final Feed feed) {
|
||||
updateFeedActiveState(context, feed, false);
|
||||
public static void muteFeeds(final Context context, final List<Feed> feeds) {
|
||||
updateFeedActiveState(context, feeds, false);
|
||||
}
|
||||
|
||||
public static void unmuteFeed(final Context context, final Feed feed) {
|
||||
updateFeedActiveState(context, feed, true);
|
||||
public static void unmuteFeeds(final Context context, final List<Feed> feeds) {
|
||||
updateFeedActiveState(context, feeds, true);
|
||||
}
|
||||
|
||||
private static void updateFeedActiveState(final Context context, final Feed feed, final boolean active) {
|
||||
private static void updateFeedActiveState(final Context context, final List<Feed> feeds, final boolean active) {
|
||||
new AsyncTask<Void, Void, NewsBlurResponse>() {
|
||||
@Override
|
||||
protected NewsBlurResponse doInBackground(Void... arg) {
|
||||
APIManager apiManager = new APIManager(context);
|
||||
Set<String> activeFeeds = dbHelper.getAllActiveFeeds();
|
||||
if (active) {
|
||||
activeFeeds.add(feed.feedId);
|
||||
} else {
|
||||
activeFeeds.remove(feed.feedId);
|
||||
for (Feed feed : feeds) {
|
||||
if (active) {
|
||||
activeFeeds.add(feed.feedId);
|
||||
} else {
|
||||
activeFeeds.remove(feed.feedId);
|
||||
}
|
||||
}
|
||||
return apiManager.saveFeedChooser(activeFeeds);
|
||||
}
|
||||
@Override
|
||||
protected void onPostExecute(NewsBlurResponse result) {
|
||||
feed.active = active;
|
||||
dbHelper.setFeedActive(feed.feedId, active);
|
||||
for (Feed feed : feeds) {
|
||||
feed.active = active;
|
||||
}
|
||||
dbHelper.setFeedsActive(feeds, active);
|
||||
NbActivity.updateAllActivities(NbActivity.UPDATE_METADATA);
|
||||
triggerSync(context);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue