mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
#1678 Story order menu
This commit is contained in:
parent
bfe6072ed6
commit
5df7662433
7 changed files with 30 additions and 130 deletions
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginTop="10dp"
|
||||
android:paddingLeft="25dip"
|
||||
android:paddingRight="25dip"
|
||||
android:paddingBottom="10dip"
|
||||
android:paddingTop="10dip"
|
||||
>
|
||||
|
||||
<RadioButton android:id="@+id/radio_newest"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
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>
|
|
@ -8,8 +8,16 @@
|
|||
android:title="@string/menu_search_stories"
|
||||
app:showAsAction="ifRoom" android:icon="@drawable/ic_menu_search_gray55" />
|
||||
<item android:id="@+id/menu_story_order"
|
||||
android:title="@string/menu_story_order"
|
||||
app:showAsAction="never" />
|
||||
android:title="@string/menu_story_order">
|
||||
<menu>
|
||||
<group android:checkableBehavior="single">
|
||||
<item android:id="@+id/menu_story_order_newest"
|
||||
android:title="@string/newest" />
|
||||
<item android:id="@+id/menu_story_order_oldest"
|
||||
android:title="@string/oldest" />
|
||||
</group>
|
||||
</menu>
|
||||
</item>
|
||||
<item android:id="@+id/menu_read_filter"
|
||||
android:title="@string/menu_read_filter"
|
||||
app:showAsAction="never" />
|
||||
|
|
|
@ -378,8 +378,9 @@
|
|||
<string name="settings_cat_story_list">Story List</string>
|
||||
|
||||
<string name="oldest">Oldest</string>
|
||||
<string name="newest">Newest first</string>
|
||||
<string name="menu_story_order">Story order…</string>
|
||||
<string name="newest">Newest</string>
|
||||
<string name="menu_story_order">Story order</string>
|
||||
<string name="settings_story_order">Story order…</string>
|
||||
<string-array name="default_story_order_entries">
|
||||
<item>@string/newest</item>
|
||||
<item>@string/oldest</item>
|
||||
|
|
|
@ -68,8 +68,8 @@
|
|||
android:title="@string/settings_cat_story_list">
|
||||
<ListPreference
|
||||
android:key="default_story_order"
|
||||
android:title="@string/menu_story_order"
|
||||
android:dialogTitle="@string/menu_story_order"
|
||||
android:title="@string/settings_story_order"
|
||||
android:dialogTitle="@string/settings_story_order"
|
||||
android:entries="@array/default_story_order_entries"
|
||||
android:entryValues="@array/default_story_order_values"
|
||||
android:defaultValue="@string/default_story_order_value" />
|
||||
|
|
|
@ -22,7 +22,6 @@ import com.newsblur.di.IconLoader;
|
|||
import com.newsblur.fragment.ItemSetFragment;
|
||||
import com.newsblur.fragment.ReadFilterDialogFragment;
|
||||
import com.newsblur.fragment.SaveSearchFragment;
|
||||
import com.newsblur.fragment.StoryOrderDialogFragment;
|
||||
import com.newsblur.service.NBSyncService;
|
||||
import com.newsblur.util.AppConstants;
|
||||
import com.newsblur.util.FeedSet;
|
||||
|
@ -37,7 +36,6 @@ import com.newsblur.util.StateFilter;
|
|||
import com.newsblur.util.StoryContentPreviewStyle;
|
||||
import com.newsblur.util.StoryListStyle;
|
||||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.util.StoryOrderChangedListener;
|
||||
import com.newsblur.util.ListTextSize;
|
||||
import com.newsblur.util.ThumbnailStyle;
|
||||
import com.newsblur.util.UIUtils;
|
||||
|
@ -47,7 +45,7 @@ import javax.inject.Inject;
|
|||
import dagger.hilt.android.AndroidEntryPoint;
|
||||
|
||||
@AndroidEntryPoint
|
||||
public abstract class ItemsList extends NbActivity implements StoryOrderChangedListener, ReadFilterChangedListener {
|
||||
public abstract class ItemsList extends NbActivity implements ReadFilterChangedListener {
|
||||
|
||||
@Inject
|
||||
BlurDatabaseHelper dbHelper;
|
||||
|
@ -63,7 +61,6 @@ public abstract class ItemsList extends NbActivity implements StoryOrderChangedL
|
|||
public static final String EXTRA_STORY_HASH = "story_hash";
|
||||
public static final String EXTRA_WIDGET_STORY = "widget_story";
|
||||
public static final String EXTRA_VISIBLE_SEARCH = "visibleSearch";
|
||||
private static final String STORY_ORDER = "storyOrder";
|
||||
private static final String READ_FILTER = "readFilter";
|
||||
private static final String BUNDLE_ACTIVE_SEARCH_QUERY = "activeSearchQuery";
|
||||
private ActivityItemslistBinding binding;
|
||||
|
@ -232,6 +229,13 @@ public abstract class ItemsList extends NbActivity implements StoryOrderChangedL
|
|||
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||
super.onPrepareOptionsMenu(menu);
|
||||
|
||||
StoryOrder storyOrder = PrefsUtils.getStoryOrder(this, fs);
|
||||
if (storyOrder == StoryOrder.NEWEST) {
|
||||
menu.findItem(R.id.menu_story_order_newest).setChecked(true);
|
||||
} else if (storyOrder == StoryOrder.OLDEST) {
|
||||
menu.findItem(R.id.menu_story_order_oldest).setChecked(true);
|
||||
}
|
||||
|
||||
StoryListStyle listStyle = PrefsUtils.getStoryListStyle(this, fs);
|
||||
if (listStyle == StoryListStyle.GRID_F) {
|
||||
menu.findItem(R.id.menu_list_style_grid_f).setChecked(true);
|
||||
|
@ -324,10 +328,11 @@ public abstract class ItemsList extends NbActivity implements StoryOrderChangedL
|
|||
} else if (item.getItemId() == R.id.menu_mark_all_as_read) {
|
||||
feedUtils.markRead(this, fs, null, null, R.array.mark_all_read_options, true);
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.menu_story_order) {
|
||||
StoryOrder currentValue = getStoryOrder();
|
||||
StoryOrderDialogFragment storyOrder = StoryOrderDialogFragment.newInstance(currentValue);
|
||||
storyOrder.show(getSupportFragmentManager(), STORY_ORDER);
|
||||
} else if (item.getItemId() == R.id.menu_story_order_newest) {
|
||||
updateStoryOrder(StoryOrder.NEWEST);
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.menu_story_order_oldest) {
|
||||
updateStoryOrder(StoryOrder.OLDEST);
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.menu_read_filter) {
|
||||
ReadFilter currentValue = getReadFilter();
|
||||
|
@ -431,14 +436,6 @@ public abstract class ItemsList extends NbActivity implements StoryOrderChangedL
|
|||
return false;
|
||||
}
|
||||
|
||||
public StoryOrder getStoryOrder() {
|
||||
return PrefsUtils.getStoryOrder(this, fs);
|
||||
}
|
||||
|
||||
private void updateStoryOrderPreference(StoryOrder newOrder) {
|
||||
PrefsUtils.updateStoryOrder(this, fs, newOrder);
|
||||
}
|
||||
|
||||
private ReadFilter getReadFilter() {
|
||||
return PrefsUtils.getReadFilter(this, fs);
|
||||
}
|
||||
|
@ -528,9 +525,8 @@ public abstract class ItemsList extends NbActivity implements StoryOrderChangedL
|
|||
itemSetFragment.updateSpacingStyle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storyOrderChanged(StoryOrder newValue) {
|
||||
updateStoryOrderPreference(newValue);
|
||||
private void updateStoryOrder(StoryOrder storyOrder) {
|
||||
PrefsUtils.updateStoryOrder(this, fs, storyOrder);
|
||||
restartReadingSession();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,77 +0,0 @@
|
|||
package com.newsblur.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
|
||||
import com.newsblur.R;
|
||||
import com.newsblur.databinding.StoryorderDialogBinding;
|
||||
import com.newsblur.util.StoryOrder;
|
||||
import com.newsblur.util.StoryOrderChangedListener;
|
||||
|
||||
public class StoryOrderDialogFragment extends DialogFragment {
|
||||
|
||||
private static String CURRENT_ORDER = "currentOrder";
|
||||
private StoryOrder currentValue;
|
||||
|
||||
public static StoryOrderDialogFragment newInstance(StoryOrder currentValue) {
|
||||
StoryOrderDialogFragment dialog = new StoryOrderDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable(CURRENT_ORDER, currentValue);
|
||||
dialog.setArguments(args);
|
||||
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
|
||||
currentValue = (StoryOrder) getArguments().getSerializable(CURRENT_ORDER);
|
||||
View v = inflater.inflate(R.layout.storyorder_dialog, null);
|
||||
StoryorderDialogBinding binding = StoryorderDialogBinding.bind(v);
|
||||
|
||||
binding.radioNewest.setChecked(currentValue == StoryOrder.NEWEST);
|
||||
binding.radioOldest.setChecked(currentValue == StoryOrder.OLDEST);
|
||||
|
||||
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
getDialog().getWindow().getAttributes().gravity = Gravity.BOTTOM;
|
||||
|
||||
binding.radioNewest.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
selectNewest();
|
||||
}
|
||||
});
|
||||
binding.radioOldest.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
selectOldest();
|
||||
}
|
||||
});
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
private void selectNewest() {
|
||||
if (currentValue != StoryOrder.NEWEST) {
|
||||
((StoryOrderChangedListener) getActivity()).storyOrderChanged(StoryOrder.NEWEST);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
||||
private void selectOldest() {
|
||||
if (currentValue != StoryOrder.OLDEST) {
|
||||
((StoryOrderChangedListener) getActivity()).storyOrderChanged(StoryOrder.OLDEST);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
package com.newsblur.util;
|
||||
|
||||
public interface StoryOrderChangedListener {
|
||||
void storyOrderChanged(StoryOrder newValue);
|
||||
}
|
Loading…
Add table
Reference in a new issue