Merge pull request #1077 from nextcloud/conversationListDesignAndLauncher

Improved conversation list design and updated launcher icon
This commit is contained in:
Marcel Hibbe 2021-03-26 13:45:24 +01:00 committed by GitHub
commit 404d4eb79c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 227 additions and 1353 deletions

View File

@ -8,6 +8,9 @@ Types of changes can be: Added/Changed/Deprecated/Removed/Fixed/Security
## [UNRELEASED]
### Added
### Changed
- improve conversation list design wand dark/light theming
### Fixed
- @ in username is allowed for phonebook sync
- avoid sync when phonebook is empty

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -2,6 +2,8 @@
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2021 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
@ -21,6 +23,8 @@
package com.nextcloud.talk.adapters.items;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
@ -30,14 +34,15 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import androidx.emoji.widget.EmojiTextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import com.amulyakhare.textdrawable.TextDrawable;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.interfaces.DraweeController;
import com.facebook.drawee.view.SimpleDraweeView;
import com.google.android.material.chip.Chip;
import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.database.UserEntity;
@ -113,17 +118,32 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
}
if (conversation.getUnreadMessages() > 0) {
holder.dialogName.setTypeface(
holder.dialogName.getTypeface(),
Typeface.BOLD
);
holder.dialogDate.setTypeface(
holder.dialogDate.getTypeface(),
Typeface.BOLD
);
holder.dialogLastMessage.setTypeface(
holder.dialogLastMessage.getTypeface(),
Typeface.BOLD
);
holder.dialogUnreadBubble.setVisibility(View.VISIBLE);
if (conversation.getUnreadMessages() < 100) {
if (conversation.getUnreadMessages() < 1000) {
holder.dialogUnreadBubble.setText(Long.toString(conversation.getUnreadMessages()));
} else {
holder.dialogUnreadBubble.setText("99+");
holder.dialogUnreadBubble.setText(R.string.tooManyUnreadMessages);
}
if (conversation.isUnreadMention() || conversation.type == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
holder.dialogUnreadBubble.setBackground(context.getDrawable(R.drawable.bubble_circle_unread_mention));
holder.dialogUnreadBubble.setChipBackgroundColorResource(R.color.colorPrimary);
holder.dialogUnreadBubble.setTextColor(Color.WHITE);
} else {
holder.dialogUnreadBubble.setBackground(context.getDrawable(R.drawable.bubble_circle_unread));
holder.dialogUnreadBubble.setChipBackgroundColorResource(R.color.conversation_unread_bubble);
holder.dialogUnreadBubble.setTextColor(
ContextCompat.getColor(context, R.color.conversation_unread_bubble_text));
}
} else {
holder.dialogUnreadBubble.setVisibility(View.GONE);
@ -254,7 +274,7 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
@BindView(R.id.dialogLastMessage)
EmojiTextView dialogLastMessage;
@BindView(R.id.dialogUnreadBubble)
TextView dialogUnreadBubble;
Chip dialogUnreadBubble;
@BindView(R.id.passwordProtectedRoomImageView)
ImageView passwordProtectedRoomImageView;
@BindView(R.id.favoriteConversationImageView)

View File

@ -0,0 +1,44 @@
<!--
~ /*
~ * Nextcloud Talk application
~ *
~ * @author Mario Danic
~ * Copyright (C) 2017-2020 Mario Danic <mario@lovelyhq.com>
~ *
~ * This program is free software: you can redistribute it and/or modify
~ * it under the terms of the GNU General Public License as published by
~ * the Free Software Foundation, either version 3 of the License, or
~ * at your option) any later version.
~ *
~ * This program is distributed in the hope that it will be useful,
~ * but WITHOUT ANY WARRANTY; without even the implied warranty of
~ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ * GNU General Public License for more details.
~ *
~ * You should have received a copy of the GNU General Public License
~ * along with this program. If not, see <http://www.gnu.org/licenses/>.
~ */
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108"
android:autoMirrored="true">
<group android:scaleX="0.08035714"
android:scaleY="0.08035714">
<path android:fillType="evenOdd"
android:pathData="M0,0h1344v1344h-1344z" android:strokeLineJoin="round">
<aapt:attr name="android:fillColor">
<gradient android:endX="1343.9999"
android:endY="1.2959057E-4" android:startX="163.34073"
android:startY="1344.0002" android:type="linear">
<item android:color="#FF0082C9" android:offset="0"/>
<item android:color="#FF1CAFFF" android:offset="1"/>
</gradient>
</aapt:attr>
</path>
</group>
</vector>

View File

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Nextcloud Talk application
~
~ @author Mario Danic
~ Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ at your option) any later version.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#757575" />
<stroke
android:width="2dp"
android:color="@color/white" />
<size
android:width="32dp"
android:height="32dp" />
</shape>

View File

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Nextcloud Talk application
~
~ @author Mario Danic
~ Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ at your option) any later version.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/colorPrimary" />
<stroke
android:width="2dp"
android:color="@color/white" />
<size
android:width="32dp"
android:height="32dp" />
</shape>

