package edu.mit.mitmobile2.libraries; import java.util.Arrays; import android.app.Activity; 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.view.View; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.SpinnerAdapter; import android.widget.Toast; import edu.mit.mitmobile2.CommonActions; 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 TellUsActivity extends NewModuleActivity { private Activity mContext; private Spinner mStatusSpinner; private EditText mFeedbackText; private Button mSubmitButton; private View mThankYouView; private TwoLineActionRow mContentResult; private TwoLineActionRow mGoHomeButton; private TwoLineActionRow mSuggestPurchaseButton; private FullScreenLoader mLoader; private LockingScrollView mScrollView; private String[] statusArray; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.library_tell_us); addSecondaryTitle("Tell Us"); mContext = this; mScrollView = (LockingScrollView) findViewById(R.id.scrollView); mSuggestPurchaseButton = (TwoLineActionRow) findViewById(R.id.libraryTellUsSuggestPurchase); mSuggestPurchaseButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { CommonActions.viewURL(mContext, "http://libraries.mit.edu/suggest-purchase"); } }); mFeedbackText = (EditText) findViewById(R.id.feebackText); mFeedbackText.addTextChangedListener(mUpdateSubmitButtonTextWatcher); mStatusSpinner = (Spinner) findViewById(R.id.statusSpinner); mSubmitButton = (Button) findViewById(R.id.submit); mSubmitButton.setEnabled(false); mLoader = (FullScreenLoader) findViewById(R.id.tellUsLoading); mThankYouView = findViewById(R.id.libraryTellUsThankYou); 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); } }); 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 = mStatusSpinner.getSelectedItemPosition()-1; String status = null; if(position >= 0) { String[] statusCodeArray = getResources().getStringArray(R.array.libraryStatusCode); status = statusCodeArray[position]; } String feedback = mFeedbackText.getText().toString().trim(); if("".equals(feedback)) { Toast.makeText(TellUsActivity.this, "Description is required!", Toast.LENGTH_LONG).show(); return; } mScrollView.setVisibility(View.GONE); mLoader.setVisibility(View.VISIBLE); mLoader.showLoading(); LibraryModel.sendTellUsInfo(TellUsActivity.this, uiHandler, status, feedback); } }); /* showLoader(); VerifyUserCredentials.VerifyUserHasFormAccess(mContext, new VerifyUserCredentialsListener() { @Override public void onUserLoggedIn(UserIdentity user) { showForm(); } }); */ } TextWatcher mUpdateSubmitButtonTextWatcher = new TextWatcher() { @Override public void afterTextChanged(Editable s) { String feedback = mFeedbackText.getText().toString().trim(); mSubmitButton.setEnabled((feedback.length() > 0)); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } }; private void showLoader() { mScrollView.setVisibility(View.GONE); mLoader.setVisibility(View.VISIBLE); mLoader.showLoading(); } private void showForm() { mScrollView.setVisibility(View.VISIBLE); mLoader.setVisibility(View.GONE); mLoader.stopLoading(); } 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) { } }