/*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Copyright 2015 Jose A. Gonzalez Cervera
Copyright 2015 Juan A. Fernández Sánchez
*/
package butterflydevs.brainstudio.extras.Dialogos;
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import butterflydevs.brainstudio.ActividadPrincipal;
import butterflydevs.brainstudio.Ajustes;
import butterflydevs.brainstudio.R;
import butterflydevs.brainstudio.extras.MySQLiteHelper;
import butterflydevs.brainstudio.extras.utilidades;
/**
* Clase asociada al layout dialogo_nombre_usuario.xml que muestra un diálogo para que el usuario
* modifique o intrudca por primera vez (dependiendo de cuando se abra) su nombre de usuario, una forma
* simple de identificarlo, útil para mostrarlo por pantalla en el menú prinpical y para subirlo al ranking.
*/
public class DialogoGrabadoAlias extends DialogFragment {
private Button botonGuardar;
private EditText editTextNombre;
/**
* En este caso necesitamos una referencia al padre paara poder acceder a las preferencias compartidas.
*/
private Activity actividadPadre;
public void setPadre(Activity padre){
actividadPadre=padre;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Dialog dialog = new Dialog(getActivity());
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
dialog.setContentView(R.layout.dialogo_nombre_usuario);
dialog.getWindow().setBackgroundDrawable(
new ColorDrawable(Color.TRANSPARENT));
dialog.show();
//Asociamos los elementos de la vista
botonGuardar=(Button)dialog.findViewById(R.id.botonGuardar);
editTextNombre=(EditText)dialog.findViewById(R.id.editTextNombreUsuario);
//Lo hacemos en modo privado para que sólo pueda ser accesible para esta app.
//Obtenemos una referencia
SharedPreferences prefe=actividadPadre.getSharedPreferences("datos", Context.MODE_PRIVATE);
/*Consutamos el dato con la key "alias", si no estuviera (como cuando sucede la primera ejecución) devuelve "Nombre" para
que sea eso lo que se escriba en el editText.
*/
editTextNombre.setText(prefe.getString("alias","Nombre"));
//Cuando pulsamos el botón de cancelar sólo se cierra el diálogo.
botonGuardar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Cuando grabamos los datos lo que hacemos es grabar en el archivo de preferencias el contenido del cuadro de texto en
//una variable llamada alias.
SharedPreferences datos = actividadPadre.getSharedPreferences("datos", Context.MODE_PRIVATE);
SharedPreferences.Editor editor=datos.edit();
//Cuando cambiamos realmente el nombre
editor.putString("alias",editTextNombre.getText().toString());
editor.commit(); //Cuando se hace realmente la grabación.
/*Para que los efectos del cambio se vean inmediatamente y no haya que volver
a entrar a la página llamamos a un método de la clase, sea la que sea que puede usarlo
para que modifique en el acto el nombre.
*/
if(actividadPadre.getLocalClassName().contains("Ajustes")) {
//Hacemos casting a Ajustes.
((Ajustes) actividadPadre).cargarNombreUsuario();
((Ajustes) actividadPadre).cambiarNombreUsuarioBD();
}
if(actividadPadre.getLocalClassName().contains("ActividadPrincipal")) {
//Hacemos casting a ActividadPrincipal.
((ActividadPrincipal) actividadPadre).cargarNombreUsuario();
//Tambien hacemos el cambio en la base de datos.
((ActividadPrincipal) actividadPadre).cambiarNombreUsuarioBD();
}
//Cerramos el diálogo
dismiss();
}
});
return dialog;
}
}