diff --git a/briar-android/build.gradle b/briar-android/build.gradle index 0b39ba153..1bb45a77c 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -21,7 +21,7 @@ dependencies { } implementation "com.android.support:cardview-v7:$supportVersion" implementation "com.android.support:support-annotations:$supportVersion" - implementation 'com.android.support.constraint:constraint-layout:1.1.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation('ch.acra:acra:4.9.1') { exclude module: 'support-v4' @@ -153,8 +153,9 @@ task verifyTranslations { lc.children().each { value -> translations.add(value.text()) } def folders = ["default", "en-US"] + def exceptions = ["values-night", "values-v21", "values-ldrtl"] project.file("src/main/res").eachDir { dir -> - if (dir.name.startsWith("values-") && !dir.name.endsWith("night") && !dir.name.endsWith("v21")) { + if (dir.name.startsWith("values-") && !exceptions.contains(dir.name)) { folders.add(dir.name.substring(7).replace("-r", "-")) } } diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index b1b7c239f..a56f47021 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -26,6 +26,7 @@ android:icon="@mipmap/ic_launcher_round" android:label="@string/app_name" android:logo="@mipmap/ic_launcher_round" + android:supportsRtl="true" android:theme="@style/BriarTheme"> this.layoutManager = layoutManager; } + @NonNull @Override - public BaseThreadItemViewHolder onCreateViewHolder( + public BaseThreadItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_item_thread, parent, false); @@ -45,7 +47,8 @@ public class ThreadItemAdapter } @Override - public void onBindViewHolder(BaseThreadItemViewHolder ui, int position) { + public void onBindViewHolder(@NonNull BaseThreadItemViewHolder ui, + int position) { I item = items.get(position); ui.bind(item, listener); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java index cbb3cc8d0..fa766baa4 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java @@ -5,11 +5,10 @@ import android.content.res.TypedArray; import android.graphics.Typeface; import android.support.annotation.DimenRes; import android.support.annotation.UiThread; +import android.support.constraint.ConstraintLayout; import android.util.AttributeSet; import android.view.LayoutInflater; -import android.view.View; import android.widget.ImageView; -import android.widget.RelativeLayout; import android.widget.TextView; import org.briarproject.bramble.api.identity.Author; @@ -30,7 +29,7 @@ import static org.briarproject.bramble.api.identity.Author.Status.OURSELVES; import static org.briarproject.briar.android.util.UiUtils.resolveAttribute; @UiThread -public class AuthorView extends RelativeLayout { +public class AuthorView extends ConstraintLayout { public static final int NORMAL = 0; public static final int REBLOGGER = 1; @@ -133,32 +132,24 @@ public class AuthorView extends RelativeLayout { date.setVisibility(VISIBLE); setAvatarSize(R.dimen.blogs_avatar_normal_size); setTextSize(authorName, R.dimen.text_size_small); - setCenterVertical(authorName, false); - setCenterVertical(trustIndicator, false); break; case REBLOGGER: avatarIcon.setVisibility(VISIBLE); date.setVisibility(VISIBLE); setAvatarSize(R.dimen.blogs_avatar_normal_size); setTextSize(authorName, R.dimen.text_size_small); - setCenterVertical(authorName, false); - setCenterVertical(trustIndicator, false); break; case COMMENTER: avatarIcon.setVisibility(INVISIBLE); date.setVisibility(VISIBLE); setAvatarSize(R.dimen.blogs_avatar_comment_size); setTextSize(authorName, R.dimen.text_size_tiny); - setCenterVertical(authorName, false); - setCenterVertical(trustIndicator, false); break; case LIST: avatarIcon.setVisibility(INVISIBLE); date.setVisibility(GONE); setAvatarSize(R.dimen.listitem_picture_size_small); setTextSize(authorName, R.dimen.text_size_medium); - setCenterVertical(authorName, true); - setCenterVertical(trustIndicator, true); break; case RSS_FEED: avatarIcon.setVisibility(INVISIBLE); @@ -166,8 +157,6 @@ public class AuthorView extends RelativeLayout { avatar.setImageResource(R.drawable.ic_rss_feed); setAvatarSize(R.dimen.blogs_avatar_normal_size); setTextSize(authorName, R.dimen.text_size_small); - setCenterVertical(authorName, false); - setCenterVertical(trustIndicator, false); break; case RSS_FEED_REBLOGGED: avatarIcon.setVisibility(INVISIBLE); @@ -175,8 +164,6 @@ public class AuthorView extends RelativeLayout { avatar.setImageResource(R.drawable.ic_rss_feed); setAvatarSize(R.dimen.blogs_avatar_comment_size); setTextSize(authorName, R.dimen.text_size_tiny); - setCenterVertical(authorName, false); - setCenterVertical(trustIndicator, false); break; } } @@ -194,10 +181,4 @@ public class AuthorView extends RelativeLayout { v.setTextSize(COMPLEX_UNIT_PX, textSize); } - private void setCenterVertical(View v, boolean center) { - LayoutParams params = (LayoutParams) v.getLayoutParams(); - params.addRule(CENTER_VERTICAL, center ? RelativeLayout.TRUE : 0); - v.setLayoutParams(params); - } - } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/QrCodeView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/QrCodeView.java index 32b695622..37a9f206a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/QrCodeView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/QrCodeView.java @@ -19,8 +19,7 @@ public class QrCodeView extends FrameLayout { private boolean fullscreen = false; private FullscreenListener listener; - public QrCodeView(@NonNull Context context, - @Nullable AttributeSet attrs) { + public QrCodeView(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/TextAvatarView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/TextAvatarView.java index b06ba5419..979844796 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/TextAvatarView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/TextAvatarView.java @@ -3,7 +3,6 @@ package org.briarproject.briar.android.view; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; import android.support.annotation.UiThread; import android.support.v7.widget.AppCompatTextView; import android.util.AttributeSet; @@ -11,13 +10,11 @@ import android.view.LayoutInflater; import android.widget.FrameLayout; import android.widget.TextView; -import org.briarproject.bramble.api.identity.Author; import org.briarproject.briar.R; import javax.annotation.Nullable; import de.hdodenhof.circleimageview.CircleImageView; -import im.delight.android.identicons.IdenticonDrawable; @UiThread public class TextAvatarView extends FrameLayout { @@ -35,7 +32,6 @@ public class TextAvatarView extends FrameLayout { character = findViewById(R.id.textAvatarView); background = findViewById(R.id.avatarBackground); badge = findViewById(R.id.unreadCountView); - badge.setVisibility(INVISIBLE); } public TextAvatarView(Context context) { @@ -72,10 +68,4 @@ public class TextAvatarView extends FrameLayout { } } - public void setAuthorAvatar(Author author) { - Drawable drawable = new IdenticonDrawable(author.getId().getBytes()); - background.setImageDrawable(drawable); - character.setVisibility(GONE); - } - } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/TextInputView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/TextInputView.java index 0733fb4a0..638db9af9 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/TextInputView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/TextInputView.java @@ -61,9 +61,11 @@ public class TextInputView extends KeyboardAwareLinearLayout { public TextInputView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - BriarApplication app = - (BriarApplication) context.getApplicationContext(); - app.getApplicationComponent().inject(this); + if (!isInEditMode()) { + BriarApplication app = + (BriarApplication) context.getApplicationContext(); + app.getApplicationComponent().inject(this); + } setOrientation(VERTICAL); setLayoutTransition(new LayoutTransition()); inflateLayout(context); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/UnreadMessageButton.java b/briar-android/src/main/java/org/briarproject/briar/android/view/UnreadMessageButton.java index ae19023dd..c2a59639b 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/UnreadMessageButton.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/UnreadMessageButton.java @@ -49,7 +49,7 @@ public class UnreadMessageButton extends FrameLayout { setDirection(direction); attributes.recycle(); - setUnreadCount(0); + if (!isInEditMode()) setUnreadCount(0); } private void setDirection(int direction) { @@ -64,11 +64,11 @@ public class UnreadMessageButton extends FrameLayout { public void setUnreadCount(int count) { if (count == 0) { - setVisibility(INVISIBLE); + fab.hide(); + unread.setVisibility(INVISIBLE); } else { - // FIXME: Use animations when upgrading to support library 24.2.0 - // https://code.google.com/p/android/issues/detail?id=216469 - setVisibility(VISIBLE); + fab.show(); + unread.setVisibility(VISIBLE); unread.setText(String.valueOf(count)); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/widget/LinkDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/widget/LinkDialogFragment.java index 5889294db..3a73e91ca 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/widget/LinkDialogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/widget/LinkDialogFragment.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; @@ -42,8 +43,8 @@ public class LinkDialogFragment extends DialogFragment { } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_link_dialog, container, false); diff --git a/briar-android/src/main/res/drawable/level_indicator_circle.xml b/briar-android/src/main/res/drawable/level_indicator_circle.xml index 4b4869111..3fa8ee54e 100644 --- a/briar-android/src/main/res/drawable/level_indicator_circle.xml +++ b/briar-android/src/main/res/drawable/level_indicator_circle.xml @@ -3,9 +3,9 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> - + \ No newline at end of file diff --git a/briar-android/src/main/res/drawable/message_delivered.xml b/briar-android/src/main/res/drawable/message_delivered.xml index 885356268..c8cbedd5b 100644 --- a/briar-android/src/main/res/drawable/message_delivered.xml +++ b/briar-android/src/main/res/drawable/message_delivered.xml @@ -1,8 +1,10 @@ - + diff --git a/briar-android/src/main/res/drawable/message_delivered_white.xml b/briar-android/src/main/res/drawable/message_delivered_white.xml index 720dab1f7..72ae1f631 100644 --- a/briar-android/src/main/res/drawable/message_delivered_white.xml +++ b/briar-android/src/main/res/drawable/message_delivered_white.xml @@ -1,5 +1,11 @@ - - + + diff --git a/briar-android/src/main/res/drawable/message_sent.xml b/briar-android/src/main/res/drawable/message_sent.xml index a205b178d..b3c045afa 100644 --- a/briar-android/src/main/res/drawable/message_sent.xml +++ b/briar-android/src/main/res/drawable/message_sent.xml @@ -1,8 +1,10 @@ - + diff --git a/briar-android/src/main/res/drawable/message_sent_white.xml b/briar-android/src/main/res/drawable/message_sent_white.xml index 59e6d6d1d..33ec48f0c 100644 --- a/briar-android/src/main/res/drawable/message_sent_white.xml +++ b/briar-android/src/main/res/drawable/message_sent_white.xml @@ -1,5 +1,11 @@ - - + + diff --git a/briar-android/src/main/res/drawable/msg_in.xml b/briar-android/src/main/res/drawable/msg_in.xml index 14b8d7d83..b0a822b8c 100644 --- a/briar-android/src/main/res/drawable/msg_in.xml +++ b/briar-android/src/main/res/drawable/msg_in.xml @@ -5,8 +5,8 @@ + android:topLeftRadius="@dimen/message_bubble_radius_top_inner" + android:topRightRadius="@dimen/message_bubble_radius_top_outer"/> + android:topLeftRadius="@dimen/message_bubble_radius_top_inner" + android:topRightRadius="@dimen/message_bubble_radius_top_outer"/> + android:topLeftRadius="@dimen/message_bubble_radius_top_outer" + android:topRightRadius="@dimen/message_bubble_radius_top_inner"/> + android:topLeftRadius="@dimen/message_bubble_radius_top_outer" + android:topRightRadius="@dimen/message_bubble_radius_top_inner"/> + android:topLeftRadius="@dimen/message_bubble_radius_top_inner" + android:topRightRadius="@dimen/message_bubble_radius_top_outer"/> + android:topLeftRadius="@dimen/message_bubble_radius_top_outer" + android:topRightRadius="@dimen/message_bubble_radius_top_inner"/> + app:layout_constraintTop_toTopOf="parent" + tools:ignore="ContentDescription"/> - + android:visibility="invisible" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toBottomOf="@id/new_password_confirm_wrapper"/>