Skip to content

Commit

Permalink
New group button behind new Group UI feature flag.
Browse files Browse the repository at this point in the history
  • Loading branch information
alan-signal authored and greyson-signal committed May 13, 2020
1 parent d5419ec commit 8e0fba7
Show file tree
Hide file tree
Showing 14 changed files with 128 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
import org.thoughtcrime.securesms.contacts.sync.DirectoryHelper;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.UsernameUtil;
Expand Down Expand Up @@ -100,15 +101,16 @@ public final class ContactSelectionListFragment extends Fragment
private RecyclerViewFastScroller fastScroller;
private ContactSelectionListAdapter cursorRecyclerViewAdapter;

@Nullable private FixedViewsAdapter headerAdapter;
@Nullable private FixedViewsAdapter footerAdapter;
@Nullable private InviteCallback inviteCallback;
@Nullable private ListCallback listCallback;

@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);

if (context instanceof InviteCallback) {
inviteCallback = (InviteCallback) context;
if (context instanceof ListCallback) {
listCallback = (ListCallback) context;
}
}

Expand Down Expand Up @@ -192,9 +194,16 @@ private void initializeCursor() {

RecyclerViewConcatenateAdapterStickyHeader concatenateAdapter = new RecyclerViewConcatenateAdapterStickyHeader();

if (listCallback != null && FeatureFlags.newGroupUI()) {
headerAdapter = new FixedViewsAdapter(createNewGroupItem(listCallback));
headerAdapter.hide();
concatenateAdapter.addAdapter(headerAdapter);
}

concatenateAdapter.addAdapter(cursorRecyclerViewAdapter);
if (inviteCallback != null) {
footerAdapter = new FixedViewsAdapter(createInviteActionView(inviteCallback));

if (listCallback != null) {
footerAdapter = new FixedViewsAdapter(createInviteActionView(listCallback));
footerAdapter.hide();
concatenateAdapter.addAdapter(footerAdapter);
}
Expand All @@ -203,10 +212,17 @@ private void initializeCursor() {
recyclerView.addItemDecoration(new StickyHeaderDecoration(concatenateAdapter, true, true));
}

private View createInviteActionView(@NonNull InviteCallback inviteCallback) {
private View createInviteActionView(@NonNull ListCallback listCallback) {
View view = LayoutInflater.from(requireContext())
.inflate(R.layout.contact_selection_invite_action_item, (ViewGroup) requireView(), false);
view.setOnClickListener(v -> inviteCallback.onInvite());
view.setOnClickListener(v -> listCallback.onInvite());
return view;
}

private View createNewGroupItem(@NonNull ListCallback listCallback) {
View view = LayoutInflater.from(requireContext())
.inflate(R.layout.contact_selection_new_group_item, (ViewGroup) requireView(), false);
view.setOnClickListener(v -> listCallback.onNewGroup());
return view;
}

Expand Down Expand Up @@ -272,6 +288,10 @@ public void onLoadFinished(@NonNull Loader<Cursor> loader, @Nullable Cursor data
footerAdapter.show();
}

if (headerAdapter != null) {
headerAdapter.show();
}

emptyText.setText(R.string.contact_selection_group_activity__no_contacts);
boolean useFastScroller = data != null && data.getCount() > 20;
recyclerView.setVerticalScrollBarEnabled(!useFastScroller);
Expand Down Expand Up @@ -392,7 +412,8 @@ public interface OnContactSelectedListener {
void onContactDeselected(Optional<RecipientId> recipientId, String number);
}

public interface InviteCallback {
public interface ListCallback {
void onInvite();
void onNewGroup();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,29 +22,14 @@
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import org.thoughtcrime.securesms.conversation.ConversationActivity;
import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.ThreadDatabase;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.whispersystems.libsignal.util.guava.Optional;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.UsernameUtil;
import org.thoughtcrime.securesms.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.profiles.SignalServiceProfile;
import org.whispersystems.signalservice.api.util.UuidUtil;

import java.io.IOException;
import java.util.UUID;

/**
* Activity container for starting a new conversation.
Expand All @@ -53,7 +38,7 @@
*
*/
public class NewConversationActivity extends ContactSelectionActivity
implements ContactSelectionListFragment.InviteCallback
implements ContactSelectionListFragment.ListCallback
{

@SuppressWarnings("unused")
Expand Down Expand Up @@ -131,5 +116,12 @@ protected boolean onPrepareOptionsPanel(View view, Menu menu) {
@Override
public void onInvite() {
handleInvite();
finish();
}

@Override
public void onNewGroup() {
handleCreateGroup();
finish();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,11 @@ public static boolean callingPip() {
return getValue(CALLING_PIP, false);
}

/** New group UI elements. */
public static boolean newGroupUI() {
return getValue(NEW_GROUP_UI, false);
}

/** Only for rendering debug info. */
public static synchronized @NonNull Map<String, Boolean> getMemoryValues() {
return new TreeMap<>(REMOTE_VALUES);
Expand Down
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/ic_group_outline_ultramarine_28.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="28dp"
android:height="28dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/core_ultramarine"
android:pathData="M19.513,9.942a4.25,4.25 0,1 0,-6.538 -0.013,4.749 4.749,0 0,0 -1.336,0.618 4.242,4.242 0,1 0,-7.152 4.395A4.744,4.744 0,0 0,1 19.5L1,21L2.5,21L2.5,19.5a3.254,3.254 0,0 1,3.25 -3.25h4A3.254,3.254 0,0 1,13 19.5L13,21h1.5L14.5,19.5a4.744,4.744 0,0 0,-3.487 -4.558A4.21,4.21 0,0 0,12 12.25c0,-0.029 -0.008,-0.055 -0.008,-0.083a3.259,3.259 0,0 1,2.258 -0.917h4A3.254,3.254 0,0 1,21.5 14.5L21.5,16L23,16L23,14.5A4.744,4.744 0,0 0,19.513 9.942ZM7.75,15a2.75,2.75 0,1 1,2.75 -2.75A2.75,2.75 0,0 1,7.75 15ZM16.25,10A2.75,2.75 0,1 1,19 7.25,2.75 2.75,0 0,1 16.25,10Z" />
</vector>
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="#70707C" />
<solid android:color="@color/core_grey_75" />
</shape>
</item>
<item
android:bottom="10dp"
android:drawable="@drawable/ic_invite_28dp"
android:drawable="@drawable/ic_invite_ultramarine_28"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
Expand Down
14 changes: 14 additions & 0 deletions app/src/main/res/drawable/ic_invite_circle_light.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="@color/core_grey_05" />
</shape>
</item>
<item
android:bottom="10dp"
android:drawable="@drawable/ic_invite_ultramarine_28"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
</layer-list>
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@
android:viewportWidth="28"
android:viewportHeight="28">
<path
android:fillColor="#FFFFFF"
android:fillColor="@color/core_ultramarine"
android:fillType="evenOdd"
android:pathData="M14,2c7.429,0 13,4.875 13,11.143A10.3,10.3 0,0 1,23.791 20.6l0.662,4.47c0,0.012 0,0.024 0,0.035a0.348,0.348 0,0 1,-0.348 0.349,0.377 0.377,0 0,1 -0.113,-0.02l-0.059,-0.028 -4.547,-2.064A15.4,15.4 0,0 1,14 24.286c-7.429,0 -13,-4.875 -13,-11.143S6.571,2 14,2m0,1.5C7.444,3.5 2.5,7.646 2.5,13.143S7.444,22.786 14,22.786a13.872,13.872 0,0 0,4.864 -0.849l0.58,-0.217 0.565,0.256 2.647,1.2 -0.349,-2.359 -0.113,-0.76 0.552,-0.536a8.743,8.743 0,0 0,2.754 -6.38C25.5,7.646 20.556,3.5 14,3.5" />
<path
android:fillColor="#FFFFFF"
android:fillColor="@color/core_ultramarine"
android:fillType="evenOdd"
android:pathData="M20,12a1.5,1.5 0,1 1,-1.5 1.5A1.5,1.5 0,0 1,20 12" />
<path
android:fillColor="#FFFFFF"
android:fillColor="@color/core_ultramarine"
android:fillType="evenOdd"
android:pathData="M14,12a1.5,1.5 0,1 1,-1.5 1.5A1.5,1.5 0,0 1,14 12" />
<path
android:fillColor="#FFFFFF"
android:fillColor="@color/core_ultramarine"
android:fillType="evenOdd"
android:pathData="M8,12a1.5,1.5 0,1 1,-1.5 1.5A1.5,1.5 0,0 1,8 12" />
</vector>
14 changes: 14 additions & 0 deletions app/src/main/res/drawable/ic_new_group_circle_dark.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="@color/core_grey_75" />
</shape>
</item>
<item
android:bottom="10dp"
android:drawable="@drawable/ic_group_outline_ultramarine_28"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
</layer-list>
14 changes: 14 additions & 0 deletions app/src/main/res/drawable/ic_new_group_circle_light.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="@color/core_grey_05" />
</shape>
</item>
<item
android:bottom="10dp"
android:drawable="@drawable/ic_group_outline_ultramarine_28"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
</layer-list>
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView 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"
style="@style/Signal.Text.Body"
android:layout_width="match_parent"
android:layout_height="@dimen/contact_selection_item_height"
android:drawableStart="@drawable/ic_invite_circle"
android:drawablePadding="16dp"
android:ellipsize="marquee"
android:fontFamily="sans-serif-medium"
Expand All @@ -14,4 +14,5 @@
android:singleLine="true"
android:text="@string/contact_selection_activity__invite_to_signal"
android:textAlignment="viewStart"
app:drawableStartCompat="?attr/contact_selection_invite_icon"
tools:ignore="RtlSymmetry" />
18 changes: 18 additions & 0 deletions app/src/main/res/layout/contact_selection_new_group_item.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView 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"
style="@style/Signal.Text.Body"
android:layout_width="match_parent"
android:layout_height="@dimen/contact_selection_item_height"
android:drawablePadding="16dp"
android:ellipsize="marquee"
android:fontFamily="sans-serif-medium"
android:gravity="center_vertical|start"
android:labelFor="@id/action_icon"
android:paddingStart="@dimen/selection_item_header_width"
android:singleLine="true"
android:text="@string/contact_selection_activity__new_group"
android:textAlignment="viewStart"
app:drawableStartCompat="?attr/contact_selection_new_group_icon"
tools:ignore="RtlSymmetry" />
2 changes: 2 additions & 0 deletions app/src/main/res/values/attrs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,8 @@
<attr name="contact_selection_lay_user" format="reference|color" />
<attr name="contact_selection_label_text" format="reference|color" />
<attr name="contact_selection_header_text" format="reference|color" />
<attr name="contact_selection_invite_icon" format="reference" />
<attr name="contact_selection_new_group_icon" format="reference" />

<attr name="contact_filter_toolbar_icon_tint" format="color" />
<attr name="contact_filter_toolbar_keyboard_icon" format="reference" />
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1266,6 +1266,7 @@
<!-- contact_selection_activity -->
<string name="contact_selection_activity__enter_name_or_number">Enter name or number</string>
<string name="contact_selection_activity__invite_to_signal">Invite to Signal</string>
<string name="contact_selection_activity__new_group">New group</string>

<!-- contact_filter_toolbar -->
<string name="contact_filter_toolbar__clear_entered_text_description">Clear entered text</string>
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/values/themes.xml
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,9 @@
<item name="pending_member_background">@color/core_grey_02</item>
<item name="pending_member_empty_text_color">@color/core_grey_60</item>

<item name="contact_selection_new_group_icon">@drawable/ic_new_group_circle_light</item>
<item name="contact_selection_invite_icon">@drawable/ic_invite_circle_light</item>

<item name="colorControlNormal">@color/core_grey_90</item>
</style>

Expand Down Expand Up @@ -693,6 +696,9 @@
<item name="pending_member_background">@color/core_grey_80</item>
<item name="pending_member_empty_text_color">@color/core_grey_25</item>

<item name="contact_selection_new_group_icon">@drawable/ic_new_group_circle_dark</item>
<item name="contact_selection_invite_icon">@drawable/ic_invite_circle_dark</item>

<item name="colorControlNormal">@color/core_white</item>
</style>

Expand Down

0 comments on commit 8e0fba7

Please sign in to comment.