package com.bennyguitar.onions_android.Fragments;
import android.app.FragmentManager;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.bennyguitar.onions_android.MainActivity;
import com.bennyguitar.onions_android.Session.OCSession;
import com.bennyguitar.onions_android.R;
import com.bennyguitar.onions_android.Utilities.OnionDialog;
import com.bennyguitar.onions_android.Utilities.UIHelpers;
/**
* Created by BenG on 5/31/14.
*/
public class HomeFragment extends OnionFragment {
Button loginButton;
Button aboutButton;
Button newAccount;
EditText usernameTextField;
EditText passwordTextField;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Create the View
View V = newOnionFragment(R.layout.fragment_main, inflater, container);
// Build UI
buildUI(V);
// Destroy Session
OCSession.mainSession.logout();
// Return the View
return V;
}
// Button Events
View.OnClickListener didClickNewAccount = new View.OnClickListener() {
public void onClick(View v) {
navigateToNewAccount();
}
};
View.OnClickListener didClickAboutUs = new View.OnClickListener() {
public void onClick(View v) {
navigateToAboutUs();
}
};
View.OnClickListener didClickLogin = new View.OnClickListener() {
public void onClick(View v) {
setUIForLogin(true);
login();
}
};
// Login
public void login() {
Log.d("OC", "Logging in...");
OCSession.mainSession.loginWithUserAndPass(usernameTextField.getText().toString(), passwordTextField.getText().toString(), loginCallback);
}
private Handler.Callback loginCallback = new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
boolean didLogin = message.arg1 != 0;
Log.d("OC", "Message Received");
if (didLogin) {
navigateToShowOnions();
return true;
}
// Reset UI
setUIForLogin(false);
// Show Toast
OnionDialog.show(getActivity(), "Account/Password mismatch.\nTry again.", OnionDialog.OnionDialogType.FAILURE, Toast.LENGTH_SHORT);
// We're done here.
return true;
}
};
private void navigateToShowOnions() {
navigateToFragment(new ShowOnionsFragment(), "ShowOnions");
}
private void navigateToNewAccount() {
navigateToFragment(new RegisterFragment(), "NewAccount");
}
private void navigateToAboutUs() {
navigateToFragment(new AboutFragment(), "AboutOnions");
}
private void navigateToFragment(Fragment fragment, String tag) {
usernameTextField.setText("");
passwordTextField.setText("");
MainActivity activity = (MainActivity)getActivity();
activity.animateToFragment(fragment, tag);
}
// UI
public void buildUI(View V) {
// Login Button
loginButton = (Button)V.findViewById(R.id.loginbutton);
loginButton.setOnClickListener(didClickLogin);
UIHelpers.styleOnionButton(loginButton, false);
// New Account/About Us Buttons
newAccount = (Button)V.findViewById(R.id.newAccount);
aboutButton = (Button)V.findViewById(R.id.aboutButton);
UIHelpers.styleClearButton(newAccount, Color.WHITE);
UIHelpers.styleClearButton(aboutButton, Color.WHITE);
newAccount.setOnClickListener(didClickNewAccount);
aboutButton.setOnClickListener(didClickAboutUs);
// TextFields
usernameTextField = (EditText)V.findViewById(R.id.usernameTextField);
usernameTextField.setBackgroundResource(R.drawable.under_border);
passwordTextField = (EditText)V.findViewById(R.id.passwordTextField);
usernameTextField.addTextChangedListener(textWatcher);
passwordTextField.addTextChangedListener(textWatcher);
}
public void setUIForLogin(boolean loggingIn) {
UIHelpers.styleOnionButton(loginButton, !loggingIn);
}
// Validation
private boolean loginFormIsValid() {
return usernameTextField.getText().length() > 0 && passwordTextField.getText().length() > 0;
}
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
setUIForLogin(!loginFormIsValid());
}
@Override
public void afterTextChanged(Editable editable) {}
};
}