Misc settings UX fixes.

Bug: 5068602
Change-Id: I02acf3690e98ce747ddb4d3a745ac2fa59948c70
This commit is contained in:
Ben Komalo 2011-07-22 15:15:47 -07:00
parent 48a3a1c51c
commit 72a24f12a2
7 changed files with 104 additions and 97 deletions

View File

@ -157,7 +157,8 @@
</activity>
<activity
android:name=".activity.setup.AccountSettings"
android:label="@string/account_settings_action"
android:label="@string/settings_activity_title"
android:theme="@android:style/Theme.Holo.Light"
>
<intent-filter>
<action

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2011 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- A menu for Account Settings to provide the "Add Account" option -->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/add_new_account"
android:title="@string/add_account_action"
android:icon="@drawable/ic_menu_add_account_holo_light"
android:showAsAction="ifRoom|withText"
/>
</menu>

View File

@ -18,7 +18,6 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/add_new_account"
android:title="@string/add_account_action"
android:icon="@drawable/ic_menu_add_account_holo_light"
android:showAsAction="ifRoom|withText"
android:showAsAction="always"
/>
</menu>

View File

@ -54,6 +54,8 @@
<string name="dump_settings_action"/>
<!-- Do Not Translate. Unused string. -->
<string name="search_title"></string>
<!-- Do Not Translate. Unused string. -->
<string name="account_settings_title_fmt"></string>
<!-- End of deprecated strings. -->
<skip />
@ -936,8 +938,6 @@ save attachment.</string>
The username or password for <xliff:g id="account">%s</xliff:g> is incorrect.
Update them now?</string>
<!-- On Settings screen, section heading -->
<string name="account_settings_title_fmt">General settings</string>
<!-- On Settings screen, setting option name -->
<string name="account_settings_default_label">Default account</string>
<!-- Check box "summary" label on "Account options" screen to make this the default account -->
@ -984,6 +984,8 @@ save attachment.</string>
<string name="account_settings_signature_hint">Append text to messages you send</string>
<!-- On Settings screen, section heading -->
<string name="account_settings_notifications">Notification settings</string>
<!-- On Settings screen, section heading for data usage [CHAR LIMIT=70] -->
<string name="account_settings_data_usage">Data usage</string>
<!-- On settings screen, dialog heading informing user to edit a quick response -->
<string name="edit_quick_response_dialog">Edit quick response</string>
@ -1102,9 +1104,12 @@ save attachment.</string>
from <xliff:g id="domain">%2$s</xliff:g></item>
</plurals>
<!-- Settings activity title [CHAR LIMIT=40]-->
<string name="settings_activity_title">Settings</string>
<!-- General Preferences Screen -->
<!-- Label in preferences header to describe general preferences [CHAR LIMIT=32] -->
<string name="header_label_general_preferences">Email Preferences</string>
<string name="header_label_general_preferences">General Preferences</string>
<!-- First category in general preferences [CHAR LIMIT=64] -->
<string name="category_general_preferences">Application Preferences</string>

View File

