Add new UnreadMessageButton class

This commit is contained in:
Torsten Grote
2016-12-21 18:04:05 -02:00
parent d2608e28ac
commit 279f4d668a
6 changed files with 160 additions and 6 deletions

View File

@@ -0,0 +1,76 @@
package org.briarproject.briar.android.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
import android.support.design.widget.FloatingActionButton;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.FrameLayout;
import android.widget.TextView;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.R;
@UiThread
@NotNullByDefault
public class UnreadMessageButton extends FrameLayout {
private final static int UP = 0, DOWN = 1;
private final FloatingActionButton fab;
private final TextView unread;
public UnreadMessageButton(Context context) {
this(context, null);
}
public UnreadMessageButton(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public UnreadMessageButton(Context context, @Nullable AttributeSet attrs,
int defStyleAttr) {
super(context, attrs, defStyleAttr);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater
.inflate(R.layout.unread_message_button, this, true);
fab = (FloatingActionButton) findViewById(R.id.fab);
unread = (TextView) findViewById(R.id.unreadCountView);
TypedArray attributes = context.obtainStyledAttributes(attrs,
R.styleable.UnreadMessageButton);
int direction = attributes
.getInteger(R.styleable.UnreadMessageButton_direction, DOWN);
setDirection(direction);
attributes.recycle();
setUnreadCount(0);
}
private void setDirection(int direction) {
if (direction == UP) {
fab.setImageResource(R.drawable.chevron_up_white);
} else if (direction == DOWN) {
fab.setImageResource(R.drawable.chevron_down_white);
} else {
throw new IllegalArgumentException();
}
}
public void setUnreadCount(int count) {
if (count == 0) {
unread.setVisibility(INVISIBLE);
fab.hide();
} else {
unread.setVisibility(VISIBLE);
unread.setText(String.valueOf(count));
if (!fab.isShown()) fab.show();
}
}
}

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M7.41,7.84L12,12.42l4.59,-4.58L18,9.25l-6,6 -6,-6z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M7.41,15.41L12,10.83l4.59,4.58L18,14l-6,-6 -6,6z"/>
</vector>

View File

@@ -2,21 +2,43 @@
<LinearLayout
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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".android.forum.ForumActivity">
<include layout="@layout/toolbar"/>
<org.briarproject.briar.android.view.BriarRecyclerView
android:id="@+id/list"
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:emptyText="@string/no_forum_posts"
app:scrollToEnd="false"/>
android:layout_weight="1">
<org.briarproject.briar.android.view.BriarRecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:emptyText="@string/no_forum_posts"
app:scrollToEnd="false"/>
<org.briarproject.briar.android.view.UnreadMessageButton
android:id="@+id/upButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
app:layout_anchorGravity="top|right"
app:direction="up"/>
<org.briarproject.briar.android.view.UnreadMessageButton
android:id="@+id/downButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
app:layout_anchorGravity="bottom|right"
app:direction="down"/>
</android.support.design.widget.CoordinatorLayout>
<org.briarproject.briar.android.view.TextInputView
android:id="@+id/text_input_container"

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<merge
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"
tools:showIn="@layout/activity_threaded_conversation">
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:fabSize="mini"
app:useCompatPadding="true"/>
<TextView
android:id="@+id/unreadCountView"
android:layout_width="wrap_content"
android:layout_height="@dimen/unread_bubble_size"
android:layout_gravity="right|top"
android:layout_marginRight="5dp"
android:layout_marginTop="10dp"
android:background="@drawable/bubble"
android:elevation="7dp"
android:gravity="center"
android:minWidth="@dimen/unread_bubble_size"
android:textColor="@color/briar_text_primary_inverse"
android:textSize="@dimen/unread_bubble_text_size"
android:textStyle="bold"
tools:text="12"/>
</merge>

View File

@@ -25,4 +25,11 @@
<attr name="fillHeight" format="boolean"/>
</declare-styleable>
<declare-styleable name="UnreadMessageButton">
<attr name="direction" format="enum">
<enum name="up" value="0"/>
<enum name="down" value="1"/>
</attr>
</declare-styleable>
</resources>