File diff suppressed because it is too large Load Diff

View File

@ -21,8 +21,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="1680"
android:viewportHeight="1680">
android:viewportWidth="108"
android:viewportHeight="108">
<group android:scaleX="0.06428572"
android:scaleY="0.06428572">
<group android:translateX="168"
android:translateY="168">
<path
@ -30,4 +32,5 @@
android:fillType="nonZero"
android:fillColor="#ffffff"/>
</group>
</group>
</vector>

View File

@ -89,11 +89,12 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:backgroundTint="@color/colorPrimary"
android:layout_margin="16dp"
android:backgroundTint="@color/colorPrimary"
android:contentDescription="@string/nc_new_conversation"
app:borderWidth="0dp"
app:tint="@color/white"
app:srcCompat="@drawable/ic_add_white_24px"/>
app:srcCompat="@drawable/ic_add_white_24px"
app:tint="@color/white" />
<include layout="@layout/fast_scroller" />

View File

@ -2,6 +2,8 @@
~ Nextcloud Talk application
~
~ @author Mario Danic
~ @author Andy Scherzinger
~ Copyright (C) 2021 Andy Scherzinger <info@andy-scherzinger.de>
~ Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
~
~ This program is free software: you can redistribute it and/or modify
@ -34,7 +36,7 @@
android:layout_width="@dimen/small_item_height"
android:layout_height="@dimen/small_item_height"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/margin_between_elements">
android:layout_marginEnd="@dimen/double_margin_between_elements">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@id/dialogAvatar"
@ -46,17 +48,19 @@
<ImageView
android:id="@+id/passwordProtectedRoomImageView"
android:layout_width="@dimen/margin_between_elements"
android:layout_height="@dimen/margin_between_elements"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="bottom|end"
android:background="@drawable/shape_lock_bubble" />
<ImageView
android:id="@+id/favoriteConversationImageView"
android:layout_width="@dimen/margin_between_elements"
android:layout_height="@dimen/margin_between_elements"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="top|end"
android:background="@drawable/shape_favorite_bubble" />
android:src="@drawable/ic_star_black_24dp"
app:tint="@color/favorite_icon_tint"
app:tintMode="src_in"/>
</FrameLayout>
@ -64,7 +68,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/dialogName"
android:layout_marginTop="8dp"
android:layout_marginTop="6dp"
android:layout_toEndOf="@id/dialogAvatarFrameLayout">
<androidx.emoji.widget.EmojiTextView
@ -73,28 +77,31 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/dialogUnreadBubble"
android:layout_toEndOf="@id/dialogLastMessageUserAvatar"
android:ellipsize="end"
android:gravity="top"
android:lines="1"
android:singleLine="true"
android:textColor="@color/textColorMaxContrast"
android:textSize="14sp"
tools:text="This is the last message\nof an incredibly long two line conversation text" />
<TextView
android:id="@id/dialogUnreadBubble"
<com.google.android.material.chip.Chip
android:id="@+id/dialogUnreadBubble"
style="@style/Widget.MaterialComponents.Chip.Choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_height="18dp"
android:layout_alignParentEnd="true"
android:layout_marginStart="8dp"
android:background="@drawable/bubble_circle_unread"
android:gravity="center"
android:gravity="top"
android:lines="1"
android:textAlignment="center"
android:textColor="@color/conversation_unread_bubble"
android:textSize="12sp"
tools:background="@drawable/bubble_circle_unread"
tools:text="99+" />
android:textAppearance="@style/ChipUnreadMessagesTextAppearance"
android:textColor="@color/conversation_unread_bubble_text"
app:chipBackgroundColor="@color/conversation_unread_bubble"
app:chipEndPadding="-1dp"
app:chipMinTouchTargetSize="0dp"
app:chipStartPadding="-3dp"
app:ensureMinTouchTargetSize="false"
tools:text="999+" />
</RelativeLayout>
@ -103,9 +110,12 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginTop="2dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/textColorMaxContrast" />
android:textSize="14sp"
android:textColor="@color/textColorMaxContrast"
tools:text="yesterday"/>
<androidx.emoji.widget.EmojiTextView
android:id="@id/dialogName"
@ -114,6 +124,7 @@
android:layout_alignTop="@id/dialogAvatarFrameLayout"
android:layout_toStartOf="@id/dialogDate"
android:layout_toEndOf="@id/dialogAvatarFrameLayout"
android:layout_marginTop="2dp"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"

