MainActivity.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. package com.noahvogt.miniprojekt;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.view.Menu;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.EditText;
  8. import android.widget.ImageButton;
  9. import android.widget.Toast;
  10. import androidx.appcompat.app.AlertDialog;
  11. import androidx.appcompat.app.AppCompatActivity;
  12. import androidx.appcompat.widget.Toolbar;
  13. import androidx.drawerlayout.widget.DrawerLayout;
  14. import androidx.fragment.app.DialogFragment;
  15. import android.view.LayoutInflater;
  16. import android.view.Menu;
  17. import android.view.View;
  18. import android.view.ViewGroup;
  19. import com.noahvogt.miniprojekt.ui.home.CustomAdapter;
  20. import com.noahvogt.miniprojekt.ui.home.Data;
  21. import com.noahvogt.miniprojekt.ui.home.SettingsActivity;
  22. import com.noahvogt.miniprojekt.ui.home.SettingsFragment;
  23. import androidx.recyclerview.widget.LinearLayoutManager;
  24. import androidx.recyclerview.widget.RecyclerView;
  25. import androidx.recyclerview.widget.StaggeredGridLayoutManager;
  26. import java.util.ArrayList;
  27. import com.google.android.material.navigation.NavigationView;
  28. import androidx.navigation.NavController;
  29. import androidx.navigation.Navigation;
  30. import androidx.navigation.ui.AppBarConfiguration;
  31. import androidx.navigation.ui.NavigationUI;
  32. import com.google.android.material.navigation.NavigationView;
  33. import com.google.android.material.snackbar.Snackbar;
  34. import static com.noahvogt.miniprojekt.R.id.drawer_layout;
  35. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  36. private AppBarConfiguration mAppBarConfiguration;
  37. //imported by simon 2.may from RecyclerView Programm, changed to 23.may Simon to ArrayList<Data>...
  38. protected ArrayList<Data> data;
  39. private AlertDialog dialog;
  40. private EditText newemail_name, newemail_email, newemail_password; // may not be private
  41. // empty descriptor
  42. public MainActivity() {
  43. }
  44. @Override
  45. protected void onCreate(Bundle savedInstanceState) {
  46. super.onCreate(savedInstanceState);
  47. setContentView(R.layout.activity_main);
  48. // define button listeners
  49. Button add_email_button = (Button) findViewById(R.id.addEmailButton);
  50. add_email_button.setOnClickListener(new View.OnClickListener() {
  51. @Override
  52. public void onClick(View v) {
  53. createNewEmailDialog();
  54. }
  55. });
  56. ImageButton message_create_button = (ImageButton) findViewById(R.id.messageButton);
  57. message_create_button.setOnClickListener(new View.OnClickListener() {
  58. @Override
  59. public void onClick(View v) {
  60. DialogFragment dialog = messageCreateFragment.newInstance();
  61. dialog.show(getSupportFragmentManager(), "tag");
  62. }
  63. });
  64. Toolbar toolbar = findViewById(R.id.toolbar);
  65. setSupportActionBar(toolbar);
  66. DrawerLayout drawer = findViewById(drawer_layout);
  67. NavigationView navigationView = findViewById(R.id.nav_view);
  68. // Passing each menu ID as a set of Ids because each
  69. // menu should be considered as top level destinations.
  70. mAppBarConfiguration = new AppBarConfiguration.Builder(
  71. R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
  72. .setDrawerLayout(drawer)
  73. .build();
  74. NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
  75. NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
  76. NavigationUI.setupWithNavController(navigationView, navController);
  77. //initDataset();
  78. // Lookup the recyclerview in activity layou
  79. RecyclerView recyclerView = findViewById(R.id.recyclerView);
  80. // Initialize contacts
  81. data = Data.createContactsList(20);
  82. // Create adapter passing in the sample user data
  83. CustomAdapter adapter = new CustomAdapter(data);
  84. // Attach the adapter to the recyclerview to populate items
  85. recyclerView.setAdapter(adapter);
  86. recyclerView.setLayoutManager(new LinearLayoutManager(this));
  87. //
  88. Button settingButton = findViewById(R.id.settingsButton);
  89. settingButton.setOnClickListener(new View.OnClickListener() {
  90. @Override
  91. public void onClick(View v) {
  92. Intent i = new Intent(MainActivity.this, SettingsActivity.class);
  93. startActivity(i);
  94. }
  95. });
  96. }
  97. @Override
  98. public boolean onCreateOptionsMenu(Menu menu) {
  99. // Inflate the menu; this adds items to the action bar if it is present.
  100. getMenuInflater().inflate(R.menu.create_message_options_menu, menu);
  101. return true;
  102. }
  103. @Override
  104. public boolean onSupportNavigateUp() {
  105. NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
  106. return NavigationUI.navigateUp(navController, mAppBarConfiguration)
  107. || super.onSupportNavigateUp();
  108. }
  109. // better leave empty to avoid any listener disambiguity
  110. public void onClick(View view) {}
  111. public void createNewEmailDialog(){
  112. // define View window
  113. AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
  114. final View emailPopupView = getLayoutInflater().inflate(R.layout.popup, null);
  115. // init text field variables
  116. newemail_name = emailPopupView.findViewById(R.id.popup_material_name_asking_text);
  117. newemail_email = emailPopupView.findViewById(R.id.popup_material_email_asking_text);
  118. newemail_password = emailPopupView.findViewById(R.id.popup_material_password_asking_text);
  119. // init button variables
  120. Button newemail_save_button = (Button) emailPopupView.findViewById(R.id.saveButton);
  121. // may not be private
  122. Button newemail_cancel_button = (Button) emailPopupView.findViewById(R.id.cancelButton);
  123. // open View window
  124. dialogBuilder.setView(emailPopupView);
  125. dialog = dialogBuilder.create();
  126. dialog.show();
  127. // store user input
  128. newemail_save_button.setOnClickListener(new View.OnClickListener() {
  129. @Override
  130. public void onClick(View v) {
  131. // store user input (only needed for DEBUGGING)
  132. String name = newemail_name.getText().toString();
  133. String email = newemail_email.getText().toString();
  134. String password = newemail_password.getText().toString();
  135. if (!mailFunctions.validateEmail(newemail_email) | !mailFunctions.validateName(newemail_name) | !mailFunctions.validatePassword(newemail_password)) {
  136. return;
  137. }
  138. // show all strings the user gave, this will later be stored to a secure database and checked for validation
  139. showToast(name);
  140. showToast(email);
  141. showToast(password);
  142. showSnackbar(emailPopupView,"save button clicked");
  143. }
  144. });
  145. newemail_cancel_button.setOnClickListener(new View.OnClickListener() {
  146. @Override
  147. public void onClick(View v) {
  148. // define save button here
  149. dialog.dismiss();
  150. }
  151. });
  152. }
  153. // show debug output in specific view
  154. private void showSnackbar(View View, String text) {
  155. Snackbar.make(View, text, Snackbar.LENGTH_LONG)
  156. .setAction("Action", null).show();
  157. }
  158. // like showSnackbar(), but global and uglier
  159. private void showToast(String text) {
  160. Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
  161. }
  162. }