2019-05-30 15:19:02 +02:00
|
|
|
package app.fedilab.android.imageeditor;
|
|
|
|
|
|
|
|
import android.annotation.SuppressLint;
|
|
|
|
import android.app.Dialog;
|
2019-11-15 16:32:25 +01:00
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
import android.widget.TextView;
|
2019-09-06 17:55:14 +02:00
|
|
|
|
2019-06-11 19:38:26 +02:00
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
|
|
|
import androidx.recyclerview.widget.GridLayoutManager;
|
|
|
|
import androidx.recyclerview.widget.RecyclerView;
|
2019-09-06 17:55:14 +02:00
|
|
|
|
2019-11-15 16:32:25 +01:00
|
|
|
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
|
|
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
2019-05-30 15:19:02 +02:00
|
|
|
|
2019-05-31 16:18:41 +02:00
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
|
2019-05-30 15:19:02 +02:00
|
|
|
import java.util.ArrayList;
|
2020-05-16 11:32:09 +02:00
|
|
|
import java.util.Objects;
|
2019-05-30 15:19:02 +02:00
|
|
|
|
|
|
|
import app.fedilab.android.R;
|
|
|
|
import ja.burhanrashid52.photoeditor.PhotoEditor;
|
|
|
|
|
|
|
|
public class EmojiBSFragment extends BottomSheetDialogFragment {
|
|
|
|
|
|
|
|
private EmojiListener mEmojiListener;
|
|
|
|
private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onStateChanged(@NonNull View bottomSheet, int newState) {
|
|
|
|
if (newState == BottomSheetBehavior.STATE_HIDDEN) {
|
|
|
|
dismiss();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2019-11-15 16:32:25 +01:00
|
|
|
public EmojiBSFragment() {
|
|
|
|
// Required empty public constructor
|
|
|
|
}
|
|
|
|
|
2019-05-30 15:19:02 +02:00
|
|
|
@SuppressLint("RestrictedApi")
|
|
|
|
@Override
|
2020-05-16 11:32:09 +02:00
|
|
|
public void setupDialog(@NotNull Dialog dialog, int style) {
|
2019-05-30 15:19:02 +02:00
|
|
|
super.setupDialog(dialog, style);
|
|
|
|
View contentView = View.inflate(getContext(), R.layout.fragment_bottom_sticker_emoji_dialog, null);
|
|
|
|
dialog.setContentView(contentView);
|
|
|
|
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) ((View) contentView.getParent()).getLayoutParams();
|
|
|
|
CoordinatorLayout.Behavior behavior = params.getBehavior();
|
|
|
|
|
2019-05-31 16:18:41 +02:00
|
|
|
if (behavior instanceof BottomSheetBehavior) {
|
2019-05-30 15:19:02 +02:00
|
|
|
((BottomSheetBehavior) behavior).setBottomSheetCallback(mBottomSheetBehaviorCallback);
|
|
|
|
}
|
|
|
|
((View) contentView.getParent()).setBackgroundColor(getResources().getColor(android.R.color.transparent));
|
|
|
|
RecyclerView rvEmoji = contentView.findViewById(R.id.rvEmoji);
|
|
|
|
|
|
|
|
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 5);
|
|
|
|
rvEmoji.setLayoutManager(gridLayoutManager);
|
|
|
|
EmojiAdapter emojiAdapter = new EmojiAdapter();
|
|
|
|
rvEmoji.setAdapter(emojiAdapter);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setEmojiListener(EmojiListener emojiListener) {
|
|
|
|
mEmojiListener = emojiListener;
|
|
|
|
}
|
|
|
|
|
2019-11-15 16:32:25 +01:00
|
|
|
public interface EmojiListener {
|
|
|
|
void onEmojiClick(String emojiUnicode);
|
|
|
|
}
|
2019-05-30 15:19:02 +02:00
|
|
|
|
|
|
|
public class EmojiAdapter extends RecyclerView.Adapter<EmojiAdapter.ViewHolder> {
|
|
|
|
|
2020-05-16 11:32:09 +02:00
|
|
|
ArrayList<String> emojisList = PhotoEditor.getEmojis(Objects.requireNonNull(getActivity()));
|
2019-05-30 15:19:02 +02:00
|
|
|
|
2019-05-31 16:18:41 +02:00
|
|
|
@NotNull
|
2019-05-30 15:19:02 +02:00
|
|
|
@Override
|
2019-05-31 16:18:41 +02:00
|
|
|
public ViewHolder onCreateViewHolder(@NotNull ViewGroup parent, int viewType) {
|
2019-05-30 15:19:02 +02:00
|
|
|
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_emoji, parent, false);
|
|
|
|
return new ViewHolder(view);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-05-31 16:18:41 +02:00
|
|
|
public void onBindViewHolder(@NotNull ViewHolder holder, int position) {
|
2019-05-30 15:19:02 +02:00
|
|
|
holder.txtEmoji.setText(emojisList.get(position));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getItemCount() {
|
|
|
|
return emojisList.size();
|
|
|
|
}
|
|
|
|
|
|
|
|
class ViewHolder extends RecyclerView.ViewHolder {
|
|
|
|
TextView txtEmoji;
|
|
|
|
|
|
|
|
ViewHolder(View itemView) {
|
|
|
|
super(itemView);
|
|
|
|
txtEmoji = itemView.findViewById(R.id.txtEmoji);
|
|
|
|
|
2020-05-16 11:32:09 +02:00
|
|
|
itemView.setOnClickListener(v -> {
|
|
|
|
if (mEmojiListener != null) {
|
|
|
|
mEmojiListener.onEmojiClick(emojisList.get(getLayoutPosition()));
|
2019-05-30 15:19:02 +02:00
|
|
|
}
|
2020-05-16 11:32:09 +02:00
|
|
|
dismiss();
|
2019-05-30 15:19:02 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|