Commit c5541cfd authored by Sajal Narang's avatar Sajal Narang Committed by GitHub

Revamp AboutFragment (#256)

* Revamp AboutFragment

* Remove unused import

* Add newline at EOF

* Call duplicate method openUserFragment from overload

* Add newline at EOF (1)

* Add newline at EOF (2)
parent 6df7a85f
......@@ -32,6 +32,8 @@ ext {
tagViewVersion = '1.3'
circleIndicatorVersion = '1.2.2@aar'
firebaseVersion = '17.3.4'
flexboxVersion = '1.0.0'
sectionedRecyclerViewVersion = '1.2.0'
}
dependencies {
......@@ -53,5 +55,7 @@ dependencies {
implementation "ru.noties:markwon:${markwonVersion}"
implementation "com.github.Cutta:TagView:${tagViewVersion}"
implementation "me.relex:circleindicator:${circleIndicatorVersion}"
implementation "com.google.android:flexbox:${flexboxVersion}"
implementation "io.github.luizgrp.sectionedrecyclerviewadapter:sectionedrecyclerviewadapter:${sectionedRecyclerViewVersion}"
}
apply plugin: 'com.google.gms.google-services'
......@@ -182,7 +182,7 @@ public final class Utils {
}
public static void openUserFragment(User user, FragmentActivity fragmentActivity) {
updateFragment(UserFragment.newInstance(user.getUserID()), fragmentActivity);
openUserFragment(user.getUserID(), fragmentActivity);
}
public static void openUserFragment(User user, Fragment currentFragment, View sharedAvatar) {
......@@ -193,6 +193,10 @@ public final class Utils {
);
}
public static void openUserFragment(String userId, FragmentActivity fragmentActivity) {
updateFragment(UserFragment.newInstance(userId), fragmentActivity);
}
public static void setSessionId(String sessionId1) {
sessionId = sessionId1;
}
......
package app.insti.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
import java.util.List;
import app.insti.api.model.AboutCategory;
import io.github.luizgrp.sectionedrecyclerviewadapter.SectionedRecyclerViewAdapter;
public class AboutAdapter extends SectionedRecyclerViewAdapter {
public AboutAdapter(List<AboutCategory> categories) {
super();
for (AboutCategory category : categories) {
addSection(category);
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder = super.onCreateViewHolder(parent, viewType);
if (viewHolder instanceof AboutCategory.IndividualViewHolder) {
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) viewHolder.itemView.getLayoutParams();
layoutParams.width = (parent.getWidth() / 3) - layoutParams.leftMargin - layoutParams.rightMargin;
viewHolder.itemView.setLayoutParams(layoutParams);
}
return viewHolder;
}
}
package app.insti.api.model;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List;
import app.insti.R;
import app.insti.Utils;
import de.hdodenhof.circleimageview.CircleImageView;
import io.github.luizgrp.sectionedrecyclerviewadapter.SectionParameters;
import io.github.luizgrp.sectionedrecyclerviewadapter.StatelessSection;
public class AboutCategory extends StatelessSection {
private String name;
private List<AboutIndividual> individuals;
private Context context;
public AboutCategory(String name, List<AboutIndividual> individuals, Context context) {
super(SectionParameters.builder()
.itemResourceId(R.layout.about_individual_card)
.headerResourceId(R.layout.about_category_card)
.build());
this.name = name;
this.individuals = individuals;
this.context = context;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<AboutIndividual> getIndividuals() {
return individuals;
}
public void setIndividuals(List<AboutIndividual> individuals) {
this.individuals = individuals;
}
@Override
public int getContentItemsTotal() {
return individuals.size();
}
@Override
public RecyclerView.ViewHolder getItemViewHolder(View view) {
return new IndividualViewHolder(view);
}
@Override
public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) {
final AboutIndividual individual = individuals.get(position);
IndividualViewHolder individualViewHolder = (IndividualViewHolder) holder;
Picasso.get()
.load("https://insti.app/team-pics/" + individual.getImageName())
.resize(0, 300)
.into(individualViewHolder.pictureImageView);
individualViewHolder.nameTextView.setText(individual.getName());
individualViewHolder.rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String individualId = individual.getId();
if (individualId == null) {
return;
}
/*Repository Links*/
if (individual.getType() == AboutIndividual.TYPE_LINK) {
Utils.openWebURL(context, individualId);
return;
}
Utils.openUserFragment(individualId, (FragmentActivity) context);
}
});
}
@Override
public RecyclerView.ViewHolder getHeaderViewHolder(View view) {
return new CategoryViewHolder(view);
}
@Override
public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
CategoryViewHolder categoryViewHolder = (CategoryViewHolder) holder;
categoryViewHolder.nameTextView.setText(name);
}
private class CategoryViewHolder extends RecyclerView.ViewHolder {
private TextView nameTextView;
public CategoryViewHolder(View itemView) {
super(itemView);
nameTextView = itemView.findViewById(R.id.name_category_about);
}
}
public class IndividualViewHolder extends RecyclerView.ViewHolder {
private View rootView;
private CircleImageView pictureImageView;
private TextView nameTextView;
public IndividualViewHolder(@NonNull View itemView) {
super(itemView);
rootView = itemView.findViewById(R.id.root_individual_about);
pictureImageView = itemView.findViewById(R.id.picture_about);
nameTextView = itemView.findViewById(R.id.name_individual_about);
}
}
}
package app.insti.api.model;
public class AboutIndividual {
private String id;
private String name;
private String imageName;
private int type;
public static final int TYPE_HUMAN = 0;
public static final int TYPE_LINK = 1;
public AboutIndividual(String id, String name, String imageName) {
this.id = id;
this.name = name;
this.imageName = imageName;
this.type = TYPE_HUMAN;
}
public AboutIndividual(String id, String name, String imageName, int type) {
this.id = id;
this.name = name;
this.imageName = imageName;
this.type = type;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImageName() {
return imageName;
}
public void setImageName(String imageName) {
this.imageName = imageName;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}
package app.insti.fragment;
import android.content.Intent;
import android.net.Uri;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.squareup.picasso.Picasso;
import com.google.android.flexbox.FlexDirection;
import com.google.android.flexbox.FlexboxLayoutManager;
import com.google.android.flexbox.JustifyContent;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import app.insti.R;
import app.insti.Utils;
import de.hdodenhof.circleimageview.CircleImageView;
import app.insti.adapter.AboutAdapter;
import app.insti.api.model.AboutCategory;
import app.insti.api.model.AboutIndividual;
import static app.insti.api.model.AboutIndividual.TYPE_LINK;
/**
* A simple {@link Fragment} subclass.
......@@ -44,57 +48,53 @@ public class AboutFragment extends BaseFragment {
Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
toolbar.setTitle("About");
Utils.setSelectedMenuItem(getActivity(), R.id.nav_settings);
/* Map CircleImageView ids to image URLs */
final Map<Integer, String> team = new HashMap<Integer, String>() {{
put(R.id.varunimg, "varun.jpg");
put(R.id.sajalimg, "sajal.jpg");
put(R.id.nihalimg, "nihal.jpg");
put(R.id.ydidwaniaimg, "ydidwania.jpg");
put(R.id.cheekuimg, "cheeku.jpg");
put(R.id.sarthakimg, "sarthak.jpg");
put(R.id.sohamimg, "soham.jpg");
put(R.id.maitreyaimg, "maitreya.jpg");
put(R.id.mrunmayiimg, "mrunmayi.jpg");
put(R.id.owaisimg, "owais.jpg");
put(R.id.hrushikeshimg, "hrushikesh.jpg");
put(R.id.yashkhemimg, "yashkhem.jpg");
put(R.id.bavishimg, "bavish.jpg");
put(R.id.mayuimg, "mayu.jpg");
put(R.id.tomarimg, "tomar.jpg");
put(R.id.bijoyimg, "bijoy.jpg");
put(R.id.dheerendraimg, "dheerendra.jpg");
put(R.id.ranveerimg, "ranveer.jpg");
put(R.id.amangourimg, "amangour.jpg");
put(R.id.wnccimg, "wncc.jpg");
put(R.id.safwanimg, "safwan.jpg");
put(R.id.shivamimg, "sshivam95.jpg");
}};
/* Show team pics */
for (final Map.Entry<Integer, String> entry : team.entrySet()) {
CircleImageView circleImageView = getActivity().findViewById(entry.getKey());
Picasso.get().load("https://insti.app/team-pics/" + entry.getValue()).resize(0, 300).into(circleImageView);
}
/* Map TextView ids to links */
final Map<Integer, String> joinUs = new HashMap<Integer, String>() {{
;
put(R.id.django, "https://github.com/wncc/IITBapp");
put(R.id.android, "https://github.com/wncc/InstiApp");
put(R.id.angular, "https://github.com/pulsejet/iitb-app-angular");
}};
for (final Map.Entry<Integer, String> entry : joinUs.entrySet()) {
getActivity().findViewById(entry.getKey()).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri uriUrl = Uri.parse(entry.getValue());
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
}
});
}
final Context context = getContext();
AboutAdapter aboutAdapter = new AboutAdapter(new ArrayList<AboutCategory>() {{
add(new AboutCategory("Core Developers", new ArrayList<AboutIndividual>() {{
add(new AboutIndividual("varunpatil", "Varun Patil", "varun.jpg"));
add(new AboutIndividual("sajalnarang", "Sajal Narang", "sajal.jpg"));
}}, context));
add(new AboutCategory("Developers", new ArrayList<AboutIndividual>() {{
add(new AboutIndividual("160020012", "Mrunmayi Munkegar", "mrunmayi.jpg"));
add(new AboutIndividual("160110009", "Owais Chunawala", "owais.jpg"));
add(new AboutIndividual("hrushikeshbodas", "Hrushikesh Bodas", "hrushikesh.jpg"));
add(new AboutIndividual("yashkhem", "Yash Khemchandani", "yashkhem.jpg"));
add(new AboutIndividual("bavish.kulur", "Bavish Kulur", "bavish.jpg"));
add(new AboutIndividual("mayubhattu", "Mayuresh Bhattu", "mayu.jpg"));
add(new AboutIndividual("maitreya", "Maitreya Verma", "maitreya.jpg"));
add(new AboutIndividual("safwankdb", "Mohd Safwan", "safwan.jpg"));
add(new AboutIndividual(null, "Shivam Sharma", "sshivam95.jpg"));
}}, context));
add(new AboutCategory("Design", new ArrayList<AboutIndividual>() {{
add(new AboutIndividual("150040007", "Soham Khadtare", "soham.jpg"));
}}, context));
add(new AboutCategory("Ideation", new ArrayList<AboutIndividual>() {{
add(new AboutIndividual("nihal111", "Nihal Singh", "nihal.jpg"));
add(new AboutIndividual("ydidwania", "Yashwarshan Didwania", "ydidwania.jpg"));
add(new AboutIndividual("kumar.ayush", "Kumar Ayush", "cheeku.jpg"));
add(new AboutIndividual("16D110006", "Sarthak Khandelwal", "sarthak.jpg"));
}}, context));
add(new AboutCategory("Alumni", new ArrayList<AboutIndividual>() {{
add(new AboutIndividual("abhijit.tomar", "Abhijit Tomar", "tomar.jpg"));
add(new AboutIndividual(null, "Bijoy Singh Kochar", "bijoy.jpg"));
add(new AboutIndividual(null, "Dheerendra Rathor", "dheerendra.jpg"));
add(new AboutIndividual(null, "Ranveer Aggarwal", "ranveer.jpg"));
add(new AboutIndividual(null, "Aman Gour", "amangour.jpg"));
}}, context));
add(new AboutCategory("Contribute", new ArrayList<AboutIndividual>() {{
add(new AboutIndividual("https://github.com/wncc/IITBapp", "Django API", "python.png", TYPE_LINK));
add(new AboutIndividual("https://github.com/wncc/InstiApp", "Android App", "android.png", TYPE_LINK));
add(new AboutIndividual("https://github.com/pulsejet/iitb-app-angular", "Angular PWA", "angular.png", TYPE_LINK));
}}, context));
}});
RecyclerView aboutRecyclerView = getActivity().findViewById(R.id.about_recycler_view);
aboutRecyclerView.setAdapter(aboutAdapter);
FlexboxLayoutManager manager = new FlexboxLayoutManager(context, FlexDirection.ROW);
manager.setJustifyContent(JustifyContent.CENTER);
aboutRecyclerView.setLayoutManager(manager);
}
}
<?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="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/name_category_about"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:gravity="center"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/root_individual_about"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:padding="12dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/picture_about"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_margin="4dp" />
<TextView
android:id="@+id/name_individual_about"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="center" />
</LinearLayout>
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment