GitNex/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java
M M Arif 8c1b07c2c8 Timeline issue/pr (#1201)
Closes #953

Co-authored-by: M M Arif <mmarif@swatian.com>
Co-authored-by: 6543 <6543@obermui.de>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1201
Reviewed-by: qwerty287 <qwerty287@noreply.codeberg.org>
2022-09-14 20:40:44 +02:00

134 lines
5.2 KiB
Java

package org.mian.gitnex.fragments;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.BaseActivity;
import org.mian.gitnex.activities.MainActivity;
import org.mian.gitnex.activities.SettingsAppearanceActivity;
import org.mian.gitnex.activities.SettingsDraftsActivity;
import org.mian.gitnex.activities.SettingsGeneralActivity;
import org.mian.gitnex.activities.SettingsNotificationsActivity;
import org.mian.gitnex.activities.SettingsReportsActivity;
import org.mian.gitnex.activities.SettingsSecurityActivity;
import org.mian.gitnex.activities.SettingsTranslationActivity;
import org.mian.gitnex.databinding.CustomAboutDialogBinding;
import org.mian.gitnex.databinding.FragmentSettingsBinding;
import org.mian.gitnex.helpers.AppUtil;
/**
* @author M M Arif
*/
public class SettingsFragment extends Fragment {
public static boolean refreshParent = false;
private Context ctx;
private MaterialAlertDialogBuilder materialAlertDialogBuilder;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
FragmentSettingsBinding fragmentSettingsBinding = FragmentSettingsBinding.inflate(inflater, container, false);
ctx = getContext();
materialAlertDialogBuilder = new MaterialAlertDialogBuilder(ctx, R.style.ThemeOverlay_Material3_Dialog_Alert);
((MainActivity) requireActivity()).setActionBarTitle(getResources().getString(R.string.navSettings));
if(((BaseActivity) requireActivity()).getAccount().requiresVersion("1.12.3")) {
fragmentSettingsBinding.notificationsFrame.setVisibility(View.VISIBLE);
}
fragmentSettingsBinding.generalFrame.setOnClickListener(generalFrameCall -> startActivity(new Intent(ctx, SettingsGeneralActivity.class)));
fragmentSettingsBinding.appearanceFrame.setOnClickListener(v1 -> startActivity(new Intent(ctx, SettingsAppearanceActivity.class)));
fragmentSettingsBinding.draftsFrame.setOnClickListener(v1 -> startActivity(new Intent(ctx, SettingsDraftsActivity.class)));
fragmentSettingsBinding.securityFrame.setOnClickListener(v1 -> startActivity(new Intent(ctx, SettingsSecurityActivity.class)));
fragmentSettingsBinding.notificationsFrame.setOnClickListener(v1 -> startActivity(new Intent(ctx, SettingsNotificationsActivity.class)));
fragmentSettingsBinding.languagesFrame.setOnClickListener(v1 -> startActivity(new Intent(ctx, SettingsTranslationActivity.class)));
fragmentSettingsBinding.reportsFrame.setOnClickListener(v1 -> startActivity(new Intent(ctx, SettingsReportsActivity.class)));
fragmentSettingsBinding.rateAppFrame.setOnClickListener(rateApp -> rateThisApp());
fragmentSettingsBinding.aboutAppFrame.setOnClickListener(aboutApp -> showAboutAppDialog());
return fragmentSettingsBinding.getRoot();
}
public void showAboutAppDialog() {
CustomAboutDialogBinding aboutAppDialogBinding = CustomAboutDialogBinding.inflate(LayoutInflater.from(ctx));
View view = aboutAppDialogBinding.getRoot();
materialAlertDialogBuilder.setView(view);
aboutAppDialogBinding.appVersionBuild.setText(getString(R.string.appVersionBuild, AppUtil.getAppVersion(ctx), AppUtil.getAppBuildNo(ctx)));
aboutAppDialogBinding.userServerVersion.setText(((BaseActivity) requireActivity()).getAccount().getServerVersion().toString());
aboutAppDialogBinding.donationLinkPatreon.setOnClickListener(v12 -> {
AppUtil.openUrlInBrowser(requireContext(), getResources().getString(R.string.supportLinkPatreon));
});
aboutAppDialogBinding.donationLinkBuyMeaCoffee.setOnClickListener(v11 -> {
AppUtil.openUrlInBrowser(requireContext(), getResources().getString(R.string.supportLinkBuyMeaCoffee));
});
aboutAppDialogBinding.translateLink.setOnClickListener(v13 -> {
AppUtil.openUrlInBrowser(requireContext(), getResources().getString(R.string.crowdInLink));
});
aboutAppDialogBinding.appWebsite.setOnClickListener(v14 -> {
AppUtil.openUrlInBrowser(requireContext(), getResources().getString(R.string.appWebsiteLink));
});
if(AppUtil.isPro(requireContext())) {
aboutAppDialogBinding.supportHeader.setVisibility(View.GONE);
aboutAppDialogBinding.donationLinkPatreon.setVisibility(View.GONE);
aboutAppDialogBinding.donationLinkBuyMeaCoffee.setVisibility(View.GONE);
}
materialAlertDialogBuilder.show();
}
public void rateThisApp() {
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + requireActivity().getPackageName())));
}
catch(ActivityNotFoundException e) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + requireActivity().getPackageName())));
}
}
@Override
public void onResume() {
super.onResume();
if(refreshParent) {
requireActivity().recreate();
requireActivity().overridePendingTransition(0, 0);
refreshParent = false;
}
}
}