package im.actor.sdk.controllers.group; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.RadioButton; import android.widget.TextView; import android.widget.Toast; import im.actor.core.entity.GroupType; import im.actor.core.viewmodel.GroupVM; import im.actor.sdk.ActorSDK; import im.actor.sdk.R; import im.actor.sdk.controllers.BaseFragment; import im.actor.sdk.controllers.compose.CreateGroupActivity; import im.actor.sdk.controllers.compose.GroupUsersFragment; import static im.actor.sdk.util.ActorSDKMessenger.messenger; public class GroupTypeFragment extends BaseFragment { public static GroupTypeFragment create(int groupId, boolean isCreate) { Bundle bundle = new Bundle(); bundle.putInt("groupId", groupId); bundle.putBoolean("isCreate", isCreate); GroupTypeFragment editFragment = new GroupTypeFragment(); editFragment.setArguments(bundle); return editFragment; } private EditText publicShortName; private GroupVM groupVM; private boolean isPublic; private boolean isCreate; public GroupTypeFragment() { setRootFragment(true); setHomeAsUp(true); setShowHome(true); } @Override public void onCreate(Bundle saveInstance) { super.onCreate(saveInstance); isCreate = getArguments().getBoolean("isCreate", false); groupVM = messenger().getGroup(getArguments().getInt("groupId")); setTitle(groupVM.getGroupType() == GroupType.CHANNEL ? R.string.channel_title : R.string.group_title); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View res = inflater.inflate(R.layout.fragment_edit_type, container, false); res.setBackgroundColor(style.getBackyardBackgroundColor()); TextView publicTitle = (TextView) res.findViewById(R.id.publicTitle); publicTitle.setText(groupVM.getGroupType() == GroupType.CHANNEL ? R.string.group_public_channel_title : R.string.group_public_group_title); publicTitle.setTextColor(style.getTextPrimaryColor()); TextView publicDescription = (TextView) res.findViewById(R.id.publicDescription); publicDescription.setText(groupVM.getGroupType() == GroupType.CHANNEL ? R.string.group_public_channel_text : R.string.group_public_group_text); publicDescription.setTextColor(style.getTextSecondaryColor()); TextView privateTitle = (TextView) res.findViewById(R.id.privateTitle); privateTitle.setText(groupVM.getGroupType() == GroupType.CHANNEL ? R.string.group_private_channel_title : R.string.group_private_group_title); privateTitle.setTextColor(style.getTextPrimaryColor()); TextView privateDescription = (TextView) res.findViewById(R.id.privateDescription); privateDescription.setText(groupVM.getGroupType() == GroupType.CHANNEL ? R.string.group_private_channel_text : R.string.group_private_group_text); privateDescription.setTextColor(style.getTextSecondaryColor()); TextView publicLinkPrefix = (TextView) res.findViewById(R.id.publicLinkPrefix); publicLinkPrefix.setTextColor(style.getTextSecondaryColor()); String prefix = ActorSDK.sharedActor().getGroupInvitePrefix(); if (prefix == null) { prefix = "@"; } publicLinkPrefix.setText(prefix); RadioButton publicRadio = (RadioButton) res.findViewById(R.id.publicRadio); RadioButton privateRadio = (RadioButton) res.findViewById(R.id.privateRadio); View publicSelector = res.findViewById(R.id.publicSelector); View privateSelector = res.findViewById(R.id.privateSelector); publicShortName = (EditText) res.findViewById(R.id.publicLink); View publicLinkContainer = res.findViewById(R.id.publicContainer); View publicShadowTop = res.findViewById(R.id.shadowTop); View publicShadowBottom = res.findViewById(R.id.shadowBottom); if (groupVM.getShortName().get() != null) { publicRadio.setChecked(true); privateRadio.setChecked(false); publicLinkContainer.setVisibility(View.VISIBLE); publicShadowTop.setVisibility(View.VISIBLE); publicShadowBottom.setVisibility(View.VISIBLE); publicShortName.setText(groupVM.getShortName().get()); isPublic = true; } else { publicRadio.setChecked(false); privateRadio.setChecked(true); publicLinkContainer.setVisibility(View.GONE); publicShadowTop.setVisibility(View.GONE); publicShadowBottom.setVisibility(View.GONE); publicShortName.setText(null); isPublic = false; } View.OnClickListener publicClick = view -> { if (!isPublic) { isPublic = true; publicRadio.setChecked(true); privateRadio.setChecked(false); publicLinkContainer.setVisibility(View.VISIBLE); publicShadowTop.setVisibility(View.VISIBLE); publicShadowBottom.setVisibility(View.VISIBLE); publicShortName.setText(groupVM.getShortName().get()); } }; View.OnClickListener privateClick = view -> { if (isPublic) { isPublic = false; publicRadio.setChecked(false); privateRadio.setChecked(true); publicLinkContainer.setVisibility(View.GONE); publicShadowTop.setVisibility(View.GONE); publicShadowBottom.setVisibility(View.GONE); publicShortName.setText(null); } }; publicRadio.setOnClickListener(publicClick); publicSelector.setOnClickListener(publicClick); privateRadio.setOnClickListener(privateClick); privateSelector.setOnClickListener(privateClick); return res; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.next, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.next) { if (isPublic) { String nShortName = publicShortName.getText().toString().trim(); if (nShortName.length() == 0) { Toast.makeText(getActivity(), R.string.group_edit_change_short_name_error, Toast.LENGTH_SHORT).show(); return true; } if (nShortName.equals(groupVM.getShortName().get())) { onEditShortNameSuccess(); return true; } execute(messenger().editGroupShortName(groupVM.getId(), nShortName).then(r -> { onEditShortNameSuccess(); }).failure(e -> { Toast.makeText(getActivity(), R.string.group_edit_change_short_name_error, Toast.LENGTH_SHORT).show(); })); } else { if (groupVM.getShortName().get() == null) { onEditShortNameSuccess(); return true; } else { execute(messenger().editGroupShortName(groupVM.getId(), null).then(r -> { onEditShortNameSuccess(); }).failure(e -> { Toast.makeText(getActivity(), R.string.group_edit_change_short_name_error, Toast.LENGTH_SHORT).show(); })); } } return true; } return super.onOptionsItemSelected(item); } protected void onEditShortNameSuccess() { if (isCreate) { ((CreateGroupActivity) getActivity()).showNextFragment( GroupUsersFragment.createChannel(getArguments().getInt("groupId")), false); } else { finishActivity(); } } }