View File

@ -1,22 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Nextcloud Talk application
~
~ @author Mario Danic
~ Copyright (C) 2017-2019 Mario Danic <mario@lovelyhq.com>
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ at your option) any later version.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
~ /*
~ * Nextcloud Talk application
~ *
~ * @author Mario Danic
~ * Copyright (C) 2017-2020 Mario Danic <mario@lovelyhq.com>
~ *
~ * This program is free software: you can redistribute it and/or modify
~ * it under the terms of the GNU General Public License as published by
~ * the Free Software Foundation, either version 3 of the License, or
~ * at your option) any later version.
~ *
~ * This program is distributed in the hope that it will be useful,
~ * but WITHOUT ANY WARRANTY; without even the implied warranty of
~ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ * GNU General Public License for more details.
~ *
~ * You should have received a copy of the GNU General Public License
~ * along with this program. If not, see <http://www.gnu.org/licenses/>.
~ */
-->
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -2,10 +2,12 @@
<!--
~ Nextcloud Talk application
~
~ @author Mario Danic
~ Copyright (C) 2017-2019 Mario Danic <mario@lovelyhq.com>
~ @author Andy Scherzinger
~ @author Daniel Bailey
~ @author Mario Danic
~ Copyright (C) 2021 Andy Scherzinger <info@andy-scherzinger.de>
~ Copyright (C) 2019 Daniel Bailey <db@grappleIT.co.uk>
~ Copyright (C) 2017-2019 Mario Danic <mario@lovelyhq.com>
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
@ -22,16 +24,19 @@
-->
<resources>
<color name="conversation_item_header">#ffffff</color>
<color name="conversation_item_header">#deffffff</color>
<color name="bg_default">#222222</color>
<color name="bg_alt">#222222</color>
<color name="bg_default">#121212</color>
<color name="bg_alt">#121212</color>
<color name="nc_darkGreen">#00AA00</color>
<color name="conversation_unread_bubble">#373737</color>
<color name="conversation_unread_bubble_text">#D8D8D8</color>
<!-- Chat window incoming message text & informational -->
<color name="nc_incoming_text_default">#D8D8D8</color>
<color name="nc_grey">@android:color/holo_purple</color>
<color name="bg_bottom_sheet">#222222</color>
<color name="bg_bottom_sheet">#121212</color>
<color name="bg_message_list_incoming_bubble">#484848</color>
<color name="bg_message_list_incoming_bubble_deleted">#66484848</color>

View File

@ -3,6 +3,8 @@
~ Nextcloud Talk application
~
~ @author Mario Danic
~ @author Andy Scherzinger
~ Copyright (C) 2021 Andy Scherzinger <info@andy-scherzinger.de>
~ Copyright (C) 2017-2019 Mario Danic <mario@lovelyhq.com>
~
~ This program is free software: you can redistribute it and/or modify
@ -30,7 +32,8 @@
<!-- Name of person or group for the chat conversation -->
<color name="conversation_item_header">#000000</color>
<color name="conversation_unread_bubble">#FFFFFF</color>
<color name="conversation_unread_bubble">#DBDBDB</color>
<color name="conversation_unread_bubble_text">#222222</color>
<color name="nc_darkRed">#D32F2F</color>
<color name="nc_darkGreen">#006400</color>
@ -59,5 +62,5 @@
<color name="bg_bottom_sheet">#46ffffff</color>
<color name="call_buttons_background">#BF999999</color>
<color name="favorite_icon_tint">#FFCC00</color>
</resources>

View File

@ -2,6 +2,8 @@
~ Nextcloud Talk application
~
~ @author Mario Danic
~ @author Andy Scherzinger
~ Copyright (C) 2021 Andy Scherzinger <info@andy-scherzinger.de>
~ Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
~
~ This program is free software: you can redistribute it and/or modify
@ -356,4 +358,5 @@
<!-- Non-translatable strings -->
<string name="path_password_strike_through" translatable="false"
tools:override="true">M3.27,4.27L19.74,20.74</string>
<string name="tooManyUnreadMessages" translatable="false">999+</string>
</resources>

View File

