diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java index 1859bc684..d13d9b292 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java @@ -26,6 +26,10 @@ import android.text.TextUtils; import android.view.View; import android.widget.ImageView; +import androidx.annotation.Nullable; +import androidx.core.content.res.ResourcesCompat; +import androidx.emoji.widget.EmojiTextView; + import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; @@ -40,9 +44,6 @@ import com.nextcloud.talk.utils.DisplayUtils; import java.util.List; import java.util.regex.Pattern; -import androidx.annotation.Nullable; - -import androidx.emoji.widget.EmojiTextView; import butterknife.BindView; import butterknife.ButterKnife; import eu.davidea.flexibleadapter.FlexibleAdapter; @@ -121,16 +122,18 @@ public class UserItem extends AbstractFlexibleItem } if (!isOnline) { - if (holder.contactMentionId != null) { - holder.contactMentionId.setAlpha(0.38f); - } - holder.contactDisplayName.setAlpha(0.38f); + holder.contactDisplayName.setTextColor(ResourcesCompat.getColor( + holder.contactDisplayName.getContext().getResources(), + R.color.medium_emphasis_text, + null) + ); holder.simpleDraweeView.setAlpha(0.38f); } else { - if (holder.contactMentionId != null) { - holder.contactMentionId.setAlpha(1.0f); - } - holder.contactDisplayName.setAlpha(1.0f); + holder.contactDisplayName.setTextColor(ResourcesCompat.getColor( + holder.contactDisplayName.getContext().getResources(), + R.color.high_emphasis_text, + null) + ); holder.simpleDraweeView.setAlpha(1.0f); } @@ -243,7 +246,6 @@ public class UserItem extends AbstractFlexibleItem if (!holder.contactMentionId.getText().equals(userType)) { holder.contactMentionId.setText(userType); - holder.contactMentionId.setTextColor(NextcloudTalkApplication.Companion.getSharedApplication().getResources().getColor(R.color.textColorMaxContrast)); } } } @@ -266,7 +268,6 @@ public class UserItem extends AbstractFlexibleItem this.header = header; } - static class UserItemViewHolder extends FlexibleViewHolder { @BindView(R.id.name_text) @@ -294,6 +295,4 @@ public class UserItem extends AbstractFlexibleItem ButterKnife.bind(this, view); } } - - } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt index c5678fe8c..84d03acd2 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt @@ -78,7 +78,6 @@ import com.yarolegovich.mp.MaterialStandardPreference import com.yarolegovich.mp.MaterialSwitchPreference import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager -import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -88,6 +87,7 @@ import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import java.util.* import javax.inject.Inject +import kotlin.collections.ArrayList @AutoInjector(NextcloudTalkApplication::class) @@ -142,8 +142,8 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA private var databaseStorageModule: DatabaseStorageModule? = null private var conversation: Conversation? = null - private var adapter: FlexibleAdapter>? = null - private var recyclerViewItems: MutableList> = ArrayList() + private var adapter: FlexibleAdapter? = null + private var recyclerViewItems: MutableList = ArrayList() private var saveStateHandler: LovelySaveStateHandler? = null @@ -376,6 +376,7 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA } } + Collections.sort(recyclerViewItems, UserItemComparator()) if (ownUserItem != null) { recyclerViewItems.add(0, ownUserItem) @@ -684,4 +685,32 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA private const val ID_DELETE_CONVERSATION_DIALOG = 0 } + + /** + * Comparator for participants, sorts by online-status, moderator-status and display name. + */ + class UserItemComparator : Comparator { + override fun compare(left: UserItem, right: UserItem): Int { + if (left.isOnline && !right.isOnline) { + return -1 + } else if (!left.isOnline && right.isOnline) { + return 1 + } + + val moderatorTypes = ArrayList() + moderatorTypes.add(Participant.ParticipantType.MODERATOR) + moderatorTypes.add(Participant.ParticipantType.OWNER) + moderatorTypes.add(Participant.ParticipantType.GUEST_MODERATOR) + + if (moderatorTypes.contains(left.model.type) && !moderatorTypes.contains(right.model.type)) { + return -1 + } else if (!moderatorTypes.contains(left.model.type) && moderatorTypes.contains(right.model.type)) { + return 1 + } + + return left.model.displayName.toLowerCase(Locale.ROOT).compareTo( + right.model.displayName.toLowerCase(Locale.ROOT) + ) + } + } } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.java b/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.java index 80417ddf3..e1f3fd528 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.java @@ -809,7 +809,7 @@ public class ProfileController extends BaseController { this, item.field, holder.getAdapterPosition()).show()); - holder.scope.setAlpha(1.0f); + holder.scope.setAlpha(0.87f); // active - high emphasis } else { holder.text.setEnabled(false); holder.text.setFocusableInTouchMode(false); @@ -817,7 +817,7 @@ public class ProfileController extends BaseController { holder.text.setCursorVisible(false); holder.text.setBackgroundTintList(ColorStateList.valueOf(Color.TRANSPARENT)); holder.scope.setOnClickListener(null); - holder.scope.setAlpha(0.4f); + holder.scope.setAlpha(0.6f); // inactive - medium emphasis } } else { holder.container.setVisibility(View.GONE); diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java b/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java index 0f1ebc214..e42e309ae 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java @@ -103,6 +103,7 @@ public class Conversation { public boolean isGuest() { return (Participant.ParticipantType.GUEST.equals(participantType) || + Participant.ParticipantType.GUEST_MODERATOR.equals(participantType) || Participant.ParticipantType.USER_FOLLOWING_LINK.equals(participantType)); } @@ -116,8 +117,9 @@ public class Conversation { } public boolean isParticipantOwnerOrModerator() { - return Participant.ParticipantType.OWNER.equals(participantType) - || Participant.ParticipantType.MODERATOR.equals(participantType); + return (Participant.ParticipantType.OWNER.equals(participantType) || + Participant.ParticipantType.GUEST_MODERATOR.equals(participantType) || + Participant.ParticipantType.MODERATOR.equals(participantType)); } public boolean shouldShowLobby(UserEntity conversationUser) { diff --git a/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumParticipantTypeConverter.java b/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumParticipantTypeConverter.java index 86a0639c3..ac2659266 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumParticipantTypeConverter.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumParticipantTypeConverter.java @@ -37,10 +37,11 @@ public class EnumParticipantTypeConverter extends IntBasedTypeConverter + tools:listitem="@layout/rv_item_conversation_info_participant" /> diff --git a/app/src/main/res/layout/controller_profile.xml b/app/src/main/res/layout/controller_profile.xml index ba793c4b1..5eaf66036 100644 --- a/app/src/main/res/layout/controller_profile.xml +++ b/app/src/main/res/layout/controller_profile.xml @@ -1,6 +1,6 @@ + #deffffff + #99ffffff + #61ffffff #121212 @color/grey950 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index e2564e3e4..608cce367 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -33,13 +33,18 @@ #666666 #A5A5A5 + + #de000000 + #99000000 + #61000000 + #FFFFFF #37505D - #000000 + @color/high_emphasis_text #DBDBDB #222222 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0f91348e2..76653f6c7 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -30,10 +30,14 @@ @color/colorAccent @color/colorPrimary @color/nc_outcoming_text_default - @color/nc_incoming_text_default + @color/conversation_item_header + @color/high_emphasis_text + @color/medium_emphasis_text + @color/low_emphasis_text @style/appActionBarPopupMenu @style/appActionBarPopupMenu @style/appActionBarPopupMenu + @style/menuTextAppearance @style/SearchView @color/bg_default @@ -44,12 +48,12 @@ + +