summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2022-07-02 17:25:06 +0200
committerThomas <tschneider.ac@gmail.com>2022-07-02 17:25:06 +0200
commitb7265d6de3a91be9fd2c7edc06d2dc07fbb22b7e (patch)
tree4b77ffa6d8f16938ef8a6001a4f07e8b83bbcbaa
parent13575706de25a4bd269e2c1ed37a86c96235e47e (diff)
Some fixes
-rw-r--r--app/src/main/java/app/fedilab/android/BaseMainActivity.java5
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java1
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginRegisterMastodon.java4
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentNotificationContainer.java88
-rw-r--r--app/src/main/java/app/fedilab/android/ui/pageadapter/FedilabNotificationPageAdapter.java35
-rw-r--r--app/src/main/res/layout/activity_main.xml17
-rw-r--r--app/src/main/res/layout/fragment_notification_container.xml4
7 files changed, 64 insertions, 90 deletions
diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
index c69760d7a..160507fe4 100644
--- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java
+++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
@@ -121,7 +121,6 @@ import app.fedilab.android.helper.PinnedTimelineHelper;
import app.fedilab.android.helper.PushHelper;
import app.fedilab.android.helper.ThemeHelper;
import app.fedilab.android.ui.fragment.timeline.FragmentMastodonConversation;
-import app.fedilab.android.ui.fragment.timeline.FragmentMastodonNotification;
import app.fedilab.android.ui.fragment.timeline.FragmentMastodonTimeline;
import app.fedilab.android.ui.fragment.timeline.FragmentNotificationContainer;
import app.fedilab.android.viewmodel.mastodon.AccountsVM;
@@ -883,13 +882,11 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
* Allow to scroll to top for bottom navigation items
*/
private void scrollToTop() {
+
Fragment fragment = getSupportFragmentManager().findFragmentByTag("f" + binding.viewPager.getCurrentItem());
if (fragment instanceof FragmentMastodonTimeline) {
FragmentMastodonTimeline fragmentMastodonTimeline = ((FragmentMastodonTimeline) fragment);
fragmentMastodonTimeline.scrollToTop();
- } else if (fragment instanceof FragmentMastodonNotification) {
- FragmentMastodonNotification fragmentMastodonNotification = ((FragmentMastodonNotification) fragment);
- fragmentMastodonNotification.scrollToTop();
} else if (fragment instanceof FragmentMastodonConversation) {
FragmentMastodonConversation fragmentMastodonConversation = ((FragmentMastodonConversation) fragment);
fragmentMastodonConversation.scrollToTop();
diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java b/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java
index ec770860b..0dc503d1d 100644
--- a/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java
+++ b/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java
@@ -252,7 +252,6 @@ public class FragmentLoginMain extends Fragment {
}
String scopes = ((LoginActivity) requireActivity()).requestedAdmin() ? Helper.OAUTH_SCOPES_ADMIN : Helper.OAUTH_SCOPES;
AppsVM appsVM = new ViewModelProvider(requireActivity()).get(AppsVM.class);
- String finalInstance = instance;
appsVM.createApp(currentInstanceLogin, getString(R.string.app_name),
Helper.REDIRECT_CONTENT_WEB,
scopes,
diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginRegisterMastodon.java b/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginRegisterMastodon.java
index 8a649fbc1..d220bb839 100644
--- a/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginRegisterMastodon.java
+++ b/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginRegisterMastodon.java
@@ -70,8 +70,8 @@ public class FragmentLoginRegisterMastodon extends Fragment {
} else {
binding.loginInstance.setOnFocusChangeListener((v, hasFocus) -> {
if (!hasFocus) {
- nodeInfoVM.getNodeInfo(binding.loginInstance.getText().toString()).observe(requireActivity(), nodeInfo -> {
- if (nodeInfo != null && (nodeInfo.software.name.trim().toLowerCase().compareTo("mastodon") == 0 || nodeInfo.software.name.trim().toLowerCase().compareTo("pleroma") == 0)) {
+ nodeInfoVM.getNodeInfo(binding.loginInstance.getText().toString().trim()).observe(requireActivity(), nodeInfo -> {
+ if (nodeInfo != null) {
String tos = getString(R.string.tos);
String serverrules = getString(R.string.server_rules);
String content_agreement = getString(R.string.agreement_check,
diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentNotificationContainer.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentNotificationContainer.java
index f7570113c..5cc13408d 100644
--- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentNotificationContainer.java
+++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentNotificationContainer.java
@@ -33,7 +33,6 @@ import androidx.preference.PreferenceManager;
import com.google.android.material.button.MaterialButton;
import com.google.android.material.tabs.TabLayout;
-import com.google.android.material.tabs.TabLayoutMediator;
import java.util.ArrayList;
import java.util.List;
@@ -61,20 +60,20 @@ public class FragmentNotificationContainer extends Fragment {
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity());
boolean display_all_notification = sharedpreferences.getBoolean(getString(R.string.SET_DISPLAY_ALL_NOTIFICATIONS_TYPE) + BaseMainActivity.currentUserID + BaseMainActivity.currentInstance, false);
if (!display_all_notification) {
- binding.tabLayout.addTab(binding.tabLayout.newTab());
- binding.tabLayout.addTab(binding.tabLayout.newTab());
+ binding.tabLayout.addTab(binding.tabLayout.newTab().setText(getString(R.string.all)));
+ binding.tabLayout.addTab(binding.tabLayout.newTab().setText(getString(R.string.mention)));
binding.tabLayout.setTabMode(TabLayout.MODE_FIXED);
- binding.viewpager.setAdapter(new FedilabNotificationPageAdapter(requireActivity(), false));
+ binding.viewpagerNotificationContainer.setAdapter(new FedilabNotificationPageAdapter(getChildFragmentManager(), false));
} else {
binding.tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
- binding.tabLayout.addTab(binding.tabLayout.newTab());
- binding.tabLayout.addTab(binding.tabLayout.newTab());
- binding.tabLayout.addTab(binding.tabLayout.newTab());
- binding.tabLayout.addTab(binding.tabLayout.newTab());
- binding.tabLayout.addTab(binding.tabLayout.newTab());
- binding.tabLayout.addTab(binding.tabLayout.newTab());
- binding.tabLayout.addTab(binding.tabLayout.newTab());
- binding.viewpager.setAdapter(new FedilabNotificationPageAdapter(requireActivity(), true));
+ binding.tabLayout.addTab(binding.tabLayout.newTab().setText(getString(R.string.all)));
+ binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_reply_24));
+ binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_star_24));
+ binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_repeat));
+ binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_poll_24));
+ binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_home_24));
+ binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_person_add_alt_1_24));
+ binding.viewpagerNotificationContainer.setAdapter(new FedilabNotificationPageAdapter(getChildFragmentManager(), true));
}
AtomicBoolean changes = new AtomicBoolean(false);
binding.settings.setOnClickListener(v -> {
@@ -213,76 +212,41 @@ public class FragmentNotificationContainer extends Fragment {
binding.tabLayout.setTabTextColors(ThemeHelper.getAttColor(requireActivity(), R.attr.mTextColor), ContextCompat.getColor(requireActivity(), R.color.cyanea_accent_dark_reference));
binding.tabLayout.setTabIconTint(ThemeHelper.getColorStateList(requireActivity()));
+ binding.viewpagerNotificationContainer.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(binding.tabLayout));
binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
- binding.viewpager.setCurrentItem(tab.getPosition());
+ binding.viewpagerNotificationContainer.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
-
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
- Fragment fragment = getParentFragmentManager().findFragmentByTag("f" + binding.viewpager.getCurrentItem());
- if (fragment instanceof FragmentMastodonNotification) {
- FragmentMastodonNotification fragmentMastodonNotification = ((FragmentMastodonNotification) fragment);
- fragmentMastodonNotification.scrollToTop();
+ Fragment fragment;
+ if (binding.viewpagerNotificationContainer.getAdapter() != null) {
+ fragment = (Fragment) binding.viewpagerNotificationContainer.getAdapter().instantiateItem(binding.viewpagerNotificationContainer, tab.getPosition());
+ if (fragment instanceof FragmentMastodonNotification) {
+ FragmentMastodonNotification fragmentMastodonNotification = ((FragmentMastodonNotification) fragment);
+ fragmentMastodonNotification.scrollToTop();
+ }
}
}
});
- new TabLayoutMediator(binding.tabLayout, binding.viewpager,
- (tab, position) -> {
- binding.viewpager.setCurrentItem(tab.getPosition(), true);
- if (!display_all_notification) {
- switch (position) {
- case 0:
- tab.setText(getString(R.string.all));
- break;
- case 1:
- tab.setText(getString(R.string.mention));
- break;
- }
- } else {
- switch (position) {
- case 0:
- tab.setText(getString(R.string.all));
- break;
- case 1:
- tab.setIcon(R.drawable.ic_baseline_reply_24);
- break;
- case 2:
- tab.setIcon(R.drawable.ic_baseline_star_24);
- break;
- case 3:
- tab.setIcon(R.drawable.ic_repeat);
- break;
- case 4:
- tab.setIcon(R.drawable.ic_baseline_poll_24);
- break;
- case 5:
- tab.setIcon(R.drawable.ic_baseline_home_24);
- break;
- case 6:
- tab.setIcon(R.drawable.ic_baseline_person_add_alt_1_24);
- break;
- }
- }
-
- }
- ).attach();
-
return binding.getRoot();
}
public void scrollToTop() {
if (binding != null) {
- Fragment fragment = getParentFragmentManager().findFragmentByTag("f" + binding.viewpager.getCurrentItem());
- if (fragment instanceof FragmentMastodonNotification) {
- ((FragmentMastodonNotification) fragment).scrollToTop();
+ FedilabNotificationPageAdapter fedilabNotificationPageAdapter = ((FedilabNotificationPageAdapter) binding.viewpagerNotificationContainer.getAdapter());
+ if (fedilabNotificationPageAdapter != null) {
+ FragmentMastodonNotification fragmentMastodonNotification = (FragmentMastodonNotification) fedilabNotificationPageAdapter.getCurrentFragment();
+ if (fragmentMastodonNotification != null) {
+ fragmentMastodonNotification.scrollToTop();
+ }
}
}
}
diff --git a/app/src/main/java/app/fedilab/android/ui/pageadapter/FedilabNotificationPageAdapter.java b/app/src/main/java/app/fedilab/android/ui/pageadapter/FedilabNotificationPageAdapter.java
index 93cee1491..eaff1b3b8 100644
--- a/app/src/main/java/app/fedilab/android/ui/pageadapter/FedilabNotificationPageAdapter.java
+++ b/app/src/main/java/app/fedilab/android/ui/pageadapter/FedilabNotificationPageAdapter.java
@@ -14,35 +14,41 @@ package app.fedilab.android.ui.pageadapter;
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
* see <http://www.gnu.org/licenses>. */
-
import android.os.Bundle;
+import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
-import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentStatePagerAdapter;
import app.fedilab.android.helper.Helper;
import app.fedilab.android.ui.fragment.timeline.FragmentMastodonNotification;
-public class FedilabNotificationPageAdapter extends FragmentStateAdapter {
-
+public class FedilabNotificationPageAdapter extends FragmentStatePagerAdapter {
private final boolean extended;
+ private Fragment mCurrentFragment;
-
- public FedilabNotificationPageAdapter(FragmentActivity fa, boolean extended) {
- super(fa);
+ public FedilabNotificationPageAdapter(FragmentManager fm, boolean extended) {
+ super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
this.extended = extended;
}
+ public Fragment getCurrentFragment() {
+ return mCurrentFragment;
+ }
+
@Override
- public int getItemCount() {
- return extended ? 7 : 2;
+ public void setPrimaryItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
+ if (getCurrentFragment() != object) {
+ mCurrentFragment = ((Fragment) object);
+ }
+ super.setPrimaryItem(container, position, object);
}
@NonNull
@Override
- public Fragment createFragment(int position) {
+ public Fragment getItem(int position) {
Bundle bundle = new Bundle();
FragmentMastodonNotification fragmentMastodonNotification = new FragmentMastodonNotification();
if (!extended) {
@@ -83,5 +89,8 @@ public class FedilabNotificationPageAdapter extends FragmentStateAdapter {
return fragmentMastodonNotification;
}
-
-}
+ @Override
+ public int getCount() {
+ return extended ? 7 : 2;
+ }
+} \ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index ca2d038b2..ae6da0b80 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -75,14 +75,19 @@
</com.google.android.material.appbar.AppBarLayout>
- <androidx.viewpager2.widget.ViewPager2
- android:id="@+id/view_pager"
- android:name="androidx.navigation.fragment.NavHostFragment"
+ <app.fedilab.android.helper.NestedScrollableHost
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginBottom="?attr/actionBarSize"
- app:defaultNavHost="true"
- app:layout_behavior="@string/appbar_scrolling_view_behavior" />
+ app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+ <androidx.viewpager2.widget.ViewPager2
+ android:id="@+id/view_pager"
+ android:name="androidx.navigation.fragment.NavHostFragment"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginBottom="?attr/actionBarSize"
+ app:defaultNavHost="true" />
+ </app.fedilab.android.helper.NestedScrollableHost>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_notification_container.xml b/app/src/main/res/layout/fragment_notification_container.xml
index ffa7a37ce..d6a85ace3 100644
--- a/app/src/main/res/layout/fragment_notification_container.xml
+++ b/app/src/main/res/layout/fragment_notification_container.xml
@@ -47,8 +47,8 @@
</androidx.appcompat.widget.LinearLayoutCompat>
- <androidx.viewpager2.widget.ViewPager2
- android:id="@+id/viewpager"
+ <androidx.viewpager.widget.ViewPager
+ android:id="@+id/viewpagerNotificationContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout> \ No newline at end of file