diff --git a/Frontend/app/build.gradle b/Frontend/app/build.gradle index 3188c4e16ef65dfabfe6809d4da9f9dae6f4a5e4..dfc3163a8f1604f47e9e0c3f0360da3636845792 100644 --- a/Frontend/app/build.gradle +++ b/Frontend/app/build.gradle @@ -33,6 +33,7 @@ dependencies { annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' implementation 'com.android.volley:volley:1.1.1' implementation 'de.hdodenhof:circleimageview:3.1.0' + implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation "androidx.recyclerview:recyclerview:1.1.0" implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc01" diff --git a/Frontend/app/src/main/AndroidManifest.xml b/Frontend/app/src/main/AndroidManifest.xml index 3e6b8225c653e8e0b1fd9c644a0a683ad06633a0..5459420952ffa8011692c20b804452f17898001f 100644 --- a/Frontend/app/src/main/AndroidManifest.xml +++ b/Frontend/app/src/main/AndroidManifest.xml @@ -12,14 +12,17 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - <activity android:name=".Single_Trip" + <activity android:name=".New_Transaction_Screen"></activity> + <activity + android:name=".Single_Trip" android:configChanges="orientation" android:screenOrientation="portrait" - tools:ignore="LockedOrientationActivity"/> - <activity android:name=".Trip_Overview_Screen" + tools:ignore="LockedOrientationActivity" /> + <activity + android:name=".Trip_Overview_Screen" android:configChanges="orientation" android:screenOrientation="portrait" - tools:ignore="LockedOrientationActivity"/> + tools:ignore="LockedOrientationActivity" /> <activity android:name=".New_PW_Screen" android:configChanges="orientation" diff --git a/Frontend/app/src/main/java/com/example/mobileapp/MemberFragment.java b/Frontend/app/src/main/java/com/example/mobileapp/MemberFragment.java index cbfb3624bbd659dc2b00174de63a3e3549071b99..2021c221d3c466cbeb44c63b755ae054d11e5af1 100644 --- a/Frontend/app/src/main/java/com/example/mobileapp/MemberFragment.java +++ b/Frontend/app/src/main/java/com/example/mobileapp/MemberFragment.java @@ -14,6 +14,8 @@ import android.view.ViewGroup; import android.widget.Button; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import com.google.android.material.textfield.TextInputEditText; +import com.google.android.material.textfield.TextInputLayout; import java.util.ArrayList; @@ -48,6 +50,13 @@ public class MemberFragment extends Fragment { recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + rootView.findViewById(R.id.add_member).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + addUserButton(); + } + }); + rootView.findViewById(R.id.leave_trip).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -58,6 +67,32 @@ public class MemberFragment extends Fragment { return rootView; } + public void addUserButton () { + MaterialAlertDialogBuilder addUser = new MaterialAlertDialogBuilder(getActivity()); + final TextInputLayout addUserLayout = new TextInputLayout(getActivity()); + final TextInputEditText addUserText = new TextInputEditText(getActivity()); + + addUser.setTitle("Add user to trip"); + addUser.setMessage("Type in the E-Mail of the user you want to add."); + addUserText.setHint("E-Mail"); + addUserLayout.addView(addUserText); + addUserLayout.setStartIconDrawable(R.drawable.person_icon); + addUser.setView(addUserLayout); + addUser.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + return; + } + }); + addUser.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + return; + } + }); + addUser.show(); + } + public void leaveTripButton() { MaterialAlertDialogBuilder leaveTrip = new MaterialAlertDialogBuilder(getActivity()); leaveTrip.setTitle("Leave Trip"); @@ -72,7 +107,6 @@ public class MemberFragment extends Fragment { @Override public void onClick(DialogInterface dialog, int which) { //Delete User from Group, so he cant see it anymore - //startActivity(new Intent(getActivity(), Trip_Overview_Screen.class)); getActivity().finish(); } }); diff --git a/Frontend/app/src/main/java/com/example/mobileapp/New_Transaction_Screen.java b/Frontend/app/src/main/java/com/example/mobileapp/New_Transaction_Screen.java new file mode 100644 index 0000000000000000000000000000000000000000..a2f601f049ca8bea7e98b560a5286d08a97da6f1 --- /dev/null +++ b/Frontend/app/src/main/java/com/example/mobileapp/New_Transaction_Screen.java @@ -0,0 +1,14 @@ +package com.example.mobileapp; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +public class New_Transaction_Screen extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.new_transaction_screen); + } +} diff --git a/Frontend/app/src/main/java/com/example/mobileapp/Recycler_View_Adapter_User.java b/Frontend/app/src/main/java/com/example/mobileapp/Recycler_View_Adapter_User.java index 4840f453325009f5f8b3ffa206a9fea8eea609e0..8432c8319577baebb282b19b9f88e392795395fd 100644 --- a/Frontend/app/src/main/java/com/example/mobileapp/Recycler_View_Adapter_User.java +++ b/Frontend/app/src/main/java/com/example/mobileapp/Recycler_View_Adapter_User.java @@ -7,6 +7,7 @@ import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -16,6 +17,8 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialDialogs; +import com.google.android.material.textfield.TextInputEditText; +import com.google.android.material.textfield.TextInputLayout; import java.util.ArrayList; import de.hdodenhof.circleimageview.CircleImageView; @@ -57,74 +60,86 @@ public class Recycler_View_Adapter_User extends RecyclerView.Adapter<Recycler_Vi holder.userAdmin.setImageResource(R.drawable.no_admin_crown); } - + //Remove User holder.userName.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - MaterialAlertDialogBuilder deleteUser = new MaterialAlertDialogBuilder(mContext.getActivity()); - deleteUser.setTitle("Remove User"); - deleteUser.setMessage("Are you sure you want to remove " + mUserNames.get(position) + " from this trip? Only an admin can add him back to this trip"); - deleteUser.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - mContext.getActivity().finish(); - } - }); - deleteUser.setNegativeButton("Decline", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - return; - } - }); - deleteUser.show(); + removeUser(position); } }); - //Set Admin holder.userAdmin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + setAdmin(position); + } + }); + } + + + + + + public void setAdmin (int position) { + + MaterialAlertDialogBuilder confirmAdmin = new MaterialAlertDialogBuilder(mContext.getActivity()); + confirmAdmin.setTitle("Admin rights"); - MaterialAlertDialogBuilder confirmAdmin = new MaterialAlertDialogBuilder(mContext.getActivity()); - confirmAdmin.setTitle("Admin rights"); - if (!mUserAdmin.get(position)) { - confirmAdmin.setIcon(R.drawable.no_admin_crown); - confirmAdmin.setMessage("Do you want to give " + mUserNames.get(position) + " Admin rights?"); - confirmAdmin.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - mUserAdmin.set(position, true); - Recycler_View_Adapter_User.this.notifyItemChanged(position); - } - }); - confirmAdmin.setNegativeButton("Decline", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - return; - } - }); - } else { - confirmAdmin.setIcon(R.drawable.admin_crown); - //Check ob er nicht der letzte Admin ist, wenn ja ist keine Admin entnahme möglich - confirmAdmin.setMessage("Do you want to remove your own Admin rights?"); - confirmAdmin.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - mUserAdmin.set(position, false); - Recycler_View_Adapter_User.this.notifyItemChanged(position); - } - }); - confirmAdmin.setNegativeButton("Decline", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - return; - } - }); + if (!mUserAdmin.get(position)) { + confirmAdmin.setIcon(R.drawable.no_admin_crown); + confirmAdmin.setMessage("Do you want to give " + mUserNames.get(position) + " Admin rights?"); + confirmAdmin.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + mUserAdmin.set(position, true); + Recycler_View_Adapter_User.this.notifyItemChanged(position); } - confirmAdmin.show(); + }); + confirmAdmin.setNegativeButton("Decline", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + return; + } + }); + } else { + confirmAdmin.setIcon(R.drawable.admin_crown); + //Check ob er nicht der letzte Admin ist, wenn ja ist keine Admin entnahme möglich + confirmAdmin.setMessage("Do you want to remove your own Admin rights?"); + confirmAdmin.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + mUserAdmin.set(position, false); + Recycler_View_Adapter_User.this.notifyItemChanged(position); + } + }); + confirmAdmin.setNegativeButton("Decline", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + return; + } + }); + } + confirmAdmin.show(); + } + + public void removeUser (int position) { + MaterialAlertDialogBuilder deleteUser = new MaterialAlertDialogBuilder(mContext.getActivity()); + deleteUser.setTitle("Remove User"); + deleteUser.setMessage("Are you sure you want to remove " + mUserNames.get(position) + " from this trip? Only an admin can add him back to this trip"); + deleteUser.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + mContext.getActivity().finish(); + } + }); + deleteUser.setNegativeButton("Decline", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + return; } }); + deleteUser.show(); } @Override diff --git a/Frontend/app/src/main/res/layout/new_transaction_screen.xml b/Frontend/app/src/main/res/layout/new_transaction_screen.xml new file mode 100644 index 0000000000000000000000000000000000000000..9dfe5d4455d017f35508ae6a7c30ad3cf20957a0 --- /dev/null +++ b/Frontend/app/src/main/res/layout/new_transaction_screen.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<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" + android:layout_height="match_parent" + android:background="#141412" + tools:context=".New_Transaction_Screen"> + + + <ImageView + android:layout_width="40dp" + android:layout_height="40dp" + android:layout_marginLeft="40dp" + android:layout_marginTop="40dp" + + android:src="@drawable/back_button" + android:clickable="true"/> + +</LinearLayout> \ No newline at end of file