Skip to content
Snippets Groups Projects
Verified Commit 279f4d66 authored by Torsten Grote's avatar Torsten Grote
Browse files

Add new UnreadMessageButton class

parent d2608e28
No related branches found
No related tags found
No related merge requests found
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();
}
}
}
<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>
<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>
......@@ -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"
......
<?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>
\ No newline at end of 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>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment