Revision 53196bc0

View differences:

app/res/xml/settings.xml
3 3
        <PreferenceCategory
4 4
                android:title="@string/general_settings" >
5 5
         		<Preference 
6
			        android:key="cacheword_timeout"
6
			        android:key="cacheword_timeout_seconds"
7 7
			        android:title="@string/change_timeout_prompt_title" />
8 8
         		<EditTextPreference
9 9
		            android:key="encrypted_secrets"
app/src/info/guardianproject/notepadbot/Settings.java
1 1
package info.guardianproject.notepadbot;
2 2

  
3 3

  
4
import java.io.IOException;
5
import java.security.GeneralSecurityException;
6

  
7
import net.simonvt.numberpicker.NumberPicker;
8 4
import info.guardianproject.cacheword.CacheWordActivityHandler;
9 5
import info.guardianproject.cacheword.Constants;
10 6
import info.guardianproject.cacheword.ICacheWordSubscriber;
11 7
import info.guardianproject.cacheword.PassphraseSecrets;
12 8

  
9
import java.io.IOException;
10

  
11
import net.simonvt.numberpicker.NumberPicker;
13 12
import android.annotation.SuppressLint;
14 13
import android.app.AlertDialog;
15 14
import android.content.Context;
......
31 30
@SuppressLint("NewApi")
32 31
@SuppressWarnings("deprecation")
33 32
public class Settings extends SherlockPreferenceActivity implements ICacheWordSubscriber {
34
	
33

  
35 34
	public static final String LANG_SEL_KEY = "langSelected";
36
	
35

  
37 36
	private CacheWordActivityHandler mCacheWord;
38
	
37

  
39 38
	@Override
40 39
	public void onCreate(Bundle savedInstanceState) {
41 40
		super.onCreate(savedInstanceState);
42 41
		getSupportActionBar().setDisplayHomeAsUpEnabled(true);
43
		
42

  
44 43
		mCacheWord = new CacheWordActivityHandler(this, ((App)getApplication()).getCWSettings());
45
		
44

  
46 45
		// If in android 3+ use a preference fragment which is the new recommended way
47 46
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
48 47
			getFragmentManager().beginTransaction()
......
51 50
						public void onCreate(final Bundle savedInstanceState) {
52 51
							super.onCreate(savedInstanceState);
53 52
							addPreferencesFromResource(R.xml.settings);
54
							findPreference(Constants.SHARED_PREFS_TIMEOUT)
53
							findPreference(Constants.SHARED_PREFS_TIMEOUT_SECONDS)
55 54
								.setOnPreferenceClickListener(changeLockTimeoutListener);
56 55
							findPreference(Constants.SHARED_PREFS_VIBRATE)
57 56
								.setOnPreferenceChangeListener(vibrateChangeListener);
58 57
							findPreference(Constants.SHARED_PREFS_SECRETS)
59 58
								.setOnPreferenceChangeListener(passphraseChangeListener);
60
							
59

  
61 60
						}
62 61
					})
63 62
					.commit();
64 63
		} else {
65 64
			// Otherwise load the preferences.xml in the Activity like in previous android versions
66 65
			addPreferencesFromResource(R.xml.settings);
67
			findPreference(Constants.SHARED_PREFS_TIMEOUT)
66
			findPreference(Constants.SHARED_PREFS_TIMEOUT_SECONDS)
68 67
				.setOnPreferenceClickListener(changeLockTimeoutListener);
69 68
			findPreference(Constants.SHARED_PREFS_VIBRATE)
70 69
				.setOnPreferenceChangeListener(vibrateChangeListener);
......
72 71
				.setOnPreferenceChangeListener(passphraseChangeListener);
73 72
		}
74 73
	}
75
	
76
	
77
	
74

  
75

  
76

  
78 77
	@Override
