diff options
Diffstat (limited to 'app')
22 files changed, 567 insertions, 404 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/LinkResolverActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/LinkResolverActivity.java index d35e129f..b066cb99 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/LinkResolverActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/LinkResolverActivity.java @@ -154,16 +154,21 @@ public class LinkResolverActivity extends AppCompatActivity { } private void deepLinkError(Uri uri) { + PackageManager pm = getPackageManager(); + if (mSharedPreferences.getBoolean(SharedPreferencesUtils.OPEN_LINK_IN_APP, false)) { + openInCustomTabs(uri, pm); + return; + } + String authority = uri.getAuthority(); if(authority != null && (authority.contains("reddit.com") || authority.contains("redd.it") || authority.contains("reddit.app.link"))) { - openInCustomTabs(uri, getPackageManager()); + openInCustomTabs(uri, pm); return; } Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(uri); - PackageManager pm = getPackageManager(); List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0); ArrayList<String> packageNames = new ArrayList<>(); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SettingsActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SettingsActivity.java index 8d5e07a7..5abda777 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SettingsActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SettingsActivity.java @@ -17,6 +17,7 @@ import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.Infinity; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.Settings.AboutPreferenceFragment; +import ml.docilealligator.infinityforreddit.Settings.InterfacePreferenceFragment; import ml.docilealligator.infinityforreddit.Settings.MainPreferenceFragment; public class SettingsActivity extends BaseActivity implements @@ -66,6 +67,8 @@ public class SettingsActivity extends BaseActivity implements setTitle(R.string.settings_activity_label); } else if (getSupportFragmentManager().findFragmentById(R.id.frame_layout_settings_activity) instanceof AboutPreferenceFragment) { setTitle(R.string.settings_about_master_title); + } else if (getSupportFragmentManager().findFragmentById(R.id.frame_layout_settings_activity) instanceof InterfacePreferenceFragment) { + setTitle(R.string.settings_interface_title); } }); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AboutPreferenceFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AboutPreferenceFragment.java index 79f0dfb5..0a0bd3bf 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AboutPreferenceFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AboutPreferenceFragment.java @@ -2,11 +2,13 @@ package ml.docilealligator.infinityforreddit.Settings; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; @@ -19,6 +21,8 @@ import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils; */ public class AboutPreferenceFragment extends PreferenceFragmentCompat { + private Activity activity; + @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.about_preferences, rootKey); @@ -30,77 +34,79 @@ public class AboutPreferenceFragment extends PreferenceFragmentCompat { Preference subredditPreference = findPreference(SharedPreferencesUtils.SUBREDDIT_KEY); Preference sharePreference = findPreference(SharedPreferencesUtils.SHARE_KEY); - Activity activity = getActivity(); + if (openSourcePreference != null) { + openSourcePreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://github.com/Docile-Alligator/Infinity-For-Reddit")); + startActivity(intent); + return true; + }); + } - if (activity != null) { - if (openSourcePreference != null) { - openSourcePreference.setOnPreferenceClickListener(preference -> { + if (reviewPreference != null) { + reviewPreference.setOnPreferenceClickListener(preference -> { + Intent playStoreIntent = new Intent(Intent.ACTION_VIEW); + playStoreIntent.setData(Uri.parse("market://details?id=ml.docilealligator.infinityforreddit")); + if (playStoreIntent.resolveActivity(activity.getPackageManager()) != null) { + activity.startActivity(playStoreIntent); + } else { Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://github.com/Docile-Alligator/Infinity-For-Reddit")); + intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforreddit")); startActivity(intent); - return true; - }); - } + } + return true; + }); + } - if (reviewPreference != null) { - reviewPreference.setOnPreferenceClickListener(preference -> { - Intent playStoreIntent = new Intent(Intent.ACTION_VIEW); - playStoreIntent.setData(Uri.parse("market://details?id=ml.docilealligator.infinityforreddit")); - if (playStoreIntent.resolveActivity(activity.getPackageManager()) != null) { - activity.startActivity(playStoreIntent); - } else { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforreddit")); - startActivity(intent); - } - return true; - }); - } + if (emailPreference != null) { + emailPreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(Intent.ACTION_SENDTO); + intent.setData(Uri.parse("mailto:docilealligator.app@gmail.com")); + if (intent.resolveActivity(activity.getPackageManager()) != null) { + startActivity(intent); + } else { + Toast.makeText(activity, R.string.no_email_client, Toast.LENGTH_SHORT).show(); + } + return true; + }); + } - if (emailPreference != null) { - emailPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(Intent.ACTION_SENDTO); - intent.setData(Uri.parse("mailto:docilealligator.app@gmail.com")); - if (intent.resolveActivity(activity.getPackageManager()) != null) { - startActivity(intent); - } else { - Toast.makeText(activity, R.string.no_email_client, Toast.LENGTH_SHORT).show(); - } - return true; - }); - } + if (redditAccountPreference != null) { + redditAccountPreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://www.reddit.com/user/Hostilenemy")); + startActivity(intent); + return true; + }); + } - if (redditAccountPreference != null) { - redditAccountPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.reddit.com/user/Hostilenemy")); - startActivity(intent); - return true; - }); - } + if (subredditPreference != null) { + subredditPreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://www.reddit.com/r/Infinity_For_Reddit")); + startActivity(intent); + return true; + }); + } - if (subredditPreference != null) { - subredditPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.reddit.com/r/Infinity_For_Reddit")); + if (sharePreference != null) { + sharePreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_this_app)); + if (intent.resolveActivity(activity.getPackageManager()) != null) { startActivity(intent); - return true; - }); - } - - if (sharePreference != null) { - sharePreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType("text/plain"); - intent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_this_app)); - if (intent.resolveActivity(activity.getPackageManager()) != null) { - startActivity(intent); - } else { - Toast.makeText(activity, R.string.no_app, Toast.LENGTH_SHORT).show(); - } - return true; - }); - } + } else { + Toast.makeText(activity, R.string.no_app, Toast.LENGTH_SHORT).show(); + } + return true; + }); } } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + activity = (Activity) context; + } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AcknowledgementFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AcknowledgementFragment.java index cb348c68..c7022006 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AcknowledgementFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AcknowledgementFragment.java @@ -2,12 +2,14 @@ package ml.docilealligator.infinityforreddit.Settings; import android.app.Activity; +import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -23,9 +25,9 @@ import ml.docilealligator.infinityforreddit.R; */ public class AcknowledgementFragment extends Fragment { - @BindView(R.id.recycler_view_acknowledgement_fragment) RecyclerView recyclerView; + private Activity activity; public AcknowledgementFragment() { // Required empty public constructor @@ -37,8 +39,6 @@ public class AcknowledgementFragment extends Fragment { View rootView = inflater.inflate(R.layout.fragment_acknowledgement, container, false); ButterKnife.bind(this, rootView); - Activity activity = getActivity(); - ArrayList<Acknowledgement> acknowledgements = new ArrayList<>(); acknowledgements.add(new Acknowledgement("ExoPlayer", "An application level media player for Android", @@ -107,4 +107,10 @@ public class AcknowledgementFragment extends Fragment { return rootView; } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + activity = (Activity) context; + } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/CreditsPreferenceFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/CreditsPreferenceFragment.java index 7fc725bb..8607b486 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/CreditsPreferenceFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/CreditsPreferenceFragment.java @@ -2,10 +2,12 @@ package ml.docilealligator.infinityforreddit.Settings; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import androidx.annotation.NonNull; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; @@ -18,6 +20,8 @@ import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils; */ public class CreditsPreferenceFragment extends PreferenceFragmentCompat { + private Activity activity; + @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.credits_preferences, rootKey); @@ -30,71 +34,73 @@ public class CreditsPreferenceFragment extends PreferenceFragmentCompat { Preference thumbtackIconPreference = findPreference(SharedPreferencesUtils.THUMBTACK_ICON_KEY); Preference materialIconsPreference = findPreference(SharedPreferencesUtils.MATERIAL_ICONS_KEY); - Activity activity = getActivity(); - - if (activity != null) { - if (iconForegroundPreference != null) { - iconForegroundPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.freepik.com/free-photos-vectors/technology")); - startActivity(intent); - return true; - }); - } - - if (iconBackgroundPreference != null) { - iconBackgroundPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.freepik.com/free-photos-vectors/background")); - startActivity(intent); - return true; - }); - } - - if (errorImagePreference != null) { - errorImagePreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.freepik.com/free-photos-vectors/technology")); - startActivity(intent); - return true; - }); - } - - if (gildedIconPreference != null) { - gildedIconPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://br.flaticon.com/icone-gratis/medalha_1007239")); - startActivity(intent); - return true; - }); - } - - if (crosspostIconPreference != null) { - crosspostIconPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.flaticon.com/free-icon/crossed-arrows_2291")); - startActivity(intent); - return true; - }); - } - - if (thumbtackIconPreference != null) { - thumbtackIconPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.flaticon.com/free-icon/tack-save-button_61845#term=thumbtack&page=1&position=3")); - startActivity(intent); - return true; - }); - } - - if (materialIconsPreference != null) { - materialIconsPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://material.io/resources/icons/")); - startActivity(intent); - return true; - }); - } + if (iconForegroundPreference != null) { + iconForegroundPreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://www.freepik.com/free-photos-vectors/technology")); + startActivity(intent); + return true; + }); + } + + if (iconBackgroundPreference != null) { + iconBackgroundPreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://www.freepik.com/free-photos-vectors/background")); + startActivity(intent); + return true; + }); + } + + if (errorImagePreference != null) { + errorImagePreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://www.freepik.com/free-photos-vectors/technology")); + startActivity(intent); + return true; + }); + } + + if (gildedIconPreference != null) { + gildedIconPreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://br.flaticon.com/icone-gratis/medalha_1007239")); + startActivity(intent); + return true; + }); + } + + if (crosspostIconPreference != null) { + crosspostIconPreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://www.flaticon.com/free-icon/crossed-arrows_2291")); + startActivity(intent); + return true; + }); + } + + if (thumbtackIconPreference != null) { + thumbtackIconPreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://www.flaticon.com/free-icon/tack-save-button_61845#term=thumbtack&page=1&position=3")); + startActivity(intent); + return true; + }); + } + + if (materialIconsPreference != null) { + materialIconsPreference.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://material.io/resources/icons/")); + startActivity(intent); + return true; + }); } } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + activity = (Activity) context; + } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/FontSizePreferenceFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/FontSizePreferenceFragment.java index 53abe8ab..5d4a0a5a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/FontSizePreferenceFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/FontSizePreferenceFragment.java @@ -1,8 +1,10 @@ package ml.docilealligator.infinityforreddit.Settings; import android.app.Activity; +import android.content.Context; import android.os.Bundle; +import androidx.annotation.NonNull; import androidx.preference.ListPreference; import androidx.preference.PreferenceFragmentCompat; @@ -13,37 +15,41 @@ import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils; public class FontSizePreferenceFragment extends PreferenceFragmentCompat { + private Activity activity; + @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.font_size_preferences, rootKey); + ListPreference fontSizePreference = findPreference(SharedPreferencesUtils.FONT_SIZE_KEY); + ListPreference titleFontSizePreference = findPreference(SharedPreferencesUtils.TITLE_FONT_SIZE_KEY); + ListPreference contentFontSizePreference = findPreference(SharedPreferencesUtils.CONTENT_FONT_SIZE_KEY); + + if (fontSizePreference != null) { + fontSizePreference.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new RecreateActivityEvent()); + activity.recreate(); + return true; + }); + } + + if (titleFontSizePreference != null) { + titleFontSizePreference.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new RecreateActivityEvent()); + return true; + }); + } - Activity activity = getActivity(); - if (activity != null) { - ListPreference fontSizePreference = findPreference(SharedPreferencesUtils.FONT_SIZE_KEY); - ListPreference titleFontSizePreference = findPreference(SharedPreferencesUtils.TITLE_FONT_SIZE_KEY); - ListPreference contentFontSizePreference = findPreference(SharedPreferencesUtils.CONTENT_FONT_SIZE_KEY); - - if (fontSizePreference != null) { - fontSizePreference.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new RecreateActivityEvent()); - activity.recreate(); - return true; - }); - } - - if (titleFontSizePreference != null) { - titleFontSizePreference.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new RecreateActivityEvent()); - return true; - }); - } - - if (contentFontSizePreference != null) { - contentFontSizePreference.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new RecreateActivityEvent()); - return true; - }); - } + if (contentFontSizePreference != null) { + contentFontSizePreference.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new RecreateActivityEvent()); + return true; + }); } } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + activity = (Activity) context; + } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/GesturesAndButtonsPreferenceFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/GesturesAndButtonsPreferenceFragment.java new file mode 100644 index 00000000..39e6874d --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/GesturesAndButtonsPreferenceFragment.java @@ -0,0 +1,20 @@ +package ml.docilealligator.infinityforreddit.Settings; + + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; +import androidx.preference.PreferenceFragmentCompat; + +import ml.docilealligator.infinityforreddit.R; + +/** + * A simple {@link Fragment} subclass. + */ +public class GesturesAndButtonsPreferenceFragment extends PreferenceFragmentCompat { + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + setPreferencesFromResource(R.xml.gestures_and_buttons_preference, rootKey); + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java new file mode 100644 index 00000000..e3f9893e --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java @@ -0,0 +1,95 @@ +package ml.docilealligator.infinityforreddit.Settings; + + +import android.app.Activity; +import android.content.Context; +import android.os.Build; +import android.os.Bundle; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.preference.ListPreference; +import androidx.preference.PreferenceFragmentCompat; +import androidx.preference.SwitchPreference; + +import org.greenrobot.eventbus.EventBus; + +import ml.docilealligator.infinityforreddit.Event.ChangePostLayoutEvent; +import ml.docilealligator.infinityforreddit.Event.ChangeShowElapsedTimeEvent; +import ml.docilealligator.infinityforreddit.Event.ChangeVoteButtonsPositionEvent; +import ml.docilealligator.infinityforreddit.Event.RecreateActivityEvent; +import ml.docilealligator.infinityforreddit.Event.ShowDividerInCompactLayoutPreferenceEvent; +import ml.docilealligator.infinityforreddit.R; +import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils; + +/** + * A simple {@link Fragment} subclass. + */ +public class InterfacePreferenceFragment extends PreferenceFragmentCompat { + private Activity activity; + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + setPreferencesFromResource(R.xml.interface_preference, rootKey); + + SwitchPreference immersiveInterfaceSwitch = findPreference(SharedPreferencesUtils.IMMERSIVE_INTERFACE_KEY); + SwitchPreference bottomAppBarSwitch = findPreference(SharedPreferencesUtils.BOTTOM_APP_BAR_KEY); + SwitchPreference voteButtonsOnTheRightSwitch = findPreference(SharedPreferencesUtils.VOTE_BUTTONS_ON_THE_RIGHT_KEY); + SwitchPreference showElapsedTimeSwitch = findPreference(SharedPreferencesUtils.SHOW_ELAPSED_TIME_KEY); + ListPreference defaultPostLayoutSwitch = findPreference(SharedPreferencesUtils.DEFAULT_POST_LAYOUT_KEY); + SwitchPreference showDividerInCompactLayout = findPreference(SharedPreferencesUtils.SHOW_DIVIDER_IN_COMPACT_LAYOUT); + + if (immersiveInterfaceSwitch != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { + immersiveInterfaceSwitch.setVisible(true); + immersiveInterfaceSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new RecreateActivityEvent()); + return true; + }); + } else { + immersiveInterfaceSwitch.setVisible(false); + } + } + + if (bottomAppBarSwitch != null) { + bottomAppBarSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new RecreateActivityEvent()); + return true; + }); + } + + if (voteButtonsOnTheRightSwitch != null) { + voteButtonsOnTheRightSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new ChangeVoteButtonsPositionEvent((Boolean) newValue)); + return true; + }); + } + + if (showElapsedTimeSwitch != null) { + showElapsedTimeSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new ChangeShowElapsedTimeEvent((Boolean) newValue)); + return true; + }); + } + + if (defaultPostLayoutSwitch != null) { + defaultPostLayoutSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new ChangePostLayoutEvent(Integer.parseInt((String) newValue))); + return true; + }); + } + + if (showDividerInCompactLayout != null) { + showDividerInCompactLayout.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new ShowDividerInCompactLayoutPreferenceEvent((Boolean) newValue)); + return true; + }); + } + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + activity = (Activity) context; + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/MainPreferenceFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/MainPreferenceFragment.java index e6b9f04b..1a94cc37 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/MainPreferenceFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/MainPreferenceFragment.java @@ -2,11 +2,13 @@ package ml.docilealligator.infinityforreddit.Settings; import android.app.Activity; +import android.content.Context; import android.content.SharedPreferences; import android.content.res.Configuration; import android.os.Build; import android.os.Bundle; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatDelegate; import androidx.preference.ListPreference; import androidx.preference.PreferenceFragmentCompat; @@ -18,12 +20,8 @@ import javax.inject.Inject; import ml.docilealligator.infinityforreddit.Event.ChangeNSFWBlurEvent; import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent; -import ml.docilealligator.infinityforreddit.Event.ChangePostLayoutEvent; -import ml.docilealligator.infinityforreddit.Event.ChangeShowElapsedTimeEvent; import ml.docilealligator.infinityforreddit.Event.ChangeSpoilerBlurEvent; -import ml.docilealligator.infinityforreddit.Event.ChangeVoteButtonsPositionEvent; import ml.docilealligator.infinityforreddit.Event.RecreateActivityEvent; -import ml.docilealligator.infinityforreddit.Event.ShowDividerInCompactLayoutPreferenceEvent; import ml.docilealligator.infinityforreddit.Infinity; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils; @@ -40,144 +38,94 @@ public class MainPreferenceFragment extends PreferenceFragmentCompat { @Inject SharedPreferences sharedPreferences; + private Activity activity; @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.main_preferences, rootKey); + ((Infinity) activity.getApplication()).getAppComponent().inject(this); - Activity activity = getActivity(); - if (activity != null) { - ((Infinity) activity.getApplication()).getAppComponent().inject(this); - - SwitchPreference amoledDarkSwitch = findPreference(SharedPreferencesUtils.AMOLED_DARK_KEY); - SwitchPreference immersiveInterfaceSwitch = findPreference(SharedPreferencesUtils.IMMERSIVE_INTERFACE_KEY); - SwitchPreference bottomAppBarSwitch = findPreference(SharedPreferencesUtils.BOTTOM_APP_BAR_KEY); - SwitchPreference voteButtonsOnTheRightSwitch = findPreference(SharedPreferencesUtils.VOTE_BUTTONS_ON_THE_RIGHT_KEY); - SwitchPreference showElapsedTimeSwitch = findPreference(SharedPreferencesUtils.SHOW_ELAPSED_TIME_KEY); - ListPreference defaultPostLayoutSwitch = findPreference(SharedPreferencesUtils.DEFAULT_POST_LAYOUT_KEY); - SwitchPreference showDividerInCompactLayout = findPreference(SharedPreferencesUtils.SHOW_DIVIDER_IN_COMPACT_LAYOUT); - SwitchPreference nsfwSwitch = findPreference(SharedPreferencesUtils.NSFW_KEY); - SwitchPreference blurNSFWSwitch = findPreference(SharedPreferencesUtils.BLUR_NSFW_KEY); - SwitchPreference blurSpoilerSwitch = findPreference(SharedPreferencesUtils.BLUR_SPOILER_KEY); - ListPreference themePreference = findPreference(SharedPreferencesUtils.THEME_KEY); - - if (amoledDarkSwitch != null) { - amoledDarkSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_NO) { - EventBus.getDefault().post(new RecreateActivityEvent()); - activity.recreate(); - } - return true; - }); - } - - if (immersiveInterfaceSwitch != null) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { - immersiveInterfaceSwitch.setVisible(true); - immersiveInterfaceSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new RecreateActivityEvent()); - return true; - }); - } else { - immersiveInterfaceSwitch.setVisible(false); - } - } + SwitchPreference amoledDarkSwitch = findPreference(SharedPreferencesUtils.AMOLED_DARK_KEY); + SwitchPreference nsfwSwitch = findPreference(SharedPreferencesUtils.NSFW_KEY); + SwitchPreference blurNSFWSwitch = findPreference(SharedPreferencesUtils.BLUR_NSFW_KEY); + SwitchPreference blurSpoilerSwitch = findPreference(SharedPreferencesUtils.BLUR_SPOILER_KEY); + ListPreference themePreference = findPreference(SharedPreferencesUtils.THEME_KEY); - if (bottomAppBarSwitch != null) { - bottomAppBarSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + if (amoledDarkSwitch != null) { + amoledDarkSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_NO) { EventBus.getDefault().post(new RecreateActivityEvent()); - return true; - }); - } - - if (voteButtonsOnTheRightSwitch != null) { - voteButtonsOnTheRightSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeVoteButtonsPositionEvent((Boolean) newValue)); - return true; - }); - } - - if (showElapsedTimeSwitch != null) { - showElapsedTimeSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeShowElapsedTimeEvent((Boolean) newValue)); - return true; - }); - } + activity.recreate(); + } + return true; + }); + } - if (defaultPostLayoutSwitch != null) { - defaultPostLayoutSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangePostLayoutEvent(Integer.parseInt((String) newValue))); - return true; - }); - } + if (nsfwSwitch != null) { + nsfwSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new ChangeNSFWEvent((Boolean) newValue)); + if (blurNSFWSwitch != null) { + blurNSFWSwitch.setVisible((Boolean) newValue); + } + return true; + }); + } - if (showDividerInCompactLayout != null) { - showDividerInCompactLayout.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ShowDividerInCompactLayoutPreferenceEvent((Boolean) newValue)); - return true; - }); - } + if (blurNSFWSwitch != null) { + boolean nsfwEnabled = sharedPreferences.getBoolean(SharedPreferencesUtils.NSFW_KEY, false); - if (nsfwSwitch != null) { - nsfwSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeNSFWEvent((Boolean) newValue)); - if (blurNSFWSwitch != null) { - blurNSFWSwitch.setVisible((Boolean) newValue); - } - return true; - }); + if (nsfwEnabled) { + blurNSFWSwitch.setVisible(true); + } else { + blurNSFWSwitch.setVisible(false); } - if (blurNSFWSwitch != null) { - boolean nsfwEnabled = sharedPreferences.getBoolean(SharedPreferencesUtils.NSFW_KEY, false); + blurNSFWSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new ChangeNSFWBlurEvent((Boolean) newValue)); + return true; + }); + } - if (nsfwEnabled) { - blurNSFWSwitch.setVisible(true); - } else { - blurNSFWSwitch.setVisible(false); - } + if (blurSpoilerSwitch != null) { + blurSpoilerSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + EventBus.getDefault().post(new ChangeSpoilerBlurEvent((Boolean) newValue)); + return true; + }); + } - blurNSFWSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeNSFWBlurEvent((Boolean) newValue)); - return true; - }); - } + boolean systemDefault = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q; - if (blurSpoilerSwitch != null) { - blurSpoilerSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeSpoilerBlurEvent((Boolean) newValue)); - return true; - }); + if (themePreference != null) { + if (systemDefault) { + themePreference.setEntries(R.array.settings_theme_q); + } else { + themePreference.setEntries(R.array.settings_theme); } - boolean systemDefault = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q; - - if (themePreference != null) { - if (systemDefault) { - themePreference.setEntries(R.array.settings_theme_q); - } else { - themePreference.setEntries(R.array.settings_theme); + themePreference.setOnPreferenceChangeListener((preference, newValue) -> { + int option = Integer.parseInt((String) newValue); + switch (option) { + case 0: + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO); + break; + case 1: + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES); + break; + case 2: + if (systemDefault) { + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM); + } else { + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY); + } } - - themePreference.setOnPreferenceChangeListener((preference, newValue) -> { - int option = Integer.parseInt((String) newValue); - switch (option) { - case 0: - AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO); - break; - case 1: - AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES); - break; - case 2: - if (systemDefault) { - AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM); - } else { - AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY); - } - } - return true; - }); - } + return true; + }); } } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + activity = (Activity) context; + } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/NotificationPreferenceFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/NotificationPreferenceFragment.java index 86169571..36b0326e 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/NotificationPreferenceFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/NotificationPreferenceFragment.java @@ -2,9 +2,11 @@ package ml.docilealligator.infinityforreddit.Settings; import android.app.Activity; +import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.preference.ListPreference; import androidx.preference.PreferenceFragmentCompat; @@ -34,83 +36,86 @@ public class NotificationPreferenceFragment extends PreferenceFragmentCompat { private boolean enableNotification; private long notificationInterval; private WorkManager workManager; + private Activity activity; @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.notification_preferences, rootKey); - Activity activity = getActivity(); + workManager = WorkManager.getInstance(activity); - if (activity != null) { - workManager = WorkManager.getInstance(activity); + ((Infinity) activity.getApplication()).getAppComponent().inject(this); - ((Infinity) activity.getApplication()).getAppComponent().inject(this); + SwitchPreference enableNotificationSwitchPreference = findPreference(SharedPreferencesUtils.ENABLE_NOTIFICATION_KEY); + ListPreference notificationIntervalListPreference = findPreference(SharedPreferencesUtils.NOTIFICATION_INTERVAL_KEY); - SwitchPreference enableNotificationSwitchPreference = findPreference(SharedPreferencesUtils.ENABLE_NOTIFICATION_KEY); - ListPreference notificationIntervalListPreference = findPreference(SharedPreferencesUtils.NOTIFICATION_INTERVAL_KEY); + enableNotification = sharedPreferences.getBoolean(SharedPreferencesUtils.ENABLE_NOTIFICATION_KEY, true); + notificationInterval = Long.parseLong(sharedPreferences.getString(SharedPreferencesUtils.NOTIFICATION_INTERVAL_KEY, "1")); - enableNotification = sharedPreferences.getBoolean(SharedPreferencesUtils.ENABLE_NOTIFICATION_KEY, true); - notificationInterval = Long.parseLong(sharedPreferences.getString(SharedPreferencesUtils.NOTIFICATION_INTERVAL_KEY, "1")); + if (enableNotification) { + if (notificationIntervalListPreference != null) { + notificationIntervalListPreference.setVisible(true); + } + } - if (enableNotification) { + if (enableNotificationSwitchPreference != null) { + enableNotificationSwitchPreference.setOnPreferenceChangeListener((preference, newValue) -> { + enableNotification = ((Boolean) newValue); if (notificationIntervalListPreference != null) { - notificationIntervalListPreference.setVisible(true); + notificationIntervalListPreference.setVisible(enableNotification); } - } - if (enableNotificationSwitchPreference != null) { - enableNotificationSwitchPreference.setOnPreferenceChangeListener((preference, newValue) -> { - enableNotification = ((Boolean) newValue); - if (notificationIntervalListPreference != null) { - notificationIntervalListPreference.setVisible(enableNotification); - } - - if (enableNotification) { - Constraints constraints = new Constraints.Builder() - .setRequiredNetworkType(NetworkType.CONNECTED) - .build(); - - PeriodicWorkRequest pullNotificationRequest = - new PeriodicWorkRequest.Builder(PullNotificationWorker.class, - notificationInterval, TimeUnit.HOURS) - .setConstraints(constraints) - .setInitialDelay(notificationInterval, TimeUnit.HOURS) - .build(); - - workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG, - ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest); - } else { - workManager.cancelUniqueWork(PullNotificationWorker.WORKER_TAG); - } - return true; - }); - } + if (enableNotification) { + Constraints constraints = new Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(); + + PeriodicWorkRequest pullNotificationRequest = + new PeriodicWorkRequest.Builder(PullNotificationWorker.class, + notificationInterval, TimeUnit.HOURS) + .setConstraints(constraints) + .setInitialDelay(notificationInterval, TimeUnit.HOURS) + .build(); + + workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG, + ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest); + } else { + workManager.cancelUniqueWork(PullNotificationWorker.WORKER_TAG); + } + return true; + }); + } - if (notificationIntervalListPreference != null) { - notificationIntervalListPreference.setOnPreferenceChangeListener((preference, newValue) -> { - notificationInterval = Long.parseLong((String) newValue); - - if (enableNotification) { - Constraints constraints = new Constraints.Builder() - .setRequiredNetworkType(NetworkType.CONNECTED) - .build(); - - PeriodicWorkRequest pullNotificationRequest = - new PeriodicWorkRequest.Builder(PullNotificationWorker.class, - notificationInterval, TimeUnit.HOURS) - .setConstraints(constraints) - .setInitialDelay(notificationInterval, TimeUnit.HOURS) - .build(); - - workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG, - ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest); - } else { - workManager.cancelUniqueWork(PullNotificationWorker.WORKER_TAG); - } - - return true; - }); - } + if (notificationIntervalListPreference != null) { + notificationIntervalListPreference.setOnPreferenceChangeListener((preference, newValue) -> { + notificationInterval = Long.parseLong((String) newValue); + + if (enableNotification) { + Constraints constraints = new Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(); + + PeriodicWorkRequest pullNotificationRequest = + new PeriodicWorkRequest.Builder(PullNotificationWorker.class, + notificationInterval, TimeUnit.HOURS) + .setConstraints(constraints) + .setInitialDelay(notificationInterval, TimeUnit.HOURS) + .build(); + + workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG, + ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest); + } else { + workManager.cancelUniqueWork(PullNotificationWorker.WORKER_TAG); + } + + return true; + }); } } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + activity = (Activity) context; + } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java index 7154f06e..4a8dad83 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java @@ -68,4 +68,5 @@ public class SharedPreferencesUtils { public static final String VOLUME_KEYS_NAVIGATE_COMMENTS = "volume_keys_navigate_comments"; public static final String VOLUME_KEYS_NAVIGATE_POSTS = "volume_keys_navigate_posts"; public static final String MUTE_VIDEO = "mute_video"; + public static final String OPEN_LINK_IN_APP = "open_link_in_app"; } diff --git a/app/src/main/res/drawable-night/ic_gesture_24dp.xml b/app/src/main/res/drawable-night/ic_gesture_24dp.xml new file mode 100644 index 00000000..4ad8e70e --- /dev/null +++ b/app/src/main/res/drawable-night/ic_gesture_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FFFFFFFF" + android:pathData="M4.59,6.89c0.7,-0.71 1.4,-1.35 1.71,-1.22 0.5,0.2 0,1.03 -0.3,1.52 -0.25,0.42 -2.86,3.89 -2.86,6.31 0,1.28 0.48,2.34 1.34,2.98 0.75,0.56 1.74,0.73 2.64,0.46 1.07,-0.31 1.95,-1.4 3.06,-2.77 1.21,-1.49 2.83,-3.44 4.08,-3.44 1.63,0 1.65,1.01 1.76,1.79 -3.78,0.64 -5.38,3.67 -5.38,5.37 0,1.7 1.44,3.09 3.21,3.09 1.63,0 4.29,-1.33 4.69,-6.1L21,14.88v-2.5h-2.47c-0.15,-1.65 -1.09,-4.2 -4.03,-4.2 -2.25,0 -4.18,1.91 -4.94,2.84 -0.58,0.73 -2.06,2.48 -2.29,2.72 -0.25,0.3 -0.68,0.84 -1.11,0.84 -0.45,0 -0.72,-0.83 -0.36,-1.92 0.35,-1.09 1.4,-2.86 1.85,-3.52 0.78,-1.14 1.3,-1.92 1.3,-3.28C8.95,3.69 7.31,3 6.44,3 5.12,3 3.97,4 3.72,4.25c-0.36,0.36 -0.66,0.66 -0.88,0.93l1.75,1.71zM13.88,18.55c-0.31,0 -0.74,-0.26 -0.74,-0.72 0,-0.6 0.73,-2.2 2.87,-2.76 -0.3,2.69 -1.43,3.48 -2.13,3.48z"/> +</vector> diff --git a/app/src/main/res/drawable-night/ic_interface_24dp.xml b/app/src/main/res/drawable-night/ic_interface_24dp.xml new file mode 100644 index 00000000..633b54cb --- /dev/null +++ b/app/src/main/res/drawable-night/ic_interface_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FFFFFFFF" + android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM15,18L4,18v-4h11v4zM15,13L4,13L4,9h11v4zM20,18h-4L16,9h4v9z"/> +</vector> diff --git a/app/src/main/res/drawable-night/ic_outline_notifications_24px.xml b/app/src/main/res/drawable-night/ic_outline_notifications_24dp.xml index 43d52df4..43d52df4 100644 --- a/app/src/main/res/drawable-night/ic_outline_notifications_24px.xml +++ b/app/src/main/res/drawable-night/ic_outline_notifications_24dp.xml diff --git a/app/src/main/res/drawable/ic_gesture_24dp.xml b/app/src/main/res/drawable/ic_gesture_24dp.xml new file mode 100644 index 00000000..f629ede8 --- /dev/null +++ b/app/src/main/res/drawable/ic_gesture_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M4.59,6.89c0.7,-0.71 1.4,-1.35 1.71,-1.22 0.5,0.2 0,1.03 -0.3,1.52 -0.25,0.42 -2.86,3.89 -2.86,6.31 0,1.28 0.48,2.34 1.34,2.98 0.75,0.56 1.74,0.73 2.64,0.46 1.07,-0.31 1.95,-1.4 3.06,-2.77 1.21,-1.49 2.83,-3.44 4.08,-3.44 1.63,0 1.65,1.01 1.76,1.79 -3.78,0.64 -5.38,3.67 -5.38,5.37 0,1.7 1.44,3.09 3.21,3.09 1.63,0 4.29,-1.33 4.69,-6.1L21,14.88v-2.5h-2.47c-0.15,-1.65 -1.09,-4.2 -4.03,-4.2 -2.25,0 -4.18,1.91 -4.94,2.84 -0.58,0.73 -2.06,2.48 -2.29,2.72 -0.25,0.3 -0.68,0.84 -1.11,0.84 -0.45,0 -0.72,-0.83 -0.36,-1.92 0.35,-1.09 1.4,-2.86 1.85,-3.52 0.78,-1.14 1.3,-1.92 1.3,-3.28C8.95,3.69 7.31,3 6.44,3 5.12,3 3.97,4 3.72,4.25c-0.36,0.36 -0.66,0.66 -0.88,0.93l1.75,1.71zM13.88,18.55c-0.31,0 -0.74,-0.26 -0.74,-0.72 0,-0.6 0.73,-2.2 2.87,-2.76 -0.3,2.69 -1.43,3.48 -2.13,3.48z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_interface_24dp.xml b/app/src/main/res/drawable/ic_interface_24dp.xml new file mode 100644 index 00000000..5ec271dc --- /dev/null +++ b/app/src/main/res/drawable/ic_interface_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM15,18L4,18v-4h11v4zM15,13L4,13L4,9h11v4zM20,18h-4L16,9h4v9z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_outline_notifications_24px.xml b/app/src/main/res/drawable/ic_outline_notifications_24dp.xml index 0c2c90a7..0c2c90a7 100644 --- a/app/src/main/res/drawable/ic_outline_notifications_24px.xml +++ b/app/src/main/res/drawable/ic_outline_notifications_24dp.xml diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 44e93567..82681a40 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -293,6 +293,9 @@ <string name="settings_theme_dark_theme_summary">Dark Theme</string> <string name="settings_theme_system_default_summary">Device default</string> <string name="settings_amoled_dark_title">Amoled Dark</string> + <string name="settings_interface_title">Interface</string> + <string name="settings_gestures_and_buttons_title">Gestures & Buttons</string> + <string name="settings_open_link_in_app_title">Open Link In App</string> <string name="settings_immersive_interface_title">Immersive Interface</string> <string name="settings_enable_bottom_app_bar_title">Enable Bottom Navigation</string> <string name="settings_vote_buttons_on_the_right_title">Vote Buttons on the Right</string> @@ -302,7 +305,7 @@ <string name="settings_show_elapsed_time">Show Elapsed Time in Posts and Comments</string> <string name="settings_default_post_layout">Default Post Layout</string> <string name="settings_show_divider_in_compact_layout">Show Divider in Compact Layout</string> - <string name="swipe_to_go_back_from_post_detail">Swipe Right to Go Back From Comments</string> + <string name="settings_swipe_to_go_back_from_post_detail_title">Swipe Right to Go Back From Comments</string> <string name="settings_lazy_mode_interval_title">Lazy Mode Interval</string> <string name="settings_font_size_title">Font Size</string> <string name="settings_title_font_size_title">Title Font Size</string> @@ -414,4 +417,7 @@ <string name="save_comment">Save comment</string> <string name="unsave_comment">Unsave comment</string> + + <!-- TODO: Remove or change this placeholder text --> + <string name="hello_blank_fragment">Hello blank fragment</string> </resources> diff --git a/app/src/main/res/xml/gestures_and_buttons_preference.xml b/app/src/main/res/xml/gestures_and_buttons_preference.xml new file mode 100644 index 00000000..2f15e6be --- /dev/null +++ b/app/src/main/res/xml/gestures_and_buttons_preference.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"> + + <SwitchPreference + app:defaultValue="true" + app:key="swipe_to_go_back_from_post_detail" + app:title="@string/settings_swipe_to_go_back_from_post_detail_title" /> + + <SwitchPreference + app:defaultValue="false" + app:key="volume_keys_navigate_comments" + app:title="@string/settings_volume_keys_navigate_comments_title" /> + + <SwitchPreference + app:defaultValue="false" + app:key="volume_keys_navigate_posts" + app:title="@string/settings_volume_keys_navigate_posts_title" /> + +</PreferenceScreen>
\ No newline at end of file diff --git a/app/src/main/res/xml/interface_preference.xml b/app/src/main/res/xml/interface_preference.xml new file mode 100644 index 00000000..434a0173 --- /dev/null +++ b/app/src/main/res/xml/interface_preference.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + <Preference + app:title="@string/settings_font_size_title" + app:icon="@drawable/ic_font_size_24dp" + app:fragment="ml.docilealligator.infinityforreddit.Settings.FontSizePreferenceFragment" /> + + <SwitchPreference + app:defaultValue="true" + app:key="immersive_interface" + app:title="@string/settings_immersive_interface_title" + app:isPreferenceVisible="false" /> + + <SwitchPreference + app:defaultValue="false" + app:key="bottom_app_bar" + app:title="@string/settings_enable_bottom_app_bar_title" /> + + <SwitchPreference + app:defaultValue="false" + app:key="vote_buttons_on_the_right" + app:title="@string/settings_vote_buttons_on_the_right_title" /> + + <SwitchPreference + app:defaultValue="false" + app:key="show_elapsed_time" + app:title="@string/settings_show_elapsed_time" /> + + <ListPreference + app:defaultValue="0" + android:entries="@array/settings_default_post_layout" + app:entryValues="@array/settings_default_post_layout_values" + app:key="default_post_layout" + app:title="@string/settings_default_post_layout" + app:useSimpleSummaryProvider="true" /> + + <SwitchPreference + app:defaultValue="true" + app:key="show_divider_in_compact_layout" + app:title="@string/settings_show_divider_in_compact_layout" /> + +</PreferenceScreen>
\ No newline at end of file diff --git a/app/src/main/res/xml/main_preferences.xml b/app/src/main/res/xml/main_preferences.xml index 395d10e1..f79b8234 100644 --- a/app/src/main/res/xml/main_preferences.xml +++ b/app/src/main/res/xml/main_preferences.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> <Preference - app:icon="@drawable/ic_outline_notifications_24px" + app:icon="@drawable/ic_outline_notifications_24dp" app:title="@string/settings_notification_master_title" app:fragment="ml.docilealligator.infinityforreddit.Settings.NotificationPreferenceFragment" /> @@ -20,59 +20,21 @@ app:key="amoled_dark" app:title="@string/settings_amoled_dark_title" /> - <SwitchPreference - app:defaultValue="true" - app:key="immersive_interface" - app:title="@string/settings_immersive_interface_title" - app:isPreferenceVisible="false" /> - - <SwitchPreference - app:defaultValue="false" - app:key="bottom_app_bar" - app:title="@string/settings_enable_bottom_app_bar_title" /> - - <SwitchPreference - app:defaultValue="false" - app:key="vote_buttons_on_the_right" - app:title="@string/settings_vote_buttons_on_the_right_title" /> - - <SwitchPreference - app:defaultValue="false" - app:key="show_elapsed_time" - app:title="@string/settings_show_elapsed_time" /> - - <ListPreference - app:defaultValue="0" - android:entries="@array/settings_default_post_layout" - app:entryValues="@array/settings_default_post_layout_values" - app:key="default_post_layout" - app:title="@string/settings_default_post_layout" - app:useSimpleSummaryProvider="true" /> - - <SwitchPreference - app:defaultValue="true" - app:key="show_divider_in_compact_layout" - app:title="@string/settings_show_divider_in_compact_layout" /> - - <SwitchPreference - app:defaultValue="true" - app:key="swipe_to_go_back_from_post_detail" - app:title="@string/swipe_to_go_back_from_post_detail" /> - - <SwitchPreference - app:defaultValue="true" - app:key="swipe_to_go_back_from_post_detail" - app:title="@string/swipe_to_go_back_from_post_detail" /> + <Preference + app:icon="@drawable/ic_interface_24dp" + app:title="@string/settings_interface_title" + app:fragment="ml.docilealligator.infinityforreddit.Settings.InterfacePreferenceFragment" /> - <SwitchPreference - app:defaultValue="false" - app:key="volume_keys_navigate_comments" - app:title="@string/settings_volume_keys_navigate_comments_title" /> + <Preference + app:icon="@drawable/ic_gesture_24dp" + app:title="@string/settings_gestures_and_buttons_title" + app:fragment="ml.docilealligator.infinityforreddit.Settings.GesturesAndButtonsPreferenceFragment" /> <SwitchPreference app:defaultValue="false" - app:key="volume_keys_navigate_posts" - app:title="@string/settings_volume_keys_navigate_posts_title" /> + app:icon="@drawable/ic_link" + app:key="open_link_in_app" + app:title="@string/settings_open_link_in_app_title" /> <SwitchPreference app:defaultValue="false" @@ -80,11 +42,6 @@ android:icon="@drawable/ic_mute_preferences_24dp" app:title="@string/settings_mute_video_title" /> - <Preference - app:title="@string/settings_font_size_title" - app:icon="@drawable/ic_font_size_24dp" - app:fragment="ml.docilealligator.infinityforreddit.Settings.FontSizePreferenceFragment" /> - <ListPreference app:defaultValue="2.5" android:entries="@array/settings_lazy_mode_interval" diff --git a/app/src/main/res/xml/notification_preferences.xml b/app/src/main/res/xml/notification_preferences.xml index 93956533..8ef76485 100644 --- a/app/src/main/res/xml/notification_preferences.xml +++ b/app/src/main/res/xml/notification_preferences.xml @@ -5,7 +5,7 @@ <SwitchPreference app:defaultValue="true" app:key="enable_notification" - app:icon="@drawable/ic_outline_notifications_24px" + app:icon="@drawable/ic_outline_notifications_24dp" app:title="@string/settings_notification_enable_notification_title"/> <ListPreference |