Polish UX for groups v2 management.

This commit is contained in:
Alex Hart 2020-05-26 16:34:11 -03:00 committed by Greyson Parrelli
parent 558a8e4a14
commit 6fa2a0f411
9 changed files with 89 additions and 50 deletions

View file

@ -258,6 +258,7 @@
android:theme="@style/TextSecure.LightNoActionBar" />
<activity android:name=".groups.ui.managegroup.ManageGroupActivity"
android:windowSoftInputMode="stateAlwaysHidden"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
<activity android:name=".DatabaseMigrationActivity"
@ -422,7 +423,7 @@
<activity android:name=".profiles.edit.EditProfileActivity"
android:theme="@style/TextSecure.LightRegistrationTheme"
android:windowSoftInputMode="adjustResize" />
android:windowSoftInputMode="stateVisible|adjustResize" />
<activity android:name=".lock.v2.CreateKbsPinActivity"
android:theme="@style/TextSecure.LightRegistrationTheme"

View file

@ -11,11 +11,11 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.SwitchCompat;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment;
@ -83,7 +83,7 @@ public class ManageGroupFragment extends Fragment {
private TextView blockGroup;
private TextView leaveGroup;
private TextView addMembers;
private Switch muteNotificationsSwitch;
private SwitchCompat muteNotificationsSwitch;
private View muteNotificationsRow;
private TextView muteNotificationsUntilLabel;
private TextView customNotificationsButton;
@ -254,6 +254,7 @@ public class ManageGroupFragment extends Fragment {
viewModel.getCanAddMembers().observe(getViewLifecycleOwner(), canEdit -> addMembers.setVisibility(canEdit ? View.VISIBLE : View.GONE));
groupMemberList.setRecipientClickListener(recipient -> RecipientBottomSheetDialogFragment.create(recipient.getId(), groupId).show(requireFragmentManager(), "BOTTOM"));
groupMemberList.setOverScrollMode(View.OVER_SCROLL_NEVER);
final CompoundButton.OnCheckedChangeListener muteSwitchListener = (buttonView, isChecked) -> {
if (isChecked) {

View file

@ -12,11 +12,11 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.SwitchCompat;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.ViewModelProviders;
@ -32,11 +32,11 @@ public class CustomNotificationsDialogFragment extends DialogFragment {
private static final String ARG_GROUP_ID = "group_id";
private Switch customNotificationsSwitch;
private View soundLabel;
private TextView soundSelector;
private View vibrateLabel;
private Switch vibrateSwitch;
private SwitchCompat customNotificationsSwitch;
private View soundLabel;
private TextView soundSelector;
private View vibrateLabel;
private SwitchCompat vibrateSwitch;
private CustomNotificationsViewModel viewModel;

View file

@ -244,6 +244,7 @@ public class EditProfileFragment extends Fragment {
if (isEditingGroup) {
givenName.setHint(R.string.EditProfileFragment__group_name);
givenName.requestFocus();
toolbar.setTitle(R.string.EditProfileFragment__edit_group_name_and_photo);
preview.setVisibility(View.GONE);
familyName.setVisibility(View.GONE);

View file

@ -10,7 +10,6 @@
android:layout_width="0dp"
android:layout_height="?attr/actionBarSize"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintEnd_toStartOf="@id/custom_notifications_enable_switch"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_arrow_left_24"
@ -59,7 +58,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/custom_notifications_sound_label" />
<Switch
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/custom_notifications_enable_switch"
android:layout_width="0dp"
android:layout_height="0dp"
@ -80,9 +79,10 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/custom_notifications_sound_label"
app:layout_constraintTop_toTopOf="@id/custom_notifications_sound_label"
tools:visibility="visible"
tools:text="Default (Popcorn)" />
<Switch
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/custom_notifications_vibrate_switch"
android:layout_width="0dp"
android:layout_height="0dp"

View file

@ -10,19 +10,18 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
android:elevation="4dp"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
app:scrimAnimationDuration="200"
app:contentScrim="?android:attr/windowBackground"
app:expandedTitleGravity="center_horizontal"
app:expandedTitleMarginTop="156dp"
app:expandedTitleTextAppearance="@style/TextAppearance.Signal.Body1.Bold"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:scrimAnimationDuration="200">
<LinearLayout
android:layout_width="match_parent"
@ -50,7 +49,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
android:textColor="?title_text_color_secondary"
tools:text="12 members (4 invited)" />
</LinearLayout>
@ -78,13 +77,21 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/divider"
android:layout_width="0dp"
android:layout_height="@dimen/group_manage_fragment_card_vertical_padding"
android:background="?pref_divider"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.cardview.widget.CardView
android:id="@+id/group_disappearing_messages_card"
style="@style/Widget.Signal.CardView.PreferenceRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/group_manage_fragment_card_vertical_padding"
app:cardBackgroundColor="?android:attr/windowBackground"
app:layout_constraintTop_toTopOf="parent">
app:layout_constraintTop_toBottomOf="@id/divider">
<LinearLayout
android:id="@+id/disappearing_messages_row"
@ -103,7 +110,7 @@
android:layout_gravity="center_horizontal"
android:gravity="center_vertical"
android:text="@string/ManageGroupActivity_disappearing_messages"
android:textAppearance="@style/TextAppearance.Signal.Body2" />
android:textAppearance="@style/Signal.Text.Body" />
<TextView
android:id="@+id/disappearing_messages"
@ -111,7 +118,7 @@
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|end"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
android:textColor="@color/ultramarine_text_button"
tools:text="Off" />
@ -121,10 +128,10 @@
<androidx.cardview.widget.CardView
android:id="@+id/group_notifications_card"
style="@style/Widget.Signal.CardView.PreferenceRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/group_manage_fragment_card_vertical_padding"
app:cardBackgroundColor="?android:attr/windowBackground"
app:layout_constraintTop_toBottomOf="@id/group_disappearing_messages_card">
<LinearLayout
@ -138,17 +145,16 @@
android:layout_height="@dimen/group_manage_fragment_row_height"
android:background="?selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:paddingStart="@dimen/group_manage_fragment_row_horizontal_padding"
android:paddingEnd="@dimen/group_manage_fragment_row_horizontal_padding">
android:focusable="true">
<TextView
android:id="@+id/group_mute_notifications"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/group_manage_fragment_card_vertical_padding"
android:gravity="start|center_vertical"
android:text="@string/ManageGroupActivity_mute_notifications"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
app:layout_constraintBottom_toTopOf="@id/group_mute_notifications_until"
app:layout_constraintEnd_toStartOf="@id/group_mute_notifications_switch"
app:layout_constraintStart_toStartOf="parent"
@ -158,6 +164,8 @@
android:id="@+id/group_mute_notifications_until"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/group_manage_fragment_card_vertical_padding"
android:textAppearance="@style/TextSecure.SubtitleTextStyle"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
@ -165,7 +173,7 @@
tools:text="Until 12:42 PM"
tools:visibility="visible" />
<Switch
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/group_mute_notifications_switch"
android:layout_width="0dp"
android:layout_height="match_parent"
@ -194,7 +202,7 @@
android:layout_height="match_parent"
android:gravity="start|center_vertical"
android:text="@string/ManageGroupActivity_custom_notifications"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/group_mute_notifications_switch"
app:layout_constraintStart_toStartOf="parent" />
@ -205,7 +213,7 @@
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|end"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
android:textColor="@color/ultramarine_text_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@ -221,45 +229,66 @@
<androidx.cardview.widget.CardView
android:id="@+id/group_media_card"
style="@style/Widget.Signal.CardView.PreferenceRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/group_manage_fragment_card_vertical_padding"
android:visibility="gone"
app:cardBackgroundColor="?android:attr/windowBackground"
app:layout_constraintTop_toBottomOf="@id/group_notifications_card"
tools:visibility="visible">
<LinearLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/shared_media"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginStart="16dp"
android:gravity="center_vertical|end"
android:text="@string/recipient_preference_activity__shared_media"
android:textAppearance="@style/Signal.Text.Body"
app:layout_constraintBottom_toBottomOf="@id/rail_label"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/rail_label"
style="@style/Widget.Signal.Button.TextButton.Ultramarine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:padding="16dp"
android:text="@string/recipient_preference_activity__shared_media" />
android:gravity="end|center_vertical"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:text="@string/ManageGroupActivity_see_all"
android:textAppearance="@style/Signal.Text.Body"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<org.thoughtcrime.securesms.components.ThreadPhotoRailView
android:id="@+id/recent_photos"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_marginBottom="16dp" />
android:layout_marginBottom="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rail_label" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/group_access_control_card"
style="@style/Widget.Signal.CardView.PreferenceRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/group_manage_fragment_card_vertical_padding"
android:visibility="gone"
app:cardBackgroundColor="?android:attr/windowBackground"
app:layout_constraintTop_toBottomOf="@id/group_media_card"
tools:visibility="visible">
@ -284,14 +313,14 @@
android:layout_height="match_parent"
android:gravity="center_vertical|start"
android:text="@string/ManageGroupActivity_who_can_edit_group_membership"
android:textAppearance="@style/TextAppearance.Signal.Body2" />
android:textAppearance="@style/Signal.Text.Body" />
<TextView
android:id="@+id/edit_group_membership_value"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical|end"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
android:textColor="@color/ultramarine_text_button"
tools:text="Only admin" />
@ -313,14 +342,14 @@
android:layout_height="match_parent"
android:gravity="center_vertical|start"
android:text="@string/ManageGroupActivity_who_can_edit_group_info"
android:textAppearance="@style/TextAppearance.Signal.Body2" />
android:textAppearance="@style/Signal.Text.Body" />
<TextView
android:id="@+id/edit_group_access_value"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical|end"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
android:textColor="@color/ultramarine_text_button"
tools:text="All members" />
@ -331,10 +360,10 @@
<androidx.cardview.widget.CardView
android:id="@+id/group_membership_card"
style="@style/Widget.Signal.CardView.PreferenceRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/group_manage_fragment_card_vertical_padding"
app:cardBackgroundColor="?android:attr/windowBackground"
app:layout_constraintTop_toBottomOf="@id/group_access_control_card">
<LinearLayout
@ -364,7 +393,7 @@
android:paddingStart="@dimen/group_manage_fragment_row_horizontal_padding"
android:paddingEnd="@dimen/group_manage_fragment_row_horizontal_padding"
android:text="@string/ManageGroupActivity_add_members"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
android:textColor="@color/ultramarine_text_button"
android:visibility="gone"
tools:visibility="visible" />
@ -386,8 +415,8 @@
android:paddingStart="@dimen/group_manage_fragment_row_horizontal_padding"
android:paddingEnd="@dimen/group_manage_fragment_row_horizontal_padding"
android:text="@string/ManageGroupActivity_view_all_members"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textColor="@color/ultramarine_text_button"
android:textAppearance="@style/Signal.Text.Body"
android:textColor="?title_text_color_secondary"
android:visibility="gone"
tools:visibility="visible" />
@ -397,10 +426,10 @@
<androidx.cardview.widget.CardView
android:id="@+id/group_pending_card"
style="@style/Widget.Signal.CardView.PreferenceRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/group_manage_fragment_card_vertical_padding"
app:cardBackgroundColor="?android:attr/windowBackground"
app:layout_constraintTop_toBottomOf="@id/group_membership_card">
<LinearLayout
@ -436,10 +465,10 @@
<androidx.cardview.widget.CardView
android:id="@+id/group_block_and_leave_card"
style="@style/Widget.Signal.CardView.PreferenceRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/group_manage_fragment_card_vertical_padding"
app:cardBackgroundColor="?android:attr/windowBackground"
app:layout_constraintTop_toBottomOf="@id/group_pending_card">
<LinearLayout
@ -456,7 +485,7 @@
android:paddingStart="@dimen/group_manage_fragment_row_horizontal_padding"
android:paddingEnd="@dimen/group_manage_fragment_row_horizontal_padding"
android:text="@string/ManageGroupActivity_block_group"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
android:textColor="@color/core_red" />
<TextView
@ -468,7 +497,7 @@
android:paddingStart="@dimen/group_manage_fragment_row_horizontal_padding"
android:paddingEnd="@dimen/group_manage_fragment_row_horizontal_padding"
android:text="@string/ManageGroupActivity_leave_group"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
android:textColor="@color/core_red" />
</LinearLayout>

View file

@ -25,7 +25,7 @@
android:layout_marginEnd="8dp"
android:gravity="start|center_vertical"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/Signal.Text.Body"
app:layout_constraintBottom_toBottomOf="@+id/recipient_avatar"
app:layout_constraintEnd_toStartOf="@+id/admin"
app:layout_constraintHorizontal_bias="0"
@ -40,7 +40,7 @@
android:layout_marginEnd="16dp"
android:gravity="start|center_vertical"
android:text="@string/GroupRecipientListItem_admin"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textAppearance="@style/TextAppearance.Signal.Subtitle2"
android:textColor="?attr/title_text_color_secondary"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/recipient_name"

View file

@ -515,6 +515,7 @@
<string name="ManageGroupActivity_on">On</string>
<string name="ManageGroupActivity_add_members">Add members</string>
<string name="ManageGroupActivity_view_all_members">View all members</string>
<string name="ManageGroupActivity_see_all">See all</string>
<string name="ManageGroupActivity_none">None</string>
<plurals name="ManageGroupActivity_invited">

View file

@ -442,4 +442,10 @@
<item name="android:textColor">@color/core_ultramarine</item>
<item name="android:background">@drawable/callee_dialog_button_background</item>
</style>
<style name="Widget.Signal.CardView.PreferenceRow" parent="Widget.MaterialComponents.CardView">
<item name="cardCornerRadius">0dp</item>
<item name="cardElevation">0.5dp</item>
<item name="cardBackgroundColor">?android:attr/windowBackground</item>
</style>
</resources>