188f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung/* 288f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * Copyright (C) 2012 The Android Open Source Project 388f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * 488f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * Licensed under the Apache License, Version 2.0 (the "License"); 588f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * you may not use this file except in compliance with the License. 688f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * You may obtain a copy of the License at 788f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * 888f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * http://www.apache.org/licenses/LICENSE-2.0 988f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * 1088f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * Unless required by applicable law or agreed to in writing, software 1188f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * distributed under the License is distributed on an "AS IS" BASIS, 1288f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1388f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * See the License for the specific language governing permissions and 1488f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung * limitations under the License. 1588f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung */ 1688f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung 1788f334571fe41df620ba903ced9b2c69b0170d5cWinson Chungpackage com.android.launcher2; 1888f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung 1988f334571fe41df620ba903ced9b2c69b0170d5cWinson Chungimport android.view.View; 2088f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung 2188f334571fe41df620ba903ced9b2c69b0170d5cWinson Chungpublic class CheckLongPressHelper { 2288f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung private View mView; 2388f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung private boolean mHasPerformedLongPress; 2488f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung private CheckForLongPress mPendingCheckForLongPress; 2588f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung 2688f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung class CheckForLongPress implements Runnable { 2788f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung public void run() { 2888f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung if ((mView.getParent() != null) && mView.hasWindowFocus() 2988f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung && !mHasPerformedLongPress) { 3088f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung if (mView.performLongClick()) { 31401d3a57b9fce6703d5a8f332506af1c0027362fWinson Chung mView.setPressed(false); 3288f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung mHasPerformedLongPress = true; 3388f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung } 3488f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung } 3588f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung } 3688f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung } 3788f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung 3888f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung public CheckLongPressHelper(View v) { 3988f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung mView = v; 4088f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung } 4188f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung 4288f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung public void postCheckForLongPress() { 4388f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung mHasPerformedLongPress = false; 4488f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung 4588f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung if (mPendingCheckForLongPress == null) { 4688f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung mPendingCheckForLongPress = new CheckForLongPress(); 4788f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung } 4888f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung mView.postDelayed(mPendingCheckForLongPress, LauncherApplication.getLongPressTimeout()); 4988f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung } 5088f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung 5188f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung public void cancelLongPress() { 5288f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung mHasPerformedLongPress = false; 5388f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung if (mPendingCheckForLongPress != null) { 5488f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung mView.removeCallbacks(mPendingCheckForLongPress); 5588f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung mPendingCheckForLongPress = null; 5688f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung } 5788f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung } 5888f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung 5988f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung public boolean hasPerformedLongPress() { 6088f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung return mHasPerformedLongPress; 6188f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung } 6288f334571fe41df620ba903ced9b2c69b0170d5cWinson Chung} 63