package com.ijoomer.plugins;
import android.content.ContentProviderOperation;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Typeface;
import android.provider.ContactsContract;
import android.text.SpannableString;
import android.text.style.StyleSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TextView;
import com.androidquery.AQuery;
import com.ijoomer.common.classes.IjoomerUtilities;
import com.ijoomer.common.classes.IjoomerWebviewClient;
import com.ijoomer.customviews.IjoomerButton;
import com.ijoomer.customviews.IjoomerEditText;
import com.ijoomer.customviews.IjoomerRadioButton;
import com.ijoomer.customviews.IjoomerTextView;
import com.ijoomer.library.plugins.PluginsContactUsDataProvider;
import com.ijoomer.src.R;
import com.ijoomer.weservice.WebCallListener;
import com.smart.framework.CustomAlertNeutral;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
/**
* This Class Contains UnNormalizeFields PluginsContactUsActivity.
*
* @author tasol
*
*/
public class PluginsContactUsActivity extends PluginsMasterActivity {
private LinearLayout lnrContactPostcode;
private LinearLayout lnrContactTelephone;
private LinearLayout lnrContactFax;
private LinearLayout lnrContactMobile;
private LinearLayout lnrContactInfo;
private LinearLayout lnrContactForm;
private LinearLayout lnrLinks;
private LinearLayout lnrTab;
private IjoomerEditText edtName;
private IjoomerEditText edtEmail;
private IjoomerEditText edtMessage;
private IjoomerTextView txtValueName;
private IjoomerTextView txtValuePosition;
private IjoomerTextView txtValueAddress;
private IjoomerTextView txtValueState;
private IjoomerTextView txtValueCountry;
private IjoomerTextView txtValuePostcode;
private IjoomerTextView txtValueCity;
private IjoomerTextView txtValueTelephone;
private IjoomerTextView txtValueFax;
private IjoomerTextView txtValueMobile;
private IjoomerTextView txtValueWebpage;
private IjoomerTextView txtValueMisc;
private IjoomerTextView txtValueEmailTo;
private IjoomerButton btnSendEmail;
private IjoomerButton btnAddToContact;
private IjoomerRadioButton rdbContactInfo;
private IjoomerRadioButton rdbContactForm;
private Spinner spnSubject;
private ImageView image;
private SeekBar proSeekBar;
private ArrayList<String> subjects;
private HashMap<String, String> contactInfo;
private PluginsContactUsDataProvider contactUsDataProvider = new PluginsContactUsDataProvider(this);
private AQuery androidAQuery;
private String IN_ID = "";
private String IN_SUBJECT = "";
private String IN_ITEM_ID = "";
private String IN_SHOW_CONTACT_FORM = "0";
private String form = "1";
private String imagePath;
private JSONObject IN_OBJ;
/**
* Overrides methods
*/
@Override
public int setLayoutId() {
return R.layout.plugins_contact_us;
}
@Override
public void initComponents() {
lnrContactPostcode = (LinearLayout) findViewById(R.id.lnrContactPostcode);
lnrContactTelephone = (LinearLayout) findViewById(R.id.lnrContactTelephone);
lnrContactFax = (LinearLayout) findViewById(R.id.lnrContactFax);
lnrContactMobile = (LinearLayout) findViewById(R.id.lnrContactMobile);
lnrLinks = (LinearLayout) findViewById(R.id.lnrLinks);
lnrContactInfo = (LinearLayout) findViewById(R.id.lnrContactInfo);
lnrContactForm = (LinearLayout) findViewById(R.id.lnrContactForm);
lnrTab = (LinearLayout) findViewById(R.id.lnrTab);
txtValueName = (IjoomerTextView) findViewById(R.id.txtValueName);
txtValuePosition = (IjoomerTextView) findViewById(R.id.txtValuePosition);
txtValueAddress = (IjoomerTextView) findViewById(R.id.txtValueAddress);
txtValueState = (IjoomerTextView) findViewById(R.id.txtValueState);
txtValueCountry = (IjoomerTextView) findViewById(R.id.txtValueCountry);
txtValuePostcode = (IjoomerTextView) findViewById(R.id.txtValuePostcode);
txtValueCity = (IjoomerTextView) findViewById(R.id.txtValueCity);
txtValueTelephone = (IjoomerTextView) findViewById(R.id.txtValueTelephone);
txtValueFax = (IjoomerTextView) findViewById(R.id.txtValueFax);
txtValueMobile = (IjoomerTextView) findViewById(R.id.txtValueMobile);
txtValueWebpage = (IjoomerTextView) findViewById(R.id.txtValueWebpage);
txtValueMisc = (IjoomerTextView) findViewById(R.id.txtValueMisc);
txtValueEmailTo = (IjoomerTextView) findViewById(R.id.txtValueEmailTo);
rdbContactInfo = (IjoomerRadioButton) findViewById(R.id.rdbContactInfo);
rdbContactForm = (IjoomerRadioButton) findViewById(R.id.rdbContactForm);
image = (ImageView) findViewById(R.id.image);
edtName = (IjoomerEditText) findViewById(R.id.edtContactName);
edtEmail = (IjoomerEditText) findViewById(R.id.edtContactEmail);
edtMessage = (IjoomerEditText) findViewById(R.id.edtContactMessage);
btnSendEmail = (IjoomerButton) findViewById(R.id.btnSendEmail);
btnAddToContact = (IjoomerButton) findViewById(R.id.btnAddToContact);
spnSubject = (Spinner) findViewById(R.id.spnSubject);
subjects = new ArrayList<String>();
androidAQuery = new AQuery(this);
}
@Override
public void prepareViews() {
getIntentData();
if (IN_SHOW_CONTACT_FORM.equalsIgnoreCase("1")) {
if (IN_SUBJECT.length() > 0) {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(PluginsContactUsActivity.this, android.R.layout.simple_spinner_item, subjects);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spnSubject.setAdapter(adapter);
} else {
spnSubject.setVisibility(View.GONE);
}
} else {
lnrTab.setVisibility(View.GONE);
}
getContactInfo();
((TextView) getHeaderView().findViewById(R.id.txtHeader)).setText(getScreenCaption());
}
@Override
public void setActionListeners() {
btnSendEmail.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (contactValidation()) {
String name = edtName.getText().toString();
String subject = subjects.get(spnSubject.getSelectedItemPosition());
String message = edtMessage.getText().toString();
String email = edtEmail.getText().toString();
form = "0";
proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_sending_request));
contactUsDataProvider.sendContact(form, IN_ITEM_ID, IN_ID, name, email, subject, message, new WebCallListener() {
@Override
public void onProgressUpdate(int progressCount) {
proSeekBar.setProgress(progressCount);
}
@Override
public void onCallComplete(final int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) {
ting(errorMessage);
clearAll();
}
});
}
}
});
btnAddToContact.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).build());
if (txtValueName.getText().toString().length() > 0) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, txtValueName.getText().toString()).build());
}
if (txtValueMobile.getText().toString().length() > 0) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, txtValueMobile.getText().toString())
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE).build());
}
if (txtValueTelephone.getText().toString().length() > 0) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, txtValueTelephone.getText().toString())
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME).build());
}
if (txtValueEmailTo.getText().toString().length() > 0) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, txtValueEmailTo.getText().toString())
.withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK).build());
}
if (txtValueAddress.getText().toString().length() > 0) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.DATA, txtValueAddress.getText().toString())
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK).build());
}
try {
Bitmap bitmap = getBitmapFromURL(imagePath);
ByteArrayOutputStream image = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, image);
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, image.toByteArray()).build());
} catch (Exception e) {
e.printStackTrace();
}
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
ting(getString(R.string.addcontactsucessfully));
} catch (Exception e) {
e.printStackTrace();
ting(getString(R.string.addcontacterror));
}
btnAddToContact.setVisibility(View.GONE);
}
});
rdbContactForm.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
lnrContactInfo.setVisibility(View.GONE);
lnrContactForm.setVisibility(View.VISIBLE);
}
});
rdbContactInfo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
lnrContactForm.setVisibility(View.GONE);
lnrContactInfo.setVisibility(View.VISIBLE);
}
});
}
/**
* Class methods
*/
/**
* This method used to get contact info.
*/
private void getContactInfo() {
form = "1";
proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_sending_request));
contactUsDataProvider.getContactInfo(form, IN_ID, IN_ITEM_ID, new WebCallListener() {
@Override
public void onProgressUpdate(int progressCount) {
proSeekBar.setProgress(progressCount);
}
@Override
public void onCallComplete(final int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) {
if (responseCode == 200) {
if (data1 != null && data1.size() > 0)
contactInfo = data1.get(0);
createView();
} else {
IjoomerUtilities.getCustomOkDialog(getScreenCaption(), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())),
getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() {
@Override
public void NeutralMethod() {
}
});
}
}
});
}
/**
* This method used to contact validation.
*
* @return
*/
private boolean contactValidation() {
boolean valid = true;
if (edtName.getText().length() == 0) {
valid = false;
edtName.setError(getString(R.string.validation_value_required));
}
if (edtMessage.getText().length() == 0) {
valid = false;
edtMessage.setError(getString(R.string.validation_value_required));
}
if (edtEmail.getText().length() == 0) {
valid = false;
edtEmail.setError(getString(R.string.validation_value_required));
} else if (!IjoomerUtilities.emailValidator(edtEmail.getText().toString().trim())) {
valid = false;
edtEmail.setError(getString(R.string.validation_invalid_email));
}
return valid;
}
/**
* This method used to get intent data.
*/
public void getIntentData() {
try {
IN_OBJ = new JSONObject(getIntent().getStringExtra("IN_OBJ"));
IN_ITEM_ID = IN_OBJ.getString("itemid");
JSONObject obj = new JSONObject(IN_OBJ.getString(ITEMDATA));
IN_ID = obj.getString("id");
IN_SHOW_CONTACT_FORM = obj.getString("showContactForm");
IN_SUBJECT = obj.getString("subjectLine");
subjects = new ArrayList<String>(Arrays.asList(IN_SUBJECT.split(",")));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* This method used to clear all data.
*/
public void clearAll() {
edtEmail.setText("");
edtName.setText("");
edtMessage.setText("");
spnSubject.setSelection(0);
}
/**
* This method used to get bitmap from url.
*
* @param src
* represented source url
* @return represented {@link Bitmap}
*/
public Bitmap getBitmapFromURL(String src) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
/**
* This method used to create contact view.
*/
public void createView() {
if (contactInfo.get(NAME).trim().toString().length() > 0) {
txtValueName.setText(contactInfo.get(NAME).trim());
}
if (contactInfo.get(POSITON).trim().toString().length() > 0) {
txtValuePosition.setText(contactInfo.get(POSITON).trim());
}
if (contactInfo.get(ADDRESS).trim().toString().length() > 0) {
txtValueAddress.setText(contactInfo.get(ADDRESS).trim());
}
if (contactInfo.get(STATE).trim().toString().length() > 0) {
txtValueState.setText(contactInfo.get(STATE).trim());
}
if (contactInfo.get(COUNTRY).trim().toString().length() > 0) {
txtValueCountry.setText(contactInfo.get(COUNTRY).trim());
}
if (contactInfo.get(POSTCODE).trim().toString().length() > 0 && contactInfo.get(CITY).trim().toString().length() == 0) {
txtValuePostcode.setText(contactInfo.get(POSTCODE).trim());
lnrContactPostcode.setVisibility(View.VISIBLE);
}
if (contactInfo.get(CITY).trim().toString().length() > 0) {
txtValueCity.setText(contactInfo.get(CITY).trim() + "-" + contactInfo.get(POSTCODE).trim());
}
if (contactInfo.get(TELEPHONE).trim().toString().length() > 0) {
txtValueTelephone.setText(contactInfo.get(TELEPHONE).trim());
lnrContactTelephone.setVisibility(View.VISIBLE);
}
if (contactInfo.get(FAX).trim().toString().length() > 0) {
txtValueFax.setText(contactInfo.get(FAX).trim());
lnrContactFax.setVisibility(View.VISIBLE);
}
if (contactInfo.get(MOBILE).trim().toString().length() > 0) {
txtValueMobile.setText(contactInfo.get(MOBILE).trim());
lnrContactMobile.setVisibility(View.VISIBLE);
}
if (contactInfo.get(WEBPAGE).trim().toString().length() > 0) {
txtValueWebpage.setText(contactInfo.get(WEBPAGE).trim());
}
if (contactInfo.get(MISC).trim().toString().length() > 0) {
txtValueMisc.setText(contactInfo.get(MISC).trim());
}
if (contactInfo.get(EMAILTO).trim().toString().length() > 0) {
txtValueEmailTo.setText(contactInfo.get(EMAILTO).trim());
}
if (contactInfo.containsKey(IMAGE)) {
androidAQuery.id(image).image(contactInfo.get(IMAGE));
imagePath = contactInfo.get(IMAGE);
} else {
image.setVisibility(View.GONE);
}
btnAddToContact.setVisibility(View.VISIBLE);
if (contactInfo.get(LINKS) != null && contactInfo.get(LINKS).length() > 0) {
try {
lnrLinks.removeAllViews();
JSONArray jsonArrayUrls = new JSONArray(contactInfo.get(LINKS));
for (int i = 0; i < jsonArrayUrls.length(); i++) {
JSONObject jsonObject = jsonArrayUrls.getJSONObject(i);
IjoomerTextView textUrl = new IjoomerTextView(PluginsContactUsActivity.this);
textUrl.setTag(jsonObject.get("url").toString());
textUrl.setTextColor(Color.parseColor(getString(R.color.blue)));
SpannableString spanString = new SpannableString(jsonObject.get("caption").toString());
spanString.setSpan(new UnderlineSpan(), 0, spanString.length(), 0);
spanString.setSpan(new StyleSpan(Typeface.NORMAL), 0, spanString.length(), 0);
textUrl.setText(spanString);
textUrl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String url = (String) v.getTag();
Intent intent = new Intent(PluginsContactUsActivity.this, IjoomerWebviewClient.class);
intent.putExtra("url", url);
startActivity(intent);
}
});
lnrLinks.addView(textUrl);
}
} catch (Exception e) {
}
}
}
}