diff --git a/app/src/main/java/app/fedilab/android/activities/BaseFragmentActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseFragmentActivity.java new file mode 100644 index 000000000..95656ccd7 --- /dev/null +++ b/app/src/main/java/app/fedilab/android/activities/BaseFragmentActivity.java @@ -0,0 +1,153 @@ +package app.fedilab.android.activities; + +import android.annotation.SuppressLint; +import android.app.ProgressDialog; +import android.content.Context; +import android.content.pm.PackageManager; +import android.content.res.Configuration; +import android.os.Bundle; +import android.os.StrictMode; +import android.view.ActionMode; +import android.view.View; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; + +import com.franmontiel.localechanger.LocaleChanger; +import com.google.android.material.snackbar.Snackbar; +import com.jaredrummler.cyanea.app.CyaneaAppCompatActivity; +import com.vanniktech.emoji.EmojiManager; +import com.vanniktech.emoji.one.EmojiOneProvider; + +import org.jetbrains.annotations.NotNull; + +import java.util.Timer; + +import app.fedilab.android.BuildConfig; +import app.fedilab.android.helper.Helper; +import es.dmoral.toasty.Toasty; + +/** + * Created by Thomas on 12/12/2017. + * Base activity which updates security provider + */ + +@SuppressLint("Registered") +public class BaseFragmentActivity extends CyaneaAppCompatActivity { + + + public static final int READ_WRITE_STORAGE = 52; + public static Timer timer; + public static boolean canShowActionMode = true; + + static { + Helper.installProvider(); + EmojiManager.install(new EmojiOneProvider()); + } + + private ProgressDialog mProgressDialog; + + @Override + protected void onCreate(Bundle savedInstanceState) { + + if (BuildConfig.DEBUG) { + StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() + .detectDiskReads() + .detectDiskWrites() + .detectAll() + .penaltyLog() + .build()); + StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() + .detectLeakedSqlLiteObjects() + .detectLeakedClosableObjects() + .detectLeakedRegistrationObjects() + .detectActivityLeaks() + .penaltyLog() + // .penaltyDeath() + .build()); + } + canShowActionMode = true; + super.onCreate(savedInstanceState); + + } + + @Override + public void onDestroy() { + super.onDestroy(); + if (timer != null) { + timer.cancel(); + timer = null; + } + } + + + @Override + public void onConfigurationChanged(@NotNull Configuration newConfig) { + super.onConfigurationChanged(newConfig); + LocaleChanger.onConfigurationChanged(); + } + + @Override + protected void attachBaseContext(@NotNull Context newBase) { + newBase = LocaleChanger.configureBaseContext(newBase); + super.attachBaseContext(newBase); + } + + public boolean requestPermission(String permission) { + boolean isGranted = ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED; + if (!isGranted) { + ActivityCompat.requestPermissions( + this, + new String[]{permission}, + READ_WRITE_STORAGE); + } + return isGranted; + } + + public void isPermissionGranted(boolean isGranted, String permission) { + + } + + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + if (requestCode == READ_WRITE_STORAGE) { + isPermissionGranted(grantResults[0] == PackageManager.PERMISSION_GRANTED, permissions[0]); + } + } + + protected void showLoading(@NonNull String message) { + mProgressDialog = new ProgressDialog(this); + mProgressDialog.setMessage(message); + mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); + mProgressDialog.setCancelable(false); + mProgressDialog.show(); + } + + protected void hideLoading() { + if (mProgressDialog != null) { + mProgressDialog.dismiss(); + } + } + + protected void showSnackbar(@NonNull String message) { + View view = findViewById(android.R.id.content); + if (view != null) { + Snackbar.make(view, message, Snackbar.LENGTH_SHORT).show(); + } else { + Toasty.info(BaseFragmentActivity.this, message, Toast.LENGTH_SHORT).show(); + } + } + + + @Override + public void onActionModeStarted(ActionMode mode) { + if (!canShowActionMode) { + mode.finish(); + } + super.onActionModeStarted(mode); + + } +}