79 78
	public boolean onOptionsItemSelected(MenuItem item) {
80 79
		switch (item.getItemId()) {
......
89 88
	public void onDestroy() {
90 89
		super.onDestroy();
91 90
	}
92
	
93
	private Preference.OnPreferenceClickListener changeLockTimeoutListener = 
91

  
92
	private Preference.OnPreferenceClickListener changeLockTimeoutListener =
94 93
			new Preference.OnPreferenceClickListener() {
95 94
					@Override
96 95
					public boolean onPreferenceClick(Preference pref) {
......
98 97
						return true;
99 98
					}
100 99
	};
101
	
102
	private Preference.OnPreferenceChangeListener vibrateChangeListener = 
100

  
101
	private Preference.OnPreferenceChangeListener vibrateChangeListener =
103 102
			new OnPreferenceChangeListener(){
104 103
		@Override
105 104
		public boolean onPreferenceChange(Preference pref, Object newValue) {
......
108 107
			return true;
109 108
		}
110 109
	};
111
	
112
	private Preference.OnPreferenceChangeListener passphraseChangeListener = 
110

  
111
	private Preference.OnPreferenceChangeListener passphraseChangeListener =
113 112
			new OnPreferenceChangeListener(){
114 113
		@Override
115 114
		public boolean onPreferenceChange(Preference pref, Object newValue) {
115
			// save option internally in cacheword as well
116 116
			try {
117 117
				char[] pass = ((String) newValue).toCharArray();
118 118
				if (NConstants.validatePassword(pass)) {
119 119
					mCacheWord.changePassphrase((PassphraseSecrets) mCacheWord.getCachedSecrets(), pass);
120 120
				} else {
121
					Toast.makeText(getApplicationContext(), 
121
					Toast.makeText(getApplicationContext(),
122 122
							R.string.pass_err_length, Toast.LENGTH_SHORT).show();
123 123
				}
124 124
			} catch (IOException e) {
125
				Toast.makeText(getApplicationContext(), 
125
				Toast.makeText(getApplicationContext(),
126 126
						R.string.pass_err, Toast.LENGTH_SHORT).show();
127 127
			}
128 128
			return false;
129 129
		}
130 130
	};
131
	
131

  
132 132
	public static final boolean getNoteLinesOption(Context context) {
133 133
		boolean defValue = context.getResources().getBoolean(R.bool.notecipher_uselines_default);
134 134
        return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(NConstants.SHARED_PREFS_NOTELINES, defValue);
135 135
	}
136
	
136

  
137 137
	private void changeTimeoutPrompt() {
138
		if (mCacheWord.isLocked())
139
            return;
140
		
138
		if (mCacheWord.isLocked()) {
139
			return;
140
		}
141

  
141 142
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
142 143
        builder.setTitle(R.string.change_timeout_prompt_title);
143 144
        builder.setMessage(R.string.change_timeout_prompt);
144 145
        final NumberPicker input = new NumberPicker(this);
145 146
        input.setMinValue(1);
146 147
        input.setMaxValue(60);
147
        input.setValue( mCacheWord.getTimeoutMinutes() );
148
        input.setValue( mCacheWord.getTimeoutSeconds() );
148 149
        builder.setView(input);
149 150

  
150 151
        builder.setPositiveButton("OK",
......
152 153
                    @Override
153 154
                    public void onClick(DialogInterface dialog, int which) {
154 155
                        int timeout = input.getValue();
155
                        mCacheWord.setTimeoutMinutes(timeout);
156
                        mCacheWord.setTimeoutSeconds(timeout);
156 157
                        dialog.dismiss();
157 158
                    }
158 159
                });
......
182 183
	}
183 184

  
184 185
	@Override
185
	public void onCacheWordOpened() { 
186
	public void onCacheWordOpened() {
186 187
		Log.d(NConstants.TAG, "onCacheWordOpened");
187 188
	}
188
	
189

  
189 190
	@Override
190 191
    protected void onPause() {
191 192
        super.onPause();
......
197 198
        super.onResume();
198 199
        mCacheWord.onResume();
199 200
    }
200
    
201

  
201 202
    void showLockScreen() {
202 203
        Intent intent = new Intent(this, LockScreenActivity.class);
203 204
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
......
205 206
        startActivity(intent);
206 207
        finish();
207 208
    }
208
}
209
}

Also available in: Unified diff