Переглянути джерело

Merge branch 'master' of github.com:noahvogt/mini-project

Noah Vogt 3 роки тому
батько
коміт
19b467c189
18 змінених файлів з 227 додано та 192 видалено
  1. 21 9
      app/src/main/java/com/noahvogt/miniprojekt/MainActivity.java
  2. 0 13
      app/src/main/java/com/noahvogt/miniprojekt/NewDraftMessageActivity.java
  3. 1 2
      app/src/main/java/com/noahvogt/miniprojekt/messageCreateFragment.java
  4. 1 1
      app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/EmailRepository.java
  5. 9 3
      app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/EmailRoomDatabase.java
  6. 0 10
      app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/MessageDao.java
  7. 16 2
      app/src/main/java/com/noahvogt/miniprojekt/ui/archive/ArchiveFragment.java
  8. 48 5
      app/src/main/java/com/noahvogt/miniprojekt/ui/gallery/GalleryFragment.java
  9. 16 5
      app/src/main/java/com/noahvogt/miniprojekt/ui/home/CustomAdapter.java
  10. 15 2
      app/src/main/java/com/noahvogt/miniprojekt/ui/home/HomeFragment.java
  11. 5 0
      app/src/main/java/com/noahvogt/miniprojekt/ui/home/SettingsActivity.java
  12. 29 35
      app/src/main/java/com/noahvogt/miniprojekt/ui/show/MessageShowFragment.java
  13. 15 5
      app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/DraftFragment.java
  14. 18 72
      app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/EmailViewHolder.java
  15. 1 1
      app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/EmailViewModel.java
  16. 17 2
      app/src/main/java/com/noahvogt/miniprojekt/ui/spam/SpamFragment.java
  17. 10 0
      app/src/main/res/layout/content_main.xml
  18. 5 25
      app/src/main/res/layout/message_show_fragment.xml

+ 21 - 9
app/src/main/java/com/noahvogt/miniprojekt/MainActivity.java

@@ -39,6 +39,8 @@ import com.chaquo.python.Python;
 import com.chaquo.python.android.AndroidPlatform;
 import com.google.android.material.snackbar.Snackbar;
 import com.noahvogt.miniprojekt.ui.home.SettingsActivity;
+import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
+import com.noahvogt.miniprojekt.ui.slideshow.EmailViewHolder;
 import com.noahvogt.miniprojekt.ui.slideshow.EmailViewModel;
 
 import java.text.SimpleDateFormat;
@@ -47,7 +49,7 @@ import java.util.List;
 
 import static com.noahvogt.miniprojekt.R.id.drawer_layout;
 
-public class MainActivity extends AppCompatActivity implements View.OnClickListener {
+public class MainActivity extends AppCompatActivity implements View.OnClickListener, CustomAdapter.SelectedMessage {
 
     private AppBarConfiguration mAppBarConfiguration;
 
@@ -55,8 +57,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     public static EmailViewModel mEmailViewModel;
     public static RecyclerView recyclerView;
 
-    public static final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff());
-
     private AlertDialog dialog;
     private EditText newemail_name, newemail_email, newemail_password; /* may not be private */
 
@@ -132,11 +132,21 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
         /* Lookup the recyclerview in activity layout */
         recyclerView = findViewById(R.id.recyclerView);
 
+        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff(),this);
+
+
 
         /* Attach the adapter to the recyclerview to populate items */
         recyclerView.setAdapter(adapter);
         recyclerView.setLayoutManager(new LinearLayoutManager(this));
 
+        /* get Inbox Messages in Recyclerviewer at begining is overwritten by Fragments but has to stay*/
+        mEmailViewModel = new ViewModelProvider(this).get(EmailViewModel.class);
+        mEmailViewModel.getInboxMessage().observe(this, messages -> {
+            /* Update the cached copy of the messages in the adapter*/
+            adapter.submitList(messages);
+        });
+
 
         Button settingButton = findViewById(R.id.settingsButton);
         settingButton.setOnClickListener(new View.OnClickListener() {
@@ -146,12 +156,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                 startActivity(i);
             }
         });
-        /* get Inbox Messages in Recyclerviewer at begining is overwritten by Fragments but has to stay*/
-        mEmailViewModel = new ViewModelProvider(this).get(EmailViewModel.class);
-        mEmailViewModel.getInboxMessage().observe(this, messages -> {
-            /* Update the cached copy of the messages in the adapter*/
-            adapter.submitList(messages);
-        });
+
 
 
         /* Start email Writer*/
