Преглед на файлове

added datecompile, cannot ad it to database, idk if CC&BCC but could, littlebit layout fancy stuff

Simon Hammer преди 3 години
родител
ревизия
1bc6239546

+ 4 - 11
app/src/main/java/com/noahvogt/miniprojekt/DataBase/EmailRepository.java

@@ -32,7 +32,6 @@ public class EmailRepository {
         mArchiveLiveMessage = messageDao.getLiveArchiveMessages();
         mSentLiveMessage = messageDao.getLiveSentMessages();
         mSpamLiveMessage = messageDao.getLiveSpamMessages();
-        //mAllMessages = messageDao.getAllMessages();
     }
 
     // Room executes all queries on a separate thread.
@@ -75,21 +74,15 @@ public class EmailRepository {
         });
     }
 
-    public void deleteFolder(final String folder){
+    public void updateFolder(final int id, String folder){
         EmailRoomDatabase.databaseWriteExecutor.execute(() -> {
-            messageDao.deleteFolder(folder);
+            messageDao.updateFolder(id ,folder);
         });
     }
 
-    public void deleteAll(final String folder){
+    public void updateDate(final int id, final String date){
         EmailRoomDatabase.databaseWriteExecutor.execute(() -> {
-            messageDao.deleteAll(folder);
-        });
-    }
-
-    public void updateMessage(final int id, String folder){
-        EmailRoomDatabase.databaseWriteExecutor.execute(() -> {
-            messageDao.updateMessage(id ,folder);
+            messageDao.updateDate(id, date);
         });
     }
 }

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

@@ -32,8 +32,8 @@ public abstract class EmailRoomDatabase extends RoomDatabase{
         }
     };
 
-    /* creating 4 threads */
-    private static final int NUMBER_OF_THREADS = 4;
+    /* creating n threads */
+    private static final int NUMBER_OF_THREADS = 6;
     static final ExecutorService databaseWriteExecutor =
             Executors.newFixedThreadPool(NUMBER_OF_THREADS);
 

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

@@ -29,7 +29,10 @@ public interface MessageDao {
     void deleteAll(String folder);
 
     @Query("UPDATE message_table SET folder = :folder WHERE id = :id")
-    void updateMessage(int id, String folder);
+    void updateFolder(int id, String folder);
+
+    @Query("UPDATE message_table SET date = :date WHERE id = :id")
+    void updateDate(int id, String date);
 
 
     @Query("SELECT * FROM message_table ORDER BY id ASC")

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

@@ -220,8 +220,8 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
          //   if (requestCode == NEW_WORD_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
                 Message word = new Message(
                         MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_TO),
-                        null,
-                        null,
+                        MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_CC),
+                        MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_BCC),
                         MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_FROM),
                         ft.format(dNow),
                         MessageCreateFragment.replyIntent.getStringExtra(MessageCreateFragment.EXTRA_SUBJECT),
@@ -332,7 +332,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     String name;
     String email;
     String password;
-    Data.Builder builder;
+    Data.Builder builder = new Data.Builder();
 
     public void createNewEmailDialog(){
         /* define View window */

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

@@ -219,8 +219,7 @@ public class MessageCreateFragment extends DialogFragment implements PopupMenu.O
 
                 /* check for valid input */
                 if (MailFunctions.validateMessageBody(messageBodyObject) && MailFunctions.validateSubject(subjectObject) &&
-                MailFunctions.validateEmail(receivingAddressObject) && MailFunctions.validateEmail(sendingAddressObject) &&
-                !MailFunctions.checkForSameEmail(sendingAddressObject, receivingAddressObject)) {
+                MailFunctions.validateEmail(receivingAddressObject) && MailFunctions.validateEmail(sendingAddressObject)) {
                     String password = preferences.getString("password","");
                     MailFunctions.sendStarttlsMail("smtp.edubs.ch", sendingAddress, receivingAddress, password, messageBody, subject, ccStr, bccStr);
                     Toast.makeText(getActivity(), "sending ... ", Toast.LENGTH_SHORT).show();

+ 6 - 0
app/src/main/java/com/noahvogt/miniprojekt/data/EmailViewHolder.java

@@ -1,6 +1,8 @@
 package com.noahvogt.miniprojekt.data;
 
 import android.annotation.SuppressLint;
+import android.content.Context;
+import android.os.Build;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -8,8 +10,10 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import com.noahvogt.miniprojekt.DataBase.Message;
+import com.noahvogt.miniprojekt.MainActivity;
 import com.noahvogt.miniprojekt.R;
 
+import androidx.annotation.RequiresApi;
 import androidx.recyclerview.widget.RecyclerView;
 
 import java.text.ParseException;
@@ -33,6 +37,8 @@ public class EmailViewHolder extends RecyclerView.ViewHolder {
         subjectItemView = itemView.findViewById(R.id.subject);
         dateItemView = itemView.findViewById(R.id.date);
         messageItemView = itemView.findViewById(R.id.message);
+        System.out.println("Called EmailViewHolder");
+        
         itemView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {

+ 5 - 3
app/src/main/java/com/noahvogt/miniprojekt/data/EmailViewModel.java

@@ -48,8 +48,8 @@ public class EmailViewModel extends AndroidViewModel {
     public void applyDownload(Data data){
         OneTimeWorkRequest downloadRequest =
                 new OneTimeWorkRequest.Builder(DownloadWorker.class)
-                .setInputData(data)
-                .build();
+                        .setInputData(data)
+                        .build();
 
         mWorkManager.enqueue(downloadRequest);
     }
@@ -123,7 +123,9 @@ public class EmailViewModel extends AndroidViewModel {
 
     public void deleteMessage(Message message){mEmailRepository.deleteMessage(message);}
 
-    public void updateMessage(int id, String folder){mEmailRepository.updateMessage(id, folder);}
+    public void updateFolder(int id, String folder){mEmailRepository.updateFolder(id, folder);}
+
+    public void updateDate(int id, String date){ mEmailRepository.updateDate(id, date); }
 
 
 }

+ 2 - 2
app/src/main/java/com/noahvogt/miniprojekt/data/MailFunctions.java

@@ -35,10 +35,10 @@ public class MailFunctions {
     }
 
 
-    public static String fetchMailsFromBox(PyObject IMAPConnection, String Folder) {
+    public static String fetchMailsFromBox(PyObject IMAPConnection, String FolderServer, String FolderLocal) {
         Python python = Python.getInstance();
         PyObject pythonMailFunctions = python.getModule("mailFunctions");
-        return pythonMailFunctions.callAttr("fetchMails", IMAPConnection, Folder).toString();
+        return pythonMailFunctions.callAttr("fetchMails", IMAPConnection, FolderServer, FolderLocal).toString();
     }
 
 

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

@@ -83,7 +83,7 @@ public class MessageShowFragment extends DialogFragment implements PopupMenu.OnM
 
         showTo = (TextView) view.findViewById(R.id.show_To);
         showFrom = (TextView) view.findViewById(R.id.show_From);
-        showSubject = (TextView) view.findViewById(R.id.show_Subject);
+        showSubject = (TextView) view.findViewById(R.id.show_subject);
         showMessage = (TextView) view.findViewById(R.id.show_Message);
         showDate = (TextView) view.findViewById(R.id.show_date);
 
@@ -150,11 +150,11 @@ public class MessageShowFragment extends DialogFragment implements PopupMenu.OnM
                 return true;
             case R.id.create_message_spam:
                 Toast.makeText(getActivity(), "item spam clicked", Toast.LENGTH_LONG).show();
-                mEmailViewModel.updateMessage(mCurrent.getId(), "Spam");
+                mEmailViewModel.updateFolder(mCurrent.getId(), "Spam");
                 return true;
             case R.id.create_message_move_archive:
                 Toast.makeText(getActivity(), "item archive clicked", Toast.LENGTH_LONG).show();
-                mEmailViewModel.updateMessage(mCurrent.getId(), "Archive");
+                mEmailViewModel.updateFolder(mCurrent.getId(), "Archive");
 
 
             default: // this case should never occur

+ 42 - 14
app/src/main/java/com/noahvogt/miniprojekt/workers/DownloadWorker.java

@@ -3,14 +3,11 @@ package com.noahvogt.miniprojekt.workers;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.util.Log;
-import android.widget.Toast;
 
 import androidx.annotation.NonNull;
-import androidx.lifecycle.LiveData;
 import androidx.work.Worker;
 import androidx.work.WorkerParameters;
 
-import com.chaquo.python.PyObject;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
@@ -18,7 +15,6 @@ import com.noahvogt.miniprojekt.DataBase.Message;
 import com.noahvogt.miniprojekt.MailServerCredentials;
 import com.noahvogt.miniprojekt.MainActivity;
 import com.noahvogt.miniprojekt.data.BooleanTypeAdapter;
-import com.noahvogt.miniprojekt.data.DeleteThread;
 import com.noahvogt.miniprojekt.data.MailFunctions;
 
 import org.jetbrains.annotations.NotNull;
@@ -26,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
 import java.lang.reflect.Type;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import static com.noahvogt.miniprojekt.MainActivity.mEmailViewModel;
@@ -85,14 +82,38 @@ public class DownloadWorker extends Worker {
                 mEmailViewModel.getAll(true);
 
                 for (int i = 0; i < folders.size(); i++) {
+                    String folderName;
+                    String folderNow = folders.get(i).toString();
+                    System.out.println("ALL Folders: " + folders);
+
+                    if (folderNow.equals("Inbox") || folderNow.equals("IBOX") || folderNow.equals("inbox")){
+                        folderName = "Inbox";
+                    }else if (folderNow.equals("Trash") || folderNow.equals("TRASH") ||
+                            folderNow.equals("Delete") || folderNow.equals("DELETE") || folderNow.equals("Papierkorb")){
+                        folderName = "Delete";
+                    } else if (folderNow.equals("Sent") ||folderNow.equals("SENT") || folderNow.equals("Gesendete Objekte")){
+                        folderName = "Sent";
+                    } else if (folderNow.equals("Archive") || folderNow.equals("ARCHIVE") || folderNow.equals("Archiv/2021") ||
+                            folderNow.equals("Archiv/2022") || folderNow.equals("Archiv/2020") ){
+                        folderName = "Archive";
+                    } else if (folderNow.equals("Draft") || folderNow.equals("Drafts") || folderNow.equals("DRAFT") ||
+                            folderNow.equals("DRAFTS") || folderNow.equals("Entw&APw-rfe")  )  {
+                        folderName = "Draft";
+                    } else if (folderNow.equals("Spam") || folderNow.equals("SPAM") || folderNow.equals("Bulk Mail")  ||
+                            folderNow.equals("DRAFTS")){
+                        folderName = "Spam";
+                    }
+                    else {
+                        folderName = folders.get(i).toString();
+                    }
 
                     //mEmailViewModel.deleteFolder(folders.get(i).toString());
-                    //TODO: insert right foldername
                     /* fetch and print draft messages */
                     String fetchedMails = MailFunctions.fetchMailsFromBox(MailFunctions.getIMAPConnection(newMailServerCredentials.getImapHost(),
-                            newMailServerCredentials.getUsername(), newMailServerCredentials.getPassword(), newMailServerCredentials.getImapPort()), folders.get(i).toString());
-                    System.out.println("Folder: " + folders.get(i).toString()+ "\n Foldersize: " + folders.size());
-                    System.out.println("Fetched Mails from Folder " + folders.get(i).toString() + ": \n"+ fetchedMails + "\n MAANCBJC");
+                            newMailServerCredentials.getUsername(), newMailServerCredentials.getPassword(), newMailServerCredentials.getImapPort()),
+                            folders.get(i).toString(), folderName);
+                    //System.out.println("Folder: " + folders.get(i).toString()+ "\n Foldersize: " + folders.size());
+                    //System.out.println("Fetched Mails from Folder " + folders.get(i).toString() + ": \n"+ fetchedMails + "\n MAANCBJC");
 
                     /* parse messages in arraylist of Message class and loop through it */
                     Type messageType = new TypeToken<ArrayList<Message>>() {
@@ -100,15 +121,22 @@ public class DownloadWorker extends Worker {
                     ArrayList<Message> messages = gson.fromJson(fetchedMails, messageType);
                     for (int k = 0; k < messages.size(); k++) {
                         Message message = messages.get(k);
-                        System.out.println("Date: " + message.getDate());
+                        //System.out.println("oldDate: " + message.getDate());
+                        SimpleDateFormat rawDate = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
                         SimpleDateFormat date = new SimpleDateFormat("dd.MM.yy");
-                        date.format(message.getDate());
-                        System.out.println("New Date: " + date.format(message.getDate()));
-                        mEmailViewModel.insert(message);
-                        System.out.println("Folder: " + folders.get(i).toString() + "\n IMPORTANT FOLDERS");
-                        System.out.println("Size of this Folder: " + messages.size());
+                        Date middleDate = rawDate.parse(message.getDate());
+                        String newDate = date.format(middleDate);
+                        //System.out.println("middle Date: " + middleDate);
+                        //System.out.println("New Date: " + newDate);
 
+                        mEmailViewModel.insert(message);
+                        //TODO: make it work
+                        /*dosent wrok idk why*/
+                        mEmailViewModel.updateDate(message.getId(), newDate);
+                        //System.out.println("Folder: " + folders.get(i).toString() + "\n IMPORTANT FOLDERS");
+                        //System.out.println("Size of this Folder: " + messages.size());
                     }
+
                 }
 
 

+ 4 - 3
app/src/main/python/mailFunctions.py

@@ -97,7 +97,7 @@ def verifyNoBytes(messages, output_list):
                 print("ERROREXIT")
                 exit()
 
-def fetchMails(connection, inbox):
+def fetchMails(connection, inbox, folderLocal):
     #print("###" + inbox + "###")
     #print(type(inbox))
     try:
@@ -170,8 +170,9 @@ def fetchMails(connection, inbox):
             output_dict['to'] = stringCompiling(raw_to)
             output_dict['date'] = stringCompiling(raw_date)
             output_dict['content'] = primitive_body
-            output_dict['folder'] = inbox
-            print('Folder: ' + inbox)
+            output_dict['folder'] = folderLocal
+            print('FolderServer: ' + inbox)
+            print('FolderLocal: ' + folderLocal)
             print('From: ' + stringCompiling(raw_from))
             print('Outputdictionary: ' + str(output_dict))
 

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

@@ -15,7 +15,7 @@
         android:layout_row="0"
         android:layout_height="wrap_content"
         android:layout_width="250dp"
-        android:textSize="25dp"/>
+        android:textSize="25dp" />
 
     <TextView
         android:id="@+id/message"

+ 75 - 20
app/src/main/res/layout/message_show_fragment.xml

@@ -71,7 +71,8 @@
             android:orientation="vertical"
             android:gravity="top">
 
-            <LinearLayout
+
+            <GridLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:background="@drawable/textview_border"
@@ -83,22 +84,39 @@
                 android:layout_marginRight="12dp"
                 android:layout_marginBottom="12dp">
 
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_row="0"
+                    android:layout_column="0"
+
+                    android:layout_marginStart="12dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginTop="12dp"
+                    android:layout_marginEnd="12dp"
+                    android:layout_marginRight="12dp"
+                    android:layout_marginBottom="12dp"
+                    android:text="@string/show_from"
+                    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
+
 
                 <TextView
                     android:id="@+id/show_From"
-                    android:layout_width="match_parent"
+                    android:layout_width="288dp"
                     android:layout_height="wrap_content"
-                    android:textAppearance="@style/TextAppearance.AppCompat.Body1"
-
                     android:layout_marginStart="12dp"
                     android:layout_marginLeft="12dp"
+
                     android:layout_marginTop="12dp"
                     android:layout_marginEnd="12dp"
                     android:layout_marginRight="12dp"
-                    android:layout_marginBottom="12dp"/>
-            </LinearLayout>
+                    android:layout_marginBottom="12dp"
+                    android:hint="@string/show_from"
+                    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
 
-            <LinearLayout
+            </GridLayout>
+
+            <GridLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:background="@drawable/textview_border"
@@ -111,21 +129,39 @@
                 android:layout_marginBottom="12dp">
 
                 <TextView
-                    android:id="@+id/show_To"
-                    android:layout_width="match_parent"
+                    android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:layout_row="0"
+                    android:layout_column="0"
+
                     android:layout_marginStart="12dp"
-                    android:textAppearance="@style/TextAppearance.AppCompat.Body1"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginTop="12dp"
+                    android:layout_marginEnd="12dp"
+                    android:layout_marginRight="12dp"
+                    android:layout_marginBottom="12dp"
+                    android:text="@string/show_To"
+                    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
+
 
+                <TextView
+                    android:id="@+id/show_To"
+                    android:layout_width="306dp"
+                    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" />
-            </LinearLayout>
+                    android:layout_marginBottom="12dp"
+                    android:hint="@string/show_To"
+                    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
 
+            </GridLayout>
 
-            <LinearLayout
+
+            <GridLayout
                 android:background="@drawable/textview_border"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -139,18 +175,36 @@
 
 
                 <TextView
-                    android:id="@+id/show_Subject"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:textAppearance="@style/TextAppearance.AppCompat.Body1"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_row="0"
+                    android:layout_column="0"
 
                     android:layout_marginStart="12dp"
                     android:layout_marginLeft="12dp"
                     android:layout_marginTop="12dp"
                     android:layout_marginEnd="12dp"
                     android:layout_marginRight="12dp"
-                    android:layout_marginBottom="12dp"/>
-            </LinearLayout>
+                    android:layout_marginBottom="12dp"
+                    android:text="@string/show_subject"
+                    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
+
+
+                <TextView
+                    android:id="@+id/show_subject"
+                    android:layout_width="280dp"
+                    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"
+                    android:hint="@string/show_subject"
+                    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
+
+            </GridLayout>
 
             <GridLayout
                 android:layout_width="wrap_content"
@@ -203,7 +257,7 @@
 
                 <TextView
                     android:id="@+id/show_date"
-                    android:layout_width="wrap_content"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
 
                     android:layout_column="1"
@@ -235,6 +289,7 @@
                     android:layout_height="wrap_content"
                     android:minHeight="200dp"
                     android:textAppearance="@style/TextAppearance.AppCompat.Body1"
+                    android:hint="@string/show_message"
 
                     android:layout_marginStart="12dp"
                     android:layout_marginLeft="12dp"

+ 2 - 2
app/src/main/res/values/strings.xml

@@ -22,8 +22,8 @@
     <string name="your_full_name_filler">Your Full Name</string>
 
 
-    <string name="show_from">From</string>
-    <string name="show_To">To </string>
+    <string name="show_from">From:</string>
+    <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>