소스 검색

added date, cc and bcc in emailviewer, chagned sorting messages

Simon Hammer 3 년 전
부모
커밋
6a4a8c9e9e

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

@@ -1,6 +1,7 @@
 package com.noahvogt.miniprojekt.DataBase;
 
 import android.content.Context;
+import android.widget.Toast;
 
 import androidx.annotation.NonNull;
 import androidx.room.Database;
@@ -9,6 +10,7 @@ import androidx.room.RoomDatabase;
 import androidx.room.migration.Migration;
 import androidx.sqlite.db.SupportSQLiteDatabase;
 
+import java.text.SimpleDateFormat;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -71,18 +73,27 @@ public abstract class EmailRoomDatabase extends RoomDatabase{
                         true);
                 dao.insert(word);
 
-               word = new Message("Noah", null, null,
+                word = new Message("Pueblo", "my Man, your Girl", null,
+                        "Escobar", "31.02.21", "DateSortTest", "I hope the Sorting works", "Inbox",
+                        true);
+                dao.insert(word);
+
+                word = new Message("Pueblo", "my Man, your Girl", null,
+                        "Escobar", "31.02.21", "VariableTest", "I hope the Sorting works", "Inbox",
+                        true);
+                dao.insert(word);
+
+                word = new Message("Again", null, null, "Again", "31.09.21", "DateTest",
+                        "Does this Date work know?", "Inbox", true);
+                dao.insert(word);
+
+
+                word = new Message("Noah", null, null,
                        "arldemeier", "bobo", "sentTest", "i could cry", "Sent",
                        true);
-               dao.insert(word);
+                dao.insert(word);
+
 
-               
-               for (Integer n = 1; n < 20; n++) {
-                   word = new Message("Simon", null, null,
-                           "stefan", "tomorrow", n.toString(), "lets goo", "Sent",
-                           true);
-                   dao.insert(word);
-               }
 
                /*
                for (int i = 1; i < 20; i++){

+ 5 - 0
app/src/main/java/com/noahvogt/miniprojekt/DataBase/Message.java

@@ -5,6 +5,11 @@ import androidx.room.ColumnInfo;
 import androidx.room.Entity;
 import androidx.room.PrimaryKey;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+import java.util.Objects;
+
 /* @Embedded to express entitys together
  *  https://developer.android.com/training/data-storage/room/relationships
  * to learn more */

+ 6 - 6
app/src/main/java/com/noahvogt/miniprojekt/DataBase/MessageDao.java

@@ -13,7 +13,7 @@ import java.util.List;
 @Dao
 public interface MessageDao {
 
-    // TODO: updating messages, search funktion
+    // TODO: updating messages, search funktion, read in cc and bcc as list
     // allowing the insert of the same word multiple times by passing a
     // conflict resolution strategy
     @Insert(onConflict = OnConflictStrategy.IGNORE)
@@ -41,23 +41,23 @@ public interface MessageDao {
     LiveData<List<Message>> getDateMessages();
 
     /* get Draft messages*/
-    @Query("SELECT * FROM message_table WHERE folder LIKE 'Draft' ORDER BY date ASC")
+    @Query("SELECT * FROM message_table WHERE folder LIKE 'Draft' ORDER BY date DESC")
     LiveData<List<Message>> getDraftMessages();
 
     /* get Inbox messages*/
-    @Query("SELECT * FROM message_table WHERE folder LIKE 'Inbox' ORDER BY date ASC")
+    @Query("SELECT * FROM message_table WHERE folder LIKE 'Inbox' ORDER BY date DESC")
     LiveData<List<Message>> getInboxMessages();
 
     /* get Sent messages*/
-    @Query("SELECT * FROM message_table WHERE folder LIKE 'Sent' ORDER BY date ASC")
+    @Query("SELECT * FROM message_table WHERE folder LIKE 'Sent' ORDER BY date DESC")
     LiveData<List<Message>> getSentMessages();
 
     /* get Archive messages*/
-    @Query("SELECT * FROM message_table WHERE folder LIKE 'Archive' ORDER BY date ASC")
+    @Query("SELECT * FROM message_table WHERE folder LIKE 'Archive' ORDER BY date DESC")
     LiveData<List<Message>> getArchiveMessages();
 
     /* get Spam messages*/
-    @Query("SELECT * FROM message_table WHERE folder LIKE 'Spam' ORDER BY date ASC")
+    @Query("SELECT * FROM message_table WHERE folder LIKE 'Spam' ORDER BY date DESC")
     LiveData<List<Message>> getSpamMessages();
 
 

+ 7 - 6
app/src/main/java/com/noahvogt/miniprojekt/MainActivity.java

@@ -164,7 +164,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
             @Override
             public void onClick(View v) {
 
-                DialogFragment dialog = messageCreateFragment.newInstance();
+                DialogFragment dialog = MessageCreateFragment.newInstance();
                 dialog.show(getSupportFragmentManager(), "tag");
 
             }
@@ -174,22 +174,23 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
 
         /* gets the data from the Email writer and adds it to the Database */
         public void onActivityResult(int requestCode, int resultCode, Intent data) {
-            super.onActivityResult(requestCode, resultCode, messageCreateFragment.replyIntent);
+            super.onActivityResult(requestCode, resultCode, MessageCreateFragment.replyIntent);
 
             /* Creates class for the Date when Email is written */
             Date dNow = new Date();
             SimpleDateFormat ft =
                     new SimpleDateFormat("dd.MM.yy");
+            System.out.println(dNow);
 
          //   if (requestCode == NEW_WORD_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
                 Message word = new Message(
-                        messageCreateFragment.replyIntent.getStringExtra(messageCreateFragment.EXTRA_TO),
+                        MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_TO),
                         null,
                         null,
-                        messageCreateFragment.replyIntent.getStringExtra(messageCreateFragment.EXTRA_FROM),
+                        MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_FROM),
                         ft.format(dNow),
-                        messageCreateFragment.replyIntent.getStringExtra(messageCreateFragment.EXTRA_SUBJECT),
-                        messageCreateFragment.replyIntent.getStringExtra(messageCreateFragment.EXTRA_MESSAGE),
+                        MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_SUBJECT),
+                        MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_MESSAGE),
                         "Draft",false);
                 mEmailViewModel.insert(word);
 