@@ -312,5 +317,12 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     }
 
 
+    @Override
+    public void selectedMessage(Message emailViewModel) {
+
+        DialogFragment dialog = MessageShowFragment.newInstance(emailViewModel);
+        dialog.show(getSupportFragmentManager(), "tag");
+
+    }
 }
 

+ 0 - 13
app/src/main/java/com/noahvogt/miniprojekt/NewDraftMessageActivity.java

@@ -13,25 +13,12 @@ import android.widget.Toast;
 
 public class NewDraftMessageActivity extends AppCompatActivity {
 
-
-
-
-
-
    @Override
     public void onCreate(Bundle savedInstanceState){
         super.onCreate(savedInstanceState);
         setContentView(R.layout.fragment_home);
 
        NewDraftMessageActivity.this.finish();
-
-
-
-
-
-
-
-
         }
     }
 

+ 1 - 2
app/src/main/java/com/noahvogt/miniprojekt/messageCreateFragment.java

@@ -45,7 +45,7 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
     public Activity activity = new Activity();
     public static Intent replyIntent = new Intent();
 
-    static messageCreateFragment newInstance() {
+    public static messageCreateFragment newInstance() {
         return new messageCreateFragment();
     }
     private AlertDialog dialog;
@@ -72,7 +72,6 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
         View view = inflater.inflate(R.layout.message_create_fragment, container, false);
 
         /* init vars */
-
         ImageButton closeButton = view.findViewById(R.id.create_message_close_button);
         final ImageButton sendButton = view.findViewById(R.id.create_message_send_button);
         ImageButton dotButton = view.findViewById(R.id.create_message_dots_button);

+ 1 - 1
app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/EmailRepository.java

@@ -25,9 +25,9 @@ public class EmailRepository {
     public EmailRepository(Application application) {
         EmailRoomDatabase db = EmailRoomDatabase.getDatabase(application);
         messageDao = db.messageDao();
+        mInboxMessage = messageDao.getInboxMessages();
         mDraftMessage = messageDao.getDraftMessages();
         mArchiveMessage = messageDao.getArchiveMessages();
-        mInboxMessage = messageDao.getInboxMessages();
         mSentMessage = messageDao.getSentMessages();
         mSpamMessage = messageDao.getSpamMessages();
     }

+ 9 - 3
app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/EmailRoomDatabase.java

@@ -1,6 +1,7 @@
 package com.noahvogt.miniprojekt.ui.DataBase;
 
 import android.content.Context;
+import android.content.Intent;
 import android.icu.util.Measure;
 
 import androidx.annotation.NonNull;
@@ -38,7 +39,7 @@ public abstract class EmailRoomDatabase extends RoomDatabase{
 
     static EmailRoomDatabase getDatabase(final Context context) {
         if (INSTANCE == null) {
-            /* synchronize all threads of WordRoomDatabase */
+            /* synchronize all threads of EmailRoomDatabase */
             synchronized (EmailRoomDatabase.class) {
                 if (INSTANCE == null) {
                     /* passes the interface in the Room and deletes old data/schema from device*/
@@ -77,13 +78,15 @@ public abstract class EmailRoomDatabase extends RoomDatabase{
                        true);
                dao.insert(word);
 
-               for (int n = 1; n < 20; n++) {
+               
+               for (Integer n = 1; n < 20; n++) {
                    word = new Message("Simon", null, null,
-                           "stefan", "tomorrow", "sent20", "lets goo","Sent",
+                           "stefan", "tomorrow", n.toString(), "lets goo", "Sent",
                            true);
                    dao.insert(word);
                }
 
+               /*
                for (int i = 1; i < 20; i++){
                    word = new Message("Simon", null, null,
                            "Hans", "tomorrow", "inbox20", "lets goo","Inbox",
@@ -103,6 +106,9 @@ public abstract class EmailRoomDatabase extends RoomDatabase{
                 dao.insert(word);
 
 
+                */
+
+
             });
         }
     };

+ 0 - 10
app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/MessageDao.java

@@ -75,14 +75,4 @@ public interface MessageDao {
     LiveData<List<Message>> getSpamMessages();
 
 
-
-
-
-
-    /* selects just from, subject and date from word_table */
-
-    /* @Query("SELECT fromEmail, date, subject, textContent FROM message_table")
-    LiveData<List<Message>> getRecyclerviewData();
-     */
-
 }

+ 16 - 2
app/src/main/java/com/noahvogt/miniprojekt/ui/archive/ArchiveFragment.java

@@ -8,6 +8,8 @@ import android.widget.TextView;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
@@ -16,10 +18,12 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.noahvogt.miniprojekt.MainActivity;
 import com.noahvogt.miniprojekt.R;
+import com.noahvogt.miniprojekt.ui.DataBase.Message;
 import com.noahvogt.miniprojekt.ui.home.CustomAdapter;
+import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
 import com.noahvogt.miniprojekt.ui.slideshow.EmailViewModel;
 
-public class ArchiveFragment extends Fragment {
+public class ArchiveFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
     private ArchiveViewModel archiveViewModel;
     EmailViewModel mEmailViewModel;
@@ -32,7 +36,7 @@ public class ArchiveFragment extends Fragment {
 
         recyclerView = MainActivity.recyclerView.findViewById(R.id.recyclerView);
 
-        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff());
+        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff(), this);
 
         /* Attach the adapter to the recyclerview to populate items */
         recyclerView.setAdapter(adapter);
@@ -43,6 +47,9 @@ public class ArchiveFragment extends Fragment {
         mEmailViewModel.getArchiveMessage().observe(getViewLifecycleOwner(), messages -> {
             /* Update the cached copy of the messages in the adapter*/
             adapter.submitList(messages);
+            /*get List of Message to show them onClick */
+            adapter.getList(messages);
+
         });
 
 
@@ -64,4 +71,11 @@ public class ArchiveFragment extends Fragment {
     }
 
 
+    @Override
+    public void selectedMessage(Message messages) {
+
+        AppCompatActivity activity = (AppCompatActivity) getContext();
+        DialogFragment dialog = MessageShowFragment.newInstance(messages);
+        dialog.show(activity.getSupportFragmentManager(), "tag");
+    }
 }

+ 48 - 5
app/src/main/java/com/noahvogt/miniprojekt/ui/gallery/GalleryFragment.java

@@ -2,12 +2,16 @@ package com.noahvogt.miniprojekt.ui.gallery;
 
 import android.os.Bundle;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
@@ -16,12 +20,15 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.noahvogt.miniprojekt.MainActivity;
 import com.noahvogt.miniprojekt.R;
+import com.noahvogt.miniprojekt.ui.DataBase.Message;
 import com.noahvogt.miniprojekt.ui.home.CustomAdapter;
+import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
 import com.noahvogt.miniprojekt.ui.slideshow.EmailViewModel;
 
-public class GalleryFragment extends Fragment{
+import org.jetbrains.annotations.NotNull;
+
+public class GalleryFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
-    private GalleryViewModel galleryViewModel;
     EmailViewModel mEmailViewModel;
     RecyclerView recyclerView;
 
@@ -32,8 +39,7 @@ public class GalleryFragment extends Fragment{
 
        // mEmailViewModel.deleteNewMessage();
 
-        galleryViewModel =
-                new ViewModelProvider(this).get(GalleryViewModel.class);
+        GalleryViewModel galleryViewModel = new ViewModelProvider(this).get(GalleryViewModel.class);
         View root = inflater.inflate(R.layout.fragment_gallery, container, false);
         final TextView textView = root.findViewById(R.id.text_gallery);
         galleryViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
@@ -45,7 +51,32 @@ public class GalleryFragment extends Fragment{
 
         recyclerView = MainActivity.recyclerView.findViewById(R.id.recyclerView);
 
-        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff());
+        recyclerView.setOnClickListener(v -> Toast.makeText(getContext(), "Single Interception Click on position :"+v,
+                Toast.LENGTH_SHORT).show());
+
+        recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
+            @Override
+            public boolean onInterceptTouchEvent(@NonNull @NotNull RecyclerView rv, @NonNull @NotNull MotionEvent e) {
+              //  Toast.makeText(getContext(), "Single Interception Click on position :"+rv,
+             //           Toast.LENGTH_SHORT).show();
+                return false;
+            }
+
+            @Override
+            public void onTouchEvent(@NonNull @NotNull RecyclerView rv, @NonNull @NotNull MotionEvent e) {
+                Toast.makeText(getContext(), "Single Click on position :"+rv,
+                        Toast.LENGTH_SHORT).show();
+
+            }
+
+            @Override
+            public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
+
+            }
+        });
+
+
+        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff(), this);
 
         /* Attach the adapter to the recyclerview to populate items */
         recyclerView.setAdapter(adapter);
@@ -55,11 +86,23 @@ public class GalleryFragment extends Fragment{
         mEmailViewModel.getSentMessage().observe(getViewLifecycleOwner(), messages -> {
             /* Update the cached copy of the messages in the adapter*/
             adapter.submitList(messages);
+            /*get List of Message to show them onClick */
+            adapter.getList(messages);
         });
 
+
+
         return root;
 
     }
 
 
+    @Override
+    public void selectedMessage(Message messages) {
+
+        AppCompatActivity activity = (AppCompatActivity) getContext();
+        DialogFragment dialog = MessageShowFragment.newInstance(messages);
+        dialog.show(activity.getSupportFragmentManager(), "tag");
+
+    }
 }

+ 16 - 5
app/src/main/java/com/noahvogt/miniprojekt/ui/home/CustomAdapter.java

@@ -1,4 +1,4 @@
-package com.noahvogt.miniprojekt.ui.home;
+ package com.noahvogt.miniprojekt.ui.home;
 
 
 import android.os.Build;
@@ -14,26 +14,37 @@ import com.noahvogt.miniprojekt.ui.DataBase.Message;
 import com.noahvogt.miniprojekt.ui.slideshow.EmailViewHolder;
 
 
+import java.util.List;
 import java.util.Objects;
 
 public class CustomAdapter extends ListAdapter<Message, EmailViewHolder> {
 
+    public SelectedMessage selectedMessage;
+    public List<Message> messageList;
 
-
-    public CustomAdapter(@NonNull DiffUtil.ItemCallback<Message> diffCallback) {
+    public CustomAdapter(@NonNull DiffUtil.ItemCallback<Message> diffCallback, SelectedMessage selectedMessage) {
         super(diffCallback);
+        this.selectedMessage = selectedMessage;
     }
 
     @Override
     public EmailViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        return EmailViewHolder.create(parent);
+        return EmailViewHolder.create(parent,selectedMessage, messageList);
     }
 
     /* bind data to View*/
     @Override
     public void onBindViewHolder(EmailViewHolder holder, int position) {
         Message current = getItem(position);
-        holder.bind(current.getFrom(),current.getSubject(), current.getDate() ,current.getTextContent());
+        holder.bind(current.getFrom(),current.getSubject(), current.getDate() ,current.getTextContent()); }
+
+    /*get List from adapter which is shown*/
+    public void getList(List<Message> messageList){
+        this.messageList = messageList;
+    }
+
+    public interface SelectedMessage{
+        void selectedMessage(Message messages);
     }
 
     public static class EmailDiff extends DiffUtil.ItemCallback<Message> {

+ 15 - 2
app/src/main/java/com/noahvogt/miniprojekt/ui/home/HomeFragment.java

@@ -9,6 +9,8 @@ import android.widget.TextView;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
@@ -17,9 +19,11 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.noahvogt.miniprojekt.MainActivity;
 import com.noahvogt.miniprojekt.R;
+import com.noahvogt.miniprojekt.ui.DataBase.Message;
+import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
 import com.noahvogt.miniprojekt.ui.slideshow.EmailViewModel;
 
-public class HomeFragment extends Fragment {
+public class HomeFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
     private HomeViewModel homeViewModel;
     EmailViewModel mEmailViewModel;
@@ -32,7 +36,7 @@ public class HomeFragment extends Fragment {
 
         recyclerView = MainActivity.recyclerView.findViewById(R.id.recyclerView);
 
-        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff());
+        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff(), this);
 
         /* Attach the adapter to the recyclerview to populate items */
         recyclerView.setAdapter(adapter);
@@ -43,6 +47,9 @@ public class HomeFragment extends Fragment {
         mEmailViewModel.getInboxMessage().observe(getViewLifecycleOwner(), messages -> {
             /* Update the cached copy of the messages in the adapter*/
             adapter.submitList(messages);
+            /*get List of Message to show them onClick */
+            adapter.getList(messages);
+
         });
 
 
@@ -61,6 +68,12 @@ public class HomeFragment extends Fragment {
     }
 
 
+    @Override
+    public void selectedMessage(Message messages) {
 
+        AppCompatActivity activity = (AppCompatActivity) getContext();
+        DialogFragment dialog = MessageShowFragment.newInstance(messages);
+        dialog.show(activity.getSupportFragmentManager(), "tag");
 
+    }
 }

+ 5 - 0
app/src/main/java/com/noahvogt/miniprojekt/ui/home/SettingsActivity.java

@@ -5,6 +5,7 @@ import android.os.Bundle;
 import androidx.appcompat.app.AppCompatActivity;
 
 import com.noahvogt.miniprojekt.R;
+import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
 
 import java.util.Objects;
 
@@ -28,5 +29,9 @@ public class SettingsActivity extends AppCompatActivity {
             // below line is to inflate our fragment.
             getSupportFragmentManager().beginTransaction().add(R.id.idFrameLayout, new SettingsFragment()).commit();
         }
+
+        if (findViewById(R.id.show_Layout) != null){
+            getSupportFragmentManager().beginTransaction().add(R.id.show_Layout, new MessageShowFragment()).commit();
+        }
     }
 }

+ 29 - 35
app/src/main/java/com/noahvogt/miniprojekt/ui/show/MessageShowFragment.java

@@ -14,36 +14,37 @@ import android.widget.Toast;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
+import androidx.fragment.app.DialogFragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
 
 import com.noahvogt.miniprojekt.R;
+import com.noahvogt.miniprojekt.ui.DataBase.Message;
+import com.noahvogt.miniprojekt.ui.home.CustomAdapter;
+import com.noahvogt.miniprojekt.ui.slideshow.EmailViewModel;
 
 
-public class MessageShowFragment extends Fragment implements PopupMenu.OnMenuItemClickListener {
+public class MessageShowFragment extends DialogFragment implements PopupMenu.OnMenuItemClickListener {
 
 
-    public TextView sendingAddressObject;
-    public TextView receivingAddressObject;
-    public TextView subjectObject;
-    public TextView messageBodyObject;
+    public TextView showTo;
+    public TextView showFrom;
+    public TextView showSubject;
+    public TextView showMessage;
 
-    private MessageShowViewModel messageShowViewModel;
+    private static Message mCurrent;
+    private EmailViewModel mEmailViewModel;
+    public static MessageShowFragment newInstance(com.noahvogt.miniprojekt.ui.DataBase.Message current) {
+       mCurrent = current;
+        return new MessageShowFragment();}
 
-
-
-
-    // set theming style
-    /*@Override
+    /* set theming style */
+    @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setStyle(DialogFragment.STYLE_NORMAL, R.style.messageCreateTheme);
     }
 
-     */
-
-
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@@ -52,10 +53,10 @@ public class MessageShowFragment extends Fragment implements PopupMenu.OnMenuIte
 
         // init vars
 
-        messageShowViewModel =
+        MessageShowViewModel messageShowViewModel =
                 new ViewModelProvider(this).get(MessageShowViewModel.class);
         View root = inflater.inflate(R.layout.message_show_fragment, container, false);
-        final TextView textView = root.findViewById(R.id.show_message_receiving_address_layout);
+        final TextView textView = root.findViewById(R.id.show_To);
         messageShowViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
             @Override
             public void onChanged(@Nullable String s) {
@@ -64,27 +65,20 @@ public class MessageShowFragment extends Fragment implements PopupMenu.OnMenuIte
         });
 
 
+
         ImageButton closeButton = view.findViewById(R.id.show_message_close_button);
         ImageButton dotButton = view.findViewById(R.id.show_message_dots_button);
         ImageButton attachButton = view.findViewById(R.id.show_message_attach_button);
 
-        sendingAddressObject = (EditText) view.findViewById(R.id.create_message_sending_address_text);
-        receivingAddressObject = (EditText) view.findViewById(R.id.create_message_receiving_address_text);
-        subjectObject = (EditText) view.findViewById(R.id.create_message_subject_text);
-        messageBodyObject = (EditText) view.findViewById(R.id.create_message_body_text);
-
-        // get string vars, MAYBE NOT HERE
-        String sendingAddress = sendingAddressObject.getText().toString();
-        String receivingAddress = receivingAddressObject.getText().toString();
-        //String subject = subjectObject.getText().toString();
-        String messageBody = messageBodyObject.getText().toString();
-
-
-        /* dosen't wotk cause Activity is not extendet and used as variable */
-
-
-
+        showTo = (TextView) view.findViewById(R.id.show_To);
+        showFrom = (TextView) view.findViewById(R.id.show_From);
+        showSubject = (TextView) view.findViewById(R.id.show_Subject);
+        showMessage = (TextView) view.findViewById(R.id.show_Message);
 
+        showTo.setText(mCurrent.getFrom());
+        showFrom.setText(mCurrent.getFrom());
+        showSubject.setText(mCurrent.getSubject());
+        showMessage.setText(mCurrent.getTextContent());
 
 
         // TODO: add cc + bcc functionality
@@ -94,7 +88,7 @@ public class MessageShowFragment extends Fragment implements PopupMenu.OnMenuIte
         closeButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-
+                    dismiss();
             }
 
         });
