Commit b7265d6d authored by Thomas's avatar Thomas
Browse files

Some fixes

parent 13575706
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -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();
+0 −1
Original line number Diff line number Diff line
@@ -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,
+2 −2
Original line number Diff line number Diff line
@@ -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,
+26 −62
Original line number Diff line number Diff line
@@ -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());
                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();
                }
            }
        }
    }
+22 −13
Original line number Diff line number Diff line
@@ -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
Loading