UI Tweaks to Zen Mode Voice Activity.

Small cleanup of the UI / strings.
- Cleanup of string constant names.
- Add a specific string for ZenModeVoiceActivity label.
- Change look of list position indicators.
- Add optional header to VoiceSettingsActivity.
- Fix NPE in some cases when disabling Zen mode.

Change-Id: Ic09ee2b1b5a50891b5447c2db0e3de3c475696bf
This commit is contained in:
Barnaby James
2015-04-15 15:43:30 -07:00
parent b8e02b8bd0
commit f79e2d11f5
9 changed files with 88 additions and 38 deletions

View File

@@ -65,22 +65,24 @@ public class ZenModeVoiceActivity extends VoiceSettingsActivity {
boolean enabled = intent.getBooleanExtra(EXTRA_DO_NOT_DISTURB_MODE_ENABLED, false);
boolean specified = intent.hasExtra(EXTRA_DO_NOT_DISTURB_MODE_ENABLED);
setHeader(getString(R.string.zen_mode_interruptions_voice_header));
List<VoiceSelection> states = new ArrayList<VoiceSelection>();
if (!specified || enabled) {
states.add(new ModeSelection(this, Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS,
R.string.zen_mode_option_important_interruptions,
R.string.zen_mode_option_important_voice_synonyms));
R.string.zen_mode_option_voice_important_interruptions,
R.string.zen_mode_option_voice_important_synonyms));
states.add(new ModeSelection(this, Global.ZEN_MODE_ALARMS,
R.string.zen_mode_option_alarms,
R.string.zen_mode_option_alarms_voice_synonyms));
R.string.zen_mode_option_voice_alarms,
R.string.zen_mode_option_voice_alarms_synonyms));
states.add(new ModeSelection(this, Global.ZEN_MODE_NO_INTERRUPTIONS,
R.string.zen_mode_option_no_interruptions,
R.string.zen_mode_option_no_interruptions_voice_synonyms));
R.string.zen_mode_option_voice_no_interruptions,
R.string.zen_mode_option_voice_no_interruptions_synonyms));
}
if (!specified || !enabled) {
states.add(new ModeSelection(this, Global.ZEN_MODE_OFF,
R.string.zen_mode_option_off,
R.string.zen_mode_option_off_voice_synonyms));
R.string.zen_mode_option_voice_all_interruptions,
R.string.zen_mode_option_voice_all_interruptions_synonyms));
}
VoiceSelectionFragment fragment = new VoiceSelectionFragment();
fragment.setArguments(VoiceSelectionFragment.createArguments(
@@ -98,8 +100,10 @@ public class ZenModeVoiceActivity extends VoiceSettingsActivity {
pickDuration(selection.getLabel(), mode);
return;
}
setZenModeConfig(mode, conditionSelection.mCondition);
} else {
setZenModeConfig(Global.ZEN_MODE_OFF, null);
}
setZenModeConfig(mode, conditionSelection.mCondition);
notifySuccess(getChangeSummary(mode, conditionSelection));
finish();
}
@@ -112,6 +116,8 @@ public class ZenModeVoiceActivity extends VoiceSettingsActivity {
*/
private void pickDuration(CharSequence label, final int mode) {
setTitle(label.toString());
setHeader(null);
List<VoiceSelection> states = new ArrayList<VoiceSelection>();
states.add(new ConditionSelection(null, -1,
getString(R.string.zen_mode_duration_indefinte_voice_label),
@@ -137,13 +143,6 @@ public class ZenModeVoiceActivity extends VoiceSettingsActivity {
showFragment(fragment, "pick_duration_fragment");
}
private void showFragment(Fragment fragment, String tag) {
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_root, fragment, tag)
.commit();
}
private void setZenModeConfig(int mode, Condition condition) {
if (condition != null) {
NotificationManager.from(this).setZenMode(mode, condition.id, TAG);

View File

@@ -111,7 +111,7 @@ public class VoiceSelectionFragment extends ListFragment {
}
if (mOnItemSelectedListener != null) {
mOnItemSelectedListener.onItemSelected(position, getSelectionAt(position));
mOnItemSelectedListener.onItemSelected(position, getSelectionAt(position));
}
}

View File

@@ -16,11 +16,16 @@
package com.android.settings.utils;
import com.android.settings.R;
import android.app.Activity;
import android.app.Fragment;
import android.app.VoiceInteractor;
import android.app.VoiceInteractor.CompleteVoiceRequest;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.util.Log;
/**
@@ -65,10 +70,30 @@ abstract public class VoiceSettingsActivity extends Activity {
}
}
protected void setHeader(String label) {
TextView header = (TextView) findViewById(R.id.voice_fragment_header);
if (header != null) {
if (label != null) {
header.setText(label);
header.setVisibility(View.VISIBLE);
} else {
header.setVisibility(View.GONE);
}
}
}
/**
* Indicates when the setting could not be changed.
*/
protected void notifyFailure(String reason) {
getVoiceInteractor().submitRequest(new VoiceInteractor.AbortVoiceRequest(reason, null));
}
protected void showFragment(Fragment fragment, String tag) {
getFragmentManager()
.beginTransaction()
.replace(R.id.voice_fragment_root, fragment, tag)
.commit();
}
}