contacts: unblock a contact
In the blocked contacts list, the user can unblock a contact by click
on the button.
Change-Id: I53f88b335ff1e80b39828c0ee815a8ea64ad7306
Reviewed-by: Hadrien De Sousa <hadrien.desousa@savoirfairelinux.com>
Tuleap: #1500
diff --git a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListAdapter.java b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListAdapter.java
index f4f5f4f..e2dace3 100644
--- a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListAdapter.java
@@ -32,10 +32,12 @@
public class BlackListAdapter extends RecyclerView.Adapter<BlackListViewHolder> {
+ private BlackListViewHolder.BlackListListeners mListener;
private ArrayList<BlackListViewModel> mViewModels;
- public BlackListAdapter(ArrayList<BlackListViewModel> viewModels) {
+ public BlackListAdapter(ArrayList<BlackListViewModel> viewModels, BlackListViewHolder.BlackListListeners listener) {
mViewModels = new ArrayList<>(viewModels);
+ mListener = listener;
}
public void replaceAll(ArrayList<BlackListViewModel> viewModels) {
@@ -61,6 +63,8 @@
.into(holder.mPhoto);
holder.mDisplayname.setText(viewModel.getDisplayName());
+
+ holder.bind(mListener, viewModel);
}
@Override
diff --git a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListFragment.java b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListFragment.java
index c28980d..974d27e 100644
--- a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListFragment.java
@@ -42,7 +42,8 @@
import cx.ring.client.AccountEditionActivity;
import cx.ring.mvp.BaseFragment;
-public class BlackListFragment extends BaseFragment<BlackListPresenter> implements BlackListView {
+public class BlackListFragment extends BaseFragment<BlackListPresenter> implements BlackListView,
+ BlackListViewHolder.BlackListListeners {
public static final String TAG = BlackListFragment.class.getSimpleName();
@@ -109,6 +110,11 @@
}
@Override
+ public void onUnblockClick(BlackListViewModel viewModel) {
+ mBlackListPresenter.unblockClicked(viewModel);
+ }
+
+ @Override
public void updateView(final ArrayList<BlackListViewModel> list) {
RingApplication.uiHandler.post(new Runnable() {
@Override
@@ -116,7 +122,7 @@
if (mBlacklist.getAdapter() != null) {
mAdapter.replaceAll(list);
} else {
- mAdapter = new BlackListAdapter(list);
+ mAdapter = new BlackListAdapter(list, BlackListFragment.this);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
mBlacklist.setLayoutManager(layoutManager);
mBlacklist.setAdapter(mAdapter);
diff --git a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListViewHolder.java b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListViewHolder.java
index 5a4edc0..ddf1763 100644
--- a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListViewHolder.java
+++ b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListViewHolder.java
@@ -21,6 +21,7 @@
import android.support.v7.widget.RecyclerView;
import android.view.View;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -29,6 +30,9 @@
import cx.ring.R;
public class BlackListViewHolder extends RecyclerView.ViewHolder {
+ @BindView(R.id.unblock)
+ protected ImageButton mButtonUnblock;
+
@BindView(R.id.photo)
protected ImageView mPhoto;
@@ -40,4 +44,17 @@
super(view);
ButterKnife.bind(this, view);
}
+
+ public void bind(final BlackListListeners clickListener, final BlackListViewModel viewModel) {
+ mButtonUnblock.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ clickListener.onUnblockClick(viewModel);
+ }
+ });
+ }
+
+ public interface BlackListListeners {
+ void onUnblockClick(BlackListViewModel viewModel);
+ }
}
diff --git a/ring-android/app/src/main/res/drawable/ic_person_add_black.xml b/ring-android/app/src/main/res/drawable/ic_person_add_black.xml
new file mode 100644
index 0000000..9972ad6
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable/ic_person_add_black.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M15,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM6,10L6,7L4,7v3L1,10v2h3v3h2v-3h3v-2L6,10zM15,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"
+ android:fillColor="#000000"/>
+</vector>
diff --git a/ring-android/app/src/main/res/layout/item_contact_blacklist.xml b/ring-android/app/src/main/res/layout/item_contact_blacklist.xml
index 3d035ed..7f2ab72 100644
--- a/ring-android/app/src/main/res/layout/item_contact_blacklist.xml
+++ b/ring-android/app/src/main/res/layout/item_contact_blacklist.xml
@@ -24,7 +24,9 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toEndOf="@+id/photo"
+ android:layout_toLeftOf="@+id/unblock"
android:layout_toRightOf="@+id/photo"
+ android:layout_toStartOf="@+id/unblock"
android:ellipsize="middle"
android:gravity="start"
android:maxLines="1"
@@ -35,4 +37,16 @@
android:textSize="16sp"
tools:text="display name" />
+ <ImageButton
+ android:id="@+id/unblock"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentEnd="true"
+ android:layout_alignParentRight="true"
+ android:layout_centerVertical="true"
+ android:background="?selectableItemBackgroundBorderless"
+ android:contentDescription="@string/contact_unblock"
+ android:padding="16dp"
+ android:src="@drawable/ic_person_add_black" />
+
</RelativeLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/menu/account_edition.xml b/ring-android/app/src/main/res/menu/account_edition.xml
index 6bef2be..e1f1984 100644
--- a/ring-android/app/src/main/res/menu/account_edition.xml
+++ b/ring-android/app/src/main/res/menu/account_edition.xml
@@ -17,7 +17,7 @@
<item
android:id="@+id/menuitem_blacklist"
android:icon="@drawable/ic_block_white"
- android:title="@string/menu_item_blacklist"
+ android:title="@string/ic_blacklist_menu"
app:showAsAction="ifRoom" />
</menu>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/values/strings_content_description.xml b/ring-android/app/src/main/res/values/strings_content_description.xml
index e70dc9b..d45dc74 100644
--- a/ring-android/app/src/main/res/values/strings_content_description.xml
+++ b/ring-android/app/src/main/res/values/strings_content_description.xml
@@ -4,5 +4,6 @@
<string name="contact_quick_call_description">Quick Call</string>
<string name="contact_picture_description">Contact Picture</string>
<string name="dial_numeric_pad">Numeric dialpad</string>
+ <string name="contact_unblock">Unblock</string>
</resources>
\ No newline at end of file
diff --git a/ring-android/libringclient/src/main/java/cx/ring/contactrequests/BlackListPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/contactrequests/BlackListPresenter.java
index f0a95b1..e3a9386 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/contactrequests/BlackListPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/contactrequests/BlackListPresenter.java
@@ -106,6 +106,17 @@
updateList();
}
+ public void unblockClicked(BlackListViewModel viewModel) {
+ Account account = mAccountService.getAccount(mAccountID);
+ String contactId = viewModel.getDisplayName();
+ if (account == null || contactId == null) {
+ return;
+ }
+
+ mContactService.addContact(account.getAccountID(), contactId);
+ updateList();
+ }
+
@Override
public void update(Observable observable, ServiceEvent event) {
if (event == null) {