|
@@ -5,6 +5,7 @@ import android.annotation.SuppressLint;
|
5
|
5
|
import android.app.Activity;
|
6
|
6
|
import android.app.KeyguardManager;
|
7
|
7
|
import android.content.Context;
|
|
8
|
+import android.content.DialogInterface;
|
8
|
9
|
import android.content.Intent;
|
9
|
10
|
import android.graphics.Color;
|
10
|
11
|
import android.os.Bundle;
|
|
@@ -28,6 +29,8 @@ import com.alibaba.fastjson.JSONArray;
|
28
|
29
|
import com.alibaba.fastjson.JSONObject;
|
29
|
30
|
import com.qmuiteam.qmui.skin.QMUISkinManager;
|
30
|
31
|
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
|
|
32
|
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
|
|
33
|
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
|
31
|
34
|
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
|
32
|
35
|
import com.qmuiteam.qmui.widget.popup.QMUIPopups;
|
33
|
36
|
import com.qmuiteam.qmui.widget.popup.QMUIQuickAction;
|
|
@@ -36,7 +39,9 @@ import com.qmuiteam.qmui.widget.tab.QMUITabIndicator;
|
36
|
39
|
import com.qmuiteam.qmui.widget.tab.QMUITabSegment;
|
37
|
40
|
import com.tianrun.sipcall.R;
|
38
|
41
|
import com.tianrun.sipcall.SipEngine;
|
|
42
|
+import com.tianrun.sipcall.db.DBGroup;
|
39
|
43
|
import com.tianrun.sipcall.db.DBUser;
|
|
44
|
+import com.tianrun.sipcall.db.UserMeetingViews;
|
40
|
45
|
import com.tianrun.sipcall.db.UserViews;
|
41
|
46
|
import com.tianrun.sipcall.net.Net;
|
42
|
47
|
import com.tianrun.sipcall.ui.TrAdapter;
|
|
@@ -64,6 +69,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
|
64
|
69
|
private SMPercentFrameLayout localRenderLayout;
|
65
|
70
|
private SMPercentFrameLayout remoteRenderLayout;
|
66
|
71
|
private ImageButton incall_answer, incall_hangup;
|
|
72
|
+ private View imageButtonAddUser;
|
67
|
73
|
private TextView show;
|
68
|
74
|
GridView gridUser;
|
69
|
75
|
QMUITabSegment mTabSegment;
|
|
@@ -72,11 +78,13 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
|
72
|
78
|
private EngineServer engineServer;
|
73
|
79
|
|
74
|
80
|
private int callid = -1;//当前通话的id
|
|
81
|
+ private String meetingName = "";
|
75
|
82
|
private String callnumber = "未知";
|
76
|
83
|
private String callstate = "未知";
|
77
|
84
|
private int calltype = 0; //0音频1视频
|
78
|
85
|
private boolean VIDEOSTATE = false;
|
79
|
86
|
public static Intent incallIntent;
|
|
87
|
+
|
80
|
88
|
TrAdapter adapterUser;
|
81
|
89
|
|
82
|
90
|
List<DBUser> allUsers = new ArrayList<>();
|
|
@@ -160,6 +168,12 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
|
160
|
168
|
|
161
|
169
|
mTabSegment = findViewById(R.id.ScreenType);
|
162
|
170
|
mContentViewPager = findViewById(R.id.contentViewPager);
|
|
171
|
+ imageButtonAddUser = findViewById(R.id.imageButtonAddUser);
|
|
172
|
+ if (DBUser.mySelf.isManager) {
|
|
173
|
+ imageButtonAddUser.setVisibility(View.VISIBLE);
|
|
174
|
+ } else {
|
|
175
|
+ imageButtonAddUser.setVisibility(View.INVISIBLE);
|
|
176
|
+ }
|
163
|
177
|
}
|
164
|
178
|
|
165
|
179
|
private void initTabAndPager() {
|
|
@@ -195,18 +209,21 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
|
195
|
209
|
}
|
196
|
210
|
});
|
197
|
211
|
}
|
198
|
|
- public void getMembers()
|
199
|
|
- {
|
|
212
|
+
|
|
213
|
+ public void getMembers() {
|
200
|
214
|
Net.getGroupMenbers(callnumber, new HttpUtl.CallBack() {
|
201
|
215
|
@Override
|
202
|
216
|
public void onRequestComplete(int cmd, String result, Object orgs) {
|
203
|
217
|
JSONObject jo = JSONObject.parseObject(result);
|
|
218
|
+ meetingName = jo.getString("topic");
|
204
|
219
|
JSONArray array = jo.getJSONArray("members_msg");
|
205
|
220
|
allUsers.clear();
|
206
|
|
- for(Object o:array) {
|
207
|
|
- allUsers.add(new DBUser((JSONObject)o));
|
|
221
|
+ for (Object o : array) {
|
|
222
|
+ allUsers.add(new DBUser((JSONObject) o));
|
208
|
223
|
}
|
209
|
224
|
setUsers();
|
|
225
|
+
|
|
226
|
+ show.setText(meetingName + " " + callstate);
|
210
|
227
|
}
|
211
|
228
|
|
212
|
229
|
@Override
|
|
@@ -218,20 +235,23 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
|
218
|
235
|
|
219
|
236
|
public void setUsers() {
|
220
|
237
|
if (adapterUser == null) {
|
221
|
|
- adapterUser = UIUtl.setList(this, gridUser, R.layout.list_item_user, allUsers, new TrAdapter.Callback() {
|
|
238
|
+ adapterUser = UIUtl.setList(this, gridUser, R.layout.list_item_user_meeting, allUsers, new TrAdapter.Callback() {
|
222
|
239
|
@Override
|
223
|
240
|
public void initCallback(Object data, int position, View prefabView, ViewGroup parent) {
|
224
|
|
- UserViews views = null;
|
|
241
|
+ UserMeetingViews views = null;
|
225
|
242
|
if (prefabView.getTag() == null) {
|
226
|
|
- views = new UserViews();
|
|
243
|
+ views = new UserMeetingViews();
|
227
|
244
|
views.textViewName = prefabView.findViewById(R.id.textViewName);
|
228
|
245
|
views.textViewNum = prefabView.findViewById(R.id.textViewNum);
|
229
|
246
|
views.imageViewStatus = prefabView.findViewById(R.id.imageViewStatus);
|
230
|
247
|
views.imageViewAddflag = prefabView.findViewById(R.id.imageViewAddflag);
|
231
|
248
|
views.imageViewPhoneIcon = prefabView.findViewById(R.id.imageView3PhoneIcon);
|
|
249
|
+ views.memberStatus1 = prefabView.findViewById(R.id.memberStatus1);
|
|
250
|
+ views.memberStatus2 = prefabView.findViewById(R.id.memberStatus2);
|
|
251
|
+ views.memberStatus3 = prefabView.findViewById(R.id.memberStatus3);
|
232
|
252
|
prefabView.setTag(views);
|
233
|
253
|
} else {
|
234
|
|
- views = (UserViews) (prefabView.getTag());
|
|
254
|
+ views = (UserMeetingViews) (prefabView.getTag());
|
235
|
255
|
}
|
236
|
256
|
DBUser d = (DBUser) data;
|
237
|
257
|
views.textViewName.setText(d.name);
|
|
@@ -256,6 +276,9 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
|
256
|
276
|
|
257
|
277
|
@Override
|
258
|
278
|
public void clickCallback(Object data, AdapterView<?> parent, View view, int position, long id) {
|
|
279
|
+ if (!DBUser.mySelf.isManager) {
|
|
280
|
+ return;
|
|
281
|
+ }
|
259
|
282
|
DBUser d = (DBUser) data;
|
260
|
283
|
QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this,
|
261
|
284
|
QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56),
|
|
@@ -265,6 +288,128 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
|
265
|
288
|
.skinManager(QMUISkinManager.defaultInstance(InCallMeetingActivity.this))
|
266
|
289
|
.edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20));
|
267
|
290
|
if (DBUser.mySelf.isManager) {
|
|
291
|
+ if (d.isMute) {
|
|
292
|
+ qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("取消禁言").onClick(
|
|
293
|
+ new QMUIQuickAction.OnClickListener() {
|
|
294
|
+ @Override
|
|
295
|
+ public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
|
|
296
|
+ quickAction.dismiss();
|
|
297
|
+ Net.unmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
|
|
298
|
+ @Override
|
|
299
|
+ public void onRequestComplete(int cmd, String result, Object orgs) {
|
|
300
|
+ getMembers();
|
|
301
|
+ }
|
|
302
|
+
|
|
303
|
+ @Override
|
|
304
|
+ public void onRequestError(int cmd, String result, Object orgs) {
|
|
305
|
+ }
|
|
306
|
+ }, null);
|
|
307
|
+ }
|
|
308
|
+ }
|
|
309
|
+ ));
|
|
310
|
+ } else {
|
|
311
|
+ qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("禁言").onClick(
|
|
312
|
+ new QMUIQuickAction.OnClickListener() {
|
|
313
|
+ @Override
|
|
314
|
+ public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
|
|
315
|
+ quickAction.dismiss();
|
|
316
|
+ Net.muteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
|
|
317
|
+ @Override
|
|
318
|
+ public void onRequestComplete(int cmd, String result, Object orgs) {
|
|
319
|
+ getMembers();
|
|
320
|
+ }
|
|
321
|
+
|
|
322
|
+ @Override
|
|
323
|
+ public void onRequestError(int cmd, String result, Object orgs) {
|
|
324
|
+ }
|
|
325
|
+ }, null);
|
|
326
|
+ }
|
|
327
|
+ }
|
|
328
|
+ ));
|
|
329
|
+ }
|
|
330
|
+
|
|
331
|
+ if (VIDEOSTATE) {
|
|
332
|
+ if (d.isVMute) {
|
|
333
|
+ qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("回复视频").onClick(
|
|
334
|
+ new QMUIQuickAction.OnClickListener() {
|
|
335
|
+ @Override
|
|
336
|
+ public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
|
|
337
|
+ quickAction.dismiss();
|
|
338
|
+ Net.unvmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
|
|
339
|
+ @Override
|
|
340
|
+ public void onRequestComplete(int cmd, String result, Object orgs) {
|
|
341
|
+ getMembers();
|
|
342
|
+ }
|
|
343
|
+
|
|
344
|
+ @Override
|
|
345
|
+ public void onRequestError(int cmd, String result, Object orgs) {
|
|
346
|
+ }
|
|
347
|
+ }, null);
|
|
348
|
+ }
|
|
349
|
+ }
|
|
350
|
+ ));
|
|
351
|
+ } else {
|
|
352
|
+ qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("停止视频").onClick(
|
|
353
|
+ new QMUIQuickAction.OnClickListener() {
|
|
354
|
+ @Override
|
|
355
|
+ public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
|
|
356
|
+ quickAction.dismiss();
|
|
357
|
+ Net.vmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
|
|
358
|
+ @Override
|
|
359
|
+ public void onRequestComplete(int cmd, String result, Object orgs) {
|
|
360
|
+ getMembers();
|
|
361
|
+ }
|
|
362
|
+
|
|
363
|
+ @Override
|
|
364
|
+ public void onRequestError(int cmd, String result, Object orgs) {
|
|
365
|
+ }
|
|
366
|
+ }, null);
|
|
367
|
+ }
|
|
368
|
+ }
|
|
369
|
+ ));
|
|
370
|
+ }
|
|
371
|
+
|
|
372
|
+ if (d.isLayout) {
|
|
373
|
+ qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("恢复布局").onClick(
|
|
374
|
+ new QMUIQuickAction.OnClickListener() {
|
|
375
|
+ @Override
|
|
376
|
+ public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
|
|
377
|
+ quickAction.dismiss();
|
|
378
|
+ Net.vidlayoutMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
|
|
379
|
+ @Override
|
|
380
|
+ public void onRequestComplete(int cmd, String result, Object orgs) {
|
|
381
|
+ getMembers();
|
|
382
|
+ }
|
|
383
|
+
|
|
384
|
+ @Override
|
|
385
|
+ public void onRequestError(int cmd, String result, Object orgs) {
|
|
386
|
+ }
|
|
387
|
+ }, null);
|
|
388
|
+ }
|
|
389
|
+ }
|
|
390
|
+ ));
|
|
391
|
+ } else {
|
|
392
|
+ qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("切换布局").onClick(
|
|
393
|
+ new QMUIQuickAction.OnClickListener() {
|
|
394
|
+ @Override
|
|
395
|
+ public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
|
|
396
|
+ quickAction.dismiss();
|
|
397
|
+ Net.vidfloorMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
|
|
398
|
+ @Override
|
|
399
|
+ public void onRequestComplete(int cmd, String result, Object orgs) {
|
|
400
|
+ getMembers();
|
|
401
|
+ }
|
|
402
|
+
|
|
403
|
+ @Override
|
|
404
|
+ public void onRequestError(int cmd, String result, Object orgs) {
|
|
405
|
+ }
|
|
406
|
+ }, null);
|
|
407
|
+ }
|
|
408
|
+ }
|
|
409
|
+ ));
|
|
410
|
+ }
|
|
411
|
+ }
|
|
412
|
+
|
268
|
413
|
qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("移除").onClick(
|
269
|
414
|
new QMUIQuickAction.OnClickListener() {
|
270
|
415
|
@Override
|
|
@@ -471,6 +616,85 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
|
471
|
616
|
}
|
472
|
617
|
}
|
473
|
618
|
|
|
619
|
+ public void addMember(View v) {
|
|
620
|
+ showUsersMultiChoiceDialog();
|
|
621
|
+ }
|
|
622
|
+
|
|
623
|
+ boolean containMember(String phone) {
|
|
624
|
+ for (DBUser u : allUsers) {
|
|
625
|
+ if (u.phone.equals(phone)) {
|
|
626
|
+ return true;
|
|
627
|
+ }
|
|
628
|
+ }
|
|
629
|
+ return false;
|
|
630
|
+ }
|
|
631
|
+
|
|
632
|
+ private void showUsersMultiChoiceDialog() {
|
|
633
|
+ List<String> list = new ArrayList<>();
|
|
634
|
+ List<String> listPhone = new ArrayList<>();
|
|
635
|
+ for (DBUser u : DBUser.allUser) {
|
|
636
|
+ if (!containMember(u.phone)) {
|
|
637
|
+ listPhone.add(u.phone);
|
|
638
|
+ list.add(u.phone + " | " + u.name);
|
|
639
|
+ }
|
|
640
|
+ }
|
|
641
|
+ if (list.size() == 0) {
|
|
642
|
+ UIUtl.toastI("所有分机已经添加");
|
|
643
|
+ return;
|
|
644
|
+ }
|
|
645
|
+
|
|
646
|
+ final String[] items = new String[list.size()];
|
|
647
|
+ list.toArray(items);
|
|
648
|
+ final QMUIDialog.MultiCheckableDialogBuilder builder = new QMUIDialog.MultiCheckableDialogBuilder(this)
|
|
649
|
+ .setTitle("选择要加入的分机号")
|
|
650
|
+// .setCheckedItems(new int[]{1, 3})
|
|
651
|
+ .setSkinManager(QMUISkinManager.defaultInstance(this))
|
|
652
|
+ .addItems(items, new DialogInterface.OnClickListener() {
|
|
653
|
+ @Override
|
|
654
|
+ public void onClick(DialogInterface dialog, int which) {
|
|
655
|
+
|
|
656
|
+ }
|
|
657
|
+ });
|
|
658
|
+ builder.addAction("取消", new QMUIDialogAction.ActionListener() {
|
|
659
|
+ @Override
|
|
660
|
+ public void onClick(QMUIDialog dialog, int index) {
|
|
661
|
+ dialog.dismiss();
|
|
662
|
+ }
|
|
663
|
+ });
|
|
664
|
+ builder.addAction("确定", new QMUIDialogAction.ActionListener() {
|
|
665
|
+ @Override
|
|
666
|
+ public void onClick(QMUIDialog dialog, int index) {
|
|
667
|
+ int[] selectIndexs = builder.getCheckedItemIndexes();
|
|
668
|
+ if (selectIndexs.length > 0) {
|
|
669
|
+ List<DBUser> list = new ArrayList<>();
|
|
670
|
+ String members = "";
|
|
671
|
+ for (int i = 0; i < selectIndexs.length; i++) {
|
|
672
|
+ String phNum = listPhone.get(selectIndexs[i]);
|
|
673
|
+ members = members + phNum + ",";
|
|
674
|
+ }
|
|
675
|
+
|
|
676
|
+ Net.addMember2Group(callnumber, members, new HttpUtl.CallBack() {
|
|
677
|
+ @Override
|
|
678
|
+ public void onRequestComplete(int cmd, String result, Object orgs) {
|
|
679
|
+ getMembers();
|
|
680
|
+ }
|
|
681
|
+
|
|
682
|
+ @Override
|
|
683
|
+ public void onRequestError(int cmd, String result, Object orgs) {
|
|
684
|
+
|
|
685
|
+ }
|
|
686
|
+ }, null);
|
|
687
|
+ }
|
|
688
|
+
|
|
689
|
+ dialog.dismiss();
|
|
690
|
+ }
|
|
691
|
+ });
|
|
692
|
+
|
|
693
|
+ int mCurrentDialogStyle = com.qmuiteam.qmui.R.style.QMUI_Dialog;
|
|
694
|
+ builder.create(mCurrentDialogStyle).show();
|
|
695
|
+ }
|
|
696
|
+
|
|
697
|
+
|
474
|
698
|
@SuppressLint("NewApi")
|
475
|
699
|
void fullScreen() {
|
476
|
700
|
int flag = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|