174 lines
5.6 KiB
Java
174 lines
5.6 KiB
Java
|
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();
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|