@ -16,62 +16,74 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:key="account_description"
android:title="@string/account_settings_description_label"
android:summary=""
android:dialogTitle="@string/account_settings_description_label"
android:inputType="textCapWords" />
<EditTextPreference
android:key="account_name"
android:title="@string/account_settings_name_label"
android:summary=""
android:dialogTitle="@string/account_settings_name_label"
android:inputType="textPersonName|textCapWords" />
<EditTextPreference
android:key="account_signature"
android:title="@string/account_settings_signature_label"
android:summary="@string/account_settings_signature_hint"
android:dialogTitle="@string/account_settings_signature_label"
android:inputType="textCapSentences|textMultiLine" />
<PreferenceScreen
android:key="account_quick_responses"
android:title="@string/account_settings_edit_quick_responses_label"
android:summary="@string/account_settings_edit_quick_responses_summary" />
<CheckBoxPreference
android:key="account_default"
android:title="@string/account_settings_default_label"
android:summary="@string/account_settings_default_summary" />
<PreferenceCategory
android:key="account_settings">
<EditTextPreference
android:key="account_description"
android:order="1"
android:title="@string/account_settings_description_label"
android:summary=""
android:dialogTitle="@string/account_settings_description_label"
android:inputType="textCapWords" />
<EditTextPreference
android:key="account_name"
android:order="2"
android:title="@string/account_settings_name_label"
android:summary=""
android:dialogTitle="@string/account_settings_name_label"
android:inputType="textPersonName|textCapWords" />
<EditTextPreference
android:key="account_signature"
android:order="3"
android:title="@string/account_settings_signature_label"
android:summary="@string/account_settings_signature_hint"
android:dialogTitle="@string/account_settings_signature_label"
android:inputType="textCapSentences|textMultiLine" />
<PreferenceScreen
android:key="account_quick_responses"
android:order="4"
android:title="@string/account_settings_edit_quick_responses_label"
android:summary="@string/account_settings_edit_quick_responses_summary" />
android:key="data_usage"
android:title="@string/account_settings_data_usage">
<ListPreference
android:key="account_check_frequency"
android:order="5"
android:order="1"
android:title="@string/account_settings_mail_check_frequency_label"
android:entries="@array/account_settings_check_frequency_entries"
android:entryValues="@array/account_settings_check_frequency_values"
android:dialogTitle="@string/account_settings_mail_check_frequency_label" />
<!-- Reserve order#6 here for window size (if inserted) -->
<!-- Reserve order#2 here for window size (if inserted) -->
<!-- (will hide on POP3 accounts) -->
<CheckBoxPreference
android:key="account_background_attachments"
android:order="7"
android:order="3"
android:title="@string/account_settings_background_attachments_label"
android:summary="@string/account_settings_background_attachments_summary" />
<CheckBoxPreference
android:key="account_default"
android:order="8"
android:title="@string/account_settings_default_label"
android:summary="@string/account_settings_default_summary" />
<CheckBoxPreference
android:key="account_sync_email"
android:defaultValue="true"
android:title="@string/account_settings_sync_email_enable"
android:summary="@string/account_settings_sync_email_summary" />
<CheckBoxPreference
android:key="account_sync_contacts"
android:defaultValue="true"
android:title="@string/account_settings_sync_contacts_enable"
android:summary="@string/account_settings_sync_contacts_summary" />
<CheckBoxPreference
android:key="account_sync_calendar"
android:defaultValue="true"
android:title="@string/account_settings_sync_calendar_enable"
android:summary="@string/account_settings_sync_calendar_summary" />
</PreferenceCategory>
<PreferenceCategory
@ -118,25 +130,6 @@
android:key="outgoing"
android:title="@string/account_settings_outgoing_label"
android:summary="@string/account_settings_outgoing_summary" />
<CheckBoxPreference
android:key="account_sync_email"
android:layout="?android:attr/preferenceLayoutChild"
android:defaultValue="true"
android:title="@string/account_settings_sync_email_enable"
android:summary="@string/account_settings_sync_email_summary" />
<CheckBoxPreference
android:key="account_sync_contacts"
android:layout="?android:attr/preferenceLayoutChild"
android:defaultValue="true"
android:title="@string/account_settings_sync_contacts_enable"
android:summary="@string/account_settings_sync_contacts_summary" />
<CheckBoxPreference
android:key="account_sync_calendar"
android:layout="?android:attr/preferenceLayoutChild"
android:defaultValue="true"
android:title="@string/account_settings_sync_calendar_enable"
android:summary="@string/account_settings_sync_calendar_summary" />
</PreferenceCategory>
<PreferenceCategory

View File

