diff --git a/media/android/NewsBlur/AndroidManifest.xml b/media/android/NewsBlur/AndroidManifest.xml
index bbac91741..b6c586c75 100644
--- a/media/android/NewsBlur/AndroidManifest.xml
+++ b/media/android/NewsBlur/AndroidManifest.xml
@@ -99,6 +99,9 @@
+
+
diff --git a/media/android/NewsBlur/res/layout/row_saved_stories.xml b/media/android/NewsBlur/res/layout/row_saved_stories.xml
index 367485641..940b37c27 100644
--- a/media/android/NewsBlur/res/layout/row_saved_stories.xml
+++ b/media/android/NewsBlur/res/layout/row_saved_stories.xml
@@ -37,7 +37,7 @@
android:layout_marginRight="5dp"
android:background="@drawable/saved_count_rect"
android:gravity="center"
- android:padding="5dp"
+ android:padding="3dp"
android:shadowColor="@color/saved_drop_shadow"
android:shadowDy="1"
android:shadowRadius="1"
diff --git a/media/android/NewsBlur/src/com/newsblur/activity/SavedStoriesReading.java b/media/android/NewsBlur/src/com/newsblur/activity/SavedStoriesReading.java
new file mode 100644
index 000000000..579c4f1fb
--- /dev/null
+++ b/media/android/NewsBlur/src/com/newsblur/activity/SavedStoriesReading.java
@@ -0,0 +1,84 @@
+package com.newsblur.activity;
+
+import android.content.Intent;
+import android.database.Cursor;
+import android.os.Bundle;
+
+import com.newsblur.R;
+import com.newsblur.database.DatabaseConstants;
+import com.newsblur.database.FeedProvider;
+import com.newsblur.database.MixedFeedsReadingAdapter;
+import com.newsblur.service.SyncService;
+
+public class SavedStoriesReading extends Reading {
+
+ private Cursor stories;
+ private int currentPage;
+ private boolean stopLoading = false;
+ private boolean requestedPage = false;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceBundle) {
+ super.onCreate(savedInstanceBundle);
+
+ setResult(RESULT_OK);
+
+ stories = contentResolver.query(FeedProvider.STARRED_STORIES_URI, null, null, null, null);
+ setTitle(getResources().getString(R.string.saved_stories_title));
+ readingAdapter = new MixedFeedsReadingAdapter(getSupportFragmentManager(), getContentResolver(), stories);
+
+ setupPager();
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ super.onPageSelected(position);
+ checkStoryCount(position);
+ }
+
+ @Override
+ public void triggerRefresh() {
+ triggerRefresh(1);
+ }
+
+ @Override
+ public void checkStoryCount(int position) {
+ if (position == stories.getCount() - 1 && !stopLoading && !requestedPage) {
+ requestedPage = true;
+ currentPage += 1;
+ triggerRefresh(currentPage);
+ }
+ }
+
+ @Override
+ public void triggerRefresh(int page) {
+ if (!stopLoading) {
+ setSupportProgressBarIndeterminateVisibility(true);
+ final Intent intent = new Intent(Intent.ACTION_SYNC, null, this, SyncService.class);
+ intent.putExtra(SyncService.EXTRA_STATUS_RECEIVER, syncFragment.receiver);
+ intent.putExtra(SyncService.SYNCSERVICE_TASK, SyncService.EXTRA_TASK_STARRED_STORIES_UPDATE);
+ if (page > 1) {
+ intent.putExtra(SyncService.EXTRA_TASK_PAGE_NUMBER, Integer.toString(page));
+ }
+ startService(intent);
+ }
+ }
+
+ @Override
+ public void updateAfterSync() {
+ setSupportProgressBarIndeterminateVisibility(false);
+ stories.requery();
+ requestedPage = false;
+ readingAdapter.notifyDataSetChanged();
+ checkStoryCount(pager.getCurrentItem());
+ }
+
+ @Override
+ public void setNothingMoreToUpdate() {
+ stopLoading = true;
+ }
+
+ @Override
+ public void closeAfterUpdate() { }
+
+}
diff --git a/media/android/NewsBlur/src/com/newsblur/database/FeedProvider.java b/media/android/NewsBlur/src/com/newsblur/database/FeedProvider.java
index ed666ce7d..a76ec009f 100644
--- a/media/android/NewsBlur/src/com/newsblur/database/FeedProvider.java
+++ b/media/android/NewsBlur/src/com/newsblur/database/FeedProvider.java
@@ -305,7 +305,7 @@ public class FeedProvider extends ContentProvider {
mdb = db;
}
public Cursor rawQuery(String sql, String[] selectionArgs) {
- Log.d(LoggingDatabase.class.getName(), "rawQuery: " + sql);
+ //Log.d(LoggingDatabase.class.getName(), "rawQuery: " + sql);
return mdb.rawQuery(sql, selectionArgs);
}
public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) {
diff --git a/media/android/NewsBlur/src/com/newsblur/database/MultipleFeedItemsAdapter.java b/media/android/NewsBlur/src/com/newsblur/database/MultipleFeedItemsAdapter.java
index 6154038ac..646ab2b2d 100644
--- a/media/android/NewsBlur/src/com/newsblur/database/MultipleFeedItemsAdapter.java
+++ b/media/android/NewsBlur/src/com/newsblur/database/MultipleFeedItemsAdapter.java
@@ -21,8 +21,9 @@ public class MultipleFeedItemsAdapter extends SimpleCursorAdapter {
private Cursor cursor;
private ImageLoader imageLoader;
private int storyTitleUnread, storyAuthorUnread, storyTitleRead, storyAuthorRead, storyDateUnread, storyDateRead, storyFeedUnread, storyFeedRead;
+ private boolean ignoreReadStatus;
- public MultipleFeedItemsAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
+ public MultipleFeedItemsAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags, boolean ignoreReadStatus) {
super(context, layout, c, from, to, flags);
imageLoader = ((NewsBlurApplication) context.getApplicationContext()).getImageLoader();
this.cursor = c;
@@ -35,8 +36,14 @@ public class MultipleFeedItemsAdapter extends SimpleCursorAdapter {
storyDateRead = context.getResources().getColor(R.color.story_date_read);
storyFeedUnread = context.getResources().getColor(R.color.story_feed_unread);
storyFeedRead = context.getResources().getColor(R.color.story_feed_read);
+
+ this.ignoreReadStatus = ignoreReadStatus;
}
+ public MultipleFeedItemsAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
+ this(context, layout, c, from, to, flags, false);
+ }
+
@Override
public int getCount() {
return cursor.getCount();
@@ -69,7 +76,7 @@ public class MultipleFeedItemsAdapter extends SimpleCursorAdapter {
borderTwo.setBackgroundColor(Color.LTGRAY);
}
- if (! Story.fromCursor(cursor).read) {
+ if (this.ignoreReadStatus || (! Story.fromCursor(cursor).read)) {
((TextView) v.findViewById(R.id.row_item_author)).setTextColor(storyAuthorUnread);
((TextView) v.findViewById(R.id.row_item_date)).setTextColor(storyDateUnread);
((TextView) v.findViewById(R.id.row_item_feedtitle)).setTextColor(storyFeedUnread);
diff --git a/media/android/NewsBlur/src/com/newsblur/fragment/FolderListFragment.java b/media/android/NewsBlur/src/com/newsblur/fragment/FolderListFragment.java
index abd6b3b89..742ae45ef 100644
--- a/media/android/NewsBlur/src/com/newsblur/fragment/FolderListFragment.java
+++ b/media/android/NewsBlur/src/com/newsblur/fragment/FolderListFragment.java
@@ -138,14 +138,15 @@ public class FolderListFragment extends Fragment implements OnGroupClickListener
ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) menuInfo;
int type = ExpandableListView.getPackedPositionType(info.packedPosition);
- // Only create a context menu for child items
switch(type) {
- // Group (folder) item
- case 0:
- inflater.inflate(R.menu.context_folder, menu);
+ case ExpandableListView.PACKED_POSITION_TYPE_GROUP:
+ int groupPosition = ExpandableListView.getPackedPositionGroup(info.packedPosition);
+ if (! folderAdapter.isRowSavedStories(groupPosition) ) {
+ inflater.inflate(R.menu.context_folder, menu);
+ }
break;
- // Child (feed) item
- case 1:
+
+ case ExpandableListView.PACKED_POSITION_TYPE_CHILD:
inflater.inflate(R.menu.context_feed, menu);
break;
}
diff --git a/media/android/NewsBlur/src/com/newsblur/fragment/SavedStoriesItemListFragment.java b/media/android/NewsBlur/src/com/newsblur/fragment/SavedStoriesItemListFragment.java
index e17c229f9..15f3f501d 100644
--- a/media/android/NewsBlur/src/com/newsblur/fragment/SavedStoriesItemListFragment.java
+++ b/media/android/NewsBlur/src/com/newsblur/fragment/SavedStoriesItemListFragment.java
@@ -19,7 +19,7 @@ import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.newsblur.R;
-import com.newsblur.activity.AllStoriesReading;
+import com.newsblur.activity.SavedStoriesReading;
import com.newsblur.activity.FeedReading;
import com.newsblur.activity.ItemsList;
import com.newsblur.database.DatabaseConstants;
@@ -63,7 +63,7 @@ public class SavedStoriesItemListFragment extends ItemListFragment implements Lo
getLoaderManager().initLoader(ITEMLIST_LOADER , null, this);
- adapter = new MultipleFeedItemsAdapter(getActivity(), R.layout.row_socialitem, cursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
+ adapter = new MultipleFeedItemsAdapter(getActivity(), R.layout.row_socialitem, cursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER, true);
itemList.setOnScrollListener(this);
@@ -115,7 +115,7 @@ public class SavedStoriesItemListFragment extends ItemListFragment implements Lo
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- Intent i = new Intent(getActivity(), AllStoriesReading.class);
+ Intent i = new Intent(getActivity(), SavedStoriesReading.class);
i.putExtra(FeedReading.EXTRA_POSITION, position);
startActivityForResult(i, READING_RETURNED );
}