From a50e49e4e682dfdd8d1fea5b5f6b53065311b717 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 22 Jul 2022 15:59:57 -0300 Subject: [PATCH] Update tooltip to a more material look. --- .../securesms/components/TooltipPopup.java | 32 ++++++++-- .../forward/MultiselectForwardFragment.kt | 2 + .../StoryViewsAndRepliesDialogFragment.kt | 1 - app/src/main/res/layout/tooltip.xml | 63 +++++++++---------- 4 files changed, 60 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/TooltipPopup.java b/app/src/main/java/org/thoughtcrime/securesms/components/TooltipPopup.java index 3959780b21..3e200b6815 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/TooltipPopup.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/TooltipPopup.java @@ -14,11 +14,13 @@ import android.widget.TextView; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.Px; import androidx.annotation.StringRes; import androidx.core.content.ContextCompat; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.mms.GlideApp; +import org.thoughtcrime.securesms.util.ViewUtil; /** * Class for creating simple tooltips to show throughout the app. Utilizes a popup window so you @@ -36,7 +38,8 @@ public class TooltipPopup extends PopupWindow { private final View anchor; private final ImageView arrow; - private final int position; + private final int position; + private final int startMargin; public static Builder forTarget(@NonNull View anchor) { return new Builder(anchor); @@ -44,6 +47,7 @@ public class TooltipPopup extends PopupWindow { private TooltipPopup(@NonNull View anchor, int rawPosition, + @Px int startMargin, @NonNull String text, @ColorInt int backgroundTint, @ColorInt int textColor, @@ -54,8 +58,9 @@ public class TooltipPopup extends PopupWindow { ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - this.anchor = anchor; - this.position = getRtlPosition(anchor.getContext(), rawPosition); + this.anchor = anchor; + this.position = getRtlPosition(anchor.getContext(), rawPosition); + this.startMargin = startMargin; switch (rawPosition) { case POSITION_ABOVE: arrow = getContentView().findViewById(R.id.tooltip_arrow_bottom); break; @@ -140,6 +145,19 @@ public class TooltipPopup extends PopupWindow { throw new AssertionError("Invalid tooltip position!"); } + switch (position) { + case POSITION_ABOVE: + xoffset += startMargin; + case POSITION_BELOW: + xoffset += startMargin; + break; + case POSITION_LEFT: + xoffset += startMargin; + break; + case POSITION_RIGHT: + xoffset -= startMargin; + } + showAsDropDown(anchor, xoffset, yoffset); } @@ -192,6 +210,7 @@ public class TooltipPopup extends PopupWindow { private int textResId; private Object iconGlideModel; private OnDismissListener dismissListener; + private int setStartMargin; private Builder(@NonNull View anchor) { this.anchor = anchor; @@ -222,9 +241,14 @@ public class TooltipPopup extends PopupWindow { return this; } + public Builder setStartMargin(@Px int startMargin) { + this.setStartMargin = startMargin; + return this; + } + public TooltipPopup show(int position) { String text = anchor.getContext().getString(textResId); - TooltipPopup tooltip = new TooltipPopup(anchor, position, text, backgroundTint, textColor, iconGlideModel, dismissListener); + TooltipPopup tooltip = new TooltipPopup(anchor, position, setStartMargin, text, backgroundTint, textColor, iconGlideModel, dismissListener); tooltip.show(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt index cd78c5e93e..b4bfb3ccb4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt @@ -26,6 +26,7 @@ import androidx.fragment.app.setFragmentResultListener import androidx.fragment.app.viewModels import androidx.recyclerview.widget.RecyclerView import com.google.android.material.dialog.MaterialAlertDialogBuilder +import org.signal.core.util.DimensionUnit import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.ContactFilterView import org.thoughtcrime.securesms.components.TooltipPopup @@ -374,6 +375,7 @@ class MultiselectForwardFragment : private fun displayTooltip(anchor: View, @StringRes text: Int) { TooltipPopup .forTarget(anchor) + .setStartMargin(DimensionUnit.DP.toPixels(16f).toInt()) .setText(text) .setTextColor(ContextCompat.getColor(requireContext(), R.color.signal_colorOnPrimaryContainer)) .setBackgroundTint(ContextCompat.getColor(requireContext(), R.color.signal_colorPrimaryContainer)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/tabs/StoryViewsAndRepliesDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/tabs/StoryViewsAndRepliesDialogFragment.kt index c7f25fd484..1112709722 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/tabs/StoryViewsAndRepliesDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/tabs/StoryViewsAndRepliesDialogFragment.kt @@ -18,7 +18,6 @@ import com.google.android.material.tabs.TabLayoutMediator import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment import org.thoughtcrime.securesms.recipients.RecipientId -import org.thoughtcrime.securesms.stories.viewer.page.StoryViewerPageFragment import org.thoughtcrime.securesms.stories.viewer.page.StoryViewerPageViewModel import org.thoughtcrime.securesms.stories.viewer.reply.BottomSheetBehaviorDelegate import org.thoughtcrime.securesms.stories.viewer.reply.StoryViewsAndRepliesPagerChild diff --git a/app/src/main/res/layout/tooltip.xml b/app/src/main/res/layout/tooltip.xml index 3e667422f5..75bfccb1a4 100644 --- a/app/src/main/res/layout/tooltip.xml +++ b/app/src/main/res/layout/tooltip.xml @@ -1,58 +1,55 @@ - + android:clipToPadding="false" + android:maxWidth="320dp" + android:orientation="horizontal"> + tools:tint="@color/core_blue" + tools:visibility="visible" /> + android:clipToPadding="false" + android:orientation="vertical"> + tools:tint="@color/core_blue" + tools:visibility="visible" /> + android:clipToPadding="false" + android:elevation="6dp" + android:gravity="center_vertical" + android:orientation="horizontal" + android:padding="16dp"> + tools:visibility="visible" /> @@ -77,12 +74,12 @@ android:id="@+id/tooltip_arrow_bottom" android:layout_width="16dp" android:layout_height="8dp" - android:visibility="gone" - android:scaleType="fitXY" android:elevation="6dp" + android:scaleType="fitXY" + android:visibility="gone" app:srcCompat="@drawable/ic_triangle_down" - tools:visibility="visible" - tools:tint="@color/core_blue"/> + tools:tint="@color/core_blue" + tools:visibility="visible" /> @@ -90,11 +87,11 @@ android:id="@+id/tooltip_arrow_end" android:layout_width="8dp" android:layout_height="16dp" - android:visibility="gone" - android:scaleType="fitXY" android:elevation="6dp" + android:scaleType="fitXY" + android:visibility="gone" app:srcCompat="@drawable/ic_triangle_right" - tools:visibility="visible" - tools:tint="@color/core_blue"/> + tools:tint="@color/core_blue" + tools:visibility="visible" />