From 9240c16e939a0b0d710171c3cb31b22c78a31f5f Mon Sep 17 00:00:00 2001 From: tom79 Date: Tue, 10 Mar 2020 07:34:24 +0100 Subject: comment #411 - Reactions in drawer --- .../fedilab/android/drawers/ReactionAdapter.java | 74 ++++++---------------- .../fedilab/android/drawers/StatusListAdapter.java | 18 ++---- app/src/main/res/layout/drawer_reaction.xml | 42 +++--------- app/src/main/res/layout/drawer_status_compact.xml | 11 +--- app/src/main/res/layout/drawer_tag_edit.xml | 1 - 5 files changed, 39 insertions(+), 107 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/drawers/ReactionAdapter.java b/app/src/main/java/app/fedilab/android/drawers/ReactionAdapter.java index ee8d6e7c1..8d11b4c9d 100644 --- a/app/src/main/java/app/fedilab/android/drawers/ReactionAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/ReactionAdapter.java @@ -1,5 +1,5 @@ package app.fedilab.android.drawers; -/* Copyright 2018 Thomas Schneider +/* Copyright 2020 Thomas Schneider * * This file is a part of Fedilab * @@ -16,77 +16,43 @@ package app.fedilab.android.drawers; import android.content.Context; -import android.database.sqlite.SQLiteDatabase; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageButton; +import android.widget.LinearLayout; import android.widget.TextView; -import android.widget.Toast; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; - import java.util.List; - import app.fedilab.android.R; -import app.fedilab.android.sqlite.Sqlite; -import app.fedilab.android.sqlite.TagsCacheDAO; -import es.dmoral.toasty.Toasty; +import app.fedilab.android.client.Entities.Reaction; /** - * Created by Thomas on 01/12/2018. - * Adapter for tags when editing + * Created by Thomas on 10/03/2020. + * Adapter for reactions on messages */ -public class TagsEditAdapter extends RecyclerView.Adapter { - - private Context context; - private List tags; - private TagsEditAdapter tagsEditAdapter; +public class ReactionAdapter extends RecyclerView.Adapter { - public TagsEditAdapter(List tags) { - this.tags = tags; + private List reactions; - tagsEditAdapter = this; + public ReactionAdapter(List reactions) { + this.reactions = reactions; } - @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int position) { - context = parent.getContext(); - LayoutInflater layoutInflater = LayoutInflater.from(context); - return new ViewHolder(layoutInflater.inflate(R.layout.drawer_tag_edit, parent, false)); + LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); + return new ViewHolder(layoutInflater.inflate(R.layout.drawer_reaction, parent, false)); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) { - final String[] tag = {tags.get(viewHolder.getAdapterPosition())}; + final Reaction reaction = reactions.get(viewHolder.getAdapterPosition()); ViewHolder holder = (ViewHolder) viewHolder; - holder.tag_name.setText(String.format("#%s", tag[0])); - SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - holder.save_tag.setOnClickListener(v -> { - if (holder.tag_name.getText() != null && holder.tag_name.getText().toString().trim().replaceAll("#", "").length() > 0) { - String tagToInsert = holder.tag_name.getText().toString().trim().replaceAll("#", ""); - boolean isPresent = new TagsCacheDAO(context, db).isPresent(tagToInsert); - if (isPresent) - Toasty.warning(context, context.getString(R.string.tags_already_stored), Toast.LENGTH_LONG).show(); - else { - new TagsCacheDAO(context, db).update(tag[0], tagToInsert); - Toasty.success(context, context.getString(R.string.tags_renamed), Toast.LENGTH_LONG).show(); - } - } - }); - - holder.delete_tag.setOnClickListener(v -> { - holder.tag_name.clearFocus(); - new TagsCacheDAO(context, db).removeTag(tag[0]); - tags.remove(tag[0]); - tagsEditAdapter.notifyItemRemoved(viewHolder.getAdapterPosition()); - Toasty.success(context, context.getString(R.string.tags_deleted), Toast.LENGTH_LONG).show(); - }); - + holder.reaction_name.setText(reaction.getName()); + holder.reaction_count.setText(String.valueOf(reaction.getCount())); } @Override @@ -96,19 +62,19 @@ public class TagsEditAdapter extends RecyclerView.Adapter { @Override public int getItemCount() { - return tags.size(); + return reactions.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - TextView tag_name; - ImageButton save_tag, delete_tag; + TextView reaction_name, reaction_count; + LinearLayout reaction_container; public ViewHolder(@NonNull View itemView) { super(itemView); - tag_name = itemView.findViewById(R.id.tag_name); - delete_tag = itemView.findViewById(R.id.delete_tag); - save_tag = itemView.findViewById(R.id.save_tag); + reaction_name = itemView.findViewById(R.id.reaction_name); + reaction_count = itemView.findViewById(R.id.reaction_count); + reaction_container = itemView.findViewById(R.id.reaction_container); } } diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index bb17ec9d0..e5bb8328e 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -1012,17 +1012,11 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct holder.status_account_username.setVisibility(View.GONE); holder.status_action_container.setVisibility(View.GONE); holder.status_reactions.setVisibility(View.VISIBLE); - if( status.getReactions() != null && status.getReactions().size() > 0 ){ - for(Reaction reaction: status.getReactions()){ - TextView textView = new TextView(context); - textView.setText(reaction.getName() + " " + reaction.getCount()); - holder.reactions_view.addView(textView); - } - } - LinearLayout status_reactions; - ImageView status_add_reaction; - HorizontalScrollView reactions_view; - + ReactionAdapter reactionAdapter = new ReactionAdapter(status.getReactions()); + holder.reactions_view.setAdapter(reactionAdapter); + LinearLayoutManager layoutManager + = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false); + holder.reactions_view.setLayoutManager(layoutManager); } holder.status_cardview_title.setTextColor(ContextCompat.getColor(context, R.color.dark_text_toot_header)); @@ -3993,7 +3987,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct LinearLayout status_reactions; ImageView status_add_reaction; - LinearLayout reactions_view; + RecyclerView reactions_view; @SuppressLint("SetJavaScriptEnabled") ViewHolder(View itemView) { diff --git a/app/src/main/res/layout/drawer_reaction.xml b/app/src/main/res/layout/drawer_reaction.xml index c2c308b12..387db94b8 100644 --- a/app/src/main/res/layout/drawer_reaction.xml +++ b/app/src/main/res/layout/drawer_reaction.xml @@ -15,40 +15,18 @@ see . --> - - - - - - + /> + \ No newline at end of file diff --git a/app/src/main/res/layout/drawer_status_compact.xml b/app/src/main/res/layout/drawer_status_compact.xml index cb059790f..6d3ee69a4 100644 --- a/app/src/main/res/layout/drawer_status_compact.xml +++ b/app/src/main/res/layout/drawer_status_compact.xml @@ -878,16 +878,11 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" android:contentDescription="@string/add_reaction" /> - - - + android:layout_weight="1"/> -- cgit v1.2.3