package iWish_Activity; /** Raffaella*/ import iWish_Control.ControlUser; import iWish_Utente.Utente; import java.io.File; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; import android.app.Activity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; //scelta immagine profilo import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.text.InputType; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemSelectedListener; import com.progect.iwish.R; public class RegisterActivity extends Activity implements OnItemSelectedListener, OnFocusChangeListener{ public Context c; private ImageButton bt_change=null; private ImageButton bt_go_ok=null; private EditText edt_name=null; private EditText edt_surname=null; private EditText edt_birthday=null; private EditText edt_city=null; private EditText edt_email=null; private EditText edt_rp_email=null; private EditText edt_password=null; private EditText edt_rp_password=null; private EditText edt_answer_register=null; private Spinner sp_questions_register=null; private String question; private ArrayAdapter<CharSequence> adapter=null; //private ArrayAdapter<String> arrayAdapter=null; private String[] data=null; private ImageView selectPhoto=null; private static final int SELECT_PICTURE = 1; private String selectedImagePath=null; private AlertDialog alertDialog; private Utente mUser ; //gestioneDatapicker per compleanno private DatePickerDialog BirthdayDatePickerDialog; private SimpleDateFormat dateFormatter; // @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.register); setUpViews(); dateFormatter = new SimpleDateFormat( "dd-MM-yyyy", Locale.ITALY); edt_birthday.setInputType(InputType.TYPE_NULL); setDateTimeField(); sp_questions_register =(Spinner) findViewById(R.id.spinner1); adapter = ArrayAdapter.createFromResource(this, R.array.question, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp_questions_register.setAdapter(adapter); sp_questions_register.setOnItemSelectedListener(this); //cliccando sul cerchietto si sceglie la propria immagine di profilo tra le foto in memoria nel cel selectPhoto.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // in onCreate or any event where your want the user to select a file Intent intentPhoto = new Intent(); intentPhoto.setType("image/*"); intentPhoto.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intentPhoto,"Select Picture"), SELECT_PICTURE); } }); bt_go_ok.setOnClickListener(new OnClickListener() { @SuppressWarnings("deprecation") @Override public void onClick(View v) { if((edt_name.getText().toString().equals(""))||(edt_surname.getText().toString().equals("")) ||(edt_birthday.getText().toString().equals(""))||(edt_city.getText().toString().equals("")) ||(edt_email.getText().toString().equals(""))||(edt_rp_email.getText().toString().equals("")) ||(edt_password.getText().toString().equals(""))||(edt_rp_password.getText().toString().equals("")) ||(edt_answer_register.getText().toString().equals(""))){ //TODO controlli CharSequence eMail= "Registration is not complete"; Toast.makeText(getApplicationContext(), eMail, Toast.LENGTH_SHORT).show(); } else if(!edt_email.getText().toString().equals(edt_rp_email.getText().toString())){ CharSequence eMail= "The email that you have write is different please retype your email"; Toast.makeText(getApplicationContext(), eMail, Toast.LENGTH_SHORT).show(); }else if(!edt_password.getText().toString().equals(edt_rp_password.getText().toString())){ CharSequence password= "The password that you have write is different please retype your password"; Toast.makeText(getApplicationContext(), password, Toast.LENGTH_SHORT).show(); }else{ Boolean eMailExist = ControlUser.getIstanceControlUser().checkRegistrationOnDbOneUtente(edt_email.getText().toString(),getApplicationContext()); if (eMailExist){ CharSequence eMail= "Your email is already exist"; Toast.makeText(getApplicationContext(), eMail, Toast.LENGTH_SHORT).show(); }else{ String dataNascita = edt_birthday.getText().toString(); edt_birthday.setText(levaTrattini(dataNascita)); // Creiamo un nuovo intent passando il nome dell'intent successivo (ma si poteva fare anche passando il nome della classe) Intent intent = new Intent("iWish_Activity.AVATAR"); //creiamo un utente u con tutte le info inserite Utente u = createUser(); //aggiungiamo il tutto al nostro intent intent.putExtra("u", u); //facciamo partire l'intent AVATAR startActivity(intent); } } } }); } //utilizzato per prendere il dato dello spinner public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { //prendo il valore dell'elemento selezionato question = parent.getItemAtPosition(pos).toString(); //visualizzo l'elemento selezionato // Toast.makeText(parent.getContext(), item, Toast.LENGTH_LONG).show(); } public void onNothingSelected(AdapterView<?> parent) { // Another interface callback } private void setUpViews() { bt_change = (ImageButton)findViewById(R.id.bott_modifica); bt_go_ok = (ImageButton)findViewById(R.id.bt_go_ok); edt_name = (EditText)findViewById(R.id.editText1); edt_surname = (EditText)findViewById(R.id.editText2); edt_birthday = (EditText)findViewById(R.id.editText3); edt_city = (EditText)findViewById(R.id.editText4); edt_email = (EditText)findViewById(R.id.editText5); edt_rp_email = (EditText)findViewById(R.id.editText6); edt_password = (EditText)findViewById(R.id.editText7); edt_rp_password = (EditText)findViewById(R.id.editText8); edt_answer_register = (EditText)findViewById(R.id.editText9); selectPhoto = (ImageView)findViewById(R.id.foto); } private Utente createUser() { mUser = new Utente(); mUser.setName(edt_name.getText().toString()); mUser.setSurname(edt_surname.getText().toString()); mUser.setBirthday(edt_birthday.getText().toString()); mUser.setCity(edt_city.getText().toString()); mUser.setEmail(edt_email.getText().toString()); mUser.setPassword(edt_password.getText().toString()); mUser.setAnswer(edt_answer_register.getText().toString()); mUser.setQuestion(question); return mUser; } /**metodo per la gestione dell'interazione con la gallery del telefono**/ public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == SELECT_PICTURE) { Uri selectedImageUri = data.getData(); selectedImagePath = getPath(selectedImageUri); // affinche l'immagine non venga deformata viene prima resa quadrata mediante il metodo Ritaglia Bitmap immScelta = Ritaglia(selectedImagePath); selectPhoto.setImageBitmap(immScelta); // se non ci importava della deformazione potevamo fare direttamente: // scegliFoto.setImageURI(selectedImageUri); } } } /** metodo per la gestione dell'interazione con la gallery del telefono helper to retrieve the path of an image URI*/ @SuppressWarnings("deprecation") public String getPath(Uri uri) { // just some safety built in if( uri == null ) { // TODO perform some logging or show user feedback return null; } // try to retrieve the image from the media store first // this will only work for images selected from gallery String[] projection = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(uri, projection, null, null, null); if( cursor != null ){ int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } // this is our fallback here return uri.getPath(); } /**metodi che ho creato io * chiama convert e poi ritaglia l'immagine*/ public Bitmap Ritaglia(String s){ Bitmap srcBmp = Convert(s); Bitmap dstBmp; if (srcBmp.getWidth() >= srcBmp.getHeight()){ dstBmp = Bitmap.createBitmap(srcBmp, srcBmp.getWidth()/2 - srcBmp.getHeight()/2, 0, srcBmp.getHeight(), srcBmp.getHeight()); }else{ dstBmp = Bitmap.createBitmap(srcBmp, 0, srcBmp.getHeight()/2 - srcBmp.getWidth()/2, srcBmp.getWidth(), srcBmp.getWidth() ); } return dstBmp; } /**converte il path bitmap*/ public Bitmap Convert(String ss){ File imgFile = new File(ss); if(imgFile.exists()){ Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); return myBitmap; } return null; } //gestioneDatepicker private void setDateTimeField() { edt_birthday.setOnFocusChangeListener(this); Calendar newCalendar = Calendar.getInstance(); BirthdayDatePickerDialog = new DatePickerDialog(this, R.style.DatePickerStyle, new OnDateSetListener() { // BirthdayDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar newDate = Calendar.getInstance(); newDate.set(year, monthOfYear, dayOfMonth); edt_birthday.setText(dateFormatter.format(newDate.getTime())); } },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.WEEK_OF_MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); BirthdayDatePickerDialog.setTitle(""); } private String levaTrattini (String x){ StringBuffer ris = new StringBuffer(""); for(int i=0; i<x.length();i++){ if(x.charAt(i)!= '-') ris=ris.append(x.charAt(i)); } String risinv = ris.toString(); String inv = risinv.substring(4, 8) + risinv.substring(2, 4) + risinv.substring(0, 2); return inv; } ////gestioneDatepicker @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Stub di metodo generato automaticamente if(hasFocus) BirthdayDatePickerDialog.show(); } }