am c98f977: Merge branch \'readonly-p4-donut\' into donut

Merge commit 'c98f9775ad2b01f1692f96f14faacaca4ef3c1cf'

* commit 'c98f9775ad2b01f1692f96f14faacaca4ef3c1cf':
  AI 148255: Don't show "Outgoing Settings" preference when sender does not
This commit is contained in:
Andy Stadler 2009-05-04 10:21:43 -07:00 committed by The Android Open Source Project
commit 4ea57375d8
4 changed files with 40 additions and 15 deletions

View File

@ -77,7 +77,9 @@
</PreferenceCategory>
<PreferenceCategory android:title="@string/account_settings_servers">
<PreferenceCategory
android:key="account_servers"
android:title="@string/account_settings_servers">
<PreferenceScreen
android:key="incoming"

View File

@ -33,5 +33,5 @@
<sender scheme="smtp" class="com.android.email.mail.transport.SmtpSender" />
<!-- This is here for temporary demo purposes only. Do not ship with this. -->
<!-- sender scheme="eas" class="com.android.email.mail.exchange.ExchangeSenderExample" / -->
<sender scheme="eas" class="com.android.email.mail.exchange.ExchangeSenderExample" />
</senders>

View File

@ -20,6 +20,7 @@ import com.android.email.Account;
import com.android.email.Email;
import com.android.email.Preferences;
import com.android.email.R;
import com.android.email.mail.MessagingException;
import com.android.email.mail.Sender;
import com.android.email.mail.Store;
@ -48,6 +49,7 @@ public class AccountSettings extends PreferenceActivity {
private static final String PREFERENCE_NOTIFY = "account_notify";
private static final String PREFERENCE_VIBRATE = "account_vibrate";
private static final String PREFERENCE_RINGTONE = "account_ringtone";
private static final String PREFERENCE_SERVER_CATERGORY = "account_servers";
private static final String PREFERENCE_INCOMING = "incoming";
private static final String PREFERENCE_OUTGOING = "outgoing";
private static final String PREFERENCE_ADD_ACCOUNT = "add_account";
@ -77,8 +79,8 @@ public class AccountSettings extends PreferenceActivity {
addPreferencesFromResource(R.xml.account_settings_preferences);
PreferenceCategory category = (PreferenceCategory) findPreference(PREFERENCE_TOP_CATERGORY);
category.setTitle(getString(R.string.account_settings_title_fmt));
PreferenceCategory topCategory = (PreferenceCategory) findPreference(PREFERENCE_TOP_CATERGORY);
topCategory.setTitle(getString(R.string.account_settings_title_fmt));
mAccountDescription = (EditTextPreference) findPreference(PREFERENCE_DESCRIPTION);
mAccountDescription.setSummary(mAccount.getDescription());
@ -144,7 +146,7 @@ public class AccountSettings extends PreferenceActivity {
return false;
}
});
category.addPreference(mSyncWindow);
topCategory.addPreference(mSyncWindow);
}
mAccountDefault = (CheckBoxPreference) findPreference(PREFERENCE_DEFAULT);
@ -172,13 +174,32 @@ public class AccountSettings extends PreferenceActivity {
}
});
findPreference(PREFERENCE_OUTGOING).setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
onOutgoingSettings();
return true;
}
});
// Hide the outgoing account setup link if it's not activated
Preference prefOutgoing = findPreference(PREFERENCE_OUTGOING);
boolean showOutgoing = true;
try {
Sender sender = Sender.getInstance(mAccount.getSenderUri(), getApplication());
if (sender != null) {
Class<? extends android.app.Activity> setting = sender.getSettingActivityClass();
showOutgoing = (setting != null);
}
} catch (MessagingException me) {
// just leave showOutgoing as true - bias towards showing it, so user can fix it
}
if (showOutgoing) {
prefOutgoing.setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
onOutgoingSettings();
return true;
}
});
} else {
PreferenceCategory serverCategory = (PreferenceCategory) findPreference(
PREFERENCE_SERVER_CATERGORY);
serverCategory.removePreference(prefOutgoing);
}
findPreference(PREFERENCE_ADD_ACCOUNT).setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
@ -244,7 +265,7 @@ public class AccountSettings extends PreferenceActivity {
Class<? extends android.app.Activity> setting = sender.getSettingActivityClass();
if (setting != null) {
java.lang.reflect.Method m = setting.getMethod("actionEditOutgoingSettings",
android.content.Context.class, Account.class);
android.app.Activity.class, Account.class);
m.invoke(null, this, mAccount);
}
}

View File

@ -88,10 +88,12 @@ public class ExchangeSenderExample extends Sender {
/**
* Get class of SettingActivity for this Sender class.
* @return Activity class that has class method actionEditOutgoingSettings().
* @return Activity class that has class method actionEditOutgoingSettings(), or null if
* outgoing settings should not be presented (e.g. they're handled by the incoming settings
* screen).
*/
@Override
public Class<? extends android.app.Activity> getSettingActivityClass() {
return com.android.email.activity.setup.AccountSetupExchange.class;
return null;
}
}