package com.hexonxons.leprawatch.fragment;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.content.LocalBroadcastManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import com.hexonxons.leprawatch.R;
import com.hexonxons.leprawatch.system.Constants;
public class AuthFragment extends Fragment
{
public static final String TAG = "AuthFragment";
private EditText mLoginEditText = null;
private EditText mPasswordEditText = null;
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
switch(intent.getAction())
{
case Constants.INTENT_FILTER.ACTION_AUTH_FAIL:
{
AuthDialogFragment fragment = (AuthDialogFragment) getActivity().getSupportFragmentManager().findFragmentByTag(AuthDialogFragment.TAG);
Dialog authDialog = fragment.getDialog();
TextView authDialogMessage = (TextView) authDialog.findViewById(R.id.auth_text);
authDialogMessage.setText(intent.getStringExtra(Constants.BUNDLE.KEY_AUTH));
authDialog.setCancelable(true);
authDialog.setCanceledOnTouchOutside(true);
break;
}
case Constants.INTENT_FILTER.ACTION_AUTH_SUCCESS:
{
AuthDialogFragment fragment = (AuthDialogFragment) getActivity().getSupportFragmentManager().findFragmentByTag(AuthDialogFragment.TAG);
fragment.dismiss();
// Show auth dialog.
AuthDialogFragment dialog = new AuthDialogFragment();
dialog.setCancelable(false);
dialog.show(getActivity().getSupportFragmentManager(), AuthDialogFragment.TAG);
// Workaround with View.setFitsSystemWindows issue.
// It seems not possible to request fit system windows without activity restart.
getActivity().finish();
getActivity().startActivity(getActivity().getIntent());
break;
}
default:
{
break;
}
}
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
ViewGroup mainView = (ViewGroup) inflater.inflate(R.layout.auth, container, false);
mLoginEditText = (EditText) mainView.findViewById(R.id.auth_login_edit);
mPasswordEditText = (EditText) mainView.findViewById(R.id.auth_password_edit);
mainView.findViewById(R.id.auth_login_button).setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// Show auth dialog.
AuthDialogFragment dialog = new AuthDialogFragment();
dialog.setCancelable(false);
dialog.show(getActivity().getSupportFragmentManager(), AuthDialogFragment.TAG);
// Send auth intent.
Intent intent = new Intent(Constants.INTENT_FILTER.ACTION_AUTH);
intent.putExtra(Constants.BUNDLE.KEY_USERNAME, mLoginEditText.getText().toString());
intent.putExtra(Constants.BUNDLE.KEY_PASSWORD, mPasswordEditText.getText().toString());
LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
}
});
return mainView;
}
@Override
public void onResume()
{
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction(Constants.INTENT_FILTER.ACTION_AUTH_FAIL);
filter.addAction(Constants.INTENT_FILTER.ACTION_AUTH_SUCCESS);
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mBroadcastReceiver, filter);
}
}