@ -2,6 +2,8 @@
~ Nextcloud Talk application
~
~ @author Mario Danic
~ @author Andy Scherzinger
~ Copyright (C) 2021 Andy Scherzinger <info@andy-scherzinger.de>
~ Copyright (C) 2017-2019 Mario Danic <mario@lovelyhq.com>
~
~ This program is free software: you can redistribute it and/or modify
@ -26,6 +28,7 @@
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="android:windowBackground">@color/bg_default</item>
<item name="android:panelFullBackground">@color/colorPrimary</item>
<item name="android:itemBackground">@color/nc_outcoming_text_default</item>
<item name="android:textColor">@color/nc_incoming_text_default</item>
@ -55,6 +58,11 @@
<item name="android:textColor">@color/colorPrimary</item>
</style>
<style name="ChipUnreadMessagesTextAppearance" parent="TextAppearance.MaterialComponents.Chip">
<item name="android:textSize">14sp</item>
<item name="android:textStyle">bold</item>
</style>
<style name="appActionBarStyle" parent="@style/Widget.MaterialComponents.ActionBar.Solid">
<item name="android:colorPrimary">@color/fg_inverse</item>
<item name="android:textColor">@color/fg_inverse</item>

View File

@ -8,6 +8,8 @@
#6: DRONE_BUILD_NUMBER
#7: PULL_REQUEST_NUMBER
stableBranch="master"
ruby scripts/analysis/lint-up.rb $1 $2 $3
lintValue=$?
@ -50,11 +52,28 @@ else
done
# add comment with results
lintResultNew=$(grep "Lint Report.* [0-9]* warnings" app/build/reports/lint/lint.html | cut -f2 -d':' |cut -f1 -d'<')
lintResultNew=$(grep "Lint Report.* [0-9]* warning" app/build/reports/lint/lint.html | cut -f2 -d':' |cut -f1 -d'<')
lintErrorNew=$(echo $lintResultNew | grep "[0-9]* error" -o | cut -f1 -d" ")
if ( [ -z $lintErrorNew ] ); then
lintErrorNew=0
fi
lintWarningNew=$(echo $lintResultNew | grep "[0-9]* warning" -o | cut -f1 -d" ")
lintErrorOld=$(grep "[0-9]* error" scripts/analysis/lint-results.txt -o | cut -f1 -d" ")
lintWarningOld=$(grep "[0-9]* warning" scripts/analysis/lint-results.txt -o | cut -f1 -d" ")
if ( [ -z $lintWarningNew ] ); then
lintWarningNew=0
fi
lintResultOld=$(curl 2>/dev/null https://raw.githubusercontent.com/nextcloud/talk-android/$stableBranch/scripts/analysis/lint-results.txt)
lintErrorOld=$(echo $lintResultOld | grep "[0-9]* error" -o | cut -f1 -d" ")
if ( [ -z $lintErrorOld ] ); then
lintErrorOld=0
fi
lintWarningOld=$(echo $lintResultOld | grep "[0-9]* warning" -o | cut -f1 -d" ")
if ( [ -z $lintWarningOld ] ); then
lintWarningOld=0
fi
lintResult="<h1>Lint</h1><table width='500' cellpadding='5' cellspacing='2'><tr class='tablerow0'><td>Type</td><td><a href='https://www.kaminsky.me/nc-dev/talk-lint/master.html'>Master</a></td><td><a href='https://www.kaminsky.me/nc-dev/talk-lint/"$6".html'>PR</a></td></tr><tr class='tablerow1'><td>Warnings</td><td>"$lintWarningOld"</td><td>"$lintWarningNew"</td></tr><tr class='tablerow0'><td>Errors</td><td>"$lintErrorOld"</td><td>"$lintErrorNew"</td></tr></table>"
findbugsResultNew=$(sed -n "/<h1>Summary<\/h1>/,/<h1>Warnings<\/h1>/p" app/build/reports/findbugs/findbugs.html |head -n-1 | sed s'/<\/a>//'g | sed s'/<a.*>//'g | sed s"#Summary#<a href=\"https://www.kaminsky.me/nc-dev/talk-findbugs/$6.html\">FindBugs</a> (new)#" | tr "\"" "\'" | tr -d "\n")
findbugsResultOld=$(curl 2>/dev/null https://www.kaminsky.me/nc-dev/talk-findbugs/findbugs-summary-master.html | tr "\"" "\'" | tr -d "\r\n" | sed s'#FindBugs#<a href=\"https://www.kaminsky.me/nc-dev/talk-findbugs/master.html">FindBugs</a>#'| tr "\"" "\'" | tr -d "\n")

View File

@ -1,2 +1,2 @@
DO NOT TOUCH; GENERATED BY DRONE
<span class="mdl-layout-title">Lint Report: 3 errors and 132 warnings</span>
<span class="mdl-layout-title">Lint Report: 3 errors and 131 warnings</span>