/**
*
*/
package com.rackspacecloud.android;
import java.util.Calendar;
import android.app.Dialog;
import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TabHost;
import android.widget.Toast;
import com.rackspace.cloud.android.R;
/**
* @author Mike Mayo - mike.mayo@rackspace.com - twitter.com/greenisus
*
*/
public class TabViewActivity extends TabActivity {
protected AndroidCloudApplication app;
private final int PASSWORD_PROMPT = 123;
private boolean loggedIn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost tabs = getTabHost();
TabHost.TabSpec spec = tabs.newTabSpec("tab1");
spec.setContent(new Intent(this, ListServersActivity.class));
spec.setIndicator("Cloud Servers", getResources().getDrawable(R.drawable.cloudservers_icon));
tabs.addTab(spec);
spec = tabs.newTabSpec("tab2");
spec.setContent(new Intent(this, ListContainerActivity.class));
spec.setIndicator("Cloud Files", getResources().getDrawable(R.drawable.cloudfiles));
tabs.addTab(spec);
spec = tabs.newTabSpec("tab3");
spec.setContent(new Intent(this, ListLoadBalancersActivity.class));
spec.setIndicator("Load Balancers", getResources().getDrawable(R.drawable.load_balancers_icon));
tabs.addTab(spec);
}
@Override
protected void onPause(){
super.onPause();
Calendar cal = Calendar.getInstance();
AndroidCloudApplication.lastPause = cal.getTimeInMillis();
}
@Override
protected void onResume(){
super.onResume();
Calendar cal = Calendar.getInstance();
long curTime = cal.getTimeInMillis();
if(curTime - AndroidCloudApplication.lastPause > 5000){
verifyPassword();
}
}
/*
* if the application is password protected,
* the user must provide the password before
* gaining access
*/
private void verifyPassword(){
PasswordManager pwManager = new PasswordManager(getSharedPreferences(
Preferences.SHARED_PREFERENCES_NAME, MODE_PRIVATE));
if(pwManager.hasPassword() && !loggedIn){
createCustomDialog(PASSWORD_PROMPT);
}
}
private boolean rightPassword(String password){
PasswordManager pwManager = new PasswordManager(getSharedPreferences(
Preferences.SHARED_PREFERENCES_NAME, MODE_PRIVATE));
return pwManager.verifyEnteredPassword(password);
}
/*
* forces the user to enter a correct password
* before they gain access to application data
*/
private void createCustomDialog(int id) {
final Dialog dialog = new Dialog(TabViewActivity.this);
switch (id) {
case PASSWORD_PROMPT:
dialog.setContentView(R.layout.passworddialog);
dialog.setTitle("Enter your password:");
dialog.setCancelable(false);
Button button = (Button) dialog.findViewById(R.id.submit_password);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v){
EditText passwordText = ((EditText)dialog.findViewById(R.id.submit_password_text));
if(!rightPassword(passwordText.getText().toString())){
passwordText.setText("");
showToast("Password was incorrect.");
loggedIn = false;
}
else{
dialog.dismiss();
loggedIn = true;
}
}
});
dialog.show();
}
}
protected void showToast(String message) {
Context context = getApplicationContext();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, message, duration);
toast.show();
}
}