+ 10 - 8
app/src/main/java/com/noahvogt/miniprojekt/messageCreateFragment.java → app/src/main/java/com/noahvogt/miniprojekt/MessageCreateFragment.java

@@ -22,19 +22,20 @@ import androidx.appcompat.app.AlertDialog;
 import androidx.fragment.app.DialogFragment;
 
 import com.noahvogt.miniprojekt.DataBase.Message;
-import com.noahvogt.miniprojekt.data.EmailViewHolder;
 import com.noahvogt.miniprojekt.data.EmailViewModel;
 import com.noahvogt.miniprojekt.data.MailFunctions;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-public class messageCreateFragment extends DialogFragment implements PopupMenu.OnMenuItemClickListener {
+public class MessageCreateFragment extends DialogFragment implements PopupMenu.OnMenuItemClickListener {
 
     public static final String EXTRA_TO = "com.example.android.namelistsql.NAME";
     public static final String EXTRA_FROM = "com.example.android.namelistsql.FROM";
     public static final String EXTRA_SUBJECT = "com.example.android.namelistsql.SUBJECT";
     public static final String EXTRA_MESSAGE = "com.example.android.namelistsql.MESSAGE";
+    public static final String EXTRA_CC = "com.example.android.namelistsql.CC";
+    public static final String EXTRA_BCC = "com.example.android.namelistsql.BCC";
     public static final String EXTRA_DATE = "com.example.android.namelistsql.DATE";
 
     public EditText sendingAddressObject;
@@ -53,11 +54,11 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
     public Activity activity = new Activity();
     public static Intent replyIntent = new Intent();
 
-    public static messageCreateFragment newInstance() {
-        return new messageCreateFragment();
+    public static MessageCreateFragment newInstance() {
+        return new MessageCreateFragment();
     }
 
-    public messageCreateFragment getMessage(Message message, EmailViewModel emailViewModel, messageCreateFragment messageCreateFragment){
+    public MessageCreateFragment getMessage(Message message, EmailViewModel emailViewModel, MessageCreateFragment messageCreateFragment){
         this.mEmailViewModel = emailViewModel;
         this.mMessage = message;
         return messageCreateFragment;
@@ -105,8 +106,7 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
         sendingAddressObject.setText(loginEmail);
 
         /* get string vars, MAYBE NOT HERE */
-        System.out.println("mMessage is " + mMessage.toString() + "\n mEmailViewModel is " + mEmailViewModel.toString() );
-        if (mMessage != null && mEmailViewModel != null) {
+        if (mMessage != null) {
             sendingAddressObject.setText(mMessage.getFrom());
             receivingAddressObject.setText(mMessage.getTo());
             subjectObject.setText(mMessage.getSubject());
@@ -159,6 +159,8 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
 
                                     replyIntent.putExtra(EXTRA_FROM, from);
                                     replyIntent.putExtra(EXTRA_TO, to);
+                                    replyIntent.putExtra(EXTRA_CC, cc);
+                                    replyIntent.putExtra(EXTRA_BCC, bcc);
                                     replyIntent.putExtra(EXTRA_SUBJECT, subject);
                                     replyIntent.putExtra(EXTRA_MESSAGE, message);
                                     activity.setResult(RESULT_OK, replyIntent);
@@ -198,7 +200,7 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
             @Override
             public void onClick(View v) {
                 PopupMenu popupMenu = new PopupMenu(getActivity(), v);
-                popupMenu.setOnMenuItemClickListener(messageCreateFragment.this::onMenuItemClick);
+                popupMenu.setOnMenuItemClickListener(MessageCreateFragment.this::onMenuItemClick);
                 popupMenu.inflate(R.menu.create_message_options_menu);
                 popupMenu.show();
             }

+ 4 - 3
app/src/main/java/com/noahvogt/miniprojekt/data/EmailViewHolder.java

@@ -15,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.List;
+import java.util.Locale;
 
 /* adds the content to the View of RecyclerView*/
 public class EmailViewHolder extends RecyclerView.ViewHolder {
@@ -76,10 +77,10 @@ public class EmailViewHolder extends RecyclerView.ViewHolder {
     }
 
     public static boolean isDate(String date){
-        SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yy");
-        dateFormat.setLenient(false);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yy", Locale.getDefault());
+        //dateFormat.setLenient(false);
         try {
-            dateFormat.parse(date.trim());
+            dateFormat.parse(date);
         } catch (ParseException e){
             return false;
         }

+ 4 - 0
app/src/main/java/com/noahvogt/miniprojekt/ui/home/HomeFragment.java

@@ -5,6 +5,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
+import android.widget.Toast;
 
 
 import androidx.annotation.NonNull;
@@ -24,6 +25,9 @@ import com.noahvogt.miniprojekt.DataBase.Message;
 import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
 import com.noahvogt.miniprojekt.data.EmailViewModel;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
 public class HomeFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
     private HomeViewModel homeViewModel;

+ 44 - 0
app/src/main/java/com/noahvogt/miniprojekt/ui/show/MessageShowFragment.java

@@ -1,11 +1,13 @@
 package com.noahvogt.miniprojekt.ui.show;
 
 
+import android.app.AlertDialog;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Button;
 import android.widget.ImageButton;
 import android.widget.PopupMenu;
 import android.widget.TextView;
@@ -29,6 +31,10 @@ public class MessageShowFragment extends DialogFragment implements PopupMenu.OnM
     public TextView showFrom;
     public TextView showSubject;
     public TextView showMessage;
+    public TextView showDate;
+
+    public Button showBccButton;
+    public Button showCCButton;
 
     private static Message mCurrent;
     private static EmailViewModel mEmailViewModel;
@@ -72,20 +78,38 @@ public class MessageShowFragment extends DialogFragment implements PopupMenu.OnM
         ImageButton dotButton = view.findViewById(R.id.show_message_dots_button);
         ImageButton attachButton = view.findViewById(R.id.show_message_attach_button);
 
+        showBccButton = view.findViewById(R.id.show_bcc);
+        showCCButton = view.findViewById(R.id.show_cc);
+
         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);
+        showDate = (TextView) view.findViewById(R.id.show_date);
 
         showTo.setText(mCurrent.getTo());
         showFrom.setText(mCurrent.getFrom());
         showSubject.setText(mCurrent.getSubject());
         showMessage.setText(mCurrent.getTextContent());
+        showDate.setText(mCurrent.getDate());
 
 
         // TODO: add cc + bcc functionality
 
         // button listeners
+        showBccButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                createNewPopup(true);
+            }
+        });
+
+        showCCButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                createNewPopup(false);
+            }
+        });
 
         closeButton.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -136,4 +160,24 @@ public class MessageShowFragment extends DialogFragment implements PopupMenu.OnM
                 return false;
         }
     }
