Loading java/src/com/android/inputmethod/latin/setup/SetupActivity.java +35 −32 Original line number Diff line number Diff line Loading @@ -40,18 +40,17 @@ import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.SettingsActivity; import com.android.inputmethod.latin.StaticInnerHandlerWrapper; import java.util.HashMap; import java.util.ArrayList; // TODO: Use Fragment to implement welcome screen and setup steps. public final class SetupActivity extends Activity implements View.OnClickListener { private View mWelcomeScreen; private View mSetupScreen; private SetupStepIndicatorView mStepIndicatorView; private Uri mWelcomeVideoUri; private VideoView mWelcomeVideoView; private View mActionStart; private TextView mActionFinish; private final SetupStepGroup mSetupStepGroup = new SetupStepGroup(); private SetupStepGroup mSetupStepGroup; private static final String STATE_STEP = "step"; private int mStepNumber; private static final int STEP_0 = 0; Loading Loading @@ -129,9 +128,11 @@ public final class SetupActivity extends Activity implements View.OnClickListene final TextView stepsTitle = (TextView)findViewById(R.id.setup_title); stepsTitle.setText(getString(R.string.setup_steps_title, applicationName)); mStepIndicatorView = (SetupStepIndicatorView)findViewById(R.id.setup_step_indicator); final SetupStepIndicatorView indicatorView = (SetupStepIndicatorView)findViewById(R.id.setup_step_indicator); mSetupStepGroup = new SetupStepGroup(indicatorView); final SetupStep step1 = new SetupStep(applicationName, final SetupStep step1 = new SetupStep(STEP_1, applicationName, (TextView)findViewById(R.id.setup_step1_bullet), findViewById(R.id.setup_step1), R.string.setup_step1_title, R.string.setup_step1_instruction, R.drawable.ic_setup_step1, R.string.setup_step1_action); Loading @@ -142,9 +143,9 @@ public final class SetupActivity extends Activity implements View.OnClickListene mHandler.startPollingImeSettings(); } }); mSetupStepGroup.addStep(STEP_1, step1); mSetupStepGroup.addStep(step1); final SetupStep step2 = new SetupStep(applicationName, final SetupStep step2 = new SetupStep(STEP_2, applicationName, (TextView)findViewById(R.id.setup_step2_bullet), findViewById(R.id.setup_step2), R.string.setup_step2_title, R.string.setup_step2_instruction, R.drawable.ic_setup_step2, R.string.setup_step2_action); Loading @@ -156,9 +157,9 @@ public final class SetupActivity extends Activity implements View.OnClickListene .showInputMethodPicker(); } }); mSetupStepGroup.addStep(STEP_2, step2); mSetupStepGroup.addStep(step2); final SetupStep step3 = new SetupStep(applicationName, final SetupStep step3 = new SetupStep(STEP_3, applicationName, (TextView)findViewById(R.id.setup_step3_bullet), findViewById(R.id.setup_step3), R.string.setup_step3_title, R.string.setup_step3_instruction, R.drawable.ic_setup_step3, R.string.setup_step3_action); Loading @@ -168,7 +169,7 @@ public final class SetupActivity extends Activity implements View.OnClickListene invokeSubtypeEnablerOfThisIme(); } }); mSetupStepGroup.addStep(STEP_3, step3); mSetupStepGroup.addStep(step3); mWelcomeVideoUri = new Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) Loading Loading @@ -274,10 +275,10 @@ public final class SetupActivity extends Activity implements View.OnClickListene return myImi.getId().equals(currentImeId); } private int determineSetupStepNumber() { private int determineSetupState() { mHandler.cancelPollingImeSettings(); if (!isThisImeEnabled(this)) { return mWasLanguageAndInputSettingsInvoked ? STEP_1 : STEP_0; return STEP_1; } if (!isThisImeCurrent(this)) { return STEP_2; Loading @@ -285,6 +286,14 @@ public final class SetupActivity extends Activity implements View.OnClickListene return STEP_3; } private int determineSetupStepNumber() { final int stepState = determineSetupState(); if (stepState == STEP_1) { return mWasLanguageAndInputSettingsInvoked ? STEP_1 : STEP_0; } return stepState; } @Override protected void onSaveInstanceState(final Bundle outState) { super.onSaveInstanceState(outState); Loading Loading @@ -351,20 +360,12 @@ public final class SetupActivity extends Activity implements View.OnClickListene return; } mWelcomeVideoView.stopPlayback(); final int layoutDirection = ViewCompatUtils.getLayoutDirection(mStepIndicatorView); mStepIndicatorView.setIndicatorPosition( getIndicatorPosition(mStepNumber, mSetupStepGroup.getTotalStep(), layoutDirection)); mSetupStepGroup.enableStep(mStepNumber); mActionFinish.setVisibility((mStepNumber == STEP_3) ? View.VISIBLE : View.GONE); } private static float getIndicatorPosition(final int step, final int totalStep, final int layoutDirection) { final float pos = ((step - STEP_1) * 2 + 1) / (float)(totalStep * 2); return (layoutDirection == ViewCompatUtils.LAYOUT_DIRECTION_RTL) ? 1.0f - pos : pos; } static final class SetupStep implements View.OnClickListener { public final int mStepNo; private final View mStepView; private final TextView mBulletView; private final int mActivatedColor; Loading @@ -372,9 +373,10 @@ public final class SetupActivity extends Activity implements View.OnClickListene private final TextView mActionLabel; private Runnable mAction; public SetupStep(final String applicationName, final TextView bulletView, public SetupStep(final int stepNo, final String applicationName, final TextView bulletView, final View stepView, final int title, final int instruction, final int actionIcon, final int actionLabel) { mStepNo = stepNo; mStepView = stepView; mBulletView = bulletView; final Resources res = stepView.getResources(); Loading Loading @@ -423,21 +425,22 @@ public final class SetupActivity extends Activity implements View.OnClickListene } static final class SetupStepGroup { private final HashMap<Integer, SetupStep> mGroup = CollectionUtils.newHashMap(); private final SetupStepIndicatorView mIndicatorView; private final ArrayList<SetupStep> mGroup = CollectionUtils.newArrayList(); public void addStep(final int stepNo, final SetupStep step) { mGroup.put(stepNo, step); public SetupStepGroup(final SetupStepIndicatorView indicatorView) { mIndicatorView = indicatorView; } public void enableStep(final int enableStepNo) { for (final Integer stepNo : mGroup.keySet()) { final SetupStep step = mGroup.get(stepNo); step.setEnabled(stepNo == enableStepNo); } public void addStep(final SetupStep step) { mGroup.add(step); } public int getTotalStep() { return mGroup.size(); public void enableStep(final int enableStepNo) { for (final SetupStep step : mGroup) { step.setEnabled(step.mStepNo == enableStepNo); } mIndicatorView.setIndicatorPosition(enableStepNo - STEP_1, mGroup.size()); } } } java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java +8 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.graphics.Path; import android.util.AttributeSet; import android.view.View; import com.android.inputmethod.compat.ViewCompatUtils; import com.android.inputmethod.latin.R; public final class SetupStepIndicatorView extends View { Loading @@ -36,8 +37,13 @@ public final class SetupStepIndicatorView extends View { mIndicatorPaint.setStyle(Paint.Style.FILL); } public void setIndicatorPosition(final float xRatio) { mXRatio = xRatio; public void setIndicatorPosition(final int stepPos, final int totalStepNum) { final int layoutDirection = ViewCompatUtils.getLayoutDirection(this); // The indicator position is the center of the partition that is equally divided into // the total step number. final float partionWidth = 1.0f / totalStepNum; final float pos = stepPos * partionWidth + partionWidth / 2.0f; mXRatio = (layoutDirection == ViewCompatUtils.LAYOUT_DIRECTION_RTL) ? 1.0f - pos : pos; invalidate(); } Loading Loading
java/src/com/android/inputmethod/latin/setup/SetupActivity.java +35 −32 Original line number Diff line number Diff line Loading @@ -40,18 +40,17 @@ import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.SettingsActivity; import com.android.inputmethod.latin.StaticInnerHandlerWrapper; import java.util.HashMap; import java.util.ArrayList; // TODO: Use Fragment to implement welcome screen and setup steps. public final class SetupActivity extends Activity implements View.OnClickListener { private View mWelcomeScreen; private View mSetupScreen; private SetupStepIndicatorView mStepIndicatorView; private Uri mWelcomeVideoUri; private VideoView mWelcomeVideoView; private View mActionStart; private TextView mActionFinish; private final SetupStepGroup mSetupStepGroup = new SetupStepGroup(); private SetupStepGroup mSetupStepGroup; private static final String STATE_STEP = "step"; private int mStepNumber; private static final int STEP_0 = 0; Loading Loading @@ -129,9 +128,11 @@ public final class SetupActivity extends Activity implements View.OnClickListene final TextView stepsTitle = (TextView)findViewById(R.id.setup_title); stepsTitle.setText(getString(R.string.setup_steps_title, applicationName)); mStepIndicatorView = (SetupStepIndicatorView)findViewById(R.id.setup_step_indicator); final SetupStepIndicatorView indicatorView = (SetupStepIndicatorView)findViewById(R.id.setup_step_indicator); mSetupStepGroup = new SetupStepGroup(indicatorView); final SetupStep step1 = new SetupStep(applicationName, final SetupStep step1 = new SetupStep(STEP_1, applicationName, (TextView)findViewById(R.id.setup_step1_bullet), findViewById(R.id.setup_step1), R.string.setup_step1_title, R.string.setup_step1_instruction, R.drawable.ic_setup_step1, R.string.setup_step1_action); Loading @@ -142,9 +143,9 @@ public final class SetupActivity extends Activity implements View.OnClickListene mHandler.startPollingImeSettings(); } }); mSetupStepGroup.addStep(STEP_1, step1); mSetupStepGroup.addStep(step1); final SetupStep step2 = new SetupStep(applicationName, final SetupStep step2 = new SetupStep(STEP_2, applicationName, (TextView)findViewById(R.id.setup_step2_bullet), findViewById(R.id.setup_step2), R.string.setup_step2_title, R.string.setup_step2_instruction, R.drawable.ic_setup_step2, R.string.setup_step2_action); Loading @@ -156,9 +157,9 @@ public final class SetupActivity extends Activity implements View.OnClickListene .showInputMethodPicker(); } }); mSetupStepGroup.addStep(STEP_2, step2); mSetupStepGroup.addStep(step2); final SetupStep step3 = new SetupStep(applicationName, final SetupStep step3 = new SetupStep(STEP_3, applicationName, (TextView)findViewById(R.id.setup_step3_bullet), findViewById(R.id.setup_step3), R.string.setup_step3_title, R.string.setup_step3_instruction, R.drawable.ic_setup_step3, R.string.setup_step3_action); Loading @@ -168,7 +169,7 @@ public final class SetupActivity extends Activity implements View.OnClickListene invokeSubtypeEnablerOfThisIme(); } }); mSetupStepGroup.addStep(STEP_3, step3); mSetupStepGroup.addStep(step3); mWelcomeVideoUri = new Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) Loading Loading @@ -274,10 +275,10 @@ public final class SetupActivity extends Activity implements View.OnClickListene return myImi.getId().equals(currentImeId); } private int determineSetupStepNumber() { private int determineSetupState() { mHandler.cancelPollingImeSettings(); if (!isThisImeEnabled(this)) { return mWasLanguageAndInputSettingsInvoked ? STEP_1 : STEP_0; return STEP_1; } if (!isThisImeCurrent(this)) { return STEP_2; Loading @@ -285,6 +286,14 @@ public final class SetupActivity extends Activity implements View.OnClickListene return STEP_3; } private int determineSetupStepNumber() { final int stepState = determineSetupState(); if (stepState == STEP_1) { return mWasLanguageAndInputSettingsInvoked ? STEP_1 : STEP_0; } return stepState; } @Override protected void onSaveInstanceState(final Bundle outState) { super.onSaveInstanceState(outState); Loading Loading @@ -351,20 +360,12 @@ public final class SetupActivity extends Activity implements View.OnClickListene return; } mWelcomeVideoView.stopPlayback(); final int layoutDirection = ViewCompatUtils.getLayoutDirection(mStepIndicatorView); mStepIndicatorView.setIndicatorPosition( getIndicatorPosition(mStepNumber, mSetupStepGroup.getTotalStep(), layoutDirection)); mSetupStepGroup.enableStep(mStepNumber); mActionFinish.setVisibility((mStepNumber == STEP_3) ? View.VISIBLE : View.GONE); } private static float getIndicatorPosition(final int step, final int totalStep, final int layoutDirection) { final float pos = ((step - STEP_1) * 2 + 1) / (float)(totalStep * 2); return (layoutDirection == ViewCompatUtils.LAYOUT_DIRECTION_RTL) ? 1.0f - pos : pos; } static final class SetupStep implements View.OnClickListener { public final int mStepNo; private final View mStepView; private final TextView mBulletView; private final int mActivatedColor; Loading @@ -372,9 +373,10 @@ public final class SetupActivity extends Activity implements View.OnClickListene private final TextView mActionLabel; private Runnable mAction; public SetupStep(final String applicationName, final TextView bulletView, public SetupStep(final int stepNo, final String applicationName, final TextView bulletView, final View stepView, final int title, final int instruction, final int actionIcon, final int actionLabel) { mStepNo = stepNo; mStepView = stepView; mBulletView = bulletView; final Resources res = stepView.getResources(); Loading Loading @@ -423,21 +425,22 @@ public final class SetupActivity extends Activity implements View.OnClickListene } static final class SetupStepGroup { private final HashMap<Integer, SetupStep> mGroup = CollectionUtils.newHashMap(); private final SetupStepIndicatorView mIndicatorView; private final ArrayList<SetupStep> mGroup = CollectionUtils.newArrayList(); public void addStep(final int stepNo, final SetupStep step) { mGroup.put(stepNo, step); public SetupStepGroup(final SetupStepIndicatorView indicatorView) { mIndicatorView = indicatorView; } public void enableStep(final int enableStepNo) { for (final Integer stepNo : mGroup.keySet()) { final SetupStep step = mGroup.get(stepNo); step.setEnabled(stepNo == enableStepNo); } public void addStep(final SetupStep step) { mGroup.add(step); } public int getTotalStep() { return mGroup.size(); public void enableStep(final int enableStepNo) { for (final SetupStep step : mGroup) { step.setEnabled(step.mStepNo == enableStepNo); } mIndicatorView.setIndicatorPosition(enableStepNo - STEP_1, mGroup.size()); } } }
java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java +8 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.graphics.Path; import android.util.AttributeSet; import android.view.View; import com.android.inputmethod.compat.ViewCompatUtils; import com.android.inputmethod.latin.R; public final class SetupStepIndicatorView extends View { Loading @@ -36,8 +37,13 @@ public final class SetupStepIndicatorView extends View { mIndicatorPaint.setStyle(Paint.Style.FILL); } public void setIndicatorPosition(final float xRatio) { mXRatio = xRatio; public void setIndicatorPosition(final int stepPos, final int totalStepNum) { final int layoutDirection = ViewCompatUtils.getLayoutDirection(this); // The indicator position is the center of the partition that is equally divided into // the total step number. final float partionWidth = 1.0f / totalStepNum; final float pos = stepPos * partionWidth + partionWidth / 2.0f; mXRatio = (layoutDirection == ViewCompatUtils.LAYOUT_DIRECTION_RTL) ? 1.0f - pos : pos; invalidate(); } Loading