package net.dev123.yibo.service.listener;
import java.util.regex.Pattern;
import net.dev123.commons.ServiceProvider;
import net.dev123.yibo.AddAccountActivity;
import net.dev123.yibo.R;
import net.dev123.yibo.service.task.TwitterProxyAuthTask;
import net.dev123.yibo.service.task.XAuthTask;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class AccountLoginClickListener implements OnClickListener {
private static final Pattern SCHEME_HOST_PATH_PATTERN =
Pattern.compile("http[s]?://[a-z0-9-]+(\\.[a-z0-9-]+)+(/[\\w-]+)*[/]?");
private static final Pattern HOST_PATH_PATTERN =
Pattern.compile("[a-z0-9-]+(\\.[a-z0-9-]+)+(/[\\w-]+)*[/]?");
private AddAccountActivity context;
public AccountLoginClickListener(AddAccountActivity context) {
this.context = context;
}
@Override
public void onClick(View v) {
ServiceProvider spSelected = context.getSpSelected();
if (spSelected == null) {
Toast.makeText(context, R.string.msg_accounts_add_spSelect, Toast.LENGTH_LONG).show();
return;
}
EditText etUsername = (EditText) context.findViewById(R.id.etUsername);
EditText etPassword = (EditText) context.findViewById(R.id.etPassword);
CheckBox cbUseProxy = (CheckBox) context.findViewById(R.id.cbUseApiProxy);
EditText etRestProxy = (EditText) context.findViewById(R.id.etRestProxy);
EditText etSearchProxy = (EditText) context.findViewById(R.id.etSearchProxy);
CheckBox cbMakeDefault = (CheckBox) context.findViewById(R.id.chkDefault);
boolean isMakeDefault = cbMakeDefault.isChecked();
CheckBox cbFollowOffical = (CheckBox) context.findViewById(R.id.chkFollowOffical);
boolean isFollowOffical = cbFollowOffical.isChecked();
String userName = etUsername.getText().toString().trim();
String password = etPassword.getText().toString().trim();
switch (spSelected) {
case Sina:
case NetEase:
case Sohu:
case Fanfou:
new XAuthTask(
context, userName, password,
spSelected, isMakeDefault,
isFollowOffical
).execute();
break;
case Twitter:
if (cbUseProxy.isChecked()) {
String restApi = etRestProxy.getText().toString().trim().toLowerCase();
if (!restApi.matches(SCHEME_HOST_PATH_PATTERN.toString())) {
if (restApi.matches(HOST_PATH_PATTERN.toString())) {
restApi = "http://" + restApi;
} else {
Toast.makeText(context,
R.string.msg_accounts_add_invalid_proxy_url,
Toast.LENGTH_SHORT).show();
etRestProxy.requestFocus();
break;
}
}
String searchApi = etSearchProxy.getText().toString().trim();
new TwitterProxyAuthTask(
context, userName, password,
restApi, searchApi, isMakeDefault
).execute();
} else {
new XAuthTask(
context, userName, password,
spSelected, isMakeDefault, isFollowOffical
).execute();
}
break;
default:
break;
}
}
}