New option: Default Link Post Layout.

This commit is contained in:
Alex Ning 2021-07-20 20:13:11 +08:00
parent f68e4aad09
commit 568aa7a78f
8 changed files with 107 additions and 2 deletions

View File

@ -148,6 +148,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
private boolean canStartActivity = true; private boolean canStartActivity = true;
private int mPostType; private int mPostType;
private int mPostLayout; private int mPostLayout;
private int mDefaultLinkPostLayout;
private int mColorPrimaryLightTheme; private int mColorPrimaryLightTheme;
private int mColorAccent; private int mColorAccent;
private int mCardViewBackgroundColor; private int mCardViewBackgroundColor;
@ -295,6 +296,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
mHideTheNumberOfComments = sharedPreferences.getBoolean(SharedPreferencesUtils.HIDE_THE_NUMBER_OF_COMMENTS, false); mHideTheNumberOfComments = sharedPreferences.getBoolean(SharedPreferencesUtils.HIDE_THE_NUMBER_OF_COMMENTS, false);
mPostLayout = postLayout; mPostLayout = postLayout;
mDefaultLinkPostLayout = Integer.parseInt(sharedPreferences.getString(SharedPreferencesUtils.DEFAULT_LINK_POST_LAYOUT_KEY, "-1"));
mColorPrimaryLightTheme = customThemeWrapper.getColorPrimaryLightTheme(); mColorPrimaryLightTheme = customThemeWrapper.getColorPrimaryLightTheme();
mColorAccent = customThemeWrapper.getColorAccent(); mColorAccent = customThemeWrapper.getColorAccent();
@ -382,8 +384,24 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
case Post.IMAGE_TYPE: case Post.IMAGE_TYPE:
return VIEW_TYPE_POST_CARD_IMAGE_AND_GIF_AUTOPLAY_TYPE; return VIEW_TYPE_POST_CARD_IMAGE_AND_GIF_AUTOPLAY_TYPE;
case Post.LINK_TYPE: case Post.LINK_TYPE:
switch (mDefaultLinkPostLayout) {
case SharedPreferencesUtils.POST_LAYOUT_COMPACT:
return VIEW_TYPE_POST_COMPACT;
case SharedPreferencesUtils.POST_LAYOUT_GALLERY:
return VIEW_TYPE_POST_GALLERY;
case SharedPreferencesUtils.POST_LAYOUT_CARD_2:
return VIEW_TYPE_POST_CARD_2_WITH_PREVIEW;
}
return VIEW_TYPE_POST_CARD_LINK_TYPE; return VIEW_TYPE_POST_CARD_LINK_TYPE;
case Post.NO_PREVIEW_LINK_TYPE: case Post.NO_PREVIEW_LINK_TYPE:
switch (mDefaultLinkPostLayout) {
case SharedPreferencesUtils.POST_LAYOUT_COMPACT:
return VIEW_TYPE_POST_COMPACT;
case SharedPreferencesUtils.POST_LAYOUT_GALLERY:
return VIEW_TYPE_POST_GALLERY;
case SharedPreferencesUtils.POST_LAYOUT_CARD_2:
return VIEW_TYPE_POST_CARD_2_WITH_PREVIEW;
}
return VIEW_TYPE_POST_CARD_NO_PREVIEW_LINK_TYPE; return VIEW_TYPE_POST_CARD_NO_PREVIEW_LINK_TYPE;
case Post.GALLERY_TYPE: case Post.GALLERY_TYPE:
return VIEW_TYPE_POST_CARD_GALLERY_TYPE; return VIEW_TYPE_POST_CARD_GALLERY_TYPE;
@ -393,6 +411,23 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
} }
return VIEW_TYPE_POST_CARD_TEXT_TYPE; return VIEW_TYPE_POST_CARD_TEXT_TYPE;
} else if (mPostLayout == SharedPreferencesUtils.POST_LAYOUT_COMPACT) { } else if (mPostLayout == SharedPreferencesUtils.POST_LAYOUT_COMPACT) {
Post post = getItem(position);
if (post != null) {
if (post.getPostType() == Post.LINK_TYPE || post.getPostType() == Post.NO_PREVIEW_LINK_TYPE) {
switch (mDefaultLinkPostLayout) {
case SharedPreferencesUtils.POST_LAYOUT_CARD:
if (post.getPostType() == Post.LINK_TYPE) {
return VIEW_TYPE_POST_CARD_LINK_TYPE;
} else {
return VIEW_TYPE_POST_CARD_NO_PREVIEW_LINK_TYPE;
}
case SharedPreferencesUtils.POST_LAYOUT_GALLERY:
return VIEW_TYPE_POST_GALLERY;
case SharedPreferencesUtils.POST_LAYOUT_CARD_2:
return VIEW_TYPE_POST_CARD_2_WITH_PREVIEW;
}
}
}
return VIEW_TYPE_POST_COMPACT; return VIEW_TYPE_POST_COMPACT;
} else if (mPostLayout == SharedPreferencesUtils.POST_LAYOUT_GALLERY) { } else if (mPostLayout == SharedPreferencesUtils.POST_LAYOUT_GALLERY) {
return VIEW_TYPE_POST_GALLERY; return VIEW_TYPE_POST_GALLERY;
@ -410,10 +445,22 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
return VIEW_TYPE_POST_CARD_2_WITH_PREVIEW; return VIEW_TYPE_POST_CARD_2_WITH_PREVIEW;
case Post.GIF_TYPE: case Post.GIF_TYPE:
case Post.IMAGE_TYPE: case Post.IMAGE_TYPE:
case Post.LINK_TYPE:
case Post.NO_PREVIEW_LINK_TYPE:
case Post.GALLERY_TYPE: case Post.GALLERY_TYPE:
return VIEW_TYPE_POST_CARD_2_WITH_PREVIEW; return VIEW_TYPE_POST_CARD_2_WITH_PREVIEW;
case Post.LINK_TYPE:
case Post.NO_PREVIEW_LINK_TYPE:
switch (mDefaultLinkPostLayout) {
case SharedPreferencesUtils.POST_LAYOUT_CARD:
if (post.getPostType() == Post.LINK_TYPE) {
return VIEW_TYPE_POST_CARD_LINK_TYPE;
} else {
return VIEW_TYPE_POST_CARD_NO_PREVIEW_LINK_TYPE;
}
case SharedPreferencesUtils.POST_LAYOUT_GALLERY:
return VIEW_TYPE_POST_GALLERY;
case SharedPreferencesUtils.POST_LAYOUT_COMPACT:
return VIEW_TYPE_POST_COMPACT;
}
default: default:
return VIEW_TYPE_POST_CARD_2_TEXT_TYPE; return VIEW_TYPE_POST_CARD_2_TEXT_TYPE;
} }
@ -1846,6 +1893,10 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
mHideTheNumberOfComments = hideTheNumberOfComments; mHideTheNumberOfComments = hideTheNumberOfComments;
} }
public void setDefaultLinkPostLayout(int defaultLinkPostLayout) {
mDefaultLinkPostLayout = defaultLinkPostLayout;
}
@Override @Override
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) { public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
super.onViewRecycled(holder); super.onViewRecycled(holder);

View File

@ -0,0 +1,9 @@
package ml.docilealligator.infinityforreddit.events;
public class ChangeDefaultLinkPostLayoutEvent {
public int defaultLinkPostLayout;
public ChangeDefaultLinkPostLayoutEvent(int defaultLinkPostLayout) {
this.defaultLinkPostLayout = defaultLinkPostLayout;
}
}

View File

@ -82,6 +82,7 @@ import ml.docilealligator.infinityforreddit.customviews.CustomToroContainer;
import ml.docilealligator.infinityforreddit.events.ChangeAutoplayNsfwVideosEvent; import ml.docilealligator.infinityforreddit.events.ChangeAutoplayNsfwVideosEvent;
import ml.docilealligator.infinityforreddit.events.ChangeCompactLayoutToolbarHiddenByDefaultEvent; import ml.docilealligator.infinityforreddit.events.ChangeCompactLayoutToolbarHiddenByDefaultEvent;
import ml.docilealligator.infinityforreddit.events.ChangeDataSavingModeEvent; import ml.docilealligator.infinityforreddit.events.ChangeDataSavingModeEvent;
import ml.docilealligator.infinityforreddit.events.ChangeDefaultLinkPostLayoutEvent;
import ml.docilealligator.infinityforreddit.events.ChangeDefaultPostLayoutEvent; import ml.docilealligator.infinityforreddit.events.ChangeDefaultPostLayoutEvent;
import ml.docilealligator.infinityforreddit.events.ChangeDisableImagePreviewEvent; import ml.docilealligator.infinityforreddit.events.ChangeDisableImagePreviewEvent;
import ml.docilealligator.infinityforreddit.events.ChangeEnableSwipeActionSwitchEvent; import ml.docilealligator.infinityforreddit.events.ChangeEnableSwipeActionSwitchEvent;
@ -1672,6 +1673,14 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
} }
} }
@Subscribe
public void onChangeDefaultLinkPostLayoutEvent(ChangeDefaultLinkPostLayoutEvent event) {
if (mAdapter != null) {
mAdapter.setDefaultLinkPostLayout(event.defaultLinkPostLayout);
refreshAdapter();
}
}
@Subscribe @Subscribe
public void onChangeShowAbsoluteNumberOfVotesEvent(ChangeShowAbsoluteNumberOfVotesEvent changeShowAbsoluteNumberOfVotesEvent) { public void onChangeShowAbsoluteNumberOfVotesEvent(ChangeShowAbsoluteNumberOfVotesEvent changeShowAbsoluteNumberOfVotesEvent) {
if (mAdapter != null) { if (mAdapter != null) {

View File

@ -11,6 +11,7 @@ import org.greenrobot.eventbus.EventBus;
import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.events.ChangeCompactLayoutToolbarHiddenByDefaultEvent; import ml.docilealligator.infinityforreddit.events.ChangeCompactLayoutToolbarHiddenByDefaultEvent;
import ml.docilealligator.infinityforreddit.events.ChangeDefaultLinkPostLayoutEvent;
import ml.docilealligator.infinityforreddit.events.ChangeDefaultPostLayoutEvent; import ml.docilealligator.infinityforreddit.events.ChangeDefaultPostLayoutEvent;
import ml.docilealligator.infinityforreddit.events.ChangeHidePostFlairEvent; import ml.docilealligator.infinityforreddit.events.ChangeHidePostFlairEvent;
import ml.docilealligator.infinityforreddit.events.ChangeHidePostTypeEvent; import ml.docilealligator.infinityforreddit.events.ChangeHidePostTypeEvent;
@ -31,6 +32,7 @@ public class PostPreferenceFragment extends PreferenceFragmentCompat {
setPreferencesFromResource(R.xml.post_preferences, rootKey); setPreferencesFromResource(R.xml.post_preferences, rootKey);
ListPreference defaultPostLayoutList = findPreference(SharedPreferencesUtils.DEFAULT_POST_LAYOUT_KEY); ListPreference defaultPostLayoutList = findPreference(SharedPreferencesUtils.DEFAULT_POST_LAYOUT_KEY);
ListPreference defaultLinkPostLayoutList = findPreference(SharedPreferencesUtils.DEFAULT_LINK_POST_LAYOUT_KEY);
SwitchPreference showDividerInCompactLayoutSwitch = findPreference(SharedPreferencesUtils.SHOW_DIVIDER_IN_COMPACT_LAYOUT); SwitchPreference showDividerInCompactLayoutSwitch = findPreference(SharedPreferencesUtils.SHOW_DIVIDER_IN_COMPACT_LAYOUT);
SwitchPreference showThumbnailOnTheRightInCompactLayoutSwitch = findPreference(SharedPreferencesUtils.SHOW_THUMBNAIL_ON_THE_LEFT_IN_COMPACT_LAYOUT); SwitchPreference showThumbnailOnTheRightInCompactLayoutSwitch = findPreference(SharedPreferencesUtils.SHOW_THUMBNAIL_ON_THE_LEFT_IN_COMPACT_LAYOUT);
SwitchPreference showAbsoluteNumberOfVotesSwitch = findPreference(SharedPreferencesUtils.SHOW_ABSOLUTE_NUMBER_OF_VOTES); SwitchPreference showAbsoluteNumberOfVotesSwitch = findPreference(SharedPreferencesUtils.SHOW_ABSOLUTE_NUMBER_OF_VOTES);
@ -50,6 +52,13 @@ public class PostPreferenceFragment extends PreferenceFragmentCompat {
}); });
} }
if (defaultLinkPostLayoutList != null) {
defaultLinkPostLayoutList.setOnPreferenceChangeListener((preference, newValue) -> {
EventBus.getDefault().post(new ChangeDefaultLinkPostLayoutEvent(Integer.parseInt((String) newValue)));
return true;
});
}
if (showDividerInCompactLayoutSwitch != null) { if (showDividerInCompactLayoutSwitch != null) {
showDividerInCompactLayoutSwitch.setOnPreferenceChangeListener((preference, newValue) -> { showDividerInCompactLayoutSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
EventBus.getDefault().post(new ShowDividerInCompactLayoutPreferenceEvent((Boolean) newValue)); EventBus.getDefault().post(new ShowDividerInCompactLayoutPreferenceEvent((Boolean) newValue));

View File

@ -184,6 +184,7 @@ public class SharedPreferencesUtils {
public static final String APPLY_MATERIAL_YOU = "apply_material_you"; public static final String APPLY_MATERIAL_YOU = "apply_material_you";
public static final String VIDEO_PLAYER_AUTOMATIC_LANDSCAPE_ORIENTATION = "video_player_automatic_landscape_orientation"; public static final String VIDEO_PLAYER_AUTOMATIC_LANDSCAPE_ORIENTATION = "video_player_automatic_landscape_orientation";
public static final String REMEMBER_MUTING_OPTION_IN_POST_FEED = "remember_muting_option_in_post_feed"; public static final String REMEMBER_MUTING_OPTION_IN_POST_FEED = "remember_muting_option_in_post_feed";
public static final String DEFAULT_LINK_POST_LAYOUT_KEY = "default_link_post_layout";
public static final String DEFAULT_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit_preferences"; public static final String DEFAULT_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit_preferences";
public static final String MAIN_PAGE_TABS_SHARED_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit.main_page_tabs"; public static final String MAIN_PAGE_TABS_SHARED_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit.main_page_tabs";

View File

@ -55,6 +55,22 @@
<item>2</item> <item>2</item>
</string-array> </string-array>
<string-array name="settings_default_link_post_layout">
<item>@string/link_post_layout_auto</item>
<item>@string/post_layout_card</item>
<item>@string/post_layout_card_2</item>
<item>@string/post_layout_compact</item>
<item>@string/post_layout_gallery</item>
</string-array>
<string-array name="settings_default_link_post_layout_values">
<item>-1</item>
<item>0</item>
<item>3</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="settings_video_autoplay"> <string-array name="settings_video_autoplay">
<item>@string/always_on</item> <item>@string/always_on</item>
<item>@string/only_on_wifi</item> <item>@string/only_on_wifi</item>

View File

@ -401,6 +401,7 @@
<string name="settings_time_format_title">Time Format</string> <string name="settings_time_format_title">Time Format</string>
<string name="settings_category_post_title">Post</string> <string name="settings_category_post_title">Post</string>
<string name="settings_default_post_layout">Default Post Layout</string> <string name="settings_default_post_layout">Default Post Layout</string>
<string name="settings_default_link_post_layout">Default Link Post Layout</string>
<string name="settings_show_divider_in_compact_layout">Show Divider</string> <string name="settings_show_divider_in_compact_layout">Show Divider</string>
<string name="settings_show_thumbnail_on_the_left_in_compact_layout">Show Thumbnail on the Left</string> <string name="settings_show_thumbnail_on_the_left_in_compact_layout">Show Thumbnail on the Left</string>
<string name="settings_number_of_columns_in_post_feed_title">The Number of Columns in Post Feed</string> <string name="settings_number_of_columns_in_post_feed_title">The Number of Columns in Post Feed</string>
@ -619,6 +620,7 @@
<string name="favorites">Favorites</string> <string name="favorites">Favorites</string>
<string name="all">All</string> <string name="all">All</string>
<string name="link_post_layout_auto">Auto</string>
<string name="post_layout_card">Card Layout</string> <string name="post_layout_card">Card Layout</string>
<string name="post_layout_compact">Compact Layout</string> <string name="post_layout_compact">Compact Layout</string>
<string name="post_layout_gallery">Gallery Layout</string> <string name="post_layout_gallery">Gallery Layout</string>

View File

@ -10,6 +10,14 @@
app:title="@string/settings_default_post_layout" app:title="@string/settings_default_post_layout"
app:useSimpleSummaryProvider="true" /> app:useSimpleSummaryProvider="true" />
<ListPreference
app:defaultValue="-1"
android:entries="@array/settings_default_link_post_layout"
app:entryValues="@array/settings_default_link_post_layout_values"
app:key="default_link_post_layout"
app:title="@string/settings_default_link_post_layout"
app:useSimpleSummaryProvider="true" />
<Preference <Preference
app:title="@string/settings_number_of_columns_in_post_feed_title" app:title="@string/settings_number_of_columns_in_post_feed_title"
app:fragment="ml.docilealligator.infinityforreddit.settings.NumberOfColumnsInPostFeedPreferenceFragment" /> app:fragment="ml.docilealligator.infinityforreddit.settings.NumberOfColumnsInPostFeedPreferenceFragment" />