package net.dev123.yibo.service.listener; import net.dev123.commons.ServiceProvider; import net.dev123.yibo.AddAccountActivity; import net.dev123.yibo.R; import net.dev123.yibo.service.adapter.AppKeySpinnerAdapter; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TextView; public class AccountSpItemSelectedListener implements OnItemSelectedListener { private AddAccountActivity context; private static ServiceProvider[] serviceProviders = { ServiceProvider.Sina, ServiceProvider.Tencent, ServiceProvider.Sohu, ServiceProvider.NetEase, ServiceProvider.Fanfou, ServiceProvider.Twitter, ServiceProvider.RenRen, ServiceProvider.KaiXin, ServiceProvider.QQZone }; private LinearLayout llLoginForm; private LinearLayout llAuthorizeForm; private LinearLayout llFooterAction; private LinearLayout llOAuthIntro; private EditText etUsername; private EditText etPassword; private TextView tvOAuthIntro; private CheckBox cbUseProxy; private EditText etRestProxy; private EditText etSearchProxy; private CheckBox cbFollowOffical; private CheckBox cbMakeDefault; private Spinner spAppKey; private CheckBox cbUseCustomKey; public AccountSpItemSelectedListener(AddAccountActivity context) { this.context = context; llLoginForm = (LinearLayout) context.findViewById(R.id.llLoginForm); etUsername = (EditText) context.findViewById(R.id.etUsername); etPassword = (EditText) context.findViewById(R.id.etPassword); llAuthorizeForm = (LinearLayout) context.findViewById(R.id.llAuthorizeForm); llOAuthIntro = (LinearLayout) context.findViewById(R.id.llOAuthIntro); tvOAuthIntro = (TextView) context.findViewById(R.id.tvOAuthIntro); llFooterAction = (LinearLayout) context.findViewById(R.id.llFooterAction); cbUseProxy = (CheckBox) context.findViewById(R.id.cbUseApiProxy); etRestProxy = (EditText) context.findViewById(R.id.etRestProxy); etSearchProxy = (EditText) context.findViewById(R.id.etSearchProxy); cbFollowOffical = (CheckBox) context.findViewById(R.id.chkFollowOffical); cbMakeDefault = (CheckBox) context.findViewById(R.id.chkDefault); cbUseCustomKey = (CheckBox) context.findViewById(R.id.cbUseCustomKey); spAppKey = (Spinner) context.findViewById(R.id.spAppKey); } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { final ServiceProvider sp = serviceProviders[position]; if (sp == null) { return; } context.setSpSelected(sp); cbUseCustomKey.setChecked(false); if (spAppKey != null && spAppKey.getAdapter() != null) { AppKeySpinnerAdapter adapter = (AppKeySpinnerAdapter) spAppKey.getAdapter(); adapter.setServiceProvider(sp); } context.setAppSelected(null); spAppKey.setVisibility(View.GONE); switch (sp) { case Tencent: showOAuthAuthorizeForm(sp); break; case Twitter: showOAuthAuthorizeForm(sp); cbUseProxy.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { showLoginForm(sp); if (context.isCustomKeyLevel()) { cbUseCustomKey.setVisibility(View.GONE); } } else { showOAuthAuthorizeForm(sp); if (context.isCustomKeyLevel()) { cbUseCustomKey.setVisibility(View.VISIBLE); } } } }); break; case RenRen: case KaiXin: case QQZone: case Sina: showOAuthAuthorizeForm(sp); break; default: showLoginForm(sp); break; } context.updateLoginButton(); } private void showLoginForm(ServiceProvider serviceProvider) { llAuthorizeForm.setVisibility(View.GONE); llOAuthIntro.setVisibility(View.GONE); llLoginForm.setVisibility(View.VISIBLE); llFooterAction.setVisibility(View.VISIBLE); etUsername.setText(""); etPassword.setText(""); if (serviceProvider == ServiceProvider.Twitter) { cbUseProxy.setVisibility(View.VISIBLE); etRestProxy.setVisibility(View.VISIBLE); etRestProxy.setText(""); etSearchProxy.setVisibility(View.GONE); } else { cbUseProxy.setVisibility(View.GONE); etRestProxy.setVisibility(View.GONE); etSearchProxy.setVisibility(View.GONE); } } private void showOAuthAuthorizeForm(ServiceProvider serviceProvider) { llLoginForm.setVisibility(View.GONE); llFooterAction.setVisibility(View.GONE); llAuthorizeForm.setVisibility(View.VISIBLE); llOAuthIntro.setVisibility(View.VISIBLE); if (serviceProvider == ServiceProvider.Twitter) { cbUseProxy.setVisibility(View.VISIBLE); } else { cbUseProxy.setVisibility(View.GONE); } if (serviceProvider.getServiceProviderCategory().equals(ServiceProvider.CATEGORY_SNS)) { cbFollowOffical.setVisibility(View.GONE); cbMakeDefault.setVisibility(View.GONE); } else { cbFollowOffical.setVisibility(View.VISIBLE); cbMakeDefault.setVisibility(View.VISIBLE); } etRestProxy.setVisibility(View.GONE); etSearchProxy.setVisibility(View.GONE); tvOAuthIntro.setText(R.string.hint_accounts_oauth_intro_tencent); if (serviceProvider.isSns()) { tvOAuthIntro.append("\n\n"); tvOAuthIntro.append(context.getText(R.string.hint_accounts_sns)); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }