diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/MediaViewer.java b/app/src/main/java/org/nuclearfog/twidda/activity/MediaViewer.java index 4695b671..20276f0e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/MediaViewer.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/MediaViewer.java @@ -130,7 +130,7 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen zoomImage = findViewById(R.id.image_full); videoView = findViewById(R.id.video_view); videoController = new MediaController(this); - adapter = new ImageAdapter(this); + adapter = new ImageAdapter(getApplicationContext(), this); videoView.setZOrderOnTop(true); videoView.setOnPreparedListener(this); videoView.setOnErrorListener(this); diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/FontAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/FontAdapter.java index 4df33998..bfd81961 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/FontAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/FontAdapter.java @@ -58,10 +58,10 @@ public class FontAdapter extends BaseAdapter { tv = new TextView(parent.getContext()); tv.setTextSize(COMPLEX_UNIT_SP, FONT_SIZE); tv.setPadding(TEXT_PADDING, 0, TEXT_PADDING, 0); + tv.setTextColor(settings.getFontColor()); } tv.setText(name); tv.setTypeface(font); - tv.setTextColor(settings.getFontColor()); return tv; } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java index ed28cd0c..4123bd5b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java @@ -1,12 +1,15 @@ package org.nuclearfog.twidda.adapter; +import android.content.Context; import android.graphics.Bitmap; +import android.graphics.PorterDuffColorFilter; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ImageView; +import android.widget.ProgressBar; import androidx.annotation.MainThread; import androidx.annotation.NonNull; @@ -15,10 +18,12 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.holder.ImageHolder; +import org.nuclearfog.twidda.database.GlobalSettings; import java.util.LinkedList; import java.util.List; +import static android.graphics.PorterDuff.Mode.SRC_ATOP; import static android.view.View.VISIBLE; import static androidx.recyclerview.widget.RecyclerView.NO_POSITION; @@ -38,6 +43,7 @@ public class ImageAdapter extends Adapter { private static final int LOADING = 1; private OnImageClickListener itemClickListener; + private GlobalSettings settings; private List images = new LinkedList<>(); private boolean loading = false; @@ -48,8 +54,9 @@ public class ImageAdapter extends Adapter { * * @param itemClickListener Click listener for images */ - public ImageAdapter(OnImageClickListener itemClickListener) { + public ImageAdapter(Context context, OnImageClickListener itemClickListener) { this.itemClickListener = itemClickListener; + settings = GlobalSettings.getInstance(context); } /** @@ -142,7 +149,7 @@ public class ImageAdapter extends Adapter { return item; } else { View view = inflater.inflate(R.layout.item_image_load, parent, false); - return new LoadItem(view); + return new LoadItem(view, settings.getHighlightColor()); } } @@ -175,13 +182,16 @@ public class ImageAdapter extends Adapter { */ private final class LoadItem extends ViewHolder { - LoadItem(View v) { + LoadItem(View v, int color) { super(v); + ProgressBar progress = v.findViewById(R.id.imageitem_progress); + progress.getIndeterminateDrawable().mutate().setColorFilter(new PorterDuffColorFilter(color, SRC_ATOP)); } } public interface OnImageClickListener { + /** * simple click on image_add * diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/ListAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/ListAdapter.java index 08bbc053..cd842f4b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/ListAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/ListAdapter.java @@ -2,6 +2,7 @@ package org.nuclearfog.twidda.adapter; import android.content.Context; import android.content.res.TypedArray; +import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; @@ -15,6 +16,7 @@ import android.widget.TextView; import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; @@ -24,7 +26,6 @@ import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.holder.UserListList; import org.nuclearfog.twidda.backend.items.User; import org.nuclearfog.twidda.backend.items.UserList; -import org.nuclearfog.twidda.backend.utils.AppStyles; import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.fragment.UserListFragment; @@ -163,13 +164,7 @@ public class ListAdapter extends Adapter { public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if (viewType == ITEM_LIST) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent, false); - final ListHolder vh = new ListHolder(v); - AppStyles.setTheme(settings, v); - - setIcon(vh.createdAt, icons[3]); - setIcon(vh.followIndicator, icons[4]); - vh.memberIcon.setImageDrawable(icons[5]); - vh.subscrIcon.setImageDrawable(icons[6]); + final ListHolder vh = new ListHolder(v, settings); vh.pb_image.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -193,9 +188,7 @@ public class ListAdapter extends Adapter { return vh; } else { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_placeholder, parent, false); - final PlaceHolder ph = new PlaceHolder(v); - ph.loadBtn.setTypeface(settings.getFontFace()); - ph.loadBtn.setTextColor(settings.getFontColor()); + final PlaceHolder ph = new PlaceHolder(v, settings); ph.loadBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -219,13 +212,13 @@ public class ListAdapter extends Adapter { ListHolder vh = (ListHolder) holder; UserList item = data.get(index); User owner = item.getListOwner(); - vh.title.setText(item.getTitle()); - vh.username.setText(owner.getUsername()); - vh.screenname.setText(owner.getScreenname()); - vh.description.setText(item.getDescription()); - vh.createdAt.setText(getTimeString(item.getCreatedAt())); - vh.memberCount.setText(formatter.format(item.getMemberCount())); - vh.subscriberCount.setText(formatter.format(item.getSubscriberCount())); + vh.textViews[0].setText(item.getTitle()); + vh.textViews[2].setText(owner.getUsername()); + vh.textViews[3].setText(owner.getScreenname()); + vh.textViews[1].setText(item.getDescription()); + vh.textViews[4].setText(getTimeString(item.getCreatedAt())); + vh.textViews[5].setText(formatter.format(item.getMemberCount())); + vh.textViews[6].setText(formatter.format(item.getSubscriberCount())); if (settings.getImageLoad() && owner.hasProfileImage()) { String pbLink = owner.getImageLink(); if (!owner.hasDefaultProfileImage()) @@ -233,24 +226,24 @@ public class ListAdapter extends Adapter { Picasso.get().load(pbLink).error(R.drawable.no_image).into(vh.pb_image); } if (!item.isListOwner() && item.isFollowing()) { - vh.followIndicator.setVisibility(VISIBLE); + vh.textViews[7].setVisibility(VISIBLE); } else { - vh.followIndicator.setVisibility(GONE); + vh.textViews[7].setVisibility(GONE); } if (owner.isVerified()) { - setIcon(vh.username, icons[0]); + setIcon(vh.textViews[2], icons[0]); } else { - setIcon(vh.username, null); + setIcon(vh.textViews[2], null); } if (owner.isLocked()) { - setIcon(vh.screenname, icons[1]); + setIcon(vh.textViews[3], icons[1]); } else { - setIcon(vh.screenname, null); + setIcon(vh.textViews[3], null); } if (item.isPrivate()) { - setIcon(vh.title, icons[2]); + setIcon(vh.textViews[0], icons[2]); } else { - setIcon(vh.title, null); + setIcon(vh.textViews[0], null); } } else if (holder instanceof PlaceHolder) { PlaceHolder placeHolder = (PlaceHolder) holder; @@ -297,23 +290,34 @@ public class ListAdapter extends Adapter { * view holder class for an user list item */ private final class ListHolder extends ViewHolder { - final ImageView pb_image, subscrIcon, memberIcon; - final TextView title, username, screenname, description, createdAt; - final TextView memberCount, subscriberCount, followIndicator; - ListHolder(View v) { + final ImageView pb_image, subscrIcon, memberIcon; + final TextView[] textViews = new TextView[8]; + + ListHolder(View v, GlobalSettings settings) { super(v); + CardView background = (CardView) v; pb_image = v.findViewById(R.id.list_owner_profile); memberIcon = v.findViewById(R.id.list_member_icon); subscrIcon = v.findViewById(R.id.list_subscriber_icon); - followIndicator = v.findViewById(R.id.list_action); - title = v.findViewById(R.id.list_title); - username = v.findViewById(R.id.list_ownername); - screenname = v.findViewById(R.id.list_screenname); - description = v.findViewById(R.id.list_description); - createdAt = v.findViewById(R.id.list_createdat); - memberCount = v.findViewById(R.id.list_member); - subscriberCount = v.findViewById(R.id.list_subscriber); + textViews[0] = v.findViewById(R.id.list_title); + textViews[1] = v.findViewById(R.id.list_description); + textViews[2] = v.findViewById(R.id.list_ownername); + textViews[3] = v.findViewById(R.id.list_screenname); + textViews[4] = v.findViewById(R.id.list_createdat); + textViews[5] = v.findViewById(R.id.list_member); + textViews[6] = v.findViewById(R.id.list_subscriber); + textViews[7] = v.findViewById(R.id.list_action); + + for (TextView tv : textViews) { + tv.setTextColor(settings.getFontColor()); + tv.setTypeface(settings.getFontFace()); + } + background.setCardBackgroundColor(settings.getCardColor()); + textViews[4].setCompoundDrawablesWithIntrinsicBounds(icons[3], null, null, null); + textViews[7].setCompoundDrawablesWithIntrinsicBounds(icons[4], null, null, null); + memberIcon.setImageDrawable(icons[5]); + subscrIcon.setImageDrawable(icons[6]); } } @@ -325,10 +329,16 @@ public class ListAdapter extends Adapter { final ProgressBar loadCircle; final Button loadBtn; - PlaceHolder(@NonNull View v) { + PlaceHolder(@NonNull View v, GlobalSettings settings) { super(v); + CardView background = (CardView) v; loadCircle = v.findViewById(R.id.placeholder_loading); loadBtn = v.findViewById(R.id.placeholder_button); + + loadBtn.setTypeface(settings.getFontFace()); + loadBtn.setTextColor(settings.getFontColor()); + loadCircle.getIndeterminateDrawable().mutate().setColorFilter(new PorterDuffColorFilter(settings.getHighlightColor(), SRC_ATOP)); + background.setCardBackgroundColor(settings.getCardColor()); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/LocationAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/LocationAdapter.java index 6ce793f6..98477e0c 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/LocationAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/LocationAdapter.java @@ -101,9 +101,9 @@ public class LocationAdapter extends BaseAdapter { tv = new TextView(parent.getContext()); tv.setTextSize(COMPLEX_UNIT_DIP, TEXT_SIZE); tv.setPadding(TEXT_PADDING, 0, TEXT_PADDING, 0); + tv.setTextColor(settings.getFontColor()); + tv.setTypeface(settings.getFontFace()); } - tv.setTextColor(settings.getFontColor()); - tv.setTypeface(settings.getFontFace()); tv.setText(data.get(pos).getName()); return tv; } 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 9130a9c2..d6e83dc6 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java @@ -15,6 +15,7 @@ import android.widget.TextView; import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; @@ -25,7 +26,6 @@ import org.nuclearfog.tag.Tagger.OnTagClickListener; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.items.Message; import org.nuclearfog.twidda.backend.items.User; -import org.nuclearfog.twidda.backend.utils.AppStyles; import org.nuclearfog.twidda.database.GlobalSettings; import java.util.ArrayList; @@ -109,11 +109,8 @@ public class MessageAdapter extends Adapter { @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dm, parent, false); - final MessageHolder vh = new MessageHolder(view); - AppStyles.setTheme(settings, view); - setIcon(vh.receivername, icons[2]); - vh.message.setMovementMethod(LinkMovementMethod.getInstance()); - vh.answer.setOnClickListener(new View.OnClickListener() { + final MessageHolder vh = new MessageHolder(view, settings); + vh.buttons[0].setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = vh.getLayoutPosition(); @@ -122,7 +119,7 @@ public class MessageAdapter extends Adapter { } } }); - vh.delete.setOnClickListener(new View.OnClickListener() { + vh.buttons[1].setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = vh.getLayoutPosition(); @@ -152,21 +149,21 @@ public class MessageAdapter extends Adapter { text = Tagger.makeTextWithLinks(message.getText(), settings.getHighlightColor(), itemClickListener); MessageHolder holder = (MessageHolder) vh; - holder.message.setText(text); - holder.username.setText(sender.getUsername()); - holder.screenname.setText(sender.getScreenname()); - holder.createdAt.setText(getTimeString(message.getTime())); - holder.receivername.setText(message.getReceiver().getScreenname()); + holder.textViews[0].setText(sender.getUsername()); + holder.textViews[1].setText(sender.getScreenname()); + holder.textViews[2].setText(message.getReceiver().getScreenname()); + holder.textViews[3].setText(getTimeString(message.getTime())); + holder.textViews[4].setText(text); if (sender.isVerified()) { - setIcon(holder.username, icons[0]); + setIcon(holder.textViews[0], icons[0]); } else { - setIcon(holder.username, null); + setIcon(holder.textViews[0], null); } if (sender.isLocked()) { - setIcon(holder.screenname, icons[1]); + setIcon(holder.textViews[1], icons[1]); } else { - setIcon(holder.screenname, null); + setIcon(holder.textViews[1], null); } if (settings.getImageLoad() && sender.hasProfileImage()) { String pbLink = sender.getImageLink(); @@ -201,25 +198,34 @@ public class MessageAdapter extends Adapter { * Holder class for a message view */ private final class MessageHolder extends ViewHolder { - final ImageView profile_img; - final TextView username; - final TextView screenname; - final TextView receivername; - final TextView createdAt; - final TextView message; - final Button answer; - final Button delete; - MessageHolder(View v) { + final TextView[] textViews = new TextView[5]; + final Button[] buttons = new Button[2]; + final ImageView profile_img; + + MessageHolder(View v, GlobalSettings settings) { super(v); + CardView background = (CardView) v; profile_img = v.findViewById(R.id.dm_profileImg); - username = v.findViewById(R.id.dm_username); - screenname = v.findViewById(R.id.dm_screenname); - receivername = v.findViewById(R.id.dm_receiver); - createdAt = v.findViewById(R.id.dm_time); - message = v.findViewById(R.id.dm_message); - answer = v.findViewById(R.id.dm_answer); - delete = v.findViewById(R.id.dm_delete); + textViews[0] = v.findViewById(R.id.dm_username); + textViews[1] = v.findViewById(R.id.dm_screenname); + textViews[2] = v.findViewById(R.id.dm_receiver); + textViews[3] = v.findViewById(R.id.dm_time); + textViews[4] = v.findViewById(R.id.dm_message); + buttons[0] = v.findViewById(R.id.dm_answer); + buttons[1] = v.findViewById(R.id.dm_delete); + + for (TextView tv : textViews) { + tv.setTextColor(settings.getFontColor()); + tv.setTypeface(settings.getFontFace()); + } + for (Button button : buttons) { + button.setTextColor(settings.getFontColor()); + button.setTypeface(settings.getFontFace()); + } + background.setCardBackgroundColor(settings.getCardColor()); + textViews[2].setCompoundDrawables(icons[2], null, null, null); + textViews[4].setMovementMethod(LinkMovementMethod.getInstance()); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java index 70e477d1..04324047 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java @@ -9,12 +9,12 @@ import android.widget.TextView; import androidx.annotation.MainThread; import androidx.annotation.NonNull; +import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.items.Trend; -import org.nuclearfog.twidda.backend.utils.AppStyles; import org.nuclearfog.twidda.database.GlobalSettings; import java.text.NumberFormat; @@ -85,9 +85,7 @@ public class TrendAdapter extends Adapter { @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_trend, parent, false); - final ItemHolder vh = new ItemHolder(v); - AppStyles.setTheme(settings, v); - + final ItemHolder vh = new ItemHolder(v, settings); v.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -105,15 +103,15 @@ public class TrendAdapter extends Adapter { public void onBindViewHolder(@NonNull ViewHolder vh, int index) { ItemHolder holder = (ItemHolder) vh; Trend trend = trends.get(index); - holder.pos.setText(trend.getRankStr()); - holder.name.setText(trend.getName()); + holder.textViews[0].setText(trend.getRankStr()); + holder.textViews[1].setText(trend.getName()); if (trend.hasRangeInfo()) { - Resources resources = holder.vol.getContext().getResources(); + Resources resources = holder.textViews[2].getContext().getResources(); String trendVol = formatter.format(trend.getRange()) + " " + resources.getString(R.string.trend_range); - holder.vol.setText(trendVol); - holder.vol.setVisibility(VISIBLE); + holder.textViews[2].setText(trendVol); + holder.textViews[2].setVisibility(VISIBLE); } else { - holder.vol.setVisibility(GONE); + holder.textViews[2].setVisibility(GONE); } } @@ -121,13 +119,20 @@ public class TrendAdapter extends Adapter { * view holder class for an item view */ private final class ItemHolder extends ViewHolder { - final TextView name, pos, vol; + final TextView[] textViews = new TextView[3]; - ItemHolder(View v) { + ItemHolder(View v, GlobalSettings settings) { super(v); - pos = v.findViewById(R.id.trendpos); - name = v.findViewById(R.id.trendname); - vol = v.findViewById(R.id.trendvol); + CardView background = (CardView) v; + textViews[0] = v.findViewById(R.id.trendpos); + textViews[1] = v.findViewById(R.id.trendname); + textViews[2] = v.findViewById(R.id.trendvol); + + background.setCardBackgroundColor(settings.getCardColor()); + for (TextView tv : textViews) { + tv.setTextColor(settings.getFontColor()); + tv.setTypeface(settings.getFontFace()); + } } } diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/TweetAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/TweetAdapter.java index 1985c3f6..64698ff1 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/TweetAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/TweetAdapter.java @@ -3,6 +3,7 @@ package org.nuclearfog.twidda.adapter; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; +import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.text.Spanned; import android.view.LayoutInflater; @@ -17,6 +18,7 @@ import android.widget.TextView; import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; @@ -26,7 +28,6 @@ import org.nuclearfog.tag.Tagger; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.items.Tweet; import org.nuclearfog.twidda.backend.items.User; -import org.nuclearfog.twidda.backend.utils.AppStyles; import org.nuclearfog.twidda.database.GlobalSettings; import java.text.NumberFormat; @@ -221,9 +222,7 @@ public class TweetAdapter extends Adapter { public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if (viewType == VIEW_TWEET) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_tweet, parent, false); - final TweetHolder vh = new TweetHolder(v); - vh.retweeterName.setCompoundDrawablesWithIntrinsicBounds(R.drawable.retweet, 0, 0, 0); - AppStyles.setTheme(settings, v); + final TweetHolder vh = new TweetHolder(v, settings); v.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -237,8 +236,7 @@ public class TweetAdapter extends Adapter { return vh; } else { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_placeholder, parent, false); - final PlaceHolder vh = new PlaceHolder(v); - AppStyles.setTheme(settings, v); + final PlaceHolder vh = new PlaceHolder(v, settings); vh.loadBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -273,40 +271,40 @@ public class TweetAdapter extends Adapter { TweetHolder vh = (TweetHolder) holder; User user = tweet.getUser(); if (tweet.getEmbeddedTweet() != null) { - vh.retweeterName.setText(user.getScreenname()); - vh.retweeterName.setVisibility(VISIBLE); + vh.textViews[5].setText(user.getScreenname()); + vh.textViews[5].setVisibility(VISIBLE); tweet = tweet.getEmbeddedTweet(); user = tweet.getUser(); } else { - vh.retweeterName.setVisibility(INVISIBLE); + vh.textViews[5].setVisibility(INVISIBLE); } Spanned text = Tagger.makeTextWithLinks(tweet.getTweet(), settings.getHighlightColor()); - vh.tweet.setText(text); - vh.username.setText(user.getUsername()); - vh.screenname.setText(user.getScreenname()); - vh.retweetCount.setText(formatter.format(tweet.getRetweetCount())); - vh.favoriteCount.setText(formatter.format(tweet.getFavorCount())); - vh.time.setText(getTimeString(tweet.getTime())); + vh.textViews[2].setText(text); + vh.textViews[0].setText(user.getUsername()); + vh.textViews[1].setText(user.getScreenname()); + vh.textViews[3].setText(formatter.format(tweet.getRetweetCount())); + vh.textViews[4].setText(formatter.format(tweet.getFavorCount())); + vh.textViews[6].setText(getTimeString(tweet.getTime())); if (tweet.retweeted()) { - setIcon(vh.retweetCount, icons[3]); + setIcon(vh.textViews[3], icons[3]); } else { - setIcon(vh.retweetCount, icons[2]); + setIcon(vh.textViews[3], icons[2]); } if (tweet.favored()) { - setIcon(vh.favoriteCount, icons[5]); + setIcon(vh.textViews[4], icons[5]); } else { - setIcon(vh.favoriteCount, icons[4]); + setIcon(vh.textViews[4], icons[4]); } if (user.isVerified()) { - setIcon(vh.username, icons[0]); + setIcon(vh.textViews[0], icons[0]); } else { - setIcon(vh.username, null); + setIcon(vh.textViews[0], null); } if (user.isLocked()) { - setIcon(vh.screenname, icons[1]); + setIcon(vh.textViews[1], icons[1]); } else { - setIcon(vh.screenname, null); + setIcon(vh.textViews[1], null); } if (settings.getImageLoad() && user.hasProfileImage()) { String pbLink = user.getImageLink(); @@ -356,20 +354,27 @@ public class TweetAdapter extends Adapter { * Holder class for the tweet view */ private final class TweetHolder extends ViewHolder { - final TextView username, screenname, tweet, retweetCount; - final TextView favoriteCount, retweeterName, time; + final TextView[] textViews = new TextView[7]; final ImageView profile; - TweetHolder(@NonNull View v) { + TweetHolder(@NonNull View v, GlobalSettings settings) { super(v); - username = v.findViewById(R.id.username); - screenname = v.findViewById(R.id.screenname); - tweet = v.findViewById(R.id.tweettext); - retweetCount = v.findViewById(R.id.retweet_number); - favoriteCount = v.findViewById(R.id.favorite_number); - retweeterName = v.findViewById(R.id.retweeter); - time = v.findViewById(R.id.time); + CardView background = (CardView) v; profile = v.findViewById(R.id.tweetPb); + textViews[0] = v.findViewById(R.id.username); + textViews[1] = v.findViewById(R.id.screenname); + textViews[2] = v.findViewById(R.id.tweettext); + textViews[3] = v.findViewById(R.id.retweet_number); + textViews[4] = v.findViewById(R.id.favorite_number); + textViews[5] = v.findViewById(R.id.retweeter); + textViews[6] = v.findViewById(R.id.time); + + for (TextView tv : textViews) { + tv.setTextColor(settings.getFontColor()); + tv.setTypeface(settings.getFontFace()); + } + background.setBackgroundColor(settings.getCardColor()); + textViews[5].setCompoundDrawablesWithIntrinsicBounds(icons[2], null, null, null); } } @@ -380,10 +385,14 @@ public class TweetAdapter extends Adapter { final Button loadBtn; final ProgressBar loadCircle; - PlaceHolder(@NonNull View v) { + PlaceHolder(@NonNull View v, GlobalSettings settings) { super(v); + CardView background = (CardView) v; loadBtn = v.findViewById(R.id.placeholder_button); loadCircle = v.findViewById(R.id.placeholder_loading); + + background.setCardBackgroundColor(settings.getCardColor()); + loadCircle.getIndeterminateDrawable().mutate().setColorFilter(new PorterDuffColorFilter(settings.getHighlightColor(), SRC_ATOP)); } } 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 0ebbb62d..c0ed2f10 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java @@ -2,6 +2,7 @@ package org.nuclearfog.twidda.adapter; import android.content.Context; import android.content.res.TypedArray; +import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; @@ -16,6 +17,7 @@ import android.widget.TextView; import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; @@ -24,7 +26,6 @@ import com.squareup.picasso.Picasso; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.holder.TwitterUserList; import org.nuclearfog.twidda.backend.items.User; -import org.nuclearfog.twidda.backend.utils.AppStyles; import org.nuclearfog.twidda.database.GlobalSettings; import java.text.NumberFormat; @@ -147,10 +148,7 @@ public class UserAdapter extends Adapter { public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if (viewType == ITEM_USER) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user, parent, false); - final ItemHolder vh = new ItemHolder(v); - AppStyles.setTheme(settings, v); - setIcon(vh.following, icons[2]); - setIcon(vh.follower, icons[3]); + final ItemHolder vh = new ItemHolder(v, settings); v.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -179,8 +177,7 @@ public class UserAdapter extends Adapter { return vh; } else { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_placeholder, parent, false); - final PlaceHolder vh = new PlaceHolder(v); - AppStyles.setTheme(settings, v); + final PlaceHolder vh = new PlaceHolder(v, settings); vh.loadBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -203,19 +200,19 @@ public class UserAdapter extends Adapter { User user = items.get(index); if (holder instanceof ItemHolder && user != null) { ItemHolder vh = (ItemHolder) holder; - vh.username.setText(user.getUsername()); - vh.screenname.setText(user.getScreenname()); - vh.following.setText(formatter.format(user.getFollowing())); - vh.follower.setText(formatter.format(user.getFollower())); + 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())); if (user.isVerified()) { - setIcon(vh.username, icons[0]); + setIcon(vh.textViews[0], icons[0]); } else { - setIcon(vh.username, null); + setIcon(vh.textViews[0], null); } if (user.isLocked()) { - setIcon(vh.screenname, icons[1]); + setIcon(vh.textViews[1], icons[1]); } else { - setIcon(vh.screenname, null); + setIcon(vh.textViews[1], null); } if (settings.getImageLoad() && user.hasProfileImage()) { String pbLink = user.getImageLink(); @@ -280,18 +277,28 @@ public class UserAdapter extends Adapter { * 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 ImageButton delete; - ItemHolder(View v) { + ItemHolder(View v, GlobalSettings settings) { super(v); - username = v.findViewById(R.id.username_detail); - screenname = v.findViewById(R.id.screenname_detail); + 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); profileImg = v.findViewById(R.id.user_profileimg); delete = v.findViewById(R.id.useritem_del_user); - following = v.findViewById(R.id.item_user_friends); - follower = v.findViewById(R.id.item_user_follower); + + 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); } } @@ -302,10 +309,14 @@ public class UserAdapter extends Adapter { final ProgressBar loadCircle; final Button loadBtn; - PlaceHolder(@NonNull View v) { + PlaceHolder(@NonNull View v, GlobalSettings settings) { super(v); + CardView background = (CardView) v; loadCircle = v.findViewById(R.id.placeholder_loading); loadBtn = v.findViewById(R.id.placeholder_button); + + background.setCardBackgroundColor(settings.getCardColor()); + loadCircle.getIndeterminateDrawable().mutate().setColorFilter(new PorterDuffColorFilter(settings.getHighlightColor(), SRC_ATOP)); } } diff --git a/app/src/main/res/layout/item_image_load.xml b/app/src/main/res/layout/item_image_load.xml index 7ac8f8de..f30b1a58 100644 --- a/app/src/main/res/layout/item_image_load.xml +++ b/app/src/main/res/layout/item_image_load.xml @@ -7,6 +7,7 @@ android:orientation="vertical">