/* * Copyright (C) 2014 The AppCan Open Source Project. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package org.zywx.wbpalmstar.engine; import android.app.Activity; import android.content.Context; import android.view.View; import android.view.WindowManager; import org.zywx.wbpalmstar.engine.universalex.EUExBase; import org.zywx.wbpalmstar.engine.universalex.EUExEventListener; import org.zywx.wbpalmstar.engine.universalex.EUExWidget.SpaceClickListener; import org.zywx.wbpalmstar.platform.myspace.DragableView; import org.zywx.wbpalmstar.platform.myspace.DragableView.OnGSBallFallListener; import org.zywx.wbpalmstar.widgetone.dataservice.WWidgetData; import java.util.ArrayList; import java.util.List; public class EBrowserAround implements android.view.View.OnClickListener { private DragableView mHover; private int mSpaceFlag; private boolean mTimeFlag; private boolean mInSubWidget; private boolean mSpaceShow; private Context mContext; private List<EUExEventListener> mEventListeners; private SpaceClickListener listener; private EBrowserWidgetPool mBrwWidPool; private boolean mIsSpaceEnable = false; public EBrowserAround(Context context) { mContext = context; mEventListeners = new ArrayList<EUExEventListener>(); } public void init(EBrowserWidgetPool brwWidPool) { mBrwWidPool = brwWidPool; } public void onResume() { for (EUExEventListener lis : mEventListeners) { lis.onEvent(EUExBase.F_UEX_EVENT_TYPE_APP_ON_RESUME); } } public void onPause() { for (EUExEventListener lis : mEventListeners) { lis.onEvent(EUExBase.F_UEX_EVENT_TYPE_APP_ON_PAUSE); } } public boolean onExit() { boolean beHandler = false; for (EUExEventListener lis : mEventListeners) { boolean one = lis.onEvent(EUExBase.F_UEX_EVENT_TYPE_APP_EXIT); if (one) { beHandler = true; break; } } return beHandler; } private void onReady() { for (EUExEventListener lis : mEventListeners) { lis.onEvent(EUExBase.F_UEX_EVENT_TYPE_APP_ON_READY); } } public void registerAppEventListener(EUExEventListener listener) { if (null != listener && !mEventListeners.contains(listener)) { mEventListeners.add(listener); } } public void unRegisterAppEventListener(EUExEventListener listener) { if (null != listener) { mEventListeners.remove(listener); } } public void hiddenSplashScreen(int flag) { onReady(); if (ESystemInfo.getIntence().mIsDevelop || !checkSpaceFlag(WWidgetData.F_SPACESTATUS_CLOSE)) { checkHover(); mHover.setVisibility(View.VISIBLE); } setTimeFlag(false); } public void setTimeFlag(boolean flag) { if (mTimeFlag != flag) { mTimeFlag = flag; } } public boolean checkTimeFlag() { return mTimeFlag; } public void removeViewImmediate() { if (null != mHover) { ((Activity) mContext).getWindowManager().removeViewImmediate(mHover); } } public void showHover(boolean isInSubWidget) { if (ESystemInfo.getIntence().mIsDevelop) { checkHover(); mHover.setVisibility(View.VISIBLE); } else { if (checkSpaceFlag(WWidgetData.F_SPACESTATUS_CLOSE)) return; checkHover(); mHover.setVisibility(View.VISIBLE); } mInSubWidget = isInSubWidget; mSpaceShow = false; } public void hiddenHover(boolean isInSubWidget) { if (ESystemInfo.getIntence().mIsDevelop || !mHover.isShown()) { return; } mHover.setVisibility(View.GONE); mInSubWidget = isInSubWidget; } public void setSpaceFlag(int flag) { mSpaceFlag = flag; } private boolean checkSpaceFlag(int value) { return value == mSpaceFlag; } private void checkHover() { if (null == mHover) { WindowManager wmgr = ((Activity) mContext).getWindowManager(); mHover = new DragableView(wmgr, mContext); mHover.setClickable(true); mHover.setVisibility(View.GONE); mHover.setGSBallFallListener(new OnGSBallFallListener() { @Override public void onGSBallFalled() { mBrwWidPool.goMySpace(); } }); mHover.setOnClickListener(this); wmgr.addView(mHover, mHover.getLayoutParams()); } } public void clean() { mContext = null; mHover = null; mEventListeners.clear(); } @Override public void onClick(View view) { if (mIsSpaceEnable && view == mHover) { listener.onSpaceClick(); return; } EBrowserActivity ctx = (EBrowserActivity) mContext; if (ctx.customViewShown()) { ctx.hideCustomView(); return; } if (ESystemInfo.getIntence().mIsDevelop || mInSubWidget) { mBrwWidPool.finishWidget(null, null, true, ""); return; } if (mSpaceShow) { return; } mBrwWidPool.goMySpace(); mSpaceShow = true; } public void setSpaceEnable(SpaceClickListener listener) { mIsSpaceEnable = true; this.listener = listener; checkHover(); mHover.setVisibility(View.VISIBLE); } }