mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
#1678 Reading font menu
This commit is contained in:
parent
013694c539
commit
8ef65aefa5
7 changed files with 72 additions and 168 deletions
|
@ -1,46 +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_anonymous"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/anonymous_pro_font"/>
|
||||
<RadioButton android:id="@+id/radio_chronicle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/chronicle_font"/>
|
||||
<RadioButton android:id="@+id/radio_default"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/default_font"/>
|
||||
<RadioButton android:id="@+id/radio_gotham"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/gotham_narrow_font"/>
|
||||
<RadioButton android:id="@+id/radio_noto_sans"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/noto_sans_font"/>
|
||||
<RadioButton android:id="@+id/radio_noto_serif"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/noto_serif_font"/>
|
||||
<RadioButton android:id="@+id/radio_open_sans_condensed"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/open_sans_condensed_font"/>
|
||||
<RadioButton android:id="@+id/radio_roboto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/roboto_font"/>
|
||||
|
||||
</RadioGroup>
|
|
@ -44,8 +44,29 @@
|
|||
|
||||
<item
|
||||
android:id="@+id/menu_font"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/menu_font"/>
|
||||
android:title="@string/menu_font"
|
||||
app:showAsAction="never">
|
||||
<menu>
|
||||
<group android:checkableBehavior="single">
|
||||
<item android:id="@+id/menu_font_anonymous"
|
||||
android:title="@string/anonymous_pro_font" />
|
||||
<item android:id="@+id/menu_font_chronicle"
|
||||
android:title="@string/chronicle_font" />
|
||||
<item android:id="@+id/menu_font_default"
|
||||
android:title="@string/default_font" />
|
||||
<item android:id="@+id/menu_font_gotham"
|
||||
android:title="@string/gotham_narrow_font" />
|
||||
<item android:id="@+id/menu_font_noto_sand"
|
||||
android:title="@string/noto_sans_font" />
|
||||
<item android:id="@+id/menu_font_noto_serif"
|
||||
android:title="@string/noto_serif_font" />
|
||||
<item android:id="@+id/menu_font_open_sans"
|
||||
android:title="@string/open_sans_condensed_font" />
|
||||
<item android:id="@+id/menu_font_roboto"
|
||||
android:title="@string/roboto_font" />
|
||||
</group>
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_reading_save"
|
||||
|
|
|
@ -136,7 +136,7 @@
|
|||
<string name="menu_delete_saved_search">Delete saved search</string>
|
||||
<string name="menu_unfollow">Unfollow user</string>
|
||||
<string name="menu_choose_folders">Choose folders</string>
|
||||
<string name="menu_notifications_choose">Notifications…</string>
|
||||
<string name="menu_notifications_choose">Notifications</string>
|
||||
<string name="menu_notifications_disable">Disable notifications</string>
|
||||
<string name="menu_notifications_focus">Notify on new focus stories</string>
|
||||
<string name="menu_notifications_unread">Notify on all new stories</string>
|
||||
|
@ -149,7 +149,7 @@
|
|||
<string name="menu_text_size_l">L</string>
|
||||
<string name="menu_text_size_xl">XL</string>
|
||||
<string name="menu_text_size_xxl">XXL</string>
|
||||
<string name="menu_font">Change font</string>
|
||||
<string name="menu_font">Font</string>
|
||||
<string name="menu_save_story">Save this story</string>
|
||||
<string name="menu_unsave_story">Unsave this story</string>
|
||||
<string name="menu_newest_mark_older_stories_as_read">\u21E3 Mark older as read</string>
|
||||
|
@ -169,7 +169,7 @@
|
|||
<string name="menu_infrequent_cutoff">Infrequent stories per month</string>
|
||||
<string name="menu_intel">Intelligence trainer</string>
|
||||
<string name="menu_rename_feed">Rename feed</string>
|
||||
<string name="menu_story_list_style_choose">List style…</string>
|
||||
<string name="menu_story_list_style_choose">List style</string>
|
||||
<string name="menu_save_search">Save Search</string>
|
||||
<string name="menu_web_search">Web search</string>
|
||||
<string name="list_style_list">List</string>
|
||||
|
|
|
@ -42,8 +42,7 @@ import javax.inject.Inject
|
|||
import kotlin.math.abs
|
||||
|
||||
@AndroidEntryPoint
|
||||
abstract class Reading : NbActivity(), OnPageChangeListener,
|
||||
ScrollChangeListener, ReadingFontChangedListener {
|
||||
abstract class Reading : NbActivity(), OnPageChangeListener, ScrollChangeListener {
|
||||
|
||||
@Inject
|
||||
lateinit var feedUtils: FeedUtils
|
||||
|
@ -577,11 +576,6 @@ abstract class Reading : NbActivity(), OnPageChangeListener,
|
|||
}
|
||||
}
|
||||
|
||||
override fun readingFontChanged(newValue: String) {
|
||||
PrefsUtils.setFontString(this, newValue)
|
||||
sendBroadcast(Intent(ReadingItemFragment.READING_FONT_CHANGED))
|
||||
}
|
||||
|
||||
/**
|
||||
* Click handler for the righthand overlay nav button.
|
||||
*/
|
||||
|
|
|
@ -1,84 +0,0 @@
|
|||
package com.newsblur.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
|
||||
import com.newsblur.R;
|
||||
import com.newsblur.databinding.ReadingfontDialogBinding;
|
||||
import com.newsblur.util.ReadingFontChangedListener;
|
||||
|
||||
/**
|
||||
* Created by mark on 02/05/2017.
|
||||
*/
|
||||
|
||||
public class ReadingFontDialogFragment extends DialogFragment {
|
||||
|
||||
private static final String SELECTED_FONT = "selectedFont";
|
||||
|
||||
private String currentValue;
|
||||
|
||||
private ReadingfontDialogBinding binding;
|
||||
|
||||
public static ReadingFontDialogFragment newInstance(String selectedFont) {
|
||||
ReadingFontDialogFragment dialog = new ReadingFontDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(SELECTED_FONT, selectedFont);
|
||||
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 = getArguments().getString(SELECTED_FONT);
|
||||
View v = inflater.inflate(R.layout.readingfont_dialog, null);
|
||||
binding = ReadingfontDialogBinding.bind(v);
|
||||
|
||||
binding.radioAnonymous.setChecked(currentValue.equals(getString(R.string.anonymous_pro_font_prefvalue)));
|
||||
binding.radioChronicle.setChecked(currentValue.equals(getString(R.string.chronicle_font_prefvalue)));
|
||||
binding.radioDefault.setChecked(currentValue.equals(getString(R.string.default_font_prefvalue)) ||
|
||||
currentValue.equals(getString(R.string.whitney_font_prefvalue)));
|
||||
binding.radioGotham.setChecked(currentValue.equals(getString(R.string.gotham_narrow_font_prefvalue)));
|
||||
binding.radioNotoSans.setChecked(currentValue.equals(getString(R.string.noto_sans_font_prefvalue)));
|
||||
binding.radioNotoSerif.setChecked(currentValue.equals(getString(R.string.noto_serif_font_prefvalue)));
|
||||
binding.radioOpenSansCondensed.setChecked(currentValue.equals(getString(R.string.open_sans_condensed_font_prefvalue)));
|
||||
binding.radioRoboto.setChecked(currentValue.equals(getString(R.string.roboto_font_prefvalue)));
|
||||
|
||||
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.radioAnonymous.setOnClickListener(v -> switchFont(getString(R.string.anonymous_pro_font_prefvalue)));
|
||||
binding.radioDefault.setOnClickListener(v -> switchFont(getString(R.string.default_font_prefvalue)));
|
||||
binding.radioChronicle.setOnClickListener(v -> switchFont(getString(R.string.chronicle_font_prefvalue)));
|
||||
binding.radioGotham.setOnClickListener(v -> switchFont(getString(R.string.gotham_narrow_font_prefvalue)));
|
||||
binding.radioNotoSans.setOnClickListener(v -> switchFont(getString(R.string.noto_sans_font_prefvalue)));
|
||||
binding.radioNotoSerif.setOnClickListener(v -> switchFont(getString(R.string.noto_serif_font_prefvalue)));
|
||||
binding.radioOpenSansCondensed.setOnClickListener(v -> switchFont(getString(R.string.open_sans_condensed_font_prefvalue)));
|
||||
binding.radioRoboto.setOnClickListener(v -> switchFont(getString(R.string.roboto_font_prefvalue)));
|
||||
}
|
||||
|
||||
private void switchFont(String newValue) {
|
||||
if (!currentValue.equals(newValue)) {
|
||||
((ReadingFontChangedListener) getActivity()).readingFontChanged(newValue);
|
||||
currentValue = newValue;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -40,7 +40,6 @@ import com.newsblur.service.OriginalTextService
|
|||
import com.newsblur.util.*
|
||||
import com.newsblur.util.PrefConstants.ThemeValue
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import java.util.*
|
||||
import java.util.regex.Pattern
|
||||
import javax.inject.Inject
|
||||
import kotlin.math.roundToInt
|
||||
|
@ -76,7 +75,6 @@ class ReadingItemFragment : NbFragment(), PopupMenu.OnMenuItemClickListener {
|
|||
private var feedIconUrl: String? = null
|
||||
private var faviconText: String? = null
|
||||
private var classifier: Classifier? = null
|
||||
private var readingFontReceiver: BroadcastReceiver? = null
|
||||
private var displayFeedDetails = false
|
||||
private var user: UserDetails? = null
|
||||
|
||||
|
@ -128,9 +126,6 @@ class ReadingItemFragment : NbFragment(), PopupMenu.OnMenuItemClickListener {
|
|||
user = PrefsUtils.getUserDetails(requireContext())
|
||||
markStoryReadBehavior = PrefsUtils.getMarkStoryReadBehavior(requireContext())
|
||||
|
||||
readingFontReceiver = ReadingFontReceiver()
|
||||
requireActivity().registerReceiver(readingFontReceiver, IntentFilter(READING_FONT_CHANGED))
|
||||
|
||||
if (markStoryReadBehavior == MarkStoryReadBehavior.IMMEDIATELY) {
|
||||
sampledQueue = SampledQueue(250, 5)
|
||||
}
|
||||
|
@ -153,7 +148,6 @@ class ReadingItemFragment : NbFragment(), PopupMenu.OnMenuItemClickListener {
|
|||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
requireActivity().unregisterReceiver(readingFontReceiver)
|
||||
binding.readingWebview.setOnTouchListener(null)
|
||||
binding.root.setOnTouchListener(null)
|
||||
requireActivity().window.decorView.setOnSystemUiVisibilityChangeListener(null)
|
||||
|
@ -288,6 +282,17 @@ class ReadingItemFragment : NbFragment(), PopupMenu.OnMenuItemClickListener {
|
|||
ReadingTextSize.XXL -> menu.findItem(R.id.menu_text_size_xxl).isChecked = true
|
||||
}
|
||||
|
||||
when (Font.getFont(PrefsUtils.getFontString(requireContext()))) {
|
||||
Font.ANONYMOUS_PRO -> menu.findItem(R.id.menu_font_anonymous).isChecked = true
|
||||
Font.CHRONICLE -> menu.findItem(R.id.menu_font_chronicle).isChecked = true
|
||||
Font.DEFAULT -> menu.findItem(R.id.menu_font_default).isChecked = true
|
||||
Font.GOTHAM_NARROW -> menu.findItem(R.id.menu_font_gotham).isChecked = true
|
||||
Font.NOTO_SANS -> menu.findItem(R.id.menu_font_noto_sand).isChecked = true
|
||||
Font.NOTO_SERIF -> menu.findItem(R.id.menu_font_noto_serif).isChecked = true
|
||||
Font.OPEN_SANS_CONDENSED -> menu.findItem(R.id.menu_font_open_sans).isChecked = true
|
||||
Font.ROBOTO -> menu.findItem(R.id.menu_font_roboto).isChecked = true
|
||||
}
|
||||
|
||||
pm.setOnMenuItemClickListener(this)
|
||||
pm.show()
|
||||
}
|
||||
|
@ -342,9 +347,36 @@ class ReadingItemFragment : NbFragment(), PopupMenu.OnMenuItemClickListener {
|
|||
setTextSizeStyle(ReadingTextSize.XXL)
|
||||
true
|
||||
}
|
||||
R.id.menu_font -> {
|
||||
val storyFont = ReadingFontDialogFragment.newInstance(PrefsUtils.getFontString(requireContext()))
|
||||
storyFont.show(requireActivity().supportFragmentManager, ReadingFontDialogFragment::class.java.name)
|
||||
R.id.menu_font_anonymous -> {
|
||||
setReadingFont(getString(R.string.anonymous_pro_font_prefvalue))
|
||||
true
|
||||
}
|
||||
R.id.menu_font_chronicle -> {
|
||||
setReadingFont(getString(R.string.chronicle_font_prefvalue))
|
||||
true
|
||||
}
|
||||
R.id.menu_font_default -> {
|
||||
setReadingFont(getString(R.string.default_font_prefvalue))
|
||||
true
|
||||
}
|
||||
R.id.menu_font_gotham -> {
|
||||
setReadingFont(getString(R.string.gotham_narrow_font_prefvalue))
|
||||
true
|
||||
}
|
||||
R.id.menu_font_noto_sand -> {
|
||||
setReadingFont(getString(R.string.noto_sans_font_prefvalue))
|
||||
true
|
||||
}
|
||||
R.id.menu_font_noto_serif -> {
|
||||
setReadingFont(getString(R.string.noto_serif_font_prefvalue))
|
||||
true
|
||||
}
|
||||
R.id.menu_font_open_sans -> {
|
||||
setReadingFont(getString(R.string.open_sans_condensed_font_prefvalue))
|
||||
true
|
||||
}
|
||||
R.id.menu_font_roboto -> {
|
||||
setReadingFont(getString(R.string.roboto_font_prefvalue))
|
||||
true
|
||||
}
|
||||
R.id.menu_reading_save -> {
|
||||
|
@ -958,17 +990,14 @@ class ReadingItemFragment : NbFragment(), PopupMenu.OnMenuItemClickListener {
|
|||
binding.readingWebview.setTextSize(textSize)
|
||||
}
|
||||
|
||||
private inner class ReadingFontReceiver : BroadcastReceiver() {
|
||||
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
private fun setReadingFont(font: String) {
|
||||
PrefsUtils.setFontString(requireContext(), font)
|
||||
contentHash = 0 // Force reload since content hasn't changed
|
||||
reloadStoryContent()
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val BUNDLE_SCROLL_POS_REL = "scrollStateRel"
|
||||
const val READING_FONT_CHANGED = "readingFontChanged"
|
||||
|
||||
@JvmStatic
|
||||
fun newInstance(story: Story?, feedTitle: String?, feedFaviconColor: String?, feedFaviconFade: String?, feedFaviconBorder: String?, faviconText: String?, faviconUrl: String?, classifier: Classifier?, displayFeedDetails: Boolean, sourceUserId: String?): ReadingItemFragment {
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
package com.newsblur.util;
|
||||
|
||||
/**
|
||||
* Created by mark on 02/05/2017.
|
||||
*/
|
||||
|
||||
public interface ReadingFontChangedListener {
|
||||
|
||||
void readingFontChanged(String newValue);
|
||||
}
|
Loading…
Add table
Reference in a new issue