Statistics
| Branch: | Revision:

root / src / com / rackspace / cloud / android / TabViewActivity.java @ d81b2ba1

History | View | Annotate | Download (3.5 kB)

1
/**
2
 * 
3
 */
4
package com.rackspace.cloud.android;
5

    
6
import java.util.Calendar;
7

    
8
import android.app.Dialog;
9
import android.app.TabActivity;
10
import android.content.Context;
11
import android.content.Intent;
12
import android.os.Bundle;
13
import android.view.View;
14
import android.view.View.OnClickListener;
15
import android.widget.Button;
16
import android.widget.EditText;
17
import android.widget.TabHost;
18
import android.widget.Toast;
19

    
20
import com.rackspace.cloud.android.R;
21

    
22
/**
23
 * @author Mike Mayo - mike.mayo@rackspace.com - twitter.com/greenisus
24
 * 
25
 */
26
public class TabViewActivity extends TabActivity {
27

    
28
        protected AndroidCloudApplication app;
29
        private final int PASSWORD_PROMPT = 123;
30
        private boolean loggedIn;
31
        
32
        @Override
33
        public void onCreate(Bundle savedInstanceState) {
34
                super.onCreate(savedInstanceState);
35

    
36
                TabHost tabs = getTabHost();
37
                
38
                TabHost.TabSpec spec = tabs.newTabSpec("tab2");
39
                spec.setContent(new Intent(this, ListContainerActivity.class));
40
                spec.setIndicator("Cloud Files",
41
                                getResources().getDrawable(R.drawable.cloudfiles));
42
                tabs.addTab(spec);
43
                /*
44
                spec = tabs.newTabSpec("tab1");
45
                spec.setContent(new Intent(this, ListServersActivity.class));
46
                spec.setIndicator("Cloud Servers",
47
                                getResources().getDrawable(R.drawable.cloudservers_icon));
48
                tabs.addTab(spec);
49

50
                
51
                
52
                spec = tabs.newTabSpec("tab3");
53
                spec.setContent(new Intent(this, ListLoadBalancersActivity.class));
54
                spec.setIndicator("Load Balancers", getResources().getDrawable(R.drawable.load_balancers_icon));
55
                tabs.addTab(spec);*/
56
        }
57
        
58
        @Override
59
        protected void onPause(){
60
                super.onPause();
61
                Calendar cal = Calendar.getInstance();
62
                AndroidCloudApplication.lastPause = cal.getTimeInMillis();
63
        }
64
        
65
        @Override
66
        protected void onResume(){
67
                super.onResume();
68
                Calendar cal = Calendar.getInstance();
69
                long curTime = cal.getTimeInMillis();
70
                if(curTime - AndroidCloudApplication.lastPause > 5000){
71
                        verifyPassword();
72
                }
73
        }
74
        
75
        /*
76
         * if the application is password protected,
77
         * the user must provide the password before
78
         * gaining access
79
         */
80
        private void verifyPassword(){
81
                PasswordManager pwManager = new PasswordManager(getSharedPreferences(
82
                                Preferences.SHARED_PREFERENCES_NAME, MODE_PRIVATE));
83
                if(pwManager.hasPassword() && !loggedIn){
84
                        createCustomDialog(PASSWORD_PROMPT);
85
                }
86
        }
87

    
88
        private boolean rightPassword(String password){
89
                PasswordManager pwManager = new PasswordManager(getSharedPreferences(
90
                                Preferences.SHARED_PREFERENCES_NAME, MODE_PRIVATE));
91
                return pwManager.verifyEnteredPassword(password);
92
        }
93

    
94

    
95
        /*
96
         * forces the user to enter a correct password
97
         * before they gain access to application data
98
         */
99
        private void createCustomDialog(int id) {
100
                final Dialog dialog = new Dialog(TabViewActivity.this);
101
                switch (id) {
102
                case PASSWORD_PROMPT:
103
                        dialog.setContentView(R.layout.passworddialog);
104
                        dialog.setTitle("Enter your password:");
105
                        dialog.setCancelable(false);
106
                        Button button = (Button) dialog.findViewById(R.id.submit_password);
107
                        button.setOnClickListener(new OnClickListener() {
108
                                public void onClick(View v){
109
                                        EditText passwordText = ((EditText)dialog.findViewById(R.id.submit_password_text));
110
                                        if(!rightPassword(passwordText.getText().toString())){
111
                                                passwordText.setText("");
112
                                                showToast("Password was incorrect.");
113
                                                loggedIn = false;
114
                                        }
115
                                        else{
116
                                                dialog.dismiss();
117
                                                loggedIn = true;
118
                                        }
119
                                }
120

    
121
                        });
122
                        dialog.show();
123
                }
124
        }
125
        
126
        protected void showToast(String message) {
127
                Context context = getApplicationContext();
128
                int duration = Toast.LENGTH_SHORT;
129
                Toast toast = Toast.makeText(context, message, duration);
130
                toast.show();
131
        }
132

    
133
}