package im.actor.sdk.controllers.contacts;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import im.actor.core.entity.Contact;
import im.actor.core.viewmodel.CommandCallback;
import im.actor.sdk.ActorSDK;
import im.actor.sdk.R;
import im.actor.sdk.controllers.Intents;
import static im.actor.sdk.util.ActorSDKMessenger.messenger;
public class ContactsFragment extends BaseContactFragment {
public ContactsFragment() {
super(false, false, false);
setRootFragment(true);
setHomeAsUp(true);
setTitle(R.string.contacts_title);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View res = onCreateContactsView(R.layout.fragment_contacts, inflater, container, savedInstanceState);
res.setBackgroundColor(ActorSDK.sharedActor().style.getMainBackgroundColor());
res.findViewById(R.id.emptyCollection).setBackgroundColor(ActorSDK.sharedActor().style.getMainBackgroundColor());
res.findViewById(R.id.inviteButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendInvites();
}
});
((TextView) res.findViewById(R.id.no_contacts_text)).setTextColor(ActorSDK.sharedActor().style.getTextSecondaryAccentColor());
((TextView) res.findViewById(R.id.no_contacts_text)).setText(getString(R.string.contacts_empty_invite_hint).replace("{appName}", ActorSDK.sharedActor().getAppName()));
((TextView) res.findViewById(R.id.add_contact_hint_text)).setTextColor(ActorSDK.sharedActor().style.getTextSecondaryAccentColor());
return res;
}
@Override
public void onItemClicked(Contact contact) {
getActivity().startActivity(Intents.openPrivateDialog(contact.getUid(), true, getActivity()));
}
@Override
public boolean onItemLongClicked(final Contact contact) {
new AlertDialog.Builder(getActivity())
.setItems(new CharSequence[]{
getString(R.string.contacts_menu_remove).replace("{0}", contact.getName()),
getString(R.string.contacts_menu_edit),
}, (dialog, which) -> {
if (which == 0) {
new AlertDialog.Builder(getActivity())
.setMessage(getString(R.string.alert_remove_contact_text).replace("{0}", contact.getName()))
.setPositiveButton(R.string.alert_remove_contact_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
execute(messenger().removeContact(contact.getUid()), R.string.contacts_menu_remove_progress, new CommandCallback<Boolean>() {
@Override
public void onResult(Boolean res) {
}
@Override
public void onError(Exception e) {
}
});
}
})
.setNegativeButton(R.string.dialog_cancel, null)
.show()
.setCanceledOnTouchOutside(true);
} else if (which == 1) {
startActivity(Intents.editUserName(contact.getUid(), getActivity()));
}
})
.show()
.setCanceledOnTouchOutside(true);
return true;
}
}