mirror of
				https://codeberg.org/tom79/Fedilab.git
				synced 2025-10-20 11:20:16 +03:00 
			
		
		
		
	Some fixes
This commit is contained in:
		
							parent
							
								
									13575706de
								
							
						
					
					
						commit
						b7265d6de3
					
				
					 7 changed files with 64 additions and 90 deletions
				
			
		|  | @ -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(); | ||||
|  |  | |||
|  | @ -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, | ||||
|  |  | |||
|  | @ -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, | ||||
|  |  | |||
|  | @ -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(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  |  | |||
|  | @ -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; | ||||
|     } | ||||
| } | ||||
|  | @ -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" | ||||
|  |  | |||
|  | @ -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> | ||||
		Loading…
	
		Reference in a new issue