diff --git a/Frontend/app/build.gradle b/Frontend/app/build.gradle index 899c8b60bd093d33ba7aae2c261f8271586485dd..ea9e735cb1c1d0bfd79e634c65e9dbb91c4c661b 100644 --- a/Frontend/app/build.gradle +++ b/Frontend/app/build.gradle @@ -25,8 +25,13 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - + implementation 'com.github.bumptech.glide:glide:4.11.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' + implementation 'de.hdodenhof:circleimageview:3.1.0' implementation 'androidx.appcompat:appcompat:1.1.0' + implementation "androidx.recyclerview:recyclerview:1.1.0" + implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc01" implementation 'com.google.android.material:material:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' diff --git a/Frontend/app/src/main/AndroidManifest.xml b/Frontend/app/src/main/AndroidManifest.xml index d8947a8bc6a7236e7261f919763af0c6fc1ae7e2..347898da3f4ce13fa62adba915f6156fe5bda75f 100644 --- a/Frontend/app/src/main/AndroidManifest.xml +++ b/Frontend/app/src/main/AndroidManifest.xml @@ -3,6 +3,8 @@ xmlns:tools="http://schemas.android.com/tools" package="com.example.mobileapp"> + <uses-permission android:name="android.permission.INTERNET" /> + <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" @@ -10,9 +12,23 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - <activity android:name=".New_PW_Screen" /> - <activity android:name=".Lost_PW" /> - <activity android:name=".Register_Screen" /> + <activity android:name=".Single_Trip"></activity> + <activity android:name=".Trip_Overview_Screen" /> + <activity + android:name=".New_PW_Screen" + android:configChanges="orientation" + android:screenOrientation="portrait" + tools:ignore="LockedOrientationActivity" /> + <activity + android:name=".Lost_PW" + android:configChanges="orientation" + android:screenOrientation="portrait" + tools:ignore="LockedOrientationActivity" /> + <activity + android:name=".Register_Screen" + android:configChanges="orientation" + android:screenOrientation="portrait" + tools:ignore="LockedOrientationActivity" /> <activity android:name=".Start_Screen" android:configChanges="orientation" diff --git a/Frontend/app/src/main/java/com/example/mobileapp/MemberFragement.java b/Frontend/app/src/main/java/com/example/mobileapp/MemberFragement.java new file mode 100644 index 0000000000000000000000000000000000000000..b4af284e11224d6934af9a8cfc61bdd9e696b392 --- /dev/null +++ b/Frontend/app/src/main/java/com/example/mobileapp/MemberFragement.java @@ -0,0 +1,64 @@ +package com.example.mobileapp; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + + +/** + * A simple {@link Fragment} subclass. + * Use the {@link MemberFragement#newInstance} factory method to + * create an instance of this fragment. + */ +public class MemberFragement extends Fragment { + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public MemberFragement() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment MemberFragement. + */ + // TODO: Rename and change types and number of parameters + public static MemberFragement newInstance(String param1, String param2) { + MemberFragement fragment = new MemberFragement(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_member_fragement, container, false); + } +} diff --git a/Frontend/app/src/main/java/com/example/mobileapp/Recycler_View_Adapter.java b/Frontend/app/src/main/java/com/example/mobileapp/Recycler_View_Adapter.java new file mode 100644 index 0000000000000000000000000000000000000000..3205f241fd0badf8b76e60abc5a8f4caefccd1ff --- /dev/null +++ b/Frontend/app/src/main/java/com/example/mobileapp/Recycler_View_Adapter.java @@ -0,0 +1,96 @@ +package com.example.mobileapp; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; +import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import java.util.ArrayList; +import de.hdodenhof.circleimageview.CircleImageView; + +public class Recycler_View_Adapter extends RecyclerView.Adapter<Recycler_View_Adapter.ViewHolder>{ + private static final String TAG = "Recycler_View_Adapter"; + + private ArrayList<String> mTripNames = new ArrayList<>(); + private ArrayList<String> mTripImages = new ArrayList<>(); + private ArrayList<String> mTripDuration = new ArrayList<>(); + private Context mContext; + + public Recycler_View_Adapter(ArrayList<String> mTripNames, ArrayList<String> mTripImages, ArrayList<String> mTripDuration, Context mContext) { + this.mTripNames = mTripNames; + this.mTripImages = mTripImages; + this.mTripDuration = mTripDuration; + this.mContext = mContext; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_trip, parent, false); + ViewHolder holder = new ViewHolder(view); + return holder; + } + + @Override + public void onBindViewHolder(final ViewHolder holder, final int position) { + Log.d(TAG, "onBindViewHolder: called."); + Glide.with(mContext) + .asBitmap() + .load(mTripImages.get(position)) + .into(holder.image); + + holder.tripName.setText(mTripNames.get(position)); + holder.tripDuration.setText(mTripDuration.get(position)); + + holder.tripElement.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Log.d(TAG, "onClick: clicked on " + mTripNames.get(position)); + openTrip(position); + } + }); + } + + public void openTrip(int position) { + Intent intent = new Intent(mContext, Single_Trip.class); + Bundle content = new Bundle(); + content.putString("Name", mTripNames.get(position)); + content.putString("Duration", mTripDuration.get(position)); + intent.putExtras(content); + mContext.startActivity(intent); + } + + private void imageToBit(CircleImageView image) { + + } + + @Override + public int getItemCount() { + return mTripNames.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + + CircleImageView image; + TextView tripName; + TextView tripDuration; + LinearLayout tripElement; + + public ViewHolder(View itemView) { + super(itemView); + image = itemView.findViewById(R.id.trip_image); + tripName = itemView.findViewById(R.id.trip_name); + tripDuration = itemView.findViewById(R.id.trip_duration); + tripElement = itemView.findViewById(R.id.trip_element); + + } + } +} diff --git a/Frontend/app/src/main/java/com/example/mobileapp/Single_Trip.java b/Frontend/app/src/main/java/com/example/mobileapp/Single_Trip.java new file mode 100644 index 0000000000000000000000000000000000000000..cfd22ef1ac8a86c943772dba6ab861c5d17b4511 --- /dev/null +++ b/Frontend/app/src/main/java/com/example/mobileapp/Single_Trip.java @@ -0,0 +1,103 @@ +package com.example.mobileapp; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; +import androidx.viewpager.widget.ViewPager; + +import android.net.Uri; +import android.os.Bundle; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.google.android.material.badge.BadgeDrawable; +import com.google.android.material.tabs.TabLayout; + +import java.util.ArrayList; +import java.util.List; + +public class Single_Trip extends AppCompatActivity { + + private TextView tripName; + private TextView tripDuration; + private ViewPager viewPager; + private TabLayout tabLayout; + private MemberFragement memberFragement; + private TransactionFragement transactionFragement; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.single_trip); + + tripName = findViewById(R.id.trip_name); + tripDuration = findViewById(R.id.trip_duration); + viewPager = findViewById(R.id.tab_view); + tabLayout = findViewById(R.id.tab_layout); + + memberFragement = new MemberFragement(); + transactionFragement = new TransactionFragement(); + + tabLayout.setupWithViewPager(viewPager); + + ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(), 0); + viewPagerAdapter.addFragment(memberFragement, "Member"); + viewPagerAdapter.addFragment(transactionFragement, "Transaction"); + viewPager.setAdapter(viewPagerAdapter); + + tabLayout.getTabAt(0).setIcon(R.drawable.person_icon); + tabLayout.getTabAt(1).setIcon(R.drawable.transaction_bill); + + Bundle bundle = getIntent().getExtras(); + + String duration = bundle.getString("Duration").toString(); + String name = bundle.getString("Name").toString(); + + tripName.setText(name); + tripDuration.setText(duration); + } + + public void backButton(View view) { + finish(); + } + + + private class ViewPagerAdapter extends FragmentPagerAdapter { + + private List<Fragment> fragments = new ArrayList<>(); + private List<String> fragmentTitle = new ArrayList<>(); + + public ViewPagerAdapter(@NonNull FragmentManager fm, int behavior) { + super(fm, behavior); + } + + public void addFragment(Fragment fragment, String title) { + fragments.add(fragment); + fragmentTitle.add(title); + } + + @NonNull + @Override + public Fragment getItem(int position) { + return fragments.get(position); + } + + @Override + public int getCount() { + return fragments.size(); + } + + @Nullable + @Override + public CharSequence getPageTitle(int position) { + return fragmentTitle.get(position); + } + } + + +} diff --git a/Frontend/app/src/main/java/com/example/mobileapp/Start_Screen.java b/Frontend/app/src/main/java/com/example/mobileapp/Start_Screen.java index fbcb1f9d7ab9e026fd997542cfe3b2b21efb1b3d..06a62b6a8483a2468d6cb600ad5e3454ace5eeb4 100644 --- a/Frontend/app/src/main/java/com/example/mobileapp/Start_Screen.java +++ b/Frontend/app/src/main/java/com/example/mobileapp/Start_Screen.java @@ -63,7 +63,7 @@ public class Start_Screen extends AppCompatActivity { if (!validateEmail() | !validatePW()) { return; } - + startActivity(new Intent(Start_Screen.this, Trip_Overview_Screen.class)); Toast.makeText(this, "Logging in ...", Toast.LENGTH_SHORT).show(); } diff --git a/Frontend/app/src/main/java/com/example/mobileapp/TransactionFragement.java b/Frontend/app/src/main/java/com/example/mobileapp/TransactionFragement.java new file mode 100644 index 0000000000000000000000000000000000000000..c26fc294f71678bb863d0ced5b4980a3c8b0a531 --- /dev/null +++ b/Frontend/app/src/main/java/com/example/mobileapp/TransactionFragement.java @@ -0,0 +1,64 @@ +package com.example.mobileapp; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + + +/** + * A simple {@link Fragment} subclass. + * Use the {@link TransactionFragement#newInstance} factory method to + * create an instance of this fragment. + */ +public class TransactionFragement extends Fragment { + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public TransactionFragement() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment TransactionFragement. + */ + // TODO: Rename and change types and number of parameters + public static TransactionFragement newInstance(String param1, String param2) { + TransactionFragement fragment = new TransactionFragement(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_transaction_fragement, container, false); + } +} diff --git a/Frontend/app/src/main/java/com/example/mobileapp/Trip_Overview_Screen.java b/Frontend/app/src/main/java/com/example/mobileapp/Trip_Overview_Screen.java new file mode 100644 index 0000000000000000000000000000000000000000..724a7f277dc49d76bfd8d865b8c1c9288a05766f --- /dev/null +++ b/Frontend/app/src/main/java/com/example/mobileapp/Trip_Overview_Screen.java @@ -0,0 +1,90 @@ +package com.example.mobileapp; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.TextView; + + +import java.util.ArrayList; + +public class Trip_Overview_Screen extends AppCompatActivity { + + private ArrayList<String> mTripNames = new ArrayList<>(); + private ArrayList<String> mTripImages = new ArrayList<>(); + private ArrayList<String> mTripDuration = new ArrayList<>(); + + + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.trip_main_screen); + + + initImageBitmaps(); + } + + private void initImageBitmaps(){ + mTripImages.add("https://c1.staticflickr.com/5/4636/25316407448_de5fbf183d_o.jpg"); + mTripNames.add("Havasu Falls"); + mTripDuration.add("21.05 - 28.08"); + + mTripImages.add("https://i.redd.it/tpsnoz5bzo501.jpg"); + mTripNames.add("Trondheim"); + mTripDuration.add("21.05 - 28.08"); + + mTripImages.add("https://i.redd.it/qn7f9oqu7o501.jpg"); + mTripNames.add("Portugal"); + mTripDuration.add("21.05 - 28.08"); + + + mTripImages.add("https://i.redd.it/j6myfqglup501.jpg"); + mTripNames.add("Max. 25 Zeichen, wegen Space"); + mTripDuration.add("21.05 - 28.08"); + + mTripImages.add("https://i.redd.it/0h2gm1ix6p501.jpg"); + mTripNames.add("Mahahual"); + mTripDuration.add("21.05 - 28.08"); + + mTripImages.add("https://i.redd.it/k98uzl68eh501.jpg"); + mTripNames.add("Frozen Lake"); + mTripDuration.add("21.05 - 28.08"); + + mTripImages.add("https://i.redd.it/glin0nwndo501.jpg"); + mTripNames.add("White Sands Desert"); + mTripDuration.add("21.05 - 28.08"); + + mTripImages.add("https://i.redd.it/obx4zydshg601.jpg"); + mTripNames.add("Austrailia"); + mTripDuration.add("21.05 - 28.08"); + + mTripImages.add("https://i.imgur.com/ZcLLrkY.jpg"); + mTripNames.add("Washington"); + mTripDuration.add("21.05 - 28.08"); + + initRecyclerView(); + } + + private void initRecyclerView() { + RecyclerView recyclerView = findViewById(R.id.recycler_view); + Recycler_View_Adapter adapter = new Recycler_View_Adapter(mTripNames, mTripImages, mTripDuration, this); + recyclerView.setAdapter(adapter); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + } + + @Override + public void onBackPressed(){ + Intent close = new Intent(Intent.ACTION_MAIN); + close.addCategory(Intent.CATEGORY_HOME); + close.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(close); + + } + +} diff --git a/Frontend/app/src/main/res/drawable-hdpi/add_button.png b/Frontend/app/src/main/res/drawable-hdpi/add_button.png new file mode 100644 index 0000000000000000000000000000000000000000..a877a969d6c07cc6ba385c729744f2ca4775f674 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-hdpi/add_button.png differ diff --git a/Frontend/app/src/main/res/drawable-hdpi/notification.png b/Frontend/app/src/main/res/drawable-hdpi/notification.png new file mode 100644 index 0000000000000000000000000000000000000000..02508fe7c297923bf76fe85dc52f716b643e9220 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-hdpi/notification.png differ diff --git a/Frontend/app/src/main/res/drawable-hdpi/settings.png b/Frontend/app/src/main/res/drawable-hdpi/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..86a8e8f9413ac3bff1aa2449351b3fff1cd9da91 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-hdpi/settings.png differ diff --git a/Frontend/app/src/main/res/drawable-hdpi/transaction_bill.png b/Frontend/app/src/main/res/drawable-hdpi/transaction_bill.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad0ba8ce796c7ac6907ca0992942765903c127f Binary files /dev/null and b/Frontend/app/src/main/res/drawable-hdpi/transaction_bill.png differ diff --git a/Frontend/app/src/main/res/drawable-mdpi/add_button.png b/Frontend/app/src/main/res/drawable-mdpi/add_button.png new file mode 100644 index 0000000000000000000000000000000000000000..7dadba09c8c75d6ee5991820837133d9c98ab537 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-mdpi/add_button.png differ diff --git a/Frontend/app/src/main/res/drawable-mdpi/notification.png b/Frontend/app/src/main/res/drawable-mdpi/notification.png new file mode 100644 index 0000000000000000000000000000000000000000..75b3930b0c7084394ec48a289319fff1ffbad5c0 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-mdpi/notification.png differ diff --git a/Frontend/app/src/main/res/drawable-mdpi/settings.png b/Frontend/app/src/main/res/drawable-mdpi/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..a5553b1d59bc208a5d4e994e2c7c0f865b621364 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-mdpi/settings.png differ diff --git a/Frontend/app/src/main/res/drawable-mdpi/transaction_bill.png b/Frontend/app/src/main/res/drawable-mdpi/transaction_bill.png new file mode 100644 index 0000000000000000000000000000000000000000..ce981d351a59b98f65480f89143fd9e53e75d6ff Binary files /dev/null and b/Frontend/app/src/main/res/drawable-mdpi/transaction_bill.png differ diff --git a/Frontend/app/src/main/res/drawable-xhdpi/add_button.png b/Frontend/app/src/main/res/drawable-xhdpi/add_button.png new file mode 100644 index 0000000000000000000000000000000000000000..0abf27eb417e868b6d82245561dbf340a76e8049 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xhdpi/add_button.png differ diff --git a/Frontend/app/src/main/res/drawable-xhdpi/notification.png b/Frontend/app/src/main/res/drawable-xhdpi/notification.png new file mode 100644 index 0000000000000000000000000000000000000000..f2bd153d80e587d5cb2db7c4a6ec7b92c9d0b9e8 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xhdpi/notification.png differ diff --git a/Frontend/app/src/main/res/drawable-xhdpi/settings.png b/Frontend/app/src/main/res/drawable-xhdpi/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..126b7da460c65c7e627ebdfc1d9e8e6434ebf1a9 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xhdpi/settings.png differ diff --git a/Frontend/app/src/main/res/drawable-xhdpi/transaction_bill.png b/Frontend/app/src/main/res/drawable-xhdpi/transaction_bill.png new file mode 100644 index 0000000000000000000000000000000000000000..f489b8a277af1d9b04065a8508128c7c1716d984 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xhdpi/transaction_bill.png differ diff --git a/Frontend/app/src/main/res/drawable-xxhdpi/add_button.png b/Frontend/app/src/main/res/drawable-xxhdpi/add_button.png new file mode 100644 index 0000000000000000000000000000000000000000..15d1c60c95dcac45424f4d372f23d2c55a689839 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xxhdpi/add_button.png differ diff --git a/Frontend/app/src/main/res/drawable-xxhdpi/notification.png b/Frontend/app/src/main/res/drawable-xxhdpi/notification.png new file mode 100644 index 0000000000000000000000000000000000000000..12b6ab57ce13c602de470b81bbda043a696b27b0 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xxhdpi/notification.png differ diff --git a/Frontend/app/src/main/res/drawable-xxhdpi/settings.png b/Frontend/app/src/main/res/drawable-xxhdpi/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..ec459de49ce3b182070f0450f63671fdf7820859 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xxhdpi/settings.png differ diff --git a/Frontend/app/src/main/res/drawable-xxhdpi/transaction_bill.png b/Frontend/app/src/main/res/drawable-xxhdpi/transaction_bill.png new file mode 100644 index 0000000000000000000000000000000000000000..6aaa2b933ebf4a00be0a7d5224f3a7e3bd3c2ca6 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xxhdpi/transaction_bill.png differ diff --git a/Frontend/app/src/main/res/drawable-xxxhdpi/add_button.png b/Frontend/app/src/main/res/drawable-xxxhdpi/add_button.png new file mode 100644 index 0000000000000000000000000000000000000000..298658f4d3b84baed8fb53db411255bfaa0305d4 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xxxhdpi/add_button.png differ diff --git a/Frontend/app/src/main/res/drawable-xxxhdpi/notification.png b/Frontend/app/src/main/res/drawable-xxxhdpi/notification.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d1525688344e2164405065936d217e71e880b0 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xxxhdpi/notification.png differ diff --git a/Frontend/app/src/main/res/drawable-xxxhdpi/settings.png b/Frontend/app/src/main/res/drawable-xxxhdpi/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..5705ea30692170c3516831a204cf85c42cb7d0d7 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xxxhdpi/settings.png differ diff --git a/Frontend/app/src/main/res/drawable-xxxhdpi/transaction_bill.png b/Frontend/app/src/main/res/drawable-xxxhdpi/transaction_bill.png new file mode 100644 index 0000000000000000000000000000000000000000..80dbc7a7e05d410b2de65e2d17aab2f1671c2c49 Binary files /dev/null and b/Frontend/app/src/main/res/drawable-xxxhdpi/transaction_bill.png differ diff --git a/Frontend/app/src/main/res/drawable/rnd_button.xml b/Frontend/app/src/main/res/drawable/rnd_button.xml new file mode 100644 index 0000000000000000000000000000000000000000..634c685168e3792a1aee05b8eeb26ebbbee71fd8 --- /dev/null +++ b/Frontend/app/src/main/res/drawable/rnd_button.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <solid android:color="#C5B358"/> + <corners android:radius="30dp"/> + <size android:height="60dp" + android:width="60dp"/> +</shape> \ No newline at end of file diff --git a/Frontend/app/src/main/res/layout/fragment_member_fragement.xml b/Frontend/app/src/main/res/layout/fragment_member_fragement.xml new file mode 100644 index 0000000000000000000000000000000000000000..572c937db9cdc1f072da8ab992dcfc74fcdf451f --- /dev/null +++ b/Frontend/app/src/main/res/layout/fragment_member_fragement.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:padding="40dp" + android:background="#141412" + tools:context=".MemberFragement"> + + <TextView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:textColor="#C5B358" + android:text="List of all Members" /> + +</FrameLayout> \ No newline at end of file diff --git a/Frontend/app/src/main/res/layout/fragment_transaction_fragement.xml b/Frontend/app/src/main/res/layout/fragment_transaction_fragement.xml new file mode 100644 index 0000000000000000000000000000000000000000..3be92ac0aebac0d11e0222da28c269c995a95920 --- /dev/null +++ b/Frontend/app/src/main/res/layout/fragment_transaction_fragement.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="#141412" + android:padding="40dp" + tools:context=".TransactionFragement"> + + <TextView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:textColor="#C5B358" + android:text="List of all Transactions" /> + +</FrameLayout> \ No newline at end of file diff --git a/Frontend/app/src/main/res/layout/layout_trip.xml b/Frontend/app/src/main/res/layout/layout_trip.xml new file mode 100644 index 0000000000000000000000000000000000000000..cfa6cfe8f562e3d265b04986de64f00aa6f59593 --- /dev/null +++ b/Frontend/app/src/main/res/layout/layout_trip.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="90dp" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_marginLeft="20dp" + android:layout_marginRight="20dp" + android:layout_gravity="center_horizontal" + android:background="@drawable/btn_rounded" + android:id="@+id/trip_element" + android:layout_marginTop="20dp"> + + <de.hdodenhof.circleimageview.CircleImageView + android:id="@+id/trip_image" + app:civ_border_width="1dp" + android:layout_width="70dp" + android:layout_height="70dp" + android:layout_marginLeft="20dp" + android:layout_marginTop="10dp" + android:src="@mipmap/ic_launcher" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:layout_marginRight="20dp" + android:layout_marginLeft="20dp"> + + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/trip_name" + android:layout_marginTop="5dp" + android:text="Groupname" + android:textColor="#141412" + android:textSize="24dp" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/trip_duration" + android:text="Zeitspanne" + android:textColor="#141412" + android:textSize="14dp"/> + + </LinearLayout> + +</LinearLayout> \ No newline at end of file diff --git a/Frontend/app/src/main/res/layout/single_trip.xml b/Frontend/app/src/main/res/layout/single_trip.xml new file mode 100644 index 0000000000000000000000000000000000000000..92da4758f2d83b0381be64c68112397106f4bdda --- /dev/null +++ b/Frontend/app/src/main/res/layout/single_trip.xml @@ -0,0 +1,89 @@ +<?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:layout_gravity="center_horizontal" + android:background="#141412" + tools:context=".Single_Trip" + android:orientation="vertical"> + + + <ImageView + android:layout_width="40dp" + android:layout_height="40dp" + android:layout_marginLeft="40dp" + android:layout_marginTop="40dp" + + android:layout_gravity="left" + android:src="@drawable/back_button" + android:clickable="true" + android:onClick="backButton"/> + + <LinearLayout + android:layout_width="match_parent" + android:gravity="center_horizontal" + android:layout_gravity="center_horizontal" + android:layout_height="wrap_content" + android:layout_marginTop="50dp" + android:layout_marginRight="20dp" + android:layout_marginLeft="33dp" + android:orientation="horizontal"> + + <de.hdodenhof.circleimageview.CircleImageView + android:id="@+id/trip_image" + android:layout_width="70dp" + android:layout_height="70dp" + app:civ_border_color="#C5B358" + android:layout_marginTop="20dp" + android:src="@mipmap/ic_launcher" + app:civ_border_width="1dp" /> + + +<LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="20dp" + android:layout_marginTop="13dp" + android:orientation="vertical"> + + <TextView + android:id="@+id/trip_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Groupname" + android:textColor="#C5B358" + android:textSize="35dp" /> + + <TextView + android:id="@+id/trip_duration" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Zeitspanne" + android:textColor="#C5B358" + android:textSize="20dp" /> + +</LinearLayout> + + </LinearLayout> + + <com.google.android.material.tabs.TabLayout + android:id="@+id/tab_layout" + android:layout_marginTop="30dp" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:tabTextColor="#716528" + app:tabIndicatorColor="#C5B358" + app:tabSelectedTextColor="#C5B358"/> + + + + <androidx.viewpager.widget.ViewPager + android:id="@+id/tab_view" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + + +</LinearLayout> + diff --git a/Frontend/app/src/main/res/layout/trip_main_screen.xml b/Frontend/app/src/main/res/layout/trip_main_screen.xml new file mode 100644 index 0000000000000000000000000000000000000000..566bb2943b9d68e0f205fa4683f844781034b708 --- /dev/null +++ b/Frontend/app/src/main/res/layout/trip_main_screen.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center_horizontal" + android:background="#141412" + android:orientation="vertical" + tools:context=".Trip_Overview_Screen"> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="40dp" + android:gravity="right" + android:layout_marginRight="40dp" + android:orientation="horizontal" > + + <ImageView + android:layout_width="30dp" + android:layout_height="30dp" + android:layout_marginRight="30dp" + android:src="@drawable/notification" /> + <ImageView + android:layout_width="30dp" + android:layout_height="30dp" + android:src="@drawable/settings"/> + + + </LinearLayout> + + + + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:layout_marginTop="50dp" + android:fontFamily="@font/msyi" + android:letterSpacing="0.10" + android:text="TRIPS" + android:textColor="#C5B358" + android:textSize="70dp" /> + + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="40dp" + android:layout_marginBottom="120dp" /> + + <Button + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_gravity="right" + android:layout_marginTop="-90dp" + android:layout_marginRight="30dp" + android:background="@drawable/rnd_button" + android:fontFamily="@font/msyi" + android:gravity="bottom|center" + android:text="+" + android:textAppearance="@style/TextAppearance.AppCompat.Small" + android:textColor="#141414" + android:textSize="78dp" /> + +</LinearLayout> \ No newline at end of file diff --git a/Frontend/app/src/main/res/values/strings.xml b/Frontend/app/src/main/res/values/strings.xml index a9a7cbb98c0b910a1d379414ac10865db2142157..e14aa4788f0f1b1ca4c6458ce06657709863c6ec 100644 --- a/Frontend/app/src/main/res/values/strings.xml +++ b/Frontend/app/src/main/res/values/strings.xml @@ -3,4 +3,7 @@ <string name="log_in">LOG IN</string> <string name="e_mail">E-MAIL</string> <string name="password">PASSWORD</string> + + <!-- TODO: Remove or change this placeholder text --> + <string name="hello_blank_fragment">Hello blank fragment</string> </resources> diff --git a/Images/drawable-hdpi/AddButton.png b/Images/drawable-hdpi/AddButton.png new file mode 100644 index 0000000000000000000000000000000000000000..a22faf7d6e6502e14d8ce3ecadb6ccfaff97f2e7 Binary files /dev/null and b/Images/drawable-hdpi/AddButton.png differ diff --git a/Images/drawable-hdpi/Gruppe 7.png b/Images/drawable-hdpi/Gruppe 7.png new file mode 100644 index 0000000000000000000000000000000000000000..61d1bc8438fc968500e0f33f527d37bc25c5b3bb Binary files /dev/null and b/Images/drawable-hdpi/Gruppe 7.png differ diff --git a/Images/drawable-hdpi/Icon awesome-money-bill-wave.png b/Images/drawable-hdpi/Icon awesome-money-bill-wave.png new file mode 100644 index 0000000000000000000000000000000000000000..52c662187304aa381f22dcc4e4866363afab4b86 Binary files /dev/null and b/Images/drawable-hdpi/Icon awesome-money-bill-wave.png differ diff --git a/Images/drawable-hdpi/Icon ionic-ios-notifications-outline.png b/Images/drawable-hdpi/Icon ionic-ios-notifications-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..efe3a23b7225b0e321fa727937eedb00bb0fc96d Binary files /dev/null and b/Images/drawable-hdpi/Icon ionic-ios-notifications-outline.png differ diff --git a/Images/drawable-hdpi/Options.png b/Images/drawable-hdpi/Options.png new file mode 100644 index 0000000000000000000000000000000000000000..f25d1b479398238c6b5dbc9432f58ea2d3a00d5a Binary files /dev/null and b/Images/drawable-hdpi/Options.png differ diff --git a/Images/drawable-ldpi/AddButton.png b/Images/drawable-ldpi/AddButton.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1ef476cfc1d527c01f749406ef07e6389ac081 Binary files /dev/null and b/Images/drawable-ldpi/AddButton.png differ diff --git a/Images/drawable-ldpi/Gruppe 7.png b/Images/drawable-ldpi/Gruppe 7.png new file mode 100644 index 0000000000000000000000000000000000000000..36dd782c556311e22627a02c5025df170754878f Binary files /dev/null and b/Images/drawable-ldpi/Gruppe 7.png differ diff --git a/Images/drawable-ldpi/Icon awesome-money-bill-wave.png b/Images/drawable-ldpi/Icon awesome-money-bill-wave.png new file mode 100644 index 0000000000000000000000000000000000000000..717b3eaa8c90e7d39df3f791f175a747f1a0ad4b Binary files /dev/null and b/Images/drawable-ldpi/Icon awesome-money-bill-wave.png differ diff --git a/Images/drawable-ldpi/Icon ionic-ios-notifications-outline.png b/Images/drawable-ldpi/Icon ionic-ios-notifications-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..985af11bd5dc9bc514c2d7736b9b3775a79b562c Binary files /dev/null and b/Images/drawable-ldpi/Icon ionic-ios-notifications-outline.png differ diff --git a/Images/drawable-ldpi/Options.png b/Images/drawable-ldpi/Options.png new file mode 100644 index 0000000000000000000000000000000000000000..046fe40ea0f7e3761989f66cae67e88ecb4c00ba Binary files /dev/null and b/Images/drawable-ldpi/Options.png differ diff --git a/Images/drawable-mdpi/AddButton.png b/Images/drawable-mdpi/AddButton.png new file mode 100644 index 0000000000000000000000000000000000000000..cdbbe4bfc7fa318102a8b976ae7c476ba42f7d05 Binary files /dev/null and b/Images/drawable-mdpi/AddButton.png differ diff --git a/Images/drawable-mdpi/Gruppe 7.png b/Images/drawable-mdpi/Gruppe 7.png new file mode 100644 index 0000000000000000000000000000000000000000..70acb0d8747ea343b0ab6e378ebc97c348bfd9d3 Binary files /dev/null and b/Images/drawable-mdpi/Gruppe 7.png differ diff --git a/Images/drawable-mdpi/Icon awesome-money-bill-wave.png b/Images/drawable-mdpi/Icon awesome-money-bill-wave.png new file mode 100644 index 0000000000000000000000000000000000000000..641047eb5d67cbf426537c06a077a33809e88d87 Binary files /dev/null and b/Images/drawable-mdpi/Icon awesome-money-bill-wave.png differ diff --git a/Images/drawable-mdpi/Icon ionic-ios-notifications-outline.png b/Images/drawable-mdpi/Icon ionic-ios-notifications-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..ecba53673b0ed121313e1e5eaf4ae5fdf99ee7fb Binary files /dev/null and b/Images/drawable-mdpi/Icon ionic-ios-notifications-outline.png differ diff --git a/Images/drawable-mdpi/Options.png b/Images/drawable-mdpi/Options.png new file mode 100644 index 0000000000000000000000000000000000000000..f014fc0daeee7255afb52ca9df6fcdd6c4910fcc Binary files /dev/null and b/Images/drawable-mdpi/Options.png differ diff --git a/Images/drawable-xhdpi/AddButton.png b/Images/drawable-xhdpi/AddButton.png new file mode 100644 index 0000000000000000000000000000000000000000..fa1f021c74ec7afebaad29d310e21556f61530c7 Binary files /dev/null and b/Images/drawable-xhdpi/AddButton.png differ diff --git a/Images/drawable-xhdpi/Gruppe 7.png b/Images/drawable-xhdpi/Gruppe 7.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e9600382781c338dbb079bcfd68b2b6d0b8767 Binary files /dev/null and b/Images/drawable-xhdpi/Gruppe 7.png differ diff --git a/Images/drawable-xhdpi/Icon awesome-money-bill-wave.png b/Images/drawable-xhdpi/Icon awesome-money-bill-wave.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7cddaa24d1f588ae001002be399a4417ea2411 Binary files /dev/null and b/Images/drawable-xhdpi/Icon awesome-money-bill-wave.png differ diff --git a/Images/drawable-xhdpi/Icon ionic-ios-notifications-outline.png b/Images/drawable-xhdpi/Icon ionic-ios-notifications-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..0ffa83c4a03080de6c6cd4e4b4c24136143275ab Binary files /dev/null and b/Images/drawable-xhdpi/Icon ionic-ios-notifications-outline.png differ diff --git a/Images/drawable-xhdpi/Options.png b/Images/drawable-xhdpi/Options.png new file mode 100644 index 0000000000000000000000000000000000000000..843ff678c538c9ce66ada5d681c78ae14cf17dd5 Binary files /dev/null and b/Images/drawable-xhdpi/Options.png differ diff --git a/Images/drawable-xxhdpi/AddButton.png b/Images/drawable-xxhdpi/AddButton.png new file mode 100644 index 0000000000000000000000000000000000000000..95782959b32ebc7b0cd15312d98df39ca9fcfc30 Binary files /dev/null and b/Images/drawable-xxhdpi/AddButton.png differ diff --git a/Images/drawable-xxhdpi/Gruppe 7.png b/Images/drawable-xxhdpi/Gruppe 7.png new file mode 100644 index 0000000000000000000000000000000000000000..b3ea20b0558f5770af5def20d77bccd474833ab2 Binary files /dev/null and b/Images/drawable-xxhdpi/Gruppe 7.png differ diff --git a/Images/drawable-xxhdpi/Icon awesome-money-bill-wave.png b/Images/drawable-xxhdpi/Icon awesome-money-bill-wave.png new file mode 100644 index 0000000000000000000000000000000000000000..d87a4612964c8db2fda77520e89e2c4fdf953ea7 Binary files /dev/null and b/Images/drawable-xxhdpi/Icon awesome-money-bill-wave.png differ diff --git a/Images/drawable-xxhdpi/Icon ionic-ios-notifications-outline.png b/Images/drawable-xxhdpi/Icon ionic-ios-notifications-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..2b52d86c7b596c46e7d0d33422d1b314e9849086 Binary files /dev/null and b/Images/drawable-xxhdpi/Icon ionic-ios-notifications-outline.png differ diff --git a/Images/drawable-xxhdpi/Options.png b/Images/drawable-xxhdpi/Options.png new file mode 100644 index 0000000000000000000000000000000000000000..042f02c8c02fccbe6526e50afa35d39c0081d775 Binary files /dev/null and b/Images/drawable-xxhdpi/Options.png differ diff --git a/Images/drawable-xxxhdpi/AddButton.png b/Images/drawable-xxxhdpi/AddButton.png new file mode 100644 index 0000000000000000000000000000000000000000..cc045642a51aedd1d1628d36c7f8dde12150934d Binary files /dev/null and b/Images/drawable-xxxhdpi/AddButton.png differ diff --git a/Images/drawable-xxxhdpi/Gruppe 7.png b/Images/drawable-xxxhdpi/Gruppe 7.png new file mode 100644 index 0000000000000000000000000000000000000000..62b2ad87e6ff9e4993b5631afd104a74c82cce9d Binary files /dev/null and b/Images/drawable-xxxhdpi/Gruppe 7.png differ diff --git a/Images/drawable-xxxhdpi/Icon awesome-money-bill-wave.png b/Images/drawable-xxxhdpi/Icon awesome-money-bill-wave.png new file mode 100644 index 0000000000000000000000000000000000000000..83c6cbeb08f39e25d0a745b8aef7862e7368a1b7 Binary files /dev/null and b/Images/drawable-xxxhdpi/Icon awesome-money-bill-wave.png differ diff --git a/Images/drawable-xxxhdpi/Icon ionic-ios-notifications-outline.png b/Images/drawable-xxxhdpi/Icon ionic-ios-notifications-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd9d1607d9efd933a69475ba46f3661992fef9e Binary files /dev/null and b/Images/drawable-xxxhdpi/Icon ionic-ios-notifications-outline.png differ diff --git a/Images/drawable-xxxhdpi/Options.png b/Images/drawable-xxxhdpi/Options.png new file mode 100644 index 0000000000000000000000000000000000000000..e90a7502358e9461a6dc088675482533db4832f0 Binary files /dev/null and b/Images/drawable-xxxhdpi/Options.png differ