/** * Prepare effect panel. * * @param effect the effect * @param entry the entry */ private void prepareEffectPanel(final AbstractEffectPanel effect, final EffectEntry entry) { View option_child = null; View drawing_child = null; if (effect instanceof OptionPanel) { option_child = ((OptionPanel) effect) .getOptionView(UIUtils.getLayoutInflater(), mContext.getOptionsPanelContainer()); mContext.getOptionsPanelContainer().addView(option_child); } if (effect instanceof ContentPanel) { drawing_child = ((ContentPanel) effect).getContentView(UIUtils.getLayoutInflater()); drawing_child.setLayoutParams( new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); mContext.getDrawingImageContainer().addView(drawing_child); } effect.onCreate(mBitmap); }
/** * Sets the current state. * * @param newState the new current state */ private void setCurrentState(final STATE newState) { if (newState != mCurrentState) { final STATE previousState = mCurrentState; mCurrentState = newState; switch (newState) { case OPENING: mCurrentEffect.setOnPreviewListener(this); mCurrentEffect.setOnApplyResultListener(this); mCurrentEffect.setOnErrorListener(this); mCurrentEffect.setOnProgressListener(this); if (mCurrentEffect instanceof ContentPanel) ((ContentPanel) mCurrentEffect).setOnReadyListener(this); mHandler.sendEmptyMessage(FilterManager.STATE_OPENING); break; case OPENED: mCurrentEffect.onActivate(); mHandler.sendEmptyMessage(FilterManager.STATE_OPENED); if (!(mCurrentEffect instanceof ContentPanel)) { mHandler.sendEmptyMessage(STATE_READY); } break; case CLOSING: mHandler.sendEmptyMessage(FilterManager.STATE_CLOSING); mCurrentEffect.onDeactivate(); if (mCurrentEffect instanceof ContentPanel) { ((ContentPanel) mCurrentEffect).setOnReadyListener(null); } mHandler.postDelayed( new Runnable() { @Override public void run() { if (null != mBitmapChangeListener) mBitmapChangeListener.onClearColorFilter(); mContext.getDrawingImageContainer().removeAllViews(); mContext.deactivatePopupContainer(); } }, 100); break; case CLOSED_CANCEL: case CLOSED_CONFIRMED: mContext.getOptionsPanelContainer().removeAllViews(); if (previousState != STATE.DISABLED) { mCurrentEffect.onDestroy(); mCurrentEffect.setOnPreviewListener(null); mCurrentEffect.setOnApplyResultListener(null); mCurrentEffect.setOnErrorListener(null); mCurrentEffect.setOnProgressListener(null); mCurrentEffect = null; mCurrentEntry = null; } mHandler.sendEmptyMessage(FilterManager.STATE_CLOSED); if ((newState == STATE.CLOSED_CONFIRMED) && (previousState != STATE.DISABLED)) if (mToolListener != null) mToolListener.onToolCompleted(); System.gc(); break; case DISABLED: mHandler.sendEmptyMessage(FilterManager.STATE_DISABLED); break; } } }