Exemple #1
0
  public static View createElementErrorView(ElementFailureException e) {
    final LinearLayout v =
        (LinearLayout)
            LayoutInflater.from(Utils.mainActivity).inflate(R.layout.element_failure, null, false);
    assert v != null;

    ((TextView) v.findViewById(R.id.element_failure_title))
        .setText(e.getSourceClass() + " has failed:");

    ((TextView) v.findViewById(R.id.element_failure_description)).setText(e.getMessage());

    e.printStackTrace();

    try {
      final View child = e.getSource().getView();
      final LinearLayout section = (LinearLayout) child.getParent();

      if (section != null) {
        final int position = section.indexOfChild(child);
        Synapse.handler.post(
            new Runnable() {
              @Override
              public void run() {
                section.removeView(child);
                section.addView(v, position);
              }
            });
        return null;
      }
    } catch (Exception ignored) {
    }

    return v;
  }
 private void selectTile(View v) {
   if (mSelectedTile != null) {
     mSelectedTile.setSelected(false);
     mSelectedTile = null;
   }
   mSelectedTile = v;
   v.setSelected(true);
   mSelectedIndex = mWallpapersView.indexOfChild(v);
   // TODO: Remove this once the accessibility framework and
   // services have better support for selection state.
   v.announceForAccessibility(getString(R.string.announce_selection, v.getContentDescription()));
 }
  private void bind(final Condition condition, final View row) {
    if (condition == null) throw new IllegalArgumentException("condition must not be null");
    final boolean enabled = condition.state == Condition.STATE_TRUE;
    final ConditionTag tag =
        row.getTag() != null ? (ConditionTag) row.getTag() : new ConditionTag();
    row.setTag(tag);
    final boolean first = tag.rb == null;
    if (tag.rb == null) {
      tag.rb = (RadioButton) row.findViewById(android.R.id.checkbox);
    }
    tag.condition = condition;
    final Uri conditionId = getConditionId(tag.condition);
    if (DEBUG)
      Log.d(
          mTag,
          "bind i="
              + mZenConditions.indexOfChild(row)
              + " first="
              + first
              + " condition="
              + conditionId);
    tag.rb.setEnabled(enabled);
    final boolean checked =
        (mSessionExitCondition != null || mAttachedZen != Global.ZEN_MODE_OFF)
            && (sameConditionId(mSessionExitCondition, tag.condition)
                || isCountdown(mSessionExitCondition) && isCountdown(tag.condition));
    if (checked != tag.rb.isChecked()) {
      if (DEBUG) Log.d(mTag, "bind checked=" + checked + " condition=" + conditionId);
      tag.rb.setChecked(checked);
    }
    tag.rb.setOnCheckedChangeListener(
        new OnCheckedChangeListener() {
          @Override
          public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (mExpanded && isChecked) {
              if (DEBUG) Log.d(mTag, "onCheckedChanged " + conditionId);
              final int N = getVisibleConditions();
              for (int i = 0; i < N; i++) {
                final ConditionTag childTag = getConditionTagAt(i);
                if (childTag == null || childTag == tag) continue;
                childTag.rb.setChecked(false);
              }
              select(tag.condition);
              announceConditionSelection(tag);
            }
          }
        });

    if (tag.lines == null) {
      tag.lines = row.findViewById(android.R.id.content);
    }
    if (tag.line1 == null) {
      tag.line1 = (TextView) row.findViewById(android.R.id.text1);
    }
    if (tag.line2 == null) {
      tag.line2 = (TextView) row.findViewById(android.R.id.text2);
    }
    final String line1 = !TextUtils.isEmpty(condition.line1) ? condition.line1 : condition.summary;
    final String line2 = condition.line2;
    tag.line1.setText(line1);
    if (TextUtils.isEmpty(line2)) {
      tag.line2.setVisibility(GONE);
    } else {
      tag.line2.setVisibility(VISIBLE);
      tag.line2.setText(line2);
    }
    tag.lines.setEnabled(enabled);
    tag.lines.setAlpha(enabled ? 1 : .4f);

    final ImageView button1 = (ImageView) row.findViewById(android.R.id.button1);
    button1.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            onClickTimeButton(row, tag, false /*down*/);
          }
        });

    final ImageView button2 = (ImageView) row.findViewById(android.R.id.button2);
    button2.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            onClickTimeButton(row, tag, true /*up*/);
          }
        });
    tag.lines.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            tag.rb.setChecked(true);
          }
        });

    final long time = ZenModeConfig.tryParseCountdownConditionId(conditionId);
    if (time > 0) {
      button1.setVisibility(VISIBLE);
      button2.setVisibility(VISIBLE);
      if (mBucketIndex > -1) {
        button1.setEnabled(mBucketIndex > 0);
        button2.setEnabled(mBucketIndex < MINUTE_BUCKETS.length - 1);
      } else {
        final long span = time - System.currentTimeMillis();
        button1.setEnabled(span > MIN_BUCKET_MINUTES * MINUTES_MS);
        final Condition maxCondition =
            ZenModeConfig.toTimeCondition(
                mContext, MAX_BUCKET_MINUTES, ActivityManager.getCurrentUser());
        button2.setEnabled(!Objects.equals(condition.summary, maxCondition.summary));
      }

      button1.setAlpha(button1.isEnabled() ? 1f : .5f);
      button2.setAlpha(button2.isEnabled() ? 1f : .5f);
    } else {
      button1.setVisibility(GONE);
      button2.setVisibility(GONE);
    }
    // wire up interaction callbacks for newly-added condition rows
    if (first) {
      Interaction.register(tag.rb, mInteractionCallback);
      Interaction.register(tag.lines, mInteractionCallback);
      Interaction.register(button1, mInteractionCallback);
      Interaction.register(button2, mInteractionCallback);
    }
    row.setVisibility(VISIBLE);
  }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ImageFilterRS.setRenderScriptContext(this);

    ImageShow.setDefaultBackgroundColor(getResources().getColor(R.color.background_screen));
    ImageSmallFilter.setDefaultBackgroundColor(
        getResources().getColor(R.color.background_main_toolbar));
    // TODO: get those values from XML.
    ImageZoom.setZoomedSize(getPixelsFromDip(256));
    FramedTextButton.setTextSize((int) getPixelsFromDip(14));
    FramedTextButton.setTrianglePadding((int) getPixelsFromDip(4));
    FramedTextButton.setTriangleSize((int) getPixelsFromDip(10));
    ImageShow.setTextSize((int) getPixelsFromDip(12));
    ImageShow.setTextPadding((int) getPixelsFromDip(10));
    ImageShow.setOriginalTextMargin((int) getPixelsFromDip(4));
    ImageShow.setOriginalTextSize((int) getPixelsFromDip(18));
    ImageShow.setOriginalText(getResources().getString(R.string.original_picture_text));
    ImageButtonTitle.setTextSize((int) getPixelsFromDip(12));
    ImageButtonTitle.setTextPadding((int) getPixelsFromDip(10));
    ImageSmallFilter.setMargin((int) getPixelsFromDip(3));
    ImageSmallFilter.setTextMargin((int) getPixelsFromDip(4));
    Drawable curveHandle = getResources().getDrawable(R.drawable.camera_crop);
    int curveHandleSize = (int) getResources().getDimension(R.dimen.crop_indicator_size);
    Spline.setCurveHandle(curveHandle, curveHandleSize);
    Spline.setCurveWidth((int) getPixelsFromDip(3));

    setContentView(R.layout.filtershow_activity);
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    actionBar.setCustomView(R.layout.filtershow_actionbar);

    actionBar
        .getCustomView()
        .setOnClickListener(
            new OnClickListener() {
              @Override
              public void onClick(View view) {
                saveImage();
              }
            });

    mImageLoader = new ImageLoader(this, getApplicationContext());

    LinearLayout listFilters = (LinearLayout) findViewById(R.id.listFilters);
    LinearLayout listBorders = (LinearLayout) findViewById(R.id.listBorders);
    LinearLayout listColors = (LinearLayout) findViewById(R.id.listColorsFx);

    mImageShow = (ImageShow) findViewById(R.id.imageShow);
    mImageCurves = (ImageCurves) findViewById(R.id.imageCurves);
    mImageBorders = (ImageBorder) findViewById(R.id.imageBorder);
    mImageStraighten = (ImageStraighten) findViewById(R.id.imageStraighten);
    mImageZoom = (ImageZoom) findViewById(R.id.imageZoom);
    mImageCrop = (ImageCrop) findViewById(R.id.imageCrop);
    mImageRotate = (ImageRotate) findViewById(R.id.imageRotate);
    mImageFlip = (ImageFlip) findViewById(R.id.imageFlip);
    mImageTinyPlanet = (ImageTinyPlanet) findViewById(R.id.imageTinyPlanet);

    mImageCrop.setAspectTextSize((int) getPixelsFromDip(18));
    ImageCrop.setTouchTolerance((int) getPixelsFromDip(25));
    mImageViews.add(mImageShow);
    mImageViews.add(mImageCurves);
    mImageViews.add(mImageBorders);
    mImageViews.add(mImageStraighten);
    mImageViews.add(mImageZoom);
    mImageViews.add(mImageCrop);
    mImageViews.add(mImageRotate);
    mImageViews.add(mImageFlip);
    mImageViews.add(mImageTinyPlanet);

    mListFx = findViewById(R.id.fxList);
    mListBorders = findViewById(R.id.bordersList);
    mListGeometry = findViewById(R.id.geometryList);
    mListFilterButtons = findViewById(R.id.filterButtonsList);
    mListColors = findViewById(R.id.colorsFxList);
    mListViews.add(mListFx);
    mListViews.add(mListBorders);
    mListViews.add(mListGeometry);
    mListViews.add(mListFilterButtons);
    mListViews.add(mListColors);

    mFxButton = (ImageButton) findViewById(R.id.fxButton);
    mBorderButton = (ImageButton) findViewById(R.id.borderButton);
    mGeometryButton = (ImageButton) findViewById(R.id.geometryButton);
    mColorsButton = (ImageButton) findViewById(R.id.colorsButton);

    mBottomPanelButtons.add(mFxButton);
    mBottomPanelButtons.add(mBorderButton);
    mBottomPanelButtons.add(mGeometryButton);
    mBottomPanelButtons.add(mColorsButton);

    mImageShow.setImageLoader(mImageLoader);
    mImageCurves.setImageLoader(mImageLoader);
    mImageCurves.setMaster(mImageShow);
    mImageBorders.setImageLoader(mImageLoader);
    mImageBorders.setMaster(mImageShow);
    mImageStraighten.setImageLoader(mImageLoader);
    mImageStraighten.setMaster(mImageShow);
    mImageZoom.setImageLoader(mImageLoader);
    mImageZoom.setMaster(mImageShow);
    mImageCrop.setImageLoader(mImageLoader);
    mImageCrop.setMaster(mImageShow);
    mImageRotate.setImageLoader(mImageLoader);
    mImageRotate.setMaster(mImageShow);
    mImageFlip.setImageLoader(mImageLoader);
    mImageFlip.setMaster(mImageShow);
    mImageTinyPlanet.setImageLoader(mImageLoader);
    mImageTinyPlanet.setMaster(mImageShow);

    mPanelController.setActivity(this);

    mPanelController.addImageView(findViewById(R.id.imageShow));
    mPanelController.addImageView(findViewById(R.id.imageCurves));
    mPanelController.addImageView(findViewById(R.id.imageBorder));
    mPanelController.addImageView(findViewById(R.id.imageStraighten));
    mPanelController.addImageView(findViewById(R.id.imageCrop));
    mPanelController.addImageView(findViewById(R.id.imageRotate));
    mPanelController.addImageView(findViewById(R.id.imageFlip));
    mPanelController.addImageView(findViewById(R.id.imageZoom));
    mPanelController.addImageView(findViewById(R.id.imageTinyPlanet));

    mPanelController.addPanel(mFxButton, mListFx, 0);
    mPanelController.addPanel(mBorderButton, mListBorders, 1);

    mPanelController.addPanel(mGeometryButton, mListGeometry, 2);
    mPanelController.addComponent(mGeometryButton, findViewById(R.id.straightenButton));
    mPanelController.addComponent(mGeometryButton, findViewById(R.id.cropButton));
    mPanelController.addComponent(mGeometryButton, findViewById(R.id.rotateButton));
    mPanelController.addComponent(mGeometryButton, findViewById(R.id.flipButton));

    mPanelController.addPanel(mColorsButton, mListColors, 3);

    int[] recastIDs = {
      R.id.tinyplanetButton,
      R.id.vignetteButton,
      R.id.vibranceButton,
      R.id.contrastButton,
      R.id.saturationButton,
      R.id.bwfilterButton,
      R.id.wbalanceButton,
      R.id.hueButton,
      R.id.exposureButton,
      R.id.shadowRecoveryButton
    };
    ImageFilter[] filters = {
      new ImageFilterTinyPlanet(),
      new ImageFilterVignette(),
      new ImageFilterVibrance(),
      new ImageFilterContrast(),
      new ImageFilterSaturated(),
      new ImageFilterBwFilter(),
      new ImageFilterWBalance(),
      new ImageFilterHue(),
      new ImageFilterExposure(),
      new ImageFilterShadows()
    };

    for (int i = 0; i < filters.length; i++) {
      ImageSmallFilter fView = new ImageSmallFilter(this);
      View v = listColors.findViewById(recastIDs[i]);
      int pos = listColors.indexOfChild(v);
      listColors.removeView(v);

      filters[i].setParameter(filters[i].getPreviewParameter());
      if (v instanceof ImageButtonTitle) filters[i].setName(((ImageButtonTitle) v).getText());
      fView.setImageFilter(filters[i]);
      fView.setController(this);
      fView.setImageLoader(mImageLoader);
      fView.setId(recastIDs[i]);
      mPanelController.addComponent(mColorsButton, fView);
      listColors.addView(fView, pos);
    }

    int[] overlayIDs = {R.id.sharpenButton, R.id.curvesButtonRGB};
    int[] overlayBitmaps = {
      R.drawable.filtershow_button_colors_sharpen, R.drawable.filtershow_button_colors_curve
    };
    int[] overlayNames = {R.string.sharpness, R.string.curvesRGB};

    for (int i = 0; i < overlayIDs.length; i++) {
      ImageWithIcon fView = new ImageWithIcon(this);
      View v = listColors.findViewById(overlayIDs[i]);
      int pos = listColors.indexOfChild(v);
      listColors.removeView(v);
      final int sid = overlayNames[i];
      ImageFilterExposure efilter =
          new ImageFilterExposure() {
            {
              mName = getString(sid);
            }
          };
      efilter.setParameter(-300);
      Bitmap bitmap = BitmapFactory.decodeResource(getResources(), overlayBitmaps[i]);

      fView.setIcon(bitmap);
      fView.setImageFilter(efilter);
      fView.setController(this);
      fView.setImageLoader(mImageLoader);
      fView.setId(overlayIDs[i]);
      mPanelController.addComponent(mColorsButton, fView);
      listColors.addView(fView, pos);
    }

    mPanelController.addView(findViewById(R.id.applyEffect));
    mPanelController.addView(findViewById(R.id.pickCurvesChannel));
    mPanelController.addView(findViewById(R.id.aspect));
    findViewById(R.id.resetOperationsButton)
        .setOnClickListener(createOnClickResetOperationsButton());

    ListView operationsList = (ListView) findViewById(R.id.operationsList);
    operationsList.setAdapter(mImageShow.getHistory());
    operationsList.setOnItemClickListener(this);
    ListView imageStateList = (ListView) findViewById(R.id.imageStateList);
    imageStateList.setAdapter(mImageShow.getImageStateAdapter());
    mImageLoader.setAdapter(mImageShow.getHistory());

    fillListImages(listFilters);
    fillListBorders(listBorders);

    SeekBar seekBar = (SeekBar) findViewById(R.id.filterSeekBar);
    seekBar.setMax(SEEK_BAR_MAX);

    mImageShow.setSeekBar(seekBar);
    mImageZoom.setSeekBar(seekBar);
    mImageTinyPlanet.setSeekBar(seekBar);
    mPanelController.setRowPanel(findViewById(R.id.secondRowPanel));
    mPanelController.setUtilityPanel(
        this,
        findViewById(R.id.filterButtonsList),
        findViewById(R.id.applyEffect),
        findViewById(R.id.aspect),
        findViewById(R.id.pickCurvesChannel));
    mPanelController.setMasterImage(mImageShow);
    mPanelController.setCurrentPanel(mFxButton);
    Intent intent = getIntent();
    if (intent.getBooleanExtra(LAUNCH_FULLSCREEN, false)) {
      getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    if (intent.getData() != null) {
      startLoadBitmap(intent.getData());
    } else {
      pickImage();
    }

    String action = intent.getAction();
    if (action.equalsIgnoreCase(CROP_ACTION)) {
      mPanelController.showComponent(findViewById(R.id.cropButton));
    } else if (action.equalsIgnoreCase(TINY_PLANET_ACTION)) {
      mPanelController.showComponent(findViewById(R.id.tinyplanetButton));
    }
  }