mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Implement switching story order for feeds and folders
This commit is contained in:
parent
3eb8441c2e
commit
c87c10e465
18 changed files with 119 additions and 72 deletions
|
@ -11,15 +11,13 @@
|
|||
android:paddingTop="10dip"
|
||||
>
|
||||
|
||||
<RadioButton android:id="@+id/radio_oldest"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/oldest"
|
||||
android:onClick="onRadioButtonClicked"/>
|
||||
<RadioButton android:id="@+id/radio_newest"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/newest"
|
||||
android:onClick="onRadioButtonClicked"/>
|
||||
android:text="@string/newest"/>
|
||||
<RadioButton android:id="@+id/radio_oldest"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/oldest"/>
|
||||
|
||||
</RadioGroup>
|
|
@ -3,4 +3,7 @@
|
|||
<item android:id="@+id/menu_mark_all_as_read"
|
||||
android:title="@string/menu_mark_all_as_read"
|
||||
android:showAsAction="ifRoom" android:icon="@drawable/markread" />
|
||||
<item android:id="@+id/menu_story_order"
|
||||
android:title="@string/menu_story_order"
|
||||
android:showAsAction="never" />
|
||||
</menu>
|
|
@ -136,6 +136,6 @@
|
|||
<string name="delete_feed_message">Delete feed \"%s\"?</string>
|
||||
|
||||
<string name="oldest">Oldest</string>
|
||||
<string name="newest">Newest</string>
|
||||
<string name="newest">Newest First</string>
|
||||
<string name="menu_story_order">Story Order</string>
|
||||
</resources>
|
||||
|
|
|
@ -21,7 +21,6 @@ import com.newsblur.util.StoryOrder;
|
|||
public class AllSharedStoriesItemsList extends ItemsList {
|
||||
|
||||
private ArrayList<String> feedIds;
|
||||
private boolean stopLoading = false;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle bundle) {
|
||||
|
@ -81,12 +80,6 @@ public class AllSharedStoriesItemsList extends ItemsList {
|
|||
@Override
|
||||
public void markItemListAsRead() { }
|
||||
|
||||
@Override
|
||||
public void setNothingMoreToUpdate() {
|
||||
stopLoading = true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void closeAfterUpdate() { }
|
||||
|
||||
|
@ -96,4 +89,8 @@ public class AllSharedStoriesItemsList extends ItemsList {
|
|||
return PrefsUtils.getStoryOrderForFolder(this, PrefConstants.ALL_SHARED_STORIES_FOLDER_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStoryOrderPreference(StoryOrder newValue) {
|
||||
PrefsUtils.setStoryOrderForFolder(this, PrefConstants.ALL_SHARED_STORIES_FOLDER_NAME, newValue);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,6 @@ public class AllStoriesItemsList extends ItemsList {
|
|||
private ArrayList<String> feedIds;
|
||||
private APIManager apiManager;
|
||||
private ContentResolver resolver;
|
||||
private boolean stopLoading = false;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle bundle) {
|
||||
|
@ -128,12 +127,6 @@ public class AllStoriesItemsList extends ItemsList {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNothingMoreToUpdate() {
|
||||
stopLoading = true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void closeAfterUpdate() { }
|
||||
|
||||
|
@ -143,4 +136,8 @@ public class AllStoriesItemsList extends ItemsList {
|
|||
return PrefsUtils.getStoryOrderForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStoryOrderPreference(StoryOrder newValue) {
|
||||
PrefsUtils.setStoryOrderForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME, newValue);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,6 @@ public class FeedItemsList extends ItemsList {
|
|||
private String feedTitle;
|
||||
private String folderName;
|
||||
private APIManager apiManager;
|
||||
private boolean stopLoading = false;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle bundle) {
|
||||
|
@ -136,11 +135,6 @@ public class FeedItemsList extends ItemsList {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNothingMoreToUpdate() {
|
||||
stopLoading = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeAfterUpdate() {
|
||||
finish();
|
||||
|
@ -151,5 +145,8 @@ public class FeedItemsList extends ItemsList {
|
|||
return PrefsUtils.getStoryOrderForFeed(this, feedId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void updateStoryOrderPreference(StoryOrder newValue) {
|
||||
PrefsUtils.setStoryOrderForFeed(this, feedId, newValue);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,6 @@ public class FolderItemsList extends ItemsList {
|
|||
private String folderName;
|
||||
private ArrayList<String> feedIds;
|
||||
private APIManager apiManager;
|
||||
private boolean stopLoading = false;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle bundle) {
|
||||
|
@ -113,13 +112,6 @@ public class FolderItemsList extends ItemsList {
|
|||
}.execute(folderName);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setNothingMoreToUpdate() {
|
||||
stopLoading = true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void closeAfterUpdate() { }
|
||||
|
||||
|
@ -128,4 +120,9 @@ public class FolderItemsList extends ItemsList {
|
|||
protected StoryOrder getStoryOrder() {
|
||||
return PrefsUtils.getStoryOrderForFolder(this, folderName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStoryOrderPreference(StoryOrder newValue) {
|
||||
PrefsUtils.setStoryOrderForFolder(this, folderName, newValue);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,9 +13,10 @@ import com.newsblur.fragment.ItemListFragment;
|
|||
import com.newsblur.fragment.StoryOrderDialogFragment;
|
||||
import com.newsblur.fragment.SyncUpdateFragment;
|
||||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.util.StoryOrderChangedListener;
|
||||
import com.newsblur.view.StateToggleButton.StateChangedListener;
|
||||
|
||||
public abstract class ItemsList extends NbFragmentActivity implements SyncUpdateFragment.SyncUpdateFragmentInterface, StateChangedListener {
|
||||
public abstract class ItemsList extends NbFragmentActivity implements SyncUpdateFragment.SyncUpdateFragmentInterface, StateChangedListener, StoryOrderChangedListener {
|
||||
|
||||
public static final String EXTRA_STATE = "currentIntelligenceState";
|
||||
public static final String EXTRA_BLURBLOG_USERNAME = "blurblogName";
|
||||
|
@ -32,6 +33,8 @@ public abstract class ItemsList extends NbFragmentActivity implements SyncUpdate
|
|||
protected int currentState;
|
||||
private Menu menu;
|
||||
|
||||
protected boolean stopLoading = false;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle bundle) {
|
||||
requestWindowFeature(Window.FEATURE_PROGRESS);
|
||||
|
@ -104,12 +107,24 @@ public abstract class ItemsList extends NbFragmentActivity implements SyncUpdate
|
|||
setSupportProgressBarIndeterminateVisibility(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNothingMoreToUpdate() {
|
||||
stopLoading = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changedState(int state) {
|
||||
itemListFragment.changeState(state);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void storyOrderChanged(StoryOrder newValue) {
|
||||
updateStoryOrderPreference(newValue);
|
||||
itemListFragment.setStoryOrder(newValue);
|
||||
stopLoading = false;
|
||||
triggerRefresh();
|
||||
}
|
||||
|
||||
public abstract void updateStoryOrderPreference(StoryOrder newValue);
|
||||
}
|
||||
|
|
|
@ -21,7 +21,6 @@ import com.newsblur.util.StoryOrder;
|
|||
public class SocialFeedItemsList extends ItemsList {
|
||||
|
||||
private String userIcon, userId, username, title;
|
||||
private boolean stopLoading = false;
|
||||
private APIManager apiManager;
|
||||
|
||||
@Override
|
||||
|
@ -97,13 +96,6 @@ public class SocialFeedItemsList extends ItemsList {
|
|||
}.execute(userId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setNothingMoreToUpdate() {
|
||||
stopLoading = true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void closeAfterUpdate() { }
|
||||
|
||||
|
@ -113,4 +105,8 @@ public class SocialFeedItemsList extends ItemsList {
|
|||
return PrefsUtils.getStoryOrderForFolder(this, PrefConstants.ALL_SHARED_STORIES_FOLDER_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStoryOrderPreference(StoryOrder newValue) {
|
||||
PrefsUtils.setStoryOrderForFolder(this, PrefConstants.ALL_SHARED_STORIES_FOLDER_NAME, newValue);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -144,5 +144,8 @@ public class AllSharedStoriesItemListFragment extends ItemListFragment implement
|
|||
return cursorLoader;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setStoryOrder(StoryOrder storyOrder) {
|
||||
this.storyOrder = storyOrder;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,7 +38,6 @@ public class AllStoriesItemListFragment extends ItemListFragment implements Load
|
|||
private boolean requestedPage;
|
||||
private int currentPage = 0;
|
||||
|
||||
// TODO update on property change
|
||||
private StoryOrder storyOrder;
|
||||
|
||||
public static int ITEMLIST_LOADER = 0x01;
|
||||
|
@ -141,5 +140,8 @@ public class AllStoriesItemListFragment extends ItemListFragment implements Load
|
|||
return cursorLoader;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setStoryOrder(StoryOrder storyOrder) {
|
||||
this.storyOrder = storyOrder;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,20 +2,15 @@ package com.newsblur.fragment;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import android.content.ContentProviderOperation;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Intent;
|
||||
import android.content.OperationApplicationException;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.RemoteException;
|
||||
import android.support.v4.app.LoaderManager;
|
||||
import android.support.v4.content.CursorLoader;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.widget.CursorAdapter;
|
||||
import android.util.Log;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -62,7 +57,6 @@ public class FeedItemListFragment extends ItemListFragment implements LoaderMana
|
|||
private Feed feed;
|
||||
private Cursor feedCursor;
|
||||
|
||||
// TODO update on property change
|
||||
private StoryOrder storyOrder;
|
||||
|
||||
public static FeedItemListFragment newInstance(String feedId, int currentState, StoryOrder storyOrder) {
|
||||
|
@ -217,4 +211,9 @@ public class FeedItemListFragment extends ItemListFragment implements LoaderMana
|
|||
inflater.inflate(R.menu.context_story, menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStoryOrder(StoryOrder storyOrder) {
|
||||
this.storyOrder = storyOrder;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -48,7 +48,6 @@ public class FolderItemListFragment extends ItemListFragment implements LoaderMa
|
|||
private boolean doRequest = true;
|
||||
private Folder folder;
|
||||
|
||||
// TODO update on property change
|
||||
private StoryOrder storyOrder;
|
||||
|
||||
public static int ITEMLIST_LOADER = 0x01;
|
||||
|
@ -165,5 +164,9 @@ public class FolderItemListFragment extends ItemListFragment implements LoaderMa
|
|||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) { }
|
||||
|
||||
|
||||
@Override
|
||||
public void setStoryOrder(StoryOrder storyOrder) {
|
||||
this.storyOrder = storyOrder;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.newsblur.fragment;
|
||||
|
||||
import com.newsblur.util.StoryOrder;
|
||||
|
||||
import android.support.v4.app.Fragment;
|
||||
|
||||
public abstract class ItemListFragment extends Fragment {
|
||||
|
@ -8,5 +10,6 @@ public abstract class ItemListFragment extends Fragment {
|
|||
|
||||
public abstract void hasUpdated();
|
||||
public abstract void changeState(final int state);
|
||||
public abstract void setStoryOrder(StoryOrder storyOrder);
|
||||
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ import android.support.v4.content.CursorLoader;
|
|||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.widget.CursorAdapter;
|
||||
import android.support.v4.widget.SimpleCursorAdapter;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -161,5 +160,9 @@ public class SocialFeedItemListFragment extends ItemListFragment implements Load
|
|||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) { }
|
||||
|
||||
|
||||
@Override
|
||||
public void setStoryOrder(StoryOrder storyOrder) {
|
||||
this.storyOrder = storyOrder;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.support.v4.app.DialogFragment;
|
|||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
@ -13,10 +14,12 @@ import android.widget.RadioButton;
|
|||
|
||||
import com.newsblur.R;
|
||||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.util.StoryOrderChangedListener;
|
||||
|
||||
public class StoryOrderDialogFragment extends DialogFragment {
|
||||
public class StoryOrderDialogFragment extends DialogFragment implements OnClickListener {
|
||||
|
||||
private static String CURRENT_ORDER = "currentOrder";
|
||||
private StoryOrder currentValue;
|
||||
|
||||
public static StoryOrderDialogFragment newInstance(StoryOrder currentValue) {
|
||||
StoryOrderDialogFragment dialog = new StoryOrderDialogFragment();
|
||||
|
@ -34,23 +37,35 @@ public class StoryOrderDialogFragment extends DialogFragment {
|
|||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
|
||||
StoryOrder currentValue = (StoryOrder) getArguments().getSerializable(CURRENT_ORDER);
|
||||
currentValue = (StoryOrder) getArguments().getSerializable(CURRENT_ORDER);
|
||||
View v = inflater.inflate(R.layout.storyorder_dialog, null);
|
||||
RadioButton newestButton = (RadioButton) v.findViewById(R.id.radio_newest);
|
||||
newestButton.setOnClickListener(this);
|
||||
newestButton.setChecked(currentValue == StoryOrder.NEWEST);
|
||||
RadioButton oldestButton = (RadioButton) v.findViewById(R.id.radio_oldest);
|
||||
if (currentValue == StoryOrder.NEWEST) {
|
||||
newestButton.setChecked(true);
|
||||
} else {
|
||||
oldestButton.setChecked(true);
|
||||
}
|
||||
oldestButton.setOnClickListener(this);
|
||||
oldestButton.setChecked(currentValue == StoryOrder.OLDEST);
|
||||
|
||||
getDialog().getWindow().setFlags(WindowManager.LayoutParams.FLAG_DITHER, WindowManager.LayoutParams.FLAG_DITHER);
|
||||
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
getDialog().getWindow().getAttributes().gravity = Gravity.BOTTOM;
|
||||
|
||||
//seekBar.setOnSeekBarChangeListener((OnSeekBarChangeListener) getActivity());
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
StoryOrderChangedListener listener = (StoryOrderChangedListener)getActivity();
|
||||
if (v.getId() == R.id.radio_oldest) {
|
||||
if (currentValue == StoryOrder.NEWEST) {
|
||||
listener.storyOrderChanged(StoryOrder.OLDEST);
|
||||
}
|
||||
} else {
|
||||
if (currentValue == StoryOrder.OLDEST) {
|
||||
listener.storyOrderChanged(StoryOrder.NEWEST);
|
||||
}
|
||||
}
|
||||
|
||||
dismiss();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -198,4 +198,18 @@ public class PrefsUtils {
|
|||
SharedPreferences prefs = context.getSharedPreferences(PrefConstants.PREFERENCES, 0);
|
||||
return ReadFilter.valueOf(prefs.getString(PrefConstants.FOLDER_READ_FILTER_PREFIX + folderName, ReadFilter.getDefaultValue().toString()));
|
||||
}
|
||||
|
||||
public static void setStoryOrderForFolder(Context context, String folderName, StoryOrder newValue) {
|
||||
SharedPreferences prefs = context.getSharedPreferences(PrefConstants.PREFERENCES, 0);
|
||||
Editor editor = prefs.edit();
|
||||
editor.putString(PrefConstants.FOLDER_STORY_ORDER_PREFIX + folderName, newValue.toString());
|
||||
editor.commit();
|
||||
}
|
||||
|
||||
public static void setStoryOrderForFeed(Context context, String feedId, StoryOrder newValue) {
|
||||
SharedPreferences prefs = context.getSharedPreferences(PrefConstants.PREFERENCES, 0);
|
||||
Editor editor = prefs.edit();
|
||||
editor.putString(PrefConstants.FEED_STORY_ORDER_PREFIX + feedId, newValue.toString());
|
||||
editor.commit();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package com.newsblur.util;
|
||||
|
||||
public interface StoryOrderChangedListener {
|
||||
void storyOrderChanged(StoryOrder newValue);
|
||||
}
|
Loading…
Add table
Reference in a new issue