GitNex-Android-App/app/src/main/java/org/mian/gitnex/fragments/AccountSettingsFragment.java

140 lines
3.5 KiB
Java

package org.mian.gitnex.fragments;
import android.content.Context;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.BaseActivity;
import org.mian.gitnex.activities.MainActivity;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.ViewPager2Transformers;
import org.mian.gitnex.helpers.contexts.AccountContext;
/**
* @author M M Arif
*/
public class AccountSettingsFragment extends Fragment {
public ViewPager2 viewPager;
private Context ctx;
private View view;
private Typeface myTypeface;
@Nullable @Override
public View onCreateView(
@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
ctx = getContext();
view = inflater.inflate(R.layout.fragment_account_settings, container, false);
setHasOptionsMenu(false);
((MainActivity) requireActivity())
.setActionBarTitle(getResources().getString(R.string.navAccount));
myTypeface = AppUtil.getTypeface(ctx);
AccountContext account = ((BaseActivity) requireActivity()).getAccount();
if (account.getUserInfo() != null) {
viewData();
} else {
((MainActivity) requireActivity())
.setProfileInitListener(
(text) -> {
viewData();
});
}
return view;
}
public void viewData() {
TabLayout tabLayout = view.findViewById(R.id.tabs);
if (viewPager == null) {
viewPager = view.findViewById(R.id.accountSettingsContainer);
viewPager.setOffscreenPageLimit(1);
viewPager.setAdapter(new ViewPagerAdapter(this));
ViewPager2Transformers.returnSelectedTransformer(
viewPager,
Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_TABS_ANIMATION_KEY)));
String[] tabTitles = {
ctx.getResources().getString(R.string.accountEmails),
ctx.getResources().getString(R.string.sshKeys)
};
new TabLayoutMediator(
tabLayout,
viewPager,
(tab, position) -> tab.setText(tabTitles[position]))
.attach();
ViewGroup viewGroup = (ViewGroup) tabLayout.getChildAt(0);
int tabsCount_ = viewGroup.getChildCount();
for (int j = 0; j < tabsCount_; j++) {
ViewGroup vgTab = (ViewGroup) viewGroup.getChildAt(j);
int tabChildCount = vgTab.getChildCount();
for (int i = 0; i < tabChildCount; i++) {
View tabViewChild = vgTab.getChildAt(i);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTypeface(myTypeface);
}
}
}
}
}
public static class ViewPagerAdapter extends FragmentStateAdapter {
public ViewPagerAdapter(@NonNull Fragment fa) {
super(fa);
}
@NonNull @Override
public Fragment createFragment(int position) {
Fragment fragment = null;
switch (position) {
case 0: // Emails
return new AccountSettingsEmailsFragment();
case 1: // SSH keys
return new SSHKeysFragment();
}
assert false;
return fragment;
}
@Override
public int getItemCount() {
return 2;
}
}
}