mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-30 12:57:12 +01:00
Added showing favorite multireddits and multireddits in main page.
This commit is contained in:
parent
afbebebde1
commit
e9124e869d
@ -33,6 +33,7 @@ import androidx.drawerlayout.widget.DrawerLayout;
|
|||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
import androidx.lifecycle.Observer;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
@ -99,6 +100,8 @@ import ml.docilealligator.infinityforreddit.events.RecreateActivityEvent;
|
|||||||
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
|
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.fragments.PostFragment;
|
import ml.docilealligator.infinityforreddit.fragments.PostFragment;
|
||||||
import ml.docilealligator.infinityforreddit.message.ReadMessage;
|
import ml.docilealligator.infinityforreddit.message.ReadMessage;
|
||||||
|
import ml.docilealligator.infinityforreddit.multireddit.MultiReddit;
|
||||||
|
import ml.docilealligator.infinityforreddit.multireddit.MultiRedditViewModel;
|
||||||
import ml.docilealligator.infinityforreddit.post.Post;
|
import ml.docilealligator.infinityforreddit.post.Post;
|
||||||
import ml.docilealligator.infinityforreddit.post.PostDataSource;
|
import ml.docilealligator.infinityforreddit.post.PostDataSource;
|
||||||
import ml.docilealligator.infinityforreddit.readpost.InsertReadPost;
|
import ml.docilealligator.infinityforreddit.readpost.InsertReadPost;
|
||||||
@ -168,6 +171,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
ImageView option4BottomAppBar;
|
ImageView option4BottomAppBar;
|
||||||
@BindView(R.id.fab_main_activity)
|
@BindView(R.id.fab_main_activity)
|
||||||
FloatingActionButton fab;
|
FloatingActionButton fab;
|
||||||
|
MultiRedditViewModel multiRedditViewModel;
|
||||||
SubscribedSubredditViewModel subscribedSubredditViewModel;
|
SubscribedSubredditViewModel subscribedSubredditViewModel;
|
||||||
AccountViewModel accountViewModel;
|
AccountViewModel accountViewModel;
|
||||||
@Inject
|
@Inject
|
||||||
@ -223,6 +227,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
private boolean mConfirmToExit;
|
private boolean mConfirmToExit;
|
||||||
private boolean mLockBottomAppBar;
|
private boolean mLockBottomAppBar;
|
||||||
private boolean mDisableSwipingBetweenTabs;
|
private boolean mDisableSwipingBetweenTabs;
|
||||||
|
private boolean mShowFavoriteMultiReddits;
|
||||||
|
private boolean mShowMultiReddits;
|
||||||
private boolean mShowFavoriteSubscribedSubreddits;
|
private boolean mShowFavoriteSubscribedSubreddits;
|
||||||
private boolean mShowSubscribedSubreddits;
|
private boolean mShowSubscribedSubreddits;
|
||||||
private int fabOption;
|
private int fabOption;
|
||||||
@ -830,15 +836,17 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
navDrawerRecyclerView.setAdapter(adapter);
|
navDrawerRecyclerView.setAdapter(adapter);
|
||||||
|
|
||||||
int tabCount = mMainActivityTabsSharedPreferences.getInt((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_COUNT, 3);
|
int tabCount = mMainActivityTabsSharedPreferences.getInt((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_COUNT, 3);
|
||||||
|
mShowFavoriteMultiReddits = mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_FAVORITE_MULTIREDDITS, false);
|
||||||
|
mShowMultiReddits = mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_MULTIREDDITS, false);
|
||||||
mShowFavoriteSubscribedSubreddits = mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_FAVORITE_SUBSCRIBED_SUBREDDITS, false);
|
mShowFavoriteSubscribedSubreddits = mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_FAVORITE_SUBSCRIBED_SUBREDDITS, false);
|
||||||
mShowSubscribedSubreddits = mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_SUBSCRIBED_SUBREDDITS, false);
|
mShowSubscribedSubreddits = mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_SUBSCRIBED_SUBREDDITS, false);
|
||||||
sectionsPagerAdapter = new SectionsPagerAdapter(this, tabCount,
|
sectionsPagerAdapter = new SectionsPagerAdapter(this, tabCount, mShowFavoriteMultiReddits,
|
||||||
mShowFavoriteSubscribedSubreddits, mShowSubscribedSubreddits);
|
mShowMultiReddits, mShowFavoriteSubscribedSubreddits, mShowSubscribedSubreddits);
|
||||||
viewPager2.setAdapter(sectionsPagerAdapter);
|
viewPager2.setAdapter(sectionsPagerAdapter);
|
||||||
viewPager2.setOffscreenPageLimit(1);
|
viewPager2.setOffscreenPageLimit(1);
|
||||||
viewPager2.setUserInputEnabled(!mDisableSwipingBetweenTabs);
|
viewPager2.setUserInputEnabled(!mDisableSwipingBetweenTabs);
|
||||||
if (mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_TAB_NAMES, true)) {
|
if (mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_TAB_NAMES, true)) {
|
||||||
if (mShowFavoriteSubscribedSubreddits || mShowSubscribedSubreddits) {
|
if (mShowFavoriteMultiReddits || mShowMultiReddits || mShowFavoriteSubscribedSubreddits || mShowSubscribedSubreddits) {
|
||||||
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
|
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
|
||||||
} else {
|
} else {
|
||||||
tabLayout.setTabMode(TabLayout.MODE_FIXED);
|
tabLayout.setTabMode(TabLayout.MODE_FIXED);
|
||||||
@ -868,13 +876,26 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
tab.setText(mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_3_TITLE, getString(R.string.all)));
|
tab.setText(mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_3_TITLE, getString(R.string.all)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (position >= tabCount && (mShowFavoriteSubscribedSubreddits || mShowSubscribedSubreddits) && sectionsPagerAdapter != null) {
|
if (position >= tabCount && (mShowFavoriteMultiReddits || mShowMultiReddits ||
|
||||||
List<SubscribedSubredditData> favoriteSubscribedSubreddits = sectionsPagerAdapter.favoriteSubscribedSubreddits;
|
mShowFavoriteSubscribedSubreddits || mShowSubscribedSubreddits)
|
||||||
List<SubscribedSubredditData> subscribedSubreddits = sectionsPagerAdapter.subscribedSubreddits;
|
&& sectionsPagerAdapter != null) {
|
||||||
if (position - tabCount < favoriteSubscribedSubreddits.size()) {
|
if (position - tabCount < sectionsPagerAdapter.favoriteMultiReddits.size()) {
|
||||||
tab.setText(favoriteSubscribedSubreddits.get(position - tabCount).getName());
|
tab.setText(sectionsPagerAdapter.favoriteMultiReddits.get(position - tabCount).getName());
|
||||||
} else if (position - tabCount - favoriteSubscribedSubreddits.size() < subscribedSubreddits.size()) {
|
} else if (position - tabCount - sectionsPagerAdapter.favoriteMultiReddits.size() < sectionsPagerAdapter.multiReddits.size()) {
|
||||||
tab.setText(subscribedSubreddits.get(position - tabCount - favoriteSubscribedSubreddits.size()).getName());
|
tab.setText(sectionsPagerAdapter.multiReddits.get(position - tabCount
|
||||||
|
- sectionsPagerAdapter.favoriteMultiReddits.size()).getName());
|
||||||
|
} else if (position - tabCount - sectionsPagerAdapter.favoriteMultiReddits.size()
|
||||||
|
- sectionsPagerAdapter.multiReddits.size() < sectionsPagerAdapter.favoriteSubscribedSubreddits.size()) {
|
||||||
|
tab.setText(sectionsPagerAdapter.favoriteSubscribedSubreddits.get(position - tabCount
|
||||||
|
- sectionsPagerAdapter.favoriteMultiReddits.size()
|
||||||
|
- sectionsPagerAdapter.multiReddits.size()).getName());
|
||||||
|
} else if (position - tabCount - sectionsPagerAdapter.favoriteMultiReddits.size()
|
||||||
|
- sectionsPagerAdapter.multiReddits.size()
|
||||||
|
- sectionsPagerAdapter.favoriteSubscribedSubreddits.size() < sectionsPagerAdapter.subscribedSubreddits.size()) {
|
||||||
|
tab.setText(sectionsPagerAdapter.subscribedSubreddits.get(position - tabCount
|
||||||
|
- sectionsPagerAdapter.favoriteMultiReddits.size()
|
||||||
|
- sectionsPagerAdapter.multiReddits.size()
|
||||||
|
- sectionsPagerAdapter.favoriteSubscribedSubreddits.size()).getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -900,6 +921,25 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
|
|
||||||
loadSubscriptions();
|
loadSubscriptions();
|
||||||
|
|
||||||
|
multiRedditViewModel = new ViewModelProvider(this, new MultiRedditViewModel.Factory(getApplication(),
|
||||||
|
mRedditDataRoomDatabase, mAccountName))
|
||||||
|
.get(MultiRedditViewModel.class);
|
||||||
|
|
||||||
|
multiRedditViewModel.getAllFavoriteMultiReddits().observe(this, multiReddits -> {
|
||||||
|
if (mShowFavoriteMultiReddits && sectionsPagerAdapter != null) {
|
||||||
|
sectionsPagerAdapter.setFavoriteMultiReddits(multiReddits);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
multiRedditViewModel.getAllMultiReddits().observe(this, new Observer<List<MultiReddit>>() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(List<MultiReddit> multiReddits) {
|
||||||
|
if (mShowMultiReddits && sectionsPagerAdapter != null) {
|
||||||
|
sectionsPagerAdapter.setMultiReddits(multiReddits);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
subscribedSubredditViewModel = new ViewModelProvider(this,
|
subscribedSubredditViewModel = new ViewModelProvider(this,
|
||||||
new SubscribedSubredditViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName))
|
new SubscribedSubredditViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName))
|
||||||
.get(SubscribedSubredditViewModel.class);
|
.get(SubscribedSubredditViewModel.class);
|
||||||
@ -1409,16 +1449,26 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
|
|
||||||
private class SectionsPagerAdapter extends FragmentStateAdapter {
|
private class SectionsPagerAdapter extends FragmentStateAdapter {
|
||||||
int tabCount;
|
int tabCount;
|
||||||
|
boolean showFavoriteMultiReddits;
|
||||||
|
boolean showMultiReddits;
|
||||||
boolean showFavoriteSubscribedSubreddits;
|
boolean showFavoriteSubscribedSubreddits;
|
||||||
boolean showSubscribedSubreddits;
|
boolean showSubscribedSubreddits;
|
||||||
|
List<MultiReddit> favoriteMultiReddits;
|
||||||
|
List<MultiReddit> multiReddits;
|
||||||
List<SubscribedSubredditData> favoriteSubscribedSubreddits;
|
List<SubscribedSubredditData> favoriteSubscribedSubreddits;
|
||||||
List<SubscribedSubredditData> subscribedSubreddits;
|
List<SubscribedSubredditData> subscribedSubreddits;
|
||||||
|
|
||||||
SectionsPagerAdapter(FragmentActivity fa, int tabCount, boolean showFavoriteSubscribedSubreddits, boolean showSubscribedSubreddits) {
|
SectionsPagerAdapter(FragmentActivity fa, int tabCount, boolean showFavoriteMultiReddits,
|
||||||
|
boolean showMultiReddits, boolean showFavoriteSubscribedSubreddits,
|
||||||
|
boolean showSubscribedSubreddits) {
|
||||||
super(fa);
|
super(fa);
|
||||||
this.tabCount = tabCount;
|
this.tabCount = tabCount;
|
||||||
|
favoriteMultiReddits = new ArrayList<>();
|
||||||
|
multiReddits = new ArrayList<>();
|
||||||
favoriteSubscribedSubreddits = new ArrayList<>();
|
favoriteSubscribedSubreddits = new ArrayList<>();
|
||||||
subscribedSubreddits = new ArrayList<>();
|
subscribedSubreddits = new ArrayList<>();
|
||||||
|
this.showFavoriteMultiReddits = showFavoriteMultiReddits;
|
||||||
|
this.showMultiReddits = showMultiReddits;
|
||||||
this.showFavoriteSubscribedSubreddits = showFavoriteSubscribedSubreddits;
|
this.showFavoriteSubscribedSubreddits = showFavoriteSubscribedSubreddits;
|
||||||
this.showSubscribedSubreddits = showSubscribedSubreddits;
|
this.showSubscribedSubreddits = showSubscribedSubreddits;
|
||||||
}
|
}
|
||||||
@ -1463,17 +1513,38 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
String name = mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_2_NAME, "");
|
String name = mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_2_NAME, "");
|
||||||
return generatePostFragment(postType, name);
|
return generatePostFragment(postType, name);
|
||||||
} else {
|
} else {
|
||||||
|
if (showFavoriteMultiReddits) {
|
||||||
|
if (position >= tabCount && position - tabCount < favoriteMultiReddits.size()) {
|
||||||
|
int postType = SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT;
|
||||||
|
String name = favoriteMultiReddits.get(position - tabCount).getPath();
|
||||||
|
return generatePostFragment(postType, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (showMultiReddits) {
|
||||||
|
if (position >= tabCount && position - tabCount - favoriteMultiReddits.size() < multiReddits.size()) {
|
||||||
|
int postType = SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT;
|
||||||
|
String name = multiReddits.get(position - tabCount - favoriteMultiReddits.size()).getPath();
|
||||||
|
return generatePostFragment(postType, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (showFavoriteSubscribedSubreddits) {
|
if (showFavoriteSubscribedSubreddits) {
|
||||||
if (position >= tabCount && position - tabCount < favoriteSubscribedSubreddits.size()) {
|
if (position >= tabCount && position - tabCount - favoriteMultiReddits.size()
|
||||||
|
- multiReddits.size() < favoriteSubscribedSubreddits.size()) {
|
||||||
int postType = SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT;
|
int postType = SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT;
|
||||||
String name = favoriteSubscribedSubreddits.get(position - tabCount).getName();
|
String name = favoriteSubscribedSubreddits.get(position - tabCount
|
||||||
|
- favoriteMultiReddits.size()
|
||||||
|
- multiReddits.size()).getName();
|
||||||
return generatePostFragment(postType, name);
|
return generatePostFragment(postType, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (showSubscribedSubreddits) {
|
if (showSubscribedSubreddits) {
|
||||||
if (position >= tabCount && position - tabCount - favoriteSubscribedSubreddits.size() < subscribedSubreddits.size()) {
|
if (position >= tabCount && position - tabCount - favoriteMultiReddits.size()
|
||||||
|
- multiReddits.size() - favoriteSubscribedSubreddits.size() < subscribedSubreddits.size()) {
|
||||||
int postType = SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT;
|
int postType = SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT;
|
||||||
String name = subscribedSubreddits.get(position - tabCount - favoriteSubscribedSubreddits.size()).getName();
|
String name = subscribedSubreddits.get(position - tabCount - favoriteMultiReddits.size()
|
||||||
|
- multiReddits.size() - favoriteSubscribedSubreddits.size()).getName();
|
||||||
return generatePostFragment(postType, name);
|
return generatePostFragment(postType, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1483,6 +1554,16 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setFavoriteMultiReddits(List<MultiReddit> favoriteMultiReddits) {
|
||||||
|
this.favoriteMultiReddits = favoriteMultiReddits;
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMultiReddits(List<MultiReddit> multiReddits) {
|
||||||
|
this.multiReddits = multiReddits;
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
public void setFavoriteSubscribedSubreddits(List<SubscribedSubredditData> favoriteSubscribedSubreddits) {
|
public void setFavoriteSubscribedSubreddits(List<SubscribedSubredditData> favoriteSubscribedSubreddits) {
|
||||||
this.favoriteSubscribedSubreddits = favoriteSubscribedSubreddits;
|
this.favoriteSubscribedSubreddits = favoriteSubscribedSubreddits;
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
@ -1583,7 +1664,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
if (mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
return tabCount + favoriteSubscribedSubreddits.size() + subscribedSubreddits.size();
|
return tabCount + favoriteMultiReddits.size() + multiReddits.size() +
|
||||||
|
favoriteSubscribedSubreddits.size() + subscribedSubreddits.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
Loading…
Reference in New Issue
Block a user