package org.yaxim.androidclient.dialogs;
import org.yaxim.androidclient.XMPPRosterServiceAdapter;
import org.yaxim.androidclient.exceptions.YaximXMPPAdressMalformedException;
import org.yaxim.androidclient.util.XMPPHelper;
import org.yaxim.androidclient.MainWindow;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import org.yaxim.androidclient.R;
public class AddRosterItemDialog extends AlertDialog implements
DialogInterface.OnClickListener, TextWatcher {
private MainWindow mMainWindow;
private XMPPRosterServiceAdapter mServiceAdapter;
private Button okButton;
private EditText userInputField;
private EditText aliasInputField;
private String generatedAlias = "";
private GroupNameView mGroupNameView;
public AddRosterItemDialog(MainWindow mainWindow,
XMPPRosterServiceAdapter serviceAdapter) {
super(mainWindow);
mMainWindow = mainWindow;
mServiceAdapter = serviceAdapter;
setTitle(R.string.addFriend_Title);
LayoutInflater inflater = (LayoutInflater) mainWindow
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View group = inflater.inflate(R.layout.addrosteritemdialog, null, false);
setView(group);
userInputField = (EditText)group.findViewById(R.id.AddContact_EditTextField);
aliasInputField = (EditText)group.findViewById(R.id.AddContactAlias_EditTextField);
mGroupNameView = (GroupNameView)group.findViewById(R.id.AddRosterItem_GroupName);
mGroupNameView.setGroupList(mMainWindow.getRosterGroups());
setButton(BUTTON_POSITIVE, mainWindow.getString(android.R.string.ok), this);
setButton(BUTTON_NEGATIVE, mainWindow.getString(android.R.string.cancel),
(DialogInterface.OnClickListener)null);
}
public AddRosterItemDialog(MainWindow mainWindow,
XMPPRosterServiceAdapter serviceAdapter, String jid) {
this(mainWindow, serviceAdapter);
userInputField.setText(jid);
}
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
okButton = getButton(BUTTON_POSITIVE);
afterTextChanged(userInputField.getText());
aliasInputField.setText(generatedAlias);
userInputField.addTextChangedListener(this);
}
public void onClick(DialogInterface dialog, int which) {
String alias = aliasInputField.getText().toString();
if (alias.length() == 0)
alias = generatedAlias;
String realJid;
try {
realJid = XMPPHelper.verifyJabberID(userInputField.getText());
} catch (YaximXMPPAdressMalformedException e) {
e.printStackTrace();
return;
}
mServiceAdapter.addRosterItem(
realJid,
alias,
mGroupNameView.getGroupName());
}
public void afterTextChanged(Editable s) {
try {
XMPPHelper.verifyJabberID(s);
okButton.setEnabled(true);
userInputField.setError(null);
} catch (YaximXMPPAdressMalformedException e) {
okButton.setEnabled(false);
if (s.length() > 0)
userInputField.setError(mMainWindow.getString(R.string.Global_JID_malformed));
}
if (s.length() > 0) {
String userpart[] = s.toString().split("@");
if (userpart.length > 0 && userpart[0].length() > 0) {
generatedAlias = XMPPHelper.capitalizeString(userpart[0]);
aliasInputField.setHint(generatedAlias);
}
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
}