package com.quran.labs.androidquran;
import android.Manifest;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.widget.Toast;
import com.quran.labs.androidquran.service.util.PermissionUtil;
import com.quran.labs.androidquran.ui.QuranActionBarActivity;
import com.quran.labs.androidquran.ui.fragment.QuranAdvancedSettingsFragment;
import com.quran.labs.androidquran.util.AudioManagerUtils;
import com.quran.labs.androidquran.util.QuranSettings;
public class QuranAdvancedPreferenceActivity extends QuranActionBarActivity {
private static final String SI_LOCATION_TO_WRITE = "SI_LOCATION_TO_WRITE";
private static final int REQUEST_WRITE_TO_SDCARD_PERMISSION = 1;
private String mLocationToWrite;
@Override
protected void onCreate(Bundle savedInstanceState) {
((QuranApplication) getApplication()).refreshLocale(this, false);
super.onCreate(savedInstanceState);
setContentView(R.layout.preferences);
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle(R.string.prefs_category_advanced);
setSupportActionBar(toolbar);
final ActionBar ab = getSupportActionBar();
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
}
AudioManagerUtils.clearCache();
if (savedInstanceState != null) {
mLocationToWrite = savedInstanceState.getString(SI_LOCATION_TO_WRITE);
}
final FragmentManager fm = getFragmentManager();
final Fragment fragment = fm.findFragmentById(R.id.content);
if (fragment == null) {
fm.beginTransaction()
.replace(R.id.content, new QuranAdvancedSettingsFragment())
.commit();
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
if (mLocationToWrite != null) {
outState.putString(SI_LOCATION_TO_WRITE, mLocationToWrite);
}
super.onSaveInstanceState(outState);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
public void requestWriteExternalSdcardPermission(String newLocation) {
if (PermissionUtil.canRequestWriteExternalStoragePermission(this)) {
QuranSettings.getInstance(this).setSdcardPermissionsDialogPresented();
mLocationToWrite = newLocation;
ActivityCompat.requestPermissions(this,
new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE },
REQUEST_WRITE_TO_SDCARD_PERMISSION);
} else {
// in the future, we should make this a direct link - perhaps using a Snackbar.
Toast.makeText(this, R.string.please_grant_permissions, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode == REQUEST_WRITE_TO_SDCARD_PERMISSION) {
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (mLocationToWrite != null) {
Fragment fragment = getFragmentManager().findFragmentById(R.id.content);
if (fragment instanceof QuranAdvancedSettingsFragment) {
((QuranAdvancedSettingsFragment) fragment).moveFiles(mLocationToWrite);
}
}
}
mLocationToWrite = null;
}
}
}