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.Button; import android.widget.EditText; import android.widget.ProgressBar; 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.LoginHelper; import com.devandroid.ncuwlogin.libs.Utils; import com.loopj.android.http.RequestParams; import butterknife.Bind; import butterknife.ButterKnife; public class NCUWLFragment extends Fragment implements View.OnClickListener { @Bind(R.id.button_login) Button mLoginButton; @Bind(R.id.button_logout) Button mLogoutButton; @Bind(R.id.editText_user) EditText mUsernameEditText; @Bind(R.id.editText_password) EditText mPasswordEditText; @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_USER; private static final String PASS_KEY = Constant.MEMORY_KEY_PASSWORD; public static NCUWLFragment newInstance() { return new NCUWLFragment(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_ncuwl, container, false); ButterKnife.bind(this, view); initValues(); setUpViews(); return view; } private void initValues() { mMainActivity = (MainActivity) getActivity(); } private void setUpViews() { mLoginButton.setOnClickListener(this); mLogoutButton.setOnClickListener(this); 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(); } else if (v == mLogoutButton) { LoginHelper.logoutNCUWL(mMainActivity, new GeneralCallback() { @Override public void onSuccess() { showMessage(R.string.logout_sucessful); } @Override public void onFail(String reason) { showMessage(reason); } }); } } private void saveAndLogin() { String ssid = Utils.getCurrentSsid(mMainActivity); LoginHelper.HotspotType hotspotType = LoginHelper.getHotspotType(ssid); if (hotspotType == LoginHelper.HotspotType.NCUWLAN) { String username = mUsernameEditText.getText().toString(); String password = mPasswordEditText.getText().toString(); Memory.setString(mMainActivity, USER_KEY, username); Memory.setString(mMainActivity, PASS_KEY, password); 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, ""); RequestParams params = new RequestParams(); params.put("user", username); params.put("password", password); String url = "https://securelogin.arubanetworks.com/auth/index.html/u"; LoginHelper.login(context, url, params, callback); } 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); } }