Advertisement
Guest User

Screen 4

a guest
May 26th, 2018
1,359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.78 KB | None | 0 0
  1. package com.example.jesper.myapplication;
  2.  
  3. import android.Manifest;
  4. import android.content.Context;
  5. import android.content.DialogInterface;
  6. import android.content.Intent;
  7. import android.graphics.Bitmap;
  8. import android.media.AudioManager;
  9. import android.media.MediaPlayer;
  10. import android.media.RingtoneManager;
  11. import android.media.ToneGenerator;
  12. import android.net.Uri;
  13. import android.os.Environment;
  14. import android.provider.MediaStore;
  15. import android.provider.Settings;
  16. import android.support.v7.app.AlertDialog;
  17. import android.support.v7.app.AppCompatActivity;
  18. import android.os.Bundle;
  19. import android.util.Log;
  20. import android.view.Gravity;
  21. import android.view.View;
  22. import android.widget.Button;
  23. import android.widget.CheckedTextView;
  24. import android.widget.TableLayout;
  25. import android.widget.TableRow;
  26. import android.widget.TextView;
  27. import android.widget.Toast;
  28.  
  29. import com.github.gcacace.signaturepad.views.SignaturePad;
  30.  
  31. import java.io.File;
  32. import java.io.FileOutputStream;
  33. import java.io.IOException;
  34. import java.util.ArrayList;
  35.  
  36. public class Screen4 extends AppCompatActivity {
  37.     public static final int maxPlayers = 11;
  38.  
  39.     private Button adminButton;
  40.     private Button confirmButton;
  41.     private Button confirmSigButton;
  42.     private TableLayout playersLayout;
  43.     private SignaturePad signaturePad;
  44.  
  45.     private boolean justCleared = false;
  46.     private View.OnClickListener playerSelectListener;
  47.     private File signatureFile;
  48.     private FileOutputStream signatureOutStream;
  49.  
  50.     private int teamYear = 9;
  51.     private ArrayList<Player> selectedPlayers;
  52.  
  53.     String team = null;
  54.  
  55.     @Override
  56.     protected void onCreate(Bundle savedInstanceState) {
  57.         //Group, team, year, isAdmin,
  58.         super.onCreate(savedInstanceState);
  59.         setContentView(R.layout.activity_screen4);
  60.  
  61.         playersLayout = findViewById(R.id.player_list);
  62.         signaturePad = findViewById(R.id.signature_pad);
  63.         adminButton = findViewById(R.id.admin_access);
  64.         confirmButton = findViewById(R.id.confirmation_button);
  65.         confirmSigButton = findViewById(R.id.confirm_signature);
  66.  
  67.         adminButton.setEnabled(false);
  68.         confirmButton.setEnabled(false);
  69.         confirmSigButton.setEnabled(false);
  70.  
  71.         selectedPlayers = new ArrayList<>();
  72.  
  73.         setListeners();
  74.  
  75.         team = getIntent().getStringExtra("Team");
  76.  
  77.         int i = 8;
  78.         while(i >= 0) {
  79.             addPlayer("Zlatan", "0830");
  80.             i--;
  81.         }
  82.  
  83.         i=8;
  84.         while(i >= 0) {
  85.             addPlayer("Zlatan", "0930");
  86.             i--;
  87.         }
  88.  
  89.         //requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO},
  90.         //      1);
  91.     }
  92.  
  93.     private void setListeners() {
  94.         adminButton.setOnClickListener(new View.OnClickListener() {
  95.             @Override
  96.             public void onClick(View view) {
  97.  
  98.             }
  99.         });
  100.         confirmButton.setOnClickListener(new View.OnClickListener() {
  101.             @Override
  102.             public void onClick(View view)
  103.             {
  104.                 if(checkValidity()) {
  105.                     Intent data = new Intent();
  106.                     data.putExtra("PlayerList", selectedPlayers);
  107.                     data.putExtra("Team", team);
  108.                     setResult(RESULT_OK, data);
  109.                     finish();
  110.                 }
  111.                 else {
  112.                     ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_MUSIC, 100);
  113.                     tg.startTone(ToneGenerator.TONE_PROP_NACK, 200);
  114.  
  115.                     AlertDialog.Builder builder = new AlertDialog.Builder(Screen4.this);
  116.                     builder.setCancelable(false);
  117.                     builder.setMessage(getString(R.string.too_many_old_players));
  118.                     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
  119.                         @Override
  120.                         public void onClick(DialogInterface dialogInterface, int i) {
  121.  
  122.                         }
  123.                     });
  124.  
  125.                     builder.create().show();
  126.                 }
  127.             }
  128.         });
  129.         confirmSigButton.setOnClickListener(new View.OnClickListener() {
  130.             @Override
  131.             public void onClick(View view) {
  132.                 saveSignature(signaturePad.getTransparentSignatureBitmap());
  133.                 confirmButton.setEnabled(true);
  134.             }
  135.         });
  136.         signaturePad.setOnSignedListener(new SignaturePad.OnSignedListener() {
  137.             @Override
  138.             public void onStartSigning() {
  139.             }
  140.  
  141.             @Override
  142.             public void onSigned() {
  143.                 if(justCleared) justCleared = false;
  144.                 else confirmSigButton.setEnabled(true);
  145.             }
  146.  
  147.             @Override
  148.             public void onClear() {
  149.                 confirmSigButton.setEnabled(false);
  150.                 confirmButton.setEnabled(false);
  151.                 adminButton.setEnabled(false);
  152.  
  153.                 justCleared = true;
  154.             }
  155.         });
  156.  
  157.         playerSelectListener = new View.OnClickListener() {
  158.             @Override
  159.             public void onClick(View view) {
  160.                 if(((CheckedTextView)view).isChecked()) {
  161.                     ((CheckedTextView)view).setChecked(false);
  162.                     ((CheckedTextView)view).setCheckMarkDrawable(0);
  163.                     removeSelectedPlayer(getPlayerRowData((TableRow)(view.getParent())));
  164.                 }
  165.  
  166.                 else {
  167.                     ((CheckedTextView)view).setChecked(true);
  168.                     ((CheckedTextView)view).setCheckMarkDrawable(R.drawable.ic_checkmark);
  169.                     selectedPlayers.add(getPlayerRowData((TableRow)(view.getParent())));
  170.                 }
  171.             }
  172.         };
  173.     }
  174.  
  175.     private void addPlayer(String name, String birthday) {
  176.         TableRow newPlayer = new TableRow(this);
  177.         TextView textBirthday = new TextView(this);
  178.         CheckedTextView textName = new CheckedTextView(this);
  179.  
  180.         newPlayer.setMinimumHeight(dpToPx(50));
  181.         newPlayer.addView(textName);
  182.         newPlayer.addView(textBirthday);
  183.  
  184.         textName.setText(name);
  185.         textName.setChecked(false);
  186.         textName.setGravity(Gravity.CENTER_VERTICAL);
  187.         textName.setLayoutParams(new TableRow.LayoutParams(0,TableRow.LayoutParams.MATCH_PARENT, 1.0f));
  188.         textName.setOnClickListener(playerSelectListener);
  189.  
  190.         textBirthday.setText(birthday);
  191.         textBirthday.setGravity(android.view.Gravity.RIGHT | Gravity.CENTER_VERTICAL);
  192.         textBirthday.setLayoutParams(new TableRow.LayoutParams(0,TableRow.LayoutParams.MATCH_PARENT,0.3f));
  193.  
  194.         playersLayout.addView(newPlayer);
  195.     }
  196.  
  197.  
  198.     private boolean checkValidity() {
  199.         int nOveraged = 0;
  200.         for(Player player : selectedPlayers) {
  201.             Log.v("Player", "Name : "+player.name+", Birth year : "+player.birthYear+", Birth month : "+player.birthMonth);
  202.             if(teamYear > player.birthYear) {
  203.                 nOveraged++;
  204.                 if(nOveraged > 2) return false;
  205.             }
  206.         }
  207.         return true;
  208.     }
  209.  
  210.     private Player getPlayerRowData(TableRow playerRow) {
  211.         CheckedTextView name = (CheckedTextView) playerRow.getChildAt(0);
  212.         TextView birthDay = (TextView) playerRow.getChildAt(1);
  213.  
  214.         int birthYear = Integer.parseInt(birthDay.getText().toString().substring(0,2));
  215.         int birthMonth = Integer.parseInt(birthDay.getText().toString().substring(2,4));
  216.  
  217.         return new Player(name.getText().toString(), birthYear, birthMonth);
  218.     }
  219.  
  220.     private int dpToPx(int dp) {
  221.         float density = this.getResources().getDisplayMetrics().density;
  222.         return Math.round((float) dp * density);
  223.     }
  224.  
  225.     private void saveSignature(Bitmap signature) {
  226.         String fileName = "testSig.png";
  227.         signatureFile = new File(Environment.getExternalStorageDirectory(), fileName);
  228.         try {
  229.             if(!signatureFile.exists()) {
  230.                 signatureFile.createNewFile();
  231.             }
  232.             signatureOutStream = new FileOutputStream(signatureFile);
  233.             signature.compress(Bitmap.CompressFormat.PNG, 100, signatureOutStream);
  234.             signatureOutStream.close();
  235.             Toast.makeText(this, "Signature saved", Toast.LENGTH_SHORT).show();
  236.         }
  237.         catch (IOException e) { e.printStackTrace(); }
  238.     }
  239.  
  240.     private void removeSelectedPlayer(Player playerRemove) {
  241.         for(Player player : selectedPlayers) {
  242.             if(player.name.equals(playerRemove.name) &&
  243.                player.birthMonth == playerRemove.birthMonth &&
  244.                player.birthYear == playerRemove.birthYear) {
  245.                 selectedPlayers.remove(player);
  246.                 return;
  247.             }
  248.         }
  249.     }
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement