1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-11-12 04:25:08 -05:00

Eliminate secret debug preferences activity. Add debug preferences to

global preferences.
This commit is contained in:
Daniel Applebaum 2009-10-31 17:10:54 +00:00
parent 94c9454c75
commit 581486fbd5
12 changed files with 66 additions and 183 deletions

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/version"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/debug_version_fmt"
/>
<CheckBox
android:id="@+id/debug_logging"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/debug_enable_debug_logging_label"
/>
<CheckBox
android:id="@+id/sensitive_logging"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/debug_enable_sensitive_logging_label"
/>
</LinearLayout>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/dump_settings"
android:title="@string/dump_settings_action" />
</menu>

View File

@ -175,8 +175,10 @@ Welcome to K-9 Mail setup. K-9 is an open source email client for Android based
</string> </string>
<string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string> <string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string>
<string name="debug_enable_debug_logging_label">Enable extra debug logging?</string> <string name="debug_enable_debug_logging_title">Enable debug logging?</string>
<string name="debug_enable_sensitive_logging_label">Enable sensitive information debug logging? (May show passwords in logs.)</string> <string name="debug_enable_debug_logging_summary">Log extra information for diagnostics</string>
<string name="debug_enable_sensitive_logging_title">Log sensitive information(May show passwords in logs.)</string>
<string name="debug_enable_sensitive_logging_summary">May show passwords in logs.</string>
<string name="message_header_mua">K-9 for Android <xliff:g id="version">%s</xliff:g></string> <string name="message_header_mua">K-9 for Android <xliff:g id="version">%s</xliff:g></string>
@ -530,5 +532,6 @@ Welcome to K-9 Mail setup. K-9 is an open source email client for Android based
<string name="setting_theme_dark">Dark</string> <string name="setting_theme_dark">Dark</string>
<string name="setting_theme_light">Light</string> <string name="setting_theme_light">Light</string>
<string name="display_preferences">Display Preferences</string> <string name="display_preferences">Display Preferences</string>
<string name="debug_preferences">Diagnostic Preferences</string>
<string name="settings_theme_label">Theme</string> <string name="settings_theme_label">Theme</string>
</resources> </resources>

View File

@ -24,8 +24,20 @@
android:entries="@array/settings_theme_entries" android:entries="@array/settings_theme_entries"
android:entryValues="@array/settings_theme_values" android:entryValues="@array/settings_theme_values"
android:dialogTitle="@string/settings_theme_label" /> android:dialogTitle="@string/settings_theme_label" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="@string/debug_preferences" android:key="debug_preferences">
<CheckBoxPreference
android:key="debug_logging"
android:title="@string/debug_enable_debug_logging_title"
android:summary="@string/debug_enable_debug_logging_summary"
/>
<CheckBoxPreference
android:key="sensitive_logging"
android:title="@string/debug_enable_sensitive_logging_title"
android:summary="@string/debug_enable_sensitive_logging_summary"
/>
</PreferenceCategory>

View File

@ -7,6 +7,7 @@ import android.app.Application;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.net.Uri; import android.net.Uri;
import android.util.Log; import android.util.Log;
@ -24,6 +25,8 @@ public class Email extends Application {
public static File tempDirectory; public static File tempDirectory;
public static final String LOG_TAG = "k9"; public static final String LOG_TAG = "k9";
private static int theme = android.R.style.Theme_Light;
/** /**
* Some log messages can be sent to a file, so that the logs * Some log messages can be sent to a file, so that the logs
* can be read using unprivileged access (eg. Terminal Emulator) * can be read using unprivileged access (eg. Terminal Emulator)
@ -234,13 +237,24 @@ public class Email extends Application {
} }
} }
public static void save(SharedPreferences preferences)
{
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("enableDebugLogging", Email.DEBUG);
editor.putBoolean("enableSensitiveLogging", Email.DEBUG_SENSITIVE);
editor.putInt("theme", theme);
editor.commit();
}
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
app = this; app = this;
Preferences prefs = Preferences.getPreferences(this); Preferences prefs = Preferences.getPreferences(this);
DEBUG = prefs.getEnableDebugLogging(); SharedPreferences sprefs = prefs.getPreferences();
DEBUG_SENSITIVE = prefs.getEnableSensitiveLogging(); DEBUG = sprefs.getBoolean("enableDebugLogging", false);
DEBUG_SENSITIVE = sprefs.getBoolean("enableSensitiveLogging", false);
Email.setK9Theme(sprefs.getInt("theme", android.R.style.Theme_Light));
MessagingController.getInstance(this).resetVisibleLimits(prefs.getAccounts()); MessagingController.getInstance(this).resetVisibleLimits(prefs.getAccounts());
/* /*
@ -280,6 +294,16 @@ public class Email extends Application {
MailService.appStarted(this); MailService.appStarted(this);
} }
public static int getK9Theme()
{
return theme;
}
public static void setK9Theme(int ntheme)
{
theme = ntheme;
}
} }

View File

@ -1,6 +1,5 @@
package com.android.email; package com.android.email;
import com.android.email.Preferences;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
@ -9,7 +8,7 @@ import android.os.Bundle;
public class K9Activity extends Activity { public class K9Activity extends Activity {
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
setTheme(Preferences.getPreferences(this).getTheme()); setTheme(Email.getK9Theme());
super.onCreate(icicle); super.onCreate(icicle);
} }

View File

@ -1,7 +1,5 @@
package com.android.email; package com.android.email;
import com.android.email.Preferences;
import android.app.ListActivity; import android.app.ListActivity;
import android.os.Bundle; import android.os.Bundle;
@ -9,7 +7,7 @@ import android.os.Bundle;
public class K9ListActivity extends ListActivity { public class K9ListActivity extends ListActivity {
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
setTheme(Preferences.getPreferences(this).getTheme()); setTheme(Email.getK9Theme());
super.onCreate(icicle); super.onCreate(icicle);
} }

View File

@ -1,7 +1,5 @@
package com.android.email; package com.android.email;
import com.android.email.Preferences;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import android.os.Bundle; import android.os.Bundle;
@ -10,7 +8,7 @@ import android.os.Bundle;
public class K9PreferenceActivity extends PreferenceActivity { public class K9PreferenceActivity extends PreferenceActivity {
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
setTheme(Preferences.getPreferences(this).getTheme()); setTheme(Email.getK9Theme());
super.onCreate(icicle); super.onCreate(icicle);
} }

View File

@ -1,8 +1,6 @@
package com.android.email; package com.android.email;
import java.util.Arrays;
import com.android.email.preferences.Editor; import com.android.email.preferences.Editor;
import com.android.email.preferences.Storage; import com.android.email.preferences.Storage;
@ -101,30 +99,6 @@ public class Preferences {
getPreferences().edit().putString("defaultAccountUuid", account.getUuid()).commit(); getPreferences().edit().putString("defaultAccountUuid", account.getUuid()).commit();
} }
public void setEnableDebugLogging(boolean value) {
getPreferences().edit().putBoolean("enableDebugLogging", value).commit();
}
public boolean getEnableDebugLogging() {
return getPreferences().getBoolean("enableDebugLogging", false);
}
public void setTheme(int theme) {
getPreferences().edit().putInt("theme", theme).commit();
}
public int getTheme() {
return getPreferences().getInt("theme", android.R.style.Theme_Light);
}
public void setEnableSensitiveLogging(boolean value) {
getPreferences().edit().putBoolean("enableSensitiveLogging", value).commit();
}
public boolean getEnableSensitiveLogging() {
return getPreferences().getBoolean("enableSensitiveLogging", false);
}
public void dump() { public void dump() {
if (Config.LOGV) { if (Config.LOGV) {
for (String key : getPreferences().getAll().keySet()) { for (String key : getPreferences().getAll().keySet()) {

View File

@ -57,15 +57,7 @@ public class Accounts extends K9ListActivity implements OnItemClickListener, OnC
private ConcurrentHashMap<String, Integer> unreadMessageCounts = new ConcurrentHashMap<String, Integer>(); private ConcurrentHashMap<String, Integer> unreadMessageCounts = new ConcurrentHashMap<String, Integer>();
private ConcurrentHashMap<Account, String> pendingWork = new ConcurrentHashMap<Account, String>(); private ConcurrentHashMap<Account, String> pendingWork = new ConcurrentHashMap<Account, String>();
/**
* Key codes used to open a debug settings screen.
*/
private static int[] secretKeyCodes = {
KeyEvent.KEYCODE_D, KeyEvent.KEYCODE_E, KeyEvent.KEYCODE_B, KeyEvent.KEYCODE_U,
KeyEvent.KEYCODE_G
};
private int mSecretKeyCodeIndex = 0;
private Account mSelectedContextAccount; private Account mSelectedContextAccount;
private AccountsHandler mHandler = new AccountsHandler(); private AccountsHandler mHandler = new AccountsHandler();
@ -581,15 +573,6 @@ public class Accounts extends K9ListActivity implements OnItemClickListener, OnC
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getKeyCode() == secretKeyCodes[mSecretKeyCodeIndex]) {
mSecretKeyCodeIndex++;
if (mSecretKeyCodeIndex == secretKeyCodes.length) {
mSecretKeyCodeIndex = 0;
startActivity(new Intent(this, Debug.class));
}
} else {
mSecretKeyCodeIndex = 0;
}
return super.onKeyDown(keyCode, event); return super.onKeyDown(keyCode, event);
} }

View File

@ -1,91 +0,0 @@
package com.android.email.activity;
import com.android.email.K9Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;
import com.android.email.Email;
import com.android.email.Preferences;
import com.android.email.R;
import java.lang.Integer;
public class Debug extends K9Activity implements OnCheckedChangeListener {
private TextView mVersionView;
private CheckBox mEnableDebugLoggingView;
private CheckBox mEnableSensitiveLoggingView;
private Preferences mPreferences;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.debug);
mPreferences = Preferences.getPreferences(this);
mVersionView = (TextView)findViewById(R.id.version);
mEnableDebugLoggingView = (CheckBox)findViewById(R.id.debug_logging);
mEnableSensitiveLoggingView = (CheckBox)findViewById(R.id.sensitive_logging);
mEnableDebugLoggingView.setOnCheckedChangeListener(this);
mEnableSensitiveLoggingView.setOnCheckedChangeListener(this);
mVersionView.setText(String.format(getString(R.string.debug_version_fmt).toString(), getVersionNumber()));
mEnableDebugLoggingView.setChecked(Email.DEBUG);
mEnableSensitiveLoggingView.setChecked(Email.DEBUG_SENSITIVE);
}
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView.getId() == R.id.debug_logging) {
Email.DEBUG = isChecked;
mPreferences.setEnableDebugLogging(Email.DEBUG);
} else if (buttonView.getId() == R.id.sensitive_logging) {
Email.DEBUG_SENSITIVE = isChecked;
mPreferences.setEnableSensitiveLogging(Email.DEBUG_SENSITIVE);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.dump_settings) {
Preferences.getPreferences(this).dump();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.debug_option, menu);
return true;
}
private String getVersionNumber() {
String version = "?";
int vnum;
try {
PackageInfo pi =
getPackageManager().getPackageInfo(getPackageName(), 0);
version = Integer.toString(pi.versionCode);
} catch (PackageManager.NameNotFoundException e){
Log.e(Email.LOG_TAG, "Package name not found: " + e.getMessage());
};
return version;
}
}

View File

@ -8,6 +8,7 @@ import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.Button; import android.widget.Button;
import android.widget.CheckBox;
import android.preference.EditTextPreference; import android.preference.EditTextPreference;
import android.preference.ListPreference; import android.preference.ListPreference;
import android.preference.CheckBoxPreference; import android.preference.CheckBoxPreference;
@ -26,8 +27,13 @@ public class Prefs extends K9PreferenceActivity {
private static final String PREFERENCE_TOP_CATERGORY = "preferences"; private static final String PREFERENCE_TOP_CATERGORY = "preferences";
private static final String PREFERENCE_THEME = "theme"; private static final String PREFERENCE_THEME = "theme";
private static final String PREFERENCE_DEBUG_LOGGING = "debug_logging";
private static final String PREFERENCE_SENSITIVE_LOGGING = "sensitive_logging";
private ListPreference mTheme; private ListPreference mTheme;
private CheckBoxPreference mDebugLogging;
private CheckBoxPreference mSensitiveLogging;
public static void actionPrefs(Context context) { public static void actionPrefs(Context context) {
Intent i = new Intent(context, Prefs.class); Intent i = new Intent(context, Prefs.class);
@ -41,11 +47,8 @@ public class Prefs extends K9PreferenceActivity {
addPreferencesFromResource(R.xml.global_preferences); addPreferencesFromResource(R.xml.global_preferences);
Preference category = findPreference(PREFERENCE_TOP_CATERGORY);
mTheme = (ListPreference) findPreference(PREFERENCE_THEME); mTheme = (ListPreference) findPreference(PREFERENCE_THEME);
mTheme.setValue(String.valueOf(Preferences.getPreferences(this).getTheme() == android.R.style.Theme ? "dark" : "light")); mTheme.setValue(String.valueOf(Email.getK9Theme() == android.R.style.Theme ? "dark" : "light"));
mTheme.setSummary(mTheme.getEntry()); mTheme.setSummary(mTheme.getEntry());
mTheme.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { mTheme.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
@ -57,6 +60,12 @@ public class Prefs extends K9PreferenceActivity {
} }
}); });
mDebugLogging = (CheckBoxPreference)findPreference(PREFERENCE_DEBUG_LOGGING);
mSensitiveLogging = (CheckBoxPreference)findPreference(PREFERENCE_SENSITIVE_LOGGING);
mDebugLogging.setChecked(Email.DEBUG);
mSensitiveLogging.setChecked(Email.DEBUG_SENSITIVE);
} }
@Override @Override
@ -65,7 +74,11 @@ public class Prefs extends K9PreferenceActivity {
} }
private void saveSettings() { private void saveSettings() {
Preferences.getPreferences(this).setTheme(mTheme.getValue().equals("dark") ? android.R.style.Theme : android.R.style.Theme_Light); SharedPreferences preferences = Preferences.getPreferences(this).getPreferences();
Email.setK9Theme(mTheme.getValue().equals("dark") ? android.R.style.Theme : android.R.style.Theme_Light);
Email.DEBUG = mDebugLogging.isChecked();
Email.DEBUG_SENSITIVE = mSensitiveLogging.isChecked();
Email.save(preferences);
} }
@Override @Override