@@ -116,7 +110,7 @@ public class MessageShowFragment extends Fragment implements PopupMenu.OnMenuIte
             }
         });
 
-        return root;
+        return view;
     }
 
 

+ 15 - 5
app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/DraftFragment.java

@@ -8,6 +8,8 @@ import android.widget.TextView;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
@@ -16,9 +18,11 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.noahvogt.miniprojekt.MainActivity;
 import com.noahvogt.miniprojekt.R;
+import com.noahvogt.miniprojekt.ui.DataBase.Message;
 import com.noahvogt.miniprojekt.ui.home.CustomAdapter;
+import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
 
-public class DraftFragment extends Fragment {
+public class  DraftFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
    private DraftViewModel draftViewModel;
    EmailViewModel mEmailViewModel;
@@ -32,7 +36,7 @@ public class DraftFragment extends Fragment {
 
         recyclerView = MainActivity.recyclerView.findViewById(R.id.recyclerView);
 
-        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff());
+        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff(), this);
 
         /* Attach the adapter to the recyclerview to populate items */
         recyclerView.setAdapter(adapter);
@@ -43,6 +47,9 @@ public class DraftFragment extends Fragment {
         mEmailViewModel.getDraftMessage().observe(getViewLifecycleOwner(), messages -> {
             /* Update the cached copy of the messages in the adapter*/
             adapter.submitList(messages);
+            /*get List of Message to show them onClick */
+            adapter.getList(messages);
+
         });
 
         draftViewModel =
@@ -59,9 +66,12 @@ public class DraftFragment extends Fragment {
     }
 
 
+    @Override
+    public void selectedMessage(Message messages) {
 
-
-
-
+        AppCompatActivity activity = (AppCompatActivity) getContext();
+        DialogFragment dialog = MessageShowFragment.newInstance(messages);
+        dialog.show(activity.getSupportFragmentManager(), "tag");
+    }
 }
 

