diff options
3 files changed, 56 insertions, 75 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/InboxActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/InboxActivity.java index ffc74caa..3904a3f3 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/InboxActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/InboxActivity.java @@ -15,7 +15,6 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.widget.Toolbar; import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; @@ -23,11 +22,7 @@ import androidx.fragment.app.FragmentManager; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.widget.ViewPager2; -import com.google.android.material.appbar.AppBarLayout; -import com.google.android.material.appbar.CollapsingToolbarLayout; import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import com.google.android.material.floatingactionbutton.FloatingActionButton; -import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.textfield.TextInputEditText; @@ -39,7 +34,6 @@ import java.util.concurrent.Executor; import javax.inject.Inject; import javax.inject.Named; -import butterknife.BindView; import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.ActivityToolbarInterface; import ml.docilealligator.infinityforreddit.Infinity; @@ -218,7 +212,7 @@ public class InboxActivity extends BaseActivity implements ActivityToolbarInterf applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutInboxActivity, binding.collapsingToolbarLayoutInboxActivity, binding.toolbarInboxActivity); applyTabLayoutTheme(binding.tabLayoutInboxActivity); - applyFABTheme(fab); + applyFABTheme(binding.fabInboxActivity); } private void getCurrentAccountAndFetchMessage(Bundle savedInstanceState) { @@ -400,10 +394,10 @@ public class InboxActivity extends BaseActivity implements ActivityToolbarInterf @Nullable private Fragment getCurrentFragment() { - if (viewPager2 == null || fragmentManager == null) { + if (fragmentManager == null) { return null; } - return fragmentManager.findFragmentByTag("f" + viewPager2.getCurrentItem()); + return fragmentManager.findFragmentByTag("f" + binding.viewPagerInboxActivity.getCurrentItem()); } void refresh() { @@ -428,10 +422,10 @@ public class InboxActivity extends BaseActivity implements ActivityToolbarInterf } Message getPrivateMessage(int index) { - if (viewPager2 == null || fragmentManager == null) { + if (fragmentManager == null) { return null; } - Fragment fragment = fragmentManager.findFragmentByTag("f" + viewPager2.getCurrentItem()); + Fragment fragment = fragmentManager.findFragmentByTag("f" + binding.viewPagerInboxActivity.getCurrentItem()); if (fragment instanceof InboxFragment) { return ((InboxFragment) fragment).getMessageByIndex(index); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java index 6bebaf35..4a36cb50 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java @@ -98,6 +98,7 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.SortTypeBottomS import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed; import ml.docilealligator.infinityforreddit.customviews.NavigationWrapper; +import ml.docilealligator.infinityforreddit.databinding.ActivityMainBinding; import ml.docilealligator.infinityforreddit.events.ChangeDisableSwipingBetweenTabsEvent; import ml.docilealligator.infinityforreddit.events.ChangeHideFabInPostFeedEvent; import ml.docilealligator.infinityforreddit.events.ChangeHideKarmaEvent; @@ -148,24 +149,6 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb private static final int LOGIN_ACTIVITY_REQUEST_CODE = 0; - @BindView(R.id.drawer_layout) - DrawerLayout drawer; - @BindView(R.id.navigation_view_main_activity) - NavigationView navigationView; - @BindView(R.id.coordinator_layout_main_activity) - CoordinatorLayout coordinatorLayout; - @BindView(R.id.appbar_layout_main_activity) - AppBarLayout appBarLayout; - @BindView(R.id.view_pager_main_activity) - ViewPager2 viewPager2; - @BindView(R.id.collapsing_toolbar_layout_main_activity) - CollapsingToolbarLayout collapsingToolbarLayout; - @BindView(R.id.toolbar) - MaterialToolbar toolbar; - @BindView(R.id.nav_drawer_recycler_view_main_activity) - RecyclerView navDrawerRecyclerView; - @BindView(R.id.tab_layout_main_activity) - TabLayout tabLayout; MultiRedditViewModel multiRedditViewModel; SubscribedSubredditViewModel subscribedSubredditViewModel; AccountViewModel accountViewModel; @@ -229,6 +212,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb private boolean mShowSubscribedSubreddits; private int fabOption; private int inboxCount; + private ActivityMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { @@ -242,7 +226,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); + binding = ActivityMainBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); ButterKnife.bind(this); @@ -263,18 +248,18 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb Window window = getWindow(); if (isChangeStatusBarIconColor()) { - addOnOffsetChangedListener(appBarLayout); + addOnOffsetChangedListener(binding.includedAppBar.appbarLayoutMainActivity); } if (isImmersiveInterface()) { - drawer.setStatusBarBackgroundColor(Color.TRANSPARENT); + binding.drawerLayout.setStatusBarBackgroundColor(Color.TRANSPARENT); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - drawer.setFitsSystemWindows(false); + binding.drawerLayout.setFitsSystemWindows(false); window.setDecorFitsSystemWindows(false); } else { window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } - adjustToolbar(toolbar); + adjustToolbar(binding.includedAppBar.toolbar); int navBarHeight = getNavBarHeight(); if (navBarHeight > 0) { @@ -287,21 +272,21 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb navigationWrapper.linearLayoutBottomAppBar.setPadding(navigationWrapper.linearLayoutBottomAppBar.getPaddingLeft(), navigationWrapper.linearLayoutBottomAppBar.getPaddingTop(), navigationWrapper.linearLayoutBottomAppBar.getPaddingRight(), navBarHeight); } - navDrawerRecyclerView.setPadding(0, 0, 0, navBarHeight); + binding.navDrawerRecyclerViewMainActivity.setPadding(0, 0, 0, navBarHeight); } } else { - drawer.setStatusBarBackgroundColor(mCustomThemeWrapper.getColorPrimaryDark()); + binding.drawerLayout.setStatusBarBackgroundColor(mCustomThemeWrapper.getColorPrimaryDark()); } } - setSupportActionBar(toolbar); - setToolbarGoToTop(toolbar); + setSupportActionBar(binding.includedAppBar.toolbar); + setToolbarGoToTop(binding.includedAppBar.toolbar); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( - this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); + this, binding.drawerLayout, binding.includedAppBar.toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); toggle.getDrawerArrowDrawable().setColor(mCustomThemeWrapper.getToolbarPrimaryTextAndIconColor()); - drawer.addDrawerListener(toggle); - drawer.addDrawerListener(new DrawerLayout.SimpleDrawerListener() { + binding.drawerLayout.addDrawerListener(toggle); + binding.drawerLayout.addDrawerListener(new DrawerLayout.SimpleDrawerListener() { @Override public void onDrawerClosed(View drawerView) { if (adapter != null) { @@ -311,7 +296,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb }); toggle.syncState(); - mViewPager2 = viewPager2; + mViewPager2 = binding.includedAppBar.viewPagerMainActivity; mBackButtonAction = Integer.parseInt(mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_BACK_BUTTON_ACTION, "0")); mLockBottomAppBar = mSharedPreferences.getBoolean(SharedPreferencesUtils.LOCK_BOTTOM_APP_BAR, false); @@ -358,11 +343,11 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb @Override protected void applyCustomTheme() { int backgroundColor = mCustomThemeWrapper.getBackgroundColor(); - drawer.setBackgroundColor(backgroundColor); + binding.drawerLayout.setBackgroundColor(backgroundColor); navigationWrapper.applyCustomTheme(mCustomThemeWrapper.getBottomAppBarIconColor(), mCustomThemeWrapper.getBottomAppBarBackgroundColor()); - navigationView.setBackgroundColor(backgroundColor); - applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, collapsingToolbarLayout, toolbar); - applyTabLayoutTheme(tabLayout); + binding.navigationViewMainActivity.setBackgroundColor(backgroundColor); + applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.includedAppBar.appbarLayoutMainActivity, binding.includedAppBar.collapsingToolbarLayoutMainActivity, binding.includedAppBar.toolbar); + applyTabLayoutTheme(binding.includedAppBar.tabLayoutMainActivity); applyFABTheme(navigationWrapper.floatingActionButton); } @@ -844,7 +829,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb if (intent != null) { startActivity(intent); } - drawer.closeDrawers(); + binding.drawerLayout.closeDrawers(); } @Override @@ -865,8 +850,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb } }); adapter.setInboxCount(inboxCount); - navDrawerRecyclerView.setLayoutManager(new LinearLayoutManagerBugFixed(this)); - navDrawerRecyclerView.setAdapter(adapter.getConcatAdapter()); + binding.navDrawerRecyclerViewMainActivity.setLayoutManager(new LinearLayoutManagerBugFixed(this)); + binding.navDrawerRecyclerViewMainActivity.setAdapter(adapter.getConcatAdapter()); int tabCount = mMainActivityTabsSharedPreferences.getInt((accountName.equals(Account.ANONYMOUS_ACCOUNT) ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_COUNT, 3); mShowFavoriteMultiReddits = mMainActivityTabsSharedPreferences.getBoolean((accountName.equals(Account.ANONYMOUS_ACCOUNT) ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_FAVORITE_MULTIREDDITS, false); @@ -875,16 +860,16 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb mShowSubscribedSubreddits = mMainActivityTabsSharedPreferences.getBoolean((accountName.equals(Account.ANONYMOUS_ACCOUNT) ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_SUBSCRIBED_SUBREDDITS, false); sectionsPagerAdapter = new SectionsPagerAdapter(this, tabCount, mShowFavoriteMultiReddits, mShowMultiReddits, mShowFavoriteSubscribedSubreddits, mShowSubscribedSubreddits); - viewPager2.setAdapter(sectionsPagerAdapter); - viewPager2.setOffscreenPageLimit(ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT); - viewPager2.setUserInputEnabled(!mDisableSwipingBetweenTabs); + binding.includedAppBar.viewPagerMainActivity.setAdapter(sectionsPagerAdapter); + binding.includedAppBar.viewPagerMainActivity.setOffscreenPageLimit(ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT); + binding.includedAppBar.viewPagerMainActivity.setUserInputEnabled(!mDisableSwipingBetweenTabs); if (mMainActivityTabsSharedPreferences.getBoolean((accountName.equals(Account.ANONYMOUS_ACCOUNT) ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_TAB_NAMES, true)) { if (mShowFavoriteMultiReddits || mShowMultiReddits || mShowFavoriteSubscribedSubreddits || mShowSubscribedSubreddits) { - tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); + binding.includedAppBar.tabLayoutMainActivity.setTabMode(TabLayout.MODE_SCROLLABLE); } else { - tabLayout.setTabMode(TabLayout.MODE_FIXED); + binding.includedAppBar.tabLayoutMainActivity.setTabMode(TabLayout.MODE_FIXED); } - new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> { + new TabLayoutMediator(binding.includedAppBar.tabLayoutMainActivity, binding.includedAppBar.viewPagerMainActivity, (tab, position) -> { switch (position) { case 0: Utils.setTitleWithCustomFontToTab(typeface, tab, mMainActivityTabsSharedPreferences.getString((accountName.equals(Account.ANONYMOUS_ACCOUNT) ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_1_TITLE, getString(R.string.home))); @@ -920,10 +905,10 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb } }).attach(); } else { - tabLayout.setVisibility(View.GONE); + binding.includedAppBar.tabLayoutMainActivity.setVisibility(View.GONE); } - viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + binding.includedAppBar.viewPagerMainActivity.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageSelected(int position) { if (showBottomAppBar) { @@ -936,7 +921,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb } }); - fixViewPager2Sensitivity(viewPager2); + fixViewPager2Sensitivity(binding.includedAppBar.viewPagerMainActivity); loadSubscriptions(); @@ -1123,8 +1108,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb @Override public void onBackPressed() { - if (drawer.isOpen()) { - drawer.close(); + if (binding.drawerLayout.isOpen()) { + binding.drawerLayout.close(); } else { if (mBackButtonAction == SharedPreferencesUtils.MAIN_PAGE_BACK_BUTTON_ACTION_CONFIRM_EXIT) { new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme) @@ -1134,7 +1119,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb .setNegativeButton(R.string.no, null) .show(); } else if (mBackButtonAction == SharedPreferencesUtils.MAIN_PAGE_BACK_BUTTON_ACTION_OPEN_NAVIGATION_DRAWER) { - drawer.open(); + binding.drawerLayout.open(); } else { super.onBackPressed(); } @@ -1264,7 +1249,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb @Subscribe public void onChangeDisableSwipingBetweenTabsEvent(ChangeDisableSwipingBetweenTabsEvent changeDisableSwipingBetweenTabsEvent) { mDisableSwipingBetweenTabs = changeDisableSwipingBetweenTabsEvent.disableSwipingBetweenTabs; - viewPager2.setUserInputEnabled(!mDisableSwipingBetweenTabs); + binding.includedAppBar.viewPagerMainActivity.setUserInputEnabled(!mDisableSwipingBetweenTabs); } @Subscribe @@ -1279,18 +1264,18 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb if (adapter != null) { adapter.setShowAvatarOnTheRightInTheNavigationDrawer(event.showAvatarOnTheRightInTheNavigationDrawer); int previousPosition = -1; - if (navDrawerRecyclerView.getLayoutManager() != null) { - previousPosition = ((LinearLayoutManagerBugFixed) navDrawerRecyclerView.getLayoutManager()).findFirstVisibleItemPosition(); + if (binding.navDrawerRecyclerViewMainActivity.getLayoutManager() != null) { + previousPosition = ((LinearLayoutManagerBugFixed) binding.navDrawerRecyclerViewMainActivity.getLayoutManager()).findFirstVisibleItemPosition(); } - RecyclerView.LayoutManager layoutManager = navDrawerRecyclerView.getLayoutManager(); - navDrawerRecyclerView.setAdapter(null); - navDrawerRecyclerView.setLayoutManager(null); - navDrawerRecyclerView.setAdapter(adapter.getConcatAdapter()); - navDrawerRecyclerView.setLayoutManager(layoutManager); + RecyclerView.LayoutManager layoutManager = binding.navDrawerRecyclerViewMainActivity.getLayoutManager(); + binding.navDrawerRecyclerViewMainActivity.setAdapter(null); + binding.navDrawerRecyclerViewMainActivity.setLayoutManager(null); + binding.navDrawerRecyclerViewMainActivity.setAdapter(adapter.getConcatAdapter()); + binding.navDrawerRecyclerViewMainActivity.setLayoutManager(layoutManager); if (previousPosition > 0) { - navDrawerRecyclerView.scrollToPosition(previousPosition); + binding.navDrawerRecyclerViewMainActivity.scrollToPosition(previousPosition); } } } @@ -1386,7 +1371,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb } private void goToSubreddit() { - View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, coordinatorLayout, false); + View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, + binding.includedAppBar.coordinatorLayoutMainActivity, false); TextInputEditText thingEditText = rootView.findViewById(R.id.text_input_edit_text_go_to_thing_edit_text); RecyclerView recyclerView = rootView.findViewById(R.id.recycler_view_go_to_thing_edit_text); SubredditAutocompleteRecyclerViewAdapter adapter = new SubredditAutocompleteRecyclerViewAdapter( @@ -1475,7 +1461,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb } private void goToUser() { - View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, coordinatorLayout, false); + View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, binding.includedAppBar.coordinatorLayoutMainActivity, false); TextInputEditText thingEditText = rootView.findViewById(R.id.text_input_edit_text_go_to_thing_edit_text); thingEditText.requestFocus(); Utils.showKeyboard(this, new Handler(), thingEditText); @@ -1711,10 +1697,10 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb @Nullable private PostFragment getCurrentFragment() { - if (viewPager2 == null || fragmentManager == null) { + if (fragmentManager == null) { return null; } - Fragment fragment = fragmentManager.findFragmentByTag("f" + viewPager2.getCurrentItem()); + Fragment fragment = fragmentManager.findFragmentByTag("f" + binding.includedAppBar.viewPagerMainActivity.getCurrentItem()); if (fragment instanceof PostFragment) { return (PostFragment) fragment; } @@ -1779,7 +1765,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb PostFragment currentFragment = getCurrentFragment(); if (currentFragment != null) { SortType sortType = currentFragment.getSortType(); - Utils.displaySortTypeInToolbar(sortType, toolbar); + Utils.displaySortTypeInToolbar(sortType, binding.includedAppBar.toolbar); } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0165cd9f..97b9b892 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -8,6 +8,7 @@ tools:openDrawer="start"> <include + android:id="@+id/included_app_bar" layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> |