/* * Copyright (C) 2014 Tubor Team * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.sgu.findyourfriend.screen; import java.io.IOException; import java.sql.Date; import java.util.Calendar; import android.app.Activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ImageView; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.ScrollView; import android.widget.Spinner; import android.widget.TextView; import com.sgu.findyourfriend.R; import com.sgu.findyourfriend.mgr.FriendManager; import com.sgu.findyourfriend.mgr.MyProfileManager; import com.sgu.findyourfriend.model.User; import com.sgu.findyourfriend.net.PostData; import com.sgu.findyourfriend.utils.Utility; public class EditProfileActivity extends Activity { private static final String TAG = "CreateAccountProfilrFragment"; private static final int TAKE_PHOTO = 0; private static final int SELECT_PICTURE = 1; public static int count = 0; private ScrollView svMain; private ImageView imgProfile; private EditText editName, editAddress, editEmail; private AutoCompleteTextView autoProvice; private Button btnComplete; private Button btnExit; private RadioGroup sexGrp; private String selectedImagePath = ""; private String selectedImageName = ""; private EditText editLearningPlace; private EditText editWorkplace; private EditText editFacebookLink; private EditText txtDay, txtMonth, txtYear; private RadioGroup publicGrp; private int sex; private int day = 0, month = 0, year = 0; private Date date; final Calendar c = Calendar.getInstance(); private boolean isChangedImg; private ProgressDialogCustom progress; private EditProfileActivity mThis = this; public EditProfileActivity() { } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_edit_profile); isChangedImg = false; svMain = (ScrollView) findViewById(R.id.svMain); imgProfile = (ImageView) findViewById(R.id.imgAvatar); editName = (EditText) findViewById(R.id.editName); autoProvice = (AutoCompleteTextView) findViewById(R.id.autoTextCountry); editEmail = (EditText) findViewById(R.id.editEmail); btnComplete = (Button) findViewById(R.id.btnUpdate); btnExit = (Button) findViewById(R.id.btnExit); editAddress = (EditText) findViewById(R.id.editAddress); sexGrp = (RadioGroup) findViewById(R.id.radioSex); String[] countries = getResources().getStringArray( R.array.country_arrays); ArrayAdapter<String> adapter = new ArrayAdapter<String>( getApplicationContext(), android.R.layout.select_dialog_item, countries); autoProvice = (AutoCompleteTextView) findViewById(R.id.autoTextCountry); autoProvice.setThreshold(1); autoProvice.setAdapter(adapter); imgProfile.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showTakeImage(); } }); txtDay = (EditText) findViewById(R.id.txtDay); txtMonth = (EditText) findViewById(R.id.txtMonth); txtYear = (EditText) findViewById(R.id.txtYear); editLearningPlace = (EditText) findViewById(R.id.editLearningPlace); editWorkplace = (EditText) findViewById(R.id.editWorkplace); editFacebookLink = (EditText) findViewById(R.id.editFacebookName); publicGrp = (RadioGroup) findViewById(R.id.radioPublic); // load data User mine = MyProfileManager.getInstance().getMineInstance() .getUserInfo(); if (mine.isPublic()) { ((RadioButton) publicGrp.getChildAt(0)).setChecked(true); } else { ((RadioButton) publicGrp.getChildAt(1)).setChecked(true); } imgProfile.setImageDrawable(FriendManager.getInstance().hmImageP .get(mine.getId())); editName.setText(mine.getName()); editEmail.setText(mine.getEmail()); if (mine.getAddress().lastIndexOf(",") > -1) { autoProvice.setText(mine.getAddress() .substring(mine.getAddress().lastIndexOf(",") + 1).trim()); editAddress.setText(mine.getAddress().subSequence(0, mine.getAddress().lastIndexOf(","))); } if (mine.getGender() == 1) { ((RadioButton) findViewById(R.id.radioMale)).setSelected(true); ((RadioButton) findViewById(R.id.radioFemale)).setSelected(false); } else { ((RadioButton) findViewById(R.id.radioMale)).setSelected(false); ((RadioButton) findViewById(R.id.radioFemale)).setSelected(true); } editLearningPlace.setText(mine.getSchool()); editWorkplace.setText(mine.getWorkplace()); editFacebookLink.setText(mine.getFblink()); date = mine.getBirthday(); // Log.i("=======", date.getDate() + " # " + date.getMonth() + " # " +date.getYear()); // Log.i("=======", date.toLocaleString()); // txtDay.setText(date.getDate() + ""); txtMonth.setText((date.getMonth() + 1) + ""); txtYear.setText((date.getYear() + 1900) + ""); if (mine.isPublic()) { ((RadioButton) findViewById(R.id.radioYes)).setSelected(true); ((RadioButton) findViewById(R.id.radioNo)).setSelected(false); } else { ((RadioButton) findViewById(R.id.radioYes)).setSelected(false); ((RadioButton) findViewById(R.id.radioNo)).setSelected(true); } btnExit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); btnComplete.setOnClickListener(new OnClickListener() { @SuppressWarnings("deprecation") @Override public void onClick(View arg0) { if (!Utility .checkConnectToNetworkContinue(getApplicationContext())) return; final Dialog dialog = new Dialog(mThis); boolean error = false; // validate basic information if (editName.getText().toString().trim().length() > 0) { editName.setBackgroundDrawable(getResources().getDrawable( R.drawable.edit_text)); } else { editName.setBackgroundDrawable(getResources().getDrawable( R.drawable.edit_text_wrong)); error = true; } if (Utility.isValidEmailAddress(editEmail.getText().toString() .trim())) { editEmail.setBackgroundDrawable(getResources().getDrawable( R.drawable.edit_text)); } else { editEmail.setBackgroundDrawable(getResources().getDrawable( R.drawable.edit_text_wrong)); error = true; } if (sexGrp.getCheckedRadioButtonId() == R.id.radioMale) sex = 1; else if (sexGrp.getCheckedRadioButtonId() == R.id.radioFemale) sex = 2; if (txtDay.getText().toString().trim().length() > 0) day = Integer.parseInt(txtDay.getText().toString().trim()); if (txtMonth.getText().toString().trim().length() > 0) month = Integer.parseInt(txtMonth.getText().toString()); if (txtYear.getText().toString().trim().length() > 0) year = Integer.parseInt(txtYear.getText().toString()); if (day > 0 || month > 0 || year > 0) { // has input if (day < 1 || day > 31) { txtDay.setBackgroundDrawable(getResources() .getDrawable(R.drawable.edit_text_wrong)); error = true; } else { txtDay.setBackgroundDrawable(getResources() .getDrawable(R.drawable.edit_text)); } if (month < 1 || month > 12) { txtMonth.setBackgroundDrawable(getResources() .getDrawable(R.drawable.edit_text_wrong)); error = true; } else { txtMonth.setBackgroundDrawable(getResources() .getDrawable(R.drawable.edit_text)); } if (year >= ((new Date(System.currentTimeMillis())).getYear() + 1900)) { txtYear.setBackgroundDrawable(getResources() .getDrawable(R.drawable.edit_text_wrong)); error = true; } else { txtYear.setBackgroundDrawable(getResources() .getDrawable(R.drawable.edit_text)); } Log.i("year", date.getYear() + ""); } if (error) { svMain.scrollTo(0, -svMain.getBottom()); Utility.showDialog(Utility.ERROR, dialog, "Thiếu thông tin", "Nhập đủ thông tin yêu cầu."); return; } sex = (sexGrp.getCheckedRadioButtonId() == R.id.radioMale ? 1 : 2); // update information (new AsyncTask<Void, Void, Boolean>() { private User mineEdited; @Override protected void onPreExecute() { progress = new ProgressDialogCustom(mThis); progress.show(); int sex = (sexGrp.getCheckedRadioButtonId() == R.id.radioMale ? 1 : 2); mineEdited = new User(MyProfileManager.getInstance() .getMyID()); mineEdited .setName(editName.getText().toString().trim()); mineEdited.setGender(sex); mineEdited.setAddress(editAddress.getText().toString() .trim() + ", " + autoProvice.getText().toString().trim()); mineEdited.setEmail(editEmail.getText().toString() .trim()); // warning if (!isChangedImg) mineEdited.setAvatar(MyProfileManager.getInstance() .getImage()); mineEdited.setWorkplace(editWorkplace.getText() .toString().trim()); mineEdited.setSchool(editLearningPlace.getText() .toString().trim()); mineEdited.setFblink(editFacebookLink.getText() .toString().trim()); if (day + month + year > 0) { mineEdited.setBirthday(new Date((year - 1900), month - 1, day)); } else { mineEdited.setBirthday(date); } mineEdited.setPublic(publicGrp .getCheckedRadioButtonId() == R.id.radioYes ? true : false); mineEdited.setGcmId(MyProfileManager.getInstance() .getMyGCMID()); mineEdited.setInternetImageLink(MyProfileManager .getInstance().getImageLink()); } @Override protected Boolean doInBackground(Void... params) { String renameFile = "temp_" + System.currentTimeMillis() + ".png"; if (isChangedImg) { Log.i("Image path", selectedImagePath); PostData.uploadFile(mThis, selectedImagePath, renameFile); } boolean success = PostData.userEdit(mThis, mineEdited .getId(), mineEdited.getName(), isChangedImg ? PostData.IMAGE_HOST + renameFile : mineEdited.getInternetImageLink(), mineEdited.getGcmId(), mineEdited.getGender(), mineEdited.getAddress(), mineEdited .getBirthday().toString(), mineEdited .getSchool(), mineEdited.getWorkplace(), mineEdited .getEmail(), mineEdited.getFblink(), mineEdited.isPublic()); if (success) { MyProfileManager.getInstance().init(mThis, mineEdited.getId(), true); FriendManager.getInstance().updateFriend( MyProfileManager.getInstance() .getMineInstance()); return true; } return false; } @Override protected void onPostExecute(Boolean result) { if (result) { Utility.showDialog(Utility.CONFIRM, dialog, "Thành công", "Cập nhật thông tin thành công.", "Đóng", new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); finish(); } }); } else { Utility.showDialog(Utility.ERROR, dialog, "Lỗi", "Xãy ra lỗi trong quá trình cập nhật. Xin thử lại sau ."); } progress.dismiss(); } }).execute(); } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK) { isChangedImg = true; if (requestCode == SELECT_PICTURE) { Uri selectedImageUri = data.getData(); selectedImagePath = Utility.savebitmap( Utility.dropRectBitmap(BitmapFactory.decodeFile(Utility .getPath(mThis, selectedImageUri)))).getPath(); selectedImageName = selectedImagePath.split("/")[(selectedImagePath .split("/").length) - 1]; // Utility.showMessage(mThis, "path: " + selectedImagePath); imgProfile.setImageDrawable(Drawable .createFromPath(selectedImagePath)); } else if (requestCode == TAKE_PHOTO) { Bitmap photo = (Bitmap) data.getExtras().get("data"); selectedImagePath = Utility.savebitmap( Utility.dropRectBitmap(Utility.rotateBitmap( photo, 270))).getPath(); selectedImageName = selectedImagePath.split("/")[(selectedImagePath .split("/").length) - 1]; // Utility.showMessage(mThis, "path: " + selectedImagePath); imgProfile.setImageDrawable(Drawable .createFromPath(selectedImagePath)); } } } public void showTakeImage() { final Dialog dialog = new Dialog(mThis); Window W = dialog.getWindow(); W.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); W.setLayout(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); W.requestFeature(Window.FEATURE_NO_TITLE); W.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); dialog.setContentView(R.layout.options_take_image_layout); ((Button) dialog.findViewById(R.id.btnGallery)) .setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult( Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE); dialog.dismiss(); } }); ((Button) dialog.findViewById(R.id.btnTakePhoto)) .setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent cameraIntent = new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, TAKE_PHOTO); dialog.dismiss(); } }); dialog.show(); } }