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 { ...@@ -32,6 +32,8 @@ ext {
tagViewVersion = '1.3' tagViewVersion = '1.3'
circleIndicatorVersion = '1.2.2@aar' circleIndicatorVersion = '1.2.2@aar'
firebaseVersion = '17.3.4' firebaseVersion = '17.3.4'
flexboxVersion = '1.0.0'
sectionedRecyclerViewVersion = '1.2.0'
} }
dependencies { dependencies {
...@@ -53,5 +55,7 @@ dependencies { ...@@ -53,5 +55,7 @@ dependencies {
implementation "ru.noties:markwon:${markwonVersion}" implementation "ru.noties:markwon:${markwonVersion}"
implementation "com.github.Cutta:TagView:${tagViewVersion}" implementation "com.github.Cutta:TagView:${tagViewVersion}"
implementation "me.relex:circleindicator:${circleIndicatorVersion}" 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' apply plugin: 'com.google.gms.google-services'
...@@ -182,7 +182,7 @@ public final class Utils { ...@@ -182,7 +182,7 @@ public final class Utils {
} }
public static void openUserFragment(User user, FragmentActivity fragmentActivity) { 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) { public static void openUserFragment(User user, Fragment currentFragment, View sharedAvatar) {
...@@ -193,6 +193,10 @@ public final class Utils { ...@@ -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) { public static void setSessionId(String sessionId1) {
sessionId = 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; package app.insti.fragment;
import android.content.Intent; import android.content.Context;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; 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.ArrayList;
import java.util.Map;
import app.insti.R; import app.insti.R;
import app.insti.Utils; import app.insti.adapter.AboutAdapter;
import de.hdodenhof.circleimageview.CircleImageView; 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. * A simple {@link Fragment} subclass.
...@@ -44,57 +48,53 @@ public class AboutFragment extends BaseFragment { ...@@ -44,57 +48,53 @@ public class AboutFragment extends BaseFragment {
Toolbar toolbar = getActivity().findViewById(R.id.toolbar); Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
toolbar.setTitle("About"); toolbar.setTitle("About");
Utils.setSelectedMenuItem(getActivity(), R.id.nav_settings);
final Context context = getContext();
/* Map CircleImageView ids to image URLs */
final Map<Integer, String> team = new HashMap<Integer, String>() {{ AboutAdapter aboutAdapter = new AboutAdapter(new ArrayList<AboutCategory>() {{
put(R.id.varunimg, "varun.jpg"); add(new AboutCategory("Core Developers", new ArrayList<AboutIndividual>() {{
put(R.id.sajalimg, "sajal.jpg"); add(new AboutIndividual("varunpatil", "Varun Patil", "varun.jpg"));
put(R.id.nihalimg, "nihal.jpg"); add(new AboutIndividual("sajalnarang", "Sajal Narang", "sajal.jpg"));
put(R.id.ydidwaniaimg, "ydidwania.jpg"); }}, context));
put(R.id.cheekuimg, "cheeku.jpg"); add(new AboutCategory("Developers", new ArrayList<AboutIndividual>() {{
put(R.id.sarthakimg, "sarthak.jpg"); add(new AboutIndividual("160020012", "Mrunmayi Munkegar", "mrunmayi.jpg"));
put(R.id.sohamimg, "soham.jpg"); add(new AboutIndividual("160110009", "Owais Chunawala", "owais.jpg"));
put(R.id.maitreyaimg, "maitreya.jpg"); add(new AboutIndividual("hrushikeshbodas", "Hrushikesh Bodas", "hrushikesh.jpg"));
put(R.id.mrunmayiimg, "mrunmayi.jpg"); add(new AboutIndividual("yashkhem", "Yash Khemchandani", "yashkhem.jpg"));
put(R.id.owaisimg, "owais.jpg"); add(new AboutIndividual("bavish.kulur", "Bavish Kulur", "bavish.jpg"));
put(R.id.hrushikeshimg, "hrushikesh.jpg"); add(new AboutIndividual("mayubhattu", "Mayuresh Bhattu", "mayu.jpg"));
put(R.id.yashkhemimg, "yashkhem.jpg"); add(new AboutIndividual("maitreya", "Maitreya Verma", "maitreya.jpg"));
put(R.id.bavishimg, "bavish.jpg"); add(new AboutIndividual("safwankdb", "Mohd Safwan", "safwan.jpg"));
put(R.id.mayuimg, "mayu.jpg"); add(new AboutIndividual(null, "Shivam Sharma", "sshivam95.jpg"));
put(R.id.tomarimg, "tomar.jpg"); }}, context));
put(R.id.bijoyimg, "bijoy.jpg"); add(new AboutCategory("Design", new ArrayList<AboutIndividual>() {{
put(R.id.dheerendraimg, "dheerendra.jpg"); add(new AboutIndividual("150040007", "Soham Khadtare", "soham.jpg"));
put(R.id.ranveerimg, "ranveer.jpg"); }}, context));
put(R.id.amangourimg, "amangour.jpg"); add(new AboutCategory("Ideation", new ArrayList<AboutIndividual>() {{
put(R.id.wnccimg, "wncc.jpg"); add(new AboutIndividual("nihal111", "Nihal Singh", "nihal.jpg"));
put(R.id.safwanimg, "safwan.jpg"); add(new AboutIndividual("ydidwania", "Yashwarshan Didwania", "ydidwania.jpg"));
put(R.id.shivamimg, "sshivam95.jpg"); add(new AboutIndividual("kumar.ayush", "Kumar Ayush", "cheeku.jpg"));
}}; add(new AboutIndividual("16D110006", "Sarthak Khandelwal", "sarthak.jpg"));
}}, context));
/* Show team pics */ add(new AboutCategory("Alumni", new ArrayList<AboutIndividual>() {{
for (final Map.Entry<Integer, String> entry : team.entrySet()) { add(new AboutIndividual("abhijit.tomar", "Abhijit Tomar", "tomar.jpg"));
CircleImageView circleImageView = getActivity().findViewById(entry.getKey()); add(new AboutIndividual(null, "Bijoy Singh Kochar", "bijoy.jpg"));
Picasso.get().load("https://insti.app/team-pics/" + entry.getValue()).resize(0, 300).into(circleImageView); add(new AboutIndividual(null, "Dheerendra Rathor", "dheerendra.jpg"));
} add(new AboutIndividual(null, "Ranveer Aggarwal", "ranveer.jpg"));
add(new AboutIndividual(null, "Aman Gour", "amangour.jpg"));
/* Map TextView ids to links */ }}, context));
final Map<Integer, String> joinUs = new HashMap<Integer, String>() {{ add(new AboutCategory("Contribute", new ArrayList<AboutIndividual>() {{
; add(new AboutIndividual("https://github.com/wncc/IITBapp", "Django API", "python.png", TYPE_LINK));
put(R.id.django, "https://github.com/wncc/IITBapp"); add(new AboutIndividual("https://github.com/wncc/InstiApp", "Android App", "android.png", TYPE_LINK));
put(R.id.android, "https://github.com/wncc/InstiApp"); add(new AboutIndividual("https://github.com/pulsejet/iitb-app-angular", "Angular PWA", "angular.png", TYPE_LINK));
put(R.id.angular, "https://github.com/pulsejet/iitb-app-angular"); }}, context));
}}; }});
for (final Map.Entry<Integer, String> entry : joinUs.entrySet()) { RecyclerView aboutRecyclerView = getActivity().findViewById(R.id.about_recycler_view);
getActivity().findViewById(entry.getKey()).setOnClickListener(new View.OnClickListener() { aboutRecyclerView.setAdapter(aboutAdapter);
@Override
public void onClick(View v) { FlexboxLayoutManager manager = new FlexboxLayoutManager(context, FlexDirection.ROW);
Uri uriUrl = Uri.parse(entry.getValue()); manager.setJustifyContent(JustifyContent.CENTER);
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl); aboutRecyclerView.setLayoutManager(manager);
startActivity(launchBrowser);
}
});
}
} }
} }
<?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