• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 
18 package com.android.launcher2;
19 
20 import android.widget.ImageView;
21 import android.content.Context;
22 import android.content.res.TypedArray;
23 import android.util.AttributeSet;
24 import android.view.MotionEvent;
25 import android.view.KeyEvent;
26 import android.view.View;
27 
28 import com.android.launcher.R;
29 
30 public class HandleView extends ImageView {
31     private static final int ORIENTATION_HORIZONTAL = 1;
32 
33     private Launcher mLauncher;
34     private int mOrientation = ORIENTATION_HORIZONTAL;
35 
HandleView(Context context)36     public HandleView(Context context) {
37         super(context);
38     }
39 
HandleView(Context context, AttributeSet attrs)40     public HandleView(Context context, AttributeSet attrs) {
41         this(context, attrs, 0);
42     }
43 
HandleView(Context context, AttributeSet attrs, int defStyle)44     public HandleView(Context context, AttributeSet attrs, int defStyle) {
45         super(context, attrs, defStyle);
46 
47         TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HandleView, defStyle, 0);
48         mOrientation = a.getInt(R.styleable.HandleView_direction, ORIENTATION_HORIZONTAL);
49         a.recycle();
50 
51         setContentDescription(context.getString(R.string.all_apps_button_label));
52     }
53 
54     @Override
focusSearch(int direction)55     public View focusSearch(int direction) {
56         View newFocus = super.focusSearch(direction);
57         if (newFocus == null && !mLauncher.isAllAppsVisible()) {
58             final Workspace workspace = mLauncher.getWorkspace();
59             workspace.dispatchUnhandledMove(null, direction);
60             return (mOrientation == ORIENTATION_HORIZONTAL && direction == FOCUS_DOWN) ?
61                     this : workspace;
62         }
63         return newFocus;
64     }
65 
66     @Override
onTouchEvent(MotionEvent ev)67     public boolean onTouchEvent(MotionEvent ev) {
68         if (ev.getAction() == MotionEvent.ACTION_DOWN && mLauncher.isAllAppsVisible()) {
69             return false;
70         }
71         return super.onTouchEvent(ev);
72     }
73 
isDirectionKey(int keyCode)74     private static boolean isDirectionKey(int keyCode) {
75         return keyCode == KeyEvent.KEYCODE_DPAD_DOWN || keyCode == KeyEvent.KEYCODE_DPAD_LEFT ||
76                 keyCode == KeyEvent.KEYCODE_DPAD_RIGHT || keyCode == KeyEvent.KEYCODE_DPAD_UP;
77     }
78 
setLauncher(Launcher launcher)79     void setLauncher(Launcher launcher) {
80         mLauncher = launcher;
81     }
82 }
83