conversations-classic/src/de/gultsch/chat/ui/EditAccount.java

174 lines
5.6 KiB
Java
Raw Normal View History

2014-01-28 18:21:54 +00:00
package de.gultsch.chat.ui;
import de.gultsch.chat.R;
import de.gultsch.chat.entities.Account;
import de.gultsch.chat.utils.Validator;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class EditAccount extends DialogFragment {
protected Account account;
public void setAccount(Account account) {
this.account = account;
}
public interface EditAccountListener {
public void onAccountEdited(Account account);
}
protected EditAccountListener listener = null;
public void setEditAccountListener(EditAccountListener listener) {
this.listener = listener;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.edit_account_dialog, null);
final EditText jidText = (EditText) view.findViewById(R.id.account_jid);
final EditText usernameText = (EditText) view
.findViewById(R.id.account_username);
final EditText serverText = (EditText) view
.findViewById(R.id.account_server);
final TextView usernameDesc = (TextView) view
.findViewById(R.id.textView2);
final TextView confirmPwDesc = (TextView) view.findViewById(R.id.account_confirm_password_desc);
CheckBox showAdvanced = (CheckBox) view
.findViewById(R.id.account_show_advanced);
final RelativeLayout advancedOptions = (RelativeLayout) view
.findViewById(R.id.advanced_options);
showAdvanced.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
advancedOptions.setVisibility(View.VISIBLE);
usernameDesc.setText("Username");
usernameText.setVisibility(View.VISIBLE);
jidText.setVisibility(View.GONE);
} else {
advancedOptions.setVisibility(View.GONE);
usernameDesc.setText("Jabber ID");
usernameText.setVisibility(View.GONE);
jidText.setVisibility(View.VISIBLE);
}
}
});
final EditText password = (EditText) view
.findViewById(R.id.account_password);
final EditText passwordConfirm = (EditText) view
.findViewById(R.id.account_password_confirm2);
final CheckBox registerAccount = (CheckBox) view
.findViewById(R.id.edit_account_register_new);
final String okButtonDesc;
if (account != null) {
builder.setTitle("Edit account");
registerAccount.setVisibility(View.GONE);
jidText.setText(account.getJid());
password.setText(account.getPassword());
usernameText.setText(account.getUsername());
serverText.setText(account.getServer());
okButtonDesc = "Edit";
} else {
builder.setTitle("Add account");
okButtonDesc = "Add";
}
registerAccount
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
AlertDialog d = (AlertDialog) getDialog();
Button positiveButton = (Button) d.getButton(Dialog.BUTTON_POSITIVE);
if (isChecked) {
positiveButton.setText("Register");
passwordConfirm.setVisibility(View.VISIBLE);
confirmPwDesc.setVisibility(View.VISIBLE);
} else {
passwordConfirm.setVisibility(View.GONE);
positiveButton.setText("Add");
confirmPwDesc.setVisibility(View.GONE);
}
}
});
builder.setView(view);
builder.setNeutralButton("Cancel", null);
builder.setPositiveButton(okButtonDesc, null);
return builder.create();
}
@Override
public void onStart() {
super.onStart();
final AlertDialog d = (AlertDialog) getDialog();
Button positiveButton = (Button) d.getButton(Dialog.BUTTON_POSITIVE);
positiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean showAdvanced = ((CheckBox) d.findViewById(R.id.account_show_advanced)).isChecked();
EditText jidEdit = (EditText) d.findViewById(R.id.account_jid);
String jid = jidEdit.getText().toString();
EditText usernameEdit = (EditText) d.findViewById(R.id.account_username);
String username = usernameEdit.getText().toString();
EditText serverEdit = (EditText) d.findViewById(R.id.account_server);
String server = serverEdit.getText().toString();
EditText passwordEdit = (EditText) d.findViewById(R.id.account_password);
String password = passwordEdit.getText().toString();
if (!showAdvanced) {
if (Validator.isValidJid(jid)) {
String[] parts = jid.split("@");
username = parts[0];
server = parts[1];
} else {
jidEdit.setError("Invalid Jabber ID");
return;
}
} else {
if (username.length()==0) {
usernameEdit.setError("username is too short");
return;
} else if (server.length()==0) {
serverEdit.setError("server is too short");
return;
}
}
if (account!=null) {
account.setPassword(password);
account.setUsername(username);
account.setServer(server);
} else {
account = new Account(username, server, password);
}
if (listener!=null) {
listener.onAccountEdited(account);
d.dismiss();
}
}
});
}
}