diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java index 0b2155ed..7bb420ed 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java @@ -1,8 +1,6 @@ package org.nuclearfog.twidda.adapter; import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; @@ -14,8 +12,6 @@ import android.widget.TextView; import androidx.annotation.MainThread; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.content.res.AppCompatResources; import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; @@ -35,6 +31,8 @@ import java.util.List; import jp.wasabeef.picasso.transformations.RoundedCornersTransformation; import static android.graphics.PorterDuff.Mode.SRC_IN; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; import static androidx.recyclerview.widget.RecyclerView.NO_POSITION; import static org.nuclearfog.twidda.backend.utils.StringTools.getTimeString; @@ -48,7 +46,6 @@ public class MessageAdapter extends Adapter { private OnItemSelected itemClickListener; private GlobalSettings settings; - private Drawable[] icons; private List messages = new ArrayList<>(); @@ -56,17 +53,6 @@ public class MessageAdapter extends Adapter { public MessageAdapter(Context context, OnItemSelected itemClickListener) { this.itemClickListener = itemClickListener; settings = GlobalSettings.getInstance(context); - - TypedArray drawables = context.getResources().obtainTypedArray(R.array.dm_item_icons); - icons = new Drawable[drawables.length()]; - for (int index = 0; index < drawables.length(); index++) { - int resId = drawables.getResourceId(index, 0); - icons[index] = AppCompatResources.getDrawable(context, resId); - if (icons[index] != null) { - icons[index].setColorFilter(settings.getIconColor(), SRC_IN); - } - } - drawables.recycle(); } /** @@ -162,16 +148,15 @@ public class MessageAdapter extends Adapter { holder.textViews[2].setText(message.getReceiver().getScreenname()); holder.textViews[3].setText(getTimeString(message.getTime())); holder.textViews[4].setText(text); - if (sender.isVerified()) { - setIcon(holder.textViews[0], icons[0]); + holder.verifiedIcon.setVisibility(VISIBLE); } else { - setIcon(holder.textViews[0], null); + holder.verifiedIcon.setVisibility(GONE); } if (sender.isLocked()) { - setIcon(holder.textViews[1], icons[1]); + holder.lockedIcon.setVisibility(VISIBLE); } else { - setIcon(holder.textViews[1], null); + holder.lockedIcon.setVisibility(GONE); } if (settings.getImageLoad() && sender.hasProfileImage()) { String pbLink = sender.getImageLink(); @@ -184,18 +169,6 @@ public class MessageAdapter extends Adapter { } } - /** - * sets an icon to a TextView - * - * @param tv TextView to set an icon - * @param icon icon drawable - */ - private void setIcon(TextView tv, @Nullable Drawable icon) { - if (icon != null) - icon = icon.mutate(); - tv.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); - } - /** * Holder class for a message view */ @@ -203,13 +176,15 @@ public class MessageAdapter extends Adapter { final TextView[] textViews = new TextView[5]; final Button[] buttons = new Button[2]; - final ImageView profile_img, receiver_icon; + final ImageView profile_img, verifiedIcon, lockedIcon; MessageHolder(View v, GlobalSettings settings) { super(v); CardView background = (CardView) v; + ImageView receiver_icon = v.findViewById(R.id.dm_receiver_icon); profile_img = v.findViewById(R.id.dm_profile_img); - receiver_icon = v.findViewById(R.id.dm_receiver_icon); + verifiedIcon = v.findViewById(R.id.dm_user_verified); + lockedIcon = v.findViewById(R.id.dm_user_locked); textViews[0] = v.findViewById(R.id.dm_username); textViews[1] = v.findViewById(R.id.dm_screenname); textViews[2] = v.findViewById(R.id.dm_receiver); @@ -226,7 +201,12 @@ public class MessageAdapter extends Adapter { button.setTextColor(settings.getFontColor()); button.setTypeface(settings.getFontFace()); } - receiver_icon.setImageDrawable(icons[2]); + receiver_icon.setImageResource(R.drawable.right); + verifiedIcon.setImageResource(R.drawable.verify); + lockedIcon.setImageResource(R.drawable.lock); + verifiedIcon.setColorFilter(settings.getIconColor(), SRC_IN); + lockedIcon.setColorFilter(settings.getIconColor(), SRC_IN); + receiver_icon.setColorFilter(settings.getIconColor(), SRC_IN); background.setCardBackgroundColor(settings.getCardColor()); textViews[4].setMovementMethod(LinkMovementMethod.getInstance()); } diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java index 9651fcf4..8cda30ad 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java @@ -1,8 +1,6 @@ package org.nuclearfog.twidda.adapter; import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -15,8 +13,6 @@ import android.widget.TextView; import androidx.annotation.MainThread; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.content.res.AppCompatResources; import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; @@ -65,7 +61,6 @@ public class UserAdapter extends Adapter { private UserClickListener itemClickListener; private GlobalSettings settings; - private Drawable[] icons; private TwitterUserList items = new TwitterUserList(); private NumberFormat formatter = NumberFormat.getIntegerInstance(); @@ -79,15 +74,6 @@ public class UserAdapter extends Adapter { public UserAdapter(Context context, UserClickListener itemClickListener) { this.itemClickListener = itemClickListener; settings = GlobalSettings.getInstance(context); - - TypedArray drawables = context.getResources().obtainTypedArray(R.array.user_item_icons); - icons = new Drawable[drawables.length()]; - for (int index = 0; index < drawables.length(); index++) { - int resId = drawables.getResourceId(index, 0); - icons[index] = AppCompatResources.getDrawable(context, resId); - } - drawables.recycle(); - setIconColor(); } /** @@ -232,19 +218,19 @@ public class UserAdapter extends Adapter { User user = items.get(index); if (holder instanceof ItemHolder && user != null) { ItemHolder vh = (ItemHolder) holder; - vh.textViews[0].setText(user.getUsername()); - vh.textViews[1].setText(user.getScreenname()); - vh.textViews[2].setText(formatter.format(user.getFollowing())); - vh.textViews[3].setText(formatter.format(user.getFollower())); + vh.username.setText(user.getUsername()); + vh.screenname.setText(user.getScreenname()); + vh.following.setText(formatter.format(user.getFollowing())); + vh.follower.setText(formatter.format(user.getFollower())); if (user.isVerified()) { - setIcon(vh.textViews[0], icons[0]); + vh.verifyIcon.setVisibility(VISIBLE); } else { - setIcon(vh.textViews[0], null); + vh.verifyIcon.setVisibility(GONE); } if (user.isLocked()) { - setIcon(vh.textViews[1], icons[1]); + vh.lockedIcon.setVisibility(VISIBLE); } else { - setIcon(vh.textViews[1], null); + vh.lockedIcon.setVisibility(GONE); } if (settings.getImageLoad() && user.hasProfileImage()) { String pbLink = user.getImageLink(); @@ -287,54 +273,49 @@ public class UserAdapter extends Adapter { userRemovable = enable; } - /** - * sets the TextView icons - * - * @param tv TextView to add an icon - * @param icon icon drawable - */ - private void setIcon(TextView tv, @Nullable Drawable icon) { - if (icon != null) - icon = icon.mutate(); - tv.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); - } - - /** - * color icon drawables - */ - private void setIconColor() { - for (Drawable icon : icons) { - icon.setColorFilter(settings.getIconColor(), SRC_IN); - } - } - /** * Holder for an user view item */ private final class ItemHolder extends ViewHolder { - final TextView[] textViews = new TextView[4]; - final ImageView profileImg; + final TextView username, screenname, following, follower; + final ImageView profileImg, verifyIcon, lockedIcon; final ImageButton delete; ItemHolder(View v, GlobalSettings settings) { super(v); CardView background = (CardView) v; - textViews[0] = v.findViewById(R.id.username_detail); - textViews[1] = v.findViewById(R.id.screenname_detail); - textViews[2] = v.findViewById(R.id.item_user_friends); - textViews[3] = v.findViewById(R.id.item_user_follower); + ImageView followingIcon = v.findViewById(R.id.following_icon); + ImageView followerIcon = v.findViewById(R.id.follower_icon); + username = v.findViewById(R.id.username_detail); + screenname = v.findViewById(R.id.screenname_detail); + following = v.findViewById(R.id.item_user_friends); + follower = v.findViewById(R.id.item_user_follower); profileImg = v.findViewById(R.id.user_profileimg); + verifyIcon = v.findViewById(R.id.useritem_verified); + lockedIcon = v.findViewById(R.id.useritem_locked); delete = v.findViewById(R.id.useritem_del_user); - for (TextView tv : textViews) { - tv.setTextColor(settings.getFontColor()); - tv.setTypeface(settings.getFontFace()); - } - background.setCardBackgroundColor(settings.getCardColor()); - textViews[2].setCompoundDrawablesWithIntrinsicBounds(icons[2], null, null, null); - textViews[3].setCompoundDrawablesWithIntrinsicBounds(icons[3], null, null, null); + followerIcon.setImageResource(R.drawable.follower); + followingIcon.setImageResource(R.drawable.following); + verifyIcon.setImageResource(R.drawable.verify); + lockedIcon.setImageResource(R.drawable.lock); delete.setImageResource(R.drawable.cross); + + background.setCardBackgroundColor(settings.getCardColor()); + followerIcon.setColorFilter(settings.getIconColor(), SRC_IN); + followingIcon.setColorFilter(settings.getIconColor(), SRC_IN); + verifyIcon.setColorFilter(settings.getIconColor(), SRC_IN); + lockedIcon.setColorFilter(settings.getIconColor(), SRC_IN); + delete.setColorFilter(settings.getIconColor(), SRC_IN); + username.setTextColor(settings.getFontColor()); + username.setTypeface(settings.getFontFace()); + screenname.setTextColor(settings.getFontColor()); + screenname.setTypeface(settings.getFontFace()); + following.setTextColor(settings.getFontColor()); + following.setTypeface(settings.getFontFace()); + follower.setTextColor(settings.getFontColor()); + follower.setTypeface(settings.getFontFace()); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/items/User.java b/app/src/main/java/org/nuclearfog/twidda/backend/items/User.java index 565d7c18..dbbcc58e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/items/User.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/items/User.java @@ -8,6 +8,8 @@ import twitter4j.URLEntity; /** * Container class for a twitter user + * + * @author nuclearfog */ public class User implements Serializable { diff --git a/app/src/main/res/layout/item_dm.xml b/app/src/main/res/layout/item_dm.xml index 810d7e7b..9b36d454 100644 --- a/app/src/main/res/layout/item_dm.xml +++ b/app/src/main/res/layout/item_dm.xml @@ -19,21 +19,31 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + app:layout_constraintStart_toEndOf="@+id/dm_user_verified" + app:layout_constraintTop_toTopOf="parent" /> + + + app:layout_constraintEnd_toStartOf="@+id/dm_receiver_icon" /> + app:layout_constraintTop_toBottomOf="@+id/dm_message" />