package edu.mit.mitmobile2.libraries; import java.util.Arrays; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.Spinner; import android.widget.SpinnerAdapter; import android.widget.Toast; import edu.mit.mitmobile2.FullScreenLoader; import edu.mit.mitmobile2.LockingScrollView; import edu.mit.mitmobile2.MobileWebApi; import edu.mit.mitmobile2.NewModule; import edu.mit.mitmobile2.NewModuleActivity; import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.SimpleSpinnerAdapter; import edu.mit.mitmobile2.TwoLineActionRow; import edu.mit.mitmobile2.libraries.LibraryModel.FormResult; import edu.mit.mitmobile2.libraries.LibraryModel.UserIdentity; import edu.mit.mitmobile2.libraries.VerifyUserCredentials.VerifyUserCredentialsListener; public class AskUsActivity extends NewModuleActivity { private Spinner mTopicSpinner; private Spinner mStatusSpinner; private EditText mSubjectText; private EditText mDetailText; private EditText mDepartmentText; private EditText mPhoneText; private Button mSubmitButton; private View mTechHelpSection; private RadioGroup mOnCampusRadioGroup; private RadioGroup mVPNRadioGroup; private View mThankYouView; private TwoLineActionRow mContentResult; private TwoLineActionRow mGoHomeButton; private FullScreenLoader mLoader; private LockingScrollView mScrollView; private String[] topicsArray; private String[] statusArray; private Context mContext; public static final String TAG = "AskUsActivity"; @Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG,"onCreate()"); super.onCreate(savedInstanceState); setContentView(R.layout.library_ask_us); addSecondaryTitle("Ask Us"); mContext = this; mScrollView = (LockingScrollView) findViewById(R.id.askUsScrollView); mTopicSpinner = (Spinner) findViewById(R.id.topicSpinner); mTopicSpinner.setOnItemSelectedListener(mUpdateSubmitSpinnerListener); mStatusSpinner = (Spinner) findViewById(R.id.statusSpinner); mStatusSpinner.setOnItemSelectedListener(mUpdateSubmitSpinnerListener); mSubjectText = (EditText) findViewById(R.id.subject); mSubjectText.addTextChangedListener(mUpdateSubmitButtonTextWatcher); mDetailText = (EditText) findViewById(R.id.detailedQuestion); mDetailText.addTextChangedListener(mUpdateSubmitButtonTextWatcher); mDepartmentText = (EditText) findViewById(R.id.department); mDepartmentText.addTextChangedListener(mUpdateSubmitButtonTextWatcher); mPhoneText = (EditText) findViewById(R.id.phoneNumber); mPhoneText.addTextChangedListener(mUpdateSubmitButtonTextWatcher); mSubmitButton = (Button) findViewById(R.id.submit); mSubmitButton.setEnabled(false); mThankYouView = findViewById(R.id.libraryAskUsThankYou); mContentResult = (TwoLineActionRow) findViewById(R.id.librariesThankYouContentActionRow); mGoHomeButton = (TwoLineActionRow) findViewById(R.id.librariesThankYouReturnHome); mGoHomeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(mContext, getNewModule().getModuleHomeActivity()); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } }); mLoader = (FullScreenLoader) findViewById(R.id.askUsLoading); mTechHelpSection = findViewById(R.id.librariesTechHelpSection); mOnCampusRadioGroup = (RadioGroup) findViewById(R.id.librariesOnCampusRadioGroup); mOnCampusRadioGroup.setOnCheckedChangeListener(mUpdateSubmitCheckedChangeListener); mVPNRadioGroup = (RadioGroup) findViewById(R.id.librariesVPNRadioGroup); mVPNRadioGroup.setOnCheckedChangeListener(mUpdateSubmitCheckedChangeListener); topicsArray = getResources().getStringArray(R.array.libraryTopics); String topicsTitle = getResources().getString(R.string.libraryTopicsTitle); SpinnerAdapter topicAdapter = new SimpleSpinnerAdapter(this, topicsTitle, Arrays.asList(topicsArray)); mTopicSpinner.setAdapter(topicAdapter); mTopicSpinner.setPrompt(topicsTitle); mTopicSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (position == topicsArray.length) { // this corresponds to the technical help topic mTechHelpSection.setVisibility(View.VISIBLE); } else { mTechHelpSection.setVisibility(View.GONE); } } @Override public void onNothingSelected(AdapterView<?> parent) { mTechHelpSection.setVisibility(View.GONE); } }); statusArray = getResources().getStringArray(R.array.libraryStatus); String statusTitle = getResources().getString(R.string.libraryStatusTitle); SpinnerAdapter statusAdapter = new SimpleSpinnerAdapter(this, statusTitle, Arrays.asList(statusArray)); mStatusSpinner.setAdapter(statusAdapter); mStatusSpinner.setPrompt(statusTitle); mSubmitButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mSubmitButton.getWindowToken(), 0); int position = mTopicSpinner.getSelectedItemPosition()-1; String topic = topicsArray[position]; String subject = mSubjectText.getText().toString().trim(); String question = mDetailText.getText().toString().trim(); String phone = mPhoneText.getText().toString().trim(); position = mStatusSpinner.getSelectedItemPosition()-1; String[] statusCodeArray = getResources().getStringArray(R.array.libraryStatusCode); String status = statusCodeArray[position]; String department = mDepartmentText.getText().toString().trim(); boolean technicalHelp = topic.equals("Technical Help"); String onCampus = null; String usingVPN = null; if(technicalHelp) { if(mOnCampusRadioGroup.getCheckedRadioButtonId() == -1) { // nothing selected. mOnCampusRadioGroup.requestFocus(); prompt("Must select on or off campus"); return; } onCampus = ((RadioButton) findViewById(mOnCampusRadioGroup.getCheckedRadioButtonId())) .getText().toString().toLowerCase(); if(mVPNRadioGroup.getCheckedRadioButtonId() == -1) { mVPNRadioGroup.requestFocus(); prompt("Must specify if your using VPN"); return; } usingVPN = ((RadioButton) findViewById(mVPNRadioGroup.getCheckedRadioButtonId())) .getText().toString().toLowerCase(); } showLoading(); LibraryModel.sendAskUsInfo(AskUsActivity.this, uiHandler, topic, status, department, subject, question, phone, usingVPN, onCampus, "form"); } }); showLoading(); VerifyUserCredentials.VerifyUserHasFormAccess(this, new VerifyUserCredentialsListener() { @Override public void onUserLoggedIn(UserIdentity user) { showForm(); } }); } TextWatcher mUpdateSubmitButtonTextWatcher = new TextWatcher() { @Override public void afterTextChanged(Editable s) { mSubmitButton.setEnabled(formValidates()); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } }; OnItemSelectedListener mUpdateSubmitSpinnerListener = new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View row, int position, long id) { mSubmitButton.setEnabled(formValidates()); } @Override public void onNothingSelected(AdapterView<?> parent) { } }; OnCheckedChangeListener mUpdateSubmitCheckedChangeListener = new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int position) { mSubmitButton.setEnabled(formValidates()); } }; private boolean formValidates() { Spinner[] spinners = new Spinner[] {mTopicSpinner, mStatusSpinner}; for (int i=0; i < spinners.length; i++) { if (spinners[i].getSelectedItemPosition() < 1) { return false; } } EditText[] editTexts = new EditText[] {mSubjectText, mDetailText, mDepartmentText}; for (int i=0; i < editTexts.length; i++) { if (editTexts[i].getText().toString().trim().length() == 0) { return false; } } int position = mTopicSpinner.getSelectedItemPosition()-1; String topic = topicsArray[position]; boolean technicalHelp = topic.equals("Technical Help"); if(technicalHelp) { if(mOnCampusRadioGroup.getCheckedRadioButtonId() == -1) { return false; } if(mVPNRadioGroup.getCheckedRadioButtonId() == -1) { return false; } } return true; } private void showForm() { mScrollView.setVisibility(View.VISIBLE); mLoader.setVisibility(View.GONE); mLoader.stopLoading(); } private void showLoading() { mScrollView.setVisibility(View.GONE); mLoader.setVisibility(View.VISIBLE); mLoader.showLoading(); } private void prompt(String message) { Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } private Handler uiHandler = new Handler() { @Override public void handleMessage(Message msg) { mLoader.setVisibility(View.GONE); if (msg.arg1 == MobileWebApi.SUCCESS) { FormResult result = (FormResult)msg.obj; mThankYouView.setVisibility(View.VISIBLE); mContentResult.setTitle(result.getFeedbackString()); } else { mScrollView.setVisibility(View.VISIBLE); } } }; @Override protected NewModule getNewModule() { return new LibrariesModule(); } @Override public boolean isModuleHomeActivity() { return false; } @Override protected boolean isScrollable() { return false; } @Override protected void onOptionSelected(String optionId) { } }