package net.jacekk.bridge.android;
|
|
import android.app.Activity;
|
import android.os.Bundle;
|
import android.text.Editable;
|
import android.text.TextWatcher;
|
import android.view.View;
|
import android.widget.EditText;
|
import android.widget.SeekBar;
|
import android.widget.TextView;
|
import android.widget.ToggleButton;
|
|
import net.jacekk.bridge.R;
|
import net.jacekk.bridge.BridgeCompute;
|
import net.jacekk.bridge.BridgeResult;
|
|
public class MainActivity extends Activity {
|
private SeekBar BidSlider;
|
private TextView BidText;
|
|
private ToggleButton MinorSuitsToggle;
|
private ToggleButton MajorSuitsToggle;
|
private ToggleButton NoTrumpToggle;
|
|
private ToggleButton ContractToggle;
|
private ToggleButton DoubleToggle;
|
private ToggleButton RedoubleToggle;
|
|
private ToggleButton NNToggle;
|
private ToggleButton NVToggle;
|
private ToggleButton VNToggle;
|
private ToggleButton VVToggle;
|
|
private EditText PCInput;
|
private EditText TricksInput;
|
|
private TextView resultText;
|
|
public BridgeCompute bridgeCompute;
|
|
/**
|
* Called when the activity is first created.
|
*/
|
@Override
|
public void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.main);
|
|
InitializeApp();
|
}
|
|
private void InitializeApp() {
|
bridgeCompute = new BridgeCompute();
|
|
BidSlider = (SeekBar) findViewById(R.id.BidSlider);
|
BidText = (TextView) findViewById(R.id.BidText);
|
|
MinorSuitsToggle = (ToggleButton) findViewById(R.id.MinorSuitsToggle);
|
MajorSuitsToggle = (ToggleButton) findViewById(R.id.MajorSuitsToggle);
|
NoTrumpToggle = (ToggleButton) findViewById(R.id.NoTrumpToggle);
|
|
ContractToggle = (ToggleButton) findViewById(R.id.ContractToggle);
|
DoubleToggle = (ToggleButton) findViewById(R.id.DoubleToggle);
|
RedoubleToggle = (ToggleButton) findViewById(R.id.RedoubleToggle);
|
|
NNToggle = (ToggleButton) findViewById(R.id.NNToggle);
|
NVToggle = (ToggleButton) findViewById(R.id.NVToggle);
|
VNToggle = (ToggleButton) findViewById(R.id.VNToggle);
|
VVToggle = (ToggleButton) findViewById(R.id.VVToggle);
|
|
PCInput = (EditText) findViewById(R.id.PCInput);
|
TricksInput = (EditText) findViewById(R.id.TricksInput);
|
|
resultText = (TextView) findViewById(R.id.ResultsText);
|
|
BidSlider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
@Override
|
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
|
BidText.setText(Integer.toString(seekBar.getProgress()));
|
updateResults();
|
}
|
|
@Override
|
public void onStartTrackingTouch(SeekBar seekBar) {
|
}
|
|
@Override
|
public void onStopTrackingTouch(SeekBar seekBar) {
|
}
|
});
|
|
ToggleButton.OnClickListener colorClickListener = new ToggleButton.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
ToggleButton toggle = (ToggleButton) view;
|
|
if (!toggle.equals(MinorSuitsToggle))
|
MinorSuitsToggle.setChecked(false);
|
if (!toggle.equals(MajorSuitsToggle))
|
MajorSuitsToggle.setChecked(false);
|
if (!toggle.equals(NoTrumpToggle))
|
NoTrumpToggle.setChecked(false);
|
|
updateResults();
|
}
|
};
|
|
MinorSuitsToggle.setOnClickListener(colorClickListener);
|
MajorSuitsToggle.setOnClickListener(colorClickListener);
|
NoTrumpToggle.setOnClickListener(colorClickListener);
|
|
ToggleButton.OnClickListener bidClickListener = new ToggleButton.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
ToggleButton toggle = (ToggleButton) view;
|
|
if (!toggle.equals(ContractToggle))
|
ContractToggle.setChecked(false);
|
if (!toggle.equals(DoubleToggle))
|
DoubleToggle.setChecked(false);
|
if (!toggle.equals(RedoubleToggle))
|
RedoubleToggle.setChecked(false);
|
|
updateResults();
|
}
|
};
|
|
ContractToggle.setOnClickListener(bidClickListener);
|
DoubleToggle.setOnClickListener(bidClickListener);
|
RedoubleToggle.setOnClickListener(bidClickListener);
|
|
ToggleButton.OnClickListener baClickListener = new ToggleButton.OnClickListener() {
|
public void onClick(View view) {
|
ToggleButton toggle = (ToggleButton) view;
|
|
if (!toggle.equals(VVToggle))
|
VVToggle.setChecked(false);
|
if (!toggle.equals(VNToggle))
|
VNToggle.setChecked(false);
|
if (!toggle.equals(NVToggle))
|
NVToggle.setChecked(false);
|
if (!toggle.equals(NNToggle))
|
NNToggle.setChecked(false);
|
|
updateResults();
|
}
|
};
|
|
VVToggle.setOnClickListener(baClickListener);
|
VNToggle.setOnClickListener(baClickListener);
|
NVToggle.setOnClickListener(baClickListener);
|
NNToggle.setOnClickListener(baClickListener);
|
|
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) {
|
}
|
|
@Override
|
public void afterTextChanged(Editable editable) {
|
updateResults();
|
}
|
};
|
|
PCInput.addTextChangedListener(textWatcher);
|
TricksInput.addTextChangedListener(textWatcher);
|
}
|
|
public void updateResults() {
|
int bid = BidSlider.getProgress();
|
|
int color = 0;
|
if (MajorSuitsToggle.isChecked())
|
color = 1;
|
if (NoTrumpToggle.isChecked())
|
color = 2;
|
|
int dbl = 0;
|
if (DoubleToggle.isChecked())
|
dbl = 1;
|
if (RedoubleToggle.isChecked())
|
dbl = 2;
|
|
int vulnerability = 0;
|
if (NVToggle.isChecked())
|
vulnerability = 1;
|
if (VNToggle.isChecked())
|
vulnerability = 2;
|
if (VVToggle.isChecked())
|
vulnerability = 3;
|
|
int PC = -1;
|
try {
|
PC = Integer.parseInt(PCInput.getText().toString());
|
} catch (NumberFormatException ignored) {
|
}
|
|
int tricks = -1;
|
try {
|
tricks = Integer.parseInt(TricksInput.getText().toString());
|
} catch (NumberFormatException ignored) {
|
}
|
|
if (bid < 0 || bid > 7) {
|
resultText.setText(getString(R.string.invalid_bid));
|
return;
|
}
|
|
if (color != 0 && color != 1 && color != 2) {
|
resultText.setText(getString(R.string.invalid_color));
|
return;
|
}
|
|
if (dbl < 0 || dbl > 2) {
|
resultText.setText(getString(R.string.invalid_dbl));
|
return;
|
}
|
|
if (vulnerability < 0 || vulnerability > 3) {
|
resultText.setText(getString(R.string.invalid_baba));
|
return;
|
}
|
|
if (PC < 0 || PC > 40) {
|
resultText.setText(getString(R.string.invalid_pc));
|
return;
|
}
|
|
if (tricks < 0 || tricks > 13) {
|
resultText.setText(getString(R.string.invalid_tricks));
|
return;
|
}
|
|
if (bid == 0 && PC < 20) {
|
resultText.setText(getString(R.string.invalid_pass));
|
return;
|
}
|
|
BridgeResult result = bridgeCompute.compute(bid, color, dbl, vulnerability, PC, tricks);
|
resultText.setText(
|
(result.pointsFor == BridgeResult.PointsFor.Us ? getString(R.string.result_for_us) : getString(R.string.result_for_them)) +
|
"\n" + getString(R.string.result_pts_wo_pc) + " " + result.pointsBefore +
|
"\n" + getString(R.string.result_pts) + " " + result.points +
|
"\n" + getString(R.string.result_imps) + " " + result.IMPs +
|
"\n" + getString(R.string.result_percent) + " " + result.percent);
|
}
|
}
|