Refresh shared media screens.

This commit is contained in:
Alex Hart 2021-07-09 10:34:36 -03:00 committed by Cody Henthorne
parent e584a90f81
commit 416e62112f
15 changed files with 178 additions and 57 deletions

View file

@ -56,7 +56,7 @@ public final class AudioView extends FrameLayout {
@NonNull private final View progressAndPlay; @NonNull private final View progressAndPlay;
@NonNull private final LottieAnimationView playPauseButton; @NonNull private final LottieAnimationView playPauseButton;
@NonNull private final ImageView downloadButton; @NonNull private final ImageView downloadButton;
@NonNull private final ProgressWheel circleProgress; @Nullable private final ProgressWheel circleProgress;
@NonNull private final SeekBar seekBar; @NonNull private final SeekBar seekBar;
private final boolean smallView; private final boolean smallView;
private final boolean autoRewind; private final boolean autoRewind;
@ -179,16 +179,20 @@ public final class AudioView extends FrameLayout {
controlToggle.displayQuick(downloadButton); controlToggle.displayQuick(downloadButton);
seekBar.setEnabled(false); seekBar.setEnabled(false);
downloadButton.setOnClickListener(new DownloadClickedListener(audio)); downloadButton.setOnClickListener(new DownloadClickedListener(audio));
if (circleProgress != null) {
if (circleProgress.isSpinning()) circleProgress.stopSpinning(); if (circleProgress.isSpinning()) circleProgress.stopSpinning();
circleProgress.setVisibility(View.GONE); circleProgress.setVisibility(View.GONE);
}
} else if (showControls && audio.getTransferState() == AttachmentDatabase.TRANSFER_PROGRESS_STARTED) { } else if (showControls && audio.getTransferState() == AttachmentDatabase.TRANSFER_PROGRESS_STARTED) {
controlToggle.displayQuick(progressAndPlay); controlToggle.displayQuick(progressAndPlay);
seekBar.setEnabled(false); seekBar.setEnabled(false);
if (circleProgress != null) {
circleProgress.setVisibility(View.VISIBLE); circleProgress.setVisibility(View.VISIBLE);
circleProgress.spin(); circleProgress.spin();
}
} else { } else {
seekBar.setEnabled(true); seekBar.setEnabled(true);
if (circleProgress.isSpinning()) circleProgress.stopSpinning(); if (circleProgress != null && circleProgress.isSpinning()) circleProgress.stopSpinning();
showPlayButton(); showPlayButton();
} }
@ -346,7 +350,7 @@ public final class AudioView extends FrameLayout {
duration.setText(getResources().getString(R.string.AudioView_duration, remainingSecs / 60, remainingSecs % 60)); duration.setText(getResources().getString(R.string.AudioView_duration, remainingSecs / 60, remainingSecs % 60));
} }
if (smallView) { if (smallView && circleProgress != null) {
circleProgress.setInstantProgress(seekBar.getProgress() == 0 ? 1 : progress); circleProgress.setInstantProgress(seekBar.getProgress() == 0 ? 1 : progress);
} }
} }
@ -357,7 +361,10 @@ public final class AudioView extends FrameLayout {
new LottieValueCallback<>(new SimpleColorFilter(foregroundTint)))); new LottieValueCallback<>(new SimpleColorFilter(foregroundTint))));
this.downloadButton.setColorFilter(foregroundTint, PorterDuff.Mode.SRC_IN); this.downloadButton.setColorFilter(foregroundTint, PorterDuff.Mode.SRC_IN);
if (circleProgress != null) {
this.circleProgress.setBarColor(foregroundTint); this.circleProgress.setBarColor(foregroundTint);
}
if (this.duration != null) { if (this.duration != null) {
this.duration.setTextColor(foregroundTint); this.duration.setTextColor(foregroundTint);
@ -400,11 +407,14 @@ public final class AudioView extends FrameLayout {
} }
private void showPlayButton() { private void showPlayButton() {
if (circleProgress != null) {
if (!smallView) { if (!smallView) {
circleProgress.setVisibility(GONE); circleProgress.setVisibility(GONE);
} else if (seekBar.getProgress() == 0) { } else if (seekBar.getProgress() == 0) {
circleProgress.setInstantProgress(1); circleProgress.setInstantProgress(1);
} }
}
playPauseButton.setVisibility(VISIBLE); playPauseButton.setVisibility(VISIBLE);
controlToggle.displayQuick(progressAndPlay); controlToggle.displayQuick(progressAndPlay);
} }
@ -495,7 +505,7 @@ public final class AudioView extends FrameLayout {
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN) @Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEventAsync(final PartProgressEvent event) { public void onEventAsync(final PartProgressEvent event) {
if (audioSlide != null && event.attachment.equals(audioSlide.asAttachment())) { if (audioSlide != null && circleProgress != null && event.attachment.equals(audioSlide.asAttachment())) {
circleProgress.setInstantProgress(((float) event.progress) / event.total); circleProgress.setInstantProgress(((float) event.progress) / event.total);
} }
} }

View file

@ -26,6 +26,7 @@ import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer; import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@ -421,16 +422,21 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
line1.setText(describe(fromToPair.first(), fromToPair.second())); line1.setText(describe(fromToPair.first(), fromToPair.second()));
} }
private String describe(@NonNull Recipient from, @NonNull Recipient thread) { protected @Nullable String getMediaTitle() {
return fileName.orNull();
}
private @NonNull String describe(@NonNull Recipient from, @NonNull Recipient thread) {
if (from == Recipient.UNKNOWN && thread == Recipient.UNKNOWN) { if (from == Recipient.UNKNOWN && thread == Recipient.UNKNOWN) {
return fileName.or(fileTypeDescription); return fileName.or(fileTypeDescription);
} }
String sentFromToString = getSentFromToString(from, thread); String sentFromToString = getSentFromToString(from, thread);
String mediaTitle = getMediaTitle();
if (fileName.isPresent()) { if (mediaTitle != null) {
return context.getString(R.string.MediaOverviewActivity_detail_line_2_part, return context.getString(R.string.MediaOverviewActivity_detail_line_2_part,
fileName.get(), mediaTitle,
sentFromToString); sentFromToString);
} else { } else {
return sentFromToString; return sentFromToString;
@ -479,6 +485,8 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
private final AudioView audioView; private final AudioView audioView;
private boolean isVoiceNote;
AudioDetailViewHolder(@NonNull View itemView) { AudioDetailViewHolder(@NonNull View itemView) {
super(itemView); super(itemView);
this.audioView = itemView.findViewById(R.id.audio); this.audioView = itemView.findViewById(R.id.audio);
@ -486,12 +494,14 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
@Override @Override
public void bind(@NonNull Context context, @NonNull MediaDatabase.MediaRecord mediaRecord, @NonNull Slide slide) { public void bind(@NonNull Context context, @NonNull MediaDatabase.MediaRecord mediaRecord, @NonNull Slide slide) {
super.bind(context, mediaRecord, slide);
if (!slide.hasAudio()) { if (!slide.hasAudio()) {
throw new AssertionError(); throw new AssertionError();
} }
isVoiceNote = slide.asAttachment().isVoiceNote();
super.bind(context, mediaRecord, slide);
long mmsId = Objects.requireNonNull(mediaRecord.getAttachment()).getMmsId(); long mmsId = Objects.requireNonNull(mediaRecord.getAttachment()).getMmsId();
audioItemListener.unregisterPlaybackStateObserver(audioView.getPlaybackStateObserver()); audioItemListener.unregisterPlaybackStateObserver(audioView.getPlaybackStateObserver());
@ -502,6 +512,11 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
itemView.setOnClickListener(view -> itemClickListener.onMediaClicked(mediaRecord)); itemView.setOnClickListener(view -> itemClickListener.onMediaClicked(mediaRecord));
} }
@Override
protected @NonNull String getMediaTitle() {
return context.getString(R.string.ThreadRecord_voice_message);
}
@Override @Override
void unbind() { void unbind() {
super.unbind(); super.unbind();

View file

@ -0,0 +1,9 @@
<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="#FF000000"
android:pathData="M8.75,21h0A0.76,0.76 0,0 1,8 20.25L8,3.75A0.76,0.76 0,0 1,8.75 3h0a0.76,0.76 0,0 1,0.75 0.75v16.5A0.76,0.76 0,0 1,8.75 21ZM12.5,17.25L12.5,6.75A0.76,0.76 0,0 0,11.75 6h0a0.76,0.76 0,0 0,-0.75 0.75v10.5a0.76,0.76 0,0 0,0.75 0.75h0A0.76,0.76 0,0 0,12.5 17.25ZM15.5,14.25L15.5,9.75A0.76,0.76 0,0 0,14.75 9h0a0.76,0.76 0,0 0,-0.75 0.75v4.5a0.76,0.76 0,0 0,0.75 0.75h0A0.76,0.76 0,0 0,15.5 14.25ZM21.5,13.25v-2.5a0.76,0.76 0,0 0,-0.75 -0.75h0a0.76,0.76 0,0 0,-0.75 0.75v2.5a0.76,0.76 0,0 0,0.75 0.75h0A0.76,0.76 0,0 0,21.5 13.25ZM18.5,17.25L18.5,6.75A0.76,0.76 0,0 0,17.75 6h0a0.76,0.76 0,0 0,-0.75 0.75v10.5a0.76,0.76 0,0 0,0.75 0.75h0A0.76,0.76 0,0 0,18.5 17.25ZM6.5,15.25L6.5,8.75A0.76,0.76 0,0 0,5.75 8h0A0.76,0.76 0,0 0,5 8.75v6.5a0.76,0.76 0,0 0,0.75 0.75h0A0.76,0.76 0,0 0,6.5 15.25ZM3.5,13.25v-2.5A0.76,0.76 0,0 0,2.75 10h0a0.76,0.76 0,0 0,-0.75 0.75v2.5a0.76,0.76 0,0 0,0.75 0.75h0A0.76,0.76 0,0 0,3.5 13.25Z"/>
</vector>

View file

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<org.thoughtcrime.securesms.components.AnimatingToggle xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/control_toggle"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center"
android:padding="8dp"
android:gravity="center"
tools:showIn="@layout/audio_view_small">
<FrameLayout
android:background="@drawable/circle_tintable"
android:id="@+id/progress_and_play"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/play"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/circle_touch_highlight_background"
android:contentDescription="@string/audio_view__play_pause_accessibility_description"
android:gravity="center_vertical"
android:padding="7dp"
android:visibility="gone"
app:lottie_rawRes="@raw/lottie_play_pause"
tools:visibility="visible" />
</FrameLayout>
<ImageView
android:id="@+id/download"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:background="@drawable/circle_touch_highlight_background"
android:clickable="true"
android:contentDescription="@string/audio_view__download_accessibility_description"
android:focusable="true"
android:src="@drawable/ic_download_circle_fill_white_48dp"
android:visibility="gone" />
</org.thoughtcrime.securesms.components.AnimatingToggle>

View file

@ -9,7 +9,7 @@
android:orientation="vertical" android:orientation="vertical"
tools:background="#ff00ff"> tools:background="#ff00ff">
<include layout="@layout/audio_view_circle" /> <include layout="@layout/audio_view_circle_small" />
<SeekBar <SeekBar
android:id="@+id/seek" android:id="@+id/seek"

View file

@ -48,11 +48,12 @@
android:id="@+id/sort_order" android:id="@+id/sort_order"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="@dimen/dsl_settings_gutter"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:layout_marginBottom="12dp" android:layout_marginBottom="12dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:textAppearance="@style/TextAppearance.Signal.Body1.Bold" android:textAppearance="@style/TextAppearance.Signal.Body1.Bold"
android:textStyle="bold"
android:textColor="@color/signal_inverse_primary" android:textColor="@color/signal_inverse_primary"
app:layout_constraintStart_toStartOf="@+id/sorting" app:layout_constraintStart_toStartOf="@+id/sorting"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@ -77,6 +78,7 @@
android:layout_height="48dp" android:layout_height="48dp"
android:layout_gravity="center" android:layout_gravity="center"
android:gravity="center" android:gravity="center"
android:layout_marginEnd="@dimen/media_overview_toggle_gutter"
app:layout_constraintBottom_toBottomOf="@+id/sort_order_arrow" app:layout_constraintBottom_toBottomOf="@+id/sort_order_arrow"
app:layout_constraintEnd_toEndOf="@+id/sorting" app:layout_constraintEnd_toEndOf="@+id/sorting"
app:layout_constraintTop_toTopOf="@+id/sort_order_arrow"> app:layout_constraintTop_toTopOf="@+id/sort_order_arrow">

View file

@ -3,24 +3,26 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="56dp"> android:minHeight="@dimen/media_overview_detail_item_height">
<FrameLayout <FrameLayout
android:id="@+id/image_container" android:id="@+id/image_container"
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:layout_marginStart="@dimen/dsl_settings_gutter" android:layout_marginStart="@dimen/dsl_settings_gutter"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<org.thoughtcrime.securesms.components.AudioView <ImageView
android:id="@+id/audio" android:id="@+id/icon"
android:layout_width="wrap_content" android:layout_width="38dp"
android:layout_height="wrap_content" android:layout_height="50dp"
app:autoRewind="true" android:layout_gravity="center"
app:foregroundTintColor="@color/core_ultramarine" android:background="@drawable/ic_document_large"
app:progressAndPlayTint="@android:color/transparent" android:importantForAccessibility="no"
app:audioView_mode="small" /> android:scaleType="centerInside"
app:srcCompat="@drawable/ic_audio_24" />
</FrameLayout> </FrameLayout>
@ -28,4 +30,19 @@
<include layout="@layout/media_overview_detail_text" /> <include layout="@layout/media_overview_detail_text" />
<org.thoughtcrime.securesms.components.AudioView
android:id="@+id/audio"
android:layout_width="48dp"
android:layout_height="48dp"
app:autoRewind="true"
android:layout_marginEnd="@dimen/dsl_settings_gutter"
app:foregroundTintColor="@color/signal_inverse_primary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintStart_toEndOf="@id/media_overview_text"
app:layout_constraintTop_toTopOf="parent"
app:progressAndPlayTint="@color/signal_background_secondary"
app:audioView_mode="small" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -2,15 +2,16 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:minHeight="56dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:minHeight="@dimen/media_overview_detail_item_height">
<FrameLayout <FrameLayout
android:id="@+id/image_container" android:id="@+id/image_container"
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:layout_marginStart="@dimen/dsl_settings_gutter" android:layout_marginStart="@dimen/dsl_settings_gutter"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
@ -29,13 +30,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:clickable="false" android:clickable="false"
android:gravity="center" android:textAppearance="@style/TextAppearance.Signal.Subtitle.Bold"
android:scaleType="centerInside"
android:textAlignment="center"
android:textColor="@color/core_black" android:textColor="@color/core_black"
android:textSize="10sp"
android:visibility="visible" android:visibility="visible"
tools:text="PDF" tools:text="pdf"
tools:visibility="visible" /> tools:visibility="visible" />
</FrameLayout> </FrameLayout>
@ -44,4 +42,13 @@
<include layout="@layout/media_overview_detail_text" /> <include layout="@layout/media_overview_detail_text" />
<View
android:id="@+id/audio"
android:layout_width="48dp"
android:layout_height="48dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -3,13 +3,14 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="56dp"> android:minHeight="@dimen/media_overview_detail_item_height">
<FrameLayout <FrameLayout
android:id="@+id/image_container" android:id="@+id/image_container"
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:layout_marginStart="@dimen/dsl_settings_gutter" android:layout_marginStart="@dimen/dsl_settings_gutter"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
@ -22,12 +23,19 @@
app:thumbnail_radius="8dp" app:thumbnail_radius="8dp"
app:transparent_overlay_color="@color/transparent_black_08" /> app:transparent_overlay_color="@color/transparent_black_08" />
</FrameLayout> </FrameLayout>
<include layout="@layout/media_overview_selected_overlay" /> <include layout="@layout/media_overview_selected_overlay" />
<include layout="@layout/media_overview_detail_text" /> <include layout="@layout/media_overview_detail_text" />
<View
android:id="@+id/audio"
android:layout_width="48dp"
android:layout_height="48dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -2,12 +2,17 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/media_overview_text"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/audio"
app:layout_constraintStart_toEndOf="@+id/image_container" app:layout_constraintStart_toEndOf="@+id/image_container"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_goneMarginEnd="@dimen/dsl_settings_gutter"
tools:showIn="@layout/media_overview_detail_item_media"> tools:showIn="@layout/media_overview_detail_item_media">
<TextView <TextView
@ -15,10 +20,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="marquee" android:ellipsize="marquee"
android:paddingStart="6dp"
android:paddingEnd="6dp"
android:singleLine="true" android:singleLine="true"
android:textSize="14sp" android:textAppearance="@style/Signal.Text.Body"
app:layout_constraintStart_toEndOf="@+id/image_container" app:layout_constraintStart_toEndOf="@+id/image_container"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="Sent voice note, 02:35" /> tools:text="Sent voice note, 02:35" />
@ -28,10 +31,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="marquee" android:ellipsize="marquee"
android:paddingStart="6dp"
android:paddingEnd="6dp"
android:singleLine="true" android:singleLine="true"
android:textSize="14sp" android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textColor="@color/signal_text_secondary"
app:layout_constraintStart_toEndOf="@+id/image_container" app:layout_constraintStart_toEndOf="@+id/image_container"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="2.7 MB, 11.06.19 at 5:25 AM" /> tools:text="2.7 MB, 11.06.19 at 5:25 AM" />

View file

@ -5,15 +5,15 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/signal_background_primary" android:background="@color/signal_background_primary"
android:minHeight="48dp" android:minHeight="48dp"
android:paddingStart="@dimen/dsl_settings_gutter"
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingEnd="@dimen/dsl_settings_gutter"
android:paddingBottom="12dp"> android:paddingBottom="12dp">
<TextView <TextView
android:layout_marginStart="@dimen/dsl_settings_gutter"
android:layout_marginEnd="@dimen/dsl_settings_gutter"
android:id="@+id/text" android:id="@+id/text"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:textAppearance="@style/TextAppearance.Signal.Body1.Bold" android:textAppearance="@style/TextAppearance.Signal.Body1.Bold"
android:textStyle="bold" android:textStyle="bold"
tools:text="March 1, 2015" /> tools:text="March 1, 2015" />

View file

@ -17,6 +17,7 @@
<dimen name="media_bubble_gif_width">260dp</dimen> <dimen name="media_bubble_gif_width">260dp</dimen>
<dimen name="dsl_settings_gutter">24dp</dimen> <dimen name="dsl_settings_gutter">24dp</dimen>
<dimen name="media_overview_toggle_gutter">10dp</dimen>
<dimen name="wallpaper_selection_gutter">16dp</dimen> <dimen name="wallpaper_selection_gutter">16dp</dimen>
<dimen name="chat_colors_preview_bubble_max_width">260dp</dimen> <dimen name="chat_colors_preview_bubble_max_width">260dp</dimen>

View file

@ -71,6 +71,7 @@
<attr name="waveformThumbTint" format="color" /> <attr name="waveformThumbTint" format="color" />
<attr name="waveformPlayedBarsColor" format="color" /> <attr name="waveformPlayedBarsColor" format="color" />
<attr name="waveformUnplayedBarsColor" format="color" /> <attr name="waveformUnplayedBarsColor" format="color" />
<attr name="audioView_showSeekBar" format="boolean" />
<attr name="progressAndPlayTint" format="color" /> <attr name="progressAndPlayTint" format="color" />
<attr name="autoRewind" format="boolean" /> <attr name="autoRewind" format="boolean" />
<attr name="audioView_mode" format="enum"> <attr name="audioView_mode" format="enum">

View file

@ -84,6 +84,7 @@
<dimen name="mention_corner_radius">4dp</dimen> <dimen name="mention_corner_radius">4dp</dimen>
<integer name="media_overview_cols">4</integer> <integer name="media_overview_cols">4</integer>
<dimen name="media_overview_detail_item_height">72dp</dimen>
<dimen name="message_details_table_row_pad">8dp</dimen> <dimen name="message_details_table_row_pad">8dp</dimen>
<dimen name="sticker_page_item_padding">8dp</dimen> <dimen name="sticker_page_item_padding">8dp</dimen>
@ -181,6 +182,7 @@
<dimen name="payment_recovery_phrase_outline_margin">32dp</dimen> <dimen name="payment_recovery_phrase_outline_margin">32dp</dimen>
<dimen name="dsl_settings_gutter">16dp</dimen> <dimen name="dsl_settings_gutter">16dp</dimen>
<dimen name="media_overview_toggle_gutter">2dp</dimen>
<dimen name="wallpaper_selection_gutter">8dp</dimen> <dimen name="wallpaper_selection_gutter">8dp</dimen>
<dimen name="chat_colors_preview_bubble_max_width">240dp</dimen> <dimen name="chat_colors_preview_bubble_max_width">240dp</dimen>

View file

@ -942,6 +942,7 @@
<string name="MediaOverviewActivity_image">Image</string> <string name="MediaOverviewActivity_image">Image</string>
<string name="MediaOverviewActivity_detail_line_2_part" translatable="false">%1$s &#183; %2$s</string> <string name="MediaOverviewActivity_detail_line_2_part" translatable="false">%1$s &#183; %2$s</string>
<string name="MediaOverviewActivity_detail_line_3_part" translatable="false">%1$s &#183; %2$s &#183; %3$s</string> <string name="MediaOverviewActivity_detail_line_3_part" translatable="false">%1$s &#183; %2$s &#183; %3$s</string>
<string name="MediaOverviewActivity_voice_message">Voice message</string>
<string name="MediaOverviewActivity_sent_by_s">Sent by %1$s</string> <string name="MediaOverviewActivity_sent_by_s">Sent by %1$s</string>
<string name="MediaOverviewActivity_sent_by_you">Sent by you</string> <string name="MediaOverviewActivity_sent_by_you">Sent by you</string>