blob: fa1e6fa02494394d9cf1f8b585dd3cc3916a50a2 [file] [log] [blame]
Alexandre Savard14323be2012-10-24 10:02:13 -04001/*
alisionb1763882013-06-18 17:30:51 -04002 * Copyright (C) 2004-2013 Savoir-Faire Linux Inc.
Alexandre Savard14323be2012-10-24 10:02:13 -04003 *
4 * Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
Adrien Béraud71b2f812013-04-26 18:51:02 +10005 * Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com>
alisionfde875f2013-05-28 17:01:54 -04006 * Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
Alexandre Savard14323be2012-10-24 10:02:13 -04007 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 *
22 * Additional permission under GNU GPL version 3 section 7:
23 *
24 * If you modify this program, or any covered work, by linking or
25 * combining it with the OpenSSL project's OpenSSL library (or a
26 * modified version of that library), containing parts covered by the
27 * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
28 * grants you additional permission to convey the resulting work.
29 * Corresponding Source for a non-source form of such a combination
30 * shall include the source code for the parts of OpenSSL used as well
31 * as that of the covered work.
32 */
33
Alexandre Lision064e1e02013-10-01 16:18:42 -040034package org.sflphone.client;
Alexandre Savard14323be2012-10-24 10:02:13 -040035
Alexandre Lisiond5686032013-10-29 11:09:21 -040036import java.util.ArrayList;
alision85704182013-05-29 15:23:03 -040037import java.util.HashMap;
Adrien Béraud33268882013-05-18 03:41:15 +100038
Alexandre Lision064e1e02013-10-01 16:18:42 -040039import org.sflphone.R;
40import org.sflphone.fragments.CallFragment;
Alexandre Lision666b3772013-10-28 17:42:48 -040041import org.sflphone.fragments.IMFragment;
Alexandre Lision064e1e02013-10-01 16:18:42 -040042import org.sflphone.interfaces.CallInterface;
Alexandre Lisiond588bff2013-10-08 12:43:01 -040043import org.sflphone.model.Account;
Alexandre Lision064e1e02013-10-01 16:18:42 -040044import org.sflphone.model.CallContact;
45import org.sflphone.model.Conference;
46import org.sflphone.model.SipCall;
Alexandre Lision666b3772013-10-28 17:42:48 -040047import org.sflphone.model.SipMessage;
Alexandre Lision064e1e02013-10-01 16:18:42 -040048import org.sflphone.receivers.CallReceiver;
49import org.sflphone.service.CallManagerCallBack;
50import org.sflphone.service.ISipService;
51import org.sflphone.service.SipService;
Alexandre Lisionb8add812013-10-24 11:42:42 -040052import org.sflphone.utils.CallProximityManager;
53import org.sflphone.utils.CallProximityManager.ProximityDirector;
Alexandre Lision064e1e02013-10-01 16:18:42 -040054import org.sflphone.views.CallPaneLayout;
55
Alexandre Savard14323be2012-10-24 10:02:13 -040056import android.app.Activity;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040057import android.content.ComponentName;
alision17052d42013-04-22 10:39:38 -040058import android.content.Context;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040059import android.content.Intent;
alision84813a12013-05-27 17:40:39 -040060import android.content.IntentFilter;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040061import android.content.ServiceConnection;
Alexandre Lision0edf18c2013-09-23 17:35:50 -040062import android.graphics.PixelFormat;
alision55c36cb2013-06-14 14:57:38 -040063import android.net.Uri;
Alexandre Savard14323be2012-10-24 10:02:13 -040064import android.os.Bundle;
Alexandre Lision0c384512013-09-17 17:15:57 -040065import android.os.Handler;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040066import android.os.IBinder;
alision85992112013-05-29 12:18:08 -040067import android.os.RemoteException;
Alexandre Lision0c384512013-09-17 17:15:57 -040068import android.os.SystemClock;
alisionfde875f2013-05-28 17:01:54 -040069import android.support.v4.widget.SlidingPaneLayout;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040070import android.util.Log;
Alexandre Lision64dc8c02013-09-25 15:32:25 -040071import android.view.KeyEvent;
alisionfde875f2013-05-28 17:01:54 -040072import android.view.View;
Alexandre Lision0edf18c2013-09-23 17:35:50 -040073import android.view.Window;
Adrien Béraud33268882013-05-18 03:41:15 +100074import android.widget.Toast;
Alexandre Savard14323be2012-10-24 10:02:13 -040075
Alexandre Lision666b3772013-10-28 17:42:48 -040076public class CallActivity extends Activity implements CallInterface, IMFragment.Callbacks, CallFragment.Callbacks, ProximityDirector {
alision55c36cb2013-06-14 14:57:38 -040077 static final String TAG = "CallActivity";
78 private ISipService service;
alision84813a12013-05-27 17:40:39 -040079
alision55c36cb2013-06-14 14:57:38 -040080 CallReceiver receiver;
alision85992112013-05-29 12:18:08 -040081
alision55c36cb2013-06-14 14:57:38 -040082 CallPaneLayout slidingPaneLayout;
Adrien Béraud33268882013-05-18 03:41:15 +100083
Alexandre Lision666b3772013-10-28 17:42:48 -040084 IMFragment mIMFragment;
alision55c36cb2013-06-14 14:57:38 -040085 CallFragment mCurrentCallFragment;
Alexandre Lision0edf18c2013-09-23 17:35:50 -040086 // private boolean fragIsChanging;
Alexandre Lision1a9e3b12013-09-16 11:06:07 -040087
Alexandre Lisionf1850c02013-09-23 14:19:34 -040088 /* result code sent in case of call failure */
Alexandre Lisionc51ccb12013-09-11 16:00:30 -040089 public static int RESULT_FAILURE = -10;
Alexandre Lision666b3772013-10-28 17:42:48 -040090
Alexandre Lisionb8add812013-10-24 11:42:42 -040091 private CallProximityManager proximityManager;
Alexandre Savard4f42ade2012-10-24 18:03:31 -040092
alision55c36cb2013-06-14 14:57:38 -040093 @Override
94 protected void onCreate(Bundle savedInstanceState) {
95 super.onCreate(savedInstanceState);
96 setContentView(R.layout.activity_call_layout);
Alexandre Savard4f42ade2012-10-24 18:03:31 -040097
alision55c36cb2013-06-14 14:57:38 -040098 receiver = new CallReceiver(this);
Adrien Béraud33268882013-05-18 03:41:15 +100099
Alexandre Lisionb8add812013-10-24 11:42:42 -0400100 proximityManager = new CallProximityManager(this, this);
alision85992112013-05-29 12:18:08 -0400101
alision55c36cb2013-06-14 14:57:38 -0400102 slidingPaneLayout = (CallPaneLayout) findViewById(R.id.slidingpanelayout);
alisiondf1dac92013-06-27 17:35:53 -0400103
alision55c36cb2013-06-14 14:57:38 -0400104 slidingPaneLayout.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() {
alision84813a12013-05-27 17:40:39 -0400105
alision55c36cb2013-06-14 14:57:38 -0400106 @Override
107 public void onPanelSlide(View view, float offSet) {
108 }
alisionfde875f2013-05-28 17:01:54 -0400109
alision55c36cb2013-06-14 14:57:38 -0400110 @Override
111 public void onPanelOpened(View view) {
alisionfde875f2013-05-28 17:01:54 -0400112
alision55c36cb2013-06-14 14:57:38 -0400113 }
alisionfde875f2013-05-28 17:01:54 -0400114
alision55c36cb2013-06-14 14:57:38 -0400115 @Override
116 public void onPanelClosed(View view) {
Alexandre Lision666b3772013-10-28 17:42:48 -0400117 mCurrentCallFragment.getBubbleView().restartDrawing();
alision55c36cb2013-06-14 14:57:38 -0400118 }
119 });
alisionfde875f2013-05-28 17:01:54 -0400120
Alexandre Lisionb8add812013-10-24 11:42:42 -0400121 proximityManager.startTracking();
alision55c36cb2013-06-14 14:57:38 -0400122 Intent intent = new Intent(this, SipService.class);
123 bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
alision55c36cb2013-06-14 14:57:38 -0400124 }
alisiond45da712013-05-30 09:18:49 -0400125
alision55c36cb2013-06-14 14:57:38 -0400126 /* activity gets back to the foreground and user input */
127 @Override
128 protected void onResume() {
129 Log.i(TAG, "onResume");
130 IntentFilter intentFilter = new IntentFilter();
131 intentFilter.addAction(CallManagerCallBack.INCOMING_CALL);
132 intentFilter.addAction(CallManagerCallBack.INCOMING_TEXT);
133 intentFilter.addAction(CallManagerCallBack.CALL_STATE_CHANGED);
alisiondf1dac92013-06-27 17:35:53 -0400134 intentFilter.addAction(CallManagerCallBack.CONF_CREATED);
135 intentFilter.addAction(CallManagerCallBack.CONF_REMOVED);
136 intentFilter.addAction(CallManagerCallBack.CONF_CHANGED);
137 intentFilter.addAction(CallManagerCallBack.RECORD_STATE_CHANGED);
alision55c36cb2013-06-14 14:57:38 -0400138 registerReceiver(receiver, intentFilter);
Alexandre Lision0c384512013-09-17 17:15:57 -0400139
alision55c36cb2013-06-14 14:57:38 -0400140 super.onResume();
141 }
alisiond45da712013-05-30 09:18:49 -0400142
Alexandre Lision0edf18c2013-09-23 17:35:50 -0400143 @Override
144 public void onAttachedToWindow() {
145 super.onAttachedToWindow();
146 Window window = getWindow();
147 window.setFormat(PixelFormat.RGBA_8888);
148 }
149
Alexandre Lision0c384512013-09-17 17:15:57 -0400150 private Handler mHandler = new Handler();
151 private Runnable mUpdateTimeTask = new Runnable() {
Adrien Béraud9360f242013-09-19 11:07:42 +1000152 @Override
Alexandre Lision0c384512013-09-17 17:15:57 -0400153 public void run() {
Alexandre Lision0edf18c2013-09-23 17:35:50 -0400154 if (mCurrentCallFragment != null)
Alexandre Lisionfd7a88f2013-09-18 10:03:17 -0400155 mCurrentCallFragment.updateTime();
Alexandre Lision0edf18c2013-09-23 17:35:50 -0400156 // mCallsFragment.update();
Alexandre Lision0c384512013-09-17 17:15:57 -0400157
Adrien Béraud9360f242013-09-19 11:07:42 +1000158 mHandler.postAtTime(this, SystemClock.uptimeMillis() + 1000);
Alexandre Lision0c384512013-09-17 17:15:57 -0400159 }
160 };
161
alision55c36cb2013-06-14 14:57:38 -0400162 /* activity no more in foreground */
163 @Override
164 protected void onPause() {
165 super.onPause();
Alexandre Lision0c384512013-09-17 17:15:57 -0400166 mHandler.removeCallbacks(mUpdateTimeTask);
alision55c36cb2013-06-14 14:57:38 -0400167 }
Alexandre Lision40954dc2013-10-09 15:24:03 -0400168
Alexandre Lision64dc8c02013-09-25 15:32:25 -0400169 @Override
170 public boolean onKeyUp(int keyCode, KeyEvent event) {
Alexandre Lision40954dc2013-10-09 15:24:03 -0400171
172 if (keyCode == KeyEvent.KEYCODE_BACK) {
Alexandre Lision31f46fc2013-09-26 11:19:54 -0400173 return super.onKeyUp(keyCode, event);
174 }
Alexandre Lision64dc8c02013-09-25 15:32:25 -0400175 mCurrentCallFragment.onKeyUp(keyCode, event);
176 return true;
177 }
Alexandre Savard6d54bbc2012-10-24 11:04:23 -0400178
alision55c36cb2013-06-14 14:57:38 -0400179 @Override
180 protected void onDestroy() {
alision55c36cb2013-06-14 14:57:38 -0400181 unregisterReceiver(receiver);
alision55c36cb2013-06-14 14:57:38 -0400182 unbindService(mConnection);
Alexandre Lisionb8add812013-10-24 11:42:42 -0400183 proximityManager.stopTracking();
184 proximityManager.release(0);
alision55c36cb2013-06-14 14:57:38 -0400185 super.onDestroy();
186 }
Adrien Béraud33268882013-05-18 03:41:15 +1000187
alision55c36cb2013-06-14 14:57:38 -0400188 /** Defines callbacks for service binding, passed to bindService() */
189 private ServiceConnection mConnection = new ServiceConnection() {
190 @Override
191 public void onServiceConnected(ComponentName className, IBinder binder) {
192 service = ISipService.Stub.asInterface(binder);
alisiondf1dac92013-06-27 17:35:53 -0400193
alision55c36cb2013-06-14 14:57:38 -0400194 mCurrentCallFragment = new CallFragment();
Alexandre Lisiond5686032013-10-29 11:09:21 -0400195 mIMFragment = new IMFragment();
Adrien Béraud9360f242013-09-19 11:07:42 +1000196
alision55c36cb2013-06-14 14:57:38 -0400197 Uri u = getIntent().getData();
198 if (u != null) {
199 CallContact c = CallContact.ContactBuilder.buildUnknownContact(u.getSchemeSpecificPart());
200 try {
201 service.destroyNotification();
Alexandre Lision666b3772013-10-28 17:42:48 -0400202
Alexandre Lisiond5686032013-10-29 11:09:21 -0400203 String accountID = (String) service.getAccountList().get(1); // We use the first account to place outgoing calls
Alexandre Lision666b3772013-10-28 17:42:48 -0400204 Account acc = new Account(accountID, (HashMap<String, String>) service.getAccountDetails(accountID));
205
206 SipCall call = SipCall.SipCallBuilder.getInstance().startCallCreation().setContact(c).setAccount(acc)
207 .setCallType(SipCall.state.CALL_TYPE_OUTGOING).build();
alisiondf1dac92013-06-27 17:35:53 -0400208 Conference tmp = new Conference("-1");
209 tmp.getParticipants().add(call);
alision55c36cb2013-06-14 14:57:38 -0400210 Bundle b = new Bundle();
alisiondf1dac92013-06-27 17:35:53 -0400211 b.putParcelable("conference", tmp);
alision55c36cb2013-06-14 14:57:38 -0400212 mCurrentCallFragment.setArguments(b);
213 } catch (RemoteException e) {
alision55c36cb2013-06-14 14:57:38 -0400214 e.printStackTrace();
215 } catch (Exception e) {
alision55c36cb2013-06-14 14:57:38 -0400216 e.printStackTrace();
217 }
alision55c36cb2013-06-14 14:57:38 -0400218 } else {
alisiondf1dac92013-06-27 17:35:53 -0400219 if (getIntent().getBooleanExtra("resuming", false)) {
220
221 Bundle b = new Bundle();
Alexandre Lisiond5686032013-10-29 11:09:21 -0400222 Conference resumed = getIntent().getParcelableExtra("conference");
Adrien Béraud9360f242013-09-19 11:07:42 +1000223 b.putParcelable("conference", getIntent().getParcelableExtra("conference"));
Alexandre Lision1a9e3b12013-09-16 11:06:07 -0400224 mCurrentCallFragment.setArguments(b);
225
Alexandre Lisiond5686032013-10-29 11:09:21 -0400226 Bundle IMBundle = new Bundle();
227 IMBundle.putParcelableArrayList("messages", resumed.getMessages());
228 mIMFragment.setArguments(IMBundle);
229
alisiondf1dac92013-06-27 17:35:53 -0400230 } else {
231 mCurrentCallFragment.setArguments(getIntent().getExtras());
Alexandre Lisiond5686032013-10-29 11:09:21 -0400232
233 Bundle IMBundle = new Bundle();
234 IMBundle.putParcelableArrayList("messages", new ArrayList<SipMessage>());
235 mIMFragment.setArguments(IMBundle);
alisiondf1dac92013-06-27 17:35:53 -0400236 }
237
alision55c36cb2013-06-14 14:57:38 -0400238 }
Alexandre Lisiond5686032013-10-29 11:09:21 -0400239
Alexandre Lision666b3772013-10-28 17:42:48 -0400240 slidingPaneLayout.setCurFragment(mCurrentCallFragment);
alision55c36cb2013-06-14 14:57:38 -0400241 getIntent().getExtras();
Alexandre Lision0edf18c2013-09-23 17:35:50 -0400242 // mCallsFragment.update();
alision55c36cb2013-06-14 14:57:38 -0400243 getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment).commit();
Alexandre Lision666b3772013-10-28 17:42:48 -0400244 getFragmentManager().beginTransaction().replace(R.id.message_list_frame, mIMFragment).commit();
alisiond8c83882013-05-17 17:00:42 -0400245
alision55c36cb2013-06-14 14:57:38 -0400246 }
Adrien Béraud6bbce912013-05-24 00:48:13 +1000247
alision55c36cb2013-06-14 14:57:38 -0400248 @Override
249 public void onServiceDisconnected(ComponentName arg0) {
250 }
251 };
Adrien Béraud6bbce912013-05-24 00:48:13 +1000252
alision55c36cb2013-06-14 14:57:38 -0400253 @Override
254 public void incomingCall(Intent call) {
Alexandre Lisiondafe9512013-10-28 16:31:41 -0400255 Bundle b = new Bundle();
256 Conference tmp = new Conference("-1");
Alexandre Lision666b3772013-10-28 17:42:48 -0400257 tmp.getParticipants().add((SipCall) call.getParcelableExtra("newcall"));
Alexandre Lisiondafe9512013-10-28 16:31:41 -0400258 b.putParcelable("conference", tmp);
259 mCurrentCallFragment = new CallFragment();
260 mCurrentCallFragment.setArguments(b);
261 getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment).commit();
Alexandre Lision666b3772013-10-28 17:42:48 -0400262 slidingPaneLayout.setCurFragment(mCurrentCallFragment);
Alexandre Savarddf544262012-10-25 14:24:08 -0400263
alision55c36cb2013-06-14 14:57:38 -0400264 }
alision84813a12013-05-27 17:40:39 -0400265
alision55c36cb2013-06-14 14:57:38 -0400266 @Override
267 public void callStateChanged(Intent callState) {
alision84813a12013-05-27 17:40:39 -0400268
alision55c36cb2013-06-14 14:57:38 -0400269 Bundle b = callState.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate");
270 processCallStateChangedSignal(b.getString("CallID"), b.getString("State"));
alision84813a12013-05-27 17:40:39 -0400271
alision55c36cb2013-06-14 14:57:38 -0400272 }
alision84813a12013-05-27 17:40:39 -0400273
Alexandre Lision0edf18c2013-09-23 17:35:50 -0400274 @SuppressWarnings("unchecked")
275 // No proper solution with HashMap runtime cast
alision55c36cb2013-06-14 14:57:38 -0400276 public void processCallStateChangedSignal(String callID, String newState) {
alision84813a12013-05-27 17:40:39 -0400277
Alexandre Lision4fb22622013-10-21 16:26:33 -0400278 if (mCurrentCallFragment != null) {
Alexandre Lisiona764c682013-09-09 10:02:07 -0400279 mCurrentCallFragment.changeCallState(callID, newState);
Alexandre Lision4fb22622013-10-21 16:26:33 -0400280 }
Adrien Béraud29556042013-04-26 17:35:43 +1000281
Alexandre Lisionb8add812013-10-24 11:42:42 -0400282 proximityManager.updateProximitySensorMode();
Alexandre Lision666b3772013-10-28 17:42:48 -0400283
alision55c36cb2013-06-14 14:57:38 -0400284 try {
alisiondf1dac92013-06-27 17:35:53 -0400285 HashMap<String, SipCall> callMap = (HashMap<String, SipCall>) service.getCallList();
286 HashMap<String, Conference> confMap = (HashMap<String, Conference>) service.getConferenceList();
Alexandre Lision3c6b7102013-09-16 16:56:46 -0400287
alision55c36cb2013-06-14 14:57:38 -0400288 } catch (RemoteException e) {
Alexandre Lision3c6b7102013-09-16 16:56:46 -0400289
alision55c36cb2013-06-14 14:57:38 -0400290 Log.e(TAG, e.toString());
291 }
Adrien Béraud29556042013-04-26 17:35:43 +1000292
alision55c36cb2013-06-14 14:57:38 -0400293 Log.w(TAG, "processCallStateChangedSignal " + newState);
Adrien Béraud71b2f812013-04-26 18:51:02 +1000294
alision55c36cb2013-06-14 14:57:38 -0400295 }
296
297 @Override
Alexandre Lision666b3772013-10-28 17:42:48 -0400298 public void incomingText(Intent in) {
299 Bundle b = in.getBundleExtra("com.savoirfairelinux.sflphone.service.newtext");
Alexandre Lisiond5686032013-10-29 11:09:21 -0400300
301 if (mIMFragment != null) {
Alexandre Lision666b3772013-10-28 17:42:48 -0400302 SipMessage msg = new SipMessage(true, b.getString("Msg"));
303 mIMFragment.putMessage(msg);
304 }
Adrien Béraud71b2f812013-04-26 18:51:02 +1000305
alision55c36cb2013-06-14 14:57:38 -0400306 }
alision7f18fc82013-05-01 09:37:33 -0400307
alision55c36cb2013-06-14 14:57:38 -0400308 @Override
309 public ISipService getService() {
310 return service;
311 }
alision04a00182013-05-10 17:05:29 -0400312
alision55c36cb2013-06-14 14:57:38 -0400313 @Override
314 public void onBackPressed() {
315 super.onBackPressed();
316 Intent launchHome = new Intent(this, SFLPhoneHomeActivity.class);
317 launchHome.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Alexandre Lision5ed2c972013-10-11 15:36:33 -0400318 launchHome.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
alision55c36cb2013-06-14 14:57:38 -0400319 startActivity(launchHome);
320 }
alision85992112013-05-29 12:18:08 -0400321
alision806e18e2013-06-21 15:30:17 -0400322 @Override
323 public void confCreated(Intent intent) {
Alexandre Lision0edf18c2013-09-23 17:35:50 -0400324 // mCallsFragment.update();
alision34673e62013-06-25 14:40:07 -0400325
alision806e18e2013-06-21 15:30:17 -0400326 }
327
328 @Override
329 public void confRemoved(Intent intent) {
Alexandre Lision0edf18c2013-09-23 17:35:50 -0400330 // mCallsFragment.update();
alision806e18e2013-06-21 15:30:17 -0400331 }
332
333 @Override
334 public void confChanged(Intent intent) {
Alexandre Lision0edf18c2013-09-23 17:35:50 -0400335 // mCallsFragment.update();
alision806e18e2013-06-21 15:30:17 -0400336 }
337
alisiondf1dac92013-06-27 17:35:53 -0400338 @Override
339 public void recordingChanged(Intent intent) {
Alexandre Lision0edf18c2013-09-23 17:35:50 -0400340 // mCallsFragment.update();
alisiondf1dac92013-06-27 17:35:53 -0400341 }
342
Alexandre Lisionccf0c932013-10-10 16:24:41 -0400343 @Override
Alexandre Lisiondafe9512013-10-28 16:31:41 -0400344 public void terminateCall() {
Alexandre Lisionccf0c932013-10-10 16:24:41 -0400345 mHandler.removeCallbacks(mUpdateTimeTask);
346 mCurrentCallFragment.getBubbleView().stopThread();
Alexandre Lision666b3772013-10-28 17:42:48 -0400347 // getFragmentManager().beginTransaction().remove(mCurrentCallFragment).commit();
348 // mCurrentCallFragment = null;
Alexandre Lision5ed2c972013-10-11 15:36:33 -0400349 finish();
Alexandre Lisionccf0c932013-10-10 16:24:41 -0400350
351 }
alision806e18e2013-06-21 15:30:17 -0400352
Alexandre Lision0c384512013-09-17 17:15:57 -0400353 @Override
Alexandre Lisiond5686032013-10-29 11:09:21 -0400354 public boolean sendIM(SipMessage msg) {
355
356 try {
357 service.sendTextMessage(mCurrentCallFragment.getConference().getId(), msg);
358 } catch (RemoteException e) {
359 e.printStackTrace();
360 return false;
361 }
362
363 return true;
364 }
365
366 @Override
Alexandre Lision0c384512013-09-17 17:15:57 -0400367 public void startTimer() {
368 mHandler.postDelayed(mUpdateTimeTask, 0);
369 }
370
Alexandre Lision40954dc2013-10-09 15:24:03 -0400371 public void onCallSuspended() {
372 try {
373 if (mCurrentCallFragment.getConference().hasMultipleParticipants()) {
374 service.holdConference(mCurrentCallFragment.getConference().getId());
375 } else {
376 service.hold(mCurrentCallFragment.getConference().getParticipants().get(0).getCallId());
377 }
378 } catch (RemoteException e) {
Alexandre Lision40954dc2013-10-09 15:24:03 -0400379 e.printStackTrace();
380 }
381 }
Alexandre Lision68855472013-10-10 16:20:46 -0400382
383 @Override
384 public void slideChatScreen() {
Alexandre Lision666b3772013-10-28 17:42:48 -0400385
386 if (slidingPaneLayout.isOpen()) {
387 slidingPaneLayout.closePane();
388 } else {
389 mCurrentCallFragment.getBubbleView().stopThread();
390 slidingPaneLayout.openPane();
391 }
Alexandre Lision68855472013-10-10 16:20:46 -0400392 }
Alexandre Lisionb8add812013-10-24 11:42:42 -0400393
394 @Override
395 public boolean shouldActivateProximity() {
396 return true;
397 }
398
399 @Override
400 public void onProximityTrackingChanged(boolean acquired) {
401 // TODO Stub de la méthode généré automatiquement
Alexandre Lision666b3772013-10-28 17:42:48 -0400402
Alexandre Lisionb8add812013-10-24 11:42:42 -0400403 }
Alexandre Savard14323be2012-10-24 10:02:13 -0400404}