messageCreateFragment.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package com.noahvogt.miniprojekt;
  2. import android.os.Bundle;
  3. import android.view.LayoutInflater;
  4. import android.view.MenuItem;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.Button;
  8. import android.widget.EditText;
  9. import android.widget.ImageButton;
  10. import android.widget.PopupMenu;
  11. import android.widget.Toast;
  12. import androidx.annotation.NonNull;
  13. import androidx.annotation.Nullable;
  14. import androidx.appcompat.app.AlertDialog;
  15. import androidx.fragment.app.DialogFragment;
  16. import com.google.android.material.snackbar.Snackbar;
  17. public class messageCreateFragment extends DialogFragment implements PopupMenu.OnMenuItemClickListener {
  18. static messageCreateFragment newInstance() {
  19. return new messageCreateFragment();
  20. }
  21. private AlertDialog dialog;
  22. // set theming style
  23. @Override
  24. public void onCreate(@Nullable Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setStyle(DialogFragment.STYLE_NORMAL, R.style.messageCreateTheme);
  27. }
  28. @Nullable
  29. @Override
  30. public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  31. // set and inflate layout
  32. View view = inflater.inflate(R.layout.message_create_fragment, container, false);
  33. // init vars
  34. ImageButton closeButton = view.findViewById(R.id.create_message_close_button);
  35. ImageButton sendButton = view.findViewById(R.id.create_message_send_button);
  36. ImageButton dotButton = view.findViewById(R.id.create_message_dots_button);
  37. ImageButton attachButton = view.findViewById(R.id.create_message_attach_button);
  38. EditText sendingAddressObject = (EditText) view.findViewById(R.id.create_message_sending_address_text);
  39. EditText receivingAddressObject = (EditText) view.findViewById(R.id.create_message_receiving_address_text);
  40. EditText subjectObject = (EditText) view.findViewById(R.id.create_message_subject_text);
  41. EditText messageBodyObject = (EditText) view.findViewById(R.id.create_message_body_text);
  42. // get string vars, MAYBE NOT HERE
  43. String sendingAddress = sendingAddressObject.getText().toString();
  44. String receivingAddress = receivingAddressObject.getText().toString();
  45. String subject = subjectObject.getText().toString();
  46. String messageBody = messageBodyObject.getText().toString();
  47. // TODO: add cc + bcc functionality
  48. // button listeners
  49. closeButton.setOnClickListener(new View.OnClickListener() {
  50. @Override
  51. public void onClick(View v) {
  52. String subject = subjectObject.getText().toString();
  53. String messageBody = messageBodyObject.getText().toString();
  54. if (subject.isEmpty() && messageBody.isEmpty()) {
  55. dismiss();
  56. }
  57. else {
  58. AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
  59. final View cancelAlertPopupView = getLayoutInflater().inflate(R.layout.closing_alert, null);
  60. // open View window
  61. dialogBuilder.setView(cancelAlertPopupView);
  62. dialog = dialogBuilder.create();
  63. dialog.show();
  64. Button yesButton = (Button) view.findViewById(R.id.closing_alert_yes_button);
  65. Button noButton = (Button) view.findViewById(R.id.closing_alert_no_button);
  66. final boolean[] wantsToCancel = new boolean[1]; // do we really need an array here? stupid java
  67. /*
  68. yesButton.setOnClickListener(new View.OnClickListener() {
  69. @Override
  70. public void onClick(View v) {
  71. //wantsToCancel[0] = true;
  72. dialog.dismiss();
  73. }
  74. });
  75. noButton.setOnClickListener(new View.OnClickListener() {
  76. @Override
  77. public void onClick(View v) {
  78. //wantsToCancel[0] = false;
  79. dialog.dismiss();
  80. }
  81. });
  82. if (wantsToCancel[0]) {
  83. dismiss();
  84. }*/
  85. // TODO: alert user when pressing this button in case input fields are not empty
  86. }
  87. }
  88. });
  89. attachButton.setOnClickListener(new View.OnClickListener() {
  90. @Override
  91. public void onClick(View v) {
  92. // TODO: add file attachment functionality
  93. }
  94. });
  95. dotButton.setOnClickListener(new View.OnClickListener() {
  96. @Override
  97. public void onClick(View v) {
  98. PopupMenu popupMenu = new PopupMenu(getActivity(), v);
  99. popupMenu.setOnMenuItemClickListener(messageCreateFragment.this::onMenuItemClick);
  100. popupMenu.inflate(R.menu.create_message_options_menu);
  101. popupMenu.show();
  102. }
  103. });
  104. sendButton.setOnClickListener(new View.OnClickListener() {
  105. @Override
  106. public void onClick(View v) {
  107. // TODO: implement sending functionality
  108. dismiss();
  109. }
  110. });
  111. return view;
  112. }
  113. // TODO: add useful functionality to the menu + consider not using Resource ID's in switch statement
  114. @Override
  115. public boolean onMenuItemClick(MenuItem item) {
  116. switch (item.getItemId()) {
  117. case R.id.create_message_item_1:
  118. Toast.makeText(getActivity(), "item 1 clicked", Toast.LENGTH_LONG).show();
  119. return true;
  120. case R.id.create_message_item_2:
  121. Toast.makeText(getActivity(), "item 2 clicked", Toast.LENGTH_LONG).show();
  122. return true;
  123. case R.id.create_message_item_3:
  124. Toast.makeText(getActivity(), "item 3 clicked", Toast.LENGTH_LONG).show();
  125. return true;
  126. case R.id.create_message_item_4:
  127. Toast.makeText(getActivity(), "item 4 clicked", Toast.LENGTH_LONG).show();
  128. return true;
  129. default: // this case should never occur
  130. return false;
  131. }
  132. }
  133. }