package app.fedilab.android.imageeditor; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.RadioGroup; import android.widget.SeekBar; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import app.fedilab.android.R; import ja.burhanrashid52.photoeditor.shape.ShapeType; public class ShapeBSFragment extends BottomSheetDialogFragment implements SeekBar.OnSeekBarChangeListener { private Properties mProperties; public ShapeBSFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_bottom_shapes_dialog, container, false); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); RecyclerView rvColor = view.findViewById(R.id.shapeColors); SeekBar sbOpacity = view.findViewById(R.id.shapeOpacity); SeekBar sbBrushSize = view.findViewById(R.id.shapeSize); RadioGroup shapeGroup = view.findViewById(R.id.shapeRadioGroup); // shape picker shapeGroup.setOnCheckedChangeListener((group, checkedId) -> { if (checkedId == R.id.lineRadioButton) { mProperties.onShapePicked(ShapeType.LINE); } else if (checkedId == R.id.ovalRadioButton) { mProperties.onShapePicked(ShapeType.OVAL); } else if (checkedId == R.id.rectRadioButton) { mProperties.onShapePicked(ShapeType.RECTANGLE); } else { mProperties.onShapePicked(ShapeType.BRUSH); } }); sbOpacity.setOnSeekBarChangeListener(this); sbBrushSize.setOnSeekBarChangeListener(this); LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false); rvColor.setLayoutManager(layoutManager); rvColor.setHasFixedSize(true); ColorPickerAdapter colorPickerAdapter = new ColorPickerAdapter(getActivity()); colorPickerAdapter.setOnColorPickerClickListener(colorCode -> { if (mProperties != null) { dismiss(); mProperties.onColorChanged(colorCode); } }); rvColor.setAdapter(colorPickerAdapter); } public void setPropertiesChangeListener(Properties properties) { mProperties = properties; } @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { switch (seekBar.getId()) { case R.id.shapeOpacity: if (mProperties != null) { mProperties.onOpacityChanged(i); } break; case R.id.shapeSize: if (mProperties != null) { mProperties.onShapeSizeChanged(i); } break; } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } public interface Properties { void onColorChanged(int colorCode); void onOpacityChanged(int opacity); void onShapeSizeChanged(int shapeSize); void onShapePicked(ShapeType shapeType); } }