From df61e9565cd3e46cd64ebd8c4295b864f5838922 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Mon, 13 Jan 2020 15:29:06 +1100 Subject: [PATCH] WIP --- res/layout/conversation_item_footer.xml | 1 + res/layout/conversation_item_received.xml | 28 +++++------ res/layout/conversation_item_sent.xml | 4 +- res/layout/giphy_activity.xml | 4 +- res/layout/giphy_activity_toolbar.xml | 8 ++-- res/layout/giphy_fragment.xml | 48 +++++++++++-------- res/layout/link_preview.xml | 25 +++++----- res/values/colors.xml | 2 + res/values/dimens.xml | 16 +++---- res/values/themes.xml | 20 ++++---- .../components/DeliveryStatusView.java | 14 ++---- .../securesms/components/InputPanel.java | 4 +- .../securesms/components/LinkPreviewView.java | 3 +- .../components/OutlinedThumbnailView.java | 35 +------------- .../conversation/ConversationActivity.java | 2 +- .../conversation/ConversationItem.java | 45 +++++++++-------- .../securesms/giph/ui/GiphyFragment.java | 6 +-- 17 files changed, 117 insertions(+), 148 deletions(-) diff --git a/res/layout/conversation_item_footer.xml b/res/layout/conversation_item_footer.xml index 685d1c44dc..f2d70188ab 100644 --- a/res/layout/conversation_item_footer.xml +++ b/res/layout/conversation_item_footer.xml @@ -21,6 +21,7 @@ android:autoLink="none" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:textSize="@dimen/very_small_font_size" android:linksClickable="false" style="@style/Signal.Text.Caption.MessageSent" android:textColor="?conversation_item_sent_text_secondary_color" diff --git a/res/layout/conversation_item_received.xml b/res/layout/conversation_item_received.xml index 436171f569..24d76569ea 100644 --- a/res/layout/conversation_item_received.xml +++ b/res/layout/conversation_item_received.xml @@ -19,25 +19,21 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/conversation_individual_right_gutter" - android:paddingStart="8dp" + android:paddingStart="@dimen/large_spacing" android:clipToPadding="false" android:clipChildren="false"> - - + android:layout_alignParentStart="true"> + + diff --git a/res/layout/conversation_item_sent.xml b/res/layout/conversation_item_sent.xml index 1cb2d28de5..0e985272c5 100644 --- a/res/layout/conversation_item_sent.xml +++ b/res/layout/conversation_item_sent.xml @@ -18,7 +18,7 @@ android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/conversation_individual_right_gutter" + android:layout_marginEnd="@dimen/large_spacing" android:clipToPadding="false" android:clipChildren="false"> @@ -106,7 +106,7 @@ android:id="@+id/conversation_item_body" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/message_bubble_top_padding" + android:layout_marginTop="14dp" android:layout_marginStart="@dimen/message_bubble_horizontal_padding" android:layout_marginEnd="@dimen/message_bubble_horizontal_padding" android:layout_marginBottom="@dimen/message_bubble_collapsed_footer_padding" diff --git a/res/layout/giphy_activity.xml b/res/layout/giphy_activity.xml index d0b7257ff0..eed1cb4ca5 100644 --- a/res/layout/giphy_activity.xml +++ b/res/layout/giphy_activity.xml @@ -28,7 +28,9 @@ android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:theme="?attr/actionBarTabBarStyle" + android:theme="@style/Session.DarkTabLayout" + app:tabRippleColor="@color/cell_selected" + app:tabIndicatorColor="@color/accent" android:scrollbars="horizontal"/> diff --git a/res/layout/giphy_activity_toolbar.xml b/res/layout/giphy_activity_toolbar.xml index f7e8995007..a98a027630 100644 --- a/res/layout/giphy_activity_toolbar.xml +++ b/res/layout/giphy_activity_toolbar.xml @@ -23,11 +23,11 @@ android:layout_height="wrap_content" android:layout_width="0px" android:layout_weight="1" - android:layout_marginStart="5dp" + android:layout_marginStart="6dp" android:hint="@string/giphy_activity_toolbar__search_gifs_and_stickers" - android:textColor="@color/white" - android:textColorHint="@color/white" - android:textCursorDrawable="@null" + android:textColor="@color/text" + android:textColorHint="@color/text" + android:textCursorDrawable="@drawable/session_edit_text_cursor" android:maxLines="1" android:singleLine="true" android:ellipsize="end" diff --git a/res/layout/giphy_fragment.xml b/res/layout/giphy_fragment.xml index ce14150fa6..b2b435fcf5 100644 --- a/res/layout/giphy_fragment.xml +++ b/res/layout/giphy_fragment.xml @@ -1,27 +1,35 @@ - + + android:id="@+id/giphy_list" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scrollbars="vertical"/> - + - + \ No newline at end of file diff --git a/res/layout/link_preview.xml b/res/layout/link_preview.xml index 9dd308ee10..2f2c27a86f 100644 --- a/res/layout/link_preview.xml +++ b/res/layout/link_preview.xml @@ -8,7 +8,7 @@ android:id="@+id/linkpreview_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="6dp" + android:padding="@dimen/small_spacing" android:background="?linkpreview_background_color"> @@ -82,21 +85,19 @@ app:layout_constraintTop_toTopOf="parent" tools:visibility="visible" /> - + app:layout_constraintTop_toTopOf="parent" /> diff --git a/res/values/colors.xml b/res/values/colors.xml index 3ecef42c72..e26bd5ff2c 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -22,6 +22,8 @@ #0AFFFFFF #1B1B1B #141414 + #222325 + #3F4146 diff --git a/res/values/dimens.xml b/res/values/dimens.xml index d2ca0597f4..a234d14ccf 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -72,15 +72,15 @@ 104dp 69dp - 16dp + 10dp 4dp 2dp 1.5dp - 12dp - 6dp - 6dp + @dimen/medium_spacing + @dimen/medium_spacing + @dimen/small_spacing 32dp - 8dp + @dimen/medium_spacing 24dp 24dp 210dp @@ -101,9 +101,9 @@ 4dp 40dp - 16dp - 16dp - 52dp + @dimen/large_spacing + @dimen/large_spacing + 60dp 8dp 1dp diff --git a/res/values/themes.xml b/res/values/themes.xml index 35f272a55a..8d6f46c42e 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -232,14 +232,14 @@ @drawable/ic_emoji_emoticon_light_20 @drawable/emoji_variation_selector_background_light - @color/core_grey_05 + @color/sent_message_background @color/core_grey_90 @color/core_grey_60 @color/core_grey_60 @color/core_grey_60 #99000000 - @color/core_white - @color/core_white + @color/text + @color/text @color/core_grey_60 @color/core_grey_90 @color/core_grey_60 @@ -368,14 +368,14 @@ #99ffffff - @color/core_grey_75 + @color/sent_message_background @color/core_grey_05 @color/core_grey_25 @color/core_grey_25 @color/core_white #99ffffff - @color/core_grey_05 - @color/core_grey_25 + @color/text + @color/text @drawable/conversation_item_sent_indicator_text_shape_dark @color/core_grey_45 @color/core_grey_25 @@ -447,10 +447,10 @@ @drawable/ic_emoji_emoticon_dark_20 @drawable/emoji_variation_selector_background_dark - @color/core_grey_95 - @color/core_white - @color/core_grey_25 - @color/core_grey_60 + @color/black + @color/text + @color/text + @color/transparent @drawable/quick_camera_dark @drawable/ic_mic_white_24dp diff --git a/src/org/thoughtcrime/securesms/components/DeliveryStatusView.java b/src/org/thoughtcrime/securesms/components/DeliveryStatusView.java index d9965fa154..861281c999 100644 --- a/src/org/thoughtcrime/securesms/components/DeliveryStatusView.java +++ b/src/org/thoughtcrime/securesms/components/DeliveryStatusView.java @@ -2,22 +2,16 @@ package org.thoughtcrime.securesms.components; import android.content.Context; import android.content.res.TypedArray; -import android.graphics.Color; -import android.os.Build; import android.util.AttributeSet; import android.view.View; -import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.TextView; import network.loki.messenger.R; -import pl.tajchert.sample.DotsTextView; - public class DeliveryStatusView extends FrameLayout { private static final String TAG = DeliveryStatusView.class.getSimpleName(); @@ -66,7 +60,7 @@ public class DeliveryStatusView extends FrameLayout { } public void setPending() { - this.setVisibility(View.VISIBLE); + this.setVisibility(View.GONE); pendingIndicator.setVisibility(View.VISIBLE); pendingIndicator.startAnimation(ROTATION_ANIMATION); sentIndicator.setVisibility(View.GONE); @@ -75,7 +69,7 @@ public class DeliveryStatusView extends FrameLayout { } public void setSent() { - this.setVisibility(View.VISIBLE); + this.setVisibility(View.GONE); pendingIndicator.setVisibility(View.GONE); pendingIndicator.clearAnimation(); sentIndicator.setVisibility(View.VISIBLE); @@ -84,7 +78,7 @@ public class DeliveryStatusView extends FrameLayout { } public void setDelivered() { - this.setVisibility(View.VISIBLE); + this.setVisibility(View.GONE); pendingIndicator.setVisibility(View.GONE); pendingIndicator.clearAnimation(); sentIndicator.setVisibility(View.GONE); @@ -93,7 +87,7 @@ public class DeliveryStatusView extends FrameLayout { } public void setRead() { - this.setVisibility(View.VISIBLE); + this.setVisibility(View.GONE); pendingIndicator.setVisibility(View.GONE); pendingIndicator.clearAnimation(); sentIndicator.setVisibility(View.GONE); diff --git a/src/org/thoughtcrime/securesms/components/InputPanel.java b/src/org/thoughtcrime/securesms/components/InputPanel.java index 06c2b3d970..7e51d9ea14 100644 --- a/src/org/thoughtcrime/securesms/components/InputPanel.java +++ b/src/org/thoughtcrime/securesms/components/InputPanel.java @@ -192,8 +192,8 @@ public class InputPanel extends LinearLayout this.linkPreview.setVisibility(View.GONE); } - int cornerRadius = quoteView.getVisibility() == VISIBLE ? readDimen(R.dimen.message_corner_collapse_radius) - : readDimen(R.dimen.message_corner_radius); + int largeCornerRadius = (int)(16 * getResources().getDisplayMetrics().density); + int cornerRadius = quoteView.getVisibility() == VISIBLE ? readDimen(R.dimen.message_corner_collapse_radius) : largeCornerRadius; this.linkPreview.setCorners(cornerRadius, cornerRadius); } diff --git a/src/org/thoughtcrime/securesms/components/LinkPreviewView.java b/src/org/thoughtcrime/securesms/components/LinkPreviewView.java index 370728fb9a..bbfdbecfb2 100644 --- a/src/org/thoughtcrime/securesms/components/LinkPreviewView.java +++ b/src/org/thoughtcrime/securesms/components/LinkPreviewView.java @@ -16,7 +16,6 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.mms.GlideRequests; import org.thoughtcrime.securesms.mms.ImageSlide; import org.thoughtcrime.securesms.mms.SlidesClickedListener; -import org.thoughtcrime.securesms.util.ThemeUtil; import network.loki.messenger.R; import okhttp3.HttpUrl; @@ -64,7 +63,7 @@ public class LinkPreviewView extends FrameLayout { cornerMask = new CornerMask(this); outliner = new Outliner(); - outliner.setColor(ThemeUtil.getThemedColor(getContext(), R.attr.conversation_item_image_outline_color)); + outliner.setColor(getResources().getColor(R.color.transparent)); if (attrs != null) { TypedArray typedArray = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.LinkPreviewView, 0, 0); diff --git a/src/org/thoughtcrime/securesms/components/OutlinedThumbnailView.java b/src/org/thoughtcrime/securesms/components/OutlinedThumbnailView.java index f5b60fd0e8..4f99c461a9 100644 --- a/src/org/thoughtcrime/securesms/components/OutlinedThumbnailView.java +++ b/src/org/thoughtcrime/securesms/components/OutlinedThumbnailView.java @@ -1,45 +1,12 @@ package org.thoughtcrime.securesms.components; import android.content.Context; -import android.content.res.TypedArray; import android.graphics.Canvas; -import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.UiThread; import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.ImageView; -import com.bumptech.glide.RequestBuilder; -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; -import com.bumptech.glide.load.resource.bitmap.CenterCrop; -import com.bumptech.glide.load.resource.bitmap.FitCenter; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.bumptech.glide.request.RequestOptions; - -import network.loki.messenger.R; -import org.thoughtcrime.securesms.database.AttachmentDatabase; -import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri; -import org.thoughtcrime.securesms.mms.GlideRequest; -import org.thoughtcrime.securesms.mms.GlideRequests; -import org.thoughtcrime.securesms.mms.Slide; -import org.thoughtcrime.securesms.mms.SlideClickListener; -import org.thoughtcrime.securesms.mms.SlidesClickedListener; import org.thoughtcrime.securesms.util.ThemeUtil; -import org.thoughtcrime.securesms.util.Util; -import org.thoughtcrime.securesms.util.ViewUtil; -import org.thoughtcrime.securesms.util.concurrent.ListenableFuture; -import org.thoughtcrime.securesms.util.concurrent.SettableFuture; -import org.whispersystems.libsignal.util.guava.Optional; -import java.util.Collections; -import java.util.Locale; - -import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade; +import network.loki.messenger.R; public class OutlinedThumbnailView extends ThumbnailView { diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 99cda5cd83..40c7a84150 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -2924,7 +2924,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity @Override public void onMessageActionToolbarOpened() { - searchViewItem.collapseActionView(); + // searchViewItem.collapseActionView(); } @Override diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationItem.java b/src/org/thoughtcrime/securesms/conversation/ConversationItem.java index ecf0e5952c..55f94eb5f0 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -60,7 +60,6 @@ import org.thoughtcrime.securesms.MessageDetailsActivity; import org.thoughtcrime.securesms.attachments.DatabaseAttachment; import org.thoughtcrime.securesms.components.AlertView; import org.thoughtcrime.securesms.components.AudioView; -import org.thoughtcrime.securesms.components.AvatarImageView; import org.thoughtcrime.securesms.components.ConversationItemFooter; import org.thoughtcrime.securesms.components.ConversationItemThumbnail; import org.thoughtcrime.securesms.components.DocumentView; @@ -87,10 +86,11 @@ import org.thoughtcrime.securesms.jobs.SmsSendJob; import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.loki.redesign.views.FriendRequestView; -import org.thoughtcrime.securesms.loki.redesign.views.FriendRequestViewDelegate; import org.thoughtcrime.securesms.loki.LokiMessageDatabase; import org.thoughtcrime.securesms.loki.MentionUtilities; +import org.thoughtcrime.securesms.loki.redesign.views.FriendRequestView; +import org.thoughtcrime.securesms.loki.redesign.views.FriendRequestViewDelegate; +import org.thoughtcrime.securesms.loki.redesign.views.ProfilePictureView; import org.thoughtcrime.securesms.mms.GlideRequests; import org.thoughtcrime.securesms.mms.ImageSlide; import org.thoughtcrime.securesms.mms.PartAuthority; @@ -154,7 +154,7 @@ public class ConversationItem extends LinearLayout private TextView groupSender; private TextView groupSenderProfileName; private View groupSenderHolder; - private AvatarImageView contactPhoto; + private ProfilePictureView profilePictureView; private ImageView moderatorIconImageView; private ViewGroup contactPhotoHolder; private AlertView alertView; @@ -211,7 +211,7 @@ public class ConversationItem extends LinearLayout this.groupSender = findViewById(R.id.group_message_sender); this.groupSenderProfileName = findViewById(R.id.group_message_sender_profile); this.alertView = findViewById(R.id.indicators_parent); - this.contactPhoto = findViewById(R.id.contact_photo); + this.profilePictureView = findViewById(R.id.profilePictureView); this.moderatorIconImageView = findViewById(R.id.moderator_icon_image_view); this.contactPhotoHolder = findViewById(R.id.contact_photo_container); this.bodyBubble = findViewById(R.id.body_bubble); @@ -356,9 +356,9 @@ public class ConversationItem extends LinearLayout private void setBubbleState(MessageRecord messageRecord) { if (messageRecord.isOutgoing()) { - bodyBubble.getBackground().setColorFilter(defaultBubbleColor, PorterDuff.Mode.MULTIPLY); + bodyBubble.getBackground().setColorFilter(getResources().getColor(R.color.sent_message_background), PorterDuff.Mode.MULTIPLY); } else { - bodyBubble.getBackground().setColorFilter(messageRecord.getRecipient().getColor().toConversationColor(context), PorterDuff.Mode.MULTIPLY); + bodyBubble.getBackground().setColorFilter(getResources().getColor(R.color.received_message_background), PorterDuff.Mode.MULTIPLY); } if (audioViewStub.resolved()) { @@ -745,13 +745,16 @@ public class ConversationItem extends LinearLayout private void setContactPhoto(@NonNull Recipient recipient) { LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)bodyBubble.getLayoutParams(); - float scale = getResources().getDisplayMetrics().density; - float marginInDP = groupThread ? 44 : 8; - int marginInPX = Math.round(marginInDP * scale); - layoutParams.setMarginStart(marginInPX); + int groupThreadMargin = (int)(getResources().getDimension(R.dimen.large_spacing) + getResources().getDimension(R.dimen.small_profile_picture_size)); + int defaultMargin = 0; + layoutParams.setMarginStart(groupThread ? groupThreadMargin : defaultMargin); bodyBubble.setLayoutParams(layoutParams); - if (contactPhoto == null) return; - contactPhoto.setAvatar(glideRequests, recipient, true); + if (profilePictureView == null) return; + profilePictureView.setHexEncodedPublicKey(recipient.getAddress().toString()); + profilePictureView.setAdditionalHexEncodedPublicKey(null); + profilePictureView.setRSSFeed(false); + profilePictureView.setGlide(glideRequests); + profilePictureView.update(); } private SpannableString linkifyMessageBody(SpannableString messageBody, boolean shouldLinkifyAllLinks) { @@ -936,7 +939,7 @@ public class ConversationItem extends LinearLayout } if (!next.isPresent() || next.get().isUpdate() || !current.getRecipient().getAddress().equals(next.get().getRecipient().getAddress())) { - contactPhoto.setVisibility(VISIBLE); + profilePictureView.setVisibility(VISIBLE); int visibility = View.GONE; LokiPublicChat publicChat = DatabaseFactory.getLokiThreadDatabase(context).getPublicChat(messageRecord.getThreadId()); @@ -947,7 +950,7 @@ public class ConversationItem extends LinearLayout moderatorIconImageView.setVisibility(visibility); } else { - contactPhoto.setVisibility(GONE); + profilePictureView.setVisibility(GONE); moderatorIconImageView.setVisibility(GONE); } @@ -964,17 +967,13 @@ public class ConversationItem extends LinearLayout private void setMessageShape(@NonNull MessageRecord current, @NonNull Optional previous, @NonNull Optional next, boolean isGroupThread) { int background; if (isSingularMessage(current, previous, next, isGroupThread)) { - background = current.isOutgoing() ? R.drawable.message_bubble_background_sent_alone - : R.drawable.message_bubble_background_received_alone; + background = current.isOutgoing() ? R.drawable.message_bubble_background_sent_alone : R.drawable.message_bubble_background_received_alone; } else if (isStartOfMessageCluster(current, previous, isGroupThread)) { - background = current.isOutgoing() ? R.drawable.message_bubble_background_sent_start - : R.drawable.message_bubble_background_received_start; + background = current.isOutgoing() ? R.drawable.message_bubble_background_sent_start : R.drawable.message_bubble_background_received_start; } else if (isEndOfMessageCluster(current, next, isGroupThread)) { - background = current.isOutgoing() ? R.drawable.message_bubble_background_sent_end - : R.drawable.message_bubble_background_received_end; + background = current.isOutgoing() ? R.drawable.message_bubble_background_sent_end : R.drawable.message_bubble_background_received_end; } else { - background = current.isOutgoing() ? R.drawable.message_bubble_background_sent_middle - : R.drawable.message_bubble_background_received_middle; + background = current.isOutgoing() ? R.drawable.message_bubble_background_sent_middle : R.drawable.message_bubble_background_received_middle; } bodyBubble.setBackgroundResource(background); diff --git a/src/org/thoughtcrime/securesms/giph/ui/GiphyFragment.java b/src/org/thoughtcrime/securesms/giph/ui/GiphyFragment.java index 6deed35656..793a06c498 100644 --- a/src/org/thoughtcrime/securesms/giph/ui/GiphyFragment.java +++ b/src/org/thoughtcrime/securesms/giph/ui/GiphyFragment.java @@ -14,10 +14,8 @@ import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ProgressBar; import android.widget.TextView; -import network.loki.messenger.R; import org.thoughtcrime.securesms.giph.model.GiphyImage; import org.thoughtcrime.securesms.giph.net.GiphyLoader; import org.thoughtcrime.securesms.giph.util.InfiniteScrollListener; @@ -28,13 +26,15 @@ import org.thoughtcrime.securesms.util.ViewUtil; import java.util.LinkedList; import java.util.List; +import network.loki.messenger.R; + public abstract class GiphyFragment extends Fragment implements LoaderManager.LoaderCallbacks>, GiphyAdapter.OnItemClickListener { private static final String TAG = GiphyFragment.class.getSimpleName(); private GiphyAdapter giphyAdapter; private RecyclerView recyclerView; - private ProgressBar loadingProgress; + private View loadingProgress; private TextView noResultsView; private GiphyAdapter.OnItemClickListener listener;