+ 18 - 72
app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/EmailViewHolder.java

@@ -3,34 +3,32 @@ package com.noahvogt.miniprojekt.ui.slideshow;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.EditText;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import com.noahvogt.miniprojekt.MainActivity;
+import com.noahvogt.miniprojekt.ui.DataBase.Message;
+import com.noahvogt.miniprojekt.ui.home.CustomAdapter;
 import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
 import com.noahvogt.miniprojekt.R;
 
-import androidx.appcompat.app.AlertDialog;
-import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.appcompat.app.AppCompatActivity;
 import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.navigation.Navigation;
-import androidx.navigation.ui.AppBarConfiguration;
+import androidx.recyclerview.widget.DiffUtil;
 import androidx.recyclerview.widget.RecyclerView;
 
+import java.util.List;
+
 /* adds the content to the View of RecyclerView*/
 public class EmailViewHolder extends RecyclerView.ViewHolder {
     private final TextView fromItemView;
     private final TextView subjectItemView;
     private final TextView dateItemView;
-    public final TextView messageItemView;
-
-    private AppBarConfiguration mAppBarConfiguration;
+    private final TextView messageItemView;
 
 
-    private EmailViewHolder(View itemView, ViewGroup parent) {
+    private EmailViewHolder(View itemView,
+                            CustomAdapter.SelectedMessage selectedMessage,
+                            List<Message> messageList) {
         super(itemView);
         fromItemView = itemView.findViewById(R.id.textView);
         subjectItemView = itemView.findViewById(R.id.subject);
@@ -39,18 +37,9 @@ public class EmailViewHolder extends RecyclerView.ViewHolder {
         itemView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                Toast.makeText(v.getContext(), "clicked ViewHolder ", Toast.LENGTH_LONG).show();
-              /*  Fragment fragment = new MessageShowFragment();
-                if (!fragment.isAdded()){
-                    Toast.makeText(v.getContext(), "is not Added ", Toast.LENGTH_LONG).show();
-
-                    FragmentManager fragmentManager = fragment.getParentFragmentManager();
-                    fragmentManager.beginTransaction()
-                        .add(R.id.nav_show, MessageShowFragment.class, null)
-                        .commit();
-                }
-
-               */
+                selectedMessage.selectedMessage(messageList.get(getBindingAdapterPosition()));
+
+
             }
         });
     }
