#1678 Story order menu

This commit is contained in:
Andrei 2022-05-14 14:55:55 -07:00
parent bfe6072ed6
commit 5df7662433
7 changed files with 30 additions and 130 deletions

View file

@ -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>

View file

@ -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" />

View file

@ -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>

View file

@ -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" />

View file

@ -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();
}

View file

@ -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();
}
}

View file

@ -1,5 +0,0 @@
package com.newsblur.util;
public interface StoryOrderChangedListener {
void storyOrderChanged(StoryOrder newValue);
}