package activity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.webkit.URLUtil;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.TextView;
import org.unfoldingword.mobile.BuildConfig;
import org.unfoldingword.mobile.R;
import butterknife.Bind;
import butterknife.ButterKnife;
import fragments.CheckingLevelInfoFragment;
import model.DaoDBHelper;
import model.DatabaseOpenHelper;
import model.daoModels.DaoSession;
import utils.UWPreferenceManager;
public class CustomSettingsActivity extends UWBaseActivity {
@Bind(R.id.version_number_text_view)
TextView versionNumberTextView;
@Bind(R.id.build_number_text_view)
TextView buildNumberTextView;
@Bind(R.id.base_url_text_view)
TextView baseUrlTextView;
@Bind(R.id.settings_checking_level_fragment_frame)
FrameLayout checkingLevelFrame;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_settings);
ButterKnife.bind(this);
setupToolbar(false, "Settings", false);
setupViews();
}
private void setupViews(){
addCheckingLevelFragment();
updateViews();
}
private void updateViews(){
baseUrlTextView.setText(UWPreferenceManager.getDataDownloadUrl(getApplicationContext()));
versionNumberTextView.setText(BuildConfig.VERSION_NAME);
buildNumberTextView.setText(Integer.toString(BuildConfig.VERSION_CODE));
}
private void addCheckingLevelFragment(){
CheckingLevelInfoFragment fragment = new CheckingLevelInfoFragment();
getSupportFragmentManager().beginTransaction().add(checkingLevelFrame.getId(), fragment, "CheckingLevelInfoFragment" + checkingLevelFrame.getId()).commit();
}
@Override
public AnimationParadigm getAnimationParadigm() {
return AnimationParadigm.ANIMATION_VERTICAL;
}
public void baseUrlClicked(View view) {
changeUrl();
}
private void changeUrl(){
AlertDialog.Builder alert = new AlertDialog.Builder(this);
final EditText editText = new EditText(this);
alert.setTitle("Change Base URL");
editText.setText(UWPreferenceManager.getDataDownloadUrl(getApplicationContext()));
alert.setView(editText);
alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
changeUrl(editText.getText().toString());
dialog.dismiss();
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
});
alert.show();
}
private void changeUrl(String newUrl) {
if (URLUtil.isValidUrl(newUrl)){
UWPreferenceManager.setDataDownloadUrl(getApplicationContext(), newUrl);
updateViews();
}
else{
showAlert("Error", "The URL you entered appears to be invalid");
}
}
public void resetUrlClicked(View view) {
resetUrl();
}
private void resetUrl(){
changeUrl(getResources().getString(R.string.pref_default_base_url));
}
public void resetDataClicked(View view) {
requestResetDatabase();
}
private void requestResetDatabase() {
showChoiceDialogue("Reset Database?", "Any new Versions will be lost and reset to most recent update", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
resetDatabase();
}
}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
}
private void resetDatabase() {
setLoadingFragmentVisibility(true, "Resetting Database", false);
DatabaseOpenHelper helper = DatabaseOpenHelper.getSharedInstance(getApplicationContext(),
getApplicationContext().getResources().getString(R.string.database_name), null);
helper.deleteDatabase();
DaoDBHelper.getDaoSession(getApplicationContext(), new DaoDBHelper.AsynchronousDatabaseAccessorCompletion() {
@Override
public void loadedSession(@Nullable DaoSession session) {
setLoadingFragmentVisibility(false, "Resetting Database", true);
}
});
}
}