package com.iwedia.gui.widgets; import android.appwidget.AppWidgetHostView; import android.content.Context; import android.os.CountDownTimer; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.FrameLayout; import android.widget.LinearLayout; /** * Overlay layout for widget * * @author Veljko Ilkic */ public class WidgetOverlayLinearLayout extends LinearLayout { /** Widget object */ private WidgetObject widgetObject; /** Widget handler object */ private WidgetsHandler widgetHandler; /** Main widget layout */ private FrameLayout widgetMainLayout; /** Real widget content */ private AppWidgetHostView widgetContent; /** Countdown timer */ private CountDownTimer couter; /** Long click threshold */ public static final int LONG_CLICK_THRESHOLD = 750; /** Elapsed time on touch for long click */ private long time; /** Constructor 1 */ public WidgetOverlayLinearLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } /** Constructor 2 */ public WidgetOverlayLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); } /** Constructor 3 */ public WidgetOverlayLinearLayout(Context context) { super(context); } @Override public boolean onTouchEvent(MotionEvent ev) { // Push event into widget content widgetContent.dispatchTouchEvent(ev); switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: { couter = new CountDownTimer(LONG_CLICK_THRESHOLD, 50) { public void onTick(long millisUntilFinished) { time = millisUntilFinished; } public void onFinish() { // ////////////////////////////////// // Long click // ////////////////////////////////// // Start dragging widgetHandler.startDrag(widgetMainLayout, widgetObject); } }.start(); break; } case MotionEvent.ACTION_UP: { // /////////////////////////// // Short click // //////////////////////////// if (time > LONG_CLICK_THRESHOLD / 2) { // Cancel long click counter couter.cancel(); return false; } } case MotionEvent.ACTION_MOVE: { // Cancel long click counter couter.cancel(); return false; } } return true; } // ////////////////////////////////////////// // Setters // ////////////////////////////////////////// /** Set widget object */ public void setWidgetObject(WidgetObject widgetObject) { this.widgetObject = widgetObject; } /** Set widget handler object */ public void setWidgetHandler(WidgetsHandler widgetHandler) { this.widgetHandler = widgetHandler; } /** Set widget main layout */ public void setWidgetMainLayout(FrameLayout widgetMainLayout) { this.widgetMainLayout = widgetMainLayout; } public void setWidgetContent(AppWidgetHostView widgetContent) { this.widgetContent = widgetContent; } }