Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .idea/.gitignore

This file was deleted.

17 changes: 0 additions & 17 deletions .idea/deploymentTargetDropDown.xml

This file was deleted.

1 change: 0 additions & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 22 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,17 @@ dependencies {
implementation 'com.koushikdutta.ion:ion:3.1.0'
implementation 'com.google.firebase:firebase-auth:21.1.0'
implementation 'com.google.firebase:firebase-firestore:24.4.0'
implementation 'com.google.firebase:firebase-messaging:23.1.0'

testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'org.jsoup:jsoup:1.15.3'


implementation 'com.google.firebase:firebase-inappmessaging-display:20.2.0'
implementation 'com.google.firebase:firebase-analytics:21.2.0'



}
6 changes: 6 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@
android:supportsRtl="true"
android:theme="@style/Theme.Android"
tools:targetApi="31">



<activity
android:name=".Groupchat"
android:exported="false" />
<activity
android:name=".EventLayoutActivity"
android:exported="false">
Expand Down
184 changes: 179 additions & 5 deletions app/src/main/java/com/example/android/ClassFragment.java
Original file line number Diff line number Diff line change
@@ -1,24 +1,55 @@
package com.example.android;

import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.cardview.widget.CardView;
import androidx.fragment.app.Fragment;

import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.chip.Chip;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FieldPath;
import com.google.firebase.firestore.FieldValue;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;
import com.google.firebase.firestore.auth.User;

import java.util.ArrayList;

/**
* A simple {@link Fragment} subclass.
* Use the {@link ClassFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class ClassFragment extends Fragment {
protected static final String FRAGMENT_NAME="ClassFragment";
protected static final String FRAGMENT_NAME="GroupFragment";
private final FirebaseFirestore db = FirebaseFirestore.getInstance();
protected static int[] colorIcon = {Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW};
private ViewClassAdpater adapter;
private final ArrayList<String> Studentclass = new ArrayList<String>();
private ListView Classlist;
TextView noclassinfo;

// 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 UserID = "userID";
private static final String ARG_PARAM2 = "param2";

// TODO: Rename and change types of parameters
Expand All @@ -42,17 +73,65 @@ public ClassFragment() {
public static ClassFragment newInstance(String param1, String param2) {
ClassFragment fragment = new ClassFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(UserID, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
private class ViewClassAdpater extends ArrayAdapter<String> {
public ViewClassAdpater(@NonNull Context context, int resource) {
super(context, resource);
}

public int getCount() {
return Studentclass.size();
}


public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = ClassFragment.this.getLayoutInflater();
View result = inflater.inflate(R.layout.group_list_view, null);
TextView message = result.findViewById(R.id.GroupNameLabel);
ImageView deleteButton = result.findViewById(R.id.RemoveGroup);
ImageView classIcon = result.findViewById(R.id.GroupIconDisplay);
TextView groupDescription = result.findViewById(R.id.GroupDescriptionLabel);
CardView cardGroup = result.findViewById(R.id.CardGroup);
ImageView EditIcon = result.findViewById(R.id.EditIcon);
EditIcon.setVisibility(View.INVISIBLE);





deleteButton.setTag(position);
classIcon.setTag(position);
cardGroup.setTag(position);

message.setText(Studentclass.get(position));
groupDescription.setText("Description of course");
classIcon.setImageResource(R.drawable.class_icon);
classIcon.setColorFilter((colorIcon[ (int)Math.floor(Math.random()*(colorIcon.length))]));

ImageView removeClassIV= result.findViewById(R.id.RemoveGroup);
removeClassIV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RemoveClass(view);
}
});



return result;
}

}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
Log.i(FRAGMENT_NAME, "Bundle Received");
mParam1 = getArguments().getString(UserID);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
Expand All @@ -61,6 +140,101 @@ public void onCreate(Bundle savedInstanceState) {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_class, container, false);

Studentclass.clear();
View test=inflater.inflate(R.layout.fragment_group, container, false);
Classlist= test.findViewById(R.id.GroupinformationList);
TextView nogroupinfo = test.findViewById(R.id.NoGroupinfo);
TextView addclassBtn= test.findViewById(R.id.BannerText);
addclassBtn.setText("Add a class");
adapter = new ViewClassAdpater(this.getContext(), 0);
Classlist.setAdapter(adapter);
nogroupinfo.setText(R.string.noClassAdded);
nogroupinfo.setVisibility(View.INVISIBLE);
Classlist.setVisibility(View.VISIBLE);

CardView btn=test.findViewById(R.id.Banner);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView,CreateGroupFragment.class,getArguments()) //TODO: Change to Add Class Fragment
.setReorderingAllowed(true)
.addToBackStack("tempBackStack")
.commit();
}
});

Log.i(FRAGMENT_NAME, "This is the param "+ mParam1);
if (mParam1!=null) {
db.collection("user").whereEqualTo(FieldPath.documentId(), mParam1) // ERR; Main activity is not passing the dat
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
DisplayRegClasses((ArrayList<String>) document.get("courses"));
}
} else {
Log.w(FRAGMENT_NAME, "Error getting documents.", task.getException());
}
}
});
}

return test;
}

public void DisplayRegClasses(ArrayList<String> studentClasses )
{

for (String course : studentClasses)
{
Studentclass.add(course);
}
Log.i(FRAGMENT_NAME, "Courses: " + Studentclass.size());
adapter.notifyDataSetChanged();
}


public void RemoveClass(View view )
{
int positionitemToDelete = (int) view.getTag();
String coursename = Studentclass.get(positionitemToDelete);

AlertDialog.Builder builder =
new AlertDialog.Builder(this.getContext());

builder.setTitle("Are you sure you want to be removed from:" + coursename);
builder.setPositiveButton(R.string.Yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Studentclass.remove(positionitemToDelete);
adapter.notifyDataSetChanged();
if (Studentclass.size() == 0 )
{


noclassinfo.setVisibility(View.VISIBLE);
Classlist.setVisibility(View.INVISIBLE);
}
deletefromdatabase(coursename, mParam1 );
} });
builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
} });
AlertDialog dialog = builder.create();
dialog.show();
}


public void deletefromdatabase(String coursename, String userID )
{
DocumentReference groupsRef = db.collection("user").document(userID);
groupsRef.update("courses", FieldValue.arrayRemove(coursename));

}

}
20 changes: 20 additions & 0 deletions app/src/main/java/com/example/android/Classes.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.example.android;

import java.util.ArrayList;

public class Classes {

ArrayList<String> coursenames;

public Classes(ArrayList<String> coursename)
{

this.coursenames = coursename;

}

public ArrayList<String> getCoursename() {
return coursenames;
}

}
Loading