/FileExtraction/Java_unseen/Kegbot_kegbot-android/kegtab/src/main/java/org/kegbot/app/HomeControlsFragment.java
/*
 * Copyright 2003-2020 The Kegbot Project contributors <info@kegbot.org>
 *
 * This file is part of the Kegtab package from the Kegbot project. For
 * more information on Kegtab or Kegbot, see <http://kegbot.org/>.
 *
 * Kegtab is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free
 * Software Foundation, version 2.
 *
 * Kegtab is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with Kegtab. If not, see <http://www.gnu.org/licenses/>.
 */
package org.kegbot.app;

import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;

import com.google.common.base.Strings;

import org.kegbot.app.config.AppConfiguration;
import org.kegbot.core.KegbotCore;

/**
 * Fragment showing default controls for the home screen.
 */
public class HomeControlsFragment extends Fragment {

  private static final String TAG = HomeControlsFragment.class.getSimpleName();

  private KegbotCore mCore;
  private AppConfiguration mConfig;

  private View mView;
  private Button mBeerMeButton;
  private Button mNewDrinkerButton;

  private static final int REQUEST_AUTHENTICATE = 1000;
  private static final int REQUEST_CREATE_DRINKER = 1001;

  private final OnClickListener mOnBeerMeClickedListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
      if (mConfig.useAccounts()) {
        final Intent intent = KegtabCommon.getAuthDrinkerActivityIntent(getActivity());
        startActivityForResult(intent, REQUEST_AUTHENTICATE);
      } else {
        mCore.getFlowManager().activateUserAmbiguousTap("");
      }
    }
  };

  private final OnClickListener mOnNewDrinkerClickedListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
      final Intent intent = KegtabCommon.getCreateDrinkerActivityIntent(getActivity());
      startActivityForResult(intent, REQUEST_CREATE_DRINKER);
    }
  };

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.main_controls_fragment_layout, container, false);

    mBeerMeButton = (Button) mView.findViewById(R.id.beerMeButton);
    mBeerMeButton.setOnClickListener(mOnBeerMeClickedListener);

    mNewDrinkerButton = (Button) mView.findViewById(R.id.newDrinkerButton);
    mNewDrinkerButton.setOnClickListener(mOnNewDrinkerClickedListener);

    return mView;
  }

  @Override
  public void onResume() {
    super.onResume();

    mCore = KegbotCore.getInstance(getActivity());
    mConfig = mCore.getConfiguration();

    boolean showControls = false;
    if (mConfig.getAllowManualLogin()) {
      mBeerMeButton.setVisibility(View.VISIBLE);
      showControls = true;
    } else {
      mBeerMeButton.setVisibility(View.GONE);
    }

    if (mConfig.getAllowRegistration() && mConfig.useAccounts()) {
      mNewDrinkerButton.setVisibility(View.VISIBLE);
      showControls = true;
    } else {
      mNewDrinkerButton.setVisibility(View.GONE);
    }

    if (showControls && mConfig.getRunCore()) {
      mView.setVisibility(View.VISIBLE);
    } else {
      mView.setVisibility(View.GONE);
    }
  }

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
      case REQUEST_AUTHENTICATE:
        Log.d(TAG, "Got authentication result.");
        if (resultCode == Activity.RESULT_OK && data != null) {
          final String username =
              data.getStringExtra(KegtabCommon.ACTIVITY_AUTH_DRINKER_RESULT_EXTRA_USERNAME);
          if (!Strings.isNullOrEmpty(username)) {
            AuthenticatingActivity.startAndAuthenticate(getActivity(), username);
          }
        }
        break;
      case REQUEST_CREATE_DRINKER:
        Log.d(TAG, "Got registration result.");
        if (resultCode == Activity.RESULT_OK && data != null) {
          final String username =
              data.getStringExtra(KegtabCommon.ACTIVITY_CREATE_DRINKER_RESULT_EXTRA_USERNAME);
          if (!Strings.isNullOrEmpty(username)) {
            Log.d(TAG, "Authenticating newly-created user.");
            AuthenticatingActivity.startAndAuthenticate(getActivity(), username);
          }
        }
        break;
      default:
        super.onActivityResult(requestCode, resultCode, data);
    }
  }

}
