mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
#1678 Read filter menu
This commit is contained in:
parent
5df7662433
commit
013694c539
7 changed files with 30 additions and 136 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_all"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/all_stories"/>
|
||||
<RadioButton android:id="@+id/radio_unread"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/unread_only"/>
|
||||
|
||||
</RadioGroup>
|
|
@ -20,7 +20,16 @@
|
|||
</item>
|
||||
<item android:id="@+id/menu_read_filter"
|
||||
android:title="@string/menu_read_filter"
|
||||
app:showAsAction="never" />
|
||||
app:showAsAction="never">
|
||||
<menu>
|
||||
<group android:checkableBehavior="single">
|
||||
<item android:id="@+id/menu_read_filter_all_stories"
|
||||
android:title="@string/all_stories" />
|
||||
<item android:id="@+id/menu_read_filter_unread_only"
|
||||
android:title="@string/unread_only" />
|
||||
</group>
|
||||
</menu>
|
||||
</item>
|
||||
<item android:id="@+id/menu_mark_read_on_scroll"
|
||||
android:title="@string/menu_mark_read_on_scroll"
|
||||
app:showAsAction="never" >
|
||||
|
|
|
@ -411,7 +411,8 @@
|
|||
<string name="menu_story_content_preview">Story content preview</string>
|
||||
<string name="menu_story_thumbnail_preview">Thumbnail preview</string>
|
||||
<string name="menu_mark_read_on_scroll">Mark read on scroll</string>
|
||||
<string name="menu_read_filter">Read story filter…</string>
|
||||
<string name="settings_read_filter">Read story filter…</string>
|
||||
<string name="menu_read_filter">Read story filter</string>
|
||||
<string-array name="default_read_filter_entries">
|
||||
<item>@string/all_stories</item>
|
||||
<item>@string/unread_only</item>
|
||||
|
|
|
@ -69,13 +69,13 @@
|
|||
<ListPreference
|
||||
android:key="default_story_order"
|
||||
android:title="@string/settings_story_order"
|
||||
android:dialogTitle="@string/settings_story_order"
|
||||
android:dialogTitle="@string/menu_story_order"
|
||||
android:entries="@array/default_story_order_entries"
|
||||
android:entryValues="@array/default_story_order_values"
|
||||
android:defaultValue="@string/default_story_order_value" />
|
||||
<ListPreference
|
||||
android:key="default_read_filter"
|
||||
android:title="@string/menu_read_filter"
|
||||
android:title="@string/settings_read_filter"
|
||||
android:dialogTitle="@string/menu_read_filter"
|
||||
android:entries="@array/default_read_filter_entries"
|
||||
android:entryValues="@array/default_read_filter_values"
|
||||
|
|
|
@ -20,7 +20,6 @@ import com.newsblur.database.BlurDatabaseHelper;
|
|||
import com.newsblur.databinding.ActivityItemslistBinding;
|
||||
import com.newsblur.di.IconLoader;
|
||||
import com.newsblur.fragment.ItemSetFragment;
|
||||
import com.newsblur.fragment.ReadFilterDialogFragment;
|
||||
import com.newsblur.fragment.SaveSearchFragment;
|
||||
import com.newsblur.service.NBSyncService;
|
||||
import com.newsblur.util.AppConstants;
|
||||
|
@ -30,7 +29,6 @@ import com.newsblur.util.ImageLoader;
|
|||
import com.newsblur.util.PrefConstants.ThemeValue;
|
||||
import com.newsblur.util.PrefsUtils;
|
||||
import com.newsblur.util.ReadFilter;
|
||||
import com.newsblur.util.ReadFilterChangedListener;
|
||||
import com.newsblur.util.SpacingStyle;
|
||||
import com.newsblur.util.StateFilter;
|
||||
import com.newsblur.util.StoryContentPreviewStyle;
|
||||
|
@ -45,7 +43,7 @@ import javax.inject.Inject;
|
|||
import dagger.hilt.android.AndroidEntryPoint;
|
||||
|
||||
@AndroidEntryPoint
|
||||
public abstract class ItemsList extends NbActivity implements ReadFilterChangedListener {
|
||||
public abstract class ItemsList extends NbActivity {
|
||||
|
||||
@Inject
|
||||
BlurDatabaseHelper dbHelper;
|
||||
|
@ -61,7 +59,6 @@ public abstract class ItemsList extends NbActivity implements ReadFilterChangedL
|
|||
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 READ_FILTER = "readFilter";
|
||||
private static final String BUNDLE_ACTIVE_SEARCH_QUERY = "activeSearchQuery";
|
||||
private ActivityItemslistBinding binding;
|
||||
|
||||
|
@ -236,6 +233,13 @@ public abstract class ItemsList extends NbActivity implements ReadFilterChangedL
|
|||
menu.findItem(R.id.menu_story_order_oldest).setChecked(true);
|
||||
}
|
||||
|
||||
ReadFilter readFilter = PrefsUtils.getReadFilter(this, fs);
|
||||
if (readFilter == ReadFilter.ALL) {
|
||||
menu.findItem(R.id.menu_read_filter_all_stories).setChecked(true);
|
||||
} else if (readFilter == ReadFilter.UNREAD) {
|
||||
menu.findItem(R.id.menu_read_filter_unread_only).setChecked(true);
|
||||
}
|
||||
|
||||
StoryListStyle listStyle = PrefsUtils.getStoryListStyle(this, fs);
|
||||
if (listStyle == StoryListStyle.GRID_F) {
|
||||
menu.findItem(R.id.menu_list_style_grid_f).setChecked(true);
|
||||
|
@ -334,12 +338,13 @@ public abstract class ItemsList extends NbActivity implements ReadFilterChangedL
|
|||
} 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();
|
||||
ReadFilterDialogFragment readFilter = ReadFilterDialogFragment.newInstance(currentValue);
|
||||
readFilter.show(getSupportFragmentManager(), READ_FILTER);
|
||||
} else if (item.getItemId() == R.id.menu_read_filter_all_stories) {
|
||||
updateReadFilter(ReadFilter.ALL);
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.menu_text_size_xs) {
|
||||
} else if (item.getItemId() == R.id.menu_read_filter_unread_only) {
|
||||
updateReadFilter(ReadFilter.UNREAD);
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.menu_text_size_xs) {
|
||||
updateTextSizeStyle(ListTextSize.XS);
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.menu_text_size_s) {
|
||||
|
@ -435,14 +440,6 @@ public abstract class ItemsList extends NbActivity implements ReadFilterChangedL
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
private ReadFilter getReadFilter() {
|
||||
return PrefsUtils.getReadFilter(this, fs);
|
||||
}
|
||||
|
||||
private void updateReadFilterPreference(ReadFilter newValue) {
|
||||
PrefsUtils.updateReadFilter(this, fs, newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleUpdate(int updateType) {
|
||||
|
@ -530,9 +527,8 @@ public abstract class ItemsList extends NbActivity implements ReadFilterChangedL
|
|||
restartReadingSession();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFilterChanged(ReadFilter newValue) {
|
||||
updateReadFilterPreference(newValue);
|
||||
private void updateReadFilter(ReadFilter readFilter) {
|
||||
PrefsUtils.updateReadFilter(this, fs, readFilter);
|
||||
restartReadingSession();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,84 +0,0 @@
|
|||
package com.newsblur.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
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.ReadfilterDialogBinding;
|
||||
import com.newsblur.util.ReadFilter;
|
||||
import com.newsblur.util.ReadFilterChangedListener;
|
||||
|
||||
public class ReadFilterDialogFragment extends DialogFragment {
|
||||
|
||||
private static String CURRENT_FILTER = "currentFilter";
|
||||
private ReadFilter currentValue;
|
||||
private ReadfilterDialogBinding binding;
|
||||
|
||||
public static ReadFilterDialogFragment newInstance(ReadFilter currentValue) {
|
||||
ReadFilterDialogFragment dialog = new ReadFilterDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable(CURRENT_FILTER, 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 = (ReadFilter) getArguments().getSerializable(CURRENT_FILTER);
|
||||
View v = inflater.inflate(R.layout.readfilter_dialog, null);
|
||||
binding = ReadfilterDialogBinding.bind(v);
|
||||
|
||||
binding.radioAll.setChecked(currentValue == ReadFilter.ALL);
|
||||
binding.radioUnread.setChecked(currentValue == ReadFilter.UNREAD);
|
||||
|
||||
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
getDialog().getWindow().getAttributes().gravity = Gravity.BOTTOM;
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
binding.radioAll.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
selectAll();
|
||||
}
|
||||
});
|
||||
binding.radioUnread.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
selectUnread();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void selectAll() {
|
||||
if (currentValue != ReadFilter.ALL) {
|
||||
((ReadFilterChangedListener) getActivity()).readFilterChanged(ReadFilter.ALL);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
||||
private void selectUnread() {
|
||||
if (currentValue != ReadFilter.UNREAD) {
|
||||
((ReadFilterChangedListener) getActivity()).readFilterChanged(ReadFilter.UNREAD);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
package com.newsblur.util;
|
||||
|
||||
public interface ReadFilterChangedListener {
|
||||
void readFilterChanged(ReadFilter newValue);
|
||||
}
|
Loading…
Add table
Reference in a new issue