Files
SipPhone/app/src/main/java/com/tianrun/sipcall/call/CreateGroupActivity.java
2020-09-15 17:57:15 +08:00

260 lines
9.8 KiB
Java

package com.tianrun.sipcall.call;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.alibaba.fastjson.JSONObject;
import com.qmuiteam.qmui.skin.QMUISkinManager;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
import com.tianrun.sipcall.R;
import com.tianrun.sipcall.SipEngine;
import com.tianrun.sipcall.db.DBUser;
import com.tianrun.sipcall.net.Net;
import com.tianrun.sipcall.ui.TrAdapter;
import com.tianrun.sipcall.ui.TrBaseActivity;
import com.tianrun.sipcall.ui.UIUtl;
import com.tianrun.sipcall.utils.HttpUtl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class CreateGroupActivity extends TrBaseActivity {
TextView meetingTopic;
GridView gridUsers;
TrAdapter adapterUser;
List<DBUser> users = new ArrayList<>();
HashMap<String, DBUser> mapUsers = new HashMap<>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.creatgroup_view);
View rootView = findViewById(R.id.RelativeLayoutNewGroupRoot);
meetingTopic = rootView.findViewById(R.id.group_name);
gridUsers = rootView.findViewById(R.id.GridUser_select);
users.clear();
mapUsers.clear();
DBUser u = new DBUser("", "添加分机号", "");
u.isAddFlag = true;
users.add(u);
users.add(DBUser.mySelf);
setList(null);
}
public class UserSelectViews {
public TextView textViewName;
public TextView textViewNum;
public ImageView imageViewStatus;
public Button buttonDel;
public CheckBox checkBox;
public ImageView getImageViewPhoneIcon;
public ImageView imageViewAddflag;
}
public void setList(List<DBUser> list) {
if (list != null) {
for (DBUser u : list) {
mapUsers.put(u.phone, u);
users.add(users.size() - 1, u);
}
}
if (adapterUser == null) {
adapterUser = UIUtl.setList(this, gridUsers, R.layout.list_item_user_select, users, new TrAdapter.Callback() {
@Override
public void initCallback(Object data, int position, View prefabView, ViewGroup parent) {
UserSelectViews views;
if (prefabView.getTag() == null) {
views = new UserSelectViews();
views.textViewName = prefabView.findViewById(R.id.textViewName);
views.textViewNum = prefabView.findViewById(R.id.textViewNum);
views.imageViewStatus = prefabView.findViewById(R.id.imageViewStatus);
views.buttonDel = prefabView.findViewById(R.id.buttonDel);
views.checkBox = prefabView.findViewById(R.id.checkBox);
views.getImageViewPhoneIcon = prefabView.findViewById(R.id.imageView3PhoneIcon);
views.imageViewAddflag = prefabView.findViewById(R.id.imageViewAddFlag);
prefabView.setTag(views);
} else {
views = (UserSelectViews) (prefabView.getTag());
}
DBUser user = (DBUser) data;
if (user.isAddFlag) {
views.imageViewAddflag.setVisibility(View.VISIBLE);
views.buttonDel.setVisibility(View.INVISIBLE);
views.checkBox.setVisibility(View.INVISIBLE);
views.getImageViewPhoneIcon.setVisibility(View.INVISIBLE);
} else {
views.imageViewAddflag.setVisibility(View.INVISIBLE);
views.buttonDel.setVisibility(View.VISIBLE);
views.checkBox.setVisibility(View.INVISIBLE);
views.getImageViewPhoneIcon.setVisibility(View.VISIBLE);
}
views.textViewName.setText(user.name);
views.textViewNum.setText(user.phone);
if (user.isOffline()) {
views.imageViewStatus.setColorFilter(Color.GRAY);
} else if (user.isOnline()) {
views.imageViewStatus.setColorFilter(Color.GREEN);
} else if (user.isBusy()) {
views.imageViewStatus.setColorFilter(Color.RED);
} else {
views.imageViewStatus.setColorFilter(Color.GRAY);
}
views.checkBox.setChecked(true);
views.checkBox.setClickable(false);
// views.checkBox.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// UserSelect d = (UserSelect) data;
// d.isSelected = !d.isSelected;
// adapterUser.notifyDataSetChanged();
// refreshSelectedUsers();
// }
// });
views.buttonDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
users.remove(data);
mapUsers.remove(user.phone);
adapterUser.notifyDataSetChanged();
}
});
}
@Override
public void clickCallback(Object data, AdapterView<?> parent, View view, int position, long id) {
DBUser d = (DBUser) data;
if (d.isAddFlag) {
showUsersMultiChoiceDialog();
}
}
});
} else {
adapterUser.notifyDataSetChanged();
}
}
private void showUsersMultiChoiceDialog() {
List<String> list = new ArrayList<>();
List<String> listPhone = new ArrayList<>();
for (DBUser u : DBUser.allUser) {
if (mapUsers.get(u.phone) == null) {
listPhone.add(u.phone);
list.add(u.phone + " | " + u.name);
}
}
if(list.size() == 0) {
UIUtl.toastI("所有分机已经添加");
return;
}
final String[] items = new String[list.size()];
list.toArray(items);
final QMUIDialog.MultiCheckableDialogBuilder builder = new QMUIDialog.MultiCheckableDialogBuilder(this)
.setTitle("选择要加入的分机号")
// .setCheckedItems(new int[]{1, 3})
.setSkinManager(QMUISkinManager.defaultInstance(this))
.addItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.addAction("取消", new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
}
});
builder.addAction("确定", new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
int[] selectIndexs = builder.getCheckedItemIndexes();
if (selectIndexs.length > 0) {
List<DBUser> list = new ArrayList<>();
for (int i = 0; i < selectIndexs.length; i++) {
String phNum = listPhone.get(selectIndexs[i]);
list.add(DBUser.getUser(phNum));
}
setList(list);
}
dialog.dismiss();
}
});
int mCurrentDialogStyle = com.qmuiteam.qmui.R.style.QMUI_Dialog;
builder.create(mCurrentDialogStyle).show();
}
public String getSelectedUsers() {
String str = "";
for (DBUser us : users) {
if (!us.isAddFlag) {
str = str + us.phone + ",";
}
}
return str;
}
public void createGroup(View view) {
String name = meetingTopic.getText().toString();
if(name == null || name.isEmpty()) {
UIUtl.toastI("分组名不能为空");
return;
}
String userStr = getSelectedUsers();
if (userStr == null || userStr == "") {
UIUtl.toastI("请添加要加入会议的分机号");
return;
}
QMUITipDialog dialog = UIUtl.toastLoading("");
Net.createGroup(meetingTopic.getText().toString(), "", getSelectedUsers(), new HttpUtl.CallBack() {
@Override
public void onRequestComplete(int cmd, String result, Object orgs) {
UIUtl.toastS("创建成功");
dialog.dismiss();
finish();
Net.getGroups(null, null);
}
@Override
public void onRequestError(int cmd, String result, Object orgs) {
dialog.dismiss();
}
}, null);
}
public void exit(View view) {
finish();
}
@Override
public boolean handleMessage(@NonNull Message msg) {
return super.handleMessage(msg);
}
}