/* * Created by Itzik Braun on 2/4/2015. * Copyright (c) 2015 deluge. All rights reserved. * * Last Modification at: 4/2/15 4:25 PM */ package com.braunster.chatsdk.activities; import android.app.DatePickerDialog; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.provider.Settings; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import com.braunster.chatsdk.R; import com.braunster.chatsdk.dao.BUser; import com.braunster.chatsdk.network.BDefines; import com.braunster.chatsdk.network.BFacebookManager; import com.braunster.chatsdk.network.BNetworkManager; import com.countrypicker.Country; import com.countrypicker.CountryPicker; import com.countrypicker.CountryPickerListener; import org.apache.commons.lang3.StringUtils; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; import timber.log.Timber; /** * Created by braunster on 02/04/15. */ public class ChatSDKEditProfileActivity extends ChatSDKBaseActivity implements OnClickListener { public static final String Male = "male", Female ="female"; private TextView txtMale, txtFemale, txtDateOfBirth; private EditText etName, etLocation, etStatus; private ImageView imageCountryFlag; private boolean loggingOut = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); enableCheckOnlineOnResumed(true); if (getActionBar() != null) getActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.chatcat_activity_edit_profile); initViews(); loadCurrentData(); } private void initViews(){ txtFemale = (TextView) findViewById(R.id.btn_female); txtMale = (TextView) findViewById(R.id.btn_male); txtDateOfBirth = (TextView) findViewById(R.id.txt_date_of_birth); etName = (EditText) findViewById(R.id.chat_sdk_et_name); etLocation = (EditText) findViewById(R.id.chat_sdk_et_location); etStatus = (EditText) findViewById(R.id.chat_sdk_et_status); imageCountryFlag = (ImageView) findViewById(R.id.chat_sdk_country_ic); } /** * Load the user data from the database. * */ private void loadCurrentData(){ BUser user = getNetworkAdapter().currentUserModel(); String gender = user.metaStringForKey(BDefines.Keys.BGender); if (StringUtils.isEmpty(gender) || gender.equals(Male)) { setSelected(txtFemale, false); setSelected(txtMale, true); } else { setSelected(txtMale, false); setSelected(txtFemale, true); } String countryCode = user.metaStringForKey(BDefines.Keys.BCountry); if (StringUtils.isNotEmpty(countryCode)){ loadCountryFlag(countryCode); } String name = user.getMetaName(); String location = user.metaStringForKey(BDefines.Keys.BLocation); String dateOfBirth = user.metaStringForKey(BDefines.Keys.BDateOfBirth); String status = user.metaStringForKey(BDefines.Keys.BStatus); if (StringUtils.isNotEmpty(name)) etName.setText(name); if (StringUtils.isNotEmpty(location)) etLocation.setText(location); if (StringUtils.isNotEmpty(dateOfBirth)) txtDateOfBirth.setText(dateOfBirth); if (StringUtils.isNotEmpty(status)) etStatus.setText(status); } private void loadCountryFlag(String countryCode){ imageCountryFlag.setImageResource(Country.getResId(countryCode)); imageCountryFlag.setVisibility(View.VISIBLE); } /** * Save the user details before closing the screen. * */ private void saveDetailsBeforeClose(){ BUser user = getNetworkAdapter().currentUserModel(); if (!etName.getText().toString().isEmpty()) { user.setMetaName(etName.getText().toString()); } user.setMetadataString(BDefines.Keys.BDateOfBirth, txtDateOfBirth.getText().toString()); user.setMetadataString(BDefines.Keys.BStatus, etStatus.getText().toString()); user.setMetadataString(BDefines.Keys.BLocation, etLocation.getText().toString()); } @Override protected void onResume() { super.onResume(); txtMale.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (v.isSelected()) return; setSelected(txtFemale, false); setSelected(txtMale, true); getNetworkAdapter().currentUserModel().setMetadataString(BDefines.Keys.BGender, "male"); } }); txtFemale.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (v.isSelected()) return; setSelected(txtMale, false); setSelected(txtFemale, true); getNetworkAdapter().currentUserModel().setMetadataString(BDefines.Keys.BGender, "female"); } }); findViewById(R.id.chat_sdk_logout_button).setOnClickListener(this); findViewById(R.id.chat_sdk_app_info_button).setOnClickListener(this); findViewById(R.id.chat_sdk_select_country_button).setOnClickListener(this); findViewById(R.id.chat_sdk_pick_birth_date_button).setOnClickListener(this); } public void logout() { // Logout and return to the login activity. BFacebookManager.logout(this); BNetworkManager.sharedManager().getNetworkAdapter().logout(); chatSDKUiHelper.startLoginActivity(true); } private void setSelected(TextView textView, boolean selected){ textView.setSelected(selected); if (selected) textView.setTextColor(getResources().getColor(R.color.white)); else textView.setTextColor(getResources().getColor(R.color.dark_gray)); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { super.onBackPressed(); if (!loggingOut) { saveDetailsBeforeClose(); getNetworkAdapter().pushUser(); } overridePendingTransition(R.anim.dummy, R.anim.slide_top_bottom_out); } @Override public void onClick(View v) { int i = v.getId(); if (i == R.id.chat_sdk_logout_button) { loggingOut = true; logout(); } else if (i == R.id.chat_sdk_app_info_button) { try { Intent intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent); } catch (Exception e) { Timber.e(e.getCause(), getString(R.string.unable_to_open_app_in_settings)); chatSDKUiHelper.showAlertToast(R.string.unable_to_open_app_in_settings); } } else if (i == R.id.chat_sdk_pick_birth_date_button) { final Calendar calendar = Calendar.getInstance(); DatePickerDialog datePickerDialog = new DatePickerDialog(ChatSDKEditProfileActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { calendar.set(year, monthOfYear, dayOfMonth); txtDateOfBirth.setText(new SimpleDateFormat(BDefines.Options.DateOfBirthFormat).format(calendar.getTime())); } }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); datePickerDialog.show(); } else if (i == R.id.chat_sdk_select_country_button) { final CountryPicker picker = new CountryPicker(); picker.setListener(new CountryPickerListener() { @Override public void onSelectCountry(String name, String code) { getNetworkAdapter().currentUserModel().setMetadataString(BDefines.Keys.BCountry, code); loadCountryFlag(code); picker.dismiss(); } }); picker.show(getFragmentManager(), ""); } } }