Skip to content

Commit fd47348

Browse files
Resolve #6399 adding theming logic for share link icons
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
1 parent 0f67f4b commit fd47348

2 files changed

Lines changed: 28 additions & 19 deletions

File tree

src/main/java/com/owncloud/android/ui/adapter/PublicShareViewHolder.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,12 @@
2323
package com.owncloud.android.ui.adapter;
2424

2525
import android.content.Context;
26-
import android.graphics.PorterDuff;
2726
import android.text.TextUtils;
2827
import android.view.View;
2928

30-
import com.owncloud.android.R;
3129
import com.owncloud.android.databinding.FileDetailsSharePublicLinkItemBinding;
3230
import com.owncloud.android.lib.resources.shares.OCShare;
31+
import com.owncloud.android.utils.ThemeUtils;
3332

3433
import androidx.annotation.NonNull;
3534
import androidx.recyclerview.widget.RecyclerView;
@@ -52,15 +51,8 @@ public void bind(OCShare publicShare, PublicShareInterface listener) {
5251
if (!TextUtils.isEmpty(publicShare.getLabel())) {
5352
binding.publicShareLabel.setText(publicShare.getLabel());
5453
}
55-
binding.copyInternalLinkIcon
56-
.getBackground()
57-
.setColorFilter(context.getResources().getColor(R.color.primary_button_background_color),
58-
PorterDuff.Mode.SRC_IN);
59-
binding.copyInternalLinkIcon
60-
.getDrawable()
61-
.mutate()
62-
.setColorFilter(context.getResources().getColor(R.color.black),
63-
PorterDuff.Mode.SRC_IN);
54+
55+
ThemeUtils.colorIconImageViewWithBackground(binding.copyInternalLinkIcon, context);
6456

6557
binding.shareLinkCopyIcon.setOnClickListener(v -> listener.copyLink(publicShare));
6658

src/main/java/com/owncloud/android/utils/ThemeUtils.java

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -688,15 +688,9 @@ public static String colorToHexString(int color) {
688688
public static void colorFloatingActionButton(FloatingActionButton button, @DrawableRes int drawable,
689689
Context context) {
690690
int primaryColor = ThemeUtils.primaryColor(null, true, false, context);
691-
colorFloatingActionButton(button, context, primaryColor);
692691

693-
if (Color.BLACK == primaryColor) {
694-
button.setImageDrawable(ThemeUtils.tintDrawable(drawable, Color.WHITE));
695-
} else if (Color.WHITE == primaryColor) {
696-
button.setImageDrawable(ThemeUtils.tintDrawable(drawable, Color.BLACK));
697-
} else {
698-
button.setImageDrawable(ThemeUtils.tintDrawable(drawable, ThemeUtils.fontColor(context, false)));
699-
}
692+
colorFloatingActionButton(button, context, primaryColor);
693+
button.setImageDrawable(ThemeUtils.tintDrawable(drawable, getColorForPrimary(primaryColor, context)));
700694
}
701695

702696
public static void colorFloatingActionButton(FloatingActionButton button, Context context) {
@@ -712,6 +706,29 @@ public static void colorFloatingActionButton(FloatingActionButton button, int ba
712706
button.setRippleColor(rippleColor);
713707
}
714708

709+
public static void colorIconImageViewWithBackground(ImageView imageView, Context context) {
710+
int primaryColor = ThemeUtils.primaryColor(null, true, false, context);
711+
712+
imageView.getBackground().setColorFilter(primaryColor, PorterDuff.Mode.SRC_IN);
713+
imageView.getDrawable().mutate().setColorFilter(getColorForPrimary(primaryColor, context),
714+
PorterDuff.Mode.SRC_IN);
715+
}
716+
717+
/**
718+
* returns a primary color matching color for texts/icons on top of a primary-colored element (like buttons).
719+
*
720+
* @param primaryColor the primary color
721+
*/
722+
private static int getColorForPrimary(int primaryColor, Context context) {
723+
if (Color.BLACK == primaryColor) {
724+
return Color.WHITE;
725+
} else if (Color.WHITE == primaryColor) {
726+
return Color.BLACK;
727+
} else {
728+
return ThemeUtils.fontColor(context, false);
729+
}
730+
}
731+
715732
private static OCCapability getCapability(Context context) {
716733
return getCapability(null, context);
717734
}

0 commit comments

Comments
 (0)