@@ -62,59 +51,16 @@ public class EmailViewHolder extends RecyclerView.ViewHolder {
         messageItemView.setText(message);
     }
 
-    public static EmailViewHolder create(ViewGroup parent) {
-        View view = LayoutInflater.from(parent.getContext())
+    public static EmailViewHolder create(ViewGroup parent,
+                                         CustomAdapter.SelectedMessage selectedMessage,
+                                         List<Message> messageList) {
+         View view = LayoutInflater.from(parent.getContext())
                 .inflate(R.layout.fragment_home, parent, false);
-        return new EmailViewHolder(view, parent);
+        return new EmailViewHolder(view, selectedMessage, messageList);
     }
 
 
 
-   /* public void createNewEmailDialog(){
-        // define View window
-        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(itemView.getContext());
-
-        // init text field variables
-        newemail_name = emailPopupView.findViewById(R.id.popup_material_name_asking_text);
-        newemail_email = emailPopupView.findViewById(R.id.popup_material_email_asking_text);
-        newemail_password = emailPopupView.findViewById(R.id.popup_material_password_asking_text);
-
-        // init button variables
-        Button newemail_save_button = (Button) emailPopupView.findViewById(R.id.saveButton);
-        // may not be private
-        Button newemail_cancel_button = (Button) emailPopupView.findViewById(R.id.cancelButton);
-
-        // open View window
-        dialogBuilder.setView(emailPopupView);
-        dialog = dialogBuilder.create();
-        dialog.show();
-
-        // store user input
-        newemail_save_button.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-
-                // store user input (only needed for DEBUGGING)
-                String name = newemail_name.getText().toString();
-                String email = newemail_email.getText().toString();
-                String password = newemail_password.getText().toString();
-
-                if (!mailFunctions.validateEmail(newemail_email) | !mailFunctions.validateName(newemail_name) | !mailFunctions.validatePassword(newemail_password)) {
-                    return;
-                }
-
-                // show all strings the user gave, this will later be stored to a secure database and checked for validation
-                showToast(name);
-                showToast(email);
-                showToast(password);
-
-
-                showSnackbar(emailPopupView,"save button clicked");
-            }
-        });
-
-    */
-
     }
 
 