@ -108,7 +108,6 @@ public class AccountSettings extends PreferenceActivity {
private long mDeletingAccountId = -1;
private boolean mShowDebugMenu;
private List<Header> mGeneratedHeaders;
private boolean mResumed;
// Async Tasks
private LoadAccountListTask mLoadAccountListTask;
@ -194,18 +193,6 @@ public class AccountSettings extends PreferenceActivity {
public void onResume() {
super.onResume();
updateAccounts();
mResumed = true;
// When we're resuming, enable/disable the add account button
if (hasHeaders()) {
invalidateOptionsMenu();
}
}
@Override
public void onPause() {
super.onPause();
mResumed = false;
}
@Override
@ -325,8 +312,8 @@ public class AccountSettings extends PreferenceActivity {
*/
private boolean shouldShowNewAccount() {
// If in single pane mode, only add accounts at top level
if (!isMultiPane()) {
if (!hasHeaders()) return false;
if (!onIsMultiPane()) {
return hasHeaders();
} else {
// If in multi pane mode, only add accounts when showing a top level fragment
// Note: null is OK; This is the case when we first launch the activity
@ -559,9 +546,7 @@ public class AccountSettings extends PreferenceActivity {
mCurrentFragment = f;
// When we're changing fragments, enable/disable the add account button
if (mResumed && hasHeaders()) {
invalidateOptionsMenu();
}
invalidateOptionsMenu();
}
/**
@ -718,7 +703,7 @@ public class AccountSettings extends PreferenceActivity {
// Then update the UI as appropriate:
// If single pane, return to the header list. If multi, rebuild header list
if (isMultiPane()) {
if (onIsMultiPane()) {
Header prefsHeader = getAppPreferencesHeader();
this.switchToHeader(prefsHeader.fragment, prefsHeader.fragmentArguments);
mDeletingAccountId = account.mId;

View File

@ -67,7 +67,6 @@ public class AccountSettingsFragment extends PreferenceFragment {
private static final String BUNDLE_KEY_ACCOUNT_ID = "AccountSettingsFragment.AccountId";
private static final String BUNDLE_KEY_ACCOUNT_EMAIL = "AccountSettingsFragment.Email";
private static final String PREFERENCE_CATEGORY_TOP = "account_settings";
public static final String PREFERENCE_DESCRIPTION = "account_description";
private static final String PREFERENCE_NAME = "account_name";
private static final String PREFERENCE_SIGNATURE = "account_signature";
@ -76,6 +75,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
private static final String PREFERENCE_BACKGROUND_ATTACHMENTS =
"account_background_attachments";
private static final String PREFERENCE_DEFAULT = "account_default";
private static final String PREFERENCE_CATEGORY_DATA_USAGE = "data_usage";
private static final String PREFERENCE_CATEGORY_NOTIFICATIONS = "account_notifications";
private static final String PREFERENCE_NOTIFY = "account_notify";
private static final String PREFERENCE_VIBRATE_WHEN = "account_settings_vibrate_when";
@ -360,10 +360,6 @@ public class AccountSettingsFragment extends PreferenceFragment {
// Once loaded the data is ready to be saved, as well
mSaveOnExit = false;
PreferenceCategory topCategory =
(PreferenceCategory) findPreference(PREFERENCE_CATEGORY_TOP);
topCategory.setTitle(mContext.getString(R.string.account_settings_title_fmt));
mAccountDescription = (EditTextPreference) findPreference(PREFERENCE_DESCRIPTION);
mAccountDescription.setSummary(mAccount.getDisplayName());
mAccountDescription.setText(mAccount.getDisplayName());
@ -452,6 +448,9 @@ public class AccountSettingsFragment extends PreferenceFragment {
});
// Add check window preference
PreferenceCategory dataUsageCategory =
(PreferenceCategory) findPreference(PREFERENCE_CATEGORY_DATA_USAGE);
mSyncWindow = null;
if (HostAuth.SCHEME_EAS.equals(protocol)) {
mSyncWindow = new ListPreference(mContext);
@ -460,7 +459,9 @@ public class AccountSettingsFragment extends PreferenceFragment {
mSyncWindow.setEntryValues(R.array.account_settings_mail_window_values);
mSyncWindow.setValue(String.valueOf(mAccount.getSyncLookback()));
mSyncWindow.setSummary(mSyncWindow.getEntry());
mSyncWindow.setOrder(5);
// Must correspond to the hole in the XML file that's reserved.
mSyncWindow.setOrder(2);
mSyncWindow.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
final String summary = newValue.toString();
@ -471,14 +472,14 @@ public class AccountSettingsFragment extends PreferenceFragment {
return false;
}
});
topCategory.addPreference(mSyncWindow);
dataUsageCategory.addPreference(mSyncWindow);
}
// Show "background attachments" for IMAP & EAS - hide it for POP3.
mAccountBackgroundAttachments = (CheckBoxPreference)
findPreference(PREFERENCE_BACKGROUND_ATTACHMENTS);
if (HostAuth.SCHEME_POP3.equals(mAccount.mHostAuthRecv.mProtocol)) {
topCategory.removePreference(mAccountBackgroundAttachments);
dataUsageCategory.removePreference(mAccountBackgroundAttachments);
} else {
mAccountBackgroundAttachments.setChecked(
0 != (mAccount.getFlags() & Account.FLAGS_BACKGROUND_ATTACHMENTS));
@ -558,7 +559,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
mSyncContacts = (CheckBoxPreference) findPreference(PREFERENCE_SYNC_CONTACTS);
mSyncCalendar = (CheckBoxPreference) findPreference(PREFERENCE_SYNC_CALENDAR);
mSyncEmail = (CheckBoxPreference) findPreference(PREFERENCE_SYNC_EMAIL);
if (mAccount.mHostAuthRecv.mProtocol.equals("eas")) {
if (mAccount.mHostAuthRecv.mProtocol.equals(HostAuth.SCHEME_EAS)) {
android.accounts.Account acct = new android.accounts.Account(mAccount.mEmailAddress,
AccountManagerTypes.TYPE_EXCHANGE);
mSyncContacts.setChecked(ContentResolver
@ -571,11 +572,9 @@ public class AccountSettingsFragment extends PreferenceFragment {
.getSyncAutomatically(acct, EmailContent.AUTHORITY));
mSyncEmail.setOnPreferenceChangeListener(mPreferenceChangeListener);
} else {
PreferenceCategory serverCategory = (PreferenceCategory) findPreference(
PREFERENCE_CATEGORY_SERVER);
serverCategory.removePreference(mSyncContacts);
serverCategory.removePreference(mSyncCalendar);
serverCategory.removePreference(mSyncEmail);
dataUsageCategory.removePreference(mSyncContacts);
dataUsageCategory.removePreference(mSyncCalendar);
dataUsageCategory.removePreference(mSyncEmail);
}
// Temporary home for delete account