kopia lustrzana https://github.com/ryukoposting/Signal-Android
rodzic
c36f9646f9
commit
22d5fc6cba
|
@ -28,6 +28,7 @@ import java.text.SimpleDateFormat;
|
|||
import java.util.Locale;
|
||||
|
||||
import okhttp3.HttpUrl;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
|
||||
/**
|
||||
* The view shown in the compose box or conversation that represents the state of the link preview.
|
||||
|
@ -181,10 +182,16 @@ public class LinkPreviewView extends FrameLayout {
|
|||
}
|
||||
}
|
||||
|
||||
public void setCorners(int topLeft, int topRight) {
|
||||
cornerMask.setRadii(topLeft, topRight, 0, 0);
|
||||
outliner.setRadii(topLeft, topRight, 0, 0);
|
||||
thumbnail.setCorners(topLeft, defaultRadius, defaultRadius, defaultRadius);
|
||||
public void setCorners(int topStart, int topEnd) {
|
||||
if (ViewUtil.isRtl(this)) {
|
||||
cornerMask.setRadii(topEnd, topStart, 0, 0);
|
||||
outliner.setRadii(topEnd, topStart, 0, 0);
|
||||
thumbnail.setCorners(defaultRadius, topEnd, defaultRadius, defaultRadius);
|
||||
} else {
|
||||
cornerMask.setRadii(topStart, topEnd, 0, 0);
|
||||
outliner.setRadii(topStart, topEnd, 0, 0);
|
||||
thumbnail.setCorners(topStart, defaultRadius, defaultRadius, defaultRadius);
|
||||
}
|
||||
postInvalidate();
|
||||
}
|
||||
|
||||
|
|
|
@ -889,59 +889,63 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
|
|||
int defaultRadius = readDimen(R.dimen.message_corner_radius);
|
||||
int collapseRadius = readDimen(R.dimen.message_corner_collapse_radius);
|
||||
|
||||
int topLeft = defaultRadius;
|
||||
int topRight = defaultRadius;
|
||||
int bottomLeft = defaultRadius;
|
||||
int bottomRight = defaultRadius;
|
||||
int topStart = defaultRadius;
|
||||
int topEnd = defaultRadius;
|
||||
int bottomStart = defaultRadius;
|
||||
int bottomEnd = defaultRadius;
|
||||
|
||||
if (isSingularMessage(current, previous, next, isGroupThread)) {
|
||||
topLeft = defaultRadius;
|
||||
topRight = defaultRadius;
|
||||
bottomLeft = defaultRadius;
|
||||
bottomRight = defaultRadius;
|
||||
topStart = defaultRadius;
|
||||
topEnd = defaultRadius;
|
||||
bottomStart = defaultRadius;
|
||||
bottomEnd = defaultRadius;
|
||||
} else if (isStartOfMessageCluster(current, previous, isGroupThread)) {
|
||||
if (current.isOutgoing()) {
|
||||
bottomRight = collapseRadius;
|
||||
bottomEnd = collapseRadius;
|
||||
} else {
|
||||
bottomLeft = collapseRadius;
|
||||
bottomStart = collapseRadius;
|
||||
}
|
||||
} else if (isEndOfMessageCluster(current, next, isGroupThread)) {
|
||||
if (current.isOutgoing()) {
|
||||
topRight = collapseRadius;
|
||||
topEnd = collapseRadius;
|
||||
} else {
|
||||
topLeft = collapseRadius;
|
||||
topStart = collapseRadius;
|
||||
}
|
||||
} else {
|
||||
if (current.isOutgoing()) {
|
||||
topRight = collapseRadius;
|
||||
bottomRight = collapseRadius;
|
||||
topEnd = collapseRadius;
|
||||
bottomEnd = collapseRadius;
|
||||
} else {
|
||||
topLeft = collapseRadius;
|
||||
bottomLeft = collapseRadius;
|
||||
topStart = collapseRadius;
|
||||
bottomStart = collapseRadius;
|
||||
}
|
||||
}
|
||||
|
||||
if (!TextUtils.isEmpty(current.getDisplayBody(getContext()))) {
|
||||
bottomLeft = 0;
|
||||
bottomRight = 0;
|
||||
bottomStart = 0;
|
||||
bottomEnd = 0;
|
||||
}
|
||||
|
||||
if (isStartOfMessageCluster(current, previous, isGroupThread) && !current.isOutgoing() && isGroupThread) {
|
||||
topLeft = 0;
|
||||
topRight = 0;
|
||||
topStart = 0;
|
||||
topEnd = 0;
|
||||
}
|
||||
|
||||
if (hasQuote(messageRecord)) {
|
||||
topLeft = 0;
|
||||
topRight = 0;
|
||||
topStart = 0;
|
||||
topEnd = 0;
|
||||
}
|
||||
|
||||
if (hasLinkPreview(messageRecord) || hasExtraText(messageRecord)) {
|
||||
bottomLeft = 0;
|
||||
bottomRight = 0;
|
||||
bottomStart = 0;
|
||||
bottomEnd = 0;
|
||||
}
|
||||
|
||||
mediaThumbnailStub.get().setCorners(topLeft, topRight, bottomRight, bottomLeft);
|
||||
if (ViewUtil.isRtl(this)) {
|
||||
mediaThumbnailStub.get().setCorners(topEnd, topStart, bottomStart, bottomEnd);
|
||||
} else {
|
||||
mediaThumbnailStub.get().setCorners(topStart, topEnd, bottomEnd, bottomStart);
|
||||
}
|
||||
}
|
||||
|
||||
private void setSharedContactCorners(@NonNull MessageRecord current, @NonNull Optional<MessageRecord> previous, @NonNull Optional<MessageRecord> next, boolean isGroupThread) {
|
||||
|
@ -1229,6 +1233,14 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
|
|||
}
|
||||
}
|
||||
|
||||
private void setOutlinerRadii(Outliner outliner, int topStart, int topEnd, int bottomEnd, int bottomStart) {
|
||||
if (ViewUtil.isRtl(this)) {
|
||||
outliner.setRadii(topEnd, topStart, bottomStart, bottomEnd);
|
||||
} else {
|
||||
outliner.setRadii(topStart, topEnd, bottomEnd, bottomStart);
|
||||
}
|
||||
}
|
||||
|
||||
private void setMessageShape(@NonNull MessageRecord current, @NonNull Optional<MessageRecord> previous, @NonNull Optional<MessageRecord> next, boolean isGroupThread) {
|
||||
int bigRadius = readDimen(R.dimen.message_corner_radius);
|
||||
int smallRadius = readDimen(R.dimen.message_corner_collapse_radius);
|
||||
|
@ -1248,32 +1260,32 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
|
|||
} else if (isStartOfMessageCluster(current, previous, isGroupThread)) {
|
||||
if (current.isOutgoing()) {
|
||||
background = R.drawable.message_bubble_background_sent_start;
|
||||
outliner.setRadii(bigRadius, bigRadius, smallRadius, bigRadius);
|
||||
pulseOutliner.setRadii(bigRadius, bigRadius, smallRadius, bigRadius);
|
||||
setOutlinerRadii(outliner, bigRadius, bigRadius, smallRadius, bigRadius);
|
||||
setOutlinerRadii(pulseOutliner, bigRadius, bigRadius, smallRadius, bigRadius);
|
||||
} else {
|
||||
background = R.drawable.message_bubble_background_received_start;
|
||||
outliner.setRadii(bigRadius, bigRadius, bigRadius, smallRadius);
|
||||
pulseOutliner.setRadii(bigRadius, bigRadius, bigRadius, smallRadius);
|
||||
setOutlinerRadii(outliner, bigRadius, bigRadius, bigRadius, smallRadius);
|
||||
setOutlinerRadii(pulseOutliner, bigRadius, bigRadius, bigRadius, smallRadius);
|
||||
}
|
||||
} else if (isEndOfMessageCluster(current, next, isGroupThread)) {
|
||||
if (current.isOutgoing()) {
|
||||
background = R.drawable.message_bubble_background_sent_end;
|
||||
outliner.setRadii(bigRadius, smallRadius, bigRadius, bigRadius);
|
||||
pulseOutliner.setRadii(bigRadius, smallRadius, bigRadius, bigRadius);
|
||||
setOutlinerRadii(outliner, bigRadius, smallRadius, bigRadius, bigRadius);
|
||||
setOutlinerRadii(pulseOutliner, bigRadius, smallRadius, bigRadius, bigRadius);
|
||||
} else {
|
||||
background = R.drawable.message_bubble_background_received_end;
|
||||
outliner.setRadii(smallRadius, bigRadius, bigRadius, bigRadius);
|
||||
pulseOutliner.setRadii(smallRadius, bigRadius, bigRadius, bigRadius);
|
||||
setOutlinerRadii(outliner, smallRadius, bigRadius, bigRadius, bigRadius);
|
||||
setOutlinerRadii(pulseOutliner, smallRadius, bigRadius, bigRadius, bigRadius);
|
||||
}
|
||||
} else {
|
||||
if (current.isOutgoing()) {
|
||||
background = R.drawable.message_bubble_background_sent_middle;
|
||||
outliner.setRadii(bigRadius, smallRadius, smallRadius, bigRadius);
|
||||
pulseOutliner.setRadii(bigRadius, smallRadius, smallRadius, bigRadius);
|
||||
setOutlinerRadii(outliner, bigRadius, smallRadius, smallRadius, bigRadius);
|
||||
setOutlinerRadii(pulseOutliner, bigRadius, smallRadius, smallRadius, bigRadius);
|
||||
} else {
|
||||
background = R.drawable.message_bubble_background_received_middle;
|
||||
outliner.setRadii(smallRadius, bigRadius, bigRadius, smallRadius);
|
||||
pulseOutliner.setRadii(smallRadius, bigRadius, bigRadius, smallRadius);
|
||||
setOutlinerRadii(outliner, smallRadius, bigRadius, bigRadius, smallRadius);
|
||||
setOutlinerRadii(pulseOutliner, smallRadius, bigRadius, bigRadius, smallRadius);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:bottom="2px"
|
||||
android:top="2px">
|
||||
<shape android:shape="rectangle">
|
||||
<corners
|
||||
android:bottomLeftRadius="@dimen/message_corner_radius"
|
||||
android:bottomRightRadius="@dimen/message_corner_radius"
|
||||
android:topLeftRadius="@dimen/message_corner_radius"
|
||||
android:topRightRadius="@dimen/message_corner_collapse_radius" />
|
||||
<solid android:color="@color/white" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:bottom="2px"
|
||||
android:top="2px">
|
||||
|
||||
<shape android:shape="rectangle">
|
||||
<corners
|
||||
android:bottomLeftRadius="@dimen/message_corner_radius"
|
||||
android:bottomRightRadius="@dimen/message_corner_collapse_radius"
|
||||
android:topLeftRadius="@dimen/message_corner_radius"
|
||||
android:topRightRadius="@dimen/message_corner_collapse_radius" />
|
||||
<solid android:color="@color/white" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:bottom="2px"
|
||||
android:top="2px">
|
||||
<shape android:shape="rectangle">
|
||||
<corners
|
||||
android:bottomLeftRadius="@dimen/message_corner_radius"
|
||||
android:bottomRightRadius="@dimen/message_corner_collapse_radius"
|
||||
android:topLeftRadius="@dimen/message_corner_radius"
|
||||
android:topRightRadius="@dimen/message_corner_radius" />
|
||||
<solid android:color="@color/white" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:top="2px"
|
||||
android:bottom="2px">
|
||||
|
||||
<shape android:shape="rectangle">
|
||||
<corners
|
||||
android:topLeftRadius="@dimen/message_corner_collapse_radius"
|
||||
android:topRightRadius="@dimen/message_corner_radius"
|
||||
android:bottomRightRadius="@dimen/message_corner_radius"
|
||||
android:bottomLeftRadius="@dimen/message_corner_radius" />
|
||||
<solid android:color="@color/white" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:top="2px"
|
||||
android:bottom="2px">
|
||||
|
||||
<shape android:shape="rectangle">
|
||||
<corners
|
||||
android:topLeftRadius="@dimen/message_corner_collapse_radius"
|
||||
android:topRightRadius="@dimen/message_corner_radius"
|
||||
android:bottomLeftRadius="@dimen/message_corner_collapse_radius"
|
||||
android:bottomRightRadius="@dimen/message_corner_radius" />
|
||||
<solid android:color="@color/white" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:top="2px"
|
||||
android:bottom="2px">
|
||||
|
||||
<shape android:shape="rectangle">
|
||||
<corners
|
||||
android:topLeftRadius="@dimen/message_corner_radius"
|
||||
android:topRightRadius="@dimen/message_corner_radius"
|
||||
android:bottomLeftRadius="@dimen/message_corner_collapse_radius"
|
||||
android:bottomRightRadius="@dimen/message_corner_radius" />
|
||||
<solid android:color="@color/white" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
Ładowanie…
Reference in New Issue