+ 1 - 1
app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/EmailViewModel.java

@@ -23,8 +23,8 @@ public class EmailViewModel extends AndroidViewModel {
     public EmailViewModel(Application application) {
         super(application);
         mEmailRepository = new EmailRepository(application);
-        mDraftMessage = mEmailRepository.getDraftMessages();
         mInboxMessage = mEmailRepository.getInboxMessages();
+        mDraftMessage = mEmailRepository.getDraftMessages();
         mSentMessage = mEmailRepository.getSentMessages();
         mArchiveMessage = mEmailRepository.getArchiveMessages();
         mSpamMessage = mEmailRepository.getSpamMessage();

+ 17 - 2
app/src/main/java/com/noahvogt/miniprojekt/ui/spam/SpamFragment.java

@@ -8,6 +8,8 @@ import android.widget.TextView;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
@@ -16,10 +18,12 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.noahvogt.miniprojekt.MainActivity;
 import com.noahvogt.miniprojekt.R;
+import com.noahvogt.miniprojekt.ui.DataBase.Message;
 import com.noahvogt.miniprojekt.ui.home.CustomAdapter;
+import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
 import com.noahvogt.miniprojekt.ui.slideshow.EmailViewModel;
 
-public class SpamFragment extends Fragment {
+public class SpamFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
     private SpamViewModel spamViewModel;
     EmailViewModel mEmailViewModel;
@@ -32,7 +36,7 @@ public class SpamFragment extends Fragment {
 
         recyclerView = MainActivity.recyclerView.findViewById(R.id.recyclerView);
 
-        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff());
+        final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff(), this);
 
         /* Attach the adapter to the recyclerview to populate items */
         recyclerView.setAdapter(adapter);
@@ -43,6 +47,9 @@ public class SpamFragment extends Fragment {
         mEmailViewModel.getSpamMessage().observe(getViewLifecycleOwner(), messages -> {
             /* Update the cached copy of the messages in the adapter*/
             adapter.submitList(messages);
+            /*get List of Message to show them onClick */
+            adapter.getList(messages);
+
         });
 
         // mEmailViewModel.deleteNewMessage();
@@ -62,5 +69,13 @@ public class SpamFragment extends Fragment {
 
 
 
+    }
+
+    @Override
+    public void selectedMessage(Message messages) {
+
+        AppCompatActivity activity = (AppCompatActivity) getContext();
+        DialogFragment dialog = MessageShowFragment.newInstance(messages);
+        dialog.show(activity.getSupportFragmentManager(), "tag");
     }
 }

+ 10 - 0
app/src/main/res/layout/content_main.xml

@@ -27,6 +27,16 @@
 
     </androidx.recyclerview.widget.RecyclerView>
 
+    <!--fragment
+        android:id="@+id/show_fragment_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        app:defaultNavHost="true"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:navGraph="@navigation/mobile_navigation" /-->
+
         <com.google.android.material.floatingactionbutton.FloatingActionButton
             android:id="@+id/messageButton"
             app:layout_constraintBottom_toBottomOf="parent"

+ 5 - 25
app/src/main/res/layout/message_show_fragment.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
@@ -73,22 +73,8 @@
             android:orientation="vertical"
             android:gravity="top">
 
-            <com.google.android.material.textfield.TextInputLayout
-                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
-                android:id="@+id/show_message_sending_address_layout"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-
-                android:layout_marginStart="12dp"
-                android:layout_marginLeft="12dp"
-                android:layout_marginTop="12dp"
-                android:layout_marginEnd="12dp"
-                android:layout_marginRight="12dp"
-                android:layout_marginBottom="12dp">
-
             <TextView
                 android:id="@+id/show_From"
-                android:text="@string/show_from"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
 
@@ -98,7 +84,6 @@
                 android:layout_marginEnd="12dp"
                 android:layout_marginRight="12dp"
                 android:layout_marginBottom="12dp" />
-            </com.google.android.material.textfield.TextInputLayout>
 
 
             <com.google.android.material.textfield.TextInputLayout
@@ -124,8 +109,7 @@
                     android:layout_marginTop="12dp"
                     android:layout_marginEnd="12dp"
                     android:layout_marginRight="12dp"
-                    android:layout_marginBottom="12dp"
-                    android:hint="@string/show_To" />
+                    android:layout_marginBottom="12dp" />
             </com.google.android.material.textfield.TextInputLayout>
 
 
@@ -146,11 +130,9 @@
                 tools:layout_editor_absoluteX="1dp">
 
             <TextView
-                    android:id="@+id/show_message_subject_text"
+                    android:id="@+id/show_Subject"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
-                    android:hint="@string/show_subject"
-                    android:inputType="textEmailSubject"
 
                     android:layout_marginStart="12dp"
                     android:layout_marginLeft="12dp"
@@ -177,13 +159,11 @@
                 tools:layout_editor_absoluteX="1dp">
 
                 <TextView
-                    android:id="@+id/show_message_body_text"
+                    android:id="@+id/show_Message"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:minHeight="160dp"
                     android:textAlignment="viewStart"
-                    android:hint="Message ..."
-                    android:inputType="textMultiLine"
                     android:gravity="start" />
             </com.google.android.material.textfield.TextInputLayout>
 
@@ -196,4 +176,4 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+</LinearLayout>