package com.werds.ishowup.ui; import java.util.Map; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v4.app.NavUtils; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.werds.ishowup.R; import com.werds.ishowup.validation.AttendanceValidator; public class ValidateActivity extends Activity { private AttendanceValidator validator = null; private SharedPreferences sp; private ImageView icon; private Button return_btn; private TextView hello, youHave, courseInfo; private String netID; private String firstName = ""; private String sectionDisplayName = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_validate); getActionBar().setDisplayHomeAsUpEnabled(true); icon = (ImageView) findViewById(R.id.checkin_status); return_btn = (Button) findViewById(R.id.return_btn); hello = (TextView) findViewById(R.id.hello); youHave = (TextView) findViewById(R.id.you_have); courseInfo = (TextView) findViewById(R.id.course_info); sp = this.getSharedPreferences("userInfo", MODE_PRIVATE); netID = sp.getString("NetID", null); Bundle bundle = getIntent().getExtras(); String qrCodeData = new String(bundle.getString("QRCodeData")); firstName = sp.getString("FirstName", null); validator = new AttendanceValidator(netID, qrCodeData); validator.validateCheckIn(); Log.d("ValidatorStatus", Boolean.toString(validator.isValid())); if (validator.isValid()) { onValidateSuccess(); // check in successfully } else { onValidateFailed(); // check in failed } } private void onValidateSuccess() { icon.setBackgroundResource(R.drawable.check); hello.setText("Hello " + firstName + ","); courseInfo.setText(sectionDisplayName); return_btn.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(ValidateActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } }); /** * Get Extra info */ Map<String, Boolean> detailStatus = validator.getDetailStatus(); boolean overallStatus = detailStatus.get("Status").booleanValue(); boolean alreadyCheckedIn = detailStatus.get("AlreadyCheckedIn").booleanValue(); Map<String, String> checkInInfo = validator.fetchCheckInInfo(); if (checkInInfo != null) { this.sectionDisplayName = checkInInfo.get("SectionName"); String totalCount = checkInInfo.get("totalCount"); String attendCount = checkInInfo.get("attendCount"); } } private void onValidateFailed() { icon.setBackgroundResource(R.drawable.cross); hello.setText("Sorry " + firstName + ","); youHave.setText("Check in failed."); return_btn.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(ValidateActivity.this, ScanActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } }); return_btn.setText("Try again"); /** * Get the reason of failure */ Map<String, Boolean> detailStatus = validator.getDetailStatus(); if (detailStatus.get("QRCode")) { boolean overallStatus = detailStatus.get("Status").booleanValue(); boolean timeStatus = detailStatus.get("Time").booleanValue(); boolean sectionReadyStatus = detailStatus.get("SectionReady").booleanValue(); boolean locationStatus = detailStatus.get("Location").booleanValue(); boolean secretKeyStatus = detailStatus.get("SecretKey").booleanValue(); boolean deviceIDStatus = detailStatus.get("DeviceID").booleanValue(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item); } // Disable back button. (override to avoid unknown terminating) @Override public void onBackPressed() { } }