diff options
author | alanv <alanv@google.com> | 2012-05-18 14:28:53 -0700 |
---|---|---|
committer | alanv <alanv@google.com> | 2012-05-18 14:28:53 -0700 |
commit | a9ca65723ca71dc663e498bbd97418d0c50afa51 (patch) | |
tree | ae3e956ab184b655ecf39ba2acc8e271195f9ef5 /src | |
parent | 409433e904f9b8a65a87274b7d5f582f0ac46e26 (diff) | |
download | packages_apps_settings-a9ca65723ca71dc663e498bbd97418d0c50afa51.zip packages_apps_settings-a9ca65723ca71dc663e498bbd97418d0c50afa51.tar.gz packages_apps_settings-a9ca65723ca71dc663e498bbd97418d0c50afa51.tar.bz2 |
Removed Accessibility tutorial and orphaned resources.
Change-Id: Ic96e002b04bed4c525fe959a3ad7e55d8709c75f
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/settings/AccessibilityTutorialActivity.java | 698 |
1 files changed, 0 insertions, 698 deletions
diff --git a/src/com/android/settings/AccessibilityTutorialActivity.java b/src/com/android/settings/AccessibilityTutorialActivity.java deleted file mode 100644 index 206aa94..0000000 --- a/src/com/android/settings/AccessibilityTutorialActivity.java +++ /dev/null @@ -1,698 +0,0 @@ -/* - * Copyright (C) 2011 Google Inc. - * - * 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. - */ - -package com.android.settings; - -import android.app.Activity; -import android.content.ContentResolver; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.graphics.drawable.Drawable; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.provider.Settings; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.view.accessibility.AccessibilityEvent; -import android.view.accessibility.AccessibilityManager; -import android.view.animation.Animation; -import android.view.animation.Animation.AnimationListener; -import android.view.animation.AnimationUtils; -import android.widget.AbsListView; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.FrameLayout; -import android.widget.GridView; -import android.widget.ListView; -import android.widget.TextView; -import android.widget.ViewAnimator; - -import com.android.settings.R; - -import java.util.List; - -/** - * This class provides a short tutorial that introduces the user to the features - * available in Touch Exploration. - */ -public class AccessibilityTutorialActivity extends Activity { - - /** Intent action for launching this activity. */ - public static final String ACTION = "android.settings.ACCESSIBILITY_TUTORIAL"; - - /** Instance state saving constant for the active module. */ - private static final String KEY_ACTIVE_MODULE = "active_module"; - - /** The index of the module to show when first opening the tutorial. */ - private static final int DEFAULT_MODULE = 0; - - /** View animator for switching between modules. */ - private ViewAnimator mViewAnimator; - - private AccessibilityManager mAccessibilityManager; - - /** Should touch exploration be disabled when this activity is paused? */ - private boolean mDisableOnPause; - - private final AnimationListener mInAnimationListener = new AnimationListener() { - @Override - public void onAnimationEnd(Animation animation) { - final int index = mViewAnimator.getDisplayedChild(); - final TutorialModule module = (TutorialModule) mViewAnimator.getChildAt(index); - - activateModule(module); - } - - @Override - public void onAnimationRepeat(Animation animation) { - // Do nothing. - } - - @Override - public void onAnimationStart(Animation animation) { - // Do nothing. - } - }; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - final Animation inAnimation = AnimationUtils.loadAnimation(this, - android.R.anim.slide_in_left); - inAnimation.setAnimationListener(mInAnimationListener); - - final Animation outAnimation = AnimationUtils.loadAnimation(this, - android.R.anim.slide_in_left); - - mViewAnimator = new ViewAnimator(this); - mViewAnimator.setInAnimation(inAnimation); - mViewAnimator.setOutAnimation(outAnimation); - mViewAnimator.addView(new TouchTutorialModule1(this, this)); - mViewAnimator.addView(new TouchTutorialModule2(this, this)); - - setContentView(mViewAnimator); - - mAccessibilityManager = (AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE); - - if (savedInstanceState != null) { - show(savedInstanceState.getInt(KEY_ACTIVE_MODULE, DEFAULT_MODULE)); - } else { - show(DEFAULT_MODULE); - } - } - - @Override - protected void onResume() { - super.onResume(); - - final ContentResolver cr = getContentResolver(); - - if (Settings.Secure.getInt(cr, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0) == 0) { - Settings.Secure.putInt(cr, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 1); - mDisableOnPause = true; - } else { - mDisableOnPause = false; - } - } - - @Override - protected void onPause() { - super.onPause(); - - if (mDisableOnPause) { - final ContentResolver cr = getContentResolver(); - Settings.Secure.putInt(cr, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0); - } - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - - outState.putInt(KEY_ACTIVE_MODULE, mViewAnimator.getDisplayedChild()); - } - - private void activateModule(TutorialModule module) { - module.activate(); - } - - private void deactivateModule(TutorialModule module) { - mAccessibilityManager.interrupt(); - mViewAnimator.setOnKeyListener(null); - module.deactivate(); - } - - private void interrupt() { - mAccessibilityManager.interrupt(); - } - - private void next() { - show(mViewAnimator.getDisplayedChild() + 1); - } - - private void previous() { - show(mViewAnimator.getDisplayedChild() - 1); - } - - private void show(int which) { - if ((which < 0) || (which >= mViewAnimator.getChildCount())) { - return; - } - - mAccessibilityManager.interrupt(); - - final int displayedIndex = mViewAnimator.getDisplayedChild(); - final TutorialModule displayedView = (TutorialModule) mViewAnimator.getChildAt( - displayedIndex); - deactivateModule(displayedView); - - mViewAnimator.setDisplayedChild(which); - } - - /** - * Loads application labels and icons. - */ - private static class AppsAdapter extends ArrayAdapter<ResolveInfo> { - protected final int mTextViewResourceId; - - private final int mIconSize; - private final View.OnHoverListener mDefaultHoverListener; - - private View.OnHoverListener mHoverListener; - - public AppsAdapter(Context context, int resource, int textViewResourceId) { - super(context, resource, textViewResourceId); - - mIconSize = context.getResources().getDimensionPixelSize(R.dimen.app_icon_size); - mTextViewResourceId = textViewResourceId; - mDefaultHoverListener = new View.OnHoverListener() { - @Override - public boolean onHover(View v, MotionEvent event) { - if (mHoverListener != null) { - return mHoverListener.onHover(v, event); - } else { - return false; - } - } - }; - - loadAllApps(); - } - - public CharSequence getLabel(int position) { - final PackageManager packageManager = getContext().getPackageManager(); - final ResolveInfo appInfo = getItem(position); - return appInfo.loadLabel(packageManager); - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - final PackageManager packageManager = getContext().getPackageManager(); - final View view = super.getView(position, convertView, parent); - view.setOnHoverListener(mDefaultHoverListener); - view.setTag(position); - - final ResolveInfo appInfo = getItem(position); - final CharSequence label = appInfo.loadLabel(packageManager); - final Drawable icon = appInfo.loadIcon(packageManager); - final TextView text = (TextView) view.findViewById(mTextViewResourceId); - - icon.setBounds(0, 0, mIconSize, mIconSize); - - populateView(text, label, icon); - - return view; - } - - private void loadAllApps() { - final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); - mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); - - final PackageManager pm = getContext().getPackageManager(); - final List<ResolveInfo> apps = pm.queryIntentActivities(mainIntent, 0); - - addAll(apps); - } - - protected void populateView(TextView text, CharSequence label, Drawable icon) { - text.setText(label); - text.setCompoundDrawables(null, icon, null, null); - } - - public void setOnHoverListener(View.OnHoverListener hoverListener) { - mHoverListener = hoverListener; - } - } - - /** - * Introduces using a finger to explore and interact with on-screen content. - */ - private static class TouchTutorialModule1 extends TutorialModule implements - View.OnHoverListener, AdapterView.OnItemClickListener { - /** - * Handles the case where the user overshoots the target area. - */ - private class HoverTargetHandler extends Handler { - private static final int MSG_ENTERED_TARGET = 1; - private static final int DELAY_ENTERED_TARGET = 500; - - private boolean mInsideTarget = false; - - public void enteredTarget() { - mInsideTarget = true; - mHandler.sendEmptyMessageDelayed(MSG_ENTERED_TARGET, DELAY_ENTERED_TARGET); - } - - public void exitedTarget() { - mInsideTarget = false; - } - - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_ENTERED_TARGET: - if (mInsideTarget) { - addInstruction(R.string.accessibility_tutorial_lesson_1_text_4, - mTargetName); - } else { - addInstruction(R.string.accessibility_tutorial_lesson_1_text_4_exited, - mTargetName); - setFlag(FLAG_TOUCHED_TARGET, false); - } - break; - } - } - } - - private static final int FLAG_TOUCH_ITEMS = 0x1; - private static final int FLAG_TOUCHED_ITEMS = 0x2; - private static final int FLAG_TOUCHED_TARGET = 0x4; - private static final int FLAG_TAPPED_TARGET = 0x8; - - private static final int MORE_EXPLORED_COUNT = 1; - private static final int DONE_EXPLORED_COUNT = 2; - - private final HoverTargetHandler mHandler; - private final AppsAdapter mAppsAdapter; - private final GridView mAllApps; - - private int mTouched = 0; - - private int mTargetPosition; - private CharSequence mTargetName; - - public TouchTutorialModule1(Context context, AccessibilityTutorialActivity controller) { - super(context, controller, R.layout.accessibility_tutorial_1, - R.string.accessibility_tutorial_lesson_1_title); - - mHandler = new HoverTargetHandler(); - - mAppsAdapter = new AppsAdapter(context, R.layout.accessibility_tutorial_app_icon, - R.id.app_icon); - mAppsAdapter.setOnHoverListener(this); - - mAllApps = (GridView) findViewById(R.id.all_apps); - mAllApps.setAdapter(mAppsAdapter); - mAllApps.setOnItemClickListener(this); - - findViewById(R.id.next_button).setOnHoverListener(this); - - setSkipVisible(true); - } - - @Override - public boolean onHover(View v, MotionEvent event) { - switch (v.getId()) { - case R.id.app_icon: - if (hasFlag(FLAG_TOUCH_ITEMS) && !hasFlag(FLAG_TOUCHED_ITEMS) && v.isEnabled() - && (event.getAction() == MotionEvent.ACTION_HOVER_ENTER)) { - mTouched++; - - if (mTouched >= DONE_EXPLORED_COUNT) { - setFlag(FLAG_TOUCHED_ITEMS, true); - addInstruction(R.string.accessibility_tutorial_lesson_1_text_3, - mTargetName); - } else if (mTouched == MORE_EXPLORED_COUNT) { - addInstruction(R.string.accessibility_tutorial_lesson_1_text_2_more); - } - - v.setEnabled(false); - } else if (hasFlag(FLAG_TOUCHED_ITEMS) - && ((Integer) v.getTag() == mTargetPosition)) { - if (!hasFlag(FLAG_TOUCHED_TARGET) - && (event.getAction() == MotionEvent.ACTION_HOVER_ENTER)) { - mHandler.enteredTarget(); - setFlag(FLAG_TOUCHED_TARGET, true); - } else if (event.getAction() == MotionEvent.ACTION_HOVER_EXIT) { - mHandler.exitedTarget(); - } - } - break; - } - - return false; - } - - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - if (hasFlag(FLAG_TOUCHED_TARGET) && !hasFlag(FLAG_TAPPED_TARGET) - && (position == mTargetPosition)) { - setFlag(FLAG_TAPPED_TARGET, true); - final CharSequence nextText = getContext().getText( - R.string.accessibility_tutorial_next); - addInstruction(R.string.accessibility_tutorial_lesson_1_text_5, nextText); - setNextVisible(true); - } - } - - @Override - public void onShown() { - final int first = mAllApps.getFirstVisiblePosition(); - final int last = mAllApps.getLastVisiblePosition(); - - mTargetPosition = 0; - mTargetName = mAppsAdapter.getLabel(mTargetPosition); - - addInstruction(R.string.accessibility_tutorial_lesson_1_text_1); - setFlag(FLAG_TOUCH_ITEMS, true); - } - } - - /** - * Introduces using two fingers to scroll through a list. - */ - private static class TouchTutorialModule2 extends TutorialModule implements - AbsListView.OnScrollListener, View.OnHoverListener { - private static final int FLAG_EXPLORE_LIST = 0x1; - private static final int FLAG_SCROLL_LIST = 0x2; - private static final int FLAG_COMPLETED_TUTORIAL = 0x4; - - private static final int MORE_EXPLORE_COUNT = 1; - private static final int DONE_EXPLORE_COUNT = 2; - private static final int MORE_SCROLL_COUNT = 2; - private static final int DONE_SCROLL_COUNT = 4; - - private final AppsAdapter mAppsAdapter; - - private int mExploreCount = 0; - private int mInitialVisibleItem = -1; - private int mScrollCount = 0; - - public TouchTutorialModule2(Context context, AccessibilityTutorialActivity controller) { - super(context, controller, R.layout.accessibility_tutorial_2, - R.string.accessibility_tutorial_lesson_2_title); - - mAppsAdapter = new AppsAdapter(context, android.R.layout.simple_list_item_1, - android.R.id.text1) { - @Override - protected void populateView(TextView text, CharSequence label, Drawable icon) { - text.setText(label); - text.setCompoundDrawables(icon, null, null, null); - } - }; - mAppsAdapter.setOnHoverListener(this); - - ((ListView) findViewById(R.id.list_view)).setAdapter(mAppsAdapter); - ((ListView) findViewById(R.id.list_view)).setOnScrollListener(this); - - setBackVisible(true); - } - - @Override - public boolean onHover(View v, MotionEvent e) { - if (e.getAction() != MotionEvent.ACTION_HOVER_ENTER) { - return false; - } - - switch (v.getId()) { - case android.R.id.text1: - if (hasFlag(FLAG_EXPLORE_LIST) && !hasFlag(FLAG_SCROLL_LIST)) { - mExploreCount++; - - if (mExploreCount >= DONE_EXPLORE_COUNT) { - addInstruction(R.string.accessibility_tutorial_lesson_2_text_3); - setFlag(FLAG_SCROLL_LIST, true); - } else if (mExploreCount == MORE_EXPLORE_COUNT) { - addInstruction(R.string.accessibility_tutorial_lesson_2_text_2_more); - } - } - break; - } - - return false; - } - - @Override - public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, - int totalItemCount) { - if (hasFlag(FLAG_SCROLL_LIST) && !hasFlag(FLAG_COMPLETED_TUTORIAL)) { - if (mInitialVisibleItem < 0) { - mInitialVisibleItem = firstVisibleItem; - } - - final int scrollCount = Math.abs(mInitialVisibleItem - firstVisibleItem); - - if ((mScrollCount == scrollCount) || (scrollCount <= 0)) { - return; - } else { - mScrollCount = scrollCount; - } - - if (mScrollCount >= DONE_SCROLL_COUNT) { - final CharSequence finishText = getContext().getText( - R.string.accessibility_tutorial_finish); - addInstruction(R.string.accessibility_tutorial_lesson_2_text_4, finishText); - setFlag(FLAG_COMPLETED_TUTORIAL, true); - setFinishVisible(true); - } else if (mScrollCount == MORE_SCROLL_COUNT) { - addInstruction(R.string.accessibility_tutorial_lesson_2_text_3_more); - } - } - } - - @Override - public void onScrollStateChanged(AbsListView view, int scrollState) { - // Do nothing. - } - - @Override - public void onShown() { - addInstruction(R.string.accessibility_tutorial_lesson_2_text_1); - setFlag(FLAG_EXPLORE_LIST, true); - } - } - - /** - * Abstract class that represents a single module within a tutorial. - */ - private static abstract class TutorialModule extends FrameLayout implements OnClickListener { - private final AccessibilityTutorialActivity mController; - private final TextView mInstructions; - private final Button mSkip; - private final Button mBack; - private final Button mNext; - private final Button mFinish; - private final int mTitleResId; - - /** Which bit flags have been set. */ - private long mFlags; - - /** Whether this module is currently focused. */ - private boolean mIsVisible; - - /** Handler for sending accessibility events after the current UI action. */ - private InstructionHandler mHandler = new InstructionHandler(); - - /** - * Constructs a new tutorial module for the given context and controller - * with the specified layout. - * - * @param context The parent context. - * @param controller The parent tutorial controller. - * @param layoutResId The layout to use for this module. - */ - public TutorialModule(Context context, AccessibilityTutorialActivity controller, - int layoutResId, int titleResId) { - super(context); - - mController = controller; - mTitleResId = titleResId; - - final View container = LayoutInflater.from(context).inflate( - R.layout.accessibility_tutorial_container, this, true); - - mInstructions = (TextView) container.findViewById(R.id.instructions); - mSkip = (Button) container.findViewById(R.id.skip_button); - mSkip.setOnClickListener(this); - mBack = (Button) container.findViewById(R.id.back_button); - mBack.setOnClickListener(this); - mNext = (Button) container.findViewById(R.id.next_button); - mNext.setOnClickListener(this); - mFinish = (Button) container.findViewById(R.id.finish_button); - mFinish.setOnClickListener(this); - - final TextView title = (TextView) container.findViewById(R.id.title); - - if (title != null) { - title.setText(titleResId); - } - - final ViewGroup contentHolder = (ViewGroup) container.findViewById(R.id.content); - LayoutInflater.from(context).inflate(layoutResId, contentHolder, true); - } - - /** - * Called when this tutorial gains focus. - */ - public final void activate() { - mIsVisible = true; - - mFlags = 0; - mInstructions.setVisibility(View.GONE); - mController.setTitle(mTitleResId); - - onShown(); - } - - /** - * Formats an instruction string and adds it to the speaking queue. - * - * @param resId The resource id of the instruction string. - * @param formatArgs Optional formatting arguments. - * @see String#format(String, Object...) - */ - protected void addInstruction(final int resId, Object... formatArgs) { - if (!mIsVisible) { - return; - } - - final String text = mContext.getString(resId, formatArgs); - mHandler.addInstruction(text); - } - - private void addInstructionSync(CharSequence text) { - mInstructions.setVisibility(View.VISIBLE); - mInstructions.setText(text); - mInstructions.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); - } - - /** - * Called when this tutorial loses focus. - */ - public void deactivate() { - mIsVisible = false; - - mController.interrupt(); - } - - /** - * Returns {@code true} if the flag with the specified id has been set. - * - * @param flagId The id of the flag to check for. - * @return {@code true} if the flag with the specified id has been set. - */ - protected boolean hasFlag(int flagId) { - return (mFlags & flagId) == flagId; - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.skip_button: - mController.finish(); - break; - case R.id.back_button: - mController.previous(); - break; - case R.id.next_button: - mController.next(); - break; - case R.id.finish_button: - mController.finish(); - break; - } - } - - public abstract void onShown(); - - /** - * Sets or removes the flag with the specified id. - * - * @param flagId The id of the flag to modify. - * @param value {@code true} to set the flag, {@code false} to remove - * it. - */ - protected void setFlag(int flagId, boolean value) { - if (value) { - mFlags |= flagId; - } else { - mFlags = ~(~mFlags | flagId); - } - } - - protected void setSkipVisible(boolean visible) { - mSkip.setVisibility(visible ? VISIBLE : GONE); - } - - protected void setBackVisible(boolean visible) { - mBack.setVisibility(visible ? VISIBLE : GONE); - } - - protected void setNextVisible(boolean visible) { - mNext.setVisibility(visible ? VISIBLE : GONE); - } - - protected void setFinishVisible(boolean visible) { - mFinish.setVisibility(visible ? VISIBLE : GONE); - } - - private class InstructionHandler extends Handler { - private static final int ADD_INSTRUCTION = 1; - - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case ADD_INSTRUCTION: - final String text = (String) msg.obj; - addInstructionSync(text); - break; - } - } - - public void addInstruction(String text) { - obtainMessage(ADD_INSTRUCTION, text).sendToTarget(); - } - } - } - - /** - * Provides a tutorial-specific class name for fired accessibility events. - */ - public static class TutorialTextView extends TextView { - public TutorialTextView(Context context, AttributeSet attrs) { - super(context, attrs); - } - } -} |