+
+    public void createNewPopup(boolean bcc){
+        AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext());
+        AlertDialog dialog;
+        final View bccPopupView = getLayoutInflater().inflate(R.layout.cc_bcc_popup, null);
+        TextView mBcc = bccPopupView.findViewById(R.id.show_listBcc);
+
+        alertDialog.setView(bccPopupView);
+        dialog = alertDialog.create();
+        dialog.show();
+
+        if (bcc){
+            mBcc.setText(mCurrent.getBcc());
+        }else {
+            mBcc.setText(mCurrent.getCc());
+        }
+
+
+
+    }
 }

+ 2 - 3
app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/DraftFragment.java

@@ -21,8 +21,7 @@ import com.noahvogt.miniprojekt.MainActivity;
 import com.noahvogt.miniprojekt.R;
 import com.noahvogt.miniprojekt.DataBase.Message;
 import com.noahvogt.miniprojekt.data.CustomAdapter;
-import com.noahvogt.miniprojekt.messageCreateFragment;
-import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
+import com.noahvogt.miniprojekt.MessageCreateFragment;
 
 public class  DraftFragment extends Fragment implements CustomAdapter.SelectedMessage{
 
@@ -70,7 +69,7 @@ public class  DraftFragment extends Fragment implements CustomAdapter.SelectedMe
 
     @Override
     public void selectedMessage(Message messages, EmailViewModel emailViewModel) {
-        messageCreateFragment messageCreateFragment = new messageCreateFragment();
+        MessageCreateFragment messageCreateFragment = new MessageCreateFragment();
 
         //TODO: make this Fragment editable
         AppCompatActivity activity = (AppCompatActivity) getContext();

+ 16 - 0
app/src/main/res/layout/cc_bcc_popup.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout 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"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/show_listBcc"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 1 - 1
app/src/main/res/layout/message_create_fragment.xml

@@ -6,7 +6,7 @@
     android:layout_height="match_parent"
     android:id="@+id/messageFragment"
     android:orientation="vertical"
-    tools:context=".messageCreateFragment">
+    tools:context=".MessageCreateFragment">
 
     <androidx.cardview.widget.CardView
         android:id="@+id/cardView"

+ 65 - 0
app/src/main/res/layout/message_show_fragment.xml

@@ -152,6 +152,71 @@
                     android:layout_marginBottom="12dp"/>
             </LinearLayout>
 
+            <GridLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+
+                android:layout_marginStart="12dp"
+                android:layout_marginLeft="12dp"
+                android:layout_marginTop="2dp"
+                android:layout_marginEnd="12dp"
+                android:layout_marginRight="12dp"
+                android:layout_marginBottom="2dp">
+
+                <Button
+                    android:id="@+id/show_cc"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+
+                    android:layout_marginStart="85dp"
+                    android:layout_marginLeft="85dp"
+                    android:layout_marginTop="0dp"
+                    android:layout_marginEnd="16dp"
+                    android:layout_marginRight="16dp"
+                    android:layout_marginBottom="0dp"
+                    android:text="@string/show_cc" />
+
+                <Button
+                    android:id="@+id/show_bcc"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+
+                    android:layout_row="0"
+                    android:layout_column="1"
+                    android:layout_marginStart="18dp"
+                    android:layout_marginLeft="18dp"
+                    android:layout_marginTop="0dp"
+                    android:layout_marginEnd="16dp"
+                    android:layout_marginRight="16dp"
+                    android:layout_marginBottom="0dp"
+                    android:text="@string/show_bcc" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+
+                    android:layout_column="0"
+                    android:layout_row="1"
+                    android:text="@string/show_date"
+                    android:textAppearance="@style/TextAppearance.AppCompat.Body1"
+                    android:textSize="20dp"/>
+
+                <TextView
+                    android:id="@+id/show_date"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+
+                    android:layout_column="1"
+                    android:layout_row="1"
+                    android:textAppearance="@style/TextAppearance.AppCompat.Body1"
+                    android:textSize="20dp"/>
+
+            </GridLayout>
+
+
+
+
+
             <LinearLayout
                 android:background="@drawable/textview_border"
                 android:layout_width="match_parent"

+ 3 - 0
app/src/main/res/values/strings.xml

@@ -23,6 +23,9 @@
     <string name="show_To">To </string>
     <string name="show_subject">Subject</string>
     <string name="show_message">Message</string>
+    <string name="show_cc">See CC</string>
+    <string name="show_bcc">See BCC</string>
+    <string name="show_date">Message received at:</string>
 
     <string name="menu_delete">Delete</string>
     <string name="menu_move_to">Move to</string>

+ 1 - 0
app/src/main/res/values/style.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
+    <!--TODO: change appearance of text when message read -->
     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
         <item name="colorAccent">#3498db</item>
     </style>