/**
   * 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);
  }
Exemplo n.º 2
0
  /**
   * 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;
      }
    }
  }