package com.cellasoft.univrapp.activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockActivity;
import com.cellasoft.univrapp.R;
import com.cellasoft.univrapp.Settings;
import com.cellasoft.univrapp.model.Lecturer;
import com.cellasoft.univrapp.utils.AsyncTask;
import com.cellasoft.univrapp.utils.FontUtils;
import com.cellasoft.univrapp.utils.UIUtils;
import com.nostra13.universalimageloader.core.ImageLoader;
public class ContactActivity extends SherlockActivity {
public static final String LECTURER_ID_PARAM = "LecturerId";
public static final String LECTURER_NAME_PARAM = "LecturerName";
public static final String LECTURER_OFFICE_PARAM = "LecturerOffice";
public static final String LECTURER_THUMB_PARAM = "LecturerThumb";
protected volatile boolean running;
private Lecturer lecturer;
private String tellOffice;
private String tellLab;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contact);
if (getIntent().hasExtra(LECTURER_ID_PARAM)) {
Intent intent = getIntent();
int lecturerId = intent.getIntExtra(LECTURER_ID_PARAM, 0);
String lecturerName = intent.getStringExtra(LECTURER_NAME_PARAM);
String lecturerOffice = intent
.getStringExtra(LECTURER_OFFICE_PARAM);
String lecturerThumb = intent.getStringExtra(LECTURER_THUMB_PARAM);
loadContactInfo(lecturerId, lecturerName, lecturerOffice,
lecturerThumb);
}
getSupportActionBar().setTitle(
getResources().getString(R.string.contact_title));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
running = true;
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
FontUtils.setRobotoFont(this, getWindow().getDecorView());
super.onPostCreate(savedInstanceState);
}
@Override
protected void onDestroy() {
super.onDestroy();
running = false;
}
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
getSupportMenuInflater().inflate(R.menu.contact_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(
com.actionbarsherlock.view.MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// go back
finish();
return true;
case R.id.menu_web_page:
showWebPage();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void loadContactInfo(final int lecturerId,
final String lecturerName, final String lecturerOffice,
final String imageUrl) {
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
ImageLoader.getInstance().displayImage(imageUrl,
(ImageView) findViewById(R.id.contact_image));
((TextView) findViewById(R.id.contact_title))
.setText(lecturerName);
((TextView) findViewById(R.id.contact_office))
.setText(lecturerOffice);
}
@Override
protected Void doInBackground(Void... params) {
// final Bitmap b =
// ImageFetcher.getInstance(ContactActivity.this).get(imageUrl);
lecturer = Lecturer.findById(lecturerId);
final Vibrator vib = (Vibrator) getSystemService(VIBRATOR_SERVICE);
runOnUiThread(new Runnable() {
@Override
public void run() {
/*
* if (b != null) { image.setImageBitmap(b); }
*/
if (lecturer.telephone != null
&& lecturer.telephone.length() > 0) {
tellOffice = lecturer.telephone;
if (tellOffice.contains("/")) {
String[] tells = tellOffice.split("/");
tellOffice = tells[0].trim();
tellLab = tells[1].trim();
}
((TextView) findViewById(R.id.contact_phone))
.setText(tellOffice.replace(" - ", "\n")
.trim());
findViewById(R.id.contact_phone_action)
.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v,
MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event
.getAction()) {
vib.vibrate(50);
v.startAnimation(AnimationUtils
.loadAnimation(
ContactActivity.this,
R.anim.image_click));
callNumber(tellOffice);
return true;
}
return false;
}
});
findViewById(R.id.contact_phone_row_view)
.setVisibility(View.VISIBLE);
if (tellLab != null && tellLab.length() > 0) {
((TextView) findViewById(R.id.contact_phone_lab))
.setText(tellLab.replace(" - ", "\n")
.trim());
findViewById(R.id.contact_phone_lab_action)
.setOnTouchListener(
new OnTouchListener() {
@Override
public boolean onTouch(
View v,
MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event
.getAction()) {
vib.vibrate(50);
v.startAnimation(AnimationUtils
.loadAnimation(
ContactActivity.this,
R.anim.image_click));
callNumber(tellLab);
return true;
}
return false;
}
});
findViewById(R.id.contact_phone_lab_row_view)
.setVisibility(View.VISIBLE);
}
} else {
findViewById(R.id.contact_phone_row_view)
.setVisibility(View.GONE);
findViewById(R.id.contact_phone_lab_row_view)
.setVisibility(View.GONE);
}
if (lecturer.email != null
&& lecturer.email.length() > 0) {
((TextView) findViewById(R.id.contact_email))
.setText(lecturer.email);
findViewById(R.id.contact_email_action)
.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v,
MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event
.getAction()) {
vib.vibrate(50);
v.startAnimation(AnimationUtils
.loadAnimation(
ContactActivity.this,
R.anim.image_click));
String mailTo = lecturer.email;
Intent emailIntent = new Intent(
Intent.ACTION_SENDTO,
Uri.fromParts("mailto",
mailTo, null));
startActivity(Intent
.createChooser(
emailIntent,
"Send email..."));
return true;
}
return false;
}
});
findViewById(R.id.contact_mail_row_view)
.setVisibility(View.VISIBLE);
} else {
findViewById(R.id.contact_mail_row_view)
.setVisibility(View.GONE);
}
if (lecturer.department != null
&& lecturer.department.length() > 0) {
((TextView) findViewById(R.id.contact_department))
.setText(lecturer.department);
findViewById(R.id.contact_department_row_view)
.setVisibility(View.VISIBLE);
} else {
findViewById(R.id.contact_department_row_view)
.setVisibility(View.GONE);
}
}
});
return null;
}
}.execute((Void[]) null);
}
private void chooseNumberDialog(final String[] telephones) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!isFinishing()) {
AlertDialog.Builder builder = new AlertDialog.Builder(
ContactActivity.this).setTitle(getResources()
.getString(R.string.contact_dialog_title));
builder.setItems(telephones, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
call(telephones[which].trim());
}
});
builder.show();
}
}
});
}
private void call(String telephone) {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + telephone));
startActivity(callIntent);
}
private void showWebPage() {
Uri uri = Uri.parse(Settings.getUniversity().domain).buildUpon()
.path("/fol/main").appendQueryParameter("ent", "persona")
.appendQueryParameter("id", String.valueOf(lecturer.key))
.build();
UIUtils.safeOpenLink(this, new Intent(Intent.ACTION_VIEW, uri));
}
private void callNumber(String telephone) {
if (telephone.contains("-")) {
String[] telephones = telephone.split(" - ");
chooseNumberDialog(telephones);
} else {
call(telephone);
}
}
}