annotate src/uk/ac/qmul/eecs/ccmi/accessibility/AccessibleSpinner.java @ 1:66b3a838feca logging tip

Added logging of user interaction
author Fiore Martin <fiore@eecs.qmul.ac.uk>
date Tue, 12 Feb 2013 15:31:48 +0000
parents e0ee6ac3a45f
children
rev   line source
fiore@0 1 /*
fiore@0 2 CCmI Diagram Editor for Android
fiore@0 3
fiore@0 4 Copyright (C) 2012 Queen Mary University of London (http://ccmi.eecs.qmul.ac.uk/)
fiore@0 5
fiore@0 6 This program is free software: you can redistribute it and/or modify
fiore@0 7 it under the terms of the GNU General Public License as published by
fiore@0 8 the Free Software Foundation, either version 3 of the License, or
fiore@0 9 (at your option) any later version.
fiore@0 10
fiore@0 11 This program is distributed in the hope that it will be useful,
fiore@0 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
fiore@0 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fiore@0 14 GNU General Public License for more details.
fiore@0 15
fiore@0 16 You should have received a copy of the GNU General Public License
fiore@0 17 along with this program. If not, see <http://www.gnu.org/licenses/>.
fiore@0 18 */
fiore@0 19 package uk.ac.qmul.eecs.ccmi.accessibility;
fiore@0 20
fiore@1 21 import uk.ac.qmul.eecs.ccmi.utilities.ILogger;
fiore@0 22 import android.content.Context;
fiore@0 23 import android.util.AttributeSet;
fiore@0 24 import android.view.MotionEvent;
fiore@0 25 import android.widget.Spinner;
fiore@0 26
fiore@0 27 /**
fiore@0 28 *
fiore@0 29 * The accessible spinner is designed to be accessible without looking at the display. A click on
fiore@0 30 * the spinner will not open a selection menu but will just switch the selected item, giving proper audio
fiore@0 31 * feedback of the performed action.
fiore@0 32 *
fiore@0 33 */
fiore@0 34 public class AccessibleSpinner extends Spinner {
fiore@0 35 private AccessibilityService service;
fiore@0 36
fiore@0 37 public AccessibleSpinner(Context context) {
fiore@0 38 super(context);
fiore@0 39 }
fiore@0 40
fiore@0 41 public AccessibleSpinner(Context context, AttributeSet attrs) {
fiore@0 42 super(context, attrs);
fiore@0 43 }
fiore@0 44
fiore@0 45 public AccessibleSpinner(Context context, AttributeSet attrs, int defStyle) {
fiore@0 46 super(context, attrs, defStyle);
fiore@0 47 }
fiore@0 48
fiore@0 49 public void setAccessibilityService(AccessibilityService service){
fiore@0 50 this.service = service;
fiore@0 51 }
fiore@0 52
fiore@0 53 public AccessibilityService getAccessibilityService(){
fiore@0 54 return service;
fiore@0 55 }
fiore@0 56
fiore@0 57 /**
fiore@0 58 * Touching the spinner doesn't open a selection menu but just switches to the next item. The name of the next
fiore@0 59 * item is also uttered by the Android text-to-speech synthesizer.
fiore@0 60 *
fiore@0 61 * @param evt The motion event to be dispatched.
fiore@0 62 */
fiore@0 63 @Override
fiore@0 64 public boolean dispatchTouchEvent(MotionEvent evt){
fiore@0 65 if(evt.getAction() == MotionEvent.ACTION_UP){
fiore@0 66 setSelection((getSelectedItemPosition()+1) % getCount());
fiore@0 67 if(service != null){
fiore@0 68 service.speak(getSelectedItem().toString());
fiore@0 69 }
fiore@1 70 ILogger.logTap("spinner (new value=("+getSelectedItem().toString()+')');
fiore@0 71 }
fiore@0 72
fiore@0 73 return true;
fiore@0 74 }
fiore@0 75
fiore@0 76 }