Commit 4505a404 authored by 0xd9a's avatar 0xd9a
Browse files

Add option to change profile image shape in profile page (#711)

parent e98ce2e9
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.google.android.material.chip.Chip;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.shape.ShapeAppearanceModel;
import com.google.android.material.tabs.TabLayout;

import java.io.File;
@@ -456,6 +457,21 @@ public class ProfileActivity extends BaseActivity {
        boolean disableGif = sharedpreferences.getBoolean(getString(R.string.SET_DISABLE_GIF), false);
        String targetedUrl = disableGif ? account.avatar_static : account.avatar;
        // MastodonHelper.loadPPMastodon(binding.accountPp, account);
        String profileImageShapePref = sharedpreferences.getString(getString(R.string.SET_PROFILE_IMAGE_SHAPE), "rounded_square");
        binding.accountPp.setShapeAppearanceModel(
                ShapeAppearanceModel
                        .builder(
                                this,
                                R.style.ShapeAppearance_MaterialComponents,
                                switch (profileImageShapePref) {
                                    case "circle" -> R.style.ShapeAppearanceOverlay_Fedilab_ProfileImage_Circle;
                                    case "diamond" -> R.style.ShapeAppearanceOverlay_Fedilab_ProfileImage_Diamond;
                                    case "octagon" -> R.style.ShapeAppearanceOverlay_Fedilab_ProfileImage_Octagon;
                                    case "square" -> R.style.ShapeAppearanceOverlay_Fedilab_ProfileImage_Square;
                                    default -> R.style.ShapeAppearanceOverlay_Fedilab_ProfileImage_RoundedSquare;
                                })
                        .build()
        );
        Glide.with(ProfileActivity.this)
                .asDrawable()
                .dontTransform()
+20 −0
Original line number Diff line number Diff line
@@ -56,6 +56,10 @@ public class FragmentInterfaceSettings extends PreferenceFragmentCompat implemen
            return;
        }

        ListPreference SET_PROFILE_IMAGE_SHAPE = findPreference(getString(R.string.SET_PROFILE_IMAGE_SHAPE));
        if (SET_PROFILE_IMAGE_SHAPE != null)
            SET_PROFILE_IMAGE_SHAPE.setIcon(getProfileImageShapeDrawable(SET_PROFILE_IMAGE_SHAPE.getValue()));

        //Theme for dialogs
        ImageListPreference SET_LOGO_LAUNCHER = findPreference(getString(R.string.SET_LOGO_LAUNCHER));
        if (SET_LOGO_LAUNCHER != null) {
@@ -84,6 +88,17 @@ public class FragmentInterfaceSettings extends PreferenceFragmentCompat implemen
        recreate = false;
    }

    private int getProfileImageShapeDrawable(String profileImageShapePrefValue) {
        return switch (profileImageShapePrefValue) {
            case "circle" -> R.drawable.profile_image_shape_circle;
            case "diamond" -> R.drawable.profile_image_shape_diamond;
            case "octagon" -> R.drawable.profile_image_shape_octagon;
            case "rounded_square" -> R.drawable.profile_image_shape_rounded_square;
            case "square" -> R.drawable.profile_image_shape_square;
            default -> 0;
        };
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (getActivity() != null) {
@@ -116,6 +131,11 @@ public class FragmentInterfaceSettings extends PreferenceFragmentCompat implemen
                }
                recreate = true;
            }
            if (key.compareToIgnoreCase(getString(R.string.SET_PROFILE_IMAGE_SHAPE)) == 0) {
                ListPreference SET_PROFILE_IMAGE_SHAPE = findPreference(getString(R.string.SET_PROFILE_IMAGE_SHAPE));
                if (SET_PROFILE_IMAGE_SHAPE != null)
                    SET_PROFILE_IMAGE_SHAPE.setIcon(getProfileImageShapeDrawable(SET_PROFILE_IMAGE_SHAPE.getValue()));
            }
            if (key.compareToIgnoreCase(getString(R.string.SET_LOGO_LAUNCHER)) == 0) {
                ListPreference SET_LOGO_LAUNCHER = findPreference(getString(R.string.SET_LOGO_LAUNCHER));
                String newLauncher = sharedpreferences.getString(getString(R.string.SET_LOGO_LAUNCHER), "Bubbles");
+9 −0
Original line number Diff line number Diff line
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:fillColor="?colorOnSurface"
        android:pathData="m24,12a12,12 0,0 1,-12 12,12 12,0 0,1 -12,-12 12,12 0,0 1,12 -12,12 12,0 0,1 12,12z" />
</vector>
+9 −0
Original line number Diff line number Diff line
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:fillColor="?colorOnSurface"
        android:pathData="m12,0 l12,12 -12,12 -12,-12z" />
</vector>
+9 −0
Original line number Diff line number Diff line
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:fillColor="?colorOnSurface"
        android:pathData="m16.971,0 l7.029,7.029v9.941l-7.029,7.029 -9.941,-0 -7.029,-7.029 -0,-9.941 7.029,-7.029z" />
</vector>
Loading