package com.devandroid.ncuwlogin; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.Spinner; import android.widget.TextView; import com.devandroid.ncuwlogin.callbacks.Constant; import com.devandroid.ncuwlogin.callbacks.GeneralCallback; import com.devandroid.ncuwlogin.callbacks.Memory; import com.devandroid.ncuwlogin.libs.IgnoreSSLSocketFactory; import com.devandroid.ncuwlogin.libs.LoginHelper; import com.devandroid.ncuwlogin.libs.Utils; import com.loopj.android.http.RequestParams; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import butterknife.Bind; import butterknife.ButterKnife; public class NCUCSIEFragment extends Fragment implements View.OnClickListener { @Bind(R.id.button_login) Button mLoginButton; @Bind(R.id.editText_user) EditText mUsernameEditText; @Bind(R.id.editText_password) EditText mPasswordEditText; @Bind(R.id.spinner_type) Spinner mTypeSpinner; @Bind(R.id.progressBar_login) ProgressBar mProgressBar; @Bind(R.id.textView_debug) TextView mDebugTextView; private MainActivity mMainActivity; private static final String USER_KEY = Constant.MEMORY_KEY_CSIE_USER; private static final String PASS_KEY = Constant.MEMORY_KEY_CSIE_PASSWORD; private static final String TYPE_KEY = Constant.MEMORY_KEY_CSIE_TYPE; public static NCUCSIEFragment newInstance() { return new NCUCSIEFragment(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_ncucsie, container, false); ButterKnife.bind(this, view); initValues(); setUpViews(); return view; } private void initValues() { mMainActivity = (MainActivity) getActivity(); } private void setUpViews() { mLoginButton.setOnClickListener(this); ArrayAdapter spinnerAdapter = new ArrayAdapter<>(mMainActivity, R.layout.support_simple_spinner_dropdown_item, getResources().getStringArray(R.array.ncucsie_type)); mTypeSpinner.setAdapter(spinnerAdapter); mTypeSpinner.setSelection(Memory.getInt(mMainActivity, TYPE_KEY, 0)); mUsernameEditText.setText(Memory.getString(mMainActivity, USER_KEY, "")); mPasswordEditText.setText(Memory.getString(mMainActivity, PASS_KEY, "")); mPasswordEditText.setImeActionLabel(getText(R.string.ime_submit), KeyEvent.KEYCODE_ENTER); mPasswordEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { saveAndLogin(); return false; } }); } @Override public void onClick(View v) { if (v == mLoginButton) { saveAndLogin(); } } private void saveAndLogin() { String ssid = Utils.getCurrentSsid(mMainActivity); LoginHelper.HotspotType hotspotType = LoginHelper.getHotspotType(ssid); if (hotspotType == LoginHelper.HotspotType.NCUCSIE) { String username = mUsernameEditText.getText().toString(); String password = mPasswordEditText.getText().toString(); int type = mTypeSpinner.getSelectedItemPosition(); Memory.setString(mMainActivity, USER_KEY, username); Memory.setString(mMainActivity, PASS_KEY, password); Memory.setInt(mMainActivity, TYPE_KEY, type); setOnProgress(true); login(mMainActivity, new GeneralCallback() { @Override public void onSuccess() { showMessage(R.string.login_sucessful); } @Override public void onFail(String reason) { showMessage(reason); } }); } else { showMessage(String.format(getString(R.string.ssid_no_support), ssid)); } } public static void login(Context context, GeneralCallback callback) { String username = Memory.getString(context, USER_KEY, ""); String password = Memory.getString(context, PASS_KEY, ""); int type = Memory.getInt(context, TYPE_KEY, 0); RequestParams params = new RequestParams(); params.put("login[type]", type); params.put("login[username]", username); params.put("login[password]", password); String url = "http://10.115.51.254/"; IgnoreSSLSocketFactory factory = null; try { KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); factory = new IgnoreSSLSocketFactory(keyStore); } catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException | UnrecoverableKeyException e) { e.printStackTrace(); } LoginHelper.login(context, url, params, callback, factory); } private void setOnProgress(boolean onProgress) { mDebugTextView.setVisibility(View.GONE); mProgressBar.setVisibility(onProgress ? View.VISIBLE : View.GONE); } private void showMessage(int messageRes) { showMessage(getText(messageRes)); } private void showMessage(CharSequence message) { setOnProgress(false); mDebugTextView.setVisibility(View.VISIBLE); mDebugTextView.setText(message); } }