/**
*
* @author Rachit Mishra
* @licence The MIT License (MIT) Copyright (c) <2013> <Rachit Mishra>
*
*/
package in.ceeq.splash;
import in.ceeq.Ceeq;
import in.ceeq.R;
import in.ceeq.commons.Utils;
import in.ceeq.home.HomeActivity;
import in.ceeq.receivers.DeviceAdministrationReceiver;
import java.util.ArrayList;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.provider.ContactsContract;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import com.android.volley.cache.SimpleImageLoader;
import com.github.johnpersano.supertoasts.SuperToast;
public class SetupActivity extends Activity {
private static final int DEVICE_ADMIN_ACTIVATION_REQUEST = 9011;
private boolean exit = false;
private boolean isPinSet;
private boolean isContactSet;
private EditText pinNumber;
private SimpleImageLoader imageLoader;
private ImageView userImage;
private TextView userName;
private Button selectContact;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Utils.w("Setup");
setContentView(R.layout.activity_firstrun);
setupImageCache();
setupUi();
setupListeners();
// setupHelplist();
Utils.defaults(this);
setupDevice();
pinNumber = (EditText) findViewById(R.id.pinNumber);
pinNumber.addTextChangedListener(new PinValidator());
}
private void setupUi() {
userImage = (ImageView) findViewById(R.id.user_image);
selectContact = (Button) findViewById(R.id.chooseContact);
String imageUrl = Utils.getStringPrefs(this, Utils.ACCOUNT_USER_IMAGE_URL);
imageLoader.get(imageUrl, userImage, getResources().getDrawable(R.drawable.ic_user));
userName = (TextView) findViewById(R.id.user_name);
String username = Utils.getStringPrefs(this, Utils.ACCOUNT_USER_NAME);
userName.setText(" " + username);
}
private void setupListeners() {
selectContact.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Utils.chooseContact(SetupActivity.this);
}
});
}
private void setupDevice() {
Utils.setStringPrefs(this, Utils.SIM_NUMBER, Utils.getPhoneData(this, Utils.SIM_ID));
Utils.setStringPrefs(this, Utils.IEMI_NUMBER, Utils.getPhoneData(this, Utils.IEMI));
Utils.setStringPrefs(this, Utils.DEVICE_ID, Utils.getPhoneData(this, Utils.UNIQUE_ID));
}
public void setupImageCache() {
imageLoader = Ceeq.getInstance().getImageCache();
}
private ExpandableListView helpList;
public void setupHelplist() {
// helpList = (ExpandableListView) findViewById(R.id.help_list);
ArrayList<String> help_list = new ArrayList<String>();
help_list.add(getString(R.string.help_note_23));
help_list.add(getString(R.string.help_note_24));
ExpandableListAdapter helplistAdapter = new ListAdapter(this, help_list);
helpList.setAdapter(helplistAdapter);
}
private ToggleButton toggleDeviceAdmin;
public void onButtonPressed(View v) {
switch (v.getId()) {
case R.id.toggle_admin:
toggleDeviceAdmin = (ToggleButton) v.findViewById(R.id.toggle_admin);
Utils.setBooleanPrefs(this, Utils.DEVICE_ADMIN_STATUS, toggleDeviceAdmin.isChecked());
if (toggleDeviceAdmin.isChecked()) {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
ComponentName deviceAdminComponentName = new ComponentName(this, DeviceAdministrationReceiver.class);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminComponentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, getString(R.string.help_note_25));
startActivityForResult(intent, DEVICE_ADMIN_ACTIVATION_REQUEST);
} else {
Utils.setBooleanPrefs(this, Utils.DEVICE_ADMIN_STATUS, false);
Toast.makeText(SetupActivity.this, R.string.toast_string_5, Toast.LENGTH_LONG).show();
}
break;
}
}
public void completeSetup() {
if (isPinSet & isContactSet) {
Utils.setBooleanPrefs(this, Utils.APP_INITIALIZATION_STATUS, true);
Intent launchHome = new Intent(SetupActivity.this, HomeActivity.class);
launchHome.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
launchHome.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
launchHome.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
SuperToast.cancelAllSuperToasts();
startActivity(launchHome);
overridePendingTransition(0, 0);
} else if (!isPinSet) {
if (pinNumber.getText().length() == 0)
pinNumber.setError(getString(R.string.toast_string_10));
else if (pinNumber.getText().length() < 6)
pinNumber.setError("PIN should atleast be of 6 digits.");
} else if (!isContactSet)
SuperToast.create(SetupActivity.this, getResources().getString(R.string.toast_string_11),
Toast.LENGTH_SHORT).show();
}
public class PinValidator implements TextWatcher {
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence text, int arg1, int arg2, int arg3) {
isPinSet = false;
}
@Override
public void onTextChanged(CharSequence text, int arg1, int arg2, int arg3) {
if (text.length() >= 6) {
pinNumber.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_yes, 0);
Utils.setStringPrefs(SetupActivity.this, Utils.PIN_NUMBER, pinNumber.getText().toString());
SuperToast.create(SetupActivity.this, getResources().getText(R.string.toast_string_2),
Toast.LENGTH_LONG).show();
isPinSet = true;
} else {
pinNumber.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
isPinSet = false;
}
}
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
public void onBackPressed() {
if (exit)
SetupActivity.this.finish();
else {
Toast.makeText(getApplicationContext(), R.string.toast_string_3, Toast.LENGTH_SHORT).show();
exit = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
exit = false;
}
}, 3 * 1000);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case DEVICE_ADMIN_ACTIVATION_REQUEST:
if (resultCode == Activity.RESULT_OK) {
Utils.setBooleanPrefs(this, Utils.DEVICE_ADMIN_STATUS, true);
Toast.makeText(this, R.string.toast_string_6, Toast.LENGTH_LONG).show();
} else {
toggleDeviceAdmin.setChecked(false);
Utils.setBooleanPrefs(this, Utils.DEVICE_ADMIN_STATUS, false);
Toast.makeText(this, R.string.toast_string_7, Toast.LENGTH_LONG).show();
}
break;
case Utils.CONTACT_REQUEST:
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor c = getContentResolver().query(contactData, null, null, null, null);
if (c.moveToFirst()) {
String emergencyContactName = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String emergencyContactNumber = c.getString(c
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
selectContact.setText(emergencyContactName + " (" + emergencyContactNumber + ") ");
Utils.setStringPrefs(this, Utils.EMERGENCY_CONTACT_NAME, emergencyContactName);
Utils.setStringPrefs(this, Utils.EMERGENCY_CONTACT_NUMBER, emergencyContactNumber);
Toast.makeText(SetupActivity.this, R.string.toast_string_8, Toast.LENGTH_SHORT).show();
isContactSet = true;
}
c.close();
} else
Toast.makeText(SetupActivity.this, R.string.toast_string_9, Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.setup, menu);
final MenuItem item = menu.findItem(R.id.completeSetupAction);
item.getActionView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
completeSetup();
}
});
return true;
}
}