* #25270 Overall improvements of transitions between calls and call actions
* #25117 Refactor and stability
diff --git a/src/com/savoirfairelinux/sflphone/model/BubblesView.java b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
index f365ec2..0e3864a 100644
--- a/src/com/savoirfairelinux/sflphone/model/BubblesView.java
+++ b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
@@ -34,13 +34,11 @@
 

 import java.util.List;

 

-import android.app.FragmentManager;

 import android.content.Context;

 import android.graphics.Canvas;

 import android.graphics.Color;

 import android.graphics.Paint;

 import android.graphics.Paint.Align;

-import android.os.Bundle;

 import android.os.Handler;

 import android.os.Message;

 import android.util.AttributeSet;

@@ -56,7 +54,6 @@
 

 import com.savoirfairelinux.sflphone.client.CallActivity;

 import com.savoirfairelinux.sflphone.fragments.CallFragment;

-import com.savoirfairelinux.sflphone.fragments.TransferDFragment;

 

 public class BubblesView extends SurfaceView implements SurfaceHolder.Callback, OnTouchListener {

     private static final String TAG = BubblesView.class.getSimpleName();

@@ -279,8 +276,18 @@
                         canvas.drawText(first_plan.associated_call.getContact().getmDisplayName(), first_plan.getPosX(), first_plan.getPosY() - 50

                                 * density, getNamePaint(first_plan));

                         canvas.drawText("Transfer", first_plan.getPosX(), first_plan.getPosY() + 70 * density, getNamePaint(first_plan));

-                        canvas.drawText("Hold", first_plan.getPosX() - 70 * density, first_plan.getPosY(), getNamePaint(first_plan));

-                        canvas.drawText("Record", first_plan.getPosX() + 70 * density, first_plan.getPosY(), getNamePaint(first_plan));

+                        if (first_plan.associated_call.isOnHold()) {

+                            canvas.drawText("Unhold", first_plan.getPosX() - 70 * density, first_plan.getPosY(), getNamePaint(first_plan));

+                        } else {

+                            canvas.drawText("Hold", first_plan.getPosX() - 70 * density, first_plan.getPosY(), getNamePaint(first_plan));

+                        }

+                        if (first_plan.associated_call.isRecording()) {

+                            canvas.drawText("Stop\nRecording", first_plan.getPosX() + 70 * density, first_plan.getPosY(), getNamePaint(first_plan));

+                        } else {

+                            canvas.drawText("Record", first_plan.getPosX() + 70 * density, first_plan.getPosY(), getNamePaint(first_plan));

+

+                        }

+

                     }

 

                 } catch (IndexOutOfBoundsException e) {

@@ -344,6 +351,27 @@
         return null;

     }

 

+    public void restartDrawing() {

+        if (thread != null && thread.suspendFlag) {

+            Log.i(TAG, "Relaunch drawing thread");

+            thread.setPaused(false);

+        }

+    }

+

+    public void setFragment(CallFragment callFragment) {

+        callback = callFragment;

+

+    }

+

+    public void stopThread() {

+        if (thread != null && thread.suspendFlag) {

+            Log.i(TAG, "Stop drawing thread");

+            thread.setRunning(false);

+            thread.setPaused(false);

+        }

+

+    }

+

     class MyOnGestureListener implements OnGestureListener {

         @Override

         public boolean onDown(MotionEvent event) {

@@ -360,8 +388,12 @@
                         expand.retract();

                         break;

                     case 1:

-                        Log.d("Main", "onCallSuspended");

-                        ((CallActivity) callback.getActivity()).onCallSuspended(expand.associated_call);

+                        if (expand.associated_call.isOnHold()) {

+                            ((CallActivity) callback.getActivity()).onCallResumed(expand.associated_call);

+                        } else {

+                            ((CallActivity) callback.getActivity()).onCallSuspended(expand.associated_call);

+                        }

+

                         break;

                     case 2:

                         Log.d("Main", "onRecordCall");

@@ -450,17 +482,4 @@
             return true;

         }

     }

-

-    public void restartDrawing() {

-        if (thread != null && thread.suspendFlag) {

-            Log.i(TAG, "Relaunch drawing thread");

-            thread.setPaused(false);

-        }

-    }

-

-    public void setFragment(CallFragment callFragment) {

-        callback = callFragment;

-

-    }

-

 }