diff --git a/briar-android/res/layout/author_view.xml b/briar-android/res/layout/author_view.xml index 48892daf258b52dd9e311e73a24787f743d1d928..6f389e1de237bb90a63e5ca5c5d3a4cfd779b92e 100644 --- a/briar-android/res/layout/author_view.xml +++ b/briar-android/res/layout/author_view.xml @@ -9,7 +9,7 @@ style="@style/BriarAvatar" android:layout_width="@dimen/blogs_avatar_normal_size" android:layout_height="@dimen/blogs_avatar_normal_size" - android:layout_centerVertical="true" + android:layout_alignTop="@+id/authorName" android:layout_marginRight="@dimen/margin_medium" tools:src="@drawable/ic_launcher"/> @@ -30,7 +30,6 @@ android:id="@+id/authorName" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignTop="@+id/avatar" android:layout_toEndOf="@+id/avatar" android:layout_toRightOf="@+id/avatar" android:textColor="@color/briar_text_primary" diff --git a/briar-android/res/layout/list_item_group_join_notice.xml b/briar-android/res/layout/list_item_group_join_notice.xml index 82796cd56c03998332501fa3fb567eea38b1d405..71d6ceec17f6c855a735bc59b39948a860e146f3 100644 --- a/briar-android/res/layout/list_item_group_join_notice.xml +++ b/briar-android/res/layout/list_item_group_join_notice.xml @@ -21,7 +21,6 @@ android:layout_height="wrap_content" android:layout_below="@+id/top_divider" android:layout_marginBottom="@dimen/margin_small" - android:layout_marginLeft="@dimen/margin_medium" android:layout_marginRight="@dimen/margin_medium" android:layout_marginTop="@dimen/margin_medium" android:textColor="@color/briar_text_secondary" @@ -46,34 +45,34 @@ android:layout_alignEnd="@+id/text" android:layout_alignRight="@+id/text" android:layout_below="@+id/text" - android:layout_marginBottom="@dimen/margin_small" android:layout_toRightOf="@+id/icon" android:gravity="center_vertical" + android:minHeight="24dp" android:textColor="@color/briar_text_secondary" android:textIsSelectable="true" - android:textSize="@dimen/text_size_small" + android:textSize="@dimen/text_size_tiny" android:textStyle="italic" tools:text="@string/groups_reveal_visible_revealed_by_contact"/> <org.briarproject.android.view.AuthorView android:id="@+id/author" android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_height="@dimen/button_size" android:layout_alignLeft="@+id/text" android:layout_below="@+id/info" - android:paddingBottom="@dimen/margin_medium" + android:gravity="center" app:persona="commenter"/> <Button android:id="@+id/optionsButton" - style="@style/BriarButtonFlat.Positive" + style="@style/BriarButtonFlat.Positive.Tiny" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignBottom="@+id/author" android:layout_alignEnd="@+id/text" android:layout_alignRight="@+id/text" + android:layout_alignTop="@+id/author" android:layout_toRightOf="@+id/author" - android:gravity="right" + android:gravity="right|center_vertical" android:text="@string/options"/> </RelativeLayout> diff --git a/briar-android/res/layout/list_item_thread.xml b/briar-android/res/layout/list_item_thread.xml index 002cc36cf975389086334cc6dfdcb4236f1958fb..3757cc7e7c9e3335e095ef62a2ad709d906b6487 100644 --- a/briar-android/res/layout/list_item_thread.xml +++ b/briar-android/res/layout/list_item_thread.xml @@ -6,8 +6,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal" - android:baselineAligned="false"> + android:baselineAligned="false" + android:orientation="horizontal"> <RelativeLayout android:layout_width="wrap_content" @@ -70,64 +70,64 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/margin_medium" - android:layout_marginBottom="@dimen/margin_medium" android:layout_weight="1"> <org.thoughtcrime.securesms.components.emoji.EmojiTextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="@dimen/margin_medium" + android:paddingRight="@dimen/margin_medium" + android:paddingTop="@dimen/margin_medium" + android:textColor="@color/briar_text_primary" android:textIsSelectable="true" android:textSize="@dimen/text_size_medium" - android:textColor="@color/briar_text_primary" tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."/> <org.briarproject.android.view.AuthorView android:id="@+id/author" android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_height="@dimen/button_size" android:layout_alignLeft="@id/text" android:layout_below="@id/text" + android:gravity="center" app:persona="commenter"/> - <ImageView - android:id="@+id/chevron" + <TextView + android:id="@+id/replies" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentRight="true" - android:layout_below="@id/text" - android:layout_marginRight="@dimen/margin_medium" - android:layout_marginTop="@dimen/margin_small" - android:clickable="true" - android:src="@drawable/selector_chevron"/> + android:layout_alignBottom="@+id/author" + android:layout_alignTop="@+id/author" + android:layout_toLeftOf="@+id/btn_reply" + android:layout_toRightOf="@+id/author" + android:ellipsize="end" + android:gravity="right|end|center_vertical" + android:maxLines="1" + android:padding="@dimen/margin_medium" + android:textSize="@dimen/text_size_tiny" + tools:text="2 replies"/> <TextView android:id="@+id/btn_reply" + style="@style/BriarButtonFlat.Positive.Tiny" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_below="@id/text" - android:layout_marginRight="@dimen/margin_medium" - android:layout_toLeftOf="@id/chevron" - android:background="?attr/selectableItemBackground" - android:clickable="true" - android:padding="@dimen/margin_medium" + android:layout_alignBottom="@+id/author" + android:layout_toLeftOf="@+id/chevron" android:text="@string/btn_reply" - android:textColor="@color/briar_button_positive" android:textSize="@dimen/text_size_tiny"/> - <TextView - android:id="@+id/replies" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignBaseline="@id/btn_reply" - android:layout_toLeftOf="@id/btn_reply" - android:layout_toRightOf="@+id/author" - android:gravity="right|end" - android:maxLines="1" + <ImageView + android:id="@+id/chevron" + android:layout_width="@dimen/button_size" + android:layout_height="@dimen/button_size" + android:layout_alignBottom="@+id/author" + android:layout_alignParentRight="true" + android:background="?attr/selectableItemBackground" + android:clickable="true" android:padding="@dimen/margin_medium" - android:textSize="@dimen/text_size_tiny" - tools:text="2 replies"/> + android:scaleType="center" + android:src="@drawable/selector_chevron"/> <View android:id="@+id/top_divider" diff --git a/briar-android/res/values/dimens.xml b/briar-android/res/values/dimens.xml index fc0531ab66293a47c0cc211e5d13da23d2589661..6662acfe4927fed5d6ce40d868c4d6ad15299ef3 100644 --- a/briar-android/res/values/dimens.xml +++ b/briar-android/res/values/dimens.xml @@ -31,6 +31,7 @@ <dimen name="avatar_forum_size">48dp</dimen> <dimen name="avatar_border_width">2dp</dimen> <dimen name="avatar_text_size">30sp</dimen> + <dimen name="button_size">48dp</dimen> <dimen name="unread_bubble_text_size">12sp</dimen> <dimen name="unread_bubble_padding_horizontal">6dp</dimen> diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml index cfee02750fb9751151ce1fe0a4ee7ed5dcf180db..3dbbb17a0eb36f71837289387329d1a7b6734ccc 100644 --- a/briar-android/res/values/strings.xml +++ b/briar-android/res/values/strings.xml @@ -224,7 +224,7 @@ <string name="forum_new_entry_received">New forum entry</string> <string name="forum_new_message_hint">New Entry</string> <string name="forum_message_reply_hint">New Reply</string> - <string name="btn_reply">REPLY</string> + <string name="btn_reply">Reply</string> <plurals name="message_replies"> <item quantity="one">%1$d reply</item> <item quantity="other">%1$d replies</item> diff --git a/briar-android/res/values/styles.xml b/briar-android/res/values/styles.xml index 71b6c910cecab6412a25ae372a47a5c8eb120c4f..0896e6e6b327e8f68ab6b30593b81ce03cad8a2c 100644 --- a/briar-android/res/values/styles.xml +++ b/briar-android/res/values/styles.xml @@ -45,6 +45,12 @@ <item name="android:padding">@dimen/margin_large</item> </style> + <style name="BriarButtonFlat.Positive.Tiny" parent="BriarButtonFlat.Positive"> + <item name="android:textSize">@dimen/text_size_tiny</item> + <item name="android:padding">@dimen/margin_medium</item> + <item name="android:minWidth">@dimen/button_size</item> + </style> + <style name="BriarTextTitle"> <item name="android:textSize">@dimen/text_size_medium</item> <item name="android:textColor">@android:color/primary_text_light</item> diff --git a/briar-android/src/org/briarproject/android/privategroup/VisibilityStringProvider.java b/briar-android/src/org/briarproject/android/privategroup/VisibilityStringProvider.java index 99ee2fceb88e77c12ee79533646d20211fd2dc1f..0cd7e0dc7077855516a57ac9d6425d873669914e 100644 --- a/briar-android/src/org/briarproject/android/privategroup/VisibilityStringProvider.java +++ b/briar-android/src/org/briarproject/android/privategroup/VisibilityStringProvider.java @@ -8,7 +8,7 @@ import org.briarproject.api.privategroup.Visibility; public class VisibilityStringProvider { @StringRes - public static int getVisibilityString(Visibility v) { + public static int getVisibilityStringId(Visibility v) { switch (v) { case VISIBLE: return R.string.groups_reveal_visible; diff --git a/briar-android/src/org/briarproject/android/privategroup/conversation/GroupActivity.java b/briar-android/src/org/briarproject/android/privategroup/conversation/GroupActivity.java index ce1d1c3c289289b5edebf47902a40dec624fe000..438c061120faaa8a4549eb8e31ed4fd3abe90318 100644 --- a/briar-android/src/org/briarproject/android/privategroup/conversation/GroupActivity.java +++ b/briar-android/src/org/briarproject/android/privategroup/conversation/GroupActivity.java @@ -44,7 +44,7 @@ import static org.briarproject.api.privategroup.PrivateGroupConstants.MAX_GROUP_ @MethodsNotNullByDefault @ParametersNotNullByDefault public class GroupActivity extends - ThreadListActivity<PrivateGroup, GroupMessageAdapter<GroupMessageItem>, GroupMessageItem, GroupMessageHeader> + ThreadListActivity<PrivateGroup, GroupMessageAdapter, GroupMessageItem, GroupMessageHeader> implements GroupListener, OnClickListener { private final static int REQUEST_INVITE = 2; @@ -85,9 +85,9 @@ public class GroupActivity extends } @Override - protected GroupMessageAdapter<GroupMessageItem> createAdapter( + protected GroupMessageAdapter createAdapter( LinearLayoutManager layoutManager) { - return new GroupMessageAdapter<>(this, layoutManager); + return new GroupMessageAdapter(this, layoutManager); } @Override diff --git a/briar-android/src/org/briarproject/android/privategroup/conversation/GroupMessageAdapter.java b/briar-android/src/org/briarproject/android/privategroup/conversation/GroupMessageAdapter.java index 3400c9315a16abeab6241adf9164664315153d44..4c94438e0739060fa29bed3fc38e24e960836001 100644 --- a/briar-android/src/org/briarproject/android/privategroup/conversation/GroupMessageAdapter.java +++ b/briar-android/src/org/briarproject/android/privategroup/conversation/GroupMessageAdapter.java @@ -19,12 +19,11 @@ import static android.support.v7.widget.RecyclerView.NO_POSITION; @UiThread @NotNullByDefault -public class GroupMessageAdapter<I extends GroupMessageItem> - extends ThreadItemAdapter<I> { +class GroupMessageAdapter extends ThreadItemAdapter<GroupMessageItem> { private boolean isCreator = false; - public GroupMessageAdapter(ThreadItemListener<I> listener, + public GroupMessageAdapter(ThreadItemListener<GroupMessageItem> listener, LinearLayoutManager layoutManager) { super(listener, layoutManager); } @@ -38,13 +37,12 @@ public class GroupMessageAdapter<I extends GroupMessageItem> } @Override - public BaseThreadItemViewHolder<I> onCreateViewHolder( + public BaseThreadItemViewHolder<GroupMessageItem> onCreateViewHolder( ViewGroup parent, int type) { View v = LayoutInflater.from(parent.getContext()) .inflate(type, parent, false); if (type == R.layout.list_item_group_join_notice) { - return (BaseThreadItemViewHolder<I>) - new JoinMessageItemViewHolder(v, isCreator); + return new JoinMessageItemViewHolder(v, isCreator); } return new ThreadPostViewHolder<>(v); } @@ -60,7 +58,7 @@ public class GroupMessageAdapter<I extends GroupMessageItem> GroupMessageItem item = items.get(position); if (item instanceof JoinMessageItem) { ((JoinMessageItem) item).setVisibility(v); - notifyItemChanged(position, item); + notifyItemChanged(getVisiblePos(item), item); } } } @@ -68,7 +66,7 @@ public class GroupMessageAdapter<I extends GroupMessageItem> private int findItemPosition(AuthorId a) { int count = items.size(); for (int i = 0; i < count; i++) { - I item = items.get(i); + GroupMessageItem item = items.get(i); if (item.getAuthor().getId().equals(a)) return i; } diff --git a/briar-android/src/org/briarproject/android/privategroup/conversation/JoinMessageItem.java b/briar-android/src/org/briarproject/android/privategroup/conversation/JoinMessageItem.java index 4e5bf703038a5f929bba464e321706da6d59df31..c48f781a086605c1ce92e1ef5077d5bd4e3484a8 100644 --- a/briar-android/src/org/briarproject/android/privategroup/conversation/JoinMessageItem.java +++ b/briar-android/src/org/briarproject/android/privategroup/conversation/JoinMessageItem.java @@ -16,8 +16,7 @@ class JoinMessageItem extends GroupMessageItem { private Visibility visibility; private final boolean isInitial; - JoinMessageItem(JoinMessageHeader h, - String text) { + JoinMessageItem(JoinMessageHeader h, String text) { super(h, text); this.visibility = h.getVisibility(); this.isInitial = h.isInitial(); diff --git a/briar-android/src/org/briarproject/android/privategroup/conversation/JoinMessageItemViewHolder.java b/briar-android/src/org/briarproject/android/privategroup/conversation/JoinMessageItemViewHolder.java index a71103be74468627d27355c1d36c9d5d04fa449b..d8705c8b949bfaedd584274499fe70b1dbca1dc0 100644 --- a/briar-android/src/org/briarproject/android/privategroup/conversation/JoinMessageItemViewHolder.java +++ b/briar-android/src/org/briarproject/android/privategroup/conversation/JoinMessageItemViewHolder.java @@ -16,15 +16,15 @@ import org.briarproject.android.threaded.ThreadItemAdapter.ThreadItemListener; import org.briarproject.api.nullsafety.NotNullByDefault; import static org.briarproject.android.BriarActivity.GROUP_ID; -import static org.briarproject.android.privategroup.VisibilityStringProvider.getVisibilityString; +import static org.briarproject.android.privategroup.VisibilityStringProvider.getVisibilityStringId; import static org.briarproject.api.identity.Author.Status.OURSELVES; import static org.briarproject.api.identity.Author.Status.UNKNOWN; import static org.briarproject.api.privategroup.Visibility.INVISIBLE; @UiThread @NotNullByDefault -public class JoinMessageItemViewHolder - extends BaseThreadItemViewHolder<JoinMessageItem> { +class JoinMessageItemViewHolder + extends BaseThreadItemViewHolder<GroupMessageItem> { private final boolean isCreator; private final ImageView icon; @@ -40,19 +40,18 @@ public class JoinMessageItemViewHolder } @Override - public void bind(ThreadItemAdapter<JoinMessageItem> adapter, - ThreadItemListener<JoinMessageItem> listener, JoinMessageItem item, - int pos) { + public void bind(ThreadItemAdapter<GroupMessageItem> adapter, + ThreadItemListener<GroupMessageItem> listener, + GroupMessageItem item, int pos) { super.bind(adapter, listener, item, pos); - if (isCreator) bindForCreator(item); - else bind(item); + if (isCreator) bindForCreator((JoinMessageItem) item); + else bind((JoinMessageItem) item); } private void bindForCreator(final JoinMessageItem item) { if (item.isInitial()) { - textView.setText( - getContext().getString(R.string.groups_member_created_you)); + textView.setText(R.string.groups_member_created_you); } else { textView.setText( getContext().getString(R.string.groups_member_joined, @@ -71,8 +70,7 @@ public class JoinMessageItemViewHolder item.getAuthor().getName())); } else { if (item.getStatus() == OURSELVES) { - textView.setText( - ctx.getString(R.string.groups_member_joined_you)); + textView.setText(R.string.groups_member_joined_you); } else { textView.setText(ctx.getString(R.string.groups_member_joined, item.getAuthor().getName())); @@ -86,7 +84,7 @@ public class JoinMessageItemViewHolder } else { icon.setVisibility(View.VISIBLE); info.setVisibility(View.VISIBLE); - info.setText(getVisibilityString(item.getVisibility())); + info.setText(getVisibilityStringId(item.getVisibility())); if (item.getVisibility() == INVISIBLE) { icon.setImageResource(R.drawable.ic_visibility_off); diff --git a/briar-android/src/org/briarproject/android/privategroup/reveal/RevealableContactViewHolder.java b/briar-android/src/org/briarproject/android/privategroup/reveal/RevealableContactViewHolder.java index 7da31e7f0e745431e0899dfa4dd2cc02339bf65c..5261a58e27009e18f02ca1c38cdf1981a82707a4 100644 --- a/briar-android/src/org/briarproject/android/privategroup/reveal/RevealableContactViewHolder.java +++ b/briar-android/src/org/briarproject/android/privategroup/reveal/RevealableContactViewHolder.java @@ -10,7 +10,7 @@ import org.briarproject.android.contactselection.BaseSelectableContactHolder; import org.briarproject.api.nullsafety.NotNullByDefault; import org.jetbrains.annotations.Nullable; -import static org.briarproject.android.privategroup.VisibilityStringProvider.getVisibilityString; +import static org.briarproject.android.privategroup.VisibilityStringProvider.getVisibilityStringId; import static org.briarproject.android.util.AndroidUtils.GREY_OUT; import static org.briarproject.api.privategroup.Visibility.INVISIBLE; @@ -32,7 +32,7 @@ public class RevealableContactViewHolder OnContactClickListener<RevealableContactItem> listener) { super.bind(item, listener); - info.setText(getVisibilityString(item.getVisibility())); + info.setText(getVisibilityStringId(item.getVisibility())); if (item.getVisibility() == INVISIBLE) { icon.setImageResource(R.drawable.ic_visibility_off); diff --git a/briar-android/src/org/briarproject/android/threaded/ThreadItemAdapter.java b/briar-android/src/org/briarproject/android/threaded/ThreadItemAdapter.java index 546b9737240fa421fafd1fed0123d79a17cc0957..76b062508acdc56a81027b49fb24b7cbcec60771 100644 --- a/briar-android/src/org/briarproject/android/threaded/ThreadItemAdapter.java +++ b/briar-android/src/org/briarproject/android/threaded/ThreadItemAdapter.java @@ -273,7 +273,7 @@ public class ThreadItemAdapter<I extends ThreadItem> * items if 'item' is null. If 'item' is not visible, NO_POSITION is * returned. */ - private int getVisiblePos(@Nullable I item) { + protected int getVisiblePos(@Nullable I item) { int visibleCounter = 0; int levelLimit = UNDEFINED; for (I i : items) { diff --git a/briar-api/src/org/briarproject/api/privategroup/JoinMessageHeader.java b/briar-api/src/org/briarproject/api/privategroup/JoinMessageHeader.java index 92beb6a6812a167e6a8dbf19894752f515ae8782..ae83be9327ae6555b9128487760296ff692ebb5a 100644 --- a/briar-api/src/org/briarproject/api/privategroup/JoinMessageHeader.java +++ b/briar-api/src/org/briarproject/api/privategroup/JoinMessageHeader.java @@ -9,13 +9,13 @@ import javax.annotation.concurrent.Immutable; public class JoinMessageHeader extends GroupMessageHeader { private final Visibility visibility; - private final boolean isCreator; + private final boolean isInitial; - public JoinMessageHeader(GroupMessageHeader h, Visibility visibility, boolean isCreator) { + public JoinMessageHeader(GroupMessageHeader h, Visibility visibility, boolean isInitial) { super(h.getGroupId(), h.getId(), h.getParentId(), h.getTimestamp(), h.getAuthor(), h.getAuthorStatus(), h.isRead()); this.visibility = visibility; - this.isCreator = isCreator; + this.isInitial = isInitial; } public Visibility getVisibility() { @@ -23,7 +23,7 @@ public class JoinMessageHeader extends GroupMessageHeader { } public boolean isInitial() { - return isCreator; + return isInitial; } }