messaging: delete and cancel messages

Allows the ability to delete message and call history. Implements cancel messages but not functional.

Change-Id: Ic81fd4534868d1ddad186ffd8ba5e93dcea0c934
Gitlab: #576
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
index aed7060..3f8cc90 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
@@ -90,17 +90,14 @@
 import cx.ring.utils.ContentUriHandler;
 import cx.ring.utils.MediaButtonsHelper;
 import io.reactivex.Completable;
-import io.reactivex.Single;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
 
 import static android.app.Activity.RESULT_OK;
 
 public class ConversationFragment extends BaseSupportFragment<ConversationPresenter> implements
         MediaButtonsHelper.MediaButtonsHelperCallback,
-        ConversationView, SharedPreferences.OnSharedPreferenceChangeListener
-{
+        ConversationView, SharedPreferences.OnSharedPreferenceChangeListener {
     protected static final String TAG = ConversationFragment.class.getSimpleName();
 
     public static final int REQ_ADD_CONTACT = 42;
@@ -127,6 +124,8 @@
 
     private File mCurrentPhoto = null;
     private Disposable actionbarTarget = null;
+    private static int position;
+
 
     private static int getIndex(Spinner spinner, Uri myString) {
         for (int i = 0, n = spinner.getCount(); i < n; i++)
@@ -268,6 +267,13 @@
         return super.onContextItemSelected(item);
     }
 
+    public void updateAdapterItem() {
+        if(position != -1) {
+            mAdapter.notifyItemChanged(position);
+            position = -1;
+        }
+    }
+
     public void sendMessageText() {
         String message = binding.msgInputTxt.getText().toString();
         clearMsgEdit();
@@ -282,6 +288,14 @@
         presenter.selectFile();
     }
 
+    /**
+     * Used to update with the past adapter position when a long click was registered
+     * @param position
+     */
+    public void updatePosition(int position) {
+        this.position = position;
+    }
+
     public void takePicture() {
         if (!presenter.getDeviceRuntimeService().hasVideoPermission()) {
             requestPermissions(new String[]{Manifest.permission.CAMERA}, RingApplication.PERMISSIONS_REQUEST);